diff options
-rw-r--r-- | lib/libc/net/getnameinfo.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/libc/net/getnameinfo.c b/lib/libc/net/getnameinfo.c index 0b59586..ffd34a1 100644 --- a/lib/libc/net/getnameinfo.c +++ b/lib/libc/net/getnameinfo.c @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include <net/if.h> #include <net/if_dl.h> #include <net/if_types.h> +#include <net/firewire.h> #include <netinet/in.h> #include <arpa/inet.h> #include <arpa/nameser.h> @@ -385,6 +386,7 @@ getnameinfo_link(const struct sockaddr *sa, socklen_t salen, { const struct sockaddr_dl *sdl = (const struct sockaddr_dl *)(const void *)sa; + const struct fw_hwaddr *iha; int n; if (serv != NULL && servlen > 0) @@ -400,6 +402,15 @@ getnameinfo_link(const struct sockaddr *sa, socklen_t salen, } switch (sdl->sdl_type) { + case IFT_IEEE1394: + if (sdl->sdl_alen < sizeof(iha->sender_unique_ID_hi) + + sizeof(iha->sender_unique_ID_lo)) + return EAI_FAMILY; + iha = (const struct fw_hwaddr *)(const void *)LLADDR(sdl); + return hexname((const u_int8_t *)&iha->sender_unique_ID_hi, + sizeof(iha->sender_unique_ID_hi) + + sizeof(iha->sender_unique_ID_lo), + host, hostlen); /* * The following have zero-length addresses. * IFT_ATM (net/if_atmsubr.c) |