/** @file\r
Definitions for EFI IPv4 Configuration II Protocol implementation.\r
\r
- Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>\r
\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php.\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#define DATA_ATTRIB_SIZE_FIXED 0x1\r
#define DATA_ATTRIB_VOLATILE 0x2\r
\r
-#define DHCP_TAG_PARA_LIST 55\r
-#define DHCP_TAG_NETMASK 1\r
-#define DHCP_TAG_ROUTER 3\r
-#define DHCP_TAG_DNS_SERVER 6\r
-\r
#define DATA_ATTRIB_SET(Attrib, Bits) (BOOLEAN)((Attrib) & (Bits))\r
#define SET_DATA_ATTRIB(Attrib, Bits) ((Attrib) |= (Bits))\r
+#define REMOVE_DATA_ATTRIB(Attrib, Bits) ((Attrib) &= (~Bits))\r
\r
typedef struct _IP4_CONFIG2_INSTANCE IP4_CONFIG2_INSTANCE;\r
\r
8 bytes.\r
@retval EFI_SUCCESS The specified configuration data for the EFI IPv4\r
network stack was set successfully.\r
- \r
+\r
**/\r
typedef\r
EFI_STATUS\r
@param[in, out] DataSize On input, in bytes, the size of Data. On output, in\r
bytes, the size of buffer required to store the specified\r
configuration data.\r
- @param[in] Data The data buffer in which the configuration data is returned. \r
+ @param[in] Data The data buffer in which the configuration data is returned.\r
Ignored if DataSize is ZERO.\r
\r
@retval EFI_BUFFER_TOO_SMALL The size of Data is too small for the specified\r
- configuration data, and the required size is \r
+ configuration data, and the required size is\r
returned in DataSize.\r
- @retval EFI_SUCCESS The specified configuration data was obtained successfully. \r
- \r
+ @retval EFI_SUCCESS The specified configuration data was obtained successfully.\r
+\r
**/\r
typedef\r
EFI_STATUS\r
#pragma pack()\r
\r
typedef struct {\r
- EFI_IP4_CONFIG2_POLICY Policy; ///< manual or automatic \r
+ EFI_IP4_CONFIG2_POLICY Policy; ///< manual or automatic\r
EFI_IP4_CONFIG2_MANUAL_ADDRESS *ManualAddress; ///< IP addresses\r
UINT32 ManualAddressCount; ///< IP addresses count\r
EFI_IPv4_ADDRESS *GatewayAddress; ///< Gateway address\r
EFI_IP4_CONFIG2_PROTOCOL Ip4Config2;\r
\r
EFI_IP4_CONFIG2_INTERFACE_INFO InterfaceInfo;\r
- EFI_IP4_CONFIG2_POLICY Policy; \r
+ EFI_IP4_CONFIG2_POLICY Policy;\r
IP4_CONFIG2_DATA_ITEM DataItem[Ip4Config2DataTypeMaximum];\r
\r
EFI_EVENT Dhcp4SbNotifyEvent;\r
UINT32 FailedIaAddressCount;\r
EFI_IPv4_ADDRESS *DeclineAddress;\r
UINT32 DeclineAddressCount;\r
- \r
+\r
IP4_FORM_CALLBACK_INFO CallbackInfo;\r
\r
IP4_CONFIG2_NVDATA Ip4NvData;\r
\r
//\r
// Configure the DHCP to request the routers and netmask\r
-// from server. The DHCP_TAG_NETMASK is included in Head.\r
+// from server. The DHCP4_TAG_NETMASK is included in Head.\r
//\r
#pragma pack(1)\r
typedef struct {\r
} IP4_CONFIG2_DHCP4_OPTION;\r
#pragma pack()\r
\r
+/**\r
+ Read the configuration data from variable storage according to the VarName and\r
+ gEfiIp4Config2ProtocolGuid. It checks the integrity of variable data. If the\r
+ data is corrupted, it clears the variable data to ZERO. Othewise, it outputs the\r
+ configuration data to IP4_CONFIG2_INSTANCE.\r
+\r
+ @param[in] VarName The pointer to the variable name\r
+ @param[in, out] Instance The pointer to the IP4 config2 instance data.\r
+\r
+ @retval EFI_NOT_FOUND The variable can not be found or already corrupted.\r
+ @retval EFI_OUT_OF_RESOURCES Fail to allocate resource to complete the operation.\r
+ @retval EFI_SUCCESS The configuration data was retrieved successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+Ip4Config2ReadConfigData (\r
+ IN CHAR16 *VarName,\r
+ IN OUT IP4_CONFIG2_INSTANCE *Instance\r
+ );\r
+\r
/**\r
Start the DHCP configuration for this IP service instance.\r
It will locates the EFI_IP4_CONFIG2_PROTOCOL, then start the\r
\r
@param[in] Instance The IP4 config2 instance to configure.\r
\r
- @retval EFI_SUCCESS The auto configuration is successfull started.\r
+ @retval EFI_SUCCESS The auto configuration is successfully started.\r
@retval Others Failed to start auto configuration.\r
\r
**/\r
IN OUT IP4_CONFIG2_INSTANCE *Instance\r
);\r
\r
+/**\r
+ Request Ip4AutoReconfigCallBackDpc as a DPC at TPL_CALLBACK.\r
+\r
+ @param Event The event that is signalled.\r
+ @param Context The IP4 service binding instance.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+Ip4AutoReconfigCallBack (\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
+ );\r
+\r
/**\r
Destroy the Dhcp4 child in IP4_CONFIG2_INSTANCE and release the resources.\r
\r