From 1f1e6cbc59868f06dee3ab4b3df660fcb77ce1c8 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 3 Jan 2012 08:12:57 +0100 Subject: AUTOFS: sysdb interface --- src/db/sysdb_ops.c | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'src/db/sysdb_ops.c') diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c index 8eb81938f..41070843b 100644 --- a/src/db/sysdb_ops.c +++ b/src/db/sysdb_ops.c @@ -22,6 +22,7 @@ #include "util/util.h" #include "db/sysdb_private.h" #include "db/sysdb_services.h" +#include "db/sysdb_autofs.h" #include "util/crypto/sss_crypto.h" #include @@ -1668,24 +1669,45 @@ sysdb_group_membership_mod(struct sysdb_ctx *sysdb, return ENOMEM; } - group_dn = sysdb_group_dn(sysdb, tmp_ctx, sysdb->domain->name, group); - if (!group_dn) { - ret = ENOMEM; - goto done; - } - if (type == SYSDB_MEMBER_USER) { member_dn = sysdb_user_dn(sysdb, tmp_ctx, sysdb->domain->name, member); if (!member_dn) { ret = ENOMEM; goto done; } + + group_dn = sysdb_group_dn(sysdb, tmp_ctx, sysdb->domain->name, group); + if (!group_dn) { + ret = ENOMEM; + goto done; + } } else if (type == SYSDB_MEMBER_GROUP) { member_dn = sysdb_group_dn(sysdb, tmp_ctx, sysdb->domain->name, member); if (!member_dn) { ret = ENOMEM; goto done; } + + group_dn = sysdb_group_dn(sysdb, tmp_ctx, sysdb->domain->name, group); + if (!group_dn) { + ret = ENOMEM; + goto done; + } + } else if (type == SYSDB_MEMBER_AUTOFSENTRY) { + /* FIXME - I don't like autofs specific stuff in sysdb_ops.c + * Maybe we should introduce sysdb_common.c ? + */ + member_dn = sysdb_autofsentry_dn(tmp_ctx, sysdb, member); + if (!member_dn) { + ret = ENOMEM; + goto done; + } + + group_dn = sysdb_autofsmap_dn(tmp_ctx, sysdb, group); + if (!group_dn) { + ret = ENOMEM; + goto done; + } } else { ret = EINVAL; goto done; @@ -2937,6 +2959,10 @@ errno_t sysdb_remove_attrs(struct sysdb_ctx *sysdb, case SYSDB_MEMBER_SERVICE: msg->dn = sysdb_svc_dn(sysdb, msg, sysdb->domain->name, name); break; + + case SYSDB_MEMBER_AUTOFSENTRY: + msg->dn = sysdb_autofsmap_dn(msg, sysdb, name); + break; } if (!msg->dn) { ret = ENOMEM; -- cgit