hi.
i developed a new mib module, and added it in snmpd.
my mib tree :.1.3.6.1.4.1.10001.2.1.1
when i used the command:
snmpwalk -v 2c -c public 192.168.0.227 .1.3.6.1.4.1.10001.2.1.1.1
the result:
SNMPv2-SMI::enterprises.10001.2.1.1.1.1.13.49.57.50.46.49.54.56.46.48.46.50.50.55
 = Hex-STRING: A0 B8 62 
SNMPv2-SMI::enterprises.10001.2.1.1.1.2.13.49.57.50.46.49.54.56.46.48.46.50.50.55
 = STRING: "1024"
SNMPv2-SMI::enterprises.10001.2.1.1.1.3.13.49.57.50.46.49.54.56.46.48.46.50.50.55
 = STRING: "2048"
SNMPv2-SMI::enterprises.10001.2.1.1.1.4.13.49.57.50.46.49.54.56.46.48.46.50.50.55
 = STRING: "100"
SNMPv2-SMI::enterprises.10001.2.1.1.1.5.13.49.57.50.46.49.54.56.46.48.46.50.50.55
 = STRING: "200"


i have some problems:
1. enterprises.10001.2.1.1.1.1 is the ip address. but why it displayed like 
Hex-STRING: A0 B8 62. it's a mess.
2. why i got this mess "13.49.57.50.46.49.54.56.46.48.46.50.50.55 ".


the following is my codes which i developed based on ipAcctTable.


PogoAgentPluginVars *PogoAgentPlugin_fill(void)
{
        ........
        sprintf(vars_tmp->pkts_in, "%d", 100);
        sprintf(vars_tmp->bytes_in, "%d", 1024);
        sprintf(vars_tmp->pkts_out, "%d", 200);
        sprintf(vars_tmp->bytes_out, "%d", 2048);
        sprintf(vars_tmp->ip, "%d.%d.%d.%d", 192,168,0,227);
        .......
}

void initialize_PogoAgentPlugin(void)
{
        static oid PogoAgentPlugin_oid[] = {1,3,6,1,4,1,10001,2,1,1};
        netsnmp_table_registration_info *table_info;
        netsnmp_handler_registration *my_handler;
        netsnmp_iterator_info *iinfo;

        table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
        iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);

        my_handler = netsnmp_create_handler_registration("PogoAgentPlugin",
                                                        PogoAgentPlugin_handler,
                                                        PogoAgentPlugin_oid,
                                                        
OID_LENGTH(PogoAgentPlugin_oid),
                                                        HANDLER_CAN_RWRITE);
            
        if (!my_handler || !table_info || !iinfo)
                return;

        netsnmp_table_helper_add_indexes(table_info, ASN_OCTET_STR, 0);

        table_info->min_column = 1;
        table_info->max_column = 5;

        iinfo->get_first_data_point = PogoAgentPlugin_get_first_data_point;
        iinfo->get_next_data_point = PogoAgentPlugin_get_next_data_point;
        iinfo->free_loop_context_at_end = PogoAgentPlugin_free;
        iinfo->table_reginfo = table_info;

        DEBUGMSGTL(("initialize_PogoAgentPlugin",
        "Registering table PogoAgentPlugin as a table iterator\n"));            
 
        netsnmp_register_table_iterator(my_handler, iinfo);
}

netsnmp_variable_list *PogoAgentPlugin_get_first_data_point(void 
**my_loop_context,
                                void **my_data_context,
                                netsnmp_variable_list *put_index_data,
                                netsnmp_iterator_info *mydata)
{
        PogoAgentPluginVars *vars;

        netsnmp_variable_list *vptr;

        vars = PogoAgentPlugin_fill();

        *my_loop_context = vars;
        *my_data_context = vars;

        vptr = put_index_data;
    
        snmp_set_var_value(vptr, vars->ip, strlen(vars->ip));
        vptr = vptr->next_variable;

        return put_index_data;
}

int PogoAgentPlugin_handler(
                                netsnmp_mib_handler               *handler,
                                netsnmp_handler_registration      *reginfo,
                                netsnmp_agent_request_info        *reqinfo,
                                netsnmp_request_info              *requests)
{

        netsnmp_request_info *request;
        netsnmp_table_request_info *table_info;
        netsnmp_variable_list *var;
    
        PogoAgentPluginVars *vars;
    
        for(request = requests; request; request = request->next) {
                var = request->requestvb;
                if (request->processed != 0)
                        continue;

                vars = (PogoAgentPluginVars *) 
netsnmp_extract_iterator_context(request);
                if (vars == NULL) {
                        if (reqinfo->mode == MODE_GET) {
                                netsnmp_set_request_error(reqinfo, request, 
SNMP_NOSUCHINSTANCE);
                                continue;
                        }
                }

                table_info = netsnmp_extract_table_info(request);

                if (table_info==NULL) {
                        continue;
                }

                switch(reqinfo->mode) {

                        case MODE_GET:
                                switch(table_info->colnum) {

                                        case COLUMN_IPACCTIP:
                                                snmp_set_var_typed_value(var, 
(u_char)ASN_OCTET_STR, (u_char *)vars->ip, strlen(vars->ip));
                                                break;
                                                .......
                                                .......
                                                snmp_log(LOG_ERR, "problem 
encountered in PogoAgentPlugin_handler: unknown column\n");
                                }
                                break;
                        default:
                                snmp_log(LOG_ERR, "problem encountered in 
PogoAgentPlugin_handler: unsupported mode\n");
                }
                
        }
...
}HW?)b彩h?+y烛N??v??y?'z?jwbv矾?,?n???!3搿?肚擘j?[???(疥?'!?顾l痘ナX??⒇^?^J肢斗?)??囤?????+fjv??㈥?W(?^渡妤?z?j)b?  b灿^渡妤?z??l??玷????????悍~?zw?X?襄?b???l?\∽�

Reply via email to