Blame SOURCES/0023-AD-expose-the-helper-function-to-format-the-site-DNS.patch

ca1eb8
From 09fd8246f25dbfb80db638a0dd8f2fe4c1fba957 Mon Sep 17 00:00:00 2001
ca1eb8
From: Jakub Hrozek <jhrozek@redhat.com>
ca1eb8
Date: Mon, 25 Jun 2018 13:03:38 +0200
ca1eb8
Subject: [PATCH] AD: expose the helper function to format the site DNS query
ca1eb8
ca1eb8
This function will be used later in the patchset. Instead of exposing
ca1eb8
the format constant, expose the function that builds the DNS query for
ca1eb8
site discovery.
ca1eb8
ca1eb8
Related:
ca1eb8
https://pagure.io/SSSD/sssd/issue/3291
ca1eb8
ca1eb8
Reviewed-by: Sumit Bose <sbose@redhat.com>
ca1eb8
(cherry picked from commit 29bbc8e017f2d9b98667890a9b7056128a93e572)
ca1eb8
ca1eb8
DOWNSTREAM:
ca1eb8
Resolves: rhbz#1416528 - sssd in cross realm trust configuration should be able to use AD KDCs from a client site defined in sssd.conf or a snippet
ca1eb8
---
ca1eb8
 src/providers/ad/ad_srv.c | 21 +++++++++++++++------
ca1eb8
 src/providers/ad/ad_srv.h |  4 ++++
ca1eb8
 2 files changed, 19 insertions(+), 6 deletions(-)
ca1eb8
ca1eb8
diff --git a/src/providers/ad/ad_srv.c b/src/providers/ad/ad_srv.c
ca1eb8
index 4fa1668605e131b2e31802b1401f49fc6e00a23b..5fd25f60e8bf38c3952823601593515b6c703284 100644
ca1eb8
--- a/src/providers/ad/ad_srv.c
ca1eb8
+++ b/src/providers/ad/ad_srv.c
ca1eb8
@@ -38,6 +38,13 @@
ca1eb8
 
ca1eb8
 #define AD_SITE_DOMAIN_FMT "%s._sites.%s"
ca1eb8
 
ca1eb8
+char *ad_site_dns_discovery_domain(TALLOC_CTX *mem_ctx,
ca1eb8
+                                   const char *site,
ca1eb8
+                                   const char *domain)
ca1eb8
+{
ca1eb8
+    return talloc_asprintf(mem_ctx, AD_SITE_DOMAIN_FMT, site, domain);
ca1eb8
+}
ca1eb8
+
ca1eb8
 static errno_t ad_sort_servers_by_dns(TALLOC_CTX *mem_ctx,
ca1eb8
                                       const char *domain,
ca1eb8
                                       struct fo_server_info **_srv,
ca1eb8
@@ -154,8 +161,8 @@ static struct tevent_req *ad_get_dc_servers_send(TALLOC_CTX *mem_ctx,
ca1eb8
         DEBUG(SSSDBG_TRACE_FUNC, "Looking up domain controllers in domain "
ca1eb8
               "%s and site %s\n", discovery_domain, site);
ca1eb8
 
ca1eb8
-        domains[0] = talloc_asprintf(state, AD_SITE_DOMAIN_FMT,
ca1eb8
-                                     site, discovery_domain);
ca1eb8
+        domains[0] = ad_site_dns_discovery_domain(domains,
ca1eb8
+                                                  site, discovery_domain);
ca1eb8
         if (domains[0] == NULL) {
ca1eb8
             ret = ENOMEM;
ca1eb8
             goto immediately;
ca1eb8
@@ -775,9 +782,10 @@ static void ad_srv_plugin_site_done(struct tevent_req *subreq)
ca1eb8
         if (strcmp(state->service, "gc") == 0) {
ca1eb8
             if (state->forest != NULL) {
ca1eb8
                 if (state->site != NULL) {
ca1eb8
-                    primary_domain = talloc_asprintf(state, AD_SITE_DOMAIN_FMT,
ca1eb8
-                                                     state->site,
ca1eb8
-                                                     state->forest);
ca1eb8
+                    primary_domain = ad_site_dns_discovery_domain(
ca1eb8
+                                                            state,
ca1eb8
+                                                            state->site,
ca1eb8
+                                                            state->forest);
ca1eb8
                     if (primary_domain == NULL) {
ca1eb8
                         ret = ENOMEM;
ca1eb8
                         goto done;
ca1eb8
@@ -791,7 +799,8 @@ static void ad_srv_plugin_site_done(struct tevent_req *subreq)
ca1eb8
             }
ca1eb8
         } else {
ca1eb8
             if (state->site != NULL) {
ca1eb8
-                primary_domain = talloc_asprintf(state, AD_SITE_DOMAIN_FMT,
ca1eb8
+                primary_domain = ad_site_dns_discovery_domain(
ca1eb8
+                                                 state,
ca1eb8
                                                  state->site,
ca1eb8
                                                  state->discovery_domain);
ca1eb8
                 if (primary_domain == NULL) {
ca1eb8
diff --git a/src/providers/ad/ad_srv.h b/src/providers/ad/ad_srv.h
ca1eb8
index fddef686762e57bb95d648247131d39a797aa516..e553d594d77ad99f806af9634c2817754a80d4f5 100644
ca1eb8
--- a/src/providers/ad/ad_srv.h
ca1eb8
+++ b/src/providers/ad/ad_srv.h
ca1eb8
@@ -49,4 +49,8 @@ errno_t ad_srv_plugin_recv(TALLOC_CTX *mem_ctx,
ca1eb8
                             struct fo_server_info **_backup_servers,
ca1eb8
                             size_t *_num_backup_servers);
ca1eb8
 
ca1eb8
+char *ad_site_dns_discovery_domain(TALLOC_CTX *mem_ctx,
ca1eb8
+                                   const char *site,
ca1eb8
+                                   const char *domain);
ca1eb8
+
ca1eb8
 #endif /* __AD_SRV_H__ */
ca1eb8
-- 
ca1eb8
2.17.1
ca1eb8