]> git.proxmox.com Git - mirror_edk2.git/commitdiff
NetworkPkg: Clean the previous address since the policy changed
authorJiaxin Wu <jiaxin.wu@intel.com>
Wed, 21 Sep 2016 07:13:37 +0000 (15:13 +0800)
committerJiaxin Wu <jiaxin.wu@intel.com>
Mon, 26 Sep 2016 13:25:23 +0000 (21:25 +0800)
The previous DNS server data will be retained after the policy
changes from Auto to Manual. This patch is used to clean the
previous dhcp configuration data.

Cc: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com>
Cc: Subramanian Sriram <sriram-s@hpe.com>
Cc: Ye Ting <ting.ye@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com>
Reviewed-by: Sriram Subramanian <sriram-s@hpe.com>
Reviewed-by: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com>
Tested-by: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com>
NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c

index 54522f9a730f8f1e334d4852f5b150721b65e0a1..75ecec1f32c561e935ba23b5c0ddd92de09e4475 100644 (file)
@@ -665,36 +665,35 @@ Ip6ConfigSetPolicy (
 \r
     return EFI_ABORTED;\r
   } else {\r
-\r
-    if (NewPolicy == Ip6ConfigPolicyAutomatic) {\r
-      //\r
-      // Clean the ManualAddress, Gateway and DnsServers, shrink the variable\r
-      // data size, and fire up all the related events.\r
-      //\r
-      DataItem           = &Instance->DataItem[Ip6ConfigDataTypeManualAddress];\r
-      if (DataItem->Data.Ptr != NULL) {\r
-        FreePool (DataItem->Data.Ptr);\r
-      }\r
-      DataItem->Data.Ptr = NULL;\r
-      DataItem->DataSize = 0;\r
-      DataItem->Status   = EFI_NOT_FOUND;\r
-      NetMapIterate (&DataItem->EventMap, Ip6ConfigSignalEvent, NULL);\r
-\r
-      DataItem           = &Instance->DataItem[Ip6ConfigDataTypeGateway];\r
-      if (DataItem->Data.Ptr != NULL) {\r
-        FreePool (DataItem->Data.Ptr);\r
-      }\r
-      DataItem->Data.Ptr = NULL;\r
-      DataItem->DataSize = 0;\r
-      DataItem->Status   = EFI_NOT_FOUND;\r
-      NetMapIterate (&DataItem->EventMap, Ip6ConfigSignalEvent, NULL);\r
-\r
-      DataItem           = &Instance->DataItem[Ip6ConfigDataTypeDnsServer];\r
-      DataItem->Data.Ptr = NULL;\r
-      DataItem->DataSize = 0;\r
-      DataItem->Status   = EFI_NOT_FOUND;\r
-      NetMapIterate (&DataItem->EventMap, Ip6ConfigSignalEvent, NULL);\r
-    } else {\r
+    //\r
+    // Clean the ManualAddress, Gateway and DnsServers, shrink the variable\r
+    // data size, and fire up all the related events.\r
+    //\r
+    DataItem           = &Instance->DataItem[Ip6ConfigDataTypeManualAddress];\r
+    if (DataItem->Data.Ptr != NULL) {\r
+      FreePool (DataItem->Data.Ptr);\r
+    }\r
+    DataItem->Data.Ptr = NULL;\r
+    DataItem->DataSize = 0;\r
+    DataItem->Status   = EFI_NOT_FOUND;\r
+    NetMapIterate (&DataItem->EventMap, Ip6ConfigSignalEvent, NULL);\r
+\r
+    DataItem           = &Instance->DataItem[Ip6ConfigDataTypeGateway];\r
+    if (DataItem->Data.Ptr != NULL) {\r
+      FreePool (DataItem->Data.Ptr);\r
+    }\r
+    DataItem->Data.Ptr = NULL;\r
+    DataItem->DataSize = 0;\r
+    DataItem->Status   = EFI_NOT_FOUND;\r
+    NetMapIterate (&DataItem->EventMap, Ip6ConfigSignalEvent, NULL);\r
+\r
+    DataItem           = &Instance->DataItem[Ip6ConfigDataTypeDnsServer];\r
+    DataItem->Data.Ptr = NULL;\r
+    DataItem->DataSize = 0;\r
+    DataItem->Status   = EFI_NOT_FOUND;\r
+    NetMapIterate (&DataItem->EventMap, Ip6ConfigSignalEvent, NULL);\r
+    \r
+    if (NewPolicy == Ip6ConfigPolicyManual) {\r
       //\r
       // The policy is changed from automatic to manual. Stop the DHCPv6 process\r
       // and destroy the DHCPv6 child.\r