s3:idmap_tdb2: remove use of idmap_tdb2_state from idmap_tdb2_allocate_id
authorMichael Adam <obnox@samba.org>
Wed, 16 Jun 2010 13:31:55 +0000 (15:31 +0200)
committerMichael Adam <obnox@samba.org>
Sat, 14 Aug 2010 00:10:43 +0000 (02:10 +0200)
idmap_tdb2_state should actually be called idmap_tdb2_alloc_context.
This is being removed as the idmap and allocation is moved together.
We use the idmap_tdb2_context * that is sitting in dom->private_data.
This contains the same ranges as those in the state anyways.
Later, when we can also allocate for named domains, this will become
necessary anyways.

source3/winbindd/idmap_tdb2.c

index 0ea84c697e96877b8b55fc80e338ac25a9b1b11d..1d02162a79d038c295823ecdaaaeaaa2c981cb99 100644 (file)
@@ -242,31 +242,33 @@ done:
        return ret;
 }
 
-static NTSTATUS idmap_tdb2_allocate_id(struct unixid *xid)
+static NTSTATUS idmap_tdb2_allocate_id(struct idmap_domain *dom,
+                                      struct unixid *xid)
 {
        const char *hwmkey;
        const char *hwmtype;
        uint32_t high_hwm;
        uint32_t hwm = 0;
        NTSTATUS status;
+       struct idmap_tdb2_context *ctx;
        struct idmap_tdb2_allocate_id_context state;
 
        status = idmap_tdb2_open_db();
        NT_STATUS_NOT_OK_RETURN(status);
 
+       ctx = talloc_get_type(dom->private_data, struct idmap_tdb2_context);
+
        /* Get current high water mark */
        switch (xid->type) {
 
        case ID_TYPE_UID:
                hwmkey = HWM_USER;
                hwmtype = "UID";
-               high_hwm = idmap_tdb2_state.high_uid;
                break;
 
        case ID_TYPE_GID:
                hwmkey = HWM_GROUP;
                hwmtype = "GID";
-               high_hwm = idmap_tdb2_state.high_gid;
                break;
 
        default:
@@ -274,6 +276,8 @@ static NTSTATUS idmap_tdb2_allocate_id(struct unixid *xid)
                return NT_STATUS_INVALID_PARAMETER;
        }
 
+       high_hwm = ctx->filter_high_id;
+
        state.hwm = hwm;
        state.high_hwm = high_hwm;
        state.hwmtype = hwmtype;
@@ -311,7 +315,7 @@ static NTSTATUS idmap_tdb2_get_new_id(struct idmap_domain *dom,
                return NT_STATUS_NOT_IMPLEMENTED;
        }
 
-       ret = idmap_tdb2_allocate_id(id);
+       ret = idmap_tdb2_allocate_id(dom, id);
 
        return ret;
 }