]> granicus.if.org Git - strace/commitdiff
Intorduce PRINT_FIELD_SOCKADDR
authorDmitry V. Levin <ldv@altlinux.org>
Sun, 9 Jul 2017 16:04:24 +0000 (16:04 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Sun, 9 Jul 2017 18:43:34 +0000 (18:43 +0000)
* print_fields.h (PRINT_FIELD_SOCKADDR): New macro.
* msghdr.c (print_cmsg_ip_recverr): Use it instead of print_sockaddr.
* net.c (print_group_req): Likewise.
* sock.c (PRINT_IFREQ_ADDR): Remove.
(print_ifreq, print_ifconf_ifreq): Use PRINT_FIELD_SOCKADDR
instead of PRINT_IFREQ_ADDR.

msghdr.c
net.c
print_fields.h
sock.c

index 72c1cbee4d4835ed2ba42c436823dc6600d95385..22ba0d28622948f5d0120477e98a39e89dee73dc 100644 (file)
--- a/msghdr.c
+++ b/msghdr.c
@@ -185,10 +185,10 @@ print_cmsg_ip_recverr(struct tcb *tcp, const void *cmsg_data,
        const struct sock_ee *const err = cmsg_data;
 
        tprintf("{ee_errno=%u, ee_origin=%u, ee_type=%u, ee_code=%u"
-               ", ee_info=%u, ee_data=%u, offender=",
+               ", ee_info=%u, ee_data=%u",
                err->ee_errno, err->ee_origin, err->ee_type,
                err->ee_code, err->ee_info, err->ee_data);
-       print_sockaddr(&err->offender, sizeof(err->offender));
+       PRINT_FIELD_SOCKADDR(", ", *err, offender);
        tprints("}");
 }
 
diff --git a/net.c b/net.c
index 6b63fb184c456f2145181c78312eb184e49640eb..78325da8607395583d0c38eac3f01d95be0bf7a5 100644 (file)
--- a/net.c
+++ b/net.c
@@ -703,8 +703,7 @@ print_group_req(struct tcb *const tcp, const kernel_ulong_t addr, const int len)
        }
 
        PRINT_FIELD_IFINDEX("{", greq, gr_interface);
-       tprints(", gr_group=");
-       print_sockaddr(&greq.gr_group, sizeof(greq.gr_group));
+       PRINT_FIELD_SOCKADDR(", ", greq, gr_group);
        tprints("}");
 
 }
index 860a039ed3bbfdb6c1d50c8310976310284b578f..e7bf5d8d8d57ef887836726d395afa4302aeeb72 100644 (file)
                print_ifindex((where_).field_);                         \
        } while (0)
 
+#define PRINT_FIELD_SOCKADDR(prefix_, where_, field_)                  \
+       do {                                                            \
+               STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
+               print_sockaddr(&(where_).field_,                        \
+                              sizeof((where_).field_));                \
+       } while (0)
+
 #define PRINT_FIELD_DEV(prefix_, where_, field_)                       \
        do {                                                            \
                STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
diff --git a/sock.c b/sock.c
index 08b0c1f1a888eb5bbb77f02ec98de78adcbf5d74..e6d63c0b8410f9f58abbaf18c481acb5d29363f9 100644 (file)
--- a/sock.c
+++ b/sock.c
@@ -27,6 +27,7 @@
  */
 
 #include "defs.h"
+#include "print_fields.h"
 
 #include <sys/socket.h>
 #if defined ALPHA || defined SH || defined SH64
@@ -46,13 +47,6 @@ typedef struct ifreq struct_ifreq;
 
 #include "xlat/iffflags.h"
 
-#define PRINT_IFREQ_ADDR(ifr, sockaddr)                                        \
-       do {                                                                    \
-               tprints(#sockaddr "=");                                         \
-               print_sockaddr(&((ifr)->sockaddr),                              \
-                              sizeof((ifr)->sockaddr));                        \
-       } while (0)
-
 static void
 print_ifname(const char *ifname)
 {
@@ -66,19 +60,19 @@ print_ifreq(struct tcb *const tcp, const unsigned int code,
        switch (code) {
        case SIOCSIFADDR:
        case SIOCGIFADDR:
-               PRINT_IFREQ_ADDR(ifr, ifr_addr);
+               PRINT_FIELD_SOCKADDR("", *ifr, ifr_addr);
                break;
        case SIOCSIFDSTADDR:
        case SIOCGIFDSTADDR:
-               PRINT_IFREQ_ADDR(ifr, ifr_dstaddr);
+               PRINT_FIELD_SOCKADDR("", *ifr, ifr_dstaddr);
                break;
        case SIOCSIFBRDADDR:
        case SIOCGIFBRDADDR:
-               PRINT_IFREQ_ADDR(ifr, ifr_broadaddr);
+               PRINT_FIELD_SOCKADDR("", *ifr, ifr_broadaddr);
                break;
        case SIOCSIFNETMASK:
        case SIOCGIFNETMASK:
-               PRINT_IFREQ_ADDR(ifr, ifr_netmask);
+               PRINT_FIELD_SOCKADDR("", *ifr, ifr_netmask);
                break;
        case SIOCSIFHWADDR:
        case SIOCGIFHWADDR: {
@@ -149,8 +143,7 @@ print_ifconf_ifreq(struct tcb *tcp, void *elem_buf, size_t elem_size,
 
        tprints("{ifr_name=");
        print_ifname(ifr->ifr_name);
-       tprints(", ");
-       PRINT_IFREQ_ADDR(ifr, ifr_addr);
+       PRINT_FIELD_SOCKADDR(", ", *ifr, ifr_addr);
        tprints("}");
 
        return true;