]> git.ipfire.org Git - thirdparty/mtr.git/commitdiff
Merge pull request #274 from commonism/udp_checksum
authorRoger Wolff <R.E.Wolff@BitWizard.nl>
Sun, 28 Jul 2019 14:46:02 +0000 (16:46 +0200)
committerGitHub <noreply@github.com>
Sun, 28 Jul 2019 14:46:02 +0000 (16:46 +0200)
udp checksum is incorrect

1  2 
Makefile.am
packet/probe.c
packet/probe_unix.c

diff --cc Makefile.am
Simple merge
diff --cc packet/probe.c
index 21ec91890086e19e00b9d05ea96d57569f5f0b6d,0441efde726ad3e4aa95d04565d5799ebe24d54a..0177e97e91c3dd81d53c1fb53f35a83c68e5b134
@@@ -279,17 -260,15 +265,13 @@@ void respond_to_probe
  
      if (remote_addr->ss_family == AF_INET6) {
          ip_argument = "ip-6";
-         sockaddr6 = (struct sockaddr_in6 *) remote_addr;
-         addr = &sockaddr6->sin6_addr;
      } else {
          ip_argument = "ip-4";
-         sockaddr4 = (struct sockaddr_in *) remote_addr;
-         addr = &sockaddr4->sin_addr;
      }
  
-     if (inet_ntop(remote_addr->ss_family, addr, ip_text, IP_TEXT_LENGTH) ==
+     if (inet_ntop(remote_addr->ss_family, sockaddr_addr_offset(remote_addr), ip_text, INET6_ADDRSTRLEN) ==
          NULL) {
 -
 -        perror("inet_ntop failure");
 -        exit(EXIT_FAILURE);
 +        error(EXIT_FAILURE, errno, "inet_ntop failure");
      }
  
      snprintf(response, COMMAND_BUFFER_SIZE,
index 3691e662bc0d5e6c323ee571e430942561ab870b,b3177e513985b1cf535aa19b5d51aacd0fb143ac..363930f12b9d30d8984087c3771beaf9ae9e4d76
@@@ -155,11 -147,12 +152,11 @@@ void check_length_order
      /*  First attempt to ping the localhost with network byte order  */
      net_state->platform.ip_length_host_order = false;
  
-     packet_size = construct_packet(net_state, NULL, MIN_PORT,
+     packet_size = construct_packet(net_state, NULL, &p0,
                                     packet, PACKET_BUFFER_SIZE,
-                                    &dest_sockaddr, &src_sockaddr, &param);
+                                    &param);
      if (packet_size < 0) {
 -        perror("Unable to send to localhost");
 -        exit(EXIT_FAILURE);
 +      error(EXIT_FAILURE, errno, "Unable to send to localhost");
      }
  
      bytes_sent =
      /*  Since network byte order failed, try host byte order  */
      net_state->platform.ip_length_host_order = true;
  
-     packet_size = construct_packet(net_state, NULL, MIN_PORT,
+     packet_size = construct_packet(net_state, NULL, &p0,
                                     packet, PACKET_BUFFER_SIZE,
-                                    &dest_sockaddr, &src_sockaddr, &param);
+                                    &param);
      if (packet_size < 0) {
 -        perror("Unable to send to localhost");
 -        exit(EXIT_FAILURE);
 +        error(EXIT_FAILURE, errno, "Unable to send to localhost");
      }
  
      bytes_sent =
          send_packet(net_state, &param, MIN_PORT, packet, packet_size,
-                     &dest_sockaddr);
+                     &p0.remote_addr);
      if (bytes_sent < 0) {
 -        perror("Unable to send with swapped length");
 -        exit(EXIT_FAILURE);
 +        error(EXIT_FAILURE, errno, "Unable to send with swapped length");
      }
  }