KERNEL_VERSION_MAJOR: 0 -> 5
[reactos.git] / include / ipexport.h
1 /*
2  * Defines the types and macros used by the ICMP API, see icmpapi.h.
3  *
4  * Copyright (C) 1999 Francois Gouget
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #ifndef __WINE_IPEXPORT_H
22 #define __WINE_IPEXPORT_H
23
24 typedef unsigned long   IPAddr;
25 typedef unsigned long   IPMask;
26 typedef unsigned long   IP_STATUS;
27
28 struct ip_option_information
29 {
30     unsigned char  Ttl;
31     unsigned char  Tos;
32     unsigned char  Flags;
33     unsigned char  OptionsSize;
34     unsigned char* OptionsData;
35 };
36
37 #define IP_FLAG_DF      0x2
38
39 #define IP_OPT_EOL      0
40 #define IP_OPT_NOP      1
41 #define IP_OPT_SECURITY 0x82
42 #define IP_OPT_LSRR     0x83
43 #define IP_OPT_SSRR     0x89
44 #define IP_OPT_RR       0x7
45 #define IP_OPT_TS       0x44
46 #define IP_OPT_SID      0x88
47 #define IP_OPT_ROUTER_ALERT 0x94
48
49 #define MAX_OPT_SIZE    40
50
51
52 struct icmp_echo_reply
53 {
54     IPAddr                       Address;
55     unsigned long                Status;
56     unsigned long                RoundTripTime;
57     unsigned short               DataSize;
58     unsigned short               Reserved;
59     void*                        Data;
60     struct ip_option_information Options;
61 };
62
63 typedef struct ip_option_information IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION;
64
65 typedef struct icmp_echo_reply ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY;
66
67
68 #define IP_STATUS_BASE              11000
69
70 #define IP_SUCCESS                  0
71 #define IP_BUF_TOO_SMALL            (IP_STATUS_BASE + 1)
72 #define IP_DEST_NET_UNREACHABLE     (IP_STATUS_BASE + 2)
73 #define IP_DEST_HOST_UNREACHABLE    (IP_STATUS_BASE + 3)
74 #define IP_DEST_PROT_UNREACHABLE    (IP_STATUS_BASE + 4)
75 #define IP_DEST_PORT_UNREACHABLE    (IP_STATUS_BASE + 5)
76 #define IP_NO_RESOURCES             (IP_STATUS_BASE + 6)
77 #define IP_BAD_OPTION               (IP_STATUS_BASE + 7)
78 #define IP_HW_ERROR                 (IP_STATUS_BASE + 8)
79 #define IP_PACKET_TOO_BIG           (IP_STATUS_BASE + 9)
80 #define IP_REQ_TIMED_OUT            (IP_STATUS_BASE + 10)
81 #define IP_BAD_REQ                  (IP_STATUS_BASE + 11)
82 #define IP_BAD_ROUTE                (IP_STATUS_BASE + 12)
83 #define IP_TTL_EXPIRED_TRANSIT      (IP_STATUS_BASE + 13)
84 #define IP_TTL_EXPIRED_REASSEM      (IP_STATUS_BASE + 14)
85 #define IP_PARAM_PROBLEM            (IP_STATUS_BASE + 15)
86 #define IP_SOURCE_QUENCH            (IP_STATUS_BASE + 16)
87 #define IP_OPTION_TOO_BIG           (IP_STATUS_BASE + 17)
88 #define IP_BAD_DESTINATION          (IP_STATUS_BASE + 18)
89
90 #define IP_ADDR_DELETED             (IP_STATUS_BASE + 19)
91 #define IP_SPEC_MTU_CHANGE          (IP_STATUS_BASE + 20)
92 #define IP_MTU_CHANGE               (IP_STATUS_BASE + 21)
93 #define IP_UNLOAD                   (IP_STATUS_BASE + 22)
94
95 #define IP_GENERAL_FAILURE          (IP_STATUS_BASE + 50)
96 #define MAX_IP_STATUS               IP_GENERAL_FAILURE
97 #define IP_PENDING                  (IP_STATUS_BASE + 255)
98
99
100 #define MAX_ADAPTER_NAME 128
101
102 typedef struct _IP_ADAPTER_INDEX_MAP {
103   ULONG Index;
104   WCHAR Name[MAX_ADAPTER_NAME];
105 } IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;
106
107 typedef struct _IP_INTERFACE_INFO {
108   LONG                 NumAdapters;
109   IP_ADAPTER_INDEX_MAP Adapter[1];
110 } IP_INTERFACE_INFO,*PIP_INTERFACE_INFO;
111
112 typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS {
113   ULONG  NumAdapters;
114   IPAddr Address[1];
115 } IP_UNIDIRECTIONAL_ADAPTER_ADDRESS, *PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
116
117 typedef struct _IP_ADAPTER_ORDER_MAP {
118     ULONG   NumAdapters;
119     ULONG   AdapterOrder[1];
120 } IP_ADAPTER_ORDER_MAP, *PIP_ADAPTER_ORDER_MAP;
121
122 #endif /* __WINE_IPEXPORT_H */