首页 > 其他 > 详细

snmp学习笔记

时间:2015-08-26 15:26:31      阅读:1095      评论:0      收藏:0      [点我收藏+]

snmp5.5 client

包含头文件

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

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

用到的函数有:
初始化snmp库:
void init_snmp(const char *);                   用于初始化snmp库

netsnmp_session *snmp_open(netsnmp_session *);  打开socket并绑定响应的udp端口,如果返回空,则设置snmp_errno为错误代码

int snmp_close(netsnmp_session *);              关闭输入的session,释放session中申请的内存,抛弃所有未处理的请求,关闭所有socket,返回值为1是表示成功,否则返回0
int snmp_close_sessions(void);                  关闭所有打开的session

 

关于pdu的操作:
netsnmp_pdu    *snmp_pdu_create(int type);     根据type创建snmp的pdu,一下为type可选值

netsnmp_pdu *snmp_clone_pdu(netsnmp_pdu *pdu); 克隆一份pdu

netsnmp_pdu *snmp_fix_pdu(netsnmp_pdu *pdu, int idx);修复一个接收到的pdu,idx使用创建pdu时的type,修复后需要释放响应pdu

void snmp_free_pdu(netsnmp_pdu *pdu);  释放pdu

 

设置pdu中值的操作:

netsnmp_variable_list *snmp_pdu_add_variable(netsnmp_pdu *pdu,   const oid * name, size_t name_length, u_char type, const void * value, size_t len); 向pdu中添加一个oid和这个oid的值

netsnmp_variable_list *snmp_varlist_add_variable(netsnmp_variable_list ** varlist, const oid * name, size_t name_length, u_char type,   const void * value, size_t len);    向netsnmp_variable_list中添加一个oid和这个oid的值

netsnmp_variable_list *snmp_add_null_var(netsnmp_pdu *pdu, const oid * name, size_t name_length);   向pdu中添加一个没有值的oid

netsnmp_variable_list *snmp_clone_varbind(netsnmp_variable_list * varlist);克隆结构体

 

接收和发送snmp的pud有两种方式:同步和异步。同步方式如下:

int snmp_synch_response(netsnmp_session *, netsnmp_pdu *,netsnmp_pdu **);同步发送请求和接收相应。

异步方式如下:请参考http://www.net-snmp.org/wiki/index.php/TUT:Simple_Async_Application
异步和同步不同之处在于:
/* 异步session中需要设置callback */
session.callback = asynch_response;            /* default callback */
session.callback_magic = hs;

其他辅助函数:

/* Output */

void print_variable(const oid * objid, size_t objidlen,const netsnmp_variable_list * variable);

void fprint_variable(FILE * fp,const oid * objid, size_t objidlen, const netsnmp_variable_list * variable);

int snprint_variable(char *buf, size_t buf_len,const oid * objid, size_t objidlen, const netsnmp_variable_list * variable);

void print_value(const oid * objid, size_t objidlen,  const netsnmp_variable_list * variable);

void fprint_value(FILE * fp,const oid * objid, size_t objidlen, const netsnmp_variable_list * variable);

int snprint_value(char *buf, size_t buf_len,const oid * objid, size_t objidlen, const netsnmp_variable_list * variable);

/* Searching the MIB Tree */
oid *snmp_parse_oid(const char *, oid *, size_t *);
int read_objid(const char *, oid *, size_t *);
int get_module_node(const char *, const char *, oid *, size_t *);

 

snmp学习笔记

原文:http://www.cnblogs.com/beautifullife4e/p/4760361.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!