From cb056fe82410a31ad3426b1cc58c81710ff9ac83 Mon Sep 17 00:00:00 2001 From: Petr Cech Date: Tue, 16 Aug 2016 09:32:18 +0200 Subject: SYSDB: Adding message to inform which cache is used MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves: https://fedorahosted.org/sssd/ticket/3060 Reviewed-by: Lukáš Slebodník --- src/db/sysdb_ops.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/db') diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c index 29f4b1d15..19649c8ea 100644 --- a/src/db/sysdb_ops.c +++ b/src/db/sysdb_ops.c @@ -27,6 +27,11 @@ #include "util/cert.h" #include +#define SSS_SYSDB_NO_CACHE 0x0 +#define SSS_SYSDB_CACHE 0x1 +#define SSS_SYSDB_TS_CACHE 0x2 +#define SSS_SYSDB_BOTH_CACHE (SSS_SYSDB_CACHE | SSS_SYSDB_TS_CACHE) + static uint32_t get_attr_as_uint32(struct ldb_message *msg, const char *attr) { const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr); @@ -1176,6 +1181,21 @@ done: return ret; } +static const char *get_attr_storage(int state_mask) +{ + const char *storage = ""; + + if (state_mask == SSS_SYSDB_BOTH_CACHE) { + storage = "cache, ts_cache"; + } else if (state_mask == SSS_SYSDB_TS_CACHE) { + storage = "ts_cache"; + } else if (state_mask == SSS_SYSDB_CACHE) { + storage = "cache"; + } + + return storage; +} + int sysdb_set_entry_attr(struct sysdb_ctx *sysdb, struct ldb_dn *entry_dn, struct sysdb_attrs *attrs, @@ -1184,6 +1204,7 @@ int sysdb_set_entry_attr(struct sysdb_ctx *sysdb, bool sysdb_write = true; errno_t ret = EOK; errno_t tret = EOK; + int state_mask = SSS_SYSDB_NO_CACHE; sysdb_write = sysdb_entry_attrs_diff(sysdb, entry_dn, attrs, mod_op); if (sysdb_write == true) { @@ -1192,6 +1213,8 @@ int sysdb_set_entry_attr(struct sysdb_ctx *sysdb, DEBUG(SSSDBG_MINOR_FAILURE, "Cannot set attrs for %s, %d [%s]\n", ldb_dn_get_linearized(entry_dn), ret, sss_strerror(ret)); + } else { + state_mask |= SSS_SYSDB_CACHE; } } @@ -1201,9 +1224,18 @@ int sysdb_set_entry_attr(struct sysdb_ctx *sysdb, DEBUG(SSSDBG_MINOR_FAILURE, "Cannot set ts attrs for %s\n", ldb_dn_get_linearized(entry_dn)); /* Not fatal */ + } else { + state_mask |= SSS_SYSDB_TS_CACHE; } } + if (state_mask != SSS_SYSDB_NO_CACHE) { + DEBUG(SSSDBG_FUNC_DATA, + "Entry [%s] has set [%s] attrs.\n", + ldb_dn_get_linearized(entry_dn), + get_attr_storage(state_mask)); + } + return ret; } -- cgit