diff options
| author | Neil Brown <neilb@cse.unsw.edu.au> | 2005-01-04 05:48:08 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-01-04 05:48:08 -0800 |
| commit | fb6f151075c112daf30a2dcccd91999bff5dd034 (patch) | |
| tree | 01106d83fab5f2b2e19a40b9c2983f04dafa3dac | |
| parent | a733375f250c756d166c92c922cf0c1dab23122c (diff) | |
[PATCH] knfsd: check the callback netid in gen_callback.
since we only support tcp, don't save the netinfo.
Signed-off-by: Andy Adamson <andros@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | fs/nfsd/nfs4state.c | 21 | ||||
| -rw-r--r-- | include/linux/nfsd/state.h | 1 |
2 files changed, 14 insertions, 8 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index ebecbd97df71..8cd8199493ec 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -420,17 +420,24 @@ gen_callback(struct nfs4_client *clp, struct nfsd4_setclientid *se) { struct nfs4_callback *cb = &clp->cl_callback; + /* Currently, we only support tcp for the callback channel */ + if ((se->se_callback_netid_len != 3) || memcmp((char *)se->se_callback_netid_val, "tcp", 3)) + goto out_err; + if ( !(parse_ipv4(se->se_callback_addr_len, se->se_callback_addr_val, - &cb->cb_addr, &cb->cb_port))) { - printk(KERN_INFO "NFSD: BAD callback address. client will not receive delegations\n"); - cb->cb_parsed = 0; - return; - } - cb->cb_netid.len = se->se_callback_netid_len; - cb->cb_netid.data = se->se_callback_netid_val; + &cb->cb_addr, &cb->cb_port))) + goto out_err; cb->cb_prog = se->se_callback_prog; cb->cb_ident = se->se_callback_ident; cb->cb_parsed = 1; + return; +out_err: + printk(KERN_INFO "NFSD: this client (clientid %08x/%08x) " + "will not receive delegations\n", + clp->cl_clientid.cl_boot, clp->cl_clientid.cl_id); + + cb->cb_parsed = 0; + return; } /* diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h index 5e6c2ab760fd..c20635cc99a3 100644 --- a/include/linux/nfsd/state.h +++ b/include/linux/nfsd/state.h @@ -75,7 +75,6 @@ struct nfs4_callback { unsigned short cb_port; u32 cb_prog; u32 cb_ident; - struct xdr_netobj cb_netid; /* RPC client info */ u32 cb_set; /* successful CB_NULL call */ struct rpc_program cb_program; |
