Fix issue about ping fail with IPv4, which is caused by the incorrect checksum in request message.
Cc: Fu Siyuan <siyuan...@intel.com> Cc: Ye Ting <ting...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu <jiaxin...@intel.com> --- ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c index 643be23..cc3c0c3 100644 --- a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c +++ b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c @@ -596,19 +596,19 @@ PingGenerateToken ( // // Assembly echo request packet. // Request->Type = (UINT8)(Private->IpChoice==PING_IP_CHOICE_IP6?ICMP_V6_ECHO_REQUEST:ICMP_V4_ECHO_REQUEST); Request->Code = 0; - Request->SequenceNum = SequenceNum; - Request->TimeStamp = TimeStamp; + Request->SequenceNum = SequenceNum; Request->Identifier = 0; Request->Checksum = 0; // // Assembly token for transmit. // if (Private->IpChoice==PING_IP_CHOICE_IP6) { + Request->TimeStamp = TimeStamp; ((EFI_IP6_TRANSMIT_DATA*)TxData)->ExtHdrsLength = 0; ((EFI_IP6_TRANSMIT_DATA*)TxData)->ExtHdrs = NULL; ((EFI_IP6_TRANSMIT_DATA*)TxData)->OverrideData = 0; ((EFI_IP6_TRANSMIT_DATA*)TxData)->DataLength = Private->BufferSize; ((EFI_IP6_TRANSMIT_DATA*)TxData)->FragmentCount = 1; @@ -626,10 +626,11 @@ PingGenerateToken ( ((EFI_IP4_TRANSMIT_DATA*)TxData)->DestinationAddress.Addr[1] = Private->DstAddress[1]; ((EFI_IP4_TRANSMIT_DATA*)TxData)->DestinationAddress.Addr[2] = Private->DstAddress[2]; ((EFI_IP4_TRANSMIT_DATA*)TxData)->DestinationAddress.Addr[3] = Private->DstAddress[3]; HeadSum = NetChecksum ((UINT8 *) Request, Private->BufferSize); + Request->TimeStamp = TimeStamp; TempChecksum = NetChecksum ((UINT8 *) &Request->TimeStamp, sizeof (UINT64)); Request->Checksum = (UINT16)(~NetAddChecksum (HeadSum, TempChecksum)); } -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel