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