From LEGO via bug 4405:
[obnox/wireshark/wip.git] / epan / dissectors / packet-dsp.c
index 53268b47c75a9dd5e447b63eb41069369c2250a9..ca1f6aef276438453388ed94db324f6789a5c335 100644 (file)
@@ -1,7 +1,7 @@
 /* Do not modify this file.                                                   */
 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
-/* .\packet-dsp.c                                                             */
-/* ../../tools/asn2wrs.py -b -e -p dsp -c dsp.cnf -s packet-dsp-template dsp.asn */
+/* packet-dsp.c                                                               */
+/* ../../tools/asn2wrs.py -b -e -p dsp -c ./dsp.cnf -s ./packet-dsp-template -D . dsp.asn */
 
 /* Input file: packet-dsp-template.c */
 
@@ -38,8 +38,7 @@
 #include <glib.h>
 #include <epan/packet.h>
 #include <epan/prefs.h>
-#include <epan/conversation.h>
-#include <epan/oid_resolv.h>
+#include <epan/oids.h>
 #include <epan/asn1.h>
 
 #include <stdio.h>
 #define PFNAME "dsp"
 
 static guint global_dsp_tcp_port = 102;
-static guint tcp_port = 0;
-static dissector_handle_t tpkt_handle = NULL;
-void prefs_register_dsp(void); /* forwad declaration for use in preferences registration */
+static dissector_handle_t tpkt_handle;
+void prefs_register_dsp(void); /* forward declaration for use in preferences registration */
 
 
 /* Initialize the protocol and registered fields */
-int proto_dsp = -1;
+static int proto_dsp = -1;
 
 static struct SESSION_DATA_STRUCTURE* session = NULL;
 
@@ -77,6 +75,7 @@ static struct SESSION_DATA_STRUCTURE* session = NULL;
 #line 1 "packet-dsp-hf.c"
 static int hf_dsp_AccessPoint_PDU = -1;           /* AccessPoint */
 static int hf_dsp_MasterAndShadowAccessPoints_PDU = -1;  /* MasterAndShadowAccessPoints */
+static int hf_dsp_DitBridgeKnowledge_PDU = -1;    /* DitBridgeKnowledge */
 static int hf_dsp_chainedArgument = -1;           /* ChainingArguments */
 static int hf_dsp_readArgument = -1;              /* ReadArgument */
 static int hf_dsp_unsignedChainedReadArgument = -1;  /* ChainedReadArgumentData */
@@ -174,6 +173,10 @@ static int hf_dsp_operationIdentifier = -1;       /* INTEGER */
 static int hf_dsp_searchRuleId = -1;              /* SearchRuleId */
 static int hf_dsp_chainedRelaxation = -1;         /* MRMapping */
 static int hf_dsp_relatedEntry = -1;              /* INTEGER */
+static int hf_dsp_dspPaging = -1;                 /* BOOLEAN */
+static int hf_dsp_nonDapPdu = -1;                 /* T_nonDapPdu */
+static int hf_dsp_streamedResults = -1;           /* INTEGER */
+static int hf_dsp_excludeWriteableCopies = -1;    /* BOOLEAN */
 static int hf_dsp_utcTime = -1;                   /* UTCTime */
 static int hf_dsp_generalizedTime = -1;           /* GeneralizedTime */
 static int hf_dsp_crossReferences = -1;           /* SEQUENCE_OF_CrossReference */
@@ -189,24 +192,27 @@ static int hf_dsp_ae_title = -1;                  /* Name */
 static int hf_dsp_address = -1;                   /* PresentationAddress */
 static int hf_dsp_protocolInformation = -1;       /* SET_OF_ProtocolInformation */
 static int hf_dsp_protocolInformation_item = -1;  /* ProtocolInformation */
+static int hf_dsp_labeledURI = -1;                /* LabeledURI */
 static int hf_dsp_access_point_category = -1;     /* APCategory */
 static int hf_dsp_chainingRequired = -1;          /* BOOLEAN */
 static int hf_dsp_MasterAndShadowAccessPoints_item = -1;  /* MasterOrShadowAccessPoint */
 static int hf_dsp_category = -1;                  /* T_category */
 static int hf_dsp_additionalPoints = -1;          /* MasterAndShadowAccessPoints */
+static int hf_dsp_domainLocalID = -1;             /* DirectoryString */
+static int hf_dsp_accessPoints = -1;              /* MasterAndShadowAccessPoints */
 static int hf_dsp_Exclusions_item = -1;           /* RDNSequence */
 static int hf_dsp_rdnsResolved = -1;              /* INTEGER */
-static int hf_dsp_accessPoints = -1;              /* SET_OF_AccessPointInformation */
+static int hf_dsp_accessPoints_01 = -1;           /* SET_OF_AccessPointInformation */
 static int hf_dsp_accessPoints_item = -1;         /* AccessPointInformation */
 static int hf_dsp_returnToDUA = -1;               /* BOOLEAN */
 static int hf_dsp_basicLevels = -1;               /* T_basicLevels */
 static int hf_dsp_level = -1;                     /* T_level */
 static int hf_dsp_localQualifier = -1;            /* INTEGER */
 static int hf_dsp_signed = -1;                    /* BOOLEAN */
-static int hf_dsp_other = -1;                     /* EXTERNALt */
+static int hf_dsp_other = -1;                     /* EXTERNAL */
 
 /*--- End of included file: packet-dsp-hf.c ---*/
-#line 68 "packet-dsp-template.c"
+#line 66 "packet-dsp-template.c"
 
 /* Initialize the subtree pointers */
 static gint ett_dsp = -1;
@@ -278,6 +284,7 @@ static gint ett_dsp_SET_OF_ProtocolInformation = -1;
 static gint ett_dsp_MasterOrShadowAccessPoint = -1;
 static gint ett_dsp_MasterAndShadowAccessPoints = -1;
 static gint ett_dsp_AccessPointInformation = -1;
+static gint ett_dsp_DitBridgeKnowledge = -1;
 static gint ett_dsp_Exclusions = -1;
 static gint ett_dsp_ContinuationReference = -1;
 static gint ett_dsp_SET_OF_AccessPointInformation = -1;
@@ -285,113 +292,11 @@ static gint ett_dsp_AuthenticationLevel = -1;
 static gint ett_dsp_T_basicLevels = -1;
 
 /*--- End of included file: packet-dsp-ett.c ---*/
-#line 72 "packet-dsp-template.c"
+#line 70 "packet-dsp-template.c"
 
 
 /*--- Included file: packet-dsp-fn.c ---*/
 #line 1 "packet-dsp-fn.c"
-/*--- Fields for imported types ---*/
-
-static int dissect_readArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_ReadArgument(FALSE, tvb, offset, actx, tree, hf_dsp_readArgument);
-}
-static int dissect_algorithmIdentifier(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, actx, tree, hf_dsp_algorithmIdentifier);
-}
-static int dissect_readResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_ReadResult(FALSE, tvb, offset, actx, tree, hf_dsp_readResult);
-}
-static int dissect_compareArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_CompareArgument(FALSE, tvb, offset, actx, tree, hf_dsp_compareArgument);
-}
-static int dissect_compareResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_CompareResult(FALSE, tvb, offset, actx, tree, hf_dsp_compareResult);
-}
-static int dissect_listArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_ListArgument(FALSE, tvb, offset, actx, tree, hf_dsp_listArgument);
-}
-static int dissect_listResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_ListResult(FALSE, tvb, offset, actx, tree, hf_dsp_listResult);
-}
-static int dissect_searchArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_SearchArgument(FALSE, tvb, offset, actx, tree, hf_dsp_searchArgument);
-}
-static int dissect_searchResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_SearchResult(FALSE, tvb, offset, actx, tree, hf_dsp_searchResult);
-}
-static int dissect_addEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_AddEntryArgument(FALSE, tvb, offset, actx, tree, hf_dsp_addEntryArgument);
-}
-static int dissect_addEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_AddEntryResult(FALSE, tvb, offset, actx, tree, hf_dsp_addEntryResult);
-}
-static int dissect_removeEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_RemoveEntryArgument(FALSE, tvb, offset, actx, tree, hf_dsp_removeEntryArgument);
-}
-static int dissect_removeEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_RemoveEntryResult(FALSE, tvb, offset, actx, tree, hf_dsp_removeEntryResult);
-}
-static int dissect_modifyEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_ModifyEntryArgument(FALSE, tvb, offset, actx, tree, hf_dsp_modifyEntryArgument);
-}
-static int dissect_modifyEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_ModifyEntryResult(FALSE, tvb, offset, actx, tree, hf_dsp_modifyEntryResult);
-}
-static int dissect_modifyDNArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_ModifyDNArgument(FALSE, tvb, offset, actx, tree, hf_dsp_modifyDNArgument);
-}
-static int dissect_modifyDNResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_ModifyDNResult(FALSE, tvb, offset, actx, tree, hf_dsp_modifyDNResult);
-}
-static int dissect_contextPrefix(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_DistinguishedName(FALSE, tvb, offset, actx, tree, hf_dsp_contextPrefix);
-}
-static int dissect_securityParameters(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dap_SecurityParameters(FALSE, tvb, offset, actx, tree, hf_dsp_securityParameters);
-}
-static int dissect_performer(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_DistinguishedName(FALSE, tvb, offset, actx, tree, hf_dsp_performer);
-}
-static int dissect_notification_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_Attribute(FALSE, tvb, offset, actx, tree, hf_dsp_notification_item);
-}
-static int dissect_originator(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_DistinguishedName(FALSE, tvb, offset, actx, tree, hf_dsp_originator);
-}
-static int dissect_targetObjectDN(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_DistinguishedName(FALSE, tvb, offset, actx, tree, hf_dsp_targetObjectDN);
-}
-static int dissect_uniqueIdentifier(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509sat_UniqueIdentifier(FALSE, tvb, offset, actx, tree, hf_dsp_uniqueIdentifier);
-}
-static int dissect_searchRuleId(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_SearchRuleId(FALSE, tvb, offset, actx, tree, hf_dsp_searchRuleId);
-}
-static int dissect_chainedRelaxation(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_MRMapping(FALSE, tvb, offset, actx, tree, hf_dsp_chainedRelaxation);
-}
-static int dissect_dsa(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_Name(FALSE, tvb, offset, actx, tree, hf_dsp_dsa);
-}
-static int dissect_targetObject(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_Name(FALSE, tvb, offset, actx, tree, hf_dsp_targetObject);
-}
-static int dissect_ae_title(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_Name(FALSE, tvb, offset, actx, tree, hf_dsp_ae_title);
-}
-static int dissect_address(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509sat_PresentationAddress(FALSE, tvb, offset, actx, tree, hf_dsp_address);
-}
-static int dissect_protocolInformation_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509sat_ProtocolInformation(FALSE, tvb, offset, actx, tree, hf_dsp_protocolInformation_item);
-}
-static int dissect_Exclusions_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_x509if_RDNSequence(FALSE, tvb, offset, actx, tree, hf_dsp_Exclusions_item);
-}
-static int dissect_other(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_acse_EXTERNALt(FALSE, tvb, offset, actx, tree, hf_dsp_other);
-}
-
 
 
 static int
