为什么描述snmp oid给“null”?

我下面的代码不工作,因为我想获得使用Net-Snmp库的节点的描述。

#include "net-snmp/net-snmp-config.h" #include "net-snmp/net-snmp-includes.h" void print_s(struct tree *); int main(int argc, char ** argv) { char buff[100]; struct tree *node=NULL; init_mib(); node=read_all_mibs(); if( node == NULL ) { exit(2); } print_s(node); } void print_s(struct tree *tree) { struct tree *tp; for (tp = tree->child_list; tp; tp = tp->next_peer) { printf("%s:%s\n",tp->label,tp->description); } for (tp = tree->child_list; tp; tp = tp->next_peer) { if (tp->child_list) print_s(tp); } } o/p- org:(null) dod:(null) internet:(null) snmpV2:(null) security:(null) private:(null) experimental:(null) mgmt:(null) directory:(null) snmpModules:(null) snmpProxys:(null) snmpDomains:(null) snmpMIB:(null) snmpFrameworkMIB:(null) ......... ........ 

我得到所有节点的空值,

请告诉我为什么我无法获取节点的描述,因为它是可用的。当我使用命令行选项如下

 snmptranslate -On -Td 1.3.6.1.6.3.10 Result ----------- .1.3.6.1.6.3.10 snmpFrameworkMIB MODULE-IDENTITY -- FROM SNMP-FRAMEWORK-MIB DESCRIPTION "The SNMP Management Architecture MIB Copyright (C) The Internet Society (2002). This version of this MIB module is part of RFC 3411; see the RFC itself for full legal notices. " ::= { iso(1) org(3) dod(6) internet(1) snmpV2(6) snmpModules(3) 10 } 

1.3.6.1.6.3.10snmpFrameworkMIBoid ,但是你可以在我的程序的节点上面看到它的description为null。

任何人都可以知道这里有什么问题。

默认情况下, net-snmp MIB分析器不会打开DESCRIPTION字符串存储,因为它占用更多内存。

打印说明电话:

 snmp_set_save_descriptions(1); 

在调用init_snmp()强制保存DESCRIPTION子句之前。

函数void snmp_set_save_descriptions(int);

include/net-snmp/mib_api.h声明,并在snmplib/ucd_compat.c定义。

定义

 void snmp_set_save_descriptions(int save) { netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_SAVE_MIB_DESCRS, save); } 

编辑:

调用snmp_set_save_descriptions(1); init_snmp()之前init_snmp()调用netsnmp_init_mib()所以不需要明确调用netsnmp_init_mib()如果有人调用init_snmp()