]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Efi/Protocol/Ip4/Ip4.h
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / Ip4 / Ip4.h
1 /*++
2
3 Copyright (c) 2005 - 2009, Intel Corporation. All rights reserved.<BR>
4 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 UINT32 MaxPacketSize;
83
84 EFI_IP4_CONFIG_DATA ConfigData;
85 BOOLEAN IsConfigured;
86
87 UINT32 GroupCount;
88 EFI_IPv4_ADDRESS *GroupTable;
89
90 UINT32 RouteCount;
91 EFI_IP4_ROUTE_TABLE *RouteTable;
92
93 UINT32 IcmpTypeCount;
94 EFI_IP4_ICMP_TYPE *IcmpTypeList;
95 } EFI_IP4_MODE_DATA;
96
97 #pragma pack(1)
98 typedef struct _EFI_IP4_HEADER {
99 UINT8 HeaderLength:4;
100 UINT8 Version:4;
101 UINT8 TypeOfService;
102 UINT16 TotalLength;
103 UINT16 Identification;
104 UINT16 Fragmentation;
105 UINT8 TimeToLive;
106 UINT8 Protocol;
107 UINT16 Checksum;
108 EFI_IPv4_ADDRESS SourceAddress;
109 EFI_IPv4_ADDRESS DestinationAddress;
110 } EFI_IP4_HEADER;
111 #pragma pack()
112
113 typedef struct _EFI_IP4_FRAGMENT_DATA {
114 UINT32 FragmentLength;
115 VOID *FragmentBuffer;
116 } EFI_IP4_FRAGMENT_DATA;
117
118
119 typedef struct _EFI_IP4_OVERRIDE_DATA {
120 EFI_IPv4_ADDRESS SourceAddress;
121 EFI_IPv4_ADDRESS GatewayAddress;
122
123 UINT8 Protocol;
124 UINT8 TypeOfService;
125 UINT8 TimeToLive;
126 BOOLEAN DoNotFragment;
127 } EFI_IP4_OVERRIDE_DATA;
128
129 typedef struct _EFI_IP4_TRANSMIT_DATA {
130 EFI_IPv4_ADDRESS DestinationAddress;
131
132 EFI_IP4_OVERRIDE_DATA *OverrideData;
133 UINT32 OptionsLength;
134 VOID *OptionsBuffer;
135
136 UINT32 TotalDataLength;
137 UINT32 FragmentCount;
138 EFI_IP4_FRAGMENT_DATA FragmentTable[1];
139 } EFI_IP4_TRANSMIT_DATA;
140
141 typedef struct _EFI_IP4_RECEIVE_DATA {
142 EFI_TIME TimeStamp;
143 EFI_EVENT RecycleSignal;
144
145 UINT32 HeaderLength;
146 EFI_IP4_HEADER *Header;
147
148 UINT32 OptionsLength;
149 VOID *Options;
150
151 UINT32 DataLength;
152 UINT32 FragmentCount;
153 EFI_IP4_FRAGMENT_DATA FragmentTable[1];
154 } EFI_IP4_RECEIVE_DATA;
155
156 typedef struct _EFI_IP4_COMPLETION_TOKEN {
157 EFI_EVENT Event;
158 EFI_STATUS Status;
159
160 union {
161 EFI_IP4_RECEIVE_DATA *RxData;
162 EFI_IP4_TRANSMIT_DATA *TxData;
163 } Packet;
164 } EFI_IP4_COMPLETION_TOKEN;
165
166 typedef
167 EFI_STATUS
168 (EFIAPI *EFI_IP4_GET_MODE_DATA) (
169 IN EFI_IP4_PROTOCOL *This,
170 OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL,
171 OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,
172 OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL
173 );
174
175 typedef
176 EFI_STATUS
177 (EFIAPI *EFI_IP4_CONFIGURE) (
178 IN EFI_IP4_PROTOCOL *This,
179 IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL
180 );
181
182 typedef
183 EFI_STATUS
184 (EFIAPI *EFI_IP4_GROUPS) (
185 IN EFI_IP4_PROTOCOL *This,
186 IN BOOLEAN JoinFlag,
187 IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL
188 );
189
190 typedef
191 EFI_STATUS
192 (EFIAPI *EFI_IP4_ROUTES) (
193 IN EFI_IP4_PROTOCOL *This,
194 IN BOOLEAN DeleteRoute,
195 IN EFI_IPv4_ADDRESS *SubnetAddress,
196 IN EFI_IPv4_ADDRESS *SubnetMask,
197 IN EFI_IPv4_ADDRESS *GatewayAddress
198 );
199
200 typedef
201 EFI_STATUS
202 (EFIAPI *EFI_IP4_TRANSMIT) (
203 IN EFI_IP4_PROTOCOL *This,
204 IN EFI_IP4_COMPLETION_TOKEN *Token
205 );
206
207 typedef
208 EFI_STATUS
209 (EFIAPI *EFI_IP4_RECEIVE) (
210 IN EFI_IP4_PROTOCOL *This,
211 IN EFI_IP4_COMPLETION_TOKEN *Token
212 );
213
214 typedef
215 EFI_STATUS
216 (EFIAPI *EFI_IP4_CANCEL) (
217 IN EFI_IP4_PROTOCOL *This,
218 IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL
219 );
220
221 typedef
222 EFI_STATUS
223 (EFIAPI *EFI_IP4_POLL) (
224 IN EFI_IP4_PROTOCOL *This
225 );
226
227 struct _EFI_IP4_PROTOCOL {
228 EFI_IP4_GET_MODE_DATA GetModeData;
229 EFI_IP4_CONFIGURE Configure;
230 EFI_IP4_GROUPS Groups;
231 EFI_IP4_ROUTES Routes;
232 EFI_IP4_TRANSMIT Transmit;
233 EFI_IP4_RECEIVE Receive;
234 EFI_IP4_CANCEL Cancel;
235 EFI_IP4_POLL Poll;
236 };
237
238
239 extern EFI_GUID gEfiIp4ServiceBindingProtocolGuid;
240 extern EFI_GUID gEfiIp4RegistryDataGuid;
241 extern EFI_GUID gEfiIp4ProtocolGuid;
242 #endif