]> granicus.if.org Git - strace/commitdiff
Intorduce PRINT_FIELD_INET_ADDR
authorDmitry V. Levin <ldv@altlinux.org>
Sun, 9 Jul 2017 13:54:01 +0000 (13:54 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Sun, 9 Jul 2017 18:43:34 +0000 (18:43 +0000)
* print_fields.h (PRINT_FIELD_INET_ADDR): New macro.
* net.c (print_mreq6): Use it instead of print_inet_addr.
* netlink_sock_diag.c (print_inet_diag_sockid): Likewise.
* sockaddr.c (print_sockaddr_data_in6): Likewise.

net.c
netlink_sock_diag.c
print_fields.h
sockaddr.c

diff --git a/net.c b/net.c
index 872a728c9d3b1bc50e7114c686bc4fabc107da3a..ae8e7494daf03198b2998ac7a6a5e7f9b3bf5731 100644 (file)
--- a/net.c
+++ b/net.c
@@ -685,9 +685,7 @@ print_mreq6(struct tcb *const tcp, const kernel_ulong_t addr,
        if (umove_or_printaddr(tcp, addr, &mreq))
                return;
 
-       tprints("{");
-       print_inet_addr(AF_INET6, &mreq.ipv6mr_multiaddr,
-                       sizeof(mreq.ipv6mr_multiaddr), "ipv6mr_multiaddr");
+       PRINT_FIELD_INET_ADDR("{", mreq, ipv6mr_multiaddr, AF_INET6);
 
        tprints(", ipv6mr_interface=");
        print_ifindex(mreq.ipv6mr_interface);
index 525dc9e6b1e8cd2dc2ae24c5070d096a72c0da1d..1475ec8b8df599501ecc7d41b32e16be463cf025 100644 (file)
@@ -607,12 +607,8 @@ print_inet_diag_sockid(const struct inet_diag_sockid *id, const uint8_t family)
        tprintf("{idiag_sport=htons(%u), idiag_dport=htons(%u)",
                ntohs(id->idiag_sport), ntohs(id->idiag_dport));
 
-       tprints(", ");
-       print_inet_addr(family, id->idiag_src,
-                       sizeof(id->idiag_src), "idiag_src");
-       tprints(", ");
-       print_inet_addr(family, id->idiag_dst,
-                       sizeof(id->idiag_dst), "idiag_dst");
+       PRINT_FIELD_INET_ADDR(", ", *id, idiag_src, family);
+       PRINT_FIELD_INET_ADDR(", ", *id, idiag_dst, family);
 
        tprints(", idiag_if=");
        print_ifindex(id->idiag_if);
index abf2cf616eb973f678f8311a01e276a2f1d39f74..508840ce5ed1182de5ebf1d39a9cd386140805fd 100644 (file)
                print_quoted_string((const char *)(where_).field_, len_, style_);       \
        } while (0)
 
+#define PRINT_FIELD_INET_ADDR(prefix_, where_, field_, af_)            \
+       do {                                                            \
+               STRACE_PRINTF(prefix_);                                 \
+               print_inet_addr((af_), &(where_).field_,                \
+                               sizeof((where_).field_), #field_);      \
+       } while (0)
+
 #endif /* !STRACE_PRINT_FIELDS_H */
index bfbe585b0013d2b39b8d6d491c2f0727a3754336..3f85c5f62a9a73aae4ee2cb00030db9b0b5836d0 100644 (file)
@@ -30,6 +30,8 @@
  */
 
 #include "defs.h"
+#include "print_fields.h"
+
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <netinet/in.h>
@@ -125,9 +127,8 @@ print_sockaddr_data_in6(const void *const buf, const int addrlen)
 {
        const struct sockaddr_in6 *const sa_in6 = buf;
 
-       tprintf("sin6_port=htons(%u), ", ntohs(sa_in6->sin6_port));
-       print_inet_addr(AF_INET6, &sa_in6->sin6_addr,
-                       sizeof(sa_in6->sin6_addr), "sin6_addr");
+       tprintf("sin6_port=htons(%u)", ntohs(sa_in6->sin6_port));
+       PRINT_FIELD_INET_ADDR(", ", *sa_in6, sin6_addr, AF_INET6);
        tprintf(", sin6_flowinfo=htonl(%u)", ntohl(sa_in6->sin6_flowinfo));
 
        if (addrlen <= (int) SIN6_MIN_LEN)