Annotation of sbbs/include/microsoft/psdk/ipexport.h, revision 1.1.1.1

1.1       root        1: /********************************************************************/
                      2: /**                     Microsoft LAN Manager                      **/
                      3: /**     Copyright (c) Microsoft Corporation. All rights reserved.  **/
                      4: /********************************************************************/
                      5: /* :ts=4 */
                      6: 
                      7: //** IPEXPORT.H - IP public definitions.
                      8: //
                      9: //  This file contains public definitions exported to transport layer and
                     10: //  application software.
                     11: //
                     12: 
                     13: #ifndef IP_EXPORT_INCLUDED
                     14: #define IP_EXPORT_INCLUDED  1
                     15: 
                     16: #if _MSC_VER > 1000
                     17: #pragma once
                     18: #endif
                     19: 
                     20: //
                     21: // IP type definitions.
                     22: //
                     23: typedef ULONG IPAddr;       // An IP address.
                     24: typedef ULONG IPMask;       // An IP subnet mask.
                     25: typedef ULONG IP_STATUS;    // Status code returned from IP APIs.
                     26: 
                     27: #ifndef s6_addr
                     28: //
                     29: // Duplicate these definitions here so that this file can be included by
                     30: // kernel-mode components which cannot include ws2tcpip.h, as well as
                     31: // by user-mode components which do.
                     32: //
                     33: 
                     34: typedef struct in6_addr {
                     35:     union {
                     36:         UCHAR       Byte[16];
                     37:         USHORT      Word[8];
                     38:     } u;
                     39: } IN6_ADDR;
                     40: 
                     41: #define in_addr6 in6_addr
                     42: 
                     43: //
                     44: // Defines to match RFC 2553.
                     45: //
                     46: #define _S6_un      u
                     47: #define _S6_u8      Byte
                     48: #define s6_addr     _S6_un._S6_u8
                     49: 
                     50: //
                     51: // Defines for our implementation.
                     52: //
                     53: #define s6_bytes    u.Byte
                     54: #define s6_words    u.Word
                     55: 
                     56: #endif
                     57: 
                     58: typedef struct in6_addr IPv6Addr;
                     59: 
                     60: #ifndef s_addr
                     61: 
                     62: struct in_addr {
                     63:         union {
                     64:                 struct { UCHAR s_b1,s_b2,s_b3,s_b4; } S_un_b;
                     65:                 struct { USHORT s_w1,s_w2; } S_un_w;
                     66:                 ULONG S_addr;
                     67:         } S_un;
                     68: };
                     69: #define s_addr  S_un.S_addr /* can be used for most tcp & ip code */
                     70: 
                     71: #endif
                     72: 
                     73: /*INC*/
                     74: 
                     75: //
                     76: // The ip_option_information structure describes the options to be
                     77: // included in the header of an IP packet. The TTL, TOS, and Flags
                     78: // values are carried in specific fields in the header. The OptionsData
                     79: // bytes are carried in the options area following the standard IP header.
                     80: // With the exception of source route options, this data must be in the
                     81: // format to be transmitted on the wire as specified in RFC 791. A source
                     82: // route option should contain the full route - first hop thru final
                     83: // destination - in the route data. The first hop will be pulled out of the
                     84: // data and the option will be reformatted accordingly. Otherwise, the route
                     85: // option should be formatted as specified in RFC 791.
                     86: //
                     87: 
                     88: typedef struct ip_option_information {
                     89:     UCHAR   Ttl;                // Time To Live
                     90:     UCHAR   Tos;                // Type Of Service
                     91:     UCHAR   Flags;              // IP header flags
                     92:     UCHAR   OptionsSize;        // Size in bytes of options data
                     93:     PUCHAR  OptionsData;        // Pointer to options data
                     94: } IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION;
                     95: 
                     96: #if defined(_WIN64)
                     97: 
                     98: typedef struct ip_option_information32 {
                     99:     UCHAR   Ttl;
                    100:     UCHAR   Tos;
                    101:     UCHAR   Flags;
                    102:     UCHAR   OptionsSize;
                    103:     UCHAR * POINTER_32 OptionsData;
                    104: } IP_OPTION_INFORMATION32, *PIP_OPTION_INFORMATION32;
                    105: 
                    106: #endif // _WIN64
                    107: 
                    108: //
                    109: // The icmp_echo_reply structure describes the data returned in response
                    110: // to an echo request.
                    111: //
                    112: 
                    113: typedef struct icmp_echo_reply {
                    114:     IPAddr  Address;            // Replying address
                    115:     ULONG   Status;             // Reply IP_STATUS
                    116:     ULONG   RoundTripTime;      // RTT in milliseconds
                    117:     USHORT  DataSize;           // Reply data size in bytes
                    118:     USHORT  Reserved;           // Reserved for system use
                    119:     PVOID   Data;               // Pointer to the reply data
                    120:     struct ip_option_information Options; // Reply options
                    121: } ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY;
                    122: 
                    123: #if defined(_WIN64)
                    124: 
                    125: typedef struct icmp_echo_reply32 {
                    126:     IPAddr  Address;
                    127:     ULONG   Status;
                    128:     ULONG   RoundTripTime;
                    129:     USHORT  DataSize;
                    130:     USHORT  Reserved;
                    131:     VOID * POINTER_32 Data;
                    132:     struct ip_option_information32 Options;
                    133: } ICMP_ECHO_REPLY32, *PICMP_ECHO_REPLY32;
                    134: 
                    135: #endif // _WIN64
                    136: 
                    137: typedef struct arp_send_reply {
                    138:     IPAddr  DestAddress;
                    139:     IPAddr  SrcAddress;
                    140: } ARP_SEND_REPLY, *PARP_SEND_REPLY;
                    141: 
                    142: typedef struct tcp_reserve_port_range {
                    143:     USHORT  UpperRange;
                    144:     USHORT  LowerRange;
                    145: } TCP_RESERVE_PORT_RANGE, *PTCP_RESERVE_PORT_RANGE;
                    146: 
                    147: #define MAX_ADAPTER_NAME 128
                    148: 
                    149: typedef struct _IP_ADAPTER_INDEX_MAP {
                    150:     ULONG   Index;
                    151:     WCHAR   Name[MAX_ADAPTER_NAME];
                    152: } IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;
                    153: 
                    154: typedef struct _IP_INTERFACE_INFO {
                    155:     LONG    NumAdapters;
                    156:     IP_ADAPTER_INDEX_MAP Adapter[1];
                    157: } IP_INTERFACE_INFO,*PIP_INTERFACE_INFO;
                    158: 
                    159: typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS {
                    160:     ULONG   NumAdapters;
                    161:     IPAddr  Address[1];
                    162: } IP_UNIDIRECTIONAL_ADAPTER_ADDRESS, *PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
                    163: 
                    164: typedef struct _IP_ADAPTER_ORDER_MAP {
                    165:     ULONG   NumAdapters;
                    166:     ULONG   AdapterOrder[1];
                    167: } IP_ADAPTER_ORDER_MAP, *PIP_ADAPTER_ORDER_MAP;
                    168: 
                    169: typedef struct _IP_MCAST_COUNTER_INFO {
                    170:     ULONG64 InMcastOctets;
                    171:     ULONG64 OutMcastOctets;
                    172:     ULONG64 InMcastPkts;
                    173:     ULONG64 OutMcastPkts;
                    174: } IP_MCAST_COUNTER_INFO, *PIP_MCAST_COUNTER_INFO;
                    175: 
                    176: //
                    177: // IP_STATUS codes returned from IP APIs
                    178: //
                    179: 
                    180: #define IP_STATUS_BASE              11000
                    181: 
                    182: #define IP_SUCCESS                  0
                    183: #define IP_BUF_TOO_SMALL            (IP_STATUS_BASE + 1)
                    184: #define IP_DEST_NET_UNREACHABLE     (IP_STATUS_BASE + 2)
                    185: #define IP_DEST_HOST_UNREACHABLE    (IP_STATUS_BASE + 3)
                    186: #define IP_DEST_PROT_UNREACHABLE    (IP_STATUS_BASE + 4)
                    187: #define IP_DEST_PORT_UNREACHABLE    (IP_STATUS_BASE + 5)
                    188: #define IP_NO_RESOURCES             (IP_STATUS_BASE + 6)
                    189: #define IP_BAD_OPTION               (IP_STATUS_BASE + 7)
                    190: #define IP_HW_ERROR                 (IP_STATUS_BASE + 8)
                    191: #define IP_PACKET_TOO_BIG           (IP_STATUS_BASE + 9)
                    192: #define IP_REQ_TIMED_OUT            (IP_STATUS_BASE + 10)
                    193: #define IP_BAD_REQ                  (IP_STATUS_BASE + 11)
                    194: #define IP_BAD_ROUTE                (IP_STATUS_BASE + 12)
                    195: #define IP_TTL_EXPIRED_TRANSIT      (IP_STATUS_BASE + 13)
                    196: #define IP_TTL_EXPIRED_REASSEM      (IP_STATUS_BASE + 14)
                    197: #define IP_PARAM_PROBLEM            (IP_STATUS_BASE + 15)
                    198: #define IP_SOURCE_QUENCH            (IP_STATUS_BASE + 16)
                    199: #define IP_OPTION_TOO_BIG           (IP_STATUS_BASE + 17)
                    200: #define IP_BAD_DESTINATION          (IP_STATUS_BASE + 18)
                    201: 
                    202: //
                    203: // Variants of the above using IPv6 terminology, where different
                    204: //
                    205: 
                    206: #define IP_DEST_NO_ROUTE            (IP_STATUS_BASE + 2)
                    207: #define IP_DEST_ADDR_UNREACHABLE    (IP_STATUS_BASE + 3)
                    208: #define IP_DEST_PROHIBITED          (IP_STATUS_BASE + 4)
                    209: #define IP_DEST_PORT_UNREACHABLE    (IP_STATUS_BASE + 5)
                    210: #define IP_HOP_LIMIT_EXCEEDED       (IP_STATUS_BASE + 13)
                    211: #define IP_REASSEMBLY_TIME_EXCEEDED (IP_STATUS_BASE + 14)
                    212: #define IP_PARAMETER_PROBLEM        (IP_STATUS_BASE + 15)
                    213: 
                    214: //
                    215: // IPv6-only status codes
                    216: //
                    217: 
                    218: #define IP_DEST_UNREACHABLE         (IP_STATUS_BASE + 40)
                    219: #define IP_TIME_EXCEEDED            (IP_STATUS_BASE + 41)
                    220: #define IP_BAD_HEADER               (IP_STATUS_BASE + 42)
                    221: #define IP_UNRECOGNIZED_NEXT_HEADER (IP_STATUS_BASE + 43)
                    222: #define IP_ICMP_ERROR               (IP_STATUS_BASE + 44)
                    223: #define IP_DEST_SCOPE_MISMATCH      (IP_STATUS_BASE + 45)
                    224: 
                    225: //
                    226: // The next group are status codes passed up on status indications to
                    227: // transport layer protocols.
                    228: //
                    229: #define IP_ADDR_DELETED             (IP_STATUS_BASE + 19)
                    230: #define IP_SPEC_MTU_CHANGE          (IP_STATUS_BASE + 20)
                    231: #define IP_MTU_CHANGE               (IP_STATUS_BASE + 21)
                    232: #define IP_UNLOAD                   (IP_STATUS_BASE + 22)
                    233: #define IP_ADDR_ADDED               (IP_STATUS_BASE + 23)
                    234: #define IP_MEDIA_CONNECT            (IP_STATUS_BASE + 24)
                    235: #define IP_MEDIA_DISCONNECT         (IP_STATUS_BASE + 25)
                    236: #define IP_BIND_ADAPTER             (IP_STATUS_BASE + 26)
                    237: #define IP_UNBIND_ADAPTER           (IP_STATUS_BASE + 27)
                    238: #define IP_DEVICE_DOES_NOT_EXIST    (IP_STATUS_BASE + 28)
                    239: #define IP_DUPLICATE_ADDRESS        (IP_STATUS_BASE + 29)
                    240: #define IP_INTERFACE_METRIC_CHANGE  (IP_STATUS_BASE + 30)
                    241: #define IP_RECONFIG_SECFLTR         (IP_STATUS_BASE + 31)
                    242: #define IP_NEGOTIATING_IPSEC        (IP_STATUS_BASE + 32)
                    243: #define IP_INTERFACE_WOL_CAPABILITY_CHANGE  (IP_STATUS_BASE + 33)
                    244: #define IP_DUPLICATE_IPADD          (IP_STATUS_BASE + 34)
                    245: #define IP_NO_FURTHER_SENDS         (IP_STATUS_BASE + 35)
                    246: 
                    247: #define IP_GENERAL_FAILURE          (IP_STATUS_BASE + 50)
                    248: #define MAX_IP_STATUS               IP_GENERAL_FAILURE
                    249: #define IP_PENDING                  (IP_STATUS_BASE + 255)
                    250: 
                    251: 
                    252: //
                    253: // Values used in the IP header Flags field.
                    254: //
                    255: #define IP_FLAG_DF      0x2         // Don't fragment this packet.
                    256: 
                    257: //
                    258: // Supported IP Option Types.
                    259: //
                    260: // These types define the options which may be used in the OptionsData field
                    261: // of the ip_option_information structure.  See RFC 791 for a complete
                    262: // description of each.
                    263: //
                    264: #define IP_OPT_EOL      0          // End of list option
                    265: #define IP_OPT_NOP      1          // No operation
                    266: #define IP_OPT_SECURITY 0x82       // Security option
                    267: #define IP_OPT_LSRR     0x83       // Loose source route
                    268: #define IP_OPT_SSRR     0x89       // Strict source route
                    269: #define IP_OPT_RR       0x7        // Record route
                    270: #define IP_OPT_TS       0x44       // Timestamp
                    271: #define IP_OPT_SID      0x88       // Stream ID (obsolete)
                    272: #define IP_OPT_ROUTER_ALERT 0x94  // Router Alert Option
                    273: 
                    274: #define MAX_OPT_SIZE    40         // Maximum length of IP options in bytes
                    275: 
                    276: #ifdef CHICAGO
                    277: 
                    278: // Ioctls code exposed by Memphis tcpip stack.
                    279: // For NT these ioctls are define in ntddip.h  (private\inc)
                    280: 
                    281: #define IOCTL_IP_RTCHANGE_NOTIFY_REQUEST   101
                    282: #define IOCTL_IP_ADDCHANGE_NOTIFY_REQUEST  102
                    283: #define IOCTL_ARP_SEND_REQUEST             103
                    284: #define IOCTL_IP_INTERFACE_INFO            104
                    285: #define IOCTL_IP_GET_BEST_INTERFACE        105
                    286: #define IOCTL_IP_UNIDIRECTIONAL_ADAPTER_ADDRESS        106
                    287: 
                    288: #endif
                    289: 
                    290: 
                    291: #endif // IP_EXPORT_INCLUDED
                    292: 

unix.superglobalmegacorp.com

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