[SCM] Samba Shared Repository - branch master updated

Martin Schwenke martins at samba.org
Wed Feb 19 11:29:02 UTC 2020


The branch, master has been updated
       via  8441471d5dc autobuild: samba-ctdb does not need an AD DC
       via  cfb8e4de8f2 autobuild: Split a long line
       via  d4af16a16ca selftest: Run a clustered test
       via  dc0150801ca selftest:clusteredmember: Build a unclist for every share
       via  ebf67b6da7d autobuild: Run a simple test for clustered samba
       via  602f27d6a23 autobuild: Avoid clusteredmember in normal environments
       via  5ff7e2f213d selftest:Samba3: add a clusteredmember environment
       via  bb85a710e2b selftest: Split up a long line
       via  822604a112c selftest: net command needs to think it is root in clustered case
       via  c779dfe70f8 selftest: Allow passing fork_and_exec()'s child_cleanup
       via  154d7c8eaf7 selftest: Convert Samba3::check_or_start() to named parameters
       via  ff5dd4bb4fa selftest: Parameterize clean up in the child process
       via  586189ab698 selftest: Fix an uninitialised variable warning.
       via  4cd28d736ac selftest: Fix a warning message
       via  2a54c03af74 selftest: Add "share_dir" as an argument to Samba3::provision()
       via  7598b9069d3 selftest: Allow "netbios name" to be overriden in Samba3::provision()
       via  b36376fcf67 lib: Remove unneded #include malloc.h
       via  158bf58cf16 torture4: Align integer types
       via  b058c6d3ed1 torture4: Use strlcpy() with size check instead of snprintf()
       via  c9c0e69d17f smbd: Fix a typo
       via  2a5002d9688 lib: Fix rotating nonstandard debug class log files
      from  9ee1320049c s3: DFS: Remove is_msdfs_link_internal() - no longer used.

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


- Log -----------------------------------------------------------------
commit 8441471d5dca8657d8bb40e83096a4965818eb5c
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Feb 14 17:20:22 2020 +0100

    autobuild: samba-ctdb does not need an AD DC
    
    Speed up the build a bit
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>
    
    Autobuild-User(master): Martin Schwenke <martins at samba.org>
    Autobuild-Date(master): Wed Feb 19 11:28:56 UTC 2020 on sn-devel-184

commit cfb8e4de8f2532cb0cf6bbe947727f0a2d1cfeb2
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Feb 14 17:19:46 2020 +0100

    autobuild: Split a long line
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit d4af16a16ca7d5a5de1f30991adc2ed2fd9a92c6
Author: Martin Schwenke <martin at meltin.net>
Date:   Fri Feb 14 16:58:51 2020 +0100

    selftest: Run a clustered test
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit dc0150801caef3a8080329ad69d8e10fd66e27df
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Feb 4 19:44:11 2020 +1100

    selftest:clusteredmember: Build a unclist for every share
    
    This is fairly cheap and it is simple to do.  This allows the Python
    code to be able to specify a unclist quite simply.  The level of
    coupling doesn't seem worse than anything else in the
    selftest/autobuild code.
    
    There may be cleverer ways of doing this (e.g. a wrapper in
    testprogs/blackbox/clusteredmember_smbtorture or similar) but cleverer
    code isn't necessarily better code... and they'll probably involve
    code duplication.
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Volker Lendecke <vl at samba.org>

commit ebf67b6da7d5dc31bc1546cde4ef0dca14151aad
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Oct 16 13:56:14 2018 +0200

    autobuild: Run a simple test for clustered samba
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 602f27d6a2326aa71b91cbf1eaae16d8a8fc4d52
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Jan 28 10:18:37 2020 +0100

    autobuild: Avoid clusteredmember in normal environments
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 5ff7e2f213df6e754ffca014f7997a2faae61c7c
Author: Michael Adam <obnox at samba.org>
Date:   Tue Jul 12 13:12:24 2016 +0200

    selftest:Samba3: add a clusteredmember environment
    
    Allow running tests against a CTDB setup, thereby covering the
    dbrwap_ctdb->ctdb stack in real SMB tests.
    
    Sets up a 3 node cluster.
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit bb85a710e2bb0509deafd27293c6064c4a382819
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Aug 22 17:24:38 2018 +0200

    selftest: Split up a long line
    
    We'll add another argument soon
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 822604a112cc769320c813548f96769589d19b6c
Author: Martin Schwenke <martin at meltin.net>
Date:   Fri Jan 17 09:42:19 2020 +1100

    selftest: net command needs to think it is root in clustered case
    
    So just run it "as root" all the time.
    
    Something similar is already done for other things in
    Samba3::provision(), such as running smbpasswd in
    Samba3::createuser().
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Volker Lendecke <vl at samba.org>

