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

全部博文(111)

文章存档

2013年(9)

2012年(28)

2011年(17)

2010年(28)

2009年(29)

我的朋友

分类: C/C++

2011-11-10 19:20:51

在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


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