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 / snmp.h
1 /*
2  * Copyright (c) 2001, 2002 Leon Woestenberg <leon.woestenberg@axon.tv>
3  * Copyright (c) 2001, 2002 Axon Digital Design B.V., The Netherlands.
4  * All rights reserved.
5  * 
6  * Redistribution and use in source and binary forms, with or without modification, 
7  * are permitted provided that the following conditions are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright notice,
10  *    this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  *    this list of conditions and the following disclaimer in the documentation
13  *    and/or other materials provided with the distribution.
14  * 3. The name of the author may not be used to endorse or promote products
15  *    derived from this software without specific prior written permission. 
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 
18  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
19  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
20  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
21  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
22  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
25  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
26  * OF SUCH DAMAGE.
27  *
28  * This file is part of the lwIP TCP/IP stack.
29  * 
30  * Author: Leon Woestenberg <leon.woestenberg@axon.tv>
31  *
32  */
33 #ifndef __LWIP_SNMP_H__
34 #define __LWIP_SNMP_H__
35
36 #include "lwip/opt.h"
37 #include "lwip/netif.h"
38 #include "lwip/udp.h"
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 /**
45  * @see RFC1213, "MIB-II, 6. Definitions"
46  */
47 enum snmp_ifType {
48   snmp_ifType_other=1,                /* none of the following */
49   snmp_ifType_regular1822,
50   snmp_ifType_hdh1822,
51   snmp_ifType_ddn_x25,
52   snmp_ifType_rfc877_x25,
53   snmp_ifType_ethernet_csmacd,
54   snmp_ifType_iso88023_csmacd,
55   snmp_ifType_iso88024_tokenBus,
56   snmp_ifType_iso88025_tokenRing,
57   snmp_ifType_iso88026_man,
58   snmp_ifType_starLan,
59   snmp_ifType_proteon_10Mbit,
60   snmp_ifType_proteon_80Mbit,
61   snmp_ifType_hyperchannel,
62   snmp_ifType_fddi,
63   snmp_ifType_lapb,
64   snmp_ifType_sdlc,
65   snmp_ifType_ds1,                    /* T-1 */
66   snmp_ifType_e1,                     /* european equiv. of T-1 */
67   snmp_ifType_basicISDN,
68   snmp_ifType_primaryISDN,            /* proprietary serial */
69   snmp_ifType_propPointToPointSerial,
70   snmp_ifType_ppp,
71   snmp_ifType_softwareLoopback,
72   snmp_ifType_eon,                    /* CLNP over IP [11] */
73   snmp_ifType_ethernet_3Mbit,
74   snmp_ifType_nsip,                   /* XNS over IP */
75   snmp_ifType_slip,                   /* generic SLIP */
76   snmp_ifType_ultra,                  /* ULTRA technologies */
77   snmp_ifType_ds3,                    /* T-3 */
78   snmp_ifType_sip,                    /* SMDS */
79   snmp_ifType_frame_relay
80 };
81
82 #if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */
83
84 /** SNMP "sysuptime" Interval */
85 #define SNMP_SYSUPTIME_INTERVAL 10
86
87 /** fixed maximum length for object identifier type */
88 #define LWIP_SNMP_OBJ_ID_LEN 32
89
90 /** internal object identifier representation */
91 struct snmp_obj_id
92 {
93   u8_t len;
94   s32_t id[LWIP_SNMP_OBJ_ID_LEN];
95 };
96
97 /* system */
98 void snmp_set_sysdesr(u8_t* str, u8_t* len);
99 void snmp_set_sysobjid(struct snmp_obj_id *oid);
100 void snmp_get_sysobjid_ptr(struct snmp_obj_id **oid);
101 void snmp_inc_sysuptime(void);
102 void snmp_add_sysuptime(u32_t value);
103 void snmp_get_sysuptime(u32_t *value);
104 void snmp_set_syscontact(u8_t *ocstr, u8_t *ocstrlen);
105 void snmp_set_sysname(u8_t *ocstr, u8_t *ocstrlen);
106 void snmp_set_syslocation(u8_t *ocstr, u8_t *ocstrlen);
107
108 /* network interface */
109 void snmp_add_ifinoctets(struct netif *ni, u32_t value); 
110 void snmp_inc_ifinucastpkts(struct netif *ni);
111 void snmp_inc_ifinnucastpkts(struct netif *ni);
112 void snmp_inc_ifindiscards(struct netif *ni);
113 void snmp_add_ifoutoctets(struct netif *ni, u32_t value);
114 void snmp_inc_ifoutucastpkts(struct netif *ni);
115 void snmp_inc_ifoutnucastpkts(struct netif *ni);
116 void snmp_inc_ifoutdiscards(struct netif *ni);
117 void snmp_inc_iflist(void);
118 void snmp_dec_iflist(void);
119
120 /* ARP (for atTable and ipNetToMediaTable) */
121 void snmp_insert_arpidx_tree(struct netif *ni, struct ip_addr *ip);
122 void snmp_delete_arpidx_tree(struct netif *ni, struct ip_addr *ip);
123
124 /* IP */
125 void snmp_inc_ipinreceives(void);
126 void snmp_inc_ipinhdrerrors(void);
127 void snmp_inc_ipinaddrerrors(void);
128 void snmp_inc_ipforwdatagrams(void);
129 void snmp_inc_ipinunknownprotos(void);
130 void snmp_inc_ipindiscards(void);
131 void snmp_inc_ipindelivers(void);
132 void snmp_inc_ipoutrequests(void);
133 void snmp_inc_ipoutdiscards(void);
134 void snmp_inc_ipoutnoroutes(void);
135 void snmp_inc_ipreasmreqds(void);
136 void snmp_inc_ipreasmoks(void);
137 void snmp_inc_ipreasmfails(void);
138 void snmp_inc_ipfragoks(void);
139 void snmp_inc_ipfragfails(void);
140 void snmp_inc_ipfragcreates(void);
141 void snmp_inc_iproutingdiscards(void);
142 void snmp_insert_ipaddridx_tree(struct netif *ni);
143 void snmp_delete_ipaddridx_tree(struct netif *ni);
144 void snmp_insert_iprteidx_tree(u8_t dflt, struct netif *ni);
145 void snmp_delete_iprteidx_tree(u8_t dflt, struct netif *ni);
146
147 /* ICMP */
148 void snmp_inc_icmpinmsgs(void);
149 void snmp_inc_icmpinerrors(void);
150 void snmp_inc_icmpindestunreachs(void);
151 void snmp_inc_icmpintimeexcds(void);
152 void snmp_inc_icmpinparmprobs(void);
153 void snmp_inc_icmpinsrcquenchs(void);
154 void snmp_inc_icmpinredirects(void);
155 void snmp_inc_icmpinechos(void);
156 void snmp_inc_icmpinechoreps(void);
157 void snmp_inc_icmpintimestamps(void);
158 void snmp_inc_icmpintimestampreps(void);
159 void snmp_inc_icmpinaddrmasks(void);
160 void snmp_inc_icmpinaddrmaskreps(void);
161 void snmp_inc_icmpoutmsgs(void);
162 void snmp_inc_icmpouterrors(void);
163 void snmp_inc_icmpoutdestunreachs(void);
164 void snmp_inc_icmpouttimeexcds(void);
165 void snmp_inc_icmpoutparmprobs(void);
166 void snmp_inc_icmpoutsrcquenchs(void);
167 void snmp_inc_icmpoutredirects(void); 
168 void snmp_inc_icmpoutechos(void);
169 void snmp_inc_icmpoutechoreps(void);
170 void snmp_inc_icmpouttimestamps(void);
171 void snmp_inc_icmpouttimestampreps(void);
172 void snmp_inc_icmpoutaddrmasks(void);
173 void snmp_inc_icmpoutaddrmaskreps(void);
174
175 /* TCP */
176 void snmp_inc_tcpactiveopens(void);
177 void snmp_inc_tcppassiveopens(void);
178 void snmp_inc_tcpattemptfails(void);
179 void snmp_inc_tcpestabresets(void);
180 void snmp_inc_tcpinsegs(void);
181 void snmp_inc_tcpoutsegs(void);
182 void snmp_inc_tcpretranssegs(void);
183 void snmp_inc_tcpinerrs(void);
184 void snmp_inc_tcpoutrsts(void);
185
186 /* UDP */
187 void snmp_inc_udpindatagrams(void);
188 void snmp_inc_udpnoports(void);
189 void snmp_inc_udpinerrors(void);
190 void snmp_inc_udpoutdatagrams(void);
191 void snmp_insert_udpidx_tree(struct udp_pcb *pcb);
192 void snmp_delete_udpidx_tree(struct udp_pcb *pcb);
193
194 /* SNMP */
195 void snmp_inc_snmpinpkts(void);
196 void snmp_inc_snmpoutpkts(void);
197 void snmp_inc_snmpinbadversions(void);
198 void snmp_inc_snmpinbadcommunitynames(void);
199 void snmp_inc_snmpinbadcommunityuses(void);
200 void snmp_inc_snmpinasnparseerrs(void);
201 void snmp_inc_snmpintoobigs(void);
202 void snmp_inc_snmpinnosuchnames(void);
203 void snmp_inc_snmpinbadvalues(void);
204 void snmp_inc_snmpinreadonlys(void);
205 void snmp_inc_snmpingenerrs(void);
206 void snmp_add_snmpintotalreqvars(u8_t value);
207 void snmp_add_snmpintotalsetvars(u8_t value);
208 void snmp_inc_snmpingetrequests(void);
209 void snmp_inc_snmpingetnexts(void);
210 void snmp_inc_snmpinsetrequests(void);
211 void snmp_inc_snmpingetresponses(void);
212 void snmp_inc_snmpintraps(void);
213 void snmp_inc_snmpouttoobigs(void);
214 void snmp_inc_snmpoutnosuchnames(void);
215 void snmp_inc_snmpoutbadvalues(void);
216 void snmp_inc_snmpoutgenerrs(void);
217 void snmp_inc_snmpoutgetrequests(void);
218 void snmp_inc_snmpoutgetnexts(void);
219 void snmp_inc_snmpoutsetrequests(void);
220 void snmp_inc_snmpoutgetresponses(void);
221 void snmp_inc_snmpouttraps(void);
222 void snmp_get_snmpgrpid_ptr(struct snmp_obj_id **oid);
223 void snmp_set_snmpenableauthentraps(u8_t *value);
224 void snmp_get_snmpenableauthentraps(u8_t *value);
225
226 /* LWIP_SNMP support not available */
227 /* define everything to be empty */
228 #else
229
230 /* system */
231 #define snmp_set_sysdesr(str, len)
232 #define snmp_set_sysobjid(oid);
233 #define snmp_get_sysobjid_ptr(oid)
234 #define snmp_inc_sysuptime()
235 #define snmp_add_sysuptime(value)
236 #define snmp_get_sysuptime(value)
237 #define snmp_set_syscontact(ocstr, ocstrlen);
238 #define snmp_set_sysname(ocstr, ocstrlen);
239 #define snmp_set_syslocation(ocstr, ocstrlen);
240
241 /* network interface */
242 #define snmp_add_ifinoctets(ni,value) 
243 #define snmp_inc_ifinucastpkts(ni)
244 #define snmp_inc_ifinnucastpkts(ni)
245 #define snmp_inc_ifindiscards(ni)
246 #define snmp_add_ifoutoctets(ni,value)
247 #define snmp_inc_ifoutucastpkts(ni)
248 #define snmp_inc_ifoutnucastpkts(ni)
249 #define snmp_inc_ifoutdiscards(ni)
250 #define snmp_inc_iflist()
251 #define snmp_dec_iflist()
252
253 /* ARP */
254 #define snmp_insert_arpidx_tree(ni,ip)
255 #define snmp_delete_arpidx_tree(ni,ip)
256
257 /* IP */
258 #define snmp_inc_ipinreceives()
259 #define snmp_inc_ipinhdrerrors()
260 #define snmp_inc_ipinaddrerrors()
261 #define snmp_inc_ipforwdatagrams()
262 #define snmp_inc_ipinunknownprotos()
263 #define snmp_inc_ipindiscards()
264 #define snmp_inc_ipindelivers()
265 #define snmp_inc_ipoutrequests()
266 #define snmp_inc_ipoutdiscards()
267 #define snmp_inc_ipoutnoroutes()
268 #define snmp_inc_ipreasmreqds()
269 #define snmp_inc_ipreasmoks()
270 #define snmp_inc_ipreasmfails()
271 #define snmp_inc_ipfragoks()
272 #define snmp_inc_ipfragfails()
273 #define snmp_inc_ipfragcreates()
274 #define snmp_inc_iproutingdiscards()
275 #define snmp_insert_ipaddridx_tree(ni)
276 #define snmp_delete_ipaddridx_tree(ni)
277 #define snmp_insert_iprteidx_tree(dflt, ni)
278 #define snmp_delete_iprteidx_tree(dflt, ni)
279
280 /* ICMP */
281 #define snmp_inc_icmpinmsgs()
282 #define snmp_inc_icmpinerrors() 
283 #define snmp_inc_icmpindestunreachs() 
284 #define snmp_inc_icmpintimeexcds()
285 #define snmp_inc_icmpinparmprobs() 
286 #define snmp_inc_icmpinsrcquenchs() 
287 #define snmp_inc_icmpinredirects() 
288 #define snmp_inc_icmpinechos() 
289 #define snmp_inc_icmpinechoreps()
290 #define snmp_inc_icmpintimestamps() 
291 #define snmp_inc_icmpintimestampreps()
292 #define snmp_inc_icmpinaddrmasks()
293 #define snmp_inc_icmpinaddrmaskreps()
294 #define snmp_inc_icmpoutmsgs()
295 #define snmp_inc_icmpouterrors()
296 #define snmp_inc_icmpoutdestunreachs() 
297 #define snmp_inc_icmpouttimeexcds() 
298 #define snmp_inc_icmpoutparmprobs()
299 #define snmp_inc_icmpoutsrcquenchs()
300 #define snmp_inc_icmpoutredirects() 
301 #define snmp_inc_icmpoutechos() 
302 #define snmp_inc_icmpoutechoreps()
303 #define snmp_inc_icmpouttimestamps()
304 #define snmp_inc_icmpouttimestampreps()
305 #define snmp_inc_icmpoutaddrmasks()
306 #define snmp_inc_icmpoutaddrmaskreps()
307 /* TCP */
308 #define snmp_inc_tcpactiveopens()
309 #define snmp_inc_tcppassiveopens()
310 #define snmp_inc_tcpattemptfails()
311 #define snmp_inc_tcpestabresets()
312 #define snmp_inc_tcpinsegs()
313 #define snmp_inc_tcpoutsegs()
314 #define snmp_inc_tcpretranssegs()
315 #define snmp_inc_tcpinerrs()
316 #define snmp_inc_tcpoutrsts()
317
318 /* UDP */
319 #define snmp_inc_udpindatagrams()
320 #define snmp_inc_udpnoports()
321 #define snmp_inc_udpinerrors()
322 #define snmp_inc_udpoutdatagrams()
323 #define snmp_insert_udpidx_tree(pcb)
324 #define snmp_delete_udpidx_tree(pcb)
325
326 /* SNMP */
327 #define snmp_inc_snmpinpkts()
328 #define snmp_inc_snmpoutpkts()
329 #define snmp_inc_snmpinbadversions()
330 #define snmp_inc_snmpinbadcommunitynames()
331 #define snmp_inc_snmpinbadcommunityuses()
332 #define snmp_inc_snmpinasnparseerrs()
333 #define snmp_inc_snmpintoobigs()
334 #define snmp_inc_snmpinnosuchnames()
335 #define snmp_inc_snmpinbadvalues()
336 #define snmp_inc_snmpinreadonlys()
337 #define snmp_inc_snmpingenerrs()
338 #define snmp_add_snmpintotalreqvars(value)
339 #define snmp_add_snmpintotalsetvars(value)
340 #define snmp_inc_snmpingetrequests()
341 #define snmp_inc_snmpingetnexts()
342 #define snmp_inc_snmpinsetrequests()
343 #define snmp_inc_snmpingetresponses()
344 #define snmp_inc_snmpintraps()
345 #define snmp_inc_snmpouttoobigs()
346 #define snmp_inc_snmpoutnosuchnames()
347 #define snmp_inc_snmpoutbadvalues()
348 #define snmp_inc_snmpoutgenerrs()
349 #define snmp_inc_snmpoutgetrequests()
350 #define snmp_inc_snmpoutgetnexts()
351 #define snmp_inc_snmpoutsetrequests()
352 #define snmp_inc_snmpoutgetresponses()
353 #define snmp_inc_snmpouttraps()
354 #define snmp_get_snmpgrpid_ptr(oid)
355 #define snmp_set_snmpenableauthentraps(value)
356 #define snmp_get_snmpenableauthentraps(value)
357
358 #endif /* LWIP_SNMP */
359
360 #ifdef __cplusplus
361 }
362 #endif
363
364 #endif /* __LWIP_SNMP_H__ */