summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2013-09-04 17:43:28 +0200
committerMichael Adam <obnox@samba.org>2013-10-02 00:06:23 +0200
commit4350bfba4624710e66f0d9775d146086054a97cc (patch)
treec565314188e0303079d1553393ec98149808c3cf
parent6e08f5a7924fbf55477a1f53a72f23236c01c1d6 (diff)
downloadsamba-4350bfba4624710e66f0d9775d146086054a97cc.tar.gz
samba-4350bfba4624710e66f0d9775d146086054a97cc.tar.bz2
samba-4350bfba4624710e66f0d9775d146086054a97cc.zip
idmap_autorid: add new function idmap_autorid_setrange()
This allows to directly set a range for a domsid#index pair. It fails if a stored range is found which is different from the requested one. 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>
-rw-r--r--source3/include/idmap_autorid_tdb.h9
-rw-r--r--source3/winbindd/idmap_autorid_tdb.c17
2 files changed, 26 insertions, 0 deletions
diff --git a/source3/include/idmap_autorid_tdb.h b/source3/include/idmap_autorid_tdb.h
index 6ac56b31b9..6f741966d6 100644
--- a/source3/include/idmap_autorid_tdb.h
+++ b/source3/include/idmap_autorid_tdb.h
@@ -65,6 +65,15 @@ NTSTATUS idmap_autorid_getrange(struct db_context *db,
uint32_t *rangenum,
uint32_t *low_id);
+/**
+ * Set a range for a domain#index pair to a given
+ * number. Fail if a different range was already stored.
+ */
+NTSTATUS idmap_autorid_setrange(struct db_context *db,
+ const char *domsid,
+ uint32_t domain_range_index,
+ uint32_t rangenum);
+
NTSTATUS idmap_autorid_init_hwm(struct db_context *db, const char *hwm);
NTSTATUS idmap_autorid_db_init(const char *path,
diff --git a/source3/winbindd/idmap_autorid_tdb.c b/source3/winbindd/idmap_autorid_tdb.c
index e5fccae551..4220a9c787 100644
--- a/source3/winbindd/idmap_autorid_tdb.c
+++ b/source3/winbindd/idmap_autorid_tdb.c
@@ -232,6 +232,23 @@ static NTSTATUS idmap_autorid_addrange(struct db_context *db,
return status;
}
+NTSTATUS idmap_autorid_setrange(struct db_context *db,
+ const char *domsid,
+ uint32_t domain_range_index,
+ uint32_t rangenum)
+{
+ NTSTATUS status;
+ struct autorid_range_config range;
+
+ ZERO_STRUCT(range);
+ fstrcpy(range.domsid, domsid);
+ range.domain_range_index = domain_range_index;
+ range.rangenum = rangenum;
+
+ status = idmap_autorid_addrange(db, &range, false);
+ return status;
+}
+
static NTSTATUS idmap_autorid_getrange_int(struct db_context *db,
struct autorid_range_config *range)
{