- if (!Private->Current->SessionConfigData.InitiatorInfoFromDhcp) {\r
- CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.LocalIp, sizeof (HostIp.v4));\r
- CopyMem (&SubnetMask.v4, &Private->Current->SessionConfigData.SubnetMask, sizeof (SubnetMask.v4));\r
- CopyMem (&Gateway.v4, &Private->Current->SessionConfigData.Gateway, sizeof (Gateway.v4));\r
-\r
- if ((Gateway.Addr[0] != 0)) {\r
- if (SubnetMask.Addr[0] == 0) {\r
- PopUpInvalidNotify (L"Gateway address is set but subnet mask is zero.");\r
+ Private->Current->SessionConfigData.Enabled = IfrNvData->Enabled;\r
+ Private->Current->SessionConfigData.InitiatorInfoFromDhcp = IfrNvData->InitiatorInfoFromDhcp;\r
+ Private->Current->SessionConfigData.TargetPort = IfrNvData->TargetPort;\r
+ if (Private->Current->SessionConfigData.TargetPort == 0) {\r
+ Private->Current->SessionConfigData.TargetPort = ISCSI_WELL_KNOWN_PORT;\r
+ }\r
+\r
+ Private->Current->SessionConfigData.TargetInfoFromDhcp = IfrNvData->TargetInfoFromDhcp;\r
+ Private->Current->AuthConfigData.CHAPType = IfrNvData->CHAPType;\r
+\r
+ //\r
+ // Only do full parameter validation if iSCSI is enabled on this device.\r
+ //\r
+ if (Private->Current->SessionConfigData.Enabled) {\r
+ //\r
+ // Validate the address configuration of the Initiator if DHCP isn't\r
+ // deployed.\r
+ //\r
+ if (!Private->Current->SessionConfigData.InitiatorInfoFromDhcp) {\r
+ CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.LocalIp, sizeof (HostIp.v4));\r
+ CopyMem (&SubnetMask.v4, &Private->Current->SessionConfigData.SubnetMask, sizeof (SubnetMask.v4));\r
+ CopyMem (&Gateway.v4, &Private->Current->SessionConfigData.Gateway, sizeof (Gateway.v4));\r
+\r
+ if ((Gateway.Addr[0] != 0)) {\r
+ if (SubnetMask.Addr[0] == 0) {\r
+ CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Gateway address is set but subnet mask is zero.", NULL);\r
+ Status = EFI_INVALID_PARAMETER;\r
+ break;\r
+ } else if (!IP4_NET_EQUAL (HostIp.Addr[0], Gateway.Addr[0], SubnetMask.Addr[0])) {\r
+ CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Local IP and Gateway are not in the same subnet.", NULL);\r
+ Status = EFI_INVALID_PARAMETER;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ //\r
+ // Validate target configuration if DHCP isn't deployed.\r
+ //\r
+ if (!Private->Current->SessionConfigData.TargetInfoFromDhcp) {\r
+ CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.TargetIp, sizeof (HostIp.v4));\r
+ if (IP4_IS_UNSPECIFIED (NTOHL (HostIp.Addr[0])) || IP4_IS_LOCAL_BROADCAST (NTOHL (HostIp.Addr[0]))) {\r
+ CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Target IP is invalid!", NULL);\r