aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd
diff options
context:
space:
mode:
authorOlga Kornievskaia <aglo@citi.umich.edu>2008-12-23 16:17:40 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-12-23 16:17:40 -0500
commit608207e8884e083ad8b8d33eda868da70f0d63e8 (patch)
tree86073f5f2e4a550bb1efe395954abe3fa91a555e /fs/nfsd
parent68e76ad0baf8f5d5060377c2423ee6eed5c63057 (diff)
rpc: pass target name down to rpc level on callbacks
The rpc client needs to know the principal that the setclientid was done as, so it can tell gssd who to authenticate to. Signed-off-by: Olga Kornievskaia <aglo@citi.umich.edu> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r--fs/nfsd/nfs4callback.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c
index 094747a1227c..3ca141782145 100644
--- a/fs/nfsd/nfs4callback.c
+++ b/fs/nfsd/nfs4callback.c
@@ -384,6 +384,7 @@ static int do_probe_callback(void *data)
384 .version = nfs_cb_version[1]->number, 384 .version = nfs_cb_version[1]->number,
385 .authflavor = RPC_AUTH_UNIX, /* XXX: need AUTH_GSS... */ 385 .authflavor = RPC_AUTH_UNIX, /* XXX: need AUTH_GSS... */
386 .flags = (RPC_CLNT_CREATE_NOPING | RPC_CLNT_CREATE_QUIET), 386 .flags = (RPC_CLNT_CREATE_NOPING | RPC_CLNT_CREATE_QUIET),
387 .client_name = clp->cl_principal,
387 }; 388 };
388 struct rpc_message msg = { 389 struct rpc_message msg = {
389 .rpc_proc = &nfs4_cb_procedures[NFSPROC4_CLNT_CB_NULL], 390 .rpc_proc = &nfs4_cb_procedures[NFSPROC4_CLNT_CB_NULL],
@@ -392,6 +393,11 @@ static int do_probe_callback(void *data)
392 struct rpc_clnt *client; 393 struct rpc_clnt *client;
393 int status; 394 int status;
394 395
396 if (!clp->cl_principal && (clp->cl_flavor >= RPC_AUTH_GSS_KRB5)) {
397 status = nfserr_cb_path_down;
398 goto out_err;
399 }
400
395 /* Initialize address */ 401 /* Initialize address */
396 memset(&addr, 0, sizeof(addr)); 402 memset(&addr, 0, sizeof(addr));
397 addr.sin_family = AF_INET; 403 addr.sin_family = AF_INET;