]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/IScsiDxe/IScsiConfig.c
IntelFsp2Pkg-Tools: GenCfgOpt.py shouldn't include specific UPD name
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiConfig.c
index 498221a33969a11013f37ef0dd48d77cbf0180e6..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
@@ -749,14 +750,15 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword (
     }\r
     CopyMem(IfrNvData->ISCSIDisplayAttemptList, AttemptNameList, ATTEMPT_NAME_LIST_SIZE);\r
 \r
+    ZeroMem (IfrNvData->ISCSIMacAddr, sizeof (IfrNvData->ISCSIMacAddr));\r
     NET_LIST_FOR_EACH (Entry, &mPrivate->NicInfoList) {\r
       NicInfo = NET_LIST_USER_STRUCT (Entry, ISCSI_NIC_INFO, Link);\r
       IScsiMacAddrToStr (\r
-      &NicInfo->PermanentAddress,\r
-      NicInfo->HwAddressSize,\r
-      NicInfo->VlanId,\r
-      MacString\r
-      );\r
+        &NicInfo->PermanentAddress,\r
+        NicInfo->HwAddressSize,\r
+        NicInfo->VlanId,\r
+        MacString\r
+        );\r
       CopyMem (\r
         IfrNvData->ISCSIMacAddr + StrLen (IfrNvData->ISCSIMacAddr),\r
         MacString,\r
@@ -764,7 +766,12 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword (
         );\r
 \r
       *(IfrNvData->ISCSIMacAddr + StrLen (IfrNvData->ISCSIMacAddr)) = L'/';\r
-     } \r
+    }\r
+\r
+    StringLen = StrLen (IfrNvData->ISCSIMacAddr);\r
+    if (StringLen > 0) {\r
+      *(IfrNvData->ISCSIMacAddr + StringLen - 1) = L'\0';\r
+    }\r
   }\r
 }\r
 \r
@@ -3415,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
@@ -3585,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