3 Copyright (c) 2005 - 2010, 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
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.
18 EFI_IP4_PROTOCOL definition in UEFI 2.2 specification.
25 #include EFI_PROTOCOL_DEFINITION (ManagedNetwork)
26 #include EFI_PROTOCOL_DEFINITION (ServiceBinding)
31 #define EFI_IP4_SERVICE_BINDING_PROTOCOL_GUID \
32 {0xc51711e7, 0xb4bf, 0x404a, {0xbf, 0xb8, 0x0a, 0x04, 0x8e, 0xf1, 0xff, 0xe4}}
34 #define EFI_IP4_PROTOCOL_GUID \
35 {0x41d94cd2, 0x35b6, 0x455a, {0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd}}
37 EFI_FORWARD_DECLARATION (EFI_IP4_PROTOCOL
);
40 EFI_HANDLE InstanceHandle
;
41 EFI_IPv4_ADDRESS Ip4Address
;
42 EFI_IPv4_ADDRESS SubnetMask
;
43 } EFI_IP4_ADDRESS_PAIR
;
46 EFI_HANDLE DriverHandle
;
48 EFI_IP4_ADDRESS_PAIR AddressPairs
[1];
49 } EFI_IP4_VARIABLE_DATA
;
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
;
62 BOOLEAN DoNotFragment
;
64 UINT32 ReceiveTimeout
;
65 UINT32 TransmitTimeout
;
66 } EFI_IP4_CONFIG_DATA
;
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
;
75 typedef struct _EFI_IP4_ICMP_TYPE
{
84 EFI_IP4_CONFIG_DATA ConfigData
;
88 EFI_IPv4_ADDRESS
*GroupTable
;
91 EFI_IP4_ROUTE_TABLE
*RouteTable
;
94 EFI_IP4_ICMP_TYPE
*IcmpTypeList
;
98 typedef struct _EFI_IP4_HEADER
{
103 UINT16 Identification
;
104 UINT16 Fragmentation
;
108 EFI_IPv4_ADDRESS SourceAddress
;
109 EFI_IPv4_ADDRESS DestinationAddress
;
113 typedef struct _EFI_IP4_FRAGMENT_DATA
{
114 UINT32 FragmentLength
;
115 VOID
*FragmentBuffer
;
116 } EFI_IP4_FRAGMENT_DATA
;
119 typedef struct _EFI_IP4_OVERRIDE_DATA
{
120 EFI_IPv4_ADDRESS SourceAddress
;
121 EFI_IPv4_ADDRESS GatewayAddress
;
126 BOOLEAN DoNotFragment
;
127 } EFI_IP4_OVERRIDE_DATA
;
129 typedef struct _EFI_IP4_TRANSMIT_DATA
{
130 EFI_IPv4_ADDRESS DestinationAddress
;
132 EFI_IP4_OVERRIDE_DATA
*OverrideData
;
133 UINT32 OptionsLength
;
136 UINT32 TotalDataLength
;
137 UINT32 FragmentCount
;
138 EFI_IP4_FRAGMENT_DATA FragmentTable
[1];
139 } EFI_IP4_TRANSMIT_DATA
;
141 typedef struct _EFI_IP4_RECEIVE_DATA
{
143 EFI_EVENT RecycleSignal
;
146 EFI_IP4_HEADER
*Header
;
148 UINT32 OptionsLength
;
152 UINT32 FragmentCount
;
153 EFI_IP4_FRAGMENT_DATA FragmentTable
[1];
154 } EFI_IP4_RECEIVE_DATA
;
156 typedef struct _EFI_IP4_COMPLETION_TOKEN
{
161 EFI_IP4_RECEIVE_DATA
*RxData
;
162 EFI_IP4_TRANSMIT_DATA
*TxData
;
164 } EFI_IP4_COMPLETION_TOKEN
;
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
177 (EFIAPI
*EFI_IP4_CONFIGURE
) (
178 IN EFI_IP4_PROTOCOL
*This
,
179 IN EFI_IP4_CONFIG_DATA
*IpConfigData OPTIONAL
184 (EFIAPI
*EFI_IP4_GROUPS
) (
185 IN EFI_IP4_PROTOCOL
*This
,
187 IN EFI_IPv4_ADDRESS
*GroupAddress OPTIONAL
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
202 (EFIAPI
*EFI_IP4_TRANSMIT
) (
203 IN EFI_IP4_PROTOCOL
*This
,
204 IN EFI_IP4_COMPLETION_TOKEN
*Token
209 (EFIAPI
*EFI_IP4_RECEIVE
) (
210 IN EFI_IP4_PROTOCOL
*This
,
211 IN EFI_IP4_COMPLETION_TOKEN
*Token
216 (EFIAPI
*EFI_IP4_CANCEL
) (
217 IN EFI_IP4_PROTOCOL
*This
,
218 IN EFI_IP4_COMPLETION_TOKEN
*Token OPTIONAL
223 (EFIAPI
*EFI_IP4_POLL
) (
224 IN EFI_IP4_PROTOCOL
*This
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
;
239 extern EFI_GUID gEfiIp4ServiceBindingProtocolGuid
;
240 extern EFI_GUID gEfiIp4RegistryDataGuid
;
241 extern EFI_GUID gEfiIp4ProtocolGuid
;