diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2017-02-14 20:37:58 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2017-02-15 14:51:20 +0100 |
commit | 5007103e82f34e64a0ff3b278797b9fa42ba1dda (patch) | |
tree | c2dfed0dea5017ae6ba0c1ca3c01ae3ece09cdf9 | |
parent | af28fa659f7ffcd12ecf8bda64e79cf5dd225651 (diff) | |
download | sssd-5007103e82f34e64a0ff3b278797b9fa42ba1dda.tar.gz sssd-5007103e82f34e64a0ff3b278797b9fa42ba1dda.tar.xz sssd-5007103e82f34e64a0ff3b278797b9fa42ba1dda.zip |
DP: Add internal interface to invalidate memory cache from DP
Adds an interfae to the Data Provider that allows the DP to notify the
NSS responder to invalidate its memory cache records.
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
-rw-r--r-- | src/providers/data_provider/dp.h | 4 | ||||
-rw-r--r-- | src/providers/data_provider/dp_resp_client.c | 35 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/providers/data_provider/dp.h b/src/providers/data_provider/dp.h index 79d02d469..e80a6c339 100644 --- a/src/providers/data_provider/dp.h +++ b/src/providers/data_provider/dp.h @@ -171,4 +171,8 @@ void dp_sbus_reset_users_ncache(struct data_provider *provider, void dp_sbus_reset_groups_ncache(struct data_provider *provider, struct sss_domain_info *dom); +void dp_sbus_reset_users_memcache(struct data_provider *provider); +void dp_sbus_reset_groups_memcache(struct data_provider *provider); +void dp_sbus_reset_initgr_memcache(struct data_provider *provider); + #endif /* _DP_H_ */ diff --git a/src/providers/data_provider/dp_resp_client.c b/src/providers/data_provider/dp_resp_client.c index 6828610ac..5735188a6 100644 --- a/src/providers/data_provider/dp_resp_client.c +++ b/src/providers/data_provider/dp_resp_client.c @@ -154,3 +154,38 @@ void dp_sbus_reset_groups_ncache(struct data_provider *provider, return dp_sbus_reset_ncache(provider, dom, IFACE_RESPONDER_NCACHE_RESETGROUPS); } + +static void dp_sbus_reset_memcache(struct data_provider *provider, + const char *method) +{ + DBusMessage *msg; + + msg = sbus_create_message(NULL, NULL, NSS_MEMORYCACHE_PATH, + IFACE_NSS_MEMORYCACHE, method); + if (msg == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, "Out of memory?!\n"); + return; + } + + send_msg_to_selected_clients(provider, msg, user_clients); + dbus_message_unref(msg); + return; +} + +void dp_sbus_reset_users_memcache(struct data_provider *provider) +{ + return dp_sbus_reset_memcache(provider, + IFACE_NSS_MEMORYCACHE_INVALIDATEALLUSERS); +} + +void dp_sbus_reset_groups_memcache(struct data_provider *provider) +{ + return dp_sbus_reset_memcache(provider, + IFACE_NSS_MEMORYCACHE_INVALIDATEALLGROUPS); +} + +void dp_sbus_reset_initgr_memcache(struct data_provider *provider) +{ + return dp_sbus_reset_memcache(provider, + IFACE_NSS_MEMORYCACHE_INVALIDATEALLINITGROUPS); +} |