1
0
mirror of https://github.com/samba-team/samba.git synced 2025-06-19 23:17:05 +03:00

79 Commits

Author SHA1 Message Date
Stefan Metzmacher
c47d73f6c4 s4:dsdb/repl: ldb_errstring() takes a 'struct ldb_context' not 'int'
metze

Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Tue Aug 14 13:58:31 CEST 2012 on sn-devel-104
2012-08-14 13:58:31 +02:00
Stefan Metzmacher
0b926a27d8 s4:dsdb/repl: make sure instanceType_e is not changed by a reallocation
Pair-Programmed-With: Björn Baumbach <bb@sernet.de>

metze
2012-08-14 10:47:26 +02:00
Stefan Metzmacher
d81d6afd6f s4:dsdb/repl: avoid reallocation of msg->elements
The index into the elements needs to match between
msg->elements and md->ctr.ctr1.array, which means we should
pre-allocate them with the same size.

Pair-Programmed-With: Björn Baumbach <bb@sernet.de>

metze
2012-08-14 10:40:55 +02:00
Andrew Bartlett
4631723c98 s4-dsdb: Take more care in handling of global schema memory
This reworks dsdb_replicated_objects_commit() to have a proper local tmp_ctx and
to be more careful about what schema is set (only setting a global schema if
the original schema was global).

In particular, the new working_schema is not given a talloc reference
to the old schema.  This ensures that the old schema can go away when
no longer used.

Andrew Bartlett

Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Sat Aug 11 10:31:57 CEST 2012 on sn-devel-104
2012-08-11 10:31:57 +02:00
Stefan Metzmacher
8dafdb54e3 s4:dsdb:replicated_objects: do not move 'instanceType' to the end of msg->elements on RODC replication
It's very important that the order of msg->elements and md->ctr.ctr1.array
is the same.

metze
2012-08-03 08:27:58 +02:00
Andrew Bartlett
1547d5fe00 s4-repl: Use ldb_dn_new() to create the rootDSE DN
Based on a patch proposal by Matthieu Patou <mat@matws.net>.

Andrew Bartlett
2012-07-29 20:59:53 +10:00
Andrew Bartlett
de0b902ffa s4-repl: Use NULL for pointer test when checking for ldb_msg_new() failure 2012-07-29 20:59:53 +10:00
Andrew Bartlett
96db13405b s4-dsdb: Ensure we never write read-only objects onto a read-write replica
We should prevent this much further up the stack, but at least add a choke
at this point for now.

Additionally, this avoids administrator-forced replications causing
considerable damange to the directory.

Andrew Bartlett
2012-07-18 09:32:53 +02:00
Andrew Bartlett
8b32d9ad2d s4-dsdb: Use parent_object_guid to find the correct parent for new objects
This allows the parent to be renmaed while a new object is added on another replica.

This rename may also be a delete, in which case we must move it to lostandfound.

Andrew Bartlett
2012-07-06 08:10:18 +02:00
Matthieu Patou
9f1213d954 s4-drs: if schema has changed during replication notify other process that they have to reload the schema 2012-06-22 23:22:04 -07:00
Andrew Tridgell
60cbc98051 s4-dsdb: added new control DSDB_MODIFY_PARTIAL_REPLICA
this control tells the partition module that the DN being created is a
partial replica, so it should modify the @PARTITION object to add the
partialReplica attribute

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2011-10-04 15:08:57 +11:00
Andrew Tridgell
faf8581e38 s4-repl: support creation of new NCs via DsAddEntry
this adds a flag to dsdb_origin_objects_commit that tells it to create
a new NC based on the nCName in a crossRef object
2011-10-04 15:08:56 +11:00
Andrew Tridgell
761fd4af2e s4-repl: update instanceType in partial_replica replication
when we receive objects to a partial replica, we need to change the
incoming instanceType to not include the INSTANCE_TYPE_WRITE
flag. Partial replicas unset this flag.
2011-10-04 15:08:56 +11:00
Andrew Bartlett
e2733d362d s4-dsdb clarify that failure to load the schema items from DRS is expected
This happens if we have a custom schema - we need to build up the schema until
it loads, by converting more objects.

Andrew Bartlett

