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