diff options
author | Sumit Bose <sbose@redhat.com> | 2013-10-21 13:37:37 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-10-22 19:13:02 +0200 |
commit | 7c5c79e90fbf7c26cae7c3b31babd209a94aa3da (patch) | |
tree | 50513c04175147691088afc9ade6d8f9d6f610de /src/providers/data_provider_callbacks.c | |
parent | 278cc6555abf28d60394e5696c7885608a7924aa (diff) | |
download | sssd-7c5c79e90fbf7c26cae7c3b31babd209a94aa3da.tar.gz sssd-7c5c79e90fbf7c26cae7c3b31babd209a94aa3da.tar.xz sssd-7c5c79e90fbf7c26cae7c3b31babd209a94aa3da.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.c | 27 |
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) { |