@@ -435,43 +340,22 @@ dissect_dsp_T_nameResolutionPhase(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
   return offset;
 }
-static int dissect_nameResolutionPhase(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_nameResolutionPhase(FALSE, tvb, offset, actx, tree, hf_dsp_nameResolutionPhase);
-}
 
 
 
 static int
 dissect_dsp_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
-                                  NULL);
+                                                NULL);
 
   return offset;
 }
-static int dissect_aliasedRDNs(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_INTEGER(FALSE, tvb, offset, actx, tree, hf_dsp_aliasedRDNs);
-}
-static int dissect_operationIdentifier(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_INTEGER(FALSE, tvb, offset, actx, tree, hf_dsp_operationIdentifier);
-}
-static int dissect_relatedEntry(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_INTEGER(FALSE, tvb, offset, actx, tree, hf_dsp_relatedEntry);
-}
-static int dissect_nextRDNToBeResolved(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_INTEGER(FALSE, tvb, offset, actx, tree, hf_dsp_nextRDNToBeResolved);
-}
-static int dissect_rdnsResolved(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_INTEGER(FALSE, tvb, offset, actx, tree, hf_dsp_rdnsResolved);
-}
-static int dissect_localQualifier(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_INTEGER(FALSE, tvb, offset, actx, tree, hf_dsp_localQualifier);
-}
 
 
 static const ber_sequence_t OperationProgress_set[] = {
-  { BER_CLASS_CON, 0, 0, dissect_nameResolutionPhase },
-  { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_nextRDNToBeResolved },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_nameResolutionPhase, BER_CLASS_CON, 0, 0, dissect_dsp_T_nameResolutionPhase },
+  { &hf_dsp_nextRDNToBeResolved, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
+  { NULL, 0, 0, 0, NULL }
 };
 
 int
@@ -481,16 +365,13 @@ dissect_dsp_OperationProgress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
 
   return offset;
 }
-static int dissect_operationProgress(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_OperationProgress(FALSE, tvb, offset, actx, tree, hf_dsp_operationProgress);
-}
 
 
 static const ber_sequence_t TraceItem_set[] = {
-  { BER_CLASS_CON, 0, 0, dissect_dsa },
-  { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_targetObject },
-  { BER_CLASS_CON, 2, 0, dissect_operationProgress },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_dsa             , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
+  { &hf_dsp_targetObject    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_Name },
+  { &hf_dsp_operationProgress, BER_CLASS_CON, 2, 0, dissect_dsp_OperationProgress },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -500,13 +381,10 @@ dissect_dsp_TraceItem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
 
   return offset;
 }
-static int dissect_TraceInformation_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_TraceItem(FALSE, tvb, offset, actx, tree, hf_dsp_TraceInformation_item);
-}
 
 
 static const ber_sequence_t TraceInformation_sequence_of[1] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_TraceInformation_item },
+  { &hf_dsp_TraceInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_TraceItem },
 };
 
 static int
@@ -516,42 +394,15 @@ dissect_dsp_TraceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
 
   return offset;
 }
-static int dissect_traceInformation(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_TraceInformation(FALSE, tvb, offset, actx, tree, hf_dsp_traceInformation);
-}
 
 
 
 static int
 dissect_dsp_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index);
+  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
 
   return offset;
 }
-static int dissect_aliasDereferenced(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dsp_aliasDereferenced);
-}
-static int dissect_returnCrossRefs(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dsp_returnCrossRefs);
-}
-static int dissect_entryOnly(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dsp_entryOnly);
-}
-static int dissect_excludeShadows(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dsp_excludeShadows);
-}
-static int dissect_nameResolveOnMaster(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dsp_nameResolveOnMaster);
-}
-static int dissect_chainingRequired(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dsp_chainingRequired);
-}
-static int dissect_returnToDUA(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dsp_returnToDUA);
-}
-static int dissect_signed(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dsp_signed);
-}
 
 
 const value_string dsp_ReferenceType_vals[] = {
@@ -563,6 +414,7 @@ const value_string dsp_ReferenceType_vals[] = {
   {   6, "master" },
   {   7, "immediateSuperior" },
   {   8, "self" },
+  {   9, "ditBridge" },
   { 0, NULL }
 };
 
@@ -574,9 +426,6 @@ dissect_dsp_ReferenceType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
 
   return offset;
 }
-static int dissect_referenceType(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ReferenceType(FALSE, tvb, offset, actx, tree, hf_dsp_referenceType);
-}
 
 
 
@@ -586,23 +435,15 @@ dissect_dsp_DomainInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
 
   return offset;
 }
-static int dissect_info(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_DomainInfo(FALSE, tvb, offset, actx, tree, hf_dsp_info);
-}
 
 
 
 static int
 dissect_dsp_UTCTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime,
-                                            actx, tree, tvb, offset, hf_index,
-                                            NULL);
+  offset = dissect_ber_UTCTime(implicit_tag, actx, tree, tvb, offset, hf_index);
 
   return offset;
 }
-static int dissect_utcTime(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_UTCTime(FALSE, tvb, offset, actx, tree, hf_dsp_utcTime);
-}
 
 
 
@@ -612,9 +453,6 @@ dissect_dsp_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
 
   return offset;
 }
-static int dissect_generalizedTime(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_GeneralizedTime(FALSE, tvb, offset, actx, tree, hf_dsp_generalizedTime);
-}
 
 
 static const value_string dsp_Time_vals[] = {
@@ -624,9 +462,9 @@ static const value_string dsp_Time_vals[] = {
 };
 
 static const ber_choice_t Time_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_utcTime },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_generalizedTime },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_utcTime         , BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_dsp_UTCTime },
+  {   1, &hf_dsp_generalizedTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_dsp_GeneralizedTime },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -637,9 +475,6 @@ dissect_dsp_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, a
 
   return offset;
 }
-static int dissect_timeLimit(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_Time(FALSE, tvb, offset, actx, tree, hf_dsp_timeLimit);
-}
 
 
 static const value_string dsp_T_level_vals[] = {
@@ -657,16 +492,13 @@ dissect_dsp_T_level(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
 
   return offset;
 }
-static int dissect_level(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_level(FALSE, tvb, offset, actx, tree, hf_dsp_level);
-}
 
 
 static const ber_sequence_t T_basicLevels_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_level },
-  { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_localQualifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_signed },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_level           , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_dsp_T_level },
+  { &hf_dsp_localQualifier  , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_INTEGER },
+  { &hf_dsp_signed          , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_BOOLEAN },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -676,8 +508,14 @@ dissect_dsp_T_basicLevels(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
 
   return offset;
 }
-static int dissect_basicLevels(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_basicLevels(FALSE, tvb, offset, actx, tree, hf_dsp_basicLevels);
+
+
+
+static int
+dissect_dsp_EXTERNAL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
+
+  return offset;
 }
 
 
@@ -688,9 +526,9 @@ static const value_string dsp_AuthenticationLevel_vals[] = {
 };
 
 static const ber_choice_t AuthenticationLevel_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_basicLevels },
-  {   1, BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_other },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_basicLevels     , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_basicLevels },
+  {   1, &hf_dsp_other           , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_dsp_EXTERNAL },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -701,53 +539,63 @@ dissect_dsp_AuthenticationLevel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
 
   return offset;
 }
-static int dissect_authenticationLevel(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_AuthenticationLevel(FALSE, tvb, offset, actx, tree, hf_dsp_authenticationLevel);
-}
 
 
 static const ber_sequence_t Exclusions_set_of[1] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Exclusions_item },
