The branch, master has been updated via 5ccf8ae... s4-samba3samtest: we need to force netbios name as well via dde2b66... s4-samba3sid: fixed error returns when res->count != 1 and oom via 9aed099... s4-samba3samtest: force workgroup so the domain is right via f68c43e... s4-samba3sid: the sambaNextRid attribute is actually the previous RID via d6f92db... s4-samba3sam: use samba3sid module via dd61336... s4-dsdb: added a samba3sid module via 66f161d... s4-acl: fixed acl.py test to use correct ldif via 81c0b01... s4-secdesc: fixed the sec_descriptor.py test via 43a815c... s4-samba3samtest: use system credentials for creating users via 8b8bb15... s4-dsdb: fixed const misuse in acl module via baa8793... s4-dsdb: use dsdb_module_am_system() in acl module via 595fad2... s4-dsdb: allow specification of a SID if we are system via f118f54... s4-dsdb: added dsdb_module_am_system() via d22a9e5... s4-dsdb: squash some unknown structure warnings via 5d6032e... s4-partition: fixed selection of partitions on exact match via 59f314d... s4-scripting: we need to use a base search for the NTDS GUID via 501dd4a... s4:dsdb/repl: convert dreplsrv_op_pull_source_send/recv to tevent_req via 278d2f7... s4-smbd: setup the default event contexts for other process models via 5803253... s4-drs: we need to wrap extended operations in transactions via 2d10f3a... s4-dsdb: poke the RID Manager when completely out of RIDs too via a65823e... s4-dsdb: ensure we will in all the attributes for RID Set via 308a479... s4-dsdb: added DSDB_FLAG_TOP_MODULE via 5f36f03... s4-dsdb: no longer need special invocationID handling for standalone servers via a7fffe8... s4-provision: do a self join for all server types via f6cf895... s4-schema: added generic attributeID conversion functions via f7517e6... s4-schema: added dsdb_attribute_by_lDAPDisplayName_ldb_val via cd65ce8... s4-schema: make ldb_val to string comparison safer with nul termination via ff968e4... s4-idl: regenerate DRS IDL via 4c7bf05... s4-idl: added some more wellknown attributeIDs via 3352e5d... s4/dsdb_schema: Load msDS-IntId value separately when loading from LDB via 2523811... Revert "s4-schema: Set ATTID in schema cache from "msDS-IntId"" via 6247a13... s4/schema: Do not assign msDS-IntId value if LDB_CONTROL_RELAX_OID is passed via 73838b3... s4-libnet: better error messages in libnet_vampire.c via 9871f52... s4/dsdb_schema: use msDS-IntId value for attribute look-up via a44ae10... s4/dsdb_schema: fetch msDS-IntId value during SCHEMA replication via a7b3891... s4/dsdb_schema: GET_UINT32_DS() macro to use supplied default value instead of 0 via f7756c8... s4-partition: don't ignore errors from other modules via 9672a3d... s4-devel: a useful script to setup bin/ and st/ as tmpfs filesystems via 1f25d0a... s4-provision: re-open sam.ldb after creating the schema via 42f0bda... s4-provision: RID 1000 is consumed by the machine account via fdf12a6... s4-ldb: improve error handling in indexing code via c4fa4d1... s4-dsdb: improve error messages in schema and pdc_fsmo modules via ac5d426... s4-drs: added some debug messages via dcbba58... s4-event: added s4_event_context_set_default() via f254091... s4-dsdb: added support for DRSUAPI_EXOP_FSMO_RID_ALLOC via b1f97b7... s4-dsdb: added an extended operation for allocating a new RID pool via 2590b77... s4-repl: implement MSG_DREPL_ALLOCATE_RID via cc7967b... s4-repl: allow for callbacks when a repl operation completes via 7a40cac... s4-dsdb: the dsdb ldb modules now need messagiing via dc11414... s4-dsdb: send a message to the drepl task when we need another RID pool via 805ab0e... s4-messaging: added a new msg type MSG_DREPL_ALLOCATE_RID via 19e515a... s4-repl: added request for RID allocation in drepl task via 8cd2bed... s4-dsdb: added dsdb_find_guid_attr_by_dn() via 37340d5... s4-ridalloc: copy with missing rIDNextRid and rIDAllocationPool via 45550f8... s4-dsdb: added dsdb_module_set_integer() via c12b9ab... s4-dsdb: clarify who is responsible for each attribute via dd8cb3c... s4-dsdb: fixed usage of rIDAllocationPool and rIDPreviousAllocationPool via 5136438... s4-dsdb: implement refresh of RID Set pool for a local RID Manager via 53d10d1... s4-provision: don't hard wire the creation of the RID Set object via 1053ce5... s4-dsdb: implement creation of the RID Set object via 439ee5a... s4-dsdb: use dsdb_next_callback() via d0bd6e7... s4-dsdb: added dsdb_next_callback() via e6f14ac... s4-dsdb: added dsdb_module_constrainted_update_integer() via f240110... s4-dsdb: added dsdb_module_reference_dn() via f137f93... s4-dsdb: added dsdb_module_add() via fcfb5d7... s4-provision: allow provision modifies to add records via 226460d... s4-dsdb: move the RID allocation logic into ridalloc.c via 7f90a05... s4-samldb: use RID Set to allocate user/group RIDs via 5eb3b91... s4-provision: the DC object itself needs a fixed objectSID via 2bad107... s4-dsdb: added samdb_rid_set_dn() via a136249... s4-provision: added an initial RID Set via bd6d0e9... s4-ldb: added nice ldif display of 64 bit ranges for RIDs via fbc3a0f... s4-dsdb: added samdb_reference_dn() from c915bd8... linked_attributes: Fix missing dependency on util.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 5ccf8ae37385bd401910e7c31c63fad43dcc89ae Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 12:55:21 2010 +1100 s4-samba3samtest: we need to force netbios name as well needed for when run in CLIENT context commit dde2b66341d5addbb80a239b8ccab58af1f3fc24 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 12:54:42 2010 +1100 s4-samba3sid: fixed error returns when res->count != 1 and oom commit 9aed0993624ecd42ad68b3b080668fa07a9bc1b9 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 12:45:49 2010 +1100 s4-samba3samtest: force workgroup so the domain is right the samba3sid backend looks at lp_sam_name() which is based on the workgroup commit f68c43e80338921be8145f8b3a3b391a941715a2 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 12:45:29 2010 +1100 s4-samba3sid: the sambaNextRid attribute is actually the previous RID Not well named .... though same mistake that MS made with rIDNextRid commit d6f92db456162571e7d9273afe371103da72e6b0 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 12:15:01 2010 +1100 s4-samba3sam: use samba3sid module Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit dd61336165396f8aaccde1320de26bae789fb324 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 12:14:39 2010 +1100 s4-dsdb: added a samba3sid module This module allocates SIDs using the Samba3 algorithm, for use with the samba3sam module. Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 66f161dee13fc027ea0253abdf40dfb7dc4bffa3 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 10:03:51 2010 +1100 s4-acl: fixed acl.py test to use correct ldif same problem as sec_descriptor.py commit 81c0b01585c93472a14e3027a6da0b6d65a2ed7c Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 10:00:35 2010 +1100 s4-secdesc: fixed the sec_descriptor.py test The test was using a "changetype: add" to try and add a member to a group, where it should use a "changetype: modify" with a "add: member" Also fixed the recovery when the test fails part way through (delete the test users at the start as well as the end) Nadya, please check! commit 43a815c67ac7b7406b047b488393fa42617a5884 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 09:31:23 2010 +1100 s4-samba3samtest: use system credentials for creating users commit 8b8bb15a54a80b8a568f9da955a33ff8336168ee Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 09:30:59 2010 +1100 s4-dsdb: fixed const misuse in acl module commit baa8793a94a05bd5fde0f2770d9a16959e01b60b Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 09:30:31 2010 +1100 s4-dsdb: use dsdb_module_am_system() in acl module commit 595fad2b34b6f67b130344bc741ff0ddffb0db4f Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 09:29:32 2010 +1100 s4-dsdb: allow specification of a SID if we are system needed for samba3sam test commit f118f54ee783a97ed2bc5415213f3145710e0b4c Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 09:29:01 2010 +1100 s4-dsdb: added dsdb_module_am_system() better than each module inventing their own commit d22a9e5d3bee44ac59922a2a602ad235bf450d5d Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 09:28:38 2010 +1100 s4-dsdb: squash some unknown structure warnings commit 5d6032eb4b3e77240d2eccf7c644d1a30da89c78 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Jan 8 09:00:15 2010 +1100 s4-partition: fixed selection of partitions on exact match When a search is on the root of a partition on the global catalog, don't search partitions above that one. commit 59f314d321bb276ebdf2da3017b6a5d3b79d13e2 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 21:28:03 2010 +1100 s4-scripting: we need to use a base search for the NTDS GUID now we have nTDSConnections structures we can get more than 1 reply commit 501dd4a3b51635fd215d6e397b64f264911c7250 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Dec 30 17:11:51 2009 +0100 s4:dsdb/repl: convert dreplsrv_op_pull_source_send/recv to tevent_req metze Signed-off-by: Andrew Tridgell <tri...@samba.org> commit 278d2f75baaaab1bb30910f0fd332731b4292a06 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 19:12:45 2010 +1100 s4-smbd: setup the default event contexts for other process models commit 58032533620dc89dd093f55dabe003ec743f8dff Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 18:38:39 2010 +1100 s4-drs: we need to wrap extended operations in transactions commit 2d10f3a84197a20fa7a6ff8305a69ac57ddd44e3 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 18:38:16 2010 +1100 s4-dsdb: poke the RID Manager when completely out of RIDs too commit a65823e33c8fab39ea6dde752662c527bcbf818b Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 18:16:14 2010 +1100 s4-dsdb: ensure we will in all the attributes for RID Set We need to go to the top of the module stack so that all the extra attributes get filled in commit 308a4798b8b6acc7f74ce678a7c04f536a3e4737 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 18:15:34 2010 +1100 s4-dsdb: added DSDB_FLAG_TOP_MODULE This is used when you want the dsdb_module_*() functions to go to the top of the stack. commit 5f36f0352e92243aa9f801d69ddc4c4152dfecbc Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 17:32:13 2010 +1100 s4-dsdb: no longer need special invocationID handling for standalone servers They now work the same way as a DC commit a7fffe8da0464b25d587e5148207e1a67b930505 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 17:31:23 2010 +1100 s4-provision: do a self join for all server types We need a machine account so the RID allocation code can work. It seems better to use the same code paths for a domain controller and standalone server to avoid testing headaches with little used code. commit f6cf895951f24a28efb1a2859e066f5568e189b1 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 17:29:40 2010 +1100 s4-schema: added generic attributeID conversion functions When we get one we haven't seen before, we can work out the right type automatically in most cases. Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit f7517e62569b108a79dfba10a6f06ad92c996413 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 17:27:46 2010 +1100 s4-schema: added dsdb_attribute_by_lDAPDisplayName_ldb_val Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit cd65ce8a18b9ea9a8ce2338bc02c1b3e8ee10225 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 17:27:03 2010 +1100 s4-schema: make ldb_val to string comparison safer with nul termination Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit ff968e487c9762727d7d2322f3e0fe81b6320cdf Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 17:25:38 2010 +1100 s4-idl: regenerate DRS IDL Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 4c7bf0527a3ffc6c98691f9258cab3add0511129 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 17:25:19 2010 +1100 s4-idl: added some more wellknown attributeIDs Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 3352e5d7bab3822249bbda685dbf7010ebac2681 Author: Kamen Mazdrashki <kamen.mazdras...@postpath.com> Date: Thu Jan 7 06:04:35 2010 +0200 s4/dsdb_schema: Load msDS-IntId value separately when loading from LDB This way we have consistent behavior when loading from DRSUAPI and from LDB. commit 25238110dfc0826c2e533a543d1ca44e1f9e058c Author: Kamen Mazdrashki <kamen.mazdras...@postpath.com> Date: Thu Jan 7 05:08:49 2010 +0200 Revert "s4-schema: Set ATTID in schema cache from "msDS-IntId"" This reverts commit 4e8ad284f5813413fdec8426f11e24570d22549b. commit 6247a135c68b592d99a8c1594aebe5ca7e716d7c Author: Kamen Mazdrashki <kamen.mazdras...@postpath.com> Date: Thu Jan 7 04:01:14 2010 +0200 s4/schema: Do not assign msDS-IntId value if LDB_CONTROL_RELAX_OID is passed This way msDS-IntId should not be assigned during provisioning, which is how Windows works commit 73838b353aadd221f011e42c1225bcd5cc07dc9d Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 12:19:42 2010 +1100 s4-libnet: better error messages in libnet_vampire.c commit 9871f52bd318b492e6e6ebb525789d7dbc6eac65 Author: Kamen Mazdrashki <kamen.mazdras...@postpath.com> Date: Thu Jan 7 02:47:25 2010 +0200 s4/dsdb_schema: use msDS-IntId value for attribute look-up commit a44ae10c77b1eb2276b8c098a245b5b4df4607dd Author: Kamen Mazdrashki <kamen.mazdras...@postpath.com> Date: Thu Jan 7 02:46:25 2010 +0200 s4/dsdb_schema: fetch msDS-IntId value during SCHEMA replication commit a7b3891fb5e20fd3a5b9cc9df37d70693836c0e0 Author: Kamen Mazdrashki <kamen.mazdras...@postpath.com> Date: Wed Jan 6 23:16:12 2010 +0200 s4/dsdb_schema: GET_UINT32_DS() macro to use supplied default value instead of 0 commit f7756c87bb8bd1eba8d7f92cfbc797db42d3de4a Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 10:22:26 2010 +1100 s4-partition: don't ignore errors from other modules if we get an error code from a lower module, we don't want to ignore it just because something also succeeded commit 9672a3d1cc17dd800403a9987602403b8c6e757f Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 10:18:30 2010 +1100 s4-devel: a useful script to setup bin/ and st/ as tmpfs filesystems this makes building and testing s4 as a developer much faster, if you have enough memory! commit 1f25d0a5add1812723dfb93da28bbb80dc5d6757 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 10:12:24 2010 +1100 s4-provision: re-open sam.ldb after creating the schema This enables the full schema during the rest of the provision, which means indexing is enabled (along with index error checking, such as duplicate SIDs) commit 42f0bdae6952af7e1005b6bf9b4a3c6ecc42d62d Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 10:11:30 2010 +1100 s4-provision: RID 1000 is consumed by the machine account commit fdf12a607d4da368bcbb8d4379b6ea38cbfdbce6 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 10:11:10 2010 +1100 s4-ldb: improve error handling in indexing code When we get an indexing failure we want a clear error message commit c4fa4d116264f661d9eaddc6c4e430de476cff83 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Jan 7 10:09:09 2010 +1100 s4-dsdb: improve error messages in schema and pdc_fsmo modules We want to incorporate the error messages from the modules further down the stack. commit ac5d42606270423b409e2cac32550bb6e48b27de Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 20:56:19 2010 +1100 s4-drs: added some debug messages It is nice to see when a RID Alloc is successful commit dcbba583d9a7acbbd0086889f3be722121754eae Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 20:55:38 2010 +1100 s4-event: added s4_event_context_set_default() we're still not weaned off event_context_find() commit f25409195737e8e9c29495526f6d2f6c58bda037 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 19:35:05 2010 +1100 s4-dsdb: added support for DRSUAPI_EXOP_FSMO_RID_ALLOC This allocates a RID pool for the client DC when we are the RID Manager Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit b1f97b7e60b68429f0a9c12de9cd1cf24b2d8d35 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 19:34:14 2010 +1100 s4-dsdb: added an extended operation for allocating a new RID pool This will be called by getncchanges when a client asks for a DRSUAPI_EXOP_FSMO_RID_ALLOC operation Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 2590b7795d38728f53f795c2b60b32ace9ca5c4b Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 17:18:42 2010 +1100 s4-repl: implement MSG_DREPL_ALLOCATE_RID When the repl server gets MSG_DREPL_ALLOCATE_RID it contacts the RID Manager to ask for another RID pool. We use a callback on completion of the operation to make sure that we don't have two RID allocation requests in flight at once Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit cc7967b1c0555ba7641fb0248077295521f74943 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 17:16:58 2010 +1100 s4-repl: allow for callbacks when a repl operation completes Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 7a40cacbde0dc707ac2d354bfb335312f420da4b Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 16:47:36 2010 +1100 s4-dsdb: the dsdb ldb modules now need messagiing Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit dc11414f987aa99f286acb1d1ece625d290831f3 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 16:47:11 2010 +1100 s4-dsdb: send a message to the drepl task when we need another RID pool We send the message when the current pool is half gone. We don't wait for a reply. Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 805ab0ef15faf339c4336eb95e09e1bea4b85d5a Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 16:45:34 2010 +1100 s4-messaging: added a new msg type MSG_DREPL_ALLOCATE_RID This will be used to ask the drepl task for a new RID pool Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 19e515aac7a6e5ce85cfd6905a1cc773277047a9 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 14:54:12 2010 +1100 s4-repl: added request for RID allocation in drepl task The drepl task now checks to see if our rIDAllocationPool is exhausted, and if it is then we queue a extended operation DsGetNCChanges call to ask the RID Manager to give us a new allocation pool. Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 8cd2bedee74ae8dfb3a19f9bdde4a568de4b44cd Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 14:50:41 2010 +1100 s4-dsdb: added dsdb_find_guid_attr_by_dn() Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 37340d5a2e04a194479beb80b96b0bc78df4393a Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 14:50:04 2010 +1100 s4-ridalloc: copy with missing rIDNextRid and rIDAllocationPool The attributes rIDNextRid and rIDAllocationPool are not replicated, so their initial value when we first get a RID Set from the RID Manager is blank. Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 45550f83f00f259a64cd70f7b2f741a12ee55854 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 14:48:55 2010 +1100 s4-dsdb: added dsdb_module_set_integer() This will be used by ridalloc.c Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit c12b9ab2f2d26147a0878bbb2a1672892599293e Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 11:40:05 2010 +1100 s4-dsdb: clarify who is responsible for each attribute Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit dd8cb3c7ed1e32fa4073c6e38dafc35fe2cb4f72 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 11:38:38 2010 +1100 s4-dsdb: fixed usage of rIDAllocationPool and rIDPreviousAllocationPool These are very badly named attributes! See the comments in ridalloc.c for a explanation of what they really seem to mean Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 5136438ad612435ceb11e81e4dc316791bdc003e Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 10:27:30 2010 +1100 s4-dsdb: implement refresh of RID Set pool for a local RID Manager when we run out of RIDs in our RID Set pool then grab a new one from the RID Manager object Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 53d10d139e569f9132193e8f8c268638eab30a0b Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 09:26:17 2010 +1100 s4-provision: don't hard wire the creation of the RID Set object We now create it automatically in the samldb module when the first user is created. The creation of the dns user also had to move to the _modify.ldif as it now relies on the fSMO role being setup for the RID Manager Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 1053ce529d2ed833edd9343c36f28b4ba788db96 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 09:24:29 2010 +1100 s4-dsdb: implement creation of the RID Set object when we are the RID Manager we can create our own RID Set object when the first user is created commit 439ee5aaaeb9036d2db69d512bcbc7e88f4a601e Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 09:23:29 2010 +1100 s4-dsdb: use dsdb_next_callback() We can't just use the callers callback directly otherwise the ldb_module_done() is never called on the parent request, as the child request is passed to the callback. Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit d0bd6e7ea5a6cc760916acd4f549ac7652c46e05 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 09:21:21 2010 +1100 s4-dsdb: added dsdb_next_callback() This should be used when you create a sub request and just want the parent requests callback to be called when done. Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit e6f14ac2c4f0d1eaae93980b3628250de945e71e Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 09:20:35 2010 +1100 s4-dsdb: added dsdb_module_constrainted_update_integer() This provides a convenient way to update a integer attribute with a constrained delete/add Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit f24011059b8b656eeb32c2724c0350f135dd2309 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 09:19:04 2010 +1100 s4-dsdb: added dsdb_module_reference_dn() This adds a module callable version of samdb_reference_dn(), which finds a DN via a reference link Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit f137f93e098b23b48d3e7bc9e0bbc46f04b29cbd Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 09:17:19 2010 +1100 s4-dsdb: added dsdb_module_add() added a ldb add function for modules Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit fcfb5d7b63293a13fa4984c0a4502a682a5a02a9 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Jan 6 09:15:35 2010 +1100 s4-provision: allow provision modifies to add records we need to recognise a changetype of 'add' commit 226460d543892fcfcb569297bc450648f4fc4f0f Author: Andrew Tridgell <tri...@samba.org> Date: Tue Jan 5 18:23:46 2010 +1100 s4-dsdb: move the RID allocation logic into ridalloc.c This will end up having the RID Manager logic as well, so all the RID pool allocation logic is in one spot Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 7f90a05c66df5483e949b109b9018ee70b9c5d27 Author: Andrew Tridgell <tri...@samba.org> Date: Tue Jan 5 17:09:51 2010 +1100 s4-samldb: use RID Set to allocate user/group RIDs This is the first step towards DRS-friendly RID allocation. We now get the next rid from the RID Set object Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 5eb3b919c59b62065db32e0575fcd1d84a64e3db Author: Andrew Tridgell <tri...@samba.org> Date: Tue Jan 5 17:08:56 2010 +1100 s4-provision: the DC object itself needs a fixed objectSID We can't allocate a objectSID until we have rIDSetReferences, but that is in the DC object, so we have to force the objectSID of the DC Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 2bad107aa1110bd003aaca91c3214fe2c6b07197 Author: Andrew Tridgell <tri...@samba.org> Date: Tue Jan 5 17:07:51 2010 +1100 s4-dsdb: added samdb_rid_set_dn() This returns the DN of our RID Set object Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit a1362492ab71a8853d2292d55b35e5c90de9448e Author: Andrew Tridgell <tri...@samba.org> Date: Tue Jan 5 15:20:10 2010 +1100 s4-provision: added an initial RID Set We will allocate RIDs from this set Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit bd6d0e93795589f18894b4e3837970436969fc60 Author: Andrew Tridgell <tri...@samba.org> Date: Tue Jan 5 15:12:16 2010 +1100 s4-ldb: added nice ldif display of 64 bit ranges for RIDs commit fbc3a0fe6248871d6e8bed6947559c10f762954f Author: Andrew Tridgell <tri...@samba.org> Date: Mon Jan 4 14:13:21 2010 +1100 s4-dsdb: added samdb_reference_dn() This returns a 'reference' DN, which is a link to a DN, from the specified object. It is then used by samdb_server_reference_dn() which returns the serverReference DN, and samdb_rid_manager_dn() which returns the rIDManagerReference DN. ----------------------------------------------------------------------- Summary of changes: librpc/gen_ndr/drsuapi.h | 6 + librpc/gen_ndr/ndr_drsuapi.c | 3 + librpc/idl/drsuapi.idl | 3 + source4/dsdb/common/util.c | 103 ++++- source4/dsdb/config.mk | 3 +- source4/dsdb/repl/drepl_out_helpers.c | 322 ++++++----- source4/dsdb/repl/drepl_out_pull.c | 54 +- source4/dsdb/repl/drepl_partitions.c | 6 +- source4/dsdb/repl/drepl_periodic.c | 2 + source4/dsdb/repl/drepl_ridalloc.c | 282 +++++++++ source4/dsdb/repl/drepl_service.c | 1 + source4/dsdb/repl/drepl_service.h | 11 +- source4/dsdb/samdb/ldb_modules/acl.c | 38 +- source4/dsdb/samdb/ldb_modules/config.mk | 21 +- source4/dsdb/samdb/ldb_modules/instancetype.c | 3 +- source4/dsdb/samdb/ldb_modules/lazy_commit.c | 13 +- source4/dsdb/samdb/ldb_modules/partition.c | 12 +- source4/dsdb/samdb/ldb_modules/pdc_fsmo.c | 4 +- source4/dsdb/samdb/ldb_modules/ridalloc.c | 646 +++++++++++++++++++++ source4/dsdb/samdb/ldb_modules/samba3sid.c | 197 +++++++ source4/dsdb/samdb/ldb_modules/samba_dsdb.c | 77 +--- source4/dsdb/samdb/ldb_modules/samldb.c | 637 ++------------------ source4/dsdb/samdb/ldb_modules/schema_data.c | 5 + source4/dsdb/samdb/ldb_modules/schema_load.c | 8 +- source4/dsdb/samdb/ldb_modules/show_deleted.c | 4 +- source4/dsdb/samdb/ldb_modules/tests/samba3sam.py | 17 +- source4/dsdb/samdb/ldb_modules/util.c | 192 ++++++ source4/dsdb/samdb/ldb_modules/util.h | 5 +- source4/dsdb/samdb/samdb.h | 8 + source4/dsdb/schema/schema.h | 1 + source4/dsdb/schema/schema_init.c | 56 +- source4/dsdb/schema/schema_query.c | 30 +- source4/dsdb/schema/schema_syntax.c | 180 ++++-- source4/lib/events/events.h | 1 + source4/lib/events/tevent_s4.c | 15 +- source4/lib/ldb-samba/ldif_handlers.c | 118 ++++ source4/lib/ldb-samba/ldif_handlers.h | 1 + source4/lib/ldb/ldb_tdb/ldb_index.c | 36 +- source4/lib/ldb/ldb_tdb/ldb_tdb.c | 3 +- source4/lib/ldb/tests/python/acl.py | 3 +- source4/lib/ldb/tests/python/sec_descriptor.py | 116 +++-- source4/lib/messaging/messaging.h | 1 + source4/libnet/libnet_vampire.c | 4 +- source4/rpc_server/drsuapi/getncchanges.c | 132 ++++- source4/scripting/bin/setup_dns.sh | 2 +- source4/scripting/devel/tmpfs.sh | 13 + source4/scripting/python/samba/__init__.py | 5 +- source4/scripting/python/samba/provision.py | 49 +- source4/setup/provision.ldif | 2 +- source4/setup/provision_self_join.ldif | 16 +- source4/setup/provision_self_join_modify.ldif | 14 + source4/setup/schema_samba4.ldif | 1 + source4/smbd/process_prefork.c | 8 +- source4/smbd/process_standard.c | 6 + source4/smbd/server.c | 3 + 55 files changed, 2431 insertions(+), 1068 deletions(-) create mode 100644 source4/dsdb/repl/drepl_ridalloc.c create mode 100644 source4/dsdb/samdb/ldb_modules/ridalloc.c create mode 100644 source4/dsdb/samdb/ldb_modules/samba3sid.c create mode 100755 source4/scripting/devel/tmpfs.sh Changeset truncated at 500 lines: diff --git a/librpc/gen_ndr/drsuapi.h b/librpc/gen_ndr/drsuapi.h index a5016fa..8596bf3 100644 --- a/librpc/gen_ndr/drsuapi.h +++ b/librpc/gen_ndr/drsuapi.h @@ -336,6 +336,7 @@ enum drsuapi_DsAttributeId DRSUAPI_ATTRIBUTE_governsID=(int)(0x00020016), DRSUAPI_ATTRIBUTE_mustContain=(int)(0x00020018), DRSUAPI_ATTRIBUTE_mayContain=(int)(0x00020019), + DRSUAPI_ATTRIBUTE_rDNAttId=(int)(0x0002001A), DRSUAPI_ATTRIBUTE_attributeID=(int)(0x0002001e), DRSUAPI_ATTRIBUTE_attributeSyntax=(int)(0x00020020), DRSUAPI_ATTRIBUTE_isSingleValued=(int)(0x00020021), @@ -374,6 +375,7 @@ enum drsuapi_DsAttributeId DRSUAPI_ATTRIBUTE_systemPossSuperiors=(int)(0x000900c3), DRSUAPI_ATTRIBUTE_systemMayContain=(int)(0x000900c4), DRSUAPI_ATTRIBUTE_systemMustContain=(int)(0x000900c5), + DRSUAPI_ATTRIBUTE_systemAuxiliaryClass=(int)(0x000900c6), DRSUAPI_ATTRIBUTE_sAMAccountName=(int)(0x000900dd), DRSUAPI_ATTRIBUTE_sAMAccountType=(int)(0x0009012e), DRSUAPI_ATTRIBUTE_fSMORoleOwner=(int)(0x00090171), @@ -390,6 +392,7 @@ enum drsuapi_DsAttributeId DRSUAPI_ATTRIBUTE_servicePrincipalName=(int)(0x00090303), DRSUAPI_ATTRIBUTE_objectCategory=(int)(0x0009030e), DRSUAPI_ATTRIBUTE_gPLink=(int)(0x0009037b), + DRSUAPI_ATTRIBUTE_transportAddressAttribute=(int)(0x0009037f), DRSUAPI_ATTRIBUTE_msDS_Behavior_Version=(int)(0x000905b3), DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber=(int)(0x000906f6), DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs=(int)(0x0009071c), @@ -408,6 +411,7 @@ enum drsuapi_DsAttributeId #define DRSUAPI_ATTRIBUTE_governsID ( 0x00020016 ) #define DRSUAPI_ATTRIBUTE_mustContain ( 0x00020018 ) #define DRSUAPI_ATTRIBUTE_mayContain ( 0x00020019 ) +#define DRSUAPI_ATTRIBUTE_rDNAttId ( 0x0002001A ) #define DRSUAPI_ATTRIBUTE_attributeID ( 0x0002001e ) #define DRSUAPI_ATTRIBUTE_attributeSyntax ( 0x00020020 ) #define DRSUAPI_ATTRIBUTE_isSingleValued ( 0x00020021 ) @@ -446,6 +450,7 @@ enum drsuapi_DsAttributeId #define DRSUAPI_ATTRIBUTE_systemPossSuperiors ( 0x000900c3 ) #define DRSUAPI_ATTRIBUTE_systemMayContain ( 0x000900c4 ) #define DRSUAPI_ATTRIBUTE_systemMustContain ( 0x000900c5 ) +#define DRSUAPI_ATTRIBUTE_systemAuxiliaryClass ( 0x000900c6 ) #define DRSUAPI_ATTRIBUTE_sAMAccountName ( 0x000900dd ) #define DRSUAPI_ATTRIBUTE_sAMAccountType ( 0x0009012e ) #define DRSUAPI_ATTRIBUTE_fSMORoleOwner ( 0x00090171 ) @@ -462,6 +467,7 @@ enum drsuapi_DsAttributeId #define DRSUAPI_ATTRIBUTE_servicePrincipalName ( 0x00090303 ) #define DRSUAPI_ATTRIBUTE_objectCategory ( 0x0009030e ) #define DRSUAPI_ATTRIBUTE_gPLink ( 0x0009037b ) +#define DRSUAPI_ATTRIBUTE_transportAddressAttribute ( 0x0009037f ) #define DRSUAPI_ATTRIBUTE_msDS_Behavior_Version ( 0x000905b3 ) #define DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber ( 0x000906f6 ) #define DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs ( 0x0009071c ) diff --git a/librpc/gen_ndr/ndr_drsuapi.c b/librpc/gen_ndr/ndr_drsuapi.c index eb89db7..16388e7 100644 --- a/librpc/gen_ndr/ndr_drsuapi.c +++ b/librpc/gen_ndr/ndr_drsuapi.c @@ -1389,6 +1389,7 @@ _PUBLIC_ void ndr_print_drsuapi_DsAttributeId(struct ndr_print *ndr, const char case DRSUAPI_ATTRIBUTE_governsID: val = "DRSUAPI_ATTRIBUTE_governsID"; break; case DRSUAPI_ATTRIBUTE_mustContain: val = "DRSUAPI_ATTRIBUTE_mustContain"; break; case DRSUAPI_ATTRIBUTE_mayContain: val = "DRSUAPI_ATTRIBUTE_mayContain"; break; + case DRSUAPI_ATTRIBUTE_rDNAttId: val = "DRSUAPI_ATTRIBUTE_rDNAttId"; break; case DRSUAPI_ATTRIBUTE_attributeID: val = "DRSUAPI_ATTRIBUTE_attributeID"; break; case DRSUAPI_ATTRIBUTE_attributeSyntax: val = "DRSUAPI_ATTRIBUTE_attributeSyntax"; break; case DRSUAPI_ATTRIBUTE_isSingleValued: val = "DRSUAPI_ATTRIBUTE_isSingleValued"; break; @@ -1427,6 +1428,7 @@ _PUBLIC_ void ndr_print_drsuapi_DsAttributeId(struct ndr_print *ndr, const char case DRSUAPI_ATTRIBUTE_systemPossSuperiors: val = "DRSUAPI_ATTRIBUTE_systemPossSuperiors"; break; case DRSUAPI_ATTRIBUTE_systemMayContain: val = "DRSUAPI_ATTRIBUTE_systemMayContain"; break; case DRSUAPI_ATTRIBUTE_systemMustContain: val = "DRSUAPI_ATTRIBUTE_systemMustContain"; break; + case DRSUAPI_ATTRIBUTE_systemAuxiliaryClass: val = "DRSUAPI_ATTRIBUTE_systemAuxiliaryClass"; break; case DRSUAPI_ATTRIBUTE_sAMAccountName: val = "DRSUAPI_ATTRIBUTE_sAMAccountName"; break; case DRSUAPI_ATTRIBUTE_sAMAccountType: val = "DRSUAPI_ATTRIBUTE_sAMAccountType"; break; case DRSUAPI_ATTRIBUTE_fSMORoleOwner: val = "DRSUAPI_ATTRIBUTE_fSMORoleOwner"; break; @@ -1443,6 +1445,7 @@ _PUBLIC_ void ndr_print_drsuapi_DsAttributeId(struct ndr_print *ndr, const char case DRSUAPI_ATTRIBUTE_servicePrincipalName: val = "DRSUAPI_ATTRIBUTE_servicePrincipalName"; break; case DRSUAPI_ATTRIBUTE_objectCategory: val = "DRSUAPI_ATTRIBUTE_objectCategory"; break; case DRSUAPI_ATTRIBUTE_gPLink: val = "DRSUAPI_ATTRIBUTE_gPLink"; break; + case DRSUAPI_ATTRIBUTE_transportAddressAttribute: val = "DRSUAPI_ATTRIBUTE_transportAddressAttribute"; break; case DRSUAPI_ATTRIBUTE_msDS_Behavior_Version: val = "DRSUAPI_ATTRIBUTE_msDS_Behavior_Version"; break; case DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber: val = "DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber"; break; case DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs: val = "DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs"; break; diff --git a/librpc/idl/drsuapi.idl b/librpc/idl/drsuapi.idl index 3038863..2994958 100644 --- a/librpc/idl/drsuapi.idl +++ b/librpc/idl/drsuapi.idl @@ -447,6 +447,7 @@ interface drsuapi DRSUAPI_ATTRIBUTE_governsID = 0x00020016, DRSUAPI_ATTRIBUTE_mustContain = 0x00020018, DRSUAPI_ATTRIBUTE_mayContain = 0x00020019, + DRSUAPI_ATTRIBUTE_rDNAttId = 0x0002001A, DRSUAPI_ATTRIBUTE_attributeID = 0x0002001e, DRSUAPI_ATTRIBUTE_attributeSyntax = 0x00020020, DRSUAPI_ATTRIBUTE_isSingleValued = 0x00020021, @@ -485,6 +486,7 @@ interface drsuapi DRSUAPI_ATTRIBUTE_systemPossSuperiors = 0x000900c3, DRSUAPI_ATTRIBUTE_systemMayContain = 0x000900c4, DRSUAPI_ATTRIBUTE_systemMustContain = 0x000900c5, + DRSUAPI_ATTRIBUTE_systemAuxiliaryClass = 0x000900c6, DRSUAPI_ATTRIBUTE_sAMAccountName = 0x000900dd, DRSUAPI_ATTRIBUTE_sAMAccountType = 0x0009012e, DRSUAPI_ATTRIBUTE_fSMORoleOwner = 0x00090171, @@ -501,6 +503,7 @@ interface drsuapi DRSUAPI_ATTRIBUTE_servicePrincipalName = 0x00090303, DRSUAPI_ATTRIBUTE_objectCategory = 0x0009030e, DRSUAPI_ATTRIBUTE_gPLink = 0x0009037b, + DRSUAPI_ATTRIBUTE_transportAddressAttribute = 0x0009037f, DRSUAPI_ATTRIBUTE_msDS_Behavior_Version = 0x000905b3, DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber = 0x000906f6, DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs = 0x0009071c, diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c index b8ba26a..70750ca 100644 --- a/source4/dsdb/common/util.c +++ b/source4/dsdb/common/util.c @@ -1521,6 +1521,86 @@ struct ldb_dn *samdb_server_site_dn(struct ldb_context *ldb, TALLOC_CTX *mem_ctx return server_site_dn; } +/* + find a 'reference' DN that points at another object + (eg. serverReference, rIDManagerReference etc) + */ +int samdb_reference_dn(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_dn *base, + const char *attribute, struct ldb_dn **dn) +{ + const char *attrs[2]; + struct ldb_result *res; + int ret; + + attrs[0] = attribute; + attrs[1] = NULL; + + ret = ldb_search(ldb, mem_ctx, &res, base, LDB_SCOPE_BASE, attrs, NULL); + if (ret != LDB_SUCCESS) { + return ret; + } + if (res->count != 1) { + talloc_free(res); + return LDB_ERR_NO_SUCH_OBJECT; + } + + *dn = ldb_msg_find_attr_as_dn(ldb, mem_ctx, res->msgs[0], attribute); + if (!*dn) { + talloc_free(res); + return LDB_ERR_NO_SUCH_ATTRIBUTE; + } + + talloc_free(res); + return LDB_SUCCESS; +} + +/* + find our machine account via the serverReference attribute in the + server DN + */ +int samdb_server_reference_dn(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_dn **dn) +{ + struct ldb_dn *server_dn; + int ret; + + server_dn = samdb_server_dn(ldb, mem_ctx); + if (server_dn == NULL) { + return LDB_ERR_NO_SUCH_OBJECT; + } + + ret = samdb_reference_dn(ldb, mem_ctx, server_dn, "serverReference", dn); + talloc_free(server_dn); + + return ret; +} + +/* + find the RID Manager$ DN via the rIDManagerReference attribute in the + base DN + */ +int samdb_rid_manager_dn(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_dn **dn) +{ + return samdb_reference_dn(ldb, mem_ctx, samdb_base_dn(ldb), "rIDManagerReference", dn); +} + +/* + find the RID Set DN via the rIDSetReferences attribute in our + machine account DN + */ +int samdb_rid_set_dn(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_dn **dn) +{ + struct ldb_dn *server_ref_dn; + int ret; + + ret = samdb_server_reference_dn(ldb, mem_ctx, &server_ref_dn); + if (ret != LDB_SUCCESS) { + return ret; + } + ret = samdb_reference_dn(ldb, mem_ctx, server_ref_dn, "rIDSetReferences", dn); + talloc_free(server_ref_dn); + return ret; +} + const char *samdb_server_site_name(struct ldb_context *ldb, TALLOC_CTX *mem_ctx) { const struct ldb_val *val = ldb_dn_get_rdn_val(samdb_server_site_dn(ldb, mem_ctx)); @@ -2353,16 +2433,20 @@ int dsdb_search_dn_with_deleted(struct ldb_context *ldb, /* - use a DN to find a GUID + use a DN to find a GUID with a given attribute name */ -int dsdb_find_guid_by_dn(struct ldb_context *ldb, - struct ldb_dn *dn, struct GUID *guid) +int dsdb_find_guid_attr_by_dn(struct ldb_context *ldb, + struct ldb_dn *dn, const char *attribute, + struct GUID *guid) { int ret; struct ldb_result *res; - const char *attrs[] = { "objectGUID", NULL }; + const char *attrs[2]; TALLOC_CTX *tmp_ctx = talloc_new(ldb); + attrs[0] = attribute; + attrs[1] = NULL; + ret = dsdb_search_dn_with_deleted(ldb, tmp_ctx, &res, dn, attrs); if (ret != LDB_SUCCESS) { talloc_free(tmp_ctx); @@ -2372,11 +2456,20 @@ int dsdb_find_guid_by_dn(struct ldb_context *ldb, talloc_free(tmp_ctx); return LDB_ERR_NO_SUCH_OBJECT; } - *guid = samdb_result_guid(res->msgs[0], "objectGUID"); + *guid = samdb_result_guid(res->msgs[0], attribute); talloc_free(tmp_ctx); return LDB_SUCCESS; } +/* + use a DN to find a GUID + */ +int dsdb_find_guid_by_dn(struct ldb_context *ldb, + struct ldb_dn *dn, struct GUID *guid) +{ + return dsdb_find_guid_attr_by_dn(ldb, dn, "objectGUID", guid); +} + /* diff --git a/source4/dsdb/config.mk b/source4/dsdb/config.mk index 35a0c84..3226c08 100644 --- a/source4/dsdb/config.mk +++ b/source4/dsdb/config.mk @@ -64,7 +64,8 @@ DREPL_SRV_OBJ_FILES = $(addprefix $(dsdbsrcdir)/repl/, \ drepl_partitions.o \ drepl_out_pull.o \ drepl_out_helpers.o \ - drepl_notify.o) + drepl_notify.o \ + drepl_ridalloc.o) $(eval $(call proto_header_template,$(dsdbsrcdir)/repl/drepl_service_proto.h,$(DREPL_SRV_OBJ_FILES:.o=.c))) diff --git a/source4/dsdb/repl/drepl_out_helpers.c b/source4/dsdb/repl/drepl_out_helpers.c index 722db4f..5666a66 100644 --- a/source4/dsdb/repl/drepl_out_helpers.c +++ b/source4/dsdb/repl/drepl_out_helpers.c @@ -202,81 +202,83 @@ NTSTATUS dreplsrv_out_drsuapi_recv(struct tevent_req *req) } struct dreplsrv_op_pull_source_state { - struct composite_context *creq; - struct dreplsrv_out_operation *op; - - struct dreplsrv_drsuapi_connection *drsuapi; - - bool have_all; - - uint32_t ctr_level; - struct drsuapi_DsGetNCChangesCtr1 *ctr1; - struct drsuapi_DsGetNCChangesCtr6 *ctr6; }; static void dreplsrv_op_pull_source_connect_done(struct tevent_req *subreq); -struct composite_context *dreplsrv_op_pull_source_send(struct dreplsrv_out_operation *op) +struct tevent_req *dreplsrv_op_pull_source_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct dreplsrv_out_operation *op) { - struct composite_context *c; - struct dreplsrv_op_pull_source_state *st; + struct tevent_req *req; + struct dreplsrv_op_pull_source_state *state; struct tevent_req *subreq; - c = composite_create(op, op->service->task->event_ctx); - if (c == NULL) return NULL; - - st = talloc_zero(c, struct dreplsrv_op_pull_source_state); - if (composite_nomem(st, c)) return c; + req = tevent_req_create(mem_ctx, &state, + struct dreplsrv_op_pull_source_state); + if (req == NULL) { + return NULL; + } - st->creq = c; - st->op = op; + state->op = op; - subreq = dreplsrv_out_drsuapi_send(st, - op->service->task->event_ctx, - op->source_dsa->conn); - if (composite_nomem(subreq, c)) return c; - tevent_req_set_callback(subreq, dreplsrv_op_pull_source_connect_done, st); + subreq = dreplsrv_out_drsuapi_send(state, ev, op->source_dsa->conn); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, dreplsrv_op_pull_source_connect_done, req); - return c; + return req; } -static void dreplsrv_op_pull_source_get_changes_send(struct dreplsrv_op_pull_source_state *st); +static void dreplsrv_op_pull_source_get_changes_trigger(struct tevent_req *req); static void dreplsrv_op_pull_source_connect_done(struct tevent_req *subreq) { - struct dreplsrv_op_pull_source_state *st = tevent_req_callback_data(subreq, - struct dreplsrv_op_pull_source_state); - struct composite_context *c = st->creq; + struct tevent_req *req = tevent_req_callback_data(subreq, + struct tevent_req); + NTSTATUS status; - c->status = dreplsrv_out_drsuapi_recv(subreq); + status = dreplsrv_out_drsuapi_recv(subreq); TALLOC_FREE(subreq); - if (!composite_is_ok(c)) return; + if (tevent_req_nterror(req, status)) { + return; + } - dreplsrv_op_pull_source_get_changes_send(st); + dreplsrv_op_pull_source_get_changes_trigger(req); } -static void dreplsrv_op_pull_source_get_changes_recv(struct rpc_request *req); +static void dreplsrv_op_pull_source_get_changes_done(struct rpc_request *rreq); -static void dreplsrv_op_pull_source_get_changes_send(struct dreplsrv_op_pull_source_state *st) +static void dreplsrv_op_pull_source_get_changes_trigger(struct tevent_req *req) { - struct composite_context *c = st->creq; - struct repsFromTo1 *rf1 = st->op->source_dsa->repsFrom1; - struct dreplsrv_service *service = st->op->service; - struct dreplsrv_partition *partition = st->op->source_dsa->partition; - struct dreplsrv_drsuapi_connection *drsuapi = st->op->source_dsa->conn->drsuapi; - struct rpc_request *req; + struct dreplsrv_op_pull_source_state *state = tevent_req_data(req, + struct dreplsrv_op_pull_source_state); + struct repsFromTo1 *rf1 = state->op->source_dsa->repsFrom1; + struct dreplsrv_service *service = state->op->service; + struct dreplsrv_partition *partition = state->op->source_dsa->partition; + struct dreplsrv_drsuapi_connection *drsuapi = state->op->source_dsa->conn->drsuapi; + struct rpc_request *rreq; struct drsuapi_DsGetNCChanges *r; - r = talloc(st, struct drsuapi_DsGetNCChanges); - if (composite_nomem(r, c)) return; + r = talloc(state, struct drsuapi_DsGetNCChanges); + if (tevent_req_nomem(r, req)) { + return; + } r->out.level_out = talloc(r, int32_t); - if (composite_nomem(r->out.level_out, c)) return; + if (tevent_req_nomem(r->out.level_out, req)) { + return; + } r->in.req = talloc(r, union drsuapi_DsGetNCChangesRequest); - if (composite_nomem(r->in.req, c)) return; + if (tevent_req_nomem(r->in.req, req)) { + return; + } r->out.ctr = talloc(r, union drsuapi_DsGetNCChangesCtr); - if (composite_nomem(r->out.ctr, c)) return; + if (tevent_req_nomem(r->out.ctr, req)) { + return; + } r->in.bind_handle = &drsuapi->bind_handle; if (drsuapi->remote_info28.supported_extensions & DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8) { @@ -289,8 +291,8 @@ static void dreplsrv_op_pull_source_get_changes_send(struct dreplsrv_op_pull_sou r->in.req->req8.replica_flags = rf1->replica_flags; r->in.req->req8.max_object_count = 133; r->in.req->req8.max_ndr_size = 1336811; - r->in.req->req8.extended_op = DRSUAPI_EXOP_NONE; - r->in.req->req8.fsmo_info = 0; + r->in.req->req8.extended_op = state->op->extended_op; + r->in.req->req8.fsmo_info = state->op->fsmo_info; r->in.req->req8.partial_attribute_set = NULL; r->in.req->req8.partial_attribute_set_ex= NULL; r->in.req->req8.mapping_ctr.num_mappings= 0; @@ -305,36 +307,42 @@ static void dreplsrv_op_pull_source_get_changes_send(struct dreplsrv_op_pull_sou r->in.req->req5.replica_flags = rf1->replica_flags; r->in.req->req5.max_object_count = 133; r->in.req->req5.max_ndr_size = 1336770; - r->in.req->req5.extended_op = DRSUAPI_EXOP_NONE; - r->in.req->req5.fsmo_info = 0; + r->in.req->req5.extended_op = state->op->extended_op; + r->in.req->req5.fsmo_info = state->op->fsmo_info; } - req = dcerpc_drsuapi_DsGetNCChanges_send(drsuapi->pipe, r, r); - composite_continue_rpc(c, req, dreplsrv_op_pull_source_get_changes_recv, st); + rreq = dcerpc_drsuapi_DsGetNCChanges_send(drsuapi->pipe, r, r); + if (tevent_req_nomem(rreq, req)) { + return; + } + composite_continue_rpc(NULL, rreq, dreplsrv_op_pull_source_get_changes_done, req); } -static void dreplsrv_op_pull_source_apply_changes_send(struct dreplsrv_op_pull_source_state *st, - struct drsuapi_DsGetNCChanges *r, - uint32_t ctr_level, - struct drsuapi_DsGetNCChangesCtr1 *ctr1, - struct drsuapi_DsGetNCChangesCtr6 *ctr6); +static void dreplsrv_op_pull_source_apply_changes_trigger(struct tevent_req *req, + struct drsuapi_DsGetNCChanges *r, + uint32_t ctr_level, + struct drsuapi_DsGetNCChangesCtr1 *ctr1, + struct drsuapi_DsGetNCChangesCtr6 *ctr6); -static void dreplsrv_op_pull_source_get_changes_recv(struct rpc_request *req) +static void dreplsrv_op_pull_source_get_changes_done(struct rpc_request *rreq) { - struct dreplsrv_op_pull_source_state *st = talloc_get_type(req->async.private_data, - struct dreplsrv_op_pull_source_state); - struct composite_context *c = st->creq; - struct drsuapi_DsGetNCChanges *r = talloc_get_type(req->ndr.struct_ptr, + struct tevent_req *req = talloc_get_type(rreq->async.private_data, + struct tevent_req); + NTSTATUS status; + struct drsuapi_DsGetNCChanges *r = talloc_get_type(rreq->ndr.struct_ptr, struct drsuapi_DsGetNCChanges); uint32_t ctr_level = 0; struct drsuapi_DsGetNCChangesCtr1 *ctr1 = NULL; struct drsuapi_DsGetNCChangesCtr6 *ctr6 = NULL; - c->status = dcerpc_ndr_request_recv(req); - if (!composite_is_ok(c)) return; + status = dcerpc_ndr_request_recv(rreq); + if (tevent_req_nterror(req, status)) { + return; + } if (!W_ERROR_IS_OK(r->out.result)) { - composite_error(c, werror_to_ntstatus(r->out.result)); + status = werror_to_ntstatus(r->out.result); + tevent_req_nterror(req, status); return; } @@ -361,38 +369,42 @@ static void dreplsrv_op_pull_source_get_changes_recv(struct rpc_request *req) ctr_level = 6; ctr6 = &r->out.ctr->ctr7.ctr.xpress6.ts->ctr6; } else { - composite_error(c, werror_to_ntstatus(WERR_BAD_NET_RESP)); + status = werror_to_ntstatus(WERR_BAD_NET_RESP); + tevent_req_nterror(req, status); return; } if (!ctr1 && !ctr6) { - composite_error(c, werror_to_ntstatus(WERR_BAD_NET_RESP)); + status = werror_to_ntstatus(WERR_BAD_NET_RESP); + tevent_req_nterror(req, status); return; } if (ctr_level == 6) { if (!W_ERROR_IS_OK(ctr6->drs_error)) { - composite_error(c, werror_to_ntstatus(ctr6->drs_error)); + status = werror_to_ntstatus(ctr6->drs_error); + tevent_req_nterror(req, status); return; } } - dreplsrv_op_pull_source_apply_changes_send(st, r, ctr_level, ctr1, ctr6); + dreplsrv_op_pull_source_apply_changes_trigger(req, r, ctr_level, ctr1, ctr6); } -static void dreplsrv_update_refs_send(struct dreplsrv_op_pull_source_state *st); +static void dreplsrv_update_refs_trigger(struct tevent_req *req); -static void dreplsrv_op_pull_source_apply_changes_send(struct dreplsrv_op_pull_source_state *st, - struct drsuapi_DsGetNCChanges *r, -- Samba Shared Repository