include: Add declaration of sockaddr_storage to ws2def.h.
[wine] / 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #ifndef __WINE_IPEXPORT_H
22 #define __WINE_IPEXPORT_H
23
24 typedef ULONG IPAddr;
25 typedef ULONG IPMask;
26 typedef ULONG 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
48 #define MAX_OPT_SIZE    40
49
50
51 struct icmp_echo_reply
52 {
53     IPAddr                       Address;
54     ULONG                        Status;
55     ULONG                        RoundTripTime;
56     unsigned short               DataSize;
57     unsigned short               Reserved;
58     void*                        Data;
59     struct ip_option_information Options;
60 };
61
62 typedef struct ip_option_information IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION;
63
64 typedef struct icmp_echo_reply ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY;
65
66
67 #define IP_STATUS_BASE              11000
68
69 #define IP_SUCCESS                  0
70 #define IP_BUF_TOO_SMALL            (IP_STATUS_BASE + 1)
71 #define IP_DEST_NET_UNREACHABLE     (IP_STATUS_BASE + 2)
72 #define IP_DEST_HOST_UNREACHABLE    (IP_STATUS_BASE + 3)
73 #define IP_DEST_PROT_UNREACHABLE    (IP_STATUS_BASE + 4)
74 #define IP_DEST_PORT_UNREACHABLE    (IP_STATUS_BASE + 5)
75 #define IP_NO_RESOURCES             (IP_STATUS_BASE + 6)
76 #define IP_BAD_OPTION               (IP_STATUS_BASE + 7)
77 #define IP_HW_ERROR                 (IP_STATUS_BASE + 8)
78 #define IP_PACKET_TOO_BIG           (IP_STATUS_BASE + 9)
79 #define IP_REQ_TIMED_OUT            (IP_STATUS_BASE + 10)
80 #define IP_BAD_REQ                  (IP_STATUS_BASE + 11)
81 #define IP_BAD_ROUTE                (IP_STATUS_BASE + 12)
82 #define IP_TTL_EXPIRED_TRANSIT      (IP_STATUS_BASE + 13)
83 #define IP_TTL_EXPIRED_REASSEM      (IP_STATUS_BASE + 14)
84 #define IP_PARAM_PROBLEM            (IP_STATUS_BASE + 15)
85 #define IP_SOURCE_QUENCH            (IP_STATUS_BASE + 16)
86 #define IP_OPTION_TOO_BIG           (IP_STATUS_BASE + 17)
87 #define IP_BAD_DESTINATION          (IP_STATUS_BASE + 18)
88
89 #define IP_ADDR_DELETED             (IP_STATUS_BASE + 19)
90 #define IP_SPEC_MTU_CHANGE          (IP_STATUS_BASE + 20)
91 #define IP_MTU_CHANGE               (IP_STATUS_BASE + 21)
92 #define IP_UNLOAD                   (IP_STATUS_BASE + 22)
93
94 #define IP_GENERAL_FAILURE          (IP_STATUS_BASE + 50)
95 #define MAX_IP_STATUS               IP_GENERAL_FAILURE
96 #define IP_PENDING                  (IP_STATUS_BASE + 255)
97
98
99 #define MAX_ADAPTER_NAME 128
100
101 typedef struct _IP_ADAPTER_INDEX_MAP {
102   ULONG Index;
103   WCHAR Name[MAX_ADAPTER_NAME];
104 } IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;
105
106 typedef struct _IP_INTERFACE_INFO {
107   LONG                 NumAdapters;
108   IP_ADAPTER_INDEX_MAP Adapter[1];
109 } IP_INTERFACE_INFO,*PIP_INTERFACE_INFO;
110
111 typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS {
112   ULONG  NumAdapters;
113   IPAddr Address[1];
114 } IP_UNIDIRECTIONAL_ADAPTER_ADDRESS, *PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
115
116 #endif /* __WINE_IPEXPORT_H */