mirror of https://gitee.com/openkylin/linux.git
knfsd: nfsd4: store pseudoflavor in request
Add a new field to the svc_rqst structure to record the pseudoflavor that the request was made with. For now we record the pseudoflavor but don't use it for anything. Signed-off-by: Andy Adamson <andros@citi.umich.edu> Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
42ed95c4e7
commit
c4170583f6
|
@ -58,6 +58,7 @@ u32 gss_unwrap(
|
||||||
u32 gss_delete_sec_context(
|
u32 gss_delete_sec_context(
|
||||||
struct gss_ctx **ctx_id);
|
struct gss_ctx **ctx_id);
|
||||||
|
|
||||||
|
u32 gss_svc_to_pseudoflavor(struct gss_api_mech *, u32 service);
|
||||||
u32 gss_pseudoflavor_to_service(struct gss_api_mech *, u32 pseudoflavor);
|
u32 gss_pseudoflavor_to_service(struct gss_api_mech *, u32 pseudoflavor);
|
||||||
char *gss_service_to_auth_domain_name(struct gss_api_mech *, u32 service);
|
char *gss_service_to_auth_domain_name(struct gss_api_mech *, u32 service);
|
||||||
|
|
||||||
|
|
|
@ -212,6 +212,7 @@ struct svc_rqst {
|
||||||
struct svc_pool * rq_pool; /* thread pool */
|
struct svc_pool * rq_pool; /* thread pool */
|
||||||
struct svc_procedure * rq_procinfo; /* procedure info */
|
struct svc_procedure * rq_procinfo; /* procedure info */
|
||||||
struct auth_ops * rq_authop; /* authentication flavour */
|
struct auth_ops * rq_authop; /* authentication flavour */
|
||||||
|
u32 rq_flavor; /* pseudoflavor */
|
||||||
struct svc_cred rq_cred; /* auth info */
|
struct svc_cred rq_cred; /* auth info */
|
||||||
struct sk_buff * rq_skbuff; /* fast recv inet buffer */
|
struct sk_buff * rq_skbuff; /* fast recv inet buffer */
|
||||||
struct svc_deferred_req*rq_deferred; /* deferred request we are replaying */
|
struct svc_deferred_req*rq_deferred; /* deferred request we are replaying */
|
||||||
|
|
|
@ -193,6 +193,20 @@ gss_mech_get_by_pseudoflavor(u32 pseudoflavor)
|
||||||
|
|
||||||
EXPORT_SYMBOL(gss_mech_get_by_pseudoflavor);
|
EXPORT_SYMBOL(gss_mech_get_by_pseudoflavor);
|
||||||
|
|
||||||
|
u32
|
||||||
|
gss_svc_to_pseudoflavor(struct gss_api_mech *gm, u32 service)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < gm->gm_pf_num; i++) {
|
||||||
|
if (gm->gm_pfs[i].service == service) {
|
||||||
|
return gm->gm_pfs[i].pseudoflavor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return RPC_AUTH_MAXFLAVOR; /* illegal value */
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(gss_svc_to_pseudoflavor);
|
||||||
|
|
||||||
u32
|
u32
|
||||||
gss_pseudoflavor_to_service(struct gss_api_mech *gm, u32 pseudoflavor)
|
gss_pseudoflavor_to_service(struct gss_api_mech *gm, u32 pseudoflavor)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1131,6 +1131,8 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp)
|
||||||
}
|
}
|
||||||
svcdata->rsci = rsci;
|
svcdata->rsci = rsci;
|
||||||
cache_get(&rsci->h);
|
cache_get(&rsci->h);
|
||||||
|
rqstp->rq_flavor = gss_svc_to_pseudoflavor(
|
||||||
|
rsci->mechctx->mech_type, gc->gc_svc);
|
||||||
ret = SVC_OK;
|
ret = SVC_OK;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <linux/sunrpc/xdr.h>
|
#include <linux/sunrpc/xdr.h>
|
||||||
#include <linux/sunrpc/svcsock.h>
|
#include <linux/sunrpc/svcsock.h>
|
||||||
#include <linux/sunrpc/svcauth.h>
|
#include <linux/sunrpc/svcauth.h>
|
||||||
|
#include <linux/sunrpc/gss_api.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/hash.h>
|
#include <linux/hash.h>
|
||||||
|
@ -707,6 +708,7 @@ svcauth_null_accept(struct svc_rqst *rqstp, __be32 *authp)
|
||||||
svc_putnl(resv, RPC_AUTH_NULL);
|
svc_putnl(resv, RPC_AUTH_NULL);
|
||||||
svc_putnl(resv, 0);
|
svc_putnl(resv, 0);
|
||||||
|
|
||||||
|
rqstp->rq_flavor = RPC_AUTH_NULL;
|
||||||
return SVC_OK;
|
return SVC_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -784,6 +786,7 @@ svcauth_unix_accept(struct svc_rqst *rqstp, __be32 *authp)
|
||||||
svc_putnl(resv, RPC_AUTH_NULL);
|
svc_putnl(resv, RPC_AUTH_NULL);
|
||||||
svc_putnl(resv, 0);
|
svc_putnl(resv, 0);
|
||||||
|
|
||||||
|
rqstp->rq_flavor = RPC_AUTH_UNIX;
|
||||||
return SVC_OK;
|
return SVC_OK;
|
||||||
|
|
||||||
badcred:
|
badcred:
|
||||||
|
|
Loading…
Reference in New Issue