static u_char * rip2IfStatEntry (struct variable *v, oid name[], size_t *length, int exact, size_t *var_len, WriteMethod **write_method) { struct interface *ifp; struct rip_interface *ri; static struct in_addr addr; static long valid = SNMP_VALID; if (smux_header_table(v, name, length, exact, var_len, write_method) == MATCH_FAILED) return NULL; memset (&addr, 0, sizeof (struct in_addr)); /* Lookup interface. */ ifp = rip2IfLookup (v, name, length, &addr, exact); if (! ifp) return NULL; /* Fetch rip_interface information. */ ri = ifp->info; switch (v->magic) { case RIP2IFSTATADDRESS: return SNMP_IPADDRESS (addr); break; case RIP2IFSTATRCVBADPACKETS: *var_len = sizeof (long); return (u_char *) &ri->recv_badpackets; case RIP2IFSTATRCVBADROUTES: *var_len = sizeof (long); return (u_char *) &ri->recv_badroutes; case RIP2IFSTATSENTUPDATES: *var_len = sizeof (long); return (u_char *) &ri->sent_updates; case RIP2IFSTATSTATUS: *var_len = sizeof (long); v->type = ASN_INTEGER; return (u_char *) &valid; default: return NULL; } return NULL; }
static u_char * rip2IfConfAddress (struct variable *v, oid name[], size_t *length, int exact, size_t *val_len, WriteMethod **write_method) { static struct in_addr addr; static long valid = SNMP_INVALID; static long domain = 0; static long config = 0; static u_int auth = 0; struct interface *ifp; struct rip_interface *ri; memset (&addr, 0, sizeof (struct in_addr)); /* Lookup interface. */ ifp = rip2IfLookup (v, name, length, &addr, exact); if (! ifp) return NULL; /* Fetch rip_interface information. */ ri = ifp->info; switch (v->magic) { case RIP2IFCONFADDRESS: *val_len = sizeof (struct in_addr); return (u_char *) &addr; case RIP2IFCONFDOMAIN: *val_len = 2; return (u_char *) &domain; case RIP2IFCONFAUTHTYPE: auth = ri->auth_type; *val_len = sizeof (long); v->type = ASN_INTEGER; return (u_char *)&auth; case RIP2IFCONFAUTHKEY: *val_len = 0; return (u_char *) &domain; case RIP2IFCONFSEND: config = rip2IfConfSend (ri); *val_len = sizeof (long); v->type = ASN_INTEGER; return (u_char *) &config; case RIP2IFCONFRECEIVE: config = rip2IfConfReceive (ri); *val_len = sizeof (long); v->type = ASN_INTEGER; return (u_char *) &config; case RIP2IFCONFDEFAULTMETRIC: *val_len = sizeof (long); v->type = ASN_INTEGER; return (u_char *) &ifp->metric; case RIP2IFCONFSTATUS: *val_len = sizeof (long); v->type = ASN_INTEGER; return (u_char *) &valid; case RIP2IFCONFSRCADDRESS: *val_len = sizeof (struct in_addr); return (u_char *) &addr; default: return NULL; } return NULL; }