Autobuild-User: Andrew Bartlett <abartlet@samba.org>
Autobuild-Date: Tue Aug  9 13:10:25 CEST 2011 on sn-devel-104
2011-08-09 13:10:25 +02:00
Kamen Mazdrashki
fb7975d590 s4-repl/working_schema: Ignore some attributes when bulding working schema cache
We don't need all object attributes resolved and converted for a working
schema to be functional.
2011-03-01 02:59:25 +01:00
Kamen Mazdrashki
f518dbc089 s4-replicated_objects: Implement a mechanism to relax some attributes conversion
during replicated object convert stage.
The problem is that we may have loops in schema graph and we can't
resolve those loops in just one pass. Ignoring some attributes
conversion will allow us to have a functional schema cache that we
can use later to resolve all attribute OIDs on another pass
2011-03-01 02:59:25 +01:00
Andrew Tridgell
8dc92c8f71 ldb: use #include <ldb.h> for ldb
thi ensures we are using the header corresponding to the version of
ldb we're linking against. Otherwise we could use the system ldb for
link and the in-tree one for include

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2011-02-10 06:51:07 +01:00
Kamen Mazdrashki
7157221da5 s4-drepl: During Schema replication, we need to save updated prefixMap if everything is OK
Autobuild-User: Kamen Mazdrashki <kamenim@samba.org>
Autobuild-Date: Sat Dec 18 05:53:48 CET 2010 on sn-devel-104
2010-12-18 05:53:48 +01:00
Kamen Mazdrashki
bd6f9efc1e s4-drepl: Make refreshed schema a global one
We need to do this as dsdb_reference_schema() function
clears "use_global_schema" ldb flag.

Basically what is going to happen is that after dsdb_reference_schema()
global_schema pointer will continue to point at old schema cache,
while "dsdb_schema" for LDB will point at the working_schema.

After replication is done, we reset "dsdb_schema" for the ldb
with an updated Schema cache, but this leaves global_schema pointer
with its old value, which is not up to date.
So we need to call dsdb_make_schema_global() again so that global_schema
points to a valid Schema cache.
2010-12-18 05:32:14 +02:00
Kamen Mazdrashki
839fe07359 s4-drepl: Reference current Schema cache into working_schema context
working_schema is a shallow copy of current schema and thus
depends on part of it. So we want it to be around as long as
working_schema is used.

Autobuild-User: Kamen Mazdrashki <kamenim@samba.org>
Autobuild-Date: Fri Dec 17 23:34:29 CET 2010 on sn-devel-104
2010-12-17 23:34:29 +01:00
Kamen Mazdrashki
c94e5d4438 s4-repl: Allow dsdb_replicated_objects_commit() to use different schema while committing objects
working_schema is to be used while committing a Schema replica.

