资源简介
用net-snmp的c apis实现trap的接收,类似于snmptrapd工具的实现,但是更为简单。

代码片段和文件信息
#include
#include
#include
#include
int netsnmp_running = 1;
/************************************************************************
**
**
************************************************************************/
int snmp_input(int op netsnmp_session *session int reqid netsnmp_pdu *pdu void *magic)
{
printf(“We got a trap:\n“);
struct variable_list *vars;
for(vars = pdu->variables; vars; vars = vars->next_variable)
{
print_variable(vars->name vars->name_length vars);
}
return 1;
}
static int pre_parse(netsnmp_session * session netsnmp_transport *transport
void *transport_data int transport_data_length)
{
return 1;
}
static netsnmp_session *snmptrapd_add_session(netsnmp_transport *t)
{
netsnmp_session sess *session = &sess *rc = NULL;
snmp_sess_init(session);
session->peername = SNMP_DEFAULT_PEERNAME; /* Original code had NULL here */
session->version = SNMP_DEFAULT_VERSION;
session->community_len = SNMP_DEFAULT_COMMUNITY_LEN;
session->retries = SNMP_DEFAULT_RETRIES;
session->timeout = SNMP_DEFAULT_TIMEOUT;
session->callback = snmp_input;
session->callback_magic = (void *) t;
session->authenticator = NULL;
sess.isAuthoritative = SNMP_SESS_UNKNOWNAUTH;
rc = snmp_add(session t pre_parse NULL);
if (rc == NULL)
{
snmp_sess_perror(“snmptrapd“ session);
}
return rc;
}
static void snmptrapd_close_sessions(netsnmp_session * sess_list)
{
netsnmp_session *s = NULL *next = NULL;
for (s = sess_list; s != NULL; s = next)
{
next = s->next;
snmp_close(s);
}
}
static void snmptrapd_main_loop(void)
{
int count numfds block;
fd_set readfdswritefdsexceptfds;
struct timeval timeout *tvp;
printf(“snmptrapd_main_loop\n“);
while (netsnmp_running)
{
numfds = 0;
FD_ZERO(&readfds);
FD_ZERO(&writefds);
FD_ZERO(&exceptfds);
block = 0;
tvp = &timeout;
timerclear(tvp);
tvp->tv_sec = 5;
snmp_select_info(&numfds &readfds tvp &block);
if (block == 1)
{
tvp = NULL; /* block without timeout */
}
#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
netsnmp_external_event_info(&numfds &readfds &writefds &exceptfds);
#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
count = select(numfds &readfds &writefds &exceptfds tvp);
printf(“count = %d\n“ count);
if (count > 0)
{
#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
netsnmp_dispatch_external_events(&count &readfds &writefds &exceptfds);
#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
/* If there are any more events after external events then try SNMP events. */
if (count > 0)
{
snmp_read(&readfds);
}
}
else
{
switch (count)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6725 2013-06-06 10:57 snmptrapd\snmptrapd-linux.c
文件 7178 2013-06-06 10:49 snmptrapd\snmptrapd-windows.cpp
目录 0 2013-06-09 10:44 snmptrapd
----------- --------- ---------- ----- ----
13903 3
- 上一篇:Excel上机操作题
- 下一篇:用友春招最新资料
相关资源
- 用VC 编写的基于SNMP的路由器拓扑程序
- 易语言Bootstrap类模块2.13源码
- web开发舔狗日记 框架bootstrap
- bootstrap demo 源码大全
- checkpoint的snmp及syslog配置.doc
- Orientation-resolved 3d5/2 energy shift of Rh
- Photoluminescence and photoabsorbance blue shi
- Coordination-resolved 4f binding energy shift
- 史上最经典的Bootstrap前台模板
- dellmib库snmp获取dell服务器信息的
- SNMP安装包(全+使用文档)
- snmpc7.0中文版网管软件
- bui+bootstrap 后台完整界面 API
- net-snmp-5.6.1.1-1.x86.exe
- .net MVC+Bootstrap下使用localResizeIMG上传图
- 16套bootstrap后台管理系统模版UI框架
- 基于bootstrap的一套页面
- BootStrap案例-旅游网首页.zip
- Dashkit bootstrap 4 主题框架 ADMIN 后台
- bootstrap-文件上传模板
- Linux安装SNMP服务所需要rpm包
- OA Bootstrap模板
- Bootstrap学习
- Angulr– Bootstrap Admin Web App with Angular
- Bootstrap 4 Site Blueprints(2nd) azw3
- Windows 10 1903 SNMP离线安装文件.rar
- 基于Bootstrap Ace模板的菜单Tab页效果优
- Bootstrap 3 API 中文版CHM
- bootstrap3框架写的5个后台管理模板
- SNMP测试工具
评论
共有 条评论