1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-09 08:58:35 +03:00

1046 Commits

Author SHA1 Message Date
Andrew Tridgell
458dda1f15 s4-repl: don't do double replication
When we replicate from a remote DC, we need to note the new uSN that
the local changes have resulted in, and modify the uSN that the notify
task uses to determine if it should send a ReplicaSync message back to
the remote DC. Otherwise we end up always triggering a ReplicaSync
every time we replicate from another DC
2009-09-15 18:45:43 -07:00
Andrew Tridgell
bc3bbae6d2 s4-repl: make sure we marshal the replPropertyMetaData after the last change
we were setting local_usn after the marshall, so it wasn't going into
the object
2009-09-15 18:45:42 -07:00
Andrew Tridgell
ff8ad222cd s4-dsdb: use DLIST_ADD() not DLIST_ADD_END()
Using DLIST_ADD_END() to construct a long list is very inefficient (it
is O(n^2). These lists are not ordered, so using DLIST_ADD() is much
better.
2009-09-15 18:45:42 -07:00
Andrew Tridgell
089dc64cbb s4-repl: add a debug to make it easier to monitor replication 2009-09-15 18:45:41 -07:00
Andrew Bartlett
9a209ac252 s4:schema Add code to provide an index into the subClass tree
In time, this should avoid the astounding (order) complexity of the
objectclass sorting in objectclass.c eventually.

Andrew Bartlett
2009-09-15 10:38:52 -07:00
Andrew Tridgell
3dd404abad s4-repl: handle rename in repl_meta_data
On a rename we need to update uSNChanged, and the max uSN for the
partition
2009-09-14 13:13:12 -07:00
Andrew Tridgell
33160b1a5b s4-repl: fixed a memory error handling linked attributes
We could get a double free with multiple linked attributes in a
message
2009-09-14 09:41:52 -07:00
Andrew Tridgell
3cf73dfdbd s4-repl: fall back to repsFrom if repsTo not set
Windows does not seem to be always setting up repsTo using
DsUpdateRefs(). For now we will fall back to using repsFrom if repsTo
is empty. This is almost certainly incorrect, but it does get
notification based replication working with both w2k3 and w2k8.
2009-09-14 09:41:52 -07:00
Michael Adam
aa089b80de dsdb: the samba3 ldap schema has no sambaAccountPolicy (any more at least)
Michael
2009-09-14 14:51:21 +02:00
Andrew Tridgell
55a9ea2b33 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.
2009-09-13 16:40:37 -07:00
Andrew Tridgell
02c9a7e4b6 s4-repl: use the new dsdb partition uSN helper fns 2009-09-13 16:40:00 -07:00
Andrew Tridgell
424d1c580a s4-dsdb: added dsdb_load_partition_usn and dsdb_save_partition_usn
These are used to load/save the per-partition uSN values managed by
the repl_meta_data module
2009-09-13 16:40:00 -07:00
Andrew Tridgell
80c575923f s4-sam: allow a search to specify a partition
You can now attach a partition control to searches to search within a
specific partition. This is used to get at the per-partition
@REPLCHANGED object
2009-09-13 16:40:00 -07:00
Andrew Tridgell
73e380deec 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.
2009-09-13 16:39:59 -07:00
Stefan Metzmacher
db26c00c55 s4:repl_meta_data: increment the attribute version with each change
metze
2009-09-12 10:39:52 +02:00
Andrew Tridgell
5c0cf012a7 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
2009-09-12 15:24:31 +10:00
Andrew Tridgell
ca6e15f2f9 s4-repl: fixed memory leaks
These memory leaks were mostly caused by the fact that
refresh_partitions is now called periodically
2009-09-12 15:22:26 +10:00
Andrew Tridgell
b00518cf7a s4-repl: don't be too eager to allocate new sequence numbers
we only need to allocate a new sequence number when
replPropertyMetaData is changing or being created on an object
2009-09-12 12:07:06 +10:00
Andrew Tridgell
733fa19bc1 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.
2009-09-12 11:21:21 +10:00
Andrew Tridgell
94183eb7e6 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.
2009-09-12 11:15:27 +10:00
Andrew Tridgell
0ba9a1bd3f 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
2009-09-12 11:15:27 +10:00
Jelmer Vernooij
97338168e8 repl_meta_data: Fix include path when building with standalone ldb. 2009-09-12 00:49:51 +02:00
Andrew Tridgell
9da4933804 s4-vampire: cope with no invocationID when vampiring the schema 2009-09-11 23:26:39 +10:00
Andrew Tridgell
bd7cf6988e s4-repl: refresh the partitions on each cycle
The KCC might have changed repsFrom, which is stored in the partitions
structure
2009-09-11 22:47:11 +10:00
Andrew Tridgell
61facf4266 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 :-)
2009-09-11 22:13:45 +10:00
Andrew Tridgell
fd3a77839c s4-repl: don't update replPropertyMetaData for non-replicated attributes
thanks to Metze for spotting this
2009-09-11 22:13:45 +10:00
Andrew Tridgell
c6647bfd17 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.
2009-09-11 19:07:38 +10:00
Andrew Tridgell
741fe9d6a1 s4-repl: don't add the RDN if it is already there 2009-09-11 18:02:04 +10:00
Andrew Tridgell
88e2fbaf95 s4-drs: add the magic DRS SPNs on AddEntry
When a DsAddEntry is used to create a nTDSDSA object we need to also
create the SPNs for the NTDS GUID in the servers machine account.
2009-09-11 15:15:39 +10:00
Andrew Tridgell
25b68701c1 s4/repl: give a useful error message if we can't decode an object 2009-09-10 17:42:36 +10:00
Andrew Tridgell
0807251154 s4/schema: teach the schema_syntax code how to encode/decode more attributes
We were trying to encode strings like 'top' as integers, without first
looking them up in our schema. We need special handling for all the
attributes that contain attributeID_id or governsID_id fields that
should be translated first before encoding.
2009-09-10 12:12:49 +10:00
Andrew Tridgell
3671c9e991 s4/schema: don't crash if we don't have subClassOf 2009-09-10 12:12:49 +10:00
Andrew Tridgell
8640293fab s4/repl: implement DsReplicaSync
This patch implements DsReplicaSync by passing the call via irpc to
the repl server task. The repl server then triggers an immediate
replication of the specified partition.

