The branch, master has been updated
       via  89899f5... s4-drs: ATTIDs for deleted attributes should be based on 
msDs-IntId value if it exists
       via  e050274... s4-test: make better error message for ATTID checks
       via  c3cf388... s4-test: Change attribute syntax and value for 
readability
       via  a46ead0... s4-test: Enable drs.rpc.msdsintid test case - it should 
be passing now
       via  6950724... s4-dsdb: No need for dsdb_syntax_one_DN_drsuapi_to_ldb() 
to be public
       via  6a51afc... s4-drs: GetNCChanges() to return correct (in AD-way) 
ATTIDs
       via  35d886d... s4-dsdb-syntax: ATTID should be msDs-IntId value for the 
attributeSchema object
       via  fffc98f... s4: fix few comment typos
       via  d01804d... s4-schema_syntax.c: Fix white spaces and alignment
       via  c5ec1f3... s4-dsdb: Use dsdb_syntax_ctx in *_drsuapi_to_ldb 
functions
       via  b5af7b9... s4-dsdb: Use dsdb_syntax_ctx in *_ldb_to_drsuapi 
functions
       via  ca80918... s4-dsdb: Use dsdb_syntax_ctx in *_validate_ldb functions
       via  b7d1586... s4-dsdb: Add context structure for dsdb_syntax 
conversion functions
       via  20a8481... s4-test-dssync: remove unused variable
      from  da25541... Fix bug 7626 - Typo in configure 
samba_cv__CC_NEGATIVE_ENUM_VALUES two underscores.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 89899f55dc1fb137a0adfd734c87b65039f598a4
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Thu Aug 19 03:17:36 2010 +0300

    s4-drs: ATTIDs for deleted attributes should be based on msDs-IntId value 
if it exists

commit e05027401f4733e43b62148fa5c59559f49b4c1b
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Thu Aug 19 03:08:29 2010 +0300

    s4-test: make better error message for ATTID checks

commit c3cf388eaf322b7646aa464774baa324be81a56d
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Thu Aug 19 02:47:14 2010 +0300

    s4-test: Change attribute syntax and value for readability
    
    When it comes to read logs and dumping data received
    Octet String syntax comes in handy

commit a46ead0724f54a6034913fe5d1da077140d58133
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Wed Aug 18 13:21:10 2010 +0300

    s4-test: Enable drs.rpc.msdsintid test case - it should be passing now

commit 695072478d5d5bd476524228fc09cde200abcf6b
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Wed Aug 18 03:19:45 2010 +0300

    s4-dsdb: No need for dsdb_syntax_one_DN_drsuapi_to_ldb() to be public
    
    It is intended to be used in schema_syntax.c module

commit 6a51afcfdbcbce7813fb59c0655e4178268ca70e
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Wed Aug 18 03:52:48 2010 +0300

    s4-drs: GetNCChanges() to return correct (in AD-way) ATTIDs
    
    Depending on which NC is being replicated, GetNCChanges() returns
    either ATTID based on local prefixMap or msDs-IntId value of
    the attributeSchema class for the attribute being replicated.
    
    If set, msDs-IntId value is always returned when replicating
    object form NC other than Schema NC.
    Objects in Schema NC replica always use prefixMap based ATTIDs.

commit 35d886db176123b3ef3a0436463f59edcaed1322
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Wed Aug 18 03:06:53 2010 +0300

    s4-dsdb-syntax: ATTID should be msDs-IntId value for the attributeSchema 
object
    
    in case object replicated is not in Schema NC and attributeSchema
    object has msDs-IntId attribute value set

commit fffc98f33e333b8711da053e5cd5ddcc601cd275
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Tue Aug 17 04:48:24 2010 +0300

    s4: fix few comment typos

commit d01804dda9d1e1793f3e1d2f863c4444ed7e900c
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Tue Aug 17 04:44:52 2010 +0300

    s4-schema_syntax.c: Fix white spaces and alignment

commit c5ec1f3d9246f5737279340bf1755baf542d982b
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Tue Aug 17 04:20:46 2010 +0300

    s4-dsdb: Use dsdb_syntax_ctx in *_drsuapi_to_ldb functions

