freebsd-nq/sys/rpc
Rick Macklem 7763814fc9 nfsv4 client: do the BindConnectionToSession as required
During a recent testing event, it was reported that the NFSv4.1/4.2
server erroneously bound the back channel to a new TCP connection.
RFC5661 specifies that the fore channel is implicitly bound to a
new TCP connection when an RPC with Sequence (almost any of them)
is done on it.  For the back channel to be bound to the new TCP
connection, an explicit BindConnectionToSession must be done as
the first RPC on the new connection.

Since new TCP connections are created by the "reconnect" layer
(sys/rpc/clnt_rc.c) of the krpc, this patch adds an optional
upcall done by the krpc whenever a new connection is created.
The patch also adds the specific upcall function that does a
BindConnectionToSession and configures the krpc to call it
when required.

This is necessary for correct interoperability with NFSv4.1/NFSv4.2
servers when the nfscbd daemon is running.

If doing NFSv4.1/NFSv4.2 mounts without this patch, it is
recommended that the nfscbd daemon not be running and that
the "pnfs" mount option not be specified.

PR:	254840
Comments by:	asomers
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D29475
2021-04-11 14:34:57 -07:00
..
rpcsec_gss Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
rpcsec_tls nfs-over-tls: handle res.gid.gid_val correctly for memory allocation 2021-01-12 13:59:52 -08:00
auth_none.c
auth_unix.c
auth.h Add TLS support to the kernel RPC. 2020-08-22 03:57:55 +00:00
authunix_prot.c
clnt_bck.c Add TLS support to the kernel RPC. 2020-08-22 03:57:55 +00:00
clnt_dg.c Change the xid for client side krpc over UDP to a global value. 2020-04-05 21:08:17 +00:00
clnt_rc.c nfsv4 client: do the BindConnectionToSession as required 2021-04-11 14:34:57 -07:00
clnt_stat.h
clnt_vc.c Add TLS support to the kernel RPC. 2020-08-22 03:57:55 +00:00
clnt.h nfsv4 client: do the BindConnectionToSession as required 2021-04-11 14:34:57 -07:00
getnetconfig.c
krpc.h nfsv4 client: do the BindConnectionToSession as required 2021-04-11 14:34:57 -07:00
netconfig.h
nettype.h
pmap_prot.h
replay.c
replay.h
rpc_callmsg.c
rpc_com.h
rpc_generic.c Add TLS support to the kernel RPC. 2020-08-22 03:57:55 +00:00
rpc_msg.h
rpc_prot.c Move M_RPC malloc type into XDR. Both RPC and XDR libraries use 2020-04-17 06:02:13 +00:00
rpc.h
rpcb_clnt.c
rpcb_clnt.h
rpcb_prot.c
rpcb_prot.h
rpcm_subs.h
rpcsec_gss.h
rpcsec_tls.h Add a new "tlscertname" NFS mount option. 2020-12-23 13:42:55 -08:00
svc_auth_unix.c
svc_auth.c Add TLS support to the kernel RPC. 2020-08-22 03:57:55 +00:00
svc_auth.h
svc_dg.c
svc_generic.c
svc_vc.c Add TLS support to the kernel RPC. 2020-08-22 03:57:55 +00:00
svc.c Fix a potential memory leak in the NFS over TLS handling code. 2020-09-05 00:50:52 +00:00
svc.h Add TLS support to the kernel RPC. 2020-08-22 03:57:55 +00:00
types.h
xdr.h