From 639728a29873e4cf59dfa149a231eae353f3753a Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 22 Mar 2010 15:41:51 +1100 Subject: 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 --- source4/dsdb/schema/schema.h | 9 +++++++++ source4/dsdb/schema/schema_init.c | 2 ++ 2 files changed, 11 insertions(+) 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, -- cgit