Andrew Tridgell [Fri, 26 Feb 2010 02:30:44 +0000 (13:30 +1100)]
s4-dns: add automatic dynamic DNS updating script
This script checks a list of DNS names that we should have, and does
dynamic DNS updates using our machine account credentials to add any
missing DNS entries.
This allows us to correctly add all the DNS entries we need when we
join an existing domain as a DC
Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
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.
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.
Jeremy Allison [Thu, 25 Feb 2010 02:11:07 +0000 (18:11 -0800)]
Make conn_close_all() safe to call from SMB2 sessions (fix crash bug).
Ensure we don't call close_cnum() with SMB2, also talloc_move the
compat_conn pointer from the NULL context onto the tcon context
in SMB2 as it's conceptually owned by that pointer.
Andrew Bartlett [Thu, 25 Feb 2010 00:46:41 +0000 (11:46 +1100)]
s4:ldb Fix segfault in ldbsearch store_referral callback
sctx->refs_store was not initialised, and that made talloc_realloc
grumpy once we started actually returning referrals regularly from
Samba4's partitions module (0be57c747825737fa9d64411223e693b055b5f8f
by mdw).
We now just use talloc_zero() and forget about this manual
initialisation work. Tracking down use of uninitialised variables
with valgrind was the grand idea when this started, but in practice we
just get segfaults in unusual places.
Jeremy Allison [Thu, 25 Feb 2010 00:16:30 +0000 (16:16 -0800)]
Change the credential handling so that we start with maxmux creds,
and then return to the client the number of credits per operation
that they asked for. This is a more sensible algorithm than just
blindly returning "20" on every reply, although we will probably
still need more changes to this going forward.
Jeremy.
Simo Sorce [Wed, 24 Feb 2010 22:10:59 +0000 (17:10 -0500)]
s4:lsa use the correct way to store a domain sid
Converting the sid to a string and then storing a string does not save the sid
in the right format. Causing following retrievals to fail to read back a sid
with samdb_result_dom_sid().
Simo Sorce [Wed, 24 Feb 2010 22:07:26 +0000 (17:07 -0500)]
s4:lsa avoid confusing ourselves over sam_ldb
Do not use policy_state->sam_ldb and trusted_domain_state->policy->sam_ldb
interchangeably all over the place. Just use sam_ldb everywhere and make the
code slightly more readable.
This commit causes issues with the RPC server, revert it until we find the
exact issue and possibly have a torture test to avoid it happening again.
Found playing with w2k8r2 and forest trusts.
s4:torture/ldap/basic.c - add a basic test for referral return
I implemented this referral test in C since the LDB python API isn't capable
to extract referrals from search result sets (there the result sets are simple
lists which contain only the matching entries).
First I enhanced the RootDSE test to return all partition base DNs in a new
null-terminated list "partitions". Then I used this in my referrals test which
I've implemented in the LDB api since I needed some certain DN functions.
This is a first, very basic implementation of the referrals (more informations
at MS-ADTS 3.1.1.4.6 and 3.1.1.3.4.1.12).
To have the full referral support (and to always point to the right host) the
full implementation using DNS will be needed (at the moment we always point to
the main DC which is referenceable through the DNS domainname).
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
- Function should accept pointer to drsuapi_DsReplicaSyncRequest.
While this doesn't generate essentially different code for
NDR parser, using pointer will make drsuapi_DsReplicaSync
descritpin with the rest of the functions in DRSUAPI interface.
Another benefit is that this way we could create Wireshark
dissector directly from Samba's verions for drsuapi.idl
- 'level' and thus the switch_type() should be uint32
- pointer to naming_context should be [ref] pointer
(i.e. not NULL pointer)
- other_info is actually the DNS name for Source DSA and is used
if DRSUAPI_DRS_SYNC_BYNAME is passed
ref: [MS-DRSR] 5.39
Rusty Russell [Wed, 24 Feb 2010 02:53:58 +0000 (13:23 +1030)]
tdb: handle processes dying during transaction commit.
tdb transactions were designed to be robust against the machine
powering off, but interestingly were never designed to handle the case
where an administrator kill -9's a process during commit. Because
recovery is only done on tdb_open, processes with the tdb already
mapped will simply use it despite it being corrupt and needing
recovery.
The solution to this is to check for recovery every time we grab a
data lock: we could have gained the lock because a process just died.
This has no measurable cost: here is the time for tdbtorture -s 0 -n 1
-l 10000: