SUNRPC: track whether a request is coming from a loop-back interface.
If an incoming NFS request is coming from the local host, then nfsd will need to perform some special handling. So detect that possibility and make the source visible in rq_local. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
committed by
J. Bruce Fields
parent
c789102c20
commit
ef11ce2487
@@ -874,6 +874,10 @@ static struct svc_xprt *svc_tcp_accept(struct svc_xprt *xprt)
|
||||
}
|
||||
svc_xprt_set_local(&newsvsk->sk_xprt, sin, slen);
|
||||
|
||||
if (sock_is_loopback(newsock->sk))
|
||||
set_bit(XPT_LOCAL, &newsvsk->sk_xprt.xpt_flags);
|
||||
else
|
||||
clear_bit(XPT_LOCAL, &newsvsk->sk_xprt.xpt_flags);
|
||||
if (serv->sv_stats)
|
||||
serv->sv_stats->nettcpconn++;
|
||||
|
||||
@@ -1119,6 +1123,7 @@ static int svc_tcp_recvfrom(struct svc_rqst *rqstp)
|
||||
|
||||
rqstp->rq_xprt_ctxt = NULL;
|
||||
rqstp->rq_prot = IPPROTO_TCP;
|
||||
rqstp->rq_local = !!test_bit(XPT_LOCAL, &svsk->sk_xprt.xpt_flags);
|
||||
|
||||
p = (__be32 *)rqstp->rq_arg.head[0].iov_base;
|
||||
calldir = p[1];
|
||||
|
||||
Reference in New Issue
Block a user