s4-cldap: Set DS_DNS_CONTROLLER bit if we are running RPC dnsserver
authorAmitay Isaacs <amitay@gmail.com>
Wed, 7 Dec 2011 22:28:45 +0000 (09:28 +1100)
committerAmitay Isaacs <amitay@gmail.com>
Mon, 12 Dec 2011 13:55:32 +0000 (00:55 +1100)
Till we have internal DNS server which appears in services, use
endpoint services to find out if we are running dns server.

source4/cldap_server/netlogon.c

index 9d9f45e8bb0279d200884019c0a4a2ade893082f..e9ec0745f4164b7a9f1132958f066976602bedf6 100644 (file)
@@ -61,6 +61,7 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context *sam_ctx,
        struct ldb_result *dom_res = NULL, *user_res = NULL;
        int ret;
        const char **services = lpcfg_server_services(lp_ctx);
+       const char **rpc_services = lpcfg_dcerpc_endpoint_servers(lp_ctx);
        uint32_t server_type;
        const char *pdc_name;
        struct GUID domain_uuid;
@@ -246,6 +247,10 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context *sam_ctx,
                server_type |= DS_SERVER_KDC;
        }
 
+       if (str_list_check(rpc_services, "dnsserver")) {
+               server_type |= DS_DNS_CONTROLLER;
+       }
+
        if (samdb_rodc(sam_ctx, &am_rodc) == LDB_SUCCESS && !am_rodc) {
                server_type |= DS_SERVER_WRITABLE;
        }