The branch, v3-3-test has been updated via 954d0998c2c00140addb6ba3845e80ed91e4effc (commit) via e305368538eaa72e3008a5517db3708936924297 (commit) via 255e509474cae92802e90613ccaddb6627ee77cd (commit) via 0388b2f0cc4d14b005c5b42f2c17ddcbc8bef12a (commit) from e90a4ce3c24ab2a33e34da5a9052a3b3ec4db962 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test - Log ----------------------------------------------------------------- commit 954d0998c2c00140addb6ba3845e80ed91e4effc Author: Günther Deschner <[EMAIL PROTECTED]> Date: Thu May 15 17:00:31 2008 +0200 net: Fix net lookup dsgetdcname, no need to pull site ourselves. Guenther commit e305368538eaa72e3008a5517db3708936924297 Author: Günther Deschner <[EMAIL PROTECTED]> Date: Thu May 15 16:59:46 2008 +0200 dsgetdcname: add site support. Guenther commit 255e509474cae92802e90613ccaddb6627ee77cd Author: Günther Deschner <[EMAIL PROTECTED]> Date: Thu May 15 16:41:18 2008 +0200 dsgetdcname: check for invalid sitename/flag combinations. Guenther commit 0388b2f0cc4d14b005c5b42f2c17ddcbc8bef12a Author: Günther Deschner <[EMAIL PROTECTED]> Date: Thu May 15 16:38:32 2008 +0200 libads/cldap: store client sitename also keyed by dns domain name. Guenther ----------------------------------------------------------------------- Summary of changes: source/libads/ldap.c | 1 + source/libsmb/dsgetdcname.c | 27 +++++++++++++++++++++------ source/utils/net_lookup.c | 14 ++------------ 3 files changed, 24 insertions(+), 18 deletions(-) Changeset truncated at 500 lines: diff --git a/source/libads/ldap.c b/source/libads/ldap.c index 99fd645..063645f 100644 --- a/source/libads/ldap.c +++ b/source/libads/ldap.c @@ -249,6 +249,7 @@ bool ads_try_connect(ADS_STRUCT *ads, const char *server ) /* Store our site name. */ sitename_store( cldap_reply.domain, cldap_reply.client_site); + sitename_store( cldap_reply.dns_domain, cldap_reply.client_site); ret = true; out: diff --git a/source/libsmb/dsgetdcname.c b/source/libsmb/dsgetdcname.c index 1538502..16148a3 100644 --- a/source/libsmb/dsgetdcname.c +++ b/source/libsmb/dsgetdcname.c @@ -582,7 +582,8 @@ static NTSTATUS dsgetdcname_cached(TALLOC_CTX *mem_ctx, /**************************************************************** ****************************************************************/ -static bool check_allowed_required_flags(uint32_t flags) +static bool check_allowed_required_flags(uint32_t flags, + const char *site_name) { uint32_t return_type = flags & (DS_RETURN_FLAT_NAME|DS_RETURN_DNS_NAME); uint32_t offered_type = flags & (DS_IS_FLAT_NAME|DS_IS_DNS_NAME); @@ -593,6 +594,10 @@ static bool check_allowed_required_flags(uint32_t flags) debug_dsdcinfo_flags(10, flags); + if ((flags & DS_TRY_NEXTCLOSEST_SITE) && site_name) { + return false; + } + if (return_type == (DS_RETURN_FLAT_NAME|DS_RETURN_DNS_NAME)) { return false; } @@ -1385,6 +1390,7 @@ NTSTATUS dsgetdcname(TALLOC_CTX *mem_ctx, { NTSTATUS status = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND; struct netr_DsRGetDCNameInfo *myinfo = NULL; + char *query_site = NULL; DEBUG(10,("dsgetdcname: domain_name: %s, " "domain_guid: %s, site_name: %s, flags: 0x%08x\n", @@ -1394,34 +1400,43 @@ NTSTATUS dsgetdcname(TALLOC_CTX *mem_ctx, *info = NULL; - if (!check_allowed_required_flags(flags)) { + if (!check_allowed_required_flags(flags, site_name)) { DEBUG(0,("invalid flags specified\n")); return NT_STATUS_INVALID_PARAMETER; } + if (!site_name) { + query_site = sitename_fetch(domain_name); + } else { + query_site = SMB_STRDUP(site_name); + } + if (flags & DS_FORCE_REDISCOVERY) { goto rediscover; } status = dsgetdcname_cached(mem_ctx, msg_ctx, domain_name, domain_guid, - flags, site_name, &myinfo); + flags, query_site, &myinfo); if (NT_STATUS_IS_OK(status)) { *info = myinfo; - return status; + goto done; } if (flags & DS_BACKGROUND_ONLY) { - return status; + goto done; } rediscover: status = dsgetdcname_rediscover(mem_ctx, msg_ctx, domain_name, - domain_guid, flags, site_name, + domain_guid, flags, query_site, &myinfo); if (NT_STATUS_IS_OK(status)) { *info = myinfo; } + done: + SAFE_FREE(query_site); + return status; } diff --git a/source/utils/net_lookup.c b/source/utils/net_lookup.c index 7e4d85d..8b9ddb6 100644 --- a/source/utils/net_lookup.c +++ b/source/utils/net_lookup.c @@ -364,7 +364,7 @@ static int net_lookup_dsgetdcname(struct net_context *c, int argc, const char ** { NTSTATUS status; const char *domain_name = NULL; - char *site_name = NULL; + const char *site_name = NULL; uint32_t flags = 0; struct netr_DsRGetDCNameInfo *info = NULL; TALLOC_CTX *mem_ctx; @@ -391,22 +391,13 @@ static int net_lookup_dsgetdcname(struct net_context *c, int argc, const char ** } if (argc == 3) { - site_name = SMB_STRDUP(argv[2]); - if (!site_name) { - TALLOC_FREE(mem_ctx); - return -1; - } - } - - if (!site_name) { - site_name = sitename_fetch(domain_name); + site_name = argv[2]; } status = dsgetdcname(mem_ctx, NULL, domain_name, NULL, site_name, flags, &info); if (!NT_STATUS_IS_OK(status)) { d_printf("failed with: %s\n", nt_errstr(status)); - SAFE_FREE(site_name); TALLOC_FREE(mem_ctx); return -1; } @@ -415,7 +406,6 @@ static int net_lookup_dsgetdcname(struct net_context *c, int argc, const char ** printf("%s\n", s); TALLOC_FREE(s); - SAFE_FREE(site_name); TALLOC_FREE(mem_ctx); return 0; } -- Samba Shared Repository