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
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.
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
{
83 EFI_IP4_CONFIG_DATA ConfigData
;
87 EFI_IPv4_ADDRESS
*GroupTable
;
90 EFI_IP4_ROUTE_TABLE
*RouteTable
;
93 EFI_IP4_ICMP_TYPE
*IcmpTypeList
;
97 typedef struct _EFI_IP4_HEADER
{
102 UINT16 Identification
;
103 UINT16 Fragmentation
;
107 EFI_IPv4_ADDRESS SourceAddress
;
108 EFI_IPv4_ADDRESS DestinationAddress
;
112 typedef struct _EFI_IP4_FRAGMENT_DATA
{
113 UINT32 FragmentLength
;
114 VOID
*FragmentBuffer
;
115 } EFI_IP4_FRAGMENT_DATA
;
118 typedef struct _EFI_IP4_OVERRIDE_DATA
{
119 EFI_IPv4_ADDRESS SourceAddress
;
120 EFI_IPv4_ADDRESS GatewayAddress
;
125 BOOLEAN DoNotFragment
;
126 } EFI_IP4_OVERRIDE_DATA
;
128 typedef struct _EFI_IP4_TRANSMIT_DATA
{
129 EFI_IPv4_ADDRESS DestinationAddress
;
131 EFI_IP4_OVERRIDE_DATA
*OverrideData
;
132 UINT32 OptionsLength
;
135 UINT32 TotalDataLength
;
136 UINT32 FragmentCount
;
137 EFI_IP4_FRAGMENT_DATA FragmentTable
[1];
138 } EFI_IP4_TRANSMIT_DATA
;
140 typedef struct _EFI_IP4_RECEIVE_DATA
{
142 EFI_EVENT RecycleSignal
;
145 EFI_IP4_HEADER
*Header
;
147 UINT32 OptionsLength
;
151 UINT32 FragmentCount
;
152 EFI_IP4_FRAGMENT_DATA FragmentTable
[1];
153 } EFI_IP4_RECEIVE_DATA
;
155 typedef struct _EFI_IP4_COMPLETION_TOKEN
{
160 EFI_IP4_RECEIVE_DATA
*RxData
;
161 EFI_IP4_TRANSMIT_DATA
*TxData
;
163 } EFI_IP4_COMPLETION_TOKEN
;
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
176 (EFIAPI
*EFI_IP4_CONFIGURE
) (
177 IN EFI_IP4_PROTOCOL
*This
,
178 IN EFI_IP4_CONFIG_DATA
*IpConfigData OPTIONAL
183 (EFIAPI
*EFI_IP4_GROUPS
) (
184 IN EFI_IP4_PROTOCOL
*This
,
186 IN EFI_IPv4_ADDRESS
*GroupAddress OPTIONAL
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
201 (EFIAPI
*EFI_IP4_TRANSMIT
) (
202 IN EFI_IP4_PROTOCOL
*This
,
203 IN EFI_IP4_COMPLETION_TOKEN
*Token
208 (EFIAPI
*EFI_IP4_RECEIVE
) (
209 IN EFI_IP4_PROTOCOL
*This
,
210 IN EFI_IP4_COMPLETION_TOKEN
*Token
215 (EFIAPI
*EFI_IP4_CANCEL
) (
216 IN EFI_IP4_PROTOCOL
*This
,
217 IN EFI_IP4_COMPLETION_TOKEN
*Token OPTIONAL
222 (EFIAPI
*EFI_IP4_POLL
) (
223 IN EFI_IP4_PROTOCOL
*This
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
;
238 extern EFI_GUID gEfiIp4ServiceBindingProtocolGuid
;
239 extern EFI_GUID gEfiIp4RegistryDataGuid
;
240 extern EFI_GUID gEfiIp4ProtocolGuid
;