On 07/22/15 02:57, Wang Fan wrote: > v3: > * Update the macro of Ip4 device path node length. > > 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 <fan.w...@intel.com> > --- > .../Universal/Network/IScsiDxe/IScsiMisc.c | 27 > ++++++++++++++-------- > .../Universal/Network/IScsiDxe/IScsiMisc.h | 7 +++++- > 2 files changed, 24 insertions(+), 10 deletions(-) > > diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c > b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c > index 61c407e..621fbc0 100644 > --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c > +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.c > @@ -1,9 +1,9 @@ > /** @file > Miscellaneous routines 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 > http://opensource.org/licenses/bsd-license.php > > @@ -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 (DevicePathNodeLength (&DPathNode->Ipv4) == > IPv4_NODE_LEN_NEW_VERSIONS) { > + > + 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); > diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.h > b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.h > index 052a90f..0bb7da0 100644 > --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.h > +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiMisc.h > @@ -1,9 +1,9 @@ > /** @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 > http://opensource.org/licenses/bsd-license.php > > @@ -17,10 +17,15 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > EXPRESS OR IMPLIED. > > #include <Library/BaseLib.h> > > 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; > > BOOLEAN InitiatorInfoFromDhcp; >
Until the SVN outage at sourceforge.net gets resolved, we plan to commit patches that are ready for merging to the "master" branch of the git repository at <https://github.com/tianocore/edk2-svn-offline.git>. Please see the announcement: http://thread.gmane.org/gmane.comp.bios.edk2.devel/227 This particular patch (or series) appears ready for merging, therefore it is being picked up: http://thread.gmane.org/gmane.comp.bios.edk2.devel/227/focus=251 Further development should be based on edk2-svn-offline/master, until the SVN outage is fixed. At that point the accumulated patches will be mass-committed from edk2-svn-offline/master to SVN. Thanks Laszlo ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel