Module Name: src Committed By: christos Date: Wed Sep 26 23:13:00 UTC 2012
Modified Files: src/lib/libc/net: getnameinfo.3 getnameinfo.c Log Message: add and document AF_LOCAL (and the rest that were not) To generate a diff of this commit: cvs rdiff -u -r1.38 -r1.39 src/lib/libc/net/getnameinfo.3 cvs rdiff -u -r1.52 -r1.53 src/lib/libc/net/getnameinfo.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/net/getnameinfo.3 diff -u src/lib/libc/net/getnameinfo.3:1.38 src/lib/libc/net/getnameinfo.3:1.39 --- src/lib/libc/net/getnameinfo.3:1.38 Sat Mar 3 22:23:35 2012 +++ src/lib/libc/net/getnameinfo.3 Wed Sep 26 19:13:00 2012 @@ -1,4 +1,4 @@ -.\" $NetBSD: getnameinfo.3,v 1.38 2012/03/04 03:23:35 christos Exp $ +.\" $NetBSD: getnameinfo.3,v 1.39 2012/09/26 23:13:00 christos Exp $ .\" $KAME: getnameinfo.3,v 1.37 2005/01/05 03:23:05 itojun Exp $ .\" $OpenBSD: getnameinfo.3,v 1.36 2004/12/21 09:48:20 jmc Exp $ .\" @@ -17,7 +17,7 @@ .\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR .\" PERFORMANCE OF THIS SOFTWARE. .\" -.Dd March 3, 2012 +.Dd September 26, 2012 .Dt GETNAMEINFO 3 .Os .Sh NAME @@ -47,11 +47,19 @@ The .Li sockaddr structure .Fa sa -should point to either a +should point to a .Li sockaddr_in -or +(for IPv4), .Li sockaddr_in6 -structure (for IPv4 or IPv6 respectively) that is +(for IPv6), +.Li sockaddr_atalk +(for AppleTalk), +.Li sockaddr_link +(for link layer), +or +.Li sockaddr_local +(for local/unix) +structures that are .Fa salen bytes long. .Pp Index: src/lib/libc/net/getnameinfo.c diff -u src/lib/libc/net/getnameinfo.c:1.52 src/lib/libc/net/getnameinfo.c:1.53 --- src/lib/libc/net/getnameinfo.c:1.52 Tue Mar 20 13:44:18 2012 +++ src/lib/libc/net/getnameinfo.c Wed Sep 26 19:13:00 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: getnameinfo.c,v 1.52 2012/03/20 17:44:18 matt Exp $ */ +/* $NetBSD: getnameinfo.c,v 1.53 2012/09/26 23:13:00 christos Exp $ */ /* $KAME: getnameinfo.c,v 1.45 2000/09/25 22:43:56 itojun Exp $ */ /* @@ -47,12 +47,13 @@ #include <sys/cdefs.h> #if defined(LIBC_SCCS) && !defined(lint) -__RCSID("$NetBSD: getnameinfo.c,v 1.52 2012/03/20 17:44:18 matt Exp $"); +__RCSID("$NetBSD: getnameinfo.c,v 1.53 2012/09/26 23:13:00 christos Exp $"); #endif /* LIBC_SCCS and not lint */ #include "namespace.h" #include <sys/types.h> #include <sys/socket.h> +#include <sys/un.h> #include <net/if.h> #include <net/if_dl.h> #include <net/if_ieee1394.h> @@ -104,6 +105,8 @@ static int ip6_sa2str(const struct socka #endif static int getnameinfo_atalk(const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, int); +static int getnameinfo_local(const struct sockaddr *, socklen_t, char *, + socklen_t, char *, socklen_t, int); static int getnameinfo_link(const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, int); @@ -131,6 +134,9 @@ getnameinfo(const struct sockaddr *sa, s case AF_LINK: return getnameinfo_link(sa, salen, host, hostlen, serv, servlen, flags); + case AF_LOCAL: + return getnameinfo_local(sa, salen, host, hostlen, + serv, servlen, flags); default: return EAI_FAMILY; } @@ -197,6 +203,29 @@ errout: } /* + * getnameinfo_local(): + * Format an local address into a printable format. + */ +/* ARGSUSED */ +static int +getnameinfo_local(const struct sockaddr *sa, socklen_t salen, + char *host, socklen_t hostlen, char *serv, socklen_t servlen, + int flags) +{ + const struct sockaddr_un *sun = + (const struct sockaddr_un *)(const void *)sa; + + if (serv != NULL && servlen > 0) + serv[0] = '\0'; + + if (host && hostlen > 0) + strlcpy(host, sun->sun_path, + MIN(sizeof(sun->sun_path) + 1, hostlen)); + + return 0; +} + +/* * getnameinfo_inet(): * Format an IPv4 or IPv6 sockaddr into a printable string. */