commit b5af7b9a1eb70db949c83fe6b55e402b82a2a9a4
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Tue Aug 17 04:12:54 2010 +0300

    s4-dsdb: Use dsdb_syntax_ctx in *_ldb_to_drsuapi functions

commit ca809186137e259060032ef61d9d3e93cddad298
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Tue Aug 17 03:58:26 2010 +0300

    s4-dsdb: Use dsdb_syntax_ctx in *_validate_ldb functions

commit b7d1586ccd05a78a4fae512c54fa39dda408e08b
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Tue Aug 17 03:21:46 2010 +0300

    s4-dsdb: Add context structure for dsdb_syntax conversion functions
    
    This structure is intended to hold context-dependent data.
    
    Syntax-conversion and object-conversion functions need
    that data to convert objects and attributes from drs-to-ldb
    and ldb-to-drs correctly.
    
    For instance: ATTID value depends on whether we are converting
    object from partition different that Schema partition.

commit 20a8481d3ff149e3cece6f2d8d2cf6ae8462d11a
Author: Kamen Mazdrashki <kame...@samba.org>
Date:   Mon Aug 16 18:57:02 2010 +0300

    s4-test-dssync: remove unused variable

-----------------------------------------------------------------------

Summary of changes:
 source4/dsdb/common/dsdb_dn.c                      |   12 +-
 source4/dsdb/samdb/ldb_modules/objectclass_attrs.c |   10 +-
 source4/dsdb/schema/schema.h                       |   18 +-
 source4/dsdb/schema/schema_syntax.c                |  456 ++++++++++----------
 source4/dsdb/schema/tests/schema_syntax.c          |    8 +-
 source4/rpc_server/drsuapi/getncchanges.c          |   22 +-
 source4/selftest/knownfail                         |    1 -
 source4/torture/drs/rpc/dssync.c                   |    1 -
 source4/torture/drs/rpc/msds_intid.c               |   30 +-
 9 files changed, 303 insertions(+), 255 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/common/dsdb_dn.c b/source4/dsdb/common/dsdb_dn.c
