aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2011-01-11 02:27:41 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2011-01-11 02:27:41 +0000
commit3079c9c931961af03937d6188593b5c864f5d94d (patch)
treeb10526ffd6bd694c2fd3a2986a952a39d9d9b2e9 /asn1
parented66584b634b8c40df7b1f071d729e0f2dd2a53b (diff)
From Matthieu Patou <mat@samba.org>
Dissect LDAP DirSyncFlags to show the bits of this bitmap. svn path=/trunk/; revision=35474
Diffstat (limited to 'asn1')
-rw-r--r--asn1/ldap/Lightweight-Directory-Access-Protocol-V3.asn12
-rw-r--r--asn1/ldap/ldap.cnf46
2 files changed, 53 insertions, 5 deletions
diff --git a/asn1/ldap/Lightweight-Directory-Access-Protocol-V3.asn b/asn1/ldap/Lightweight-Directory-Access-Protocol-V3.asn
index 8f05823e9b..5f3a7d5321 100644
--- a/asn1/ldap/Lightweight-Directory-Access-Protocol-V3.asn
+++ b/asn1/ldap/Lightweight-Directory-Access-Protocol-V3.asn
@@ -422,10 +422,16 @@ SortResult ::= SEQUENCE {
-- Draft RFC - but used in some implementations
+-- Normaly it's an integer but we want to generate a subitem
+DirSyncFlagsSubEntry ::= SEQUENCE {
+ value [0] INTEGER
+}
+
+DirSyncFlags ::= INTEGER
-ReplControlValue ::= SEQUENCE {
- parentsFirst INTEGER,
- maxReturnLength INTEGER,
+DirSyncControlValue ::= SEQUENCE {
+ flags DirSyncFlags,
+ maxBytes INTEGER,
cookie OCTET STRING
}
diff --git a/asn1/ldap/ldap.cnf b/asn1/ldap/ldap.cnf
index 3c19ec6553..419ff03293 100644
--- a/asn1/ldap/ldap.cnf
+++ b/asn1/ldap/ldap.cnf
@@ -34,7 +34,7 @@ AssertionValue TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL
SearchControlValue B "1.2.840.113556.1.4.319" "pagedResultsControl"
SortKeyList B "1.2.840.113556.1.4.473" "sortKeyList"
SortResult B "1.2.840.113556.1.4.474" "sortResult"
-ReplControlValue B "1.2.840.113556.1.4.841" "replControlValue"
+DirSyncControlValue B "1.2.840.113556.1.4.841" "dirsync"
#RFC 3062
PasswdModifyRequestValue B "1.3.6.1.4.1.4203.1.11.1" "passwdModifyOID"
#RFC 3909
@@ -761,6 +761,49 @@ offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, &v
%(DEFAULT_BODY)s
}
+#.FN_BODY DirSyncFlags
+ gint8 class;
+ gboolean pc;
+ gint32 tag;
+ guint32 len;
+ gint32 val;
+
+ int otheroffset = offset;
+ if(!implicit_tag){
+ otheroffset=dissect_ber_identifier(actx->pinfo, tree, tvb, otheroffset, &class, &pc, &tag);
+ otheroffset=dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, NULL);
+ } else {
+ gint32 remaining=tvb_length_remaining(tvb, offset);
+ len=remaining>0 ? remaining : 0;
+ }
+
+ offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, -1, &val);
+
+ header_field_info *hfinfo;
+ hfinfo = proto_registrar_get_nth(hf_index);
+
+ if (val >0) {
+ proto_tree *subtree = NULL;
+ proto_item *item = NULL;
+ item = proto_tree_add_text(tree, tvb, otheroffset+1, len, "%s: 0x%08x", hfinfo->name, val);
+ subtree = proto_item_add_subtree(item, ett_ldap_DirSyncFlagsSubEntry);
+
+ if (val & 0x1) {
+ proto_tree_add_text(subtree, tvb, otheroffset+1, len, "Flag Object_Security");
+ }
+ if (val & 0x800) {
+ proto_tree_add_text(subtree, tvb, otheroffset+1, len, "Flag Ancestor_First");
+ }
+ if (val & 0x2000) {
+ proto_tree_add_text(subtree, tvb, otheroffset+1, len, "Flag Public_Data_Only");
+ }
+ if (val & 0x80000000) {
+ proto_tree_add_text(subtree, tvb, otheroffset+1, len, "Flag Incremental_Value");
+ }
+ } else {
+ proto_tree_add_text(tree, tvb, otheroffset+len, len, "%s: 0", hfinfo->name);
+ }
+
#.FN_BODY SearchResultReference
%(DEFAULT_BODY)s
@@ -774,7 +817,6 @@ offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, &v
ldap_do_protocolop(actx->pinfo);
-
#.NO_EMIT
AttributeType
Attribute