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