]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
cldap: Use netlogon_pings()
authorVolker Lendecke <vl@samba.org>
Fri, 25 Oct 2024 14:45:29 +0000 (16:45 +0200)
committerVolker Lendecke <vl@samba.org>
Mon, 11 Nov 2024 14:03:04 +0000 (14:03 +0000)
Allow LDAPS for ads_cldap_netlogon()

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source3/libads/cldap.c

index 43956b353344d6f1b42db11a1fa25f304376ca57..fa1c26b432fec6144fdf97bde1b659a447d33410 100644 (file)
@@ -26,6 +26,7 @@
 #include "../lib/tsocket/tsocket.h"
 #include "../lib/util/tevent_ntstatus.h"
 #include "libads/cldap.h"
+#include "libads/netlogon_ping.h"
 
 struct cldap_multi_netlogon_state {
        struct tevent_context *ev;
@@ -376,7 +377,6 @@ bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
        char addrstr[INET6_ADDRSTRLEN];
        const char *dest_str;
        struct tsocket_address *dest_addr;
-       const struct tsocket_address * const *dest_addrs;
        struct netlogon_samlogon_response **responses = NULL;
        int ret;
 
@@ -392,17 +392,21 @@ bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
                return false;
        }
 
-       dest_addrs = (const struct tsocket_address * const *)&dest_addr;
-
-       status = cldap_multi_netlogon(talloc_tos(),
-                               dest_addrs, 1,
-                               realm, NULL,
-                               nt_version, 1,
-                               timeval_current_ofs(MAX(3,lp_ldap_timeout()/2), 0),
-                               &responses);
+       status = netlogon_pings(
+               talloc_tos(),                       /* mem_ctx */
+               lp_client_netlogon_ping_protocol(), /*proto */
+               &dest_addr,                         /* servers */
+               1,                                  /* num_servers */
+               (struct netlogon_ping_filter) {
+                       .ntversion = nt_version,
+                       .domain = realm,
+                       .acct_ctrl = -1,
+               },
+               1,                                  /* min_servers */
+               timeval_current_ofs(MAX(3, lp_ldap_timeout() / 2), 0),
+               &responses);
        if (!NT_STATUS_IS_OK(status)) {
-               DBG_NOTICE("cldap_multi_netlogon failed: %s\n",
-                          nt_errstr(status));
+               DBG_NOTICE("netlogon_pings failed: %s\n", nt_errstr(status));
                return false;
        }
        if (responses == NULL || responses[0] == NULL) {