/* * Note: this file originally auto-generated by mib2c using * : mib2c.access_functions.conf$ */ #include #include "route_headers.h" #include #include #include "ipCidrRouteTable_access.h" #include "ipCidrRouteTable_enums.h" /* * NOTE: * - these GET routines MUST return freshly malloced data and must not * return a pointer which is still in use somewhere else. * - these SET routines must copy the incoming data and can not take * ownership of the memory passed in by the val pointer. */ /** a global static we'll make use of a lot to map to the right datatype to return (which for SNMP integer's is always a long). */ static u_long long_ret; static in_addr_t addr_ret; /* * User-defined data access functions for data in table ipCidrRouteTable */ u_long * get_ipCidrRouteDest(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; addr_ret = ((struct sockaddr_in *) (&ourroute->rt_dst))->sin_addr.s_addr; *ret_len = sizeof(addr_ret); return &addr_ret; } u_long * get_ipCidrRouteMask(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; addr_ret = ((struct sockaddr_in *) (&ourroute->rt_genmask))->sin_addr.s_addr; *ret_len = sizeof(addr_ret); return &addr_ret; } long * get_ipCidrRouteTos(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; long_ret = ourroute->rt_tos; *ret_len = sizeof(long_ret); return &long_ret; } u_long * get_ipCidrRouteNextHop(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; addr_ret = ((struct sockaddr_in *) (&ourroute->rt_gateway))->sin_addr.s_addr; *ret_len = sizeof(addr_ret); return &addr_ret; } long * get_ipCidrRouteIfIndex(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; long_ret = ourroute->rt_unit; *ret_len = sizeof(long_ret); return &long_ret; } int set_ipCidrRouteIfIndex(void *data_context, long *val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ } long * get_ipCidrRouteType(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; if (ourroute->rt_flags & RTF_UP) { if (ourroute->rt_flags & RTF_GATEWAY) { long_ret = IPCIDRROUTETYPE_REMOTE; } else { long_ret = IPCIDRROUTETYPE_LOCAL; } } else { long_ret = IPCIDRROUTETYPE_REJECT; } *ret_len = sizeof(long_ret); return &long_ret; } int set_ipCidrRouteType(void *data_context, long *val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ } long * get_ipCidrRouteProto(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; /* XXX: this is wacked */ long_ret = (ourroute->rt_flags & RTF_DYNAMIC) ? IPCIDRROUTEPROTO_ICMP : IPCIDRROUTEPROTO_LOCAL; *ret_len = sizeof(long_ret); return &long_ret; } long * get_ipCidrRouteAge(void *data_context, size_t * ret_len) { long_ret = 0; /* we don't know, and defval = 0 */ *ret_len = sizeof(long_ret); return &long_ret; } oid * get_ipCidrRouteInfo(void *data_context, size_t * ret_len) { static oid zerodotzero[2] = { 0, 0 }; *ret_len = sizeof(zerodotzero); return zerodotzero; } int set_ipCidrRouteInfo(void *data_context, oid * val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ } /** XXX: return a data pointer to the data for the ipCidrRouteNextHopAS column and set ret_len to its proper size in bytes. */ long * get_ipCidrRouteNextHopAS(void *data_context, size_t * ret_len) { long_ret = 0; /* we don't know, and defval = 0 */ *ret_len = sizeof(long_ret); return &long_ret; } int set_ipCidrRouteNextHopAS(void *data_context, long *val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ } long * get_ipCidrRouteMetric1(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; long_ret = ourroute->rt_metric; *ret_len = sizeof(long_ret); return &long_ret; } int set_ipCidrRouteMetric1(void *data_context, long *val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ } long * get_ipCidrRouteMetric2(void *data_context, size_t * ret_len) { long_ret = -1; /* unused */ *ret_len = sizeof(long_ret); return &long_ret; } /** XXX: Set the value of the ipCidrRouteMetric2 column and return SNMPERR_SUCCESS on SNMPERR_GENERR on failure. */ int set_ipCidrRouteMetric2(void *data_context, long *val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ } /** XXX: return a data pointer to the data for the ipCidrRouteMetric3 column and set ret_len to its proper size in bytes. */ long * get_ipCidrRouteMetric3(void *data_context, size_t * ret_len) { long_ret = -1; /* unused */ *ret_len = sizeof(long_ret); return &long_ret; } /** XXX: Set the value of the ipCidrRouteMetric3 column and return SNMPERR_SUCCESS on SNMPERR_GENERR on failure. */ int set_ipCidrRouteMetric3(void *data_context, long *val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ } /** XXX: return a data pointer to the data for the ipCidrRouteMetric4 column and set ret_len to its proper size in bytes. */ long * get_ipCidrRouteMetric4(void *data_context, size_t * ret_len) { long_ret = -1; /* unused */ *ret_len = sizeof(long_ret); return &long_ret; } /** XXX: Set the value of the ipCidrRouteMetric4 column and return SNMPERR_SUCCESS on SNMPERR_GENERR on failure. */ int set_ipCidrRouteMetric4(void *data_context, long *val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ } /** XXX: return a data pointer to the data for the ipCidrRouteMetric5 column and set ret_len to its proper size in bytes. */ long * get_ipCidrRouteMetric5(void *data_context, size_t * ret_len) { long_ret = -1; /* unused */ *ret_len = sizeof(long_ret); return &long_ret; } /** XXX: Set the value of the ipCidrRouteMetric5 column and return SNMPERR_SUCCESS on SNMPERR_GENERR on failure. */ int set_ipCidrRouteMetric5(void *data_context, long *val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ } /** XXX: return a data pointer to the data for the ipCidrRouteStatus column and set ret_len to its proper size in bytes. */ long * get_ipCidrRouteStatus(void *data_context, size_t * ret_len) { /* the only value supported for real routes */ long_ret = IPCIDRROUTESTATUS_ACTIVE; *ret_len = sizeof(long_ret); return &long_ret; } /** XXX: Set the value of the ipCidrRouteStatus column and return SNMPERR_SUCCESS on SNMPERR_GENERR on failure. */ int set_ipCidrRouteStatus(void *data_context, long *val, size_t val_len) { return SNMP_ERR_NOERROR; /** XXX: change if an error occurs */ }