index 9023b03..cb9cb29 100644
--- a/source4/dsdb/common/dsdb_dn.c
+++ b/source4/dsdb/common/dsdb_dn.c
@@ -340,6 +340,10 @@ WERROR dsdb_dn_la_to_blob(struct ldb_context *sam_ctx,
        WERROR werr;
        struct ldb_message_element val_el;
        struct drsuapi_DsReplicaAttribute drs;
+       struct dsdb_syntax_ctx syntax_ctx;
+
+       /* use default syntax conversion context */
+       dsdb_syntax_ctx_init(&syntax_ctx, sam_ctx, schema);
 
        /* we need a message_element with just one value in it */
        v = data_blob_string_const(dsdb_dn_get_extended_linearized(mem_ctx, 
dsdb_dn, 1));
@@ -348,7 +352,7 @@ WERROR dsdb_dn_la_to_blob(struct ldb_context *sam_ctx,
        val_el.values = &v;
        val_el.num_values = 1;
 
-       werr = schema_attrib->syntax->ldb_to_drsuapi(sam_ctx, schema, 
schema_attrib, &val_el, mem_ctx, &drs);
+       werr = schema_attrib->syntax->ldb_to_drsuapi(&syntax_ctx, 
schema_attrib, &val_el, mem_ctx, &drs);
        W_ERROR_NOT_OK_RETURN(werr);
 
        if (drs.value_ctr.num_values != 1) {
@@ -375,12 +379,16 @@ WERROR dsdb_dn_la_from_blob(struct ldb_context *sam_ctx,
        struct ldb_message_element new_el;
        struct drsuapi_DsReplicaAttribute drs;
        struct drsuapi_DsAttributeValue val;
+       struct dsdb_syntax_ctx syntax_ctx;
+
+       /* use default syntax conversion context */
+       dsdb_syntax_ctx_init(&syntax_ctx, sam_ctx, schema);
 
        drs.value_ctr.num_values = 1;
        drs.value_ctr.values = &val;
        val.blob = blob;
 
-       werr = schema_attrib->syntax->drsuapi_to_ldb(sam_ctx, schema, 
schema_attrib, &drs, mem_ctx, &new_el);
+       werr = schema_attrib->syntax->drsuapi_to_ldb(&syntax_ctx, 
schema_attrib, &drs, mem_ctx, &new_el);
        W_ERROR_NOT_OK_RETURN(werr);
 
        if (new_el.num_values != 1) {
diff --git a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c 
b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c
index 070d858..555295a 100644
--- a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c
+++ b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c
@@ -79,6 +79,7 @@ static int attr_handler(struct oc_context *ac)
        unsigned int i;
        int ret;
        WERROR werr;
+       struct dsdb_syntax_ctx syntax_ctx;
 
        ldb = ldb_module_get_ctx(ac->module);
 
@@ -91,6 +92,9 @@ static int attr_handler(struct oc_context *ac)
                return ldb_oom(ldb);
        }
 
+       /* initialize syntax checking context */
+       dsdb_syntax_ctx_init(&syntax_ctx, ldb, ac->schema);
+
        /* Check if attributes exist in the schema, if the values match,
         * if they're not operational and fix the names to the match the schema
         * case */
@@ -114,7 +118,7 @@ static int attr_handler(struct oc_context *ac)
                }
                
                if (!(msg->elements[i].flags & 
LDB_FLAG_INTERNAL_DISABLE_VALIDATION)) {
-                       werr = attr->syntax->validate_ldb(ldb, ac->schema, attr,
+                       werr = attr->syntax->validate_ldb(&syntax_ctx, attr,
                                                          &msg->elements[i]);
                        if (!W_ERROR_IS_OK(werr)) {
                                ldb_asprintf_errstring(ldb, "objectclass_attrs: 
attribute '%s' on entry '%s' contains at least one invalid value!",
@@ -135,7 +139,7 @@ static int attr_handler(struct oc_context *ac)
                        }
                }
 
-               /* subsitute the attribute name to match in case */
+               /* Substitute the attribute name to match in case */
                msg->elements[i].name = attr->lDAPDisplayName;
        }
 
@@ -177,7 +181,7 @@ static int attr_handler2(struct oc_context *ac)
                return ldb_operr(ldb);
        }
 
-       /* We rely here on the preceeding "objectclass" LDB module which did
+       /* We rely here on the preceding "objectclass" LDB module which did
         * already fix up the objectclass list (inheritance, order...). */
        oc_element = ldb_msg_find_element(ac->search_res->message,
                                          "objectClass");
diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h
index 34423be..8c73fd5 100644
--- a/source4/dsdb/schema/schema.h
+++ b/source4/dsdb/schema/schema.h
@@ -28,6 +28,15 @@ struct dsdb_attribute;
 struct dsdb_class;
 struct dsdb_schema;
 
+struct dsdb_syntax_ctx {
+       struct ldb_context *ldb;
+       const struct dsdb_schema *schema;
+
+       /* set when converting objects under Schema NC */
+       bool is_schema_nc;
+};
+
+
 struct dsdb_syntax {
        const char *name;
        const char *ldap_oid;
@@ -39,20 +48,17 @@ struct dsdb_syntax {
        const char *comment;
        const char *ldb_syntax;
 
-       WERROR (*drsuapi_to_ldb)(struct ldb_context *ldb, 
-                                const struct dsdb_schema *schema,
+       WERROR (*drsuapi_to_ldb)(const struct dsdb_syntax_ctx *ctx,
                                 const struct dsdb_attribute *attr,
                                 const struct drsuapi_DsReplicaAttribute *in,
                                 TALLOC_CTX *mem_ctx,
                                 struct ldb_message_element *out);
-       WERROR (*ldb_to_drsuapi)(struct ldb_context *ldb, 
-                                const struct dsdb_schema *schema,
+       WERROR (*ldb_to_drsuapi)(const struct dsdb_syntax_ctx *ctx,
                                 const struct dsdb_attribute *attr,
                                 const struct ldb_message_element *in,
                                 TALLOC_CTX *mem_ctx,
                                 struct drsuapi_DsReplicaAttribute *out);
-       WERROR (*validate_ldb)(struct ldb_context *ldb,
-                              const struct dsdb_schema *schema,
+       WERROR (*validate_ldb)(const struct dsdb_syntax_ctx *ctx,
                               const struct dsdb_attribute *attr,
                               const struct ldb_message_element *in);
 };
diff --git a/source4/dsdb/schema/schema_syntax.c 
b/source4/dsdb/schema/schema_syntax.c
index 193d62d..db53aea 100644
--- a/source4/dsdb/schema/schema_syntax.c
+++ b/source4/dsdb/schema/schema_syntax.c
@@ -1,7 +1,7 @@
-/* 
+/*
    Unix SMB/CIFS mplementation.
    DSDB schema syntaxes
-   
+
    Copyright (C) Stefan Metzmacher <me...@samba.org> 2006
    Copyright (C) Simo Sorce 2005
    Copyright (C) Andrew Bartlett <abart...@samba.org> 2008
@@ -10,15 +10,15 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-   
+
 */
 #include "includes.h"
 #include "dsdb/samdb/samdb.h"
@@ -31,8 +31,44 @@
 #include "../lib/util/charset/charset.h"
 #include "librpc/ndr/libndr.h"
 
-static WERROR dsdb_syntax_FOOBAR_drsuapi_to_ldb(struct ldb_context *ldb, 
-                                               const struct dsdb_schema 
*schema,
+/**
+ * Initialize dsdb_syntax_ctx with default values
+ * for common cases.
+ */
+void dsdb_syntax_ctx_init(struct dsdb_syntax_ctx *ctx,
+                         struct ldb_context *ldb,
+                         const struct dsdb_schema *schema)
+{
+       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.
+ */
+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;
+}
+
+
+static WERROR dsdb_syntax_FOOBAR_drsuapi_to_ldb(const struct dsdb_syntax_ctx 
*ctx,
                                                const struct dsdb_attribute 
*attr,
                                                const struct 
drsuapi_DsReplicaAttribute *in,
                                                TALLOC_CTX *mem_ctx,
@@ -65,8 +101,7 @@ static WERROR dsdb_syntax_FOOBAR_drsuapi_to_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_FOOBAR_ldb_to_drsuapi(struct ldb_context *ldb, 
-                                               const struct dsdb_schema 
*schema,
+static WERROR dsdb_syntax_FOOBAR_ldb_to_drsuapi(const struct dsdb_syntax_ctx 
*ctx,
                                                const struct dsdb_attribute 
*attr,
                                                const struct 
ldb_message_element *in,
                                                TALLOC_CTX *mem_ctx,
@@ -75,16 +110,14 @@ static WERROR dsdb_syntax_FOOBAR_ldb_to_drsuapi(struct 
ldb_context *ldb,
        return WERR_FOOBAR;
 }
 
-static WERROR dsdb_syntax_FOOBAR_validate_ldb(struct ldb_context *ldb,
-                                             const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_FOOBAR_validate_ldb(const struct dsdb_syntax_ctx 
*ctx,
                                              const struct dsdb_attribute *attr,
                                              const struct ldb_message_element 
*in)
 {
        return WERR_FOOBAR;
 }
 
-static WERROR dsdb_syntax_BOOL_drsuapi_to_ldb(struct ldb_context *ldb, 
-                                             const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_BOOL_drsuapi_to_ldb(const struct dsdb_syntax_ctx 
*ctx,
                                              const struct dsdb_attribute *attr,
                                              const struct 
drsuapi_DsReplicaAttribute *in,
                                              TALLOC_CTX *mem_ctx,
@@ -128,8 +161,7 @@ static WERROR dsdb_syntax_BOOL_drsuapi_to_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(struct ldb_context *ldb, 
-                                             const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(const struct dsdb_syntax_ctx 
*ctx,
                                              const struct dsdb_attribute *attr,
                                              const struct ldb_message_element 
*in,
                                              TALLOC_CTX *mem_ctx,
@@ -142,7 +174,8 @@ static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(struct 
ldb_context *ldb,
                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,
@@ -170,8 +203,7 @@ static WERROR dsdb_syntax_BOOL_ldb_to_drsuapi(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_BOOL_validate_ldb(struct ldb_context *ldb,
-                                           const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_BOOL_validate_ldb(const struct dsdb_syntax_ctx *ctx,
                                            const struct dsdb_attribute *attr,
                                            const struct ldb_message_element 
*in)
 {
@@ -199,8 +231,7 @@ static WERROR dsdb_syntax_BOOL_validate_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(struct ldb_context *ldb, 
-                                              const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(const struct dsdb_syntax_ctx 
*ctx,
                                               const struct dsdb_attribute 
*attr,
                                               const struct 
drsuapi_DsReplicaAttribute *in,
                                               TALLOC_CTX *mem_ctx,
@@ -239,8 +270,7 @@ static WERROR dsdb_syntax_INT32_drsuapi_to_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct ldb_context *ldb, 
-                                              const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(const struct dsdb_syntax_ctx 
*ctx,
                                               const struct dsdb_attribute 
*attr,
                                               const struct ldb_message_element 
*in,
                                               TALLOC_CTX *mem_ctx,
@@ -253,7 +283,8 @@ static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct 
ldb_context *ldb,
                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,
@@ -281,8 +312,7 @@ static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT32_validate_ldb(struct ldb_context *ldb,
-                                            const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT32_validate_ldb(const struct dsdb_syntax_ctx *ctx,
                                             const struct dsdb_attribute *attr,
                                             const struct ldb_message_element 
*in)
 {
@@ -328,8 +358,7 @@ static WERROR dsdb_syntax_INT32_validate_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT64_drsuapi_to_ldb(struct ldb_context *ldb, 
-                                              const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT64_drsuapi_to_ldb(const struct dsdb_syntax_ctx 
*ctx,
                                               const struct dsdb_attribute 
*attr,
                                               const struct 
drsuapi_DsReplicaAttribute *in,
                                               TALLOC_CTX *mem_ctx,
@@ -368,8 +397,7 @@ static WERROR dsdb_syntax_INT64_drsuapi_to_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(struct ldb_context *ldb, 
-                                              const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(const struct dsdb_syntax_ctx 
*ctx,
                                               const struct dsdb_attribute 
*attr,
                                               const struct ldb_message_element 
*in,
                                               TALLOC_CTX *mem_ctx,
@@ -382,7 +410,8 @@ static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(struct 
ldb_context *ldb,
                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,
@@ -408,8 +437,7 @@ static WERROR dsdb_syntax_INT64_ldb_to_drsuapi(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_INT64_validate_ldb(struct ldb_context *ldb,
-                                            const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_INT64_validate_ldb(const struct dsdb_syntax_ctx *ctx,
                                             const struct dsdb_attribute *attr,
                                             const struct ldb_message_element 
*in)
 {
@@ -454,8 +482,7 @@ static WERROR dsdb_syntax_INT64_validate_ldb(struct 
ldb_context *ldb,
 
        return WERR_OK;
 }
-static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct ldb_context *ldb, 
-                                                   const struct dsdb_schema 
*schema,
+static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(const struct 
dsdb_syntax_ctx *ctx,
                                                    const struct dsdb_attribute 
*attr,
                                                    const struct 
drsuapi_DsReplicaAttribute *in,
                                                    TALLOC_CTX *mem_ctx,
@@ -488,7 +515,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct 
ldb_context *ldb,
                v *= 10000000;
                t = nt_time_to_unix(v);
 
-               /* 
+               /*
                 * NOTE: On a w2k3 server you can set a GeneralizedTime string
                 *       via LDAP, but you get back an UTCTime string,
                 *       but via DRSUAPI you get back the NTTIME_1sec value
@@ -497,7 +524,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct 
ldb_context *ldb,
                 *       So if we store the UTCTime string in our ldb
                 *       we'll loose information!
                 */
-               str = ldb_timestring_utc(out->values, t); 
+               str = ldb_timestring_utc(out->values, t);
                W_ERROR_HAVE_NO_MEMORY(str);
                out->values[i] = data_blob_string_const(str);
        }
@@ -505,8 +532,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(struct ldb_context *ldb, 
-                                                   const struct dsdb_schema 
*schema,
+static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(const struct 
dsdb_syntax_ctx *ctx,
                                                    const struct dsdb_attribute 
*attr,
                                                    const struct 
ldb_message_element *in,
                                                    TALLOC_CTX *mem_ctx,
@@ -519,7 +545,8 @@ static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(struct 
ldb_context *ldb,
                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,
@@ -548,8 +575,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_UTC_validate_ldb(struct ldb_context *ldb,
-                                                 const struct dsdb_schema 
*schema,
+static WERROR dsdb_syntax_NTTIME_UTC_validate_ldb(const struct dsdb_syntax_ctx 
*ctx,
                                                  const struct dsdb_attribute 
*attr,
                                                  const struct 
ldb_message_element *in)
 {
@@ -596,8 +622,7 @@ static WERROR dsdb_syntax_NTTIME_UTC_validate_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(struct ldb_context *ldb, 
-                                               const struct dsdb_schema 
*schema,
+static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(const struct dsdb_syntax_ctx 
*ctx,
                                                const struct dsdb_attribute 
*attr,
                                                const struct 
drsuapi_DsReplicaAttribute *in,
                                                TALLOC_CTX *mem_ctx,
@@ -630,7 +655,7 @@ static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(struct 
ldb_context *ldb,
                v *= 10000000;
                t = nt_time_to_unix(v);
 
-               str = ldb_timestring(out->values, t); 
+               str = ldb_timestring(out->values, t);
                W_ERROR_HAVE_NO_MEMORY(str);
 
                out->values[i] = data_blob_string_const(str);
@@ -639,8 +664,7 @@ static WERROR dsdb_syntax_NTTIME_drsuapi_to_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(struct ldb_context *ldb, 
-                                               const struct dsdb_schema 
*schema,
+static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(const struct dsdb_syntax_ctx 
*ctx,
                                                const struct dsdb_attribute 
*attr,
                                                const struct 
ldb_message_element *in,
                                                TALLOC_CTX *mem_ctx,
@@ -653,7 +677,8 @@ static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(struct 
ldb_context *ldb,
                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,
@@ -686,8 +711,7 @@ static WERROR dsdb_syntax_NTTIME_ldb_to_drsuapi(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_NTTIME_validate_ldb(struct ldb_context *ldb,
-                                             const struct dsdb_schema *schema,
+static WERROR dsdb_syntax_NTTIME_validate_ldb(const struct dsdb_syntax_ctx 
*ctx,
                                              const struct dsdb_attribute *attr,
                                              const struct ldb_message_element 
*in)
 {
@@ -722,8 +746,7 @@ static WERROR dsdb_syntax_NTTIME_validate_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_DATA_BLOB_drsuapi_to_ldb(struct ldb_context *ldb, 
-                                                  const struct dsdb_schema 
*schema,
+static WERROR dsdb_syntax_DATA_BLOB_drsuapi_to_ldb(const struct 
dsdb_syntax_ctx *ctx,
                                                   const struct dsdb_attribute 
*attr,
                                                   const struct 
drsuapi_DsReplicaAttribute *in,
                                                   TALLOC_CTX *mem_ctx,
@@ -756,8 +779,7 @@ static WERROR dsdb_syntax_DATA_BLOB_drsuapi_to_ldb(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(struct ldb_context *ldb, 
-                                                  const struct dsdb_schema 
*schema,
+static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(const struct 
dsdb_syntax_ctx *ctx,
                                                   const struct dsdb_attribute 
*attr,
                                                   const struct 
ldb_message_element *in,
                                                   TALLOC_CTX *mem_ctx,
@@ -770,7 +792,8 @@ static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(struct 
ldb_context *ldb,
                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,
@@ -790,8 +813,7 @@ static WERROR dsdb_syntax_DATA_BLOB_ldb_to_drsuapi(struct 
ldb_context *ldb,
        return WERR_OK;
 }
 
-static WERROR dsdb_syntax_DATA_BLOB_validate_one_val(struct ldb_context *ldb,
-                                                    const struct dsdb_schema 
*schema,
+static WERROR dsdb_syntax_DATA_BLOB_validate_one_val(const struct 
dsdb_syntax_ctx *ctx,
                                                     const struct 
dsdb_attribute *attr,
                                                     const struct ldb_val *val)


-- 
Samba Shared Repository

Reply via email to