#include "libads/cldap.h"
#include "libads/netlogon_ping.h"
-/****************************************************************
-****************************************************************/
-
-#define RETURN_ON_FALSE(x) if (!(x)) return false;
-
-bool check_cldap_reply_required_flags(uint32_t ret_flags,
- uint32_t req_flags)
-{
- if (req_flags == 0) {
- return true;
- }
-
- if (req_flags & DS_PDC_REQUIRED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_PDC);
-
- if (req_flags & DS_GC_SERVER_REQUIRED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_GC);
-
- if (req_flags & DS_ONLY_LDAP_NEEDED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_LDAP);
-
- if ((req_flags & DS_DIRECTORY_SERVICE_REQUIRED) ||
- (req_flags & DS_DIRECTORY_SERVICE_PREFERRED))
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_DS);
-
- if (req_flags & DS_KDC_REQUIRED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_KDC);
-
- if (req_flags & DS_TIMESERV_REQUIRED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_TIMESERV);
-
- if (req_flags & DS_WEB_SERVICE_REQUIRED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_ADS_WEB_SERVICE);
-
- if (req_flags & DS_WRITABLE_REQUIRED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_WRITABLE);
-
- if (req_flags & DS_DIRECTORY_SERVICE_6_REQUIRED)
- RETURN_ON_FALSE(ret_flags & (NBT_SERVER_SELECT_SECRET_DOMAIN_6
- |NBT_SERVER_FULL_SECRET_DOMAIN_6));
-
- if (req_flags & DS_DIRECTORY_SERVICE_8_REQUIRED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_DS_8);
-
- if (req_flags & DS_DIRECTORY_SERVICE_9_REQUIRED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_DS_9);
-
- if (req_flags & DS_DIRECTORY_SERVICE_10_REQUIRED)
- RETURN_ON_FALSE(ret_flags & NBT_SERVER_DS_10);
-
- return true;
-}
-
/*******************************************************************
do a cldap netlogon query. Always 389/udp
*******************************************************************/
/* The following definitions come from libads/cldap.c */
-bool check_cldap_reply_required_flags(uint32_t ret_flags,
- uint32_t req_flags);
-
bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx,
struct sockaddr_storage *ss,
const char *realm,
#include "lib/util/tevent_ntstatus.h"
#include "source4/lib/tls/tls.h"
#include "source3/libads/cldap.h"
+#include "librpc/gen_ndr/netlogon.h"
+
+#define RETURN_ON_FALSE(x) \
+ if (!(x)) \
+ return false;
+
+bool check_cldap_reply_required_flags(uint32_t ret_flags, uint32_t req_flags)
+{
+ if (req_flags == 0) {
+ return true;
+ }
+
+ if (req_flags & DS_PDC_REQUIRED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_PDC);
+
+ if (req_flags & DS_GC_SERVER_REQUIRED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_GC);
+
+ if (req_flags & DS_ONLY_LDAP_NEEDED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_LDAP);
+
+ if ((req_flags & DS_DIRECTORY_SERVICE_REQUIRED) ||
+ (req_flags & DS_DIRECTORY_SERVICE_PREFERRED))
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_DS);
+
+ if (req_flags & DS_KDC_REQUIRED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_KDC);
+
+ if (req_flags & DS_TIMESERV_REQUIRED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_TIMESERV);
+
+ if (req_flags & DS_WEB_SERVICE_REQUIRED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_ADS_WEB_SERVICE);
+
+ if (req_flags & DS_WRITABLE_REQUIRED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_WRITABLE);
+
+ if (req_flags & DS_DIRECTORY_SERVICE_6_REQUIRED)
+ RETURN_ON_FALSE(ret_flags &
+ (NBT_SERVER_SELECT_SECRET_DOMAIN_6 |
+ NBT_SERVER_FULL_SECRET_DOMAIN_6));
+
+ if (req_flags & DS_DIRECTORY_SERVICE_8_REQUIRED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_DS_8);
+
+ if (req_flags & DS_DIRECTORY_SERVICE_9_REQUIRED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_DS_9);
+
+ if (req_flags & DS_DIRECTORY_SERVICE_10_REQUIRED)
+ RETURN_ON_FALSE(ret_flags & NBT_SERVER_DS_10);
+
+ return true;
+}
struct ldap_netlogon_state {
struct tevent_context *ev;
#include "libcli/util/ntstatus.h"
#include "lib/param/loadparm.h"
+bool check_cldap_reply_required_flags(uint32_t ret_flags, uint32_t req_flags);
+
struct netlogon_samlogon_response;
struct netlogon_ping_filter {