commit c779dfe70f8854a502b88a99b035550edf35a447
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 30 16:06:48 2020 +0100

    selftest: Allow passing fork_and_exec()'s child_cleanup
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 154d7c8eaf7dea33657bfb9f4de8e1882178758f
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 30 16:01:09 2020 +0100

    selftest: Convert Samba3::check_or_start() to named parameters
    
    Another parameter will be added soon.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit ff5dd4bb4facf7bf37b0ea2d16787bfc3268dd03
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 30 15:49:59 2020 +0100

    selftest: Parameterize clean up in the child process
    
    Default to closing the write end of the parent->child pipe.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 586189ab69850dc292cea874f6a115851323a57c
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Feb 6 17:57:32 2020 +1100

    selftest: Fix an uninitialised variable warning.
    
    If $nmbd is not "yes" then this can result in a warning.
    
    Introduced in commit 676261fa08273114b888bb46f65de3de091b615b.
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Volker Lendecke <vl at samba.org>

commit 4cd28d736ac33b73ed936f687e6b10689d68c614
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 16 13:23:40 2020 +0100

    selftest: Fix a warning message
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 2a54c03af747a0baa7db1af94f16c60051bae90d
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Jan 27 14:16:30 2020 +0100

    selftest: Add "share_dir" as an argument to Samba3::provision()
    
    Default to the previous value
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 7598b9069d3b983f8eb3b89b8459ec993ee43c80
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Jan 24 11:55:36 2020 +0100

    selftest: Allow "netbios name" to be overriden in Samba3::provision()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit b36376fcf67da5b1c5d7f8dbea32cb82b99d04bd
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Feb 11 21:20:32 2020 +0100

    lib: Remove unneded #include malloc.h
    
    We do the mallinfo() call in talloc_report_printf.c now
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 158bf58cf163c1157fb59cb0d9c766ed5ca4e98a
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Feb 10 21:48:00 2020 +0100

    torture4: Align integer types
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit b058c6d3ed1bcc28ac02265d345cbda9a1df66a4
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Feb 10 21:45:00 2020 +0100

    torture4: Use strlcpy() with size check instead of snprintf()
    
    It's just test code, but we should give good examples where possible
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit c9c0e69d17f401aea1cbc208be982f3e23536607
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Feb 13 17:08:16 2020 +0100

    smbd: Fix a typo
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 2a5002d9688ff679dd28a4abc8741edf96ecf342
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Feb 13 16:44:38 2020 +0100

    lib: Fix rotating nonstandard debug class log files
    
    Looking at the same pointer in the loop does not really make sense to
    me
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

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

Summary of changes:
 lib/util/debug.c                            |   2 +-
 script/autobuild.py                         |  16 +-
 selftest/target/Samba.pm                    |  16 +-
 selftest/target/Samba3.pm                   | 569 ++++++++++++++++++++++++++--
 source3/lib/tallocmsg.c                     |   3 -
 source3/selftest/tests.py                   |  30 ++
 source3/smbd/server.c                       |   2 +-
 source4/torture/libsmbclient/libsmbclient.c |  18 +-
 8 files changed, 619 insertions(+), 37 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/util/debug.c b/lib/util/debug.c
index 6f081d45110..d7449c5c690 100644
--- a/lib/util/debug.c
+++ b/lib/util/debug.c
@@ -1147,7 +1147,7 @@ bool reopen_logs_internal(void)
 	oldumask = umask( 022 );
 
 	for (i = DBGC_ALL; i < debug_num_classes; i++) {
-		if (dbgc_config[DBGC_ALL].logfile != NULL) {
+		if (dbgc_config[i].logfile != NULL) {
 			break;
 		}
 	}
diff --git a/script/autobuild.py b/script/autobuild.py
index f5cf2a85ca0..68ce850740e 100755
--- a/script/autobuild.py
+++ b/script/autobuild.py
@@ -234,6 +234,7 @@ tasks = {
             "ad_dc_slowtests",
             "schema_pair_dc",
             "schema_dc",
+            "clusteredmember",
             ])),
         ("lcov", LCOV_CMD),
         ("install", "make install"),
