r20476: get rid of extra case for uint32 values
authorStefan Metzmacher <metze@samba.org>
Tue, 2 Jan 2007 14:14:35 +0000 (14:14 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:35:57 +0000 (14:35 -0500)
metze
(This used to be commit 13ccd405b5dbb595e5ab67879260462e5a767a8b)

source4/dsdb/schema/schema_init.c
source4/dsdb/schema/schema_syntax.c
source4/libnet/libnet_become_dc.c
source4/librpc/idl/drsuapi.idl

index 23b5fd9dcc130efb6e0fc71ff2117cf723d4793c..41998a16db42c1b135182b855b1a820e6dcf16f1 100644 (file)
@@ -472,9 +472,10 @@ static struct drsuapi_DsReplicaAttribute *dsdb_find_object_attr_name(struct dsdb
 #define GET_UINT32_DS(s, r, attr, p, elem) do { \
        struct drsuapi_DsReplicaAttribute *_a; \
        _a = dsdb_find_object_attr_name(s, r, attr, NULL); \
-       if (_a && _a->value_ctr.uint32.num_values >= 1 \
-           && _a->value_ctr.uint32.values[0].value) { \
-               (p)->elem = *_a->value_ctr.uint32.values[0].value;\
+       if (_a && _a->value_ctr.data_blob.num_values >= 1 \
+           && _a->value_ctr.data_blob.values[0].data \
+           && _a->value_ctr.data_blob.values[0].data->length == 4) { \
+               (p)->elem = IVAL(_a->value_ctr.data_blob.values[0].data->data,0);\
        } else { \
                (p)->elem = 0; \
        } \
index f31dfbda2bd5f5cf23e303f06b4003bf2f7be365..8a2747bd9d4e70f8c3cdf9b5802fc2f18d682fe4 100644 (file)
@@ -162,18 +162,6 @@ static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(const struct dsdb_schema *schema,
 {
        uint32_t i;
 
-switch (attr->attributeID_id) {
-case DRSUAPI_ATTRIBUTE_instanceType:
-case DRSUAPI_ATTRIBUTE_rangeLower:
-case DRSUAPI_ATTRIBUTE_rangeUpper:
-case DRSUAPI_ATTRIBUTE_objectVersion:
-case DRSUAPI_ATTRIBUTE_oMSyntax:
-case DRSUAPI_ATTRIBUTE_searchFlags:
-case DRSUAPI_ATTRIBUTE_systemFlags:
-case DRSUAPI_ATTRIBUTE_msDS_Behavior_Version:
-       return dsdb_syntax_FOOBAR_drsuapi_to_ldb(schema,attr, in, mem_ctx, out);
-}
-
        out->flags      = 0;
        out->name       = talloc_strdup(mem_ctx, attr->lDAPDisplayName);
        W_ERROR_HAVE_NO_MEMORY(out->name);
@@ -585,11 +573,15 @@ static WERROR _dsdb_syntax_OID_obj_drsuapi_to_ldb(const struct dsdb_schema *sche
                const struct dsdb_class *c;
                const char *str;
 
-               if (in->value_ctr.object_class_id.values[i].objectClassId == NULL) {
+               if (in->value_ctr.data_blob.values[i].data == NULL) {
+                       return WERR_FOOBAR;
+               }
+
+               if (in->value_ctr.data_blob.values[i].data->length != 4) {
                        return WERR_FOOBAR;
                }
 
-               v = *in->value_ctr.object_class_id.values[i].objectClassId;
+               v = IVAL(in->value_ctr.data_blob.values[i].data->data, 0);
 
                c = dsdb_class_by_governsID_id(schema, v);
                if (!c) {
@@ -627,11 +619,15 @@ static WERROR _dsdb_syntax_OID_oid_drsuapi_to_ldb(const struct dsdb_schema *sche
                WERROR status;
                const char *str;
 
-               if (in->value_ctr.oid.values[i].value == NULL) {
+               if (in->value_ctr.data_blob.values[i].data == NULL) {
+                       return WERR_FOOBAR;
+               }
+
+               if (in->value_ctr.data_blob.values[i].data->length != 4) {
                        return WERR_FOOBAR;
                }
 
-               v = *in->value_ctr.oid.values[i].value;
+               v = IVAL(in->value_ctr.data_blob.values[i].data->data, 0);
 
                status = dsdb_map_int2oid(schema, v, out->values, &str);
                W_ERROR_NOT_OK_RETURN(status);
index 30fc1774d5f3e727e828695c188e38fc507d0664..954b886b129b4acb7097773ba2bf1883acd3d334 100644 (file)
@@ -1128,23 +1128,26 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
 
        /* objectClass: nTDSDSA */
        {
-               struct drsuapi_DsAttributeValueObjectClassId *vs;
-               enum drsuapi_DsObjectClassId *v;
+               struct drsuapi_DsAttributeValueDataBlob *vs;
+               DATA_BLOB *vd;
 
-               vs = talloc_array(attrs, struct drsuapi_DsAttributeValueObjectClassId, 1);
+               vs = talloc_array(attrs, struct drsuapi_DsAttributeValueDataBlob, 1);
                if (composite_nomem(vs, c)) return;
 
-               v = talloc_array(vs, enum drsuapi_DsObjectClassId, 1);
-               if (composite_nomem(v, c)) return;
+               vd = talloc_array(vs, DATA_BLOB, 1);
+               if (composite_nomem(vd, c)) return;
+
+               vd[0] = data_blob_talloc(vd, NULL, 4);
+               if (composite_nomem(vd[0].data, c)) return;
 
                /* value for nTDSDSA */
-               v[0]                    = 0x0017002F;
+               SIVAL(vd[0].data, 0, 0x0017002F);
 
-               vs[0].objectClassId     = &v[0];
+               vs[0].data              = &vd[0];
 
                attrs[i].attid                                  = DRSUAPI_ATTRIBUTE_objectClass;
-               attrs[i].value_ctr.object_class_id.num_values   = 1;
-               attrs[i].value_ctr.object_class_id.values       = vs;
+               attrs[i].value_ctr.data_blob.num_values         = 1;
+               attrs[i].value_ctr.data_blob.values             = vs;
 
                i++;
        }
@@ -1319,44 +1322,50 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
 
        /* msDS-Behavior-Version */
        if (w2k3) {
-               struct drsuapi_DsAttributeValueUINT32 *vs;
-               uint32_t *v;
+               struct drsuapi_DsAttributeValueDataBlob *vs;
+               DATA_BLOB *vd;
 
-               vs = talloc_array(attrs, struct drsuapi_DsAttributeValueUINT32, 1);
+               vs = talloc_array(attrs, struct drsuapi_DsAttributeValueDataBlob, 1);
                if (composite_nomem(vs, c)) return;
 
-               v = talloc_array(vs, uint32_t, 1);
-               if (composite_nomem(v, c)) return;
+               vd = talloc_array(vs, DATA_BLOB, 1);
+               if (composite_nomem(vd, c)) return;
+
+               vd[0] = data_blob_talloc(vd, NULL, 4);
+               if (composite_nomem(vd[0].data, c)) return;
 
-               v[0]                    = DS_BEHAVIOR_WIN2003;
+               SIVAL(vd[0].data, 0, DS_BEHAVIOR_WIN2003);
 
-               vs[0].value             = &v[0];
+               vs[0].data              = &vd[0];
 
                attrs[i].attid                                  = DRSUAPI_ATTRIBUTE_msDS_Behavior_Version;
-               attrs[i].value_ctr.uint32.num_values            = 1;
-               attrs[i].value_ctr.uint32.values                = vs;
+               attrs[i].value_ctr.data_blob.num_values         = 1;
+               attrs[i].value_ctr.data_blob.values             = vs;
 
                i++;
        }
 
        /* systemFlags */
        {
-               struct drsuapi_DsAttributeValueUINT32 *vs;
-               uint32_t *v;
+               struct drsuapi_DsAttributeValueDataBlob *vs;
+               DATA_BLOB *vd;
 
-               vs = talloc_array(attrs, struct drsuapi_DsAttributeValueUINT32, 1);
+               vs = talloc_array(attrs, struct drsuapi_DsAttributeValueDataBlob, 1);
                if (composite_nomem(vs, c)) return;
 
-               v = talloc_array(vs, uint32_t, 1);
-               if (composite_nomem(v, c)) return;
+               vd = talloc_array(vs, DATA_BLOB, 1);
+               if (composite_nomem(vd, c)) return;
 
-               v[0]                    = SYSTEM_FLAG_DISALLOW_MOVE_ON_DELETE;
+               vd[0] = data_blob_talloc(vd, NULL, 4);
+               if (composite_nomem(vd[0].data, c)) return;
 
-               vs[0].value             = &v[0];
+               SIVAL(vd[0].data, 0, SYSTEM_FLAG_DISALLOW_MOVE_ON_DELETE);
+
+               vs[0].data              = &vd[0];
 
                attrs[i].attid                                  = DRSUAPI_ATTRIBUTE_systemFlags;
-               attrs[i].value_ctr.uint32.num_values            = 1;
-               attrs[i].value_ctr.uint32.values                = vs;
+               attrs[i].value_ctr.data_blob.num_values         = 1;
+               attrs[i].value_ctr.data_blob.values             = vs;
 
                i++;
        }
index dbe0e92be0b98770376f235d4cb13831e221bb21..624835121f9d49b378434da0ce92ae1907a60142 100644 (file)
@@ -519,21 +519,6 @@ interface drsuapi
        } drsuapi_DsAttributeValueCtrGUID;
 
        typedef [nodiscriminant] union {
-               [case(DRSUAPI_ATTRIBUTE_objectClass)] drsuapi_DsAttributeValueCtrObjectClassId object_class_id;
-               [case(DRSUAPI_ATTRIBUTE_governsID)]             drsuapi_DsAttributeValueCtrUINT32 oid;
-               [case(DRSUAPI_ATTRIBUTE_attributeID)]           drsuapi_DsAttributeValueCtrUINT32 oid;
-               [case(DRSUAPI_ATTRIBUTE_attributeSyntax)]       drsuapi_DsAttributeValueCtrUINT32 oid;
-
-               /* UINT32 */
-               [case(DRSUAPI_ATTRIBUTE_instanceType)]          drsuapi_DsAttributeValueCtrUINT32 uint32;
-               [case(DRSUAPI_ATTRIBUTE_rangeLower)]            drsuapi_DsAttributeValueCtrUINT32 uint32;
-               [case(DRSUAPI_ATTRIBUTE_rangeUpper)]            drsuapi_DsAttributeValueCtrUINT32 uint32;
-               [case(DRSUAPI_ATTRIBUTE_objectVersion)]         drsuapi_DsAttributeValueCtrUINT32 uint32;
-               [case(DRSUAPI_ATTRIBUTE_oMSyntax)]              drsuapi_DsAttributeValueCtrUINT32 uint32;
-               [case(DRSUAPI_ATTRIBUTE_searchFlags)]           drsuapi_DsAttributeValueCtrUINT32 uint32;
-               [case(DRSUAPI_ATTRIBUTE_systemFlags)]           drsuapi_DsAttributeValueCtrUINT32 uint32;
-               [case(DRSUAPI_ATTRIBUTE_msDS_Behavior_Version)] drsuapi_DsAttributeValueCtrUINT32 uint32;
-
                /* UnicodeString */
                [case(DRSUAPI_ATTRIBUTE_description)]           drsuapi_DsAttributeValueCtrUnicodeString unicode_string;
                [case(DRSUAPI_ATTRIBUTE_adminDisplayName)]      drsuapi_DsAttributeValueCtrUnicodeString unicode_string;