| |
| /* |
| * Note: this file originally auto-generated by mib2c using |
| * : mib2c.access_functions.conf$ |
| */ |
| |
| #include <net-snmp/net-snmp-config.h> |
| #include "route_headers.h" |
| #include <net-snmp/net-snmp-includes.h> |
| #include <net-snmp/agent/net-snmp-agent-includes.h> |
| #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 */ |
| } |