]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:winbind: Move the function to list trusted domains to winbindd_dual_srv.c
authorSamuel Cabrero <scabrero@samba.org>
Tue, 1 Mar 2022 10:40:31 +0000 (11:40 +0100)
committerAndrew Bartlett <abartlet@samba.org>
Sun, 6 Mar 2022 23:05:40 +0000 (23:05 +0000)
This function will be converted to a local RPC call handler so move it
to the file including ndr_winbindd_scompat.c.

Updated debug message and use newer debug macros.

Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source3/winbindd/winbindd_dual_srv.c
source3/winbindd/winbindd_misc.c

index cefd134f2c6ad322eb4248833a925af22b24a5b7..3452349d608711a694f3950a37a19b2c9f0063a8 100644 (file)
@@ -1927,4 +1927,79 @@ reconnect:
        return status;
 }
 
+enum winbindd_result winbindd_dual_list_trusted_domains(struct winbindd_domain *domain,
+                                                       struct winbindd_cli_state *state)
+{
+       uint32_t i;
+       int extra_data_len = 0;
+       char *extra_data;
+       NTSTATUS result;
+       bool have_own_domain = False;
+       struct netr_DomainTrustList trusts;
+
+       DBG_NOTICE("[%s %u]: list trusted domains\n",
+                  state->client_name,
+                  (unsigned int)state->pid);
+
+       result = wb_cache_trusted_domains(domain, state->mem_ctx, &trusts);
+
+       if (!NT_STATUS_IS_OK(result)) {
+               DBG_NOTICE("wb_cache_trusted_domains returned %s\n",
+                          nt_errstr(result));
+               return WINBINDD_ERROR;
+       }
+
+       extra_data = talloc_strdup(state->mem_ctx, "");
+
+       for (i=0; i<trusts.count; i++) {
+               struct dom_sid_buf buf;
+
+               if (trusts.array[i].sid == NULL) {
+                       continue;
+               }
+               if (dom_sid_equal(trusts.array[i].sid, &global_sid_NULL)) {
+                       continue;
+               }
+
+               extra_data = talloc_asprintf_append_buffer(
+                   extra_data, "%s\\%s\\%s\\%u\\%u\\%u\n",
+                   trusts.array[i].netbios_name, trusts.array[i].dns_name,
+                   dom_sid_str_buf(trusts.array[i].sid, &buf),
+                   trusts.array[i].trust_flags,
+                   (uint32_t)trusts.array[i].trust_type,
+                   trusts.array[i].trust_attributes);
+       }
+
+       /* add our primary domain */
+
+       for (i=0; i<trusts.count; i++) {
+               if (strequal(trusts.array[i].netbios_name, domain->name)) {
+                       have_own_domain = True;
+                       break;
+               }
+       }
+
+       if (state->request->data.list_all_domains && !have_own_domain) {
+               struct dom_sid_buf buf;
+               extra_data = talloc_asprintf_append_buffer(
+                       extra_data, "%s\\%s\\%s\n", domain->name,
+                       domain->alt_name != NULL ?
+                               domain->alt_name :
+                               domain->name,
+                       dom_sid_str_buf(&domain->sid, &buf));
+       }
+
+       extra_data_len = strlen(extra_data);
+       if (extra_data_len > 0) {
+
+               /* Strip the last \n */
+               extra_data[extra_data_len-1] = '\0';
+
+               state->response->extra_data.data = extra_data;
+               state->response->length += extra_data_len;
+       }
+
+       return WINBINDD_OK;
+}
+
 #include "librpc/gen_ndr/ndr_winbind_scompat.c"
index db7e1c87dee1be1145900a6b9123bb43e2394c9c..e7e2021bec31c8ed48a54683f614651aef6fcdef 100644 (file)
@@ -277,81 +277,6 @@ done:
        return ret;
 }
 
-enum winbindd_result winbindd_dual_list_trusted_domains(struct winbindd_domain *domain,
-                                                       struct winbindd_cli_state *state)
-{
-       uint32_t i;
-       int extra_data_len = 0;
-       char *extra_data;
-       NTSTATUS result;
-       bool have_own_domain = False;
-       struct netr_DomainTrustList trusts;
-
-       DBG_NOTICE("[%s %u]: list trusted domains\n",
-                  state->client_name,
-                  (unsigned int)state->pid);
-
-       result = wb_cache_trusted_domains(domain, state->mem_ctx, &trusts);
-
-       if (!NT_STATUS_IS_OK(result)) {
-               DEBUG(3, ("winbindd_dual_list_trusted_domains: trusted_domains returned %s\n",
-                       nt_errstr(result) ));
-               return WINBINDD_ERROR;
-       }
-
-       extra_data = talloc_strdup(state->mem_ctx, "");
-
-       for (i=0; i<trusts.count; i++) {
-               struct dom_sid_buf buf;
-
-               if (trusts.array[i].sid == NULL) {
-                       continue;
-               }
-               if (dom_sid_equal(trusts.array[i].sid, &global_sid_NULL)) {
-                       continue;
-               }
-
-               extra_data = talloc_asprintf_append_buffer(
-                   extra_data, "%s\\%s\\%s\\%u\\%u\\%u\n",
-                   trusts.array[i].netbios_name, trusts.array[i].dns_name,
-                   dom_sid_str_buf(trusts.array[i].sid, &buf),
-                   trusts.array[i].trust_flags,
-                   (uint32_t)trusts.array[i].trust_type,
-                   trusts.array[i].trust_attributes);
-       }
-
-       /* add our primary domain */
-
-       for (i=0; i<trusts.count; i++) {
-               if (strequal(trusts.array[i].netbios_name, domain->name)) {
-                       have_own_domain = True;
-                       break;
-               }
-       }
-
-       if (state->request->data.list_all_domains && !have_own_domain) {
-               struct dom_sid_buf buf;
-               extra_data = talloc_asprintf_append_buffer(
-                       extra_data, "%s\\%s\\%s\n", domain->name,
-                       domain->alt_name != NULL ?
-                               domain->alt_name :
-                               domain->name,
-                       dom_sid_str_buf(&domain->sid, &buf));
-       }
-
-       extra_data_len = strlen(extra_data);
-       if (extra_data_len > 0) {
-
-               /* Strip the last \n */
-               extra_data[extra_data_len-1] = '\0';
-
-               state->response->extra_data.data = extra_data;
-               state->response->length += extra_data_len;
-       }
-
-       return WINBINDD_OK;
-}
-
 bool winbindd_dc_info(struct winbindd_cli_state *cli)
 {
        struct winbindd_domain *domain;