summaryrefslogtreecommitdiff
path: root/source4/dsdb/schema
AgeCommit message (Collapse)AuthorFilesLines
2010-07-02s4/schema: remove unnecessary deletion of dsdb_schema cached pointerAnatoliy Atanasov1-3/+0
This is needed so we can find and free old schemas based using the cached pointer
2010-07-02s4:dsdb Ensure we free old schema copiesAndrew Bartlett1-6/+25
It was reported by aatanasov that we kept around one whole schema per modification made. This does not fix that, but I hope moves us closer to a fix The most important part of the fix is that: - if (schema_out != schema_in) { - talloc_unlink(schema_in, ldb); - } was the wrong way around. This is now handled in the schema_set calls. Andrew Bartlett
2010-06-30s4:schema/schema_set.c - free LDB message diffsAnatoliy Atanasov1-0/+2
Especially the "free"s after "ldb_msg_diff" are very important since the diff message is allocated on the long-living LDB context. Signed-off-by: Matthias Dieter Wallnöfer <mdw@samba.org>
2010-06-30s4:dsdb Fix possible schema segfaults for DRS-replication based schemaAndrew Bartlett1-17/+13
The problem here is that if the schema has been modified on the source domain, there may be attributes that appear over DRS with 0 values (to indicate that any existing values on the target should be deleted). This would confuse the previous version of this macro. Andrew Bartlett
2010-06-21s4/dsdb: msg_idx->dn should be allocated in msg_idx mem contextKamen Mazdrashki1-1/+1
2010-06-21s4/dsdb: Move schema accessors cleanup in separate functionKamen Mazdrashki1-18/+21
This way dsdb_setup_sorted_accessors() will free memory allocated for accessor arrays correctly in case of failure,
2010-06-21s4/dsdb-schema: Index attributes on msDS-IntId valueKamen Mazdrashki3-7/+28
O(n) search for dsdb_attribute by msDS-IntId value was replaced by binary-search in ordered index. I've choosen the approach of separate index on msDS-IntId values as I think it is more clear what we are searching for. And it should little bit faster as we can clearly determine in which index to perform the search based on ATTID value - ATTIDs based on prefixMap and ATTIDs based on msDS-IntId are in separate ranges. Other way to implement this index was to merge msDS-IntId values in attributeID_id index. This led me to a shorted but not so obvious implementation.
2010-06-15s4:provision Allow a specific prefix map to be loaded into a new schema ↵Andrew Bartlett1-1/+1
provision This allows the prefixMap from a DRS server to be used when loading the schema from the local files. This helps us then import other schema with this map in place. Andrew Bartlett Signed-off-by: Kamen Mazdrashki <kamenim@samba.org>
2010-06-15s4:dsdb Allow the setting an override on the schemaAndrew Bartlett2-6/+23
The change here is to try and convert a per the previous rules, but if we don't know a particular OID as a attributeID, then store it as an OID (for example). This allows known values to be converted as before, but still copes with unknown values. Andrew Bartlett Signed-off-by: Kamen Mazdrashki <kamenim@samba.org>
2010-06-15s4:dsdb Use the schema from our local provision to decode the schemaAndrew Bartlett1-367/+0
This works on the assumption that the schema partition can only contain schema objects. We may need to pass down some kind of 'relax' to the DRS -> LDB conversion code, so that it allows incomplete conversions, so that we don't fail if a new attribute is present, and we can't decode it. This would then be resolved the second time we do the conversion. Andrew Bartlett Signed-off-by: Kamen Mazdrashki <kamenim@samba.org>
2010-06-12s4:dsdb Simplfy match of objectclass in dsdb_schema_set_el_from_ldb_msgAndrew Bartlett1-17/+4
There is no need to do a full ldb_match_msg() for a simple case insensitive string. Andrew Bartlett
2010-06-12s4:dsdb Provide a function to convert from DRS prefix maps to the LDB prefixmapAndrew Bartlett1-12/+21
This allows us to push a prefixmap directly into the schema we generate in the provision code. Andrew Bartlett
2010-06-12s4:dsdb Add more debugs to help track down failures to parse the prefixmapAndrew Bartlett1-5/+20
2010-06-12s4:dsdb Put back the reference and set_attributes in dsdb_reference_schemaAndrew Bartlett1-0/+9
I'm not sure why I removed these in fe3e1af901c970f738bee92baac5d7d4f5736e17 Andrew Bartlett
2010-06-07s4:remove the "validate_update" LDB module - the task is now handled by the ↵Matthias Dieter Wallnöfer1-13/+0
far more complete "objectclass_attrs" LDB module
2010-05-18s3: Remove use of iconv_convenience.Jelmer Vernooij2-4/+1
2010-05-18Finish removal of iconv_convenience in public API's.Jelmer Vernooij4-34/+21
2010-05-03Replaced DS_FLAG_ATTR_IS_CRITICAL with SCHEMA_FLAG_ATTR_IS_CRITICAL.Nadezhda Ivanova1-1/+1
2010-05-03Added a function to check if an attribute can belong to a filtered replica.Nadezhda Ivanova1-0/+110
2010-04-29s4/dsdb: schemaInfo revision may be 0Kamen Mazdrashki1-5/+1
In case schemaInfo value is still not set, WinAD supplies schemaInfo blob with revision = 0 and GUID_ZERO
2010-04-29s4/dsdb: remove unused dsdb_schema_info_create() functionKamen Mazdrashki1-35/+0
2010-04-29s4/dsdb: Update Schema cache with updated schemaInfo valueKamen Mazdrashki1-4/+9
Error checking is simplified and my leave leeks. I did it this way to make code more readable, and if we get error in those lines, it will be WERR_NOMEM in which case we are in a much deeper troubles than delayed freeing of few bytes.
2010-04-29s4/samldb: Create initial schemaInfo value if it doesn't exists yetKamen Mazdrashki1-7/+30
2010-04-29s4/dsdb: Use default schemaInfo value when no such value is givenKamen Mazdrashki3-16/+25
Having no value for schemaInfo is totally OK as it turns out. In such cases, we should use a default value with all fields set to 0.
2010-04-29Revert "s4/dsdb: Set schemaInfo attribute value during provisioning"Kamen Mazdrashki1-49/+0
This reverts commit 8149094eddebd9a0e8b7c123c2ed54d00164bb26. Windows implementation does not set schemaInfo attribute value until first Schema update request. This way, newly provisioned forest returns no schemaInfo value. I think it won't be bad for us to have this value preset, but I want to mimic Win AD behavior as close as possible.
2010-04-22s4-dsdb: added dsdb_get_extended_dn_sid()Andrew Tridgell1-12/+5
This will be used by the RODC code Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-04-21s4-schema: allow revision numbers of zeroAndrew Tridgell1-6/+3
w2k8r2 sends a revision of zero in the initial schema replication during a net vampire Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-04-13Revert "s4:prefer "samdb_*_dn" basedn calls over the "ldb_get_*_dn" functions"Matthias Dieter Wallnöfer2-4/+4
We should use the "ldb_get_*_basedn" calls since they are available in the LDB library.
2010-04-10s4:dsdb Don't use the permissive modify control on schemaInfo updatesAndrew Bartlett1-2/+2
The use of 'replace' is enough to wipe out the old value, whatever it is, we don't need to set 'permissive modify' too. Additionally, this seems to be causing trouble for the OpenLDAP backend Andrew Bartlett
2010-04-09s4/dsdb: Set schemaInfo attribute value during provisioningKamen Mazdrashki1-0/+49
After provisioning new Forest, schemaInfo should be set to a value with revision=1 and current invocation_id
2010-04-09s4/dsdb: split writing of schemaInfo blob in two partsKamen Mazdrashki1-21/+46
ldb_msg preparation is moved into separate function so that it can be used for implementing schemaInfo updates both on module stack (dsdb_module_... functions) and directly on ldb_context
2010-04-09s4/dsdb: Let caller to control if valid invocationId is critical or ↵Kamen Mazdrashki3-3/+8
zero-guid is acceptable
2010-04-09s4/dsdb: Use dsdb_schema_info object to create default schemaInfo valuesKamen Mazdrashki2-7/+22
2010-04-09s4/dsdb: Use dsdb_schema_info object to verify schema_info blobsKamen Mazdrashki2-21/+20
2010-04-09s4/dsdb: dsdb_schema_info object implementationKamen Mazdrashki1-0/+383
2010-04-09s4/dsdb: Define dsdb representation for schemaInfo attributeKamen Mazdrashki1-0/+8
2010-03-22s4:dsdb Add a shortcut sequence number for schema reloadsAndrew Bartlett1-0/+2
This uses the ldb sequence number, in a hope to detect an unchanged schema quicker. Andrew Bartlett
2010-03-22s4:dsdb Rework schema loading and add schema reloadingAndrew Bartlett1-25/+55
This commit reworks Samba4's schema loading code to detect when it needs to reload the schema. This is done by watching the @REPLCHANGED special DN. The reload happens by means of a callback, which is only set when the schema is loaded from the ldb - not when loaded from an LDIF file or DRS. We also rework the global schema handling - instead of storing the pointer to the global schema in each ldb, we store a flag indicating that the global schema should be returned at run time. This makes it much easier to switch to a new global schema. Andrew Bartlett
2010-03-22s4:schema Expand the schema structureAndrew Bartlett2-0/+11
We now store the location of the schema in the schema, and provide hooks for a future schema reloading mechanism. Andrew Bartlett
2010-03-16s4:dsdb Change dsdb_get_schema() callers to use new talloc argumentAndrew Bartlett2-2/+2
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-16s4:dsdb Add a memory context for dsdb_get_schema()Andrew Bartlett1-3/+9
When specified, we talloc_reference onto this context to ensure that pointers found in it are valid for the life of the objects they are placed into. (Such as the string form of LDAP attributes). Andrew Bartlett
2010-03-07s4:schema - Change also here counters to "unsigned" where neededMatthias Dieter Wallnöfer7-26/+27
Counters which are used in the way "for (i = 0; array[i] != NULL; i++)" I modified to "unsigned" since for sure we don't want to have negative array indexes there.
2010-03-07s4:schema_syntax.c - Change also here counters to "unsigned" where neededMatthias Dieter Wallnöfer1-44/+44
Counters which are used in the way "for (i = 0; array[i] != NULL; i++)" I modified to "unsigned" since for sure we don't want to have negative array indexes there. There were many counter variables typed "uint32_t". This isn't fully correct since those count LDB objects. The amount is saved in a "num_*" variable which is "unsigned" without a bitlength specification. Therefore change also these counters to be plain "unsigned".
2010-02-26s4:dsdb/schema: fix validation of DNsStefan Metzmacher1-1/+0
ldb_dn_extended_filter() removes all but the listed components, I didn't noticed that when writting the code. Doing a ldb_dn_remove_extended_components(dn2) is wrong. This was hidden by some bugs in the ldb_dn code. metze
2010-02-16s4-dsdb: change samdb_replace() to dsdb_replace() and allow for dsdb_flagsAndrew Tridgell2-4/+5
This allows for controls to be added easily where they are needed.
2010-02-13s4-dsdb: use TYPESAFE_QSORT() in dsdb codeAndrew Tridgell2-23/+12
2010-01-13s4:dsdb/schema: add dsdb_syntax_OID_validate_ldb()Stefan Metzmacher1-13/+50
This is a very heavy weight way of checking this syntax, but it's very complex and using the existing function should be ok for now. We can optimize it later. metze
2010-01-13s4:dsdb/schema: add dsdb_syntax_DN_STRING_validate_ldb()Stefan Metzmacher1-1/+48
metze
2010-01-13s4:dsdb/schema: add dsdb_syntax_DN_BINARY_validate_ldb()Stefan Metzmacher1-2/+49
metze
2010-01-13s4:dsdb/schema: add dsdb_syntax_DN_validate_ldb()Stefan Metzmacher1-1/+139
metze