* print_fields.h (PRINT_FIELD_INET4_ADDR): New macro.
* msghdr.c (print_cmsg_ip_pktinfo): Use it instead of manual
tprintf statements.
* net.c (print_mreq): Likewise.
* sockaddr.c (print_sockaddr_data_in): Likewise.
const struct in_pktinfo *info = cmsg_data;
PRINT_FIELD_IFINDEX("{", *info, ipi_ifindex);
- tprintf(", ipi_spec_dst=inet_addr(\"%s\")",
- inet_ntoa(info->ipi_spec_dst));
- tprintf(", ipi_addr=inet_addr(\"%s\")}",
- inet_ntoa(info->ipi_addr));
+ PRINT_FIELD_INET4_ADDR(", ", *info, ipi_spec_dst);
+ PRINT_FIELD_INET4_ADDR(", ", *info, ipi_addr);
+ tprints("}");
}
static void
if (umove_or_printaddr(tcp, addr, &mreq))
return;
- tprintf("{imr_multiaddr=inet_addr(\"%s\")",
- inet_ntoa(mreq.imr_multiaddr));
- tprintf(", imr_interface=inet_addr(\"%s\")}",
- inet_ntoa(mreq.imr_interface));
+ PRINT_FIELD_INET4_ADDR("{", mreq, imr_multiaddr);
+ PRINT_FIELD_INET4_ADDR(", ", mreq, imr_interface);
+ tprints("}");
}
#endif /* IP_ADD_MEMBERSHIP */
sizeof((where_).field_), #field_); \
} while (0)
+#define PRINT_FIELD_INET4_ADDR(prefix_, where_, field_) \
+ STRACE_PRINTF("%s%s=inet_addr(\"%s\")", (prefix_), #field_, \
+ inet_ntoa((where_).field_))
+
#define PRINT_FIELD_NET_PORT(prefix_, where_, field_) \
STRACE_PRINTF("%s%s=htons(%u)", (prefix_), #field_, \
ntohs((where_).field_))
const struct sockaddr_in *const sa_in = buf;
PRINT_FIELD_NET_PORT("", *sa_in, sin_port);
- tprintf(", sin_addr=inet_addr(\"%s\")", inet_ntoa(sa_in->sin_addr));
+ PRINT_FIELD_INET4_ADDR(", ", *sa_in, sin_addr);
}
#define SIN6_MIN_LEN offsetof(struct sockaddr_in6, sin6_scope_id)