diff options
author | Bryan Schumaker <bjschuma@netapp.com> | 2012-04-27 13:27:44 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-04-27 14:10:39 -0400 |
commit | 2671bfc3beb44e70636bd0208274426db57f73b5 (patch) | |
tree | 5aeec6224c390a046bfa5758a958174ebf542772 /fs/nfs/nfs4namespace.c | |
parent | df0117481cd94dbb8970f4be9d05b0568fa09ab1 (diff) |
NFS: Remove secinfo knowledge out of the generic client
And also remove the unneeded rpc_op.
Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4namespace.c')
-rw-r--r-- | fs/nfs/nfs4namespace.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/fs/nfs/nfs4namespace.c b/fs/nfs/nfs4namespace.c index a7f3dedc4ec7..a69ee3952bbe 100644 --- a/fs/nfs/nfs4namespace.c +++ b/fs/nfs/nfs4namespace.c | |||
@@ -132,6 +132,35 @@ static size_t nfs_parse_server_name(char *string, size_t len, | |||
132 | return ret; | 132 | return ret; |
133 | } | 133 | } |
134 | 134 | ||
135 | rpc_authflavor_t nfs_find_best_sec(struct nfs4_secinfo_flavors *flavors) | ||
136 | { | ||
137 | struct gss_api_mech *mech; | ||
138 | struct xdr_netobj oid; | ||
139 | int i; | ||
140 | rpc_authflavor_t pseudoflavor = RPC_AUTH_UNIX; | ||
141 | |||
142 | for (i = 0; i < flavors->num_flavors; i++) { | ||
143 | struct nfs4_secinfo_flavor *flavor; | ||
144 | flavor = &flavors->flavors[i]; | ||
145 | |||
146 | if (flavor->flavor == RPC_AUTH_NULL || flavor->flavor == RPC_AUTH_UNIX) { | ||
147 | pseudoflavor = flavor->flavor; | ||
148 | break; | ||
149 | } else if (flavor->flavor == RPC_AUTH_GSS) { | ||
150 | oid.len = flavor->gss.sec_oid4.len; | ||
151 | oid.data = flavor->gss.sec_oid4.data; | ||
152 | mech = gss_mech_get_by_OID(&oid); | ||
153 | if (!mech) | ||
154 | continue; | ||
155 | pseudoflavor = gss_svc_to_pseudoflavor(mech, flavor->gss.service); | ||
156 | gss_mech_put(mech); | ||
157 | break; | ||
158 | } | ||
159 | } | ||
160 | |||
161 | return pseudoflavor; | ||
162 | } | ||
163 | |||
135 | static rpc_authflavor_t nfs4_negotiate_security(struct inode *inode, struct qstr *name) | 164 | static rpc_authflavor_t nfs4_negotiate_security(struct inode *inode, struct qstr *name) |
136 | { | 165 | { |
137 | struct page *page; | 166 | struct page *page; |