snmp源结构分析

发布时间 2023-04-11 15:51:59作者: 我家有只江小白

在应用程序代码中 #include<net-snmp-includes.h>

#include<net-snmp/net-snmp-config.h>

net-snmp-config.h主要定义了各种配置的宏,以下是net-snmp-includes.h的结构图

 

 

 

 

 


黄色星星:函数说明

1、int netsnmp_daemonize(intquit_immediately, int stderr_log);(system.h)

将程序变为守护进程,将会fork子进程并调用setsid().

未改变工作目录和关闭文件描述符

2、 netsnmp_session *snmp_open(netsnmp_session*);

根据用户提供的会话信息建立snmp会话,打开并绑定必要的UDP端口。将会返回被创建会话的句柄(不同于传递给snmp_open的指针变量)无论出现何种错误,都返回NULL,并且创建snmp_errno错误码。

3、int snmp_close(netsnmp_session *);

int snmp_close_sessions(void);

关闭参数描述的会话。释放被该回话分配的数据,重排在队列中所有未决(未处理的)请求,并关闭所有该回话打开的套接字。出错返回0,否则返回1.

 

4、intsnmp_send(netsnmp_session *, netsnmp_pdu *);

在调用snmp_build创建一个连续的数据包之后发送输入消息报文。如果有必要,根据会话默认值设置PDU的某些字段。并在该会话的请求列表上添加一与该PDU相对应的请求,然后发送消息。返回请求ID或1,出错返回0.消息报文会被该函数释放,除非发生错误。

5、int snmp_async_send(netsnmp_session*, netsnmp_pdu *,

netsnmp_callback, void *);

异步发送

6、void snmp_read(fd_set*);

查看是否参数所描述的文件描述符集中的所有文件描述符都属于snmp。每一个带有各自 文件描述符的套接字都会得到一个数据包,当收到数据包时会调用snmp_parse。处理过 的PDU将会发送给

snmp_read2()和snmp_read()一样,但是可以接受大文件的文件描述符集,而不仅仅是常规文件。

7、intsnmp_select_info(numfds, fdset, timeout, block)

int *numfds;

fd_set *fdset;

structtimeval *timeout;

int *block;

输入:如果输入的timeout没有被定义,block设为1;如果输入的timeout被定义了,block设为0。

输出:如果输出的timeout没有被定义,block被视为1;如果输出的timeout被定义了,block被设为0。

上面的输入输出指定是参数timeout和block。

该函数的返回值为可以操作的socket数量,并且这些socket已经被选到了fdset里,供后续的select操作。

Snmp_read, snmp_select_info,and snmp_timeout provide an interface for the use of the select(2) system callso that SNMP transactions can occur asynchronously.

 


红色星星:数据结构说明