1) Add one structure member – IpHdrLen in the EFI_NET_SESSION_DATA data structure.
2) Pass IP header length to upper-layer through this new member. The length of IP header will be used for ICMP6 packet generation in upper-layer.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9437
6f19259b-4bc3-4df7-8a09-
765794883524
EFI_IP_ADDRESS Source; ///< Source IP of the received packet\r
EFI_IP_ADDRESS Dest; ///< Destination IP of the received packet\r
IP_IO_IP_HEADER IpHdr; ///< IP header of the received packet\r
+ UINT32 IpHdrLen; ///< IP header length of the received packet. \r
+ ///< For IPv6, it includes the IP6 header \r
+ ///< length and extension header length. For\r
+ ///< IPv4, it includes the IP4 header length\r
+ ///< and options length.\r
UINT8 IpVersion; ///< The IP version of the received packet\r
} EFI_NET_SESSION_DATA;\r
\r
Session.Source.Addr[0] = EFI_IP4 (RxData->Ip4RxData.Header->SourceAddress);\r
Session.Dest.Addr[0] = EFI_IP4 (RxData->Ip4RxData.Header->DestinationAddress);\r
Session.IpHdr.Ip4Hdr = RxData->Ip4RxData.Header;\r
+ Session.IpHdrLen = RxData->Ip4RxData.HeaderLength;\r
Session.IpVersion = IP_VERSION_4;\r
} else {\r
\r
sizeof(EFI_IPv6_ADDRESS)\r
);\r
Session.IpHdr.Ip6Hdr = RxData->Ip6RxData.Header;\r
+ Session.IpHdrLen = RxData->Ip6RxData.HeaderLength;\r
Session.IpVersion = IP_VERSION_6;\r
} \r
\r