r8669: The objectguid module belongs in Samba's ldb module collection, not in
authorAndrew Bartlett <abartlet@samba.org>
Thu, 21 Jul 2005 08:32:07 +0000 (08:32 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:29:52 +0000 (13:29 -0500)
ldb, as it can't build without the NDR and GUID code.

Also make it properly use the NDR encoding for the GUID (I forgot last
time, and used a string), as well as set the dependencies on the
module correctly.

Andrew Bartlett
(This used to be commit 8054abc76e5e3588cebc7fc01062a1223b7f140b)

source4/dsdb/config.mk
source4/dsdb/samdb/ldb_modules/objectguid.c [moved from source4/lib/ldb/modules/objectguid.c with 95% similarity]
source4/dsdb/samdb/samdb.c
source4/lib/ldb/common/ldb_modules.c
source4/lib/ldb/config.mk

index 51a87c8d6756c74205d2a08285b7055c06f5f58f..8f66eab39c91c75880ca5675f616ae617f0907b0 100644 (file)
@@ -1,5 +1,16 @@
 # Directory Service subsystem
 
+################################################
+# Start MODULE libldb_objectguid
+[MODULE::libldb_objectguid]
+SUBSYSTEM = LIBLDB
+INIT_OBJ_FILES = \
+               dsdb/samdb/ldb_modules/objectguid.o
+REQUIRED_SUBSYSTEMS = \
+               NDR_RAW NDR_MISC
+# End MODULE libldb_objectguid
+################################################
+
 ################################################
 # Start MODULE libldb_samldb
 [MODULE::libldb_samldb]
similarity index 95%
rename from source4/lib/ldb/modules/objectguid.c
rename to source4/dsdb/samdb/ldb_modules/objectguid.c
index 0e789c2bda9990d3141b18ca8ad14ef83b799290..45f1a10730aed36c75280085bde716e4b53c3fd4 100644 (file)
@@ -73,10 +73,11 @@ static struct ldb_message_element *objectguid_find_attribute(const struct ldb_me
 /* add_record: add crateTimestamp/modifyTimestamp attributes */
 static int objectguid_add_record(struct ldb_module *module, const struct ldb_message *msg)
 {
+       struct ldb_val v;
        struct ldb_message *msg2;
        struct ldb_message_element *attribute;
        struct GUID guid;
-       char *guidstr;
+       NTSTATUS nt_status;
        int ret, i;
 
        ldb_debug(module->ldb, LDB_DEBUG_TRACE, "objectguid_add_record\n");
@@ -104,13 +105,16 @@ static int objectguid_add_record(struct ldb_module *module, const struct ldb_mes
 
        /* a new GUID */
        guid = GUID_random();
-       guidstr = GUID_string(msg2, &guid);
-       if (!guidstr) {
+
+       nt_status = ndr_push_struct_blob(&v, msg2, &guid, 
+                                        (ndr_push_flags_fn_t)ndr_push_GUID);
+       if (!NT_STATUS_IS_OK(nt_status)) {
                return -1;
        }
 
-       if (ldb_msg_add_string(module->ldb, msg2, "objectGUID", guidstr) != 0) {
-               return -1;
+       ret = ldb_msg_add_value(module->ldb, msg2, "objectGUID", &v);
+       if (ret) {
+               return ret;
        }
 
        ret = ldb_next_add_record(module, msg2);
index fd542c5567f8e5f95dbd0e0b2c6c9f32b381742a..448e4292aa4c4f73c7b7ca001ab5214988c1d8ab 100644 (file)
@@ -978,20 +978,6 @@ int samdb_msg_set_ldaptime(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, str
 */
 int samdb_add(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struct ldb_message *msg)
 {
-       int ret;
-       struct ldb_val v;
-       NTSTATUS status;
-       struct GUID guid = GUID_random();
-
-       status = ndr_push_struct_blob(&v, mem_ctx, &guid, 
-                                     (ndr_push_flags_fn_t)ndr_push_GUID);
-       if (!NT_STATUS_IS_OK(status)) {
-               return -1;
-       }
-
-       ret = ldb_msg_add_value(sam_ldb, msg, "objectGUID", &v);
-       if (ret != 0) return ret;
-
        return ldb_add(sam_ldb, msg);
 }
 
index d6213be79adbb94d8836bd8a9ce50e45d56cf513..dcc384ffad58d720547322468370666a506da5fc 100644 (file)
@@ -189,8 +189,8 @@ int ldb_load_modules(struct ldb_context *ldb, const char *options[])
                        continue;
                }
 
-               if (strcmp(modules[i], "objectguid") == 0) {
-                       current = objectguid_module_init(ldb, options);
+               if (strcmp(modules[i], "rdn_name") == 0) {
+                       current = rdn_name_module_init(ldb, options);
                        if (!current) {
                                ldb_debug(ldb, LDB_DEBUG_FATAL, "function 'init_module' in %s fails\n", modules[i]);
                                return -1;
@@ -199,8 +199,9 @@ int ldb_load_modules(struct ldb_context *ldb, const char *options[])
                        continue;
                }
 
-               if (strcmp(modules[i], "rdn_name") == 0) {
-                       current = rdn_name_module_init(ldb, options);
+#ifdef _SAMBA_BUILD_
+               if (strcmp(modules[i], "objectguid") == 0) {
+                       current = objectguid_module_init(ldb, options);
                        if (!current) {
                                ldb_debug(ldb, LDB_DEBUG_FATAL, "function 'init_module' in %s fails\n", modules[i]);
                                return -1;
@@ -209,7 +210,6 @@ int ldb_load_modules(struct ldb_context *ldb, const char *options[])
                        continue;
                }
 
-#ifdef _SAMBA_BUILD_
                if (strcmp(modules[i], "samldb") == 0) {
                        current = samldb_module_init(ldb, options);
                        if (!current) {
index fe339f9e178101c97a689e49d0efb6e1cc3e24b3..87e15f1375725829644364d1b7e44d1f697f3568 100644 (file)
@@ -7,15 +7,6 @@ INIT_OBJ_FILES = \
 # End MODULE libldb_timestamps
 ################################################
 
-################################################
-# Start MODULE libldb_objectguid
-[MODULE::libldb_objectguid]
-SUBSYSTEM = LIBLDB
-INIT_OBJ_FILES = \
-               lib/ldb/modules/objectguid.o
-# End MODULE libldb_objectguid
-################################################
-
 ################################################
 # Start MODULE libldb_rdn_name
 [MODULE::libldb_rdn_name]