Annotation of sbbs/include/microsoft/psdk/iprtrmib.h, revision 1.1

1.1     ! root        1: /*++
        !             2: 
        !             3: Copyright (c) Microsoft Corporation. All rights reserved.
        !             4: 
        !             5: Module Name:
        !             6: 
        !             7:     iprtrmib.h
        !             8: 
        !             9: Abstract:
        !            10:     This file contains:
        !            11:         o Definitions of the MIB_XX structures passed to and from the IP Router Manager
        !            12:             to query and set MIB variables handled by the IP Router Manager
        !            13:         o The #defines for the MIB variables IDs  handled by the IP Router Manager
        !            14:             and made accessible by the MprAdminMIBXXX APIs
        !            15:         o The Routing PID of the IP Router Manager (as mentioned in ipinfoid.h)
        !            16: 
        !            17: --*/
        !            18: 
        !            19: #ifndef __ROUTING_IPRTRMIB_H__
        !            20: #define __ROUTING_IPRTRMIB_H__
        !            21: 
        !            22: #if _MSC_VER > 1000
        !            23: #pragma once
        !            24: #endif
        !            25: 
        !            26: #if _MSC_VER >= 1200
        !            27: #pragma warning(push)
        !            28: #endif
        !            29: #pragma warning(disable:4200)
        !            30: #pragma warning(disable:4201)
        !            31: #pragma warning(disable:4214)
        !            32: 
        !            33: //////////////////////////////////////////////////////////////////////////////
        !            34: //                                                                          //
        !            35: // Included to get the value of MAX_INTERFACE_NAME_LEN                      //
        !            36: //                                                                          //
        !            37: //////////////////////////////////////////////////////////////////////////////
        !            38: 
        !            39: #include <mprapi.h>
        !            40: 
        !            41: //////////////////////////////////////////////////////////////////////////////
        !            42: //                                                                          //
        !            43: // Included to get the necessary constants                                  //
        !            44: //                                                                          //
        !            45: //////////////////////////////////////////////////////////////////////////////
        !            46: 
        !            47: #include <ipifcons.h>
        !            48: 
        !            49: //////////////////////////////////////////////////////////////////////////////
        !            50: //                                                                          //
        !            51: // This is the Id for IP Router Manager.  The Router Manager handles        //
        !            52: // MIB-II, Forwarding MIB and some enterprise specific information.         //
        !            53: // Calls made with any other ID are passed on to the corresponding protocol //
        !            54: // For example, an MprAdminMIBXXX call with a protocol ID of PID_IP and    //
        !            55: // a routing Id of 0xD will be sent to the IP Router Manager and then       //
        !            56: // forwarded to OSPF                                                        //
        !            57: // This lives in the same number space as the protocol Ids of RIP, OSPF     //
        !            58: // etc, so any change made to it should be done keeping this in mind        //
        !            59: //                                                                          //
        !            60: //////////////////////////////////////////////////////////////////////////////
        !            61: 
        !            62: 
        !            63: #define IPRTRMGR_PID 10000
        !            64: 
        !            65: #ifndef ANY_SIZE
        !            66: 
        !            67: #define ANY_SIZE 1
        !            68: 
        !            69: #endif
        !            70: 
        !            71: #define TCPIP_OWNING_MODULE_SIZE 16
        !            72: 
        !            73: //////////////////////////////////////////////////////////////////////////////
        !            74: //                                                                          //
        !            75: // The following #defines are the Ids of the MIB variables made accessible  //
        !            76: // to the user via MprAdminMIBXXX Apis.  It will be noticed that these are  //
        !            77: // not the same as RFC 1213, since the MprAdminMIBXXX APIs work on rows and //
        !            78: // groups instead of scalar variables                                       //
        !            79: //                                                                          //
        !            80: //////////////////////////////////////////////////////////////////////////////
        !            81: 
        !            82: 
        !            83: #define IF_NUMBER           0
        !            84: #define IF_TABLE            (IF_NUMBER          + 1)
        !            85: #define IF_ROW              (IF_TABLE           + 1)
        !            86: #define IP_STATS            (IF_ROW             + 1)
        !            87: #define IP_ADDRTABLE        (IP_STATS           + 1)
        !            88: #define IP_ADDRROW          (IP_ADDRTABLE       + 1)
        !            89: #define IP_FORWARDNUMBER    (IP_ADDRROW         + 1)
        !            90: #define IP_FORWARDTABLE     (IP_FORWARDNUMBER   + 1)
        !            91: #define IP_FORWARDROW       (IP_FORWARDTABLE    + 1)
        !            92: #define IP_NETTABLE         (IP_FORWARDROW      + 1)
        !            93: #define IP_NETROW           (IP_NETTABLE        + 1)
        !            94: #define ICMP_STATS          (IP_NETROW          + 1)
        !            95: #define TCP_STATS           (ICMP_STATS         + 1)
        !            96: #define TCP_TABLE           (TCP_STATS          + 1)
        !            97: #define TCP_ROW             (TCP_TABLE          + 1)
        !            98: #define UDP_STATS           (TCP_ROW            + 1)
        !            99: #define UDP_TABLE           (UDP_STATS          + 1)
        !           100: #define UDP_ROW             (UDP_TABLE          + 1)
        !           101: #define MCAST_MFE           (UDP_ROW            + 1)
        !           102: #define MCAST_MFE_STATS     (MCAST_MFE          + 1)
        !           103: #define BEST_IF             (MCAST_MFE_STATS    + 1)
        !           104: #define BEST_ROUTE          (BEST_IF            + 1)
        !           105: #define PROXY_ARP           (BEST_ROUTE         + 1)
        !           106: #define MCAST_IF_ENTRY      (PROXY_ARP          + 1)
        !           107: #define MCAST_GLOBAL        (MCAST_IF_ENTRY     + 1)
        !           108: #define IF_STATUS           (MCAST_GLOBAL       + 1)
        !           109: #define MCAST_BOUNDARY      (IF_STATUS          + 1)
        !           110: #define MCAST_SCOPE         (MCAST_BOUNDARY     + 1)
        !           111: #define DEST_MATCHING       (MCAST_SCOPE        + 1)
        !           112: #define DEST_LONGER         (DEST_MATCHING      + 1)
        !           113: #define DEST_SHORTER        (DEST_LONGER        + 1)
        !           114: #define ROUTE_MATCHING      (DEST_SHORTER       + 1)
        !           115: #define ROUTE_LONGER        (ROUTE_MATCHING     + 1)
        !           116: #define ROUTE_SHORTER       (ROUTE_LONGER       + 1)
        !           117: #define ROUTE_STATE         (ROUTE_SHORTER      + 1)
        !           118: #define MCAST_MFE_STATS_EX  (ROUTE_STATE        + 1)
        !           119: #define IP6_STATS           (MCAST_MFE_STATS_EX + 1)
        !           120: #define UDP6_STATS          (IP6_STATS          + 1)
        !           121: #define TCP6_STATS          (UDP6_STATS         + 1)
        !           122: 
        !           123: #define NUMBER_OF_EXPORTED_VARIABLES    (TCP6_STATS + 1)
        !           124: 
        !           125: 
        !           126: //////////////////////////////////////////////////////////////////////////////
        !           127: //                                                                          //
        !           128: // MIB_OPAQUE_QUERY is the structure filled in by the user to identify a    //
        !           129: // MIB variable                                                             //
        !           130: //                                                                          //
        !           131: //  dwVarId     ID of MIB Variable (One of the Ids #defined above)          //
        !           132: //  dwVarIndex  Variable sized array containing the indices needed to       //
        !           133: //              identify a variable. NOTE: Unlike SNMP we dont require that //
        !           134: //              a scalar variable be indexed by 0                           //
        !           135: //                                                                          //
        !           136: //////////////////////////////////////////////////////////////////////////////
        !           137: 
        !           138: typedef struct _MIB_OPAQUE_QUERY
        !           139: {
        !           140:     DWORD  dwVarId;
        !           141:     DWORD  rgdwVarIndex[ANY_SIZE];
        !           142: }MIB_OPAQUE_QUERY, *PMIB_OPAQUE_QUERY;
        !           143: 
        !           144: //////////////////////////////////////////////////////////////////////////////
        !           145: //                                                                          //
        !           146: // The following are the structures which are filled in and returned to the //
        !           147: // user when a query is made, OR  are filled in BY THE USER when a set is   //
        !           148: // done                                                                     //
        !           149: //                                                                          //
        !           150: //////////////////////////////////////////////////////////////////////////////
        !           151: 
        !           152: typedef struct _MIB_IFNUMBER
        !           153: {
        !           154:     DWORD    dwValue;
        !           155: } MIB_IFNUMBER, *PMIB_IFNUMBER;
        !           156: 
        !           157: 
        !           158: #define MAXLEN_IFDESCR 256
        !           159: #define MAXLEN_PHYSADDR 8
        !           160: 
        !           161: typedef struct _MIB_IFROW
        !           162: {
        !           163:     WCHAR   wszName[MAX_INTERFACE_NAME_LEN];
        !           164:     DWORD    dwIndex;
        !           165:     DWORD    dwType;
        !           166:     DWORD    dwMtu;
        !           167:     DWORD    dwSpeed;
        !           168:     DWORD    dwPhysAddrLen;
        !           169:     BYTE    bPhysAddr[MAXLEN_PHYSADDR];
        !           170:     DWORD    dwAdminStatus;
        !           171:     DWORD    dwOperStatus;
        !           172:     DWORD    dwLastChange;
        !           173:     DWORD    dwInOctets;
        !           174:     DWORD    dwInUcastPkts;
        !           175:     DWORD    dwInNUcastPkts;
        !           176:     DWORD    dwInDiscards;
        !           177:     DWORD    dwInErrors;
        !           178:     DWORD    dwInUnknownProtos;
        !           179:     DWORD    dwOutOctets;
        !           180:     DWORD    dwOutUcastPkts;
        !           181:     DWORD    dwOutNUcastPkts;
        !           182:     DWORD    dwOutDiscards;
        !           183:     DWORD    dwOutErrors;
        !           184:     DWORD    dwOutQLen;
        !           185:     DWORD    dwDescrLen;
        !           186:     BYTE    bDescr[MAXLEN_IFDESCR];
        !           187: } MIB_IFROW,*PMIB_IFROW;
        !           188: 
        !           189: typedef struct _MIB_IFTABLE
        !           190: {
        !           191:     DWORD     dwNumEntries;
        !           192:     MIB_IFROW table[ANY_SIZE];
        !           193: } MIB_IFTABLE, *PMIB_IFTABLE;
        !           194: 
        !           195: #define SIZEOF_IFTABLE(X) (FIELD_OFFSET(MIB_IFTABLE,table[0]) + ((X) * sizeof(MIB_IFROW)) + ALIGN_SIZE)
        !           196: 
        !           197: typedef struct _MIBICMPSTATS
        !           198: {
        !           199:     DWORD        dwMsgs;
        !           200:     DWORD        dwErrors;
        !           201:     DWORD        dwDestUnreachs;
        !           202:     DWORD        dwTimeExcds;
        !           203:     DWORD        dwParmProbs;
        !           204:     DWORD        dwSrcQuenchs;
        !           205:     DWORD        dwRedirects;
        !           206:     DWORD        dwEchos;
        !           207:     DWORD        dwEchoReps;
        !           208:     DWORD        dwTimestamps;
        !           209:     DWORD        dwTimestampReps;
        !           210:     DWORD        dwAddrMasks;
        !           211:     DWORD        dwAddrMaskReps;
        !           212: } MIBICMPSTATS, *PMIBICMPSTATS;
        !           213: 
        !           214: typedef    struct _MIBICMPINFO
        !           215: {
        !           216:     MIBICMPSTATS    icmpInStats;
        !           217:     MIBICMPSTATS    icmpOutStats;
        !           218: } MIBICMPINFO;
        !           219: 
        !           220: typedef struct _MIB_ICMP
        !           221: {
        !           222:     MIBICMPINFO stats;
        !           223: } MIB_ICMP,*PMIB_ICMP;
        !           224: 
        !           225: //
        !           226: // ICMPv6 Type Values from RFC 2292.
        !           227: //
        !           228: typedef enum {
        !           229:     ICMP6_DST_UNREACH          =   1,
        !           230:     ICMP6_PACKET_TOO_BIG       =   2,
        !           231:     ICMP6_TIME_EXCEEDED        =   3,
        !           232:     ICMP6_PARAM_PROB           =   4,
        !           233:     ICMP6_ECHO_REQUEST         = 128,
        !           234:     ICMP6_ECHO_REPLY           = 129,
        !           235:     ICMP6_MEMBERSHIP_QUERY     = 130,
        !           236:     ICMP6_MEMBERSHIP_REPORT    = 131,
        !           237:     ICMP6_MEMBERSHIP_REDUCTION = 132,
        !           238:     ND_ROUTER_SOLICIT          = 133,
        !           239:     ND_ROUTER_ADVERT           = 134,
        !           240:     ND_NEIGHBOR_SOLICIT        = 135,
        !           241:     ND_NEIGHBOR_ADVERT         = 136,
        !           242:     ND_REDIRECT                = 137,
        !           243: } ICMP6_TYPE, *PICMP6_TYPE;
        !           244: 
        !           245: //
        !           246: // There are no RFC-specified defines for ICMPv4 message types, so we try to
        !           247: // use the ICMP6 values from RFC 2292 modified to be prefixed with ICMP4.
        !           248: //
        !           249: typedef enum {
        !           250:     ICMP4_ECHO_REPLY        =  0, // Echo Reply
        !           251:     ICMP4_DST_UNREACH       =  3, // Destination Unreachable
        !           252:     ICMP4_SOURCE_QUENCH     =  4, // Source Quench
        !           253:     ICMP4_REDIRECT          =  5, // Redirect
        !           254:     ICMP4_ECHO_REQUEST      =  8, // Echo Request
        !           255:     ICMP4_ROUTER_ADVERT     =  9, // Router Advertisement
        !           256:     ICMP4_ROUTER_SOLICIT    = 10, // Router Solicitation
        !           257:     ICMP4_TIME_EXCEEDED     = 11, // Time Exceeded
        !           258:     ICMP4_PARAM_PROB        = 12, // Parameter Problem
        !           259:     ICMP4_TIMESTAMP_REQUEST = 13, // Timestamp Request
        !           260:     ICMP4_TIMESTAMP_REPLY   = 14, // Timestamp Reply
        !           261:     ICMP4_MASK_REQUEST      = 17, // Address Mask Request
        !           262:     ICMP4_MASK_REPLY        = 18, // Address Mask Reply
        !           263: } ICMP4_TYPE, *PICMP4_TYPE;
        !           264: 
        !           265: typedef struct _MIBICMPSTATS_EX
        !           266: {
        !           267:     DWORD       dwMsgs;
        !           268:     DWORD       dwErrors;
        !           269:     DWORD       rgdwTypeCount[256];
        !           270: } MIBICMPSTATS_EX, *PMIBICMPSTATS_EX;
        !           271: 
        !           272: typedef struct _MIB_ICMP_EX
        !           273: {
        !           274:     MIBICMPSTATS_EX icmpInStats;
        !           275:     MIBICMPSTATS_EX icmpOutStats;
        !           276: } MIB_ICMP_EX,*PMIB_ICMP_EX;
        !           277: 
        !           278: typedef struct _MIB_UDPSTATS
        !           279: {
        !           280:     DWORD       dwInDatagrams;
        !           281:     DWORD       dwNoPorts;
        !           282:     DWORD       dwInErrors;
        !           283:     DWORD       dwOutDatagrams;
        !           284:     DWORD       dwNumAddrs;
        !           285: } MIB_UDPSTATS,*PMIB_UDPSTATS;
        !           286: 
        !           287: typedef struct _MIB_UDPROW
        !           288: {
        !           289:     DWORD       dwLocalAddr;
        !           290:     DWORD       dwLocalPort;
        !           291: } MIB_UDPROW, *PMIB_UDPROW;
        !           292: 
        !           293: typedef MIB_UDPROW MIB_UDPROW_BASIC, *PMIB_UDPROW_BASIC;
        !           294: 
        !           295: typedef struct _MIB_UDPROW_OWNER_PID
        !           296: {
        !           297:     DWORD           dwLocalAddr;
        !           298:     DWORD           dwLocalPort;
        !           299:     DWORD           dwOwningPid;
        !           300: } MIB_UDPROW_OWNER_PID, *PMIB_UDPROW_OWNER_PID;
        !           301: 
        !           302: typedef struct _MIB_UDPROW_OWNER_MODULE
        !           303: {
        !           304:     DWORD           dwLocalAddr;
        !           305:     DWORD           dwLocalPort;
        !           306:     DWORD           dwOwningPid;
        !           307:     LARGE_INTEGER   liCreateTimestamp;
        !           308:     union {
        !           309:         struct {
        !           310:             DWORD   SpecificPortBind : 1;
        !           311:         };
        !           312:         DWORD       dwFlags;
        !           313:     };
        !           314:     ULONGLONG       OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
        !           315: } MIB_UDPROW_OWNER_MODULE, *PMIB_UDPROW_OWNER_MODULE;
        !           316: 
        !           317: typedef struct _MIB_UDP6ROW_OWNER_PID
        !           318: {
        !           319:     UCHAR           ucLocalAddr[16];
        !           320:     DWORD           dwLocalScopeId;
        !           321:     DWORD           dwLocalPort;
        !           322:     DWORD           dwOwningPid;
        !           323: } MIB_UDP6ROW_OWNER_PID, *PMIB_UDP6ROW_OWNER_PID;
        !           324: 
        !           325: typedef struct _MIB_UDP6ROW_OWNER_MODULE
        !           326: {
        !           327:     UCHAR           ucLocalAddr[16];
        !           328:     DWORD           dwLocalScopeId;
        !           329:     DWORD           dwLocalPort;
        !           330:     DWORD           dwOwningPid;
        !           331:     LARGE_INTEGER   liCreateTimestamp;
        !           332:     union {
        !           333:         struct {
        !           334:             DWORD   SpecificPortBind : 1;
        !           335:         };
        !           336:         DWORD       dwFlags;
        !           337:     };
        !           338:     ULONGLONG       OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
        !           339: } MIB_UDP6ROW_OWNER_MODULE, *PMIB_UDP6ROW_OWNER_MODULE;
        !           340: 
        !           341: typedef struct _MIB_UDPTABLE
        !           342: {
        !           343:     DWORD       dwNumEntries;
        !           344:     MIB_UDPROW  table[ANY_SIZE];
        !           345: } MIB_UDPTABLE, *PMIB_UDPTABLE;
        !           346: 
        !           347: typedef MIB_UDPTABLE MIB_UDPTABLE_BASIC, *PMIB_UDPTABLE_BASIC;
        !           348: 
        !           349: #define SIZEOF_UDPTABLE(X) (FIELD_OFFSET(MIB_UDPTABLE, table[0]) + ((X) * sizeof(MIB_UDPROW)) + ALIGN_SIZE)
        !           350: 
        !           351: #define SIZEOF_UDPTABLE_BASIC(X) SIZEOF_UDPTABLE(X)
        !           352: 
        !           353: typedef struct _MIB_UDPTABLE_OWNER_PID
        !           354: {
        !           355:     DWORD                   dwNumEntries;
        !           356:     MIB_UDPROW_OWNER_PID    table[ANY_SIZE];
        !           357: } MIB_UDPTABLE_OWNER_PID, *PMIB_UDPTABLE_OWNER_PID;
        !           358: 
        !           359: #define SIZEOF_UDPTABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_UDPTABLE_OWNER_PID, table[0]) + ((X) * sizeof(MIB_UDPROW_OWNER_PID)) + ALIGN_SIZE)
        !           360: 
        !           361: typedef struct _MIB_UDPTABLE_OWNER_MODULE
        !           362: {
        !           363:     DWORD                   dwNumEntries;
        !           364:     MIB_UDPROW_OWNER_MODULE table[ANY_SIZE];
        !           365: } MIB_UDPTABLE_OWNER_MODULE, *PMIB_UDPTABLE_OWNER_MODULE;
        !           366: 
        !           367: #define SIZEOF_UDPTABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_UDPTABLE_OWNER_MODULE, table[0]) + ((X) * sizeof(MIB_UDPROW_OWNER_MODULE)) + ALIGN_SIZE)
        !           368: 
        !           369: typedef struct _MIB_UDP6TABLE_OWNER_PID
        !           370: {
        !           371:     DWORD                   dwNumEntries;
        !           372:     MIB_UDP6ROW_OWNER_PID   table[ANY_SIZE];
        !           373: } MIB_UDP6TABLE_OWNER_PID, *PMIB_UDP6TABLE_OWNER_PID;
        !           374: 
        !           375: #define SIZEOF_UDP6TABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_PID, table[0]) + ((X) * sizeof(MIB_UDP6ROW_OWNER_PID)) + ALIGN_SIZE)
        !           376: 
        !           377: typedef struct _MIB_UDP6TABLE_OWNER_MODULE
        !           378: {
        !           379:     DWORD                    dwNumEntries;
        !           380:     MIB_UDP6ROW_OWNER_MODULE table[ANY_SIZE];
        !           381: } MIB_UDP6TABLE_OWNER_MODULE, *PMIB_UDP6TABLE_OWNER_MODULE;
        !           382: 
        !           383: #define SIZEOF_UDP6TABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_MODULE, table[0]) + ((X) * sizeof(MIB_UDP6ROW_OWNER_MODULE)) + ALIGN_SIZE)
        !           384: 
        !           385: typedef struct _MIB_TCPSTATS
        !           386: {
        !           387:     DWORD       dwRtoAlgorithm;
        !           388:     DWORD       dwRtoMin;
        !           389:     DWORD       dwRtoMax;
        !           390:     DWORD       dwMaxConn;
        !           391:     DWORD       dwActiveOpens;
        !           392:     DWORD       dwPassiveOpens;
        !           393:     DWORD       dwAttemptFails;
        !           394:     DWORD       dwEstabResets;
        !           395:     DWORD       dwCurrEstab;
        !           396:     DWORD       dwInSegs;
        !           397:     DWORD       dwOutSegs;
        !           398:     DWORD       dwRetransSegs;
        !           399:     DWORD       dwInErrs;
        !           400:     DWORD       dwOutRsts;
        !           401:     DWORD       dwNumConns;
        !           402: } MIB_TCPSTATS, *PMIB_TCPSTATS;
        !           403: 
        !           404: #define MIB_TCP_RTO_OTHER       1
        !           405: #define MIB_TCP_RTO_CONSTANT    2
        !           406: #define MIB_TCP_RTO_RSRE        3
        !           407: #define MIB_TCP_RTO_VANJ        4
        !           408: 
        !           409: #define MIB_TCP_MAXCONN_DYNAMIC (DWORD)-1
        !           410: 
        !           411: typedef struct _MIB_TCPROW
        !           412: {
        !           413:     DWORD       dwState;
        !           414:     DWORD       dwLocalAddr;
        !           415:     DWORD       dwLocalPort;
        !           416:     DWORD       dwRemoteAddr;
        !           417:     DWORD       dwRemotePort;
        !           418: } MIB_TCPROW, *PMIB_TCPROW;
        !           419: 
        !           420: typedef MIB_TCPROW MIB_TCPROW_BASIC, *PMIB_TCPROW_BASIC;
        !           421: 
        !           422: typedef struct _MIB_TCPROW_OWNER_PID
        !           423: {
        !           424:     DWORD       dwState;
        !           425:     DWORD       dwLocalAddr;
        !           426:     DWORD       dwLocalPort;
        !           427:     DWORD       dwRemoteAddr;
        !           428:     DWORD       dwRemotePort;
        !           429:     DWORD       dwOwningPid;
        !           430: } MIB_TCPROW_OWNER_PID, *PMIB_TCPROW_OWNER_PID;
        !           431: 
        !           432: 
        !           433: typedef struct _MIB_TCPROW_OWNER_MODULE
        !           434: {
        !           435:     DWORD           dwState;
        !           436:     DWORD           dwLocalAddr;
        !           437:     DWORD           dwLocalPort;
        !           438:     DWORD           dwRemoteAddr;
        !           439:     DWORD           dwRemotePort;
        !           440:     DWORD           dwOwningPid;
        !           441:     LARGE_INTEGER   liCreateTimestamp;
        !           442:     ULONGLONG       OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
        !           443: } MIB_TCPROW_OWNER_MODULE, *PMIB_TCPROW_OWNER_MODULE;
        !           444: 
        !           445: typedef struct _MIB_TCP6ROW_OWNER_PID
        !           446: {
        !           447:     UCHAR           ucLocalAddr[16];
        !           448:     DWORD           dwLocalScopeId;
        !           449:     DWORD           dwLocalPort;
        !           450:     UCHAR           ucRemoteAddr[16];
        !           451:     DWORD           dwRemoteScopeId;
        !           452:     DWORD           dwRemotePort;
        !           453:     DWORD           dwState;
        !           454:     DWORD           dwOwningPid;
        !           455: } MIB_TCP6ROW_OWNER_PID, *PMIB_TCP6ROW_OWNER_PID;
        !           456: 
        !           457: typedef struct _MIB_TCP6ROW_OWNER_MODULE
        !           458: {
        !           459:     UCHAR           ucLocalAddr[16];
        !           460:     DWORD           dwLocalScopeId;
        !           461:     DWORD           dwLocalPort;
        !           462:     UCHAR           ucRemoteAddr[16];
        !           463:     DWORD           dwRemoteScopeId;
        !           464:     DWORD           dwRemotePort;
        !           465:     DWORD           dwState;
        !           466:     DWORD           dwOwningPid;
        !           467:     LARGE_INTEGER   liCreateTimestamp;
        !           468:     ULONGLONG       OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
        !           469: } MIB_TCP6ROW_OWNER_MODULE, *PMIB_TCP6ROW_OWNER_MODULE;
        !           470: 
        !           471:     
        !           472: #define MIB_TCP_STATE_CLOSED            1
        !           473: #define MIB_TCP_STATE_LISTEN            2
        !           474: #define MIB_TCP_STATE_SYN_SENT          3
        !           475: #define MIB_TCP_STATE_SYN_RCVD          4
        !           476: #define MIB_TCP_STATE_ESTAB             5
        !           477: #define MIB_TCP_STATE_FIN_WAIT1         6
        !           478: #define MIB_TCP_STATE_FIN_WAIT2         7
        !           479: #define MIB_TCP_STATE_CLOSE_WAIT        8
        !           480: #define MIB_TCP_STATE_CLOSING           9
        !           481: #define MIB_TCP_STATE_LAST_ACK         10
        !           482: #define MIB_TCP_STATE_TIME_WAIT        11
        !           483: #define MIB_TCP_STATE_DELETE_TCB       12
        !           484: 
        !           485: typedef struct _MIB_TCPTABLE
        !           486: {
        !           487:     DWORD      dwNumEntries;
        !           488:     MIB_TCPROW table[ANY_SIZE];
        !           489: } MIB_TCPTABLE, *PMIB_TCPTABLE;
        !           490: 
        !           491: typedef MIB_TCPTABLE MIB_TCPTABLE_BASIC, *PMIB_TCPTABLE_BASIC;
        !           492: 
        !           493: #define SIZEOF_TCPTABLE(X) (FIELD_OFFSET(MIB_TCPTABLE,table[0]) + ((X) * sizeof(MIB_TCPROW)) + ALIGN_SIZE)
        !           494: 
        !           495: #define SIZEOF_TCPTABLE_BASIC(X) SIZEOF_TCPTABLE(X)
        !           496: 
        !           497: typedef struct _MIB_TCPTABLE_OWNER_PID
        !           498: {
        !           499:     DWORD                dwNumEntries;
        !           500:     MIB_TCPROW_OWNER_PID table[ANY_SIZE];
        !           501: } MIB_TCPTABLE_OWNER_PID, *PMIB_TCPTABLE_OWNER_PID;
        !           502: 
        !           503: #define SIZEOF_TCPTABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_TCPTABLE_OWNER_PID, table[0]) + ((X) * sizeof(MIB_TCPROW_OWNER_PID)) + ALIGN_SIZE)
        !           504: 
        !           505: typedef struct _MIB_TCPTABLE_OWNER_MODULE
        !           506: {
        !           507:     DWORD                   dwNumEntries;
        !           508:     MIB_TCPROW_OWNER_MODULE table[ANY_SIZE];
        !           509: } MIB_TCPTABLE_OWNER_MODULE, *PMIB_TCPTABLE_OWNER_MODULE;
        !           510: 
        !           511: #define SIZEOF_TCPTABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_TCPTABLE_OWNER_MODULE, table[0]) + ((X) * sizeof(MIB_TCPROW_OWNER_MODULE)) + ALIGN_SIZE)
        !           512: 
        !           513: typedef struct _MIB_TCP6TABLE_OWNER_PID
        !           514: {
        !           515:     DWORD                   dwNumEntries;
        !           516:     MIB_TCP6ROW_OWNER_PID   table[ANY_SIZE];
        !           517: } MIB_TCP6TABLE_OWNER_PID, *PMIB_TCP6TABLE_OWNER_PID;
        !           518: 
        !           519: #define SIZEOF_TCP6TABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_TCP6TABLE_OWNER_PID, table[0]) + ((X) * sizeof(MIB_TCP6ROW_OWNER_PID)) + ALIGN_SIZE)
        !           520: 
        !           521: typedef struct _MIB_TCP6TABLE_OWNER_MODULE
        !           522: {
        !           523:     DWORD                       dwNumEntries;
        !           524:     MIB_TCP6ROW_OWNER_MODULE    table[ANY_SIZE];
        !           525: } MIB_TCP6TABLE_OWNER_MODULE, *PMIB_TCP6TABLE_OWNER_MODULE;
        !           526: 
        !           527: #define SIZEOF_TCP6TABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_TCP6TABLE_OWNER_MODULE, table[0]) + ((X) * sizeof(MIB_TCP6ROW_OWNER_PID)) + ALIGN_SIZE)
        !           528: 
        !           529: //
        !           530: // Flags that describe the health of TCPIP with respect to security/DOS.
        !           531: //
        !           532: #define MIB_SECURITY_TCP_SYN_ATTACK 0x00000001
        !           533: 
        !           534: #define MIB_USE_CURRENT_TTL         ((DWORD)-1)
        !           535: #define MIB_USE_CURRENT_FORWARDING  ((DWORD)-1)
        !           536: 
        !           537: typedef struct _MIB_IPSTATS
        !           538: {
        !           539:     DWORD        dwForwarding;
        !           540:     DWORD        dwDefaultTTL;
        !           541:     DWORD        dwInReceives;
        !           542:     DWORD        dwInHdrErrors;
        !           543:     DWORD        dwInAddrErrors;
        !           544:     DWORD        dwForwDatagrams;
        !           545:     DWORD        dwInUnknownProtos;
        !           546:     DWORD        dwInDiscards;
        !           547:     DWORD        dwInDelivers;
        !           548:     DWORD        dwOutRequests;
        !           549:     DWORD        dwRoutingDiscards;
        !           550:     DWORD        dwOutDiscards;
        !           551:     DWORD        dwOutNoRoutes;
        !           552:     DWORD        dwReasmTimeout;
        !           553:     DWORD        dwReasmReqds;
        !           554:     DWORD        dwReasmOks;
        !           555:     DWORD        dwReasmFails;
        !           556:     DWORD        dwFragOks;
        !           557:     DWORD        dwFragFails;
        !           558:     DWORD        dwFragCreates;
        !           559:     DWORD        dwNumIf;
        !           560:     DWORD        dwNumAddr;
        !           561:     DWORD        dwNumRoutes;
        !           562: } MIB_IPSTATS, *PMIB_IPSTATS;
        !           563: 
        !           564: #define    MIB_IP_FORWARDING               1
        !           565: #define    MIB_IP_NOT_FORWARDING           2
        !           566: 
        !           567: 
        !           568: // Note: These addr types have dependency on ipdef.h
        !           569: 
        !           570: #define MIB_IPADDR_PRIMARY      0x0001   // Primary ipaddr
        !           571: #define MIB_IPADDR_DYNAMIC      0x0004   // Dynamic ipaddr
        !           572: #define MIB_IPADDR_DISCONNECTED 0x0008   // Address is on disconnected interface
        !           573: #define MIB_IPADDR_DELETED      0x0040   // Address being deleted
        !           574: #define MIB_IPADDR_TRANSIENT    0x0080   // Transient address
        !           575: 
        !           576: 
        !           577: typedef struct _MIB_IPADDRROW
        !           578: {
        !           579:     DWORD        dwAddr;
        !           580:     DWORD        dwIndex;
        !           581:     DWORD        dwMask;
        !           582:     DWORD        dwBCastAddr;
        !           583:     DWORD        dwReasmSize;
        !           584:     unsigned short    unused1;
        !           585:     unsigned short    wType;
        !           586: } MIB_IPADDRROW, *PMIB_IPADDRROW;
        !           587: 
        !           588: typedef struct _MIB_IPADDRTABLE
        !           589: {
        !           590:     DWORD         dwNumEntries;
        !           591:     MIB_IPADDRROW table[ANY_SIZE];
        !           592: } MIB_IPADDRTABLE, *PMIB_IPADDRTABLE;
        !           593: 
        !           594: 
        !           595: #define SIZEOF_IPADDRTABLE(X) (FIELD_OFFSET(MIB_IPADDRTABLE,table[0]) + ((X) * sizeof(MIB_IPADDRROW)) + ALIGN_SIZE)
        !           596: 
        !           597: 
        !           598: typedef struct _MIB_IPFORWARDNUMBER
        !           599: {
        !           600:     DWORD      dwValue;
        !           601: }MIB_IPFORWARDNUMBER,*PMIB_IPFORWARDNUMBER;
        !           602: 
        !           603: typedef struct _MIB_IPFORWARDROW
        !           604: {
        !           605:     DWORD        dwForwardDest;
        !           606:     DWORD        dwForwardMask;
        !           607:     DWORD        dwForwardPolicy;
        !           608:     DWORD        dwForwardNextHop;
        !           609:     DWORD        dwForwardIfIndex;
        !           610:     DWORD        dwForwardType;
        !           611:     DWORD        dwForwardProto;
        !           612:     DWORD        dwForwardAge;
        !           613:     DWORD       dwForwardNextHopAS;
        !           614:     DWORD        dwForwardMetric1;
        !           615:     DWORD        dwForwardMetric2;
        !           616:     DWORD        dwForwardMetric3;
        !           617:     DWORD        dwForwardMetric4;
        !           618:     DWORD        dwForwardMetric5;
        !           619: }MIB_IPFORWARDROW, *PMIB_IPFORWARDROW;
        !           620: 
        !           621: #define    MIB_IPROUTE_TYPE_OTHER        1
        !           622: #define    MIB_IPROUTE_TYPE_INVALID    2
        !           623: #define    MIB_IPROUTE_TYPE_DIRECT        3
        !           624: #define    MIB_IPROUTE_TYPE_INDIRECT    4
        !           625: 
        !           626: #define    MIB_IPROUTE_METRIC_UNUSED    (DWORD)-1
        !           627: 
        !           628: //
        !           629: // THESE MUST MATCH the ids in routprot.h
        !           630: //
        !           631: 
        !           632: #define MIB_IPPROTO_OTHER                1
        !           633: #define MIB_IPPROTO_LOCAL                2
        !           634: #define MIB_IPPROTO_NETMGMT                3
        !           635: #define MIB_IPPROTO_ICMP                4
        !           636: #define MIB_IPPROTO_EGP                    5
        !           637: #define MIB_IPPROTO_GGP                    6
        !           638: #define MIB_IPPROTO_HELLO                7
        !           639: #define MIB_IPPROTO_RIP                    8
        !           640: #define MIB_IPPROTO_IS_IS                9
        !           641: #define MIB_IPPROTO_ES_IS                10
        !           642: #define MIB_IPPROTO_CISCO                11
        !           643: #define MIB_IPPROTO_BBN                    12
        !           644: #define MIB_IPPROTO_OSPF                13
        !           645: #define MIB_IPPROTO_BGP                    14
        !           646: 
        !           647: #define MIB_IPPROTO_NT_AUTOSTATIC       10002
        !           648: #define MIB_IPPROTO_NT_STATIC           10006
        !           649: #define MIB_IPPROTO_NT_STATIC_NON_DOD   10007
        !           650: 
        !           651: typedef struct _MIB_IPFORWARDTABLE
        !           652: {
        !           653:     DWORD               dwNumEntries;
        !           654:     MIB_IPFORWARDROW    table[ANY_SIZE];
        !           655: }MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE;
        !           656: 
        !           657: 
        !           658: 
        !           659: 
        !           660: #define SIZEOF_IPFORWARDTABLE(X) (FIELD_OFFSET(MIB_IPFORWARDTABLE,table[0]) + ((X) * sizeof(MIB_IPFORWARDROW)) + ALIGN_SIZE)
        !           661: 
        !           662: 
        !           663: typedef struct _MIB_IPNETROW
        !           664: {
        !           665:     DWORD        dwIndex;
        !           666:     DWORD        dwPhysAddrLen;
        !           667:     BYTE        bPhysAddr[MAXLEN_PHYSADDR];
        !           668:     DWORD        dwAddr;
        !           669:     DWORD        dwType;
        !           670: } MIB_IPNETROW, *PMIB_IPNETROW;
        !           671: 
        !           672: #define    MIB_IPNET_TYPE_OTHER        1
        !           673: #define    MIB_IPNET_TYPE_INVALID        2
        !           674: #define    MIB_IPNET_TYPE_DYNAMIC        3
        !           675: #define    MIB_IPNET_TYPE_STATIC        4
        !           676: 
        !           677: typedef struct _MIB_IPNETTABLE
        !           678: {
        !           679:     DWORD             dwNumEntries;
        !           680:     MIB_IPNETROW      table[ANY_SIZE];
        !           681: } MIB_IPNETTABLE, *PMIB_IPNETTABLE;
        !           682: 
        !           683: #define SIZEOF_IPNETTABLE(X) (FIELD_OFFSET(MIB_IPNETTABLE, table[0]) + ((X) * sizeof(MIB_IPNETROW)) + ALIGN_SIZE)
        !           684: 
        !           685: typedef struct _MIB_IPMCAST_OIF
        !           686: {
        !           687:     DWORD   dwOutIfIndex;
        !           688:     DWORD   dwNextHopAddr;
        !           689:     DWORD   dwReserved;
        !           690:     DWORD   dwReserved1;
        !           691: }MIB_IPMCAST_OIF, *PMIB_IPMCAST_OIF;
        !           692: 
        !           693: typedef struct _MIB_IPMCAST_MFE
        !           694: {
        !           695:     DWORD   dwGroup;
        !           696:     DWORD   dwSource;
        !           697:     DWORD   dwSrcMask;
        !           698:     DWORD   dwUpStrmNgbr;
        !           699:     DWORD   dwInIfIndex;
        !           700:     DWORD   dwInIfProtocol;
        !           701:     DWORD   dwRouteProtocol;
        !           702:     DWORD   dwRouteNetwork;
        !           703:     DWORD   dwRouteMask;
        !           704:     ULONG   ulUpTime;
        !           705:     ULONG   ulExpiryTime;
        !           706:     ULONG   ulTimeOut;
        !           707:     ULONG   ulNumOutIf;
        !           708:     DWORD   fFlags;
        !           709:     DWORD   dwReserved;
        !           710:     MIB_IPMCAST_OIF rgmioOutInfo[ANY_SIZE];
        !           711: }MIB_IPMCAST_MFE, *PMIB_IPMCAST_MFE;
        !           712: 
        !           713: typedef struct _MIB_MFE_TABLE
        !           714: {
        !           715:     DWORD           dwNumEntries;
        !           716:     MIB_IPMCAST_MFE table[ANY_SIZE];
        !           717: }MIB_MFE_TABLE, *PMIB_MFE_TABLE;
        !           718: 
        !           719: 
        !           720: #define SIZEOF_BASIC_MIB_MFE          \
        !           721:     (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE, rgmioOutInfo[0]))
        !           722: 
        !           723: #define SIZEOF_MIB_MFE(X)             \
        !           724:     (SIZEOF_BASIC_MIB_MFE + ((X) * sizeof(MIB_IPMCAST_OIF)))
        !           725: 
        !           726: 
        !           727: typedef struct _MIB_IPMCAST_OIF_STATS
        !           728: {
        !           729:     DWORD   dwOutIfIndex;
        !           730:     DWORD   dwNextHopAddr;
        !           731:     DWORD   dwDialContext;
        !           732:     ULONG   ulTtlTooLow;
        !           733:     ULONG   ulFragNeeded;
        !           734:     ULONG   ulOutPackets;
        !           735:     ULONG   ulOutDiscards;
        !           736: }MIB_IPMCAST_OIF_STATS, *PMIB_IPMCAST_OIF_STATS;
        !           737: 
        !           738: typedef struct _MIB_IPMCAST_MFE_STATS
        !           739: {
        !           740:     DWORD   dwGroup;
        !           741:     DWORD   dwSource;
        !           742:     DWORD   dwSrcMask;
        !           743:     DWORD   dwUpStrmNgbr;
        !           744:     DWORD   dwInIfIndex;
        !           745:     DWORD   dwInIfProtocol;
        !           746:     DWORD   dwRouteProtocol;
        !           747:     DWORD   dwRouteNetwork;
        !           748:     DWORD   dwRouteMask;
        !           749:     ULONG   ulUpTime;
        !           750:     ULONG   ulExpiryTime;
        !           751:     ULONG   ulNumOutIf;
        !           752:     ULONG   ulInPkts;
        !           753:     ULONG   ulInOctets;
        !           754:     ULONG   ulPktsDifferentIf;
        !           755:     ULONG   ulQueueOverflow;
        !           756: 
        !           757:     MIB_IPMCAST_OIF_STATS   rgmiosOutStats[ANY_SIZE];
        !           758: }MIB_IPMCAST_MFE_STATS, *PMIB_IPMCAST_MFE_STATS;
        !           759: 
        !           760: typedef struct _MIB_MFE_STATS_TABLE
        !           761: {
        !           762:     DWORD       dwNumEntries;
        !           763:     MIB_IPMCAST_MFE_STATS   table[ANY_SIZE];
        !           764: }MIB_MFE_STATS_TABLE, *PMIB_MFE_STATS_TABLE;
        !           765: 
        !           766: #define SIZEOF_BASIC_MIB_MFE_STATS    \
        !           767:     (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE_STATS, rgmiosOutStats[0]))
        !           768: 
        !           769: #define SIZEOF_MIB_MFE_STATS(X)       \
        !           770:     (SIZEOF_BASIC_MIB_MFE_STATS + ((X) * sizeof(MIB_IPMCAST_OIF_STATS)))
        !           771: 
        !           772: 
        !           773: typedef struct _MIB_IPMCAST_MFE_STATS_EX
        !           774: {
        !           775:     DWORD   dwGroup;
        !           776:     DWORD   dwSource;
        !           777:     DWORD   dwSrcMask;
        !           778:     DWORD   dwUpStrmNgbr;
        !           779:     DWORD   dwInIfIndex;
        !           780:     DWORD   dwInIfProtocol;
        !           781:     DWORD   dwRouteProtocol;
        !           782:     DWORD   dwRouteNetwork;
        !           783:     DWORD   dwRouteMask;
        !           784:     ULONG   ulUpTime;
        !           785:     ULONG   ulExpiryTime;
        !           786:     ULONG   ulNumOutIf;
        !           787:     ULONG   ulInPkts;
        !           788:     ULONG   ulInOctets;
        !           789:     ULONG   ulPktsDifferentIf;
        !           790:     ULONG   ulQueueOverflow;
        !           791:     ULONG   ulUninitMfe;
        !           792:     ULONG   ulNegativeMfe;
        !           793:     ULONG   ulInDiscards;
        !           794:     ULONG   ulInHdrErrors;
        !           795:     ULONG   ulTotalOutPackets;
        !           796: 
        !           797:     MIB_IPMCAST_OIF_STATS   rgmiosOutStats[ANY_SIZE];
        !           798: }MIB_IPMCAST_MFE_STATS_EX, *PMIB_IPMCAST_MFE_STATS_EX;
        !           799: 
        !           800: typedef struct _MIB_MFE_STATS_TABLE_EX
        !           801: {
        !           802:     DWORD       dwNumEntries;
        !           803:     MIB_IPMCAST_MFE_STATS_EX   table[ANY_SIZE];
        !           804: }MIB_MFE_STATS_TABLE_EX, *PMIB_MFE_STATS_TABLE_EX;
        !           805: 
        !           806: #define SIZEOF_BASIC_MIB_MFE_STATS_EX    \
        !           807:     (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE_STATS_EX, rgmiosOutStats[0]))
        !           808: 
        !           809: #define SIZEOF_MIB_MFE_STATS_EX(X)       \
        !           810:     (SIZEOF_BASIC_MIB_MFE_STATS_EX + ((X) * sizeof(MIB_IPMCAST_OIF_STATS)))
        !           811: 
        !           812: 
        !           813: typedef struct _MIB_IPMCAST_GLOBAL {
        !           814:     DWORD   dwEnable;
        !           815: }MIB_IPMCAST_GLOBAL, *PMIB_IPMCAST_GLOBAL;
        !           816: 
        !           817: typedef struct _MIB_IPMCAST_IF_ENTRY
        !           818: {
        !           819:     DWORD   dwIfIndex;
        !           820:     DWORD   dwTtl;
        !           821:     DWORD   dwProtocol;
        !           822:     DWORD   dwRateLimit;
        !           823:     ULONG   ulInMcastOctets;
        !           824:     ULONG   ulOutMcastOctets;
        !           825: }MIB_IPMCAST_IF_ENTRY, *PMIB_IPMCAST_IF_ENTRY;
        !           826: 
        !           827: typedef struct _MIB_IPMCAST_IF_TABLE
        !           828: {
        !           829:     DWORD       dwNumEntries;
        !           830:     MIB_IPMCAST_IF_ENTRY   table[ANY_SIZE];
        !           831: }MIB_IPMCAST_IF_TABLE, *PMIB_IPMCAST_IF_TABLE;
        !           832: 
        !           833: #define SIZEOF_MCAST_IF_TABLE(X) (FIELD_OFFSET(MIB_IPMCAST_IF_TABLE,table[0]) + ((X) * sizeof(MIB_IPMCAST_IF_ENTRY)) + ALIGN_SIZE)
        !           834: 
        !           835: typedef struct _MIB_IPMCAST_BOUNDARY
        !           836: {
        !           837:     DWORD   dwIfIndex;
        !           838:     DWORD   dwGroupAddress;
        !           839:     DWORD   dwGroupMask;
        !           840:     DWORD   dwStatus;
        !           841: }MIB_IPMCAST_BOUNDARY, *PMIB_IPMCAST_BOUNDARY;
        !           842: 
        !           843: typedef struct _MIB_IPMCAST_BOUNDARY_TABLE
        !           844: {
        !           845:     DWORD       dwNumEntries;
        !           846:     MIB_IPMCAST_BOUNDARY   table[ANY_SIZE];
        !           847: }MIB_IPMCAST_BOUNDARY_TABLE, *PMIB_IPMCAST_BOUNDARY_TABLE;
        !           848: 
        !           849: #define SIZEOF_BOUNDARY_TABLE(X) (FIELD_OFFSET(MIB_IPMCAST_BOUNDARY_TABLE,table[0]) + ((X) * sizeof(MIB_IPMCAST_BOUNDARY)) + ALIGN_SIZE)
        !           850: 
        !           851: typedef struct {
        !           852:     DWORD    dwGroupAddress;
        !           853:     DWORD    dwGroupMask;
        !           854: } MIB_BOUNDARYROW, *PMIB_BOUNDARYROW;
        !           855: 
        !           856: // Structure matching what goes in the registry in a block of type
        !           857: // IP_MCAST_LIMIT_INFO.  This contains the fields of
        !           858: // MIB_IPMCAST_IF_ENTRY which are configurable.
        !           859: 
        !           860: typedef struct {
        !           861:     DWORD    dwTtl;
        !           862:     DWORD    dwRateLimit;
        !           863: } MIB_MCAST_LIMIT_ROW, *PMIB_MCAST_LIMIT_ROW;
        !           864: 
        !           865: #define MAX_SCOPE_NAME_LEN 255
        !           866: 
        !           867: //
        !           868: // Scope names are unicode.  SNMP and MZAP use UTF-8 encoding.
        !           869: //
        !           870: 
        !           871: #define SN_UNICODE
        !           872: typedef WCHAR   SN_CHAR;
        !           873: typedef SN_CHAR SCOPE_NAME_BUFFER[MAX_SCOPE_NAME_LEN+1], *SCOPE_NAME;
        !           874: 
        !           875: typedef struct _MIB_IPMCAST_SCOPE
        !           876: {
        !           877:     DWORD             dwGroupAddress;
        !           878:     DWORD             dwGroupMask;
        !           879:     SCOPE_NAME_BUFFER snNameBuffer;
        !           880:     DWORD             dwStatus;
        !           881: }MIB_IPMCAST_SCOPE, *PMIB_IPMCAST_SCOPE;
        !           882: 
        !           883: typedef struct _MIB_IPDESTROW
        !           884: {
        !           885: #ifdef __cplusplus
        !           886:     MIB_IPFORWARDROW  ForwardRow;
        !           887: #else
        !           888:     MIB_IPFORWARDROW;
        !           889: #endif
        !           890: 
        !           891:     DWORD             dwForwardPreference;
        !           892:     DWORD             dwForwardViewSet;
        !           893: }MIB_IPDESTROW, *PMIB_IPDESTROW;
        !           894: 
        !           895: typedef struct _MIB_IPDESTTABLE
        !           896: {
        !           897:     DWORD             dwNumEntries;
        !           898:     MIB_IPDESTROW     table[ANY_SIZE];
        !           899: }MIB_IPDESTTABLE, *PMIB_IPDESTTABLE;
        !           900: 
        !           901: typedef struct _MIB_BEST_IF
        !           902: {
        !           903:     DWORD       dwDestAddr;
        !           904:     DWORD       dwIfIndex;
        !           905: }MIB_BEST_IF, *PMIB_BEST_IF;
        !           906: 
        !           907: typedef struct _MIB_PROXYARP
        !           908: {
        !           909:     DWORD       dwAddress;
        !           910:     DWORD       dwMask;
        !           911:     DWORD       dwIfIndex;
        !           912: }MIB_PROXYARP, *PMIB_PROXYARP;
        !           913: 
        !           914: typedef struct _MIB_IFSTATUS
        !           915: {
        !           916:     DWORD       dwIfIndex;
        !           917:     DWORD       dwAdminStatus;
        !           918:     DWORD       dwOperationalStatus;
        !           919:     BOOL        bMHbeatActive;
        !           920:     BOOL        bMHbeatAlive;
        !           921: }MIB_IFSTATUS, *PMIB_IFSTATUS;
        !           922: 
        !           923: typedef struct _MIB_ROUTESTATE
        !           924: {
        !           925:     BOOL        bRoutesSetToStack;
        !           926: 
        !           927: }MIB_ROUTESTATE, *PMIB_ROUTESTATE;
        !           928: 
        !           929: //////////////////////////////////////////////////////////////////////////////
        !           930: //                                                                          //
        !           931: // All the info passed to (SET/CREATE) and from (GET/GETNEXT/GETFIRST)      //
        !           932: // IP Router Manager is encapsulated in the following "discriminated"       //
        !           933: // union.  To pass, say MIB_IFROW, use the following code                   //
        !           934: //                                                                          //
        !           935: //  PMIB_OPAQUE_INFO    pInfo;                                              //
        !           936: //  PMIB_IFROW          pIfRow;                                             //
        !           937: //  DWORD rgdwBuff[(MAX_MIB_OFFSET + sizeof(MIB_IFROW))/sizeof(DWORD) + 1]; //
        !           938: //                                                                          //
        !           939: //  pInfo   = (PMIB_OPAQUE_INFO)rgdwBuffer;                                 //
        !           940: //  pIfRow  = (MIB_IFROW *)(pInfo->rgbyData);                               //
        !           941: //                                                                          //
        !           942: //  This can also be accomplished by using the following macro              //
        !           943: //                                                                          //
        !           944: //  DEFINE_MIB_BUFFER(pInfo,MIB_IFROW, pIfRow);                             //
        !           945: //                                                                          //
        !           946: //////////////////////////////////////////////////////////////////////////////
        !           947: 
        !           948: 
        !           949: typedef struct _MIB_OPAQUE_INFO
        !           950: {
        !           951:     DWORD  dwId;
        !           952: 
        !           953:     union
        !           954:     {
        !           955:         ULONGLONG   ullAlign;
        !           956:         BYTE        rgbyData[1];
        !           957:     };
        !           958: 
        !           959: }MIB_OPAQUE_INFO, *PMIB_OPAQUE_INFO;
        !           960: 
        !           961: #define MAX_MIB_OFFSET      8
        !           962: 
        !           963: #define MIB_INFO_SIZE(S)                \
        !           964:     (MAX_MIB_OFFSET + sizeof(S))
        !           965: 
        !           966: #define MIB_INFO_SIZE_IN_DWORDS(S)      \
        !           967:     ((MIB_INFO_SIZE(S))/sizeof(DWORD) + 1)
        !           968: 
        !           969: #define DEFINE_MIB_BUFFER(X,Y,Z)                                        \
        !           970:     DWORD        __rgdwBuff[MIB_INFO_SIZE_IN_DWORDS(Y)]; \
        !           971:     PMIB_OPAQUE_INFO    X = (PMIB_OPAQUE_INFO)__rgdwBuff;               \
        !           972:     Y *                 Z = (Y *)(X->rgbyData)
        !           973: 
        !           974: 
        !           975: #define CAST_MIB_INFO(X,Y,Z)    Z = (Y)(X->rgbyData)
        !           976: 
        !           977: #if _MSC_VER >= 1200
        !           978: #pragma warning(pop)
        !           979: #else
        !           980: #pragma warning(default:4200)
        !           981: #pragma warning(default:4201)
        !           982: #pragma warning(default:4214)
        !           983: #endif
        !           984: 
        !           985: #endif //__ROUTING_IPRTRMIB_H__

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.