259 lines
7.2 KiB
C
259 lines
7.2 KiB
C
|
|
||
|
/*
|
||
|
* 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 */
|
||
|
}
|