+  { &hf_dsp_Exclusions_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_RDNSequence },
 };
 
-static int
+int
 dissect_dsp_Exclusions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
                                  Exclusions_set_of, hf_index, ett_dsp_Exclusions);
 
   return offset;
 }
-static int dissect_exclusions(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_Exclusions(FALSE, tvb, offset, actx, tree, hf_dsp_exclusions);
-}
-static int dissect_alreadySearched(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_Exclusions(FALSE, tvb, offset, actx, tree, hf_dsp_alreadySearched);
+
+
+static const value_string dsp_T_nonDapPdu_vals[] = {
+  {   0, "ldap" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_dsp_T_nonDapPdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                  NULL);
+
+  return offset;
 }
 
 
 static const ber_sequence_t ChainingArguments_set[] = {
-  { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_originator },
-  { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_targetObjectDN },
-  { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_operationProgress },
-  { BER_CLASS_CON, 3, 0, dissect_traceInformation },
-  { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
-  { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
-  { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_returnCrossRefs },
-  { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_referenceType },
-  { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_info },
-  { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_timeLimit },
-  { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_securityParameters },
-  { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_entryOnly },
-  { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_uniqueIdentifier },
-  { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_authenticationLevel },
-  { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_exclusions },
-  { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_excludeShadows },
-  { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
-  { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL, dissect_operationIdentifier },
-  { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL, dissect_searchRuleId },
-  { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_chainedRelaxation },
-  { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL, dissect_relatedEntry },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_originator      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
+  { &hf_dsp_targetObjectDN  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
+  { &hf_dsp_operationProgress, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
+  { &hf_dsp_traceInformation, BER_CLASS_CON, 3, 0, dissect_dsp_TraceInformation },
+  { &hf_dsp_aliasDereferenced, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_aliasedRDNs     , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
+  { &hf_dsp_returnCrossRefs , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_referenceType   , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
+  { &hf_dsp_info            , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dsp_DomainInfo },
+  { &hf_dsp_timeLimit       , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dsp_Time },
+  { &hf_dsp_securityParameters, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
+  { &hf_dsp_entryOnly       , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_uniqueIdentifier, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_x509sat_UniqueIdentifier },
+  { &hf_dsp_authenticationLevel, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dsp_AuthenticationLevel },
+  { &hf_dsp_exclusions      , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
+  { &hf_dsp_excludeShadows  , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_nameResolveOnMaster, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_operationIdentifier, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
+  { &hf_dsp_searchRuleId    , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL, dissect_x509if_SearchRuleId },
+  { &hf_dsp_chainedRelaxation, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_x509if_MRMapping },
+  { &hf_dsp_relatedEntry    , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
+  { &hf_dsp_dspPaging       , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_nonDapPdu       , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_dsp_T_nonDapPdu },
+  { &hf_dsp_streamedResults , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
+  { &hf_dsp_excludeWriteableCopies, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -757,15 +605,12 @@ dissect_dsp_ChainingArguments(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
 
   return offset;
 }
-static int dissect_chainedArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainingArguments(FALSE, tvb, offset, actx, tree, hf_dsp_chainedArgument);
-}
 
 
 static const ber_sequence_t ChainedReadArgumentData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedArgument },
-  { BER_CLASS_CON, 0, 0, dissect_readArgument },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
+  { &hf_dsp_readArgument    , BER_CLASS_CON, 0, 0, dissect_dap_ReadArgument },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -775,12 +620,6 @@ dissect_dsp_ChainedReadArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
 
   return offset;
 }
-static int dissect_unsignedChainedReadArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedReadArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedReadArgument);
-}
-static int dissect_chainedReadArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedReadArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedReadArgument);
-}
 
 
 
@@ -792,16 +631,13 @@ dissect_dsp_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
 
   return offset;
 }
-static int dissect_encrypted(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_BIT_STRING(FALSE, tvb, offset, actx, tree, hf_dsp_encrypted);
-}
 
 
 static const ber_sequence_t T_signedChainedReadArgument_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedReadArgument },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadArgumentData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -811,9 +647,6 @@ dissect_dsp_T_signedChainedReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb
 
   return offset;
 }
-static int dissect_signedChainedReadArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedReadArgument(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedReadArgument);
-}
 
 
 static const value_string dsp_ChainedReadArgument_vals[] = {
@@ -823,9 +656,9 @@ static const value_string dsp_ChainedReadArgument_vals[] = {
 };
 
 static const ber_choice_t ChainedReadArgument_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedReadArgument },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedReadArgument },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadArgumentData },
+  {   1, &hf_dsp_signedChainedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedReadArgument },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -839,7 +672,7 @@ dissect_dsp_ChainedReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
 
 
 static const ber_sequence_t SET_OF_ProtocolInformation_set_of[1] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protocolInformation_item },
+  { &hf_dsp_protocolInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509sat_ProtocolInformation },
 };
 
 static int
@@ -849,9 +682,6 @@ dissect_dsp_SET_OF_ProtocolInformation(gboolean implicit_tag _U_, tvbuff_t *tvb
 
   return offset;
 }
-static int dissect_protocolInformation(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_SET_OF_ProtocolInformation(FALSE, tvb, offset, actx, tree, hf_dsp_protocolInformation);
-}
 
 
 static const value_string dsp_T_category_vals[] = {
@@ -868,9 +698,6 @@ dissect_dsp_T_category(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
 
   return offset;
 }
-static int dissect_category(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_category(FALSE, tvb, offset, actx, tree, hf_dsp_category);
-}
 
 
 static const value_string dsp_APCategory_vals[] = {
@@ -887,18 +714,15 @@ dissect_dsp_APCategory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
 
   return offset;
 }
-static int dissect_access_point_category(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_APCategory(FALSE, tvb, offset, actx, tree, hf_dsp_access_point_category);
-}
 
 
 static const ber_sequence_t MasterOrShadowAccessPoint_set[] = {
-  { BER_CLASS_CON, 0, 0, dissect_ae_title },
-  { BER_CLASS_CON, 1, 0, dissect_address },
-  { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_protocolInformation },
-  { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_access_point_category },
-  { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_chainingRequired },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_ae_title        , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
+  { &hf_dsp_address         , BER_CLASS_CON, 1, 0, dissect_x509sat_PresentationAddress },
+  { &hf_dsp_protocolInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_SET_OF_ProtocolInformation },
+  { &hf_dsp_access_point_category, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_APCategory },
+  { &hf_dsp_chainingRequired, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -908,13 +732,10 @@ dissect_dsp_MasterOrShadowAccessPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _
 
   return offset;
 }
-static int dissect_MasterAndShadowAccessPoints_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_MasterOrShadowAccessPoint(FALSE, tvb, offset, actx, tree, hf_dsp_MasterAndShadowAccessPoints_item);
-}
 
 
 static const ber_sequence_t MasterAndShadowAccessPoints_set_of[1] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_MasterAndShadowAccessPoints_item },
+  { &hf_dsp_MasterAndShadowAccessPoints_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_MasterOrShadowAccessPoint },
 };
 
 int
@@ -924,40 +745,31 @@ dissect_dsp_MasterAndShadowAccessPoints(gboolean implicit_tag _U_, tvbuff_t *tvb
 
   return offset;
 }
-static int dissect_additionalPoints(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_MasterAndShadowAccessPoints(FALSE, tvb, offset, actx, tree, hf_dsp_additionalPoints);
-}
 
 
 static const ber_sequence_t AccessPointInformation_set[] = {
-  { BER_CLASS_CON, 0, 0, dissect_ae_title },
-  { BER_CLASS_CON, 1, 0, dissect_address },
-  { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_protocolInformation },
-  { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_category },
-  { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_chainingRequired },
-  { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_additionalPoints },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_ae_title        , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
+  { &hf_dsp_address         , BER_CLASS_CON, 1, 0, dissect_x509sat_PresentationAddress },
+  { &hf_dsp_protocolInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_SET_OF_ProtocolInformation },
+  { &hf_dsp_category        , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_T_category },
+  { &hf_dsp_chainingRequired, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_additionalPoints, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dsp_MasterAndShadowAccessPoints },
+  { NULL, 0, 0, 0, NULL }
 };
 
-static int
+int
 dissect_dsp_AccessPointInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
                               AccessPointInformation_set, hf_index, ett_dsp_AccessPointInformation);
 
   return offset;
 }
-static int dissect_accessPoint(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_AccessPointInformation(FALSE, tvb, offset, actx, tree, hf_dsp_accessPoint);
-}
-static int dissect_accessPoints_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_AccessPointInformation(FALSE, tvb, offset, actx, tree, hf_dsp_accessPoints_item);
-}
 
 
 static const ber_sequence_t CrossReference_set[] = {
-  { BER_CLASS_CON, 0, 0, dissect_contextPrefix },
-  { BER_CLASS_CON, 1, 0, dissect_accessPoint },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_contextPrefix   , BER_CLASS_CON, 0, 0, dissect_x509if_DistinguishedName },
+  { &hf_dsp_accessPoint     , BER_CLASS_CON, 1, 0, dissect_dsp_AccessPointInformation },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -967,13 +779,10 @@ dissect_dsp_CrossReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
 
   return offset;
 }
