From 5007103e82f34e64a0ff3b278797b9fa42ba1dda Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 14 Feb 2017 20:37:58 +0100 Subject: DP: Add internal interface to invalidate memory cache from DP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/providers/data_provider/dp.h | 4 ++++ src/providers/data_provider/dp_resp_client.c | 35 ++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) 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); +} -- cgit