diff options
-rw-r--r-- | source3/include/idmap_autorid_tdb.h | 12 | ||||
-rw-r--r-- | source3/winbindd/idmap_autorid_tdb.c | 47 |
2 files changed, 50 insertions, 9 deletions
diff --git a/source3/include/idmap_autorid_tdb.h b/source3/include/idmap_autorid_tdb.h index acf402690c..2d2d01ade3 100644 --- a/source3/include/idmap_autorid_tdb.h +++ b/source3/include/idmap_autorid_tdb.h @@ -109,6 +109,18 @@ NTSTATUS idmap_autorid_delete_range_by_num(struct db_context *db, NTSTATUS idmap_autorid_init_hwm(struct db_context *db, const char *hwm); /** + * Open and possibly create the autorid database. + */ +NTSTATUS idmap_autorid_db_open(const char *path, + TALLOC_CTX *mem_ctx, + struct db_context **db); + +/** + * Initialize the high watermark records in the database. + */ +NTSTATUS idmap_autorid_init_hwms(struct db_context *db); + +/** * Initialize an idmap_autorid database. * After this function has successfully completed, the following are true: * - the database exists diff --git a/source3/winbindd/idmap_autorid_tdb.c b/source3/winbindd/idmap_autorid_tdb.c index cbd9080146..21e15089e9 100644 --- a/source3/winbindd/idmap_autorid_tdb.c +++ b/source3/winbindd/idmap_autorid_tdb.c @@ -699,10 +699,10 @@ NTSTATUS idmap_autorid_delete_range_by_num(struct db_context *db, return status; } -/* - * open and initialize the database which stores the ranges for the domains +/** + * Open and possibly create the database. */ -NTSTATUS idmap_autorid_db_init(const char *path, +NTSTATUS idmap_autorid_db_open(const char *path, TALLOC_CTX *mem_ctx, struct db_context **db) { @@ -722,19 +722,48 @@ NTSTATUS idmap_autorid_db_init(const char *path, return NT_STATUS_UNSUCCESSFUL; } - /* Initialize high water mark for the currently used range to 0 */ + return status; +} + +/** + * Initialize the high watermark records in the database. + */ +NTSTATUS idmap_autorid_init_hwms(struct db_context *db) +{ + NTSTATUS status; - status = idmap_autorid_init_hwm(*db, HWM); - NT_STATUS_NOT_OK_RETURN(status); + status = idmap_autorid_init_hwm(db, HWM); + if (!NT_STATUS_IS_OK(status)) { + return status; + } - status = idmap_autorid_init_hwm(*db, ALLOC_HWM_UID); - NT_STATUS_NOT_OK_RETURN(status); + status = idmap_autorid_init_hwm(db, ALLOC_HWM_UID); + if (!NT_STATUS_IS_OK(status)) { + return status; + } - status = idmap_autorid_init_hwm(*db, ALLOC_HWM_GID); + status = idmap_autorid_init_hwm(db, ALLOC_HWM_GID); return status; } +NTSTATUS idmap_autorid_db_init(const char *path, + TALLOC_CTX *mem_ctx, + struct db_context **db) +{ + NTSTATUS status; + + status = idmap_autorid_db_open(path, mem_ctx, db); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + status = idmap_autorid_init_hwms(*db); + return status; +} + + + struct idmap_autorid_fetch_config_state { TALLOC_CTX *mem_ctx; char *configstr; |