#ifndef _RADIUS_SNMP_H
#define _RADIUS_SNMP_H
/*
* Version: $Id: radius_snmp.h,v 1.12.4.1 2006/02/07 15:29:10 nbk Exp $
*/
#ifdef WITH_SNMP
typedef enum smux_event_t {
SMUX_NONE, SMUX_CONNECT, SMUX_READ
} smux_event_t;
extern void radius_snmp_init(void);
extern int smux_connect(void);
extern int smux_read(void);
/*
* The RADIUS server snmp data structures.
*/
typedef struct rad_snmp_server_t {
const char *ident;
time_t start_time;
int32_t uptime; /* in hundredths of a second */
time_t last_reset_time;
int32_t reset_time;
int32_t config_reset;
int32_t total_requests;
int32_t total_invalid_requests;
int32_t total_dup_requests;
int32_t total_responses;
int32_t total_access_accepts;
int32_t total_access_rejects;
int32_t total_access_challenges;
int32_t total_malformed_requests;
int32_t total_bad_authenticators;
int32_t total_packets_dropped;
int32_t total_no_records;
int32_t total_unknown_types;
} rad_snmp_server_t;
typedef struct rad_snmp_t {
rad_snmp_server_t auth;
rad_snmp_server_t acct;
smux_event_t smux_event;
const char *smux_password;
int snmp_write_access;
int smux_fd;
int smux_failures;
int smux_max_failures;
} rad_snmp_t;
/*
* Taken from RFC 2619 and RFC 2621
*/
typedef struct rad_snmp_client_entry_t {
int index;
/* IP address */
/* Client ID (string ) */
int access_requests;
int dup_access_requests;
int access_accepts;
int access_rejects;
int access_challenges;
int auth_malformed_requests;
int auth_bad_authenticators;
int auth_packets_dropped;
int auth_unknown_types;
int acct_packets_dropped;
int acct_requests;
int acct_dup_requests;
int acct_responses;
int acct_bad_authenticators;
int acct_malformed_requests;
int acct_no_records;
int acct_unknown_types;
} rad_snmp_client_entry_t;
extern rad_snmp_t rad_snmp;
#define RAD_SNMP_INC(_x) if (mainconfig.do_snmp) _x++
#define RAD_SNMP_TYPE_INC(_listener, _x) if (mainconfig.do_snmp) { \
if (_listener->type == RAD_LISTEN_AUTH) { \
rad_snmp.auth._x++; \
} else { if (_listener->type == RAD_LISTEN_ACCT) \
rad_snmp.acct._x++; } } \
#else
#define RAD_SNMP_INC(_x)
#define RAD_SNMP_TYPE_INC(_listener, _x)
#endif /* WITH_SNMP */
#endif /* _RADIUS_SNMP_H */
syntax highlighted by Code2HTML, v. 0.9.1