1、
系统环境:
opensuse 11.3
2、
需要安装的net-snmp包:
net-snmp
net-snmp-devel
perl-SNMP
snmp-mibs
libsnmp20
可以使用 zypper 安装来解决包依赖问题(zypper install net-snmp 和 net-snmp-devel)。
3、
写一个MIB库:(参照ASN.1抽象标记语言生成SMI、MIB)
MyMIB DEFINITIONS::=BEGIN
IMPORTS
enterprises,OBJECT-TYPE,Integer32,TimeTicks
FROM SNMPv2-SMI
.....
4、编译
MIB库存放路径:/usr/share/snmp/mibs/mymib.mib
配置文件路径: /etc/snmp/mymib.conf
指令:
env MIBS="+/usr/share/snmp/mibs/mymib.mib" mib2c mymib
利用向导生成.c文件
步骤如下: (选2)Net-SNMP style code --> (选1) destroyed independently of the SNMP agent -->
(选2)mib2c -c mib2c.iterate_access.conf mymib -->看到提示:
**********************************************************************
NOTE: The only files you MUST modify should be the following:
mymib_access.c
mymib_access.h
mymib_checkfns_local.h
mymib_checkfns_local.c
**********************************************************************
则生成成功。
5、修改部分代码:
修改mymib.c mymibIfTable_handler函数
修改点1:
138 case MODE_GET:
// 不采用链表方式,可以注释掉这里。
139 /* data_context = netsnmp_extract_iterator_context(request);
140 if (data_context == NULL) {
141 netsnmp_set_request_error(reqinfo, request,
142 SNMP_NOSUCHINSTANCE);
143 continue;
144 }*/
145 break;
修改点2:
switch(reqinfo->mode) {
161 case MODE_GET:
162 switch(table_info->colnum) {
163 case COLUMN_IFINDEX:
164 {
// 这里就是查询返回值的地方:ge