[edk2] [Patch] ShellPkg: Fix issue about ping fail with IPv4
Fix issue about ping fail with IPv4, which is caused by the incorrect checksum in request message. Cc: Fu Siyuan Cc: Ye Ting Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu --- 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
Re: [edk2] [Patch] ShellPkg: Fix issue about ping fail with IPv4
Reviewed-by: Fu Siyuan -Original Message- From: Wu, Jiaxin Sent: Thursday, August 06, 2015 12:08 PM To: edk2-devel@lists.01.org Cc: Fu, Siyuan; Ye, Ting Subject: [Patch] ShellPkg: Fix issue about ping fail with IPv4 Fix issue about ping fail with IPv4, which is caused by the incorrect checksum in request message. Cc: Fu Siyuan Cc: Ye Ting Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu --- 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
Re: [edk2] [Patch] ShellPkg: Fix issue about ping fail with IPv4
Reviewed-by: Ye Ting -Original Message- From: Fu, Siyuan Sent: Thursday, August 06, 2015 12:53 PM To: Wu, Jiaxin; edk2-devel@lists.01.org Cc: Ye, Ting Subject: RE: [Patch] ShellPkg: Fix issue about ping fail with IPv4 Reviewed-by: Fu Siyuan -Original Message- From: Wu, Jiaxin Sent: Thursday, August 06, 2015 12:08 PM To: edk2-devel@lists.01.org Cc: Fu, Siyuan; Ye, Ting Subject: [Patch] ShellPkg: Fix issue about ping fail with IPv4 Fix issue about ping fail with IPv4, which is caused by the incorrect checksum in request message. Cc: Fu Siyuan Cc: Ye Ting Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu --- 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
Re: [edk2] [Patch] ShellPkg: Fix issue about ping fail with IPv4
Reviewed-by: Qiu Shumin -Original Message- From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Jiaxin Wu Sent: Thursday, August 06, 2015 12:08 PM To: edk2-devel@lists.01.org Cc: Ye, Ting; Fu, Siyuan Subject: [edk2] [Patch] ShellPkg: Fix issue about ping fail with IPv4 Fix issue about ping fail with IPv4, which is caused by the incorrect checksum in request message. Cc: Fu Siyuan Cc: Ye Ting Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu --- 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 ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel