r26649: Only claim to be a PDC if we are a PDC.
[samba.git] / source / cldap_server / netlogon.c
index b123027a7c29066e16a9ca97c9973c7e6cd20f10..f77909e8fa1bfdaab72076850fe500b518cf4030 100644 (file)
@@ -64,6 +64,7 @@ static NTSTATUS cldapd_netlogon_fill(struct cldapd_server *cldapd,
        const char *client_site;
        const char *pdc_ip;
        struct ldb_dn *partitions_basedn;
+       struct interface *ifaces;
 
        partitions_basedn = samdb_partitions_dn(cldapd->samctx, mem_ctx);
 
@@ -161,11 +162,15 @@ static NTSTATUS cldapd_netlogon_fill(struct cldapd_server *cldapd,
        }
 
        server_type      = 
-               NBT_SERVER_PDC | NBT_SERVER_GC | 
+               NBT_SERVER_GC | 
                NBT_SERVER_DS | NBT_SERVER_TIMESERV |
                NBT_SERVER_CLOSEST | NBT_SERVER_WRITABLE | 
                NBT_SERVER_GOOD_TIMESERV;
 
+       if (samdb_is_pdc(cldapd->samctx)) {
+               server_type |= NBT_SERVER_PDC;
+       }
+
        if (str_list_check(services, "ldap")) {
                server_type |= NBT_SERVER_LDAP;
        }
@@ -187,7 +192,8 @@ static NTSTATUS cldapd_netlogon_fill(struct cldapd_server *cldapd,
                                               lp_workgroup(lp_ctx));
        server_site      = "Default-First-Site-Name";
        client_site      = "Default-First-Site-Name";
-       pdc_ip           = iface_best_ip(src_address);
+       load_interfaces(mem_ctx, lp_interfaces(lp_ctx), &ifaces);
+       pdc_ip           = iface_best_ip(ifaces, src_address);
 
        ZERO_STRUCTP(netlogon);