]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c
MdeModulePkg: Add old IPv4_DEVICE_PATH support for new IScsiDxe
[mirror_edk2.git] / MdeModulePkg / Universal / Network / IScsiDxe / IScsiMisc.c
index 61c407e6fff780d21dc2b23791635a6e20f3892e..621fbc00e4a09cbe172d3fadec2714fe0e646d48 100644 (file)
@@ -814,15 +814,24 @@ IScsiGetTcpConnDevicePath (
       DPathNode->Ipv4.StaticIpAddress = \r
         (BOOLEAN) (!Session->ConfigData.NvData.InitiatorInfoFromDhcp);\r
 \r
-      IP4_COPY_ADDRESS (\r
-        &DPathNode->Ipv4.GatewayIpAddress,\r
-        &Session->ConfigData.NvData.Gateway\r
-        );\r
-\r
-      IP4_COPY_ADDRESS (\r
-        &DPathNode->Ipv4.SubnetMask,\r
-        &Session->ConfigData.NvData.SubnetMask\r
-        );\r
+      //\r
+      //  Add a judgement here to support previous versions of IPv4_DEVICE_PATH.\r
+      //  In previous versions of IPv4_DEVICE_PATH, GatewayIpAddress and SubnetMask\r
+      //  do not exist.\r
+      //  In new version of IPv4_DEVICE_PATH, structcure length is 27.\r
+      //\r
+      if (DevicePathNodeLength (&DPathNode->Ipv4) == IPv4_NODE_LEN_NEW_VERSIONS) {  \r
+\r
+        IP4_COPY_ADDRESS (\r
+          &DPathNode->Ipv4.GatewayIpAddress,\r
+          &Session->ConfigData.NvData.Gateway\r
+          );\r
+\r
+        IP4_COPY_ADDRESS (\r
+          &DPathNode->Ipv4.SubnetMask,\r
+          &Session->ConfigData.NvData.SubnetMask\r
+          );\r
+      }\r
 \r
       break;\r
     }\r