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. Mysql存储过程和函数

    Mysql存储过程和函数 基本概念: 创建存储过程和函数是指将经常使用的一组SQL语句的组合在一起,并将这些SQL语句当作一个整体存储在MySQL服务器中.例如,银行经常需要计算用户的利息.不同类别的 ...

  2. Linux终端快捷操作汇总

    定位单词 在长段的命令中,使用 Ctrl + ← 和 Ctrl + → 可快速将光标定位到命令中单词的首字母或末尾,实现在各单词之间的快速跳动定位. 你可以试着在终端中输入 apt-get insta ...

  3. C89, C99, C11: All the specifics that I know

    before anything.. sizeof is an operand!  sizeof is an operand! sizeof is an operand! 重要なことは三回にしませんね! ...

  4. 关于System.currentTimeMillis()

    一.时间的单位转换 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s)1秒=1,000,000,000 纳秒(ns ...

  5. XAMPP 的MYSQL无法启动

    最近在学习小程序,小程序的后台cms系统需要安装XAMPP软件,这个软件是个集成软件,里面有MySql 和 Apache 等 ,首先进入小程序后台时需要启动MySql 和 Apache Apache ...

  6. php 5.5 xhprof for windows

    今天看到一个好的性能优软件xhprof(有facebook开发的类库)在国内找了很多网站都没有找到相关php5.5的扩展,只好FQ还是外面的世界精彩一下就找到了link (http://windows ...

  7. java 守护线程

    守护线程生命周期: 守护线程是运行在后台的一种特殊线程, 它独立于控制终端并且周期性地执行某种任务或者等待处理某些发生的事件. 也就是说守护线程不依赖于终端,但是依赖于系统,与系统“同生共死”. 当J ...

  8. win10应用UserControl

    <Grid xmlns:src="using:UserControlExample" Margin="0,50,0,0"> <Grid.Row ...

  9. jQuery实例1

    1.选择器: <body> <script src="jquery-2.2.4.js"></script> <div id="n ...

  10. 获取table表格的一些不为人知的属性

    JS获取表格的简便方法:获取tbody:tBodies   获取thead:tHead   获取tfoot:tFoot   获取行tr:rows   获取列td:cells 使用实例: oTable. ...