From 277a0187190fd417696590b303a5d7a204ed0555 Mon Sep 17 00:00:00 2001 From: Jan Zeleny Date: Tue, 21 Feb 2012 07:07:30 -0500 Subject: Delete missing attributes from netgroups to be stored https://fedorahosted.org/sssd/ticket/1136 --- src/db/sysdb.h | 2 ++ src/db/sysdb_ops.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+) (limited to 'src/db') diff --git a/src/db/sysdb.h b/src/db/sysdb.h index a9d4b0f8..5f264c25 100644 --- a/src/db/sysdb.h +++ b/src/db/sysdb.h @@ -536,6 +536,7 @@ int sysdb_add_netgroup(struct sysdb_ctx *sysdb, const char *name, const char *description, struct sysdb_attrs *attrs, + char **missing, int cache_timeout, time_t now); @@ -567,6 +568,7 @@ int sysdb_store_group(struct sysdb_ctx *sysdb, enum sysdb_member_type { SYSDB_MEMBER_USER, SYSDB_MEMBER_GROUP, + SYSDB_MEMBER_NETGROUP, SYSDB_MEMBER_SERVICE, SYSDB_MEMBER_AUTOFSENTRY }; diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c index 7606b8f0..59b3bcae 100644 --- a/src/db/sysdb_ops.c +++ b/src/db/sysdb_ops.c @@ -1378,6 +1378,7 @@ int sysdb_add_netgroup(struct sysdb_ctx *sysdb, const char *name, const char *description, struct sysdb_attrs *attrs, + char **missing, int cache_timeout, time_t now) { @@ -1422,6 +1423,15 @@ int sysdb_add_netgroup(struct sysdb_ctx *sysdb, ret = sysdb_set_netgroup_attr(sysdb, name, attrs, SYSDB_MOD_REP); + if (missing) { + ret = sysdb_remove_attrs(sysdb, name, + SYSDB_MEMBER_NETGROUP, + missing); + if (ret != EOK) { + DEBUG(SSSDBG_MINOR_FAILURE, ("Could not remove missing attributes\n")); + } + } + done: if (ret == EOK) { ret = ldb_transaction_commit(sysdb->ldb); @@ -2956,6 +2966,10 @@ errno_t sysdb_remove_attrs(struct sysdb_ctx *sysdb, msg->dn = sysdb_group_dn(sysdb, msg, sysdb->domain->name, name); break; + case SYSDB_MEMBER_NETGROUP: + msg->dn = sysdb_netgroup_dn(sysdb, msg, sysdb->domain->name, name); + break; + case SYSDB_MEMBER_SERVICE: msg->dn = sysdb_svc_dn(sysdb, msg, sysdb->domain->name, name); break; -- cgit