mib2_module.h
Go to the documentation of this file.
1 /**
2  * @file mib2_module.h
3  * @brief MIB-II module
4  *
5  * @section License
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  *
9  * Copyright (C) 2010-2026 Oryx Embedded SARL. All rights reserved.
10  *
11  * This file is part of CycloneTCP Open.
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software Foundation,
25  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26  *
27  * @author Oryx Embedded SARL (www.oryx-embedded.com)
28  * @version 2.6.0
29  **/
30 
31 #ifndef _MIB2_MODULE_H
32 #define _MIB2_MODULE_H
33 
34 //Dependencies
35 #include "core/net.h"
36 #include "core/udp.h"
37 #include "core/tcp.h"
38 #include "ipv4/ipv4.h"
39 #include "mibs/mib_common.h"
40 
41 //MIB-II module support
42 #ifndef MIB2_SUPPORT
43  #define MIB2_SUPPORT DISABLED
44 #elif (MIB2_SUPPORT != ENABLED && MIB2_SUPPORT != DISABLED)
45  #error MIB2_SUPPORT parameter is not valid
46 #endif
47 
48 //System group support
49 #ifndef MIB2_SYS_GROUP_SUPPORT
50  #define MIB2_SYS_GROUP_SUPPORT ENABLED
51 #elif (MIB2_SYS_GROUP_SUPPORT != ENABLED && MIB2_SYS_GROUP_SUPPORT != DISABLED)
52  #error MIB2_SYS_GROUP_SUPPORT parameter is not valid
53 #endif
54 
55 //Interface group support
56 #ifndef MIB2_IF_GROUP_SUPPORT
57  #define MIB2_IF_GROUP_SUPPORT ENABLED
58 #elif (MIB2_IF_GROUP_SUPPORT != ENABLED && MIB2_IF_GROUP_SUPPORT != DISABLED)
59  #error MIB2_IF_GROUP_SUPPORT parameter is not valid
60 #endif
61 
62 //IP group support
63 #ifndef MIB2_IP_GROUP_SUPPORT
64  #define MIB2_IP_GROUP_SUPPORT ENABLED
65 #elif (MIB2_IP_GROUP_SUPPORT != ENABLED && MIB2_IP_GROUP_SUPPORT != DISABLED)
66  #error MIB2_IP_GROUP_SUPPORT parameter is not valid
67 #endif
68 
69 //ICMP group support
70 #ifndef MIB2_ICMP_GROUP_SUPPORT
71  #define MIB2_ICMP_GROUP_SUPPORT ENABLED
72 #elif (MIB2_ICMP_GROUP_SUPPORT != ENABLED && MIB2_ICMP_GROUP_SUPPORT != DISABLED)
73  #errorMIB2_ICMP_GROUP_SUPPORT parameter is not valid
74 #endif
75 
76 //TCP group support
77 #ifndef MIB2_TCP_GROUP_SUPPORT
78  #define MIB2_TCP_GROUP_SUPPORT ENABLED
79 #elif (MIB2_TCP_GROUP_SUPPORT != ENABLED && MIB2_TCP_GROUP_SUPPORT != DISABLED)
80  #error MIB2_TCP_GROUP_SUPPORT parameter is not valid
81 #endif
82 
83 //UDP group support
84 #ifndef MIB2_UDP_GROUP_SUPPORT
85  #define MIB2_UDP_GROUP_SUPPORT ENABLED
86 #elif (MIB2_UDP_GROUP_SUPPORT != ENABLED && MIB2_UDP_GROUP_SUPPORT != DISABLED)
87  #error MIB2_UDP_GROUP_SUPPORT parameter is not valid
88 #endif
89 
90 //SNMP group support
91 #ifndef MIB2_SNMP_GROUP_SUPPORT
92  #define MIB2_SNMP_GROUP_SUPPORT ENABLED
93 #elif (MIB2_SNMP_GROUP_SUPPORT != ENABLED && MIB2_SNMP_GROUP_SUPPORT != DISABLED)
94  #error MIB2_SNMP_GROUP_SUPPORT parameter is not valid
95 #endif
96 
97 //Size of sysDescr object
98 #ifndef MIB2_SYS_DESCR_SIZE
99  #define MIB2_SYS_DESCR_SIZE 16
100 #elif (MIB2_SYS_DESCR_SIZE < 0)
101  #error MIB2_SYS_DESCR_SIZE parameter is not valid
102 #endif
103 
104 //Size of sysObjectID object
105 #ifndef MIB2_SYS_OBJECT_ID_SIZE
106  #define MIB2_SYS_OBJECT_ID_SIZE 16
107 #elif (MIB2_SYS_OBJECT_ID_SIZE < 0)
108  #error MIB2_SYS_OBJECT_ID_SIZE parameter is not valid
109 #endif
110 
111 //Size of sysContact object
112 #ifndef MIB2_SYS_CONTACT_SIZE
113  #define MIB2_SYS_CONTACT_SIZE 16
114 #elif (MIB2_SYS_CONTACT_SIZE < 0)
115  #error MIB2_SYS_CONTACT_SIZE parameter is not valid
116 #endif
117 
118 //Size of sysName object
119 #ifndef MIB2_SYS_NAME_SIZE
120  #define MIB2_SYS_NAME_SIZE 16
121 #elif (MIB2_SYS_NAME_SIZE < 0)
122  #error MIB2_SYS_NAME_SIZE parameter is not valid
123 #endif
124 
125 //Size of sysLocation object
126 #ifndef MIB2_SYS_LOCATION_SIZE
127  #define MIB2_SYS_LOCATION_SIZE 16
128 #elif (MIB2_SYS_LOCATION_SIZE < 0)
129  #error MIB2_SYS_LOCATION_SIZE parameter is not valid
130 #endif
131 
132 //Size of ifSpecific object
133 #ifndef MIB2_IF_SPECIFIC_SIZE
134  #define MIB2_IF_SPECIFIC_SIZE 16
135 #elif (MIB2_IF_SPECIFIC_SIZE < 1)
136  #error MIB2_IF_SPECIFIC_SIZE parameter is not valid
137 #endif
138 
139 //Size of PhysAddress data type
140 #ifndef MIB2_PHYS_ADDRESS_SIZE
141  #define MIB2_PHYS_ADDRESS_SIZE 6
142 #elif (MIB2_PHYS_ADDRESS_SIZE < 6)
143  #error MIB2_PHYS_ADDRESS_SIZE parameter is not valid
144 #endif
145 
146 //Size of IpAddress data type
147 #ifndef MIB2_IP_ADDRESS_SIZE
148  #define MIB2_IP_ADDRESS_SIZE 4
149 #elif (MIB2_IP_ADDRESS_SIZE != 4)
150  #error MIB2_IP_ADDRESS_SIZE parameter is not valid
151 #endif
152 
153 //Macro definitions (TCP group)
154 #if (MIB2_SUPPORT == ENABLED && MIB2_TCP_GROUP_SUPPORT == ENABLED)
155  #define MIB2_TCP_INC_COUNTER32(name, value) mib2Base.tcpGroup.name += value
156 #else
157  #define MIB2_TCP_INC_COUNTER32(name, value)
158 #endif
159 
160 //Macro definitions (UDP group)
161 #if (MIB2_SUPPORT == ENABLED && MIB2_UDP_GROUP_SUPPORT == ENABLED)
162  #define MIB2_UDP_INC_COUNTER32(name, value) mib2Base.udpGroup.name += value
163 #else
164  #define MIB2_UDP_INC_COUNTER32(name, value)
165 #endif
166 
167 //Macro definitions (SNMP group)
168 #if (MIB2_SUPPORT == ENABLED && MIB2_SNMP_GROUP_SUPPORT == ENABLED)
169  #define MIB2_SNMP_INC_COUNTER32(name, value) mib2Base.snmpGroup.name += value
170 #else
171  #define MIB2_SNMP_INC_COUNTER32(name, value)
172 #endif
173 
174 //C++ guard
175 #ifdef __cplusplus
176 extern "C" {
177 #endif
178 
179 
180 /**
181  * @brief System services
182  **/
183 
184 typedef enum
185 {
192 
193 
194 /**
195  * @brief Interface types
196  **/
197 
198 typedef enum
199 {
217 
218 
219 /**
220  * @brief The desired state of the interface
221  **/
222 
223 typedef enum
224 {
229 
230 
231 /**
232  * @brief The operational state of the interface
233  **/
234 
235 typedef enum
236 {
241 
242 
243 /**
244  * @brief IP forwarding state
245  **/
246 
247 typedef enum
248 {
252 
253 
254 /**
255  * @brief Type of mapping
256  **/
257 
258 typedef enum
259 {
265 
266 
267 /**
268  * @brief RTO calculation algorithm
269  **/
270 
271 typedef enum
272 {
278 
279 
280 /**
281  * @brief TCP connection states
282  **/
283 
284 typedef enum
285 {
299 
300 
301 /**
302  * @brief Enabled/disabled state of authentication failure traps
303  **/
304 
305 typedef enum
306 {
310 
311 
312 /**
313  * @brief System group
314  **/
315 
316 typedef struct
317 {
318 #if (MIB2_SYS_DESCR_SIZE > 0)
320  size_t sysDescrLen;
321 #endif
322 #if (MIB2_SYS_OBJECT_ID_SIZE > 0)
323  uint8_t sysObjectID[MIB2_SYS_OBJECT_ID_SIZE];
325 #endif
326  uint32_t sysUpTime;
327 #if (MIB2_SYS_CONTACT_SIZE > 0)
330 #endif
331 #if (MIB2_SYS_NAME_SIZE > 0)
333  size_t sysNameLen;
334 #endif
335 #if (MIB2_SYS_LOCATION_SIZE > 0)
338 #endif
339  int32_t sysServices;
340 } Mib2SysGroup;
341 
342 
343 /**
344  * @brief IP group
345  **/
346 
347 typedef struct
348 {
349  int32_t ipForwarding;
350  int32_t ipDefaultTTL;
351  int32_t ipReasmTimeout;
353 } Mib2IpGroup;
354 
355 
356 /**
357  * @brief TCP group
358  **/
359 
360 typedef struct
361 {
363  int32_t tcpRtoMin;
364  int32_t tcpRtoMax;
365  int32_t tcpMaxConn;
366  uint32_t tcpActiveOpens;
367  uint32_t tcpPassiveOpens;
368  uint32_t tcpAttemptFails;
369  uint32_t tcpEstabResets;
370  uint32_t tcpInSegs;
371  uint32_t tcpOutSegs;
372  uint32_t tcpRetransSegs;
373  uint32_t tcpInErrs;
374  uint32_t tcpOutRsts;
375 } Mib2TcpGroup;
376 
377 
378 /**
379  * @brief UDP group
380  **/
381 
382 typedef struct
383 {
384  uint32_t udpInDatagrams;
385  uint32_t udpNoPorts;
386  uint32_t udpInErrors;
387  uint32_t udpOutDatagrams;
388 } Mib2UdpGroup;
389 
390 
391 /**
392  * @brief SNMP group
393  **/
394 
395 typedef struct
396 {
397  uint32_t snmpInPkts;
398  uint32_t snmpOutPkts;
403  uint32_t snmpInTooBigs;
405  uint32_t snmpInBadValues;
406  uint32_t snmpInReadOnlys;
407  uint32_t snmpInGenErrs;
411  uint32_t snmpInGetNexts;
414  uint32_t snmpInTraps;
415  uint32_t snmpOutTooBigs;
418  uint32_t snmpOutGenErrs;
420  uint32_t snmpOutGetNexts;
423  uint32_t snmpOutTraps;
425 } Mib2SnmpGroup;
426 
427 
428 /**
429  * @brief MIB-II base
430  **/
431 
432 typedef struct
433 {
434 #if (MIB2_SYS_GROUP_SUPPORT == ENABLED)
436 #endif
437 #if (MIB2_IP_GROUP_SUPPORT == ENABLED)
439 #endif
440 #if (MIB2_TCP_GROUP_SUPPORT == ENABLED)
442 #endif
443 #if (MIB2_UDP_GROUP_SUPPORT == ENABLED)
445 #endif
446 #if (MIB2_SNMP_GROUP_SUPPORT == ENABLED)
448 #endif
449 } Mib2Base;
450 
451 
452 //MIB-II related constants
453 extern Mib2Base mib2Base;
454 extern const MibObject mib2Objects[];
455 extern const MibModule mib2Module;
456 
457 //C++ guard
458 #ifdef __cplusplus
459 }
460 #endif
461 
462 #endif
SNMP group.
Definition: mib2_module.h:396
@ MIB2_IF_TYPE_OTHER
Definition: mib2_module.h:200
uint32_t snmpInTooBigs
Definition: mib2_module.h:403
@ MIB2_TCP_CONN_STATE_FIN_WAIT_2
Definition: mib2_module.h:292
@ MIB2_IF_TYPE_PROP_PTP_SERIAL
Definition: mib2_module.h:202
Mib2IfAdminStatus
The desired state of the interface.
Definition: mib2_module.h:224
uint32_t snmpInBadVersions
Definition: mib2_module.h:399
@ MIB2_SYS_SERVICE_PHYSICAL
Definition: mib2_module.h:186
#define MIB2_SYS_LOCATION_SIZE
Definition: mib2_module.h:127
@ MIB2_IF_TYPE_L2_VLAN
Definition: mib2_module.h:211
@ MIB2_TCP_CONN_STATE_CLOSE_WAIT
Definition: mib2_module.h:293
int32_t sysServices
Definition: mib2_module.h:339
#define MIB2_SYS_DESCR_SIZE
Definition: mib2_module.h:99
@ MIB2_SYS_SERVICE_APPLICATIONS
Definition: mib2_module.h:190
@ MIB2_TCP_RTO_ALGORITHM_OTHER
Definition: mib2_module.h:273
@ MIB2_IF_TYPE_ETHERNET_CSMACD
Definition: mib2_module.h:201
uint32_t snmpOutPkts
Definition: mib2_module.h:398
uint32_t snmpOutGetNexts
Definition: mib2_module.h:420
@ MIB2_IF_TYPE_PPP
Definition: mib2_module.h:203
Mib2IpForwarding
IP forwarding state.
Definition: mib2_module.h:248
@ MIB2_TCP_CONN_STATE_CLOSING
Definition: mib2_module.h:295
#define MIB2_SYS_NAME_SIZE
Definition: mib2_module.h:120
uint32_t tcpOutSegs
Definition: mib2_module.h:371
int32_t snmpEnableAuthenTraps
Definition: mib2_module.h:424
uint32_t snmpInTotalReqVars
Definition: mib2_module.h:408
@ MIB2_IF_TYPE_BRIDGE
Definition: mib2_module.h:214
Mib2EnableAuthenTraps
Enabled/disabled state of authentication failure traps.
Definition: mib2_module.h:306
uint32_t snmpInGetResponses
Definition: mib2_module.h:413
@ MIB2_IF_TYPE_IEEE_802_15_4
Definition: mib2_module.h:215
uint32_t snmpInPkts
Definition: mib2_module.h:397
@ MIB2_IP_NET_TO_MEDIA_TYPE_INVALID
Definition: mib2_module.h:261
@ MIB2_IP_FORWARDING_DISABLED
Definition: mib2_module.h:250
uint32_t udpOutDatagrams
Definition: mib2_module.h:387
int32_t tcpRtoMin
Definition: mib2_module.h:363
uint32_t snmpInTotalSetVars
Definition: mib2_module.h:409
Mib2IfType
Interface types.
Definition: mib2_module.h:199
size_t sysObjectIDLen
Definition: mib2_module.h:324
@ MIB2_TCP_CONN_STATE_LISTEN
Definition: mib2_module.h:287
uint32_t snmpInASNParseErrs
Definition: mib2_module.h:402
int32_t ipReasmTimeout
Definition: mib2_module.h:351
@ MIB2_TCP_CONN_STATE_DELETE_TCB
Definition: mib2_module.h:297
uint32_t snmpInBadValues
Definition: mib2_module.h:405
uint32_t tcpOutRsts
Definition: mib2_module.h:374
uint32_t snmpInNoSuchNames
Definition: mib2_module.h:404
@ MIB2_IF_ADMIN_STATUS_UP
Definition: mib2_module.h:225
Mib2TcpGroup tcpGroup
Definition: mib2_module.h:441
uint32_t tcpAttemptFails
Definition: mib2_module.h:368
uint32_t udpInDatagrams
Definition: mib2_module.h:384
uint32_t snmpOutSetRequests
Definition: mib2_module.h:421
@ MIB2_IF_TYPE_RS232
Definition: mib2_module.h:206
Mib2UdpGroup udpGroup
Definition: mib2_module.h:444
TCP group.
Definition: mib2_module.h:361
uint32_t tcpRetransSegs
Definition: mib2_module.h:372
@ MIB2_IF_TYPE_TUNNEL
Definition: mib2_module.h:210
uint32_t tcpEstabResets
Definition: mib2_module.h:369
@ MIB2_SYS_SERVICE_INTERNET
Definition: mib2_module.h:188
@ MIB2_IF_TYPE_HDLC
Definition: mib2_module.h:209
@ MIB2_TCP_CONN_STATE_FIN_WAIT_1
Definition: mib2_module.h:291
@ MIB2_AUTHEN_TRAPS_DISABLED
Definition: mib2_module.h:308
@ MIB2_IF_OPER_STATUS_DOWN
Definition: mib2_module.h:238
@ MIB2_AUTHEN_TRAPS_ENABLED
Definition: mib2_module.h:307
#define MIB2_SYS_CONTACT_SIZE
Definition: mib2_module.h:113
Mib2Base mib2Base
MIB-II base.
Definition: mib2_module.c:64
@ MIB2_TCP_CONN_STATE_LAST_ACK
Definition: mib2_module.h:294
@ MIB2_IF_TYPE_PARA
Definition: mib2_module.h:207
size_t sysContactLen
Definition: mib2_module.h:329
int32_t tcpRtoMax
Definition: mib2_module.h:364
uint32_t snmpOutTooBigs
Definition: mib2_module.h:415
Mib2IfOperStatus
The operational state of the interface.
Definition: mib2_module.h:236
@ MIB2_IF_ADMIN_STATUS_DOWN
Definition: mib2_module.h:226
@ MIB2_IP_FORWARDING_ENABLED
Definition: mib2_module.h:249
uint32_t snmpInGetNexts
Definition: mib2_module.h:411
uint32_t snmpInBadCommunityUses
Definition: mib2_module.h:401
MIB module.
Definition: mib_common.h:292
uint32_t sysUpTime
Definition: mib2_module.h:326
Mib2TcpConnState
TCP connection states.
Definition: mib2_module.h:285
@ MIB2_IP_NET_TO_MEDIA_TYPE_OTHER
Definition: mib2_module.h:260
uint32_t tcpInSegs
Definition: mib2_module.h:370
@ MIB2_IF_TYPE_SOFT_LOOPBACK
Definition: mib2_module.h:204
size_t sysLocationLen
Definition: mib2_module.h:337
@ MIB2_SYS_SERVICE_DATALINK
Definition: mib2_module.h:187
@ MIB2_TCP_CONN_STATE_CLOSED
Definition: mib2_module.h:286
uint32_t snmpOutNoSuchNames
Definition: mib2_module.h:416
uint32_t snmpOutGetRequests
Definition: mib2_module.h:419
int32_t ipDefaultTTL
Definition: mib2_module.h:350
char char_t
Definition: compiler_port.h:55
Mib2IpGroup ipGroup
Definition: mib2_module.h:438
Common definitions for MIB modules.
TCP (Transmission Control Protocol)
@ MIB2_TCP_RTO_ALGORITHM_CONSTANT
Definition: mib2_module.h:274
uint32_t tcpInErrs
Definition: mib2_module.h:373
uint32_t snmpInGenErrs
Definition: mib2_module.h:407
uint32_t snmpInTraps
Definition: mib2_module.h:414
uint32_t snmpOutGetResponses
Definition: mib2_module.h:422
@ MIB2_SYS_SERVICE_END_TO_END
Definition: mib2_module.h:189
UDP (User Datagram Protocol)
@ MIB2_TCP_RTO_ALGORITHM_VANJ
Definition: mib2_module.h:276
int32_t tcpMaxConn
Definition: mib2_module.h:365
#define MibObject
Definition: mib_common.h:46
Mib2TcpRtoAlgorithm
RTO calculation algorithm.
Definition: mib2_module.h:272
@ MIB2_IF_ADMIN_STATUS_TESTING
Definition: mib2_module.h:227
const MibModule mib2Module
MIB-II module.
Definition: mib2_module.c:2211
@ MIB2_TCP_CONN_STATE_TIME_WAIT
Definition: mib2_module.h:296
Mib2IpNetToMediaType
Type of mapping.
Definition: mib2_module.h:259
uint32_t udpInErrors
Definition: mib2_module.h:386
IP group.
Definition: mib2_module.h:348
#define MIB2_SYS_OBJECT_ID_SIZE
Definition: mib2_module.h:106
MIB-II base.
Definition: mib2_module.h:433
@ MIB2_IF_OPER_STATUS_TESTING
Definition: mib2_module.h:239
size_t sysNameLen
Definition: mib2_module.h:333
@ MIB2_IF_OPER_STATUS_UP
Definition: mib2_module.h:237
IPv4 (Internet Protocol Version 4)
@ MIB2_IF_TYPE_IEEE_802_11
Definition: mib2_module.h:208
@ MIB2_TCP_CONN_STATE_SYN_SENT
Definition: mib2_module.h:288
uint32_t snmpInSetRequests
Definition: mib2_module.h:412
uint32_t snmpInReadOnlys
Definition: mib2_module.h:406
uint32_t snmpInGetRequests
Definition: mib2_module.h:410
uint32_t snmpOutGenErrs
Definition: mib2_module.h:418
int32_t ipForwarding
Definition: mib2_module.h:349
const MibObject mib2Objects[]
MIB-II objects.
Definition: mib2_module.c:71
TCP/IP stack core.
@ MIB2_IF_TYPE_USB
Definition: mib2_module.h:212
@ MIB2_TCP_CONN_STATE_ESTABLISHED
Definition: mib2_module.h:290
uint32_t snmpInBadCommunityNames
Definition: mib2_module.h:400
uint32_t tcpActiveOpens
Definition: mib2_module.h:366
Mib2SysGroup sysGroup
Definition: mib2_module.h:435
uint32_t udpNoPorts
Definition: mib2_module.h:385
int32_t tcpRtoAlgorithm
Definition: mib2_module.h:362
@ MIB2_IP_NET_TO_MEDIA_TYPE_DYNAMIC
Definition: mib2_module.h:262
@ MIB2_IP_NET_TO_MEDIA_TYPE_STATIC
Definition: mib2_module.h:263
uint32_t snmpOutTraps
Definition: mib2_module.h:423
@ MIB2_TCP_RTO_ALGORITHM_RSRE
Definition: mib2_module.h:275
UDP group.
Definition: mib2_module.h:383
@ MIB2_TCP_CONN_STATE_SYN_RECEIVED
Definition: mib2_module.h:289
Mib2SysService
System services.
Definition: mib2_module.h:185
Mib2SnmpGroup snmpGroup
Definition: mib2_module.h:447
@ MIB2_IF_TYPE_SLIP
Definition: mib2_module.h:205
uint32_t ipRoutingDiscards
Definition: mib2_module.h:352
size_t sysDescrLen
Definition: mib2_module.h:320
@ MIB2_IF_TYPE_PLC
Definition: mib2_module.h:213
System group.
Definition: mib2_module.h:317
uint32_t tcpPassiveOpens
Definition: mib2_module.h:367
uint32_t snmpOutBadValues
Definition: mib2_module.h:417