-static int dissect_crossReferences_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_CrossReference(FALSE, tvb, offset, actx, tree, hf_dsp_crossReferences_item);
-}
 
 
 static const ber_sequence_t SEQUENCE_OF_CrossReference_sequence_of[1] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_crossReferences_item },
+  { &hf_dsp_crossReferences_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_CrossReference },
 };
 
 static int
@@ -983,17 +792,14 @@ dissect_dsp_SEQUENCE_OF_CrossReference(gboolean implicit_tag _U_, tvbuff_t *tvb
 
   return offset;
 }
-static int dissect_crossReferences(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_SEQUENCE_OF_CrossReference(FALSE, tvb, offset, actx, tree, hf_dsp_crossReferences);
-}
 
 
 static const ber_sequence_t ChainingResults_set[] = {
-  { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_info },
-  { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_crossReferences },
-  { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_securityParameters },
-  { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_alreadySearched },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_info            , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_dsp_DomainInfo },
+  { &hf_dsp_crossReferences , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dsp_SEQUENCE_OF_CrossReference },
+  { &hf_dsp_securityParameters, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
+  { &hf_dsp_alreadySearched , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1003,15 +809,12 @@ dissect_dsp_ChainingResults(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
 
   return offset;
 }
-static int dissect_chainedResults(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainingResults(FALSE, tvb, offset, actx, tree, hf_dsp_chainedResults);
-}
 
 
 static const ber_sequence_t ChainedReadResultData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedResults },
-  { BER_CLASS_CON, 0, 0, dissect_readResult },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
+  { &hf_dsp_readResult      , BER_CLASS_CON, 0, 0, dissect_dap_ReadResult },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1021,19 +824,13 @@ dissect_dsp_ChainedReadResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
   return offset;
 }
-static int dissect_unsignedChainedReadResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedReadResultData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedReadResult);
-}
-static int dissect_chainedReadResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedReadResultData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedReadResult);
-}
 
 
 static const ber_sequence_t T_signedChainedReadResult_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedReadResult },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadResultData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1043,9 +840,6 @@ dissect_dsp_T_signedChainedReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb _
 
   return offset;
 }
-static int dissect_signedChainedReadResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedReadResult(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedReadResult);
-}
 
 
 static const value_string dsp_ChainedReadResult_vals[] = {
@@ -1055,9 +849,9 @@ static const value_string dsp_ChainedReadResult_vals[] = {
 };
 
 static const ber_choice_t ChainedReadResult_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedReadResult },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedReadResult },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadResultData },
+  {   1, &hf_dsp_signedChainedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedReadResult },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1071,9 +865,9 @@ dissect_dsp_ChainedReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
 
 
 static const ber_sequence_t ChainedCompareArgumentData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedArgument },
-  { BER_CLASS_CON, 0, 0, dissect_compareArgument },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
+  { &hf_dsp_compareArgument , BER_CLASS_CON, 0, 0, dissect_dap_CompareArgument },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1083,19 +877,13 @@ dissect_dsp_ChainedCompareArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb
 
   return offset;
 }
-static int dissect_unsignedChainedCompareArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedCompareArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedCompareArgument);
-}
-static int dissect_chainedCompareArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedCompareArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedCompareArgument);
-}
 
 
 static const ber_sequence_t T_signedChainedCompareArgument_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedCompareArgument },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareArgumentData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1105,9 +893,6 @@ dissect_dsp_T_signedChainedCompareArgument(gboolean implicit_tag _U_, tvbuff_t *
 
   return offset;
 }
-static int dissect_signedChainedCompareArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedCompareArgument(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedCompareArgument);
-}
 
 
 static const value_string dsp_ChainedCompareArgument_vals[] = {
@@ -1117,9 +902,9 @@ static const value_string dsp_ChainedCompareArgument_vals[] = {
 };
 
 static const ber_choice_t ChainedCompareArgument_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedCompareArgument },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedCompareArgument },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareArgumentData },
+  {   1, &hf_dsp_signedChainedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedCompareArgument },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1133,9 +918,9 @@ dissect_dsp_ChainedCompareArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
 
 static const ber_sequence_t ChainedCompareResultData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedResults },
-  { BER_CLASS_CON, 0, 0, dissect_compareResult },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
+  { &hf_dsp_compareResult   , BER_CLASS_CON, 0, 0, dissect_dap_CompareResult },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1145,19 +930,13 @@ dissect_dsp_ChainedCompareResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U
 
   return offset;
 }
-static int dissect_unsignedChainedCompareResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedCompareResultData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedCompareResult);
-}
-static int dissect_chainedCompareResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedCompareResultData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedCompareResult);
-}
 
 
 static const ber_sequence_t T_signedChainedCompareResult_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedCompareResult },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareResultData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1167,9 +946,6 @@ dissect_dsp_T_signedChainedCompareResult(gboolean implicit_tag _U_, tvbuff_t *tv
 
   return offset;
 }
-static int dissect_signedChainedCompareResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedCompareResult(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedCompareResult);
-}
 
 
 static const value_string dsp_ChainedCompareResult_vals[] = {
@@ -1179,9 +955,9 @@ static const value_string dsp_ChainedCompareResult_vals[] = {
 };
 
 static const ber_choice_t ChainedCompareResult_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedCompareResult },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedCompareResult },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareResultData },
+  {   1, &hf_dsp_signedChainedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedCompareResult },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1213,9 +989,9 @@ dissect_dsp_ChainedAbandonResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
 
 
 static const ber_sequence_t ChainedListArgumentData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedArgument },
-  { BER_CLASS_CON, 0, 0, dissect_listArgument },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
+  { &hf_dsp_listArgument    , BER_CLASS_CON, 0, 0, dissect_dap_ListArgument },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1225,19 +1001,13 @@ dissect_dsp_ChainedListArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
 
   return offset;
 }
-static int dissect_unsignedChainedListArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedListArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedListArgument);
-}
-static int dissect_chainedListArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedListArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedListArgument);
-}
 
 
 static const ber_sequence_t T_signedChainedListArgument_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedListArgument },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListArgumentData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1247,9 +1017,6 @@ dissect_dsp_T_signedChainedListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb
 
   return offset;
 }
-static int dissect_signedChainedListArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedListArgument(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedListArgument);
-}
 
 
 static const value_string dsp_ChainedListArgument_vals[] = {
@@ -1259,9 +1026,9 @@ static const value_string dsp_ChainedListArgument_vals[] = {
 };
 
 static const ber_choice_t ChainedListArgument_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedListArgument },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedListArgument },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListArgumentData },
+  {   1, &hf_dsp_signedChainedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedListArgument },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1275,9 +1042,9 @@ dissect_dsp_ChainedListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
 
 
 static const ber_sequence_t ChainedListResultData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedResults },
-  { BER_CLASS_CON, 0, 0, dissect_listResult },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
+  { &hf_dsp_listResult      , BER_CLASS_CON, 0, 0, dissect_dap_ListResult },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1287,19 +1054,13 @@ dissect_dsp_ChainedListResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
   return offset;
 }
-static int dissect_unsignedChainedListResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedListResultData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedListResult);
-}
-static int dissect_chainedListResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedListResultData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedListResult);
-}
 
 
 static const ber_sequence_t T_signedChainedListResult_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedListResult },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedListResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListResultData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1309,9 +1070,6 @@ dissect_dsp_T_signedChainedListResult(gboolean implicit_tag _U_, tvbuff_t *tvb _
 
   return offset;
 }
-static int dissect_signedChainedListResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedListResult(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedListResult);
-}
 
 
 static const value_string dsp_ChainedListResult_vals[] = {
@@ -1321,9 +1079,9 @@ static const value_string dsp_ChainedListResult_vals[] = {
 };
 
 static const ber_choice_t ChainedListResult_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedListResult },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedListResult },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedListResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListResultData },
+  {   1, &hf_dsp_signedChainedListResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedListResult },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1337,9 +1095,9 @@ dissect_dsp_ChainedListResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
 
 
 static const ber_sequence_t ChainedSearchArgumentData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedArgument },
-  { BER_CLASS_CON, 0, 0, dissect_searchArgument },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
+  { &hf_dsp_searchArgument  , BER_CLASS_CON, 0, 0, dissect_dap_SearchArgument },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1349,19 +1107,13 @@ dissect_dsp_ChainedSearchArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _
 
   return offset;
 }
-static int dissect_unsignedChainedSearchArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedSearchArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedSearchArgument);
-}
-static int dissect_chainedSearchArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedSearchArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedSearchArgument);
-}
 
 
 static const ber_sequence_t T_signedChainedSearchArgument_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedSearchArgument },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchArgumentData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1371,9 +1123,6 @@ dissect_dsp_T_signedChainedSearchArgument(gboolean implicit_tag _U_, tvbuff_t *t
 
   return offset;
 }
-static int dissect_signedChainedSearchArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedSearchArgument(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedSearchArgument);
-}
 
 
 static const value_string dsp_ChainedSearchArgument_vals[] = {
@@ -1383,9 +1132,9 @@ static const value_string dsp_ChainedSearchArgument_vals[] = {
 };
 
 static const ber_choice_t ChainedSearchArgument_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedSearchArgument },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedSearchArgument },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchArgumentData },
