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:
fbernon
2007-08-09 20:09:22 +00:00
parent 118331207b
commit ac2932bac3
6 changed files with 90 additions and 60 deletions

View File

@@ -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);

View File

@@ -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

View File

@@ -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