Revision: 18167
          http://sourceforge.net/p/edk2/code/18167
Author:   jiaxinwu
Date:     2015-08-06 05:45:32 +0000 (Thu, 06 Aug 2015)
Log Message:
-----------
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 <[email protected]>
Cc: Ye Ting <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiaxin Wu <[email protected]>
Reviewed-by: Fu Siyuan <[email protected]>
Reviewed-by: Ye Ting <[email protected]>
Reviewed-by: Qiu Shumin <[email protected]>

Modified Paths:
--------------
    trunk/edk2/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c

Modified: trunk/edk2/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c
===================================================================
--- trunk/edk2/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c     
2015-08-05 12:45:21 UTC (rev 18166)
+++ trunk/edk2/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c     
2015-08-06 05:45:32 UTC (rev 18167)
@@ -598,8 +598,7 @@
   //
   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;
 
@@ -607,6 +606,7 @@
   // 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;
@@ -628,6 +628,7 @@
     ((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));
   }


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to