+  {   1, &hf_dsp_signedChainedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedSearchArgument },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1399,9 +1148,9 @@ dissect_dsp_ChainedSearchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
 
 static const ber_sequence_t ChainedSearchResultData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedResults },
-  { BER_CLASS_CON, 0, 0, dissect_searchResult },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
+  { &hf_dsp_searchResult    , BER_CLASS_CON, 0, 0, dissect_dap_SearchResult },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1411,19 +1160,13 @@ dissect_dsp_ChainedSearchResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
 
   return offset;
 }
-static int dissect_unsignedChainedSearchResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedSearchResultData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedSearchResult);
-}
-static int dissect_chainedSearchResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedSearchResultData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedSearchResult);
-}
 
 
 static const ber_sequence_t T_signedChainedSearchResult_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedSearchResult },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchResultData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1433,9 +1176,6 @@ dissect_dsp_T_signedChainedSearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb
 
   return offset;
 }
-static int dissect_signedChainedSearchResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedSearchResult(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedSearchResult);
-}
 
 
 static const value_string dsp_ChainedSearchResult_vals[] = {
@@ -1445,9 +1185,9 @@ static const value_string dsp_ChainedSearchResult_vals[] = {
 };
 
 static const ber_choice_t ChainedSearchResult_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedSearchResult },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedSearchResult },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchResultData },
+  {   1, &hf_dsp_signedChainedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedSearchResult },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1461,9 +1201,9 @@ dissect_dsp_ChainedSearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
 
 
 static const ber_sequence_t ChainedAddEntryArgumentData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedArgument },
-  { BER_CLASS_CON, 0, 0, dissect_addEntryArgument },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
+  { &hf_dsp_addEntryArgument, BER_CLASS_CON, 0, 0, dissect_dap_AddEntryArgument },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1473,19 +1213,13 @@ dissect_dsp_ChainedAddEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb
 
   return offset;
 }
-static int dissect_unsignedChainedAddEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedAddEntryArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedAddEntryArgument);
-}
-static int dissect_chainedAddEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedAddEntryArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedAddEntryArgument);
-}
 
 
 static const ber_sequence_t T_signedChainedAddEntryArgument_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedAddEntryArgument },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryArgumentData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1495,9 +1229,6 @@ dissect_dsp_T_signedChainedAddEntryArgument(gboolean implicit_tag _U_, tvbuff_t
 
   return offset;
 }
-static int dissect_signedChainedAddEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedAddEntryArgument(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedAddEntryArgument);
-}
 
 
 static const value_string dsp_ChainedAddEntryArgument_vals[] = {
@@ -1507,9 +1238,9 @@ static const value_string dsp_ChainedAddEntryArgument_vals[] = {
 };
 
 static const ber_choice_t ChainedAddEntryArgument_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedAddEntryArgument },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedAddEntryArgument },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryArgumentData },
+  {   1, &hf_dsp_signedChainedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedAddEntryArgument },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1523,9 +1254,9 @@ dissect_dsp_ChainedAddEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
 
 
 static const ber_sequence_t ChainedAddEntryResultData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedResults },
-  { BER_CLASS_CON, 0, 0, dissect_addEntryResult },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
+  { &hf_dsp_addEntryResult  , BER_CLASS_CON, 0, 0, dissect_dap_AddEntryResult },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1535,19 +1266,13 @@ dissect_dsp_ChainedAddEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _
 
   return offset;
 }
-static int dissect_unsignedChainedAddEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedAddEntryResultData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedAddEntryResult);
-}
-static int dissect_chainedAddEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedAddEntryResultData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedAddEntryResult);
-}
 
 
 static const ber_sequence_t T_signedChainedAddEntryResult_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedAddEntryResult },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryResultData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1557,9 +1282,6 @@ dissect_dsp_T_signedChainedAddEntryResult(gboolean implicit_tag _U_, tvbuff_t *t
 
   return offset;
 }
-static int dissect_signedChainedAddEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedAddEntryResult(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedAddEntryResult);
-}
 
 
 static const value_string dsp_ChainedAddEntryResult_vals[] = {
@@ -1569,9 +1291,9 @@ static const value_string dsp_ChainedAddEntryResult_vals[] = {
 };
 
 static const ber_choice_t ChainedAddEntryResult_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedAddEntryResult },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedAddEntryResult },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryResultData },
+  {   1, &hf_dsp_signedChainedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedAddEntryResult },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1585,9 +1307,9 @@ dissect_dsp_ChainedAddEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
 
 static const ber_sequence_t ChainedRemoveEntryArgumentData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedArgument },
-  { BER_CLASS_CON, 0, 0, dissect_removeEntryArgument },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
+  { &hf_dsp_removeEntryArgument, BER_CLASS_CON, 0, 0, dissect_dap_RemoveEntryArgument },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1597,19 +1319,13 @@ dissect_dsp_ChainedRemoveEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *
 
   return offset;
 }
-static int dissect_unsignedChainedRemoveEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedRemoveEntryArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedRemoveEntryArgument);
-}
-static int dissect_chainedRemoveEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedRemoveEntryArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedRemoveEntryArgument);
-}
 
 
 static const ber_sequence_t T_signedChainedRemoveEntryArgument_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedRemoveEntryArgument },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryArgumentData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1619,9 +1335,6 @@ dissect_dsp_T_signedChainedRemoveEntryArgument(gboolean implicit_tag _U_, tvbuff
 
   return offset;
 }
-static int dissect_signedChainedRemoveEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedRemoveEntryArgument(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedRemoveEntryArgument);
-}
 
 
 static const value_string dsp_ChainedRemoveEntryArgument_vals[] = {
@@ -1631,9 +1344,9 @@ static const value_string dsp_ChainedRemoveEntryArgument_vals[] = {
 };
 
 static const ber_choice_t ChainedRemoveEntryArgument_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedRemoveEntryArgument },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedRemoveEntryArgument },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryArgumentData },
+  {   1, &hf_dsp_signedChainedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedRemoveEntryArgument },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1647,9 +1360,9 @@ dissect_dsp_ChainedRemoveEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb
 
 
 static const ber_sequence_t ChainedRemoveEntryResultData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedResults },
-  { BER_CLASS_CON, 0, 0, dissect_removeEntryResult },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
+  { &hf_dsp_removeEntryResult, BER_CLASS_CON, 0, 0, dissect_dap_RemoveEntryResult },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1659,19 +1372,13 @@ dissect_dsp_ChainedRemoveEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tv
 
   return offset;
 }
-static int dissect_unsignedChainedRemoveEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedRemoveEntryResultData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedRemoveEntryResult);
-}
-static int dissect_chainedRemoveEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedRemoveEntryResultData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedRemoveEntryResult);
-}
 
 
 static const ber_sequence_t T_signedChainedRemoveEntryResult_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedRemoveEntryResult },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryResultData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1681,9 +1388,6 @@ dissect_dsp_T_signedChainedRemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t
 
   return offset;
 }
-static int dissect_signedChainedRemoveEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedRemoveEntryResult(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedRemoveEntryResult);
-}
 
 
 static const value_string dsp_ChainedRemoveEntryResult_vals[] = {
@@ -1693,9 +1397,9 @@ static const value_string dsp_ChainedRemoveEntryResult_vals[] = {
 };
 
 static const ber_choice_t ChainedRemoveEntryResult_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedRemoveEntryResult },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedRemoveEntryResult },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryResultData },
+  {   1, &hf_dsp_signedChainedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedRemoveEntryResult },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1709,9 +1413,9 @@ dissect_dsp_ChainedRemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U
 
 
 static const ber_sequence_t ChainedModifyEntryArgumentData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedArgument },
-  { BER_CLASS_CON, 0, 0, dissect_modifyEntryArgument },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
+  { &hf_dsp_modifyEntryArgument, BER_CLASS_CON, 0, 0, dissect_dap_ModifyEntryArgument },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1721,19 +1425,13 @@ dissect_dsp_ChainedModifyEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *
 
   return offset;
 }
-static int dissect_unsignedChainedModifyEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedModifyEntryArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedModifyEntryArgument);
-}
-static int dissect_chainedModifyEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedModifyEntryArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedModifyEntryArgument);
-}
 
 
 static const ber_sequence_t T_signedChainedModifyEntryArgument_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedModifyEntryArgument },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedModifyEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryArgumentData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1743,9 +1441,6 @@ dissect_dsp_T_signedChainedModifyEntryArgument(gboolean implicit_tag _U_, tvbuff
 
   return offset;
 }
-static int dissect_signedChainedModifyEntryArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedModifyEntryArgument(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedModifyEntryArgument);
-}
 
 
 static const value_string dsp_ChainedModifyEntryArgument_vals[] = {
@@ -1755,9 +1450,9 @@ static const value_string dsp_ChainedModifyEntryArgument_vals[] = {
 };
 
 static const ber_choice_t ChainedModifyEntryArgument_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedModifyEntryArgument },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedModifyEntryArgument },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedModifyEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryArgumentData },
+  {   1, &hf_dsp_signedChainedModifyEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyEntryArgument },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1771,9 +1466,9 @@ dissect_dsp_ChainedModifyEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb
 
 
 static const ber_sequence_t ChainedModifyEntryResultData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedResults },
