summaryrefslogtreecommitdiffstats
path: root/src/providers/ad
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2015-06-02 13:34:20 +0200
committerJakub Hrozek <jhrozek@redhat.com>2015-06-14 21:44:39 +0200
commit9af86b9c936d07cff9d0c2054acde908749ea522 (patch)
treeb7acca3a794a56ccec485f880a62e10be2d29466 /src/providers/ad
parent526a15438525417cd701f837d7085b7f8c8a6325 (diff)
downloadsssd-9af86b9c936d07cff9d0c2054acde908749ea522.tar.gz
sssd-9af86b9c936d07cff9d0c2054acde908749ea522.tar.xz
sssd-9af86b9c936d07cff9d0c2054acde908749ea522.zip
SYSDB: Add realm to sysdb_master_domain_add_info
Adding realm to both master domain and subdomain will make it easier to set and select forest roots. Even master domains can be forest members, it's preferable to avoid special-casing as much as possible. Includes a unit test. Reviewed-by: Sumit Bose <sbose@redhat.com>
Diffstat (limited to 'src/providers/ad')
-rw-r--r--src/providers/ad/ad_id.c11
-rw-r--r--src/providers/ad/ad_subdomains.c10
2 files changed, 20 insertions, 1 deletions
diff --git a/src/providers/ad/ad_id.c b/src/providers/ad/ad_id.c
index d8ea26875..7a0c6eccd 100644
--- a/src/providers/ad/ad_id.c
+++ b/src/providers/ad/ad_id.c
@@ -454,6 +454,7 @@ struct ad_enumeration_state {
struct sdap_id_op *sdap_op;
struct tevent_context *ev;
+ const char *realm;
struct sdap_domain *sdom;
struct sdap_domain *sditer;
};
@@ -493,6 +494,14 @@ ad_enumeration_send(TALLOC_CTX *mem_ctx,
state->sditer = state->sdom;
state->id_ctx = talloc_get_type(ectx->pvt, struct ad_id_ctx);
+ state->realm = dp_opt_get_cstring(state->id_ctx->ad_options->basic,
+ AD_KRB5_REALM);
+ if (state->realm == NULL) {
+ DEBUG(SSSDBG_CONF_SETTINGS, "Missing realm\n");
+ ret = EINVAL;
+ goto fail;
+ }
+
state->sdap_op = sdap_id_op_create(state,
state->id_ctx->ldap_ctx->conn_cache);
if (state->sdap_op == NULL) {
@@ -575,7 +584,7 @@ ad_enumeration_master_done(struct tevent_req *subreq)
return;
}
- ret = sysdb_master_domain_add_info(state->sdom->dom,
+ ret = sysdb_master_domain_add_info(state->sdom->dom, state->realm,
flat_name, master_sid, forest);
if (ret != EOK) {
DEBUG(SSSDBG_OP_FAILURE, "Cannot save master domain info\n");
diff --git a/src/providers/ad/ad_subdomains.c b/src/providers/ad/ad_subdomains.c
index ac9d8baa1..d889dfb6d 100644
--- a/src/providers/ad/ad_subdomains.c
+++ b/src/providers/ad/ad_subdomains.c
@@ -598,6 +598,7 @@ static void ad_subdomains_master_dom_done(struct tevent_req *req)
{
struct ad_subdomains_req_ctx *ctx;
errno_t ret;
+ const char *realm;
ctx = tevent_req_callback_data(req, struct ad_subdomains_req_ctx);
@@ -610,7 +611,16 @@ static void ad_subdomains_master_dom_done(struct tevent_req *req)
goto done;
}
+ realm = dp_opt_get_cstring(ctx->sd_ctx->ad_id_ctx->ad_options->basic,
+ AD_KRB5_REALM);
+ if (realm == NULL) {
+ DEBUG(SSSDBG_CONF_SETTINGS, "Missing realm.\n");
+ ret = EINVAL;
+ goto done;
+ }
+
ret = sysdb_master_domain_add_info(ctx->sd_ctx->be_ctx->domain,
+ realm,
ctx->flat_name, ctx->master_sid,
ctx->forest);
if (ret != EOK) {