From: Roger Wolff Date: Sun, 28 Jul 2019 14:46:02 +0000 (+0200) Subject: Merge pull request #274 from commonism/udp_checksum X-Git-Tag: v0.93~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9fed81ee89665ef860e3e22713ea80720986e701;p=thirdparty%2Fmtr.git Merge pull request #274 from commonism/udp_checksum udp checksum is incorrect --- 9fed81ee89665ef860e3e22713ea80720986e701 diff --cc packet/probe.c index 21ec918,0441efd..0177e97 --- a/packet/probe.c +++ b/packet/probe.c @@@ -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, diff --cc packet/probe_unix.c index 3691e66,b3177e5..363930f --- a/packet/probe_unix.c +++ b/packet/probe_unix.c @@@ -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, ¶m); + ¶m); if (packet_size < 0) { - perror("Unable to send to localhost"); - exit(EXIT_FAILURE); + error(EXIT_FAILURE, errno, "Unable to send to localhost"); } bytes_sent = @@@ -172,18 -165,20 +169,18 @@@ /* 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, ¶m); + ¶m); 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, ¶m, 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"); } }