Blame SOURCES/0039-sysdb-add-sysdb_domain_set_enabled.patch

5fca41
From 0e16ec74c380b35fc201ded15434184d88413dc7 Mon Sep 17 00:00:00 2001
5fca41
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
5fca41
Date: Thu, 30 May 2019 12:14:58 +0200
5fca41
Subject: [PATCH 39/44] sysdb: add sysdb_domain_set_enabled()
5fca41
5fca41
This will be used in subsequent patches to disable subdomains.
5fca41
5fca41
Resolves:
5fca41
https://pagure.io/SSSD/sssd/issue/4009
5fca41
5fca41
Reviewed-by: Sumit Bose <sbose@redhat.com>
5fca41
(cherry picked from commit 7a03e99890806257df1ed8a126673d6a032fee6a)
5fca41
---
5fca41
 src/db/sysdb.c            |  7 ++++++-
5fca41
 src/db/sysdb.h            |  6 ++++++
5fca41
 src/db/sysdb_subdomains.c | 31 +++++++++++++++++++++++++++++++
5fca41
 3 files changed, 43 insertions(+), 1 deletion(-)
5fca41
5fca41
diff --git a/src/db/sysdb.c b/src/db/sysdb.c
5fca41
index 06d7f2796..279bd5839 100644
5fca41
--- a/src/db/sysdb.c
5fca41
+++ b/src/db/sysdb.c
5fca41
@@ -1135,7 +1135,7 @@ errno_t sysdb_set_bool(struct sysdb_ctx *sysdb,
5fca41
     errno_t ret;
5fca41
     int lret;
5fca41
 
5fca41
-    if (dn == NULL || cn_value == NULL || attr_name == NULL) {
5fca41
+    if (dn == NULL || attr_name == NULL) {
5fca41
         return EINVAL;
5fca41
     }
5fca41
 
5fca41
@@ -1159,6 +1159,11 @@ errno_t sysdb_set_bool(struct sysdb_ctx *sysdb,
5fca41
     msg->dn = dn;
5fca41
 
5fca41
     if (res->count == 0) {
5fca41
+        if (cn_value == NULL) {
5fca41
+            ret = ENOENT;
5fca41
+            goto done;
5fca41
+        }
5fca41
+
5fca41
         lret = ldb_msg_add_string(msg, "cn", cn_value);
5fca41
         if (lret != LDB_SUCCESS) {
5fca41
             ret = sysdb_error_to_errno(lret);
5fca41
diff --git a/src/db/sysdb.h b/src/db/sysdb.h
5fca41
index 01e7554bb..574f4b120 100644
5fca41
--- a/src/db/sysdb.h
5fca41
+++ b/src/db/sysdb.h
5fca41
@@ -155,6 +155,7 @@
5fca41
 #define SYSDB_SUBDOMAIN_TRUST_DIRECTION "trustDirection"
5fca41
 #define SYSDB_UPN_SUFFIXES "upnSuffixes"
5fca41
 #define SYSDB_SITE "site"
5fca41
+#define SYSDB_ENABLED "enabled"
5fca41
 
5fca41
 #define SYSDB_BASE_ID "baseID"
5fca41
 #define SYSDB_ID_RANGE_SIZE "idRangeSize"
5fca41
@@ -523,6 +524,11 @@ errno_t
5fca41
 sysdb_set_site(struct sss_domain_info *dom,
5fca41
                const char *site);
5fca41
 
5fca41
+errno_t
5fca41
+sysdb_domain_set_enabled(struct sysdb_ctx *sysdb,
5fca41
+                         const char *name,
5fca41
+                         bool enabled);
5fca41
+
5fca41
 errno_t sysdb_subdomain_store(struct sysdb_ctx *sysdb,
5fca41
                               const char *name, const char *realm,
5fca41
                               const char *flat_name, const char *domain_id,
5fca41
diff --git a/src/db/sysdb_subdomains.c b/src/db/sysdb_subdomains.c
5fca41
index 34d052fdd..d467dfce5 100644
5fca41
--- a/src/db/sysdb_subdomains.c
5fca41
+++ b/src/db/sysdb_subdomains.c
5fca41
@@ -1200,6 +1200,18 @@ errno_t sysdb_subdomain_store(struct sysdb_ctx *sysdb,
5fca41
         }
5fca41
     }
5fca41
 
5fca41
+    ret = ldb_msg_add_empty(msg, SYSDB_ENABLED, LDB_FLAG_MOD_REPLACE, NULL);
5fca41
+    if (ret != LDB_SUCCESS) {
5fca41
+        ret = sysdb_error_to_errno(ret);
5fca41
+        goto done;
5fca41
+    }
5fca41
+
5fca41
+    ret = ldb_msg_add_string(msg, SYSDB_ENABLED, "TRUE");
5fca41
+    if (ret != LDB_SUCCESS) {
5fca41
+        ret = sysdb_error_to_errno(ret);
5fca41
+        goto done;
5fca41
+    }
5fca41
+
5fca41
     ret = ldb_modify(sysdb->ldb, msg);
5fca41
     if (ret != LDB_SUCCESS) {
5fca41
         DEBUG(SSSDBG_FATAL_FAILURE, "Failed to add subdomain attributes to "
5fca41
@@ -1420,3 +1432,22 @@ done:
5fca41
     talloc_free(tmp_ctx);
5fca41
     return ret;
5fca41
 }
5fca41
+
5fca41
+errno_t
5fca41
+sysdb_domain_set_enabled(struct sysdb_ctx *sysdb,
5fca41
+                         const char *name,
5fca41
+                         bool enabled)
5fca41
+{
5fca41
+    struct ldb_dn *dn;
5fca41
+    errno_t ret;
5fca41
+
5fca41
+    dn = ldb_dn_new_fmt(NULL, sysdb->ldb, SYSDB_DOM_BASE, name);
5fca41
+    if (dn == NULL) {
5fca41
+        return ENOMEM;
5fca41
+    }
5fca41
+
5fca41
+    ret = sysdb_set_bool(sysdb, dn, NULL, SYSDB_ENABLED, enabled);
5fca41
+    talloc_free(dn);
5fca41
+
5fca41
+    return ret;
5fca41
+}
5fca41
-- 
5fca41
2.20.1
5fca41