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. Linux nfs+autofs 环境搭建

    两台服务器环境为centos 6.6 1.安装配置nfs 安装portmap 和  nfs [root@node0 ~]# yum install portmap [root@node0 ~]# yu ...

  2. Android Studio Gradle更新的解决办法

    环境: Win7_64旗舰版.Android Studio2.1.1 问题描述: 在打开Android Studio项目的时候,会下载项目对应版本的gradle,由于是国外网站导致更新较慢,该版本是在 ...

  3. Angular之Providers (Value, Factory, Service and Constant )

    官方文档Providers Each web application you build is composed of objects that collaborate to get stuff do ...

  4. mybatis配置sql超时时间

    mybatis如果不配置,默认超时时间是不做限制的.当系统慢sql很多时,势必会增加数据库压力,系统性能及稳定性降低.所以有必要要设置sql超时设置,下面配置超时时间是5分钟. 第一步:全局配置如下 ...

  5. 用VB把xls转换为xlsx

    Sub xls批量转换成xlsx()Application.ScreenUpdating = FalseMsgBox "现在开始转换,请稍候!"mypath = ThisWorkb ...

  6. jQuery(5)——动画

    jQuery中的动画 [show()方法和hide()方法] 在HTML文档中,为一个元素调用hide()方法,会将该元素的display样式改为“none”,show()方法将元素的display样 ...

  7. C#键盘事件处理

    键盘事件是在用户按下键盘上的一个键的时候发生的,可分为两类.第一类是KeyPress事件,当按下的键表示的是一个ASCII字符的时候就会触发这类事件,可通过他的KeyPressEventArgs类型参 ...

  8. struts2防止重复提交的标签

    struts2 token 使用说明 --------------------------------------------------------------------------------- ...

  9. CSS3秘笈复习:第六章

    第六章 1.文本大写化: text-transform:uppercase; 另外三种选项是:lowercase或capitalize以及none. 2.文本修饰: text-decoration:u ...

  10. mac brew install 搭建nginx php mysql

    curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1 参考 : ...