mirror of
https://git.savannah.nongnu.org/git/lwip.git
synced 2026-05-14 04:06:35 +08:00
stats.h, stats.c, igmp.h, igmp.c, opt.h: Fix for bug #20503 : IGMP Improvement. Introduce IGMP_STATS to centralize statistics management.
This commit is contained in:
@@ -45,17 +45,9 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* Some routers are not happy with ROUTER ALERT make it defineable, 1 to enable */
|
||||
#define USE_ROUTER_ALERT 0
|
||||
|
||||
/*
|
||||
* IGMP packet format.
|
||||
*/
|
||||
struct igmpmsg {
|
||||
u8_t igmp_msgtype;
|
||||
u8_t igmp_maxresp;
|
||||
u16_t igmp_checksum;
|
||||
struct ip_addr igmp_group_address;
|
||||
};
|
||||
#ifndef USE_ROUTER_ALERT
|
||||
#define USE_ROUTER_ALERT 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* IGMP constants
|
||||
@@ -85,6 +77,16 @@ struct igmpmsg {
|
||||
#define DELAYING_MEMBER 1
|
||||
#define IDLE_MEMBER 2
|
||||
|
||||
/*
|
||||
* IGMP packet format.
|
||||
*/
|
||||
struct igmpmsg {
|
||||
u8_t igmp_msgtype;
|
||||
u8_t igmp_maxresp;
|
||||
u16_t igmp_checksum;
|
||||
struct ip_addr igmp_group_address;
|
||||
};
|
||||
|
||||
/*
|
||||
* now a group structure - there is
|
||||
* a list of groups for each interface
|
||||
@@ -107,21 +109,6 @@ struct igmp_group {
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct igmp_stats{
|
||||
|
||||
u32_t igmp_length_err;
|
||||
u32_t igmp_checksum_err;
|
||||
u32_t igmp_v1_rxed;
|
||||
u32_t igmp_joins;
|
||||
u32_t igmp_leave_sent;
|
||||
u32_t igmp_unicast_query;
|
||||
u32_t report_sent;
|
||||
u32_t igmp_group_query_rxed;
|
||||
u32_t report_rxed;
|
||||
};
|
||||
|
||||
|
||||
/* Prototypes */
|
||||
void igmp_init(void);
|
||||
|
||||
|
||||
@@ -598,6 +598,10 @@
|
||||
#define ICMP_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef IGMP_STATS
|
||||
#define IGMP_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef UDP_STATS
|
||||
#define UDP_STATS 1
|
||||
#endif
|
||||
@@ -624,6 +628,7 @@
|
||||
#define IP_STATS 0
|
||||
#define IPFRAG_STATS 0
|
||||
#define ICMP_STATS 0
|
||||
#define IGMP_STATS 0
|
||||
#define UDP_STATS 0
|
||||
#define TCP_STATS 0
|
||||
#define MEM_STATS 0
|
||||
|
||||
@@ -57,25 +57,37 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
struct stats_proto {
|
||||
STAT_COUNTER xmit; /* Transmitted packets. */
|
||||
STAT_COUNTER rexmit; /* Retransmitted packets. */
|
||||
STAT_COUNTER recv; /* Received packets. */
|
||||
STAT_COUNTER fw; /* Forwarded packets. */
|
||||
STAT_COUNTER drop; /* Dropped packets. */
|
||||
STAT_COUNTER chkerr; /* Checksum error. */
|
||||
STAT_COUNTER lenerr; /* Invalid length error. */
|
||||
STAT_COUNTER memerr; /* Out of memory error. */
|
||||
STAT_COUNTER rterr; /* Routing error. */
|
||||
STAT_COUNTER proterr; /* Protocol error. */
|
||||
STAT_COUNTER opterr; /* Error in options. */
|
||||
STAT_COUNTER err; /* Misc error. */
|
||||
STAT_COUNTER xmit; /* Transmitted packets. */
|
||||
STAT_COUNTER rexmit; /* Retransmitted packets. */
|
||||
STAT_COUNTER recv; /* Received packets. */
|
||||
STAT_COUNTER fw; /* Forwarded packets. */
|
||||
STAT_COUNTER drop; /* Dropped packets. */
|
||||
STAT_COUNTER chkerr; /* Checksum error. */
|
||||
STAT_COUNTER lenerr; /* Invalid length error. */
|
||||
STAT_COUNTER memerr; /* Out of memory error. */
|
||||
STAT_COUNTER rterr; /* Routing error. */
|
||||
STAT_COUNTER proterr; /* Protocol error. */
|
||||
STAT_COUNTER opterr; /* Error in options. */
|
||||
STAT_COUNTER err; /* Misc error. */
|
||||
STAT_COUNTER cachehit;
|
||||
};
|
||||
|
||||
struct stats_igmp {
|
||||
STAT_COUNTER lenerr; /* Invalid length error. */
|
||||
STAT_COUNTER chkerr; /* Checksum error. */
|
||||
STAT_COUNTER v1_rxed; /* */
|
||||
STAT_COUNTER join_sent; /* */
|
||||
STAT_COUNTER leave_sent; /* */
|
||||
STAT_COUNTER unicast_query; /* */
|
||||
STAT_COUNTER report_sent; /* */
|
||||
STAT_COUNTER report_rxed; /* */
|
||||
STAT_COUNTER group_query_rxed; /* */
|
||||
};
|
||||
|
||||
struct stats_mem {
|
||||
mem_size_t avail;
|
||||
mem_size_t used;
|
||||
mem_size_t max;
|
||||
mem_size_t max;
|
||||
mem_size_t err;
|
||||
};
|
||||
|
||||
@@ -103,6 +115,9 @@ struct stats_ {
|
||||
#if ICMP_STATS
|
||||
struct stats_proto icmp;
|
||||
#endif
|
||||
#if IGMP_STATS
|
||||
struct stats_igmp igmp;
|
||||
#endif
|
||||
#if UDP_STATS
|
||||
struct stats_proto udp;
|
||||
#endif
|
||||
@@ -148,6 +163,12 @@ void stats_init(void);
|
||||
#define ICMP_STATS_INC(x)
|
||||
#endif
|
||||
|
||||
#if IGMP_STATS
|
||||
#define IGMP_STATS_INC(x) STATS_INC(x)
|
||||
#else
|
||||
#define IGMP_STATS_INC(x)
|
||||
#endif
|
||||
|
||||
#if IP_STATS
|
||||
#define IP_STATS_INC(x) STATS_INC(x)
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user