extern bool print_sockaddr_by_inode(const unsigned long, const enum sock_proto);
extern bool print_sockaddr_by_inode_cached(const unsigned long);
extern void print_dirfd(struct tcb *, int);
-extern void printsock(struct tcb *, long, int);
+extern int printsock(struct tcb *, long, int);
extern void print_sock_optmgmt(struct tcb *, long, int);
#ifdef ALPHA
extern void printrusage32(struct tcb *, long);
tprints("}");
}
-void
+int
printsock(struct tcb *tcp, long addr, int addrlen)
{
sockaddr_buf_t addrbuf;
if (addrlen < 2) {
printaddr(addr);
- return;
+ return -1;
}
if (addrlen > (int) sizeof(addrbuf))
memset(&addrbuf, 0, sizeof(addrbuf));
if (umoven_or_printaddr(tcp, addr, addrlen, addrbuf.pad))
- return;
+ return -1;
addrbuf.pad[sizeof(addrbuf.pad) - 1] = '\0';
print_sockaddr(tcp, &addrbuf, addrlen);
+
+ return addrbuf.sa.sa_family;
}
#include "xlat/scmvals.h"