Module Name:    src
Committed By:   tron
Date:           Mon Jun 18 20:30:33 UTC 2012

Modified Files:
        src/usr.sbin/rpc.lockd: lock_proc.c

Log Message:
Fix broken IPv6 support. My Mac OS X Lion NFS client now happily
talks to my NetBSD 6.0_BETA2 NFS server over IPv6.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/usr.sbin/rpc.lockd/lock_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/rpc.lockd/lock_proc.c
diff -u src/usr.sbin/rpc.lockd/lock_proc.c:1.9 src/usr.sbin/rpc.lockd/lock_proc.c:1.10
--- src/usr.sbin/rpc.lockd/lock_proc.c:1.9	Sun Nov  4 23:12:50 2007
+++ src/usr.sbin/rpc.lockd/lock_proc.c	Mon Jun 18 20:30:32 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: lock_proc.c,v 1.9 2007/11/04 23:12:50 christos Exp $	*/
+/*	$NetBSD: lock_proc.c,v 1.10 2012/06/18 20:30:32 tron Exp $	*/
 
 /*
  * Copyright (c) 1995
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: lock_proc.c,v 1.9 2007/11/04 23:12:50 christos Exp $");
+__RCSID("$NetBSD: lock_proc.c,v 1.10 2012/06/18 20:30:32 tron Exp $");
 #endif
 
 #include <sys/param.h>
@@ -156,6 +156,7 @@ get_client(struct sockaddr *host_addr, r
 	const char *netid;
 	struct netconfig *nconf;
 	char host[NI_MAXHOST];
+	int error;
 
 	(void)gettimeofday(&time_now, NULL);
 
@@ -194,9 +195,11 @@ get_client(struct sockaddr *host_addr, r
 	 * Need a host string for clnt_tp_create. Use NI_NUMERICHOST
 	 * to avoid DNS lookups.
 	 */
-	if (getnameinfo(host_addr, (socklen_t)host_addr->sa_len, host,
-	    sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) {
-		syslog(LOG_ERR, "unable to get name string for caller");
+	error = getnameinfo(host_addr, (socklen_t)host_addr->sa_len, host,
+	    sizeof(host), NULL, 0, NI_NUMERICHOST);
+	if (error != 0) {
+		syslog(LOG_ERR, "unable to get name string for caller: %s",
+		    gai_strerror(error));
 		return NULL;
 	}
 
@@ -482,7 +485,7 @@ nlm_lock_msg_1_svc(nlm_lockargs *arg, st
 	result.cookie = arg->cookie;
 	result.stat.stat = getlock(&arg4, rqstp, LOCK_ASYNC | LOCK_MON);
 	transmit_result(NLM_LOCK_RES, &result,
-	    (struct sockaddr *)(void *)svc_getcaller(rqstp->rq_xprt));
+	    (struct sockaddr *)svc_getrpccaller(rqstp->rq_xprt)->buf);
 
 	return NULL;
 }
@@ -533,7 +536,7 @@ nlm_cancel_msg_1_svc(nlm_cancargs *arg, 
 	 */
 	result.stat.stat = unlock(&arg4, LOCK_CANCEL);
 	transmit_result(NLM_CANCEL_RES, &result,
-	    (struct sockaddr *)(void *)svc_getcaller(rqstp->rq_xprt));
+	    (struct sockaddr *)svc_getrpccaller(rqstp->rq_xprt)->buf);
 	return NULL;
 }
 
@@ -577,7 +580,7 @@ nlm_unlock_msg_1_svc(nlm_unlockargs *arg
 	result.cookie = arg->cookie;
 
 	transmit_result(NLM_UNLOCK_RES, &result,
-	    (struct sockaddr *)(void *)svc_getcaller(rqstp->rq_xprt));
+	    (struct sockaddr *)svc_getrpccaller(rqstp->rq_xprt)->buf);
 	return NULL;
 }
 
@@ -625,7 +628,7 @@ nlm_granted_msg_1_svc(nlm_testargs *arg,
 	result.cookie = arg->cookie;
 	result.stat.stat = nlm_granted;
 	transmit_result(NLM_GRANTED_RES, &result,
-	    (struct sockaddr *)(void *)svc_getcaller(rqstp->rq_xprt));
+	    (struct sockaddr *)svc_getrpccaller(rqstp->rq_xprt)->buf);
 	return NULL;
 }
 
@@ -907,7 +910,7 @@ nlm4_lock_msg_4_svc(nlm4_lockargs *arg, 
 	result.stat.stat = (enum nlm4_stats)getlock(arg, rqstp,
 	    LOCK_MON | LOCK_ASYNC | LOCK_V4);
 	transmit4_result(NLM4_LOCK_RES, &result,
-	    (struct sockaddr *)(void *)svc_getcaller(rqstp->rq_xprt));
+	    (struct sockaddr *)svc_getrpccaller(rqstp->rq_xprt)->buf);
 
 	return NULL;
 }
@@ -953,7 +956,7 @@ nlm4_cancel_msg_4_svc(nlm4_cancargs *arg
 	result.stat.stat = (enum nlm4_stats)unlock(&arg->alock,
 	    LOCK_CANCEL | LOCK_V4);
 	transmit4_result(NLM4_CANCEL_RES, &result,
-	    (struct sockaddr *)(void *)svc_getcaller(rqstp->rq_xprt));
+	    (struct sockaddr *)svc_getrpccaller(rqstp->rq_xprt)->buf);
 	return NULL;
 }
 
@@ -991,7 +994,7 @@ nlm4_unlock_msg_4_svc(nlm4_unlockargs *a
 	result.cookie = arg->cookie;
 
 	transmit4_result(NLM4_UNLOCK_RES, &result,
-	    (struct sockaddr *)(void *)svc_getcaller(rqstp->rq_xprt));
+	    (struct sockaddr *)svc_getrpccaller(rqstp->rq_xprt)->buf);
 	return NULL;
 }
 

Reply via email to