{
ctx->ldb = ldb;
ctx->schema = schema;
+
+ /*
+ * 'true' will keep current behavior,
+ * i.e. attributeID_id will be returned by default
+ */
+ ctx->is_schema_nc = true;
+}
+
+
+/**
+ * Returns ATTID for DRS attribute.
+ *
+ * ATTID depends on whether we are replicating
+ * Schema NC or msDs-IntId is set for schemaAttribute
+ * for the attribute.
+ */
+static uint32_t dsdb_attribute_get_attid(const struct dsdb_attribute *attr,
+ bool for_schema_nc)
+{
+ if (!for_schema_nc && attr->msDS_IntId) {
+ return attr->msDS_IntId;
+ }
+
+ return attr->attributeID_id;
}
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
unsigned int i;
DATA_BLOB *blobs;
- out->attid= attr->attributeID_id;
+ out->attid= dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values= in->num_values;
out->value_ctr.values= talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
unsigned int i;
DATA_BLOB *blobs;
- out->attid= attr->attributeID_id;
+ out->attid= dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values= in->num_values;
out->value_ctr.values= talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
unsigned int i;
DATA_BLOB *blobs;
- out->attid= attr->attributeID_id;
+ out->attid= dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values= in->num_values;
out->value_ctr.values= talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
unsigned int i;
DATA_BLOB *blobs;
- out->attid= attr->attributeID_id;
+ out->attid= dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values= in->num_values;
out->value_ctr.values= talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,
return WERR_FOOBAR;
}
- out->attid = attr->attributeID_id;
+ out->attid = dsdb_attribute_get_attid(attr,
+ ctx->is_schema_nc);
out->value_ctr.num_values = in->num_values;
out->value_ctr.values = talloc_array(mem_ctx,
struct drsuapi_DsAttributeValue,