summaryrefslogtreecommitdiff
path: root/src/db/sysdb.h
diff options
context:
space:
mode:
authorOndrej Kos <okos@redhat.com>2012-11-08 14:34:36 +0100
committerJakub Hrozek <jhrozek@redhat.com>2012-11-19 13:35:55 +0100
commit4c9a85ab708ec7debecad51e4240e04d8bc6ca4e (patch)
treebcc2ac0722065b8832bd4073479ba08792888956 /src/db/sysdb.h
parentc475ce7bfa230a0a0167a294317c1120211cbb4c (diff)
downloadsssd-4c9a85ab708ec7debecad51e4240e04d8bc6ca4e.tar.gz
sssd-4c9a85ab708ec7debecad51e4240e04d8bc6ca4e.tar.bz2
sssd-4c9a85ab708ec7debecad51e4240e04d8bc6ca4e.zip
Display more information on DB version mismatch
https://fedorahosted.org/sssd/ticket/1589 Added check for determining, whether database version is higher or lower than expected. To distinguish it from other errors it uses following retun values (further used for appropriate error message): EMEDIUMTYPE for lower version than expected EUCLEAN for higher version than expected When SSSD or one of it's tools fails on DB version mismatch, new error message is showed suggesting how to proceed.
Diffstat (limited to 'src/db/sysdb.h')
-rw-r--r--src/db/sysdb.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/db/sysdb.h b/src/db/sysdb.h
index fb95c35c..c701717f 100644
--- a/src/db/sysdb.h
+++ b/src/db/sysdb.h
@@ -199,6 +199,36 @@
#define SYSDB_MOD_DEL LDB_FLAG_MOD_DELETE
#define SYSDB_MOD_REP LDB_FLAG_MOD_REPLACE
+/* sysdb version check macros */
+#define SYSDB_VERSION_ERROR_HINT \
+ ERROR("Removing cache files in "DB_PATH" should fix the issue, " \
+ "but note that removing cache files will also remove all of your " \
+ "cached credentials.\n")
+
+#define SYSDB_VERSION_LOWER_ERROR(ret) do { \
+ if (ret == EUCLEAN) { \
+ ERROR("Lower version of database is expected!\n"); \
+ SYSDB_VERSION_ERROR_HINT; \
+ } \
+} while(0)
+
+#define SYSDB_VERSION_HIGHER_ERROR(ret) do { \
+ if (ret == EMEDIUMTYPE) { \
+ ERROR("Higher version of database is expected!\n"); \
+ ERROR("In order to upgrade the database, you must run SSSD.\n"); \
+ SYSDB_VERSION_ERROR_HINT; \
+ } \
+} while(0)
+
+/* use this in daemons */
+#define SYSDB_VERSION_ERROR_DAEMON(ret) \
+ SYSDB_VERSION_LOWER_ERROR(ret)
+
+/* use this in tools */
+#define SYSDB_VERSION_ERROR(ret) \
+ SYSDB_VERSION_LOWER_ERROR(ret); \
+ SYSDB_VERSION_HIGHER_ERROR(ret)
+
struct confdb_ctx;
struct sysdb_ctx;