]> Joshua Wise's Git repositories - netwatch.git/blame - lwip/src/include/lwip/stats.h
initial checkin of lwip, enough to build
[netwatch.git] / lwip / src / include / lwip / stats.h
CommitLineData
6e6d4a8b
JP
1/*
2 * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution.
13 * 3. The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
21 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
25 * OF SUCH DAMAGE.
26 *
27 * This file is part of the lwIP TCP/IP stack.
28 *
29 * Author: Adam Dunkels <adam@sics.se>
30 *
31 */
32#ifndef __LWIP_STATS_H__
33#define __LWIP_STATS_H__
34
35#include "lwip/opt.h"
36
37#include "lwip/mem.h"
38#include "lwip/memp.h"
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44#if LWIP_STATS
45
46#ifndef LWIP_STATS_LARGE
47#define LWIP_STATS_LARGE 0
48#endif
49
50#if LWIP_STATS_LARGE
51#define STAT_COUNTER u32_t
52#define STAT_COUNTER_F U32_F
53#else
54#define STAT_COUNTER u16_t
55#define STAT_COUNTER_F U16_F
56#endif
57
58struct stats_proto {
59 STAT_COUNTER xmit; /* Transmitted packets. */
60 STAT_COUNTER rexmit; /* Retransmitted packets. */
61 STAT_COUNTER recv; /* Received packets. */
62 STAT_COUNTER fw; /* Forwarded packets. */
63 STAT_COUNTER drop; /* Dropped packets. */
64 STAT_COUNTER chkerr; /* Checksum error. */
65 STAT_COUNTER lenerr; /* Invalid length error. */
66 STAT_COUNTER memerr; /* Out of memory error. */
67 STAT_COUNTER rterr; /* Routing error. */
68 STAT_COUNTER proterr; /* Protocol error. */
69 STAT_COUNTER opterr; /* Error in options. */
70 STAT_COUNTER err; /* Misc error. */
71 STAT_COUNTER cachehit;
72};
73
74struct stats_igmp {
75 STAT_COUNTER lenerr; /* Invalid length error. */
76 STAT_COUNTER chkerr; /* Checksum error. */
77 STAT_COUNTER v1_rxed; /* */
78 STAT_COUNTER join_sent; /* */
79 STAT_COUNTER leave_sent; /* */
80 STAT_COUNTER unicast_query; /* */
81 STAT_COUNTER report_sent; /* */
82 STAT_COUNTER report_rxed; /* */
83 STAT_COUNTER group_query_rxed; /* */
84};
85
86struct stats_mem {
87 mem_size_t avail;
88 mem_size_t used;
89 mem_size_t max;
90 mem_size_t err;
91};
92
93struct stats_syselem {
94 STAT_COUNTER used;
95 STAT_COUNTER max;
96 STAT_COUNTER err;
97};
98
99struct stats_sys {
100 struct stats_syselem sem;
101 struct stats_syselem mbox;
102};
103
104struct stats_ {
105#if LINK_STATS
106 struct stats_proto link;
107#endif
108#if ETHARP_STATS
109 struct stats_proto etharp;
110#endif
111#if IPFRAG_STATS
112 struct stats_proto ip_frag;
113#endif
114#if IP_STATS
115 struct stats_proto ip;
116#endif
117#if ICMP_STATS
118 struct stats_proto icmp;
119#endif
120#if IGMP_STATS
121 struct stats_igmp igmp;
122#endif
123#if UDP_STATS
124 struct stats_proto udp;
125#endif
126#if TCP_STATS
127 struct stats_proto tcp;
128#endif
129#if MEM_STATS
130 struct stats_mem mem;
131#endif
132#if MEMP_STATS
133 struct stats_mem memp[MEMP_MAX];
134#endif
135#if SYS_STATS
136 struct stats_sys sys;
137#endif
138};
139
140extern struct stats_ lwip_stats;
141
142#define stats_init() /* Compatibility define, not init needed. */
143
144#define STATS_INC(x) ++lwip_stats.x
145#else
146#define stats_init()
147#define STATS_INC(x)
148#endif /* LWIP_STATS */
149
150#if TCP_STATS
151#define TCP_STATS_INC(x) STATS_INC(x)
152#else
153#define TCP_STATS_INC(x)
154#endif
155
156#if UDP_STATS
157#define UDP_STATS_INC(x) STATS_INC(x)
158#else
159#define UDP_STATS_INC(x)
160#endif
161
162#if ICMP_STATS
163#define ICMP_STATS_INC(x) STATS_INC(x)
164#else
165#define ICMP_STATS_INC(x)
166#endif
167
168#if IGMP_STATS
169#define IGMP_STATS_INC(x) STATS_INC(x)
170#else
171#define IGMP_STATS_INC(x)
172#endif
173
174#if IP_STATS
175#define IP_STATS_INC(x) STATS_INC(x)
176#else
177#define IP_STATS_INC(x)
178#endif
179
180#if IPFRAG_STATS
181#define IPFRAG_STATS_INC(x) STATS_INC(x)
182#else
183#define IPFRAG_STATS_INC(x)
184#endif
185
186#if ETHARP_STATS
187#define ETHARP_STATS_INC(x) STATS_INC(x)
188#else
189#define ETHARP_STATS_INC(x)
190#endif
191
192#if LINK_STATS
193#define LINK_STATS_INC(x) STATS_INC(x)
194#else
195#define LINK_STATS_INC(x)
196#endif
197
198/* Display of statistics */
199#if LWIP_STATS_DISPLAY
200void stats_display(void);
201#else
202#define stats_display()
203#endif /* LWIP_STATS_DISPLAY */
204
205#ifdef __cplusplus
206}
207#endif
208
209#endif /* __LWIP_STATS_H__ */
This page took 0.038973 seconds and 4 git commands to generate.