]> git.ipfire.org Git - thirdparty/mtr.git/commitdiff
simplification - remove sockaddrtop
authorMarkus Kötter <koetter@luis.uni-hannover.de>
Thu, 8 Aug 2019 09:07:37 +0000 (11:07 +0200)
committerMarkus Kötter <koetter@luis.uni-hannover.de>
Thu, 8 Aug 2019 09:07:37 +0000 (11:07 +0200)
Makefile.am
ui/net.c

index 29435e10f7ce366e5c70e5ec60a14026f9f32cdc..950ea8f9d082d000afaf48fc15d796d4d2032d5b 100644 (file)
@@ -55,6 +55,7 @@ mtr_SOURCES = ui/mtr.c ui/mtr.h \
               ui/select.c ui/select.h \
               ui/utils.c ui/utils.h \
               packet/cmdparse.c packet/cmdparse.h \
+              packet/sockaddr.c packet/sockaddr.h \
               ui/mtr-curses.h \
               img/mtr_icon.xpm \
               ui/mtr-gtk.h
index 1c78466b66dafb86b6b462ea11c86e913111fe04..0536cddc00a214208566e32715481a8d01e74c2e 100644 (file)
--- a/ui/net.c
+++ b/ui/net.c
 #include "display.h"
 #include "dns.h"
 #include "utils.h"
+#include "packet/sockaddr.h"
 
 #define MinSequence 33000
 #define MaxSequence 65536
 
 static int packetsize;          /* packet size used by ping */
 
-static void sockaddrtop(
-    struct sockaddr *saddr,
-    char *strptr,
-    size_t len);
-
 struct nethost {
     ip_t addr;
     ip_t addrs[MAXPATH];        /* for multi paths byMin */
@@ -739,7 +735,7 @@ static void net_find_local_address(
         error(EXIT_FAILURE, errno, "local address determination failed");
     }
 
-    sockaddrtop(sourcesockaddr, localaddr, sizeof(localaddr));
+    inet_ntop(sourcesockaddr->sa_family, sockaddr_addr_offset(sourcesockaddr), localaddr, sizeof(localaddr));
 
     close(udp_socket);
 }
@@ -783,8 +779,7 @@ int net_open(
     } else if (ctl->InterfaceName) {
         net_find_interface_address_from_name(
             &sourcesockaddr_struct, ctl->af, ctl->InterfaceName);
-
-        sockaddrtop(sourcesockaddr, localaddr, sizeof(localaddr));
+        inet_ntop(sourcesockaddr->sa_family, sockaddr_addr_offset(sourcesockaddr), localaddr, sizeof(localaddr));
     } else {
         net_find_local_address();
     }
@@ -907,37 +902,6 @@ void net_save_return(
     host[at].saved[idx] = ms;
 }
 
-/* Similar to inet_ntop but uses a sockaddr as it's argument. */
-static void sockaddrtop(
-    struct sockaddr *saddr,
-    char *strptr,
-    size_t len)
-{
-    struct sockaddr_in *sa4;
-#ifdef ENABLE_IPV6
-    struct sockaddr_in6 *sa6;
-#endif
-
-    switch (saddr->sa_family) {
-    case AF_INET:
-        sa4 = (struct sockaddr_in *) saddr;
-        xstrncpy(strptr, inet_ntoa(sa4->sin_addr), len - 1);
-        strptr[len - 1] = '\0';
-        return;
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-        sa6 = (struct sockaddr_in6 *) saddr;
-        inet_ntop(sa6->sin6_family, &(sa6->sin6_addr), strptr, len);
-        return;
-#endif
-    default:
-        error(0, 0, "sockaddrtop unknown address type");
-        strptr[0] = '\0';
-        return;
-    }
-}
-
-
 /* Address comparison. */
 int addrcmp(
     char *a,