snmp源結構分析


在應用程序代碼中 #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.

 


紅色星星:數據結構說明



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章