xref: /freebsd/stand/efi/include/Protocol/Ip4Config2.h (revision 2a63c3be158216222d89a073dcbd6a72ee4aab5a)
1*da4961c7SRebecca Cran /** @file
2*da4961c7SRebecca Cran   This file provides a definition of the EFI IPv4 Configuration II
3*da4961c7SRebecca Cran   Protocol.
4*da4961c7SRebecca Cran 
5*da4961c7SRebecca Cran Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
6*da4961c7SRebecca Cran This program and the accompanying materials
7*da4961c7SRebecca Cran are licensed and made available under the terms and conditions of the BSD License
8*da4961c7SRebecca Cran which accompanies this distribution.  The full text of the license may be found at<BR>
9*da4961c7SRebecca Cran http://opensource.org/licenses/bsd-license.php
10*da4961c7SRebecca Cran 
11*da4961c7SRebecca Cran THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12*da4961c7SRebecca Cran WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13*da4961c7SRebecca Cran 
14*da4961c7SRebecca Cran @par Revision Reference:
15*da4961c7SRebecca Cran This Protocol is introduced in UEFI Specification 2.5
16*da4961c7SRebecca Cran 
17*da4961c7SRebecca Cran **/
18*da4961c7SRebecca Cran #ifndef __EFI_IP4CONFIG2_PROTOCOL_H__
19*da4961c7SRebecca Cran #define __EFI_IP4CONFIG2_PROTOCOL_H__
20*da4961c7SRebecca Cran 
21*da4961c7SRebecca Cran /* #include <Protocol/Ip4.h> */
22*da4961c7SRebecca Cran 
23*da4961c7SRebecca Cran #define EFI_IP4_CONFIG2_PROTOCOL_GUID \
24*da4961c7SRebecca Cran   { \
25*da4961c7SRebecca Cran     0x5b446ed1, 0xe30b, 0x4faa, {0x87, 0x1a, 0x36, 0x54, 0xec, 0xa3, 0x60, 0x80 } \
26*da4961c7SRebecca Cran   }
27*da4961c7SRebecca Cran 
28*da4961c7SRebecca Cran typedef struct _EFI_IP4_CONFIG2_PROTOCOL EFI_IP4_CONFIG2_PROTOCOL;
29*da4961c7SRebecca Cran 
30*da4961c7SRebecca Cran 
31*da4961c7SRebecca Cran ///
32*da4961c7SRebecca Cran /// EFI_IP4_CONFIG2_DATA_TYPE
33*da4961c7SRebecca Cran ///
34*da4961c7SRebecca Cran typedef enum {
35*da4961c7SRebecca Cran   ///
36*da4961c7SRebecca Cran   /// The interface information of the communication device this EFI
37*da4961c7SRebecca Cran   /// IPv4 Configuration II Protocol instance manages. This type of
38*da4961c7SRebecca Cran   /// data is read only. The corresponding Data is of type
39*da4961c7SRebecca Cran   /// EFI_IP4_CONFIG2_INTERFACE_INFO.
40*da4961c7SRebecca Cran   ///
41*da4961c7SRebecca Cran   Ip4Config2DataTypeInterfaceInfo,
42*da4961c7SRebecca Cran   ///
43*da4961c7SRebecca Cran   /// The general configuration policy for the EFI IPv4 network stack
44*da4961c7SRebecca Cran   /// running on the communication device this EFI IPv4
45*da4961c7SRebecca Cran   /// Configuration II Protocol instance manages. The policy will
46*da4961c7SRebecca Cran   /// affect other configuration settings. The corresponding Data is of
47*da4961c7SRebecca Cran   /// type EFI_IP4_CONFIG2_POLICY.
48*da4961c7SRebecca Cran   ///
49*da4961c7SRebecca Cran   Ip4Config2DataTypePolicy,
50*da4961c7SRebecca Cran   ///
51*da4961c7SRebecca Cran   /// The station addresses set manually for the EFI IPv4 network
52*da4961c7SRebecca Cran   /// stack. It is only configurable when the policy is
53*da4961c7SRebecca Cran   /// Ip4Config2PolicyStatic. The corresponding Data is of
54*da4961c7SRebecca Cran   /// type EFI_IP4_CONFIG2_MANUAL_ADDRESS. When DataSize
55*da4961c7SRebecca Cran   /// is 0 and Data is NULL, the existing configuration is cleared
56*da4961c7SRebecca Cran   /// from the EFI IPv4 Configuration II Protocol instance.
57*da4961c7SRebecca Cran   ///
58*da4961c7SRebecca Cran   Ip4Config2DataTypeManualAddress,
59*da4961c7SRebecca Cran   ///
60*da4961c7SRebecca Cran   /// The gateway addresses set manually for the EFI IPv4 network
61*da4961c7SRebecca Cran   /// stack running on the communication device this EFI IPv4
62*da4961c7SRebecca Cran   /// Configuration II Protocol manages. It is not configurable when
63*da4961c7SRebecca Cran   /// the policy is Ip4Config2PolicyDhcp. The gateway
64*da4961c7SRebecca Cran   /// addresses must be unicast IPv4 addresses. The corresponding
65*da4961c7SRebecca Cran   /// Data is a pointer to an array of EFI_IPv4_ADDRESS instances.
66*da4961c7SRebecca Cran   /// When DataSize is 0 and Data is NULL, the existing configuration
67*da4961c7SRebecca Cran   /// is cleared from the EFI IPv4 Configuration II Protocol instance.
68*da4961c7SRebecca Cran   ///
69*da4961c7SRebecca Cran   Ip4Config2DataTypeGateway,
70*da4961c7SRebecca Cran   ///
71*da4961c7SRebecca Cran   /// The DNS server list for the EFI IPv4 network stack running on
72*da4961c7SRebecca Cran   /// the communication device this EFI IPv4 Configuration II
73*da4961c7SRebecca Cran   /// Protocol manages. It is not configurable when the policy is
74*da4961c7SRebecca Cran   /// Ip4Config2PolicyDhcp. The DNS server addresses must be
75*da4961c7SRebecca Cran   /// unicast IPv4 addresses. The corresponding Data is a pointer to
76*da4961c7SRebecca Cran   /// an array of EFI_IPv4_ADDRESS instances. When DataSize
77*da4961c7SRebecca Cran   /// is 0 and Data is NULL, the existing configuration is cleared
78*da4961c7SRebecca Cran   /// from the EFI IPv4 Configuration II Protocol instance.
79*da4961c7SRebecca Cran   ///
80*da4961c7SRebecca Cran   Ip4Config2DataTypeDnsServer,
81*da4961c7SRebecca Cran   Ip4Config2DataTypeMaximum
82*da4961c7SRebecca Cran } EFI_IP4_CONFIG2_DATA_TYPE;
83*da4961c7SRebecca Cran 
84*da4961c7SRebecca Cran ///
85*da4961c7SRebecca Cran /// EFI_IP4_CONFIG2_INTERFACE_INFO related definitions
86*da4961c7SRebecca Cran ///
87*da4961c7SRebecca Cran #define EFI_IP4_CONFIG2_INTERFACE_INFO_NAME_SIZE 32
88*da4961c7SRebecca Cran 
89*da4961c7SRebecca Cran ///
90*da4961c7SRebecca Cran /// EFI_IP4_CONFIG2_INTERFACE_INFO
91*da4961c7SRebecca Cran ///
92*da4961c7SRebecca Cran typedef struct {
93*da4961c7SRebecca Cran   ///
94*da4961c7SRebecca Cran   /// The name of the interface. It is a NULL-terminated Unicode string.
95*da4961c7SRebecca Cran   ///
96*da4961c7SRebecca Cran   CHAR16                Name[EFI_IP4_CONFIG2_INTERFACE_INFO_NAME_SIZE];
97*da4961c7SRebecca Cran   ///
98*da4961c7SRebecca Cran   /// The interface type of the network interface. See RFC 1700,
99*da4961c7SRebecca Cran   /// section "Number Hardware Type".
100*da4961c7SRebecca Cran   ///
101*da4961c7SRebecca Cran   UINT8                 IfType;
102*da4961c7SRebecca Cran   ///
103*da4961c7SRebecca Cran   /// The size, in bytes, of the network interface's hardware address.
104*da4961c7SRebecca Cran   ///
105*da4961c7SRebecca Cran   UINT32                HwAddressSize;
106*da4961c7SRebecca Cran   ///
107*da4961c7SRebecca Cran   /// The hardware address for the network interface.
108*da4961c7SRebecca Cran   ///
109*da4961c7SRebecca Cran   EFI_MAC_ADDRESS       HwAddress;
110*da4961c7SRebecca Cran   ///
111*da4961c7SRebecca Cran   /// The station IPv4 address of this EFI IPv4 network stack.
112*da4961c7SRebecca Cran   ///
113*da4961c7SRebecca Cran   EFI_IPv4_ADDRESS      StationAddress;
114*da4961c7SRebecca Cran   ///
115*da4961c7SRebecca Cran   /// The subnet address mask that is associated with the station address.
116*da4961c7SRebecca Cran   ///
117*da4961c7SRebecca Cran   EFI_IPv4_ADDRESS      SubnetMask;
118*da4961c7SRebecca Cran   ///
119*da4961c7SRebecca Cran   /// Size of the following RouteTable, in bytes. May be zero.
120*da4961c7SRebecca Cran   ///
121*da4961c7SRebecca Cran   UINT32                RouteTableSize;
122*da4961c7SRebecca Cran   ///
123*da4961c7SRebecca Cran   /// The route table of the IPv4 network stack runs on this interface.
124*da4961c7SRebecca Cran   /// Set to NULL if RouteTableSize is zero. Type EFI_IP4_ROUTE_TABLE is defined in
125*da4961c7SRebecca Cran   /// EFI_IP4_PROTOCOL.GetModeData().
126*da4961c7SRebecca Cran   ///
127*da4961c7SRebecca Cran   EFI_IP4_ROUTE_TABLE   *RouteTable     OPTIONAL;
128*da4961c7SRebecca Cran } EFI_IP4_CONFIG2_INTERFACE_INFO;
129*da4961c7SRebecca Cran 
130*da4961c7SRebecca Cran ///
131*da4961c7SRebecca Cran /// EFI_IP4_CONFIG2_POLICY
132*da4961c7SRebecca Cran ///
133*da4961c7SRebecca Cran typedef enum {
134*da4961c7SRebecca Cran   ///
135*da4961c7SRebecca Cran   /// Under this policy, the Ip4Config2DataTypeManualAddress,
136*da4961c7SRebecca Cran   /// Ip4Config2DataTypeGateway and Ip4Config2DataTypeDnsServer configuration
137*da4961c7SRebecca Cran   /// data are required to be set manually. The EFI IPv4 Protocol will get all
138*da4961c7SRebecca Cran   /// required configuration such as IPv4 address, subnet mask and
139*da4961c7SRebecca Cran   /// gateway settings from the EFI IPv4 Configuration II protocol.
140*da4961c7SRebecca Cran   ///
141*da4961c7SRebecca Cran   Ip4Config2PolicyStatic,
142*da4961c7SRebecca Cran   ///
143*da4961c7SRebecca Cran   /// Under this policy, the Ip4Config2DataTypeManualAddress,
144*da4961c7SRebecca Cran   /// Ip4Config2DataTypeGateway and Ip4Config2DataTypeDnsServer configuration data are
145*da4961c7SRebecca Cran   /// not allowed to set via SetData(). All of these configurations are retrieved from DHCP
146*da4961c7SRebecca Cran   /// server or other auto-configuration mechanism.
147*da4961c7SRebecca Cran   ///
148*da4961c7SRebecca Cran   Ip4Config2PolicyDhcp,
149*da4961c7SRebecca Cran   Ip4Config2PolicyMax
150*da4961c7SRebecca Cran } EFI_IP4_CONFIG2_POLICY;
151*da4961c7SRebecca Cran 
152*da4961c7SRebecca Cran ///
153*da4961c7SRebecca Cran /// EFI_IP4_CONFIG2_MANUAL_ADDRESS
154*da4961c7SRebecca Cran ///
155*da4961c7SRebecca Cran typedef struct {
156*da4961c7SRebecca Cran   ///
157*da4961c7SRebecca Cran   /// The IPv4 unicast address.
158*da4961c7SRebecca Cran   ///
159*da4961c7SRebecca Cran   EFI_IPv4_ADDRESS        Address;
160*da4961c7SRebecca Cran   ///
161*da4961c7SRebecca Cran   /// The subnet mask.
162*da4961c7SRebecca Cran   ///
163*da4961c7SRebecca Cran   EFI_IPv4_ADDRESS        SubnetMask;
164*da4961c7SRebecca Cran } EFI_IP4_CONFIG2_MANUAL_ADDRESS;
165*da4961c7SRebecca Cran 
166*da4961c7SRebecca Cran /**
167*da4961c7SRebecca Cran   Set the configuration for the EFI IPv4 network stack running on the communication device this EFI
168*da4961c7SRebecca Cran   IPv4 Configuration II Protocol instance manages.
169*da4961c7SRebecca Cran 
170*da4961c7SRebecca Cran   This function is used to set the configuration data of type DataType for the EFI IPv4 network stack
171*da4961c7SRebecca Cran   running on the communication device this EFI IPv4 Configuration II Protocol instance manages.
172*da4961c7SRebecca Cran   The successfully configured data is valid after system reset or power-off.
173*da4961c7SRebecca Cran   The DataSize is used to calculate the count of structure instances in the Data for some
174*da4961c7SRebecca Cran   DataType that multiple structure instances are allowed.
175*da4961c7SRebecca Cran   This function is always non-blocking. When setting some typeof configuration data, an
176*da4961c7SRebecca Cran   asynchronous process is invoked to check the correctness of the data, such as doing address conflict
177*da4961c7SRebecca Cran   detection on the manually set local IPv4 address. EFI_NOT_READY is returned immediately to
178*da4961c7SRebecca Cran   indicate that such an asynchronous process is invoked and the process is not finished yet. The caller
179*da4961c7SRebecca Cran   willing to get the result of the asynchronous process is required to call RegisterDataNotify()
180*da4961c7SRebecca Cran   to register an event on the specified configuration data. Once the event is signaled, the caller can call
181*da4961c7SRebecca Cran   GetData()to get back the configuration data in order to know the result. For other types of
182*da4961c7SRebecca Cran   configuration data that do not require an asynchronous configuration process, the result of the
183*da4961c7SRebecca Cran   operation is immediately returned.
184*da4961c7SRebecca Cran 
185*da4961c7SRebecca Cran   @param[in]   This               Pointer to the EFI_IP4_CONFIG2_PROTOCOL instance.
186*da4961c7SRebecca Cran   @param[in]   DataType           The type of data to set.
187*da4961c7SRebecca Cran   @param[in]   DataSize           Size of the buffer pointed to by Data in bytes.
188*da4961c7SRebecca Cran   @param[in]   Data               The data buffer to set. The type ofthe data buffer is associated
189*da4961c7SRebecca Cran                                   with the DataType.
190*da4961c7SRebecca Cran 
191*da4961c7SRebecca Cran   @retval EFI_SUCCESS             The specified configuration data for the EFI IPv4 network stack is set
192*da4961c7SRebecca Cran                                   successfully.
193*da4961c7SRebecca Cran   @retval EFI_INVALID_PARAMETER   One or more of the following are TRUE:
194*da4961c7SRebecca Cran                                   This is NULL.
195*da4961c7SRebecca Cran                                   One or more fields in Data and DataSize do not match the
196*da4961c7SRebecca Cran                                   requirement of the data type indicated by DataType.
197*da4961c7SRebecca Cran   @retval EFI_WRITE_PROTECTED     The specified configuration data is read-only or the specified configuration
198*da4961c7SRebecca Cran                                   data can not be set under the current policy.
199*da4961c7SRebecca Cran   @retval EFI_ACCESS_DENIED       Another set operation on the specified configuration data is already in process.
200*da4961c7SRebecca Cran   @retval EFI_NOT_READY           An asynchronous process is invoked to set the specified configuration data and
201*da4961c7SRebecca Cran                                   the process is not finished yet.
202*da4961c7SRebecca Cran   @retval EFI_BAD_BUFFER_SIZE     The DataSize does not match the size of the type indicated by DataType.
203*da4961c7SRebecca Cran   @retval EFI_UNSUPPORTED         This DataType is not supported.
204*da4961c7SRebecca Cran   @retval EFI_OUT_OF_RESOURCES    Required system resources could not be allocated.
205*da4961c7SRebecca Cran   @retval EFI_DEVICE_ERROR        An unexpected system error or network error occurred.
206*da4961c7SRebecca Cran **/
207*da4961c7SRebecca Cran typedef
208*da4961c7SRebecca Cran EFI_STATUS
209*da4961c7SRebecca Cran (EFIAPI *EFI_IP4_CONFIG2_SET_DATA) (
210*da4961c7SRebecca Cran   IN EFI_IP4_CONFIG2_PROTOCOL   *This,
211*da4961c7SRebecca Cran   IN EFI_IP4_CONFIG2_DATA_TYPE  DataType,
212*da4961c7SRebecca Cran   IN UINTN                      DataSize,
213*da4961c7SRebecca Cran   IN VOID                       *Data
214*da4961c7SRebecca Cran   );
215*da4961c7SRebecca Cran 
216*da4961c7SRebecca Cran /**
217*da4961c7SRebecca Cran   Get the configuration data for the EFI IPv4 network stack running on the communication device this
218*da4961c7SRebecca Cran   EFI IPv4 Configuration II Protocol instance manages.
219*da4961c7SRebecca Cran 
220*da4961c7SRebecca Cran   This function returns the configuration data of type DataType for the EFI IPv4 network stack
221*da4961c7SRebecca Cran   running on the communication device this EFI IPv4 Configuration II Protocol instance manages.
222*da4961c7SRebecca Cran   The caller is responsible for allocating the buffer usedto return the specified configuration data and
223*da4961c7SRebecca Cran   the required size will be returned to the caller if the size of the buffer is too small.
224*da4961c7SRebecca Cran   EFI_NOT_READY is returned if the specified configuration data is not ready due to an already in
225*da4961c7SRebecca Cran   progress asynchronous configuration process. The caller can call RegisterDataNotify() to
226*da4961c7SRebecca Cran   register an event on the specified configuration data. Once the asynchronous configuration process is
227*da4961c7SRebecca Cran   finished, the event will be signaled and a subsequent GetData() call will return the specified
228*da4961c7SRebecca Cran   configuration data.
229*da4961c7SRebecca Cran 
230*da4961c7SRebecca Cran   @param[in]   This               Pointer to the EFI_IP4_CONFIG2_PROTOCOL instance.
231*da4961c7SRebecca Cran   @param[in]   DataType           The type of data to get.
232*da4961c7SRebecca Cran   @param[out]  DataSize           On input, in bytes, the size of Data. On output, in bytes, the size
233*da4961c7SRebecca Cran                                   of buffer required to store the specified configuration data.
234*da4961c7SRebecca Cran   @param[in]   Data               The data buffer in which the configuration data is returned. The
235*da4961c7SRebecca Cran                                   type of the data buffer is associated with the DataType. Ignored
236*da4961c7SRebecca Cran                                   if DataSize is 0.
237*da4961c7SRebecca Cran 
238*da4961c7SRebecca Cran   @retval EFI_SUCCESS             The specified configuration data is got successfully.
239*da4961c7SRebecca Cran   @retval EFI_INVALID_PARAMETER   One or more of the followings are TRUE:
240*da4961c7SRebecca Cran                                   This is NULL.
241*da4961c7SRebecca Cran                                   DataSize is NULL.
242*da4961c7SRebecca Cran                                   Data is NULL if *DataSizeis not zero.
243*da4961c7SRebecca Cran   @retval EFI_BUFFER_TOO_SMALL    The size of Data is too small for the specified configuration data
244*da4961c7SRebecca Cran                                   and the required size is returned in DataSize.
245*da4961c7SRebecca Cran   @retval EFI_NOT_READY           The specified configuration data is not ready due to an already in
246*da4961c7SRebecca Cran                                   progress asynchronous configuration process.
247*da4961c7SRebecca Cran   @retval EFI_NOT_FOUND           The specified configuration data is not found.
248*da4961c7SRebecca Cran **/
249*da4961c7SRebecca Cran typedef
250*da4961c7SRebecca Cran EFI_STATUS
251*da4961c7SRebecca Cran (EFIAPI *EFI_IP4_CONFIG2_GET_DATA) (
252*da4961c7SRebecca Cran   IN EFI_IP4_CONFIG2_PROTOCOL     *This,
253*da4961c7SRebecca Cran   IN EFI_IP4_CONFIG2_DATA_TYPE    DataType,
254*da4961c7SRebecca Cran   IN OUT UINTN                    *DataSize,
255*da4961c7SRebecca Cran   IN VOID                         *Data        OPTIONAL
256*da4961c7SRebecca Cran   );
257*da4961c7SRebecca Cran 
258*da4961c7SRebecca Cran /**
259*da4961c7SRebecca Cran   Register an event that is to be signaled whenever a configuration process on the specified
260*da4961c7SRebecca Cran   configuration data is done.
261*da4961c7SRebecca Cran 
262*da4961c7SRebecca Cran   This function registers an event that is to be signaled whenever a configuration process on the
263*da4961c7SRebecca Cran   specified configuration data is done. An event can be registered for different DataType
264*da4961c7SRebecca Cran   simultaneously and the caller is responsible for determining which type of configuration data causes
265*da4961c7SRebecca Cran   the signaling of the event in such case.
266*da4961c7SRebecca Cran 
267*da4961c7SRebecca Cran   @param[in]   This               Pointer to the EFI_IP4_CONFIG2_PROTOCOL instance.
268*da4961c7SRebecca Cran   @param[in]   DataType           The type of data to unregister the event for.
269*da4961c7SRebecca Cran   @param[in]   Event              The event to register.
270*da4961c7SRebecca Cran 
271*da4961c7SRebecca Cran   @retval EFI_SUCCESS             The notification event for the specified configuration data is
272*da4961c7SRebecca Cran                                   registered.
273*da4961c7SRebecca Cran   @retval EFI_INVALID_PARAMETER   This is NULL or Event is NULL.
274*da4961c7SRebecca Cran   @retval EFI_UNSUPPORTED         The configuration data type specified by DataType is not supported.
275*da4961c7SRebecca Cran   @retval EFI_OUT_OF_RESOURCES    Required system resources could not be allocated.
276*da4961c7SRebecca Cran   @retval EFI_ACCESS_DENIED       The Event is already registered for the DataType.
277*da4961c7SRebecca Cran **/
278*da4961c7SRebecca Cran typedef
279*da4961c7SRebecca Cran EFI_STATUS
280*da4961c7SRebecca Cran (EFIAPI *EFI_IP4_CONFIG2_REGISTER_NOTIFY) (
281*da4961c7SRebecca Cran   IN EFI_IP4_CONFIG2_PROTOCOL     *This,
282*da4961c7SRebecca Cran   IN EFI_IP4_CONFIG2_DATA_TYPE    DataType,
283*da4961c7SRebecca Cran   IN EFI_EVENT                    Event
284*da4961c7SRebecca Cran   );
285*da4961c7SRebecca Cran 
286*da4961c7SRebecca Cran /**
287*da4961c7SRebecca Cran   Remove a previously registered event for the specified configuration data.
288*da4961c7SRebecca Cran 
289*da4961c7SRebecca Cran   This function removes a previously registeredevent for the specified configuration data.
290*da4961c7SRebecca Cran 
291*da4961c7SRebecca Cran   @param[in]   This               Pointer to the EFI_IP4_CONFIG2_PROTOCOL instance.
292*da4961c7SRebecca Cran   @param[in]   DataType           The type of data to remove the previously registered event for.
293*da4961c7SRebecca Cran   @param[in]   Event              The event to unregister.
294*da4961c7SRebecca Cran 
295*da4961c7SRebecca Cran   @retval EFI_SUCCESS             The event registered for the specified configuration data is removed.
296*da4961c7SRebecca Cran   @retval EFI_INVALID_PARAMETER   This is NULL or Event is NULL.
297*da4961c7SRebecca Cran   @retval EFI_NOT_FOUND           The Eventhas not been registered for the specified DataType.
298*da4961c7SRebecca Cran **/
299*da4961c7SRebecca Cran typedef
300*da4961c7SRebecca Cran EFI_STATUS
301*da4961c7SRebecca Cran (EFIAPI *EFI_IP4_CONFIG2_UNREGISTER_NOTIFY) (
302*da4961c7SRebecca Cran   IN EFI_IP4_CONFIG2_PROTOCOL     *This,
303*da4961c7SRebecca Cran   IN EFI_IP4_CONFIG2_DATA_TYPE    DataType,
304*da4961c7SRebecca Cran   IN EFI_EVENT                    Event
305*da4961c7SRebecca Cran   );
306*da4961c7SRebecca Cran 
307*da4961c7SRebecca Cran ///
308*da4961c7SRebecca Cran /// The EFI_IP4_CONFIG2_PROTOCOL is designed to be the central repository for the common
309*da4961c7SRebecca Cran /// configurations and the administrator configurable settings for the EFI IPv4 network stack.
310*da4961c7SRebecca Cran /// An EFI IPv4 Configuration II Protocol instance will be installed on each communication device that
311*da4961c7SRebecca Cran /// the EFI IPv4 network stack runs on.
312*da4961c7SRebecca Cran ///
313*da4961c7SRebecca Cran struct _EFI_IP4_CONFIG2_PROTOCOL {
314*da4961c7SRebecca Cran   EFI_IP4_CONFIG2_SET_DATA           SetData;
315*da4961c7SRebecca Cran   EFI_IP4_CONFIG2_GET_DATA           GetData;
316*da4961c7SRebecca Cran   EFI_IP4_CONFIG2_REGISTER_NOTIFY    RegisterDataNotify;
317*da4961c7SRebecca Cran   EFI_IP4_CONFIG2_UNREGISTER_NOTIFY  UnregisterDataNotify;
318*da4961c7SRebecca Cran };
319*da4961c7SRebecca Cran 
320*da4961c7SRebecca Cran extern EFI_GUID gEfiIp4Config2ProtocolGuid;
321*da4961c7SRebecca Cran 
322*da4961c7SRebecca Cran #endif
323*da4961c7SRebecca Cran 
324