]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Efi/Protocol/Ip4/Ip4.h
Sync all bug fixes between EDK1.04 and EDK1.06 into EdkCompatibilityPkg.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / Ip4 / Ip4.h
CommitLineData
3eb9473e 1/*++\r
2\r
3e99020d 3Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.<BR>\r
f57387d5 4This program and the accompanying materials \r
3eb9473e 5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 Ip4.h\r
15\r
16Abstract:\r
17\r
3e99020d 18 EFI_IP4_PROTOCOL definition in UEFI 2.2 specification.\r
3eb9473e 19\r
20--*/\r
21\r
22#ifndef _IP4_H_\r
23#define _IP4_H_\r
24\r
25#include EFI_PROTOCOL_DEFINITION (ManagedNetwork)\r
26#include EFI_PROTOCOL_DEFINITION (ServiceBinding)\r
27\r
28//\r
29//GUID definitions\r
30//\r
31#define EFI_IP4_SERVICE_BINDING_PROTOCOL_GUID \\r
7ccf38a3 32 {0xc51711e7, 0xb4bf, 0x404a, {0xbf, 0xb8, 0x0a, 0x04, 0x8e, 0xf1, 0xff, 0xe4}}\r
3eb9473e 33\r
34#define EFI_IP4_PROTOCOL_GUID \\r
7ccf38a3 35 {0x41d94cd2, 0x35b6, 0x455a, {0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd}}\r
3eb9473e 36\r
37EFI_FORWARD_DECLARATION (EFI_IP4_PROTOCOL);\r
38\r
39typedef struct {\r
40 EFI_HANDLE InstanceHandle;\r
41 EFI_IPv4_ADDRESS Ip4Address;\r
42 EFI_IPv4_ADDRESS SubnetMask;\r
43} EFI_IP4_ADDRESS_PAIR; \r
44\r
45typedef struct {\r
46 EFI_HANDLE DriverHandle;\r
47 UINT32 AddressCount;\r
48 EFI_IP4_ADDRESS_PAIR AddressPairs[1];\r
49} EFI_IP4_VARIABLE_DATA;\r
50\r
51typedef struct {\r
52 UINT8 DefaultProtocol;\r
53 BOOLEAN AcceptAnyProtocol;\r
54 BOOLEAN AcceptIcmpErrors;\r
55 BOOLEAN AcceptBroadcast;\r
56 BOOLEAN AcceptPromiscuous;\r
57 BOOLEAN UseDefaultAddress;\r
58 EFI_IPv4_ADDRESS StationAddress;\r
59 EFI_IPv4_ADDRESS SubnetMask;\r
60 UINT8 TypeOfService;\r
61 UINT8 TimeToLive;\r
62 BOOLEAN DoNotFragment;\r
63 BOOLEAN RawData;\r
64 UINT32 ReceiveTimeout;\r
65 UINT32 TransmitTimeout;\r
66} EFI_IP4_CONFIG_DATA;\r
67\r
68\r
69typedef struct _EFI_IP4_ROUTE_TABLE {\r
70 EFI_IPv4_ADDRESS SubnetAddress;\r
71 EFI_IPv4_ADDRESS SubnetMask;\r
72 EFI_IPv4_ADDRESS GatewayAddress;\r
73} EFI_IP4_ROUTE_TABLE;\r
74\r
75typedef struct _EFI_IP4_ICMP_TYPE {\r
76 UINT8 Type;\r
77 UINT8 Code;\r
78} EFI_IP4_ICMP_TYPE;\r
79\r
80typedef struct {\r
81 BOOLEAN IsStarted;\r
f25c99b1 82 UINT32 MaxPacketSize;\r
3e99020d 83 \r
3eb9473e 84 EFI_IP4_CONFIG_DATA ConfigData;\r
85 BOOLEAN IsConfigured;\r
86\r
87 UINT32 GroupCount;\r
88 EFI_IPv4_ADDRESS *GroupTable;\r
89\r
90 UINT32 RouteCount;\r
91 EFI_IP4_ROUTE_TABLE *RouteTable;\r
92\r
93 UINT32 IcmpTypeCount;\r
94 EFI_IP4_ICMP_TYPE *IcmpTypeList;\r
95} EFI_IP4_MODE_DATA;\r
96\r
97#pragma pack(1)\r
98typedef struct _EFI_IP4_HEADER {\r
99 UINT8 HeaderLength:4;\r
100 UINT8 Version:4;\r
101 UINT8 TypeOfService;\r
102 UINT16 TotalLength;\r
103 UINT16 Identification;\r
104 UINT16 Fragmentation;\r
105 UINT8 TimeToLive;\r
106 UINT8 Protocol;\r
107 UINT16 Checksum;\r
108 EFI_IPv4_ADDRESS SourceAddress;\r
109 EFI_IPv4_ADDRESS DestinationAddress;\r
110} EFI_IP4_HEADER;\r
111#pragma pack()\r
112\r
113typedef struct _EFI_IP4_FRAGMENT_DATA {\r
114 UINT32 FragmentLength;\r
115 VOID *FragmentBuffer;\r
116} EFI_IP4_FRAGMENT_DATA;\r
117\r
118\r
119typedef struct _EFI_IP4_OVERRIDE_DATA {\r
120 EFI_IPv4_ADDRESS SourceAddress;\r
121 EFI_IPv4_ADDRESS GatewayAddress;\r
122\r
123 UINT8 Protocol;\r
124 UINT8 TypeOfService;\r
125 UINT8 TimeToLive;\r
126 BOOLEAN DoNotFragment;\r
127} EFI_IP4_OVERRIDE_DATA;\r
128\r
129typedef struct _EFI_IP4_TRANSMIT_DATA {\r
130 EFI_IPv4_ADDRESS DestinationAddress;\r
131\r
132 EFI_IP4_OVERRIDE_DATA *OverrideData;\r
133 UINT32 OptionsLength;\r
134 VOID *OptionsBuffer;\r
135\r
136 UINT32 TotalDataLength;\r
137 UINT32 FragmentCount;\r
138 EFI_IP4_FRAGMENT_DATA FragmentTable[1];\r
139} EFI_IP4_TRANSMIT_DATA;\r
140\r
141typedef struct _EFI_IP4_RECEIVE_DATA {\r
142 EFI_TIME TimeStamp;\r
143 EFI_EVENT RecycleSignal;\r
144\r
145 UINT32 HeaderLength;\r
146 EFI_IP4_HEADER *Header;\r
147\r
148 UINT32 OptionsLength;\r
149 VOID *Options;\r
150\r
151 UINT32 DataLength;\r
152 UINT32 FragmentCount;\r
153 EFI_IP4_FRAGMENT_DATA FragmentTable[1];\r
154} EFI_IP4_RECEIVE_DATA;\r
155\r
156typedef struct _EFI_IP4_COMPLETION_TOKEN {\r
157 EFI_EVENT Event;\r
158 EFI_STATUS Status;\r
159\r
160 union {\r
161 EFI_IP4_RECEIVE_DATA *RxData;\r
162 EFI_IP4_TRANSMIT_DATA *TxData;\r
163 } Packet;\r
164} EFI_IP4_COMPLETION_TOKEN;\r
165\r
166typedef\r
167EFI_STATUS\r
168(EFIAPI *EFI_IP4_GET_MODE_DATA) (\r
169 IN EFI_IP4_PROTOCOL *This,\r
170 OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL,\r
171 OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,\r
172 OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL\r
173 );\r
174\r
175typedef \r
176EFI_STATUS\r
177(EFIAPI *EFI_IP4_CONFIGURE) (\r
178 IN EFI_IP4_PROTOCOL *This,\r
179 IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL\r
180 );\r
181\r
182typedef \r
183EFI_STATUS\r
184(EFIAPI *EFI_IP4_GROUPS) (\r
185 IN EFI_IP4_PROTOCOL *This,\r
186 IN BOOLEAN JoinFlag,\r
187 IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL\r
188 );\r
189\r
190typedef \r
191EFI_STATUS\r
192(EFIAPI *EFI_IP4_ROUTES) (\r
193 IN EFI_IP4_PROTOCOL *This,\r
194 IN BOOLEAN DeleteRoute,\r
195 IN EFI_IPv4_ADDRESS *SubnetAddress,\r
196 IN EFI_IPv4_ADDRESS *SubnetMask,\r
197 IN EFI_IPv4_ADDRESS *GatewayAddress \r
198 );\r
199\r
200typedef \r
201EFI_STATUS\r
202(EFIAPI *EFI_IP4_TRANSMIT) (\r
203 IN EFI_IP4_PROTOCOL *This,\r
204 IN EFI_IP4_COMPLETION_TOKEN *Token\r
205 );\r
206\r
207typedef \r
208EFI_STATUS\r
209(EFIAPI *EFI_IP4_RECEIVE) (\r
210 IN EFI_IP4_PROTOCOL *This,\r
211 IN EFI_IP4_COMPLETION_TOKEN *Token\r
212 );\r
213\r
214typedef\r
215EFI_STATUS\r
216(EFIAPI *EFI_IP4_CANCEL) (\r
217 IN EFI_IP4_PROTOCOL *This,\r
218 IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL\r
219 );\r
220\r
221typedef \r
222EFI_STATUS\r
223(EFIAPI *EFI_IP4_POLL) (\r
224 IN EFI_IP4_PROTOCOL *This\r
225 );\r
226\r
e5bce275 227struct _EFI_IP4_PROTOCOL {\r
3eb9473e 228 EFI_IP4_GET_MODE_DATA GetModeData;\r
229 EFI_IP4_CONFIGURE Configure;\r
230 EFI_IP4_GROUPS Groups;\r
231 EFI_IP4_ROUTES Routes;\r
232 EFI_IP4_TRANSMIT Transmit;\r
233 EFI_IP4_RECEIVE Receive;\r
234 EFI_IP4_CANCEL Cancel;\r
235 EFI_IP4_POLL Poll;\r
e5bce275 236};\r
3eb9473e 237\r
238\r
239extern EFI_GUID gEfiIp4ServiceBindingProtocolGuid;\r
240extern EFI_GUID gEfiIp4RegistryDataGuid;\r
241extern EFI_GUID gEfiIp4ProtocolGuid;\r
242#endif\r