summaryrefslogtreecommitdiffstats
path: root/src/responder/ifp/ifp_groups.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/responder/ifp/ifp_groups.c')
-rw-r--r--src/responder/ifp/ifp_groups.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/responder/ifp/ifp_groups.c b/src/responder/ifp/ifp_groups.c
index f1f86ce1a..1b581b568 100644
--- a/src/responder/ifp/ifp_groups.c
+++ b/src/responder/ifp/ifp_groups.c
@@ -29,6 +29,7 @@
#include "responder/common/responder_cache_req.h"
#include "responder/ifp/ifp_groups.h"
#include "responder/ifp/ifp_users.h"
+#include "responder/ifp/ifp_cache.h"
char * ifp_groups_build_path_from_msg(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
@@ -720,3 +721,54 @@ void ifp_groups_group_get_groups(struct sbus_request *sbus_req,
DEBUG(SSSDBG_CRIT_FAILURE, "Unable to acquire groups members\n");
}
}
+
+int ifp_cache_list_group(struct sbus_request *sbus_req,
+ void *data)
+{
+ return ifp_cache_list(sbus_req, data, IFP_CACHE_GROUP);
+}
+
+int ifp_cache_list_by_domain_group(struct sbus_request *sbus_req,
+ void *data,
+ const char *domain)
+{
+ return ifp_cache_list_by_domain(sbus_req, data, domain, IFP_CACHE_GROUP);
+}
+
+int ifp_cache_object_store_group(struct sbus_request *sbus_req,
+ void *data)
+{
+ DBusError *error;
+ struct sss_domain_info *domain;
+ struct ldb_message *group;
+ errno_t ret;
+
+ ret = ifp_groups_group_get(sbus_req, data, NULL, &domain, &group);
+ if (ret != EOK) {
+ error = sbus_error_new(sbus_req, DBUS_ERROR_FAILED, "Failed to fetch "
+ "group [%d]: %s\n", ret, sss_strerror(ret));
+ return sbus_request_fail_and_finish(sbus_req, error);
+ }
+
+ /* The request is finished inside. */
+ return ifp_cache_object_store(sbus_req, domain, group->dn);
+}
+
+int ifp_cache_object_remove_group(struct sbus_request *sbus_req,
+ void *data)
+{
+ DBusError *error;
+ struct sss_domain_info *domain;
+ struct ldb_message *group;
+ errno_t ret;
+
+ ret = ifp_groups_group_get(sbus_req, data, NULL, &domain, &group);
+ if (ret != EOK) {
+ error = sbus_error_new(sbus_req, DBUS_ERROR_FAILED, "Failed to fetch "
+ "group [%d]: %s\n", ret, sss_strerror(ret));
+ return sbus_request_fail_and_finish(sbus_req, error);
+ }
+
+ /* The request is finished inside. */
+ return ifp_cache_object_remove(sbus_req, domain, group->dn);
+}