Andrew Tridgell [Sun, 13 Sep 2009 08:16:13 +0000 (18:16 +1000)]
s4-repl: added a preiodic notification check to the repl task
The dreplsrv_notify code checks the partition uSN values every N
seconds, and if one has changed then it sends a DsReplicaSync to all
the replication partners listed in the repsTo attribute for the
partition.
Andrew Tridgell [Sun, 13 Sep 2009 04:24:08 +0000 (14:24 +1000)]
s4-repl: keep a @REPLCHANGED object on each partition
This object tracks the highest uSN in each partition. It will be used
to allow us to efficiently detect changes in a partition for sending
DsReplicaSync messages to our replication partners.
s4:group policies - upcase directory names of default group policies
The directory names (MACHINE, USER) are upcased to help locating the default
group policies under the SYSVOL dir (the additional ones have only the first
letter upcased of those directory names).
Andrew Tridgell [Sat, 12 Sep 2009 05:24:31 +0000 (15:24 +1000)]
s4-samdb: make it possible to ask for the sequence number of a partition
The partition module normally makes the sequence number extended op
operate across all partitions. It will be useful in the repl task to
be able to ask for the sequence number of one partition
Andrew Tridgell [Sat, 12 Sep 2009 02:42:40 +0000 (12:42 +1000)]
s4-drs: return objects with uSN > highest_usn
When the client tells us the highest_usn they have is N, then we want
to send them objects with usn>N, not>=N, as otherwise we end up
sending them the same object (the one with the highest uSN) again and
again.
Andrew Tridgell [Sat, 12 Sep 2009 02:08:34 +0000 (12:08 +1000)]
s4-drs: spelling fix, and simpler search expression
uSNChanged>=N is good enough, and offers a possibility of a simple
optimisation where the partition module could look for that expression
and check the partitions sequence number, then avoid searching a
partition that doesn't have any records with a larger uSN.
Andrew Tridgell [Sat, 12 Sep 2009 01:21:21 +0000 (11:21 +1000)]
s4-samdb: internal s4 ldb modules should be GPL not LGPL
I think these modules ended up LGPL because someone based the module
on an existing LGPL module in the core ldb, and it spread from
there. Certainly there is no reason for the ldb modules that are not
distributed as part of ldb to be LGPL.
Andrew Tridgell [Sat, 12 Sep 2009 01:14:29 +0000 (11:14 +1000)]
s4-drs: fixed the cursor generation to always be filled in
We were relying on the uSNChanged>=n search always finding the DN of
the root of the partition, but this now doesn't happen very often as
we are now restricting when we change uSNChanged. This means we need
to always load the replUpToDateVector attribute from the NC root and
use it to populate the cursors in the return.
Andrew Tridgell [Sat, 12 Sep 2009 01:10:19 +0000 (11:10 +1000)]
s4-repl: we should only update uSNChanged when replication data changes
When changing non-replicated attributes we should not update the
uSNChanged attribute on the record, otherwise the DRS server will
think this record needs replicating.
Andrew Tridgell [Sat, 12 Sep 2009 01:09:10 +0000 (11:09 +1000)]
s4-kcc: we should only add to the repsFrom if it doesn't already exist
If we already have a repsFrom for a particular DC and naming context
then we should not overwrite it, as it contains info on what
replication we've already done
s4:group policies - add the domain controller group policy
This patches fixes the last difference between s4 and Windows Server regarding
group policy objects: we hadn't the domain controller policy.
- Adds the domain controller policy as it is found in the "original" AD
- Adds also the right version number in the GPT.INI file for the domain group
policy (was missing)
s4: Fix parsing of CSDVersion: treat this field as an string null terminated.
CDSVersion field contains one utf16 string and then garbage which pertubated the parsing.
We use subcontext to clearly define the size of the whole blob and then let the parser to find
the real length of the string.
This is a fix for bug 6706, many thanks to Gunter for the PIDL guidelines.
Andrew Tridgell [Fri, 11 Sep 2009 11:46:58 +0000 (21:46 +1000)]
s4-kcc: add a very simple KCC
A KCC is a 'Knowledge Consistency Checker', a fancy name for a daemon
that works out who will replicate with who in a AD domain. This
implements an extremely simple KCC task that just wants to replicate
with everyone :-)
Andrew Tridgell [Fri, 11 Sep 2009 09:07:38 +0000 (19:07 +1000)]
s4-repl: on every ldb modify we need to update replPropertyMetaData
Every time we change a ldb object with the repl_meta_data module
loaded we need to update the replPropertyMetaData attribute to fix the
timestamps and USNs of the attributes being changed.