[SCM] Samba Shared Repository - branch v3-3-test updated -
release-3-2-0pre2-2446-g954d099
Günther Deschner
gd at samba.org
Thu May 15 15:04:05 GMT 2008
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 <gd at samba.org>
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 <gd at samba.org>
Date: Thu May 15 16:59:46 2008 +0200
dsgetdcname: add site support.
Guenther
commit 255e509474cae92802e90613ccaddb6627ee77cd
Author: Günther Deschner <gd at samba.org>
Date: Thu May 15 16:41:18 2008 +0200
dsgetdcname: check for invalid sitename/flag combinations.
Guenther
commit 0388b2f0cc4d14b005c5b42f2c17ddcbc8bef12a
Author: Günther Deschner <gd at samba.org>
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
More information about the samba-cvs
mailing list