When we replicate Schema, then we most probably won't be
able to convert all replicated objects using the current
Schema cache (as we don't know anything about those new objects).

Thus, during Schema replication, we make a temporary
working_schema that contains both our current Schema +
all objects we get on the wire.
When we commit those new objects, we should use our working_schema
(by setting it to the ldb), and after all changes are commited,
we can refresh the schema cache so we have a brand new,
full-featured Schema cache
2010-12-15 00:51:19 +01:00
Matthias Dieter Wallnöfer
56290d0b33 s4:dsdb/repl/replicated_objects.c - proof if "talloc_reference" doesn't return NULL
Autobuild-User: Matthias Dieter Wallnöfer <mdw@samba.org>
Autobuild-Date: Wed Dec  1 17:14:01 CET 2010 on sn-devel-104
2010-12-01 17:14:01 +01:00
Kamen Mazdrashki
a42e267105 s4-dsdb/schema: Implement multi-pass working schema creation function
It is heavily based on implementation in libnet_vampire_cb_apply_schema()
function, except that it actually creates a new copy of the supplied
initial_schema + resolving all incoming objects and add them to
supplied initial_schema.

We are going to need this 'working_schema' later so we are able
to fully resolve all objects we receive on wire during DRS replication.

Working schema created is to be used only as an index to search in.
It is not supposed to be set to an ldb_context as it doesn't
contain all information for classSchema and attributeSchema objects.
2010-12-01 13:01:17 +02:00
Kamen Mazdrashki
4041791d01 s4-repl: Let dsdb_replicated_objects_convert() to accept schema from caller
This allows us to use schema that is different than the one
set to 'ldb' to decode objects.
2010-12-01 13:01:16 +02:00
Kamen Mazdrashki
0868a15982 s4-repl: Propagate remote prefixMap in DRSUAPI data conversion functions 2010-11-11 18:54:20 +00:00
Kamen Mazdrashki
a8495d380e s4-repl: dsdb_extended_replicated_objects_convert -> dsdb_replicated_objects_convert/
It is part of dsdb_replicated_* family of functions
2010-11-11 18:54:20 +00:00
Kamen Mazdrashki
227e8dcfcf s4-repl: dsdb_extended_replicated_objects_commit -> dsdb_replicated_objects_commit
It is part of dsdb_replicated_* family of functions
2010-11-11 18:54:20 +00:00
Kamen Mazdrashki
28f41c166a s4-repl: dsdb_convert_object -> dsdb_origin_object_convert
It is used in dsdb_origin_objects_commit() func,
hence the dsdb_origin_ prefix
2010-11-11 18:54:20 +00:00
Kamen Mazdrashki
717b1158a6 idl: Use DRSUAPI_ATTID_ prefix instead of DRSUAPI_ATTRIBUTE_ for ATTID values
Those values are actually ATTID values and such, they are used
for ATTIDs for Attributes, Classes and Syntaxes.
2010-10-31 23:54:04 +00:00
Kamen Mazdrashki
20029aac31 s4-dsdb-repl: Print what the error code for failure is 2010-10-10 12:58:32 +03:00
Kamen Mazdrashki
d76bb4ac40 s4-drs: Check for schema changes only in case we are *not* applying Schema replica
This fixes the problem when we fail to replicate with
a partner DC that has a newer Schema with attributeSchema
objects with OIDs that we don't have in our local prefixMap.
2010-09-18 15:09:47 +03:00
Andrew Bartlett
8d8678fcfd s4:dsdb Allow calling dsdb_convert_object_ex() directly
This will allow the libnet_vampire code to manually convert individual
schema objects.

Andrew Bartlett
2010-06-12 11:19:19 +10:00
Andrew Bartlett
2de07761e0 s4:dsdb Change dsdb_get_schema() callers to use new talloc argument
This choses an appropriate talloc context to attach the schema too,
long enough lived to ensure it does not go away before the operation
compleates.

Andrew Bartlett
2010-03-16 19:26:03 +11:00
Matthias Dieter Wallnöfer
3ec4c643a4 s4:repl - change also here the counter variables to "unsigned"
I changed also some "uint32_t" to "unsigned" since the LDB interface doesn't
specify the bitlength of the unsigned type.
2010-03-05 18:28:35 +01:00
Fernando J V da Silva
e30d009965 s4-drs: Store uSNUrgent for Urgent Replication
When a object or attribute is created/updated/deleted, according
to [MS-ADTS] 3.1.1.5.1.6, it stores the uSNUrgent on @REPLCHANGED
for the partitions that it belongs.

Signed-off-by: Andrew Tridgell <tridge@samba.org>
2010-01-14 15:37:58 +11:00
Kamen Mazdrashki
14bac3a3e6 Revert "s4-drs: cope with bogus empty attributes from w2k8-r2"
This reverts commit 1287c1d115fb7e8f3954bc05ff65007968403a9c.

Next patch should fix the "not recognized ATTIDs" problem

Signed-off-by: Andrew Tridgell <tridge@samba.org>
2009-12-21 23:44:19 +11:00
Andrew Tridgell
452fc0d6f4 s4-repl: give a reason why the prepare commit failed 2009-12-21 23:41:09 +11:00
Andrew Tridgell
261ba40e77 s4-dsdb: use GUID_to_ndr_blob() 2009-12-10 17:51:29 +11:00
Andrew Tridgell
1287c1d115 s4-drs: cope with bogus empty attributes from w2k8-r2
w2k8-r2 sometimes sends empty attributes with completely bogus attrid
values in a DRS replication response. This allows us to continue with
the vampire operation despite these broken elements.
2009-11-28 13:28:34 +11:00
Matthias Dieter Wallnöfer
e853dd763b Revert "s4:dsdb/repl/replicated_objects - Applicate also here the new "lDAPDisplayName" generator"
This reverts commit df95d5c29292968b465bff24c3cf78800677a4d4.

abartlet pointed out in a post on the samba-technical list that this isn't
necessary at all (lDAPDisplayName normalisation algorithm). Rather it breaks
functionality of the replication.
2009-11-16 17:01:43 +01:00
Matthias Dieter Wallnöfer
df95d5c292 s4:dsdb/repl/replicated_objects - Applicate also here the new "lDAPDisplayName" generator
Also here we've to be sure to generate the attribute correctly if it doesn't
exist yet.
2009-11-15 14:26:41 +01:00
Andrew Bartlett
df7546ac16 s4:dsdb/repl Split the 'convert' or 'commit' stages in the DRS import
This will allow us in future to do tests on the LDB values we generate
from the DRS replication.

Andrew Bartlett
2009-11-12 16:34:10 +11:00
Kamen Mazdrashki
ddab9d1fe7 s4/drs: dsdb_verify_oid_mappings_drsuapi() replaced by dsdb_schema_pfm_contains_drsuapi_pfm()
dsdb_schema_pfm_contains_drsuapi_pfm() is part of reimplemented
prefixMap interface.

This name was choosen to clearly show, that this a week verification
in case we want to determine if remote schema is changed.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
2009-11-06 14:05:42 +01:00
Andrew Tridgell
b3377ef2ea s4-drs: fixed a memory error introduced yesterday
ids is retrurned via _ids, so it needs to be on the passed in mem_ctx
2009-10-07 16:20:16 +11:00
Andrew Tridgell
b43479741a s4-repl: added RELAX control and fix transactions
Added the RELAX control to dsdb_origin_objects_commit(), as it needs
to modify system objects. This patch also fixes the use of ldb
transactions in that function, and fixes a memory leak.
2009-10-06 18:55:14 +11:00
Andrew Tridgell
bb3bdb3a62 s4-ldb: added a bunch more debug for DC join
These additional debug messages were added to help us track down
w2k8->s4 domain join
2009-09-22 17:10:06 -07:00
Andrew Tridgell
80c4b1e43e 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 14:06:07 -07:00
Andrew Tridgell
f0104bee8e s4-repl: add a debug to make it easier to monitor replication 2009-09-15 11:48:12 -07: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