zoukankan      html  css  js  c++  java
  • lwip stats

    lwip统计量分两种,一种是lwip自己的,一种是snmp的。

    直接用snmp的

    1 /*
    2    -----------------------------------
    3    ---------- Statistics options ----------
    4    -----------------------------------
    5 */
    6 #define LWIP_STATS                      1
    7 #define MIB2_STATS                      1

    打开以上两个开关的同时,需要将stats.c加到工程中。

    UDP的MIB2统计量有:

    1   /* UDP */
    2   u32_t udpindatagrams;
    3   u32_t udpnoports;
    4   u32_t udpinerrors;
    5   u32_t udpoutdatagrams;

    在其他地方可以用以下方式获取这些统计量

    STATS_GET(mib2.udpoutdatagrams)

    对于netif的MIB2统计量,在netif结构体中已经有定义:

     1 #if MIB2_STATS
     2   /** link type (from "snmp_ifType" enum from snmp_mib2.h) */
     3   u8_t link_type;
     4   /** (estimate) link speed */
     5   u32_t link_speed;
     6   /** timestamp at last change made (up/down) */
     7   u32_t ts;
     8   /** counters */
     9   struct stats_mib2_netif_ctrs mib2_counters;
    10 #endif /* MIB2_STATS */

    其中,结构体stats_mib2_netif_ctrs在stats.h中定义。

     对于UDP,IP的MIB统计量的操作在stats.h中定义,而对于netif的MIB统计量的操作则在snmp.h中,为什么呢?(对于netif统计量,只需要包含snmp.h即可,不需要包含其他snmp.c文件,只是用了一些宏操作)

     对于netif的MIB统计量,在netif中的netif_poll和netif_loop_output中进行了操作:

    1     MIB2_STATS_NETIF_INC(stats_if, ifoutdiscards);

    但这两个函数基本都没有用到,因此,netif的统计量应该在ethernetif和slipif中进行操作

    在ethernetif.c的low_level_output函数中,进行如下操作即可。

    1 MIB2_STATS_NETIF_INC(s_pxNetIf, ifoutucastpkts);

    对于每个netif中都有mib2_counters,因此,每个netif都可以进行该操作。

    总结:

    对于IP、UDP等的MIB统计量定义在stats.c中的lwip_stats变量中,对于netif的MIB统计量则定义在各netif结构体中。

  • 相关阅读:
    linux笔记2.20
    新安装ubuntu后几项配置
    linux网络配置
    linux笔记2.19
    jquery在不同浏览器获取文件路径出现问题!
    软件工程师如何定义自己的职业路线
    标识符
    结对项目-四则运算 “软件”之升级版
    小学四则运算 “软件”之初版
    分布式版本控制系统Git的安装与使用
  • 原文地址:https://www.cnblogs.com/yanhc/p/8849568.html
Copyright © 2011-2022 走看看