From: Dmitry V. Levin Date: Sun, 9 Jul 2017 16:04:24 +0000 (+0000) Subject: Intorduce PRINT_FIELD_SOCKADDR X-Git-Tag: v4.19~296 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ce1f4d12aaf3ea30cd1eaf5568536ba34334121e;p=strace Intorduce PRINT_FIELD_SOCKADDR * 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. --- diff --git a/msghdr.c b/msghdr.c index 72c1cbee..22ba0d28 100644 --- 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 6b63fb18..78325da8 100644 --- 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("}"); } diff --git a/print_fields.h b/print_fields.h index 860a039e..e7bf5d8d 100644 --- a/print_fields.h +++ b/print_fields.h @@ -101,6 +101,13 @@ 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 08b0c1f1..e6d63c0b 100644 --- a/sock.c +++ b/sock.c @@ -27,6 +27,7 @@ */ #include "defs.h" +#include "print_fields.h" #include #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;