Reviewed-by: Jiaxin Wu <jiaxin...@intel.com>

-----Original Message-----
From: Wang, Fan 
Sent: Monday, July 20, 2015 11:04 AM
To: Ye, Ting; Fu, Siyuan; Wu, Jiaxin; edk2-devel@lists.01.org
Subject: [Patch] MdeModulePkg: Add old IPv4_DEVICE_PATH support for new IScsiDxe

GatewayIpAddress and SubnetMask do not exist in old IPv4_DEVICE_PATH, this will 
lead new IScsiDxe to error if IPv4_DEVICE_PATH in system is not updated. So add 
a judgement here to make old IPv4_DEVICE_PATH and new IScsiDxe can cowork.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: fanwang2 <fan.w...@intel.com>
---
 .../Universal/Network/IScsiDxe/IScsiMisc.c         | 27 ++++++++++++++--------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c 
b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c
index 61c407e..2661d8c 100644
--- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c
+++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c
@@ -812,19 +812,28 @@ IScsiGetTcpConnDevicePath (
 
       DPathNode->Ipv4.LocalPort       = 0;
       DPathNode->Ipv4.StaticIpAddress = 
         (BOOLEAN) (!Session->ConfigData.NvData.InitiatorInfoFromDhcp);
 
-      IP4_COPY_ADDRESS (
-        &DPathNode->Ipv4.GatewayIpAddress,
-        &Session->ConfigData.NvData.Gateway
-        );
-
-      IP4_COPY_ADDRESS (
-        &DPathNode->Ipv4.SubnetMask,
-        &Session->ConfigData.NvData.SubnetMask
-        );
+      //
+      //  Add a judgement here to support previous versions of 
IPv4_DEVICE_PATH.
+      //  In previous versions of IPv4_DEVICE_PATH, GatewayIpAddress and 
SubnetMask
+      //  do not exist.
+      //  In new version of IPv4_DEVICE_PATH, structcure length is 27.
+      //
+      if (sizeof (IPv4_DEVICE_PATH) == 27) {  
+
+        IP4_COPY_ADDRESS (
+          &DPathNode->Ipv4.GatewayIpAddress,
+          &Session->ConfigData.NvData.Gateway
+          );
+
+        IP4_COPY_ADDRESS (
+          &DPathNode->Ipv4.SubnetMask,
+          &Session->ConfigData.NvData.SubnetMask
+          );
+      }
 
       break;
     }
 
     DPathNode = (EFI_DEV_PATH *) NextDevicePathNode (&DPathNode->DevPath);
-- 
1.9.5.msysgit.1


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to