From b63dc54a1db0295c1c9195810cc45ffbb743b442 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Sun, 9 Jul 2017 13:54:01 +0000 Subject: [PATCH] Intorduce PRINT_FIELD_INET_ADDR * 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 | 4 +--- netlink_sock_diag.c | 8 ++------ print_fields.h | 7 +++++++ sockaddr.c | 7 ++++--- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/net.c b/net.c index 872a728c..ae8e7494 100644 --- 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); diff --git a/netlink_sock_diag.c b/netlink_sock_diag.c index 525dc9e6..1475ec8b 100644 --- a/netlink_sock_diag.c +++ b/netlink_sock_diag.c @@ -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); diff --git a/print_fields.h b/print_fields.h index abf2cf61..508840ce 100644 --- a/print_fields.h +++ b/print_fields.h @@ -80,4 +80,11 @@ 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 */ diff --git a/sockaddr.c b/sockaddr.c index bfbe585b..3f85c5f6 100644 --- a/sockaddr.c +++ b/sockaddr.c @@ -30,6 +30,8 @@ */ #include "defs.h" +#include "print_fields.h" + #include #include #include @@ -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) -- 2.40.0