]> git.pld-linux.org Git - packages/mtr.git/commitdiff
- rel 4; make it possible to run mtr against unreachable host auto/th/mtr-0.92-4
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Tue, 5 Jun 2018 15:45:39 +0000 (17:45 +0200)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Tue, 5 Jun 2018 15:45:39 +0000 (17:45 +0200)
0001-mtr-to-a-unreachable-host-is-possible-again.patch [new file with mode: 0644]
mtr.spec

diff --git a/0001-mtr-to-a-unreachable-host-is-possible-again.patch b/0001-mtr-to-a-unreachable-host-is-possible-again.patch
new file mode 100644 (file)
index 0000000..bedd0e5
--- /dev/null
@@ -0,0 +1,79 @@
+From 240725528c5a756ee9aaff247e3731f4b8517c06 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= <arekm@maven.pl>
+Date: Tue, 5 Jun 2018 17:38:08 +0200
+Subject: [PATCH] mtr to a unreachable host is possible again.
+
+In mtr 0.87 it was possible to start mtr against unreachable
+host (that local kernel already knew that it is unreachable).
+Later it was broken. Make such tracing possible again.
+---
+ packet/probe.c | 28 +++++++++++++++++++++++-----
+ ui/net.c       | 10 ++++++++++
+ 2 files changed, 33 insertions(+), 5 deletions(-)
+
+diff --git a/packet/probe.c b/packet/probe.c
+index 27bf138..cf95f8a 100644
+--- a/packet/probe.c
++++ b/packet/probe.c
+@@ -356,14 +356,32 @@ int find_source_addr(
+         return -1;
+     }
+-    if (connect(sock, (struct sockaddr *) &dest_with_port, len)) {
+-        close(sock);
+-        return -1;
+-    }
++    if (connect(sock, (struct sockaddr *) &dest_with_port, len) == 0) {
++        if (getsockname(sock, (struct sockaddr *) srcaddr, &len)) {
++            close(sock);
++            return -1;
++        }
++    } else {
++#ifdef __linux__
++        /* Linux doesn't require source address, so we can support
++         * a case when mtr is run against unreachable host (that can become
++         * reachable) */
++        if (errno != EHOSTUNREACH) {
++            close(sock);
++            return -1;
++        }
+-    if (getsockname(sock, (struct sockaddr *) srcaddr, &len)) {
++        if (destaddr->ss_family == AF_INET6) {
++            srcaddr6 = (struct sockaddr_in6 *) srcaddr;
++            srcaddr6->sin6_addr = in6addr_any;
++        } else {
++            srcaddr4 = (struct sockaddr_in *) srcaddr;
++            srcaddr4->sin_addr.s_addr = INADDR_ANY;
++        }
++#else
+         close(sock);
+         return -1;
++#endif
+     }
+     close(sock);
+diff --git a/ui/net.c b/ui/net.c
+index 69d4477..11dd4c8 100644
+--- a/ui/net.c
++++ b/ui/net.c
+@@ -720,6 +720,16 @@ static void net_find_local_address(
+     if (connect
+         (udp_socket, (struct sockaddr *) &remote_sockaddr, addr_length)) {
++#ifdef __linux__
++        /* Linux doesn't require source address, so we can support
++         * a case when mtr is run against unreachable host (that can become
++         * reachable) */
++        if (errno == EHOSTUNREACH) {
++            close(udp_socket);
++            localaddr[0] = '\0';
++            return;
++        }
++#endif
+         error(EXIT_FAILURE, errno, "udp socket connect failed");
+     }
+-- 
+2.17.1
+
index d2c4df74664e4ce6c5ec06f2e7d833e5448d5324..f6df91007031d73682d0c452a8b4c434e1011517 100644 (file)
--- a/mtr.spec
+++ b/mtr.spec
@@ -10,7 +10,7 @@ Summary(ru.UTF-8):    Matt's Traceroute - утилита для диагности
 Summary(uk.UTF-8):     Matt's Traceroute - утиліта для діагностики мережі
 Name:          mtr
 Version:       0.92
-Release:       3
+Release:       4
 Epoch:         1
 License:       GPL v2
 Group:         Networking/Utilities
@@ -24,6 +24,7 @@ Patch2:               %{name}-mtr6.patch
 Patch3:                %{name}-display.patch
 Patch4:                %{name}-curses-clear_colors.patch
 Patch5:                %{name}-sourceaddr_ipv4.patch
+Patch6:                0001-mtr-to-a-unreachable-host-is-possible-again.patch
 URL:           http://www.bitwizard.nl/mtr/
 BuildRequires: autoconf >= 2.50
 BuildRequires: automake
@@ -159,6 +160,7 @@ Pakiet ten dostarcza bashowe uzupełnianie nazw dla mtra.
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p1
 
 #echo 'AC_DEFUN([AM_PATH_GTK],[$3])' >> acinclude.m4
 %{!?with_x:echo 'AC_DEFUN([AM_PATH_GTK_2_0],[$3])' >> acinclude.m4}
This page took 0.09753 seconds and 4 git commands to generate.