blob: 09a989dbf7f2bd4ce871a971363a4afc45668eec [file] [log] [blame]
Francois Gougetedf3e431999-11-07 21:22:17 +00001/*
2 * Defines the types and macros used by the ICMP API, see icmpapi.h.
3 *
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00004 * 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
Francois Gougetedf3e431999-11-07 21:22:17 +000019 */
20
21#ifndef __WINE_IPEXPORT_H
22#define __WINE_IPEXPORT_H
23
24typedef unsigned long IPAddr;
25typedef unsigned long IPMask;
26typedef unsigned long IP_STATUS;
27
28struct 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
51struct icmp_echo_reply
52{
53 IPAddr Address;
54 unsigned long Status;
55 unsigned long RoundTripTime;
56 unsigned short DataSize;
57 unsigned short Reserved;
58 void* Data;
59 struct ip_option_information Options;
60};
61
62typedef struct ip_option_information IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION;
63
64typedef 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
Juan Lang38fa5ad2003-05-13 03:32:20 +000099#define MAX_ADAPTER_NAME 128
100
101typedef struct _IP_ADAPTER_INDEX_MAP {
102 ULONG Index;
103 WCHAR Name[MAX_ADAPTER_NAME];
104} IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;
105
106typedef struct _IP_INTERFACE_INFO {
107 LONG NumAdapters;
108 IP_ADAPTER_INDEX_MAP Adapter[1];
109} IP_INTERFACE_INFO,*PIP_INTERFACE_INFO;
110
111typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS {
112 ULONG NumAdapters;
113 IPAddr Address[1];
114} IP_UNIDIRECTIONAL_ADAPTER_ADDRESS, *PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
115
Francois Gougetedf3e431999-11-07 21:22:17 +0000116#endif /* __WINE_IPEXPORT_H */