summaryrefslogtreecommitdiffstats
path: root/src/db
diff options
context:
space:
mode:
authorJan Zeleny <jzeleny@redhat.com>2012-02-21 07:07:30 -0500
committerStephen Gallagher <sgallagh@redhat.com>2012-02-24 14:58:15 -0500
commit720396bedc032e2c3d6fd48b4f7913fcb0429641 (patch)
treed3df0cdc28883a8cfb8487ac62136c88cdb670ee /src/db
parent3828873b48096e6482329bab6da175de3f615ab8 (diff)
downloadsssd-720396bedc032e2c3d6fd48b4f7913fcb0429641.tar.gz
sssd-720396bedc032e2c3d6fd48b4f7913fcb0429641.tar.xz
sssd-720396bedc032e2c3d6fd48b4f7913fcb0429641.zip
Delete missing attributes from netgroups to be stored
https://fedorahosted.org/sssd/ticket/1136
Diffstat (limited to 'src/db')
-rw-r--r--src/db/sysdb.h2
-rw-r--r--src/db/sysdb_ops.c14
2 files changed, 16 insertions, 0 deletions
diff --git a/src/db/sysdb.h b/src/db/sysdb.h
index e9a89606b..9e4b8c39a 100644
--- a/src/db/sysdb.h
+++ b/src/db/sysdb.h
@@ -532,6 +532,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);
@@ -563,6 +564,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 41070843b..87c13017f 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;