summaryrefslogtreecommitdiffstats
path: root/src/db
diff options
context:
space:
mode:
Diffstat (limited to 'src/db')
-rw-r--r--src/db/sysdb.h4
-rw-r--r--src/db/sysdb_subdomains.c22
2 files changed, 24 insertions, 2 deletions
diff --git a/src/db/sysdb.h b/src/db/sysdb.h
index 5649f2cb1..f667977ed 100644
--- a/src/db/sysdb.h
+++ b/src/db/sysdb.h
@@ -439,7 +439,9 @@ errno_t sysdb_update_subdomains(struct sss_domain_info *domain);
errno_t sysdb_master_domain_update(struct sss_domain_info *domain);
errno_t sysdb_master_domain_add_info(struct sss_domain_info *domain,
- const char *flat, const char *id,
+ const char *realm,
+ const char *flat,
+ const char *id,
const char* forest);
errno_t sysdb_subdomain_delete(struct sysdb_ctx *sysdb, const char *name);
diff --git a/src/db/sysdb_subdomains.c b/src/db/sysdb_subdomains.c
index 1be904e8d..53115c1a7 100644
--- a/src/db/sysdb_subdomains.c
+++ b/src/db/sysdb_subdomains.c
@@ -561,7 +561,9 @@ done:
}
errno_t sysdb_master_domain_add_info(struct sss_domain_info *domain,
- const char *flat, const char *id,
+ const char *realm,
+ const char *flat,
+ const char *id,
const char* forest)
{
TALLOC_CTX *tmp_ctx;
@@ -641,6 +643,24 @@ errno_t sysdb_master_domain_add_info(struct sss_domain_info *domain,
do_update = true;
}
+ if (realm != NULL && (domain->realm == NULL ||
+ strcmp(domain->realm, realm) != 0)) {
+ ret = ldb_msg_add_empty(msg, SYSDB_SUBDOMAIN_REALM,
+ LDB_FLAG_MOD_REPLACE, NULL);
+ if (ret != LDB_SUCCESS) {
+ ret = sysdb_error_to_errno(ret);
+ goto done;
+ }
+
+ ret = ldb_msg_add_string(msg, SYSDB_SUBDOMAIN_REALM, realm);
+ if (ret != LDB_SUCCESS) {
+ ret = sysdb_error_to_errno(ret);
+ goto done;
+ }
+
+ do_update = true;
+ }
+
if (do_update == false) {
ret = EOK;
goto done;