1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*
  23  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 #ifndef _INET_KSTATCOM_H
  28 #define _INET_KSTATCOM_H
  29 
  30 #pragma ident   "%Z%%M% %I%     %E% SMI"
  31 
  32 #ifdef  __cplusplus
  33 extern "C" {
  34 #endif
  35 
  36 
  37 #include <sys/kstat.h>
  38 
  39 
  40 
  41 typedef struct ip_named_kstat {
  42         kstat_named_t forwarding;
  43         kstat_named_t defaultTTL;
  44         kstat_named_t inReceives;
  45         kstat_named_t inHdrErrors;
  46         kstat_named_t inAddrErrors;
  47         kstat_named_t forwDatagrams;
  48         kstat_named_t inUnknownProtos;
  49         kstat_named_t inDiscards;
  50         kstat_named_t inDelivers;
  51         kstat_named_t outRequests;
  52         kstat_named_t outDiscards;
  53         kstat_named_t outNoRoutes;
  54         kstat_named_t reasmTimeout;
  55         kstat_named_t reasmReqds;
  56         kstat_named_t reasmOKs;
  57         kstat_named_t reasmFails;
  58         kstat_named_t fragOKs;
  59         kstat_named_t fragFails;
  60         kstat_named_t fragCreates;
  61         kstat_named_t addrEntrySize;
  62         kstat_named_t routeEntrySize;
  63         kstat_named_t netToMediaEntrySize;
  64         kstat_named_t routingDiscards;
  65         kstat_named_t inErrs;
  66         kstat_named_t noPorts;
  67         kstat_named_t inCksumErrs;
  68         kstat_named_t reasmDuplicates;
  69         kstat_named_t reasmPartDups;
  70         kstat_named_t forwProhibits;
  71         kstat_named_t udpInCksumErrs;
  72         kstat_named_t udpInOverflows;
  73         kstat_named_t rawipInOverflows;
  74         kstat_named_t ipsecInSucceeded;
  75         kstat_named_t ipsecInFailed;
  76         kstat_named_t memberEntrySize;
  77         kstat_named_t inIPv6;
  78         kstat_named_t outIPv6;
  79         kstat_named_t outSwitchIPv6;
  80 } ip_named_kstat_t;
  81 
  82 
  83 typedef struct ipv6IfStatsEntry_named_kstat {
  84         kstat_named_t ifIndex;
  85         kstat_named_t forwarding;
  86         kstat_named_t defaultHopLimit;
  87         kstat_named_t ifStatsEntrySize;
  88         kstat_named_t addrEntrySize;
  89         kstat_named_t routeEntrySize;
  90         kstat_named_t netToMediaEntrySize;
  91         kstat_named_t memberEntrySize;
  92         kstat_named_t inReceives;
  93         kstat_named_t inHdrErrors;
  94         kstat_named_t inTooBigErrors;
  95         kstat_named_t InUnknownProtos;
  96         kstat_named_t inTruncatedPkts;
  97         kstat_named_t inDisards;
  98         kstat_named_t inDelivers;
  99         kstat_named_t outForwDatagrams;
 100         kstat_named_t outRequests;
 101         kstat_named_t outDiscards;
 102         kstat_named_t outFragOKs;
 103         kstat_named_t outFragFails;
 104         kstat_named_t outFragCreates;
 105         kstat_named_t reasmReqds;
 106         kstat_named_t reasmOKs;
 107         kstat_named_t reasmFails;
 108         kstat_named_t inMcastPkts;
 109         kstat_named_t outMcastPkts;
 110         kstat_named_t outNoRoutes;
 111         kstat_named_t reasmDuplicates;
 112         kstat_named_t reasmPartDups;
 113         kstat_named_t forwProhibits;
 114         kstat_named_t inChksumerrs;
 115         kstat_named_t inOverflows;
 116 } ipv6IfStatsEntry_named_kstat_t;
 117 
 118 
 119 typedef struct ipAddrEntry_named_kstat {
 120         kstat_named_t addr;
 121         kstat_named_t ifIndex;
 122         kstat_named_t netMask;
 123         kstat_named_t bcastAddr;
 124         kstat_named_t reasmMaxSize;
 125         kstat_named_t mtu;
 126         kstat_named_t metric;
 127         kstat_named_t broadcast_addr;
 128         kstat_named_t pp_dst_addr;
 129         kstat_named_t flags;
 130         kstat_named_t ibcnt;
 131         kstat_named_t obcnt;
 132         kstat_named_t focnt;
 133         kstat_named_t subnet;
 134         kstat_named_t subnet_len;
 135         kstat_named_t src_addr;
 136 } ipAddrEntry_named_kstat_t;
 137 
 138 
 139 typedef struct ipv6AddrEntry_named_kstat {
 140         kstat_named_t ifIndex;
 141         kstat_named_t address;
 142         kstat_named_t pfxLength;
 143         kstat_named_t type;
 144         kstat_named_t anycastFlag;
 145         kstat_named_t status;
 146         kstat_named_t mtu;
 147         kstat_named_t metric;
 148         kstat_named_t pp_dst_addr;
 149         kstat_named_t flags;
 150         kstat_named_t ibcnt;
 151         kstat_named_t obcnt;
 152         kstat_named_t focnt;
 153         kstat_named_t subnet;
 154         kstat_named_t subnet_len;
 155         kstat_named_t src_addr;
 156 } ipv6AddrEntry_named_kstat_t;
 157 
 158 
 159 typedef struct ipRouteEntry_named_kstat {
 160         kstat_named_t dest;
 161         kstat_named_t ifIndex;
 162         kstat_named_t metric1;
 163         kstat_named_t metric2;
 164         kstat_named_t metric3;
 165         kstat_named_t metric4;
 166         kstat_named_t nextHop;
 167         kstat_named_t type;
 168         kstat_named_t proto;
 169         kstat_named_t age;
 170         kstat_named_t mask;
 171         kstat_named_t metric5;
 172         kstat_named_t max_frag;
 173         kstat_named_t rtt;
 174         kstat_named_t ref;
 175         kstat_named_t frag_flag;
 176         kstat_named_t src_addr;
 177         kstat_named_t ire_type;
 178         kstat_named_t obppkt;
 179         kstat_named_t ibpkt;
 180         kstat_named_t flags;
 181         kstat_named_t in_ill;
 182         kstat_named_t in_src_addr;
 183 } ipRouteEntry_named_kstat_t;
 184 
 185 
 186 typedef struct ipv6RouteEntry_named_kstat {
 187         kstat_named_t dest;
 188         kstat_named_t pfxLength;
 189         kstat_named_t index;
 190         kstat_named_t ifIndex;
 191         kstat_named_t nextHop;
 192         kstat_named_t type;
 193         kstat_named_t protocol;
 194         kstat_named_t policy;
 195         kstat_named_t age;
 196         kstat_named_t nextHopRDI;
 197         kstat_named_t metric;
 198         kstat_named_t weight;
 199         kstat_named_t max_frag;
 200         kstat_named_t rtt;
 201         kstat_named_t ref;
 202         kstat_named_t frag_flag;
 203         kstat_named_t src_addr;
 204         kstat_named_t ire_type;
 205         kstat_named_t obpkt;
 206         kstat_named_t ibpkt;
 207         kstat_named_t flags;
 208 } ipv6RouteEntry_named_kstat_t;
 209 
 210 
 211 typedef struct ipNextToMediaEntry_named_kstat {
 212         kstat_named_t ifIndex;
 213         kstat_named_t physAddress;
 214         kstat_named_t netAddress;
 215         kstat_named_t type;
 216         kstat_named_t mask;
 217         kstat_named_t flags;
 218 } ipNextToMediaEntry_named_kstat_t;
 219 
 220 typedef struct ipv6NextToMediaEntry_named_kstat {
 221         kstat_named_t ifIndex;
 222         kstat_named_t netAddress;
 223         kstat_named_t physAddress;
 224         kstat_named_t type;
 225         kstat_named_t state;
 226         kstat_named_t lastUpdated;
 227 } ipv6NextToMediaEntry_named_kstat_t;
 228 
 229 typedef struct icmp_named_kstat {
 230         kstat_named_t inMsgs;
 231         kstat_named_t inErrors;
 232         kstat_named_t inDestUnreachs;
 233         kstat_named_t inTimeExcds;
 234         kstat_named_t inParmProbs;
 235         kstat_named_t inSrcQuenchs;
 236         kstat_named_t inRedirects;
 237         kstat_named_t inEchos;
 238         kstat_named_t inEchoReps;
 239         kstat_named_t inTimestamps;
 240         kstat_named_t inTimestampReps;
 241         kstat_named_t inAddrMasks;
 242         kstat_named_t inAddrMaskReps;
 243         kstat_named_t outMsgs;
 244         kstat_named_t outErrors;
 245         kstat_named_t outDestUnreachs;
 246         kstat_named_t outTimeExcds;
 247         kstat_named_t outParmProbs;
 248         kstat_named_t outSrcQuenchs;
 249         kstat_named_t outRedirects;
 250         kstat_named_t outEchos;
 251         kstat_named_t outEchoReps;
 252         kstat_named_t outTimestamps;
 253         kstat_named_t outTimestampReps;
 254         kstat_named_t outAddrMasks;
 255         kstat_named_t outAddrMaskReps;
 256         kstat_named_t inCksumErrs;
 257         kstat_named_t inUnknowns;
 258         kstat_named_t inFragNeeded;
 259         kstat_named_t outFragNeeded;
 260         kstat_named_t outDrops;
 261         kstat_named_t inOverflows;
 262         kstat_named_t inBadRedirects;
 263 } icmp_named_kstat_t;
 264 
 265 
 266 typedef struct ipv6IfIcmpEntry_named_kstat {
 267         kstat_named_t ifIndex;
 268         kstat_named_t entrySize;
 269         kstat_named_t inMsgs;
 270         kstat_named_t inErrors;
 271         kstat_named_t inDestUnreachs;
 272         kstat_named_t inAdminProhibs;
 273         kstat_named_t inTimeExcds;
 274         kstat_named_t inParmProblems;
 275         kstat_named_t inPktTooBigs;
 276         kstat_named_t inEchos;
 277         kstat_named_t inEchoReplies;
 278         kstat_named_t inRouterSolicits;
 279         kstat_named_t inRouterAdvertisements;
 280         kstat_named_t inNeighborSolicits;
 281         kstat_named_t inNeighborAdvertisements;
 282         kstat_named_t inRedirects;
 283         kstat_named_t inGroupMembQueries;
 284         kstat_named_t inGroupMembResponses;
 285         kstat_named_t inGroupMembReductions;
 286         kstat_named_t outMsgs;
 287         kstat_named_t outErrors;
 288         kstat_named_t outDestUnreachs;
 289         kstat_named_t outAdminProhibs;
 290         kstat_named_t outTimeExcds;
 291         kstat_named_t outParmProblems;
 292         kstat_named_t outPktTooBigs;
 293         kstat_named_t outEchos;
 294         kstat_named_t outEchoReplies;
 295         kstat_named_t outRouterSolicits;
 296         kstat_named_t outRouterAdvertisements;
 297         kstat_named_t outNeighborSolicits;
 298         kstat_named_t outNeighborAdvertisements;
 299         kstat_named_t outRedirects;
 300         kstat_named_t outGroupMembQueries;
 301         kstat_named_t outGroupMembResponses;
 302         kstat_named_t outGroupMembReductions;
 303         kstat_named_t inOverflows;
 304         kstat_named_t badHopLimit;
 305         kstat_named_t inBadNeighborAdvertisemets;
 306         kstat_named_t inBadNeighborSolicitations;
 307         kstat_named_t inBadRedirects;
 308         kstat_named_t inGroupMembBadQueries;
 309         kstat_named_t inGroupMembBadReports;
 310         kstat_named_t inGroupMembOurReports;
 311 } ipv6IfIcmpEntry_named_kstat_t;
 312 
 313 
 314 typedef struct sctp_named_kstat {
 315         kstat_named_t   sctpRtoAlgorithm;
 316         kstat_named_t   sctpRtoMin;
 317         kstat_named_t   sctpRtoMax;
 318         kstat_named_t   sctpRtoInitial;
 319         kstat_named_t   sctpMaxAssocs;
 320         kstat_named_t   sctpValCookieLife;
 321         kstat_named_t   sctpMaxInitRetr;
 322         kstat_named_t   sctpCurrEstab;
 323         kstat_named_t   sctpActiveEstab;
 324         kstat_named_t   sctpPassiveEstab;
 325         kstat_named_t   sctpAborted;
 326         kstat_named_t   sctpShutdowns;
 327         kstat_named_t   sctpOutOfBlue;
 328         kstat_named_t   sctpChecksumError;
 329         kstat_named_t   sctpOutCtrlChunks;
 330         kstat_named_t   sctpOutOrderChunks;
 331         kstat_named_t   sctpOutUnorderChunks;
 332         kstat_named_t   sctpRetransChunks;
 333         kstat_named_t   sctpOutAck;
 334         kstat_named_t   sctpOutAckDelayed;
 335         kstat_named_t   sctpOutWinUpdate;
 336         kstat_named_t   sctpOutFastRetrans;
 337         kstat_named_t   sctpOutWinProbe;
 338         kstat_named_t   sctpInCtrlChunks;
 339         kstat_named_t   sctpInOrderChunks;
 340         kstat_named_t   sctpInUnorderChunks;
 341         kstat_named_t   sctpInAck;
 342         kstat_named_t   sctpInDupAck;
 343         kstat_named_t   sctpInAckUnsent;
 344         kstat_named_t   sctpFragUsrMsgs;
 345         kstat_named_t   sctpReasmUsrMsgs;
 346         kstat_named_t   sctpOutSCTPPkts;
 347         kstat_named_t   sctpInSCTPPkts;
 348         kstat_named_t   sctpInInvalidCookie;
 349         kstat_named_t   sctpTimRetrans;
 350         kstat_named_t   sctpTimRetransDrop;
 351         kstat_named_t   sctpTimHeartBeatProbe;
 352         kstat_named_t   sctpTimHeartBeatDrop;
 353         kstat_named_t   sctpListenDrop;
 354         kstat_named_t   sctpInClosed;
 355 } sctp_named_kstat_t;
 356 
 357 
 358 typedef struct tcp_named_kstat {
 359         kstat_named_t rtoAlgorithm;
 360         kstat_named_t rtoMin;
 361         kstat_named_t rtoMax;
 362         kstat_named_t maxConn;
 363         kstat_named_t activeOpens;
 364         kstat_named_t passiveOpens;
 365         kstat_named_t attemptFails;
 366         kstat_named_t estabResets;
 367         kstat_named_t currEstab;
 368         kstat_named_t inSegs;
 369         kstat_named_t outSegs;
 370         kstat_named_t retransSegs;
 371         kstat_named_t connTableSize;
 372         kstat_named_t outRsts;
 373         kstat_named_t outDataSegs;
 374         kstat_named_t outDataBytes;
 375         kstat_named_t retransBytes;
 376         kstat_named_t outAck;
 377         kstat_named_t outAckDelayed;
 378         kstat_named_t outUrg;
 379         kstat_named_t outWinUpdate;
 380         kstat_named_t outWinProbe;
 381         kstat_named_t outControl;
 382         kstat_named_t outFastRetrans;
 383         kstat_named_t inAckSegs;
 384         kstat_named_t inAckBytes;
 385         kstat_named_t inDupAck;
 386         kstat_named_t inAckUnsent;
 387         kstat_named_t inDataInorderSegs;
 388         kstat_named_t inDataInorderBytes;
 389         kstat_named_t inDataUnorderSegs;
 390         kstat_named_t inDataUnorderBytes;
 391         kstat_named_t inDataDupSegs;
 392         kstat_named_t inDataDupBytes;
 393         kstat_named_t inDataPartDupSegs;
 394         kstat_named_t inDataPartDupBytes;
 395         kstat_named_t inDataPastWinSegs;
 396         kstat_named_t inDataPastWinBytes;
 397         kstat_named_t inWinProbe;
 398         kstat_named_t inWinUpdate;
 399         kstat_named_t inClosed;
 400         kstat_named_t rttNoUpdate;
 401         kstat_named_t rttUpdate;
 402         kstat_named_t timRetrans;
 403         kstat_named_t timRetransDrop;
 404         kstat_named_t timKeepalive;
 405         kstat_named_t timKeepaliveProbe;
 406         kstat_named_t timKeepaliveDrop;
 407         kstat_named_t listenDrop;
 408         kstat_named_t listenDropQ0;
 409         kstat_named_t halfOpenDrop;
 410         kstat_named_t outSackRetransSegs;
 411         kstat_named_t connTableSize6;
 412 } tcp_named_kstat_t;
 413 
 414 typedef struct tcpConnEntry_named_kstat { /* IPv4 and IPv6 unified */
 415         kstat_named_t state;
 416         kstat_named_t localAddress;
 417         kstat_named_t localPort;
 418         kstat_named_t remAddress;
 419         kstat_named_t remPort;
 420         kstat_named_t snxt;
 421         kstat_named_t suna;
 422         kstat_named_t swnd;
 423         kstat_named_t rnxt;
 424         kstat_named_t rack;
 425         kstat_named_t rwnd;
 426         kstat_named_t rto;
 427         kstat_named_t mss;
 428         kstat_named_t internalState;
 429         kstat_named_t ifIndex;
 430         kstat_named_t version;
 431         kstat_named_t pid;
 432 } tcpConnEntry_named_kstat_t;
 433 
 434 typedef struct udp_named_kstat {
 435         kstat_named_t inDatagrams;
 436         kstat_named_t inErrors;
 437         kstat_named_t outDatagrams;
 438         kstat_named_t entrySize;
 439         kstat_named_t entry6Size;
 440         kstat_named_t outErrors;
 441 } udp_named_kstat_t;
 442 
 443 typedef struct udpEntry_named_kstat {
 444         kstat_named_t localAddress;
 445         kstat_named_t localPort;
 446         kstat_named_t state;
 447         kstat_named_t remoteAddress;
 448         kstat_named_t remotePort;
 449 } udpEntry_named_kstat_t;
 450 
 451 
 452 typedef struct udp6Entry_named_kstat {
 453         kstat_named_t localAddress;
 454         kstat_named_t localPort;
 455         kstat_named_t ifIndex;
 456         kstat_named_t state;
 457         kstat_named_t remoteAddress;
 458         kstat_named_t remotePort;
 459 } udp6Entry_named_kstat_t;
 460 
 461 
 462 typedef struct rawip_named_kstat {
 463         kstat_named_t inDatagrams;
 464         kstat_named_t inCksumErrs;
 465         kstat_named_t inErrors;
 466         kstat_named_t outDatagrams;
 467         kstat_named_t outErrors;
 468 } rawip_named_kstat_t;
 469 
 470 typedef struct dccp_named_kstat {
 471         kstat_named_t activeOpens;
 472         kstat_named_t passiveOpens;
 473         kstat_named_t inSegs;
 474         kstat_named_t outSegs;
 475 } dccp_named_kstat_t;
 476 
 477 #define NUM_OF_FIELDS(S)        (sizeof (S) / sizeof (kstat_named_t))
 478 
 479 #ifdef  __cplusplus
 480 }
 481 #endif
 482 
 483 #endif  /* _INET_KSTATCOM_H */