From: Chuck Lever Date: Thu, 14 Jan 2010 17:23:09 +0000 (-0500) Subject: sm-notify: Support IPv6 DNS lookups in smn_lookup X-Git-Tag: nfs-utils-1-2-2-rc7~17 X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=commitdiff_plain;h=18c3a41364836e61ceeb8e615e2b059904c5b65f sm-notify: Support IPv6 DNS lookups in smn_lookup When IPV6_SUPPORTED is enabled and the local system has IPv6 support, request AF_INET6 and AF_INET addresses from the DNS resolver. Signed-off-by: Chuck Lever --- diff --git a/utils/statd/sm-notify.c b/utils/statd/sm-notify.c index 259db09..8d90d1f 100644 --- a/utils/statd/sm-notify.c +++ b/utils/statd/sm-notify.c @@ -33,6 +33,10 @@ #include "nsm.h" #include "nfsrpc.h" +#ifndef HAVE_DECL_AI_ADDRCONFIG +#define AI_ADDRCONFIG 0 +#endif + #define NSM_TIMEOUT 2 #define NSM_MAX_TIMEOUT 120 /* don't make this too big */ @@ -65,19 +69,20 @@ static int record_pid(void); static struct nsm_host * hosts = NULL; -static struct addrinfo *smn_lookup(const char *name) +__attribute_malloc__ +static struct addrinfo * +smn_lookup(const char *name) { - struct addrinfo *ai, hint = { -#if HAVE_DECL_AI_ADDRCONFIG + struct addrinfo *ai = NULL; + struct addrinfo hint = { .ai_flags = AI_ADDRCONFIG, -#endif /* HAVE_DECL_AI_ADDRCONFIG */ - .ai_family = AF_INET, - .ai_protocol = IPPROTO_UDP, + .ai_family = (nsm_family == AF_INET ? AF_INET: AF_UNSPEC), + .ai_protocol = (int)IPPROTO_UDP, }; int error; error = getaddrinfo(name, NULL, &hint, &ai); - if (error) { + if (error != 0) { xlog(D_GENERAL, "getaddrinfo(3): %s", gai_strerror(error)); return NULL; }