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