-  { BER_CLASS_CON, 0, 0, dissect_modifyEntryResult },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
+  { &hf_dsp_modifyEntryResult, BER_CLASS_CON, 0, 0, dissect_dap_ModifyEntryResult },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1783,19 +1478,13 @@ dissect_dsp_ChainedModifyEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tv
 
   return offset;
 }
-static int dissect_unsignedChainedModifyEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedModifyEntryResultData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedModifyEntryResult);
-}
-static int dissect_chainedModifyEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedModifyEntryResultData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedModifyEntryResult);
-}
 
 
 static const ber_sequence_t T_signedChainedModifyEntryResult_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedModifyEntryResult },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedModifyEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryResultData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1805,9 +1494,6 @@ dissect_dsp_T_signedChainedModifyEntryResult(gboolean implicit_tag _U_, tvbuff_t
 
   return offset;
 }
-static int dissect_signedChainedModifyEntryResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedModifyEntryResult(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedModifyEntryResult);
-}
 
 
 static const value_string dsp_ChainedModifyEntryResult_vals[] = {
@@ -1817,9 +1503,9 @@ static const value_string dsp_ChainedModifyEntryResult_vals[] = {
 };
 
 static const ber_choice_t ChainedModifyEntryResult_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedModifyEntryResult },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedModifyEntryResult },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedModifyEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryResultData },
+  {   1, &hf_dsp_signedChainedModifyEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyEntryResult },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1833,9 +1519,9 @@ dissect_dsp_ChainedModifyEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U
 
 
 static const ber_sequence_t ChainedModifyDNArgumentData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedArgument },
-  { BER_CLASS_CON, 0, 0, dissect_modifyDNArgument },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
+  { &hf_dsp_modifyDNArgument, BER_CLASS_CON, 0, 0, dissect_dap_ModifyDNArgument },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1845,19 +1531,13 @@ dissect_dsp_ChainedModifyDNArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb
 
   return offset;
 }
-static int dissect_unsignedChainedModifyDNArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedModifyDNArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedModifyDNArgument);
-}
-static int dissect_chainedModifyDNArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedModifyDNArgumentData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedModifyDNArgument);
-}
 
 
 static const ber_sequence_t T_signedChainedModifyDNArgument_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedModifyDNArgument },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedModifyDNArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNArgumentData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1867,9 +1547,6 @@ dissect_dsp_T_signedChainedModifyDNArgument(gboolean implicit_tag _U_, tvbuff_t
 
   return offset;
 }
-static int dissect_signedChainedModifyDNArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedModifyDNArgument(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedModifyDNArgument);
-}
 
 
 static const value_string dsp_ChainedModifyDNArgument_vals[] = {
@@ -1879,9 +1556,9 @@ static const value_string dsp_ChainedModifyDNArgument_vals[] = {
 };
 
 static const ber_choice_t ChainedModifyDNArgument_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedModifyDNArgument },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedModifyDNArgument },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedModifyDNArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNArgumentData },
+  {   1, &hf_dsp_signedChainedModifyDNArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyDNArgument },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1895,9 +1572,9 @@ dissect_dsp_ChainedModifyDNArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
 
 
 static const ber_sequence_t ChainedModifyDNResultData_set[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedResults },
-  { BER_CLASS_CON, 0, 0, dissect_modifyDNResult },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
+  { &hf_dsp_modifyDNResult  , BER_CLASS_CON, 0, 0, dissect_dap_ModifyDNResult },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1907,19 +1584,13 @@ dissect_dsp_ChainedModifyDNResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _
 
   return offset;
 }
-static int dissect_unsignedChainedModifyDNResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedModifyDNResultData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedChainedModifyDNResult);
-}
-static int dissect_chainedModifyDNResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ChainedModifyDNResultData(FALSE, tvb, offset, actx, tree, hf_dsp_chainedModifyDNResult);
-}
 
 
 static const ber_sequence_t T_signedChainedModifyDNResult_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_chainedModifyDNResult },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_chainedModifyDNResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNResultData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1929,9 +1600,6 @@ dissect_dsp_T_signedChainedModifyDNResult(gboolean implicit_tag _U_, tvbuff_t *t
 
   return offset;
 }
-static int dissect_signedChainedModifyDNResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedChainedModifyDNResult(FALSE, tvb, offset, actx, tree, hf_dsp_signedChainedModifyDNResult);
-}
 
 
 static const value_string dsp_ChainedModifyDNResult_vals[] = {
@@ -1941,9 +1609,9 @@ static const value_string dsp_ChainedModifyDNResult_vals[] = {
 };
 
 static const ber_choice_t ChainedModifyDNResult_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedChainedModifyDNResult },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedChainedModifyDNResult },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedChainedModifyDNResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNResultData },
+  {   1, &hf_dsp_signedChainedModifyDNResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyDNResult },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -1957,7 +1625,7 @@ dissect_dsp_ChainedModifyDNResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
 
 static const ber_sequence_t SET_OF_AccessPointInformation_set_of[1] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_accessPoints_item },
+  { &hf_dsp_accessPoints_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_AccessPointInformation },
 };
 
 static int
@@ -1967,23 +1635,20 @@ dissect_dsp_SET_OF_AccessPointInformation(gboolean implicit_tag _U_, tvbuff_t *t
 
   return offset;
 }
