56 #ifndef LWIP_HDR_STATS_H 57 #define LWIP_HDR_STATS_H 70 #ifndef LWIP_STATS_LARGE 71 #define LWIP_STATS_LARGE 0 75 #define STAT_COUNTER u32_t 76 #define STAT_COUNTER_F U32_F 78 #define STAT_COUNTER u16_t 79 #define STAT_COUNTER_F U16_F 95 STAT_COUNTER cachehit;
106 STAT_COUNTER proterr;
108 STAT_COUNTER rx_group;
109 STAT_COUNTER rx_general;
110 STAT_COUNTER rx_report;
111 STAT_COUNTER tx_join;
112 STAT_COUNTER tx_leave;
113 STAT_COUNTER tx_report;
118 #if defined(LWIP_DEBUG) || LWIP_STATS_DISPLAY 125 STAT_COUNTER illegal;
129 struct stats_syselem {
137 struct stats_syselem sem;
138 struct stats_syselem mutex;
139 struct stats_syselem mbox;
146 u32_t ipinaddrerrors;
147 u32_t ipinunknownprotos;
159 u32_t ipforwdatagrams;
163 u32_t tcpactiveopens;
164 u32_t tcppassiveopens;
165 u32_t tcpattemptfails;
166 u32_t tcpestabresets;
168 u32_t tcpretranssegs;
174 u32_t udpindatagrams;
177 u32_t udpoutdatagrams;
182 u32_t icmpindestunreachs;
183 u32_t icmpintimeexcds;
184 u32_t icmpinparmprobs;
185 u32_t icmpinsrcquenchs;
186 u32_t icmpinredirects;
188 u32_t icmpinechoreps;
189 u32_t icmpintimestamps;
190 u32_t icmpintimestampreps;
191 u32_t icmpinaddrmasks;
192 u32_t icmpinaddrmaskreps;
195 u32_t icmpoutdestunreachs;
196 u32_t icmpouttimeexcds;
198 u32_t icmpoutechoreps;
205 struct stats_mib2_netif_ctrs {
213 u32_t ifinnucastpkts;
229 u32_t ifinunknownprotos;
235 u32_t ifoutucastpkts;
239 u32_t ifoutnucastpkts;
254 struct stats_proto link;
258 struct stats_proto etharp;
262 struct stats_proto ip_frag;
266 struct stats_proto ip;
270 struct stats_proto icmp;
274 struct stats_igmp igmp;
278 struct stats_proto udp;
282 struct stats_proto tcp;
286 struct stats_mem
mem;
290 struct stats_mem *
memp[MEMP_MAX];
294 struct stats_sys sys;
298 struct stats_proto ip6;
302 struct stats_proto icmp6;
306 struct stats_proto ip6_frag;
310 struct stats_igmp mld6;
314 struct stats_proto nd6;
318 struct stats_mib2 mib2;
323 extern struct stats_ lwip_stats;
326 void stats_init(
void);
328 #define STATS_INC(x) ++lwip_stats.x 329 #define STATS_DEC(x) --lwip_stats.x 330 #define STATS_INC_USED(x, y) do { lwip_stats.x.used += y; \ 331 if (lwip_stats.x.max < lwip_stats.x.used) { \ 332 lwip_stats.x.max = lwip_stats.x.used; \ 335 #define STATS_GET(x) lwip_stats.x 340 #define STATS_INC_USED(x) 344 #define TCP_STATS_INC(x) STATS_INC(x) 345 #define TCP_STATS_DISPLAY() stats_display_proto(&lwip_stats.tcp, "TCP") 347 #define TCP_STATS_INC(x) 348 #define TCP_STATS_DISPLAY() 352 #define UDP_STATS_INC(x) STATS_INC(x) 353 #define UDP_STATS_DISPLAY() stats_display_proto(&lwip_stats.udp, "UDP") 355 #define UDP_STATS_INC(x) 356 #define UDP_STATS_DISPLAY() 360 #define ICMP_STATS_INC(x) STATS_INC(x) 361 #define ICMP_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp, "ICMP") 363 #define ICMP_STATS_INC(x) 364 #define ICMP_STATS_DISPLAY() 368 #define IGMP_STATS_INC(x) STATS_INC(x) 369 #define IGMP_STATS_DISPLAY() stats_display_igmp(&lwip_stats.igmp, "IGMP") 371 #define IGMP_STATS_INC(x) 372 #define IGMP_STATS_DISPLAY() 376 #define IP_STATS_INC(x) STATS_INC(x) 377 #define IP_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip, "IP") 379 #define IP_STATS_INC(x) 380 #define IP_STATS_DISPLAY() 384 #define IPFRAG_STATS_INC(x) STATS_INC(x) 385 #define IPFRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip_frag, "IP_FRAG") 387 #define IPFRAG_STATS_INC(x) 388 #define IPFRAG_STATS_DISPLAY() 392 #define ETHARP_STATS_INC(x) STATS_INC(x) 393 #define ETHARP_STATS_DISPLAY() stats_display_proto(&lwip_stats.etharp, "ETHARP") 395 #define ETHARP_STATS_INC(x) 396 #define ETHARP_STATS_DISPLAY() 400 #define LINK_STATS_INC(x) STATS_INC(x) 401 #define LINK_STATS_DISPLAY() stats_display_proto(&lwip_stats.link, "LINK") 403 #define LINK_STATS_INC(x) 404 #define LINK_STATS_DISPLAY() 408 #define MEM_STATS_AVAIL(x, y) lwip_stats.mem.x = y 409 #define MEM_STATS_INC(x) STATS_INC(mem.x) 410 #define MEM_STATS_INC_USED(x, y) STATS_INC_USED(mem, y) 411 #define MEM_STATS_DEC_USED(x, y) lwip_stats.mem.x -= y 412 #define MEM_STATS_DISPLAY() stats_display_mem(&lwip_stats.mem, "HEAP") 414 #define MEM_STATS_AVAIL(x, y) 415 #define MEM_STATS_INC(x) 416 #define MEM_STATS_INC_USED(x, y) 417 #define MEM_STATS_DEC_USED(x, y) 418 #define MEM_STATS_DISPLAY() 422 #define MEMP_STATS_DEC(x, i) STATS_DEC(memp[i]->x) 423 #define MEMP_STATS_DISPLAY(i) stats_display_memp(lwip_stats.memp[i], i) 424 #define MEMP_STATS_GET(x, i) STATS_GET(memp[i]->x) 426 #define MEMP_STATS_DEC(x, i) 427 #define MEMP_STATS_DISPLAY(i) 428 #define MEMP_STATS_GET(x, i) 0 432 #define SYS_STATS_INC(x) STATS_INC(sys.x) 433 #define SYS_STATS_DEC(x) STATS_DEC(sys.x) 434 #define SYS_STATS_INC_USED(x) STATS_INC_USED(sys.x, 1) 435 #define SYS_STATS_DISPLAY() stats_display_sys(&lwip_stats.sys) 437 #define SYS_STATS_INC(x) 438 #define SYS_STATS_DEC(x) 439 #define SYS_STATS_INC_USED(x) 440 #define SYS_STATS_DISPLAY() 444 #define IP6_STATS_INC(x) STATS_INC(x) 445 #define IP6_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip6, "IPv6") 447 #define IP6_STATS_INC(x) 448 #define IP6_STATS_DISPLAY() 452 #define ICMP6_STATS_INC(x) STATS_INC(x) 453 #define ICMP6_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp6, "ICMPv6") 455 #define ICMP6_STATS_INC(x) 456 #define ICMP6_STATS_DISPLAY() 460 #define IP6_FRAG_STATS_INC(x) STATS_INC(x) 461 #define IP6_FRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip6_frag, "IPv6 FRAG") 463 #define IP6_FRAG_STATS_INC(x) 464 #define IP6_FRAG_STATS_DISPLAY() 468 #define MLD6_STATS_INC(x) STATS_INC(x) 469 #define MLD6_STATS_DISPLAY() stats_display_igmp(&lwip_stats.mld6, "MLDv1") 471 #define MLD6_STATS_INC(x) 472 #define MLD6_STATS_DISPLAY() 476 #define ND6_STATS_INC(x) STATS_INC(x) 477 #define ND6_STATS_DISPLAY() stats_display_proto(&lwip_stats.nd6, "ND") 479 #define ND6_STATS_INC(x) 480 #define ND6_STATS_DISPLAY() 484 #define MIB2_STATS_INC(x) STATS_INC(x) 486 #define MIB2_STATS_INC(x) 490 #if LWIP_STATS_DISPLAY 491 void stats_display(
void);
492 void stats_display_proto(
struct stats_proto *proto,
const char *name);
493 void stats_display_igmp(
struct stats_igmp *igmp,
const char *name);
494 void stats_display_mem(
struct stats_mem *
mem,
const char *name);
495 void stats_display_memp(
struct stats_mem *
mem,
int index);
496 void stats_display_sys(
struct stats_sys *sys);
498 #define stats_display() 499 #define stats_display_proto(proto, name) 500 #define stats_display_igmp(igmp, name) 501 #define stats_display_mem(mem, name) 502 #define stats_display_memp(mem, index) 503 #define stats_display_sys(sys)