From a09ee46d9a258ef08a931c0d412c62c98dbdb8aa Mon Sep 17 00:00:00 2001 From: qouyang Date: Tue, 17 Nov 2009 07:57:02 +0000 Subject: [PATCH] =?UTF-8?q?Updated=20the=20IpIoLiband=20and=20the=20change?= =?UTF-8?q?=20includes:=201)=20Add=20one=20structure=20member=20=E2=80=93?= =?UTF-8?q?=20IpHdrLen=20in=20the=20EFI=5FNET=5FSESSION=5FDATA=20data=20st?= =?UTF-8?q?ructure.=202)=20Pass=20IP=20header=20length=20to=20upper-layer?= =?UTF-8?q?=20through=20this=20new=20member.=20The=20length=20of=20IP=20he?= =?UTF-8?q?ader=20will=20be=20used=20for=20ICMP6=20packet=20generation=20i?= =?UTF-8?q?n=20upper-layer.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9437 6f19259b-4bc3-4df7-8a09-765794883524 --- MdeModulePkg/Include/Library/IpIoLib.h | 5 +++++ MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/MdeModulePkg/Include/Library/IpIoLib.h b/MdeModulePkg/Include/Library/IpIoLib.h index e079fe1f79..000e815809 100644 --- a/MdeModulePkg/Include/Library/IpIoLib.h +++ b/MdeModulePkg/Include/Library/IpIoLib.h @@ -160,6 +160,11 @@ typedef struct _EFI_NET_SESSION_DATA { EFI_IP_ADDRESS Source; ///< Source IP of the received packet EFI_IP_ADDRESS Dest; ///< Destination IP of the received packet IP_IO_IP_HEADER IpHdr; ///< IP header of the received packet + UINT32 IpHdrLen; ///< IP header length of the received packet. + ///< For IPv6, it includes the IP6 header + ///< length and extension header length. For + ///< IPv4, it includes the IP4 header length + ///< and options length. UINT8 IpVersion; ///< The IP version of the received packet } EFI_NET_SESSION_DATA; diff --git a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c index c94a79c4dc..4df49a5e7b 100644 --- a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c +++ b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c @@ -1057,6 +1057,7 @@ IpIoListenHandlerDpc ( Session.Source.Addr[0] = EFI_IP4 (RxData->Ip4RxData.Header->SourceAddress); Session.Dest.Addr[0] = EFI_IP4 (RxData->Ip4RxData.Header->DestinationAddress); Session.IpHdr.Ip4Hdr = RxData->Ip4RxData.Header; + Session.IpHdrLen = RxData->Ip4RxData.HeaderLength; Session.IpVersion = IP_VERSION_4; } else { @@ -1093,6 +1094,7 @@ IpIoListenHandlerDpc ( sizeof(EFI_IPv6_ADDRESS) ); Session.IpHdr.Ip6Hdr = RxData->Ip6RxData.Header; + Session.IpHdrLen = RxData->Ip6RxData.HeaderLength; Session.IpVersion = IP_VERSION_6; }