\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
Progress\r
);\r
\r
- *Progress = Request + StrLen (Request);\r
FreePool (IfrDeviceNvData);\r
\r
return Status;\r
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
\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
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
OUT EFI_STRING *Results\r
)\r
{\r
+ *Progress = Request;\r
return EFI_NOT_FOUND;\r
}\r
\r