在net-snmp的/include/net-snmp/agent/snmp_agent.h里面有SNMP_MSG_GET的定义,同时还有:SNMP_MSG_GET,SNMP_MSG_GETNEXT,SNMP_MSG_GETBULK,SNMP_MSG_INTERNAL_GET_STASH定义。
ANS.1里面的类型,ANS_XXX 如:ASN_INTEGER64定义在./library/asn1.h里面,这里面放的都是基本的;还有一些高级的类型其实是用基本类型的数值算出来的,这些高级的类型如:ASN_TIMETICKS定义在./library/snmp_impl.h。这里面还有ASN_IPADDRESS,ASN_COUNTER,ASN_UNSIGNED,ASN_FLOAT,ASN_DOUBLE,ASN_UNSIGNED64等等其他的一些类型。所有这些类型都是用ASN_APPLICATION做的|操作得出的。ASN_APPLICATION定义在library/asn1.h。
在library/parse.h里面还有个类型的定义,这个定义主要是用作输出的时候,输出类型用的
在library/oid.h里面定义了oid类型。oid其实是u_long或者uint8_t
net-snmp的源码里面,头文件是在include/net-snmp/里面放着的,定义的c文件是在snmplib/里面放着的,snmp相关命令的原文件是在app里面放着的。
snmp版本的常量在./library/snmp.h里面声明的。有:SNMP_VERSION_1,SNMP_VERSION_2c,SNMP_VERSION_2u,SNMP_VERSION_3
以下文字定义在./snmp_api.c里面:
* These functions send PDUs using an active session:
* snmp_send - traditional API, no callback
* snmp_async_send - traditional API, with callback
* snmp_sess_send - single session API, no callback
* snmp_sess_async_send - single session API, with callback
如果command是SNMP_MSG_GETBULK,pdu要设置max_repetitions和non_repeaters这两个值。
在pdu里面non_repeaters是errstat;max_repetitions是errindex
#define non_repeaters errstat
#define max_repetitions errindex
在./snmp_api.c的_snmp_build函数要用到(./snmp_api.c第2785,2789行)
snmp_clinet.c::snmp_synch_response-->snmp_client.c::snmp_synch_response_cb-->
snmp_api.c::snmp_send-->snmp_api.c::snmp_async_send-->
snmp_api.c::snmp_sess_async_send-->snmp_api.c::_sess_async_send-->
snmp_api.c::snmp_build-->snmp_api.c::_snmp_build
阅读(5728) | 评论(0) | 转发(0) |