[SCM] Samba Shared Repository - branch master updated
Andrew Tridgell
tridge at samba.org
Thu Nov 25 19:53:02 MST 2010
The branch, master has been updated
via bf52cff s4-kcc: fixed valgrind errors in drs replicaInfo server side
via 5e8cb67 s4-provision: fixed eadb automatic and manual setting in provision
via cfa7510 wintest: do an initial replication of CN=Configuration to transfer dnsHostname
via 23bffff wintest: fixed "rndc command" option in provision
via 9409b73 wintest: make IPv6 optional in wintest
via eeb29b5 s4-provision: don't try to look for an IPv6 address when not specified
from e52ba1f librpc: fix builds without IPv6 suport (HP-UX 11.00)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit bf52cffd2587615243a7101868a9038d9aa1b0c2
Author: Andrew Tridgell <tridge at samba.org>
Date: Fri Nov 26 12:38:06 2010 +1100
s4-kcc: fixed valgrind errors in drs replicaInfo server side
Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>
Autobuild-User: Andrew Tridgell <tridge at samba.org>
Autobuild-Date: Fri Nov 26 03:52:30 CET 2010 on sn-devel-104
commit 5e8cb67605367ffd9dd2a8624df90f2ca5e77fc4
Author: Andrew Tridgell <tridge at samba.org>
Date: Fri Nov 26 12:10:55 2010 +1100
s4-provision: fixed eadb automatic and manual setting in provision
we should not set posix:eadb in lp in the acl native test code
Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>
commit cfa7510e19b5e593af8c4da6e89b6a99adfe8b2b
Author: Andrew Tridgell <tridge at samba.org>
Date: Fri Nov 26 11:36:29 2010 +1100
wintest: do an initial replication of CN=Configuration to transfer dnsHostname
this fixes the drs replication in the dcpromo test
commit 23bffff98c7d1bd700509bb3fa6eaca3e1524096
Author: Andrew Tridgell <tridge at samba.org>
Date: Fri Nov 26 11:33:49 2010 +1100
wintest: fixed "rndc command" option in provision
we need to point at the generated rndc.conf
Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>
commit 9409b73290bdbfc82b75c4af8a22ca1ed6165e2a
Author: Andrew Tridgell <tridge at samba.org>
Date: Fri Nov 26 11:33:10 2010 +1100
wintest: make IPv6 optional in wintest
we need some more work on IPv6 support in s4 before this works
commit eeb29b593a671e16f87e64f01abea47ec898ba77
Author: Andrew Tridgell <tridge at samba.org>
Date: Fri Nov 26 10:20:03 2010 +1100
s4-provision: don't try to look for an IPv6 address when not specified
the getaddrinfo() method of finding an IPv6 address is incorrect. We
could do it via the Samba interfaces code, but until we have that it
is better to not try to auto-detect IPv6
Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source4/dsdb/kcc/kcc_drs_replica_info.c | 12 +++-----
source4/scripting/python/samba/ntacls.py | 31 ++++++++++-----------
source4/scripting/python/samba/provision.py | 13 +--------
source4/setup/provision | 6 +---
wintest/conf/abartlet.conf | 1 -
wintest/conf/tridge.conf | 1 -
wintest/test-s4-howto.py | 40 ++++++++++++++++++++-------
7 files changed, 53 insertions(+), 51 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source4/dsdb/kcc/kcc_drs_replica_info.c b/source4/dsdb/kcc/kcc_drs_replica_info.c
index e2e49b8..1da3ecd 100644
--- a/source4/dsdb/kcc/kcc_drs_replica_info.c
+++ b/source4/dsdb/kcc/kcc_drs_replica_info.c
@@ -418,13 +418,9 @@ static WERROR get_master_ncs(TALLOC_CTX *mem_ctx, struct ldb_context *samdb,
}
for (k = 0; k < msg_elem->num_values; k++) {
- int len = msg_elem->values[k].length;
-
/* copy the string on msg_elem->values[k]->data to nc_str */
- nc_str = talloc_array(mem_ctx, char, len);
+ nc_str = talloc_strndup(mem_ctx, (char *)msg_elem->values[k].data, msg_elem->values[k].length);
W_ERROR_HAVE_NO_MEMORY(nc_str);
- memcpy(nc_str, msg_elem->values[k].data, len);
- nc_str[len] = '\0';
nc_list_elem = talloc_zero(mem_ctx, struct ncList);
W_ERROR_HAVE_NO_MEMORY(nc_list_elem);
@@ -584,7 +580,6 @@ static WERROR kccdrs_replica_get_info_neighbours(TALLOC_CTX *mem_ctx,
struct repsFromTo2 *reps_from = NULL;
uint32_t c_reps_from;
uint32_t i_rep;
- struct drsuapi_DsReplicaNeighbour neigh;
struct ncList *nc_list = NULL;
status = get_ncs_list(mem_ctx, samdb, service, object_dn_str, &nc_list);
@@ -624,6 +619,8 @@ static WERROR kccdrs_replica_get_info_neighbours(TALLOC_CTX *mem_ctx,
{
if (i >= base_index) {
+ struct drsuapi_DsReplicaNeighbour neigh;
+ ZERO_STRUCT(neigh);
status = fill_neighbor_from_repsFrom(mem_ctx, samdb,
nc_dn, &neigh,
reps_from);
@@ -702,7 +699,6 @@ static WERROR kccdrs_replica_get_info_repsto(TALLOC_CTX *mem_ctx,
struct repsFromTo2 *reps_to;
uint32_t c_reps_to;
uint32_t i_rep;
- struct drsuapi_DsReplicaNeighbour neigh;
struct ncList *nc_list = NULL;
status = get_ncs_list(mem_ctx, samdb, service, object_dn_str, &nc_list);
@@ -726,6 +722,8 @@ static WERROR kccdrs_replica_get_info_repsto(TALLOC_CTX *mem_ctx,
/* foreach r in nc!repsTo */
for (i_rep = 0; i_rep < c_reps_to; i_rep++) {
+ struct drsuapi_DsReplicaNeighbour neigh;
+ ZERO_STRUCT(neigh);
/* put all info on reps_to */
if (reps_to_blob[i_rep].version == 1) {
diff --git a/source4/scripting/python/samba/ntacls.py b/source4/scripting/python/samba/ntacls.py
index 9bf5cfe..4f1c922 100644
--- a/source4/scripting/python/samba/ntacls.py
+++ b/source4/scripting/python/samba/ntacls.py
@@ -28,23 +28,23 @@ class XattrBackendError(Exception):
def checkset_backend(lp, backend, eadbfile):
- # if posix:eadb is set, then force the backend
- if backend is not None:
- if backend == "native":
- lp.set("posix:eadb", "")
- elif backend == "tdb":
- if eadbfile is not None:
- lp.set("posix:eadb", eadbfile)
- else:
- os.path.abspath(os.path.join(lp.get("private dir"), "eadb.tdb"))
+ '''return the path to the eadb, or None'''
+ if backend is None:
+ return lp.get("posix:eadb")
+ elif backend == "native":
+ return None
+ elif backend == "tdb":
+ if eadbfile is not None:
+ return eadbfile
else:
- raise XattrBackendError("Invalid xattr backend choice %s"%backend)
+ return os.path.abspath(os.path.join(lp.get("private dir"), "eadb.tdb"))
+ else:
+ raise XattrBackendError("Invalid xattr backend choice %s"%backend)
def getntacl(lp, file, backend=None, eadbfile=None):
- checkset_backend(lp, backend, eadbfile)
- eadbname = lp.get("posix:eadb")
- if eadbname is not None and eadbname != "":
+ eadbname = checkset_backend(lp, backend, eadbfile)
+ if eadbname is not None:
try:
attribute = samba.xattr_tdb.wrap_getxattr(eadbname, file,
xattr.XATTR_NTACL_NAME)
@@ -62,14 +62,13 @@ def getntacl(lp, file, backend=None, eadbfile=None):
def setntacl(lp, file, sddl, domsid, backend=None, eadbfile=None):
- checkset_backend(lp, backend, eadbfile)
+ eadbname = checkset_backend(lp, backend, eadbfile)
ntacl = xattr.NTACL()
ntacl.version = 1
sid = security.dom_sid(domsid)
sd = security.descriptor.from_sddl(sddl, sid)
ntacl.info = sd
- eadbname = lp.get("posix:eadb")
- if eadbname is not None and eadbname != "":
+ if eadbname is not None:
try:
samba.xattr_tdb.wrap_setxattr(eadbname,
file, xattr.XATTR_NTACL_NAME, ndr_pack(ntacl))
diff --git a/source4/scripting/python/samba/provision.py b/source4/scripting/python/samba/provision.py
index cb1e8bd..b5f37b5 100644
--- a/source4/scripting/python/samba/provision.py
+++ b/source4/scripting/python/samba/provision.py
@@ -590,7 +590,7 @@ def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
#Load non-existant file
if os.path.exists(smbconf):
lp.load(smbconf)
- if eadb:
+ if eadb and not lp.get("posix:eadb"):
if targetdir is not None:
privdir = os.path.join(targetdir, "private")
else:
@@ -1484,17 +1484,6 @@ def provision(setup_dir, logger, session_info,
if len(hostips) > 1:
logger.warning("More than one IPv4 address found. Using %s.", hostip)
- if hostip6 is None:
- try:
- logger.info("Looking up IPv6 address for %s" % names.hostname)
- for ip in socket.getaddrinfo(names.hostname, None, socket.AF_INET6, socket.AI_CANONNAME, socket.IPPROTO_IP):
- if hostip6 is None:
- hostip6 = ip[-1][0]
- if hostip6 == '::1' and ip[-1][0] != '::1':
- hostip6 = ip[-1][0]
- except socket.gaierror, (socket.EAI_NODATA, msg):
- hostip6 = None
-
if serverrole is None:
serverrole = lp.get("server role")
diff --git a/source4/setup/provision b/source4/setup/provision
index 303fd32..18142ad 100755
--- a/source4/setup/provision
+++ b/source4/setup/provision
@@ -225,10 +225,8 @@ elif opts.use_xattrs == "auto" and not lp.get("posix:eadb"):
"O:S-1-5-32G:S-1-5-32", "S-1-5-32", "native")
eadb = False
except:
- # XXX: Should catch a specific exception here
- if lp.get("posix:eadb") is None:
- logger.info("You are not root or your system do not support xattr, using tdb backend for attributes. "
- "If you intend to use this provision in production, rerun the script as root on a system supporting xattrs.")
+ logger.info("You are not root or your system do not support xattr, using tdb backend for attributes. "
+ "If you intend to use this provision in production, rerun the script as root on a system supporting xattrs.")
file.close()
diff --git a/wintest/conf/abartlet.conf b/wintest/conf/abartlet.conf
index 3fa4501..f775c81 100644
--- a/wintest/conf/abartlet.conf
+++ b/wintest/conf/abartlet.conf
@@ -19,7 +19,6 @@ INTERFACE : virbr0:0
# this is an additional IP that will be used for named to listen
# on. It should not be the primary IP of the interface
INTERFACE_IP : 192.168.122.2
-INTERFACE_IPV6 : 3ffe:ffff:0:f101::3
INTERFACE_NET : 192.168.122.2/24
# how to run bind9
diff --git a/wintest/conf/tridge.conf b/wintest/conf/tridge.conf
index a2bad63..1c7ed0b 100644
--- a/wintest/conf/tridge.conf
+++ b/wintest/conf/tridge.conf
@@ -19,7 +19,6 @@ INTERFACE : virbr0:0
# this is an additional IP that will be used for named to listen
# on. It should not be the primary IP of the interface
INTERFACE_IP : 10.0.0.2
-INTERFACE_IPV6 : 3ffe:ffff:0:f101::3
INTERFACE_NET : 10.0.0.2/24
# how to run bind9
diff --git a/wintest/test-s4-howto.py b/wintest/test-s4-howto.py
index d12968c..c05d084 100755
--- a/wintest/test-s4-howto.py
+++ b/wintest/test-s4-howto.py
@@ -13,8 +13,9 @@ def check_prerequesites(t):
raise Exception("You must run this script as root")
t.putenv("KRB5_CONFIG", '${PREFIX}/private/krb5.conf')
t.run_cmd('ifconfig ${INTERFACE} ${INTERFACE_NET} up')
- t.run_cmd('ifconfig ${INTERFACE} inet6 del ${INTERFACE_IPV6}/64', checkfail=False)
- t.run_cmd('ifconfig ${INTERFACE} inet6 add ${INTERFACE_IPV6}/64 up')
+ if t.getvar('INTERFACE_IPV6'):
+ t.run_cmd('ifconfig ${INTERFACE} inet6 del ${INTERFACE_IPV6}/64', checkfail=False)
+ t.run_cmd('ifconfig ${INTERFACE} inet6 add ${INTERFACE_IPV6}/64 up')
def build_s4(t):
@@ -34,11 +35,20 @@ def provision_s4(t, func_level="2008"):
t.chdir('${PREFIX}')
t.del_files(["var", "private"])
t.run_cmd("rm -f etc/smb.conf")
- options=' --function-level=%s -d${DEBUGLEVEL}' % func_level
- options += ' --option=interfaces="${INTERFACE} ${INTERFACE_IPV6}"'
- options += ' --host-ip=${INTERFACE_IP} --host-ip6=${INTERFACE_IPV6}'
- options += ' --option=bindinterfacesonly=yes'
- t.run_cmd('sbin/provision --realm=${LCREALM} --domain=${DOMAIN} --adminpass=${PASSWORD1} --server-role="domain controller"' + options)
+ provision=['sbin/provision',
+ '--realm=${LCREALM}',
+ '--domain=${DOMAIN}',
+ '--adminpass=${PASSWORD1}',
+ '--server-role=domain controller',
+ '--function-level=%s' % func_level,
+ '-d${DEBUGLEVEL}',
+ '--option=interfaces=${INTERFACE}',
+ '--host-ip=${INTERFACE_IP}',
+ '--option=bind interfaces only=yes',
+ '--option=rndc command=${RNDC} -c${PREFIX}/etc/rndc.conf']
+ if t.getvar('INTERFACE_IPV6'):
+ provision.append('--host-ip6=${INTERFACE_IPV6}')
+ t.run_cmd(provision)
t.run_cmd('bin/samba-tool newuser testallowed ${PASSWORD1}')
t.run_cmd('bin/samba-tool newuser testdenied ${PASSWORD1}')
t.run_cmd('bin/samba-tool group addmembers "Allowed RODC Password Replication Group" testallowed')
@@ -133,10 +143,16 @@ def restart_bind(t):
raise RuntimeError("old /etc/resolv.conf must not contain %s as a nameserver, this will create loops with the generated dns configuration" % nameserver)
t.setvar('DNSSERVER', nameserver)
+ if t.getvar('INTERFACE_IPV6'):
+ ipv6_listen = 'listen-on-v6 port 53 { ${INTERFACE_IPV6}; };'
+ else:
+ ipv6_listen = ''
+ t.setvar('BIND_LISTEN_IPV6', ipv6_listen)
+
t.write_file("etc/named.conf", '''
options {
listen-on port 53 { ${INTERFACE_IP}; };
- listen-on-v6 port 53 { ${INTERFACE_IPV6}; };
+ ${BIND_LISTEN_IPV6}
directory "${PREFIX}/var/named";
dump-file "${PREFIX}/var/named/data/cache_dump.db";
pid-file "${PREFIX}/var/named/named.pid";
@@ -320,6 +336,10 @@ def test_dcpromo(t, vm):
t.cmd_contains("bin/samba-tool drs kcc ${WIN_HOSTNAME}.${LCREALM} -Uadministrator@${LCREALM}%${PASSWORD1}", ['Consistency check', 'successful'])
t.kinit("administrator@${REALM}", "${PASSWORD1}")
+
+ # the first replication will transfer the dnsHostname attribute
+ t.cmd_contains("bin/samba-tool drs replicate ${HOSTNAME}.${LCREALM} ${WIN_HOSTNAME} CN=Configuration,${BASEDN} -k yes", ["was successful"])
+
for nc in [ '${BASEDN}', 'CN=Configuration,${BASEDN}', 'CN=Schema,CN=Configuration,${BASEDN}' ]:
t.cmd_contains("bin/samba-tool drs replicate ${HOSTNAME}.${LCREALM} ${WIN_HOSTNAME}.${LCREALM} %s -k yes" % nc, ["was successful"])
t.cmd_contains("bin/samba-tool drs replicate ${WIN_HOSTNAME}.${LCREALM} ${HOSTNAME}.${LCREALM} %s -k yes" % nc, ["was successful"])
@@ -494,7 +514,7 @@ def join_as_dc(t, vm):
child = t.open_telnet("${WIN_HOSTNAME}", "${WIN_DOMAIN}\\administrator", "${WIN_PASS}", set_time=True)
t.get_ipconfig(child)
t.retry_cmd("bin/samba-tool drs showrepl ${WIN_HOSTNAME}.${WIN_REALM} -Uadministrator%${WIN_PASS}", ['INBOUND NEIGHBORS'] )
- t.run_cmd('bin/samba-tool join ${WIN_REALM} DC -Uadministrator%${WIN_PASS} -d${DEBUGLEVEL} --option=interfaces="${INTERFACE} ${INTERFACE_IPV6"')
+ t.run_cmd('bin/samba-tool join ${WIN_REALM} DC -Uadministrator%${WIN_PASS} -d${DEBUGLEVEL} --option=interfaces=${INTERFACE}')
t.run_cmd('bin/samba-tool drs kcc ${WIN_HOSTNAME}.${WIN_REALM} -Uadministrator@${WIN_REALM}%${WIN_PASS}')
@@ -563,7 +583,7 @@ def join_as_rodc(t, vm):
child = t.open_telnet("${WIN_HOSTNAME}", "${WIN_DOMAIN}\\administrator", "${WIN_PASS}", set_time=True)
t.get_ipconfig(child)
t.retry_cmd("bin/samba-tool drs showrepl ${WIN_HOSTNAME}.${WIN_REALM} -Uadministrator%${WIN_PASS}", ['INBOUND NEIGHBORS'] )
- t.run_cmd('bin/samba-tool join ${WIN_REALM} RODC -Uadministrator%${WIN_PASS} -d${DEBUGLEVEL} --option=interfaces="${INTERFACE} ${INTERFACE_IPV6}"')
+ t.run_cmd('bin/samba-tool join ${WIN_REALM} RODC -Uadministrator%${WIN_PASS} -d${DEBUGLEVEL} --option=interfaces=${INTERFACE}')
t.run_cmd('bin/samba-tool drs kcc ${WIN_HOSTNAME}.${WIN_REALM} -Uadministrator@${WIN_REALM}%${WIN_PASS}')
--
Samba Shared Repository
More information about the samba-cvs
mailing list