From b5825c74b6bf7a99ae2172392dbecb51179013a6 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 18 Aug 2015 15:15:44 +0000 Subject: UTIL: Convert domain->disabled into tri-state with domain states MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Required for: https://fedorahosted.org/sssd/ticket/2637 This is a first step towards making it possible for domain to be around, but not contacted by Data Provider. Also explicitly create domains as active, previously we only relied on talloc_zero marking dom->disabled as false. Reviewed-by: Pavel Březina --- src/confdb/confdb.c | 2 ++ src/confdb/confdb.h | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src/confdb') diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c index 3a8a1c01b..c097aad77 100644 --- a/src/confdb/confdb.c +++ b/src/confdb/confdb.c @@ -1342,6 +1342,8 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, domain->has_views = false; domain->view_name = NULL; + domain->state = DOM_ACTIVE; + *_domain = domain; ret = EOK; done: diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 427c309a2..eca3d4475 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -216,6 +216,23 @@ struct confdb_ctx; struct config_file_ctx; +/** sssd domain state */ +enum sss_domain_state { + /** Domain is usable by both responders and providers. This + * is the default state after creating a new domain + */ + DOM_ACTIVE, + /** Domain was removed, should not be used be neither responders + * not providers. + */ + DOM_DISABLED, + /** Domain cannot be contacted. Providers return an offline error code + * when receiving request for inactive domain, but responders should + * return cached data + */ + DOM_INACTIVE, +}; + /** * Data structure storing all of the basic features * of a domain. @@ -278,7 +295,7 @@ struct sss_domain_info { struct sss_domain_info *prev; struct sss_domain_info *next; - bool disabled; + enum sss_domain_state state; char **sd_inherit; /* Do not use the forest pointer directly in new code, but rather the -- cgit