-static int dissect_accessPoints(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_SET_OF_AccessPointInformation(FALSE, tvb, offset, actx, tree, hf_dsp_accessPoints);
-}
 
 
 static const ber_sequence_t ContinuationReference_set[] = {
-  { BER_CLASS_CON, 0, 0, dissect_targetObject },
-  { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
-  { BER_CLASS_CON, 2, 0, dissect_operationProgress },
-  { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_rdnsResolved },
-  { BER_CLASS_CON, 4, 0, dissect_referenceType },
-  { BER_CLASS_CON, 5, 0, dissect_accessPoints },
-  { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_entryOnly },
-  { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_exclusions },
-  { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_returnToDUA },
-  { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_targetObject    , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
+  { &hf_dsp_aliasedRDNs     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
+  { &hf_dsp_operationProgress, BER_CLASS_CON, 2, 0, dissect_dsp_OperationProgress },
+  { &hf_dsp_rdnsResolved    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
+  { &hf_dsp_referenceType   , BER_CLASS_CON, 4, 0, dissect_dsp_ReferenceType },
+  { &hf_dsp_accessPoints_01 , BER_CLASS_CON, 5, 0, dissect_dsp_SET_OF_AccessPointInformation },
+  { &hf_dsp_entryOnly       , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_exclusions      , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
+  { &hf_dsp_returnToDUA     , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_nameResolveOnMaster, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { NULL, 0, 0, 0, NULL }
 };
 
 int
@@ -1993,13 +1658,10 @@ dissect_dsp_ContinuationReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
   return offset;
 }
-static int dissect_reference(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_ContinuationReference(FALSE, tvb, offset, actx, tree, hf_dsp_reference);
-}
 
 
 static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_notification_item },
+  { &hf_dsp_notification_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
 };
 
 static int
@@ -2009,19 +1671,16 @@ dissect_dsp_SEQUENCE_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
   return offset;
 }
-static int dissect_notification(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_SEQUENCE_OF_Attribute(FALSE, tvb, offset, actx, tree, hf_dsp_notification);
-}
 
 
 static const ber_sequence_t DSAReferralData_set[] = {
-  { BER_CLASS_CON, 0, 0, dissect_reference },
-  { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_contextPrefix },
-  { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_securityParameters },
-  { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_performer },
-  { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
-  { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_notification },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_reference       , BER_CLASS_CON, 0, 0, dissect_dsp_ContinuationReference },
+  { &hf_dsp_contextPrefix   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
+  { &hf_dsp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
+  { &hf_dsp_performer       , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
+  { &hf_dsp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
+  { &hf_dsp_notification    , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_SEQUENCE_OF_Attribute },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -2031,19 +1690,13 @@ dissect_dsp_DSAReferralData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
 
   return offset;
 }
-static int dissect_unsignedDSAReferral(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_DSAReferralData(FALSE, tvb, offset, actx, tree, hf_dsp_unsignedDSAReferral);
-}
-static int dissect_dsaReferral(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_DSAReferralData(FALSE, tvb, offset, actx, tree, hf_dsp_dsaReferral);
-}
 
 
 static const ber_sequence_t T_signedDSAReferral_sequence[] = {
-  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsaReferral },
-  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
-  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_dsaReferral     , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_DSAReferralData },
+  { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
+  { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
+  { NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -2053,9 +1706,6 @@ dissect_dsp_T_signedDSAReferral(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
 
   return offset;
 }
-static int dissect_signedDSAReferral(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
-  return dissect_dsp_T_signedDSAReferral(FALSE, tvb, offset, actx, tree, hf_dsp_signedDSAReferral);
-}
 
 
 static const value_string dsp_DSAReferral_vals[] = {
@@ -2065,9 +1715,9 @@ static const value_string dsp_DSAReferral_vals[] = {
 };
 
 static const ber_choice_t DSAReferral_choice[] = {
-  {   0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedDSAReferral },
-  {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedDSAReferral },
-  { 0, 0, 0, 0, NULL }
+  {   0, &hf_dsp_unsignedDSAReferral, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_DSAReferralData },
+  {   1, &hf_dsp_signedDSAReferral, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedDSAReferral },
+  { 0, NULL, 0, 0, 0, NULL }
 };
 
 static int
@@ -2080,11 +1730,21 @@ dissect_dsp_DSAReferral(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
 }
 
 
+
+static int
+dissect_dsp_LabeledURI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_x509sat_DirectoryString(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+  return offset;
+}
+
+
 static const ber_sequence_t AccessPoint_set[] = {
-  { BER_CLASS_CON, 0, 0, dissect_ae_title },
-  { BER_CLASS_CON, 1, 0, dissect_address },
-  { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_protocolInformation },
-  { 0, 0, 0, NULL }
+  { &hf_dsp_ae_title        , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
+  { &hf_dsp_address         , BER_CLASS_CON, 1, 0, dissect_x509sat_PresentationAddress },
+  { &hf_dsp_protocolInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_SET_OF_ProtocolInformation },
+  { &hf_dsp_labeledURI      , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dsp_LabeledURI },
+  { NULL, 0, 0, 0, NULL }
 };
 
 int
@@ -2095,6 +1755,21 @@ dissect_dsp_AccessPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
   return offset;
 }
 
+
+static const ber_sequence_t DitBridgeKnowledge_sequence[] = {
+  { &hf_dsp_domainLocalID   , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509sat_DirectoryString },
+  { &hf_dsp_accessPoints    , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_MasterAndShadowAccessPoints },
+  { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dsp_DitBridgeKnowledge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
+                                   DitBridgeKnowledge_sequence, hf_index, ett_dsp_DitBridgeKnowledge);
+
+  return offset;
+}
+
 /*--- PDUs ---*/
 
 static void dissect_AccessPoint_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
@@ -2107,10 +1782,15 @@ static void dissect_MasterAndShadowAccessPoints_PDU(tvbuff_t *tvb _U_, packet_in
   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
   dissect_dsp_MasterAndShadowAccessPoints(FALSE, tvb, 0, &asn1_ctx, tree, hf_dsp_MasterAndShadowAccessPoints_PDU);
 }
+static void dissect_DitBridgeKnowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+  asn1_ctx_t asn1_ctx;
+  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+  dissect_dsp_DitBridgeKnowledge(FALSE, tvb, 0, &asn1_ctx, tree, hf_dsp_DitBridgeKnowledge_PDU);
+}
 
 
 /*--- End of included file: packet-dsp-fn.c ---*/
-#line 74 "packet-dsp-template.c"
+#line 72 "packet-dsp-template.c"
 
 /*
 * Dissect X518 PDUs inside a ROS PDUs
@@ -2143,10 +1823,8 @@ dissect_dsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
                item = proto_tree_add_item(parent_tree, proto_dsp, tvb, 0, -1, FALSE);
                tree = proto_item_add_subtree(item, ett_dsp);
        }
-       if (check_col(pinfo->cinfo, COL_PROTOCOL))
-               col_set_str(pinfo->cinfo, COL_PROTOCOL, "DAP");
-       if (check_col(pinfo->cinfo, COL_INFO))
-               col_clear(pinfo->cinfo, COL_INFO);
+       col_set_str(pinfo->cinfo, COL_PROTOCOL, "DAP");
+       col_clear(pinfo->cinfo, COL_INFO);
 
        switch(session->ros_op & ROS_OP_MASK) {
        case (ROS_OP_BIND | ROS_OP_ARGUMENT):   /*  BindInvoke */
@@ -2297,15 +1975,13 @@ dissect_dsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
        }
 
        if(dsp_dissector) {
-         if (check_col(pinfo->cinfo, COL_INFO))
-           col_add_str(pinfo->cinfo, COL_INFO, dsp_op_name);
+    col_set_str(pinfo->cinfo, COL_INFO, dsp_op_name);
 
          while (tvb_reported_length_remaining(tvb, offset) > 0){
            old_offset=offset;
            offset=(*dsp_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
            if(offset == old_offset){
              proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DSP PDU");
-             offset = tvb_length(tvb);
              break;
            }
          }
@@ -2330,6 +2006,10 @@ void proto_register_dsp(void) {
       { "MasterAndShadowAccessPoints", "dsp.MasterAndShadowAccessPoints",
         FT_UINT32, BASE_DEC, NULL, 0,
         "dsp.MasterAndShadowAccessPoints", HFILL }},
+    { &hf_dsp_DitBridgeKnowledge_PDU,
+      { "DitBridgeKnowledge", "dsp.DitBridgeKnowledge",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "dsp.DitBridgeKnowledge", HFILL }},
     { &hf_dsp_chainedArgument,
       { "chainedArgument", "dsp.chainedArgument",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -2356,7 +2036,7 @@ void proto_register_dsp(void) {
         "x509af.AlgorithmIdentifier", HFILL }},
     { &hf_dsp_encrypted,
       { "encrypted", "dsp.encrypted",
-        FT_BYTES, BASE_HEX, NULL, 0,
+        FT_BYTES, BASE_NONE, NULL, 0,
         "dsp.BIT_STRING", HFILL }},
     { &hf_dsp_chainedResults,
       { "chainedResults", "dsp.chainedResults",
@@ -2620,14 +2300,14 @@ void proto_register_dsp(void) {
         "x509if.DistinguishedName", HFILL }},
     { &hf_dsp_aliasDereferenced,
       { "aliasDereferenced", "dsp.aliasDereferenced",
-        FT_BOOLEAN, 8, NULL, 0,
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
         "dsp.BOOLEAN", HFILL }},
     { &hf_dsp_notification,
       { "notification", "dsp.notification",
         FT_UINT32, BASE_DEC, NULL, 0,
         "dsp.SEQUENCE_OF_Attribute", HFILL }},
     { &hf_dsp_notification_item,
-      { "Item", "dsp.notification_item",
+      { "Attribute", "dsp.Attribute",
         FT_NONE, BASE_NONE, NULL, 0,
         "x509if.Attribute", HFILL }},
     { &hf_dsp_unsignedDSAReferral,
@@ -2664,7 +2344,7 @@ void proto_register_dsp(void) {
         "dsp.INTEGER", HFILL }},
     { &hf_dsp_returnCrossRefs,
       { "returnCrossRefs", "dsp.returnCrossRefs",
-        FT_BOOLEAN, 8, NULL, 0,
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
         "dsp.BOOLEAN", HFILL }},
     { &hf_dsp_referenceType,
       { "referenceType", "dsp.referenceType",
@@ -2676,15 +2356,15 @@ void proto_register_dsp(void) {
         "dsp.DomainInfo", HFILL }},
     { &hf_dsp_timeLimit,
       { "timeLimit", "dsp.timeLimit",
-        FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0,
+        FT_UINT32, BASE_DEC, VALS(dsp_Time_vals), 0,
         "dsp.Time", HFILL }},
     { &hf_dsp_entryOnly,
       { "entryOnly", "dsp.entryOnly",
-        FT_BOOLEAN, 8, NULL, 0,
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
         "dsp.BOOLEAN", HFILL }},
     { &hf_dsp_uniqueIdentifier,
       { "uniqueIdentifier", "dsp.uniqueIdentifier",
-        FT_BYTES, BASE_HEX, NULL, 0,
+        FT_BYTES, BASE_NONE, NULL, 0,
         "x509sat.UniqueIdentifier", HFILL }},
     { &hf_dsp_authenticationLevel,
       { "authenticationLevel", "dsp.authenticationLevel",
@@ -2696,11 +2376,11 @@ void proto_register_dsp(void) {
         "dsp.Exclusions", HFILL }},
     { &hf_dsp_excludeShadows,
       { "excludeShadows", "dsp.excludeShadows",
-        FT_BOOLEAN, 8, NULL, 0,
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
         "dsp.BOOLEAN", HFILL }},
     { &hf_dsp_nameResolveOnMaster,
       { "nameResolveOnMaster", "dsp.nameResolveOnMaster",
-        FT_BOOLEAN, 8, NULL, 0,
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
         "dsp.BOOLEAN", HFILL }},
     { &hf_dsp_operationIdentifier,
       { "operationIdentifier", "dsp.operationIdentifier",
@@ -2718,6 +2398,22 @@ void proto_register_dsp(void) {
       { "relatedEntry", "dsp.relatedEntry",
         FT_INT32, BASE_DEC, NULL, 0,
         "dsp.INTEGER", HFILL }},
+    { &hf_dsp_dspPaging,
+      { "dspPaging", "dsp.dspPaging",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "dsp.BOOLEAN", HFILL }},
+    { &hf_dsp_nonDapPdu,
+      { "nonDapPdu", "dsp.nonDapPdu",
+        FT_UINT32, BASE_DEC, VALS(dsp_T_nonDapPdu_vals), 0,
+        "dsp.T_nonDapPdu", HFILL }},
+    { &hf_dsp_streamedResults,
+      { "streamedResults", "dsp.streamedResults",
+        FT_INT32, BASE_DEC, NULL, 0,
+        "dsp.INTEGER", HFILL }},
+    { &hf_dsp_excludeWriteableCopies,
+      { "excludeWriteableCopies", "dsp.excludeWriteableCopies",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "dsp.BOOLEAN", HFILL }},
     { &hf_dsp_utcTime,
       { "utcTime", "dsp.utcTime",
         FT_STRING, BASE_NONE, NULL, 0,
@@ -2731,7 +2427,7 @@ void proto_register_dsp(void) {
         FT_UINT32, BASE_DEC, NULL, 0,
         "dsp.SEQUENCE_OF_CrossReference", HFILL }},
     { &hf_dsp_crossReferences_item,
-      { "Item", "dsp.crossReferences_item",
+      { "CrossReference", "dsp.CrossReference",
         FT_NONE, BASE_NONE, NULL, 0,
         "dsp.CrossReference", HFILL }},
     { &hf_dsp_alreadySearched,
@@ -2751,7 +2447,7 @@ void proto_register_dsp(void) {
         FT_INT32, BASE_DEC, NULL, 0,
         "dsp.INTEGER", HFILL }},
     { &hf_dsp_TraceInformation_item,
-      { "Item", "dsp.TraceInformation_item",
+      { "TraceItem", "dsp.TraceItem",
         FT_NONE, BASE_NONE, NULL, 0,
         "dsp.TraceItem", HFILL }},
     { &hf_dsp_dsa,
@@ -2775,19 +2471,23 @@ void proto_register_dsp(void) {
         FT_UINT32, BASE_DEC, NULL, 0,
         "dsp.SET_OF_ProtocolInformation", HFILL }},
     { &hf_dsp_protocolInformation_item,
-      { "Item", "dsp.protocolInformation_item",
+      { "ProtocolInformation", "dsp.ProtocolInformation",
         FT_NONE, BASE_NONE, NULL, 0,
         "x509sat.ProtocolInformation", HFILL }},
+    { &hf_dsp_labeledURI,
+      { "labeledURI", "dsp.labeledURI",
+        FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
+        "dsp.LabeledURI", HFILL }},
     { &hf_dsp_access_point_category,
       { "category", "dsp.category",
         FT_UINT32, BASE_DEC, VALS(dsp_APCategory_vals), 0,
         "dsp.APCategory", HFILL }},
     { &hf_dsp_chainingRequired,
       { "chainingRequired", "dsp.chainingRequired",
-        FT_BOOLEAN, 8, NULL, 0,
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
         "dsp.BOOLEAN", HFILL }},
     { &hf_dsp_MasterAndShadowAccessPoints_item,
-      { "Item", "dsp.MasterAndShadowAccessPoints_item",
+      { "MasterOrShadowAccessPoint", "dsp.MasterOrShadowAccessPoint",
         FT_NONE, BASE_NONE, NULL, 0,
         "dsp.MasterOrShadowAccessPoint", HFILL }},
     { &hf_dsp_category,
@@ -2798,25 +2498,33 @@ void proto_register_dsp(void) {
       { "additionalPoints", "dsp.additionalPoints",
         FT_UINT32, BASE_DEC, NULL, 0,
         "dsp.MasterAndShadowAccessPoints", HFILL }},
+    { &hf_dsp_domainLocalID,
+      { "domainLocalID", "dsp.domainLocalID",
+        FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
+        "x509sat.DirectoryString", HFILL }},
+    { &hf_dsp_accessPoints,
+      { "accessPoints", "dsp.accessPoints",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "dsp.MasterAndShadowAccessPoints", HFILL }},
     { &hf_dsp_Exclusions_item,
-      { "Item", "dsp.Exclusions_item",
+      { "RDNSequence", "dsp.RDNSequence",
         FT_UINT32, BASE_DEC, NULL, 0,
         "x509if.RDNSequence", HFILL }},
     { &hf_dsp_rdnsResolved,
       { "rdnsResolved", "dsp.rdnsResolved",
         FT_INT32, BASE_DEC, NULL, 0,
         "dsp.INTEGER", HFILL }},
-    { &hf_dsp_accessPoints,
+    { &hf_dsp_accessPoints_01,
       { "accessPoints", "dsp.accessPoints",
         FT_UINT32, BASE_DEC, NULL, 0,
         "dsp.SET_OF_AccessPointInformation", HFILL }},
     { &hf_dsp_accessPoints_item,
-      { "Item", "dsp.accessPoints_item",
+      { "AccessPointInformation", "dsp.AccessPointInformation",
         FT_NONE, BASE_NONE, NULL, 0,
         "dsp.AccessPointInformation", HFILL }},
     { &hf_dsp_returnToDUA,
       { "returnToDUA", "dsp.returnToDUA",
-        FT_BOOLEAN, 8, NULL, 0,
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
         "dsp.BOOLEAN", HFILL }},
     { &hf_dsp_basicLevels,
       { "basicLevels", "dsp.basicLevels",
@@ -2832,15 +2540,15 @@ void proto_register_dsp(void) {
         "dsp.INTEGER", HFILL }},
     { &hf_dsp_signed,
       { "signed", "dsp.signed",
-        FT_BOOLEAN, 8, NULL, 0,
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
         "dsp.BOOLEAN", HFILL }},
     { &hf_dsp_other,
       { "other", "dsp.other",
         FT_NONE, BASE_NONE, NULL, 0,
-        "acse.EXTERNALt", HFILL }},
+        "dsp.EXTERNAL", HFILL }},
 
 /*--- End of included file: packet-dsp-hfarr.c ---*/
-#line 283 "packet-dsp-template.c"
+#line 277 "packet-dsp-template.c"
   };
 
   /* List of subtrees */
@@ -2914,6 +2622,7 @@ void proto_register_dsp(void) {
     &ett_dsp_MasterOrShadowAccessPoint,
     &ett_dsp_MasterAndShadowAccessPoints,
     &ett_dsp_AccessPointInformation,
+    &ett_dsp_DitBridgeKnowledge,
     &ett_dsp_Exclusions,
     &ett_dsp_ContinuationReference,
     &ett_dsp_SET_OF_AccessPointInformation,
@@ -2921,16 +2630,13 @@ void proto_register_dsp(void) {
     &ett_dsp_T_basicLevels,
 
 /*--- End of included file: packet-dsp-ettarr.c ---*/
-#line 289 "packet-dsp-template.c"
+#line 283 "packet-dsp-template.c"
   };
   module_t *dsp_module;
 
   /* Register protocol */
   proto_dsp = proto_register_protocol(PNAME, PSNAME, PFNAME);
 
-  /* initially disable the protocol */
-  proto_set_decoding(proto_dsp, FALSE);
-
   register_dissector("dsp", dissect_dsp, proto_dsp);
 
   /* Register fields and subtrees */
@@ -2939,11 +2645,7 @@ void proto_register_dsp(void) {
 
   /* Register our configuration options for DSP, particularly our port */
 
-#ifdef PREFERENCE_GROUPING
   dsp_module = prefs_register_protocol_subtree("OSI/X.500", proto_dsp, prefs_register_dsp);
-#else
-  dsp_module = prefs_register_protocol(proto_dsp, prefs_register_dsp);
-#endif
 
   prefs_register_uint_preference(dsp_module, "tcp.port", "DSP TCP Port",
                                 "Set the port for DSP operations (if other"
@@ -2956,7 +2658,7 @@ void proto_register_dsp(void) {
 
 /*--- proto_reg_handoff_dsp --- */
 void proto_reg_handoff_dsp(void) {
-  dissector_handle_t handle = NULL;
+  dissector_handle_t dsp_handle;
 
 
 /*--- Included file: packet-dsp-dis-tab.c ---*/
@@ -2965,30 +2667,33 @@ void proto_reg_handoff_dsp(void) {
   register_ber_oid_dissector("2.5.12.2", dissect_AccessPoint_PDU, proto_dsp, "id-doa-superiorKnowledge");
   register_ber_oid_dissector("2.5.12.3", dissect_MasterAndShadowAccessPoints_PDU, proto_dsp, "id-doa-specificKnowledge");
   register_ber_oid_dissector("2.5.12.4", dissect_MasterAndShadowAccessPoints_PDU, proto_dsp, "id-doa-nonSpecificKnowledge");
+  register_ber_oid_dissector("2.5.12.8", dissect_DitBridgeKnowledge_PDU, proto_dsp, "id-doa-ditBridgeKnowledge");
 
 
 /*--- End of included file: packet-dsp-dis-tab.c ---*/
-#line 326 "packet-dsp-template.c"
+#line 313 "packet-dsp-template.c"
 
   /* APPLICATION CONTEXT */
 
-  add_oid_str_name("2.5.3.2", "id-ac-directory-system");
+  oid_add_from_string("id-ac-directory-system","2.5.3.2");
 
   /* ABSTRACT SYNTAXES */
     
-  /* Register DSP with ROS (with no use of RTSE) */
-  if((handle = find_dissector("dsp"))) {
-    register_ros_oid_dissector_handle("2.5.9.2", handle, 0, "id-as-directory-system", FALSE); 
-  }
+  /* remember the tpkt handler for change in preferences */
+  tpkt_handle = find_dissector("tpkt");
 
+  /* Register DSP with ROS (with no use of RTSE) */
+  dsp_handle = find_dissector("dsp");
+  register_ros_oid_dissector_handle("2.5.9.2", dsp_handle, 0, "id-as-directory-system", FALSE); 
 
 }
 
 void prefs_register_dsp(void) {
+  static guint tcp_port = 0;
 
   /* de-register the old port */
   /* port 102 is registered by TPKT - don't undo this! */
-  if((tcp_port != 102) && tpkt_handle)
+  if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
     dissector_delete("tcp.port", tcp_port, tpkt_handle);
 
   /* Set our port number for future use */