On freebsd 4.6.2 at least, the getnameinfo function expects the length
field inside the struct sockaddr to match the salen arg or it returns
an error. This causes nmblookup to not print the address of the found
name in a query like the following

nmblookup -R -U 172.17.132.16 nt4pdc#20

The following patch fixes this. I don't have IPV6 so could not actually
test the AF_INET6 portion of the fix.


--- /tmp/tmp.66554.0 Thu Jul 3 16:02:36 2008
+++ source/lib/util_sock.c Thu Jul 3 16:02:00 2008
@@ -366,6 +366,7 @@
struct sockaddr_in *sa = (struct sockaddr_in *)ss;
memset(ss, '\0', sizeof(*ss));
ss->ss_family = AF_INET;
+ ss->ss_len = sizeof(struct sockaddr_in);
sa->sin_addr = ip;
}

@@ -380,6 +381,7 @@
struct sockaddr_in6 *sa = (struct sockaddr_in6 *)ss;
memset(ss, '\0', sizeof(*ss));
ss->ss_family = AF_INET6;
+ ss->ss_len = sizeof(struct sockaddr_in6);
sa->sin6_addr = ip;
}