Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

NFS: Enable NFSv4 callback server to listen on AF_INET6 sockets

Allow the NFS callback server to listen for requests via an AF_INET6 or
AF_INET socket when IPv6 support is present in the kernel.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

authored by

Chuck Lever and committed by
Trond Myklebust
18de9735 2e532d68

+15 -4
+15 -4
fs/nfs/callback.c
··· 40 40 static const int nfs_set_port_min = 0; 41 41 static const int nfs_set_port_max = 65535; 42 42 43 + /* 44 + * If the kernel has IPv6 support available, always listen for 45 + * both AF_INET and AF_INET6 requests. 46 + */ 47 + #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) 48 + static const sa_family_t nfs_callback_family = AF_INET6; 49 + #else 50 + static const sa_family_t nfs_callback_family = AF_INET; 51 + #endif 52 + 43 53 static int param_set_port(const char *val, struct kernel_param *kp) 44 54 { 45 55 char *endp; ··· 116 106 if (nfs_callback_info.users++ || nfs_callback_info.task != NULL) 117 107 goto out; 118 108 serv = svc_create(&nfs4_callback_program, NFS4_CALLBACK_BUFSIZE, 119 - AF_INET, NULL); 109 + nfs_callback_family, NULL); 120 110 ret = -ENOMEM; 121 111 if (!serv) 122 112 goto out_err; ··· 126 116 if (ret <= 0) 127 117 goto out_err; 128 118 nfs_callback_tcpport = ret; 129 - dprintk("Callback port = 0x%x\n", nfs_callback_tcpport); 119 + dprintk("NFS: Callback listener port = %u (af %u)\n", 120 + nfs_callback_tcpport, nfs_callback_family); 130 121 131 122 nfs_callback_info.rqst = svc_prepare_thread(serv, &serv->sv_pools[0]); 132 123 if (IS_ERR(nfs_callback_info.rqst)) { ··· 160 149 mutex_unlock(&nfs_callback_mutex); 161 150 return ret; 162 151 out_err: 163 - dprintk("Couldn't create callback socket or server thread; err = %d\n", 164 - ret); 152 + dprintk("NFS: Couldn't create callback socket or server thread; " 153 + "err = %d\n", ret); 165 154 nfs_callback_info.users--; 166 155 goto out; 167 156 }