mirror of
https://github.com/samba-team/samba.git
synced 2025-01-22 22:04:08 +03:00
idmap_autorid_tdb: add idmap_autorid_getconfigstr()
Pair-Programmed-With: Atul Kulkarni <atul.kulkarni@in.ibm.com> Signed-off-by: Michael Adam <obnox@samba.org> Signed-off-by: Atul Kulkarni <atul.kulkarni@in.ibm.com> Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
parent
f80f43c772
commit
173cdfe0a4
@ -69,4 +69,10 @@ struct autorid_global_config *idmap_autorid_loadconfig(struct db_context *db,
|
||||
NTSTATUS idmap_autorid_saveconfig(struct db_context *db,
|
||||
struct autorid_global_config *cfg);
|
||||
|
||||
/**
|
||||
* get the range config string stored in the database
|
||||
*/
|
||||
NTSTATUS idmap_autorid_getconfigstr(struct db_context *db, TALLOC_CTX *mem_ctx,
|
||||
char **result);
|
||||
|
||||
#endif /* _IDMAP_AUTORID_H_ */
|
||||
|
@ -207,6 +207,60 @@ NTSTATUS idmap_autorid_db_init(const char *path,
|
||||
return status;
|
||||
}
|
||||
|
||||
struct idmap_autorid_fetch_config_state {
|
||||
TALLOC_CTX *mem_ctx;
|
||||
char *configstr;
|
||||
};
|
||||
|
||||
static void idmap_autorid_config_parser(TDB_DATA key, TDB_DATA value,
|
||||
void *private_data)
|
||||
{
|
||||
struct idmap_autorid_fetch_config_state *state;
|
||||
|
||||
state = (struct idmap_autorid_fetch_config_state *)private_data;
|
||||
|
||||
/*
|
||||
* strndup because we have non-nullterminated strings in the db
|
||||
*/
|
||||
state->configstr = talloc_strndup(
|
||||
state->mem_ctx, (const char *)value.dptr, value.dsize);
|
||||
}
|
||||
|
||||
NTSTATUS idmap_autorid_getconfigstr(struct db_context *db, TALLOC_CTX *mem_ctx,
|
||||
char **result)
|
||||
{
|
||||
TDB_DATA key;
|
||||
NTSTATUS status;
|
||||
struct idmap_autorid_fetch_config_state state;
|
||||
|
||||
if (result == NULL) {
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
key = string_term_tdb_data(CONFIGKEY);
|
||||
|
||||
state.mem_ctx = mem_ctx;
|
||||
state.configstr = NULL;
|
||||
|
||||
status = dbwrap_parse_record(db, key, idmap_autorid_config_parser,
|
||||
&state);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(1, ("Error while retrieving config: %s\n",
|
||||
nt_errstr(status)));
|
||||
return status;
|
||||
}
|
||||
|
||||
if (state.configstr == NULL) {
|
||||
DEBUG(1, ("Error while retrieving config\n"));
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
DEBUG(5, ("found CONFIG: %s\n", state.configstr));
|
||||
|
||||
*result = state.configstr;
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
struct autorid_global_config *idmap_autorid_loadconfig(struct db_context *db,
|
||||
TALLOC_CTX *ctx)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user