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?\∽