SUNRPC: Set IPV6ONLY flag on PF_INET6 RPC listener sockets
We are about to convert to using separate RPC listener sockets for PF_INET and PF_INET6. This echoes the way IPv6 is handled in user space by TI-RPC, and eliminates the need for ULPs to worry about mapped IPv4 AF_INET6 addresses when doing address comparisons. Start by setting the IPV6ONLY flag on PF_INET6 RPC listener sockets. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
26298caaca
commit
7d21c0f984
1 changed files with 4 additions and 6 deletions
|
@ -1144,13 +1144,11 @@ static struct svc_sock *svc_setup_socket(struct svc_serv *serv,
|
|||
svc_tcp_init(svsk, serv);
|
||||
|
||||
/*
|
||||
* We start one listener per sv_serv. We want AF_INET
|
||||
* requests to be automatically shunted to our PF_INET6
|
||||
* listener using a mapped IPv4 address. Make sure
|
||||
* no-one starts an equivalent IPv4 listener, which
|
||||
* would steal our incoming connections.
|
||||
* If this is a PF_INET6 listener, we want to avoid
|
||||
* getting requests from IPv4 remotes. Those should
|
||||
* be shunted to a PF_INET listener via rpcbind.
|
||||
*/
|
||||
val = 0;
|
||||
val = 1;
|
||||
if (inet->sk_family == PF_INET6)
|
||||
kernel_setsockopt(sock, SOL_IPV6, IPV6_V6ONLY,
|
||||
(char *)&val, sizeof(val));
|
||||
|
|
Loading…
Reference in a new issue