]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Config2Nv.c
MdeModulePkg: Remove trailing white space
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Config2Nv.c
index 27dae5855380ea7caf93e8133bf19cfa92fa11ea..8dbb6a929fe4fd4f17b566b050d7ae00df53dbcb 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Helper functions for configuring or getting the parameters relating to Ip4.\r
 \r
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\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
@@ -23,7 +23,7 @@ CHAR16    mIp4Config2StorageName[]     = L"IP4_CONFIG2_IFR_NVDATA";
 \r
   @return The prefix length of the subnet mask.\r
   @retval 0 Other errors as indicated.\r
-  \r
+\r
 **/\r
 UINT8\r
 GetSubnetMaskPrefixLength (\r
@@ -65,7 +65,7 @@ GetSubnetMaskPrefixLength (
 \r
   @retval EFI_SUCCESS           The binary IP address is returned in Ip.\r
   @retval EFI_INVALID_PARAMETER The IP string is malformatted.\r
-  \r
+\r
 **/\r
 EFI_STATUS\r
 Ip4Config2StrToIp (\r
@@ -131,7 +131,7 @@ Ip4Config2StrToIp (
   @retval EFI_SUCCESS           The binary IP address list is returned in PtrIpList.\r
   @retval EFI_OUT_OF_RESOURCES  Error occurs in allocating memory.\r
   @retval EFI_INVALID_PARAMETER The IP string is malformatted.\r
-  \r
+\r
 **/\r
 EFI_STATUS\r
 Ip4Config2StrToIpList (\r
@@ -141,19 +141,19 @@ Ip4Config2StrToIpList (
   )\r
 {\r
   UINTN              BeginIndex;\r
-  UINTN              EndIndex; \r
+  UINTN              EndIndex;\r
   UINTN              Index;\r
   UINTN              IpIndex;\r
   CHAR16             *StrTemp;\r
   BOOLEAN            SpaceTag;\r
-  \r
+\r
   BeginIndex = 0;\r
   EndIndex   = BeginIndex;\r
   Index      = 0;\r
   IpIndex    = 0;\r
   StrTemp    = NULL;\r
   SpaceTag   = TRUE;\r
-  \r
+\r
   *PtrIpList = NULL;\r
   *IpCount   = 0;\r
 \r
@@ -173,14 +173,14 @@ Ip4Config2StrToIpList (
         SpaceTag = FALSE;\r
       }\r
     }\r
-     \r
+\r
     Index++;\r
   }\r
 \r
   if (*IpCount == 0) {\r
     return EFI_SUCCESS;\r
   }\r
-  \r
+\r
   //\r
   // Allocate buffer for IpList.\r
   //\r
@@ -203,10 +203,10 @@ Ip4Config2StrToIpList (
           *IpCount = 0;\r
           return EFI_OUT_OF_RESOURCES;\r
         }\r
-        \r
+\r
         CopyMem (StrTemp, Str + BeginIndex, (EndIndex - BeginIndex) * sizeof(CHAR16));\r
         *(StrTemp + (EndIndex - BeginIndex)) = L'\0';\r
-          \r
+\r
         if (Ip4Config2StrToIp (StrTemp, &((*PtrIpList)[IpIndex])) != EFI_SUCCESS) {\r
           FreePool(StrTemp);\r
           FreePool(*PtrIpList);\r
@@ -214,7 +214,7 @@ Ip4Config2StrToIpList (
           *IpCount = 0;\r
           return EFI_INVALID_PARAMETER;\r
         }\r
-          \r
+\r
         BeginIndex = EndIndex;\r
         IpIndex++;\r
 \r
@@ -228,9 +228,9 @@ Ip4Config2StrToIpList (
       EndIndex++;\r
       SpaceTag = FALSE;\r
     }\r
-    \r
+\r
     Index++;\r
-    \r
+\r
     if (*(Str + Index) == L'\0') {\r
       if (!SpaceTag) {\r
         StrTemp = AllocateZeroPool((EndIndex - BeginIndex + 1) * sizeof(CHAR16));\r
@@ -240,10 +240,10 @@ Ip4Config2StrToIpList (
           *IpCount = 0;\r
           return EFI_OUT_OF_RESOURCES;\r
         }\r
-        \r
+\r
         CopyMem (StrTemp, Str + BeginIndex, (EndIndex - BeginIndex) * sizeof(CHAR16));\r
         *(StrTemp + (EndIndex - BeginIndex)) = L'\0';\r
-        \r
+\r
         if (Ip4Config2StrToIp (StrTemp, &((*PtrIpList)[IpIndex])) != EFI_SUCCESS) {\r
           FreePool(StrTemp);\r
           FreePool(*PtrIpList);\r
@@ -255,7 +255,7 @@ Ip4Config2StrToIpList (
         FreePool(StrTemp);\r
       }\r
     }\r
-  } \r
+  }\r
 \r
   return EFI_SUCCESS;\r
 }\r
@@ -265,7 +265,7 @@ Ip4Config2StrToIpList (
 \r
   @param[in]   Ip   The IPv4 address.\r
   @param[out]  Str  The dotted IP string.\r
-  \r
+\r
 **/\r
 VOID\r
 Ip4Config2IpToStr (\r
@@ -275,8 +275,8 @@ Ip4Config2IpToStr (
 {\r
   UnicodeSPrint (\r
     Str,\r
-    2 * IP4_STR_MAX_SIZE, \r
-    L"%d.%d.%d.%d", \r
+    2 * IP4_STR_MAX_SIZE,\r
+    L"%d.%d.%d.%d",\r
     Ip->Addr[0],\r
     Ip->Addr[1],\r
     Ip->Addr[2],\r
@@ -286,15 +286,19 @@ Ip4Config2IpToStr (
 \r
 \r
 /**\r
-  Convert the IPv4 address list into string consists of several decimal \r
+  Convert the IPv4 address list into string consists of several decimal\r
   dotted IPv4 addresses separated by space.\r
 \r
   @param[in]   Ip        The IPv4 address list.\r
   @param[in]   IpCount   The size of IPv4 address list.\r
   @param[out]  Str       The string contains several decimal dotted\r
-                         IPv4 addresses separated by space.       \r
+                         IPv4 addresses separated by space.\r
+\r
+  @retval EFI_SUCCESS           Operation is success.\r
+  @retval EFI_OUT_OF_RESOURCES  Error occurs in allocating memory.\r
+\r
 **/\r
-VOID\r
+EFI_STATUS\r
 Ip4Config2IpListToStr (\r
   IN  EFI_IPv4_ADDRESS  *Ip,\r
   IN  UINTN             IpCount,\r
@@ -306,7 +310,7 @@ Ip4Config2IpListToStr (
   UINTN            StrIndex;\r
   CHAR16           *TempStr;\r
   EFI_IPv4_ADDRESS *TempIp;\r
-  \r
+\r
   Index    = 0;\r
   TemIndex = 0;\r
   StrIndex = 0;\r
@@ -317,13 +321,15 @@ Ip4Config2IpListToStr (
     TempIp = Ip + Index;\r
     if (TempStr == NULL) {\r
       TempStr = AllocateZeroPool(2 * IP4_STR_MAX_SIZE);\r
-      ASSERT(TempStr != NULL);\r
+      if (TempStr == NULL) {\r
+        return EFI_OUT_OF_RESOURCES;\r
+      }\r
     }\r
 \r
     UnicodeSPrint (\r
-      TempStr, \r
-      2 * IP4_STR_MAX_SIZE, \r
-      L"%d.%d.%d.%d", \r
+      TempStr,\r
+      2 * IP4_STR_MAX_SIZE,\r
+      L"%d.%d.%d.%d",\r
       TempIp->Addr[0],\r
       TempIp->Addr[1],\r
       TempIp->Addr[2],\r
@@ -336,7 +342,7 @@ Ip4Config2IpListToStr (
           Str[StrIndex++] = L'\0';\r
         } else {\r
           Str[StrIndex++] = L' ';\r
-        }  \r
+        }\r
         break;\r
       } else {\r
         Str[StrIndex++] = *(TempStr + TemIndex);\r
@@ -347,6 +353,8 @@ Ip4Config2IpListToStr (
   if (TempStr != NULL) {\r
     FreePool(TempStr);\r
   }\r
+\r
+  return EFI_SUCCESS;\r
 }\r
 \r
 /**\r
@@ -354,7 +362,7 @@ Ip4Config2IpListToStr (
 \r
   @param[in]    Event        The pointer of Event.\r
   @param[in]    Context      The pointer of Context.\r
-  \r
+\r
 **/\r
 VOID\r
 EFIAPI\r
@@ -376,7 +384,7 @@ Ip4Config2ManualAddressNotify (
                                  set successfully.\r
   @retval EFI_INVALID_PARAMETER  Source instance or target IFR data is not available.\r
   @retval Others                 Other errors as indicated.\r
-  \r
+\r
 **/\r
 EFI_STATUS\r
 Ip4Config2ConvertConfigNvDataToIfrNvData (\r
@@ -401,11 +409,11 @@ Ip4Config2ConvertConfigNvDataToIfrNvData (
   Ip4Info     = NULL;\r
   DnsAddress  = NULL;\r
   GatewaySize = sizeof (EFI_IPv4_ADDRESS);\r
-  \r
+\r
   if ((IfrNvData == NULL) || (Instance == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
-  \r
+\r
   NET_CHECK_SIGNATURE (Instance, IP4_CONFIG2_INSTANCE_SIGNATURE);\r
 \r
   IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance);\r
@@ -419,7 +427,7 @@ Ip4Config2ConvertConfigNvDataToIfrNvData (
 \r
   //\r
   // Get the Policy info.\r
-  // \r
+  //\r
   DataSize = sizeof (EFI_IP4_CONFIG2_POLICY);\r
   Status   = Ip4Config2->GetData (\r
                            Ip4Config2,\r
@@ -430,14 +438,14 @@ Ip4Config2ConvertConfigNvDataToIfrNvData (
   if (EFI_ERROR (Status)) {\r
     goto Exit;\r
   }\r
-  \r
+\r
   if (Policy == Ip4Config2PolicyStatic) {\r
     IfrNvData->DhcpEnable = FALSE;\r
   } else if (Policy == Ip4Config2PolicyDhcp) {\r
     IfrNvData->DhcpEnable = TRUE;\r
     goto Exit;\r
   }\r
-  \r
+\r
   //\r
   // Get the interface info.\r
   //\r
@@ -451,7 +459,7 @@ Ip4Config2ConvertConfigNvDataToIfrNvData (
   if (Status != EFI_BUFFER_TOO_SMALL) {\r
     return Status;\r
   }\r
-  \r
+\r
   Ip4Info = AllocateZeroPool (DataSize);\r
   if (Ip4Info == NULL) {\r
     Status = EFI_OUT_OF_RESOURCES;\r
@@ -467,7 +475,7 @@ Ip4Config2ConvertConfigNvDataToIfrNvData (
   if (EFI_ERROR (Status)) {\r
     goto Exit;\r
   }\r
-  \r
+\r
   //\r
   // Get the Gateway info.\r
   //\r
@@ -494,7 +502,7 @@ Ip4Config2ConvertConfigNvDataToIfrNvData (
   if ((Status != EFI_BUFFER_TOO_SMALL) && (Status != EFI_NOT_FOUND)) {\r
     goto Exit;\r
   }\r
-  \r
+\r
   DnsCount = (UINT32) (DnsSize / sizeof (EFI_IPv4_ADDRESS));\r
 \r
   if (DnsSize > 0) {\r
@@ -503,7 +511,7 @@ Ip4Config2ConvertConfigNvDataToIfrNvData (
       Status = EFI_OUT_OF_RESOURCES;\r
       goto Exit;\r
     }\r
-    \r
+\r
     Status = Ip4Config2->GetData (\r
                            Ip4Config2,\r
                            Ip4Config2DataTypeDnsServer,\r
@@ -518,7 +526,7 @@ Ip4Config2ConvertConfigNvDataToIfrNvData (
   Ip4Config2IpToStr (&Ip4Info->StationAddress, IfrNvData->StationAddress);\r
   Ip4Config2IpToStr (&Ip4Info->SubnetMask, IfrNvData->SubnetMask);\r
   Ip4Config2IpToStr (&GatewayAddress, IfrNvData->GatewayAddress);\r
-  Ip4Config2IpListToStr (DnsAddress, DnsCount, IfrNvData->DnsAddress);\r
+  Status = Ip4Config2IpListToStr (DnsAddress, DnsCount, IfrNvData->DnsAddress);\r
 \r
 Exit:\r
 \r
@@ -529,7 +537,7 @@ Exit:
   if (Ip4Info != NULL) {\r
     FreePool(Ip4Info);\r
   }\r
-  \r
+\r
   return Status;\r
 }\r
 \r
@@ -544,7 +552,7 @@ Exit:
                                  set successfully.\r
   @retval EFI_INVALID_PARAMETER  The address information for setting is invalid.\r
   @retval Others                 Other errors as indicated.\r
-  \r
+\r
 **/\r
 EFI_STATUS\r
 Ip4Config2ConvertIfrNvDataToConfigNvData (\r
@@ -552,9 +560,9 @@ Ip4Config2ConvertIfrNvDataToConfigNvData (
   IN OUT IP4_CONFIG2_INSTANCE       *Instance\r
   )\r
 {\r
-  EFI_STATUS                       Status;  \r
+  EFI_STATUS                       Status;\r
   EFI_IP4_CONFIG2_PROTOCOL         *Ip4Cfg2;\r
-  IP4_CONFIG2_NVDATA               *Ip4NvData; \r
+  IP4_CONFIG2_NVDATA               *Ip4NvData;\r
 \r
   EFI_IP_ADDRESS                   StationAddress;\r
   EFI_IP_ADDRESS                   SubnetMask;\r
@@ -573,15 +581,15 @@ Ip4Config2ConvertIfrNvDataToConfigNvData (
   Status          = EFI_SUCCESS;\r
   Ip4Cfg2         = &Instance->Ip4Config2;\r
   Ip4NvData       = &Instance->Ip4NvData;\r
-  \r
+\r
   DnsCount        = 0;\r
-  DnsAddress      = NULL; \r
-  \r
+  DnsAddress      = NULL;\r
+\r
   TimeoutEvent    = NULL;\r
   SetAddressEvent = NULL;\r
 \r
 \r
-  \r
+\r
   if (Instance == NULL || IfrFormNvData == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -589,10 +597,10 @@ Ip4Config2ConvertIfrNvDataToConfigNvData (
   if (IfrFormNvData->Configure != TRUE) {\r
     return EFI_SUCCESS;\r
   }\r
-  \r
+\r
   if (IfrFormNvData->DhcpEnable == TRUE) {\r
     Ip4NvData->Policy = Ip4Config2PolicyDhcp;\r
-    \r
+\r
     Status = Ip4Cfg2->SetData (\r
                         Ip4Cfg2,\r
                         Ip4Config2DataTypePolicy,\r
@@ -608,20 +616,23 @@ Ip4Config2ConvertIfrNvDataToConfigNvData (
     //\r
     Ip4NvData->Policy = Ip4Config2PolicyStatic;\r
 \r
-    Status = Ip4Config2StrToIp (IfrFormNvData->StationAddress, &StationAddress.v4);\r
-    if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (StationAddress.Addr[0]), 0)) {\r
-      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
-      return EFI_INVALID_PARAMETER;\r
-    }\r
-    \r
     Status = Ip4Config2StrToIp (IfrFormNvData->SubnetMask, &SubnetMask.v4);\r
     if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (GetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) {\r
       CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL);\r
       return EFI_INVALID_PARAMETER;\r
     }\r
-    \r
+\r
+    Status = Ip4Config2StrToIp (IfrFormNvData->StationAddress, &StationAddress.v4);\r
+    if (EFI_ERROR (Status) ||\r
+        (SubnetMask.Addr[0] != 0 && !NetIp4IsUnicast (NTOHL (StationAddress.Addr[0]), NTOHL (SubnetMask.Addr[0]))) ||\r
+        !Ip4StationAddressValid (NTOHL (StationAddress.Addr[0]), NTOHL (SubnetMask.Addr[0]))) {\r
+      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
+\r
     Status = Ip4Config2StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4);\r
-    if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) {\r
+    if (EFI_ERROR (Status) ||\r
+        (Gateway.Addr[0] != 0 && SubnetMask.Addr[0] != 0 && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), NTOHL (SubnetMask.Addr[0])))) {\r
       CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL);\r
       return EFI_INVALID_PARAMETER;\r
     }\r
@@ -630,20 +641,20 @@ Ip4Config2ConvertIfrNvDataToConfigNvData (
     if (!EFI_ERROR (Status) && DnsCount > 0) {\r
       for (Index = 0; Index < DnsCount; Index ++) {\r
         CopyMem (&Ip, &DnsAddress[Index], sizeof (IP4_ADDR));\r
-        if (!NetIp4IsUnicast (NTOHL (Ip), 0)) {\r
+        if (IP4_IS_UNSPECIFIED (NTOHL (Ip)) || IP4_IS_LOCAL_BROADCAST (NTOHL (Ip))) {\r
           CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL);\r
           FreePool(DnsAddress);\r
           return EFI_INVALID_PARAMETER;\r
-        } \r
-      } \r
+        }\r
+      }\r
     } else {\r
       if (EFI_ERROR (Status)) {\r
         CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL);\r
       }\r
     }\r
-    \r
+\r
     if (Ip4NvData->ManualAddress != NULL) {\r
-      FreePool(Ip4NvData->ManualAddress); \r
+      FreePool(Ip4NvData->ManualAddress);\r
     }\r
     Ip4NvData->ManualAddressCount = 1;\r
     Ip4NvData->ManualAddress = AllocateZeroPool(sizeof(EFI_IP4_CONFIG2_MANUAL_ADDRESS));\r
@@ -651,14 +662,14 @@ Ip4Config2ConvertIfrNvDataToConfigNvData (
       if (DnsAddress != NULL) {\r
         FreePool(DnsAddress);\r
       }\r
-      \r
+\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
     CopyMem(&Ip4NvData->ManualAddress->Address, &StationAddress.v4, sizeof(EFI_IPv4_ADDRESS));\r
     CopyMem(&Ip4NvData->ManualAddress->SubnetMask, &SubnetMask.v4, sizeof(EFI_IPv4_ADDRESS));\r
-    \r
+\r
     if (Ip4NvData->GatewayAddress != NULL) {\r
-      FreePool(Ip4NvData->GatewayAddress); \r
+      FreePool(Ip4NvData->GatewayAddress);\r
     }\r
     Ip4NvData->GatewayAddressCount = 1;\r
     Ip4NvData->GatewayAddress = AllocateZeroPool(sizeof(EFI_IPv4_ADDRESS));\r
@@ -669,9 +680,9 @@ Ip4Config2ConvertIfrNvDataToConfigNvData (
       return EFI_OUT_OF_RESOURCES;\r
     }\r
     CopyMem(Ip4NvData->GatewayAddress, &Gateway.v4, sizeof(EFI_IPv4_ADDRESS));\r
-    \r
+\r
     if (Ip4NvData->DnsAddress != NULL) {\r
-      FreePool(Ip4NvData->DnsAddress); \r
+      FreePool(Ip4NvData->DnsAddress);\r
     }\r
     Ip4NvData->DnsAddressCount = (UINT32) DnsCount;\r
     Ip4NvData->DnsAddress      = DnsAddress;\r
@@ -715,7 +726,7 @@ Ip4Config2ConvertIfrNvDataToConfigNvData (
     }\r
 \r
     IsAddressOk = FALSE;\r
-    \r
+\r
     Status = Ip4Cfg2->RegisterDataNotify (\r
                         Ip4Cfg2,\r
                         Ip4Config2DataTypeManualAddress,\r
@@ -780,12 +791,12 @@ Ip4Config2ConvertIfrNvDataToConfigNvData (
                           DataSize,\r
                           Ip4NvData->DnsAddress\r
                           );\r
-      \r
+\r
       if (EFI_ERROR (Status)) {\r
         goto Exit;\r
-      } \r
-    } \r
-  } \r
+      }\r
+    }\r
+  }\r
 \r
 Exit:\r
   if (SetAddressEvent != NULL) {\r
@@ -864,33 +875,33 @@ Ip4FormExtractConfig (
   OUT EFI_STRING                             *Results\r
   )\r
 {\r
-  EFI_STATUS                       Status;  \r
+  EFI_STATUS                       Status;\r
   IP4_CONFIG2_INSTANCE             *Ip4Config2Instance;\r
-  IP4_FORM_CALLBACK_INFO           *Private;  \r
+  IP4_FORM_CALLBACK_INFO           *Private;\r
   IP4_CONFIG2_IFR_NVDATA           *IfrFormNvData;\r
   EFI_STRING                       ConfigRequestHdr;\r
-  EFI_STRING                       ConfigRequest;  \r
+  EFI_STRING                       ConfigRequest;\r
   BOOLEAN                          AllocatedRequest;\r
   EFI_STRING                       FormResult;\r
   UINTN                            Size;\r
   UINTN                            BufferSize;\r
-  \r
-  Status             = EFI_SUCCESS; \r
+\r
+  if (Progress == NULL || Results == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
+  Status             = EFI_SUCCESS;\r
   IfrFormNvData      = NULL;\r
   ConfigRequest      = NULL;\r
-  FormResult         = NULL; \r
+  FormResult         = NULL;\r
   Size               = 0;\r
-  AllocatedRequest   = FALSE;    \r
-  ConfigRequest      = Request; \r
+  AllocatedRequest   = FALSE;\r
+  ConfigRequest      = Request;\r
   Private            = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS(This);\r
   Ip4Config2Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK(Private);\r
   BufferSize         = sizeof (IP4_CONFIG2_IFR_NVDATA);\r
   *Progress          = Request;\r
-  \r
-  if (Progress == NULL || Results == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-  \r
+\r
   //\r
   // Check Request data in <ConfigHdr>.\r
   //\r
@@ -899,9 +910,9 @@ Ip4FormExtractConfig (
     if (IfrFormNvData == NULL) {\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
-    \r
+\r
     Ip4Config2ConvertConfigNvDataToIfrNvData (Ip4Config2Instance, IfrFormNvData);\r
-    \r
+\r
     if ((Request == NULL) || (StrStr (Request, L"OFFSET") == NULL)) {\r
       //\r
       // Request has no request element, construct full request string.\r
@@ -911,9 +922,12 @@ Ip4FormExtractConfig (
       ConfigRequestHdr = HiiConstructConfigHdr (&gIp4Config2NvDataGuid, mIp4Config2StorageName, Private->ChildHandle);\r
       Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16);\r
       ConfigRequest = AllocateZeroPool (Size);\r
-      ASSERT (ConfigRequest != NULL);\r
+      if (ConfigRequest == NULL) {\r
+        Status = EFI_OUT_OF_RESOURCES;\r
+        goto Failure;\r
+      }\r
       AllocatedRequest = TRUE;\r
-      \r
+\r
       UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize);\r
       FreePool (ConfigRequestHdr);\r
     }\r
@@ -931,7 +945,7 @@ Ip4FormExtractConfig (
                                   );\r
 \r
     FreePool (IfrFormNvData);\r
-    \r
+\r
     //\r
     // Free the allocated config request string.\r
     //\r
@@ -944,7 +958,7 @@ Ip4FormExtractConfig (
       goto Failure;\r
     }\r
   }\r
-  \r
+\r
   if (Request == NULL || HiiIsConfigHdrMatch (Request, &gIp4Config2NvDataGuid, mIp4Config2StorageName)) {\r
     *Results = FormResult;\r
   } else {\r
@@ -1093,7 +1107,7 @@ Ip4FormRouteConfig (
                                  callback.Currently not implemented.\r
   @retval EFI_INVALID_PARAMETERS Passing in wrong parameter.\r
   @retval Others                 Other errors as indicated.\r
-  \r
+\r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
@@ -1110,7 +1124,7 @@ Ip4FormCallback (
   IP4_CONFIG2_INSTANCE      *Instance;\r
   IP4_CONFIG2_IFR_NVDATA    *IfrFormNvData;\r
   IP4_FORM_CALLBACK_INFO    *Private;\r
-  \r
+\r
   EFI_IP_ADDRESS            StationAddress;\r
   EFI_IP_ADDRESS            SubnetMask;\r
   EFI_IP_ADDRESS            Gateway;\r
@@ -1119,22 +1133,22 @@ Ip4FormCallback (
   UINTN                     DnsCount;\r
   UINTN                     Index;\r
   EFI_INPUT_KEY             Key;\r
-  \r
+\r
   IfrFormNvData = NULL;\r
   DnsCount      = 0;\r
-  DnsAddress    = NULL; \r
+  DnsAddress    = NULL;\r
 \r
   if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
     Private = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS(This);\r
     Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK(Private);\r
-    \r
+\r
     IfrFormNvData = AllocateZeroPool (sizeof (IP4_CONFIG2_IFR_NVDATA));\r
     if (IfrFormNvData == NULL) {\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
 \r
     //\r
-    // Retrive uncommitted data from Browser\r
+    // Retrieve uncommitted data from Browser\r
     //\r
     if (!HiiGetBrowserData (&gIp4Config2NvDataGuid, mIp4Config2StorageName, sizeof (IP4_CONFIG2_IFR_NVDATA), (UINT8 *) IfrFormNvData)) {\r
       FreePool (IfrFormNvData);\r
@@ -1146,7 +1160,7 @@ Ip4FormCallback (
     switch (QuestionId) {\r
     case KEY_LOCAL_IP:\r
       Status = Ip4Config2StrToIp (IfrFormNvData->StationAddress, &StationAddress.v4);\r
-      if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (StationAddress.Addr[0]), 0)) {\r
+      if (EFI_ERROR (Status) || IP4_IS_UNSPECIFIED (NTOHL (StationAddress.Addr[0])) || IP4_IS_LOCAL_BROADCAST (NTOHL (StationAddress.Addr[0]))) {\r
         CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
         Status = EFI_INVALID_PARAMETER;\r
       }\r
@@ -1162,34 +1176,34 @@ Ip4FormCallback (
 \r
     case KEY_GATE_WAY:\r
       Status = Ip4Config2StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4);\r
-      if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) {\r
+      if (EFI_ERROR (Status) || IP4_IS_LOCAL_BROADCAST(NTOHL(Gateway.Addr[0]))) {\r
         CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL);\r
         Status = EFI_INVALID_PARAMETER;\r
       }\r
       break;\r
-    \r
+\r
     case KEY_DNS:\r
       Status = Ip4Config2StrToIpList (IfrFormNvData->DnsAddress, &DnsAddress, &DnsCount);\r
       if (!EFI_ERROR (Status) && DnsCount > 0) {\r
         for (Index = 0; Index < DnsCount; Index ++) {\r
           CopyMem (&Ip, &DnsAddress[Index], sizeof (IP4_ADDR));\r
-          if (!NetIp4IsUnicast (NTOHL (Ip), 0)) {\r
+          if (IP4_IS_UNSPECIFIED (NTOHL (Ip)) || IP4_IS_LOCAL_BROADCAST (NTOHL (Ip))) {\r
             CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL);\r
             Status = EFI_INVALID_PARAMETER;\r
             break;\r
-          } \r
+          }\r
         }\r
       } else {\r
         if (EFI_ERROR (Status)) {\r
           CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL);\r
         }\r
       }\r
-      \r
-      if(DnsAddress != NULL) {  \r
+\r
+      if(DnsAddress != NULL) {\r
         FreePool(DnsAddress);\r
       }\r
       break;\r
-      \r
+\r
     case KEY_SAVE_CHANGES:\r
       Status = Ip4Config2ConvertIfrNvDataToConfigNvData (IfrFormNvData, Instance);\r
       *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
@@ -1218,7 +1232,7 @@ Ip4FormCallback (
   @retval EFI_SUCCESS              The HII Config Access protocol is installed.\r
   @retval EFI_OUT_OF_RESOURCES     Failed to allocate memory.\r
   @retval Others                   Other errors as indicated.\r
-  \r
+\r
 **/\r
 EFI_STATUS\r
 Ip4Config2FormInit (\r
@@ -1239,9 +1253,9 @@ Ip4Config2FormInit (
 \r
   IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance);\r
   ASSERT (IpSb != NULL);\r
-  \r
+\r
   CallbackInfo = &Instance->CallbackInfo;\r
-  \r
+\r
   CallbackInfo->Signature = IP4_FORM_CALLBACK_INFO_SIGNATURE;\r
 \r
   Status = gBS->HandleProtocol (\r
@@ -1330,26 +1344,26 @@ Ip4Config2FormInit (
   Status = NetLibGetMacString (IpSb->Controller, IpSb->Image, &MacString);\r
   if (!EFI_ERROR (Status)) {\r
     OldMenuString = HiiGetString (\r
-                      CallbackInfo->RegisteredHandle, \r
-                      STRING_TOKEN (STR_IP4_CONFIG2_FORM_HELP), \r
+                      CallbackInfo->RegisteredHandle,\r
+                      STRING_TOKEN (STR_IP4_CONFIG2_FORM_HELP),\r
                       NULL\r
                       );\r
     UnicodeSPrint (MenuString, 128, L"%s (MAC:%s)", OldMenuString, MacString);\r
     HiiSetString (\r
-      CallbackInfo->RegisteredHandle, \r
-      STRING_TOKEN (STR_IP4_CONFIG2_FORM_HELP), \r
-      MenuString, \r
+      CallbackInfo->RegisteredHandle,\r
+      STRING_TOKEN (STR_IP4_CONFIG2_FORM_HELP),\r
+      MenuString,\r
       NULL\r
       );\r
 \r
     UnicodeSPrint (PortString, 128, L"MAC:%s", MacString);\r
     HiiSetString (\r
-      CallbackInfo->RegisteredHandle,  \r
-      STRING_TOKEN (STR_IP4_DEVICE_FORM_HELP), \r
-      PortString, \r
+      CallbackInfo->RegisteredHandle,\r
+      STRING_TOKEN (STR_IP4_DEVICE_FORM_HELP),\r
+      PortString,\r
       NULL\r
       );\r
-    \r
+\r
     FreePool (MacString);\r
     FreePool (OldMenuString);\r
 \r
@@ -1391,7 +1405,7 @@ Ip4Config2FormUnload (
            IpSb->Image,\r
            CallbackInfo->ChildHandle\r
            );\r
-    \r
+\r
     //\r
     // Uninstall EFI_HII_CONFIG_ACCESS_PROTOCOL\r
     //\r