} addrbuf;
char string_addr[100];
- if (addr == 0) {
- tprints("NULL");
- return;
- }
- if (!verbose(tcp)) {
- tprintf("%#lx", addr);
- return;
- }
-
if (addrlen < 2 || addrlen > (int) sizeof(addrbuf))
addrlen = sizeof(addrbuf);
memset(&addrbuf, 0, sizeof(addrbuf));
- if (umoven(tcp, addr, addrlen, addrbuf.pad) < 0) {
- tprints("{...}");
+ if (umoven_or_printaddr(tcp, addr, addrlen, addrbuf.pad))
return;
- }
addrbuf.pad[sizeof(addrbuf.pad) - 1] = '\0';
tprints("{sa_family=");
char *buf = len < cmsg_size ? NULL : malloc(len);
if (!buf || umoven(tcp, addr, len, buf) < 0) {
- tprintf(", msg_control=%#lx", addr);
+ tprints(", msg_control=");
+ printaddr(addr);
free(buf);
return;
}
if (verbose(tcp) && extractmsghdr(tcp, addr, &msg))
do_msghdr(tcp, &msg, data_size);
else
- tprintf("%#lx", addr);
+ printaddr(addr);
}
void
tprintf(", %u}", mmsg.msg_len);
}
else
- tprintf("%#lx", addr);
+ printaddr(addr);
}
static void
{
/* mmsgvec */
if (syserror(tcp)) {
- tprintf("%#lx", tcp->u_arg[1]);
+ printaddr(tcp->u_arg[1]);
} else {
unsigned int len = tcp->u_rval;
unsigned int i;
tprints(", ");
return 0;
}
- if (!tcp->u_arg[2])
- tprintf("%#lx, NULL", tcp->u_arg[1]);
- else {
- int len;
- if (tcp->u_arg[1] == 0 || syserror(tcp)
- || umove(tcp, tcp->u_arg[2], &len) < 0) {
- tprintf("%#lx", tcp->u_arg[1]);
- } else {
- printsock(tcp, tcp->u_arg[1], len);
- }
+
+ int len;
+ if (!tcp->u_arg[2] || !verbose(tcp) || syserror(tcp) ||
+ umove(tcp, tcp->u_arg[2], &len) < 0) {
+ printaddr(tcp->u_arg[1]);
tprints(", ");
- printnum_int(tcp, tcp->u_arg[2], "%u");
+ printaddr(tcp->u_arg[2]);
+ } else {
+ printsock(tcp, tcp->u_arg[1], len);
+ tprintf(", [%d]", len);
}
+
if (flags_arg >= 0) {
tprints(", ");
printflags(sock_type_flags, tcp->u_arg[flags_arg],
tprints(", ");
} else {
if (syserror(tcp))
- tprintf("%#lx", tcp->u_arg[1]);
+ printaddr(tcp->u_arg[1]);
else
printstr(tcp, tcp->u_arg[1], tcp->u_rval);
/* flags */
printflags(msg_flags, tcp->u_arg[3], "MSG_???");
/* from address, len */
- if (!tcp->u_arg[4] || !tcp->u_arg[5]) {
- if (tcp->u_arg[4] == 0)
- tprints(", NULL");
- else
- tprintf(", %#lx", tcp->u_arg[4]);
- if (tcp->u_arg[5] == 0)
- tprints(", NULL");
- else
- tprintf(", %#lx", tcp->u_arg[5]);
- return 0;
- }
- if (umove(tcp, tcp->u_arg[5], &fromlen) < 0) {
- tprints(", {...}, [?]");
+ tprints(", ");
+ if (!tcp->u_arg[4] || !tcp->u_arg[5] ||
+ umove(tcp, tcp->u_arg[5], &fromlen) < 0) {
+ printaddr(tcp->u_arg[4]);
+ tprints(", ");
+ printaddr(tcp->u_arg[5]);
return 0;
}
- tprints(", ");
printsock(tcp, tcp->u_arg[4], tcp->u_arg[5]);
/* from length */
tprintf(", [%u]", fromlen);
tprints(", ");
} else {
if (syserror(tcp))
- tprintf("%#lx", tcp->u_arg[1]);
+ printaddr(tcp->u_arg[1]);
else
printmsghdr(tcp, tcp->u_arg[1], tcp->u_rval);
/* flags */
{
if (exiting(tcp)) {
if (syserror(tcp)) {
- tprintf("%#lx", tcp->u_arg[0]);
+ printaddr(tcp->u_arg[0]);
} else {
#ifdef HAVE_GETRVAL2
if (flags_arg < 0)
if (len != sizeof(linger) ||
umove(tcp, addr, &linger) < 0) {
- tprintf("%#lx", addr);
+ printaddr(addr);
return;
}
if (len != sizeof(uc) ||
umove(tcp, addr, &uc) < 0) {
- tprintf("%#lx", addr);
+ printaddr(addr);
} else {
tprintf("{pid=%u, uid=%u, gid=%u}",
(unsigned) uc.pid,
if (len != sizeof(stats) ||
umove(tcp, addr, &stats) < 0) {
- tprintf("%#lx", addr);
+ printaddr(addr);
} else {
tprintf("{packets=%u, drops=%u}",
stats.tp_packets,
if (len != sizeof(filter) ||
umove(tcp, addr, &filter) < 0) {
- tprintf("%#lx", addr);
+ printaddr(addr);
return;
}
printstr(tcp, addr, len);
}
} else {
- tprintf("%#lx", addr);
+ printaddr(addr);
}
done:
tprintf(", [%d]", len);
printstr(tcp, addr, len);
return;
}
- if (umove(tcp, addr, &mreq) < 0) {
- tprintf("%#lx", addr);
+ if (umove_or_printaddr(tcp, addr, &mreq))
return;
- }
+
tprints("{imr_multiaddr=inet_addr(");
print_quoted_string(inet_ntoa(mreq.imr_multiaddr),
16, QUOTE_0_TERMINATED);
if (len < sizeof(mreq))
goto fail;
- if (umove(tcp, addr, &mreq) < 0) {
- tprintf("%#lx", addr);
+ if (umove_or_printaddr(tcp, addr, &mreq))
return;
- }
#ifdef HAVE_INET_NTOP
const struct in6_addr *in6 = &mreq.ipv6mr_multiaddr;
if (len != sizeof(greq) ||
umove(tcp, addr, &greq) < 0) {
- tprintf("%#lx", addr);
+ printaddr(addr);
return;
}
if (len != sizeof(req) ||
umove(tcp, addr, &req) < 0) {
- tprintf("%#lx", addr);
+ printaddr(addr);
} else {
tprintf("{block_size=%u, block_nr=%u, "
"frame_size=%u, frame_nr=%u}",
if (len != sizeof(mreq) ||
umove(tcp, addr, &mreq) < 0) {
- tprintf("%#lx", addr);
+ printaddr(addr);
} else {
unsigned int i;
printstr(tcp, addr, len);
}
} else {
- tprintf("%#lx", addr);
+ printaddr(addr);
}
done:
tprintf(", %d", len);