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. OpenCV程序在Debug时出现「PDB文件无法加载」的一个解决方法

    这几天毕设要用到OpenCV,按照网上的教程来搭建开发环境. 用的是OpenCV 3.0 beta + Visual Studio Community 2013.我的系统64位是Win 8.1,但在加 ...

  2. JAVA类与对象(课堂总结)

    一:"=="的不同含义 当"=="施加于原始数据类型变量时,是比较变量所保存的数据是否相等当"=="施加于引用类型变量时,是比较这两个变量是 ...

  3. 调试技术(/proc、/sys、/dev、strace)

    一.在/proc中实现文件 当某个进程读取我们的/proc文件时,内核会分配一个内存页,即PAGE_SIZE字节的内存块.驱动程序可以将数据通过这个内存页返回到用户空间. 第一种方法,不采用seq_f ...

  4. Calendar时间类型数据设置

    Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -1); calendar.set(Calendar.H ...

  5. 转:LoadRunner响应时间与用户体验时间不一致问题的深入分析

    在新一代一期项目非功能测试过程中,我们发现了LoadRunner测试响应时间与客户端实际用户体验时间不一致的现象.例如员工渠道上线后,客户体验时间远远超过了LoadRunner测试响应时间.本文针对这 ...

  6. 数据库 Mysql内容补充一

    mysql时间函数 --获取当前日期 select current_date(); --获取当前时间 select current_time(); --获取当前的日期和时间 select now(); ...

  7. win32api大全

    win32api大全 http://files.cnblogs.com/files/landv/Win32API%E5%A4%A7%E5%85%A8.zip

  8. Sass入门:第四章

    1.加法 加法运算是Sass中运算的一种,在变量或属性中都可以做加法运算.如: .box { width: 20px + 8in; } 编译出来的CSS: .box { width: 788px; } ...

  9. 关于ActionScript在Java调用上的一些原理

    在公司遇到了ActionScript调用Java的需求,所以大概了解了一下: 一般基本是分成了三块,本身flash的项目,ActionScript的库,Java的库 通信方式一般有两种: 一.Acti ...

  10. POJ 2425 A Chess Game#树形SG

    http://poj.org/problem?id=2425 #include<iostream> #include<cstdio> #include<cstring&g ...