fix ipv6 udp error
This commit is contained in:
parent
a246d28e6f
commit
503d39bd00
78
backport-ip6-udp-fix-probes-with-local-or-remote-port.patch
Normal file
78
backport-ip6-udp-fix-probes-with-local-or-remote-port.patch
Normal file
@ -0,0 +1,78 @@
|
||||
From 513c04b02ff0632ad9c84b2d9b0f3dbf3a25c0b2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Markus=20K=C3=B6tter?= <koetter@luis.uni-hannover.de>
|
||||
Date: Wed, 15 Jan 2020 15:42:58 +0100
|
||||
Subject: [PATCH] ip6 udp - fix probes with local or remote port
|
||||
|
||||
only set the remote port in raw packet, not as sendto parameter
|
||||
|
||||
does not fix local and remote port, seq number is checksum then,
|
||||
payload has to be adjusted as with ipv4
|
||||
|
||||
Conflict: NA
|
||||
Reference:https://github.com/traviscross/mtr/pull/331/commits/513c04b02ff0632ad9c84b2d9b0f3dbf3a25c0b2
|
||||
|
||||
---
|
||||
packet/probe_unix.c | 18 +++++++++++++-----
|
||||
1 file changed, 13 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/packet/probe_unix.c b/packet/probe_unix.c
|
||||
index bf1e2c9..a749f7d 100644
|
||||
--- a/packet/probe_unix.c
|
||||
+++ b/packet/probe_unix.c
|
||||
@@ -52,9 +52,12 @@ int send_packet(
|
||||
int packet_size,
|
||||
const struct sockaddr_storage *sockaddr)
|
||||
{
|
||||
+ struct sockaddr_storage dst;
|
||||
int send_socket = 0;
|
||||
int sockaddr_length;
|
||||
|
||||
+ memcpy(&dst, sockaddr, sizeof(struct sockaddr_storage));
|
||||
+
|
||||
if (sockaddr->ss_family == AF_INET6) {
|
||||
sockaddr_length = sizeof(struct sockaddr_in6);
|
||||
|
||||
@@ -67,12 +70,17 @@ int send_packet(
|
||||
} else if (param->protocol == IPPROTO_UDP) {
|
||||
if (net_state->platform.ip6_socket_raw) {
|
||||
send_socket = net_state->platform.udp6_send_socket;
|
||||
+ /* we got a ipv6 udp raw socket
|
||||
+ * the remote port is in the payload
|
||||
+ * we do not set in the sockaddr
|
||||
+ */
|
||||
+ *sockaddr_port_offset(&dst) = 0;
|
||||
} else {
|
||||
send_socket = net_state->platform.ip6_txrx_udp_socket;
|
||||
if (param->dest_port) {
|
||||
- *sockaddr_port_offset(sockaddr) = htons(param->dest_port);
|
||||
+ *sockaddr_port_offset(&dst) = htons(param->dest_port);
|
||||
} else {
|
||||
- *sockaddr_port_offset(sockaddr) = sequence;
|
||||
+ *sockaddr_port_offset(&dst) = sequence;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,9 +99,9 @@ int send_packet(
|
||||
} else if (param->protocol == IPPROTO_UDP) {
|
||||
send_socket = net_state->platform.ip4_txrx_udp_socket;
|
||||
if (param->dest_port) {
|
||||
- *sockaddr_port_offset(sockaddr) = htons(param->dest_port);
|
||||
+ *sockaddr_port_offset(&dst) = htons(param->dest_port);
|
||||
} else {
|
||||
- *sockaddr_port_offset(sockaddr) = sequence;
|
||||
+ *sockaddr_port_offset(&dst) = sequence;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -105,7 +113,7 @@ int send_packet(
|
||||
}
|
||||
|
||||
return sendto(send_socket, packet, packet_size, 0,
|
||||
- (struct sockaddr *) sockaddr, sockaddr_length);
|
||||
+ (struct sockaddr *) &dst, sockaddr_length);
|
||||
}
|
||||
|
||||
/*
|
||||
--
|
||||
2.30.0
|
||||
|
||||
12
mtr.spec
12
mtr.spec
@ -2,7 +2,7 @@
|
||||
|
||||
Name: mtr
|
||||
Version: 0.93
|
||||
Release: 3
|
||||
Release: 4
|
||||
Epoch: 2
|
||||
Summary: Ping and Traceroute Network Diagnostic Tool
|
||||
License: GPLv2 and BSD
|
||||
@ -11,6 +11,8 @@ Source0: https://github.com/traviscross/mtr/archive/v%{version}/%{name}-%{
|
||||
Source1: net-x%{name}.desktop
|
||||
Source2: mtr-gtk-pkexec-wrapper.sh
|
||||
|
||||
Patch6000: backport-ip6-udp-fix-probes-with-local-or-remote-port.patch
|
||||
|
||||
BuildRequires: git autoconf automake libtool ncurses-devel gtk2-devel desktop-file-utils
|
||||
|
||||
Provides: %{name}-gtk = %{epoch}:%{version}-%{release}
|
||||
@ -25,7 +27,7 @@ and percentage for all network hops between the systems.
|
||||
%package_help
|
||||
|
||||
%prep
|
||||
%autosetup -n %{name}-%{version}
|
||||
%autosetup -n %{name}-%{version} -p1
|
||||
|
||||
%build
|
||||
export CFLAGS="%{optflags} -fPIE"
|
||||
@ -68,6 +70,12 @@ make test
|
||||
%{_mandir}/man8/*
|
||||
|
||||
%changelog
|
||||
* Fri Nov 24 2023 yanglu <yanglu72@h-partners.cn> - 2:0.93-4
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:fix ipv6 udp error
|
||||
|
||||
* Mon Jul 18 2022 liyunqing <liyunqing@kylinos.cn> - 2:0.93-3
|
||||
- modify fix xmtr cannot start in Xface4 environment
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user