@@ -285,6 +286,7 @@ tasks = {
             "ad_dc_slowtests",
             "schema_pair_dc",
             "schema_dc",
+            "clusteredmember",
             ])),
         ("lcov", LCOV_CMD),
         ("install", "make install"),
@@ -558,12 +560,24 @@ tasks = {
         ("tdb-install", "cd lib/tdb && make install"),
 
         # build samba with cluster support (also building ctdb):
-        ("samba-configure", "PYTHONPATH=${PYTHON_PREFIX}:$PYTHONPATH PKG_CONFIG_PATH=${PREFIX_DIR}/lib/pkgconfig:${PKG_CONFIG_PATH} ./configure.developer ${PREFIX} --with-selftest-prefix=./bin/ab --with-cluster-support --bundled-libraries=!tdb"),
+        ("samba-configure",
+         "PYTHONPATH=${PYTHON_PREFIX}:$PYTHONPATH "
+         "PKG_CONFIG_PATH=${PREFIX_DIR}/lib/pkgconfig:${PKG_CONFIG_PATH} "
+         "./configure.developer ${PREFIX} "
+         "--with-selftest-prefix=./bin/ab "
+         "--with-cluster-support "
+         "--without-ad-dc "
+         "--bundled-libraries=!tdb"),
         ("samba-make", "make"),
         ("samba-check", "./bin/smbd -b | grep CLUSTER_SUPPORT"),
         ("samba-install", "make install"),
         ("ctdb-check", "test -e ${PREFIX_DIR}/sbin/ctdbd"),
 
+        ("test",
+         make_test(cmd='make test',
+                   include_envs=["clusteredmember"])
+        ),
+
         # clean up:
         ("check-clean-tree", "script/clean-source-tree.sh"),
         ("clean", "make clean"),
diff --git a/selftest/target/Samba.pm b/selftest/target/Samba.pm
index 26b838981f6..5a20311ea88 100644
--- a/selftest/target/Samba.pm
+++ b/selftest/target/Samba.pm
@@ -527,6 +527,9 @@ sub get_interface($)
 		proclimitdc       => 47,
 		liveupgrade1dc    => 48,
 		liveupgrade2dc    => 49,
+		ctdb0             => 50,
+		ctdb1             => 51,
+		ctdb2             => 52,
 
 		rootdnsforwarder  => 64,
 
@@ -672,10 +675,16 @@ sub get_env_for_process
 
 sub fork_and_exec
 {
-	my ($self, $env_vars, $daemon_ctx, $STDIN_READER) = @_;
+	my ($self, $env_vars, $daemon_ctx, $STDIN_READER, $child_cleanup) = @_;
 	my $SambaCtx = $self;
 	$SambaCtx = $self->{SambaCtx} if defined($self->{SambaCtx});
 
+	# we close the child's write-end of the pipe and redirect the
+	# read-end to its stdin. That way the daemon will receive an
+	# EOF on stdin when parent selftest process closes its
+	# write-end.
+	$child_cleanup //= sub { close($env_vars->{STDIN_PIPE}) };
+
 	unlink($daemon_ctx->{LOG_FILE});
 	print "STARTING $daemon_ctx->{NAME} for $ENV{ENVNAME}...";
 
@@ -706,10 +715,7 @@ sub fork_and_exec
 		set_env_for_process($daemon_ctx->{NAME}, $env_vars,
 				    $daemon_ctx->{ENV_VARS});
 
-		# we close the child's write-end of the pipe and redirect the read-end
-		# to its stdin. That way the daemon will receive an EOF on stdin when
-		# parent selftest process closes its write-end.
-		close($env_vars->{STDIN_PIPE});
+		$child_cleanup->();
 
 		# not all s3 daemons run in all testenvs (e.g. fileserver doesn't
 		# run winbindd). In which case, the child process just sleeps
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 08d51bbd57c..5a23715b199 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -66,6 +66,19 @@ sub new($$) {
 }
 
 sub teardown_env($$)
+{
+	my ($self, $envvars) = @_;
+
+	if (defined($envvars->{CTDB_PREFIX})) {
+		$self->teardown_env_ctdb($envvars);
+	} else {
+		$self->teardown_env_samba($envvars);
+	}
+
+	return;
+}
+
+sub teardown_env_samba($$)
 {
 	my ($self, $envvars) = @_;
 	my $count = 0;
@@ -125,6 +138,31 @@ sub teardown_env($$)
 	return 0;
 }
 
+sub teardown_env_ctdb($$)
+{
+	my ($self, $data) = @_;
+
+	if (defined($data->{SAMBA_NODES})) {
+		my $num_nodes = $data->{NUM_NODES};
+		my $nodes = $data->{SAMBA_NODES};
+
+		for (my $i = 0; $i < $num_nodes; $i++) {
+			if (defined($nodes->[$i])) {
+				$self->teardown_env_samba($nodes->[$i]);
+			}
+		}
+	}
+
+	close($data->{CTDB_STDIN_PIPE});
+
+	if (not defined($data->{SAMBA_NODES})) {
+		# Give waiting children time to exit
+		sleep(5);
+	}
+
+	return 0;
+}
+
 sub getlog_env_app($$$)
 {
 	my ($self, $envvars, $name) = @_;
@@ -187,6 +225,8 @@ sub check_env($$)
 	ad_member_rfc2307   => ["ad_dc_ntvfs"],
 	ad_member_idmap_rid => ["ad_dc"],
 	ad_member_idmap_ad  => ["fl2008r2dc"],
+
+	clusteredmember     => ["nt4_dc"],
 );
 
 %Samba3::ENV_DEPS_POST = ();
@@ -230,7 +270,11 @@ sub setup_nt4_dc
 
 	$vars or return undef;
 
-	if (not $self->check_or_start($vars, "yes", "yes", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $vars,
+		nmbd => "yes",
+		winbindd => "yes",
+		smbd => "yes")) {
 	       return undef;
 	}
 
@@ -281,7 +325,11 @@ sub setup_nt4_dc_schannel
 
 	$vars or return undef;
 
-	if (not $self->check_or_start($vars, "yes", "yes", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $vars,
+		nmbd => "yes",
+		winbindd => "yes",
+		smbd => "yes")) {
 	       return undef;
 	}
 
@@ -362,7 +410,11 @@ sub setup_nt4_member
 	    return undef;
 	}
 
-	if (not $self->check_or_start($ret, "yes", "yes", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $ret,
+		nmbd => "yes",
+		winbindd => "yes",
+		smbd => "yes")) {
 	       return undef;
 	}
 
@@ -377,6 +429,183 @@ sub setup_nt4_member
 	return $ret;
 }
 