This means we no longer need to set a small value for
dreplsrv:periodic_interval to force frequent DRS replication. We can
now wait for the DC to send us a ReplicaSync msg for any partition
that changes, and we immediately sync that partition.
2009-09-09 18:04:07 +10:00
Andrew Tridgell
939b936d1a s4/repl: added refresh of repsTo
I've found that w2k3 deletes the repsTo records we carefully created
in the vampire join if we don't refresh them frequently. After about
30mins all 3 repsTo records are gone.

This patch adds automatic refresh of the repsTo by calling
DSReplicaUpdateRefs every time we do a sync cycle with the server
2009-09-09 17:04:16 +10:00
Stefan Metzmacher
2bc8e57201 s4:repl_meta_data: remove unused code
metze
2009-09-08 22:06:07 +02:00
Stefan Metzmacher
5ef601e5eb s4:drsuapi: add an incomplete DsAddEntry implementation
metze
2009-09-08 22:05:56 +02:00
Matthias Dieter Wallnöfer
076ca26cfe s4:templates - Remove the latest relics (in "dcesrv_lsa_CreateSecret") 2009-09-07 14:36:39 +02:00
Stefan Metzmacher
0d07ce1949 s4:dsdb: correctly implement _dsdb_syntax_OID_oid_ldb_to_drsuapi()
Here we just need to map the oid string in the ldb value to
the ATTRTYP id.

metze
2009-09-07 15:04:22 +02:00
Matthias Dieter Wallnöfer
44872096fb s4:simple_ldap_map - "primaryGroupId"
Previous patch was incomplete regarding the "primaryGroupId" attribute. Complete it.
2009-09-07 09:00:46 +02:00
Matthias Dieter Wallnöfer
1d9a95e310 s4:samldb - Fix typo 2009-09-07 08:37:26 +02:00
Matthias Dieter Wallnöfer
5107f6fd0a s4:subtree delete module - Cosmetic adaptions 2009-09-07 08:37:25 +02:00
Matthias Dieter Wallnöfer
5f2832a5dc s4:samldb - Major rework
This fixes up the change of the primary group of a user when using the ADUC
console:
- When the "primaryGroupId" attribute changes, we have to delete the
  "member"/"memberOf" attribute reference of the new primary group and add one
  for the old primary group.
- Deny deletion of primary groups according to Windows Server (so we cannot
  have invalid "primaryGroupID" attributes in our AD).
- We cannot add a primary group directly before it isn't a secondary one of a
  user account.
- We cannot add a secondary reference ("member" attribute) when the group has
  been chosen as primary one.

This also removes the LDB templates which are basically overhead now.

This should also fix bug #6599.
2009-09-07 08:37:24 +02:00
Matthias Dieter Wallnöfer
03e84a22a8 s4:simple_ldap_map - Enhance it for supporting "primaryGroupID" in the right way 2009-09-06 12:35:22 +02:00
Matthias Dieter Wallnöfer
f82dd192ee s4:"linked attributes" modules - correct the comments 2009-09-06 12:31:13 +02:00
Matthias Dieter Wallnöfer
6677eea3b1 s4:dsdb/common/util.c - Copy parameters to prevent segfaults
The parameters "lmNewHash" and/or "ntNewHash" could be NULL and when we perform
write operations on them (look below in the code) we could get SIGSEGVs!
2009-09-06 12:20:21 +02:00
Matthias Dieter Wallnöfer
43cfa69945 s4:dsdb/common/util - Indentation fixes 2009-09-06 12:16:49 +02:00
Andrew Tridgell
5842aa1ffd s4: fixed a missing NULL termination in a attribute list passed to ldb_search 2009-09-04 14:40:51 +10:00
Anatoliy Atanasov
957a9285c2 Fix the dsdb_syntax_OID_ldb_to_drsuapi function
This replace the dsdb_syntax_FOOBAR_ldb_to_drsuapi function,
which was left as a TODO code. Implementation in both added functions
is completely identical and probably should differ in the future.
2009-09-03 19:10:42 +10:00
Andrew Tridgell
d3d6713c59 another large change to the linked_attribute module
This one copes with deleted objects where linked attributes have been
set on the module. We hit this when we do the ldb wipe at the start of
a provision, which trigers linked attribute updates, but for objects
that have disappeared. We need to ensure that the linked attribute
updates only happen on the right object, and if the object gets
re-created (as happens with a provision) then it is not the right
object.

To cope with this we record the GUID of the object when the operation
that triggered the linked attribute update comes in, and then find the
DN by suing that GUID when we apply the change in the prepare commit
hook.
2009-09-03 18:36:10 +10:00
Andrew Tridgell
b72b8f6e7d hook on prepare_commit instead of transaction_end
This allows for safe transaction end aborts
2009-09-03 18:36:10 +10:00