Chinaunix首页 | 论坛 | 博客
  • 博客访问: 483314
  • 博文数量: 111
  • 博客积分: 2332
  • 博客等级: 大尉
  • 技术积分: 1187
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-29 11:22
文章分类

全部博文(111)

文章存档

2013年(9)

2012年(28)

2011年(17)

2010年(28)

2009年(29)

我的朋友

分类: C/C++

2011-11-25 11:28:46

文档参见:http://www.net-snmp.org/dev/agent/structvariable__list.html
snmp_variable_list是variable_list的typedef
其实snmp_variable_list相当于是snmp_variable_list类型链表的某一个元素,而不是整个链表它里面放了一个snmp变量的相关信息。
snmp_variable_list里的next_variable是指向这个链表的下一个snmp_variable_list元素的指针。
name是这个元素对应的oid的指针。name指向的是一个int类型的数组,这个数组里面放的就是这个元素的oid
name_length是name指的那个装有oid的int型数组的长度。说白了就是这个元素的oid的长度
type是这个元素的类型。常用的有:ASN_OBJECT_ID,ASN_INTEGER,ASN_OCTET_STR,ASN_FLOAT,ASN_INTEGER64,ASN_TIMETICKS,ASN_IPADDRESS,ASN_COUNTER,ASN_GAUGE等等。
val是一个netsnmp_vardata类型的变量。netsnmp_vardata的文档在:http://www.net-snmp.org/dev/agent/unionnetsnmp__vardata.html。netsnmp_vardata里面integer是指向ASN_INTEGER型结果的指针,string是指向ASN_OCTET_STR类型结果的指针,objid是指向ASN_OBJECT_ID类型的指针等等。
val_len是存放这个元素的值的内存的大小。如果这个值是一个ASN_OCTET_STR的元素,那么这个元素的长度就是val_len/sizeof(char),同样的,如果这个值是一个oid,那么存放这个oid的int类型数组的长度就是val_len/sizeof(int)
name_loc是一个oid类型的数组,这个数组存放的其实就是这个元素的oid。
name_loc和name前者是一个指向这个元素oid的指针,后者是存放这个元素oid的数组。这两者都可以取到这个元素的oid
buf是个u_char类型的数组。如果这个元素的值的在内存中的长度小于40(有百分之九十的可能性是这样),那么buf里面就放的这个元素的值。如果这个元素的值在内存中的长度大于40,buf里面就不知道放的什么乱七八糟的了。对于ASN_TIMETICKS类型的值来说,buf里面放的是一个int类型的指针,指针的值是这个元素的值的地址,*(vars->buf)这样可以取出这个值。对于ASN_OCTET_STR类型的值来说,如果长度小于40,那么buf里买面就放的这个字符串。对于ASN_OBJECT_ID类型的值来说,buf里面装的是oid的值,只不过是这也样子的:.1.3.6.1.6.3.16.2.2.1在buf里面的值是.1.0.0.0.3.0.0.0.6.0.0.0.1.0.0.0.6.0.0.0.3.0.0.0.16.0.0.0.2.0.0.0.2.0.0.0.1.0.0.0

阅读(3797) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~