lldp中与snmp相关内容agentx
struct lldpd {
int g_snmp;
struct event *g_snmp_timeout;
void *g_snmp_fds;
char *g_snmp_agentx;
}
lldpd_main()
{
struct lldpd *cfg;
// 初始化snmp相关参数
int snmp = 0;
char *agentx = NULL; /* AgentX socket */
// lldpd进程支持的参数
char *popt, opts[] = "H:vhkrdD:xX:m:u:4:6:I:C:p:M:P:S:iL:@ ";
// 对参数进行解析
while ((ch = getopt(argc, argv, opts)) != -1) {
switch (ch) {
// 是否启用agentX
case 'x':
snmp = 1;
break;
case 'X':
snmp = 1;
agentx = optarg;
break;
// 是否启用lldpcli
case 'L':
if (strlen(optarg))
lldpcli = optarg;
else
lldpcli = NULL;
}
cfg->g_snmp = snmp;
cfg->g_snmp_agentx = agentx;
}
static void levent_init(struct lldpd *cfg)
{
if (cfg->g_snmp) {
// 注册agentx
agent_init(cfg, cfg->g_snmp_agentx);
// 设置定时器
cfg->g_snmp_timeout = evtimer_new(cfg->g_base, levent_snmp_timeout, cfg);
if (!cfg->g_snmp_timeout)
fatalx("unable to setup timeout function for SNMP");
if ((cfg->g_snmp_fds = malloc(sizeof(struct ev_l))) == NULL)
fatalx("unable to allocate memory for SNMP events");
TAILQ_INIT(levent_snmp_fds(cfg));
}
}
void levent_loop(struct lldpd *cfg) {
// 更新snmp socket通信相关
if (cfg->g_snmp)
levent_snmp_update(cfg);
// 关闭agetnx
if (cfg->g_snmp)
agent_shutdown();
}
static void usage(void)
{
fprintf(stderr, "-x Enable SNMP subagent.\n");
}
static void notify_clients_deletion(struct lldpd_hardware *hardware,struct lldpd_port *rport)
{
agent_notify(hardware, NEIGHBOR_CHANGE_DELETED, rport);
}
static void lldpd_decode(struct lldpd *cfg, char *frame, int s,struct lldpd_hardware *hardware)
{
if (oport) {
agent_notify(hardware, NEIGHBOR_CHANGE_UPDATED, port);
} else {
agent_notify(hardware, NEIGHBOR_CHANGE_ADDED, port);
}
}
lldp中与snmp相关内容agentx的更多相关文章
- linux中Makefile文件相关内容
第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...
- SharePoint安全 - 在Goolge和Bing中查找SharePoint相关内容
博客地址 http://blog.csdn.net/foxdave 本篇提供两个查询串字典,分别对应Google和Bing的搜索,用来查询SharePoint网站的相关内容 Google ShareP ...
- Delphi XE8帮助中的REST相关内容。
Delphi XE8的离线帮助是我见过的最好的Delphi帮助文档了,内容相当详细和丰富,几乎涵盖了Delphi的方方面面!! Delphi XE8的帮助文档在哪里?“XE8安装目录\Help\Doc ...
- 【你不知道的javaScript 上卷 笔记6】javaScript中的对象相关内容
一.创建一个对象的语法 var myObj = { key: value // ... };//字面量 var myObj = new Object(); //new myObj.key = valu ...
- Binary Search 的递归与迭代实现及STL中的搜索相关内容
与排序算法不同,搜索算法是比较统一的,常用的搜索除hash外仅有两种,包括不需要排序的线性搜索和需要排序的binary search. 首先介绍一下binary search,其原理很直接,不断地选取 ...
- C/C++中的字符串相关姿势
这是我在<程序设计实习>课程上作的pre,目标是对C/C++中字符串的相关内容作一个尽量完整的介绍.(对于OIer可能不太实用) 课件链接: https://files.cnblogs.c ...
- 在地图中调用显示FeatureLayer并进行render、popupTemplate、添加图例等相关内容的设置
ArcGIS Server发布完FeatureLayer后,就可以在自己的代码中调用并在地图上显示出来了. 一.代码框架 调用FeatureLayer,要在require开头引入"esri/ ...
- Wireshark中的一些SNMP相关的过滤器
Wireshark中的一些SNMP相关的过滤器 转自 http://linmingren2003.blog.163.com/blog/static/567510032011419825097/ 由 ...
- (转)浅谈 Linux 系统中的 SNMP Trap
原文:https://www.ibm.com/developerworks/cn/linux/l-cn-snmp/index.html 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前, ...
随机推荐
- in_array 判断的一些见解
我个人见解in_array的判断是== 并不是=== 证明如下: $arr=(array_merge(range(1, 9),range('a', 'z'),range('A', 'Z')));$m ...
- Redis字符串类型相关操作命令
string是redis最基本的类型,可以包括任何类型数据,如jpg图片或者序列化对象. 单个value最大上限是1G字节 如果只使用string类型,redis就可以被看做具有持久化特性的memca ...
- 完全删除Postgresql
First: If your install isn't already damaged, you can drop unwanted PostgreSQL servers ("cluste ...
- (十)foreac遍历、break和countinue以及标签和switch循环
foreach语法,表示不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项. 例:输出数组的所有元素. float f[]=new float[5]; f[0]=1.0f ...
- magento数据添加
1.第一种方法是一个字段一个字段地添加! $record = Mage::getModel('warehouse/record'); $record->addData($postDat ...
- 《JS权威指南学习总结--第八章 函数》
内容要点: 一.JS函数是参数化的:函数的定义会包括一个称为形参的标识符列表,这些参数在函数体中像局部变量一样工作.函数调用会为形参提供实参的值.函数使用它们实参的值来计算返回值,成为该函数调用表达式 ...
- 手机端跳转和pc端跳转
http://jingyan.baidu.com/article/cdddd41c61823e53cb00e198.html 参考网址 浏览:11532 | 更新:2014-04-22 16:51 第 ...
- laravel5.2/laravel5.3入门指南 Windows 上快速安装并运行 Laravel 5.x
1 首先要搭建本地服务器环境推荐phpstudy2016及wampServer3.0.6 下载链接可参考 http://www.cnblogs.com/zzcit/p/5823742.html 注意一 ...
- 同一级目录js的引入
- Java 泛型 协变性、逆变性
Java 泛型 协变性.逆变性 @author ixenos 摘要:协变性.协变通配符.协变数组.协变返回值 协变性.逆变性和无关性 在面向对象的计算机程序语言中,经常涉及到类型之间的转换,例如从具体 ...