$NetBSD: patch-an,v 1.5 2007/12/06 16:59:38 christos Exp $ --- net.c.orig 2006-12-13 14:57:23.000000000 -0500 +++ net.c 2007-12-06 11:54:11.000000000 -0500 @@ -35,7 +35,6 @@ #include #include #include - #if defined(HAVE_SIN6_SCOPE_ID_LINUX) #define in6_addr in6_addr_libc #define ipv6_mreq ipv6_mreq_libc @@ -43,12 +42,19 @@ #endif #include -#ifdef HAVE_NETINET_TCP_H +#if defined(HAVE_NETINET_TCP_H) || defined(NETBSD) #include #endif -#ifdef HAVE_NETINET_UDP_H +#if defined(HAVE_NETINET_UDP_H) || defined(NETBSD) #include #endif +#ifdef NETBSD +#include +#include +#ifdef NETBSD +#define ucred uucred +#endif +#endif #include #include #if defined(LINUX) @@ -800,8 +806,12 @@ #ifdef SOL_PACKET static const struct xlat sockpacketoptions[] = { +#if defined(PACKET_ADD_MEMBERSHIP) { PACKET_ADD_MEMBERSHIP, "PACKET_ADD_MEMBERSHIP" }, +#endif +#if defined(PACKET_DROP_MEMBERSHIP) { PACKET_DROP_MEMBERSHIP, "PACKET_DROP_MEMBERSHIP"}, +#endif #if defined(PACKET_RECV_OUTPUT) { PACKET_RECV_OUTPUT, "PACKET_RECV_OUTPUT" }, #endif @@ -1099,7 +1109,7 @@ return; } - tprintf(", {cmsg_len=%zu, cmsg_level=", cmsg->cmsg_len); + tprintf(", {cmsg_len=%zu, cmsg_level=", (size_t)cmsg->cmsg_len); printxval(socketlayers, cmsg->cmsg_level, "SOL_???"); tprintf(", cmsg_type="); @@ -1125,12 +1135,21 @@ free(cmsg); return; } +#if !defined(SCM_CREDENTIALS) && defined(SCM_CREDS) +#define SCM_CREDENTIALS SCM_CREDS +#endif + if (cmsg->cmsg_type == SCM_CREDENTIALS && CMSG_LEN(sizeof(struct ucred)) <= cmsg_len) { struct ucred *uc = (struct ucred *) CMSG_DATA (cmsg); +#ifdef NETBSD + tprintf("{uid=%ld, gid=%ld}}", + (long)uc->cr_uid, (long)uc->cr_gid); +#else tprintf("{pid=%ld, uid=%ld, gid=%ld}}", (long)uc->pid, (long)uc->uid, (long)uc->gid); +#endif free(cmsg); return; } @@ -1472,7 +1491,7 @@ else tprintf("[%u, %u]", fds[0], fds[1]); } -#elif defined(SPARC) || defined(SPARC64) || defined(SH) || defined(SVR4) || defined(FREEBSD) || defined(IA64) +#elif defined(SPARC) || defined(SPARC64) || defined(SH) || defined(SVR4) || defined(ALLBSD) || defined(IA64) if (exiting(tcp)) tprintf("[%lu, %lu]", tcp->u_rval, getrval2(tcp)); #endif @@ -1519,9 +1538,9 @@ else tprintf(", [%u, %u]", fds[0], fds[1]); #endif /* LINUX */ -#if defined(SUNOS4) || defined(SVR4) || defined(FREEBSD) +#if defined(SUNOS4) || defined(SVR4) || defined(ALLBSD) tprintf(", [%lu, %lu]", tcp->u_rval, getrval2(tcp)); -#endif /* SUNOS4 || SVR4 || FREEBSD */ +#endif /* SUNOS4 || SVR4 || ALLBSD */ } return 0; }