From 24b41b75f883a948f6844e455b9de020e23c72d4 Mon Sep 17 00:00:00 2001 From: Jiaxin Wu Date: Wed, 21 Sep 2016 15:12:21 +0800 Subject: [PATCH] MdeModulePkg: Clean the previous address since the policy changed The previous DNS server data will be retained after the policy changes from Dhcp to Static. This patch is used to clean the previous dhcp configuration data. Cc: Hegde Nagaraj P Cc: Subramanian Sriram Cc: Ye Ting Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu Reviewed-by: Sriram Subramanian Reviewed-by: Hegde Nagaraj P Tested-by: Hegde Nagaraj P --- .../Universal/Network/Ip4Dxe/Ip4Config2Impl.c | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c index 75ad3011d0..97b555b5fe 100644 --- a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c +++ b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c @@ -1146,39 +1146,39 @@ Ip4Config2SetPolicy ( return EFI_ABORTED; } } else { + // + // The policy is changed. Clean the ManualAddress, Gateway and DnsServers, + // shrink the variable data size, and fire up all the related events. + // + DataItem = &Instance->DataItem[Ip4Config2DataTypeManualAddress]; + if (DataItem->Data.Ptr != NULL) { + FreePool (DataItem->Data.Ptr); + } + DataItem->Data.Ptr = NULL; + DataItem->DataSize = 0; + DataItem->Status = EFI_NOT_FOUND; + NetMapIterate (&DataItem->EventMap, Ip4Config2SignalEvent, NULL); + + DataItem = &Instance->DataItem[Ip4Config2DataTypeGateway]; + if (DataItem->Data.Ptr != NULL) { + FreePool (DataItem->Data.Ptr); + } + DataItem->Data.Ptr = NULL; + DataItem->DataSize = 0; + DataItem->Status = EFI_NOT_FOUND; + NetMapIterate (&DataItem->EventMap, Ip4Config2SignalEvent, NULL); + + DataItem = &Instance->DataItem[Ip4Config2DataTypeDnsServer]; + if (DataItem->Data.Ptr != NULL) { + FreePool (DataItem->Data.Ptr); + } + DataItem->Data.Ptr = NULL; + DataItem->DataSize = 0; + DataItem->Status = EFI_NOT_FOUND; + NetMapIterate (&DataItem->EventMap, Ip4Config2SignalEvent, NULL); + if (NewPolicy == Ip4Config2PolicyDhcp) { - // - // The policy is changed from static to dhcp: - // Clean the ManualAddress, Gateway and DnsServers, shrink the variable - // data size, and fire up all the related events. - // - DataItem = &Instance->DataItem[Ip4Config2DataTypeManualAddress]; - if (DataItem->Data.Ptr != NULL) { - FreePool (DataItem->Data.Ptr); - } - DataItem->Data.Ptr = NULL; - DataItem->DataSize = 0; - DataItem->Status = EFI_NOT_FOUND; - NetMapIterate (&DataItem->EventMap, Ip4Config2SignalEvent, NULL); - - DataItem = &Instance->DataItem[Ip4Config2DataTypeGateway]; - if (DataItem->Data.Ptr != NULL) { - FreePool (DataItem->Data.Ptr); - } - DataItem->Data.Ptr = NULL; - DataItem->DataSize = 0; - DataItem->Status = EFI_NOT_FOUND; - NetMapIterate (&DataItem->EventMap, Ip4Config2SignalEvent, NULL); - - DataItem = &Instance->DataItem[Ip4Config2DataTypeDnsServer]; - if (DataItem->Data.Ptr != NULL) { - FreePool (DataItem->Data.Ptr); - } - DataItem->Data.Ptr = NULL; - DataItem->DataSize = 0; - DataItem->Status = EFI_NOT_FOUND; SET_DATA_ATTRIB (DataItem->Attribute, DATA_ATTRIB_VOLATILE); - NetMapIterate (&DataItem->EventMap, Ip4Config2SignalEvent, NULL); } else { // // The policy is changed from dhcp to static. Stop the DHCPv4 process -- 2.39.2