aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorGraeme Lunt <graeme.lunt@smhs.co.uk>2006-04-30 07:23:42 +0000
committerGraeme Lunt <graeme.lunt@smhs.co.uk>2006-04-30 07:23:42 +0000
commit4efe0f242314fcf893cb61f9c50985bcbd159230 (patch)
tree07e11284968c65f526b0d1f1fa05b9a7c452891c /asn1
parent8113782873426d319115b0cffb411736138336d8 (diff)
Request/result matching, port preference and display tweaks
svn path=/trunk/; revision=18042
Diffstat (limited to 'asn1')
-rw-r--r--asn1/ldap/ldap.cnf227
-rw-r--r--asn1/ldap/packet-ldap-template.c243
2 files changed, 417 insertions, 53 deletions
diff --git a/asn1/ldap/ldap.cnf b/asn1/ldap/ldap.cnf
index 104c59d8d7..e85d60758c 100644
--- a/asn1/ldap/ldap.cnf
+++ b/asn1/ldap/ldap.cnf
@@ -1,5 +1,5 @@
-# ros.cnf
-# ros conformation file
+# ldap.cnf
+# LDAP conformation file
# Copyright 2005 Anders Broman
# $Id$
@@ -42,28 +42,62 @@ Mechanism TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL
name = get_oid_str_name(tvb_get_string(parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0)));
if(name){
proto_item_append_text(item, " (%s)", name);
+ proto_item_append_text(tree, " %s", name);
}
#.FN_PARS MessageID VAL_PTR = &MessageID
-#.FN_BODY MessageID
-gint MessageID;
-%(DEFAULT_BODY)s
+#.FN_BODY MessageID
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, "MsgId=%%u, ",MessageID);
+ %(DEFAULT_BODY)s
+
+ ldm_tree = tree;
#.FN_PARS ProtocolOp VAL_PTR = &ProtocolOp
-#.FN_BODY ProtocolOp
-
-gint ProtocolOp;
-
-%(DEFAULT_BODY)s
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(ProtocolOp, ldap_ProtocolOp_choice_vals, "Unknown (%%u)"));
-
+#.FN_HDR ProtocolOp
+
+ ldap_call_response_t *lcrp;
+ ldap_conv_info_t *ldap_info = (ldap_conv_info_t *)pinfo->private_data;
+ do_protocolop = TRUE;
+
+#.FN_FTR ProtocolOp
+
+ lcrp=ldap_match_call_response(tvb, pinfo, tree, MessageID, ProtocolOp);
+ if(lcrp){
+ tap_queue_packet(ldap_tap, pinfo, lcrp);
+ }
+
+ /* XXX: the count will not work if the results span multiple TCP packets */
+
+ if(ldap_info && tree) { /* only count once - on tree pass */
+ switch(ProtocolOp) {
+
+ case LDAP_RES_SEARCH_ENTRY:
+ ldap_info->num_results++;
+
+ proto_item_append_text(tree, " [%d result%s]",
+ ldap_info->num_results, ldap_info->num_results == 1 ? "" : "s");
+
+ break;
+
+ case LDAP_RES_SEARCH_RESULT:
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " [%d result%s]",
+ ldap_info->num_results, ldap_info->num_results == 1 ? "" : "s");
+
+ proto_item_append_text(tree, " [%d result%s]",
+ ldap_info->num_results, ldap_info->num_results == 1 ? "" : "s");
+
+ ldap_info->num_results = 0;
+ break;
+ default:
+ break;
+ }
+ }
+
#.FN_BODY Simple
ldap_conv_info_t *ldap_info;
@@ -198,3 +232,166 @@ ldap_conv_info_t *ldap_info;
break;
}
pinfo->private_data = ldap_info;
+
+#.FN_PARS LDAPString VAL_PTR = &parameter_tvb
+
+#.FN_BODY LDAPString
+ tvbuff_t *parameter_tvb = NULL;
+ char *ldapstring;
+
+ %(DEFAULT_BODY)s
+
+ if (parameter_tvb || (hf_index == hf_ldap_baseObject)) {
+
+ ldap_do_protocolop(pinfo);
+
+ if(parameter_tvb)
+ ldapstring = tvb_get_string(parameter_tvb, 0, tvb_length_remaining(parameter_tvb, 0));
+ else
+ ldapstring = "<ROOT>";
+
+ if(hf_index == hf_ldap_baseObject) {
+ /* this is search - but it on the scanline */
+ if(check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, "\"%%s\" ", ldapstring);
+
+ if(ldm_tree)
+ proto_item_append_text(ldm_tree, " \"%%s\"", ldapstring);
+ } else if ((hf_index == hf_ldap_errorMessage) && result) { /* only show message if not success */
+ if(check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, "(%%s) ", ldapstring);
+
+ if(ldm_tree)
+ proto_item_append_text(ldm_tree, " (%%s)", ldapstring);
+ } else if (hf_index == hf_ldap_objectName) {
+ if(check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, "\"%%s\" ", ldapstring);
+
+ if(ldm_tree)
+ proto_item_append_text(ldm_tree, " \"%%s\"", ldapstring);
+ }
+
+ if(parameter_tvb && ldapstring)
+ g_free(ldapstring);
+ }
+
+#.FN_PARS T_scope VAL_PTR = &scope
+
+#.FN_BODY T_scope
+
+ gint scope;
+ const gchar *valstr;
+
+ %(DEFAULT_BODY)s
+
+ ldap_do_protocolop(pinfo);
+
+ valstr = val_to_str(scope, ldap_T_scope_vals, "Unknown scope(%%u)");
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%%s ", valstr);
+
+ if(ldm_tree)
+ proto_item_append_text(ldm_tree, " %%s", valstr);
+
+#.FN_PARS T_resultCode VAL_PTR = &result
+
+#.FN_BODY T_resultCode
+
+ const gchar *valstr;
+
+ %(DEFAULT_BODY)s
+
+ ldap_do_protocolop(pinfo);
+
+ if(result) {
+
+ valstr = val_to_str(result, ldap_T_resultCode_vals, "Unknown result(%%u)");
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%%s ", valstr);
+
+ if(ldm_tree)
+ proto_item_append_text(ldm_tree, " %%s", valstr);
+
+ }
+
+#.FN_PARS BindResponse_resultCode VAL_PTR = &result
+
+#.FN_BODY BindResponse_resultCode
+
+ const gchar *valstr;
+
+ %(DEFAULT_BODY)s
+
+ ldap_do_protocolop(pinfo);
+
+ if(result) {
+
+ valstr = val_to_str(result, ldap_BindResponse_resultCode_vals, "Unknown result(%%u)");
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%%s ", valstr);
+
+ if(ldm_tree)
+ proto_item_append_text(ldm_tree, " %%s", valstr);
+
+ }
+
+
+#.FN_PARS AttributeValue VAL_PTR = &parameter_tvb
+
+#.FN_BODY AttributeValue
+
+ tvbuff_t *parameter_tvb;
+ gchar *string;
+ guint32 i, len;
+ proto_item *pi;
+
+ %(DEFAULT_BODY)s
+
+ len = tvb_length_remaining(parameter_tvb, 0);
+
+ for(i = 0; i < len; i++)
+ if(!g_ascii_isprint(tvb_get_guint8(parameter_tvb, i)))
+ break;
+
+ if(i == len) {
+ string = tvb_get_string(parameter_tvb, 0, tvb_length_remaining(parameter_tvb, 0));
+
+ pi = get_ber_last_created_item();
+
+ proto_item_set_text(pi, string);
+
+ }
+
+#.FN_PARS AuthenticationChoice VAL_PTR = &branch
+
+#.FN_BODY AuthenticationChoice
+ gint branch = -1;
+ gint auth = -1;
+ const gchar *valstr;
+
+ %(DEFAULT_BODY)s
+
+ ldap_do_protocolop(pinfo);
+
+ if((branch > -1) && (branch < (sizeof AuthenticationChoice_choice/sizeof AuthenticationChoice_choice[0])))
+ auth = AuthenticationChoice_choice[branch].value;
+
+ valstr = val_to_str(auth, ldap_AuthenticationChoice_vals, "Unknown auth(%%u)");
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%%s ", valstr);
+
+ if(ldm_tree)
+ proto_item_append_text(ldm_tree, " %%s", valstr);
+
+
+#.FN_BODY UnbindRequest
+
+ implicit_tag = TRUE; /* correct problem with asn2eth */
+
+ %(DEFAULT_BODY)s
+
+ ldap_do_protocolop(pinfo);
diff --git a/asn1/ldap/packet-ldap-template.c b/asn1/ldap/packet-ldap-template.c
index 623f5b8262..245ec20a3a 100644
--- a/asn1/ldap/packet-ldap-template.c
+++ b/asn1/ldap/packet-ldap-template.c
@@ -79,7 +79,6 @@
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/prefs.h>
-#include <epan/conversation.h>
#include <epan/tap.h>
#include <epan/emem.h>
#include <epan/oid_resolv.h>
@@ -94,8 +93,6 @@
#define PSNAME "LDAP"
#define PFNAME "ldap"
-
-
static dissector_handle_t ldap_handle=NULL;
/* Initialize the protocol and registered fields */
@@ -104,6 +101,9 @@ static int proto_ldap = -1;
static int proto_cldap = -1;
static int hf_ldap_sasl_buffer_length = -1;
+static int hf_ldap_response_in = -1;
+static int hf_ldap_response_to = -1;
+static int hf_ldap_time = -1;
#include "packet-ldap-hf.c"
@@ -117,6 +117,8 @@ static guint ett_ldap_payload = -1;
/* desegmentation of LDAP */
static gboolean ldap_desegment = TRUE;
+static guint ldap_tcp_port = 389;
+static gboolean do_protocolop = FALSE;
#define TCP_PORT_LDAP 389
#define UDP_PORT_CLDAP 389
@@ -168,6 +170,7 @@ typedef struct ldap_conv_info_t {
GHashTable *matched;
gboolean is_mscldap;
gboolean first_time;
+ guint32 num_results;
} ldap_conv_info_t;
static ldap_conv_info_t *ldap_info_items;
@@ -188,9 +191,11 @@ ldap_info_equal_matched(gconstpointer k1, gconstpointer k2)
if( key1->req_frame && key2->req_frame && (key1->req_frame!=key2->req_frame) ){
return 0;
}
+ /* a response may span multiple frames
if( key1->rep_frame && key2->rep_frame && (key1->rep_frame!=key2->rep_frame) ){
return 0;
}
+ */
return key1->messageId==key2->messageId;
}
@@ -214,6 +219,151 @@ ldap_info_equal_unmatched(gconstpointer k1, gconstpointer k2)
/* Global variables */
char *mechanism = NULL;
+static gint MessageID =-1;
+static gint ProtocolOp = -1;
+static gint result = 0;
+static proto_item *ldm_tree = NULL; /* item to add text to */
+
+static void ldap_do_protocolop(packet_info *pinfo)
+{
+ const gchar* valstr;
+
+ if (do_protocolop) {
+
+ valstr = val_to_str(ProtocolOp, ldap_ProtocolOp_choice_vals, "Unknown (%%u)");
+
+ if(check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s(%u) ", valstr, MessageID);
+
+ if(ldm_tree)
+ proto_item_append_text(ldm_tree, " %s(%d)", valstr, MessageID);
+
+ do_protocolop = FALSE;
+
+ }
+}
+
+static ldap_call_response_t *
+ldap_match_call_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint messageId, guint protocolOpTag)
+{
+ ldap_call_response_t lcr, *lcrp=NULL;
+ ldap_conv_info_t *ldap_info = (ldap_conv_info_t *)pinfo->private_data;
+
+ /* first see if we have already matched this */
+
+ lcr.messageId=messageId;
+ switch(protocolOpTag){
+ case LDAP_REQ_BIND:
+ case LDAP_REQ_SEARCH:
+ case LDAP_REQ_MODIFY:
+ case LDAP_REQ_ADD:
+ case LDAP_REQ_DELETE:
+ case LDAP_REQ_MODRDN:
+ case LDAP_REQ_COMPARE:
+ lcr.is_request=TRUE;
+ lcr.req_frame=pinfo->fd->num;
+ lcr.rep_frame=0;
+ break;
+ case LDAP_RES_BIND:
+ case LDAP_RES_SEARCH_ENTRY:
+ case LDAP_RES_SEARCH_REF:
+ case LDAP_RES_SEARCH_RESULT:
+ case LDAP_RES_MODIFY:
+ case LDAP_RES_ADD:
+ case LDAP_RES_DELETE:
+ case LDAP_RES_MODRDN:
+ case LDAP_RES_COMPARE:
+ lcr.is_request=FALSE;
+ lcr.req_frame=0;
+ lcr.rep_frame=pinfo->fd->num;
+ break;
+ }
+ lcrp=g_hash_table_lookup(ldap_info->matched, &lcr);
+
+ if(lcrp){
+
+ lcrp->is_request=lcr.is_request;
+
+ } else {
+
+ /* we haven't found a match - try and match it up */
+
+ switch(protocolOpTag){
+ case LDAP_REQ_BIND:
+ case LDAP_REQ_SEARCH:
+ case LDAP_REQ_MODIFY:
+ case LDAP_REQ_ADD:
+ case LDAP_REQ_DELETE:
+ case LDAP_REQ_MODRDN:
+ case LDAP_REQ_COMPARE:
+
+ /* this a a request - add it to the unmatched list */
+
+ /* check that we dont already have one of those in the
+ unmatched list and if so remove it */
+
+ lcr.messageId=messageId;
+ lcrp=g_hash_table_lookup(ldap_info->unmatched, &lcr);
+ if(lcrp){
+ g_hash_table_remove(ldap_info->unmatched, lcrp);
+ }
+ /* if we cant reuse the old one, grab a new chunk */
+ if(!lcrp){
+ lcrp=se_alloc(sizeof(ldap_call_response_t));
+ }
+ lcrp->messageId=messageId;
+ lcrp->req_frame=pinfo->fd->num;
+ lcrp->req_time=pinfo->fd->abs_ts;
+ lcrp->rep_frame=0;
+ lcrp->protocolOpTag=protocolOpTag;
+ lcrp->is_request=TRUE;
+ g_hash_table_insert(ldap_info->unmatched, lcrp, lcrp);
+ return NULL;
+ break;
+ case LDAP_RES_BIND:
+ case LDAP_RES_SEARCH_ENTRY:
+ case LDAP_RES_SEARCH_REF:
+ case LDAP_RES_SEARCH_RESULT:
+ case LDAP_RES_MODIFY:
+ case LDAP_RES_ADD:
+ case LDAP_RES_DELETE:
+ case LDAP_RES_MODRDN:
+ case LDAP_RES_COMPARE:
+
+ /* this is a result - it should be in our unmatched list */
+
+ lcr.messageId=messageId;
+ lcrp=g_hash_table_lookup(ldap_info->unmatched, &lcr);
+
+ if(lcrp){
+
+ if(!lcrp->rep_frame){
+ g_hash_table_remove(ldap_info->unmatched, lcrp);
+ lcrp->rep_frame=pinfo->fd->num;
+ lcrp->is_request=FALSE;
+ g_hash_table_insert(ldap_info->matched, lcrp, lcrp);
+ }
+ }
+
+ break;
+ }
+
+ }
+ /* we have found a match */
+
+ if(lcrp){
+ if(lcrp->is_request){
+ proto_tree_add_uint(tree, hf_ldap_response_in, tvb, 0, 0, lcrp->rep_frame);
+ } else {
+ nstime_t ns;
+ proto_tree_add_uint(tree, hf_ldap_response_to, tvb, 0, 0, lcrp->req_frame);
+ nstime_delta(&ns, &pinfo->fd->abs_ts, &lcrp->req_time);
+ proto_tree_add_time(tree, hf_ldap_time, tvb, 0, 0, &ns);
+ }
+ }
+
+ return lcrp;
+}
#include "packet-ldap-fn.c"
@@ -230,8 +380,6 @@ dissect_ldap_payload(tvbuff_t *tvb, packet_info *pinfo,
guint headerLength = 0;
guint length = 0;
tvbuff_t *msg_tvb = NULL;
- proto_item *msg_item = NULL;
- proto_tree *msg_tree = NULL;
gint8 class;
gboolean pc, ind = 0;
gint32 ber_tag;
@@ -319,6 +467,7 @@ dissect_ldap_payload(tvbuff_t *tvb, packet_info *pinfo,
*/
pinfo->desegment_offset = offset;
pinfo->desegment_len = msg_len - length_remaining;
+
return;
}
}
@@ -344,16 +493,12 @@ dissect_ldap_payload(tvbuff_t *tvb, packet_info *pinfo,
/*
* Now dissect the LDAP message.
*/
- if (tree) {
- msg_item = proto_tree_add_text(tree, msg_tvb, 0, msg_len, "LDAP Message");
- msg_tree = proto_item_add_subtree(msg_item, ett_ldap_msg);
- }
/*dissect_ldap_message(msg_tvb, 0, pinfo, msg_tree, msg_item, first_time, ldap_info, is_mscldap);*/
ldap_info->first_time= first_time;
ldap_info->is_mscldap = is_mscldap;
pinfo->private_data = ldap_info;
- dissect_LDAPMessage_PDU(msg_tvb, pinfo, msg_tree);
+ dissect_LDAPMessage_PDU(msg_tvb, pinfo, tree);
offset += msg_len;
@@ -384,6 +529,7 @@ dissect_ldap_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean i
conversation = conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst,
pinfo->ptype, pinfo->srcport,
pinfo->destport, 0);
+
}
/*
@@ -400,10 +546,14 @@ dissect_ldap_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean i
ldap_info->first_auth_frame = 0;
ldap_info->matched=g_hash_table_new(ldap_info_hash_matched, ldap_info_equal_matched);
ldap_info->unmatched=g_hash_table_new(ldap_info_hash_unmatched, ldap_info_equal_unmatched);
+ ldap_info->num_results = 0;
+
conversation_add_proto_data(conversation, proto_ldap, ldap_info);
+
ldap_info->next = ldap_info_items;
ldap_info_items = ldap_info;
- }
+
+ }
switch (ldap_info->auth_type) {
case LDAP_AUTH_SASL:
@@ -439,7 +589,7 @@ dissect_ldap_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean i
* Yes - is the "Sequence Of" header split across segment
* boundaries? We require at least 6 bytes for the header
* which allows for a 4 byte length (ASN.1 BER).
- * For the SASL case we need at least 4 bytes, so this is
+ * For the SASL case we need at least 4 bytes, so this is
* no problem here because we check for 6 bytes ans sasl buffers
* with less than 2 bytes should not exist...
*/
@@ -725,10 +875,22 @@ void proto_register_ldap(void) {
static hf_register_info hf[] = {
- { &hf_ldap_sasl_buffer_length,
- { "SASL Buffer Length", "ldap.sasl_buffer_length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "SASL Buffer Length", HFILL }},
+ { &hf_ldap_sasl_buffer_length,
+ { "SASL Buffer Length", "ldap.sasl_buffer_length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "SASL Buffer Length", HFILL }},
+ { &hf_ldap_response_in,
+ { "Response In", "ldap.response_in",
+ FT_FRAMENUM, BASE_DEC, NULL, 0x0,
+ "The response to this LDAP request is in this frame", HFILL }},
+ { &hf_ldap_response_to,
+ { "Response To", "ldap.response_to",
+ FT_FRAMENUM, BASE_DEC, NULL, 0x0,
+ "This is a response to the LDAP request in this frame", HFILL }},
+ { &hf_ldap_time,
+ { "Time", "ldap.time",
+ FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
+ "The time between the Call and the Reply", HFILL }},
#include "packet-ldap-hfarr.c"
};
@@ -751,16 +913,20 @@ void proto_register_ldap(void) {
proto_register_field_array(proto_ldap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
-
+
register_dissector("ldap", dissect_ldap, proto_ldap);
ldap_module = prefs_register_protocol(proto_ldap, NULL);
prefs_register_bool_preference(ldap_module, "desegment_ldap_messages",
"Reassemble LDAP messages spanning multiple TCP segments",
"Whether the LDAP dissector should reassemble messages spanning multiple TCP segments."
- " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings, and disable \"Verify length\" in the BER protocol settings",
&ldap_desegment);
+ prefs_register_uint_preference(ldap_module, "tcp.port", "LDAP TCP Port",
+ "Set the port for LDAP operations",
+ 10, &ldap_tcp_port);
+
proto_cldap = proto_register_protocol(
"Connectionless Lightweight Directory Access Protocol",
"CLDAP", "cldap");
@@ -777,7 +943,8 @@ proto_reg_handoff_ldap(void)
{
dissector_handle_t ldap_handle, cldap_handle;
ldap_handle = create_dissector_handle(dissect_ldap, proto_ldap);
- dissector_add("tcp.port", TCP_PORT_LDAP, ldap_handle);
+
+ dissector_add("tcp.port", ldap_tcp_port, ldap_handle);
dissector_add("tcp.port", TCP_PORT_GLOBALCAT_LDAP, ldap_handle);
cldap_handle = create_dissector_handle(dissect_mscldap, proto_cldap);
@@ -787,25 +954,25 @@ proto_reg_handoff_ldap(void)
gssapi_wrap_handle = find_dissector("gssapi_verf");
/* http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dsml/dsml/ldap_controls_and_session_support.asp */
- register_ber_oid_name("1.2.840.113556.1.4.319","LDAP_PAGED_RESULT_OID_STRING");
- register_ber_oid_name("1.2.840.113556.1.4.417","LDAP_SERVER_SHOW_DELETED_OID");
- register_ber_oid_name("1.2.840.113556.1.4.473","LDAP_SERVER_SORT_OID");
- register_ber_oid_name("1.2.840.113556.1.4.521","LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID");
- register_ber_oid_name("1.2.840.113556.1.4.528","LDAP_SERVER_NOTIFICATION_OID");
- register_ber_oid_name("1.2.840.113556.1.4.529","LDAP_SERVER_EXTENDED_DN_OID");
- register_ber_oid_name("1.2.840.113556.1.4.619","LDAP_SERVER_LAZY_COMMIT_OID");
- register_ber_oid_name("1.2.840.113556.1.4.801","LDAP_SERVER_SD_FLAGS_OID");
- register_ber_oid_name("1.2.840.113556.1.4.805","LDAP_SERVER_TREE_DELETE_OID");
- register_ber_oid_name("1.2.840.113556.1.4.841","LDAP_SERVER_DIRSYNC_OID");
- register_ber_oid_name("1.2.840.113556.1.4.970 ","None");
- register_ber_oid_name("1.2.840.113556.1.4.1338","LDAP_SERVER_VERIFY_NAME_OID");
- register_ber_oid_name("1.2.840.113556.1.4.1339","LDAP_SERVER_DOMAIN_SCOPE_OID");
- register_ber_oid_name("1.2.840.113556.1.4.1340","LDAP_SERVER_SEARCH_OPTIONS_OID");
- register_ber_oid_name("1.2.840.113556.1.4.1413","LDAP_SERVER_PERMISSIVE_MODIFY_OID");
- register_ber_oid_name("1.2.840.113556.1.4.1504","LDAP_SERVER_ASQ_OID");
- register_ber_oid_name("1.2.840.113556.1.4.1781","LDAP_SERVER_FAST_BIND_OID");
- register_ber_oid_name("1.3.6.1.4.1.1466.101.119.1","None");
- register_ber_oid_name("1.3.6.1.4.1.1466.20037","LDAP_START_TLS_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.319","LDAP_PAGED_RESULT_OID_STRING");
+ register_ber_oid_name("1.2.840.113556.1.4.417","LDAP_SERVER_SHOW_DELETED_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.473","LDAP_SERVER_SORT_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.521","LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.528","LDAP_SERVER_NOTIFICATION_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.529","LDAP_SERVER_EXTENDED_DN_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.619","LDAP_SERVER_LAZY_COMMIT_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.801","LDAP_SERVER_SD_FLAGS_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.805","LDAP_SERVER_TREE_DELETE_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.841","LDAP_SERVER_DIRSYNC_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.970 ","None");
+ register_ber_oid_name("1.2.840.113556.1.4.1338","LDAP_SERVER_VERIFY_NAME_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.1339","LDAP_SERVER_DOMAIN_SCOPE_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.1340","LDAP_SERVER_SEARCH_OPTIONS_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.1413","LDAP_SERVER_PERMISSIVE_MODIFY_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.1504","LDAP_SERVER_ASQ_OID");
+ register_ber_oid_name("1.2.840.113556.1.4.1781","LDAP_SERVER_FAST_BIND_OID");
+ register_ber_oid_name("1.3.6.1.4.1.1466.101.119.1","None");
+ register_ber_oid_name("1.3.6.1.4.1.1466.20037","LDAP_START_TLS_OID");
register_ber_oid_name("2.16.840.1.113730.3.4.9","LDAP_CONTROL_VLVREQUEST VLV");