]> git.ipfire.org Git - thirdparty/mtr.git/commitdiff
use addrinfo
authorAaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
Tue, 6 Apr 2021 04:00:41 +0000 (16:00 +1200)
committerAaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
Thu, 8 Apr 2021 20:36:25 +0000 (08:36 +1200)
ui/mtr.c
ui/net.c
ui/net.h

index ff1d995cb3dffeeaa425b8748cdf6e3abb2c5b92..253861b874be5edc6ae67ebf70cfb0bedc71555a 100644 (file)
--- 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);
index 60d33e026511016fd7d7d09eeb641557967b012d..1df3503163baef29361bd039f8f36e1e342bbe14 100644 (file)
--- 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);
index 38718fefd18a700835ce1816f142c0e66150113c..b323c2521f18b77fea20319881e1ff192046d594 100644 (file)
--- a/ui/net.h
+++ b/ui/net.h
 
 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(