diff options
Diffstat (limited to 'fs/nfs/callback.c')
| -rw-r--r-- | fs/nfs/callback.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index 0ef47dff89be..a886e692ddd0 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c | |||
| @@ -38,6 +38,7 @@ static struct svc_program nfs4_callback_program; | |||
| 38 | 38 | ||
| 39 | unsigned int nfs_callback_set_tcpport; | 39 | unsigned int nfs_callback_set_tcpport; |
| 40 | unsigned short nfs_callback_tcpport; | 40 | unsigned short nfs_callback_tcpport; |
| 41 | unsigned short nfs_callback_tcpport6; | ||
| 41 | static const int nfs_set_port_min = 0; | 42 | static const int nfs_set_port_min = 0; |
| 42 | static const int nfs_set_port_max = 65535; | 43 | static const int nfs_set_port_max = 65535; |
| 43 | 44 | ||
| @@ -119,6 +120,17 @@ int nfs_callback_up(void) | |||
| 119 | dprintk("NFS: Callback listener port = %u (af %u)\n", | 120 | dprintk("NFS: Callback listener port = %u (af %u)\n", |
| 120 | nfs_callback_tcpport, PF_INET); | 121 | nfs_callback_tcpport, PF_INET); |
| 121 | 122 | ||
| 123 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
| 124 | ret = svc_create_xprt(serv, "tcp", PF_INET6, | ||
| 125 | nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS); | ||
| 126 | if (ret > 0) { | ||
| 127 | nfs_callback_tcpport6 = ret; | ||
| 128 | dprintk("NFS: Callback listener port = %u (af %u)\n", | ||
| 129 | nfs_callback_tcpport6, PF_INET6); | ||
| 130 | } else if (ret != -EAFNOSUPPORT) | ||
| 131 | goto out_err; | ||
| 132 | #endif /* defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) */ | ||
| 133 | |||
| 122 | nfs_callback_info.rqst = svc_prepare_thread(serv, &serv->sv_pools[0]); | 134 | nfs_callback_info.rqst = svc_prepare_thread(serv, &serv->sv_pools[0]); |
| 123 | if (IS_ERR(nfs_callback_info.rqst)) { | 135 | if (IS_ERR(nfs_callback_info.rqst)) { |
| 124 | ret = PTR_ERR(nfs_callback_info.rqst); | 136 | ret = PTR_ERR(nfs_callback_info.rqst); |
