[SCM] Samba Shared Repository - branch master updated

Andrew Tridgell tridge at samba.org
Thu Feb 25 19:24:06 MST 2010


The branch, master has been updated
       via  6491150... s4-dsdb: fixed the fetch of the server site name
       via  9a72806... Revert "s4:AD content - adequate some revision levels to match Windows Server 2008"
       via  525a1fe... s4:RPC-DSSYNC: pass the ip address to the cldap code instead of a name
       via  3751485... s4:torture: use a connected CLDAP socket.
       via  b6737c1... s4:libnet: use a connected CLDAP socket.
      from  314a926... Fix up debug info on smb2_rename code.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 64911507a0952f52940450b4802e8b85f74b86f3
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Feb 26 12:36:17 2010 +1100

    s4-dsdb: fixed the fetch of the server site name
    
    when the ntds objects were moved by a recent change it broke the
    calculation of the server site
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 9a72806dc9dfa4c2248a536102ccb94c3b448171
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Feb 26 12:31:57 2010 +1100

    Revert "s4:AD content - adequate some revision levels to match Windows Server 2008"
    
    This reverts commit 973ea198677c581064fad62cdac30baac7103ef8.
    
    This change breaks DRS dcpromo.

commit 525a1fe7751d4ba470e9185009fc455e57470c76
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Feb 25 18:10:56 2010 +0100

    s4:RPC-DSSYNC: pass the ip address to the cldap code instead of a name
    
    metze

commit 3751485c8432c0f6d3955f2b03a81cf4002d7a1b
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Feb 25 12:47:38 2010 +0100

    s4:torture: use a connected CLDAP socket.
    
    This is needed because we don't (want) to specify an explicit
    local address. And the socket family (ipv4 vs. ipv6) needs to
    be autodetected based on the remote address before the
    socket() syscall.
    
    Otherwise we would try to connect to a ipv4 address through an
    ipv6only socket.
    
    metze

commit b6737c1a7cfe68ff45a2114b48e99176dd32d2ae
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Feb 25 12:47:38 2010 +0100

    s4:libnet: use a connected CLDAP socket.
    
    This is needed because we don't (want) to specify an explicit
    local address. And the socket family (ipv4 vs. ipv6) needs to
    be autodetected based on the remote address before the
    socket() syscall.
    
    Otherwise we would try to connect to a ipv4 address through an
    ipv6only socket.
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source4/dsdb/common/util.c                 |    8 ++++-
 source4/libnet/config.mk                   |    2 +-
 source4/libnet/libnet_become_dc.c          |   18 ++++++++++--
 source4/libnet/libnet_site.c               |   19 ++++++++++--
 source4/libnet/libnet_unbecome_dc.c        |   18 ++++++++++--
 source4/setup/provision.ldif               |    4 +-
 source4/setup/provision_configuration.ldif |    6 ++--
 source4/torture/ldap/cldap.c               |   42 ++++++++++++++++++++++------
 source4/torture/ldap/cldapbench.c          |   18 ++++++++---
 source4/torture/rpc/dssync.c               |   37 +++++++++++++++++++++---
 10 files changed, 137 insertions(+), 35 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c
