diff options
author | Andrew Bartlett <abartlet@samba.org> | 2010-03-22 15:41:51 +1100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2010-03-22 20:24:41 +1100 |
commit | 639728a29873e4cf59dfa149a231eae353f3753a (patch) | |
tree | b415f8c3cbae1c1d3ce1ebc6c177780ff8b35c21 /source4/dsdb/schema | |
parent | 775c5ec1c57b4acf61c1c750c4832f64defcb5b6 (diff) | |
download | samba-639728a29873e4cf59dfa149a231eae353f3753a.tar.gz samba-639728a29873e4cf59dfa149a231eae353f3753a.tar.bz2 samba-639728a29873e4cf59dfa149a231eae353f3753a.zip |
s4:schema Expand the schema structure
We now store the location of the schema in the schema, and provide
hooks for a future schema reloading mechanism.
Andrew Bartlett
Diffstat (limited to 'source4/dsdb/schema')
-rw-r--r-- | source4/dsdb/schema/schema.h | 9 | ||||
-rw-r--r-- | source4/dsdb/schema/schema_init.c | 2 |
2 files changed, 11 insertions, 0 deletions
diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h index fb1bd3cf91..b5334c7313 100644 --- a/source4/dsdb/schema/schema.h +++ b/source4/dsdb/schema/schema.h @@ -167,6 +167,7 @@ struct dsdb_class { struct dsdb_schema { + struct ldb_dn *base_dn; struct dsdb_schema_prefixmap *prefixmap; @@ -180,6 +181,9 @@ struct dsdb_schema { */ const char *schema_info; + /* We can also tell the schema version from the USN on the partition */ + uint64_t loaded_usn; + struct dsdb_attribute *attributes; struct dsdb_class *classes; @@ -204,6 +208,11 @@ struct dsdb_schema { } fsmo; struct smb_iconv_convenience *iconv_convenience; + + /* Was this schema loaded from ldb (if so, then we will reload it when we detect a change in ldb) */ + struct ldb_module *loaded_from_module; + struct dsdb_schema *(*refresh_fn)(struct ldb_module *module, struct dsdb_schema *schema, bool is_global_schema); + bool refresh_in_progress; }; enum dsdb_attr_list_query { diff --git a/source4/dsdb/schema/schema_init.c b/source4/dsdb/schema/schema_init.c index 949c1ea069..c7fcdaecdc 100644 --- a/source4/dsdb/schema/schema_init.c +++ b/source4/dsdb/schema/schema_init.c @@ -725,6 +725,8 @@ int dsdb_schema_from_ldb_results(TALLOC_CTX *mem_ctx, struct ldb_context *ldb, return LDB_ERR_OPERATIONS_ERROR; } + schema->base_dn = talloc_steal(schema, schema_res->msgs[0]->dn); + prefix_val = ldb_msg_find_ldb_val(schema_res->msgs[0], "prefixMap"); if (!prefix_val) { *error_string = talloc_asprintf(mem_ctx, |