summaryrefslogtreecommitdiff
path: root/source4/kdc/mit_samba.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2010-09-28 13:05:37 +1000
committerAndrew Bartlett <abartlet@samba.org>2010-09-29 04:23:07 +1000
commit3021af2777ffd28f595835630510e367e7286c1c (patch)
treeed8c1c75492c6dd79c2d7a2639d944193db15951 /source4/kdc/mit_samba.c
parent88abf441d021e753f149a534a232090634652367 (diff)
downloadsamba-3021af2777ffd28f595835630510e367e7286c1c.tar.gz
samba-3021af2777ffd28f595835630510e367e7286c1c.tar.bz2
samba-3021af2777ffd28f595835630510e367e7286c1c.zip
s4-kdc Add common setup, handle RODC setup case
This means we just set up the system_session etc in one place and don't diverge between the MIT and Heimdal plugins. We also now determine if we are an RODC and store some details that we will need later. Andrew Bartlett
Diffstat (limited to 'source4/kdc/mit_samba.c')
-rw-r--r--source4/kdc/mit_samba.c42
1 files changed, 12 insertions, 30 deletions
diff --git a/source4/kdc/mit_samba.c b/source4/kdc/mit_samba.c
index 58ab1673ff..217f0983ae 100644
--- a/source4/kdc/mit_samba.c
+++ b/source4/kdc/mit_samba.c
@@ -53,10 +53,11 @@ static void mit_samba_context_free(struct mit_samba_context *ctx)
static int mit_samba_context_init(struct mit_samba_context **_ctx)
{
+ NTSTATUS status;
struct mit_samba_context *ctx;
const char *s4_conf_file;
int ret;
-
+ struct samba_kdc_base_context base_ctx;
ctx = talloc(NULL, struct mit_samba_context);
if (!ctx) {
@@ -64,46 +65,27 @@ static int mit_samba_context_init(struct mit_samba_context **_ctx)
goto done;
}
- ctx->db_ctx = talloc_zero(ctx, struct samba_kdc_db_context);
- if (!ctx->db_ctx) {
- ret = ENOMEM;
- goto done;
- }
-
- ctx->db_ctx->ev_ctx = tevent_context_init(ctx);
- if (!ctx->db_ctx->ev_ctx) {
+ base_ctx.ev_ctx = tevent_context_init(ctx);
+ if (!base_ctx.ev_ctx) {
ret = ENOMEM;
goto done;
}
- ctx->db_ctx->lp_ctx = loadparm_init(ctx);
- if (!ctx->db_ctx->lp_ctx) {
+ base_ctx.lp_ctx = loadparm_init(ctx);
+ if (!base_ctx.lp_ctx) {
ret = ENOMEM;
goto done;
}
-
/* init s4 configuration */
- s4_conf_file = lpcfg_configfile(ctx->db_ctx->lp_ctx);
+ s4_conf_file = lpcfg_configfile(base_ctx.lp_ctx);
if (s4_conf_file) {
- lpcfg_load(ctx->db_ctx->lp_ctx, s4_conf_file);
+ lpcfg_load(base_ctx.lp_ctx, s4_conf_file);
} else {
- lpcfg_load_default(ctx->db_ctx->lp_ctx);
+ lpcfg_load_default(base_ctx.lp_ctx);
}
- ctx->session_info = system_session(ctx->db_ctx->lp_ctx);
- if (!ctx->session_info) {
- ret = EFAULT;
- goto done;
- }
-
- cli_credentials_set_kerberos_state(ctx->session_info->credentials,
- CRED_DONT_USE_KERBEROS);
-
- ctx->db_ctx->samdb = samdb_connect(ctx->db_ctx,
- ctx->db_ctx->ev_ctx,
- ctx->db_ctx->lp_ctx,
- ctx->session_info);
- if (!ctx->db_ctx->samdb) {
- ret = EFAULT;
+ status = samba_kdc_setup_db_ctx(ctx, &base_ctx, &ctx->db_ctx);
+ if (!NT_STATUS_IS_OK(status)) {
+ ret = EINVAL;
goto done;
}