From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (using TLSv1 with cipher CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id EA0DA1A1E6C for ; Wed, 21 Sep 2016 00:23:30 -0700 (PDT) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga104.fm.intel.com with ESMTP; 21 Sep 2016 00:23:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.30,372,1470726000"; d="scan'208";a="1054209644" Received: from jiaxinwu-mobl2.ccr.corp.intel.com ([10.239.196.121]) by orsmga002.jf.intel.com with ESMTP; 21 Sep 2016 00:23:15 -0700 From: Jiaxin Wu To: edk2-devel@lists.01.org Cc: Hegde Nagaraj P , Subramanian Sriram , Ye Ting Date: Wed, 21 Sep 2016 15:23:11 +0800 Message-Id: <1474442592-84980-2-git-send-email-jiaxin.wu@intel.com> X-Mailer: git-send-email 1.9.5.msysgit.1 In-Reply-To: <1474442592-84980-1-git-send-email-jiaxin.wu@intel.com> References: <1474442592-84980-1-git-send-email-jiaxin.wu@intel.com> Subject: [Patch 1/2] MdeModulePkg: Clean the previous address since the policy changed X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Sep 2016 07:23:31 -0000 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 --- .../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 75ad301..97b555b 100644 --- a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c +++ b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Impl.c @@ -1144,43 +1144,43 @@ Ip4Config2SetPolicy ( if (NewPolicy == Instance->Policy) { if (NewPolicy != Ip4Config2PolicyDhcp || Instance->DhcpSuccess) { 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 // and destroy the DHCPv4 child. // -- 1.9.5.msysgit.1