snmptarp动作学习
与snmpget动作相差无几,只不过调用函数时参数不同。参考:net-snmp-5.5/apps/snmptrap.c
只需要将open_session换为snmp_add和netsnmp_transport_open_client即可
netsnmp_session *snmp_add(netsnmp_session *,
struct netsnmp_transport_s *,
int (*fpre_parse) (netsnmp_session *,
struct netsnmp_transport_s
*, void *, int),
int (*fpost_parse) (netsnmp_session *,
netsnmp_pdu *, int));
将一些设置添加到session中
netsnmp_transport*
netsnmp_transport_open_client(const char* application, const char* str);
打开trap的客户端
产生netsnmp_transport结构体用于trap
void snmp_shutdown(const char *type);
关闭应用程序,保存任何需要持久性存储,并进行适当的清理。
参数:config文件中的"type"使用的类型标签
snmptarpd动作学习 参考:net-snmp-5.5/apps/snmptrapd.c
int init_agent (const char * app);
初始化agent。调用init_agent_read_config设置适当的默认存储空间,
NETSNMP_DS_LIB_APPTYPE应用程序的配置文件。调用init_agent之前需要调用init_snmp。
参数:
应用程序的配置文件被读取,获取存储在默认的存储
返回:
返回非零值失败,0为成功。
struct config_line*
register_config_handler(const char *filePrefix,
const char *token,
void (*parser) (const char *, char *),
void (*releaser) (void),
const char *usageLine);
从配置文件中读取参数。
参数:
filePrefix 应用程序名
token 文件中的token
parser 函数指针,解析token的函数
releaser 处理解析后的清理工作
usageLine token的可选值
返回:
返回config_line,用于表示token
char *snmp_log_syslogname (const char *pstr);
调用openlog传入应用程序名
void init_usm_conf(const char *app);
不知道干啥的,没有资料。
netsnmp_transport*
netsnmp_transport_open_server(const char* application, const char* str);
打开trap的server端
void netsnmp_transport_free(netsnmp_transport *t);
释放一个netsnmp_transport.
void netsnmp_external_event_info(int *numfds,
fd_set *readfds,
fd_set *writefds,
fd_set *exceptfds);
取得select搜需要等待的参数。
snmptarp和snmptarpd的基本流程为:
1.初始化session(snmp_sess_init)
2.打开session(snmp_open)
3.打开trap客户端或者服务端(netsnmp_transport_open_client or netsnmp_transport_open_server)
4.客户端发送trap pdu。服务端等待接收trap
5.关闭应用程序(snmp_shutdown)