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的更多相关文章

  1. linux中Makefile文件相关内容

    第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...

  2. SharePoint安全 - 在Goolge和Bing中查找SharePoint相关内容

    博客地址 http://blog.csdn.net/foxdave 本篇提供两个查询串字典,分别对应Google和Bing的搜索,用来查询SharePoint网站的相关内容 Google ShareP ...

  3. Delphi XE8帮助中的REST相关内容。

    Delphi XE8的离线帮助是我见过的最好的Delphi帮助文档了,内容相当详细和丰富,几乎涵盖了Delphi的方方面面!! Delphi XE8的帮助文档在哪里?“XE8安装目录\Help\Doc ...

  4. 【你不知道的javaScript 上卷 笔记6】javaScript中的对象相关内容

    一.创建一个对象的语法 var myObj = { key: value // ... };//字面量 var myObj = new Object(); //new myObj.key = valu ...

  5. Binary Search 的递归与迭代实现及STL中的搜索相关内容

    与排序算法不同,搜索算法是比较统一的,常用的搜索除hash外仅有两种,包括不需要排序的线性搜索和需要排序的binary search. 首先介绍一下binary search,其原理很直接,不断地选取 ...

  6. C/C++中的字符串相关姿势

    这是我在<程序设计实习>课程上作的pre,目标是对C/C++中字符串的相关内容作一个尽量完整的介绍.(对于OIer可能不太实用) 课件链接: https://files.cnblogs.c ...

  7. 在地图中调用显示FeatureLayer并进行render、popupTemplate、添加图例等相关内容的设置

    ArcGIS Server发布完FeatureLayer后,就可以在自己的代码中调用并在地图上显示出来了. 一.代码框架 调用FeatureLayer,要在require开头引入"esri/ ...

  8. Wireshark中的一些SNMP相关的过滤器

    Wireshark中的一些SNMP相关的过滤器 转自 http://linmingren2003.blog.163.com/blog/static/567510032011419825097/   由 ...

  9. (转)浅谈 Linux 系统中的 SNMP Trap

    原文:https://www.ibm.com/developerworks/cn/linux/l-cn-snmp/index.html 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前, ...

随机推荐

  1. in_array 判断的一些见解

    我个人见解in_array的判断是== 并不是===  证明如下: $arr=(array_merge(range(1, 9),range('a', 'z'),range('A', 'Z')));$m ...

  2. Redis字符串类型相关操作命令

    string是redis最基本的类型,可以包括任何类型数据,如jpg图片或者序列化对象. 单个value最大上限是1G字节 如果只使用string类型,redis就可以被看做具有持久化特性的memca ...

  3. 完全删除Postgresql

    First: If your install isn't already damaged, you can drop unwanted PostgreSQL servers ("cluste ...

  4. (十)foreac遍历、break和countinue以及标签和switch循环

    foreach语法,表示不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项. 例:输出数组的所有元素. float f[]=new float[5]; f[0]=1.0f ...

  5. magento数据添加

    1.第一种方法是一个字段一个字段地添加! $record = Mage::getModel('warehouse/record');      $record->addData($postDat ...

  6. 《JS权威指南学习总结--第八章 函数》

    内容要点: 一.JS函数是参数化的:函数的定义会包括一个称为形参的标识符列表,这些参数在函数体中像局部变量一样工作.函数调用会为形参提供实参的值.函数使用它们实参的值来计算返回值,成为该函数调用表达式 ...

  7. 手机端跳转和pc端跳转

    http://jingyan.baidu.com/article/cdddd41c61823e53cb00e198.html 参考网址 浏览:11532 | 更新:2014-04-22 16:51 第 ...

  8. laravel5.2/laravel5.3入门指南 Windows 上快速安装并运行 Laravel 5.x

    1 首先要搭建本地服务器环境推荐phpstudy2016及wampServer3.0.6 下载链接可参考 http://www.cnblogs.com/zzcit/p/5823742.html 注意一 ...

  9. 同一级目录js的引入

  10. Java 泛型 协变性、逆变性

    Java 泛型 协变性.逆变性 @author ixenos 摘要:协变性.协变通配符.协变数组.协变返回值 协变性.逆变性和无关性 在面向对象的计算机程序语言中,经常涉及到类型之间的转换,例如从具体 ...