[PING][TRACERT] Fully support Win64 ICMP_ECHO_REPLY32 (#2427)
authorSerge Gautherie <32623169+SergeGautherie@users.noreply.github.com>
Mon, 9 Mar 2020 18:41:39 +0000 (19:41 +0100)
committerGitHub <noreply@github.com>
Mon, 9 Mar 2020 18:41:39 +0000 (19:41 +0100)
base/applications/network/ping/ping.c
base/applications/network/tracert/tracert.cpp

index dd1262e..435fe03 100644 (file)
@@ -433,9 +433,17 @@ Ping(void)
     ZeroMemory(SendBuffer, RequestSize);
 
     if (Family == AF_INET6)
+    {
         ReplySize += sizeof(ICMPV6_ECHO_REPLY);
+    }
     else
+    {
+#ifdef _WIN64
+        ReplySize += sizeof(ICMP_ECHO_REPLY32);
+#else
         ReplySize += sizeof(ICMP_ECHO_REPLY);
+#endif
+    }
 
     ReplySize += RequestSize + SIZEOF_ICMP_ERROR + SIZEOF_IO_STATUS_BLOCK;
 
@@ -566,10 +574,18 @@ Ping(void)
         }
         else
         {
+#ifdef _WIN64
+            PICMP_ECHO_REPLY32 pEchoReply;
+#else
             PICMP_ECHO_REPLY pEchoReply;
+#endif
             IPAddr *IP4Addr;
 
+#ifdef _WIN64
+            pEchoReply = (PICMP_ECHO_REPLY32)ReplyBuffer;
+#else
             pEchoReply = (PICMP_ECHO_REPLY)ReplyBuffer;
+#endif
 
             IP4Addr = (IPAddr *)&pEchoReply->Address;
             SockAddrIn.sin_family = AF_INET;
index 1cabd0a..8081a0a 100644 (file)
@@ -296,8 +296,13 @@ DecodeResponse(
     }
     else
     {
+#ifdef _WIN64
+        PICMP_ECHO_REPLY32 EchoReplyV4;
+        EchoReplyV4 = (PICMP_ECHO_REPLY32)ReplyBuffer;
+#else
         PICMP_ECHO_REPLY EchoReplyV4;
         EchoReplyV4 = (PICMP_ECHO_REPLY)ReplyBuffer;
+#endif
         Status = EchoReplyV4->Status;
         RoundTripTime = EchoReplyV4->RoundTripTime;
         AddressInfo = &EchoReplyV4->Address;