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

index 8b323ff282509cb4c03afbdc48005e6fa1a05ca9..c4417deacf3399478a28ccfe884880437bc084ba 100644 (file)
--- a/ui/dns.c
+++ b/ui/dns.c
@@ -41,6 +41,7 @@
 #include "dns.h"
 #include "net.h"
 #include "utils.h"
+#include "packet/sockaddr.h"
 
 struct dns_results {
     ip_t ip;
@@ -117,22 +118,9 @@ static void set_sockaddr_ip(
     struct sockaddr_storage *sa,
     ip_t * ip)
 {
-    struct sockaddr_in *sa_in;
-    struct sockaddr_in6 *sa_in6;
-
     memset(sa, 0, sizeof(struct sockaddr_storage));
-    switch (ctl->af) {
-    case AF_INET:
-        sa_in = (struct sockaddr_in *) sa;
-        sa_in->sin_family = ctl->af;
-        addrcpy((void *) &sa_in->sin_addr, (void *) ip, ctl->af);
-        break;
-    case AF_INET6:
-        sa_in6 = (struct sockaddr_in6 *) sa;
-        sa_in6->sin6_family = ctl->af;
-        addrcpy((void *) &sa_in6->sin6_addr, (void *) ip, ctl->af);
-        break;
-    }
+    sa->ss_family = ctl->af;
+    memcpy(sockaddr_addr_offset(sa), ip, sockaddr_addr_size(sa));
 }
 
 void dns_open(
index 0536cddc00a214208566e32715481a8d01e74c2e..4a7d88007bb1dcae76bfc6a1973ccefc07fbb8f9 100644 (file)
--- a/ui/net.c
+++ b/ui/net.c
@@ -87,8 +87,6 @@ static struct packet_command_pipe_t packet_command_pipe;
 #ifdef ENABLE_IPV6
 static struct sockaddr_storage sourcesockaddr_struct;
 static struct sockaddr_storage remotesockaddr_struct;
-static struct sockaddr_in6 *ssa6 =
-    (struct sockaddr_in6 *) &sourcesockaddr_struct;
 static struct sockaddr_in6 *rsa6 =
     (struct sockaddr_in6 *) &remotesockaddr_struct;
 #else
@@ -100,8 +98,6 @@ static struct sockaddr *sourcesockaddr =
     (struct sockaddr *) &sourcesockaddr_struct;
 static struct sockaddr *remotesockaddr =
     (struct sockaddr *) &remotesockaddr_struct;
-static struct sockaddr_in *ssa4 =
-    (struct sockaddr_in *) &sourcesockaddr_struct;
 static struct sockaddr_in *rsa4 =
     (struct sockaddr_in *) &remotesockaddr_struct;
 
@@ -229,7 +225,7 @@ static void net_process_ping(
     char addrcopy[sizeof(struct in_addr)];
 #endif
 
-    addrcpy((void *) &addrcopy, (char *) addr, ctl->af);
+    memcpy(&addrcopy, addr, sockaddr_addr_size(sourcesockaddr));
 
     index = mark_sequence_complete(seq);
     if (index < 0) {
@@ -241,12 +237,12 @@ static void net_process_ping(
     if (addrcmp((void *) &(host[index].addr),
                 (void *) &ctl->unspec_addr, ctl->af) == 0) {
         /* should be out of if as addr can change */
-        addrcpy((void *) &(host[index].addr), addrcopy, ctl->af);
+        memcpy(&(host[index].addr), addrcopy, sockaddr_addr_size(sourcesockaddr));
         host[index].mpls = *mpls;
         display_rawhost(ctl, index, (void *) &(host[index].addr));
 
         /* multi paths */
-        addrcpy((void *) &(host[index].addrs[0]), addrcopy, ctl->af);
+        memcpy(&(host[index].addrs[0]), addrcopy, sockaddr_addr_size(sourcesockaddr));
         host[index].mplss[0] = *mpls;
     } else {
         for (i = 0; i < MAXPATH;) {
@@ -262,7 +258,9 @@ static void net_process_ping(
 
         if (addrcmp((void *) &(host[index].addrs[i]), addrcopy, ctl->af) !=
             0 && i < MAXPATH) {
-            addrcpy((void *) &(host[index].addrs[i]), addrcopy, ctl->af);
+            memcpy(&(host[index].addrs[i]), addrcopy, sockaddr_addr_size(sourcesockaddr));
+
+
             host[index].mplss[i] = *mpls;
             display_rawhost(ctl, index, (void *) &(host[index].addrs[i]));
         }
@@ -755,24 +753,11 @@ int net_open(
 
     net_reset(ctl);
 
-    remotesockaddr->sa_family = hostent->h_addrtype;
+    remotesockaddr->sa_family = sourcesockaddr->sa_family = hostent->h_addrtype;
+    memcpy(sockaddr_addr_offset(remotesockaddr), hostent->h_addr, sockaddr_addr_size(remotesockaddr));
 
-    switch (hostent->h_addrtype) {
-    case AF_INET:
-        addrcpy((void *) &(rsa4->sin_addr), hostent->h_addr, AF_INET);
-        sourceaddress = (ip_t *) & (ssa4->sin_addr);
-        remoteaddress = (ip_t *) & (rsa4->sin_addr);
-        break;
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-        addrcpy((void *) &(rsa6->sin6_addr), hostent->h_addr, AF_INET6);
-        sourceaddress = (ip_t *) & (ssa6->sin6_addr);
-        remoteaddress = (ip_t *) & (rsa6->sin6_addr);
-        break;
-#endif
-    default:
-        error(EXIT_FAILURE, 0, "net_open bad address type");
-    }
+    sourceaddress = sockaddr_addr_offset(sourcesockaddr);
+    remoteaddress = sockaddr_addr_offset(remotesockaddr);
 
     if (ctl->InterfaceAddress) {
         net_validate_interface_address(ctl->af, ctl->InterfaceAddress);
@@ -799,21 +784,8 @@ void net_reopen(
     }
 
     remotesockaddr->sa_family = addr->h_addrtype;
-    addrcpy((void *) remoteaddress, addr->h_addr, addr->h_addrtype);
-
-    switch (addr->h_addrtype) {
-    case AF_INET:
-        addrcpy((void *) &(rsa4->sin_addr), addr->h_addr, AF_INET);
-        break;
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-        addrcpy((void *) &(rsa6->sin6_addr), addr->h_addr, AF_INET6);
-        break;
-#endif
-    default:
-        error(EXIT_FAILURE, 0, "net_reopen bad address type");
-    }
-
+    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);
 }
@@ -924,25 +896,6 @@ int addrcmp(
     return rc;
 }
 
-/* Address copy. */
-void addrcpy(
-    char *a,
-    char *b,
-    int family)
-{
-
-    switch (family) {
-    case AF_INET:
-        memcpy(a, b, sizeof(struct in_addr));
-        break;
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-        memcpy(a, b, sizeof(struct in6_addr));
-        break;
-#endif
-    }
-}
-
 /* for GTK frontend */
 void net_harvest_fds(
     struct mtr_ctl *ctl)