summaryrefslogtreecommitdiffstats
path: root/src/providers/ipa/ipa_subdomains.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/providers/ipa/ipa_subdomains.c')
-rw-r--r--src/providers/ipa/ipa_subdomains.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/providers/ipa/ipa_subdomains.c b/src/providers/ipa/ipa_subdomains.c
index 8a49c6343..a8c05c2a7 100644
--- a/src/providers/ipa/ipa_subdomains.c
+++ b/src/providers/ipa/ipa_subdomains.c
@@ -56,6 +56,13 @@ struct ipa_subdomains_req_params {
const char *attrs[8];
};
+struct ipa_subdomains_ctx {
+ struct sdap_id_ctx *sdap_id_ctx;
+ struct sdap_search_base **search_bases;
+ struct sdap_search_base **master_search_bases;
+ struct sdap_search_base **ranges_search_bases;
+};
+
static void ipa_subdomains_reply(struct be_req *be_req, int dp_err, int result)
{
be_req->fn(be_req, dp_err, result, NULL);
@@ -651,3 +658,31 @@ done:
}
ipa_subdomains_reply(be_req, dp_error, ret);
}
+
+struct bet_ops ipa_subdomains_ops = {
+ .handler = ipa_subdomains_handler,
+ .finalize = NULL
+};
+
+int ipa_subdom_init(struct be_ctx *be_ctx,
+ struct ipa_id_ctx *id_ctx,
+ struct bet_ops **ops,
+ void **pvt_data)
+{
+ struct ipa_subdomains_ctx *ctx;
+
+ ctx = talloc_zero(id_ctx, struct ipa_subdomains_ctx);
+ if (ctx == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE, ("talloc_zero failed.\n"));
+ return ENOMEM;
+ }
+
+ ctx->sdap_id_ctx = id_ctx->sdap_id_ctx;
+ ctx->search_bases = id_ctx->ipa_options->subdomains_search_bases;
+ ctx->master_search_bases = id_ctx->ipa_options->master_domain_search_bases;
+ ctx->ranges_search_bases = id_ctx->ipa_options->ranges_search_bases;
+ *ops = &ipa_subdomains_ops;
+ *pvt_data = ctx;
+
+ return EOK;
+}