]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.c
1.fixed some issue to pass HII sct
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4ConfigDxe / Ip4ConfigNv.c
index c25e682320eba4b4544263b013689bed46152a19..3bcad8352c784933deaee00fe64728ce6ba7882a 100644 (file)
@@ -345,6 +345,13 @@ Ip4DeviceExtractConfig (
 \r
   *Progress = Request;\r
 \r
+  //\r
+  // Check Request data in <ConfigHdr>.\r
+  //\r
+  if (!HiiIsConfigHdrMatch (Request, &gEfiNicIp4ConfigVariableGuid, EFI_NIC_IP4_CONFIG_VARIABLE)) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
   Private = IP4CONFIG_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This);\r
   Ip4ConfigInstance = IP4_CONFIG_INSTANCE_FROM_IP4FORM_CALLBACK_INFO (Private);\r
 \r
@@ -372,7 +379,6 @@ Ip4DeviceExtractConfig (
                                Progress\r
                                );\r
 \r
-  *Progress = Request + StrLen (Request);\r
   FreePool (IfrDeviceNvData);\r
 \r
   return Status;\r
@@ -422,6 +428,7 @@ Ip4DeviceRouteConfig (
   EFI_STATUS                       Status;\r
   UINTN                            BufferSize;\r
   NIC_IP4_CONFIG_INFO              *IfrDeviceNvData;\r
+  NIC_IP4_CONFIG_INFO              *NicInfo;\r
   IP4_FORM_CALLBACK_INFO           *Private;\r
   EFI_HII_CONFIG_ROUTING_PROTOCOL  *HiiConfigRouting;\r
   IP4_CONFIG_INSTANCE              *Ip4ConfigInstance;\r
@@ -433,6 +440,13 @@ Ip4DeviceRouteConfig (
 \r
   *Progress = Configuration;\r
 \r
+  //\r
+  // Check Routing data in <ConfigHdr>.\r
+  //\r
+  if (!HiiIsConfigHdrMatch (Configuration, &gEfiNicIp4ConfigVariableGuid, EFI_NIC_IP4_CONFIG_VARIABLE)) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
   Private = IP4CONFIG_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This);\r
   Ip4ConfigInstance = IP4_CONFIG_INSTANCE_FROM_IP4FORM_CALLBACK_INFO (Private);\r
 \r
@@ -456,13 +470,14 @@ Ip4DeviceRouteConfig (
   if (!EFI_ERROR (Status)) {\r
     ZeroMem (&ZeroMac, sizeof (EFI_MAC_ADDRESS));\r
     if (CompareMem (&IfrDeviceNvData->NicAddr.MacAddr, &ZeroMac, IfrDeviceNvData->NicAddr.Len) != 0) {\r
-      Status = EfiNicIp4ConfigSetInfo (Ip4ConfigInstance, IfrDeviceNvData, TRUE);\r
+      BufferSize = sizeof (NIC_IP4_CONFIG_INFO) + sizeof (EFI_IP4_ROUTE_TABLE) * IfrDeviceNvData->Ip4Info.RouteTableSize;\r
+      NicInfo = AllocateCopyPool (BufferSize, IfrDeviceNvData); \r
+      Status = EfiNicIp4ConfigSetInfo (Ip4ConfigInstance, NicInfo, TRUE);\r
     } else {\r
       Status = EfiNicIp4ConfigSetInfo (Ip4ConfigInstance, NULL, TRUE);\r
     }\r
   }\r
 \r
-  *Progress = Configuration + StrLen (Configuration);\r
   FreePool (IfrDeviceNvData);\r
   return Status;\r
 \r
@@ -539,6 +554,7 @@ Ip4FormExtractConfig (
   OUT EFI_STRING                             *Results\r
   )\r
 {\r
+  *Progress = Request;\r
   return EFI_NOT_FOUND;\r
 }\r
 \r