ldb: Add LDB_UNPACK_DATA_FLAG_NO_ATTRS
authorAndrew Bartlett <abartlet@samba.org>
Thu, 10 Aug 2017 23:31:05 +0000 (11:31 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 29 Aug 2017 05:23:29 +0000 (07:23 +0200)
This will allow us to avoid a full unpack in situations where we just want to confirm
if the DN exists

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
lib/ldb/common/ldb_pack.c
lib/ldb/include/ldb_module.h

index 1f1688a6c50d7f54313c5e4da9a047121e377a29..448c577ae1b9a69bf8489a9a701153f900a6df4f 100644 (file)
@@ -301,6 +301,11 @@ int ldb_unpack_data_only_attr_list_flags(struct ldb_context *ldb,
                goto failed;
        }
 
+       
+       if (flags & LDB_UNPACK_DATA_FLAG_NO_ATTRS) {
+               return 0;
+       }
+       
        if (message->num_elements == 0) {
                return 0;
        }
index 8ad212a1e08c65ee9b65d597552a120e8b7f0804..71b407496f062d03f226df9f156d98357b0382ef 100644 (file)
@@ -518,6 +518,10 @@ int ldb_unpack_data(struct ldb_context *ldb,
  * LDB_UNPACK_DATA_FLAG_NO_DATA_ALLOC is also specified.
  *
  * Likewise if LDB_UNPACK_DATA_FLAG_NO_DN is specified, the DN is omitted.
+ *
+ * If LDB_UNPACK_DATA_FLAG_NO_ATTRS is specified, then no attributes
+ * are unpacked or returned.
+ *
  */
 int ldb_unpack_data_only_attr_list_flags(struct ldb_context *ldb,
                                         const struct ldb_val *data,
@@ -530,6 +534,7 @@ int ldb_unpack_data_only_attr_list_flags(struct ldb_context *ldb,
 #define LDB_UNPACK_DATA_FLAG_NO_DATA_ALLOC   0x0001
 #define LDB_UNPACK_DATA_FLAG_NO_DN           0x0002
 #define LDB_UNPACK_DATA_FLAG_NO_VALUES_ALLOC 0x0004
+#define LDB_UNPACK_DATA_FLAG_NO_ATTRS        0x0008
 
 /**
  Forces a specific ldb handle to use the global event context.