Пример #1
0
/*
 *===========================================================================
 *                      ipnet_if_mib_handler_ifNumber
 *===========================================================================
 * Description: MIB handler for ifNumber
 * Parameters: See file 'ipsnmp.h'
 * Returns: IPSNMP_ERROR_XXX
 *
 */
IP_STATIC Ip_s32
ipnet_if_mib_handler_ifNumber(Ip_s32 cmd,
                              char *id,
                              Ipsnmp_varbind *vb,
                              Ip_s32 magic,
                              struct Ipsnmp_node_object *nodeobj)
{
    Ip_s32       ret = -1, ifNumber = 0;
    char        *iid;

    (void)id;
    (void)vb;
    if (cmd == IPSNMP_MIB_COMMAND_GET || cmd == IPSNMP_MIB_COMMAND_NEXT)
    {
        iid = ipsnmp_create_iid_integer(nodeobj->id, 0);
        if (iid == IP_NULL)
            return IPSNMP_ERROR_GENERROR;

        ifNumber = IPNET_NETIF_NUM_ATTACHED;
        ret = (Ip_s32) ipsnmp_util_put_integer(magic, iid, ifNumber);
        ipcom_free(iid);
    }

    return ret;
}
/*
 *===========================================================================
 *                      ipnet_ip_forward_mib_handler_ipCidrRouteNumber
 *===========================================================================
 * Description: MIB handler for ipCidrRouteNumber
 * Parameters: See file 'ipsnmp.h'
 * Returns: IPSNMP_ERROR_XXX
 *
 */
IP_STATIC Ip_s32
ipnet_ip_forward_mib_handler_ipCidrRouteNumber(Ip_s32 cmd,
                                               char *id,
                                               Ipsnmp_varbind *vb,
                                               Ip_s32 magic,
                                               struct Ipsnmp_node_object *nodeobj)
{
    Ip_s32       ret = -1;
    Ip_u32       ipCidrRouteNumber;
    char        *iid;
    Ipcom_route *rtab;

    (void)id;
    (void)vb;
    if (cmd == IPSNMP_MIB_COMMAND_GET || cmd == IPSNMP_MIB_COMMAND_NEXT)
    {
        iid = ipsnmp_create_iid_integer(nodeobj->id, 0);
        if (iid == IP_NULL)
            return IPSNMP_ERROR_GENERROR;

        if (ipnet_route_get_rtab(IP_AF_INET, 0, IPCOM_ROUTE_TABLE_DEFAULT, &rtab) < 0)
            return IPSNMP_ERROR_GENERROR;


        routewalk.cmd = cmd;
        routewalk.id = IP_NULL;
        routewalk.buf = IP_NULL;
        routewalk.best = IP_NULL;
        routewalk.bestrt = IP_NULL;
        routewalk.count_only = IP_TRUE;
        count = 0;
        /* For now handle only the default route table */
        ipcom_route_walk_tree(rtab,
                              (Ip_bool(*)(Ipcom_route_entry *, void *))
                              ipnet_ip_mib_cb_ipCidrRouteTable, &routewalk);
        ipCidrRouteNumber = count;

        ret = ipsnmp_util_put_gauge32(magic, iid, ipCidrRouteNumber);
        ipcom_free(iid);
    }

    return ret;
}