⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radius_snmp.c

📁 radius server在linux下的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
		case RADIUSACCSERVRESETTIME:			rad_snmp.acct.reset_time = (time(NULL) - rad_snmp.acct.last_reset_time) * 100;			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.reset_time;		case RADIUSACCSERVCONFIGRESET:			*write_method = radServReset;			result = 4;			return (unsigned char *) &result;		case RADIUSACCSERVTOTALREQUESTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.total_requests;		case RADIUSACCSERVTOTALINVALIDREQUESTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.total_invalid_requests;		case RADIUSACCSERVTOTALDUPREQUESTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.total_dup_requests;		case RADIUSACCSERVTOTALRESPONSES:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.total_responses;		case RADIUSACCSERVTOTALMALFORMEDREQUESTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.total_malformed_requests;		case RADIUSACCSERVTOTALBADAUTHENTICATORS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.total_bad_authenticators;		case RADIUSACCSERVTOTALPACKETSDROPPED:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.total_packets_dropped;		case RADIUSACCSERVTOTALNORECORDS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.total_no_records;		case RADIUSACCSERVTOTALUNKNOWNTYPES:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.acct.total_unknown_types;	}	return NULL;}static const unsigned char *radAccEntry(struct variable *vp, oid *name, size_t *length, int exact,		size_t *var_len, WriteMethod **write_method) {	RADCLIENT *c;	*write_method = NULL; /* table is read only */	c = get_client(vp, name, length, exact);	if (!c)		return NULL;	/* return the current value of the variable */	switch (vp->magic) {		case RADIUSACCCLIENTADDRESS:			*var_len = sizeof(c->ipaddr);			return (unsigned char *)&(c->ipaddr);		case RADIUSACCCLIENTID:			if (strlen(c->shortname)) {				*var_len = strlen(c->shortname);				return c->shortname;			}			*var_len = strlen(c->longname);			return c->longname;		case RADIUSACCSERVPACKETSDROPPED:			return (unsigned char *) NULL;		case RADIUSACCSERVREQUESTS:			return (unsigned char *) NULL;		case RADIUSACCSERVDUPREQUESTS:			return (unsigned char *) NULL;		case RADIUSACCSERVRESPONSES:			return (unsigned char *) NULL;		case RADIUSACCSERVBADAUTHENTICATORS:			return (unsigned char *) NULL;		case RADIUSACCSERVMALFORMEDREQUESTS:			return (unsigned char *) NULL;		case RADIUSACCSERVNORECORDS:			return (unsigned char *) NULL;		case RADIUSACCSERVUNKNOWNTYPES:			return (unsigned char *) NULL;	}	return NULL;}static const unsigned char *radAuthServ(struct variable *vp, oid *name, size_t *length, int exact,		size_t *var_len, WriteMethod **write_method) {	static int result;	/* check whether the instance identifier is valid */	if (smux_header_generic(vp, name, length, exact, var_len,			write_method) == MATCH_FAILED) {		return NULL;	}	/* return the current value of the variable */	switch (vp->magic) {		case RADIUSAUTHSERVIDENT:			*var_len = strlen(rad_snmp.auth.ident);			return (const unsigned char *) rad_snmp.auth.ident;		case RADIUSAUTHSERVUPTIME:			rad_snmp.auth.uptime = (time(NULL) - rad_snmp.auth.start_time) * 100;			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.uptime;		case RADIUSAUTHSERVRESETTIME:			rad_snmp.auth.reset_time = (time(NULL) - rad_snmp.auth.last_reset_time) * 100;			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.reset_time;		case RADIUSAUTHSERVCONFIGRESET:			*write_method = radServReset;			result = 4;			return (unsigned char *) &result;		case RADIUSAUTHSERVTOTALACCESSREQUESTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_requests;		case RADIUSAUTHSERVTOTALINVALIDREQUESTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_invalid_requests;		case RADIUSAUTHSERVTOTALDUPACCESSREQUESTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_dup_requests;		case RADIUSAUTHSERVTOTALACCESSACCEPTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_access_accepts;		case RADIUSAUTHSERVTOTALACCESSREJECTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_access_rejects;		case RADIUSAUTHSERVTOTALACCESSCHALLENGES:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_access_challenges;		case RADIUSAUTHSERVTOTALMALFORMEDACCESSREQUESTS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_malformed_requests;		case RADIUSAUTHSERVTOTALBADAUTHENTICATORS:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_bad_authenticators;		case RADIUSAUTHSERVTOTALPACKETSDROPPED:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_packets_dropped;		case RADIUSAUTHSERVTOTALUNKNOWNTYPES:			*var_len = sizeof(int32_t);			return (unsigned char *) &rad_snmp.auth.total_unknown_types;	}    return NULL;}static const unsigned char *radAuthEntry(struct variable *vp, oid	 *name, size_t *length, int exact,		size_t *var_len, WriteMethod **write_method) {	RADCLIENT *c;	*write_method = NULL; /* table is read only */	c = get_client(vp, name, length, exact);	if (!c)		return NULL;	/* return the current value of the variable */	switch (vp->magic) {		case RADIUSAUTHCLIENTADDRESS:			*var_len = sizeof(c->ipaddr);			return (unsigned char *)&(c->ipaddr);		case RADIUSAUTHCLIENTID:			if (strlen(c->shortname)) {				*var_len = strlen(c->shortname);					return c->shortname;			}		*var_len = strlen(c->longname);			return c->longname;		case RADIUSAUTHSERVACCESSREQUESTS:			return (unsigned char *) NULL;		case RADIUSAUTHSERVDUPACCESSREQUESTS:			return (unsigned char *) NULL;		case RADIUSAUTHSERVACCESSACCEPTS:			return (unsigned char *) NULL;		case RADIUSAUTHSERVACCESSREJECTS:			return (unsigned char *) NULL;		case RADIUSAUTHSERVACCESSCHALLENGES:			return (unsigned char *) NULL;		case RADIUSAUTHSERVMALFORMEDACCESSREQUESTS:			return (unsigned char *) NULL;		case RADIUSAUTHSERVBADAUTHENTICATORS:			return (unsigned char *) NULL;		case RADIUSAUTHSERVPACKETSDROPPED:			return (unsigned char *) NULL;		case RADIUSAUTHSERVUNKNOWNTYPES:			return (unsigned char *) NULL;	}	return NULL;}static CONF_PARSER snmp_config[] = {	{ "smux_password", PW_TYPE_STRING_PTR, 0, &rad_snmp.smux_password, "" },	{ "snmp_write_access",  PW_TYPE_BOOLEAN, 0, &rad_snmp.snmp_write_access, "no" },	{ NULL, -1, 0, NULL, NULL }};/* Register RADIUS MIBs. */voidradius_snmp_init (void) {	CONF_SECTION *cs;	/*	 *  Initialize the RADIUS SNMP data structure.	 */	memset(&rad_snmp, 0, sizeof(rad_snmp));	rad_snmp.auth.ident = radiusd_version;	rad_snmp.acct.ident = radiusd_version;	rad_snmp.smux_event = SMUX_NONE;	rad_snmp.smux_password = NULL;	rad_snmp.snmp_write_access = FALSE;	rad_snmp.smux_fd = -1;	rad_snmp.smux_max_failures = 3; /* FIXME! get from config */	rad_snmp.smux_failures = 0;	/*	 *  We really should get better clock resolution..	 */	rad_snmp.auth.start_time = time(NULL);	rad_snmp.auth.last_reset_time = rad_snmp.auth.start_time;	rad_snmp.acct.start_time = rad_snmp.auth.start_time;	rad_snmp.acct.last_reset_time = rad_snmp.auth.start_time;	/*	 *  Parse the SNMP configuration information.	 */	cs = cf_section_find(NULL);	if (cs != NULL)		cf_section_parse(cs, NULL, snmp_config);	/*	 *  Do SMUX initialization.	 */	smux_init (radius_oid, sizeof (radius_oid) / sizeof (oid));	REGISTER_MIB("mibII/radius-acc-server", radiusacc_variables, variable, radacc_oid);	REGISTER_MIB("mibII/radius-auth-server", radiusauth_variables, variable, radauth_oid);	smux_start ();}#endif /* WITH_SNMP */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -