]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/IScsiDxe/IScsiConfig.c
MdeModulePkg/FrameBufferBltLib: Fix copying of unaligned memory
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiConfig.c
index c0dd305ecf6e5509fa0fb176ed39edf2a4135a3f..62df367da78afb23e62d729ccb5a7a1f1638ba2d 100644 (file)
@@ -541,6 +541,7 @@ IScsiConvertAttemptConfigDataToIfrNvData (
     IScsiIpToStr (&Ip, FALSE, IfrNvData->SubnetMask);\r
     CopyMem (&Ip.v4, &SessionConfigData->Gateway, sizeof (EFI_IPv4_ADDRESS));\r
     IScsiIpToStr (&Ip, FALSE, IfrNvData->Gateway);\r
+    ZeroMem (IfrNvData->TargetIp, sizeof (IfrNvData->TargetIp));\r
     if (SessionConfigData->TargetIp.v4.Addr[0] != '\0') {\r
       CopyMem (&Ip.v4, &SessionConfigData->TargetIp, sizeof (EFI_IPv4_ADDRESS));\r
       IScsiIpToStr (&Ip, FALSE, IfrNvData->TargetIp);\r
@@ -766,8 +767,10 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword (
 \r
       *(IfrNvData->ISCSIMacAddr + StrLen (IfrNvData->ISCSIMacAddr)) = L'/';\r
     }\r
-    if (StrLen (IfrNvData->ISCSIMacAddr) != 0) {\r
-      *(IfrNvData->ISCSIMacAddr + StrLen (IfrNvData->ISCSIMacAddr) - 1) = L'\0';\r
+\r
+    StringLen = StrLen (IfrNvData->ISCSIMacAddr);\r
+    if (StringLen > 0) {\r
+      *(IfrNvData->ISCSIMacAddr + StringLen - 1) = L'\0';\r
     }\r
   }\r
 }\r
@@ -3419,6 +3422,9 @@ IScsiFormCallback (
   ISCSI_CONFIG_IFR_NVDATA     OldIfrNvData;\r
   EFI_STATUS                  Status;\r
   EFI_INPUT_KEY               Key;\r
+  ISCSI_NIC_INFO              *NicInfo;\r
+\r
+  NicInfo = NULL;\r
 \r
   if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) {\r
     //\r
@@ -3589,10 +3595,36 @@ IScsiFormCallback (
     case KEY_IP_MODE:\r
       switch (Value->u8) {\r
       case IP_MODE_IP6:\r
+        NicInfo = IScsiGetNicInfoByIndex (Private->Current->NicIndex); \r
+        if(NicInfo == NULL) {\r
+          break;\r
+        }\r
+\r
+        if(!NicInfo->Ipv6Available) {                  \r
+             //\r
+          // Current NIC doesn't Support IPv6, hence use IPv4.    \r
+          //    \r
+          IfrNvData->IpMode = IP_MODE_IP4;\r
+               \r
+          CreatePopUp (\r
+            EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
+            &Key,\r
+            L"Current NIC doesn't Support IPv6!",\r
+            NULL\r
+            );\r
+        }\r
+         \r
       case IP_MODE_IP4:\r
+        ZeroMem (IfrNvData->LocalIp, sizeof (IfrNvData->LocalIp));\r
+        ZeroMem (IfrNvData->SubnetMask, sizeof (IfrNvData->SubnetMask));\r
+        ZeroMem (IfrNvData->Gateway, sizeof (IfrNvData->Gateway));\r
         ZeroMem (IfrNvData->TargetIp, sizeof (IfrNvData->TargetIp));\r
         Private->Current->AutoConfigureMode = 0;\r
-\r
+        ZeroMem (&Private->Current->SessionConfigData.LocalIp, sizeof (EFI_IP_ADDRESS));\r
+        ZeroMem (&Private->Current->SessionConfigData.SubnetMask, sizeof (EFI_IPv4_ADDRESS));\r
+        ZeroMem (&Private->Current->SessionConfigData.Gateway, sizeof (EFI_IP_ADDRESS));\r
+        ZeroMem (&Private->Current->SessionConfigData.TargetIp, sizeof (EFI_IP_ADDRESS));\r
+        \r
         break;\r
       }\r
 \r