summaryrefslogtreecommitdiffstats
path: root/src/providers/data_provider_callbacks.c
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2013-10-21 13:37:37 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-10-22 19:11:36 +0200
commit0a320004a9937295ba66a348d1e60682cfdceb26 (patch)
treeb29163f7a61d90cb5d872c6514e0b03f9356d0c9 /src/providers/data_provider_callbacks.c
parent9de5878d247b77b8f520a57727cd55f42e179caa (diff)
downloadsssd-0a320004a9937295ba66a348d1e60682cfdceb26.tar.gz
sssd-0a320004a9937295ba66a348d1e60682cfdceb26.tar.xz
sssd-0a320004a9937295ba66a348d1e60682cfdceb26.zip
Add unconditional online callbacks
Currently online callbacks are only executed if the backend was offline before. This patch add a new class of callback which are always called if the backend gets a request to go online. They can be used e.g. to reset timeouts until a more sophisticated method (OpenLMI, sssctl) is available.
Diffstat (limited to 'src/providers/data_provider_callbacks.c')
-rw-r--r--src/providers/data_provider_callbacks.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/providers/data_provider_callbacks.c b/src/providers/data_provider_callbacks.c
index c41595eb7..cc50be6df 100644
--- a/src/providers/data_provider_callbacks.c
+++ b/src/providers/data_provider_callbacks.c
@@ -231,6 +231,33 @@ void be_run_online_cb(struct be_ctx *be) {
}
}
+int be_add_unconditional_online_cb(TALLOC_CTX *mem_ctx, struct be_ctx *ctx,
+ be_callback_t cb, void *pvt,
+ struct be_cb **unconditional_online_cb)
+{
+ return be_add_cb(mem_ctx, ctx, cb, pvt, &ctx->unconditional_online_cb_list,
+ unconditional_online_cb);
+}
+
+void be_run_unconditional_online_cb(struct be_ctx *be)
+{
+ int ret;
+
+ if (be->unconditional_online_cb_list) {
+ DEBUG(SSSDBG_TRACE_FUNC, ("Running unconditional online callbacks.\n"));
+
+ ret = be_run_cb(be, be->unconditional_online_cb_list);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_OP_FAILURE, ("be_run_cb failed.\n"));
+ }
+
+ } else {
+ DEBUG(SSSDBG_TRACE_ALL,
+ ("List of unconditional online callbacks is empty, " \
+ "nothing to do.\n"));
+ }
+}
+
int be_add_offline_cb(TALLOC_CTX *mem_ctx, struct be_ctx *ctx, be_callback_t cb,
void *pvt, struct be_cb **offline_cb)
{