A version of LWIP, provided for backwards compatibility.

Dependents:   AA_DemoBoard DemoBoard HelloServerDemo DemoBoard_RangeIndicator ... more

Committer:
root@mbed.org
Date:
Tue May 08 15:32:10 2012 +0100
Revision:
0:5e1631496985
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
root@mbed.org 0:5e1631496985 1 /**
root@mbed.org 0:5e1631496985 2 * @file
root@mbed.org 0:5e1631496985 3 * SNMP Agent message handling structures.
root@mbed.org 0:5e1631496985 4 */
root@mbed.org 0:5e1631496985 5
root@mbed.org 0:5e1631496985 6 /*
root@mbed.org 0:5e1631496985 7 * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands.
root@mbed.org 0:5e1631496985 8 * All rights reserved.
root@mbed.org 0:5e1631496985 9 *
root@mbed.org 0:5e1631496985 10 * Redistribution and use in source and binary forms, with or without modification,
root@mbed.org 0:5e1631496985 11 * are permitted provided that the following conditions are met:
root@mbed.org 0:5e1631496985 12 *
root@mbed.org 0:5e1631496985 13 * 1. Redistributions of source code must retain the above copyright notice,
root@mbed.org 0:5e1631496985 14 * this list of conditions and the following disclaimer.
root@mbed.org 0:5e1631496985 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
root@mbed.org 0:5e1631496985 16 * this list of conditions and the following disclaimer in the documentation
root@mbed.org 0:5e1631496985 17 * and/or other materials provided with the distribution.
root@mbed.org 0:5e1631496985 18 * 3. The name of the author may not be used to endorse or promote products
root@mbed.org 0:5e1631496985 19 * derived from this software without specific prior written permission.
root@mbed.org 0:5e1631496985 20 *
root@mbed.org 0:5e1631496985 21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
root@mbed.org 0:5e1631496985 22 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
root@mbed.org 0:5e1631496985 23 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
root@mbed.org 0:5e1631496985 24 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
root@mbed.org 0:5e1631496985 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
root@mbed.org 0:5e1631496985 26 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
root@mbed.org 0:5e1631496985 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
root@mbed.org 0:5e1631496985 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
root@mbed.org 0:5e1631496985 29 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
root@mbed.org 0:5e1631496985 30 * OF SUCH DAMAGE.
root@mbed.org 0:5e1631496985 31 *
root@mbed.org 0:5e1631496985 32 * Author: Christiaan Simons <christiaan.simons@axon.tv>
root@mbed.org 0:5e1631496985 33 */
root@mbed.org 0:5e1631496985 34
root@mbed.org 0:5e1631496985 35 #ifndef __LWIP_SNMP_MSG_H__
root@mbed.org 0:5e1631496985 36 #define __LWIP_SNMP_MSG_H__
root@mbed.org 0:5e1631496985 37
root@mbed.org 0:5e1631496985 38 #include "lwip/opt.h"
root@mbed.org 0:5e1631496985 39 #include "lwip/snmp.h"
root@mbed.org 0:5e1631496985 40 #include "lwip/snmp_structs.h"
root@mbed.org 0:5e1631496985 41
root@mbed.org 0:5e1631496985 42 #if LWIP_SNMP
root@mbed.org 0:5e1631496985 43
root@mbed.org 0:5e1631496985 44 #if SNMP_PRIVATE_MIB
root@mbed.org 0:5e1631496985 45 #include "private_mib.h"
root@mbed.org 0:5e1631496985 46 #endif
root@mbed.org 0:5e1631496985 47
root@mbed.org 0:5e1631496985 48 #ifdef __cplusplus
root@mbed.org 0:5e1631496985 49 extern "C" {
root@mbed.org 0:5e1631496985 50 #endif
root@mbed.org 0:5e1631496985 51
root@mbed.org 0:5e1631496985 52 /* The listen port of the SNMP agent. Clients have to make their requests to
root@mbed.org 0:5e1631496985 53 this port. Most standard clients won't work if you change this! */
root@mbed.org 0:5e1631496985 54 #ifndef SNMP_IN_PORT
root@mbed.org 0:5e1631496985 55 #define SNMP_IN_PORT 161
root@mbed.org 0:5e1631496985 56 #endif
root@mbed.org 0:5e1631496985 57 /* The remote port the SNMP agent sends traps to. Most standard trap sinks won't
root@mbed.org 0:5e1631496985 58 work if you change this! */
root@mbed.org 0:5e1631496985 59 #ifndef SNMP_TRAP_PORT
root@mbed.org 0:5e1631496985 60 #define SNMP_TRAP_PORT 162
root@mbed.org 0:5e1631496985 61 #endif
root@mbed.org 0:5e1631496985 62
root@mbed.org 0:5e1631496985 63 #define SNMP_ES_NOERROR 0
root@mbed.org 0:5e1631496985 64 #define SNMP_ES_TOOBIG 1
root@mbed.org 0:5e1631496985 65 #define SNMP_ES_NOSUCHNAME 2
root@mbed.org 0:5e1631496985 66 #define SNMP_ES_BADVALUE 3
root@mbed.org 0:5e1631496985 67 #define SNMP_ES_READONLY 4
root@mbed.org 0:5e1631496985 68 #define SNMP_ES_GENERROR 5
root@mbed.org 0:5e1631496985 69
root@mbed.org 0:5e1631496985 70 #define SNMP_GENTRAP_COLDSTART 0
root@mbed.org 0:5e1631496985 71 #define SNMP_GENTRAP_WARMSTART 1
root@mbed.org 0:5e1631496985 72 #define SNMP_GENTRAP_AUTHFAIL 4
root@mbed.org 0:5e1631496985 73 #define SNMP_GENTRAP_ENTERPRISESPC 6
root@mbed.org 0:5e1631496985 74
root@mbed.org 0:5e1631496985 75 struct snmp_varbind
root@mbed.org 0:5e1631496985 76 {
root@mbed.org 0:5e1631496985 77 /* next pointer, NULL for last in list */
root@mbed.org 0:5e1631496985 78 struct snmp_varbind *next;
root@mbed.org 0:5e1631496985 79 /* previous pointer, NULL for first in list */
root@mbed.org 0:5e1631496985 80 struct snmp_varbind *prev;
root@mbed.org 0:5e1631496985 81
root@mbed.org 0:5e1631496985 82 /* object identifier length (in s32_t) */
root@mbed.org 0:5e1631496985 83 u8_t ident_len;
root@mbed.org 0:5e1631496985 84 /* object identifier array */
root@mbed.org 0:5e1631496985 85 s32_t *ident;
root@mbed.org 0:5e1631496985 86
root@mbed.org 0:5e1631496985 87 /* object value ASN1 type */
root@mbed.org 0:5e1631496985 88 u8_t value_type;
root@mbed.org 0:5e1631496985 89 /* object value length (in u8_t) */
root@mbed.org 0:5e1631496985 90 u8_t value_len;
root@mbed.org 0:5e1631496985 91 /* object value */
root@mbed.org 0:5e1631496985 92 void *value;
root@mbed.org 0:5e1631496985 93
root@mbed.org 0:5e1631496985 94 /* encoding varbind seq length length */
root@mbed.org 0:5e1631496985 95 u8_t seqlenlen;
root@mbed.org 0:5e1631496985 96 /* encoding object identifier length length */
root@mbed.org 0:5e1631496985 97 u8_t olenlen;
root@mbed.org 0:5e1631496985 98 /* encoding object value length length */
root@mbed.org 0:5e1631496985 99 u8_t vlenlen;
root@mbed.org 0:5e1631496985 100 /* encoding varbind seq length */
root@mbed.org 0:5e1631496985 101 u16_t seqlen;
root@mbed.org 0:5e1631496985 102 /* encoding object identifier length */
root@mbed.org 0:5e1631496985 103 u16_t olen;
root@mbed.org 0:5e1631496985 104 /* encoding object value length */
root@mbed.org 0:5e1631496985 105 u16_t vlen;
root@mbed.org 0:5e1631496985 106 };
root@mbed.org 0:5e1631496985 107
root@mbed.org 0:5e1631496985 108 struct snmp_varbind_root
root@mbed.org 0:5e1631496985 109 {
root@mbed.org 0:5e1631496985 110 struct snmp_varbind *head;
root@mbed.org 0:5e1631496985 111 struct snmp_varbind *tail;
root@mbed.org 0:5e1631496985 112 /* number of variable bindings in list */
root@mbed.org 0:5e1631496985 113 u8_t count;
root@mbed.org 0:5e1631496985 114 /* encoding varbind-list seq length length */
root@mbed.org 0:5e1631496985 115 u8_t seqlenlen;
root@mbed.org 0:5e1631496985 116 /* encoding varbind-list seq length */
root@mbed.org 0:5e1631496985 117 u16_t seqlen;
root@mbed.org 0:5e1631496985 118 };
root@mbed.org 0:5e1631496985 119
root@mbed.org 0:5e1631496985 120 /** output response message header length fields */
root@mbed.org 0:5e1631496985 121 struct snmp_resp_header_lengths
root@mbed.org 0:5e1631496985 122 {
root@mbed.org 0:5e1631496985 123 /* encoding error-index length length */
root@mbed.org 0:5e1631496985 124 u8_t erridxlenlen;
root@mbed.org 0:5e1631496985 125 /* encoding error-status length length */
root@mbed.org 0:5e1631496985 126 u8_t errstatlenlen;
root@mbed.org 0:5e1631496985 127 /* encoding request id length length */
root@mbed.org 0:5e1631496985 128 u8_t ridlenlen;
root@mbed.org 0:5e1631496985 129 /* encoding pdu length length */
root@mbed.org 0:5e1631496985 130 u8_t pdulenlen;
root@mbed.org 0:5e1631496985 131 /* encoding community length length */
root@mbed.org 0:5e1631496985 132 u8_t comlenlen;
root@mbed.org 0:5e1631496985 133 /* encoding version length length */
root@mbed.org 0:5e1631496985 134 u8_t verlenlen;
root@mbed.org 0:5e1631496985 135 /* encoding sequence length length */
root@mbed.org 0:5e1631496985 136 u8_t seqlenlen;
root@mbed.org 0:5e1631496985 137
root@mbed.org 0:5e1631496985 138 /* encoding error-index length */
root@mbed.org 0:5e1631496985 139 u16_t erridxlen;
root@mbed.org 0:5e1631496985 140 /* encoding error-status length */
root@mbed.org 0:5e1631496985 141 u16_t errstatlen;
root@mbed.org 0:5e1631496985 142 /* encoding request id length */
root@mbed.org 0:5e1631496985 143 u16_t ridlen;
root@mbed.org 0:5e1631496985 144 /* encoding pdu length */
root@mbed.org 0:5e1631496985 145 u16_t pdulen;
root@mbed.org 0:5e1631496985 146 /* encoding community length */
root@mbed.org 0:5e1631496985 147 u16_t comlen;
root@mbed.org 0:5e1631496985 148 /* encoding version length */
root@mbed.org 0:5e1631496985 149 u16_t verlen;
root@mbed.org 0:5e1631496985 150 /* encoding sequence length */
root@mbed.org 0:5e1631496985 151 u16_t seqlen;
root@mbed.org 0:5e1631496985 152 };
root@mbed.org 0:5e1631496985 153
root@mbed.org 0:5e1631496985 154 /** output response message header length fields */
root@mbed.org 0:5e1631496985 155 struct snmp_trap_header_lengths
root@mbed.org 0:5e1631496985 156 {
root@mbed.org 0:5e1631496985 157 /* encoding timestamp length length */
root@mbed.org 0:5e1631496985 158 u8_t tslenlen;
root@mbed.org 0:5e1631496985 159 /* encoding specific-trap length length */
root@mbed.org 0:5e1631496985 160 u8_t strplenlen;
root@mbed.org 0:5e1631496985 161 /* encoding generic-trap length length */
root@mbed.org 0:5e1631496985 162 u8_t gtrplenlen;
root@mbed.org 0:5e1631496985 163 /* encoding agent-addr length length */
root@mbed.org 0:5e1631496985 164 u8_t aaddrlenlen;
root@mbed.org 0:5e1631496985 165 /* encoding enterprise-id length length */
root@mbed.org 0:5e1631496985 166 u8_t eidlenlen;
root@mbed.org 0:5e1631496985 167 /* encoding pdu length length */
root@mbed.org 0:5e1631496985 168 u8_t pdulenlen;
root@mbed.org 0:5e1631496985 169 /* encoding community length length */
root@mbed.org 0:5e1631496985 170 u8_t comlenlen;
root@mbed.org 0:5e1631496985 171 /* encoding version length length */
root@mbed.org 0:5e1631496985 172 u8_t verlenlen;
root@mbed.org 0:5e1631496985 173 /* encoding sequence length length */
root@mbed.org 0:5e1631496985 174 u8_t seqlenlen;
root@mbed.org 0:5e1631496985 175
root@mbed.org 0:5e1631496985 176 /* encoding timestamp length */
root@mbed.org 0:5e1631496985 177 u16_t tslen;
root@mbed.org 0:5e1631496985 178 /* encoding specific-trap length */
root@mbed.org 0:5e1631496985 179 u16_t strplen;
root@mbed.org 0:5e1631496985 180 /* encoding generic-trap length */
root@mbed.org 0:5e1631496985 181 u16_t gtrplen;
root@mbed.org 0:5e1631496985 182 /* encoding agent-addr length */
root@mbed.org 0:5e1631496985 183 u16_t aaddrlen;
root@mbed.org 0:5e1631496985 184 /* encoding enterprise-id length */
root@mbed.org 0:5e1631496985 185 u16_t eidlen;
root@mbed.org 0:5e1631496985 186 /* encoding pdu length */
root@mbed.org 0:5e1631496985 187 u16_t pdulen;
root@mbed.org 0:5e1631496985 188 /* encoding community length */
root@mbed.org 0:5e1631496985 189 u16_t comlen;
root@mbed.org 0:5e1631496985 190 /* encoding version length */
root@mbed.org 0:5e1631496985 191 u16_t verlen;
root@mbed.org 0:5e1631496985 192 /* encoding sequence length */
root@mbed.org 0:5e1631496985 193 u16_t seqlen;
root@mbed.org 0:5e1631496985 194 };
root@mbed.org 0:5e1631496985 195
root@mbed.org 0:5e1631496985 196 /* Accepting new SNMP messages. */
root@mbed.org 0:5e1631496985 197 #define SNMP_MSG_EMPTY 0
root@mbed.org 0:5e1631496985 198 /* Search for matching object for variable binding. */
root@mbed.org 0:5e1631496985 199 #define SNMP_MSG_SEARCH_OBJ 1
root@mbed.org 0:5e1631496985 200 /* Perform SNMP operation on in-memory object.
root@mbed.org 0:5e1631496985 201 Pass-through states, for symmetry only. */
root@mbed.org 0:5e1631496985 202 #define SNMP_MSG_INTERNAL_GET_OBJDEF 2
root@mbed.org 0:5e1631496985 203 #define SNMP_MSG_INTERNAL_GET_VALUE 3
root@mbed.org 0:5e1631496985 204 #define SNMP_MSG_INTERNAL_SET_TEST 4
root@mbed.org 0:5e1631496985 205 #define SNMP_MSG_INTERNAL_GET_OBJDEF_S 5
root@mbed.org 0:5e1631496985 206 #define SNMP_MSG_INTERNAL_SET_VALUE 6
root@mbed.org 0:5e1631496985 207 /* Perform SNMP operation on object located externally.
root@mbed.org 0:5e1631496985 208 In theory this could be used for building a proxy agent.
root@mbed.org 0:5e1631496985 209 Practical use is for an enterprise spc. app. gateway. */
root@mbed.org 0:5e1631496985 210 #define SNMP_MSG_EXTERNAL_GET_OBJDEF 7
root@mbed.org 0:5e1631496985 211 #define SNMP_MSG_EXTERNAL_GET_VALUE 8
root@mbed.org 0:5e1631496985 212 #define SNMP_MSG_EXTERNAL_SET_TEST 9
root@mbed.org 0:5e1631496985 213 #define SNMP_MSG_EXTERNAL_GET_OBJDEF_S 10
root@mbed.org 0:5e1631496985 214 #define SNMP_MSG_EXTERNAL_SET_VALUE 11
root@mbed.org 0:5e1631496985 215
root@mbed.org 0:5e1631496985 216 #define SNMP_COMMUNITY_STR_LEN 64
root@mbed.org 0:5e1631496985 217 struct snmp_msg_pstat
root@mbed.org 0:5e1631496985 218 {
root@mbed.org 0:5e1631496985 219 /* lwIP local port (161) binding */
root@mbed.org 0:5e1631496985 220 struct udp_pcb *pcb;
root@mbed.org 0:5e1631496985 221 /* source IP address */
root@mbed.org 0:5e1631496985 222 struct ip_addr sip;
root@mbed.org 0:5e1631496985 223 /* source UDP port */
root@mbed.org 0:5e1631496985 224 u16_t sp;
root@mbed.org 0:5e1631496985 225 /* request type */
root@mbed.org 0:5e1631496985 226 u8_t rt;
root@mbed.org 0:5e1631496985 227 /* request ID */
root@mbed.org 0:5e1631496985 228 s32_t rid;
root@mbed.org 0:5e1631496985 229 /* error status */
root@mbed.org 0:5e1631496985 230 s32_t error_status;
root@mbed.org 0:5e1631496985 231 /* error index */
root@mbed.org 0:5e1631496985 232 s32_t error_index;
root@mbed.org 0:5e1631496985 233 /* community name (zero terminated) */
root@mbed.org 0:5e1631496985 234 u8_t community[SNMP_COMMUNITY_STR_LEN + 1];
root@mbed.org 0:5e1631496985 235 /* community string length (exclusive zero term) */
root@mbed.org 0:5e1631496985 236 u8_t com_strlen;
root@mbed.org 0:5e1631496985 237 /* one out of MSG_EMPTY, MSG_DEMUX, MSG_INTERNAL, MSG_EXTERNAL_x */
root@mbed.org 0:5e1631496985 238 u8_t state;
root@mbed.org 0:5e1631496985 239 /* saved arguments for MSG_EXTERNAL_x */
root@mbed.org 0:5e1631496985 240 struct mib_external_node *ext_mib_node;
root@mbed.org 0:5e1631496985 241 struct snmp_name_ptr ext_name_ptr;
root@mbed.org 0:5e1631496985 242 struct obj_def ext_object_def;
root@mbed.org 0:5e1631496985 243 struct snmp_obj_id ext_oid;
root@mbed.org 0:5e1631496985 244 /* index into input variable binding list */
root@mbed.org 0:5e1631496985 245 u8_t vb_idx;
root@mbed.org 0:5e1631496985 246 /* ptr into input variable binding list */
root@mbed.org 0:5e1631496985 247 struct snmp_varbind *vb_ptr;
root@mbed.org 0:5e1631496985 248 /* list of variable bindings from input */
root@mbed.org 0:5e1631496985 249 struct snmp_varbind_root invb;
root@mbed.org 0:5e1631496985 250 /* list of variable bindings to output */
root@mbed.org 0:5e1631496985 251 struct snmp_varbind_root outvb;
root@mbed.org 0:5e1631496985 252 /* output response lengths used in ASN encoding */
root@mbed.org 0:5e1631496985 253 struct snmp_resp_header_lengths rhl;
root@mbed.org 0:5e1631496985 254 };
root@mbed.org 0:5e1631496985 255
root@mbed.org 0:5e1631496985 256 struct snmp_msg_trap
root@mbed.org 0:5e1631496985 257 {
root@mbed.org 0:5e1631496985 258 /* lwIP local port (161) binding */
root@mbed.org 0:5e1631496985 259 struct udp_pcb *pcb;
root@mbed.org 0:5e1631496985 260 /* destination IP address in network order */
root@mbed.org 0:5e1631496985 261 struct ip_addr dip;
root@mbed.org 0:5e1631496985 262
root@mbed.org 0:5e1631496985 263 /* source enterprise ID (sysObjectID) */
root@mbed.org 0:5e1631496985 264 struct snmp_obj_id *enterprise;
root@mbed.org 0:5e1631496985 265 /* source IP address, raw network order format */
root@mbed.org 0:5e1631496985 266 u8_t sip_raw[4];
root@mbed.org 0:5e1631496985 267 /* generic trap code */
root@mbed.org 0:5e1631496985 268 u32_t gen_trap;
root@mbed.org 0:5e1631496985 269 /* specific trap code */
root@mbed.org 0:5e1631496985 270 u32_t spc_trap;
root@mbed.org 0:5e1631496985 271 /* timestamp */
root@mbed.org 0:5e1631496985 272 u32_t ts;
root@mbed.org 0:5e1631496985 273 /* list of variable bindings to output */
root@mbed.org 0:5e1631496985 274 struct snmp_varbind_root outvb;
root@mbed.org 0:5e1631496985 275 /* output trap lengths used in ASN encoding */
root@mbed.org 0:5e1631496985 276 struct snmp_trap_header_lengths thl;
root@mbed.org 0:5e1631496985 277 };
root@mbed.org 0:5e1631496985 278
root@mbed.org 0:5e1631496985 279 /** Agent Version constant, 0 = v1 oddity */
root@mbed.org 0:5e1631496985 280 extern const s32_t snmp_version;
root@mbed.org 0:5e1631496985 281 /** Agent default "public" community string */
root@mbed.org 0:5e1631496985 282 extern const char snmp_publiccommunity[7];
root@mbed.org 0:5e1631496985 283
root@mbed.org 0:5e1631496985 284 extern struct snmp_msg_trap trap_msg;
root@mbed.org 0:5e1631496985 285
root@mbed.org 0:5e1631496985 286 /** Agent setup, start listening to port 161. */
root@mbed.org 0:5e1631496985 287 void snmp_init(void);
root@mbed.org 0:5e1631496985 288 void snmp_trap_dst_enable(u8_t dst_idx, u8_t enable);
root@mbed.org 0:5e1631496985 289 void snmp_trap_dst_ip_set(u8_t dst_idx, struct ip_addr *dst);
root@mbed.org 0:5e1631496985 290
root@mbed.org 0:5e1631496985 291 /** Varbind-list functions. */
root@mbed.org 0:5e1631496985 292 struct snmp_varbind* snmp_varbind_alloc(struct snmp_obj_id *oid, u8_t type, u8_t len);
root@mbed.org 0:5e1631496985 293 void snmp_varbind_free(struct snmp_varbind *vb);
root@mbed.org 0:5e1631496985 294 void snmp_varbind_list_free(struct snmp_varbind_root *root);
root@mbed.org 0:5e1631496985 295 void snmp_varbind_tail_add(struct snmp_varbind_root *root, struct snmp_varbind *vb);
root@mbed.org 0:5e1631496985 296 struct snmp_varbind* snmp_varbind_tail_remove(struct snmp_varbind_root *root);
root@mbed.org 0:5e1631496985 297
root@mbed.org 0:5e1631496985 298 /** Handle an internal (recv) or external (private response) event. */
root@mbed.org 0:5e1631496985 299 void snmp_msg_event(u8_t request_id);
root@mbed.org 0:5e1631496985 300 err_t snmp_send_response(struct snmp_msg_pstat *m_stat);
root@mbed.org 0:5e1631496985 301 err_t snmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap);
root@mbed.org 0:5e1631496985 302 void snmp_coldstart_trap(void);
root@mbed.org 0:5e1631496985 303 void snmp_authfail_trap(void);
root@mbed.org 0:5e1631496985 304
root@mbed.org 0:5e1631496985 305 #ifdef __cplusplus
root@mbed.org 0:5e1631496985 306 }
root@mbed.org 0:5e1631496985 307 #endif
root@mbed.org 0:5e1631496985 308
root@mbed.org 0:5e1631496985 309 #endif /* LWIP_SNMP */
root@mbed.org 0:5e1631496985 310
root@mbed.org 0:5e1631496985 311 #endif /* __LWIP_SNMP_MSG_H__ */