Upstream mtr patches (not yet in any release) to fix various xmtr issues: - https://github.com/traviscross/mtr/commit/4c3b0b188670a873795f720eaaf68edfc29b461a - https://github.com/traviscross/mtr/commit/943b2ff88975499e0813fa7a54f244968b8672df - https://github.com/traviscross/mtr/commit/21bf582e2c95b7b7c7844cfe26dd417322c5d518 - https://github.com/traviscross/mtr/commit/a7342019a57bf3fbf476e98f314e7ed321bbd720 See also: https://bugzilla.redhat.com/show_bug.cgi?id=1488417 From 4c3b0b188670a873795f720eaaf68edfc29b461a Mon Sep 17 00:00:00 2001 From: Zenithal 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, 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); From 3d176ea1f0f45e0c715dd1d7ef545edb9b6abc19 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); } From 69933c309082d2ef25815613c59a7a744a914b16 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); } From 6c3b1bd36624609f83c6ce3563c3bcfb98d824ae Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); } From 54d91ea2f04966e1d4cdf6a080c6b80857ee7bd6 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); From e486335d7552c2a87b4a14bdf04394a590be3441 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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)); } From a0b00e233f2d613b6e8dc453fe192d51c4cd548b Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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)); From a0a91e4962716bf86d6edae157e3449627a270f7 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); From fd60554d3b71954af66641b47a9a24a1105f6a04 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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(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 */ From 02ded71c1cad62b5717a2f998f0f3288f8f48622 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); From a7a8985a914509351cb590ccae8cf3574f42f628 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); From d9116f22d273de98a8f15758eaaa6e8fa1df4fab Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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) From 571004f8544ee638a2667c4f39bc9022a503915d Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); From 78301a8026500b584b22d27151edc746ccd7b673 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); From 14ec0550ab9e1e86025b5913e415f239b7d44260 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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 { From 92569b381b4f974bd3fdda0524b2b0bd2ce322e6 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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: From b1f0f03a3a545695809183925fb259b44f2f2396 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); } From 5fd5c2b59d0bf1517492d88e672e8d6e69df657d Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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 { From 6e2e4674a3c4c3ff7fb477bc7cf38ec9ccf8d4d3 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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( From 5a45ca9cc2fb5d1e0d85b7421b938ee01204ab7e Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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 { From 6a8471e48d33a9017ed226d2f6084e655421a793 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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... */ From cf1b9bc7e7e9d46153b91021ca1f102dc0c79ac5 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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 From fd29a7e6306743c04171decff08334cc3fca6e8e Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); From e956e556217fcdd1865d21dea1cfb87a96550046 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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); From 6521dc4fb0a0aa6baff11af20b066b2f713edbf8 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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 #endif -#include #include #include #include @@ -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 +#include #include #include @@ -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 */ From a351f650537e09f93738e3c76c06ebfa51552561 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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]; From 9e01af2ac2e4bd6520ea41e453e770e092050c23 Mon Sep 17 00:00:00 2001 From: Aaron Lipinski 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);