summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkuriyama <kuriyama@FreeBSD.org>2005-02-03 22:21:19 +0000
committerkuriyama <kuriyama@FreeBSD.org>2005-02-03 22:21:19 +0000
commitadecb8eaaa11cd16d1deacd584fca1f90b3792a7 (patch)
tree25f9e7f96f5dbb52348d70a84bf76e8a9f74c83e
parent3c0c7b01b6c26ef9bb5936c3196a61eb7ca753e8 (diff)
downloadFreeBSD-src-adecb8eaaa11cd16d1deacd584fca1f90b3792a7.zip
FreeBSD-src-adecb8eaaa11cd16d1deacd584fca1f90b3792a7.tar.gz
- Use svc_getrpccaller() rather than svc_getcaller() for using
xt_rtaddr member of SVCXPRT structure. This allows to use IPv6 address stored in "struct sockaddr_storage" in "struct netbuf". - Output the reason of getnameinfo() error. Reviewed by: alfred
-rw-r--r--usr.sbin/rpc.lockd/lock_proc.c36
1 files changed, 16 insertions, 20 deletions
diff --git a/usr.sbin/rpc.lockd/lock_proc.c b/usr.sbin/rpc.lockd/lock_proc.c
index 221ee47..0449664 100644
--- a/usr.sbin/rpc.lockd/lock_proc.c
+++ b/usr.sbin/rpc.lockd/lock_proc.c
@@ -62,6 +62,8 @@ __RCSID("$NetBSD: lock_proc.c,v 1.7 2000/10/11 20:23:56 is Exp $");
#define CLIENT_CACHE_SIZE 64 /* No. of client sockets cached */
#define CLIENT_CACHE_LIFETIME 120 /* In seconds */
+#define getrpcaddr(rqstp) (struct sockaddr *)(svc_getrpccaller((rqstp)->rq_xprt)->buf)
+
static void log_from_addr(const char *, struct svc_req *);
static void log_netobj(netobj *obj);
static int addrcmp(struct sockaddr *, struct sockaddr *);
@@ -194,7 +196,7 @@ get_client(host_addr, vers)
{
CLIENT *client;
struct timeval retry_time, time_now;
- int i;
+ int error, i;
const char *netid;
struct netconfig *nconf;
char host[NI_MAXHOST];
@@ -241,9 +243,11 @@ get_client(host_addr, vers)
* Need a host string for clnt_tp_create. Use NI_NUMERICHOST
* to avoid DNS lookups.
*/
- if (getnameinfo(host_addr, 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, 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;
}
@@ -562,8 +566,7 @@ nlm_lock_msg_1_svc(arg, rqstp)
res.cookie = arg->cookie;
res.stat.stat = getlock(&arg4, rqstp, LOCK_ASYNC | LOCK_MON);
- transmit_result(NLM_LOCK_RES, &res,
- (struct sockaddr *)svc_getcaller(rqstp->rq_xprt));
+ transmit_result(NLM_LOCK_RES, &res, getrpcaddr(rqstp));
return (NULL);
}
@@ -617,8 +620,7 @@ nlm_cancel_msg_1_svc(arg, rqstp)
* a lock to cancel, so this call always fails.
*/
res.stat.stat = unlock(&arg4, LOCK_CANCEL);
- transmit_result(NLM_CANCEL_RES, &res,
- (struct sockaddr *)svc_getcaller(rqstp->rq_xprt));
+ transmit_result(NLM_CANCEL_RES, &res, getrpcaddr(rqstp));
return (NULL);
}
@@ -665,8 +667,7 @@ nlm_unlock_msg_1_svc(arg, rqstp)
res.stat.stat = unlock(&arg4, 0);
res.cookie = arg->cookie;
- transmit_result(NLM_UNLOCK_RES, &res,
- (struct sockaddr *)svc_getcaller(rqstp->rq_xprt));
+ transmit_result(NLM_UNLOCK_RES, &res, getrpcaddr(rqstp));
return (NULL);
}
@@ -723,8 +724,7 @@ nlm_granted_msg_1_svc(arg, rqstp)
nlm_granted, NULL, NLM_VERS) == 0 ?
nlm_granted : nlm_denied;
- transmit_result(NLM_GRANTED_RES, &res,
- (struct sockaddr *)svc_getcaller(rqstp->rq_xprt));
+ transmit_result(NLM_GRANTED_RES, &res, getrpcaddr(rqstp));
return (NULL);
}
@@ -1067,8 +1067,7 @@ nlm4_lock_msg_4_svc(arg, rqstp)
res.cookie = arg->cookie;
res.stat.stat = getlock(arg, rqstp, LOCK_MON | LOCK_ASYNC | LOCK_V4);
- transmit4_result(NLM4_LOCK_RES, &res,
- (struct sockaddr *)svc_getcaller(rqstp->rq_xprt));
+ transmit4_result(NLM4_LOCK_RES, &res, getrpcaddr(rqstp));
return (NULL);
}
@@ -1116,8 +1115,7 @@ nlm4_cancel_msg_4_svc(arg, rqstp)
* a lock to cancel, so this call always fails.
*/
res.stat.stat = unlock(&arg->alock, LOCK_CANCEL | LOCK_V4);
- transmit4_result(NLM4_CANCEL_RES, &res,
- (struct sockaddr *)svc_getcaller(rqstp->rq_xprt));
+ transmit4_result(NLM4_CANCEL_RES, &res, getrpcaddr(rqstp));
return (NULL);
}
@@ -1158,8 +1156,7 @@ nlm4_unlock_msg_4_svc(arg, rqstp)
res.stat.stat = unlock(&arg->alock, LOCK_V4);
res.cookie = arg->cookie;
- transmit4_result(NLM4_UNLOCK_RES, &res,
- (struct sockaddr *)svc_getcaller(rqstp->rq_xprt));
+ transmit4_result(NLM4_UNLOCK_RES, &res, getrpcaddr(rqstp));
return (NULL);
}
@@ -1215,8 +1212,7 @@ nlm4_granted_msg_4_svc(arg, rqstp)
res.stat.stat = lock_answer(arg->alock.svid, &arg->cookie,
nlm4_granted, NULL, NLM_VERS4) == 0 ?
nlm4_granted : nlm4_denied;
- transmit4_result(NLM4_GRANTED_RES, &res,
- (struct sockaddr *)svc_getrpccaller(rqstp->rq_xprt)->buf);
+ transmit4_result(NLM4_GRANTED_RES, &res, getrpcaddr(rqstp));
return (NULL);
}
OpenPOWER on IntegriCloud