summaryrefslogtreecommitdiff
path: root/source4/lib
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2006-07-22 21:16:01 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:10:18 -0500
commite248caed12f5d20d3abedfaf84aa18cdff46c95c (patch)
tree0c34907d21f999fc30fa0b97cdd295eaa4c8a526 /source4/lib
parentfcea6386577dc698661972c3b192bafd1dee3a4a (diff)
downloadsamba-e248caed12f5d20d3abedfaf84aa18cdff46c95c.tar.gz
samba-e248caed12f5d20d3abedfaf84aa18cdff46c95c.tar.bz2
samba-e248caed12f5d20d3abedfaf84aa18cdff46c95c.zip
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)
Diffstat (limited to 'source4/lib')
-rw-r--r--source4/lib/ldb/include/ldb.h17
-rw-r--r--source4/lib/ldb/include/ldb_private.h1
2 files changed, 18 insertions, 0 deletions
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 *);