From 4b7b26e3c05f0fe38fe6c843df48d665db75c0f6 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 26 Dec 2011 10:53:56 +1100 Subject: gensec: Allow an alternate set of modules to be specified This will allow s3 to specify modules to use as a list, rather than needing to start the individual module with gensec_start_mech_by_ops() Andrew Bartlett --- auth/gensec/gensec.h | 5 +++++ auth/gensec/gensec_start.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'auth/gensec') diff --git a/auth/gensec/gensec.h b/auth/gensec/gensec.h index acfc54926c..9b2ac19fe1 100644 --- a/auth/gensec/gensec.h +++ b/auth/gensec/gensec.h @@ -77,6 +77,11 @@ struct tevent_req; struct gensec_settings { struct loadparm_context *lp_ctx; const char *target_hostname; + + /* this allows callers to specify a specific set of ops that + * should be used, rather than those loaded by the plugin + * mechanism */ + struct gensec_security_ops **backends; }; struct gensec_security_ops { diff --git a/auth/gensec/gensec_start.c b/auth/gensec/gensec_start.c index c38b97050f..9576e53ec6 100644 --- a/auth/gensec/gensec_start.c +++ b/auth/gensec/gensec_start.c @@ -118,14 +118,19 @@ struct gensec_security_ops **gensec_security_mechs(struct gensec_security *gense TALLOC_CTX *mem_ctx) { struct gensec_security_ops **backends; - backends = gensec_security_all(); if (!gensec_security) { + backends = gensec_security_all(); if (!talloc_reference(mem_ctx, backends)) { return NULL; } return backends; } else { struct cli_credentials *creds = gensec_get_credentials(gensec_security); + if (gensec_security->settings->backends) { + backends = gensec_security->settings->backends; + } else { + backends = gensec_security_all(); + } if (!creds) { if (!talloc_reference(mem_ctx, backends)) { return NULL; -- cgit