From: Stefan Metzmacher Date: Fri, 11 Oct 2024 13:38:07 +0000 (+0000) Subject: s3:utils: let net_rpc_testjoin() work for ad domains and no ipv4 address X-Git-Tag: tdb-1.4.13~399 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0a31a5d20e7a05f7fff12003e64ec6f9678a6ae6;p=thirdparty%2Fsamba.git s3:utils: let net_rpc_testjoin() work for ad domains and no ipv4 address Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider --- diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c index 4e4de84b6e3..384c2218d43 100644 --- a/source3/utils/net_rpc.c +++ b/source3/utils/net_rpc.c @@ -502,6 +502,7 @@ int net_rpc_testjoin(struct net_context *c, int argc, const char **argv) if (!dc) { struct netr_DsRGetDCNameInfo *info; + uint32_t flags = DS_RETURN_DNS_NAME; if (!c->msg_ctx) { d_fprintf(stderr, _("Could not initialise message context. " @@ -510,13 +511,31 @@ int net_rpc_testjoin(struct net_context *c, int argc, const char **argv) return -1; } + if (strequal(domain, lp_workgroup())) { + flags |= DS_IS_FLAT_NAME; + } + status = dsgetdcname(mem_ctx, c->msg_ctx, domain, NULL, NULL, - DS_RETURN_DNS_NAME, + flags, &info); + if (NT_STATUS_EQUAL(status, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND) && + strequal(domain, lp_workgroup()) && + lp_realm() != NULL) + { + flags &= ~DS_IS_FLAT_NAME; + flags |= DS_IS_DNS_NAME; + status = dsgetdcname(mem_ctx, + c->msg_ctx, + lp_realm(), + NULL, + NULL, + flags, + &info); + } if (!NT_STATUS_IS_OK(status)) { talloc_destroy(mem_ctx); return -1;