Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Release 1.0
[palacios.git] / geekos / include / lwip / lwip / stats.h
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
41 extern "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
58 struct 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
74 struct 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
86 struct stats_mem {
87   mem_size_t avail;
88   mem_size_t used;
89   mem_size_t max;
90   mem_size_t err;
91 };
92
93 struct stats_syselem {
94   STAT_COUNTER used;
95   STAT_COUNTER max;
96   STAT_COUNTER err;
97 };
98
99 struct stats_sys {
100   struct stats_syselem sem;
101   struct stats_syselem mbox;
102 };
103
104 struct 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
140 extern 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
200 void 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__ */