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