idmap_autorid: add new function idmap_autorid_setrange()
authorMichael Adam <obnox@samba.org>
Wed, 4 Sep 2013 15:43:28 +0000 (17:43 +0200)
committerMichael Adam <obnox@samba.org>
Tue, 1 Oct 2013 22:06:23 +0000 (00:06 +0200)
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>
source3/include/idmap_autorid_tdb.h
source3/winbindd/idmap_autorid_tdb.c

index 6ac56b31b976d70ffb10601499642cd1d795c247..6f741966d6ad670fd5b7dcb6dee029ab8d57b129 100644 (file)
@@ -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,
index e5fccae551db2954cbcccc2b80d7741e9ef19036..4220a9c78768a6451ed99c2799ee5306e1d4ab42 100644 (file)
@@ -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)
 {