fix changing source failed
(cherry picked from commit 2911b40a691876ef5f33e1ae26c6823145cce979)
This commit is contained in:
parent
17b19bad06
commit
1b07d88645
212
backport-Fix-changing-source.patch
Normal file
212
backport-Fix-changing-source.patch
Normal file
@ -0,0 +1,212 @@
|
||||
From 3d176ea1f0f45e0c715dd1d7ef545edb9b6abc19 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Sat, 3 Apr 2021 15:00:45 +1300
|
||||
Subject: [PATCH 1/5] move net_send_batch call to its caller
|
||||
|
||||
---
|
||||
ui/gtk.c | 1 +
|
||||
ui/net.c | 1 -
|
||||
2 files changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ui/gtk.c b/ui/gtk.c
|
||||
index dd79efc..0fd8339 100644
|
||||
--- a/ui/gtk.c
|
||||
+++ b/ui/gtk.c
|
||||
@@ -249,6 +249,7 @@ static gint Host_activate(
|
||||
addr = dns_forward(gtk_entry_get_text(GTK_ENTRY(entry)));
|
||||
if (addr) {
|
||||
net_reopen(ctl, addr);
|
||||
+ net_send_batch(ctl);
|
||||
/* If we are "Paused" at this point it is usually because someone
|
||||
entered a non-existing host. Therefore do the go-ahead... */
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Pause_Button), 0);
|
||||
diff --git a/ui/net.c b/ui/net.c
|
||||
index e4752b7..3160195 100644
|
||||
--- a/ui/net.c
|
||||
+++ b/ui/net.c
|
||||
@@ -785,7 +785,6 @@ void net_reopen(
|
||||
memcpy(remoteaddress, addr->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
memcpy(sockaddr_addr_offset(remotesockaddr), addr->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
net_reset(ctl);
|
||||
- net_send_batch(ctl);
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 69933c309082d2ef25815613c59a7a744a914b16 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Sat, 3 Apr 2021 15:05:01 +1300
|
||||
Subject: [PATCH 2/5] addr -> hostent for consistency
|
||||
|
||||
---
|
||||
ui/net.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ui/net.c b/ui/net.c
|
||||
index 3160195..f7aa088 100644
|
||||
--- a/ui/net.c
|
||||
+++ b/ui/net.c
|
||||
@@ -773,7 +773,7 @@ int net_open(
|
||||
|
||||
void net_reopen(
|
||||
struct mtr_ctl *ctl,
|
||||
- struct hostent *addr)
|
||||
+ struct hostent *hostent)
|
||||
{
|
||||
int at;
|
||||
|
||||
@@ -781,9 +781,9 @@ void net_reopen(
|
||||
memset(&host[at], 0, sizeof(host[at]));
|
||||
}
|
||||
|
||||
- remotesockaddr->sa_family = addr->h_addrtype;
|
||||
- memcpy(remoteaddress, addr->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
- memcpy(sockaddr_addr_offset(remotesockaddr), addr->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
+ remotesockaddr->sa_family = hostent->h_addrtype;
|
||||
+ memcpy(remoteaddress, hostent->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
+ memcpy(sockaddr_addr_offset(remotesockaddr), hostent->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
net_reset(ctl);
|
||||
}
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 6c3b1bd36624609f83c6ce3563c3bcfb98d824ae Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Sat, 3 Apr 2021 15:07:17 +1300
|
||||
Subject: [PATCH 3/5] re-init source too
|
||||
|
||||
---
|
||||
ui/net.c | 35 ++++++++++++++++-------------------
|
||||
1 file changed, 16 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/ui/net.c b/ui/net.c
|
||||
index f7aa088..866879b 100644
|
||||
--- a/ui/net.c
|
||||
+++ b/ui/net.c
|
||||
@@ -747,6 +747,22 @@ int net_open(
|
||||
return err;
|
||||
}
|
||||
|
||||
+ net_reopen(ctl, hostent);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void net_reopen(
|
||||
+ struct mtr_ctl *ctl,
|
||||
+ struct hostent *hostent)
|
||||
+{
|
||||
+ int at;
|
||||
+
|
||||
+ for (at = 0; at < MaxHost; at++) {
|
||||
+ memset(&host[at], 0, sizeof(host[at]));
|
||||
+ }
|
||||
+
|
||||
net_reset(ctl);
|
||||
|
||||
remotesockaddr->sa_family = sourcesockaddr->sa_family = hostent->h_addrtype;
|
||||
@@ -766,25 +782,6 @@ int net_open(
|
||||
}
|
||||
|
||||
inet_ntop(remotesockaddr->sa_family, sockaddr_addr_offset(remotesockaddr), remoteaddr, sizeof(remoteaddr));
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-void net_reopen(
|
||||
- struct mtr_ctl *ctl,
|
||||
- struct hostent *hostent)
|
||||
-{
|
||||
- int at;
|
||||
-
|
||||
- for (at = 0; at < MaxHost; at++) {
|
||||
- memset(&host[at], 0, sizeof(host[at]));
|
||||
- }
|
||||
-
|
||||
- remotesockaddr->sa_family = hostent->h_addrtype;
|
||||
- memcpy(remoteaddress, hostent->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
- memcpy(sockaddr_addr_offset(remotesockaddr), hostent->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
- net_reset(ctl);
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 54d91ea2f04966e1d4cdf6a080c6b80857ee7bd6 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Sat, 3 Apr 2021 15:25:09 +1300
|
||||
Subject: [PATCH 4/5] additional call from net_reopen
|
||||
|
||||
---
|
||||
ui/net.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/ui/net.c b/ui/net.c
|
||||
index 866879b..e47cbcf 100644
|
||||
--- a/ui/net.c
|
||||
+++ b/ui/net.c
|
||||
@@ -770,6 +770,7 @@ void net_reopen(
|
||||
|
||||
sourceaddress = sockaddr_addr_offset(sourcesockaddr);
|
||||
remoteaddress = sockaddr_addr_offset(remotesockaddr);
|
||||
+ memcpy(remoteaddress, hostent->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
|
||||
if (ctl->InterfaceAddress) {
|
||||
net_validate_interface_address(ctl->af, ctl->InterfaceAddress);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From e486335d7552c2a87b4a14bdf04394a590be3441 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Sat, 3 Apr 2021 15:34:31 +1300
|
||||
Subject: [PATCH 5/5] refactor - group local, remote inits
|
||||
|
||||
---
|
||||
ui/net.c | 9 ++++-----
|
||||
1 file changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/ui/net.c b/ui/net.c
|
||||
index e47cbcf..a44a81e 100644
|
||||
--- a/ui/net.c
|
||||
+++ b/ui/net.c
|
||||
@@ -766,23 +766,22 @@ void net_reopen(
|
||||
net_reset(ctl);
|
||||
|
||||
remotesockaddr->sa_family = sourcesockaddr->sa_family = hostent->h_addrtype;
|
||||
- memcpy(sockaddr_addr_offset(remotesockaddr), hostent->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
-
|
||||
- sourceaddress = sockaddr_addr_offset(sourcesockaddr);
|
||||
remoteaddress = sockaddr_addr_offset(remotesockaddr);
|
||||
memcpy(remoteaddress, hostent->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
+ inet_ntop(remotesockaddr->sa_family, remoteaddress, remoteaddr, sizeof(remoteaddr));
|
||||
+
|
||||
+ sourceaddress = sockaddr_addr_offset(sourcesockaddr);
|
||||
|
||||
if (ctl->InterfaceAddress) {
|
||||
net_validate_interface_address(ctl->af, ctl->InterfaceAddress);
|
||||
} else if (ctl->InterfaceName) {
|
||||
net_find_interface_address_from_name(
|
||||
&sourcesockaddr_struct, ctl->af, ctl->InterfaceName);
|
||||
- inet_ntop(sourcesockaddr->sa_family, sockaddr_addr_offset(sourcesockaddr), localaddr, sizeof(localaddr));
|
||||
+ inet_ntop(sourcesockaddr->sa_family, sourceaddress, localaddr, sizeof(localaddr));
|
||||
} else {
|
||||
net_find_local_address();
|
||||
}
|
||||
|
||||
- inet_ntop(remotesockaddr->sa_family, sockaddr_addr_offset(remotesockaddr), remoteaddr, sizeof(remoteaddr));
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -0,0 +1,82 @@
|
||||
From 4c3b0b188670a873795f720eaaf68edfc29b461a Mon Sep 17 00:00:00 2001
|
||||
From: Zenithal <i@zenithal.me>
|
||||
Date: Sat, 17 Oct 2020 23:03:51 +0800
|
||||
Subject: [PATCH] Add display of destination with resolved addr under curses
|
||||
mode
|
||||
|
||||
---
|
||||
ui/curses.c | 2 +-
|
||||
ui/net.c | 11 +++++++++++
|
||||
ui/net.h | 2 ++
|
||||
3 files changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ui/curses.c b/ui/curses.c
|
||||
index 34bf30d..a7ee718 100644
|
||||
--- a/ui/curses.c
|
||||
+++ b/ui/curses.c
|
||||
@@ -698,7 +698,7 @@ void mtr_curses_redraw(
|
||||
pwcenter(buf);
|
||||
attroff(A_BOLD);
|
||||
|
||||
- mvprintw(1, 0, "%s (%s) -> %s", ctl->LocalHostname, net_localaddr(), ctl->Hostname);
|
||||
+ mvprintw(1, 0, "%s (%s) -> %s (%s)", ctl->LocalHostname, net_localaddr(), ctl->Hostname, net_remoteaddr());
|
||||
t = time(NULL);
|
||||
mvprintw(1, maxx - 25, "%s", iso_time(&t));
|
||||
printw("\n");
|
||||
diff --git a/ui/net.c b/ui/net.c
|
||||
index f684b3e..e4752b7 100644
|
||||
--- a/ui/net.c
|
||||
+++ b/ui/net.c
|
||||
@@ -97,11 +97,13 @@ static ip_t *remoteaddress;
|
||||
|
||||
#ifdef ENABLE_IPV6
|
||||
static char localaddr[INET6_ADDRSTRLEN];
|
||||
+static char remoteaddr[INET6_ADDRSTRLEN];
|
||||
#else
|
||||
#ifndef INET_ADDRSTRLEN
|
||||
#define INET_ADDRSTRLEN 16
|
||||
#endif
|
||||
static char localaddr[INET_ADDRSTRLEN];
|
||||
+static char remoteaddr[INET_ADDRSTRLEN];
|
||||
#endif
|
||||
|
||||
static int batch_at = 0;
|
||||
@@ -523,6 +525,13 @@ char *net_localaddr(
|
||||
}
|
||||
|
||||
|
||||
+char *net_remoteaddr(
|
||||
+ void)
|
||||
+{
|
||||
+ return remoteaddr;
|
||||
+}
|
||||
+
|
||||
+
|
||||
void net_end_transit(
|
||||
void)
|
||||
{
|
||||
@@ -756,6 +765,8 @@ int net_open(
|
||||
net_find_local_address();
|
||||
}
|
||||
|
||||
+ inet_ntop(remotesockaddr->sa_family, sockaddr_addr_offset(remotesockaddr), remoteaddr, sizeof(remoteaddr));
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/ui/net.h b/ui/net.h
|
||||
index 8a0d775..d5262bd 100644
|
||||
--- a/ui/net.h
|
||||
+++ b/ui/net.h
|
||||
@@ -90,6 +90,8 @@ extern ip_t *net_addrs(
|
||||
int i);
|
||||
extern char *net_localaddr(
|
||||
void);
|
||||
+extern char *net_remoteaddr(
|
||||
+ void);
|
||||
|
||||
extern int net_send_batch(
|
||||
struct mtr_ctl *ctl);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
937
backport-consistent-resolution-strategy.patch
Normal file
937
backport-consistent-resolution-strategy.patch
Normal file
@ -0,0 +1,937 @@
|
||||
From a7a8985a914509351cb590ccae8cf3574f42f628 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Sun, 4 Apr 2021 12:16:26 +1200
|
||||
Subject: [PATCH 01/17] tell dns process if we want 4 or 6
|
||||
|
||||
---
|
||||
ui/dns.c | 10 ++++++----
|
||||
ui/dns.h | 2 +-
|
||||
ui/mtr.c | 2 +-
|
||||
3 files changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/ui/dns.c b/ui/dns.c
|
||||
index 94af8b7..902aa67 100644
|
||||
--- a/ui/dns.c
|
||||
+++ b/ui/dns.c
|
||||
@@ -124,7 +124,7 @@ static void set_sockaddr_ip(
|
||||
}
|
||||
|
||||
void dns_open(
|
||||
- sa_family_t family)
|
||||
+ void)
|
||||
{
|
||||
int pid;
|
||||
|
||||
@@ -173,7 +173,8 @@ void dns_open(
|
||||
|
||||
buf[strlen(buf) - 1] = 0; /* chomp newline. */
|
||||
|
||||
- longipstr(buf, &host, family);
|
||||
+ sa_family_t family = (buf[0] == '4') ? AF_INET : AF_INET6;
|
||||
+ longipstr(buf +1, &host, family);
|
||||
set_sockaddr_ip(family, &sa, &host);
|
||||
salen = (family == AF_INET) ? sizeof(struct sockaddr_in) :
|
||||
sizeof(struct sockaddr_in6);
|
||||
@@ -256,7 +257,7 @@ char *dns_lookup2(
|
||||
ip_t * ip)
|
||||
{
|
||||
struct dns_results *r;
|
||||
- char buf[INET6_ADDRSTRLEN + 1];
|
||||
+ char buf[INET6_ADDRSTRLEN + 2]; // af_byte + addr + null
|
||||
int rv;
|
||||
|
||||
r = findip(ctl, ip);
|
||||
@@ -270,7 +271,8 @@ char *dns_lookup2(
|
||||
r->name = NULL;
|
||||
r->next = results;
|
||||
results = r;
|
||||
- snprintf(buf, sizeof(buf), "%s\n", strlongip(ctl->af, ip));
|
||||
+ char ip4or6 = (ctl->af == AF_INET) ? '4' : '6';
|
||||
+ snprintf(buf, sizeof(buf), "%c%s\n", ip4or6, strlongip(ctl->af, ip));
|
||||
rv = write(todns[1], buf, strlen(buf));
|
||||
if (rv < 0)
|
||||
error(0, errno, "couldn't write to resolver process");
|
||||
diff --git a/ui/dns.h b/ui/dns.h
|
||||
index b15d6ad..921110e 100644
|
||||
--- a/ui/dns.h
|
||||
+++ b/ui/dns.h
|
||||
@@ -23,7 +23,7 @@
|
||||
/* Prototypes for dns.c */
|
||||
|
||||
extern void dns_open(
|
||||
- sa_family_t family);
|
||||
+ void);
|
||||
extern int dns_waitfd(
|
||||
void);
|
||||
extern void dns_ack(
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index b959919..91773f4 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -858,7 +858,7 @@ int main(
|
||||
}
|
||||
|
||||
lock(stdout);
|
||||
- dns_open(ctl.af);
|
||||
+ dns_open();
|
||||
display_open(&ctl);
|
||||
|
||||
display_loop(&ctl);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From d9116f22d273de98a8f15758eaaa6e8fa1df4fab Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Sun, 4 Apr 2021 13:02:54 +1200
|
||||
Subject: [PATCH 02/17] resolve ipv6 only if we have ipv6
|
||||
|
||||
---
|
||||
test/probe.py | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/test/probe.py b/test/probe.py
|
||||
index b1f0fff..88739cb 100755
|
||||
--- a/test/probe.py
|
||||
+++ b/test/probe.py
|
||||
@@ -268,9 +268,10 @@ class TestProbeICMPv6(mtrpacket.MtrPacketTest):
|
||||
'''Test sending probes using IP version 6'''
|
||||
|
||||
def __init__(self, *args):
|
||||
- google_addr = resolve_ipv6_address(mtrpacket.IPV6_TEST_HOST)
|
||||
+ if mtrpacket.HAVE_IPV6:
|
||||
+ google_addr = resolve_ipv6_address(mtrpacket.IPV6_TEST_HOST)
|
||||
|
||||
- self.google_addr = google_addr # type: str
|
||||
+ self.google_addr = google_addr # type: str
|
||||
|
||||
super(TestProbeICMPv6, self).__init__(*args)
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 571004f8544ee638a2667c4f39bc9022a503915d Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Tue, 6 Apr 2021 12:25:12 +1200
|
||||
Subject: [PATCH 03/17] remove wrapper only function
|
||||
|
||||
---
|
||||
ui/dns.c | 12 ------------
|
||||
ui/dns.h | 2 --
|
||||
ui/gtk.c | 2 +-
|
||||
3 files changed, 1 insertion(+), 15 deletions(-)
|
||||
|
||||
diff --git a/ui/dns.c b/ui/dns.c
|
||||
index 902aa67..8f47316 100644
|
||||
--- a/ui/dns.c
|
||||
+++ b/ui/dns.c
|
||||
@@ -87,18 +87,6 @@ static int longipstr(
|
||||
}
|
||||
|
||||
|
||||
-struct hostent *dns_forward(
|
||||
- const char *name)
|
||||
-{
|
||||
- struct hostent *host;
|
||||
-
|
||||
- if ((host = gethostbyname(name)))
|
||||
- return host;
|
||||
- else
|
||||
- return NULL;
|
||||
-}
|
||||
-
|
||||
-
|
||||
static struct dns_results *findip(
|
||||
struct mtr_ctl *ctl,
|
||||
ip_t * ip)
|
||||
diff --git a/ui/dns.h b/ui/dns.h
|
||||
index 921110e..918bc51 100644
|
||||
--- a/ui/dns.h
|
||||
+++ b/ui/dns.h
|
||||
@@ -41,8 +41,6 @@ extern char *dns_lookup(
|
||||
extern char *dns_lookup2(
|
||||
struct mtr_ctl *ctl,
|
||||
ip_t * address);
|
||||
-extern struct hostent *dns_forward(
|
||||
- const char *name);
|
||||
extern char *strlongip(
|
||||
sa_family_t family,
|
||||
ip_t * ip);
|
||||
diff --git a/ui/gtk.c b/ui/gtk.c
|
||||
index e23abf2..a98154a 100644
|
||||
--- a/ui/gtk.c
|
||||
+++ b/ui/gtk.c
|
||||
@@ -246,7 +246,7 @@ static gint Host_activate(
|
||||
struct mtr_ctl *ctl = (struct mtr_ctl *) data;
|
||||
struct hostent *addr;
|
||||
|
||||
- addr = dns_forward(gtk_entry_get_text(GTK_ENTRY(entry)));
|
||||
+ addr = gethostbyname(gtk_entry_get_text(GTK_ENTRY(entry)));
|
||||
if (addr) {
|
||||
net_reopen(ctl, addr);
|
||||
net_send_batch(ctl);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 78301a8026500b584b22d27151edc746ccd7b673 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Tue, 6 Apr 2021 13:23:14 +1200
|
||||
Subject: [PATCH 04/17] init structures correctly wired up
|
||||
|
||||
---
|
||||
ui/mtr.c | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index 91773f4..ef567f6 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -766,9 +766,9 @@ int main(
|
||||
int argc,
|
||||
char **argv)
|
||||
{
|
||||
- struct hostent *host = NULL;
|
||||
- struct hostent trhost;
|
||||
char *alptr[2];
|
||||
+ struct hostent trhost;
|
||||
+ struct hostent *host = &trhost;
|
||||
names_t *names_head = NULL;
|
||||
names_t *names_walk;
|
||||
|
||||
@@ -837,7 +837,6 @@ int main(
|
||||
sizeof(ctl.LocalHostname));
|
||||
}
|
||||
|
||||
- host = &trhost;
|
||||
if (get_hostent_from_name(&ctl, host, ctl.Hostname, alptr) != 0) {
|
||||
if (ctl.Interactive)
|
||||
exit(EXIT_FAILURE);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 14ec0550ab9e1e86025b5913e415f239b7d44260 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Tue, 6 Apr 2021 13:25:10 +1200
|
||||
Subject: [PATCH 05/17] prepare host with h_addr_list
|
||||
|
||||
---
|
||||
ui/mtr.c | 15 ++++++---------
|
||||
1 file changed, 6 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index ef567f6..a8ccc0a 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -706,8 +706,7 @@ static void init_rand(
|
||||
static int get_hostent_from_name(
|
||||
struct mtr_ctl *ctl,
|
||||
struct hostent *host,
|
||||
- const char *name,
|
||||
- char **alptr)
|
||||
+ const char *name)
|
||||
{
|
||||
int gai_error;
|
||||
struct addrinfo hints, *res;
|
||||
@@ -732,22 +731,20 @@ static int get_hostent_from_name(
|
||||
}
|
||||
|
||||
/* Convert the first addrinfo into a hostent. */
|
||||
- memset(host, 0, sizeof(struct hostent));
|
||||
host->h_name = res->ai_canonname;
|
||||
host->h_aliases = NULL;
|
||||
host->h_addrtype = res->ai_family;
|
||||
ctl->af = res->ai_family;
|
||||
host->h_length = res->ai_addrlen;
|
||||
- host->h_addr_list = alptr;
|
||||
switch (ctl->af) {
|
||||
case AF_INET:
|
||||
sa4 = (struct sockaddr_in *) res->ai_addr;
|
||||
- alptr[0] = (void *) &(sa4->sin_addr);
|
||||
+ host->h_addr_list[0] = (void *) &(sa4->sin_addr);
|
||||
break;
|
||||
#ifdef ENABLE_IPV6
|
||||
case AF_INET6:
|
||||
sa6 = (struct sockaddr_in6 *) res->ai_addr;
|
||||
- alptr[0] = (void *) &(sa6->sin6_addr);
|
||||
+ host->h_addr_list[0] = (void *) &(sa6->sin6_addr);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
@@ -756,7 +753,7 @@ static int get_hostent_from_name(
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
- alptr[1] = NULL;
|
||||
+ host->h_addr_list[1] = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -767,7 +764,7 @@ int main(
|
||||
char **argv)
|
||||
{
|
||||
char *alptr[2];
|
||||
- struct hostent trhost;
|
||||
+ struct hostent trhost = { .h_addr_list = alptr };
|
||||
struct hostent *host = &trhost;
|
||||
names_t *names_head = NULL;
|
||||
names_t *names_walk;
|
||||
@@ -837,7 +834,7 @@ int main(
|
||||
sizeof(ctl.LocalHostname));
|
||||
}
|
||||
|
||||
- if (get_hostent_from_name(&ctl, host, ctl.Hostname, alptr) != 0) {
|
||||
+ if (get_hostent_from_name(&ctl, host, ctl.Hostname) != 0) {
|
||||
if (ctl.Interactive)
|
||||
exit(EXIT_FAILURE);
|
||||
else {
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 92569b381b4f974bd3fdda0524b2b0bd2ce322e6 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Tue, 6 Apr 2021 13:49:08 +1200
|
||||
Subject: [PATCH 06/17] remove temporaries
|
||||
|
||||
---
|
||||
ui/mtr.c | 10 ++--------
|
||||
1 file changed, 2 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index a8ccc0a..554264a 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -710,10 +710,6 @@ static int get_hostent_from_name(
|
||||
{
|
||||
int gai_error;
|
||||
struct addrinfo hints, *res;
|
||||
- struct sockaddr_in *sa4;
|
||||
-#ifdef ENABLE_IPV6
|
||||
- struct sockaddr_in6 *sa6;
|
||||
-#endif
|
||||
|
||||
/* gethostbyname2() is deprecated so we'll use getaddrinfo() instead. */
|
||||
memset(&hints, 0, sizeof hints);
|
||||
@@ -738,13 +734,11 @@ static int get_hostent_from_name(
|
||||
host->h_length = res->ai_addrlen;
|
||||
switch (ctl->af) {
|
||||
case AF_INET:
|
||||
- sa4 = (struct sockaddr_in *) res->ai_addr;
|
||||
- host->h_addr_list[0] = (void *) &(sa4->sin_addr);
|
||||
+ host->h_addr_list[0] = (char*)&((struct sockaddr_in *)res->ai_addr)->sin_addr;
|
||||
break;
|
||||
#ifdef ENABLE_IPV6
|
||||
case AF_INET6:
|
||||
- sa6 = (struct sockaddr_in6 *) res->ai_addr;
|
||||
- host->h_addr_list[0] = (void *) &(sa6->sin6_addr);
|
||||
+ host->h_addr_list[0] = (char*)&((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From b1f0f03a3a545695809183925fb259b44f2f2396 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Tue, 6 Apr 2021 15:09:29 +1200
|
||||
Subject: [PATCH 07/17] extract convert_addrinfo_to_hostent function
|
||||
|
||||
---
|
||||
ui/mtr.c | 49 ++++++++++++++++++++++++++-----------------------
|
||||
1 file changed, 26 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index 554264a..de32215 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -696,6 +696,30 @@ static void init_rand(
|
||||
srand((getpid() << 16) ^ getuid() ^ tv.tv_sec ^ tv.tv_usec);
|
||||
}
|
||||
|
||||
+static int convert_addrinfo_to_hostent(struct hostent *host, struct addrinfo *res)
|
||||
+{
|
||||
+ host->h_name = res->ai_canonname;
|
||||
+ host->h_aliases = NULL;
|
||||
+ host->h_addrtype = res->ai_family;
|
||||
+ host->h_length = res->ai_addrlen;
|
||||
+ switch (res->ai_family) {
|
||||
+ case AF_INET:
|
||||
+ host->h_addr_list[0] = (char*)&((struct sockaddr_in *)res->ai_addr)->sin_addr;
|
||||
+ break;
|
||||
+#ifdef ENABLE_IPV6
|
||||
+ case AF_INET6:
|
||||
+ host->h_addr_list[0] = (char*)&((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
|
||||
+ break;
|
||||
+#endif
|
||||
+ default:
|
||||
+ error(0, 0, "unknown address type");
|
||||
+
|
||||
+ errno = EINVAL;
|
||||
+ return -1;
|
||||
+ }
|
||||
+ host->h_addr_list[1] = NULL;
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
/*
|
||||
For historical reasons, we need a hostent structure to represent
|
||||
@@ -726,30 +750,9 @@ static int get_hostent_from_name(
|
||||
return -1;
|
||||
}
|
||||
|
||||
- /* Convert the first addrinfo into a hostent. */
|
||||
- host->h_name = res->ai_canonname;
|
||||
- host->h_aliases = NULL;
|
||||
- host->h_addrtype = res->ai_family;
|
||||
ctl->af = res->ai_family;
|
||||
- host->h_length = res->ai_addrlen;
|
||||
- switch (ctl->af) {
|
||||
- case AF_INET:
|
||||
- host->h_addr_list[0] = (char*)&((struct sockaddr_in *)res->ai_addr)->sin_addr;
|
||||
- break;
|
||||
-#ifdef ENABLE_IPV6
|
||||
- case AF_INET6:
|
||||
- host->h_addr_list[0] = (char*)&((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
|
||||
- break;
|
||||
-#endif
|
||||
- default:
|
||||
- error(0, 0, "unknown address type");
|
||||
-
|
||||
- errno = EINVAL;
|
||||
- return -1;
|
||||
- }
|
||||
- host->h_addr_list[1] = NULL;
|
||||
-
|
||||
- return 0;
|
||||
+ /* Convert the first addrinfo into a hostent. */
|
||||
+ return convert_addrinfo_to_hostent(host, res);
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 5fd5c2b59d0bf1517492d88e672e8d6e69df657d Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Tue, 6 Apr 2021 15:39:57 +1200
|
||||
Subject: [PATCH 08/17] move conversion call to caller
|
||||
|
||||
---
|
||||
ui/mtr.c | 16 +++++++++-------
|
||||
1 file changed, 9 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index de32215..ff1d995 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -729,17 +729,17 @@ static int convert_addrinfo_to_hostent(struct hostent *host, struct addrinfo *re
|
||||
*/
|
||||
static int get_hostent_from_name(
|
||||
struct mtr_ctl *ctl,
|
||||
- struct hostent *host,
|
||||
+ struct addrinfo **res,
|
||||
const char *name)
|
||||
{
|
||||
int gai_error;
|
||||
- struct addrinfo hints, *res;
|
||||
+ struct addrinfo hints;
|
||||
|
||||
/* gethostbyname2() is deprecated so we'll use getaddrinfo() instead. */
|
||||
memset(&hints, 0, sizeof hints);
|
||||
hints.ai_family = ctl->af;
|
||||
hints.ai_socktype = SOCK_DGRAM;
|
||||
- gai_error = getaddrinfo(name, NULL, &hints, &res);
|
||||
+ gai_error = getaddrinfo(name, NULL, &hints, res);
|
||||
if (gai_error) {
|
||||
if (gai_error == EAI_SYSTEM)
|
||||
error(0, 0, "Failed to resolve host: %s", name);
|
||||
@@ -750,9 +750,8 @@ static int get_hostent_from_name(
|
||||
return -1;
|
||||
}
|
||||
|
||||
- ctl->af = res->ai_family;
|
||||
- /* Convert the first addrinfo into a hostent. */
|
||||
- return convert_addrinfo_to_hostent(host, res);
|
||||
+ ctl->af = (*res)->ai_family;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -831,7 +830,10 @@ int main(
|
||||
sizeof(ctl.LocalHostname));
|
||||
}
|
||||
|
||||
- if (get_hostent_from_name(&ctl, host, ctl.Hostname) != 0) {
|
||||
+ struct addrinfo *res = NULL;
|
||||
+ if (get_hostent_from_name(&ctl, &res, ctl.Hostname) != 0 ||
|
||||
+ /* Convert the first addrinfo into a hostent. */
|
||||
+ convert_addrinfo_to_hostent(host, res) != 0) {
|
||||
if (ctl.Interactive)
|
||||
exit(EXIT_FAILURE);
|
||||
else {
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 6e2e4674a3c4c3ff7fb477bc7cf38ec9ccf8d4d3 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Tue, 6 Apr 2021 16:00:41 +1200
|
||||
Subject: [PATCH 09/17] use addrinfo
|
||||
|
||||
---
|
||||
ui/mtr.c | 2 +-
|
||||
ui/net.c | 10 +++++-----
|
||||
ui/net.h | 4 ++--
|
||||
3 files changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index ff1d995..253861b 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -842,7 +842,7 @@ int main(
|
||||
}
|
||||
}
|
||||
|
||||
- if (net_open(&ctl, host) != 0) {
|
||||
+ if (net_open(&ctl, res) != 0) {
|
||||
error(0, 0, "Unable to start net module");
|
||||
if (ctl.Interactive)
|
||||
exit(EXIT_FAILURE);
|
||||
diff --git a/ui/net.c b/ui/net.c
|
||||
index 60d33e0..1df3503 100644
|
||||
--- a/ui/net.c
|
||||
+++ b/ui/net.c
|
||||
@@ -736,7 +736,7 @@ static void net_find_local_address(
|
||||
|
||||
int net_open(
|
||||
struct mtr_ctl *ctl,
|
||||
- struct hostent *hostent)
|
||||
+ struct addrinfo *res)
|
||||
{
|
||||
int err;
|
||||
|
||||
@@ -746,7 +746,7 @@ int net_open(
|
||||
return err;
|
||||
}
|
||||
|
||||
- net_reopen(ctl, hostent);
|
||||
+ net_reopen(ctl, res);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -754,7 +754,7 @@ int net_open(
|
||||
|
||||
void net_reopen(
|
||||
struct mtr_ctl *ctl,
|
||||
- struct hostent *hostent)
|
||||
+ struct addrinfo *res)
|
||||
{
|
||||
int at;
|
||||
|
||||
@@ -764,9 +764,9 @@ void net_reopen(
|
||||
|
||||
net_reset(ctl);
|
||||
|
||||
- ctl->af = remotesockaddr->sa_family = sourcesockaddr->sa_family = hostent->h_addrtype;
|
||||
+ ctl->af = remotesockaddr->sa_family = sourcesockaddr->sa_family = res->ai_family;
|
||||
remoteaddress = sockaddr_addr_offset(remotesockaddr);
|
||||
- memcpy(remoteaddress, hostent->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
+ memcpy(remoteaddress, sockaddr_addr_offset(res->ai_addr), sockaddr_addr_size(remotesockaddr));
|
||||
inet_ntop(remotesockaddr->sa_family, remoteaddress, remoteaddr, sizeof(remoteaddr));
|
||||
|
||||
sourceaddress = sockaddr_addr_offset(sourcesockaddr);
|
||||
diff --git a/ui/net.h b/ui/net.h
|
||||
index 38718fe..b323c25 100644
|
||||
--- a/ui/net.h
|
||||
+++ b/ui/net.h
|
||||
@@ -33,10 +33,10 @@
|
||||
|
||||
extern int net_open(
|
||||
struct mtr_ctl *ctl,
|
||||
- struct hostent *host);
|
||||
+ struct addrinfo *res);
|
||||
extern void net_reopen(
|
||||
struct mtr_ctl *ctl,
|
||||
- struct hostent *address);
|
||||
+ struct addrinfo *res);
|
||||
extern void net_reset(
|
||||
struct mtr_ctl *ctl);
|
||||
extern void net_close(
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 5a45ca9cc2fb5d1e0d85b7421b938ee01204ab7e Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Tue, 6 Apr 2021 16:12:36 +1200
|
||||
Subject: [PATCH 10/17] remove conversion function
|
||||
|
||||
---
|
||||
ui/mtr.c | 32 +-------------------------------
|
||||
1 file changed, 1 insertion(+), 31 deletions(-)
|
||||
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index 253861b..8edca64 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -696,31 +696,6 @@ static void init_rand(
|
||||
srand((getpid() << 16) ^ getuid() ^ tv.tv_sec ^ tv.tv_usec);
|
||||
}
|
||||
|
||||
-static int convert_addrinfo_to_hostent(struct hostent *host, struct addrinfo *res)
|
||||
-{
|
||||
- host->h_name = res->ai_canonname;
|
||||
- host->h_aliases = NULL;
|
||||
- host->h_addrtype = res->ai_family;
|
||||
- host->h_length = res->ai_addrlen;
|
||||
- switch (res->ai_family) {
|
||||
- case AF_INET:
|
||||
- host->h_addr_list[0] = (char*)&((struct sockaddr_in *)res->ai_addr)->sin_addr;
|
||||
- break;
|
||||
-#ifdef ENABLE_IPV6
|
||||
- case AF_INET6:
|
||||
- host->h_addr_list[0] = (char*)&((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
|
||||
- break;
|
||||
-#endif
|
||||
- default:
|
||||
- error(0, 0, "unknown address type");
|
||||
-
|
||||
- errno = EINVAL;
|
||||
- return -1;
|
||||
- }
|
||||
- host->h_addr_list[1] = NULL;
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
/*
|
||||
For historical reasons, we need a hostent structure to represent
|
||||
our remote target for probing. The obsolete way of doing this
|
||||
@@ -759,9 +734,6 @@ int main(
|
||||
int argc,
|
||||
char **argv)
|
||||
{
|
||||
- char *alptr[2];
|
||||
- struct hostent trhost = { .h_addr_list = alptr };
|
||||
- struct hostent *host = &trhost;
|
||||
names_t *names_head = NULL;
|
||||
names_t *names_walk;
|
||||
|
||||
@@ -831,9 +803,7 @@ int main(
|
||||
}
|
||||
|
||||
struct addrinfo *res = NULL;
|
||||
- if (get_hostent_from_name(&ctl, &res, ctl.Hostname) != 0 ||
|
||||
- /* Convert the first addrinfo into a hostent. */
|
||||
- convert_addrinfo_to_hostent(host, res) != 0) {
|
||||
+ if (get_hostent_from_name(&ctl, &res, ctl.Hostname) != 0) {
|
||||
if (ctl.Interactive)
|
||||
exit(EXIT_FAILURE);
|
||||
else {
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 6a8471e48d33a9017ed226d2f6084e655421a793 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Tue, 6 Apr 2021 16:52:18 +1200
|
||||
Subject: [PATCH 11/17] switch gui to addrinfo
|
||||
|
||||
---
|
||||
ui/gtk.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ui/gtk.c b/ui/gtk.c
|
||||
index a98154a..aa07324 100644
|
||||
--- a/ui/gtk.c
|
||||
+++ b/ui/gtk.c
|
||||
@@ -244,11 +244,11 @@ static gint Host_activate(
|
||||
gpointer data)
|
||||
{
|
||||
struct mtr_ctl *ctl = (struct mtr_ctl *) data;
|
||||
- struct hostent *addr;
|
||||
+ struct addrinfo *res = NULL;
|
||||
|
||||
- addr = gethostbyname(gtk_entry_get_text(GTK_ENTRY(entry)));
|
||||
- if (addr) {
|
||||
- net_reopen(ctl, addr);
|
||||
+ ctl->Hostname = gtk_entry_get_text(GTK_ENTRY(entry));
|
||||
+ if (get_hostent_from_name(ctl, &res, ctl->Hostname) == 0) {
|
||||
+ net_reopen(ctl, res);
|
||||
net_send_batch(ctl);
|
||||
/* If we are "Paused" at this point it is usually because someone
|
||||
entered a non-existing host. Therefore do the go-ahead... */
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From cf1b9bc7e7e9d46153b91021ca1f102dc0c79ac5 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Thu, 8 Apr 2021 07:46:26 +1200
|
||||
Subject: [PATCH 12/17] export DEFAULT_AF
|
||||
|
||||
---
|
||||
ui/mtr.c | 7 -------
|
||||
ui/mtr.h | 2 ++
|
||||
2 files changed, 2 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index 8edca64..23411cb 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -63,13 +63,6 @@
|
||||
#include "portability/getopt.h"
|
||||
#endif
|
||||
|
||||
-#ifdef ENABLE_IPV6
|
||||
-#define DEFAULT_AF AF_UNSPEC
|
||||
-#else
|
||||
-#define DEFAULT_AF AF_INET
|
||||
-#endif
|
||||
-
|
||||
-
|
||||
char *myname;
|
||||
|
||||
const struct fields data_fields[MAXFLD] = {
|
||||
diff --git a/ui/mtr.h b/ui/mtr.h
|
||||
index 01536f5..92dd8a1 100644
|
||||
--- a/ui/mtr.h
|
||||
+++ b/ui/mtr.h
|
||||
@@ -32,8 +32,10 @@
|
||||
|
||||
/* Typedefs */
|
||||
#ifdef ENABLE_IPV6
|
||||
+#define DEFAULT_AF AF_UNSPEC
|
||||
typedef struct in6_addr ip_t;
|
||||
#else
|
||||
+#define DEFAULT_AF AF_INET
|
||||
typedef struct in_addr ip_t;
|
||||
#endif
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From fd29a7e6306743c04171decff08334cc3fca6e8e Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Tue, 6 Apr 2021 16:57:59 +1200
|
||||
Subject: [PATCH 13/17] reset addr family before searching again
|
||||
|
||||
---
|
||||
ui/gtk.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/ui/gtk.c b/ui/gtk.c
|
||||
index aa07324..6e3a376 100644
|
||||
--- a/ui/gtk.c
|
||||
+++ b/ui/gtk.c
|
||||
@@ -246,6 +246,7 @@ static gint Host_activate(
|
||||
struct mtr_ctl *ctl = (struct mtr_ctl *) data;
|
||||
struct addrinfo *res = NULL;
|
||||
|
||||
+ ctl->af = DEFAULT_AF; // should this obey the cmd line option?
|
||||
ctl->Hostname = gtk_entry_get_text(GTK_ENTRY(entry));
|
||||
if (get_hostent_from_name(ctl, &res, ctl->Hostname) == 0) {
|
||||
net_reopen(ctl, res);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From e956e556217fcdd1865d21dea1cfb87a96550046 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Wed, 7 Apr 2021 13:08:36 +1200
|
||||
Subject: [PATCH 14/17] freeaddrinfo
|
||||
|
||||
---
|
||||
ui/gtk.c | 1 +
|
||||
ui/mtr.c | 2 ++
|
||||
2 files changed, 3 insertions(+)
|
||||
|
||||
diff --git a/ui/gtk.c b/ui/gtk.c
|
||||
index 6e3a376..8ad0bbd 100644
|
||||
--- a/ui/gtk.c
|
||||
+++ b/ui/gtk.c
|
||||
@@ -250,6 +250,7 @@ static gint Host_activate(
|
||||
ctl->Hostname = gtk_entry_get_text(GTK_ENTRY(entry));
|
||||
if (get_hostent_from_name(ctl, &res, ctl->Hostname) == 0) {
|
||||
net_reopen(ctl, res);
|
||||
+ freeaddrinfo(res);
|
||||
net_send_batch(ctl);
|
||||
/* If we are "Paused" at this point it is usually because someone
|
||||
entered a non-existing host. Therefore do the go-ahead... */
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index 23411cb..9586780 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -815,6 +815,8 @@ int main(
|
||||
}
|
||||
}
|
||||
|
||||
+ freeaddrinfo(res);
|
||||
+
|
||||
lock(stdout);
|
||||
dns_open();
|
||||
display_open(&ctl);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 6521dc4fb0a0aa6baff11af20b066b2f713edbf8 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Wed, 7 Apr 2021 13:11:55 +1200
|
||||
Subject: [PATCH 15/17] export get_hostent_from_name
|
||||
|
||||
---
|
||||
ui/mtr.c | 4 ++--
|
||||
ui/mtr.h | 6 ++++++
|
||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index 9586780..a044d1e 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -38,7 +38,6 @@
|
||||
#include <sys/limits.h>
|
||||
#endif
|
||||
|
||||
-#include <netdb.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#include <ctype.h>
|
||||
@@ -695,11 +694,12 @@ static void init_rand(
|
||||
would be to use gethostbyname(). We'll use getaddrinfo() instead
|
||||
to generate the hostent.
|
||||
*/
|
||||
-static int get_hostent_from_name(
|
||||
+int get_hostent_from_name(
|
||||
struct mtr_ctl *ctl,
|
||||
struct addrinfo **res,
|
||||
const char *name)
|
||||
{
|
||||
+ printf("get_hostent_from_name: %x %s\n", ctl->af, name);
|
||||
int gai_error;
|
||||
struct addrinfo hints;
|
||||
|
||||
diff --git a/ui/mtr.h b/ui/mtr.h
|
||||
index 92dd8a1..5de5d9f 100644
|
||||
--- a/ui/mtr.h
|
||||
+++ b/ui/mtr.h
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <stdint.h>
|
||||
+#include <netdb.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
@@ -148,4 +149,9 @@ struct mplslen {
|
||||
#define running_as_root() (getuid() == 0)
|
||||
#endif
|
||||
|
||||
+int get_hostent_from_name(
|
||||
+ struct mtr_ctl *ctl,
|
||||
+ struct addrinfo **res,
|
||||
+ const char *name);
|
||||
+
|
||||
#endif /* MTR_MTR_H */
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From a351f650537e09f93738e3c76c06ebfa51552561 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
|
||||
Date: Wed, 7 Apr 2021 13:15:05 +1200
|
||||
Subject: [PATCH 16/17] make Hostname as const
|
||||
|
||||
---
|
||||
ui/mtr.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ui/mtr.h b/ui/mtr.h
|
||||
index 5de5d9f..46c7a18 100644
|
||||
--- a/ui/mtr.h
|
||||
+++ b/ui/mtr.h
|
||||
@@ -85,7 +85,7 @@ struct mtr_ctl {
|
||||
int MaxPing;
|
||||
float WaitTime;
|
||||
float GraceTime;
|
||||
- char *Hostname;
|
||||
+ const char *Hostname;
|
||||
char *InterfaceName;
|
||||
char *InterfaceAddress;
|
||||
char LocalHostname[128];
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 9e01af2ac2e4bd6520ea41e453e770e092050c23 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Thu, 8 Apr 2021 08:14:00 +1200
|
||||
Subject: [PATCH 17/17] rename function
|
||||
|
||||
---
|
||||
ui/gtk.c | 2 +-
|
||||
ui/mtr.c | 5 ++---
|
||||
ui/mtr.h | 2 +-
|
||||
3 files changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/ui/gtk.c b/ui/gtk.c
|
||||
index 8ad0bbd..7c4a9fd 100644
|
||||
--- a/ui/gtk.c
|
||||
+++ b/ui/gtk.c
|
||||
@@ -248,7 +248,7 @@ static gint Host_activate(
|
||||
|
||||
ctl->af = DEFAULT_AF; // should this obey the cmd line option?
|
||||
ctl->Hostname = gtk_entry_get_text(GTK_ENTRY(entry));
|
||||
- if (get_hostent_from_name(ctl, &res, ctl->Hostname) == 0) {
|
||||
+ if (get_addrinfo_from_name(ctl, &res, ctl->Hostname) == 0) {
|
||||
net_reopen(ctl, res);
|
||||
freeaddrinfo(res);
|
||||
net_send_batch(ctl);
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index a044d1e..6fd0d70 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -694,12 +694,11 @@ static void init_rand(
|
||||
would be to use gethostbyname(). We'll use getaddrinfo() instead
|
||||
to generate the hostent.
|
||||
*/
|
||||
-int get_hostent_from_name(
|
||||
+int get_addrinfo_from_name(
|
||||
struct mtr_ctl *ctl,
|
||||
struct addrinfo **res,
|
||||
const char *name)
|
||||
{
|
||||
- printf("get_hostent_from_name: %x %s\n", ctl->af, name);
|
||||
int gai_error;
|
||||
struct addrinfo hints;
|
||||
|
||||
@@ -796,7 +795,7 @@ int main(
|
||||
}
|
||||
|
||||
struct addrinfo *res = NULL;
|
||||
- if (get_hostent_from_name(&ctl, &res, ctl.Hostname) != 0) {
|
||||
+ if (get_addrinfo_from_name(&ctl, &res, ctl.Hostname) != 0) {
|
||||
if (ctl.Interactive)
|
||||
exit(EXIT_FAILURE);
|
||||
else {
|
||||
diff --git a/ui/mtr.h b/ui/mtr.h
|
||||
index 46c7a18..9297be7 100644
|
||||
--- a/ui/mtr.h
|
||||
+++ b/ui/mtr.h
|
||||
@@ -149,7 +149,7 @@ struct mplslen {
|
||||
#define running_as_root() (getuid() == 0)
|
||||
#endif
|
||||
|
||||
-int get_hostent_from_name(
|
||||
+int get_addrinfo_from_name(
|
||||
struct mtr_ctl *ctl,
|
||||
struct addrinfo **res,
|
||||
const char *name);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
344
backport-reset-address-family.patch
Normal file
344
backport-reset-address-family.patch
Normal file
@ -0,0 +1,344 @@
|
||||
From a0b00e233f2d613b6e8dc453fe192d51c4cd548b Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Sun, 4 Apr 2021 08:02:38 +1200
|
||||
Subject: [PATCH 1/4] reset ctl address family at net_reopen
|
||||
|
||||
---
|
||||
ui/net.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ui/net.c b/ui/net.c
|
||||
index 6b06d29..60d33e0 100644
|
||||
--- a/ui/net.c
|
||||
+++ b/ui/net.c
|
||||
@@ -764,7 +764,7 @@ void net_reopen(
|
||||
|
||||
net_reset(ctl);
|
||||
|
||||
- remotesockaddr->sa_family = sourcesockaddr->sa_family = hostent->h_addrtype;
|
||||
+ ctl->af = remotesockaddr->sa_family = sourcesockaddr->sa_family = hostent->h_addrtype;
|
||||
remoteaddress = sockaddr_addr_offset(remotesockaddr);
|
||||
memcpy(remoteaddress, hostent->h_addr, sockaddr_addr_size(remotesockaddr));
|
||||
inet_ntop(remotesockaddr->sa_family, remoteaddress, remoteaddr, sizeof(remoteaddr));
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From a0a91e4962716bf86d6edae157e3449627a270f7 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Sun, 4 Apr 2021 10:08:00 +1200
|
||||
Subject: [PATCH 2/4] accept only value used in structure
|
||||
|
||||
---
|
||||
ui/dns.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ui/dns.c b/ui/dns.c
|
||||
index 7dc8885..642590e 100644
|
||||
--- a/ui/dns.c
|
||||
+++ b/ui/dns.c
|
||||
@@ -114,12 +114,12 @@ static struct dns_results *findip(
|
||||
}
|
||||
|
||||
static void set_sockaddr_ip(
|
||||
- struct mtr_ctl *ctl,
|
||||
+ sa_family_t family,
|
||||
struct sockaddr_storage *sa,
|
||||
ip_t * ip)
|
||||
{
|
||||
memset(sa, 0, sizeof(struct sockaddr_storage));
|
||||
- sa->ss_family = ctl->af;
|
||||
+ sa->ss_family = family;
|
||||
memcpy(sockaddr_addr_offset(sa), ip, sockaddr_addr_size(sa));
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ void dns_open(
|
||||
buf[strlen(buf) - 1] = 0; /* chomp newline. */
|
||||
|
||||
longipstr(buf, &host, ctl->af);
|
||||
- set_sockaddr_ip(ctl, &sa, &host);
|
||||
+ set_sockaddr_ip(ctl->af, &sa, &host);
|
||||
salen = (ctl->af == AF_INET) ? sizeof(struct sockaddr_in) :
|
||||
sizeof(struct sockaddr_in6);
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From fd60554d3b71954af66641b47a9a24a1105f6a04 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Sun, 4 Apr 2021 10:14:52 +1200
|
||||
Subject: [PATCH 3/4] accept only value used in structure
|
||||
|
||||
---
|
||||
ui/curses.c | 10 +++++-----
|
||||
ui/dns.c | 10 +++++-----
|
||||
ui/dns.h | 2 +-
|
||||
ui/gtk.c | 4 ++--
|
||||
ui/raw.c | 2 +-
|
||||
ui/report.c | 8 ++++----
|
||||
ui/split.c | 4 ++--
|
||||
7 files changed, 20 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/ui/curses.c b/ui/curses.c
|
||||
index ca5e8fe..207b272 100644
|
||||
--- a/ui/curses.c
|
||||
+++ b/ui/curses.c
|
||||
@@ -436,11 +436,11 @@ static void mtr_curses_hosts(
|
||||
#endif
|
||||
if (name != NULL) {
|
||||
if (ctl->show_ips)
|
||||
- printw("%s (%s)", name, strlongip(ctl, addr));
|
||||
+ printw("%s (%s)", name, strlongip(ctl->af, addr));
|
||||
else
|
||||
printw("%s", name);
|
||||
} else {
|
||||
- printw("%s", strlongip(ctl, addr));
|
||||
+ printw("%s", strlongip(ctl->af, addr));
|
||||
}
|
||||
attroff(A_BOLD);
|
||||
|
||||
@@ -489,11 +489,11 @@ static void mtr_curses_hosts(
|
||||
#endif
|
||||
if (name != NULL) {
|
||||
if (ctl->show_ips)
|
||||
- printw("%s (%s)", name, strlongip(ctl, addrs));
|
||||
+ printw("%s (%s)", name, strlongip(ctl->af, addrs));
|
||||
else
|
||||
printw("%s", name);
|
||||
} else {
|
||||
- printw("%s", strlongip(ctl, addrs));
|
||||
+ printw("%s", strlongip(ctl->af, addrs));
|
||||
}
|
||||
for (k = 0; k < mplss->labels && ctl->enablempls; k++) {
|
||||
printw("\n [MPLS: Lbl %lu TC %u S %u TTL %u]",
|
||||
@@ -653,7 +653,7 @@ static void mtr_curses_graph(
|
||||
printw("%s", fmt_ipinfo(ctl, addr));
|
||||
#endif
|
||||
name = dns_lookup(ctl, addr);
|
||||
- printw("%s", name ? name : strlongip(ctl, addr));
|
||||
+ printw("%s", name ? name : strlongip(ctl->af, addr));
|
||||
} else {
|
||||
attron(A_BOLD);
|
||||
printw("(%s)", host_error_to_string(err));
|
||||
diff --git a/ui/dns.c b/ui/dns.c
|
||||
index 642590e..a38113b 100644
|
||||
--- a/ui/dns.c
|
||||
+++ b/ui/dns.c
|
||||
@@ -52,13 +52,13 @@ struct dns_results {
|
||||
static struct dns_results *results;
|
||||
|
||||
char *strlongip(
|
||||
- struct mtr_ctl *ctl,
|
||||
+ sa_family_t family,
|
||||
ip_t * ip)
|
||||
{
|
||||
#ifdef ENABLE_IPV6
|
||||
static char addrstr[INET6_ADDRSTRLEN];
|
||||
|
||||
- return (char *) inet_ntop(ctl->af, ip, addrstr, sizeof addrstr);
|
||||
+ return (char *) inet_ntop(family, ip, addrstr, sizeof addrstr);
|
||||
#else
|
||||
return inet_ntoa(*ip);
|
||||
#endif
|
||||
@@ -182,7 +182,7 @@ void dns_open(
|
||||
hostname, sizeof(hostname), NULL, 0, 0);
|
||||
if (rv == 0) {
|
||||
snprintf(result, sizeof(result),
|
||||
- "%s %s\n", strlongip(ctl, &host), hostname);
|
||||
+ "%s %s\n", strlongip(ctl->af, &host), hostname);
|
||||
|
||||
rv = write(fromdns[1], result, strlen(result));
|
||||
if (rv < 0)
|
||||
@@ -270,7 +270,7 @@ char *dns_lookup2(
|
||||
r->name = NULL;
|
||||
r->next = results;
|
||||
results = r;
|
||||
- snprintf(buf, sizeof(buf), "%s\n", strlongip(ctl, ip));
|
||||
+ snprintf(buf, sizeof(buf), "%s\n", strlongip(ctl->af, ip));
|
||||
rv = write(todns[1], buf, strlen(buf));
|
||||
if (rv < 0)
|
||||
error(0, errno, "couldn't write to resolver process");
|
||||
@@ -288,7 +288,7 @@ char *dns_lookup(
|
||||
if (!ctl->dns || !ctl->use_dns)
|
||||
return NULL;
|
||||
t = dns_lookup2(ctl, ip);
|
||||
- return t ? t : strlongip(ctl, ip);
|
||||
+ return t ? t : strlongip(ctl->af, ip);
|
||||
}
|
||||
|
||||
/* XXX check if necessary/exported. */
|
||||
diff --git a/ui/dns.h b/ui/dns.h
|
||||
index c04d184..6668335 100644
|
||||
--- a/ui/dns.h
|
||||
+++ b/ui/dns.h
|
||||
@@ -44,7 +44,7 @@ extern char *dns_lookup2(
|
||||
extern struct hostent *dns_forward(
|
||||
const char *name);
|
||||
extern char *strlongip(
|
||||
- struct mtr_ctl *ctl,
|
||||
+ sa_family_t family,
|
||||
ip_t * ip);
|
||||
|
||||
extern void addr2ip6arpa(
|
||||
diff --git a/ui/gtk.c b/ui/gtk.c
|
||||
index 0fd8339..e23abf2 100644
|
||||
--- a/ui/gtk.c
|
||||
+++ b/ui/gtk.c
|
||||
@@ -512,11 +512,11 @@ static void update_tree_row(
|
||||
if ((name = dns_lookup(ctl, addr))) {
|
||||
if (ctl->show_ips) {
|
||||
snprintf(str, sizeof(str), "%s (%s)", name,
|
||||
- strlongip(ctl, addr));
|
||||
+ strlongip(ctl->af, addr));
|
||||
name = str;
|
||||
}
|
||||
} else
|
||||
- name = strlongip(ctl, addr);
|
||||
+ name = strlongip(ctl->af, addr);
|
||||
}
|
||||
|
||||
gtk_list_store_set(ReportStore, iter,
|
||||
diff --git a/ui/raw.c b/ui/raw.c
|
||||
index 0735131..85e87e8 100644
|
||||
--- a/ui/raw.c
|
||||
+++ b/ui/raw.c
|
||||
@@ -70,7 +70,7 @@ void raw_rawhost(
|
||||
ip_t *ip_addr,
|
||||
struct mplslen *mpls)
|
||||
{
|
||||
- printf("h %d %s\n", host, strlongip(ctl, ip_addr));
|
||||
+ printf("h %d %s\n", host, strlongip(ctl->af, ip_addr));
|
||||
if (ctl->enablempls) {
|
||||
int k;
|
||||
for (k = 0; k < mpls->labels; k++)
|
||||
diff --git a/ui/report.c b/ui/report.c
|
||||
index b39f186..c540717 100644
|
||||
--- a/ui/report.c
|
||||
+++ b/ui/report.c
|
||||
@@ -65,10 +65,10 @@ static size_t snprint_addr(
|
||||
struct hostent *host =
|
||||
ctl->dns ? addr2host((void *) addr, ctl->af) : NULL;
|
||||
if (!host)
|
||||
- return snprintf(dst, dst_len, "%s", strlongip(ctl, addr));
|
||||
+ return snprintf(dst, dst_len, "%s", strlongip(ctl->af, addr));
|
||||
else if (ctl->dns && ctl->show_ips)
|
||||
return snprintf(dst, dst_len, "%s (%s)", host->h_name,
|
||||
- strlongip(ctl, addr));
|
||||
+ strlongip(ctl->af, addr));
|
||||
else
|
||||
return snprintf(dst, dst_len, "%s", host->h_name);
|
||||
} else
|
||||
@@ -235,7 +235,7 @@ void report_close(
|
||||
}
|
||||
|
||||
if (z == 1) {
|
||||
- printf(" | `|-- %s\n", strlongip(ctl, addr2));
|
||||
+ printf(" | `|-- %s\n", strlongip(ctl->af, addr2));
|
||||
for (k = 0; k < mplss->labels && ctl->enablempls; k++) {
|
||||
printf
|
||||
(" | +-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n",
|
||||
@@ -243,7 +243,7 @@ void report_close(
|
||||
mplss->ttl[k]);
|
||||
}
|
||||
} else {
|
||||
- printf(" | |-- %s\n", strlongip(ctl, addr2));
|
||||
+ printf(" | |-- %s\n", strlongip(ctl->af, addr2));
|
||||
for (k = 0; k < mplss->labels && ctl->enablempls; k++) {
|
||||
printf
|
||||
(" | +-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n",
|
||||
diff --git a/ui/split.c b/ui/split.c
|
||||
index d300404..1755452 100644
|
||||
--- a/ui/split.c
|
||||
+++ b/ui/split.c
|
||||
@@ -95,10 +95,10 @@ void split_redraw(
|
||||
if (addrcmp(addr, &ctl->unspec_addr, ctl->af)) {
|
||||
char str[256], *name;
|
||||
if (!(name = dns_lookup(ctl, addr)))
|
||||
- name = strlongip(ctl, addr);
|
||||
+ name = strlongip(ctl->af, addr);
|
||||
if (ctl->show_ips) {
|
||||
snprintf(str, sizeof(str), "%s %s", name,
|
||||
- strlongip(ctl, addr));
|
||||
+ strlongip(ctl->af, addr));
|
||||
name = str;
|
||||
}
|
||||
/* May be we should test name's length */
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From 02ded71c1cad62b5717a2f998f0f3288f8f48622 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lipinski <kris.lipinski@gmail.com>
|
||||
Date: Sun, 4 Apr 2021 10:19:29 +1200
|
||||
Subject: [PATCH 4/4] accept only value used in structure
|
||||
|
||||
---
|
||||
ui/dns.c | 10 +++++-----
|
||||
ui/dns.h | 2 +-
|
||||
ui/mtr.c | 2 +-
|
||||
3 files changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/ui/dns.c b/ui/dns.c
|
||||
index a38113b..94af8b7 100644
|
||||
--- a/ui/dns.c
|
||||
+++ b/ui/dns.c
|
||||
@@ -124,7 +124,7 @@ static void set_sockaddr_ip(
|
||||
}
|
||||
|
||||
void dns_open(
|
||||
- struct mtr_ctl *ctl)
|
||||
+ sa_family_t family)
|
||||
{
|
||||
int pid;
|
||||
|
||||
@@ -173,16 +173,16 @@ void dns_open(
|
||||
|
||||
buf[strlen(buf) - 1] = 0; /* chomp newline. */
|
||||
|
||||
- longipstr(buf, &host, ctl->af);
|
||||
- set_sockaddr_ip(ctl->af, &sa, &host);
|
||||
- salen = (ctl->af == AF_INET) ? sizeof(struct sockaddr_in) :
|
||||
+ longipstr(buf, &host, family);
|
||||
+ set_sockaddr_ip(family, &sa, &host);
|
||||
+ salen = (family == AF_INET) ? sizeof(struct sockaddr_in) :
|
||||
sizeof(struct sockaddr_in6);
|
||||
|
||||
rv = getnameinfo((struct sockaddr *) &sa, salen,
|
||||
hostname, sizeof(hostname), NULL, 0, 0);
|
||||
if (rv == 0) {
|
||||
snprintf(result, sizeof(result),
|
||||
- "%s %s\n", strlongip(ctl->af, &host), hostname);
|
||||
+ "%s %s\n", strlongip(family, &host), hostname);
|
||||
|
||||
rv = write(fromdns[1], result, strlen(result));
|
||||
if (rv < 0)
|
||||
diff --git a/ui/dns.h b/ui/dns.h
|
||||
index 6668335..b15d6ad 100644
|
||||
--- a/ui/dns.h
|
||||
+++ b/ui/dns.h
|
||||
@@ -23,7 +23,7 @@
|
||||
/* Prototypes for dns.c */
|
||||
|
||||
extern void dns_open(
|
||||
- struct mtr_ctl *ctl);
|
||||
+ sa_family_t family);
|
||||
extern int dns_waitfd(
|
||||
void);
|
||||
extern void dns_ack(
|
||||
diff --git a/ui/mtr.c b/ui/mtr.c
|
||||
index b33a136..b959919 100644
|
||||
--- a/ui/mtr.c
|
||||
+++ b/ui/mtr.c
|
||||
@@ -858,7 +858,7 @@ int main(
|
||||
}
|
||||
|
||||
lock(stdout);
|
||||
- dns_open(&ctl);
|
||||
+ dns_open(ctl.af);
|
||||
display_open(&ctl);
|
||||
|
||||
display_loop(&ctl);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
12
mtr.spec
12
mtr.spec
@ -2,7 +2,7 @@
|
||||
|
||||
Name: mtr
|
||||
Version: 0.94
|
||||
Release: 5
|
||||
Release: 6
|
||||
Epoch: 2
|
||||
Summary: Ping and Traceroute Network Diagnostic Tool
|
||||
License: GPLv2 and BSD
|
||||
@ -11,6 +11,10 @@ Source0: https://github.com/traviscross/mtr/archive/v%{version}/%{name}-%{
|
||||
Source1: net-x%{name}.desktop
|
||||
Source2: mtr-gtk-pkexec-wrapper.sh
|
||||
Patch0: fix_for_printw_error.patch
|
||||
Patch1: backport-add-display-of-destination-with-resolved-addr-under-curses-mode.patch
|
||||
Patch2: backport-Fix-changing-source.patch
|
||||
Patch3: backport-reset-address-family.patch
|
||||
Patch4: backport-consistent-resolution-strategy.patch
|
||||
BuildRequires: git autoconf automake libtool ncurses-devel gtk2-devel desktop-file-utils
|
||||
|
||||
%if %{?openEuler:1}0
|
||||
@ -90,6 +94,12 @@ make test
|
||||
%{_mandir}/man8/*
|
||||
|
||||
%changelog
|
||||
* Tue Aug 9 2022 liyunqing <liyunqing@kylinos.cn> - 2:0.94-6
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:backport patch to fix changing source failed
|
||||
|
||||
* Mon Jul 18 2022 liyunqing <liyunqing@kylinos.cn> - 2:0.94-5
|
||||
- modify mtr-gtk-pkexec-wrapper.sh and net-xmtr.desktop
|
||||
to fix xmtr cannot start in Xface4 environment
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user