summaryrefslogtreecommitdiff
path: root/source3/nsswitch
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2002-12-12 23:35:55 +0000
committerGerald Carter <jerry@samba.org>2002-12-12 23:35:55 +0000
commitf6c4f25e4319b47ac6c8dbf67a4b1c513148384c (patch)
tree16b4d539f4a6bc3b1f39240ab70b7e3c4ec514c3 /source3/nsswitch
parent482f77e63520c16993e12ba4030c30b0e8417a8d (diff)
downloadsamba-f6c4f25e4319b47ac6c8dbf67a4b1c513148384c.tar.gz
samba-f6c4f25e4319b47ac6c8dbf67a4b1c513148384c.tar.bz2
samba-f6c4f25e4319b47ac6c8dbf67a4b1c513148384c.zip
merge of get_dc_name()-like code from APP_HEAD; better support password server = DC1 *
(This used to be commit 6b18ca9511ddcf1718f222af3f61491d1e5f3b60)
Diffstat (limited to 'source3/nsswitch')
-rw-r--r--source3/nsswitch/winbindd_cm.c50
1 files changed, 1 insertions, 49 deletions
diff --git a/source3/nsswitch/winbindd_cm.c b/source3/nsswitch/winbindd_cm.c
index 403bc38052..075da1e2b2 100644
--- a/source3/nsswitch/winbindd_cm.c
+++ b/source3/nsswitch/winbindd_cm.c
@@ -135,54 +135,6 @@ static BOOL cm_ads_find_dc(const char *domain, struct in_addr *dc_ip, fstring sr
return True;
}
-/*
- find the DC for a domain using methods appropriate for a RPC domain
-*/
-static BOOL cm_rpc_find_dc(const char *domain, struct in_addr *dc_ip, fstring srv_name)
-{
- struct in_addr *ip_list = NULL;
- int count, i;
- BOOL list_ordered;
-
- if (!get_dc_list(domain, &ip_list, &count, &list_ordered)) {
- struct in_addr pdc_ip;
-
- if (!get_pdc_ip(domain, &pdc_ip)) {
- DEBUG(3, ("Could not look up any DCs for domain %s\n",
- domain));
- return False;
- }
-
- ip_list = (struct in_addr *)malloc(sizeof(struct in_addr));
-
- if (!ip_list)
- return False;
-
- ip_list[0] = pdc_ip;
- count = 1;
- }
-
- /* Pick a nice close server, but only if the list was not ordered */
- if (!list_ordered && (count > 1) ) {
- qsort(ip_list, count, sizeof(struct in_addr), QSORT_CAST ip_compare);
- }
-
- for (i = 0; i < count; i++) {
- if (is_zero_ip(ip_list[i]))
- continue;
-
- if (name_status_find(domain, 0x1c, 0x20, ip_list[i], srv_name)) {
- *dc_ip = ip_list[i];
- SAFE_FREE(ip_list);
- return True;
- }
- }
-
-
- SAFE_FREE(ip_list);
-
- return False;
-}
static BOOL cm_get_dc_name(const char *domain, fstring srv_name, struct in_addr *ip_out)
@@ -247,7 +199,7 @@ static BOOL cm_get_dc_name(const char *domain, fstring srv_name, struct in_addr
}
if (!ret) {
/* fall back on rpc methods if the ADS methods fail */
- ret = cm_rpc_find_dc(domain, &dc_ip, srv_name);
+ ret = rpc_find_dc(domain, srv_name, &dc_ip);
}
if (!ret) {