]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.h
BaseTools:Change the path of the file that Binary Cache
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Config2Impl.h
index e74b9ae407440e35739ae90ab8e78c7cbef19fdb..1716dde399ab59ce0aecbeeb455b4be861bef081 100644 (file)
@@ -1,15 +1,10 @@
 /** @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
-\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
@@ -73,7 +64,7 @@ typedef struct _IP4_CONFIG2_INSTANCE IP4_CONFIG2_INSTANCE;
                                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
@@ -90,14 +81,14 @@ EFI_STATUS
   @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
@@ -154,7 +145,7 @@ typedef struct {
 #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
@@ -180,7 +171,7 @@ struct _IP4_CONFIG2_INSTANCE {
   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
@@ -193,7 +184,7 @@ struct _IP4_CONFIG2_INSTANCE {
   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
@@ -201,15 +192,36 @@ struct _IP4_CONFIG2_INSTANCE {
 \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
   EFI_DHCP4_PACKET_OPTION Head;\r
   UINT8                   Route;\r
+  UINT8                   Dns;\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
@@ -217,7 +229,7 @@ typedef struct {
 \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
@@ -251,6 +263,20 @@ Ip4Config2CleanInstance (
   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