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.
This commit is contained in:
Дмитрий Левин 2017-07-09 16:04:24 +00:00
parent 6cc2b5c039
commit ce1f4d12aa
4 changed files with 16 additions and 17 deletions

View File

@ -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("}");
}

3
net.c
View File

@ -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("}");
}

View File

@ -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_); \

19
sock.c
View File

@ -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;