2008-04-14 16:30:09

by Chuck Lever III

[permalink] [raw]
Subject: [PATCH 24/24] SUNRPC: Add kernel build option to disable server-side use of rpcbind v3/v4

Allow distributions to use the legacy behavior until they integrate an
appropriate user-space rpcbind daemon that can support IPv6 RPC services.

I tried adding some logic to fall back if (un)registering with a v4
protocol request failed, but there are too many corner cases. So I just
made it a compile-time switch that distributions can throw when they've
replaced portmapper with rpcbind.

Signed-off-by: Chuck Lever <[email protected]>
---

fs/Kconfig | 30 ++++++++++++++++++++++++++++--
1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/fs/Kconfig b/fs/Kconfig
index f1bc33f..56e6fa5 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -1772,7 +1772,7 @@ config SUNRPC_XPRT_RDMA
If unsure, say N.

config SUNRPC_BIND34
- bool "Support for rpcbind versions 3 & 4 (EXPERIMENTAL)"
+ bool "Support for rpcbind v3 & v4 queries (EXPERIMENTAL)"
depends on SUNRPC && EXPERIMENTAL
default n
help
@@ -1785,13 +1785,39 @@ config SUNRPC_BIND34
querying rpcbind servers via versions 3 and 4 of the rpcbind
protocol. The kernel automatically falls back to version 2
if a remote rpcbind service does not support versions 3 or 4.
+
By themselves, these new versions do not provide support for
RPC over IPv6, but the new protocol versions are necessary to
- support it.
+ support it. Enabling this option is required to support
+ mounting NFS servers over IPv6 networks.

If unsure, say N to get traditional behavior (version 2 rpcbind
requests only).

+config SUNRPC_REGISTER_V4
+ bool "Register local RPC services via rpcbind v4 (EXPERIMENTAL)"
+ depends on SUNRPC && EXPERIMENTAL
+ default n
+ help
+ RPC requests over IPv6 networks require support for larger
+ addresses when performing an RPC bind. Sun added support for
+ registering RPC services at an IPv6 address by creating two
+ new versions of the rpcbind protocol (RFC 1833).
+
+ This option enables support in the kernel RPC server for
+ registering local RPC services via version 4 of the rpcbind
+ protocol. If you enable this option, you must run a user
+ space portmapper daemon capable of understanding rpcbind
+ protocol version 4.
+
+ If unsure, say N to get traditional behavior (register local
+ services using only rpcbind version 2).
+
+ Enabling this option and using a portmapper capable of
+ responding to rpcbind version 4 requests is required to support
+ serving NFS requests over IPv6 networks. Distributions using
+ the legacy Linux portmapper daemon must say N here.
+
config RPCSEC_GSS_KRB5
tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)"
depends on SUNRPC && EXPERIMENTAL