Revision: 18057
http://sourceforge.net/p/edk2/code/18057
Author: jljusten
Date: 2015-07-26 08:04:04 +0000 (Sun, 26 Jul 2015)
Log Message:
-----------
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.
Following UEFI2.5 spec of IPv4_DEVICE_PATH do a check before accessing
fields only defined in new version, 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 <[email protected]>
Reviewed-by: Ye Ting <[email protected]>
[[email protected]: rewrapped commit message]
Signed-off-by: Laszlo Ersek <[email protected]>
Modified Paths:
--------------
trunk/edk2/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c
trunk/edk2/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.h
Modified: trunk/edk2/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c
2015-07-26 08:03:59 UTC (rev 18056)
+++ trunk/edk2/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c
2015-07-26 08:04:04 UTC (rev 18057)
@@ -814,16 +814,25 @@
DPathNode->Ipv4.StaticIpAddress =
(BOOLEAN) (!Session->ConfigData.NvData.InitiatorInfoFromDhcp);
- IP4_COPY_ADDRESS (
- &DPathNode->Ipv4.GatewayIpAddress,
- &Session->ConfigData.NvData.Gateway
- );
+ //
+ // 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 (DevicePathNodeLength (&DPathNode->Ipv4) ==
IPv4_NODE_LEN_NEW_VERSIONS) {
- IP4_COPY_ADDRESS (
- &DPathNode->Ipv4.SubnetMask,
- &Session->ConfigData.NvData.SubnetMask
- );
+ IP4_COPY_ADDRESS (
+ &DPathNode->Ipv4.GatewayIpAddress,
+ &Session->ConfigData.NvData.Gateway
+ );
+ IP4_COPY_ADDRESS (
+ &DPathNode->Ipv4.SubnetMask,
+ &Session->ConfigData.NvData.SubnetMask
+ );
+ }
+
break;
}
Modified: trunk/edk2/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.h
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.h
2015-07-26 08:03:59 UTC (rev 18056)
+++ trunk/edk2/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.h
2015-07-26 08:04:04 UTC (rev 18057)
@@ -1,7 +1,7 @@
/** @file
Miscellaneous definitions for iSCSI driver.
-Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD
License
which accompanies this distribution. The full text of the license may be
found at
@@ -19,6 +19,11 @@
typedef struct _ISCSI_SESSION_CONFIG_DATA ISCSI_SESSION_CONFIG_DATA;
+///
+/// IPv4 Device Path Node Length
+///
+#define IPv4_NODE_LEN_NEW_VERSIONS 27
+
#pragma pack(1)
typedef struct {
BOOLEAN Enabled;
------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits