1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 * 21 * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved. 22 */ 23 /* 24 * Copyright (c) 1990 Mentat Inc. 25 * Copyright (c) 2015, 2016 by Delphix. All rights reserved. 26 */ 27 28 #ifndef _INET_MIB2_H 29 #define _INET_MIB2_H 30 31 #include <netinet/in.h> /* For in6_addr_t */ 32 #include <sys/tsol/label.h> /* For brange_t */ 33 #include <sys/tsol/label_macro.h> /* For brange_t */ 34 35 #ifdef __cplusplus 36 extern "C" { 37 #endif 38 39 /* 40 * The IPv6 parts of this are derived from: 41 * RFC 2465 42 * RFC 2466 43 * RFC 2452 44 * RFC 2454 45 */ 46 47 /* 48 * SNMP set/get via M_PROTO T_OPTMGMT_REQ. Structure is that used 49 * for [gs]etsockopt() calls. get uses T_CURRENT, set uses T_NEOGTIATE 50 * MGMT_flags value. The following definition of opthdr is taken from 51 * socket.h: 52 * 53 * An option specification consists of an opthdr, followed by the value of 54 * the option. An options buffer contains one or more options. The len 55 * field of opthdr specifies the length of the option value in bytes. This 56 * length must be a multiple of sizeof(long) (use OPTLEN macro). 57 * 58 * struct opthdr { 59 * long level; protocol level affected 60 * long name; option to modify 61 * long len; length of option value 62 * }; 63 * 64 * #define OPTLEN(x) ((((x) + sizeof(long) - 1) / sizeof(long)) * sizeof(long)) 65 * #define OPTVAL(opt) ((char *)(opt + 1)) 66 * 67 * For get requests (T_CURRENT), any MIB2_xxx value can be used (only 68 * "get all" is supported, so all modules get a copy of the request to 69 * return everything it knows. In general, we use MIB2_IP. There is 70 * one exception: in general, IP will not report information related to 71 * ire_testhidden and IRE_IF_CLONE routes (e.g., in the MIB2_IP_ROUTE 72 * table). However, using the special value EXPER_IP_AND_ALL_IRES will cause 73 * all information to be reported. This special value should only be 74 * used by IPMP-aware low-level utilities (e.g. in.mpathd). 75 * 76 * IMPORTANT: some fields are grouped in a different structure than 77 * suggested by MIB-II, e.g., checksum error counts. The original MIB-2 78 * field name has been retained. Field names beginning with "mi" are not 79 * defined in the MIB but contain important & useful information maintained 80 * by the corresponding module. 81 */ 82 #ifndef IPPROTO_MAX 83 #define IPPROTO_MAX 256 84 #endif 85 86 #define MIB2_SYSTEM (IPPROTO_MAX+1) 87 #define MIB2_INTERFACES (IPPROTO_MAX+2) 88 #define MIB2_AT (IPPROTO_MAX+3) 89 #define MIB2_IP (IPPROTO_MAX+4) 90 #define MIB2_ICMP (IPPROTO_MAX+5) 91 #define MIB2_TCP (IPPROTO_MAX+6) 92 #define MIB2_UDP (IPPROTO_MAX+7) 93 #define MIB2_EGP (IPPROTO_MAX+8) 94 #define MIB2_CMOT (IPPROTO_MAX+9) 95 #define MIB2_TRANSMISSION (IPPROTO_MAX+10) 96 #define MIB2_SNMP (IPPROTO_MAX+11) 97 #define MIB2_IP6 (IPPROTO_MAX+12) 98 #define MIB2_ICMP6 (IPPROTO_MAX+13) 99 #define MIB2_TCP6 (IPPROTO_MAX+14) 100 #define MIB2_UDP6 (IPPROTO_MAX+15) 101 #define MIB2_SCTP (IPPROTO_MAX+16) 102 103 /* 104 * Define range of levels for use with MIB2_* 105 */ 106 #define MIB2_RANGE_START (IPPROTO_MAX+1) 107 #define MIB2_RANGE_END (IPPROTO_MAX+16) 108 109 110 #define EXPER 1024 /* experimental - not part of mib */ 111 #define EXPER_IGMP (EXPER+1) 112 #define EXPER_DVMRP (EXPER+2) 113 #define EXPER_RAWIP (EXPER+3) 114 #define EXPER_IP_AND_ALL_IRES (EXPER+4) 115 116 /* 117 * Define range of levels for experimental use 118 */ 119 #define EXPER_RANGE_START (EXPER+1) 120 #define EXPER_RANGE_END (EXPER+4) 121 122 #define BUMP_MIB(s, x) { \ 123 extern void __dtrace_probe___mib_##x(int, void *); \ 124 void *stataddr = &((s)->x); \ 125 __dtrace_probe___mib_##x(1, stataddr); \ 126 (s)->x++; \ 127 } 128 129 #define UPDATE_MIB(s, x, y) { \ 130 extern void __dtrace_probe___mib_##x(int, void *); \ 131 void *stataddr = &((s)->x); \ 132 __dtrace_probe___mib_##x(y, stataddr); \ 133 (s)->x += (y); \ 134 } 135 136 #define SET_MIB(x, y) x = y 137 #define BUMP_LOCAL(x) (x)++ 138 #define UPDATE_LOCAL(x, y) (x) += (y) 139 #define SYNC32_MIB(s, m32, m64) SET_MIB((s)->m32, (s)->m64 & 0xffffffff) 140 141 /* 142 * Each struct that has been extended have a macro (MIB_FIRST_NEW_ELM_type) 143 * that is set to the first new element of the extended struct. 144 * The LEGACY_MIB_SIZE macro can be used to determine the size of MIB 145 * objects that needs to be returned to older applications unaware of 146 * these extensions. 147 */ 148 #define MIB_PTRDIFF(s, e) (caddr_t)e - (caddr_t)s 149 #define LEGACY_MIB_SIZE(s, t) MIB_PTRDIFF(s, &(s)->MIB_FIRST_NEW_ELM_##t) 150 151 #define OCTET_LENGTH 32 /* Must be at least LIFNAMSIZ */ 152 typedef struct Octet_s { 153 int o_length; 154 char o_bytes[OCTET_LENGTH]; 155 } Octet_t; 156 157 typedef uint32_t Counter; 158 typedef uint32_t Counter32; 159 typedef uint64_t Counter64; 160 typedef uint32_t Gauge; 161 typedef uint32_t IpAddress; 162 typedef struct in6_addr Ip6Address; 163 typedef Octet_t DeviceName; 164 typedef Octet_t PhysAddress; 165 typedef uint32_t DeviceIndex; /* Interface index */ 166 167 #define MIB2_UNKNOWN_INTERFACE 0 168 #define MIB2_UNKNOWN_PROCESS 0 169 170 /* 171 * IP group 172 */ 173 #define MIB2_IP_ADDR 20 /* ipAddrEntry */ 174 #define MIB2_IP_ROUTE 21 /* ipRouteEntry */ 175 #define MIB2_IP_MEDIA 22 /* ipNetToMediaEntry */ 176 #define MIB2_IP6_ROUTE 23 /* ipv6RouteEntry */ 177 #define MIB2_IP6_MEDIA 24 /* ipv6NetToMediaEntry */ 178 #define MIB2_IP6_ADDR 25 /* ipv6AddrEntry */ 179 #define MIB2_IP_TRAFFIC_STATS 31 /* ipIfStatsEntry (IPv4) */ 180 #define EXPER_IP_GROUP_MEMBERSHIP 100 181 #define EXPER_IP6_GROUP_MEMBERSHIP 101 182 #define EXPER_IP_GROUP_SOURCES 102 183 #define EXPER_IP6_GROUP_SOURCES 103 184 #define EXPER_IP_RTATTR 104 185 #define EXPER_IP_DCE 105 186 187 /* 188 * There can be one of each of these tables per transport (MIB2_* above). 189 */ 190 #define EXPER_XPORT_MLP 105 /* transportMLPEntry */ 191 192 /* Old names retained for compatibility */ 193 #define MIB2_IP_20 MIB2_IP_ADDR 194 #define MIB2_IP_21 MIB2_IP_ROUTE 195 #define MIB2_IP_22 MIB2_IP_MEDIA 196 197 typedef struct mib2_ip { 198 /* forwarder? 1 gateway, 2 NOT gateway {ip 1} RW */ 199 int ipForwarding; 200 /* default Time-to-Live for iph {ip 2} RW */ 201 int ipDefaultTTL; 202 /* # of input datagrams {ip 3} */ 203 Counter ipInReceives; 204 /* # of dg discards for iph error {ip 4} */ 205 Counter ipInHdrErrors; 206 /* # of dg discards for bad addr {ip 5} */ 207 Counter ipInAddrErrors; 208 /* # of dg being forwarded {ip 6} */ 209 Counter ipForwDatagrams; 210 /* # of dg discards for unk protocol {ip 7} */ 211 Counter ipInUnknownProtos; 212 /* # of dg discards of good dg's {ip 8} */ 213 Counter ipInDiscards; 214 /* # of dg sent upstream {ip 9} */ 215 Counter ipInDelivers; 216 /* # of outdgs recv'd from upstream {ip 10} */ 217 Counter ipOutRequests; 218 /* # of good outdgs discarded {ip 11} */ 219 Counter ipOutDiscards; 220 /* # of outdg discards: no route found {ip 12} */ 221 Counter ipOutNoRoutes; 222 /* sec's recv'd frags held for reass. {ip 13} */ 223 int ipReasmTimeout; 224 /* # of ip frags needing reassembly {ip 14} */ 225 Counter ipReasmReqds; 226 /* # of dg's reassembled {ip 15} */ 227 Counter ipReasmOKs; 228 /* # of reassembly failures (not dg cnt){ip 16} */ 229 Counter ipReasmFails; 230 /* # of dg's fragged {ip 17} */ 231 Counter ipFragOKs; 232 /* # of dg discards for no frag set {ip 18} */ 233 Counter ipFragFails; 234 /* # of dg frags from fragmentation {ip 19} */ 235 Counter ipFragCreates; 236 /* {ip 20} */ 237 int ipAddrEntrySize; 238 /* {ip 21} */ 239 int ipRouteEntrySize; 240 /* {ip 22} */ 241 int ipNetToMediaEntrySize; 242 /* # of valid route entries discarded {ip 23} */ 243 Counter ipRoutingDiscards; 244 /* 245 * following defined in MIB-II as part of TCP & UDP groups: 246 */ 247 /* total # of segments recv'd with error { tcp 14 } */ 248 Counter tcpInErrs; 249 /* # of recv'd dg's not deliverable (no appl.) { udp 2 } */ 250 Counter udpNoPorts; 251 /* 252 * In addition to MIB-II 253 */ 254 /* # of bad IP header checksums */ 255 Counter ipInCksumErrs; 256 /* # of complete duplicates in reassembly */ 257 Counter ipReasmDuplicates; 258 /* # of partial duplicates in reassembly */ 259 Counter ipReasmPartDups; 260 /* # of packets not forwarded due to adminstrative reasons */ 261 Counter ipForwProhibits; 262 /* # of UDP packets with bad UDP checksums */ 263 Counter udpInCksumErrs; 264 /* # of UDP packets droped due to queue overflow */ 265 Counter udpInOverflows; 266 /* 267 * # of RAW IP packets (all IP protocols except UDP, TCP 268 * and ICMP) droped due to queue overflow 269 */ 270 Counter rawipInOverflows; 271 272 /* 273 * Folowing are private IPSEC MIB. 274 */ 275 /* # of incoming packets that succeeded policy checks */ 276 Counter ipsecInSucceeded; 277 /* # of incoming packets that failed policy checks */ 278 Counter ipsecInFailed; 279 /* Compatible extensions added here */ 280 int ipMemberEntrySize; /* Size of ip_member_t */ 281 int ipGroupSourceEntrySize; /* Size of ip_grpsrc_t */ 282 283 Counter ipInIPv6; /* # of IPv6 packets received by IPv4 and dropped */ 284 Counter ipOutIPv6; /* No longer used */ 285 Counter ipOutSwitchIPv6; /* No longer used */ 286 287 int ipRouteAttributeSize; /* Size of mib2_ipAttributeEntry_t */ 288 int transportMLPSize; /* Size of mib2_transportMLPEntry_t */ 289 int ipDestEntrySize; /* Size of dest_cache_entry_t */ 290 } mib2_ip_t; 291 292 /* 293 * ipv6IfStatsEntry OBJECT-TYPE 294 * SYNTAX Ipv6IfStatsEntry 295 * MAX-ACCESS not-accessible 296 * STATUS current 297 * DESCRIPTION 298 * "An interface statistics entry containing objects 299 * at a particular IPv6 interface." 300 * AUGMENTS { ipv6IfEntry } 301 * ::= { ipv6IfStatsTable 1 } 302 * 303 * Per-interface IPv6 statistics table 304 */ 305 306 typedef struct mib2_ipv6IfStatsEntry { 307 /* Local ifindex to identify the interface */ 308 DeviceIndex ipv6IfIndex; 309 310 /* forwarder? 1 gateway, 2 NOT gateway {ipv6MIBObjects 1} RW */ 311 int ipv6Forwarding; 312 /* default Hoplimit for IPv6 {ipv6MIBObjects 2} RW */ 313 int ipv6DefaultHopLimit; 314 315 int ipv6IfStatsEntrySize; 316 int ipv6AddrEntrySize; 317 int ipv6RouteEntrySize; 318 int ipv6NetToMediaEntrySize; 319 int ipv6MemberEntrySize; /* Size of ipv6_member_t */ 320 int ipv6GroupSourceEntrySize; /* Size of ipv6_grpsrc_t */ 321 322 /* # input datagrams (incl errors) { ipv6IfStatsEntry 1 } */ 323 Counter ipv6InReceives; 324 /* # errors in IPv6 headers and options { ipv6IfStatsEntry 2 } */ 325 Counter ipv6InHdrErrors; 326 /* # exceeds outgoing link MTU { ipv6IfStatsEntry 3 } */ 327 Counter ipv6InTooBigErrors; 328 /* # discarded due to no route to dest { ipv6IfStatsEntry 4 } */ 329 Counter ipv6InNoRoutes; 330 /* # invalid or unsupported addresses { ipv6IfStatsEntry 5 } */ 331 Counter ipv6InAddrErrors; 332 /* # unknown next header { ipv6IfStatsEntry 6 } */ 333 Counter ipv6InUnknownProtos; 334 /* # too short packets { ipv6IfStatsEntry 7 } */ 335 Counter ipv6InTruncatedPkts; 336 /* # discarded e.g. due to no buffers { ipv6IfStatsEntry 8 } */ 337 Counter ipv6InDiscards; 338 /* # delivered to upper layer protocols { ipv6IfStatsEntry 9 } */ 339 Counter ipv6InDelivers; 340 /* # forwarded out interface { ipv6IfStatsEntry 10 } */ 341 Counter ipv6OutForwDatagrams; 342 /* # originated out interface { ipv6IfStatsEntry 11 } */ 343 Counter ipv6OutRequests; 344 /* # discarded e.g. due to no buffers { ipv6IfStatsEntry 12 } */ 345 Counter ipv6OutDiscards; 346 /* # sucessfully fragmented packets { ipv6IfStatsEntry 13 } */ 347 Counter ipv6OutFragOKs; 348 /* # fragmentation failed { ipv6IfStatsEntry 14 } */ 349 Counter ipv6OutFragFails; 350 /* # fragments created { ipv6IfStatsEntry 15 } */ 351 Counter ipv6OutFragCreates; 352 /* # fragments to reassemble { ipv6IfStatsEntry 16 } */ 353 Counter ipv6ReasmReqds; 354 /* # packets after reassembly { ipv6IfStatsEntry 17 } */ 355 Counter ipv6ReasmOKs; 356 /* # reassembly failed { ipv6IfStatsEntry 18 } */ 357 Counter ipv6ReasmFails; 358 /* # received multicast packets { ipv6IfStatsEntry 19 } */ 359 Counter ipv6InMcastPkts; 360 /* # transmitted multicast packets { ipv6IfStatsEntry 20 } */ 361 Counter ipv6OutMcastPkts; 362 /* 363 * In addition to defined MIBs 364 */ 365 /* # discarded due to no route to dest */ 366 Counter ipv6OutNoRoutes; 367 /* # of complete duplicates in reassembly */ 368 Counter ipv6ReasmDuplicates; 369 /* # of partial duplicates in reassembly */ 370 Counter ipv6ReasmPartDups; 371 /* # of packets not forwarded due to adminstrative reasons */ 372 Counter ipv6ForwProhibits; 373 /* # of UDP packets with bad UDP checksums */ 374 Counter udpInCksumErrs; 375 /* # of UDP packets droped due to queue overflow */ 376 Counter udpInOverflows; 377 /* 378 * # of RAW IPv6 packets (all IPv6 protocols except UDP, TCP 379 * and ICMPv6) droped due to queue overflow 380 */ 381 Counter rawipInOverflows; 382 383 /* # of IPv4 packets received by IPv6 and dropped */ 384 Counter ipv6InIPv4; 385 /* # of IPv4 packets transmitted by ip_wput_wput */ 386 Counter ipv6OutIPv4; 387 /* # of times ip_wput_v6 has switched to become ip_wput */ 388 Counter ipv6OutSwitchIPv4; 389 } mib2_ipv6IfStatsEntry_t; 390 391 /* 392 * Per interface IP statistics, both v4 and v6. 393 * 394 * Some applications expect to get mib2_ipv6IfStatsEntry_t structs back when 395 * making a request. To ensure backwards compatability, the first 396 * sizeof(mib2_ipv6IfStatsEntry_t) bytes of the structure is identical to 397 * mib2_ipv6IfStatsEntry_t. This should work as long the application is 398 * written correctly (i.e., using ipv6IfStatsEntrySize to get the size of 399 * the struct) 400 * 401 * RFC4293 introduces several new counters, as well as defining 64-bit 402 * versions of existing counters. For a new counters, if they have both 32- 403 * and 64-bit versions, then we only added the latter. However, for already 404 * existing counters, we have added the 64-bit versions without removing the 405 * old (32-bit) ones. The 64- and 32-bit counters will only be synchronized 406 * when the structure contains IPv6 statistics, which is done to ensure 407 * backwards compatibility. 408 */ 409 410 /* The following are defined in RFC 4001 and are used for ipIfStatsIPVersion */ 411 #define MIB2_INETADDRESSTYPE_unknown 0 412 #define MIB2_INETADDRESSTYPE_ipv4 1 413 #define MIB2_INETADDRESSTYPE_ipv6 2 414 415 /* 416 * On amd64, the alignment requirements for long long's is different for 417 * 32 and 64 bits. If we have a struct containing long long's that is being 418 * passed between a 64-bit kernel to a 32-bit application, then it is very 419 * likely that the size of the struct will differ due to padding. Therefore, we 420 * pack the data to ensure that the struct size is the same for 32- and 421 * 64-bits. 422 */ 423 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 424 #pragma pack(4) 425 #endif 426 427 typedef struct mib2_ipIfStatsEntry { 428 429 /* Local ifindex to identify the interface */ 430 DeviceIndex ipIfStatsIfIndex; 431 432 /* forwarder? 1 gateway, 2 NOT gateway { ipv6MIBObjects 1} RW */ 433 int ipIfStatsForwarding; 434 /* default Hoplimit for IPv6 { ipv6MIBObjects 2} RW */ 435 int ipIfStatsDefaultHopLimit; 436 #define ipIfStatsDefaultTTL ipIfStatsDefaultHopLimit 437 438 int ipIfStatsEntrySize; 439 int ipIfStatsAddrEntrySize; 440 int ipIfStatsRouteEntrySize; 441 int ipIfStatsNetToMediaEntrySize; 442 int ipIfStatsMemberEntrySize; 443 int ipIfStatsGroupSourceEntrySize; 444 445 /* # input datagrams (incl errors) { ipIfStatsEntry 3 } */ 446 Counter ipIfStatsInReceives; 447 /* # errors in IP headers and options { ipIfStatsEntry 7 } */ 448 Counter ipIfStatsInHdrErrors; 449 /* # exceeds outgoing link MTU(v6 only) { ipv6IfStatsEntry 3 } */ 450 Counter ipIfStatsInTooBigErrors; 451 /* # discarded due to no route to dest { ipIfStatsEntry 8 } */ 452 Counter ipIfStatsInNoRoutes; 453 /* # invalid or unsupported addresses { ipIfStatsEntry 9 } */ 454 Counter ipIfStatsInAddrErrors; 455 /* # unknown next header { ipIfStatsEntry 10 } */ 456 Counter ipIfStatsInUnknownProtos; 457 /* # too short packets { ipIfStatsEntry 11 } */ 458 Counter ipIfStatsInTruncatedPkts; 459 /* # discarded e.g. due to no buffers { ipIfStatsEntry 17 } */ 460 Counter ipIfStatsInDiscards; 461 /* # delivered to upper layer protocols { ipIfStatsEntry 18 } */ 462 Counter ipIfStatsInDelivers; 463 /* # forwarded out interface { ipIfStatsEntry 23 } */ 464 Counter ipIfStatsOutForwDatagrams; 465 /* # originated out interface { ipIfStatsEntry 20 } */ 466 Counter ipIfStatsOutRequests; 467 /* # discarded e.g. due to no buffers { ipIfStatsEntry 25 } */ 468 Counter ipIfStatsOutDiscards; 469 /* # sucessfully fragmented packets { ipIfStatsEntry 27 } */ 470 Counter ipIfStatsOutFragOKs; 471 /* # fragmentation failed { ipIfStatsEntry 28 } */ 472 Counter ipIfStatsOutFragFails; 473 /* # fragments created { ipIfStatsEntry 29 } */ 474 Counter ipIfStatsOutFragCreates; 475 /* # fragments to reassemble { ipIfStatsEntry 14 } */ 476 Counter ipIfStatsReasmReqds; 477 /* # packets after reassembly { ipIfStatsEntry 15 } */ 478 Counter ipIfStatsReasmOKs; 479 /* # reassembly failed { ipIfStatsEntry 16 } */ 480 Counter ipIfStatsReasmFails; 481 /* # received multicast packets { ipIfStatsEntry 34 } */ 482 Counter ipIfStatsInMcastPkts; 483 /* # transmitted multicast packets { ipIfStatsEntry 38 } */ 484 Counter ipIfStatsOutMcastPkts; 485 486 /* 487 * In addition to defined MIBs 488 */ 489 490 /* # discarded due to no route to dest { ipSystemStatsEntry 22 } */ 491 Counter ipIfStatsOutNoRoutes; 492 /* # of complete duplicates in reassembly */ 493 Counter ipIfStatsReasmDuplicates; 494 /* # of partial duplicates in reassembly */ 495 Counter ipIfStatsReasmPartDups; 496 /* # of packets not forwarded due to adminstrative reasons */ 497 Counter ipIfStatsForwProhibits; 498 /* # of UDP packets with bad UDP checksums */ 499 Counter udpInCksumErrs; 500 #define udpIfStatsInCksumErrs udpInCksumErrs 501 /* # of UDP packets droped due to queue overflow */ 502 Counter udpInOverflows; 503 #define udpIfStatsInOverflows udpInOverflows 504 /* 505 * # of RAW IP packets (all IP protocols except UDP, TCP 506 * and ICMP) droped due to queue overflow 507 */ 508 Counter rawipInOverflows; 509 #define rawipIfStatsInOverflows rawipInOverflows 510 511 /* 512 * # of IP packets received with the wrong version (i.e., not equal 513 * to ipIfStatsIPVersion) and that were dropped. 514 */ 515 Counter ipIfStatsInWrongIPVersion; 516 /* 517 * This counter is no longer used 518 */ 519 Counter ipIfStatsOutWrongIPVersion; 520 /* 521 * This counter is no longer used 522 */ 523 Counter ipIfStatsOutSwitchIPVersion; 524 525 /* 526 * Fields defined in RFC 4293 527 */ 528 529 /* ip version { ipIfStatsEntry 1 } */ 530 int ipIfStatsIPVersion; 531 /* # input datagrams (incl errors) { ipIfStatsEntry 4 } */ 532 Counter64 ipIfStatsHCInReceives; 533 /* # input octets (incl errors) { ipIfStatsEntry 6 } */ 534 Counter64 ipIfStatsHCInOctets; 535 /* 536 * { ipIfStatsEntry 13 } 537 * # input datagrams for which a forwarding attempt was made 538 */ 539 Counter64 ipIfStatsHCInForwDatagrams; 540 /* # delivered to upper layer protocols { ipIfStatsEntry 19 } */ 541 Counter64 ipIfStatsHCInDelivers; 542 /* # originated out interface { ipIfStatsEntry 21 } */ 543 Counter64 ipIfStatsHCOutRequests; 544 /* # forwarded out interface { ipIfStatsEntry 23 } */ 545 Counter64 ipIfStatsHCOutForwDatagrams; 546 /* # dg's requiring fragmentation { ipIfStatsEntry 26 } */ 547 Counter ipIfStatsOutFragReqds; 548 /* # output datagrams { ipIfStatsEntry 31 } */ 549 Counter64 ipIfStatsHCOutTransmits; 550 /* # output octets { ipIfStatsEntry 33 } */ 551 Counter64 ipIfStatsHCOutOctets; 552 /* # received multicast datagrams { ipIfStatsEntry 35 } */ 553 Counter64 ipIfStatsHCInMcastPkts; 554 /* # received multicast octets { ipIfStatsEntry 37 } */ 555 Counter64 ipIfStatsHCInMcastOctets; 556 /* # transmitted multicast datagrams { ipIfStatsEntry 39 } */ 557 Counter64 ipIfStatsHCOutMcastPkts; 558 /* # transmitted multicast octets { ipIfStatsEntry 41 } */ 559 Counter64 ipIfStatsHCOutMcastOctets; 560 /* # received broadcast datagrams { ipIfStatsEntry 43 } */ 561 Counter64 ipIfStatsHCInBcastPkts; 562 /* # transmitted broadcast datagrams { ipIfStatsEntry 45 } */ 563 Counter64 ipIfStatsHCOutBcastPkts; 564 565 /* 566 * Fields defined in mib2_ip_t 567 */ 568 569 /* # of incoming packets that succeeded policy checks */ 570 Counter ipsecInSucceeded; 571 #define ipsecIfStatsInSucceeded ipsecInSucceeded 572 /* # of incoming packets that failed policy checks */ 573 Counter ipsecInFailed; 574 #define ipsecIfStatsInFailed ipsecInFailed 575 /* # of bad IP header checksums */ 576 Counter ipInCksumErrs; 577 #define ipIfStatsInCksumErrs ipInCksumErrs 578 /* total # of segments recv'd with error { tcp 14 } */ 579 Counter tcpInErrs; 580 #define tcpIfStatsInErrs tcpInErrs 581 /* # of recv'd dg's not deliverable (no appl.) { udp 2 } */ 582 Counter udpNoPorts; 583 #define udpIfStatsNoPorts udpNoPorts 584 } mib2_ipIfStatsEntry_t; 585 #define MIB_FIRST_NEW_ELM_mib2_ipIfStatsEntry_t ipIfStatsIPVersion 586 587 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 588 #pragma pack() 589 #endif 590 591 /* 592 * The IP address table contains this entity's IP addressing information. 593 * 594 * ipAddrTable OBJECT-TYPE 595 * SYNTAX SEQUENCE OF IpAddrEntry 596 * ACCESS not-accessible 597 * STATUS mandatory 598 * DESCRIPTION 599 * "The table of addressing information relevant to 600 * this entity's IP addresses." 601 * ::= { ip 20 } 602 */ 603 604 typedef struct mib2_ipAddrEntry { 605 /* IP address of this entry {ipAddrEntry 1} */ 606 IpAddress ipAdEntAddr; 607 /* Unique interface index {ipAddrEntry 2} */ 608 DeviceName ipAdEntIfIndex; 609 /* Subnet mask for this IP addr {ipAddrEntry 3} */ 610 IpAddress ipAdEntNetMask; 611 /* 2^lsb of IP broadcast addr {ipAddrEntry 4} */ 612 int ipAdEntBcastAddr; 613 /* max size for dg reassembly {ipAddrEntry 5} */ 614 int ipAdEntReasmMaxSize; 615 /* additional ipif_t fields */ 616 struct ipAdEntInfo_s { 617 Gauge ae_mtu; 618 /* BSD if metric */ 619 int ae_metric; 620 /* ipif broadcast addr. relation to above?? */ 621 IpAddress ae_broadcast_addr; 622 /* point-point dest addr */ 623 IpAddress ae_pp_dst_addr; 624 int ae_flags; /* IFF_* flags in if.h */ 625 Counter ae_ibcnt; /* Inbound packets */ 626 Counter ae_obcnt; /* Outbound packets */ 627 Counter ae_focnt; /* Forwarded packets */ 628 IpAddress ae_subnet; /* Subnet prefix */ 629 int ae_subnet_len; /* Subnet prefix length */ 630 IpAddress ae_src_addr; /* Source address */ 631 } ipAdEntInfo; 632 uint32_t ipAdEntRetransmitTime; /* ipInterfaceRetransmitTime */ 633 } mib2_ipAddrEntry_t; 634 #define MIB_FIRST_NEW_ELM_mib2_ipAddrEntry_t ipAdEntRetransmitTime 635 636 /* 637 * ipv6AddrTable OBJECT-TYPE 638 * SYNTAX SEQUENCE OF Ipv6AddrEntry 639 * MAX-ACCESS not-accessible 640 * STATUS current 641 * DESCRIPTION 642 * "The table of addressing information relevant to 643 * this node's interface addresses." 644 * ::= { ipv6MIBObjects 8 } 645 */ 646 647 typedef struct mib2_ipv6AddrEntry { 648 /* Unique interface index { Part of INDEX } */ 649 DeviceName ipv6AddrIfIndex; 650 651 /* IPv6 address of this entry { ipv6AddrEntry 1 } */ 652 Ip6Address ipv6AddrAddress; 653 /* Prefix length { ipv6AddrEntry 2 } */ 654 uint_t ipv6AddrPfxLength; 655 /* Type: stateless(1), stateful(2), unknown(3) { ipv6AddrEntry 3 } */ 656 uint_t ipv6AddrType; 657 /* Anycast: true(1), false(2) { ipv6AddrEntry 4 } */ 658 uint_t ipv6AddrAnycastFlag; 659 /* 660 * Address status: preferred(1), deprecated(2), invalid(3), 661 * inaccessible(4), unknown(5) { ipv6AddrEntry 5 } 662 */ 663 uint_t ipv6AddrStatus; 664 struct ipv6AddrInfo_s { 665 Gauge ae_mtu; 666 /* BSD if metric */ 667 int ae_metric; 668 /* point-point dest addr */ 669 Ip6Address ae_pp_dst_addr; 670 int ae_flags; /* IFF_* flags in if.h */ 671 Counter ae_ibcnt; /* Inbound packets */ 672 Counter ae_obcnt; /* Outbound packets */ 673 Counter ae_focnt; /* Forwarded packets */ 674 Ip6Address ae_subnet; /* Subnet prefix */ 675 int ae_subnet_len; /* Subnet prefix length */ 676 Ip6Address ae_src_addr; /* Source address */ 677 } ipv6AddrInfo; 678 uint32_t ipv6AddrReasmMaxSize; /* InterfaceReasmMaxSize */ 679 Ip6Address ipv6AddrIdentifier; /* InterfaceIdentifier */ 680 uint32_t ipv6AddrIdentifierLen; 681 uint32_t ipv6AddrReachableTime; /* InterfaceReachableTime */ 682 uint32_t ipv6AddrRetransmitTime; /* InterfaceRetransmitTime */ 683 } mib2_ipv6AddrEntry_t; 684 #define MIB_FIRST_NEW_ELM_mib2_ipv6AddrEntry_t ipv6AddrReasmMaxSize 685 686 /* 687 * The IP routing table contains an entry for each route presently known to 688 * this entity. (for IPv4 routes) 689 * 690 * ipRouteTable OBJECT-TYPE 691 * SYNTAX SEQUENCE OF IpRouteEntry 692 * ACCESS not-accessible 693 * STATUS mandatory 694 * DESCRIPTION 695 * "This entity's IP Routing table." 696 * ::= { ip 21 } 697 */ 698 699 typedef struct mib2_ipRouteEntry { 700 /* dest ip addr for this route {ipRouteEntry 1 } RW */ 701 IpAddress ipRouteDest; 702 /* unique interface index for this hop {ipRouteEntry 2 } RW */ 703 DeviceName ipRouteIfIndex; 704 /* primary route metric {ipRouteEntry 3 } RW */ 705 int ipRouteMetric1; 706 /* alternate route metric {ipRouteEntry 4 } RW */ 707 int ipRouteMetric2; 708 /* alternate route metric {ipRouteEntry 5 } RW */ 709 int ipRouteMetric3; 710 /* alternate route metric {ipRouteEntry 6 } RW */ 711 int ipRouteMetric4; 712 /* ip addr of next hop on this route {ipRouteEntry 7 } RW */ 713 IpAddress ipRouteNextHop; 714 /* other(1), inval(2), dir(3), indir(4) {ipRouteEntry 8 } RW */ 715 int ipRouteType; 716 /* mechanism by which route was learned {ipRouteEntry 9 } */ 717 int ipRouteProto; 718 /* sec's since last update of route {ipRouteEntry 10} RW */ 719 int ipRouteAge; 720 /* {ipRouteEntry 11} RW */ 721 IpAddress ipRouteMask; 722 /* alternate route metric {ipRouteEntry 12} RW */ 723 int ipRouteMetric5; 724 /* additional info from ire's {ipRouteEntry 13 } */ 725 struct ipRouteInfo_s { 726 Gauge re_max_frag; 727 Gauge re_rtt; 728 Counter re_ref; 729 int re_frag_flag; 730 IpAddress re_src_addr; 731 int re_ire_type; 732 Counter re_obpkt; 733 Counter re_ibpkt; 734 int re_flags; 735 /* 736 * The following two elements (re_in_ill and re_in_src_addr) 737 * are no longer used but are left here for the benefit of 738 * old Apps that won't be able to handle the change in the 739 * size of this struct. These elements will always be 740 * set to zeroes. 741 */ 742 DeviceName re_in_ill; /* Input interface */ 743 IpAddress re_in_src_addr; /* Input source address */ 744 } ipRouteInfo; 745 } mib2_ipRouteEntry_t; 746 747 /* 748 * The IPv6 routing table contains an entry for each route presently known to 749 * this entity. 750 * 751 * ipv6RouteTable OBJECT-TYPE 752 * SYNTAX SEQUENCE OF IpRouteEntry 753 * ACCESS not-accessible 754 * STATUS current 755 * DESCRIPTION 756 * "IPv6 Routing table. This table contains 757 * an entry for each valid IPv6 unicast route 758 * that can be used for packet forwarding 759 * determination." 760 * ::= { ipv6MIBObjects 11 } 761 */ 762 763 typedef struct mib2_ipv6RouteEntry { 764 /* dest ip addr for this route { ipv6RouteEntry 1 } */ 765 Ip6Address ipv6RouteDest; 766 /* prefix length { ipv6RouteEntry 2 } */ 767 int ipv6RoutePfxLength; 768 /* unique route index { ipv6RouteEntry 3 } */ 769 unsigned ipv6RouteIndex; 770 /* unique interface index for this hop { ipv6RouteEntry 4 } */ 771 DeviceName ipv6RouteIfIndex; 772 /* IPv6 addr of next hop on this route { ipv6RouteEntry 5 } */ 773 Ip6Address ipv6RouteNextHop; 774 /* other(1), discard(2), local(3), remote(4) */ 775 /* { ipv6RouteEntry 6 } */ 776 int ipv6RouteType; 777 /* mechanism by which route was learned { ipv6RouteEntry 7 } */ 778 /* 779 * other(1), local(2), netmgmt(3), ndisc(4), rip(5), ospf(6), 780 * bgp(7), idrp(8), igrp(9) 781 */ 782 int ipv6RouteProtocol; 783 /* policy hook or traffic class { ipv6RouteEntry 8 } */ 784 unsigned ipv6RoutePolicy; 785 /* sec's since last update of route { ipv6RouteEntry 9} */ 786 int ipv6RouteAge; 787 /* Routing domain ID of the next hop { ipv6RouteEntry 10 } */ 788 unsigned ipv6RouteNextHopRDI; 789 /* route metric { ipv6RouteEntry 11 } */ 790 unsigned ipv6RouteMetric; 791 /* preference (impl specific) { ipv6RouteEntry 12 } */ 792 unsigned ipv6RouteWeight; 793 /* additional info from ire's { } */ 794 struct ipv6RouteInfo_s { 795 Gauge re_max_frag; 796 Gauge re_rtt; 797 Counter re_ref; 798 int re_frag_flag; 799 Ip6Address re_src_addr; 800 int re_ire_type; 801 Counter re_obpkt; 802 Counter re_ibpkt; 803 int re_flags; 804 } ipv6RouteInfo; 805 } mib2_ipv6RouteEntry_t; 806 807 /* 808 * The IPv4 and IPv6 routing table entries on a trusted system also have 809 * security attributes in the form of label ranges. This experimental 810 * interface provides information about these labels. 811 * 812 * Each entry in this table contains a label range and an index that refers 813 * back to the entry in the routing table to which it applies. There may be 0, 814 * 1, or many label ranges for each routing table entry. 815 * 816 * (opthdr.level is set to MIB2_IP for IPv4 entries and MIB2_IP6 for IPv6. 817 * opthdr.name is set to EXPER_IP_GWATTR.) 818 * 819 * ipRouteAttributeTable OBJECT-TYPE 820 * SYNTAX SEQUENCE OF IpAttributeEntry 821 * ACCESS not-accessible 822 * STATUS current 823 * DESCRIPTION 824 * "IPv4 routing attributes table. This table contains 825 * an entry for each valid trusted label attached to a 826 * route in the system." 827 * ::= { ip 102 } 828 * 829 * ipv6RouteAttributeTable OBJECT-TYPE 830 * SYNTAX SEQUENCE OF IpAttributeEntry 831 * ACCESS not-accessible 832 * STATUS current 833 * DESCRIPTION 834 * "IPv6 routing attributes table. This table contains 835 * an entry for each valid trusted label attached to a 836 * route in the system." 837 * ::= { ip6 102 } 838 */ 839 840 typedef struct mib2_ipAttributeEntry { 841 uint_t iae_routeidx; 842 int iae_doi; 843 brange_t iae_slrange; 844 } mib2_ipAttributeEntry_t; 845 846 /* 847 * The IP address translation table contain the IpAddress to 848 * `physical' address equivalences. Some interfaces do not 849 * use translation tables for determining address 850 * equivalences (e.g., DDN-X.25 has an algorithmic method); 851 * if all interfaces are of this type, then the Address 852 * Translation table is empty, i.e., has zero entries. 853 * 854 * ipNetToMediaTable OBJECT-TYPE 855 * SYNTAX SEQUENCE OF IpNetToMediaEntry 856 * ACCESS not-accessible 857 * STATUS mandatory 858 * DESCRIPTION 859 * "The IP Address Translation table used for mapping 860 * from IP addresses to physical addresses." 861 * ::= { ip 22 } 862 */ 863 864 typedef struct mib2_ipNetToMediaEntry { 865 /* Unique interface index { ipNetToMediaEntry 1 } RW */ 866 DeviceName ipNetToMediaIfIndex; 867 /* Media dependent physical addr { ipNetToMediaEntry 2 } RW */ 868 PhysAddress ipNetToMediaPhysAddress; 869 /* ip addr for this physical addr { ipNetToMediaEntry 3 } RW */ 870 IpAddress ipNetToMediaNetAddress; 871 /* other(1), inval(2), dyn(3), stat(4) { ipNetToMediaEntry 4 } RW */ 872 int ipNetToMediaType; 873 struct ipNetToMediaInfo_s { 874 PhysAddress ntm_mask; /* subnet mask for entry */ 875 int ntm_flags; /* ACE_F_* flags in arp.h */ 876 } ipNetToMediaInfo; 877 } mib2_ipNetToMediaEntry_t; 878 879 /* 880 * ipv6NetToMediaTable OBJECT-TYPE 881 * SYNTAX SEQUENCE OF Ipv6NetToMediaEntry 882 * MAX-ACCESS not-accessible 883 * STATUS current 884 * DESCRIPTION 885 * "The IPv6 Address Translation table used for 886 * mapping from IPv6 addresses to physical addresses. 887 * 888 * The IPv6 address translation table contain the 889 * Ipv6Address to `physical' address equivalencies. 890 * Some interfaces do not use translation tables 891 * for determining address equivalencies; if all 892 * interfaces are of this type, then the Address 893 * Translation table is empty, i.e., has zero 894 * entries." 895 * ::= { ipv6MIBObjects 12 } 896 */ 897 898 typedef struct mib2_ipv6NetToMediaEntry { 899 /* Unique interface index { Part of INDEX } */ 900 DeviceIndex ipv6NetToMediaIfIndex; 901 902 /* ip addr for this physical addr { ipv6NetToMediaEntry 1 } */ 903 Ip6Address ipv6NetToMediaNetAddress; 904 /* Media dependent physical addr { ipv6NetToMediaEntry 2 } */ 905 PhysAddress ipv6NetToMediaPhysAddress; 906 /* 907 * Type of mapping 908 * other(1), dynamic(2), static(3), local(4) 909 * { ipv6NetToMediaEntry 3 } 910 */ 911 int ipv6NetToMediaType; 912 /* 913 * NUD state 914 * reachable(1), stale(2), delay(3), probe(4), invalid(5), unknown(6) 915 * Note: The kernel returns ND_* states. 916 * { ipv6NetToMediaEntry 4 } 917 */ 918 int ipv6NetToMediaState; 919 /* sysUpTime last time entry was updated { ipv6NetToMediaEntry 5 } */ 920 int ipv6NetToMediaLastUpdated; 921 } mib2_ipv6NetToMediaEntry_t; 922 923 924 /* 925 * List of group members per interface 926 */ 927 typedef struct ip_member { 928 /* Interface index */ 929 DeviceName ipGroupMemberIfIndex; 930 /* IP Multicast address */ 931 IpAddress ipGroupMemberAddress; 932 /* Number of member sockets */ 933 Counter ipGroupMemberRefCnt; 934 /* Filter mode: 1 => include, 2 => exclude */ 935 int ipGroupMemberFilterMode; 936 } ip_member_t; 937 938 939 /* 940 * List of IPv6 group members per interface 941 */ 942 typedef struct ipv6_member { 943 /* Interface index */ 944 DeviceIndex ipv6GroupMemberIfIndex; 945 /* IP Multicast address */ 946 Ip6Address ipv6GroupMemberAddress; 947 /* Number of member sockets */ 948 Counter ipv6GroupMemberRefCnt; 949 /* Filter mode: 1 => include, 2 => exclude */ 950 int ipv6GroupMemberFilterMode; 951 } ipv6_member_t; 952 953 /* 954 * This is used to mark transport layer entities (e.g., TCP connections) that 955 * are capable of receiving packets from a range of labels. 'level' is set to 956 * the protocol of interest (e.g., MIB2_TCP), and 'name' is set to 957 * EXPER_XPORT_MLP. The tme_connidx refers back to the entry in MIB2_TCP_CONN, 958 * MIB2_TCP6_CONN, or MIB2_SCTP_CONN. 959 * 960 * It is also used to report connections that receive packets at a single label 961 * that's other than the zone's label. This is the case when a TCP connection 962 * is accepted from a particular peer using an MLP listener. 963 */ 964 typedef struct mib2_transportMLPEntry { 965 uint_t tme_connidx; 966 uint_t tme_flags; 967 int tme_doi; 968 bslabel_t tme_label; 969 } mib2_transportMLPEntry_t; 970 971 #define MIB2_TMEF_PRIVATE 0x00000001 /* MLP on private addresses */ 972 #define MIB2_TMEF_SHARED 0x00000002 /* MLP on shared addresses */ 973 #define MIB2_TMEF_ANONMLP 0x00000004 /* Anonymous MLP port */ 974 #define MIB2_TMEF_MACEXEMPT 0x00000008 /* MAC-Exempt port */ 975 #define MIB2_TMEF_IS_LABELED 0x00000010 /* tme_doi & tme_label exists */ 976 #define MIB2_TMEF_MACIMPLICIT 0x00000020 /* MAC-Implicit */ 977 /* 978 * List of IPv4 source addresses being filtered per interface 979 */ 980 typedef struct ip_grpsrc { 981 /* Interface index */ 982 DeviceName ipGroupSourceIfIndex; 983 /* IP Multicast address */ 984 IpAddress ipGroupSourceGroup; 985 /* IP Source address */ 986 IpAddress ipGroupSourceAddress; 987 } ip_grpsrc_t; 988 989 990 /* 991 * List of IPv6 source addresses being filtered per interface 992 */ 993 typedef struct ipv6_grpsrc { 994 /* Interface index */ 995 DeviceIndex ipv6GroupSourceIfIndex; 996 /* IP Multicast address */ 997 Ip6Address ipv6GroupSourceGroup; 998 /* IP Source address */ 999 Ip6Address ipv6GroupSourceAddress; 1000 } ipv6_grpsrc_t; 1001 1002 1003 /* 1004 * List of destination cache entries 1005 */ 1006 typedef struct dest_cache_entry { 1007 /* IP Multicast address */ 1008 IpAddress DestIpv4Address; 1009 Ip6Address DestIpv6Address; 1010 uint_t DestFlags; /* DCEF_* */ 1011 uint32_t DestPmtu; /* Path MTU if DCEF_PMTU */ 1012 uint32_t DestIdent; /* Per destination IP ident. */ 1013 DeviceIndex DestIfindex; /* For IPv6 link-locals */ 1014 uint32_t DestAge; /* Age of MTU info in seconds */ 1015 } dest_cache_entry_t; 1016 1017 1018 /* 1019 * ICMP Group 1020 */ 1021 typedef struct mib2_icmp { 1022 /* total # of recv'd ICMP msgs { icmp 1 } */ 1023 Counter icmpInMsgs; 1024 /* recv'd ICMP msgs with errors { icmp 2 } */ 1025 Counter icmpInErrors; 1026 /* recv'd "dest unreachable" msg's { icmp 3 } */ 1027 Counter icmpInDestUnreachs; 1028 /* recv'd "time exceeded" msg's { icmp 4 } */ 1029 Counter icmpInTimeExcds; 1030 /* recv'd "parameter problem" msg's { icmp 5 } */ 1031 Counter icmpInParmProbs; 1032 /* recv'd "source quench" msg's { icmp 6 } */ 1033 Counter icmpInSrcQuenchs; 1034 /* recv'd "ICMP redirect" msg's { icmp 7 } */ 1035 Counter icmpInRedirects; 1036 /* recv'd "echo request" msg's { icmp 8 } */ 1037 Counter icmpInEchos; 1038 /* recv'd "echo reply" msg's { icmp 9 } */ 1039 Counter icmpInEchoReps; 1040 /* recv'd "timestamp" msg's { icmp 10 } */ 1041 Counter icmpInTimestamps; 1042 /* recv'd "timestamp reply" msg's { icmp 11 } */ 1043 Counter icmpInTimestampReps; 1044 /* recv'd "address mask request" msg's { icmp 12 } */ 1045 Counter icmpInAddrMasks; 1046 /* recv'd "address mask reply" msg's { icmp 13 } */ 1047 Counter icmpInAddrMaskReps; 1048 /* total # of sent ICMP msg's { icmp 14 } */ 1049 Counter icmpOutMsgs; 1050 /* # of msg's not sent for internal icmp errors { icmp 15 } */ 1051 Counter icmpOutErrors; 1052 /* # of "dest unreachable" msg's sent { icmp 16 } */ 1053 Counter icmpOutDestUnreachs; 1054 /* # of "time exceeded" msg's sent { icmp 17 } */ 1055 Counter icmpOutTimeExcds; 1056 /* # of "parameter problme" msg's sent { icmp 18 } */ 1057 Counter icmpOutParmProbs; 1058 /* # of "source quench" msg's sent { icmp 19 } */ 1059 Counter icmpOutSrcQuenchs; 1060 /* # of "ICMP redirect" msg's sent { icmp 20 } */ 1061 Counter icmpOutRedirects; 1062 /* # of "Echo request" msg's sent { icmp 21 } */ 1063 Counter icmpOutEchos; 1064 /* # of "Echo reply" msg's sent { icmp 22 } */ 1065 Counter icmpOutEchoReps; 1066 /* # of "timestamp request" msg's sent { icmp 23 } */ 1067 Counter icmpOutTimestamps; 1068 /* # of "timestamp reply" msg's sent { icmp 24 } */ 1069 Counter icmpOutTimestampReps; 1070 /* # of "address mask request" msg's sent { icmp 25 } */ 1071 Counter icmpOutAddrMasks; 1072 /* # of "address mask reply" msg's sent { icmp 26 } */ 1073 Counter icmpOutAddrMaskReps; 1074 /* 1075 * In addition to MIB-II 1076 */ 1077 /* # of received packets with checksum errors */ 1078 Counter icmpInCksumErrs; 1079 /* # of received packets with unknow codes */ 1080 Counter icmpInUnknowns; 1081 /* # of received unreachables with "fragmentation needed" */ 1082 Counter icmpInFragNeeded; 1083 /* # of sent unreachables with "fragmentation needed" */ 1084 Counter icmpOutFragNeeded; 1085 /* 1086 * # of msg's not sent since original packet was broadcast/multicast 1087 * or an ICMP error packet 1088 */ 1089 Counter icmpOutDrops; 1090 /* # of ICMP packets droped due to queue overflow */ 1091 Counter icmpInOverflows; 1092 /* recv'd "ICMP redirect" msg's that are bad thus ignored */ 1093 Counter icmpInBadRedirects; 1094 } mib2_icmp_t; 1095 1096 1097 /* 1098 * ipv6IfIcmpEntry OBJECT-TYPE 1099 * SYNTAX Ipv6IfIcmpEntry 1100 * MAX-ACCESS not-accessible 1101 * STATUS current 1102 * DESCRIPTION 1103 * "An ICMPv6 statistics entry containing 1104 * objects at a particular IPv6 interface. 1105 * 1106 * Note that a receiving interface is 1107 * the interface to which a given ICMPv6 message 1108 * is addressed which may not be necessarily 1109 * the input interface for the message. 1110 * 1111 * Similarly, the sending interface is 1112 * the interface that sources a given 1113 * ICMP message which is usually but not 1114 * necessarily the output interface for the message." 1115 * AUGMENTS { ipv6IfEntry } 1116 * ::= { ipv6IfIcmpTable 1 } 1117 * 1118 * Per-interface ICMPv6 statistics table 1119 */ 1120 1121 typedef struct mib2_ipv6IfIcmpEntry { 1122 /* Local ifindex to identify the interface */ 1123 DeviceIndex ipv6IfIcmpIfIndex; 1124 1125 int ipv6IfIcmpEntrySize; /* Size of ipv6IfIcmpEntry */ 1126 1127 /* The total # ICMP msgs rcvd includes ipv6IfIcmpInErrors */ 1128 Counter32 ipv6IfIcmpInMsgs; 1129 /* # ICMP with ICMP-specific errors (bad checkum, length, etc) */ 1130 Counter32 ipv6IfIcmpInErrors; 1131 /* # ICMP Destination Unreachable */ 1132 Counter32 ipv6IfIcmpInDestUnreachs; 1133 /* # ICMP destination unreachable/communication admin prohibited */ 1134 Counter32 ipv6IfIcmpInAdminProhibs; 1135 Counter32 ipv6IfIcmpInTimeExcds; 1136 Counter32 ipv6IfIcmpInParmProblems; 1137 Counter32 ipv6IfIcmpInPktTooBigs; 1138 Counter32 ipv6IfIcmpInEchos; 1139 Counter32 ipv6IfIcmpInEchoReplies; 1140 Counter32 ipv6IfIcmpInRouterSolicits; 1141 Counter32 ipv6IfIcmpInRouterAdvertisements; 1142 Counter32 ipv6IfIcmpInNeighborSolicits; 1143 Counter32 ipv6IfIcmpInNeighborAdvertisements; 1144 Counter32 ipv6IfIcmpInRedirects; 1145 Counter32 ipv6IfIcmpInGroupMembQueries; 1146 Counter32 ipv6IfIcmpInGroupMembResponses; 1147 Counter32 ipv6IfIcmpInGroupMembReductions; 1148 /* Total # ICMP messages attempted to send (includes OutErrors) */ 1149 Counter32 ipv6IfIcmpOutMsgs; 1150 /* # ICMP messages not sent due to ICMP problems (e.g. no buffers) */ 1151 Counter32 ipv6IfIcmpOutErrors; 1152 Counter32 ipv6IfIcmpOutDestUnreachs; 1153 Counter32 ipv6IfIcmpOutAdminProhibs; 1154 Counter32 ipv6IfIcmpOutTimeExcds; 1155 Counter32 ipv6IfIcmpOutParmProblems; 1156 Counter32 ipv6IfIcmpOutPktTooBigs; 1157 Counter32 ipv6IfIcmpOutEchos; 1158 Counter32 ipv6IfIcmpOutEchoReplies; 1159 Counter32 ipv6IfIcmpOutRouterSolicits; 1160 Counter32 ipv6IfIcmpOutRouterAdvertisements; 1161 Counter32 ipv6IfIcmpOutNeighborSolicits; 1162 Counter32 ipv6IfIcmpOutNeighborAdvertisements; 1163 Counter32 ipv6IfIcmpOutRedirects; 1164 Counter32 ipv6IfIcmpOutGroupMembQueries; 1165 Counter32 ipv6IfIcmpOutGroupMembResponses; 1166 Counter32 ipv6IfIcmpOutGroupMembReductions; 1167 /* Additions beyond the MIB */ 1168 Counter32 ipv6IfIcmpInOverflows; 1169 /* recv'd "ICMPv6 redirect" msg's that are bad thus ignored */ 1170 Counter32 ipv6IfIcmpBadHoplimit; 1171 Counter32 ipv6IfIcmpInBadNeighborAdvertisements; 1172 Counter32 ipv6IfIcmpInBadNeighborSolicitations; 1173 Counter32 ipv6IfIcmpInBadRedirects; 1174 Counter32 ipv6IfIcmpInGroupMembTotal; 1175 Counter32 ipv6IfIcmpInGroupMembBadQueries; 1176 Counter32 ipv6IfIcmpInGroupMembBadReports; 1177 Counter32 ipv6IfIcmpInGroupMembOurReports; 1178 } mib2_ipv6IfIcmpEntry_t; 1179 1180 /* 1181 * the TCP group 1182 * 1183 * Note that instances of object types that represent 1184 * information about a particular TCP connection are 1185 * transient; they persist only as long as the connection 1186 * in question. 1187 */ 1188 #define MIB2_TCP_CONN 13 /* tcpConnEntry */ 1189 #define MIB2_TCP6_CONN 14 /* tcp6ConnEntry */ 1190 1191 /* Old name retained for compatibility */ 1192 #define MIB2_TCP_13 MIB2_TCP_CONN 1193 1194 /* Pack data in mib2_tcp to make struct size the same for 32- and 64-bits */ 1195 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1196 #pragma pack(4) 1197 #endif 1198 typedef struct mib2_tcp { 1199 /* algorithm used for transmit timeout value { tcp 1 } */ 1200 int tcpRtoAlgorithm; 1201 /* minimum retransmit timeout (ms) { tcp 2 } */ 1202 int tcpRtoMin; 1203 /* maximum retransmit timeout (ms) { tcp 3 } */ 1204 int tcpRtoMax; 1205 /* maximum # of connections supported { tcp 4 } */ 1206 int tcpMaxConn; 1207 /* # of direct transitions CLOSED -> SYN-SENT { tcp 5 } */ 1208 Counter tcpActiveOpens; 1209 /* # of direct transitions LISTEN -> SYN-RCVD { tcp 6 } */ 1210 Counter tcpPassiveOpens; 1211 /* # of direct SIN-SENT/RCVD -> CLOSED/LISTEN { tcp 7 } */ 1212 Counter tcpAttemptFails; 1213 /* # of direct ESTABLISHED/CLOSE-WAIT -> CLOSED { tcp 8 } */ 1214 Counter tcpEstabResets; 1215 /* # of connections ESTABLISHED or CLOSE-WAIT { tcp 9 } */ 1216 Gauge tcpCurrEstab; 1217 /* total # of segments recv'd { tcp 10 } */ 1218 Counter tcpInSegs; 1219 /* total # of segments sent { tcp 11 } */ 1220 Counter tcpOutSegs; 1221 /* total # of segments retransmitted { tcp 12 } */ 1222 Counter tcpRetransSegs; 1223 /* {tcp 13} */ 1224 int tcpConnTableSize; /* Size of tcpConnEntry_t */ 1225 /* in ip {tcp 14} */ 1226 /* # of segments sent with RST flag { tcp 15 } */ 1227 Counter tcpOutRsts; 1228 /* In addition to MIB-II */ 1229 /* Sender */ 1230 /* total # of data segments sent */ 1231 Counter tcpOutDataSegs; 1232 /* total # of bytes in data segments sent */ 1233 Counter tcpOutDataBytes; 1234 /* total # of bytes in segments retransmitted */ 1235 Counter tcpRetransBytes; 1236 /* total # of acks sent */ 1237 Counter tcpOutAck; 1238 /* total # of delayed acks sent */ 1239 Counter tcpOutAckDelayed; 1240 /* total # of segments sent with the urg flag on */ 1241 Counter tcpOutUrg; 1242 /* total # of window updates sent */ 1243 Counter tcpOutWinUpdate; 1244 /* total # of zero window probes sent */ 1245 Counter tcpOutWinProbe; 1246 /* total # of control segments sent (syn, fin, rst) */ 1247 Counter tcpOutControl; 1248 /* total # of segments sent due to "fast retransmit" */ 1249 Counter tcpOutFastRetrans; 1250 /* Receiver */ 1251 /* total # of ack segments received */ 1252 Counter tcpInAckSegs; 1253 /* total # of bytes acked */ 1254 Counter tcpInAckBytes; 1255 /* total # of duplicate acks */ 1256 Counter tcpInDupAck; 1257 /* total # of acks acking unsent data */ 1258 Counter tcpInAckUnsent; 1259 /* total # of data segments received in order */ 1260 Counter tcpInDataInorderSegs; 1261 /* total # of data bytes received in order */ 1262 Counter tcpInDataInorderBytes; 1263 /* total # of data segments received out of order */ 1264 Counter tcpInDataUnorderSegs; 1265 /* total # of data bytes received out of order */ 1266 Counter tcpInDataUnorderBytes; 1267 /* total # of complete duplicate data segments received */ 1268 Counter tcpInDataDupSegs; 1269 /* total # of bytes in the complete duplicate data segments received */ 1270 Counter tcpInDataDupBytes; 1271 /* total # of partial duplicate data segments received */ 1272 Counter tcpInDataPartDupSegs; 1273 /* total # of bytes in the partial duplicate data segments received */ 1274 Counter tcpInDataPartDupBytes; 1275 /* total # of data segments received past the window */ 1276 Counter tcpInDataPastWinSegs; 1277 /* total # of data bytes received part the window */ 1278 Counter tcpInDataPastWinBytes; 1279 /* total # of zero window probes received */ 1280 Counter tcpInWinProbe; 1281 /* total # of window updates received */ 1282 Counter tcpInWinUpdate; 1283 /* total # of data segments received after the connection has closed */ 1284 Counter tcpInClosed; 1285 /* Others */ 1286 /* total # of failed attempts to update the rtt estimate */ 1287 Counter tcpRttNoUpdate; 1288 /* total # of successful attempts to update the rtt estimate */ 1289 Counter tcpRttUpdate; 1290 /* total # of retransmit timeouts */ 1291 Counter tcpTimRetrans; 1292 /* total # of retransmit timeouts dropping the connection */ 1293 Counter tcpTimRetransDrop; 1294 /* total # of keepalive timeouts */ 1295 Counter tcpTimKeepalive; 1296 /* total # of keepalive timeouts sending a probe */ 1297 Counter tcpTimKeepaliveProbe; 1298 /* total # of keepalive timeouts dropping the connection */ 1299 Counter tcpTimKeepaliveDrop; 1300 /* total # of connections refused due to backlog full on listen */ 1301 Counter tcpListenDrop; 1302 /* total # of connections refused due to half-open queue (q0) full */ 1303 Counter tcpListenDropQ0; 1304 /* total # of connections dropped from a full half-open queue (q0) */ 1305 Counter tcpHalfOpenDrop; 1306 /* total # of retransmitted segments by SACK retransmission */ 1307 Counter tcpOutSackRetransSegs; 1308 1309 int tcp6ConnTableSize; /* Size of tcp6ConnEntry_t */ 1310 1311 /* 1312 * fields from RFC 4022 1313 */ 1314 1315 /* total # of segments recv'd { tcp 17 } */ 1316 Counter64 tcpHCInSegs; 1317 /* total # of segments sent { tcp 18 } */ 1318 Counter64 tcpHCOutSegs; 1319 } mib2_tcp_t; 1320 #define MIB_FIRST_NEW_ELM_mib2_tcp_t tcpHCInSegs 1321 1322 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1323 #pragma pack() 1324 #endif 1325 1326 /* 1327 * The TCP/IPv4 connection table {tcp 13} contains information about this 1328 * entity's existing TCP connections over IPv4. 1329 */ 1330 /* For tcpConnState and tcp6ConnState */ 1331 #define MIB2_TCP_closed 1 1332 #define MIB2_TCP_listen 2 1333 #define MIB2_TCP_synSent 3 1334 #define MIB2_TCP_synReceived 4 1335 #define MIB2_TCP_established 5 1336 #define MIB2_TCP_finWait1 6 1337 #define MIB2_TCP_finWait2 7 1338 #define MIB2_TCP_closeWait 8 1339 #define MIB2_TCP_lastAck 9 1340 #define MIB2_TCP_closing 10 1341 #define MIB2_TCP_timeWait 11 1342 #define MIB2_TCP_deleteTCB 12 /* only writeable value */ 1343 1344 /* Pack data to make struct size the same for 32- and 64-bits */ 1345 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1346 #pragma pack(4) 1347 #endif 1348 typedef struct mib2_tcpConnEntry { 1349 /* state of tcp connection { tcpConnEntry 1} RW */ 1350 int tcpConnState; 1351 /* local ip addr for this connection { tcpConnEntry 2 } */ 1352 IpAddress tcpConnLocalAddress; 1353 /* local port for this connection { tcpConnEntry 3 } */ 1354 int tcpConnLocalPort; /* In host byte order */ 1355 /* remote ip addr for this connection { tcpConnEntry 4 } */ 1356 IpAddress tcpConnRemAddress; 1357 /* remote port for this connection { tcpConnEntry 5 } */ 1358 int tcpConnRemPort; /* In host byte order */ 1359 struct tcpConnEntryInfo_s { 1360 Counter64 ce_in_data_inorder_bytes; 1361 Counter64 ce_in_data_inorder_segs; 1362 Counter64 ce_in_data_unorder_bytes; 1363 Counter64 ce_in_data_unorder_segs; 1364 Counter64 ce_in_zwnd_probes; 1365 1366 Counter64 ce_out_data_bytes; 1367 Counter64 ce_out_data_segs; 1368 Counter64 ce_out_retrans_bytes; 1369 Counter64 ce_out_retrans_segs; 1370 Counter64 ce_out_zwnd_probes; 1371 Counter64 ce_rtt_sum; 1372 1373 /* seq # of next segment to send */ 1374 Gauge ce_snxt; 1375 /* seq # of of last segment unacknowledged */ 1376 Gauge ce_suna; 1377 /* current send window size */ 1378 Gauge ce_swnd; 1379 /* current congestion window size */ 1380 Gauge ce_cwnd; 1381 /* seq # of next expected segment */ 1382 Gauge ce_rnxt; 1383 /* seq # of last ack'd segment */ 1384 Gauge ce_rack; 1385 /* # of unsent bytes in the xmit queue */ 1386 Gauge ce_unsent; 1387 /* current receive window size */ 1388 Gauge ce_rwnd; 1389 /* round-trip time smoothed average (us) */ 1390 Gauge ce_rtt_sa; 1391 /* current rto (retransmit timeout) */ 1392 Gauge ce_rto; 1393 /* round-trip time count */ 1394 Gauge ce_rtt_cnt; 1395 /* current max segment size */ 1396 Gauge ce_mss; 1397 /* actual internal state */ 1398 int ce_state; 1399 } tcpConnEntryInfo; 1400 1401 /* pid of the processes that created this connection */ 1402 uint32_t tcpConnCreationProcess; 1403 /* system uptime when the connection was created */ 1404 uint64_t tcpConnCreationTime; 1405 } mib2_tcpConnEntry_t; 1406 #define MIB_FIRST_NEW_ELM_mib2_tcpConnEntry_t tcpConnCreationProcess 1407 1408 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1409 #pragma pack() 1410 #endif 1411 1412 1413 /* 1414 * The TCP/IPv6 connection table {tcp 14} contains information about this 1415 * entity's existing TCP connections over IPv6. 1416 */ 1417 1418 /* Pack data to make struct size the same for 32- and 64-bits */ 1419 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1420 #pragma pack(4) 1421 #endif 1422 typedef struct mib2_tcp6ConnEntry { 1423 /* local ip addr for this connection { ipv6TcpConnEntry 1 } */ 1424 Ip6Address tcp6ConnLocalAddress; 1425 /* local port for this connection { ipv6TcpConnEntry 2 } */ 1426 int tcp6ConnLocalPort; 1427 /* remote ip addr for this connection { ipv6TcpConnEntry 3 } */ 1428 Ip6Address tcp6ConnRemAddress; 1429 /* remote port for this connection { ipv6TcpConnEntry 4 } */ 1430 int tcp6ConnRemPort; 1431 /* interface index or zero { ipv6TcpConnEntry 5 } */ 1432 DeviceIndex tcp6ConnIfIndex; 1433 /* state of tcp6 connection { ipv6TcpConnEntry 6 } RW */ 1434 int tcp6ConnState; 1435 struct tcpConnEntryInfo_s tcp6ConnEntryInfo; 1436 1437 /* pid of the processes that created this connection */ 1438 uint32_t tcp6ConnCreationProcess; 1439 /* system uptime when the connection was created */ 1440 uint64_t tcp6ConnCreationTime; 1441 } mib2_tcp6ConnEntry_t; 1442 #define MIB_FIRST_NEW_ELM_mib2_tcp6ConnEntry_t tcp6ConnCreationProcess 1443 1444 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1445 #pragma pack() 1446 #endif 1447 1448 /* 1449 * the UDP group 1450 */ 1451 #define MIB2_UDP_ENTRY 5 /* udpEntry */ 1452 #define MIB2_UDP6_ENTRY 6 /* udp6Entry */ 1453 1454 /* Old name retained for compatibility */ 1455 #define MIB2_UDP_5 MIB2_UDP_ENTRY 1456 1457 /* Pack data to make struct size the same for 32- and 64-bits */ 1458 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1459 #pragma pack(4) 1460 #endif 1461 typedef struct mib2_udp { 1462 /* total # of UDP datagrams sent upstream { udp 1 } */ 1463 Counter udpInDatagrams; 1464 /* in ip { udp 2 } */ 1465 /* # of recv'd dg's not deliverable (other) { udp 3 } */ 1466 Counter udpInErrors; 1467 /* total # of dg's sent { udp 4 } */ 1468 Counter udpOutDatagrams; 1469 /* { udp 5 } */ 1470 int udpEntrySize; /* Size of udpEntry_t */ 1471 int udp6EntrySize; /* Size of udp6Entry_t */ 1472 Counter udpOutErrors; 1473 1474 /* 1475 * fields from RFC 4113 1476 */ 1477 1478 /* total # of UDP datagrams sent upstream { udp 8 } */ 1479 Counter64 udpHCInDatagrams; 1480 /* total # of dg's sent { udp 9 } */ 1481 Counter64 udpHCOutDatagrams; 1482 } mib2_udp_t; 1483 #define MIB_FIRST_NEW_ELM_mib2_udp_t udpHCInDatagrams 1484 1485 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1486 #pragma pack() 1487 #endif 1488 1489 /* 1490 * The UDP listener table contains information about this entity's UDP 1491 * end-points on which a local application is currently accepting datagrams. 1492 */ 1493 1494 /* For both IPv4 and IPv6 ue_state: */ 1495 #define MIB2_UDP_unbound 1 1496 #define MIB2_UDP_idle 2 1497 #define MIB2_UDP_connected 3 1498 #define MIB2_UDP_unknown 4 1499 1500 /* Pack data to make struct size the same for 32- and 64-bits */ 1501 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1502 #pragma pack(4) 1503 #endif 1504 typedef struct mib2_udpEntry { 1505 /* local ip addr of listener { udpEntry 1 } */ 1506 IpAddress udpLocalAddress; 1507 /* local port of listener { udpEntry 2 } */ 1508 int udpLocalPort; /* In host byte order */ 1509 struct udpEntryInfo_s { 1510 int ue_state; 1511 IpAddress ue_RemoteAddress; 1512 int ue_RemotePort; /* In host byte order */ 1513 } udpEntryInfo; 1514 1515 /* 1516 * RFC 4113 1517 */ 1518 1519 /* Unique id for this 4-tuple { udpEndpointEntry 7 } */ 1520 uint32_t udpInstance; 1521 /* pid of the processes that created this endpoint */ 1522 uint32_t udpCreationProcess; 1523 /* system uptime when the endpoint was created */ 1524 uint64_t udpCreationTime; 1525 } mib2_udpEntry_t; 1526 #define MIB_FIRST_NEW_ELM_mib2_udpEntry_t udpInstance 1527 1528 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1529 #pragma pack() 1530 #endif 1531 1532 /* 1533 * The UDP (for IPv6) listener table contains information about this 1534 * entity's UDP end-points on which a local application is 1535 * currently accepting datagrams. 1536 */ 1537 1538 /* Pack data to make struct size the same for 32- and 64-bits */ 1539 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1540 #pragma pack(4) 1541 #endif 1542 typedef struct mib2_udp6Entry { 1543 /* local ip addr of listener { ipv6UdpEntry 1 } */ 1544 Ip6Address udp6LocalAddress; 1545 /* local port of listener { ipv6UdpEntry 2 } */ 1546 int udp6LocalPort; /* In host byte order */ 1547 /* interface index or zero { ipv6UdpEntry 3 } */ 1548 DeviceIndex udp6IfIndex; 1549 struct udp6EntryInfo_s { 1550 int ue_state; 1551 Ip6Address ue_RemoteAddress; 1552 int ue_RemotePort; /* In host byte order */ 1553 } udp6EntryInfo; 1554 1555 /* 1556 * RFC 4113 1557 */ 1558 1559 /* Unique id for this 4-tuple { udpEndpointEntry 7 } */ 1560 uint32_t udp6Instance; 1561 /* pid of the processes that created this endpoint */ 1562 uint32_t udp6CreationProcess; 1563 /* system uptime when the endpoint was created */ 1564 uint64_t udp6CreationTime; 1565 } mib2_udp6Entry_t; 1566 #define MIB_FIRST_NEW_ELM_mib2_udp6Entry_t udp6Instance 1567 1568 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1569 #pragma pack() 1570 #endif 1571 1572 /* 1573 * the RAWIP group 1574 */ 1575 typedef struct mib2_rawip { 1576 /* total # of RAWIP datagrams sent upstream */ 1577 Counter rawipInDatagrams; 1578 /* # of RAWIP packets with bad IPV6_CHECKSUM checksums */ 1579 Counter rawipInCksumErrs; 1580 /* # of recv'd dg's not deliverable (other) */ 1581 Counter rawipInErrors; 1582 /* total # of dg's sent */ 1583 Counter rawipOutDatagrams; 1584 /* total # of dg's not sent (e.g. no memory) */ 1585 Counter rawipOutErrors; 1586 } mib2_rawip_t; 1587 1588 /* DVMRP group */ 1589 #define EXPER_DVMRP_VIF 1 1590 #define EXPER_DVMRP_MRT 2 1591 1592 1593 /* 1594 * The SCTP group 1595 */ 1596 #define MIB2_SCTP_CONN 15 1597 #define MIB2_SCTP_CONN_LOCAL 16 1598 #define MIB2_SCTP_CONN_REMOTE 17 1599 1600 #define MIB2_SCTP_closed 1 1601 #define MIB2_SCTP_cookieWait 2 1602 #define MIB2_SCTP_cookieEchoed 3 1603 #define MIB2_SCTP_established 4 1604 #define MIB2_SCTP_shutdownPending 5 1605 #define MIB2_SCTP_shutdownSent 6 1606 #define MIB2_SCTP_shutdownReceived 7 1607 #define MIB2_SCTP_shutdownAckSent 8 1608 #define MIB2_SCTP_deleteTCB 9 1609 #define MIB2_SCTP_listen 10 /* Not in the MIB */ 1610 1611 #define MIB2_SCTP_ACTIVE 1 1612 #define MIB2_SCTP_INACTIVE 2 1613 1614 #define MIB2_SCTP_ADDR_V4 1 1615 #define MIB2_SCTP_ADDR_V6 2 1616 1617 #define MIB2_SCTP_RTOALGO_OTHER 1 1618 #define MIB2_SCTP_RTOALGO_VANJ 2 1619 1620 typedef struct mib2_sctpConnEntry { 1621 /* connection identifier { sctpAssocEntry 1 } */ 1622 uint32_t sctpAssocId; 1623 /* remote hostname (not used) { sctpAssocEntry 2 } */ 1624 Octet_t sctpAssocRemHostName; 1625 /* local port number { sctpAssocEntry 3 } */ 1626 uint32_t sctpAssocLocalPort; 1627 /* remote port number { sctpAssocEntry 4 } */ 1628 uint32_t sctpAssocRemPort; 1629 /* type of primary remote addr { sctpAssocEntry 5 } */ 1630 int sctpAssocRemPrimAddrType; 1631 /* primary remote address { sctpAssocEntry 6 } */ 1632 Ip6Address sctpAssocRemPrimAddr; 1633 /* local address */ 1634 Ip6Address sctpAssocLocPrimAddr; 1635 /* current heartbeat interval { sctpAssocEntry 7 } */ 1636 uint32_t sctpAssocHeartBeatInterval; 1637 /* state of this association { sctpAssocEntry 8 } */ 1638 int sctpAssocState; 1639 /* # of inbound streams { sctpAssocEntry 9 } */ 1640 uint32_t sctpAssocInStreams; 1641 /* # of outbound streams { sctpAssocEntry 10 } */ 1642 uint32_t sctpAssocOutStreams; 1643 /* max # of data retans { sctpAssocEntry 11 } */ 1644 uint32_t sctpAssocMaxRetr; 1645 /* sysId for assoc owner { sctpAssocEntry 12 } */ 1646 uint32_t sctpAssocPrimProcess; 1647 /* # of rxmit timeouts during hanshake */ 1648 Counter32 sctpAssocT1expired; /* { sctpAssocEntry 13 } */ 1649 /* # of rxmit timeouts during shutdown */ 1650 Counter32 sctpAssocT2expired; /* { sctpAssocEntry 14 } */ 1651 /* # of rxmit timeouts during data transfer */ 1652 Counter32 sctpAssocRtxChunks; /* { sctpAssocEntry 15 } */ 1653 /* assoc start-up time { sctpAssocEntry 16 } */ 1654 uint32_t sctpAssocStartTime; 1655 struct sctpConnEntryInfo_s { 1656 /* amount of data in send Q */ 1657 Gauge ce_sendq; 1658 /* amount of data in recv Q */ 1659 Gauge ce_recvq; 1660 /* currect send window size */ 1661 Gauge ce_swnd; 1662 /* currenct receive window size */ 1663 Gauge ce_rwnd; 1664 /* current max segment size */ 1665 Gauge ce_mss; 1666 } sctpConnEntryInfo; 1667 } mib2_sctpConnEntry_t; 1668 1669 typedef struct mib2_sctpConnLocalAddrEntry { 1670 /* connection identifier */ 1671 uint32_t sctpAssocId; 1672 /* type of local addr { sctpAssocLocalEntry 1 } */ 1673 int sctpAssocLocalAddrType; 1674 /* local address { sctpAssocLocalEntry 2 } */ 1675 Ip6Address sctpAssocLocalAddr; 1676 } mib2_sctpConnLocalEntry_t; 1677 1678 typedef struct mib2_sctpConnRemoteAddrEntry { 1679 /* connection identier */ 1680 uint32_t sctpAssocId; 1681 /* remote addr type { sctpAssocRemEntry 1 } */ 1682 int sctpAssocRemAddrType; 1683 /* remote address { sctpAssocRemEntry 2 } */ 1684 Ip6Address sctpAssocRemAddr; 1685 /* is the address active { sctpAssocRemEntry 3 } */ 1686 int sctpAssocRemAddrActive; 1687 /* whether hearbeat is active { sctpAssocRemEntry 4 } */ 1688 int sctpAssocRemAddrHBActive; 1689 /* current RTO { sctpAssocRemEntry 5 } */ 1690 uint32_t sctpAssocRemAddrRTO; 1691 /* max # of rexmits before becoming inactive */ 1692 uint32_t sctpAssocRemAddrMaxPathRtx; /* {sctpAssocRemEntry 6} */ 1693 /* # of rexmits to this dest { sctpAssocRemEntry 7 } */ 1694 uint32_t sctpAssocRemAddrRtx; 1695 } mib2_sctpConnRemoteEntry_t; 1696 1697 1698 1699 /* Pack data in mib2_sctp to make struct size the same for 32- and 64-bits */ 1700 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1701 #pragma pack(4) 1702 #endif 1703 1704 typedef struct mib2_sctp { 1705 /* algorithm used to determine rto { sctpParams 1 } */ 1706 int sctpRtoAlgorithm; 1707 /* min RTO in msecs { sctpParams 2 } */ 1708 uint32_t sctpRtoMin; 1709 /* max RTO in msecs { sctpParams 3 } */ 1710 uint32_t sctpRtoMax; 1711 /* initial RTO in msecs { sctpParams 4 } */ 1712 uint32_t sctpRtoInitial; 1713 /* max # of assocs { sctpParams 5 } */ 1714 int32_t sctpMaxAssocs; 1715 /* cookie lifetime in msecs { sctpParams 6 } */ 1716 uint32_t sctpValCookieLife; 1717 /* max # of retrans in startup { sctpParams 7 } */ 1718 uint32_t sctpMaxInitRetr; 1719 /* # of conns ESTABLISHED, SHUTDOWN-RECEIVED or SHUTDOWN-PENDING */ 1720 Counter32 sctpCurrEstab; /* { sctpStats 1 } */ 1721 /* # of active opens { sctpStats 2 } */ 1722 Counter32 sctpActiveEstab; 1723 /* # of passive opens { sctpStats 3 } */ 1724 Counter32 sctpPassiveEstab; 1725 /* # of aborted conns { sctpStats 4 } */ 1726 Counter32 sctpAborted; 1727 /* # of graceful shutdowns { sctpStats 5 } */ 1728 Counter32 sctpShutdowns; 1729 /* # of OOB packets { sctpStats 6 } */ 1730 Counter32 sctpOutOfBlue; 1731 /* # of packets discarded due to cksum { sctpStats 7 } */ 1732 Counter32 sctpChecksumError; 1733 /* # of control chunks sent { sctpStats 8 } */ 1734 Counter64 sctpOutCtrlChunks; 1735 /* # of ordered data chunks sent { sctpStats 9 } */ 1736 Counter64 sctpOutOrderChunks; 1737 /* # of unordered data chunks sent { sctpStats 10 } */ 1738 Counter64 sctpOutUnorderChunks; 1739 /* # of retransmitted data chunks */ 1740 Counter64 sctpRetransChunks; 1741 /* # of SACK chunks sent */ 1742 Counter sctpOutAck; 1743 /* # of delayed ACK timeouts */ 1744 Counter sctpOutAckDelayed; 1745 /* # of SACK chunks sent to update window */ 1746 Counter sctpOutWinUpdate; 1747 /* # of fast retransmits */ 1748 Counter sctpOutFastRetrans; 1749 /* # of window probes sent */ 1750 Counter sctpOutWinProbe; 1751 /* # of control chunks received { sctpStats 11 } */ 1752 Counter64 sctpInCtrlChunks; 1753 /* # of ordered data chunks rcvd { sctpStats 12 } */ 1754 Counter64 sctpInOrderChunks; 1755 /* # of unord data chunks rcvd { sctpStats 13 } */ 1756 Counter64 sctpInUnorderChunks; 1757 /* # of received SACK chunks */ 1758 Counter sctpInAck; 1759 /* # of received SACK chunks with duplicate TSN */ 1760 Counter sctpInDupAck; 1761 /* # of SACK chunks acking unsent data */ 1762 Counter sctpInAckUnsent; 1763 /* # of Fragmented User Messages { sctpStats 14 } */ 1764 Counter64 sctpFragUsrMsgs; 1765 /* # of Reassembled User Messages { sctpStats 15 } */ 1766 Counter64 sctpReasmUsrMsgs; 1767 /* # of Sent SCTP Packets { sctpStats 16 } */ 1768 Counter64 sctpOutSCTPPkts; 1769 /* # of Received SCTP Packets { sctpStats 17 } */ 1770 Counter64 sctpInSCTPPkts; 1771 /* # of invalid cookies received */ 1772 Counter sctpInInvalidCookie; 1773 /* total # of retransmit timeouts */ 1774 Counter sctpTimRetrans; 1775 /* total # of retransmit timeouts dropping the connection */ 1776 Counter sctpTimRetransDrop; 1777 /* total # of heartbeat probes */ 1778 Counter sctpTimHeartBeatProbe; 1779 /* total # of heartbeat timeouts dropping the connection */ 1780 Counter sctpTimHeartBeatDrop; 1781 /* total # of conns refused due to backlog full on listen */ 1782 Counter sctpListenDrop; 1783 /* total # of pkts received after the association has closed */ 1784 Counter sctpInClosed; 1785 int sctpEntrySize; 1786 int sctpLocalEntrySize; 1787 int sctpRemoteEntrySize; 1788 } mib2_sctp_t; 1789 1790 #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 1791 #pragma pack() 1792 #endif 1793 1794 1795 #ifdef __cplusplus 1796 } 1797 #endif 1798 1799 #endif /* _INET_MIB2_H */