+sub setup_clusteredmember
+{
+	my ($self, $prefix, $nt4_dc_vars) = @_;
+	my $count = 0;
+	my $rc;
+	my @retvals = ();
+	my $ret;
+
+	print "PROVISIONING CLUSTEREDMEMBER...\n";
+
+	my $prefix_abs = abs_path($prefix);
+	mkdir($prefix_abs, 0777);
+
+	my $server_name = "CLUSTEREDMEMBER";
+
+	my $ctdb_data = $self->setup_ctdb($prefix);
+
+	if (not $ctdb_data) {
+		print "No ctdb data\n";
+		return undef;
+	}
+
+	print "PROVISIONING CLUSTERED SAMBA...\n";
+
+	my $num_nodes = $ctdb_data->{NUM_NODES};
+	my $nodes = $ctdb_data->{CTDB_NODES};
+
+	# Enable cleanup of earlier nodes if a later node fails
+	$ctdb_data->{SAMBA_NODES} = \@retvals;
+
+	for (my $i = 0; $i < $num_nodes; $i++) {
+		my $node = $nodes->[$i];
+		my $socket = $node->{SOCKET_FILE};
+		my $server_name = $node->{SERVER_NAME};
+		my $pub_iface = $node->{SOCKET_WRAPPER_DEFAULT_IFACE};
+		my $node_prefix = $node->{NODE_PREFIX};
+
+		print "NODE_PREFIX=${node_prefix}\n";
+		print "SOCKET=${socket}\n";
+
+		my $require_mutexes = "dbwrap_tdb_require_mutexes:* = yes";
+		if ($ENV{SELFTEST_DONT_REQUIRE_TDB_MUTEX_SUPPORT} // '' eq "1") {
+			$require_mutexes = "" ;
+		}
+
+		my $member_options = "
+       security = domain
+       server signing = on
+       clustering = yes
+       ctdbd socket = ${socket}
+       dbwrap_tdb_mutexes:* = yes
+       ${require_mutexes}
+";
+
+		my $node_ret = $self->provision(
+		    prefix => "$node_prefix",
+		    domain => $nt4_dc_vars->{DOMAIN},
+		    server => "$server_name",
+		    password => "clustermember8pass",
+		    netbios_name => "CLUSTEREDMEMBER",
+		    share_dir => "${prefix_abs}/shared",
+		    extra_options => $member_options,
+		    no_delete_prefix => 1);
+		if (not $node_ret) {
+			print "Provision node $i failed\n";
+			teardown_env($self, $ctdb_data);
+			return undef;
+		}
+
+		my $nmblookup = Samba::bindir_path($self, "nmblookup");
+		do {
+			print "Waiting for the LOGON SERVER registration ...\n";
+			$rc = system("$nmblookup $node_ret->{CONFIGURATION} " .
+				     "$node_ret->{DOMAIN}\#1c");
+			if ($rc != 0) {
+				sleep(1);
+			}
+			$count++;
+		} while ($rc != 0 && $count < 10);
+
+		if ($count == 10) {
+			print "NMBD not reachable after 10 retries\n";
+			teardown_env($self, $node_ret);
+			teardown_env($self, $ctdb_data);
+			return undef;
+		}
+
+		push(@retvals, $node_ret);
+	}
+
+	$ret = {%$ctdb_data, %{$retvals[0]}};
+
+	my $net = Samba::bindir_path($self, "net");
+	my $cmd = "";
+	$cmd .= "UID_WRAPPER_ROOT=1 ";
+	$cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" ";
+	$cmd .= "SELFTEST_WINBINDD_SOCKET_DIR=\"$ret->{SELFTEST_WINBINDD_SOCKET_DIR}\" ";
+	$cmd .= "$net join $ret->{CONFIGURATION} $nt4_dc_vars->{DOMAIN} member";
+	$cmd .= " -U$nt4_dc_vars->{USERNAME}\%$nt4_dc_vars->{PASSWORD}";
+
+	if (system($cmd) != 0) {
+		warn("Join failed\n$cmd");
+		teardown_env($self, $ret);
+		return undef;
+	}
+
+	for (my $i=0; $i<@retvals; $i++) {
+		my $node_provision = $retvals[$i];
+		my $ok;
+		$ok = $self->check_or_start(
+		    env_vars => $node_provision,
+		    winbindd => "yes",
+		    smbd => "yes",
+		    child_cleanup => sub {
+			map {
+			    my $fh = $_->{STDIN_PIPE};
+			    close($fh) if defined($fh);
+			} @retvals });
+		if (not $ok) {
+			teardown_env($self, $ret);
+			return undef;
+		}
+	}
+
+	#
+	# Build a unclist for every share
+	#
+	unless (open(NODES, "<$ret->{CTDB_NODES_FILE}")) {
+		warn("Unable to open CTDB nodes file");
+		teardown_env($self, $ret);
+		return undef;
+	}
+	my @nodes = <NODES>;
+	close(NODES);
+	chomp @nodes;
+
+	my $conffile = $ret->{SERVERCONFFILE};
+	$cmd = "";
+	$cmd .= 'sed -n -e \'s|^\[\(.*\)\]$|\1|p\'';
+	$cmd .= " \"$conffile\"";
+	$cmd .= " | grep -vx 'global'";
+
+	my @shares = `$cmd`;
+	$rc = $?;
+	if ($rc != 0) {
+		warn("Listing shares failed\n$cmd");
+		teardown_env($self, $ret);
+		return undef;
+	}
+	chomp @shares;
+
+	my $unclistdir = "${prefix_abs}/unclists";
+	mkdir($unclistdir, 0777);
+	foreach my $share (@shares) {
+		my $l = "${unclistdir}/${share}.txt";
+		unless (open(UNCLIST, ">${l}")) {
+			warn("Unable to open UNC list ${l}");
+			teardown_env($self, $ret);
+			return undef;
+		}
+		foreach my $node (@nodes) {
+			print UNCLIST "//${node}/${share}\n";
+		}
+		close(UNCLIST);
+	}
+
+	$ret->{DOMSID} = $nt4_dc_vars->{DOMSID};
+	$ret->{DC_SERVER} = $nt4_dc_vars->{SERVER};
+	$ret->{DC_SERVER_IP} = $nt4_dc_vars->{SERVER_IP};
+	$ret->{DC_SERVER_IPV6} = $nt4_dc_vars->{SERVER_IPV6};
+	$ret->{DC_NETBIOSNAME} = $nt4_dc_vars->{NETBIOSNAME};
+	$ret->{DC_USERNAME} = $nt4_dc_vars->{USERNAME};
+	$ret->{DC_PASSWORD} = $nt4_dc_vars->{PASSWORD};
+
+	return $ret;
+}
+
 sub setup_ad_member
 {
 	my ($self, $prefix, $dcvars, $trustvars_f, $trustvars_e) = @_;
@@ -495,7 +724,11 @@ sub setup_ad_member
 	# access the share for tests.
 	chmod 0777, "$prefix/share";
 
-	if (not $self->check_or_start($ret, "yes", "yes", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $ret,
+		nmbd => "yes",
+		winbindd => "yes",
+		smbd => "yes")) {
 		return undef;
 	}
 
@@ -614,7 +847,11 @@ sub setup_ad_member_rfc2307
 	# access the share for tests.
 	chmod 0777, "$prefix/share";
 
-	if (not $self->check_or_start($ret, "yes", "yes", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $ret,
+		nmbd => "yes",
+		winbindd => "yes",
+		smbd => "yes")) {
 		return undef;
 	}
 
@@ -708,7 +945,11 @@ sub setup_ad_member_idmap_rid
 	# access the share for tests.
 	chmod 0777, "$prefix/share";
 
-	if (not $self->check_or_start($ret, "yes", "yes", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $ret,
+		nmbd => "yes",
+		winbindd => "yes",
+		smbd => "yes")) {
 		return undef;
 	}
 
@@ -801,7 +1042,11 @@ sub setup_ad_member_idmap_ad
 	# access the share for tests.
 	chmod 0777, "$prefix/share";
 
-	if (not $self->check_or_start($ret, "yes", "yes", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $ret,
+		nmbd => "yes",
+		winbindd => "yes",
+		smbd => "yes")) {
 		return undef;
 	}
 
@@ -918,7 +1163,10 @@ sub setup_simpleserver
 
 	$vars or return undef;
 
-	if (not $self->check_or_start($vars, "yes", "no", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $vars,
+		nmbd => "yes",
+		smbd => "yes")) {
 	       return undef;
 	}
 
@@ -1104,7 +1352,10 @@ sub setup_fileserver
 
 	$vars or return undef;
 
-	if (not $self->check_or_start($vars, "yes", "no", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $vars,
+		nmbd => "yes",
+		smbd => "yes")) {
 	       return undef;
 	}
 
@@ -1255,7 +1506,10 @@ $ret->{USERNAME} = KTEST\\Administrator
 	# access the share for tests.
 	chmod 0777, "$prefix/share";
 
-	if (not $self->check_or_start($ret, "yes", "no", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $ret,
+		nmbd => "yes",
+		smbd => "yes")) {
 	       return undef;
 	}
 	return $ret;
@@ -1281,7 +1535,10 @@ ntlm auth = yes
 
 	$vars or return undef;
 
-	if (not $self->check_or_start($vars, "yes", "no", "yes")) {
+	if (not $self->check_or_start(
+		env_vars => $vars,
+		nmbd => "yes",
+		smbd => "yes")) {
 	       return undef;
 	}
 
@@ -1341,8 +1598,14 @@ sub make_bin_cmd
 	return (@preargs, $binary, @args, @optargs);
 }
 
-sub check_or_start($$$$$) {
-	my ($self, $env_vars, $nmbd, $winbindd, $smbd) = @_;
+sub check_or_start($$) {
+	my ($self, %args) = @_;
+	my $env_vars = $args{env_vars};


-- 
Samba Shared Repository



More information about the samba-cvs mailing list