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结构体中。

  • 相关阅读:
    控件显示和隐藏
    删除标题和边框
    界面图片
    VC界面最前端显示
    在VC++6.0开发中实现全屏显示
    VC比例放大缩小
    plsql dev
    通过OCCI连接oracle(C++)
    VC++使用Pro*CC++
    文件对话框
  • 原文地址:https://www.cnblogs.com/yanhc/p/8849568.html
Copyright © 2011-2022 走看看