index 134d428..cc75f7f 100644
--- a/source4/dsdb/common/util.c
+++ b/source4/dsdb/common/util.c
@@ -1452,12 +1452,18 @@ struct ldb_dn *samdb_server_dn(struct ldb_context *ldb, TALLOC_CTX *mem_ctx)
 struct ldb_dn *samdb_server_site_dn(struct ldb_context *ldb, TALLOC_CTX *mem_ctx)
 {
 	struct ldb_dn *server_dn;
+	struct ldb_dn *servers_dn;
 	struct ldb_dn *server_site_dn;
 
+	/* TODO: there must be a saner way to do this!! */
+
 	server_dn = samdb_server_dn(ldb, mem_ctx);
 	if (!server_dn) return NULL;
 
-	server_site_dn = ldb_dn_get_parent(mem_ctx, server_dn);
+	servers_dn = ldb_dn_get_parent(mem_ctx, server_dn);
+	if (!servers_dn) return NULL;
+
+	server_site_dn = ldb_dn_get_parent(mem_ctx, servers_dn);
 
 	talloc_free(server_dn);
 	return server_site_dn;
diff --git a/source4/libnet/config.mk b/source4/libnet/config.mk
index eede8c8..b998878 100644
--- a/source4/libnet/config.mk
+++ b/source4/libnet/config.mk
@@ -1,5 +1,5 @@
 [SUBSYSTEM::LIBSAMBA-NET]
-PUBLIC_DEPENDENCIES = CREDENTIALS dcerpc dcerpc_samr RPC_NDR_LSA RPC_NDR_SRVSVC RPC_NDR_DRSUAPI LIBCLI_COMPOSITE LIBCLI_RESOLVE LIBCLI_FINDDCS LIBCLI_CLDAP LIBCLI_FINDDCS gensec_schannel LIBCLI_AUTH LIBNDR SMBPASSWD PROVISION LIBCLI_SAMSYNC HDB_SAMBA4
+PUBLIC_DEPENDENCIES = CREDENTIALS dcerpc dcerpc_samr RPC_NDR_LSA RPC_NDR_SRVSVC RPC_NDR_DRSUAPI LIBCLI_COMPOSITE LIBCLI_RESOLVE LIBCLI_FINDDCS LIBCLI_CLDAP LIBCLI_FINDDCS gensec_schannel LIBCLI_AUTH LIBNDR SMBPASSWD PROVISION LIBCLI_SAMSYNC HDB_SAMBA4 LIBTSOCKET
 
 LIBSAMBA-NET_OBJ_FILES = $(addprefix $(libnetsrcdir)/, \
 	libnet.o libnet_passwd.o libnet_time.o libnet_rpc.o \
diff --git a/source4/libnet/libnet_become_dc.c b/source4/libnet/libnet_become_dc.c
index f3e4ec7..101896f 100644
--- a/source4/libnet/libnet_become_dc.c
+++ b/source4/libnet/libnet_become_dc.c
@@ -34,6 +34,7 @@
 #include "librpc/gen_ndr/ndr_drsuapi.h"
 #include "auth/gensec/gensec.h"
 #include "param/param.h"
+#include "lib/tsocket/tsocket.h"
 
 /*****************************************************************************
  * Windows 2003 (w2k3) does the following steps when changing the server role
@@ -753,9 +754,11 @@ static void becomeDC_send_cldap(struct libnet_BecomeDC_state *s)
 {
 	struct composite_context *c = s->creq;
 	struct tevent_req *req;
+	struct tsocket_address *dest_address;
+	int ret;
 
-	s->cldap.io.in.dest_address	= s->source_dsa.address;
-	s->cldap.io.in.dest_port	= lp_cldap_port(s->libnet->lp_ctx);
+	s->cldap.io.in.dest_address	= NULL;
+	s->cldap.io.in.dest_port	= 0;
 	s->cldap.io.in.realm		= s->domain.dns_name;
 	s->cldap.io.in.host		= s->dest_dsa.netbios_name;
 	s->cldap.io.in.user		= NULL;
@@ -765,8 +768,17 @@ static void becomeDC_send_cldap(struct libnet_BecomeDC_state *s)
 	s->cldap.io.in.version		= NETLOGON_NT_VERSION_5 | NETLOGON_NT_VERSION_5EX;
 	s->cldap.io.in.map_response	= true;
 
+	ret = tsocket_address_inet_from_strings(s, "ip",
+						s->source_dsa.address,
+						lp_cldap_port(s->libnet->lp_ctx),
+						&dest_address);
+	if (ret != 0) {
+		c->status = map_nt_error_from_unix(errno);
+		if (!composite_is_ok(c)) return;
+	}
+
 	c->status = cldap_socket_init(s, s->libnet->event_ctx,
-				      NULL, NULL, &s->cldap.sock);//TODO
+				      NULL, dest_address, &s->cldap.sock);
 	if (!composite_is_ok(c)) return;
 
 	req = cldap_netlogon_send(s, s->cldap.sock, &s->cldap.io);
diff --git a/source4/libnet/libnet_site.c b/source4/libnet/libnet_site.c
index 8a002b2..410fb4b 100644
--- a/source4/libnet/libnet_site.c
+++ b/source4/libnet/libnet_site.c
@@ -25,6 +25,7 @@
 #include "librpc/rpc/dcerpc.h"
 #include "libcli/resolve/resolve.h"
 #include "param/param.h"
+#include "lib/tsocket/tsocket.h"
 
 /**
  * 1. Setup a CLDAP socket.
@@ -41,6 +42,8 @@ NTSTATUS libnet_FindSite(TALLOC_CTX *ctx, struct libnet_context *lctx, struct li
 
 	struct cldap_socket *cldap = NULL;
 	struct cldap_netlogon search;
+	int ret;
+	struct tsocket_address *dest_address;
 
 	tmp_ctx = talloc_named(ctx, 0, "libnet_FindSite temp context");
 	if (!tmp_ctx) {
@@ -50,14 +53,24 @@ NTSTATUS libnet_FindSite(TALLOC_CTX *ctx, struct libnet_context *lctx, struct li
 
 	/* Resolve the site name. */
 	ZERO_STRUCT(search);
-	search.in.dest_address = r->in.dest_address;
-	search.in.dest_port = r->in.cldap_port;
+	search.in.dest_address = NULL;
+	search.in.dest_port = 0;
 	search.in.acct_control = -1;
 	search.in.version = NETLOGON_NT_VERSION_5 | NETLOGON_NT_VERSION_5EX;
 	search.in.map_response = true;
 
+	ret = tsocket_address_inet_from_strings(tmp_ctx, "ip",
+						r->in.dest_address,
+						r->in.cldap_port,
+						&dest_address);
+	if (ret != 0) {
+		r->out.error_string = NULL;
+		status = map_nt_error_from_unix(errno);
+		return status;
+	}
+
 	/* we want to use non async calls, so we're not passing an event context */
-	status = cldap_socket_init(tmp_ctx, NULL, NULL, NULL, &cldap);//TODO
+	status = cldap_socket_init(tmp_ctx, NULL, NULL, dest_address, &cldap);
 	if (!NT_STATUS_IS_OK(status)) {
 		talloc_free(tmp_ctx);
 		r->out.error_string = NULL;
diff --git a/source4/libnet/libnet_unbecome_dc.c b/source4/libnet/libnet_unbecome_dc.c
index 6e1ecf0..5fd0d55 100644
--- a/source4/libnet/libnet_unbecome_dc.c
+++ b/source4/libnet/libnet_unbecome_dc.c
@@ -28,6 +28,7 @@
 #include "../libds/common/flags.h"
 #include "librpc/gen_ndr/ndr_drsuapi_c.h"
 #include "param/param.h"
+#include "lib/tsocket/tsocket.h"
 
 /*****************************************************************************
  * Windows 2003 (w2k3) does the following steps when changing the server role
@@ -256,9 +257,11 @@ static void unbecomeDC_send_cldap(struct libnet_UnbecomeDC_state *s)
 {
 	struct composite_context *c = s->creq;
 	struct tevent_req *req;
+	struct tsocket_address *dest_address;
+	int ret;
 
-	s->cldap.io.in.dest_address	= s->source_dsa.address;
-	s->cldap.io.in.dest_port	= lp_cldap_port(s->libnet->lp_ctx);
+	s->cldap.io.in.dest_address	= NULL;
+	s->cldap.io.in.dest_port	= 0;
 	s->cldap.io.in.realm		= s->domain.dns_name;
 	s->cldap.io.in.host		= s->dest_dsa.netbios_name;
 	s->cldap.io.in.user		= NULL;
@@ -268,8 +271,17 @@ static void unbecomeDC_send_cldap(struct libnet_UnbecomeDC_state *s)
 	s->cldap.io.in.version		= NETLOGON_NT_VERSION_5 | NETLOGON_NT_VERSION_5EX;
 	s->cldap.io.in.map_response	= true;
 
+	ret = tsocket_address_inet_from_strings(s, "ip",
+						s->source_dsa.address,
+						lp_cldap_port(s->libnet->lp_ctx),
+						&dest_address);
+	if (ret != 0) {
+		c->status = map_nt_error_from_unix(errno);
+		if (!composite_is_ok(c)) return;
+	}
+
 	c->status = cldap_socket_init(s, s->libnet->event_ctx,
-				      NULL, NULL, &s->cldap.sock);//TODO
+				      NULL, dest_address, &s->cldap.sock);
 	if (!composite_is_ok(c)) return;
 
 	req = cldap_netlogon_send(s, s->cldap.sock, &s->cldap.io);
diff --git a/source4/setup/provision.ldif b/source4/setup/provision.ldif
index 75668c6..e52b4f0 100644
--- a/source4/setup/provision.ldif
+++ b/source4/setup/provision.ldif
@@ -160,7 +160,7 @@ objectClass: container
 dn: CN=ActiveDirectoryUpdate,CN=DomainUpdates,CN=System,${DOMAINDN}
 objectClass: top
 objectClass: container
-revision: 3
+revision: 5
 
 dn: CN=Operations,CN=DomainUpdates,CN=System,${DOMAINDN}
 objectClass: top
@@ -385,7 +385,7 @@ objectClass: container
 dn: CN=Windows2003Update,CN=DomainUpdates,CN=System,${DOMAINDN}
 objectClass: top
 objectClass: container
-revision: 9
+revision: 8
 
 # End domain updates
 
diff --git a/source4/setup/provision_configuration.ldif b/source4/setup/provision_configuration.ldif
index 5c79b8b..13d162e 100644
--- a/source4/setup/provision_configuration.ldif
+++ b/source4/setup/provision_configuration.ldif
@@ -650,12 +650,12 @@ objectClass: container
 dn: CN=ActiveDirectoryRodcUpdate,CN=ForestUpdates,${CONFIGDN}
 objectClass: top
 objectClass: container
-revision: 2
+revision: 5
 
 dn: CN=ActiveDirectoryUpdate,CN=ForestUpdates,${CONFIGDN}
 objectClass: top
 objectClass: container
-revision: 2
+revision: 5
 
 dn: CN=Operations,CN=ForestUpdates,${CONFIGDN}
 objectClass: top
@@ -812,7 +812,7 @@ objectClass: container
 dn: CN=Windows2003Update,CN=ForestUpdates,${CONFIGDN}
 objectClass: top
 objectClass: container
-revision: 10
+revision: 9
 
 # End forest updates
 
diff --git a/source4/torture/ldap/cldap.c b/source4/torture/ldap/cldap.c
index edd9593..247a56e 100644
--- a/source4/torture/ldap/cldap.c
+++ b/source4/torture/ldap/cldap.c
@@ -280,16 +280,24 @@ static bool test_cldap_netlogon_flags(struct torture_context *tctx,
 	struct netlogon_samlogon_response n1;
 	uint32_t server_type;
 	struct smb_iconv_convenience *iconv_convenience = lp_iconv_convenience(tctx->lp_ctx);
+	struct tsocket_address *dest_addr;
+	int ret;
+
+	ret = tsocket_address_inet_from_strings(tctx, "ip",
+						dest,
+						lp_cldap_port(tctx->lp_ctx),
+						&dest_addr);
+	CHECK_VAL(ret, 0);
 
 	/* cldap_socket_init should now know about the dest. address */
-	status = cldap_socket_init(tctx, NULL, NULL, NULL, &cldap);
+	status = cldap_socket_init(tctx, NULL, NULL, dest_addr, &cldap);
 	CHECK_STATUS(status, NT_STATUS_OK);
 
 	printf("Printing out netlogon server type flags: %s\n", dest);
 
 	ZERO_STRUCT(search);
-	search.in.dest_address = dest;
-	search.in.dest_port = lp_cldap_port(tctx->lp_ctx);
+	search.in.dest_address = NULL;
+	search.in.dest_port = 0;
 	search.in.acct_control = -1;
 	search.in.version = NETLOGON_NT_VERSION_5 | NETLOGON_NT_VERSION_5EX;
 	search.in.map_response = true;
@@ -393,16 +401,24 @@ static bool test_cldap_netlogon_flag_ds_dns_forest(struct torture_context *tctx,
 	struct netlogon_samlogon_response n1;
 	struct smb_iconv_convenience *iconv_convenience = lp_iconv_convenience(tctx->lp_ctx);
 	bool result = true;
+	struct tsocket_address *dest_addr;
+	int ret;
+
+	ret = tsocket_address_inet_from_strings(tctx, "ip",
+						dest,
+						lp_cldap_port(tctx->lp_ctx),
+						&dest_addr);
+	CHECK_VAL(ret, 0);
 
 	/* cldap_socket_init should now know about the dest. address */
-	status = cldap_socket_init(tctx, NULL, NULL, NULL, &cldap);
+	status = cldap_socket_init(tctx, NULL, NULL, dest_addr, &cldap);
 	CHECK_STATUS(status, NT_STATUS_OK);
 
 	printf("Testing netlogon server type flag NBT_SERVER_FOREST_ROOT: ");
 
 	ZERO_STRUCT(search);
-	search.in.dest_address = dest;
-	search.in.dest_port = lp_cldap_port(tctx->lp_ctx);
+	search.in.dest_address = NULL;
+	search.in.dest_port = 0;
 	search.in.acct_control = -1;
 	search.in.version = NETLOGON_NT_VERSION_5 | NETLOGON_NT_VERSION_5EX;
 	search.in.map_response = true;
@@ -467,14 +483,22 @@ static bool test_cldap_generic(struct torture_context *tctx, const char *dest)
 	const char *attrs1[] = { "currentTime", "highestCommittedUSN", NULL };
 	const char *attrs2[] = { "currentTime", "highestCommittedUSN", "netlogon", NULL };
 	const char *attrs3[] = { "netlogon", NULL };
+	struct tsocket_address *dest_addr;
+	int ret;
+
+	ret = tsocket_address_inet_from_strings(tctx, "ip",
+						dest,
+						lp_cldap_port(tctx->lp_ctx),
+						&dest_addr);
+	CHECK_VAL(ret, 0);
 
 	/* cldap_socket_init should now know about the dest. address */
-	status = cldap_socket_init(tctx, NULL, NULL, NULL, &cldap);
+	status = cldap_socket_init(tctx, NULL, NULL, dest_addr, &cldap);
 	CHECK_STATUS(status, NT_STATUS_OK);
 
 	ZERO_STRUCT(search);
-	search.in.dest_address = dest;
-	search.in.dest_port = lp_cldap_port(tctx->lp_ctx);
+	search.in.dest_address = NULL;
+	search.in.dest_port = 0;
 	search.in.timeout = 10;
 	search.in.retries = 3;
 
diff --git a/source4/torture/ldap/cldapbench.c b/source4/torture/ldap/cldapbench.c
index f77c0e0..a63c789 100644
--- a/source4/torture/ldap/cldapbench.c
+++ b/source4/torture/ldap/cldapbench.c
@@ -80,8 +80,8 @@ static bool bench_cldap_netlogon(struct torture_context *tctx, const char *addre
 	state->tctx = tctx;
 
 	ZERO_STRUCT(search);
-	search.in.dest_address = address;
-	search.in.dest_port	= lp_cldap_port(tctx->lp_ctx);
+	search.in.dest_address = NULL;
+	search.in.dest_port = 0;
 	search.in.acct_control = -1;
 	search.in.version = 6;
 
@@ -147,16 +147,24 @@ static bool bench_cldap_rootdse(struct torture_context *tctx, const char *addres
 	struct cldap_search search;
 	struct bench_state *state;
 	NTSTATUS status;
+	struct tsocket_address *dest_addr;
+	int ret;
+
+	ret = tsocket_address_inet_from_strings(tctx, "ip",
+						address,
+						lp_cldap_port(tctx->lp_ctx),
+						&dest_addr);
+	CHECK_VAL(ret, 0);
 
 	/* cldap_socket_init should now know about the dest. address */
-	status = cldap_socket_init(tctx, tctx->ev, NULL, NULL, &cldap);
+	status = cldap_socket_init(tctx, tctx->ev, NULL, dest_addr, &cldap);
 	torture_assert_ntstatus_ok(tctx, status, "cldap_socket_init");
 
 	state = talloc_zero(tctx, struct bench_state);
 
 	ZERO_STRUCT(search);
-	search.in.dest_address	= address;
-	search.in.dest_port	= lp_cldap_port(tctx->lp_ctx);
+	search.in.dest_address	= NULL;
+	search.in.dest_port	= 0;
 	search.in.filter	= "(objectClass=*)";
 	search.in.timeout	= 2;
 	search.in.retries	= 1;
diff --git a/source4/torture/rpc/dssync.c b/source4/torture/rpc/dssync.c
index 94a70ed..3f100f9 100644
--- a/source4/torture/rpc/dssync.c
+++ b/source4/torture/rpc/dssync.c
@@ -33,7 +33,8 @@
 #include "lib/ldb_wrap.h"
 #include "torture/rpc/rpc.h"
 #include "torture/drs/proto.h"
-
+#include "lib/tsocket/tsocket.h"
+#include "libcli/resolve/resolve.h"
 
 struct DsSyncBindInfo {
 	struct dcerpc_pipe *drs_pipe;
@@ -54,7 +55,7 @@ struct DsSyncTest {
 	
 	const char *ldap_url;
 	const char *site_name;
-	
+	const char *dest_address;
 	const char *domain_dn;
 
 	/* what we need to do as 'Administrator' */
@@ -86,6 +87,8 @@ static struct DsSyncTest *test_create_context(struct torture_context *tctx)
 	struct drsuapi_DsBindInfo28 *our_bind_info28;
 	struct drsuapi_DsBindInfoCtr *our_bind_info_ctr;
 	const char *binding = torture_setting_string(tctx, "binding", NULL);
+	struct nbt_name name;
+
 	ctx = talloc_zero(tctx, struct DsSyncTest);
 	if (!ctx) return NULL;
 
@@ -98,6 +101,17 @@ static struct DsSyncTest *test_create_context(struct torture_context *tctx)
 
 	ctx->ldap_url = talloc_asprintf(ctx, "ldap://%s", ctx->drsuapi_binding->host);
 
+	make_nbt_name_server(&name, ctx->drsuapi_binding->host);
+
+	/* do an initial name resolution to find its IP */
+	status = resolve_name(lp_resolve_context(tctx->lp_ctx), &name, tctx,
+			      &ctx->dest_address, tctx->ev);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("Failed to resolve %s - %s\n",
+		       name.name, nt_errstr(status));
+		return NULL;
+	}
+
 	/* ctx->admin ...*/
 	ctx->admin.credentials				= cmdline_credentials;
 
@@ -294,8 +308,21 @@ static bool test_GetInfo(struct torture_context *tctx, struct DsSyncTest *ctx)
 	bool ret = true;
 	struct cldap_socket *cldap;
 	struct cldap_netlogon search;
+	struct tsocket_address *dest_addr;
+	int ret2;
+
+	ret2 = tsocket_address_inet_from_strings(tctx, "ip",
+						 ctx->dest_address,
+						 lp_cldap_port(tctx->lp_ctx),
+						 &dest_addr);
+	if (ret2 != 0) {
+		printf("failed to create tsocket_address for '%s' port %u - %s\n",
+			ctx->drsuapi_binding->host, lp_cldap_port(tctx->lp_ctx),
+			strerror(errno));
+		return false;
+	}
 
-	status = cldap_socket_init(ctx, NULL, NULL, NULL, &cldap);
+	status = cldap_socket_init(ctx, NULL, NULL, dest_addr, &cldap);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("failed to setup cldap socket - %s\n",
 			nt_errstr(status));
@@ -333,8 +360,8 @@ static bool test_GetInfo(struct torture_context *tctx, struct DsSyncTest *ctx)
 	ctx->domain_dn = r.out.ctr->ctr1->array[0].result_name;
 	
 	ZERO_STRUCT(search);
-	search.in.dest_address = ctx->drsuapi_binding->host;
-	search.in.dest_port = lp_cldap_port(tctx->lp_ctx);
+	search.in.dest_address = NULL;
+	search.in.dest_port = 0;
 	search.in.acct_control = -1;
 	search.in.version		= NETLOGON_NT_VERSION_5 | NETLOGON_NT_VERSION_5EX;
 	search.in.map_response = true;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list