From e248caed12f5d20d3abedfaf84aa18cdff46c95c Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Sat, 22 Jul 2006 21:16:01 +0000 Subject: r17195: Start thinking how to implement extended operations. Ad supports three extended operations: - start tls - dynamic objects - fast binds none of these are a priority. (This used to be commit 523e8f3ed4bf5fcf9dc0c9e2100e4ac3b8032be7) --- source4/lib/ldb/include/ldb.h | 17 +++++++++++++++++ source4/lib/ldb/include/ldb_private.h | 1 + 2 files changed, 18 insertions(+) (limited to 'source4/lib/ldb') diff --git a/source4/lib/ldb/include/ldb.h b/source4/lib/ldb/include/ldb.h index 68c2272adf..6e3f69f607 100644 --- a/source4/lib/ldb/include/ldb.h +++ b/source4/lib/ldb/include/ldb.h @@ -494,6 +494,14 @@ typedef int (*ldb_qsort_cmp_fn_t) (void *v1, void *v2, void *opaque); */ #define LDB_CONTROL_VLV_RESP_OID "2.16.840.1.113730.3.4.10" +/** + OID for LDAP Extended Operation START_TLS. + + This Extended operation is used to start a new TLS + channel on top of a clear text channel. +*/ +#define LDB_EXTENDED_STATRT_TLS_OID "1.3.6.1.4.1.1466.20037" + struct ldb_paged_control { int size; int cookie_len; @@ -567,6 +575,7 @@ enum ldb_request_type { LDB_MODIFY, LDB_DELETE, LDB_RENAME, + LDB_EXTENDED, LDB_REQ_REGISTER_CONTROL, LDB_REQ_REGISTER_PARTITION, LDB_SEQUENCE_NUMBER @@ -575,6 +584,7 @@ enum ldb_request_type { enum ldb_reply_type { LDB_REPLY_ENTRY, LDB_REPLY_REFERRAL, + LDB_REPLY_EXTENDED, LDB_REPLY_DONE }; @@ -596,9 +606,16 @@ struct ldb_result { struct ldb_control **controls; }; +struct ldb_extended { + const char *oid; + const char *value; + int value_len; +}; + struct ldb_reply { enum ldb_reply_type type; struct ldb_message *message; + struct ldb_extended *response; char *referral; struct ldb_control **controls; }; diff --git a/source4/lib/ldb/include/ldb_private.h b/source4/lib/ldb/include/ldb_private.h index 1360602000..b862daec86 100644 --- a/source4/lib/ldb/include/ldb_private.h +++ b/source4/lib/ldb/include/ldb_private.h @@ -63,6 +63,7 @@ struct ldb_module_ops { int (*del)(struct ldb_module *, struct ldb_request *); /* delete */ int (*rename)(struct ldb_module *, struct ldb_request *); /* rename */ int (*request)(struct ldb_module *, struct ldb_request *); /* match any other operation */ + int (*extended)(struct ldb_module *, struct ldb_request *); /* extended operations */ int (*start_transaction)(struct ldb_module *); int (*end_transaction)(struct ldb_module *); int (*del_transaction)(struct ldb_module *); -- cgit