aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-11-16 23:17:21 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-11-16 23:17:21 +0000
commitd71982fbbbe37a7fc4e9bd0a591b4d5ed9f06aca (patch)
tree2be7853bd8d9904e4132d82ead9f8fafd7efe3a5 /epan/dissectors
parentbde7f8d3b6bd4bc7cbf18ca20cf7be045f730b4a (diff)
add the rest of Graeme Lunts patch
svn path=/trunk/; revision=16520
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/Makefile.common8
-rw-r--r--epan/dissectors/packet-dap.c7352
-rw-r--r--epan/dissectors/packet-dap.h104
-rw-r--r--epan/dissectors/packet-disp.c2463
-rw-r--r--epan/dissectors/packet-disp.h37
-rw-r--r--epan/dissectors/packet-dsp.c2986
-rw-r--r--epan/dissectors/packet-dsp.h48
-rw-r--r--epan/dissectors/packet-x501.c470
-rw-r--r--epan/dissectors/packet-x501.h45
9 files changed, 13513 insertions, 0 deletions
diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common
index 5a597384b3..74ec9d36a7 100644
--- a/epan/dissectors/Makefile.common
+++ b/epan/dissectors/Makefile.common
@@ -154,6 +154,7 @@ DISSECTOR_SRC = \
packet-csm-encaps.c \
packet-cups.c \
packet-daap.c \
+ packet-dap.c \
packet-data.c \
packet-dccp.c \
packet-dcp.c \
@@ -247,11 +248,13 @@ DISSECTOR_SRC = \
packet-dis-fields.c \
packet-dis-pdus.c \
packet-diffserv-mpls-common.c \
+ packet-disp.c \
packet-distcc.c \
packet-dlsw.c \
packet-dnp.c \
packet-dns.c \
packet-dsi.c \
+ packet-dsp.c \
packet-dtp.c \
packet-dua.c \
packet-dvmrp.c \
@@ -628,6 +631,7 @@ DISSECTOR_SRC = \
packet-x29.c \
packet-x411.c \
packet-x420.c \
+ packet-x501.c \
packet-x509af.c \
packet-x509ce.c \
packet-x509if.c \
@@ -676,6 +680,7 @@ DISSECTOR_INCLUDES = \
packet-cmp.h \
packet-cms.h \
packet-crmf.h \
+ packet-dap.h \
packet-data.h \
packet-dccp.h \
packet-dcp.h \
@@ -710,10 +715,12 @@ DISSECTOR_INCLUDES = \
packet-ddtp.h \
packet-diameter-defs.h \
packet-diffserv-mpls-common.h \
+ packet-disp.h \
packet-dis-enums.h \
packet-dis-fields.h \
packet-dis-pdus.h \
packet-dns.h \
+ packet-dsp.h \
packet-dvmrp.h \
packet-e164.h \
packet-edonkey.h \
@@ -887,6 +894,7 @@ DISSECTOR_INCLUDES = \
packet-x11-keysymdef.h \
packet-x411.h \
packet-x420.h \
+ packet-x501.h \
packet-x509af.h \
packet-x509ce.h \
packet-x509if.h \
diff --git a/epan/dissectors/packet-dap.c b/epan/dissectors/packet-dap.c
new file mode 100644
index 0000000000..06f1f93cc1
--- /dev/null
+++ b/epan/dissectors/packet-dap.c
@@ -0,0 +1,7352 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-dap.c */
+/* ../../tools/asn2eth.py -X -b -e -p dap -c dap.cnf -s packet-dap-template dap.asn */
+
+/* Input file: packet-dap-template.c */
+
+/* packet-dap.c
+ * Routines for X.511 (X.500 Directory Asbtract Service) and X.519 DAP packet dissection
+ * Graeme Lunt 2005
+ *
+ * $Id: packet-dap-template.c 14773 2005-06-26 10:59:15Z etxrab $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/conversation.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "packet-ber.h"
+#include "packet-acse.h"
+#include "packet-ros.h"
+
+#include "packet-x509if.h"
+#include "packet-x509af.h"
+#include "packet-x509sat.h"
+#include "packet-crmf.h"
+
+#include "packet-dsp.h"
+#include "packet-dap.h"
+#include <epan/strutil.h>
+
+
+/* we don't have a separate dissector for X519 -
+ most of DAP is defined in X511 */
+#define PNAME "X.519 Directory Access Protocol"
+#define PSNAME "DAP"
+#define PFNAME "dap"
+
+static guint global_dap_tcp_port = 102;
+static guint tcp_port = 0;
+static dissector_handle_t tpkt_handle = NULL;
+void prefs_register_dap(void); /* forwad declaration for use in preferences registration */
+
+
+/* Initialize the protocol and registered fields */
+int proto_dap = -1;
+
+static struct SESSION_DATA_STRUCTURE* session = NULL;
+
+
+/*--- Included file: packet-dap-hf.c ---*/
+
+static int hf_dap_securityParameters = -1; /* SecurityParameters */
+static int hf_dap_performer = -1; /* DistinguishedName */
+static int hf_dap_aliasDereferenced = -1; /* BOOLEAN */
+static int hf_dap_notification = -1; /* SEQUENCE_OF_Attribute */
+static int hf_dap_notification_item = -1; /* Attribute */
+static int hf_dap_options = -1; /* ServiceControlOptions */
+static int hf_dap_priority = -1; /* T_priority */
+static int hf_dap_timeLimit = -1; /* INTEGER */
+static int hf_dap_sizeLimit = -1; /* INTEGER */
+static int hf_dap_scopeOfReferral = -1; /* T_scopeOfReferral */
+static int hf_dap_attributeSizeLimit = -1; /* INTEGER */
+static int hf_dap_manageDSAITPlaneRef = -1; /* T_manageDSAITPlaneRef */
+static int hf_dap_dsaName = -1; /* Name */
+static int hf_dap_agreementID = -1; /* AgreementID */
+static int hf_dap_serviceType = -1; /* OBJECT_IDENTIFIER */
+static int hf_dap_userClass = -1; /* INTEGER */
+static int hf_dap_attributes = -1; /* T_attributes */
+static int hf_dap_allUserAttributes = -1; /* NULL */
+static int hf_dap_select = -1; /* SET_OF_AttributeType */
+static int hf_dap_select_item = -1; /* AttributeType */
+static int hf_dap_infoTypes = -1; /* T_infoTypes */
+static int hf_dap_extraAttributes = -1; /* T_extraAttributes */
+static int hf_dap_allOperationalAttributes = -1; /* NULL */
+static int hf_dap_contextSelection = -1; /* ContextSelection */
+static int hf_dap_returnContexts = -1; /* BOOLEAN */
+static int hf_dap_familyReturn = -1; /* FamilyReturn */
+static int hf_dap_allContexts = -1; /* NULL */
+static int hf_dap_selectedContexts = -1; /* SET_OF_TypeAndContextAssertion */
+static int hf_dap_selectedContexts_item = -1; /* TypeAndContextAssertion */
+static int hf_dap_type = -1; /* AttributeType */
+static int hf_dap_contextAssertions = -1; /* T_contextAssertions */
+static int hf_dap_preference = -1; /* SEQUENCE_OF_ContextAssertion */
+static int hf_dap_preference_item = -1; /* ContextAssertion */
+static int hf_dap_all = -1; /* SET_OF_ContextAssertion */
+static int hf_dap_all_item = -1; /* ContextAssertion */
+static int hf_dap_memberSelect = -1; /* T_memberSelect */
+static int hf_dap_familySelect = -1; /* T_familySelect */
+static int hf_dap_familySelect_item = -1; /* OBJECT_IDENTIFIER */
+static int hf_dap_name = -1; /* Name */
+static int hf_dap_fromEntry = -1; /* BOOLEAN */
+static int hf_dap_entry_information = -1; /* T_information */
+static int hf_dap_entry_information_item = -1; /* EntryInformationItem */
+static int hf_dap_attributeType = -1; /* AttributeType */
+static int hf_dap_attribute = -1; /* Attribute */
+static int hf_dap_incompleteEntry = -1; /* BOOLEAN */
+static int hf_dap_partialName = -1; /* BOOLEAN */
+static int hf_dap_derivedEntry = -1; /* BOOLEAN */
+static int hf_dap_family_class = -1; /* OBJECT_IDENTIFIER */
+static int hf_dap_familyEntries = -1; /* SEQUENCE_OF_FamilyEntry */
+static int hf_dap_familyEntries_item = -1; /* FamilyEntry */
+static int hf_dap_rdn = -1; /* RelativeDistinguishedName */
+static int hf_dap_family_information = -1; /* FamilyInformation */
+static int hf_dap_information_item = -1; /* T_information_item */
+static int hf_dap_family_info = -1; /* SEQUENCE_OF_FamilyEntries */
+static int hf_dap_family_info_item = -1; /* FamilyEntries */
+static int hf_dap_filter_item = -1; /* FilterItem */
+static int hf_dap_and = -1; /* SetOfFilter */
+static int hf_dap_or = -1; /* SetOfFilter */
+static int hf_dap_not = -1; /* Filter */
+static int hf_dap_SetOfFilter_item = -1; /* Filter */
+static int hf_dap_equality = -1; /* AttributeValueAssertion */
+static int hf_dap_substrings = -1; /* T_substrings */
+static int hf_dap_sunstringType = -1; /* OBJECT_IDENTIFIER */
+static int hf_dap_strings = -1; /* T_strings */
+static int hf_dap_strings_item = -1; /* T_strings_item */
+static int hf_dap_initial = -1; /* T_initial */
+static int hf_dap_any = -1; /* T_any */
+static int hf_dap_final = -1; /* T_final */
+static int hf_dap_control = -1; /* Attribute */
+static int hf_dap_greaterOrEqual = -1; /* AttributeValueAssertion */
+static int hf_dap_lessOrEqual = -1; /* AttributeValueAssertion */
+static int hf_dap_present = -1; /* AttributeType */
+static int hf_dap_approximateMatch = -1; /* AttributeValueAssertion */
+static int hf_dap_extensibleMatch = -1; /* MatchingRuleAssertion */
+static int hf_dap_contextPresent = -1; /* AttributeTypeAssertion */
+static int hf_dap_matchingRule = -1; /* T_matchingRule */
+static int hf_dap_matchingRule_item = -1; /* OBJECT_IDENTIFIER */
+static int hf_dap_matchValue = -1; /* T_matchValue */
+static int hf_dap_dnAttributes = -1; /* BOOLEAN */
+static int hf_dap_newRequest = -1; /* T_newRequest */
+static int hf_dap_pageSize = -1; /* INTEGER */
+static int hf_dap_sortKeys = -1; /* SEQUENCE_OF_SortKey */
+static int hf_dap_sortKeys_item = -1; /* SortKey */
+static int hf_dap_reverse = -1; /* BOOLEAN */
+static int hf_dap_unmerged = -1; /* BOOLEAN */
+static int hf_dap_queryReference = -1; /* OCTET_STRING */
+static int hf_dap_orderingRule = -1; /* OBJECT_IDENTIFIER */
+static int hf_dap_certification_path = -1; /* CertificationPath */
+static int hf_dap_distinguished_name = -1; /* DistinguishedName */
+static int hf_dap_time = -1; /* Time */
+static int hf_dap_random = -1; /* BIT_STRING */
+static int hf_dap_target = -1; /* ProtectionRequest */
+static int hf_dap_response = -1; /* BIT_STRING */
+static int hf_dap_operationCode = -1; /* Code */
+static int hf_dap_attributeCertificationPath = -1; /* AttributeCertificationPath */
+static int hf_dap_errorProtection = -1; /* ErrorProtectionRequest */
+static int hf_dap_errorCode = -1; /* Code */
+static int hf_dap_utcTime = -1; /* UTCTime */
+static int hf_dap_generalizedTime = -1; /* GeneralizedTime */
+static int hf_dap_credentials = -1; /* Credentials */
+static int hf_dap_versions = -1; /* Versions */
+static int hf_dap_simple = -1; /* SimpleCredentials */
+static int hf_dap_strong = -1; /* StrongCredentials */
+static int hf_dap_externalProcedure = -1; /* EXTERNAL */
+static int hf_dap_spkm = -1; /* SpkmCredentials */
+static int hf_dap_validity = -1; /* T_validity */
+static int hf_dap_time1 = -1; /* T_time1 */
+static int hf_dap_utc = -1; /* UTCTime */
+static int hf_dap_gt = -1; /* GeneralizedTime */
+static int hf_dap_time2 = -1; /* T_time2 */
+static int hf_dap_random1 = -1; /* BIT_STRING */
+static int hf_dap_random2 = -1; /* BIT_STRING */
+static int hf_dap_password = -1; /* T_password */
+static int hf_dap_unprotected = -1; /* OCTET_STRING */
+static int hf_dap_protected = -1; /* T_protected */
+static int hf_dap_protectedPassword = -1; /* OCTET_STRING */
+static int hf_dap_algorithmIdentifier = -1; /* AlgorithmIdentifier */
+static int hf_dap_encrypted = -1; /* BIT_STRING */
+static int hf_dap_bind_token = -1; /* T_bind_token */
+static int hf_dap_req = -1; /* T_req */
+static int hf_dap_rep = -1; /* T_rep */
+static int hf_dap_error = -1; /* T_error */
+static int hf_dap_serviceProblem = -1; /* ServiceProblem */
+static int hf_dap_securityProblem = -1; /* SecurityProblem */
+static int hf_dap_unsignedDirectoryBindError = -1; /* DirectoryBindErrorData */
+static int hf_dap_signedDirectoryBindError = -1; /* T_signedDirectoryBindError */
+static int hf_dap_directoryBindError = -1; /* DirectoryBindErrorData */
+static int hf_dap_object = -1; /* Name */
+static int hf_dap_selection = -1; /* EntryInformationSelection */
+static int hf_dap_modifyRightsRequest = -1; /* BOOLEAN */
+static int hf_dap_serviceControls = -1; /* ServiceControls */
+static int hf_dap_requestor = -1; /* DistinguishedName */
+static int hf_dap_operationProgress = -1; /* OperationProgress */
+static int hf_dap_aliasedRDNs = -1; /* INTEGER */
+static int hf_dap_criticalExtensions = -1; /* BIT_STRING */
+static int hf_dap_referenceType = -1; /* ReferenceType */
+static int hf_dap_entryOnly = -1; /* BOOLEAN */
+static int hf_dap_nameResolveOnMaster = -1; /* BOOLEAN */
+static int hf_dap_operationContexts = -1; /* ContextSelection */
+static int hf_dap_familyGrouping = -1; /* FamilyGrouping */
+static int hf_dap_rdnSequence = -1; /* RDNSequence */
+static int hf_dap_unsignedReadArgument = -1; /* ReadArgumentData */
+static int hf_dap_signedReadArgument = -1; /* T_signedReadArgument */
+static int hf_dap_readArgument = -1; /* ReadArgumentData */
+static int hf_dap_entry = -1; /* EntryInformation */
+static int hf_dap_modifyRights = -1; /* ModifyRights */
+static int hf_dap_unsignedReadResult = -1; /* ReadResultData */
+static int hf_dap_signedReadResult = -1; /* T_signedReadResult */
+static int hf_dap_readResult = -1; /* ReadResultData */
+static int hf_dap_ModifyRights_item = -1; /* ModifyRights_item */
+static int hf_dap_item = -1; /* T_item */
+static int hf_dap_item_entry = -1; /* NULL */
+static int hf_dap_attribute_type = -1; /* AttributeType */
+static int hf_dap_value_assertion = -1; /* AttributeValueAssertion */
+static int hf_dap_permission = -1; /* T_permission */
+static int hf_dap_purported = -1; /* AttributeValueAssertion */
+static int hf_dap_unsignedCompareArgument = -1; /* CompareArgumentData */
+static int hf_dap_signedCompareArgument = -1; /* T_signedCompareArgument */
+static int hf_dap_compareArgument = -1; /* CompareArgumentData */
+static int hf_dap_matched = -1; /* BOOLEAN */
+static int hf_dap_matchedSubtype = -1; /* AttributeType */
+static int hf_dap_unsignedCompareResult = -1; /* CompareResultData */
+static int hf_dap_signedCompareResult = -1; /* T_signedCompareResult */
+static int hf_dap_compareResult = -1; /* CompareResultData */
+static int hf_dap_invokeID = -1; /* InvokeId */
+static int hf_dap_unsignedAbandonArgument = -1; /* AbandonArgumentData */
+static int hf_dap_signedAbandonArgument = -1; /* T_signedAbandonArgument */
+static int hf_dap_abandonArgument = -1; /* AbandonArgumentData */
+static int hf_dap_null = -1; /* NULL */
+static int hf_dap_abandon_information = -1; /* AbandonInformation */
+static int hf_dap_unsignedAbandonResult = -1; /* AbandonResultData */
+static int hf_dap_signedAbandonResult = -1; /* T_signedAbandonResult */
+static int hf_dap_abandonResult = -1; /* AbandonResultData */
+static int hf_dap_pagedResults = -1; /* PagedResultsRequest */
+static int hf_dap_listFamily = -1; /* BOOLEAN */
+static int hf_dap_unsignedListArgument = -1; /* ListArgumentData */
+static int hf_dap_signedListArgument = -1; /* T_signedListArgument */
+static int hf_dap_listArgument = -1; /* ListArgumentData */
+static int hf_dap_listInfo = -1; /* T_listInfo */
+static int hf_dap_subordinates = -1; /* T_subordinates */
+static int hf_dap_subordinates_item = -1; /* T_subordinates_item */
+static int hf_dap_aliasEntry = -1; /* BOOLEAN */
+static int hf_dap_partialOutcomeQualifier = -1; /* PartialOutcomeQualifier */
+static int hf_dap_uncorrelatedListInfo = -1; /* SET_OF_ListResult */
+static int hf_dap_uncorrelatedListInfo_item = -1; /* ListResult */
+static int hf_dap_unsignedListResult = -1; /* ListResultData */
+static int hf_dap_signedListResult = -1; /* T_signedListResult */
+static int hf_dap_listResult = -1; /* ListResultData */
+static int hf_dap_limitProblem = -1; /* LimitProblem */
+static int hf_dap_unexplored = -1; /* SET_OF_ContinuationReference */
+static int hf_dap_unexplored_item = -1; /* ContinuationReference */
+static int hf_dap_unavailableCriticalExtensions = -1; /* BOOLEAN */
+static int hf_dap_unknownErrors = -1; /* T_unknownErrors */
+static int hf_dap_unknownErrors_item = -1; /* OBJECT_IDENTIFIER */
+static int hf_dap_overspecFilter = -1; /* Filter */
+static int hf_dap_entryCount = -1; /* T_entryCount */
+static int hf_dap_bestEstimate = -1; /* INTEGER */
+static int hf_dap_lowEstimate = -1; /* INTEGER */
+static int hf_dap_baseObject = -1; /* Name */
+static int hf_dap_subset = -1; /* T_subset */
+static int hf_dap_filter = -1; /* Filter */
+static int hf_dap_searchAliases = -1; /* BOOLEAN */
+static int hf_dap_matchedValuesOnly = -1; /* BOOLEAN */
+static int hf_dap_extendedFilter = -1; /* Filter */
+static int hf_dap_checkOverspecified = -1; /* BOOLEAN */
+static int hf_dap_relaxation = -1; /* RelaxationPolicy */
+static int hf_dap_extendedArea = -1; /* INTEGER */
+static int hf_dap_hierarchySelections = -1; /* HierarchySelections */
+static int hf_dap_searchControlOptions = -1; /* SearchControlOptions */
+static int hf_dap_joinArguments = -1; /* SEQUENCE_SIZE_1_MAX_OF_JoinArgument */
+static int hf_dap_joinArguments_item = -1; /* JoinArgument */
+static int hf_dap_joinType = -1; /* T_joinType */
+static int hf_dap_unsignedSearchArgument = -1; /* SearchArgumentData */
+static int hf_dap_signedSearchArgument = -1; /* T_signedSearchArgument */
+static int hf_dap_searchArgument = -1; /* SearchArgumentData */
+static int hf_dap_joinBaseObject = -1; /* Name */
+static int hf_dap_domainLocalID = -1; /* DomainLocalID */
+static int hf_dap_joinSubset = -1; /* T_joinSubset */
+static int hf_dap_joinFilter = -1; /* Filter */
+static int hf_dap_joinAttributes = -1; /* SEQUENCE_OF_JoinAttPair */
+static int hf_dap_joinAttributes_item = -1; /* JoinAttPair */
+static int hf_dap_joinSelection = -1; /* EntryInformationSelection */
+static int hf_dap_baseAtt = -1; /* AttributeType */
+static int hf_dap_joinAtt = -1; /* AttributeType */
+static int hf_dap_joinContext = -1; /* SEQUENCE_OF_JoinContextType */
+static int hf_dap_joinContext_item = -1; /* JoinContextType */
+static int hf_dap_searchInfo = -1; /* T_searchInfo */
+static int hf_dap_entries = -1; /* SET_OF_EntryInformation */
+static int hf_dap_entries_item = -1; /* EntryInformation */
+static int hf_dap_altMatching = -1; /* BOOLEAN */
+static int hf_dap_uncorrelatedSearchInfo = -1; /* SET_OF_SearchResult */
+static int hf_dap_uncorrelatedSearchInfo_item = -1; /* SearchResult */
+static int hf_dap_unsignedSearchResult = -1; /* SearchResultData */
+static int hf_dap_signedSearchResult = -1; /* T_signedSearchResult */
+static int hf_dap_searchResult = -1; /* SearchResultData */
+static int hf_dap_add_entry = -1; /* SET_OF_Attribute */
+static int hf_dap_entry_item = -1; /* Attribute */
+static int hf_dap_targetSystem = -1; /* AccessPoint */
+static int hf_dap_unsignedAddEntryArgument = -1; /* AddEntryArgumentData */
+static int hf_dap_signedAddEntryArgument = -1; /* T_signedAddEntryArgument */
+static int hf_dap_addEntryArgument = -1; /* AddEntryArgumentData */
+static int hf_dap_add_entry_information = -1; /* AddEntryInformation */
+static int hf_dap_unsignedAddEntryResult = -1; /* AddEntryResultData */
+static int hf_dap_signedAddEntryResult = -1; /* T_signedAddEntryResult */
+static int hf_dap_addEntryResult = -1; /* AddEntryResultData */
+static int hf_dap_unsignedRemoveEntryArgument = -1; /* RemoveEntryArgumentData */
+static int hf_dap_signedRemoveEntryArgument = -1; /* T_signedRemoveEntryArgument */
+static int hf_dap_removeEntryArgument = -1; /* RemoveEntryArgumentData */
+static int hf_dap_remove_entry_information = -1; /* RemoveEntryInformation */
+static int hf_dap_unsignedRemoveEntryResult = -1; /* RemoveEntryResultData */
+static int hf_dap_signedRemoveEntryResult = -1; /* T_signedRemoveEntryResult */
+static int hf_dap_removeEntryResult = -1; /* RemoveEntryResultData */
+static int hf_dap_changes = -1; /* SEQUENCE_OF_EntryModification */
+static int hf_dap_changes_item = -1; /* EntryModification */
+static int hf_dap_unsignedModifyEntryArgument = -1; /* ModifyEntryArgumentData */
+static int hf_dap_signedModifyEntryArgument = -1; /* T_signedModifyEntryArgument */
+static int hf_dap_modifyEntryArgument = -1; /* ModifyEntryArgumentData */
+static int hf_dap_modify_entry_information = -1; /* ModifyEntryInformation */
+static int hf_dap_unsignedModifyEntryResult = -1; /* ModifyEntryResultData */
+static int hf_dap_signedModifyEntryResult = -1; /* T_signedModifyEntryResult */
+static int hf_dap_modifyEntryResult = -1; /* ModifyEntryResultData */
+static int hf_dap_addAttribute = -1; /* Attribute */
+static int hf_dap_removeAttribute = -1; /* AttributeType */
+static int hf_dap_addValues = -1; /* Attribute */
+static int hf_dap_removeValues = -1; /* Attribute */
+static int hf_dap_alterValues = -1; /* AttributeTypeAndValue */
+static int hf_dap_resetValue = -1; /* AttributeType */
+static int hf_dap_newRDN = -1; /* RelativeDistinguishedName */
+static int hf_dap_deleteOldRDN = -1; /* BOOLEAN */
+static int hf_dap_newSuperior = -1; /* DistinguishedName */
+static int hf_dap_modify_dn_information = -1; /* ModifyDNInformation */
+static int hf_dap_unsignedModifyDNResult = -1; /* ModifyDNResultData */
+static int hf_dap_signedModifyDNResult = -1; /* T_signedModifyDNResult */
+static int hf_dap_modifyDNResult = -1; /* ModifyDNResultData */
+static int hf_dap_unsignedAbandoned = -1; /* AbandonedData */
+static int hf_dap_signedAbandoned = -1; /* T_signedAbandoned */
+static int hf_dap_abandoned = -1; /* AbandonedData */
+static int hf_dap_abandon_failed_problem = -1; /* AbandonProblem */
+static int hf_dap_operation = -1; /* InvokeId */
+static int hf_dap_unsignedAbandonFailedError = -1; /* AbandonFailedErrorData */
+static int hf_dap_signedAbandonFailedError = -1; /* T_signedAbandonFailedError */
+static int hf_dap_abandonFailedError = -1; /* AbandonFailedErrorData */
+static int hf_dap_problems = -1; /* T_problems */
+static int hf_dap_problems_item = -1; /* T_problems_item */
+static int hf_dap_attribute_error_problem = -1; /* AttributeProblem */
+static int hf_dap_value = -1; /* AttributeValue */
+static int hf_dap_unsignedAttributeError = -1; /* AttributeErrorData */
+static int hf_dap_signedAttributeError = -1; /* T_signedAttributeError */
+static int hf_dap_attributeError = -1; /* AttributeErrorData */
+static int hf_dap_name_error_problem = -1; /* NameProblem */
+static int hf_dap_matched_name = -1; /* Name */
+static int hf_dap_unsignedNameError = -1; /* NameErrorData */
+static int hf_dap_signedNameError = -1; /* T_signedNameError */
+static int hf_dap_nameError = -1; /* NameErrorData */
+static int hf_dap_candidate = -1; /* ContinuationReference */
+static int hf_dap_unsignedReferral = -1; /* ReferralData */
+static int hf_dap_signedReferral = -1; /* T_signedReferral */
+static int hf_dap_referral = -1; /* ReferralData */
+static int hf_dap_security_error_problem = -1; /* SecurityProblem */
+static int hf_dap_spkmInfo = -1; /* T_spkmInfo */
+static int hf_dap_unsignedSecurityError = -1; /* SecurityErrorData */
+static int hf_dap_signedSecurityError = -1; /* T_signedSecurityError */
+static int hf_dap_securityErrorData = -1; /* SecurityErrorData */
+static int hf_dap_service_error_problem = -1; /* ServiceProblem */
+static int hf_dap_unsignedServiceError = -1; /* ServiceErrorData */
+static int hf_dap_signedServiceError = -1; /* T_signedServiceError */
+static int hf_dap_serviceError = -1; /* ServiceErrorData */
+static int hf_dap_update_error_problem = -1; /* UpdateProblem */
+static int hf_dap_attributeInfo = -1; /* T_attributeInfo */
+static int hf_dap_attributeInfo_item = -1; /* T_attributeInfo_item */
+static int hf_dap_unsignedUpdateError = -1; /* UpdateErrorData */
+static int hf_dap_signedUpdateError = -1; /* T_signedUpdateError */
+static int hf_dap_updateError = -1; /* UpdateErrorData */
+static int hf_dap_identifier = -1; /* INTEGER */
+static int hf_dap_version = -1; /* INTEGER */
+static int hf_dap_teletexString = -1; /* TeletexString */
+static int hf_dap_printableString = -1; /* PrintableString */
+static int hf_dap_universalString = -1; /* UniversalString */
+static int hf_dap_bmpString = -1; /* BMPString */
+static int hf_dap_uTF8String = -1; /* UTF8String */
+/* named bits */
+static int hf_dap_ServiceControlOptions_preferChaining = -1;
+static int hf_dap_ServiceControlOptions_chainingProhibited = -1;
+static int hf_dap_ServiceControlOptions_localScope = -1;
+static int hf_dap_ServiceControlOptions_dontUseCopy = -1;
+static int hf_dap_ServiceControlOptions_dontDereferenceAliases = -1;
+static int hf_dap_ServiceControlOptions_subentries = -1;
+static int hf_dap_ServiceControlOptions_copyShallDo = -1;
+static int hf_dap_ServiceControlOptions_partialNameResolution = -1;
+static int hf_dap_ServiceControlOptions_manageDSAIT = -1;
+static int hf_dap_ServiceControlOptions_noSubtypeMatch = -1;
+static int hf_dap_ServiceControlOptions_noSubtypeSelection = -1;
+static int hf_dap_ServiceControlOptions_countFamily = -1;
+static int hf_dap_Versions_v1 = -1;
+static int hf_dap_Versions_v2 = -1;
+static int hf_dap_T_permission_add = -1;
+static int hf_dap_T_permission_remove = -1;
+static int hf_dap_T_permission_rename = -1;
+static int hf_dap_T_permission_move = -1;
+static int hf_dap_HierarchySelections_self = -1;
+static int hf_dap_HierarchySelections_children = -1;
+static int hf_dap_HierarchySelections_parent = -1;
+static int hf_dap_HierarchySelections_hierarchy = -1;
+static int hf_dap_HierarchySelections_top = -1;
+static int hf_dap_HierarchySelections_subtree = -1;
+static int hf_dap_HierarchySelections_siblings = -1;
+static int hf_dap_HierarchySelections_siblingChildren = -1;
+static int hf_dap_HierarchySelections_siblingSubtree = -1;
+static int hf_dap_HierarchySelections_all = -1;
+static int hf_dap_SearchControlOptions_searchAliases = -1;
+static int hf_dap_SearchControlOptions_matchedValuesOnly = -1;
+static int hf_dap_SearchControlOptions_checkOverspecified = -1;
+static int hf_dap_SearchControlOptions_performExactly = -1;
+static int hf_dap_SearchControlOptions_includeAllAreas = -1;
+static int hf_dap_SearchControlOptions_noSystemRelaxation = -1;
+static int hf_dap_SearchControlOptions_dnAttribute = -1;
+static int hf_dap_SearchControlOptions_matchOnResidualName = -1;
+static int hf_dap_SearchControlOptions_entryCount = -1;
+static int hf_dap_SearchControlOptions_useSubset = -1;
+static int hf_dap_SearchControlOptions_separateFamilyMembers = -1;
+static int hf_dap_SearchControlOptions_searchFamily = -1;
+
+/*--- End of included file: packet-dap-hf.c ---*/
+
+
+/* Initialize the subtree pointers */
+static gint ett_dap = -1;
+
+/*--- Included file: packet-dap-ett.c ---*/
+
+static gint ett_dap_CommonResults = -1;
+static gint ett_dap_SEQUENCE_OF_Attribute = -1;
+static gint ett_dap_ServiceControls = -1;
+static gint ett_dap_T_manageDSAITPlaneRef = -1;
+static gint ett_dap_ServiceControlOptions = -1;
+static gint ett_dap_EntryInformationSelection = -1;
+static gint ett_dap_T_attributes = -1;
+static gint ett_dap_SET_OF_AttributeType = -1;
+static gint ett_dap_T_extraAttributes = -1;
+static gint ett_dap_ContextSelection = -1;
+static gint ett_dap_SET_OF_TypeAndContextAssertion = -1;
+static gint ett_dap_TypeAndContextAssertion = -1;
+static gint ett_dap_T_contextAssertions = -1;
+static gint ett_dap_SEQUENCE_OF_ContextAssertion = -1;
+static gint ett_dap_SET_OF_ContextAssertion = -1;
+static gint ett_dap_FamilyReturn = -1;
+static gint ett_dap_T_familySelect = -1;
+static gint ett_dap_EntryInformation = -1;
+static gint ett_dap_T_information = -1;
+static gint ett_dap_EntryInformationItem = -1;
+static gint ett_dap_FamilyEntries = -1;
+static gint ett_dap_SEQUENCE_OF_FamilyEntry = -1;
+static gint ett_dap_FamilyEntry = -1;
+static gint ett_dap_FamilyInformation = -1;
+static gint ett_dap_T_information_item = -1;
+static gint ett_dap_SEQUENCE_OF_FamilyEntries = -1;
+static gint ett_dap_Filter = -1;
+static gint ett_dap_SetOfFilter = -1;
+static gint ett_dap_FilterItem = -1;
+static gint ett_dap_T_substrings = -1;
+static gint ett_dap_T_strings = -1;
+static gint ett_dap_T_strings_item = -1;
+static gint ett_dap_MatchingRuleAssertion = -1;
+static gint ett_dap_T_matchingRule = -1;
+static gint ett_dap_PagedResultsRequest = -1;
+static gint ett_dap_T_newRequest = -1;
+static gint ett_dap_SEQUENCE_OF_SortKey = -1;
+static gint ett_dap_SortKey = -1;
+static gint ett_dap_SecurityParameters = -1;
+static gint ett_dap_Time = -1;
+static gint ett_dap_DirectoryBindArgument = -1;
+static gint ett_dap_Credentials = -1;
+static gint ett_dap_SimpleCredentials = -1;
+static gint ett_dap_T_validity = -1;
+static gint ett_dap_T_time1 = -1;
+static gint ett_dap_T_time2 = -1;
+static gint ett_dap_T_password = -1;
+static gint ett_dap_T_protected = -1;
+static gint ett_dap_StrongCredentials = -1;
+static gint ett_dap_SpkmCredentials = -1;
+static gint ett_dap_Versions = -1;
+static gint ett_dap_DirectoryBindErrorData = -1;
+static gint ett_dap_T_error = -1;
+static gint ett_dap_DirectoryBindError = -1;
+static gint ett_dap_T_signedDirectoryBindError = -1;
+static gint ett_dap_ReadArgumentData = -1;
+static gint ett_dap_Name = -1;
+static gint ett_dap_ReadArgument = -1;
+static gint ett_dap_T_signedReadArgument = -1;
+static gint ett_dap_ReadResultData = -1;
+static gint ett_dap_ReadResult = -1;
+static gint ett_dap_T_signedReadResult = -1;
+static gint ett_dap_ModifyRights = -1;
+static gint ett_dap_ModifyRights_item = -1;
+static gint ett_dap_T_item = -1;
+static gint ett_dap_T_permission = -1;
+static gint ett_dap_CompareArgumentData = -1;
+static gint ett_dap_CompareArgument = -1;
+static gint ett_dap_T_signedCompareArgument = -1;
+static gint ett_dap_CompareResultData = -1;
+static gint ett_dap_CompareResult = -1;
+static gint ett_dap_T_signedCompareResult = -1;
+static gint ett_dap_AbandonArgumentData = -1;
+static gint ett_dap_AbandonArgument = -1;
+static gint ett_dap_T_signedAbandonArgument = -1;
+static gint ett_dap_AbandonResultData = -1;
+static gint ett_dap_AbandonResult = -1;
+static gint ett_dap_AbandonInformation = -1;
+static gint ett_dap_T_signedAbandonResult = -1;
+static gint ett_dap_ListArgumentData = -1;
+static gint ett_dap_ListArgument = -1;
+static gint ett_dap_T_signedListArgument = -1;
+static gint ett_dap_ListResultData = -1;
+static gint ett_dap_T_listInfo = -1;
+static gint ett_dap_T_subordinates = -1;
+static gint ett_dap_T_subordinates_item = -1;
+static gint ett_dap_SET_OF_ListResult = -1;
+static gint ett_dap_ListResult = -1;
+static gint ett_dap_T_signedListResult = -1;
+static gint ett_dap_PartialOutcomeQualifier = -1;
+static gint ett_dap_SET_OF_ContinuationReference = -1;
+static gint ett_dap_T_unknownErrors = -1;
+static gint ett_dap_T_entryCount = -1;
+static gint ett_dap_SearchArgumentData = -1;
+static gint ett_dap_SEQUENCE_SIZE_1_MAX_OF_JoinArgument = -1;
+static gint ett_dap_SearchArgument = -1;
+static gint ett_dap_T_signedSearchArgument = -1;
+static gint ett_dap_HierarchySelections = -1;
+static gint ett_dap_SearchControlOptions = -1;
+static gint ett_dap_JoinArgument = -1;
+static gint ett_dap_SEQUENCE_OF_JoinAttPair = -1;
+static gint ett_dap_JoinAttPair = -1;
+static gint ett_dap_SEQUENCE_OF_JoinContextType = -1;
+static gint ett_dap_SearchResultData = -1;
+static gint ett_dap_T_searchInfo = -1;
+static gint ett_dap_SET_OF_EntryInformation = -1;
+static gint ett_dap_SET_OF_SearchResult = -1;
+static gint ett_dap_SearchResult = -1;
+static gint ett_dap_T_signedSearchResult = -1;
+static gint ett_dap_AddEntryArgumentData = -1;
+static gint ett_dap_SET_OF_Attribute = -1;
+static gint ett_dap_AddEntryArgument = -1;
+static gint ett_dap_T_signedAddEntryArgument = -1;
+static gint ett_dap_AddEntryResultData = -1;
+static gint ett_dap_AddEntryResult = -1;
+static gint ett_dap_AddEntryInformation = -1;
+static gint ett_dap_T_signedAddEntryResult = -1;
+static gint ett_dap_RemoveEntryArgumentData = -1;
+static gint ett_dap_RemoveEntryArgument = -1;
+static gint ett_dap_T_signedRemoveEntryArgument = -1;
+static gint ett_dap_RemoveEntryResultData = -1;
+static gint ett_dap_RemoveEntryResult = -1;
+static gint ett_dap_RemoveEntryInformation = -1;
+static gint ett_dap_T_signedRemoveEntryResult = -1;
+static gint ett_dap_ModifyEntryArgumentData = -1;
+static gint ett_dap_SEQUENCE_OF_EntryModification = -1;
+static gint ett_dap_ModifyEntryArgument = -1;
+static gint ett_dap_T_signedModifyEntryArgument = -1;
+static gint ett_dap_ModifyEntryResultData = -1;
+static gint ett_dap_ModifyEntryResult = -1;
+static gint ett_dap_ModifyEntryInformation = -1;
+static gint ett_dap_T_signedModifyEntryResult = -1;
+static gint ett_dap_EntryModification = -1;
+static gint ett_dap_ModifyDNArgument = -1;
+static gint ett_dap_ModifyDNResultData = -1;
+static gint ett_dap_ModifyDNResult = -1;
+static gint ett_dap_ModifyDNInformation = -1;
+static gint ett_dap_T_signedModifyDNResult = -1;
+static gint ett_dap_AbandonedData = -1;
+static gint ett_dap_Abandoned = -1;
+static gint ett_dap_T_signedAbandoned = -1;
+static gint ett_dap_AbandonFailedErrorData = -1;
+static gint ett_dap_AbandonFailedError = -1;
+static gint ett_dap_T_signedAbandonFailedError = -1;
+static gint ett_dap_AttributeErrorData = -1;
+static gint ett_dap_T_problems = -1;
+static gint ett_dap_T_problems_item = -1;
+static gint ett_dap_AttributeError = -1;
+static gint ett_dap_T_signedAttributeError = -1;
+static gint ett_dap_NameErrorData = -1;
+static gint ett_dap_NameError = -1;
+static gint ett_dap_T_signedNameError = -1;
+static gint ett_dap_ReferralData = -1;
+static gint ett_dap_Referral = -1;
+static gint ett_dap_T_signedReferral = -1;
+static gint ett_dap_SecurityErrorData = -1;
+static gint ett_dap_SecurityError = -1;
+static gint ett_dap_T_signedSecurityError = -1;
+static gint ett_dap_ServiceErrorData = -1;
+static gint ett_dap_ServiceError = -1;
+static gint ett_dap_T_signedServiceError = -1;
+static gint ett_dap_UpdateErrorData = -1;
+static gint ett_dap_T_attributeInfo = -1;
+static gint ett_dap_T_attributeInfo_item = -1;
+static gint ett_dap_UpdateError = -1;
+static gint ett_dap_T_signedUpdateError = -1;
+static gint ett_dap_OperationalBindingID = -1;
+static gint ett_dap_DirectoryString = -1;
+
+/*--- End of included file: packet-dap-ett.c ---*/
+
+
+
+/*--- Included file: packet-dap-fn.c ---*/
+
+/*--- Cyclic dependencies ---*/
+
+/* FamilyEntries -> FamilyEntries/familyEntries -> FamilyEntry -> FamilyEntry/family-info -> FamilyEntries */
+static int dissect_dap_FamilyEntries(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+static int dissect_family_info_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_FamilyEntries(FALSE, tvb, offset, pinfo, tree, hf_dap_family_info_item);
+}
+
+/* Filter -> SetOfFilter -> Filter */
+/* Filter -> Filter */
+static int dissect_dap_Filter(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+static int dissect_not(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Filter(FALSE, tvb, offset, pinfo, tree, hf_dap_not);
+}
+static int dissect_SetOfFilter_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Filter(FALSE, tvb, offset, pinfo, tree, hf_dap_SetOfFilter_item);
+}
+static int dissect_overspecFilter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Filter(FALSE, tvb, offset, pinfo, tree, hf_dap_overspecFilter);
+}
+static int dissect_filter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Filter(FALSE, tvb, offset, pinfo, tree, hf_dap_filter);
+}
+static int dissect_extendedFilter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Filter(FALSE, tvb, offset, pinfo, tree, hf_dap_extendedFilter);
+}
+static int dissect_joinFilter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Filter(FALSE, tvb, offset, pinfo, tree, hf_dap_joinFilter);
+}
+
+/* ListResultData -> ListResultData/uncorrelatedListInfo -> ListResult -> ListResultData */
+/* ListResultData -> ListResultData/uncorrelatedListInfo -> ListResult -> ListResult/signedListResult -> ListResultData */
+static int dissect_dap_ListResultData(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+static int dissect_unsignedListResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ListResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedListResult);
+}
+static int dissect_listResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ListResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_listResult);
+}
+
+/* SearchResultData -> SearchResultData/uncorrelatedSearchInfo -> SearchResult -> SearchResultData */
+/* SearchResultData -> SearchResultData/uncorrelatedSearchInfo -> SearchResult -> SearchResult/signedSearchResult -> SearchResultData */
+static int dissect_dap_SearchResultData(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+static int dissect_unsignedSearchResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SearchResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedSearchResult);
+}
+static int dissect_searchResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SearchResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_searchResult);
+}
+
+
+/*--- Fields for imported types ---*/
+
+static int dissect_performer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dap_performer);
+}
+static int dissect_notification_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dap_notification_item);
+}
+static int dissect_select_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_select_item);
+}
+static int dissect_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_type);
+}
+static int dissect_preference_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_preference_item);
+}
+static int dissect_all_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_all_item);
+}
+static int dissect_attributeType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_attributeType);
+}
+static int dissect_attribute(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dap_attribute);
+}
+static int dissect_rdn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RelativeDistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dap_rdn);
+}
+static int dissect_equality(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValueAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_equality);
+}
+static int dissect_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dap_control);
+}
+static int dissect_greaterOrEqual(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValueAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_greaterOrEqual);
+}
+static int dissect_lessOrEqual(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValueAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_lessOrEqual);
+}
+static int dissect_present(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_present);
+}
+static int dissect_approximateMatch(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValueAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_approximateMatch);
+}
+static int dissect_contextPresent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeTypeAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_contextPresent);
+}
+static int dissect_certification_path(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509af_CertificationPath(FALSE, tvb, offset, pinfo, tree, hf_dap_certification_path);
+}
+static int dissect_distinguished_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dap_distinguished_name);
+}
+static int dissect_operationCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ros_Code(FALSE, tvb, offset, pinfo, tree, hf_dap_operationCode);
+}
+static int dissect_attributeCertificationPath(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509af_AttributeCertificationPath(FALSE, tvb, offset, pinfo, tree, hf_dap_attributeCertificationPath);
+}
+static int dissect_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ros_Code(FALSE, tvb, offset, pinfo, tree, hf_dap_errorCode);
+}
+static int dissect_externalProcedure(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_acse_EXTERNAL(FALSE, tvb, offset, pinfo, tree, hf_dap_externalProcedure);
+}
+static int dissect_algorithmIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_dap_algorithmIdentifier);
+}
+static int dissect_requestor(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dap_requestor);
+}
+static int dissect_operationProgress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_OperationProgress(FALSE, tvb, offset, pinfo, tree, hf_dap_operationProgress);
+}
+static int dissect_referenceType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ReferenceType(FALSE, tvb, offset, pinfo, tree, hf_dap_referenceType);
+}
+static int dissect_rdnSequence(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RDNSequence(FALSE, tvb, offset, pinfo, tree, hf_dap_rdnSequence);
+}
+static int dissect_attribute_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_attribute_type);
+}
+static int dissect_value_assertion(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValueAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_value_assertion);
+}
+static int dissect_purported(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValueAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_purported);
+}
+static int dissect_matchedSubtype(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_matchedSubtype);
+}
+static int dissect_invokeID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ros_InvokeId(FALSE, tvb, offset, pinfo, tree, hf_dap_invokeID);
+}
+static int dissect_unexplored_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ContinuationReference(FALSE, tvb, offset, pinfo, tree, hf_dap_unexplored_item);
+}
+static int dissect_relaxation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RelaxationPolicy(FALSE, tvb, offset, pinfo, tree, hf_dap_relaxation);
+}
+static int dissect_baseAtt(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_baseAtt);
+}
+static int dissect_joinAtt(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_joinAtt);
+}
+static int dissect_entry_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dap_entry_item);
+}
+static int dissect_targetSystem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_AccessPoint(FALSE, tvb, offset, pinfo, tree, hf_dap_targetSystem);
+}
+static int dissect_addAttribute(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dap_addAttribute);
+}
+static int dissect_removeAttribute(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_removeAttribute);
+}
+static int dissect_addValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dap_addValues);
+}
+static int dissect_removeValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dap_removeValues);
+}
+static int dissect_alterValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_crmf_AttributeTypeAndValue(FALSE, tvb, offset, pinfo, tree, hf_dap_alterValues);
+}
+static int dissect_resetValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_resetValue);
+}
+static int dissect_newRDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RelativeDistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dap_newRDN);
+}
+static int dissect_newSuperior(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dap_newSuperior);
+}
+static int dissect_operation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ros_InvokeId(FALSE, tvb, offset, pinfo, tree, hf_dap_operation);
+}
+static int dissect_value(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_dap_value);
+}
+static int dissect_candidate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ContinuationReference(FALSE, tvb, offset, pinfo, tree, hf_dap_candidate);
+}
+
+
+static const value_string dap_FamilyGrouping_vals[] = {
+ { 1, "entryOnly" },
+ { 2, "compoundEntry" },
+ { 3, "strands" },
+ { 4, "multiStrand" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_FamilyGrouping(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_familyGrouping(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_FamilyGrouping(FALSE, tvb, offset, pinfo, tree, hf_dap_familyGrouping);
+}
+
+
+
+static int
+dissect_dap_UTCTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_utcTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_UTCTime(FALSE, tvb, offset, pinfo, tree, hf_dap_utcTime);
+}
+static int dissect_utc(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_UTCTime(FALSE, tvb, offset, pinfo, tree, hf_dap_utc);
+}
+
+
+
+static int
+dissect_dap_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_generalizedTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_GeneralizedTime(FALSE, tvb, offset, pinfo, tree, hf_dap_generalizedTime);
+}
+static int dissect_gt(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_GeneralizedTime(FALSE, tvb, offset, pinfo, tree, hf_dap_gt);
+}
+
+
+static const value_string dap_Time_vals[] = {
+ { 0, "utcTime" },
+ { 1, "generalizedTime" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dap_Time(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Time_choice, hf_index, ett_dap_Time,
+ NULL);
+
+ return offset;
+}
+static int dissect_time(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Time(FALSE, tvb, offset, pinfo, tree, hf_dap_time);
+}
+
+
+
+static int
+dissect_dap_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ NULL, hf_index, -1,
+ NULL);
+
+ return offset;
+}
+static int dissect_random(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_dap_random);
+}
+static int dissect_response(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_dap_response);
+}
+static int dissect_random1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_dap_random1);
+}
+static int dissect_random2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_dap_random2);
+}
+static int dissect_encrypted(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_dap_encrypted);
+}
+static int dissect_criticalExtensions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_dap_criticalExtensions);
+}
+
+
+static const value_string dap_ProtectionRequest_vals[] = {
+ { 0, "none" },
+ { 1, "signed" },
+ { 2, "encrypted" },
+ { 3, "signed-encrypted" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_ProtectionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_target(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ProtectionRequest(FALSE, tvb, offset, pinfo, tree, hf_dap_target);
+}
+
+
+static const value_string dap_ErrorProtectionRequest_vals[] = {
+ { 0, "none" },
+ { 1, "signed" },
+ { 2, "encrypted" },
+ { 3, "signed-encrypted" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_ErrorProtectionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_errorProtection(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ErrorProtectionRequest(FALSE, tvb, offset, pinfo, tree, hf_dap_errorProtection);
+}
+
+
+static const ber_sequence_t SecurityParameters_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_certification_path },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_distinguished_name },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_time },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_random },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_target },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_response },
+ { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_operationCode },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_attributeCertificationPath },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_errorProtection },
+ { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_errorCode },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_SecurityParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ SecurityParameters_set, hf_index, ett_dap_SecurityParameters);
+
+ return offset;
+}
+static int dissect_securityParameters(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SecurityParameters(FALSE, tvb, offset, pinfo, tree, hf_dap_securityParameters);
+}
+
+
+
+static int
+dissect_dap_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_aliasDereferenced(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_aliasDereferenced);
+}
+static int dissect_returnContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_returnContexts);
+}
+static int dissect_fromEntry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_fromEntry);
+}
+static int dissect_incompleteEntry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_incompleteEntry);
+}
+static int dissect_partialName(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_partialName);
+}
+static int dissect_derivedEntry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_derivedEntry);
+}
+static int dissect_dnAttributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_dnAttributes);
+}
+static int dissect_reverse(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_reverse);
+}
+static int dissect_unmerged(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_unmerged);
+}
+static int dissect_modifyRightsRequest(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_modifyRightsRequest);
+}
+static int dissect_entryOnly(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_entryOnly);
+}
+static int dissect_nameResolveOnMaster(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_nameResolveOnMaster);
+}
+static int dissect_matched(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_matched);
+}
+static int dissect_listFamily(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_listFamily);
+}
+static int dissect_aliasEntry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_aliasEntry);
+}
+static int dissect_unavailableCriticalExtensions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_unavailableCriticalExtensions);
+}
+static int dissect_searchAliases(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_searchAliases);
+}
+static int dissect_matchedValuesOnly(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_matchedValuesOnly);
+}
+static int dissect_checkOverspecified(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_checkOverspecified);
+}
+static int dissect_altMatching(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_altMatching);
+}
+static int dissect_deleteOldRDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dap_deleteOldRDN);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_notification_item },
+};
+
+static int
+dissect_dap_SEQUENCE_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_dap_SEQUENCE_OF_Attribute);
+
+ return offset;
+}
+static int dissect_notification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SEQUENCE_OF_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dap_notification);
+}
+
+
+static const ber_sequence_t CommonResults_set[] = {
+ { 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 }
+};
+
+int
+dissect_dap_CommonResults(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ CommonResults_set, hf_index, ett_dap_CommonResults);
+
+ return offset;
+}
+
+
+static const asn_namedbit ServiceControlOptions_bits[] = {
+ { 0, &hf_dap_ServiceControlOptions_preferChaining, -1, -1, "preferChaining", NULL },
+ { 1, &hf_dap_ServiceControlOptions_chainingProhibited, -1, -1, "chainingProhibited", NULL },
+ { 2, &hf_dap_ServiceControlOptions_localScope, -1, -1, "localScope", NULL },
+ { 3, &hf_dap_ServiceControlOptions_dontUseCopy, -1, -1, "dontUseCopy", NULL },
+ { 4, &hf_dap_ServiceControlOptions_dontDereferenceAliases, -1, -1, "dontDereferenceAliases", NULL },
+ { 5, &hf_dap_ServiceControlOptions_subentries, -1, -1, "subentries", NULL },
+ { 6, &hf_dap_ServiceControlOptions_copyShallDo, -1, -1, "copyShallDo", NULL },
+ { 7, &hf_dap_ServiceControlOptions_partialNameResolution, -1, -1, "partialNameResolution", NULL },
+ { 8, &hf_dap_ServiceControlOptions_manageDSAIT, -1, -1, "manageDSAIT", NULL },
+ { 9, &hf_dap_ServiceControlOptions_noSubtypeMatch, -1, -1, "noSubtypeMatch", NULL },
+ { 10, &hf_dap_ServiceControlOptions_noSubtypeSelection, -1, -1, "noSubtypeSelection", NULL },
+ { 11, &hf_dap_ServiceControlOptions_countFamily, -1, -1, "countFamily", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_dap_ServiceControlOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ ServiceControlOptions_bits, hf_index, ett_dap_ServiceControlOptions,
+ NULL);
+
+ return offset;
+}
+static int dissect_options(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ServiceControlOptions(FALSE, tvb, offset, pinfo, tree, hf_dap_options);
+}
+
+
+static const value_string dap_T_priority_vals[] = {
+ { 0, "low" },
+ { 1, "medium" },
+ { 2, "high" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_T_priority(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_priority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_priority(FALSE, tvb, offset, pinfo, tree, hf_dap_priority);
+}
+
+
+
+static int
+dissect_dap_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 value;
+
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &value);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ if(hf_index == hf_dap_identifier) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " id=%d", value);
+ } else if (hf_index == hf_dap_version) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, ",%d", value);
+ }
+ }
+
+
+ return offset;
+}
+static int dissect_timeLimit(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_timeLimit);
+}
+static int dissect_sizeLimit(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_sizeLimit);
+}
+static int dissect_attributeSizeLimit(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_attributeSizeLimit);
+}
+static int dissect_userClass(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_userClass);
+}
+static int dissect_pageSize(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_pageSize);
+}
+static int dissect_aliasedRDNs(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_aliasedRDNs);
+}
+static int dissect_bestEstimate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_bestEstimate);
+}
+static int dissect_lowEstimate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_lowEstimate);
+}
+static int dissect_extendedArea(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_extendedArea);
+}
+static int dissect_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_identifier);
+}
+static int dissect_version(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dap_version);
+}
+
+
+static const value_string dap_T_scopeOfReferral_vals[] = {
+ { 0, "dmd" },
+ { 1, "country" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_T_scopeOfReferral(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_scopeOfReferral(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_scopeOfReferral(FALSE, tvb, offset, pinfo, tree, hf_dap_scopeOfReferral);
+}
+
+
+static const value_string dap_Name_vals[] = {
+ { 0, "rdnSequence" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Name_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_rdnSequence },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ const char *dn;
+
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Name_choice, hf_index, ett_dap_Name,
+ NULL);
+
+
+ if(check_col(pinfo->cinfo, COL_INFO)) {
+ dn = x509if_get_last_dn();
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", (dn && *dn) ? dn : "(root)");
+ }
+
+
+ return offset;
+}
+static int dissect_dsaName(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Name(FALSE, tvb, offset, pinfo, tree, hf_dap_dsaName);
+}
+static int dissect_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Name(FALSE, tvb, offset, pinfo, tree, hf_dap_name);
+}
+static int dissect_object(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Name(FALSE, tvb, offset, pinfo, tree, hf_dap_object);
+}
+static int dissect_baseObject(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Name(FALSE, tvb, offset, pinfo, tree, hf_dap_baseObject);
+}
+static int dissect_joinBaseObject(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Name(FALSE, tvb, offset, pinfo, tree, hf_dap_joinBaseObject);
+}
+static int dissect_matched_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Name(FALSE, tvb, offset, pinfo, tree, hf_dap_matched_name);
+}
+
+
+static const ber_sequence_t OperationalBindingID_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_identifier },
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_version },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_OperationalBindingID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ OperationalBindingID_sequence, hf_index, ett_dap_OperationalBindingID);
+
+ return offset;
+}
+
+
+
+static int
+dissect_dap_AgreementID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_OperationalBindingID(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_agreementID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AgreementID(FALSE, tvb, offset, pinfo, tree, hf_dap_agreementID);
+}
+
+
+static const ber_sequence_t T_manageDSAITPlaneRef_sequence[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dsaName },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_agreementID },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_manageDSAITPlaneRef(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_manageDSAITPlaneRef_sequence, hf_index, ett_dap_T_manageDSAITPlaneRef);
+
+ return offset;
+}
+static int dissect_manageDSAITPlaneRef(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_manageDSAITPlaneRef(FALSE, tvb, offset, pinfo, tree, hf_dap_manageDSAITPlaneRef);
+}
+
+
+
+static int
+dissect_dap_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+static int dissect_serviceType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_dap_serviceType);
+}
+static int dissect_familySelect_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_dap_familySelect_item);
+}
+static int dissect_family_class(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_dap_family_class);
+}
+static int dissect_sunstringType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_dap_sunstringType);
+}
+static int dissect_matchingRule_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_dap_matchingRule_item);
+}
+static int dissect_orderingRule(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_dap_orderingRule);
+}
+static int dissect_unknownErrors_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_dap_unknownErrors_item);
+}
+
+
+static const ber_sequence_t ServiceControls_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_options },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_priority },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_timeLimit },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_sizeLimit },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_scopeOfReferral },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_attributeSizeLimit },
+ { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_manageDSAITPlaneRef },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_serviceType },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_userClass },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_ServiceControls(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ServiceControls_set, hf_index, ett_dap_ServiceControls);
+
+ return offset;
+}
+static int dissect_serviceControls(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ServiceControls(FALSE, tvb, offset, pinfo, tree, hf_dap_serviceControls);
+}
+
+
+
+static int
+dissect_dap_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_allUserAttributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_NULL(FALSE, tvb, offset, pinfo, tree, hf_dap_allUserAttributes);
+}
+static int dissect_allOperationalAttributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_NULL(FALSE, tvb, offset, pinfo, tree, hf_dap_allOperationalAttributes);
+}
+static int dissect_allContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_NULL(FALSE, tvb, offset, pinfo, tree, hf_dap_allContexts);
+}
+static int dissect_item_entry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_NULL(FALSE, tvb, offset, pinfo, tree, hf_dap_item_entry);
+}
+static int dissect_null(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_NULL(FALSE, tvb, offset, pinfo, tree, hf_dap_null);
+}
+
+
+static const ber_sequence_t SET_OF_AttributeType_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_select_item },
+};
+
+static int
+dissect_dap_SET_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_AttributeType_set_of, hf_index, ett_dap_SET_OF_AttributeType);
+
+ return offset;
+}
+static int dissect_select(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SET_OF_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dap_select);
+}
+
+
+static const value_string dap_T_attributes_vals[] = {
+ { 0, "allUserAttributes" },
+ { 1, "select" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_attributes_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_allUserAttributes },
+ { 1, BER_CLASS_CON, 1, 0, dissect_select },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_attributes_choice, hf_index, ett_dap_T_attributes,
+ NULL);
+
+ return offset;
+}
+static int dissect_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_attributes(FALSE, tvb, offset, pinfo, tree, hf_dap_attributes);
+}
+
+
+static const value_string dap_T_infoTypes_vals[] = {
+ { 0, "attributeTypesOnly" },
+ { 1, "attributeTypesAndValues" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_T_infoTypes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_infoTypes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_infoTypes(FALSE, tvb, offset, pinfo, tree, hf_dap_infoTypes);
+}
+
+
+static const value_string dap_T_extraAttributes_vals[] = {
+ { 3, "allOperationalAttributes" },
+ { 4, "select" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_extraAttributes_choice[] = {
+ { 3, BER_CLASS_CON, 3, 0, dissect_allOperationalAttributes },
+ { 4, BER_CLASS_CON, 4, 0, dissect_select },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_extraAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_extraAttributes_choice, hf_index, ett_dap_T_extraAttributes,
+ NULL);
+
+ return offset;
+}
+static int dissect_extraAttributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_extraAttributes(FALSE, tvb, offset, pinfo, tree, hf_dap_extraAttributes);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_ContextAssertion_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_preference_item },
+};
+
+static int
+dissect_dap_SEQUENCE_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_ContextAssertion_sequence_of, hf_index, ett_dap_SEQUENCE_OF_ContextAssertion);
+
+ return offset;
+}
+static int dissect_preference(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SEQUENCE_OF_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_preference);
+}
+
+
+static const ber_sequence_t SET_OF_ContextAssertion_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_all_item },
+};
+
+static int
+dissect_dap_SET_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_ContextAssertion_set_of, hf_index, ett_dap_SET_OF_ContextAssertion);
+
+ return offset;
+}
+static int dissect_all(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SET_OF_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_all);
+}
+
+
+static const value_string dap_T_contextAssertions_vals[] = {
+ { 0, "preference" },
+ { 1, "all" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_contextAssertions_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_preference },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_all },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_contextAssertions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_contextAssertions_choice, hf_index, ett_dap_T_contextAssertions,
+ NULL);
+
+ return offset;
+}
+static int dissect_contextAssertions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_contextAssertions(FALSE, tvb, offset, pinfo, tree, hf_dap_contextAssertions);
+}
+
+
+static const ber_sequence_t TypeAndContextAssertion_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_contextAssertions },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_TypeAndContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ TypeAndContextAssertion_sequence, hf_index, ett_dap_TypeAndContextAssertion);
+
+ return offset;
+}
+static int dissect_selectedContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_TypeAndContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_selectedContexts_item);
+}
+
+
+static const ber_sequence_t SET_OF_TypeAndContextAssertion_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_selectedContexts_item },
+};
+
+static int
+dissect_dap_SET_OF_TypeAndContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_TypeAndContextAssertion_set_of, hf_index, ett_dap_SET_OF_TypeAndContextAssertion);
+
+ return offset;
+}
+static int dissect_selectedContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SET_OF_TypeAndContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_selectedContexts);
+}
+
+
+const value_string dap_ContextSelection_vals[] = {
+ { 0, "allContexts" },
+ { 1, "selectedContexts" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ContextSelection_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allContexts },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_selectedContexts },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ContextSelection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ContextSelection_choice, hf_index, ett_dap_ContextSelection,
+ NULL);
+
+ return offset;
+}
+static int dissect_contextSelection(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ContextSelection(FALSE, tvb, offset, pinfo, tree, hf_dap_contextSelection);
+}
+static int dissect_operationContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ContextSelection(FALSE, tvb, offset, pinfo, tree, hf_dap_operationContexts);
+}
+
+
+static const value_string dap_T_memberSelect_vals[] = {
+ { 1, "contributingEntriesOnly" },
+ { 2, "participatingEntriesOnly" },
+ { 3, "compoundEntry" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_T_memberSelect(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_memberSelect(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_memberSelect(FALSE, tvb, offset, pinfo, tree, hf_dap_memberSelect);
+}
+
+
+static const ber_sequence_t T_familySelect_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_familySelect_item },
+};
+
+static int
+dissect_dap_T_familySelect(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_familySelect_sequence_of, hf_index, ett_dap_T_familySelect);
+
+ return offset;
+}
+static int dissect_familySelect(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_familySelect(FALSE, tvb, offset, pinfo, tree, hf_dap_familySelect);
+}
+
+
+static const ber_sequence_t FamilyReturn_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_memberSelect },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_familySelect },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_FamilyReturn(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ FamilyReturn_sequence, hf_index, ett_dap_FamilyReturn);
+
+ return offset;
+}
+static int dissect_familyReturn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_FamilyReturn(FALSE, tvb, offset, pinfo, tree, hf_dap_familyReturn);
+}
+
+
+static const ber_sequence_t EntryInformationSelection_set[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_attributes },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_infoTypes },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extraAttributes },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_contextSelection },
+ { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_returnContexts },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_familyReturn },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_EntryInformationSelection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ EntryInformationSelection_set, hf_index, ett_dap_EntryInformationSelection);
+
+ return offset;
+}
+static int dissect_selection(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_EntryInformationSelection(FALSE, tvb, offset, pinfo, tree, hf_dap_selection);
+}
+static int dissect_joinSelection(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_EntryInformationSelection(FALSE, tvb, offset, pinfo, tree, hf_dap_joinSelection);
+}
+
+
+static const value_string dap_EntryInformationItem_vals[] = {
+ { 0, "attributeType" },
+ { 1, "attribute" },
+ { 0, NULL }
+};
+
+static const ber_choice_t EntryInformationItem_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_attribute },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_EntryInformationItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ EntryInformationItem_choice, hf_index, ett_dap_EntryInformationItem,
+ NULL);
+
+ return offset;
+}
+static int dissect_entry_information_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_EntryInformationItem(FALSE, tvb, offset, pinfo, tree, hf_dap_entry_information_item);
+}
+
+
+static const ber_sequence_t T_information_set_of[1] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_entry_information_item },
+};
+
+static int
+dissect_dap_T_information(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_information_set_of, hf_index, ett_dap_T_information);
+
+ return offset;
+}
+static int dissect_entry_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_information(FALSE, tvb, offset, pinfo, tree, hf_dap_entry_information);
+}
+
+
+static const ber_sequence_t EntryInformation_sequence[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_name },
+ { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_fromEntry },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_entry_information },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_incompleteEntry },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_partialName },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_derivedEntry },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_EntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ EntryInformation_sequence, hf_index, ett_dap_EntryInformation);
+
+ return offset;
+}
+static int dissect_entry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_EntryInformation(FALSE, tvb, offset, pinfo, tree, hf_dap_entry);
+}
+static int dissect_entries_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_EntryInformation(FALSE, tvb, offset, pinfo, tree, hf_dap_entries_item);
+}
+
+
+static const value_string dap_T_information_item_vals[] = {
+ { 0, "attributeType" },
+ { 1, "attribute" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_information_item_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_attribute },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_information_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_information_item_choice, hf_index, ett_dap_T_information_item,
+ NULL);
+
+ return offset;
+}
+static int dissect_information_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_information_item(FALSE, tvb, offset, pinfo, tree, hf_dap_information_item);
+}
+
+
+static const ber_sequence_t FamilyInformation_sequence_of[1] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_information_item },
+};
+
+static int
+dissect_dap_FamilyInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ FamilyInformation_sequence_of, hf_index, ett_dap_FamilyInformation);
+
+ return offset;
+}
+static int dissect_family_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_FamilyInformation(FALSE, tvb, offset, pinfo, tree, hf_dap_family_information);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_FamilyEntries_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_family_info_item },
+};
+
+static int
+dissect_dap_SEQUENCE_OF_FamilyEntries(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_FamilyEntries_sequence_of, hf_index, ett_dap_SEQUENCE_OF_FamilyEntries);
+
+ return offset;
+}
+static int dissect_family_info(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SEQUENCE_OF_FamilyEntries(FALSE, tvb, offset, pinfo, tree, hf_dap_family_info);
+}
+
+
+static const ber_sequence_t FamilyEntry_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_rdn },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_family_information },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_family_info },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_FamilyEntry(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ FamilyEntry_sequence, hf_index, ett_dap_FamilyEntry);
+
+ return offset;
+}
+static int dissect_familyEntries_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_FamilyEntry(FALSE, tvb, offset, pinfo, tree, hf_dap_familyEntries_item);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_FamilyEntry_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_familyEntries_item },
+};
+
+static int
+dissect_dap_SEQUENCE_OF_FamilyEntry(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_FamilyEntry_sequence_of, hf_index, ett_dap_SEQUENCE_OF_FamilyEntry);
+
+ return offset;
+}
+static int dissect_familyEntries(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SEQUENCE_OF_FamilyEntry(FALSE, tvb, offset, pinfo, tree, hf_dap_familyEntries);
+}
+
+
+static const ber_sequence_t FamilyEntries_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_family_class },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_familyEntries },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_FamilyEntries(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ FamilyEntries_sequence, hf_index, ett_dap_FamilyEntries);
+
+ return offset;
+}
+
+
+
+static int
+dissect_dap_T_initial(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ proto_item *it;
+ it = proto_tree_add_item(tree, hf_index, tvb, offset, -1, FALSE);
+ proto_item_append_text(it," XXX: Not yet implemented!");
+
+
+ return offset;
+}
+static int dissect_initial(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_initial(FALSE, tvb, offset, pinfo, tree, hf_dap_initial);
+}
+
+
+
+static int
+dissect_dap_T_any(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ /* XXX: not yet implemented */
+
+
+ return offset;
+}
+static int dissect_any(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_any(FALSE, tvb, offset, pinfo, tree, hf_dap_any);
+}
+
+
+
+static int
+dissect_dap_T_final(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ /* XXX: not yet implemented */
+
+
+ return offset;
+}
+static int dissect_final(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_final(FALSE, tvb, offset, pinfo, tree, hf_dap_final);
+}
+
+
+static const value_string dap_T_strings_item_vals[] = {
+ { 0, "initial" },
+ { 1, "any" },
+ { 2, "final" },
+ { 3, "control" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_strings_item_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_initial },
+ { 1, BER_CLASS_CON, 1, 0, dissect_any },
+ { 2, BER_CLASS_CON, 2, 0, dissect_final },
+ { 3, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_control },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_strings_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_strings_item_choice, hf_index, ett_dap_T_strings_item,
+ NULL);
+
+ return offset;
+}
+static int dissect_strings_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_strings_item(FALSE, tvb, offset, pinfo, tree, hf_dap_strings_item);
+}
+
+
+static const ber_sequence_t T_strings_sequence_of[1] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_strings_item },
+};
+
+static int
+dissect_dap_T_strings(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_strings_sequence_of, hf_index, ett_dap_T_strings);
+
+ return offset;
+}
+static int dissect_strings(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_strings(FALSE, tvb, offset, pinfo, tree, hf_dap_strings);
+}
+
+
+static const ber_sequence_t T_substrings_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_sunstringType },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_strings },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_substrings(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_substrings_sequence, hf_index, ett_dap_T_substrings);
+
+ return offset;
+}
+static int dissect_substrings(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_substrings(FALSE, tvb, offset, pinfo, tree, hf_dap_substrings);
+}
+
+
+static const ber_sequence_t T_matchingRule_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_matchingRule_item },
+};
+
+static int
+dissect_dap_T_matchingRule(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_matchingRule_set_of, hf_index, ett_dap_T_matchingRule);
+
+ return offset;
+}
+static int dissect_matchingRule(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_matchingRule(FALSE, tvb, offset, pinfo, tree, hf_dap_matchingRule);
+}
+
+
+
+static int
+dissect_dap_T_matchValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ /* XXX: not yet implemented */
+
+
+ return offset;
+}
+static int dissect_matchValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_matchValue(FALSE, tvb, offset, pinfo, tree, hf_dap_matchValue);
+}
+
+
+static const ber_sequence_t MatchingRuleAssertion_sequence[] = {
+ { BER_CLASS_CON, 1, 0, dissect_matchingRule },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_type },
+ { BER_CLASS_CON, 3, 0, dissect_matchValue },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dnAttributes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_MatchingRuleAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ MatchingRuleAssertion_sequence, hf_index, ett_dap_MatchingRuleAssertion);
+
+ return offset;
+}
+static int dissect_extensibleMatch(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_MatchingRuleAssertion(FALSE, tvb, offset, pinfo, tree, hf_dap_extensibleMatch);
+}
+
+
+static const value_string dap_FilterItem_vals[] = {
+ { 0, "equality" },
+ { 1, "substrings" },
+ { 2, "greaterOrEqual" },
+ { 3, "lessOrEqual" },
+ { 4, "present" },
+ { 5, "approximateMatch" },
+ { 6, "extensibleMatch" },
+ { 7, "contextPresent" },
+ { 0, NULL }
+};
+
+static const ber_choice_t FilterItem_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_equality },
+ { 1, BER_CLASS_CON, 1, 0, dissect_substrings },
+ { 2, BER_CLASS_CON, 2, 0, dissect_greaterOrEqual },
+ { 3, BER_CLASS_CON, 3, 0, dissect_lessOrEqual },
+ { 4, BER_CLASS_CON, 4, 0, dissect_present },
+ { 5, BER_CLASS_CON, 5, 0, dissect_approximateMatch },
+ { 6, BER_CLASS_CON, 6, 0, dissect_extensibleMatch },
+ { 7, BER_CLASS_CON, 7, 0, dissect_contextPresent },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_FilterItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ FilterItem_choice, hf_index, ett_dap_FilterItem,
+ NULL);
+
+ return offset;
+}
+static int dissect_filter_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_FilterItem(FALSE, tvb, offset, pinfo, tree, hf_dap_filter_item);
+}
+
+
+static const ber_sequence_t SetOfFilter_set_of[1] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_SetOfFilter_item },
+};
+
+static int
+dissect_dap_SetOfFilter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SetOfFilter_set_of, hf_index, ett_dap_SetOfFilter);
+
+ return offset;
+}
+static int dissect_and(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SetOfFilter(FALSE, tvb, offset, pinfo, tree, hf_dap_and);
+}
+static int dissect_or(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SetOfFilter(FALSE, tvb, offset, pinfo, tree, hf_dap_or);
+}
+
+
+static const value_string dap_Filter_vals[] = {
+ { 0, "item" },
+ { 1, "and" },
+ { 2, "or" },
+ { 3, "not" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Filter_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_filter_item },
+ { 1, BER_CLASS_CON, 1, 0, dissect_and },
+ { 2, BER_CLASS_CON, 2, 0, dissect_or },
+ { 3, BER_CLASS_CON, 3, 0, dissect_not },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Filter_choice, hf_index, ett_dap_Filter,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SortKey_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_orderingRule },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_SortKey(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ SortKey_sequence, hf_index, ett_dap_SortKey);
+
+ return offset;
+}
+static int dissect_sortKeys_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SortKey(FALSE, tvb, offset, pinfo, tree, hf_dap_sortKeys_item);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_SortKey_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_sortKeys_item },
+};
+
+static int
+dissect_dap_SEQUENCE_OF_SortKey(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_SortKey_sequence_of, hf_index, ett_dap_SEQUENCE_OF_SortKey);
+
+ return offset;
+}
+static int dissect_sortKeys(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SEQUENCE_OF_SortKey(FALSE, tvb, offset, pinfo, tree, hf_dap_sortKeys);
+}
+
+
+static const ber_sequence_t T_newRequest_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pageSize },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sortKeys },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_reverse },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_unmerged },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_newRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_newRequest_sequence, hf_index, ett_dap_T_newRequest);
+
+ return offset;
+}
+static int dissect_newRequest(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_newRequest(FALSE, tvb, offset, pinfo, tree, hf_dap_newRequest);
+}
+
+
+
+static int
+dissect_dap_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ tvbuff_t *out_tvb;
+ int i;
+ int len;
+ proto_item *oct_item;
+
+ offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &out_tvb);
+
+
+ len = tvb_length(out_tvb);
+ /* now see if we can add a string representation */
+ for(i=0; i<len; i++)
+ if(!g_ascii_isprint(tvb_get_guint8(out_tvb, i)))
+ break;
+
+ if(i == len) {
+ if((oct_item = get_ber_last_created_item())) {
+
+ proto_item_append_text(oct_item," (");
+ for(i=0; i<len; i++)
+ proto_item_append_text(oct_item,"%c",tvb_get_guint8(out_tvb,i));
+ proto_item_append_text(oct_item,")");
+ }
+ }
+
+
+ return offset;
+}
+static int dissect_queryReference(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_dap_queryReference);
+}
+static int dissect_unprotected(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_dap_unprotected);
+}
+static int dissect_protectedPassword(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_dap_protectedPassword);
+}
+
+
+static const value_string dap_PagedResultsRequest_vals[] = {
+ { 0, "newRequest" },
+ { 1, "queryReference" },
+ { 0, NULL }
+};
+
+static const ber_choice_t PagedResultsRequest_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_newRequest },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_queryReference },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_PagedResultsRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ PagedResultsRequest_choice, hf_index, ett_dap_PagedResultsRequest,
+ NULL);
+
+ return offset;
+}
+static int dissect_pagedResults(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_PagedResultsRequest(FALSE, tvb, offset, pinfo, tree, hf_dap_pagedResults);
+}
+
+
+static const value_string dap_T_time1_vals[] = {
+ { 0, "utc" },
+ { 1, "gt" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_time1_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_utc },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_gt },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_time1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_time1_choice, hf_index, ett_dap_T_time1,
+ NULL);
+
+ return offset;
+}
+static int dissect_time1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_time1(FALSE, tvb, offset, pinfo, tree, hf_dap_time1);
+}
+
+
+static const value_string dap_T_time2_vals[] = {
+ { 0, "utc" },
+ { 1, "gt" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_time2_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_utc },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_gt },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_time2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_time2_choice, hf_index, ett_dap_T_time2,
+ NULL);
+
+ return offset;
+}
+static int dissect_time2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_time2(FALSE, tvb, offset, pinfo, tree, hf_dap_time2);
+}
+
+
+static const ber_sequence_t T_validity_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_time1 },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_time2 },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_random1 },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_random2 },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_validity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ T_validity_set, hf_index, ett_dap_T_validity);
+
+ return offset;
+}
+static int dissect_validity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_validity(FALSE, tvb, offset, pinfo, tree, hf_dap_validity);
+}
+
+
+static const ber_sequence_t T_protected_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_protectedPassword },
+ { 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 }
+};
+
+static int
+dissect_dap_T_protected(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_protected_sequence, hf_index, ett_dap_T_protected);
+
+ return offset;
+}
+static int dissect_protected(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_protected(FALSE, tvb, offset, pinfo, tree, hf_dap_protected);
+}
+
+
+static const value_string dap_T_password_vals[] = {
+ { 0, "unprotected" },
+ { 1, "protected" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_password_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_unprotected },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protected },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_password(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_password_choice, hf_index, ett_dap_T_password,
+ NULL);
+
+ return offset;
+}
+static int dissect_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_password(FALSE, tvb, offset, pinfo, tree, hf_dap_password);
+}
+
+
+static const ber_sequence_t SimpleCredentials_sequence[] = {
+ { BER_CLASS_CON, 0, 0, dissect_distinguished_name },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_validity },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_password },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_SimpleCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ SimpleCredentials_sequence, hf_index, ett_dap_SimpleCredentials);
+
+
+ if(check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", x509if_get_last_dn());
+
+
+ return offset;
+}
+static int dissect_simple(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SimpleCredentials(FALSE, tvb, offset, pinfo, tree, hf_dap_simple);
+}
+
+
+
+static int
+dissect_dap_T_bind_token(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ /* XXX: not yet implemented */
+
+
+ return offset;
+}
+static int dissect_bind_token(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_bind_token(FALSE, tvb, offset, pinfo, tree, hf_dap_bind_token);
+}
+
+
+static const ber_sequence_t StrongCredentials_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_certification_path },
+ { BER_CLASS_CON, 1, 0, dissect_bind_token },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_distinguished_name },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_attributeCertificationPath },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_StrongCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ StrongCredentials_set, hf_index, ett_dap_StrongCredentials);
+
+ return offset;
+}
+static int dissect_strong(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_StrongCredentials(FALSE, tvb, offset, pinfo, tree, hf_dap_strong);
+}
+
+
+
+static int
+dissect_dap_T_req(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ /* XXX: not yet implemented */
+
+
+ return offset;
+}
+static int dissect_req(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_req(FALSE, tvb, offset, pinfo, tree, hf_dap_req);
+}
+
+
+
+static int
+dissect_dap_T_rep(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ /* XXX: not yet implemented */
+
+
+ return offset;
+}
+static int dissect_rep(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_rep(FALSE, tvb, offset, pinfo, tree, hf_dap_rep);
+}
+
+
+static const value_string dap_SpkmCredentials_vals[] = {
+ { 0, "req" },
+ { 1, "rep" },
+ { 0, NULL }
+};
+
+static const ber_choice_t SpkmCredentials_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_req },
+ { 1, BER_CLASS_CON, 1, 0, dissect_rep },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_SpkmCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ SpkmCredentials_choice, hf_index, ett_dap_SpkmCredentials,
+ NULL);
+
+ return offset;
+}
+static int dissect_spkm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SpkmCredentials(FALSE, tvb, offset, pinfo, tree, hf_dap_spkm);
+}
+
+
+static const value_string dap_Credentials_vals[] = {
+ { 0, "simple" },
+ { 1, "strong" },
+ { 2, "externalProcedure" },
+ { 3, "spkm" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Credentials_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_simple },
+ { 1, BER_CLASS_CON, 1, 0, dissect_strong },
+ { 2, BER_CLASS_CON, 2, 0, dissect_externalProcedure },
+ { 3, BER_CLASS_CON, 3, 0, dissect_spkm },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_Credentials(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Credentials_choice, hf_index, ett_dap_Credentials,
+ NULL);
+
+ return offset;
+}
+static int dissect_credentials(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Credentials(FALSE, tvb, offset, pinfo, tree, hf_dap_credentials);
+}
+
+
+static const asn_namedbit Versions_bits[] = {
+ { 0, &hf_dap_Versions_v1, -1, -1, "v1", NULL },
+ { 1, &hf_dap_Versions_v2, -1, -1, "v2", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_dap_Versions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ Versions_bits, hf_index, ett_dap_Versions,
+ NULL);
+
+ return offset;
+}
+static int dissect_versions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_Versions(FALSE, tvb, offset, pinfo, tree, hf_dap_versions);
+}
+
+
+static const ber_sequence_t DirectoryBindArgument_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_credentials },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_versions },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_DirectoryBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+
+ guint32 len;
+
+ /* check and see if this is an empty set */
+ dissect_ber_length(pinfo, tree, tvb, offset+1, &len, NULL);
+
+ if(len == 0) {
+ /* its an empty set - i.e anonymous (assuming version is DEFAULTed) */
+ proto_tree_add_text(tree, tvb, offset, -1,"Anonymous");
+
+ if(check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, " anonymous");
+
+ }
+ /* do the default thing */
+
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ DirectoryBindArgument_set, hf_index, ett_dap_DirectoryBindArgument);
+
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_dap_DirectoryBindResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+static const value_string dap_ServiceProblem_vals[] = {
+ { 1, "busy" },
+ { 2, "unavailable" },
+ { 3, "unwillingToPerform" },
+ { 4, "chainingRequired" },
+ { 5, "unableToProceed" },
+ { 6, "invalidReference" },
+ { 7, "timeLimitExceeded" },
+ { 8, "administrativeLimitExceeded" },
+ { 9, "loopDetected" },
+ { 10, "unavailableCriticalExtension" },
+ { 11, "outOfScope" },
+ { 12, "ditError" },
+ { 13, "invalidQueryReference" },
+ { 14, "requestedServiceNotAvailable" },
+ { 15, "relaxationNotSupported" },
+ { 16, "unsupportedMatchingUse" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_ServiceProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 problem;
+
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &problem);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, dap_ServiceProblem_vals, "ServiceProblem(%d)"));
+ }
+
+
+ return offset;
+}
+static int dissect_serviceProblem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ServiceProblem(FALSE, tvb, offset, pinfo, tree, hf_dap_serviceProblem);
+}
+static int dissect_service_error_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ServiceProblem(FALSE, tvb, offset, pinfo, tree, hf_dap_service_error_problem);
+}
+
+
+static const value_string dap_SecurityProblem_vals[] = {
+ { 1, "inappropriateAuthentication" },
+ { 2, "invalidCredentials" },
+ { 3, "insufficientAccessRights" },
+ { 4, "invalidSignature" },
+ { 5, "protectionRequired" },
+ { 6, "noInformation" },
+ { 7, "blockedCredentials" },
+ { 8, "invalidQOPMatch" },
+ { 9, "spkmError" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_SecurityProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 problem;
+
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &problem);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, dap_SecurityProblem_vals, "SecurityProblem(%d)"));
+ }
+
+
+ return offset;
+}
+static int dissect_securityProblem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SecurityProblem(FALSE, tvb, offset, pinfo, tree, hf_dap_securityProblem);
+}
+static int dissect_security_error_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SecurityProblem(FALSE, tvb, offset, pinfo, tree, hf_dap_security_error_problem);
+}
+
+
+static const value_string dap_T_error_vals[] = {
+ { 1, "serviceError" },
+ { 2, "securityError" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_error_choice[] = {
+ { 1, BER_CLASS_CON, 1, 0, dissect_serviceProblem },
+ { 2, BER_CLASS_CON, 2, 0, dissect_securityProblem },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_error(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_error_choice, hf_index, ett_dap_T_error,
+ NULL);
+
+ return offset;
+}
+static int dissect_error(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_error(FALSE, tvb, offset, pinfo, tree, hf_dap_error);
+}
+
+
+static const ber_sequence_t DirectoryBindErrorData_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_versions },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_error },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_DirectoryBindErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ DirectoryBindErrorData_set, hf_index, ett_dap_DirectoryBindErrorData);
+
+ return offset;
+}
+static int dissect_unsignedDirectoryBindError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_DirectoryBindErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedDirectoryBindError);
+}
+static int dissect_directoryBindError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_DirectoryBindErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_directoryBindError);
+}
+
+
+static const ber_sequence_t T_signedDirectoryBindError_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_directoryBindError },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedDirectoryBindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedDirectoryBindError_sequence, hf_index, ett_dap_T_signedDirectoryBindError);
+
+ return offset;
+}
+static int dissect_signedDirectoryBindError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedDirectoryBindError(FALSE, tvb, offset, pinfo, tree, hf_dap_signedDirectoryBindError);
+}
+
+
+const value_string dap_DirectoryBindError_vals[] = {
+ { 0, "unsignedDirectoryBindError" },
+ { 1, "signedDirectoryBindError" },
+ { 0, NULL }
+};
+
+static const ber_choice_t DirectoryBindError_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedDirectoryBindError },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedDirectoryBindError },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_DirectoryBindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ DirectoryBindError_choice, hf_index, ett_dap_DirectoryBindError,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t ReadArgumentData_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_object },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_selection },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_modifyRightsRequest },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_serviceControls },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_securityParameters },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_requestor },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_operationProgress },
+ { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
+ { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_criticalExtensions },
+ { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_referenceType },
+ { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_entryOnly },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
+ { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_operationContexts },
+ { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_familyGrouping },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_ReadArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ReadArgumentData_set, hf_index, ett_dap_ReadArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedReadArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ReadArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedReadArgument);
+}
+static int dissect_readArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ReadArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_readArgument);
+}
+
+
+static const ber_sequence_t T_signedReadArgument_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_readArgument },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedReadArgument_sequence, hf_index, ett_dap_T_signedReadArgument);
+
+ return offset;
+}
+static int dissect_signedReadArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedReadArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_signedReadArgument);
+}
+
+
+const value_string dap_ReadArgument_vals[] = {
+ { 0, "unsignedReadArgument" },
+ { 1, "signedReadArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ReadArgument_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedReadArgument },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedReadArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ReadArgument_choice, hf_index, ett_dap_ReadArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string dap_T_item_vals[] = {
+ { 0, "entry" },
+ { 1, "attribute" },
+ { 2, "value" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_item_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_item_entry },
+ { 1, BER_CLASS_CON, 1, 0, dissect_attribute_type },
+ { 2, BER_CLASS_CON, 2, 0, dissect_value_assertion },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_item_choice, hf_index, ett_dap_T_item,
+ NULL);
+
+ return offset;
+}
+static int dissect_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_item(FALSE, tvb, offset, pinfo, tree, hf_dap_item);
+}
+
+
+static const asn_namedbit T_permission_bits[] = {
+ { 0, &hf_dap_T_permission_add, -1, -1, "add", NULL },
+ { 1, &hf_dap_T_permission_remove, -1, -1, "remove", NULL },
+ { 2, &hf_dap_T_permission_rename, -1, -1, "rename", NULL },
+ { 3, &hf_dap_T_permission_move, -1, -1, "move", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_dap_T_permission(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ T_permission_bits, hf_index, ett_dap_T_permission,
+ NULL);
+
+ return offset;
+}
+static int dissect_permission(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_permission(FALSE, tvb, offset, pinfo, tree, hf_dap_permission);
+}
+
+
+static const ber_sequence_t ModifyRights_item_sequence[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_item },
+ { BER_CLASS_CON, 3, 0, dissect_permission },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_ModifyRights_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ ModifyRights_item_sequence, hf_index, ett_dap_ModifyRights_item);
+
+ return offset;
+}
+static int dissect_ModifyRights_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyRights_item(FALSE, tvb, offset, pinfo, tree, hf_dap_ModifyRights_item);
+}
+
+
+static const ber_sequence_t ModifyRights_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ModifyRights_item },
+};
+
+static int
+dissect_dap_ModifyRights(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ ModifyRights_set_of, hf_index, ett_dap_ModifyRights);
+
+ return offset;
+}
+static int dissect_modifyRights(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyRights(FALSE, tvb, offset, pinfo, tree, hf_dap_modifyRights);
+}
+
+
+static const ber_sequence_t ReadResultData_set[] = {
+ { BER_CLASS_CON, 0, 0, dissect_entry },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_modifyRights },
+ { 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 }
+};
+
+static int
+dissect_dap_ReadResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ReadResultData_set, hf_index, ett_dap_ReadResultData);
+
+ return offset;
+}
+static int dissect_unsignedReadResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ReadResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedReadResult);
+}
+static int dissect_readResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ReadResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_readResult);
+}
+
+
+static const ber_sequence_t T_signedReadResult_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_readResult },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedReadResult_sequence, hf_index, ett_dap_T_signedReadResult);
+
+ return offset;
+}
+static int dissect_signedReadResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedReadResult(FALSE, tvb, offset, pinfo, tree, hf_dap_signedReadResult);
+}
+
+
+const value_string dap_ReadResult_vals[] = {
+ { 0, "unsignedReadResult" },
+ { 1, "signedReadResult" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ReadResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedReadResult },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedReadResult },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ReadResult_choice, hf_index, ett_dap_ReadResult,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t CompareArgumentData_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_object },
+ { BER_CLASS_CON, 1, 0, dissect_purported },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_serviceControls },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_securityParameters },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_requestor },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_operationProgress },
+ { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
+ { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_criticalExtensions },
+ { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_referenceType },
+ { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_entryOnly },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
+ { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_operationContexts },
+ { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_familyGrouping },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_CompareArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ CompareArgumentData_set, hf_index, ett_dap_CompareArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedCompareArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_CompareArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedCompareArgument);
+}
+static int dissect_compareArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_CompareArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_compareArgument);
+}
+
+
+static const ber_sequence_t T_signedCompareArgument_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_compareArgument },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedCompareArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedCompareArgument_sequence, hf_index, ett_dap_T_signedCompareArgument);
+
+ return offset;
+}
+static int dissect_signedCompareArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedCompareArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_signedCompareArgument);
+}
+
+
+const value_string dap_CompareArgument_vals[] = {
+ { 0, "unsignedCompareArgument" },
+ { 1, "signedCompareArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t CompareArgument_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedCompareArgument },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedCompareArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_CompareArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ CompareArgument_choice, hf_index, ett_dap_CompareArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t CompareResultData_set[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_name },
+ { BER_CLASS_CON, 0, 0, dissect_matched },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_fromEntry },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_matchedSubtype },
+ { 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 }
+};
+
+static int
+dissect_dap_CompareResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ CompareResultData_set, hf_index, ett_dap_CompareResultData);
+
+ return offset;
+}
+static int dissect_unsignedCompareResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_CompareResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedCompareResult);
+}
+static int dissect_compareResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_CompareResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_compareResult);
+}
+
+
+static const ber_sequence_t T_signedCompareResult_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_compareResult },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedCompareResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedCompareResult_sequence, hf_index, ett_dap_T_signedCompareResult);
+
+ return offset;
+}
+static int dissect_signedCompareResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedCompareResult(FALSE, tvb, offset, pinfo, tree, hf_dap_signedCompareResult);
+}
+
+
+const value_string dap_CompareResult_vals[] = {
+ { 0, "unsignedCompareResult" },
+ { 1, "signedCompareResult" },
+ { 0, NULL }
+};
+
+static const ber_choice_t CompareResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedCompareResult },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedCompareResult },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_CompareResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ CompareResult_choice, hf_index, ett_dap_CompareResult,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t AbandonArgumentData_sequence[] = {
+ { BER_CLASS_CON, 0, 0, dissect_invokeID },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_AbandonArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ AbandonArgumentData_sequence, hf_index, ett_dap_AbandonArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedAbandonArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedAbandonArgument);
+}
+static int dissect_abandonArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_abandonArgument);
+}
+
+
+static const ber_sequence_t T_signedAbandonArgument_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_abandonArgument },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedAbandonArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedAbandonArgument_sequence, hf_index, ett_dap_T_signedAbandonArgument);
+
+ return offset;
+}
+static int dissect_signedAbandonArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedAbandonArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_signedAbandonArgument);
+}
+
+
+const value_string dap_AbandonArgument_vals[] = {
+ { 0, "unsignedAbandonArgument" },
+ { 1, "signedAbandonArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t AbandonArgument_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedAbandonArgument },
+ { 1, BER_CLASS_CON, 0, 0, dissect_signedAbandonArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_AbandonArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AbandonArgument_choice, hf_index, ett_dap_AbandonArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t AbandonResultData_sequence[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_invokeID },
+ { 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 }
+};
+
+static int
+dissect_dap_AbandonResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ AbandonResultData_sequence, hf_index, ett_dap_AbandonResultData);
+
+ return offset;
+}
+static int dissect_unsignedAbandonResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedAbandonResult);
+}
+static int dissect_abandonResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_abandonResult);
+}
+
+
+static const ber_sequence_t T_signedAbandonResult_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_abandonResult },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedAbandonResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedAbandonResult_sequence, hf_index, ett_dap_T_signedAbandonResult);
+
+ return offset;
+}
+static int dissect_signedAbandonResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedAbandonResult(FALSE, tvb, offset, pinfo, tree, hf_dap_signedAbandonResult);
+}
+
+
+static const value_string dap_AbandonInformation_vals[] = {
+ { 0, "unsignedAbandonResult" },
+ { 1, "signedAbandonResult" },
+ { 0, NULL }
+};
+
+static const ber_choice_t AbandonInformation_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedAbandonResult },
+ { 1, BER_CLASS_CON, 0, 0, dissect_signedAbandonResult },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_AbandonInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AbandonInformation_choice, hf_index, ett_dap_AbandonInformation,
+ NULL);
+
+ return offset;
+}
+static int dissect_abandon_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonInformation(FALSE, tvb, offset, pinfo, tree, hf_dap_abandon_information);
+}
+
+
+const value_string dap_AbandonResult_vals[] = {
+ { 0, "null" },
+ { 1, "information" },
+ { 0, NULL }
+};
+
+static const ber_choice_t AbandonResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
+ { 1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_abandon_information },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_AbandonResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AbandonResult_choice, hf_index, ett_dap_AbandonResult,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t ListArgumentData_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_object },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_pagedResults },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_listFamily },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_serviceControls },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_securityParameters },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_requestor },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_operationProgress },
+ { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
+ { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_criticalExtensions },
+ { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_referenceType },
+ { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_entryOnly },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
+ { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_operationContexts },
+ { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_familyGrouping },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_ListArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ListArgumentData_set, hf_index, ett_dap_ListArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedListArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ListArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedListArgument);
+}
+static int dissect_listArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ListArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_listArgument);
+}
+
+
+static const ber_sequence_t T_signedListArgument_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_listArgument },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedListArgument_sequence, hf_index, ett_dap_T_signedListArgument);
+
+ return offset;
+}
+static int dissect_signedListArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedListArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_signedListArgument);
+}
+
+
+const value_string dap_ListArgument_vals[] = {
+ { 0, "unsignedListArgument" },
+ { 1, "signedListArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ListArgument_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedListArgument },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedListArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ListArgument_choice, hf_index, ett_dap_ListArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t T_subordinates_item_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_rdn },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_aliasEntry },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_fromEntry },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_subordinates_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_subordinates_item_sequence, hf_index, ett_dap_T_subordinates_item);
+
+ return offset;
+}
+static int dissect_subordinates_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_subordinates_item(FALSE, tvb, offset, pinfo, tree, hf_dap_subordinates_item);
+}
+
+
+static const ber_sequence_t T_subordinates_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subordinates_item },
+};
+
+static int
+dissect_dap_T_subordinates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_subordinates_set_of, hf_index, ett_dap_T_subordinates);
+
+ return offset;
+}
+static int dissect_subordinates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_subordinates(FALSE, tvb, offset, pinfo, tree, hf_dap_subordinates);
+}
+
+
+static const value_string dap_LimitProblem_vals[] = {
+ { 0, "timeLimitExceeded" },
+ { 1, "sizeLimitExceeded" },
+ { 2, "administrativeLimitExceeded" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_LimitProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 problem;
+
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &problem);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, dap_LimitProblem_vals, "LimitProblem(%d)"));
+ }
+
+
+ return offset;
+}
+static int dissect_limitProblem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_LimitProblem(FALSE, tvb, offset, pinfo, tree, hf_dap_limitProblem);
+}
+
+
+static const ber_sequence_t SET_OF_ContinuationReference_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unexplored_item },
+};
+
+static int
+dissect_dap_SET_OF_ContinuationReference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_ContinuationReference_set_of, hf_index, ett_dap_SET_OF_ContinuationReference);
+
+ return offset;
+}
+static int dissect_unexplored(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SET_OF_ContinuationReference(FALSE, tvb, offset, pinfo, tree, hf_dap_unexplored);
+}
+
+
+static const ber_sequence_t T_unknownErrors_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_unknownErrors_item },
+};
+
+static int
+dissect_dap_T_unknownErrors(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_unknownErrors_set_of, hf_index, ett_dap_T_unknownErrors);
+
+ return offset;
+}
+static int dissect_unknownErrors(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_unknownErrors(FALSE, tvb, offset, pinfo, tree, hf_dap_unknownErrors);
+}
+
+
+static const value_string dap_T_entryCount_vals[] = {
+ { 7, "bestEstimate" },
+ { 8, "lowEstimate" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_entryCount_choice[] = {
+ { 7, BER_CLASS_CON, 7, 0, dissect_bestEstimate },
+ { 8, BER_CLASS_CON, 8, 0, dissect_lowEstimate },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_entryCount(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_entryCount_choice, hf_index, ett_dap_T_entryCount,
+ NULL);
+
+ return offset;
+}
+static int dissect_entryCount(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_entryCount(FALSE, tvb, offset, pinfo, tree, hf_dap_entryCount);
+}
+
+
+static const ber_sequence_t PartialOutcomeQualifier_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_limitProblem },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_unexplored },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_unavailableCriticalExtensions },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_unknownErrors },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_queryReference },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_overspecFilter },
+ { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_notification },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_entryCount },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_PartialOutcomeQualifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ PartialOutcomeQualifier_set, hf_index, ett_dap_PartialOutcomeQualifier);
+
+ return offset;
+}
+static int dissect_partialOutcomeQualifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_PartialOutcomeQualifier(FALSE, tvb, offset, pinfo, tree, hf_dap_partialOutcomeQualifier);
+}
+
+
+static const ber_sequence_t T_listInfo_set[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_name },
+ { BER_CLASS_CON, 1, 0, dissect_subordinates },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_partialOutcomeQualifier },
+ { 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 }
+};
+
+static int
+dissect_dap_T_listInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ T_listInfo_set, hf_index, ett_dap_T_listInfo);
+
+ return offset;
+}
+static int dissect_listInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_listInfo(FALSE, tvb, offset, pinfo, tree, hf_dap_listInfo);
+}
+
+
+static const ber_sequence_t T_signedListResult_sequence[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_listResult },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedListResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedListResult_sequence, hf_index, ett_dap_T_signedListResult);
+
+ return offset;
+}
+static int dissect_signedListResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedListResult(FALSE, tvb, offset, pinfo, tree, hf_dap_signedListResult);
+}
+
+
+const value_string dap_ListResult_vals[] = {
+ { 0, "unsignedListResult" },
+ { 1, "signedListResult" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ListResult_choice[] = {
+ { 0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_unsignedListResult },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedListResult },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ListResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ListResult_choice, hf_index, ett_dap_ListResult,
+ NULL);
+
+ return offset;
+}
+static int dissect_uncorrelatedListInfo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ListResult(FALSE, tvb, offset, pinfo, tree, hf_dap_uncorrelatedListInfo_item);
+}
+
+
+static const ber_sequence_t SET_OF_ListResult_set_of[1] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_uncorrelatedListInfo_item },
+};
+
+static int
+dissect_dap_SET_OF_ListResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_ListResult_set_of, hf_index, ett_dap_SET_OF_ListResult);
+
+ return offset;
+}
+static int dissect_uncorrelatedListInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SET_OF_ListResult(FALSE, tvb, offset, pinfo, tree, hf_dap_uncorrelatedListInfo);
+}
+
+
+static const value_string dap_ListResultData_vals[] = {
+ { 0, "listInfo" },
+ { 1, "uncorrelatedListInfo" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ListResultData_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_listInfo },
+ { 1, BER_CLASS_CON, 0, 0, dissect_uncorrelatedListInfo },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_ListResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ListResultData_choice, hf_index, ett_dap_ListResultData,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string dap_T_subset_vals[] = {
+ { 0, "baseObject" },
+ { 1, "oneLevel" },
+ { 2, "wholeSubtree" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_T_subset(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 subset;
+
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &subset);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(subset, dap_T_subset_vals, "Subset(%d)"));
+ }
+
+
+
+ return offset;
+}
+static int dissect_subset(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_subset(FALSE, tvb, offset, pinfo, tree, hf_dap_subset);
+}
+
+
+static const asn_namedbit HierarchySelections_bits[] = {
+ { 0, &hf_dap_HierarchySelections_self, -1, -1, "self", NULL },
+ { 1, &hf_dap_HierarchySelections_children, -1, -1, "children", NULL },
+ { 2, &hf_dap_HierarchySelections_parent, -1, -1, "parent", NULL },
+ { 3, &hf_dap_HierarchySelections_hierarchy, -1, -1, "hierarchy", NULL },
+ { 4, &hf_dap_HierarchySelections_top, -1, -1, "top", NULL },
+ { 5, &hf_dap_HierarchySelections_subtree, -1, -1, "subtree", NULL },
+ { 6, &hf_dap_HierarchySelections_siblings, -1, -1, "siblings", NULL },
+ { 7, &hf_dap_HierarchySelections_siblingChildren, -1, -1, "siblingChildren", NULL },
+ { 8, &hf_dap_HierarchySelections_siblingSubtree, -1, -1, "siblingSubtree", NULL },
+ { 9, &hf_dap_HierarchySelections_all, -1, -1, "all", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_dap_HierarchySelections(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ HierarchySelections_bits, hf_index, ett_dap_HierarchySelections,
+ NULL);
+
+ return offset;
+}
+static int dissect_hierarchySelections(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_HierarchySelections(FALSE, tvb, offset, pinfo, tree, hf_dap_hierarchySelections);
+}
+
+
+static const asn_namedbit SearchControlOptions_bits[] = {
+ { 0, &hf_dap_SearchControlOptions_searchAliases, -1, -1, "searchAliases", NULL },
+ { 1, &hf_dap_SearchControlOptions_matchedValuesOnly, -1, -1, "matchedValuesOnly", NULL },
+ { 2, &hf_dap_SearchControlOptions_checkOverspecified, -1, -1, "checkOverspecified", NULL },
+ { 3, &hf_dap_SearchControlOptions_performExactly, -1, -1, "performExactly", NULL },
+ { 4, &hf_dap_SearchControlOptions_includeAllAreas, -1, -1, "includeAllAreas", NULL },
+ { 5, &hf_dap_SearchControlOptions_noSystemRelaxation, -1, -1, "noSystemRelaxation", NULL },
+ { 6, &hf_dap_SearchControlOptions_dnAttribute, -1, -1, "dnAttribute", NULL },
+ { 7, &hf_dap_SearchControlOptions_matchOnResidualName, -1, -1, "matchOnResidualName", NULL },
+ { 8, &hf_dap_SearchControlOptions_entryCount, -1, -1, "entryCount", NULL },
+ { 9, &hf_dap_SearchControlOptions_useSubset, -1, -1, "useSubset", NULL },
+ { 10, &hf_dap_SearchControlOptions_separateFamilyMembers, -1, -1, "separateFamilyMembers", NULL },
+ { 11, &hf_dap_SearchControlOptions_searchFamily, -1, -1, "searchFamily", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_dap_SearchControlOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ SearchControlOptions_bits, hf_index, ett_dap_SearchControlOptions,
+ NULL);
+
+ return offset;
+}
+static int dissect_searchControlOptions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SearchControlOptions(FALSE, tvb, offset, pinfo, tree, hf_dap_searchControlOptions);
+}
+
+
+
+static int
+dissect_dap_TeletexString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_teletexString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_TeletexString(FALSE, tvb, offset, pinfo, tree, hf_dap_teletexString);
+}
+
+
+
+static int
+dissect_dap_PrintableString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_printableString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_dap_printableString);
+}
+
+
+
+static int
+dissect_dap_UniversalString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UniversalString,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_universalString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_UniversalString(FALSE, tvb, offset, pinfo, tree, hf_dap_universalString);
+}
+
+
+
+static int
+dissect_dap_BMPString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_BMPString,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_bmpString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_BMPString(FALSE, tvb, offset, pinfo, tree, hf_dap_bmpString);
+}
+
+
+
+static int
+dissect_dap_UTF8String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_uTF8String(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_UTF8String(FALSE, tvb, offset, pinfo, tree, hf_dap_uTF8String);
+}
+
+
+static const value_string dap_DirectoryString_vals[] = {
+ { 0, "teletexString" },
+ { 1, "printableString" },
+ { 2, "universalString" },
+ { 3, "bmpString" },
+ { 4, "uTF8String" },
+ { 0, NULL }
+};
+
+static const ber_choice_t DirectoryString_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_teletexString },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_printableString },
+ { 2, BER_CLASS_UNI, BER_UNI_TAG_UniversalString, BER_FLAGS_NOOWNTAG, dissect_universalString },
+ { 3, BER_CLASS_UNI, BER_UNI_TAG_BMPString, BER_FLAGS_NOOWNTAG, dissect_bmpString },
+ { 4, BER_CLASS_UNI, BER_UNI_TAG_UTF8String, BER_FLAGS_NOOWNTAG, dissect_uTF8String },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_DirectoryString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ DirectoryString_choice, hf_index, ett_dap_DirectoryString,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_dap_DomainLocalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_DirectoryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_domainLocalID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_DomainLocalID(FALSE, tvb, offset, pinfo, tree, hf_dap_domainLocalID);
+}
+
+
+static const value_string dap_T_joinSubset_vals[] = {
+ { 0, "baseObject" },
+ { 1, "oneLevel" },
+ { 2, "wholeSubtree" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_T_joinSubset(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_joinSubset(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_joinSubset(FALSE, tvb, offset, pinfo, tree, hf_dap_joinSubset);
+}
+
+
+
+static int
+dissect_dap_JoinContextType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+static int dissect_joinContext_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_JoinContextType(FALSE, tvb, offset, pinfo, tree, hf_dap_joinContext_item);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_JoinContextType_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_joinContext_item },
+};
+
+static int
+dissect_dap_SEQUENCE_OF_JoinContextType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_JoinContextType_sequence_of, hf_index, ett_dap_SEQUENCE_OF_JoinContextType);
+
+ return offset;
+}
+static int dissect_joinContext(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SEQUENCE_OF_JoinContextType(FALSE, tvb, offset, pinfo, tree, hf_dap_joinContext);
+}
+
+
+static const ber_sequence_t JoinAttPair_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_baseAtt },
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_joinAtt },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_joinContext },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_JoinAttPair(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ JoinAttPair_sequence, hf_index, ett_dap_JoinAttPair);
+
+ return offset;
+}
+static int dissect_joinAttributes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_JoinAttPair(FALSE, tvb, offset, pinfo, tree, hf_dap_joinAttributes_item);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_JoinAttPair_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_joinAttributes_item },
+};
+
+static int
+dissect_dap_SEQUENCE_OF_JoinAttPair(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_JoinAttPair_sequence_of, hf_index, ett_dap_SEQUENCE_OF_JoinAttPair);
+
+ return offset;
+}
+static int dissect_joinAttributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SEQUENCE_OF_JoinAttPair(FALSE, tvb, offset, pinfo, tree, hf_dap_joinAttributes);
+}
+
+
+static const ber_sequence_t JoinArgument_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_joinBaseObject },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_domainLocalID },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_joinSubset },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_joinFilter },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_joinAttributes },
+ { BER_CLASS_CON, 5, 0, dissect_joinSelection },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_JoinArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ JoinArgument_sequence, hf_index, ett_dap_JoinArgument);
+
+ return offset;
+}
+static int dissect_joinArguments_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_JoinArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_joinArguments_item);
+}
+
+
+static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_JoinArgument_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_joinArguments_item },
+};
+
+static int
+dissect_dap_SEQUENCE_SIZE_1_MAX_OF_JoinArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_SIZE_1_MAX_OF_JoinArgument_sequence_of, hf_index, ett_dap_SEQUENCE_SIZE_1_MAX_OF_JoinArgument);
+
+ return offset;
+}
+static int dissect_joinArguments(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SEQUENCE_SIZE_1_MAX_OF_JoinArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_joinArguments);
+}
+
+
+static const value_string dap_T_joinType_vals[] = {
+ { 0, "innerJoin" },
+ { 1, "leftOuterJoin" },
+ { 2, "fullOuterJoin" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_T_joinType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_joinType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_joinType(FALSE, tvb, offset, pinfo, tree, hf_dap_joinType);
+}
+
+
+static const ber_sequence_t SearchArgumentData_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_baseObject },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_subset },
+ { BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_filter },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_searchAliases },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_selection },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_pagedResults },
+ { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_matchedValuesOnly },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_extendedFilter },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_checkOverspecified },
+ { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_relaxation },
+ { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_extendedArea },
+ { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_hierarchySelections },
+ { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_searchControlOptions },
+ { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_joinArguments },
+ { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_joinType },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_serviceControls },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_securityParameters },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_requestor },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_operationProgress },
+ { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
+ { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_criticalExtensions },
+ { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_referenceType },
+ { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_entryOnly },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
+ { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_operationContexts },
+ { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_familyGrouping },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_SearchArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ SearchArgumentData_set, hf_index, ett_dap_SearchArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedSearchArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SearchArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedSearchArgument);
+}
+static int dissect_searchArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SearchArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_searchArgument);
+}
+
+
+static const ber_sequence_t T_signedSearchArgument_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_searchArgument },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedSearchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedSearchArgument_sequence, hf_index, ett_dap_T_signedSearchArgument);
+
+ return offset;
+}
+static int dissect_signedSearchArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedSearchArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_signedSearchArgument);
+}
+
+
+const value_string dap_SearchArgument_vals[] = {
+ { 0, "unsignedSearchArgument" },
+ { 1, "signedSearchArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t SearchArgument_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedSearchArgument },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedSearchArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_SearchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ SearchArgument_choice, hf_index, ett_dap_SearchArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SET_OF_EntryInformation_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_entries_item },
+};
+
+static int
+dissect_dap_SET_OF_EntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_EntryInformation_set_of, hf_index, ett_dap_SET_OF_EntryInformation);
+
+ return offset;
+}
+static int dissect_entries(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SET_OF_EntryInformation(FALSE, tvb, offset, pinfo, tree, hf_dap_entries);
+}
+
+
+static const ber_sequence_t T_searchInfo_set[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_name },
+ { BER_CLASS_CON, 0, 0, dissect_entries },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_partialOutcomeQualifier },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_altMatching },
+ { 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 }
+};
+
+static int
+dissect_dap_T_searchInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ T_searchInfo_set, hf_index, ett_dap_T_searchInfo);
+
+ return offset;
+}
+static int dissect_searchInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_searchInfo(FALSE, tvb, offset, pinfo, tree, hf_dap_searchInfo);
+}
+
+
+static const ber_sequence_t T_signedSearchResult_sequence[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_searchResult },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedSearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedSearchResult_sequence, hf_index, ett_dap_T_signedSearchResult);
+
+ return offset;
+}
+static int dissect_signedSearchResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedSearchResult(FALSE, tvb, offset, pinfo, tree, hf_dap_signedSearchResult);
+}
+
+
+const value_string dap_SearchResult_vals[] = {
+ { 0, "unsignedSearchResult" },
+ { 1, "signedSearchResult" },
+ { 0, NULL }
+};
+
+static const ber_choice_t SearchResult_choice[] = {
+ { 0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_unsignedSearchResult },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedSearchResult },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_SearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ SearchResult_choice, hf_index, ett_dap_SearchResult,
+ NULL);
+
+ return offset;
+}
+static int dissect_uncorrelatedSearchInfo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SearchResult(FALSE, tvb, offset, pinfo, tree, hf_dap_uncorrelatedSearchInfo_item);
+}
+
+
+static const ber_sequence_t SET_OF_SearchResult_set_of[1] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_uncorrelatedSearchInfo_item },
+};
+
+static int
+dissect_dap_SET_OF_SearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_SearchResult_set_of, hf_index, ett_dap_SET_OF_SearchResult);
+
+ return offset;
+}
+static int dissect_uncorrelatedSearchInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SET_OF_SearchResult(FALSE, tvb, offset, pinfo, tree, hf_dap_uncorrelatedSearchInfo);
+}
+
+
+static const value_string dap_SearchResultData_vals[] = {
+ { 0, "searchInfo" },
+ { 1, "uncorrelatedSearchInfo" },
+ { 0, NULL }
+};
+
+static const ber_choice_t SearchResultData_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_searchInfo },
+ { 1, BER_CLASS_CON, 0, 0, dissect_uncorrelatedSearchInfo },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_SearchResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ SearchResultData_choice, hf_index, ett_dap_SearchResultData,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SET_OF_Attribute_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_entry_item },
+};
+
+static int
+dissect_dap_SET_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_Attribute_set_of, hf_index, ett_dap_SET_OF_Attribute);
+
+ return offset;
+}
+static int dissect_add_entry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SET_OF_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dap_add_entry);
+}
+
+
+static const ber_sequence_t AddEntryArgumentData_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_object },
+ { BER_CLASS_CON, 1, 0, dissect_add_entry },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_targetSystem },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_serviceControls },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_securityParameters },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_requestor },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_operationProgress },
+ { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
+ { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_criticalExtensions },
+ { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_referenceType },
+ { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_entryOnly },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
+ { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_operationContexts },
+ { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_familyGrouping },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_AddEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ AddEntryArgumentData_set, hf_index, ett_dap_AddEntryArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedAddEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AddEntryArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedAddEntryArgument);
+}
+static int dissect_addEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AddEntryArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_addEntryArgument);
+}
+
+
+static const ber_sequence_t T_signedAddEntryArgument_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_addEntryArgument },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedAddEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedAddEntryArgument_sequence, hf_index, ett_dap_T_signedAddEntryArgument);
+
+ return offset;
+}
+static int dissect_signedAddEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedAddEntryArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_signedAddEntryArgument);
+}
+
+
+const value_string dap_AddEntryArgument_vals[] = {
+ { 0, "unsignedAddEntryArgument" },
+ { 1, "signedAddEntryArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t AddEntryArgument_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedAddEntryArgument },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedAddEntryArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_AddEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AddEntryArgument_choice, hf_index, ett_dap_AddEntryArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t AddEntryResultData_sequence[] = {
+ { 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 }
+};
+
+static int
+dissect_dap_AddEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ AddEntryResultData_sequence, hf_index, ett_dap_AddEntryResultData);
+
+ return offset;
+}
+static int dissect_unsignedAddEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AddEntryResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedAddEntryResult);
+}
+static int dissect_addEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AddEntryResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_addEntryResult);
+}
+
+
+static const ber_sequence_t T_signedAddEntryResult_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_addEntryResult },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedAddEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedAddEntryResult_sequence, hf_index, ett_dap_T_signedAddEntryResult);
+
+ return offset;
+}
+static int dissect_signedAddEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedAddEntryResult(FALSE, tvb, offset, pinfo, tree, hf_dap_signedAddEntryResult);
+}
+
+
+static const value_string dap_AddEntryInformation_vals[] = {
+ { 0, "unsignedAddEntryResult" },
+ { 1, "signedAddEntryResult" },
+ { 0, NULL }
+};
+
+static const ber_choice_t AddEntryInformation_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedAddEntryResult },
+ { 1, BER_CLASS_CON, 0, 0, dissect_signedAddEntryResult },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_AddEntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AddEntryInformation_choice, hf_index, ett_dap_AddEntryInformation,
+ NULL);
+
+ return offset;
+}
+static int dissect_add_entry_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AddEntryInformation(FALSE, tvb, offset, pinfo, tree, hf_dap_add_entry_information);
+}
+
+
+const value_string dap_AddEntryResult_vals[] = {
+ { 0, "null" },
+ { 1, "information" },
+ { 0, NULL }
+};
+
+static const ber_choice_t AddEntryResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
+ { 1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_add_entry_information },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_AddEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AddEntryResult_choice, hf_index, ett_dap_AddEntryResult,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t RemoveEntryArgumentData_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_object },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_serviceControls },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_securityParameters },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_requestor },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_operationProgress },
+ { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
+ { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_criticalExtensions },
+ { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_referenceType },
+ { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_entryOnly },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
+ { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_operationContexts },
+ { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_familyGrouping },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_RemoveEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ RemoveEntryArgumentData_set, hf_index, ett_dap_RemoveEntryArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedRemoveEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_RemoveEntryArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedRemoveEntryArgument);
+}
+static int dissect_removeEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_RemoveEntryArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_removeEntryArgument);
+}
+
+
+static const ber_sequence_t T_signedRemoveEntryArgument_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_removeEntryArgument },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedRemoveEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedRemoveEntryArgument_sequence, hf_index, ett_dap_T_signedRemoveEntryArgument);
+
+ return offset;
+}
+static int dissect_signedRemoveEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedRemoveEntryArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_signedRemoveEntryArgument);
+}
+
+
+const value_string dap_RemoveEntryArgument_vals[] = {
+ { 0, "unsignedRemoveEntryArgument" },
+ { 1, "signedRemoveEntryArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t RemoveEntryArgument_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedRemoveEntryArgument },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedRemoveEntryArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_RemoveEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ RemoveEntryArgument_choice, hf_index, ett_dap_RemoveEntryArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t RemoveEntryResultData_sequence[] = {
+ { 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 }
+};
+
+static int
+dissect_dap_RemoveEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ RemoveEntryResultData_sequence, hf_index, ett_dap_RemoveEntryResultData);
+
+ return offset;
+}
+static int dissect_unsignedRemoveEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_RemoveEntryResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedRemoveEntryResult);
+}
+static int dissect_removeEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_RemoveEntryResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_removeEntryResult);
+}
+
+
+static const ber_sequence_t T_signedRemoveEntryResult_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_removeEntryResult },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedRemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedRemoveEntryResult_sequence, hf_index, ett_dap_T_signedRemoveEntryResult);
+
+ return offset;
+}
+static int dissect_signedRemoveEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedRemoveEntryResult(FALSE, tvb, offset, pinfo, tree, hf_dap_signedRemoveEntryResult);
+}
+
+
+static const value_string dap_RemoveEntryInformation_vals[] = {
+ { 0, "unsignedRemoveEntryResult" },
+ { 1, "signedRemoveEntryResult" },
+ { 0, NULL }
+};
+
+static const ber_choice_t RemoveEntryInformation_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedRemoveEntryResult },
+ { 1, BER_CLASS_CON, 0, 0, dissect_signedRemoveEntryResult },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_RemoveEntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ RemoveEntryInformation_choice, hf_index, ett_dap_RemoveEntryInformation,
+ NULL);
+
+ return offset;
+}
+static int dissect_remove_entry_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_RemoveEntryInformation(FALSE, tvb, offset, pinfo, tree, hf_dap_remove_entry_information);
+}
+
+
+const value_string dap_RemoveEntryResult_vals[] = {
+ { 0, "null" },
+ { 1, "information" },
+ { 0, NULL }
+};
+
+static const ber_choice_t RemoveEntryResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
+ { 1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_remove_entry_information },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_RemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ RemoveEntryResult_choice, hf_index, ett_dap_RemoveEntryResult,
+ NULL);
+
+ return offset;
+}
+
+
+const value_string dap_EntryModification_vals[] = {
+ { 0, "addAttribute" },
+ { 1, "removeAttribute" },
+ { 2, "addValues" },
+ { 3, "removeValues" },
+ { 4, "alterValues" },
+ { 5, "resetValue" },
+ { 0, NULL }
+};
+
+static const ber_choice_t EntryModification_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_addAttribute },
+ { 1, BER_CLASS_CON, 1, 0, dissect_removeAttribute },
+ { 2, BER_CLASS_CON, 2, 0, dissect_addValues },
+ { 3, BER_CLASS_CON, 3, 0, dissect_removeValues },
+ { 4, BER_CLASS_CON, 4, 0, dissect_alterValues },
+ { 5, BER_CLASS_CON, 5, 0, dissect_resetValue },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_EntryModification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ EntryModification_choice, hf_index, ett_dap_EntryModification,
+ NULL);
+
+ return offset;
+}
+static int dissect_changes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_EntryModification(FALSE, tvb, offset, pinfo, tree, hf_dap_changes_item);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_EntryModification_sequence_of[1] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_changes_item },
+};
+
+static int
+dissect_dap_SEQUENCE_OF_EntryModification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_EntryModification_sequence_of, hf_index, ett_dap_SEQUENCE_OF_EntryModification);
+
+ return offset;
+}
+static int dissect_changes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SEQUENCE_OF_EntryModification(FALSE, tvb, offset, pinfo, tree, hf_dap_changes);
+}
+
+
+static const ber_sequence_t ModifyEntryArgumentData_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_object },
+ { BER_CLASS_CON, 1, 0, dissect_changes },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_selection },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_serviceControls },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_securityParameters },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_requestor },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_operationProgress },
+ { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
+ { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_criticalExtensions },
+ { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_referenceType },
+ { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_entryOnly },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
+ { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_operationContexts },
+ { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_familyGrouping },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_ModifyEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ModifyEntryArgumentData_set, hf_index, ett_dap_ModifyEntryArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedModifyEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyEntryArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedModifyEntryArgument);
+}
+static int dissect_modifyEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyEntryArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dap_modifyEntryArgument);
+}
+
+
+static const ber_sequence_t T_signedModifyEntryArgument_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_modifyEntryArgument },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedModifyEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedModifyEntryArgument_sequence, hf_index, ett_dap_T_signedModifyEntryArgument);
+
+ return offset;
+}
+static int dissect_signedModifyEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedModifyEntryArgument(FALSE, tvb, offset, pinfo, tree, hf_dap_signedModifyEntryArgument);
+}
+
+
+const value_string dap_ModifyEntryArgument_vals[] = {
+ { 0, "unsignedModifyEntryArgument" },
+ { 1, "signedModifyEntryArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ModifyEntryArgument_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedModifyEntryArgument },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedModifyEntryArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ModifyEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ModifyEntryArgument_choice, hf_index, ett_dap_ModifyEntryArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t ModifyEntryResultData_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_entry },
+ { 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 }
+};
+
+static int
+dissect_dap_ModifyEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ ModifyEntryResultData_sequence, hf_index, ett_dap_ModifyEntryResultData);
+
+ return offset;
+}
+static int dissect_unsignedModifyEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyEntryResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedModifyEntryResult);
+}
+static int dissect_modifyEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyEntryResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_modifyEntryResult);
+}
+
+
+static const ber_sequence_t T_signedModifyEntryResult_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_modifyEntryResult },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedModifyEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedModifyEntryResult_sequence, hf_index, ett_dap_T_signedModifyEntryResult);
+
+ return offset;
+}
+static int dissect_signedModifyEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedModifyEntryResult(FALSE, tvb, offset, pinfo, tree, hf_dap_signedModifyEntryResult);
+}
+
+
+static const value_string dap_ModifyEntryInformation_vals[] = {
+ { 0, "unsignedModifyEntryResult" },
+ { 1, "signedModifyEntryResult" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ModifyEntryInformation_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedModifyEntryResult },
+ { 1, BER_CLASS_CON, 0, 0, dissect_signedModifyEntryResult },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_ModifyEntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ModifyEntryInformation_choice, hf_index, ett_dap_ModifyEntryInformation,
+ NULL);
+
+ return offset;
+}
+static int dissect_modify_entry_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyEntryInformation(FALSE, tvb, offset, pinfo, tree, hf_dap_modify_entry_information);
+}
+
+
+const value_string dap_ModifyEntryResult_vals[] = {
+ { 0, "null" },
+ { 1, "information" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ModifyEntryResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
+ { 1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_modify_entry_information },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ModifyEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ModifyEntryResult_choice, hf_index, ett_dap_ModifyEntryResult,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t ModifyDNArgument_set[] = {
+ { BER_CLASS_CON, 0, 0, dissect_distinguished_name },
+ { BER_CLASS_CON, 1, 0, dissect_newRDN },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_deleteOldRDN },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_newSuperior },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_serviceControls },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_securityParameters },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_requestor },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_operationProgress },
+ { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_aliasedRDNs },
+ { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_criticalExtensions },
+ { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_referenceType },
+ { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_entryOnly },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_nameResolveOnMaster },
+ { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_operationContexts },
+ { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_familyGrouping },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ModifyDNArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ModifyDNArgument_set, hf_index, ett_dap_ModifyDNArgument);
+
+ return offset;
+}
+
+
+static const ber_sequence_t ModifyDNResultData_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_newRDN },
+ { 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 }
+};
+
+static int
+dissect_dap_ModifyDNResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ ModifyDNResultData_sequence, hf_index, ett_dap_ModifyDNResultData);
+
+ return offset;
+}
+static int dissect_unsignedModifyDNResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyDNResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedModifyDNResult);
+}
+static int dissect_modifyDNResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyDNResultData(FALSE, tvb, offset, pinfo, tree, hf_dap_modifyDNResult);
+}
+
+
+static const ber_sequence_t T_signedModifyDNResult_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_modifyDNResult },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedModifyDNResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedModifyDNResult_sequence, hf_index, ett_dap_T_signedModifyDNResult);
+
+ return offset;
+}
+static int dissect_signedModifyDNResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedModifyDNResult(FALSE, tvb, offset, pinfo, tree, hf_dap_signedModifyDNResult);
+}
+
+
+static const value_string dap_ModifyDNInformation_vals[] = {
+ { 0, "unsignedModifyDNResult" },
+ { 1, "signedModifyDNResult" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ModifyDNInformation_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedModifyDNResult },
+ { 1, BER_CLASS_CON, 0, 0, dissect_signedModifyDNResult },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_ModifyDNInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ModifyDNInformation_choice, hf_index, ett_dap_ModifyDNInformation,
+ NULL);
+
+ return offset;
+}
+static int dissect_modify_dn_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyDNInformation(FALSE, tvb, offset, pinfo, tree, hf_dap_modify_dn_information);
+}
+
+
+const value_string dap_ModifyDNResult_vals[] = {
+ { 0, "null" },
+ { 1, "information" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ModifyDNResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
+ { 1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_modify_dn_information },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ModifyDNResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ModifyDNResult_choice, hf_index, ett_dap_ModifyDNResult,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t AbandonedData_set[] = {
+ { 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 }
+};
+
+static int
+dissect_dap_AbandonedData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ AbandonedData_set, hf_index, ett_dap_AbandonedData);
+
+ return offset;
+}
+static int dissect_unsignedAbandoned(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonedData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedAbandoned);
+}
+static int dissect_abandoned(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonedData(FALSE, tvb, offset, pinfo, tree, hf_dap_abandoned);
+}
+
+
+static const ber_sequence_t T_signedAbandoned_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_abandoned },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedAbandoned(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedAbandoned_sequence, hf_index, ett_dap_T_signedAbandoned);
+
+ return offset;
+}
+static int dissect_signedAbandoned(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedAbandoned(FALSE, tvb, offset, pinfo, tree, hf_dap_signedAbandoned);
+}
+
+
+const value_string dap_Abandoned_vals[] = {
+ { 0, "unsignedAbandoned" },
+ { 1, "signedAbandoned" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Abandoned_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedAbandoned },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedAbandoned },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_Abandoned(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Abandoned_choice, hf_index, ett_dap_Abandoned,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string dap_AbandonProblem_vals[] = {
+ { 1, "noSuchOperation" },
+ { 2, "tooLate" },
+ { 3, "cannotAbandon" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_AbandonProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_abandon_failed_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonProblem(FALSE, tvb, offset, pinfo, tree, hf_dap_abandon_failed_problem);
+}
+
+
+static const ber_sequence_t AbandonFailedErrorData_set[] = {
+ { BER_CLASS_CON, 0, 0, dissect_abandon_failed_problem },
+ { BER_CLASS_CON, 1, 0, dissect_operation },
+ { 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 }
+};
+
+static int
+dissect_dap_AbandonFailedErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ AbandonFailedErrorData_set, hf_index, ett_dap_AbandonFailedErrorData);
+
+ return offset;
+}
+static int dissect_unsignedAbandonFailedError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonFailedErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedAbandonFailedError);
+}
+static int dissect_abandonFailedError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AbandonFailedErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_abandonFailedError);
+}
+
+
+static const ber_sequence_t T_signedAbandonFailedError_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_abandonFailedError },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedAbandonFailedError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedAbandonFailedError_sequence, hf_index, ett_dap_T_signedAbandonFailedError);
+
+ return offset;
+}
+static int dissect_signedAbandonFailedError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedAbandonFailedError(FALSE, tvb, offset, pinfo, tree, hf_dap_signedAbandonFailedError);
+}
+
+
+const value_string dap_AbandonFailedError_vals[] = {
+ { 0, "unsignedAbandonFailedError" },
+ { 1, "signedAbandonFailedError" },
+ { 0, NULL }
+};
+
+static const ber_choice_t AbandonFailedError_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedAbandonFailedError },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedAbandonFailedError },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_AbandonFailedError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AbandonFailedError_choice, hf_index, ett_dap_AbandonFailedError,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string dap_AttributeProblem_vals[] = {
+ { 1, "noSuchAttributeOrValue" },
+ { 2, "invalidAttributeSyntax" },
+ { 3, "undefinedAttributeType" },
+ { 4, "inappropriateMatching" },
+ { 5, "constraintViolation" },
+ { 6, "attributeOrValueAlreadyExists" },
+ { 7, "contextViolation" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_AttributeProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_attribute_error_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AttributeProblem(FALSE, tvb, offset, pinfo, tree, hf_dap_attribute_error_problem);
+}
+
+
+static const ber_sequence_t T_problems_item_sequence[] = {
+ { BER_CLASS_CON, 0, 0, dissect_attribute_error_problem },
+ { BER_CLASS_CON, 1, 0, dissect_type },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_value },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_problems_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_problems_item_sequence, hf_index, ett_dap_T_problems_item);
+
+ return offset;
+}
+static int dissect_problems_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_problems_item(FALSE, tvb, offset, pinfo, tree, hf_dap_problems_item);
+}
+
+
+static const ber_sequence_t T_problems_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_problems_item },
+};
+
+static int
+dissect_dap_T_problems(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_problems_set_of, hf_index, ett_dap_T_problems);
+
+ return offset;
+}
+static int dissect_problems(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_problems(FALSE, tvb, offset, pinfo, tree, hf_dap_problems);
+}
+
+
+static const ber_sequence_t AttributeErrorData_set[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_object },
+ { BER_CLASS_CON, 1, 0, dissect_problems },
+ { 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 }
+};
+
+static int
+dissect_dap_AttributeErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ AttributeErrorData_set, hf_index, ett_dap_AttributeErrorData);
+
+ return offset;
+}
+static int dissect_unsignedAttributeError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AttributeErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedAttributeError);
+}
+static int dissect_attributeError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AttributeErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_attributeError);
+}
+
+
+static const ber_sequence_t T_signedAttributeError_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_attributeError },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedAttributeError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedAttributeError_sequence, hf_index, ett_dap_T_signedAttributeError);
+
+ return offset;
+}
+static int dissect_signedAttributeError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedAttributeError(FALSE, tvb, offset, pinfo, tree, hf_dap_signedAttributeError);
+}
+
+
+const value_string dap_AttributeError_vals[] = {
+ { 0, "unsignedAttributeError" },
+ { 1, "signedAttributeError" },
+ { 0, NULL }
+};
+
+static const ber_choice_t AttributeError_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedAttributeError },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedAttributeError },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_AttributeError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AttributeError_choice, hf_index, ett_dap_AttributeError,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string dap_NameProblem_vals[] = {
+ { 1, "noSuchObject" },
+ { 2, "aliasProblem" },
+ { 3, "invalidAttributeSyntax" },
+ { 4, "aliasDereferencingProblem" },
+ { 5, "contextProblem" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_NameProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_name_error_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_NameProblem(FALSE, tvb, offset, pinfo, tree, hf_dap_name_error_problem);
+}
+
+
+static const ber_sequence_t NameErrorData_set[] = {
+ { BER_CLASS_CON, 0, 0, dissect_name_error_problem },
+ { BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_matched_name },
+ { 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 }
+};
+
+static int
+dissect_dap_NameErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ NameErrorData_set, hf_index, ett_dap_NameErrorData);
+
+ return offset;
+}
+static int dissect_unsignedNameError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_NameErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedNameError);
+}
+static int dissect_nameError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_NameErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_nameError);
+}
+
+
+static const ber_sequence_t T_signedNameError_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_nameError },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedNameError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedNameError_sequence, hf_index, ett_dap_T_signedNameError);
+
+ return offset;
+}
+static int dissect_signedNameError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedNameError(FALSE, tvb, offset, pinfo, tree, hf_dap_signedNameError);
+}
+
+
+const value_string dap_NameError_vals[] = {
+ { 0, "unsignedNameError" },
+ { 1, "signedNameError" },
+ { 0, NULL }
+};
+
+static const ber_choice_t NameError_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedNameError },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedNameError },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_NameError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ NameError_choice, hf_index, ett_dap_NameError,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t ReferralData_set[] = {
+ { BER_CLASS_CON, 0, 0, dissect_candidate },
+ { 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 }
+};
+
+static int
+dissect_dap_ReferralData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ReferralData_set, hf_index, ett_dap_ReferralData);
+
+ return offset;
+}
+static int dissect_unsignedReferral(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ReferralData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedReferral);
+}
+static int dissect_referral(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ReferralData(FALSE, tvb, offset, pinfo, tree, hf_dap_referral);
+}
+
+
+static const ber_sequence_t T_signedReferral_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_referral },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedReferral(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedReferral_sequence, hf_index, ett_dap_T_signedReferral);
+
+ return offset;
+}
+static int dissect_signedReferral(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedReferral(FALSE, tvb, offset, pinfo, tree, hf_dap_signedReferral);
+}
+
+
+const value_string dap_Referral_vals[] = {
+ { 0, "unsignedReferral" },
+ { 1, "signedReferral" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Referral_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedReferral },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedReferral },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_Referral(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Referral_choice, hf_index, ett_dap_Referral,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_dap_T_spkmInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ /* XXX: not yet implemented */
+
+
+ return offset;
+}
+static int dissect_spkmInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_spkmInfo(FALSE, tvb, offset, pinfo, tree, hf_dap_spkmInfo);
+}
+
+
+static const ber_sequence_t SecurityErrorData_set[] = {
+ { BER_CLASS_CON, 0, 0, dissect_security_error_problem },
+ { BER_CLASS_CON, 1, 0, dissect_spkmInfo },
+ { 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 }
+};
+
+static int
+dissect_dap_SecurityErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ SecurityErrorData_set, hf_index, ett_dap_SecurityErrorData);
+
+ return offset;
+}
+static int dissect_unsignedSecurityError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SecurityErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedSecurityError);
+}
+static int dissect_securityErrorData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SecurityErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_securityErrorData);
+}
+
+
+static const ber_sequence_t T_signedSecurityError_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_securityErrorData },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedSecurityError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedSecurityError_sequence, hf_index, ett_dap_T_signedSecurityError);
+
+ return offset;
+}
+static int dissect_signedSecurityError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedSecurityError(FALSE, tvb, offset, pinfo, tree, hf_dap_signedSecurityError);
+}
+
+
+const value_string dap_SecurityError_vals[] = {
+ { 0, "unsignedSecurityError" },
+ { 1, "signedSecurityError" },
+ { 0, NULL }
+};
+
+static const ber_choice_t SecurityError_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedSecurityError },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedSecurityError },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_SecurityError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ SecurityError_choice, hf_index, ett_dap_SecurityError,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t ServiceErrorData_set[] = {
+ { BER_CLASS_CON, 0, 0, dissect_service_error_problem },
+ { 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 }
+};
+
+static int
+dissect_dap_ServiceErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ServiceErrorData_set, hf_index, ett_dap_ServiceErrorData);
+
+ return offset;
+}
+static int dissect_unsignedServiceError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ServiceErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedServiceError);
+}
+static int dissect_serviceError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ServiceErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_serviceError);
+}
+
+
+static const ber_sequence_t T_signedServiceError_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_serviceError },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedServiceError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedServiceError_sequence, hf_index, ett_dap_T_signedServiceError);
+
+ return offset;
+}
+static int dissect_signedServiceError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedServiceError(FALSE, tvb, offset, pinfo, tree, hf_dap_signedServiceError);
+}
+
+
+const value_string dap_ServiceError_vals[] = {
+ { 0, "unsignedServiceError" },
+ { 1, "signedServiceError" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ServiceError_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedServiceError },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedServiceError },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_ServiceError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ServiceError_choice, hf_index, ett_dap_ServiceError,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string dap_UpdateProblem_vals[] = {
+ { 1, "namingViolation" },
+ { 2, "objectClassViolation" },
+ { 3, "notAllowedOnNonLeaf" },
+ { 4, "notAllowedOnRDN" },
+ { 5, "entryAlreadyExists" },
+ { 6, "affectsMultipleDSAs" },
+ { 7, "objectClassModificationProhibited" },
+ { 8, "noSuchSuperior" },
+ { 9, "notAncestor" },
+ { 10, "parentNotAncestor" },
+ { 11, "hierarchyRuleViolation" },
+ { 12, "familyRuleViolation" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dap_UpdateProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 problem;
+
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &problem);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, dap_UpdateProblem_vals, "UpdateProblem(%d)"));
+ }
+
+
+ return offset;
+}
+static int dissect_update_error_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_UpdateProblem(FALSE, tvb, offset, pinfo, tree, hf_dap_update_error_problem);
+}
+
+
+static const value_string dap_T_attributeInfo_item_vals[] = {
+ { 0, "attributeType" },
+ { 1, "attribute" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_attributeInfo_item_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_attribute },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dap_T_attributeInfo_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_attributeInfo_item_choice, hf_index, ett_dap_T_attributeInfo_item,
+ NULL);
+
+ return offset;
+}
+static int dissect_attributeInfo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_attributeInfo_item(FALSE, tvb, offset, pinfo, tree, hf_dap_attributeInfo_item);
+}
+
+
+static const ber_sequence_t T_attributeInfo_set_of[1] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_attributeInfo_item },
+};
+
+static int
+dissect_dap_T_attributeInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_attributeInfo_set_of, hf_index, ett_dap_T_attributeInfo);
+
+ return offset;
+}
+static int dissect_attributeInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_attributeInfo(FALSE, tvb, offset, pinfo, tree, hf_dap_attributeInfo);
+}
+
+
+static const ber_sequence_t UpdateErrorData_set[] = {
+ { BER_CLASS_CON, 0, 0, dissect_update_error_problem },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_attributeInfo },
+ { 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 }
+};
+
+static int
+dissect_dap_UpdateErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ UpdateErrorData_set, hf_index, ett_dap_UpdateErrorData);
+
+ return offset;
+}
+static int dissect_unsignedUpdateError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_UpdateErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_unsignedUpdateError);
+}
+static int dissect_updateError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_UpdateErrorData(FALSE, tvb, offset, pinfo, tree, hf_dap_updateError);
+}
+
+
+static const ber_sequence_t T_signedUpdateError_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_updateError },
+ { 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 }
+};
+
+static int
+dissect_dap_T_signedUpdateError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedUpdateError_sequence, hf_index, ett_dap_T_signedUpdateError);
+
+ return offset;
+}
+static int dissect_signedUpdateError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_T_signedUpdateError(FALSE, tvb, offset, pinfo, tree, hf_dap_signedUpdateError);
+}
+
+
+const value_string dap_UpdateError_vals[] = {
+ { 0, "unsignedUpdateError" },
+ { 1, "signedUpdateError" },
+ { 0, NULL }
+};
+
+static const ber_choice_t UpdateError_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_unsignedUpdateError },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedUpdateError },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_dap_UpdateError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ UpdateError_choice, hf_index, ett_dap_UpdateError,
+ NULL);
+
+ return offset;
+}
+
+
+/*--- End of included file: packet-dap-fn.c ---*/
+
+
+/*
+* Dissect DAP PDUs inside a ROS PDUs
+*/
+static void
+dissect_dap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
+{
+ int offset = 0;
+ int old_offset;
+ proto_item *item=NULL;
+ proto_tree *tree=NULL;
+ int (*dap_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) = NULL;
+ char *dap_op_name;
+
+ /* do we have operation information from the ROS dissector? */
+ if( !pinfo->private_data ){
+ if(parent_tree){
+ proto_tree_add_text(parent_tree, tvb, offset, -1,
+ "Internal error: can't get operation information from ROS dissector.");
+ }
+ return ;
+ } else {
+ session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
+ }
+
+ if(parent_tree){
+ item = proto_tree_add_item(parent_tree, proto_dap, tvb, 0, -1, FALSE);
+ tree = proto_item_add_subtree(item, ett_dap);
+ }
+ 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);
+
+ switch(session->ros_op & ROS_OP_MASK) {
+ case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
+ dap_dissector = dissect_dap_DirectoryBindArgument;
+ dap_op_name = "Bind-Argument";
+ break;
+ case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
+ dap_dissector = dissect_dap_DirectoryBindResult;
+ dap_op_name = "Bind-Result";
+ break;
+ case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
+ dap_dissector = dissect_dap_DirectoryBindError;
+ dap_op_name = "Bind-Error";
+ break;
+ case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
+ switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+ case 1: /* read */
+ dap_dissector = dissect_dap_ReadArgument;
+ dap_op_name = "Read-Argument";
+ break;
+ case 2: /* compare */
+ dap_dissector = dissect_dap_CompareArgument;
+ dap_op_name = "Compare-Argument";
+ break;
+ case 3: /* abandon */
+ dap_dissector = dissect_dap_AbandonArgument;
+ dap_op_name = "Abandon-Argument";
+ break;
+ case 4: /* list */
+ dap_dissector = dissect_dap_ListArgument;
+ dap_op_name = "List-Argument";
+ break;
+ case 5: /* search */
+ dap_dissector = dissect_dap_SearchArgument;
+ dap_op_name = "Search-Argument";
+ break;
+ case 6: /* addEntry */
+ dap_dissector = dissect_dap_AddEntryArgument;
+ dap_op_name = "Add-Entry-Argument";
+ break;
+ case 7: /* removeEntry */
+ dap_dissector = dissect_dap_RemoveEntryArgument;
+ dap_op_name = "Remove-Entry-Argument";
+ break;
+ case 8: /* modifyEntry */
+ dap_dissector = dissect_dap_ModifyEntryArgument;
+ dap_op_name = "Modify-Entry-Argument";
+ break;
+ case 9: /* modifyDN */
+ dap_dissector = dissect_dap_ModifyDNArgument;
+ dap_op_name = "Modify-DN-Argument";
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DAP opcode (%d)",
+ session->ros_op & ROS_OP_OPCODE_MASK);
+ break;
+ }
+ break;
+ case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
+ switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+ case 1: /* read */
+ dap_dissector = dissect_dap_ReadResult;
+ dap_op_name = "Read-Result";
+ break;
+ case 2: /* compare */
+ dap_dissector = dissect_dap_CompareResult;
+ dap_op_name = "Compare-Result";
+ break;
+ case 3: /* abandon */
+ dap_dissector = dissect_dap_AbandonResult;
+ dap_op_name = "Abandon-Result";
+ break;
+ case 4: /* list */
+ dap_dissector = dissect_dap_ListResult;
+ dap_op_name = "List-Result";
+ break;
+ case 5: /* search */
+ dap_dissector = dissect_dap_SearchResult;
+ dap_op_name = "Search-Result";
+ break;
+ case 6: /* addEntry */
+ dap_dissector = dissect_dap_AddEntryResult;
+ dap_op_name = "Add-Entry-Result";
+ break;
+ case 7: /* removeEntry */
+ dap_dissector = dissect_dap_RemoveEntryResult;
+ dap_op_name = "Remove-Entry-Result";
+ break;
+ case 8: /* modifyEntry */
+ dap_dissector = dissect_dap_ModifyEntryResult;
+ dap_op_name = "Modify-Entry-Result";
+ break;
+ case 9: /* modifyDN */
+ dap_dissector = dissect_dap_ModifyDNResult;
+ dap_op_name = "Modify-DN-Result";
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DAP opcode");
+ break;
+ }
+ break;
+ case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
+ switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+ case 1: /* attributeError */
+ dap_dissector = dissect_dap_AttributeError;
+ dap_op_name = "Attribute-Error";
+ break;
+ case 2: /* nameError */
+ dap_dissector = dissect_dap_NameError;
+ dap_op_name = "Name-Error";
+ break;
+ case 3: /* serviceError */
+ dap_dissector = dissect_dap_ServiceError;
+ dap_op_name = "Service-Error";
+ break;
+ case 4: /* referral */
+ dap_dissector = dissect_dap_Referral;
+ dap_op_name = "Referral";
+ break;
+ case 5: /* abandoned */
+ dap_dissector = dissect_dap_Abandoned;
+ dap_op_name = "Abandoned";
+ break;
+ case 6: /* securityError */
+ dap_dissector = dissect_dap_SecurityError;
+ dap_op_name = "Security-Error";
+ break;
+ case 7: /* abandonFailed */
+ dap_dissector = dissect_dap_AbandonFailedError;
+ dap_op_name = "Abandon-Failed-Error";
+ break;
+ case 8: /* updateError */
+ dap_dissector = dissect_dap_UpdateError;
+ dap_op_name = "Update-Error";
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DAP errcode");
+ break;
+ }
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DAP PDU");
+ return;
+ }
+
+ if(dap_dissector) {
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_add_str(pinfo->cinfo, COL_INFO, dap_op_name);
+
+ while (tvb_reported_length_remaining(tvb, offset) > 0){
+ old_offset=offset;
+ offset=(*dap_dissector)(FALSE, tvb, offset, pinfo , tree, -1);
+ if(offset == old_offset){
+ proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DAP PDU");
+ offset = tvb_length(tvb);
+ break;
+ }
+ }
+ }
+}
+
+
+/*--- proto_register_dap -------------------------------------------*/
+void proto_register_dap(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] =
+ {
+
+/*--- Included file: packet-dap-hfarr.c ---*/
+
+ { &hf_dap_securityParameters,
+ { "securityParameters", "dap.securityParameters",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_performer,
+ { "performer", "dap.performer",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_aliasDereferenced,
+ { "aliasDereferenced", "dap.aliasDereferenced",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_notification,
+ { "notification", "dap.notification",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_notification_item,
+ { "Item", "dap.notification_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_options,
+ { "options", "dap.options",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "ServiceControls/options", HFILL }},
+ { &hf_dap_priority,
+ { "priority", "dap.priority",
+ FT_INT32, BASE_DEC, VALS(dap_T_priority_vals), 0,
+ "ServiceControls/priority", HFILL }},
+ { &hf_dap_timeLimit,
+ { "timeLimit", "dap.timeLimit",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ServiceControls/timeLimit", HFILL }},
+ { &hf_dap_sizeLimit,
+ { "sizeLimit", "dap.sizeLimit",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ServiceControls/sizeLimit", HFILL }},
+ { &hf_dap_scopeOfReferral,
+ { "scopeOfReferral", "dap.scopeOfReferral",
+ FT_INT32, BASE_DEC, VALS(dap_T_scopeOfReferral_vals), 0,
+ "ServiceControls/scopeOfReferral", HFILL }},
+ { &hf_dap_attributeSizeLimit,
+ { "attributeSizeLimit", "dap.attributeSizeLimit",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ServiceControls/attributeSizeLimit", HFILL }},
+ { &hf_dap_manageDSAITPlaneRef,
+ { "manageDSAITPlaneRef", "dap.manageDSAITPlaneRef",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ServiceControls/manageDSAITPlaneRef", HFILL }},
+ { &hf_dap_dsaName,
+ { "dsaName", "dap.dsaName",
+ FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
+ "ServiceControls/manageDSAITPlaneRef/dsaName", HFILL }},
+ { &hf_dap_agreementID,
+ { "agreementID", "dap.agreementID",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ServiceControls/manageDSAITPlaneRef/agreementID", HFILL }},
+ { &hf_dap_serviceType,
+ { "serviceType", "dap.serviceType",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "ServiceControls/serviceType", HFILL }},
+ { &hf_dap_userClass,
+ { "userClass", "dap.userClass",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ServiceControls/userClass", HFILL }},
+ { &hf_dap_attributes,
+ { "attributes", "dap.attributes",
+ FT_UINT32, BASE_DEC, VALS(dap_T_attributes_vals), 0,
+ "EntryInformationSelection/attributes", HFILL }},
+ { &hf_dap_allUserAttributes,
+ { "allUserAttributes", "dap.allUserAttributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EntryInformationSelection/attributes/allUserAttributes", HFILL }},
+ { &hf_dap_select,
+ { "select", "dap.select",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_select_item,
+ { "Item", "dap.select_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_infoTypes,
+ { "infoTypes", "dap.infoTypes",
+ FT_INT32, BASE_DEC, VALS(dap_T_infoTypes_vals), 0,
+ "EntryInformationSelection/infoTypes", HFILL }},
+ { &hf_dap_extraAttributes,
+ { "extraAttributes", "dap.extraAttributes",
+ FT_UINT32, BASE_DEC, VALS(dap_T_extraAttributes_vals), 0,
+ "EntryInformationSelection/extraAttributes", HFILL }},
+ { &hf_dap_allOperationalAttributes,
+ { "allOperationalAttributes", "dap.allOperationalAttributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EntryInformationSelection/extraAttributes/allOperationalAttributes", HFILL }},
+ { &hf_dap_contextSelection,
+ { "contextSelection", "dap.contextSelection",
+ FT_UINT32, BASE_DEC, VALS(dap_ContextSelection_vals), 0,
+ "EntryInformationSelection/contextSelection", HFILL }},
+ { &hf_dap_returnContexts,
+ { "returnContexts", "dap.returnContexts",
+ FT_BOOLEAN, 8, NULL, 0,
+ "EntryInformationSelection/returnContexts", HFILL }},
+ { &hf_dap_familyReturn,
+ { "familyReturn", "dap.familyReturn",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EntryInformationSelection/familyReturn", HFILL }},
+ { &hf_dap_allContexts,
+ { "allContexts", "dap.allContexts",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ContextSelection/allContexts", HFILL }},
+ { &hf_dap_selectedContexts,
+ { "selectedContexts", "dap.selectedContexts",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContextSelection/selectedContexts", HFILL }},
+ { &hf_dap_selectedContexts_item,
+ { "Item", "dap.selectedContexts_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ContextSelection/selectedContexts/_item", HFILL }},
+ { &hf_dap_type,
+ { "type", "dap.type",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_contextAssertions,
+ { "contextAssertions", "dap.contextAssertions",
+ FT_UINT32, BASE_DEC, VALS(dap_T_contextAssertions_vals), 0,
+ "TypeAndContextAssertion/contextAssertions", HFILL }},
+ { &hf_dap_preference,
+ { "preference", "dap.preference",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "TypeAndContextAssertion/contextAssertions/preference", HFILL }},
+ { &hf_dap_preference_item,
+ { "Item", "dap.preference_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TypeAndContextAssertion/contextAssertions/preference/_item", HFILL }},
+ { &hf_dap_all,
+ { "all", "dap.all",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "TypeAndContextAssertion/contextAssertions/all", HFILL }},
+ { &hf_dap_all_item,
+ { "Item", "dap.all_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TypeAndContextAssertion/contextAssertions/all/_item", HFILL }},
+ { &hf_dap_memberSelect,
+ { "memberSelect", "dap.memberSelect",
+ FT_UINT32, BASE_DEC, VALS(dap_T_memberSelect_vals), 0,
+ "FamilyReturn/memberSelect", HFILL }},
+ { &hf_dap_familySelect,
+ { "familySelect", "dap.familySelect",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FamilyReturn/familySelect", HFILL }},
+ { &hf_dap_familySelect_item,
+ { "Item", "dap.familySelect_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "FamilyReturn/familySelect/_item", HFILL }},
+ { &hf_dap_name,
+ { "name", "dap.name",
+ FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
+ "", HFILL }},
+ { &hf_dap_fromEntry,
+ { "fromEntry", "dap.fromEntry",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_entry_information,
+ { "information", "dap.information",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "EntryInformation/information", HFILL }},
+ { &hf_dap_entry_information_item,
+ { "Item", "dap.information_item",
+ FT_UINT32, BASE_DEC, VALS(dap_EntryInformationItem_vals), 0,
+ "EntryInformation/information/_item", HFILL }},
+ { &hf_dap_attributeType,
+ { "attributeType", "dap.attributeType",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_attribute,
+ { "attribute", "dap.attribute",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_incompleteEntry,
+ { "incompleteEntry", "dap.incompleteEntry",
+ FT_BOOLEAN, 8, NULL, 0,
+ "EntryInformation/incompleteEntry", HFILL }},
+ { &hf_dap_partialName,
+ { "partialName", "dap.partialName",
+ FT_BOOLEAN, 8, NULL, 0,
+ "EntryInformation/partialName", HFILL }},
+ { &hf_dap_derivedEntry,
+ { "derivedEntry", "dap.derivedEntry",
+ FT_BOOLEAN, 8, NULL, 0,
+ "EntryInformation/derivedEntry", HFILL }},
+ { &hf_dap_family_class,
+ { "family-class", "dap.family_class",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "FamilyEntries/family-class", HFILL }},
+ { &hf_dap_familyEntries,
+ { "familyEntries", "dap.familyEntries",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FamilyEntries/familyEntries", HFILL }},
+ { &hf_dap_familyEntries_item,
+ { "Item", "dap.familyEntries_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FamilyEntries/familyEntries/_item", HFILL }},
+ { &hf_dap_rdn,
+ { "rdn", "dap.rdn",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_family_information,
+ { "information", "dap.information",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FamilyEntry/information", HFILL }},
+ { &hf_dap_information_item,
+ { "Item", "dap.information_item",
+ FT_UINT32, BASE_DEC, VALS(dap_T_information_item_vals), 0,
+ "FamilyEntry/information/_item", HFILL }},
+ { &hf_dap_family_info,
+ { "family-info", "dap.family_info",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FamilyEntry/family-info", HFILL }},
+ { &hf_dap_family_info_item,
+ { "Item", "dap.family_info_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FamilyEntry/family-info/_item", HFILL }},
+ { &hf_dap_filter_item,
+ { "item", "dap.item",
+ FT_UINT32, BASE_DEC, VALS(dap_FilterItem_vals), 0,
+ "Filter/item", HFILL }},
+ { &hf_dap_and,
+ { "and", "dap.and",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Filter/and", HFILL }},
+ { &hf_dap_or,
+ { "or", "dap.or",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Filter/or", HFILL }},
+ { &hf_dap_not,
+ { "not", "dap.not",
+ FT_UINT32, BASE_DEC, VALS(dap_Filter_vals), 0,
+ "Filter/not", HFILL }},
+ { &hf_dap_SetOfFilter_item,
+ { "Item", "dap.SetOfFilter_item",
+ FT_UINT32, BASE_DEC, VALS(dap_Filter_vals), 0,
+ "SetOfFilter/_item", HFILL }},
+ { &hf_dap_equality,
+ { "equality", "dap.equality",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/equality", HFILL }},
+ { &hf_dap_substrings,
+ { "substrings", "dap.substrings",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/substrings", HFILL }},
+ { &hf_dap_sunstringType,
+ { "type", "dap.type",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "FilterItem/substrings/type", HFILL }},
+ { &hf_dap_strings,
+ { "strings", "dap.strings",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "FilterItem/substrings/strings", HFILL }},
+ { &hf_dap_strings_item,
+ { "Item", "dap.strings_item",
+ FT_UINT32, BASE_DEC, VALS(dap_T_strings_item_vals), 0,
+ "FilterItem/substrings/strings/_item", HFILL }},
+ { &hf_dap_initial,
+ { "initial", "dap.initial",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/substrings/strings/_item/initial", HFILL }},
+ { &hf_dap_any,
+ { "any", "dap.any",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/substrings/strings/_item/any", HFILL }},
+ { &hf_dap_final,
+ { "final", "dap.final",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/substrings/strings/_item/final", HFILL }},
+ { &hf_dap_control,
+ { "control", "dap.control",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/substrings/strings/_item/control", HFILL }},
+ { &hf_dap_greaterOrEqual,
+ { "greaterOrEqual", "dap.greaterOrEqual",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/greaterOrEqual", HFILL }},
+ { &hf_dap_lessOrEqual,
+ { "lessOrEqual", "dap.lessOrEqual",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/lessOrEqual", HFILL }},
+ { &hf_dap_present,
+ { "present", "dap.present",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "FilterItem/present", HFILL }},
+ { &hf_dap_approximateMatch,
+ { "approximateMatch", "dap.approximateMatch",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/approximateMatch", HFILL }},
+ { &hf_dap_extensibleMatch,
+ { "extensibleMatch", "dap.extensibleMatch",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/extensibleMatch", HFILL }},
+ { &hf_dap_contextPresent,
+ { "contextPresent", "dap.contextPresent",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FilterItem/contextPresent", HFILL }},
+ { &hf_dap_matchingRule,
+ { "matchingRule", "dap.matchingRule",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MatchingRuleAssertion/matchingRule", HFILL }},
+ { &hf_dap_matchingRule_item,
+ { "Item", "dap.matchingRule_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "MatchingRuleAssertion/matchingRule/_item", HFILL }},
+ { &hf_dap_matchValue,
+ { "matchValue", "dap.matchValue",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MatchingRuleAssertion/matchValue", HFILL }},
+ { &hf_dap_dnAttributes,
+ { "dnAttributes", "dap.dnAttributes",
+ FT_BOOLEAN, 8, NULL, 0,
+ "MatchingRuleAssertion/dnAttributes", HFILL }},
+ { &hf_dap_newRequest,
+ { "newRequest", "dap.newRequest",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PagedResultsRequest/newRequest", HFILL }},
+ { &hf_dap_pageSize,
+ { "pageSize", "dap.pageSize",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "PagedResultsRequest/newRequest/pageSize", HFILL }},
+ { &hf_dap_sortKeys,
+ { "sortKeys", "dap.sortKeys",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "PagedResultsRequest/newRequest/sortKeys", HFILL }},
+ { &hf_dap_sortKeys_item,
+ { "Item", "dap.sortKeys_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PagedResultsRequest/newRequest/sortKeys/_item", HFILL }},
+ { &hf_dap_reverse,
+ { "reverse", "dap.reverse",
+ FT_BOOLEAN, 8, NULL, 0,
+ "PagedResultsRequest/newRequest/reverse", HFILL }},
+ { &hf_dap_unmerged,
+ { "unmerged", "dap.unmerged",
+ FT_BOOLEAN, 8, NULL, 0,
+ "PagedResultsRequest/newRequest/unmerged", HFILL }},
+ { &hf_dap_queryReference,
+ { "queryReference", "dap.queryReference",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_orderingRule,
+ { "orderingRule", "dap.orderingRule",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "SortKey/orderingRule", HFILL }},
+ { &hf_dap_certification_path,
+ { "certification-path", "dap.certification_path",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_distinguished_name,
+ { "name", "dap.name",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_time,
+ { "time", "dap.time",
+ FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0,
+ "SecurityParameters/time", HFILL }},
+ { &hf_dap_random,
+ { "random", "dap.random",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SecurityParameters/random", HFILL }},
+ { &hf_dap_target,
+ { "target", "dap.target",
+ FT_INT32, BASE_DEC, VALS(dap_ProtectionRequest_vals), 0,
+ "SecurityParameters/target", HFILL }},
+ { &hf_dap_response,
+ { "response", "dap.response",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SecurityParameters/response", HFILL }},
+ { &hf_dap_operationCode,
+ { "operationCode", "dap.operationCode",
+ FT_UINT32, BASE_DEC, VALS(ros_Code_vals), 0,
+ "SecurityParameters/operationCode", HFILL }},
+ { &hf_dap_attributeCertificationPath,
+ { "attributeCertificationPath", "dap.attributeCertificationPath",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_errorProtection,
+ { "errorProtection", "dap.errorProtection",
+ FT_INT32, BASE_DEC, VALS(dap_ErrorProtectionRequest_vals), 0,
+ "SecurityParameters/errorProtection", HFILL }},
+ { &hf_dap_errorCode,
+ { "errorCode", "dap.errorCode",
+ FT_UINT32, BASE_DEC, VALS(ros_Code_vals), 0,
+ "SecurityParameters/errorCode", HFILL }},
+ { &hf_dap_utcTime,
+ { "utcTime", "dap.utcTime",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Time/utcTime", HFILL }},
+ { &hf_dap_generalizedTime,
+ { "generalizedTime", "dap.generalizedTime",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Time/generalizedTime", HFILL }},
+ { &hf_dap_credentials,
+ { "credentials", "dap.credentials",
+ FT_UINT32, BASE_DEC, VALS(dap_Credentials_vals), 0,
+ "DirectoryBindArgument/credentials", HFILL }},
+ { &hf_dap_versions,
+ { "versions", "dap.versions",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_simple,
+ { "simple", "dap.simple",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Credentials/simple", HFILL }},
+ { &hf_dap_strong,
+ { "strong", "dap.strong",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Credentials/strong", HFILL }},
+ { &hf_dap_externalProcedure,
+ { "externalProcedure", "dap.externalProcedure",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Credentials/externalProcedure", HFILL }},
+ { &hf_dap_spkm,
+ { "spkm", "dap.spkm",
+ FT_UINT32, BASE_DEC, VALS(dap_SpkmCredentials_vals), 0,
+ "Credentials/spkm", HFILL }},
+ { &hf_dap_validity,
+ { "validity", "dap.validity",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SimpleCredentials/validity", HFILL }},
+ { &hf_dap_time1,
+ { "time1", "dap.time1",
+ FT_UINT32, BASE_DEC, VALS(dap_T_time1_vals), 0,
+ "SimpleCredentials/validity/time1", HFILL }},
+ { &hf_dap_utc,
+ { "utc", "dap.utc",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_gt,
+ { "gt", "dap.gt",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_time2,
+ { "time2", "dap.time2",
+ FT_UINT32, BASE_DEC, VALS(dap_T_time2_vals), 0,
+ "SimpleCredentials/validity/time2", HFILL }},
+ { &hf_dap_random1,
+ { "random1", "dap.random1",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SimpleCredentials/validity/random1", HFILL }},
+ { &hf_dap_random2,
+ { "random2", "dap.random2",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SimpleCredentials/validity/random2", HFILL }},
+ { &hf_dap_password,
+ { "password", "dap.password",
+ FT_UINT32, BASE_DEC, VALS(dap_T_password_vals), 0,
+ "SimpleCredentials/password", HFILL }},
+ { &hf_dap_unprotected,
+ { "unprotected", "dap.unprotected",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SimpleCredentials/password/unprotected", HFILL }},
+ { &hf_dap_protected,
+ { "protected", "dap.protected",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SimpleCredentials/password/protected", HFILL }},
+ { &hf_dap_protectedPassword,
+ { "protectedPassword", "dap.protectedPassword",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SimpleCredentials/password/protected/protectedPassword", HFILL }},
+ { &hf_dap_algorithmIdentifier,
+ { "algorithmIdentifier", "dap.algorithmIdentifier",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_encrypted,
+ { "encrypted", "dap.encrypted",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_bind_token,
+ { "bind-token", "dap.bind_token",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "StrongCredentials/bind-token", HFILL }},
+ { &hf_dap_req,
+ { "req", "dap.req",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SpkmCredentials/req", HFILL }},
+ { &hf_dap_rep,
+ { "rep", "dap.rep",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SpkmCredentials/rep", HFILL }},
+ { &hf_dap_error,
+ { "error", "dap.error",
+ FT_UINT32, BASE_DEC, VALS(dap_T_error_vals), 0,
+ "DirectoryBindErrorData/error", HFILL }},
+ { &hf_dap_serviceProblem,
+ { "serviceError", "dap.serviceError",
+ FT_INT32, BASE_DEC, VALS(dap_ServiceProblem_vals), 0,
+ "DirectoryBindErrorData/error/serviceError", HFILL }},
+ { &hf_dap_securityProblem,
+ { "securityError", "dap.securityError",
+ FT_INT32, BASE_DEC, VALS(dap_SecurityProblem_vals), 0,
+ "DirectoryBindErrorData/error/securityError", HFILL }},
+ { &hf_dap_unsignedDirectoryBindError,
+ { "unsignedDirectoryBindError", "dap.unsignedDirectoryBindError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DirectoryBindError/unsignedDirectoryBindError", HFILL }},
+ { &hf_dap_signedDirectoryBindError,
+ { "signedDirectoryBindError", "dap.signedDirectoryBindError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DirectoryBindError/signedDirectoryBindError", HFILL }},
+ { &hf_dap_directoryBindError,
+ { "directoryBindError", "dap.directoryBindError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DirectoryBindError/signedDirectoryBindError/directoryBindError", HFILL }},
+ { &hf_dap_object,
+ { "object", "dap.object",
+ FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
+ "", HFILL }},
+ { &hf_dap_selection,
+ { "selection", "dap.selection",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_modifyRightsRequest,
+ { "modifyRightsRequest", "dap.modifyRightsRequest",
+ FT_BOOLEAN, 8, NULL, 0,
+ "ReadArgumentData/modifyRightsRequest", HFILL }},
+ { &hf_dap_serviceControls,
+ { "serviceControls", "dap.serviceControls",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_requestor,
+ { "requestor", "dap.requestor",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_operationProgress,
+ { "operationProgress", "dap.operationProgress",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_aliasedRDNs,
+ { "aliasedRDNs", "dap.aliasedRDNs",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_criticalExtensions,
+ { "criticalExtensions", "dap.criticalExtensions",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_referenceType,
+ { "referenceType", "dap.referenceType",
+ FT_UINT32, BASE_DEC, VALS(dsp_ReferenceType_vals), 0,
+ "", HFILL }},
+ { &hf_dap_entryOnly,
+ { "entryOnly", "dap.entryOnly",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_nameResolveOnMaster,
+ { "nameResolveOnMaster", "dap.nameResolveOnMaster",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_operationContexts,
+ { "operationContexts", "dap.operationContexts",
+ FT_UINT32, BASE_DEC, VALS(dap_ContextSelection_vals), 0,
+ "", HFILL }},
+ { &hf_dap_familyGrouping,
+ { "familyGrouping", "dap.familyGrouping",
+ FT_UINT32, BASE_DEC, VALS(dap_FamilyGrouping_vals), 0,
+ "", HFILL }},
+ { &hf_dap_rdnSequence,
+ { "rdnSequence", "dap.rdnSequence",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Name/rdnSequence", HFILL }},
+ { &hf_dap_unsignedReadArgument,
+ { "unsignedReadArgument", "dap.unsignedReadArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReadArgument/unsignedReadArgument", HFILL }},
+ { &hf_dap_signedReadArgument,
+ { "signedReadArgument", "dap.signedReadArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReadArgument/signedReadArgument", HFILL }},
+ { &hf_dap_readArgument,
+ { "readArgument", "dap.readArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReadArgument/signedReadArgument/readArgument", HFILL }},
+ { &hf_dap_entry,
+ { "entry", "dap.entry",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_modifyRights,
+ { "modifyRights", "dap.modifyRights",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ReadResultData/modifyRights", HFILL }},
+ { &hf_dap_unsignedReadResult,
+ { "unsignedReadResult", "dap.unsignedReadResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReadResult/unsignedReadResult", HFILL }},
+ { &hf_dap_signedReadResult,
+ { "signedReadResult", "dap.signedReadResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReadResult/signedReadResult", HFILL }},
+ { &hf_dap_readResult,
+ { "readResult", "dap.readResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReadResult/signedReadResult/readResult", HFILL }},
+ { &hf_dap_ModifyRights_item,
+ { "Item", "dap.ModifyRights_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyRights/_item", HFILL }},
+ { &hf_dap_item,
+ { "item", "dap.item",
+ FT_UINT32, BASE_DEC, VALS(dap_T_item_vals), 0,
+ "ModifyRights/_item/item", HFILL }},
+ { &hf_dap_item_entry,
+ { "entry", "dap.entry",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyRights/_item/item/entry", HFILL }},
+ { &hf_dap_attribute_type,
+ { "attribute", "dap.attribute",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "ModifyRights/_item/item/attribute", HFILL }},
+ { &hf_dap_value_assertion,
+ { "value", "dap.value",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyRights/_item/item/value", HFILL }},
+ { &hf_dap_permission,
+ { "permission", "dap.permission",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "ModifyRights/_item/permission", HFILL }},
+ { &hf_dap_purported,
+ { "purported", "dap.purported",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CompareArgumentData/purported", HFILL }},
+ { &hf_dap_unsignedCompareArgument,
+ { "unsignedCompareArgument", "dap.unsignedCompareArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CompareArgument/unsignedCompareArgument", HFILL }},
+ { &hf_dap_signedCompareArgument,
+ { "signedCompareArgument", "dap.signedCompareArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CompareArgument/signedCompareArgument", HFILL }},
+ { &hf_dap_compareArgument,
+ { "compareArgument", "dap.compareArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CompareArgument/signedCompareArgument/compareArgument", HFILL }},
+ { &hf_dap_matched,
+ { "matched", "dap.matched",
+ FT_BOOLEAN, 8, NULL, 0,
+ "CompareResultData/matched", HFILL }},
+ { &hf_dap_matchedSubtype,
+ { "matchedSubtype", "dap.matchedSubtype",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "CompareResultData/matchedSubtype", HFILL }},
+ { &hf_dap_unsignedCompareResult,
+ { "unsignedCompareResult", "dap.unsignedCompareResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CompareResult/unsignedCompareResult", HFILL }},
+ { &hf_dap_signedCompareResult,
+ { "signedCompareResult", "dap.signedCompareResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CompareResult/signedCompareResult", HFILL }},
+ { &hf_dap_compareResult,
+ { "compareResult", "dap.compareResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CompareResult/signedCompareResult/compareResult", HFILL }},
+ { &hf_dap_invokeID,
+ { "invokeID", "dap.invokeID",
+ FT_UINT32, BASE_DEC, VALS(ros_InvokeId_vals), 0,
+ "", HFILL }},
+ { &hf_dap_unsignedAbandonArgument,
+ { "unsignedAbandonArgument", "dap.unsignedAbandonArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AbandonArgument/unsignedAbandonArgument", HFILL }},
+ { &hf_dap_signedAbandonArgument,
+ { "signedAbandonArgument", "dap.signedAbandonArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AbandonArgument/signedAbandonArgument", HFILL }},
+ { &hf_dap_abandonArgument,
+ { "abandonArgument", "dap.abandonArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AbandonArgument/signedAbandonArgument/abandonArgument", HFILL }},
+ { &hf_dap_null,
+ { "null", "dap.null",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_abandon_information,
+ { "information", "dap.information",
+ FT_UINT32, BASE_DEC, VALS(dap_AbandonInformation_vals), 0,
+ "AbandonResult/information", HFILL }},
+ { &hf_dap_unsignedAbandonResult,
+ { "unsignedAbandonResult", "dap.unsignedAbandonResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AbandonResult/information/unsignedAbandonResult", HFILL }},
+ { &hf_dap_signedAbandonResult,
+ { "signedAbandonResult", "dap.signedAbandonResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AbandonResult/information/signedAbandonResult", HFILL }},
+ { &hf_dap_abandonResult,
+ { "abandonResult", "dap.abandonResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AbandonResult/information/signedAbandonResult/abandonResult", HFILL }},
+ { &hf_dap_pagedResults,
+ { "pagedResults", "dap.pagedResults",
+ FT_UINT32, BASE_DEC, VALS(dap_PagedResultsRequest_vals), 0,
+ "", HFILL }},
+ { &hf_dap_listFamily,
+ { "listFamily", "dap.listFamily",
+ FT_BOOLEAN, 8, NULL, 0,
+ "ListArgumentData/listFamily", HFILL }},
+ { &hf_dap_unsignedListArgument,
+ { "unsignedListArgument", "dap.unsignedListArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ListArgument/unsignedListArgument", HFILL }},
+ { &hf_dap_signedListArgument,
+ { "signedListArgument", "dap.signedListArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ListArgument/signedListArgument", HFILL }},
+ { &hf_dap_listArgument,
+ { "listArgument", "dap.listArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ListArgument/signedListArgument/listArgument", HFILL }},
+ { &hf_dap_listInfo,
+ { "listInfo", "dap.listInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ListResultData/listInfo", HFILL }},
+ { &hf_dap_subordinates,
+ { "subordinates", "dap.subordinates",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ListResultData/listInfo/subordinates", HFILL }},
+ { &hf_dap_subordinates_item,
+ { "Item", "dap.subordinates_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ListResultData/listInfo/subordinates/_item", HFILL }},
+ { &hf_dap_aliasEntry,
+ { "aliasEntry", "dap.aliasEntry",
+ FT_BOOLEAN, 8, NULL, 0,
+ "ListResultData/listInfo/subordinates/_item/aliasEntry", HFILL }},
+ { &hf_dap_partialOutcomeQualifier,
+ { "partialOutcomeQualifier", "dap.partialOutcomeQualifier",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_uncorrelatedListInfo,
+ { "uncorrelatedListInfo", "dap.uncorrelatedListInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ListResultData/uncorrelatedListInfo", HFILL }},
+ { &hf_dap_uncorrelatedListInfo_item,
+ { "Item", "dap.uncorrelatedListInfo_item",
+ FT_UINT32, BASE_DEC, VALS(dap_ListResult_vals), 0,
+ "ListResultData/uncorrelatedListInfo/_item", HFILL }},
+ { &hf_dap_unsignedListResult,
+ { "unsignedListResult", "dap.unsignedListResult",
+ FT_UINT32, BASE_DEC, VALS(dap_ListResultData_vals), 0,
+ "ListResult/unsignedListResult", HFILL }},
+ { &hf_dap_signedListResult,
+ { "signedListResult", "dap.signedListResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ListResult/signedListResult", HFILL }},
+ { &hf_dap_listResult,
+ { "listResult", "dap.listResult",
+ FT_UINT32, BASE_DEC, VALS(dap_ListResultData_vals), 0,
+ "ListResult/signedListResult/listResult", HFILL }},
+ { &hf_dap_limitProblem,
+ { "limitProblem", "dap.limitProblem",
+ FT_INT32, BASE_DEC, VALS(dap_LimitProblem_vals), 0,
+ "PartialOutcomeQualifier/limitProblem", HFILL }},
+ { &hf_dap_unexplored,
+ { "unexplored", "dap.unexplored",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "PartialOutcomeQualifier/unexplored", HFILL }},
+ { &hf_dap_unexplored_item,
+ { "Item", "dap.unexplored_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PartialOutcomeQualifier/unexplored/_item", HFILL }},
+ { &hf_dap_unavailableCriticalExtensions,
+ { "unavailableCriticalExtensions", "dap.unavailableCriticalExtensions",
+ FT_BOOLEAN, 8, NULL, 0,
+ "PartialOutcomeQualifier/unavailableCriticalExtensions", HFILL }},
+ { &hf_dap_unknownErrors,
+ { "unknownErrors", "dap.unknownErrors",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "PartialOutcomeQualifier/unknownErrors", HFILL }},
+ { &hf_dap_unknownErrors_item,
+ { "Item", "dap.unknownErrors_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "PartialOutcomeQualifier/unknownErrors/_item", HFILL }},
+ { &hf_dap_overspecFilter,
+ { "overspecFilter", "dap.overspecFilter",
+ FT_UINT32, BASE_DEC, VALS(dap_Filter_vals), 0,
+ "PartialOutcomeQualifier/overspecFilter", HFILL }},
+ { &hf_dap_entryCount,
+ { "entryCount", "dap.entryCount",
+ FT_UINT32, BASE_DEC, VALS(dap_T_entryCount_vals), 0,
+ "PartialOutcomeQualifier/entryCount", HFILL }},
+ { &hf_dap_bestEstimate,
+ { "bestEstimate", "dap.bestEstimate",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "PartialOutcomeQualifier/entryCount/bestEstimate", HFILL }},
+ { &hf_dap_lowEstimate,
+ { "lowEstimate", "dap.lowEstimate",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "PartialOutcomeQualifier/entryCount/lowEstimate", HFILL }},
+ { &hf_dap_baseObject,
+ { "baseObject", "dap.baseObject",
+ FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
+ "SearchArgumentData/baseObject", HFILL }},
+ { &hf_dap_subset,
+ { "subset", "dap.subset",
+ FT_INT32, BASE_DEC, VALS(dap_T_subset_vals), 0,
+ "SearchArgumentData/subset", HFILL }},
+ { &hf_dap_filter,
+ { "filter", "dap.filter",
+ FT_UINT32, BASE_DEC, VALS(dap_Filter_vals), 0,
+ "SearchArgumentData/filter", HFILL }},
+ { &hf_dap_searchAliases,
+ { "searchAliases", "dap.searchAliases",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SearchArgumentData/searchAliases", HFILL }},
+ { &hf_dap_matchedValuesOnly,
+ { "matchedValuesOnly", "dap.matchedValuesOnly",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SearchArgumentData/matchedValuesOnly", HFILL }},
+ { &hf_dap_extendedFilter,
+ { "extendedFilter", "dap.extendedFilter",
+ FT_UINT32, BASE_DEC, VALS(dap_Filter_vals), 0,
+ "SearchArgumentData/extendedFilter", HFILL }},
+ { &hf_dap_checkOverspecified,
+ { "checkOverspecified", "dap.checkOverspecified",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SearchArgumentData/checkOverspecified", HFILL }},
+ { &hf_dap_relaxation,
+ { "relaxation", "dap.relaxation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchArgumentData/relaxation", HFILL }},
+ { &hf_dap_extendedArea,
+ { "extendedArea", "dap.extendedArea",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "SearchArgumentData/extendedArea", HFILL }},
+ { &hf_dap_hierarchySelections,
+ { "hierarchySelections", "dap.hierarchySelections",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SearchArgumentData/hierarchySelections", HFILL }},
+ { &hf_dap_searchControlOptions,
+ { "searchControlOptions", "dap.searchControlOptions",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SearchArgumentData/searchControlOptions", HFILL }},
+ { &hf_dap_joinArguments,
+ { "joinArguments", "dap.joinArguments",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SearchArgumentData/joinArguments", HFILL }},
+ { &hf_dap_joinArguments_item,
+ { "Item", "dap.joinArguments_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchArgumentData/joinArguments/_item", HFILL }},
+ { &hf_dap_joinType,
+ { "joinType", "dap.joinType",
+ FT_UINT32, BASE_DEC, VALS(dap_T_joinType_vals), 0,
+ "SearchArgumentData/joinType", HFILL }},
+ { &hf_dap_unsignedSearchArgument,
+ { "unsignedSearchArgument", "dap.unsignedSearchArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchArgument/unsignedSearchArgument", HFILL }},
+ { &hf_dap_signedSearchArgument,
+ { "signedSearchArgument", "dap.signedSearchArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchArgument/signedSearchArgument", HFILL }},
+ { &hf_dap_searchArgument,
+ { "searchArgument", "dap.searchArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchArgument/signedSearchArgument/searchArgument", HFILL }},
+ { &hf_dap_joinBaseObject,
+ { "joinBaseObject", "dap.joinBaseObject",
+ FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
+ "JoinArgument/joinBaseObject", HFILL }},
+ { &hf_dap_domainLocalID,
+ { "domainLocalID", "dap.domainLocalID",
+ FT_UINT32, BASE_DEC, VALS(dap_DirectoryString_vals), 0,
+ "JoinArgument/domainLocalID", HFILL }},
+ { &hf_dap_joinSubset,
+ { "joinSubset", "dap.joinSubset",
+ FT_UINT32, BASE_DEC, VALS(dap_T_joinSubset_vals), 0,
+ "JoinArgument/joinSubset", HFILL }},
+ { &hf_dap_joinFilter,
+ { "joinFilter", "dap.joinFilter",
+ FT_UINT32, BASE_DEC, VALS(dap_Filter_vals), 0,
+ "JoinArgument/joinFilter", HFILL }},
+ { &hf_dap_joinAttributes,
+ { "joinAttributes", "dap.joinAttributes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "JoinArgument/joinAttributes", HFILL }},
+ { &hf_dap_joinAttributes_item,
+ { "Item", "dap.joinAttributes_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "JoinArgument/joinAttributes/_item", HFILL }},
+ { &hf_dap_joinSelection,
+ { "joinSelection", "dap.joinSelection",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "JoinArgument/joinSelection", HFILL }},
+ { &hf_dap_baseAtt,
+ { "baseAtt", "dap.baseAtt",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "JoinAttPair/baseAtt", HFILL }},
+ { &hf_dap_joinAtt,
+ { "joinAtt", "dap.joinAtt",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "JoinAttPair/joinAtt", HFILL }},
+ { &hf_dap_joinContext,
+ { "joinContext", "dap.joinContext",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "JoinAttPair/joinContext", HFILL }},
+ { &hf_dap_joinContext_item,
+ { "Item", "dap.joinContext_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "JoinAttPair/joinContext/_item", HFILL }},
+ { &hf_dap_searchInfo,
+ { "searchInfo", "dap.searchInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchResultData/searchInfo", HFILL }},
+ { &hf_dap_entries,
+ { "entries", "dap.entries",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SearchResultData/searchInfo/entries", HFILL }},
+ { &hf_dap_entries_item,
+ { "Item", "dap.entries_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchResultData/searchInfo/entries/_item", HFILL }},
+ { &hf_dap_altMatching,
+ { "altMatching", "dap.altMatching",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SearchResultData/searchInfo/altMatching", HFILL }},
+ { &hf_dap_uncorrelatedSearchInfo,
+ { "uncorrelatedSearchInfo", "dap.uncorrelatedSearchInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SearchResultData/uncorrelatedSearchInfo", HFILL }},
+ { &hf_dap_uncorrelatedSearchInfo_item,
+ { "Item", "dap.uncorrelatedSearchInfo_item",
+ FT_UINT32, BASE_DEC, VALS(dap_SearchResult_vals), 0,
+ "SearchResultData/uncorrelatedSearchInfo/_item", HFILL }},
+ { &hf_dap_unsignedSearchResult,
+ { "unsignedSearchResult", "dap.unsignedSearchResult",
+ FT_UINT32, BASE_DEC, VALS(dap_SearchResultData_vals), 0,
+ "SearchResult/unsignedSearchResult", HFILL }},
+ { &hf_dap_signedSearchResult,
+ { "signedSearchResult", "dap.signedSearchResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchResult/signedSearchResult", HFILL }},
+ { &hf_dap_searchResult,
+ { "searchResult", "dap.searchResult",
+ FT_UINT32, BASE_DEC, VALS(dap_SearchResultData_vals), 0,
+ "SearchResult/signedSearchResult/searchResult", HFILL }},
+ { &hf_dap_add_entry,
+ { "entry", "dap.entry",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AddEntryArgumentData/entry", HFILL }},
+ { &hf_dap_entry_item,
+ { "Item", "dap.entry_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AddEntryArgumentData/entry/_item", HFILL }},
+ { &hf_dap_targetSystem,
+ { "targetSystem", "dap.targetSystem",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AddEntryArgumentData/targetSystem", HFILL }},
+ { &hf_dap_unsignedAddEntryArgument,
+ { "unsignedAddEntryArgument", "dap.unsignedAddEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AddEntryArgument/unsignedAddEntryArgument", HFILL }},
+ { &hf_dap_signedAddEntryArgument,
+ { "signedAddEntryArgument", "dap.signedAddEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AddEntryArgument/signedAddEntryArgument", HFILL }},
+ { &hf_dap_addEntryArgument,
+ { "addEntryArgument", "dap.addEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AddEntryArgument/signedAddEntryArgument/addEntryArgument", HFILL }},
+ { &hf_dap_add_entry_information,
+ { "information", "dap.information",
+ FT_UINT32, BASE_DEC, VALS(dap_AddEntryInformation_vals), 0,
+ "AddEntryResult/information", HFILL }},
+ { &hf_dap_unsignedAddEntryResult,
+ { "unsignedAddEntryResult", "dap.unsignedAddEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AddEntryResult/information/unsignedAddEntryResult", HFILL }},
+ { &hf_dap_signedAddEntryResult,
+ { "signedAddEntryResult", "dap.signedAddEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AddEntryResult/information/signedAddEntryResult", HFILL }},
+ { &hf_dap_addEntryResult,
+ { "addEntryResult", "dap.addEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AddEntryResult/information/signedAddEntryResult/addEntryResult", HFILL }},
+ { &hf_dap_unsignedRemoveEntryArgument,
+ { "unsignedRemoveEntryArgument", "dap.unsignedRemoveEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RemoveEntryArgument/unsignedRemoveEntryArgument", HFILL }},
+ { &hf_dap_signedRemoveEntryArgument,
+ { "signedRemoveEntryArgument", "dap.signedRemoveEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RemoveEntryArgument/signedRemoveEntryArgument", HFILL }},
+ { &hf_dap_removeEntryArgument,
+ { "removeEntryArgument", "dap.removeEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RemoveEntryArgument/signedRemoveEntryArgument/removeEntryArgument", HFILL }},
+ { &hf_dap_remove_entry_information,
+ { "information", "dap.information",
+ FT_UINT32, BASE_DEC, VALS(dap_RemoveEntryInformation_vals), 0,
+ "RemoveEntryResult/information", HFILL }},
+ { &hf_dap_unsignedRemoveEntryResult,
+ { "unsignedRemoveEntryResult", "dap.unsignedRemoveEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RemoveEntryResult/information/unsignedRemoveEntryResult", HFILL }},
+ { &hf_dap_signedRemoveEntryResult,
+ { "signedRemoveEntryResult", "dap.signedRemoveEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RemoveEntryResult/information/signedRemoveEntryResult", HFILL }},
+ { &hf_dap_removeEntryResult,
+ { "removeEntryResult", "dap.removeEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RemoveEntryResult/information/signedRemoveEntryResult/removeEntryResult", HFILL }},
+ { &hf_dap_changes,
+ { "changes", "dap.changes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ModifyEntryArgumentData/changes", HFILL }},
+ { &hf_dap_changes_item,
+ { "Item", "dap.changes_item",
+ FT_UINT32, BASE_DEC, VALS(dap_EntryModification_vals), 0,
+ "ModifyEntryArgumentData/changes/_item", HFILL }},
+ { &hf_dap_unsignedModifyEntryArgument,
+ { "unsignedModifyEntryArgument", "dap.unsignedModifyEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyEntryArgument/unsignedModifyEntryArgument", HFILL }},
+ { &hf_dap_signedModifyEntryArgument,
+ { "signedModifyEntryArgument", "dap.signedModifyEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyEntryArgument/signedModifyEntryArgument", HFILL }},
+ { &hf_dap_modifyEntryArgument,
+ { "modifyEntryArgument", "dap.modifyEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyEntryArgument/signedModifyEntryArgument/modifyEntryArgument", HFILL }},
+ { &hf_dap_modify_entry_information,
+ { "information", "dap.information",
+ FT_UINT32, BASE_DEC, VALS(dap_ModifyEntryInformation_vals), 0,
+ "ModifyEntryResult/information", HFILL }},
+ { &hf_dap_unsignedModifyEntryResult,
+ { "unsignedModifyEntryResult", "dap.unsignedModifyEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyEntryResult/information/unsignedModifyEntryResult", HFILL }},
+ { &hf_dap_signedModifyEntryResult,
+ { "signedModifyEntryResult", "dap.signedModifyEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyEntryResult/information/signedModifyEntryResult", HFILL }},
+ { &hf_dap_modifyEntryResult,
+ { "modifyEntryResult", "dap.modifyEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyEntryResult/information/signedModifyEntryResult/modifyEntryResult", HFILL }},
+ { &hf_dap_addAttribute,
+ { "addAttribute", "dap.addAttribute",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EntryModification/addAttribute", HFILL }},
+ { &hf_dap_removeAttribute,
+ { "removeAttribute", "dap.removeAttribute",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "EntryModification/removeAttribute", HFILL }},
+ { &hf_dap_addValues,
+ { "addValues", "dap.addValues",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EntryModification/addValues", HFILL }},
+ { &hf_dap_removeValues,
+ { "removeValues", "dap.removeValues",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EntryModification/removeValues", HFILL }},
+ { &hf_dap_alterValues,
+ { "alterValues", "dap.alterValues",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EntryModification/alterValues", HFILL }},
+ { &hf_dap_resetValue,
+ { "resetValue", "dap.resetValue",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "EntryModification/resetValue", HFILL }},
+ { &hf_dap_newRDN,
+ { "newRDN", "dap.newRDN",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dap_deleteOldRDN,
+ { "deleteOldRDN", "dap.deleteOldRDN",
+ FT_BOOLEAN, 8, NULL, 0,
+ "ModifyDNArgument/deleteOldRDN", HFILL }},
+ { &hf_dap_newSuperior,
+ { "newSuperior", "dap.newSuperior",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ModifyDNArgument/newSuperior", HFILL }},
+ { &hf_dap_modify_dn_information,
+ { "information", "dap.information",
+ FT_UINT32, BASE_DEC, VALS(dap_ModifyDNInformation_vals), 0,
+ "ModifyDNResult/information", HFILL }},
+ { &hf_dap_unsignedModifyDNResult,
+ { "unsignedModifyDNResult", "dap.unsignedModifyDNResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyDNResult/information/unsignedModifyDNResult", HFILL }},
+ { &hf_dap_signedModifyDNResult,
+ { "signedModifyDNResult", "dap.signedModifyDNResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyDNResult/information/signedModifyDNResult", HFILL }},
+ { &hf_dap_modifyDNResult,
+ { "modifyDNResult", "dap.modifyDNResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModifyDNResult/information/signedModifyDNResult/modifyDNResult", HFILL }},
+ { &hf_dap_unsignedAbandoned,
+ { "unsignedAbandoned", "dap.unsignedAbandoned",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Abandoned/unsignedAbandoned", HFILL }},
+ { &hf_dap_signedAbandoned,
+ { "signedAbandoned", "dap.signedAbandoned",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Abandoned/signedAbandoned", HFILL }},
+ { &hf_dap_abandoned,
+ { "abandoned", "dap.abandoned",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Abandoned/signedAbandoned/abandoned", HFILL }},
+ { &hf_dap_abandon_failed_problem,
+ { "problem", "dap.problem",
+ FT_INT32, BASE_DEC, VALS(dap_AbandonProblem_vals), 0,
+ "AbandonFailedErrorData/problem", HFILL }},
+ { &hf_dap_operation,
+ { "operation", "dap.operation",
+ FT_UINT32, BASE_DEC, VALS(ros_InvokeId_vals), 0,
+ "AbandonFailedErrorData/operation", HFILL }},
+ { &hf_dap_unsignedAbandonFailedError,
+ { "unsignedAbandonFailedError", "dap.unsignedAbandonFailedError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AbandonFailedError/unsignedAbandonFailedError", HFILL }},
+ { &hf_dap_signedAbandonFailedError,
+ { "signedAbandonFailedError", "dap.signedAbandonFailedError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AbandonFailedError/signedAbandonFailedError", HFILL }},
+ { &hf_dap_abandonFailedError,
+ { "abandonFailedError", "dap.abandonFailedError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AbandonFailedError/signedAbandonFailedError/abandonFailedError", HFILL }},
+ { &hf_dap_problems,
+ { "problems", "dap.problems",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AttributeErrorData/problems", HFILL }},
+ { &hf_dap_problems_item,
+ { "Item", "dap.problems_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeErrorData/problems/_item", HFILL }},
+ { &hf_dap_attribute_error_problem,
+ { "problem", "dap.problem",
+ FT_INT32, BASE_DEC, VALS(dap_AttributeProblem_vals), 0,
+ "AttributeErrorData/problems/_item/problem", HFILL }},
+ { &hf_dap_value,
+ { "value", "dap.value",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeErrorData/problems/_item/value", HFILL }},
+ { &hf_dap_unsignedAttributeError,
+ { "unsignedAttributeError", "dap.unsignedAttributeError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeError/unsignedAttributeError", HFILL }},
+ { &hf_dap_signedAttributeError,
+ { "signedAttributeError", "dap.signedAttributeError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeError/signedAttributeError", HFILL }},
+ { &hf_dap_attributeError,
+ { "attributeError", "dap.attributeError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeError/signedAttributeError/attributeError", HFILL }},
+ { &hf_dap_name_error_problem,
+ { "problem", "dap.problem",
+ FT_INT32, BASE_DEC, VALS(dap_NameProblem_vals), 0,
+ "NameErrorData/problem", HFILL }},
+ { &hf_dap_matched_name,
+ { "matched", "dap.matched",
+ FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
+ "NameErrorData/matched", HFILL }},
+ { &hf_dap_unsignedNameError,
+ { "unsignedNameError", "dap.unsignedNameError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "NameError/unsignedNameError", HFILL }},
+ { &hf_dap_signedNameError,
+ { "signedNameError", "dap.signedNameError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "NameError/signedNameError", HFILL }},
+ { &hf_dap_nameError,
+ { "nameError", "dap.nameError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "NameError/signedNameError/nameError", HFILL }},
+ { &hf_dap_candidate,
+ { "candidate", "dap.candidate",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReferralData/candidate", HFILL }},
+ { &hf_dap_unsignedReferral,
+ { "unsignedReferral", "dap.unsignedReferral",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Referral/unsignedReferral", HFILL }},
+ { &hf_dap_signedReferral,
+ { "signedReferral", "dap.signedReferral",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Referral/signedReferral", HFILL }},
+ { &hf_dap_referral,
+ { "referral", "dap.referral",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Referral/signedReferral/referral", HFILL }},
+ { &hf_dap_security_error_problem,
+ { "problem", "dap.problem",
+ FT_INT32, BASE_DEC, VALS(dap_SecurityProblem_vals), 0,
+ "SecurityErrorData/problem", HFILL }},
+ { &hf_dap_spkmInfo,
+ { "spkmInfo", "dap.spkmInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SecurityErrorData/spkmInfo", HFILL }},
+ { &hf_dap_unsignedSecurityError,
+ { "unsignedSecurityError", "dap.unsignedSecurityError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SecurityError/unsignedSecurityError", HFILL }},
+ { &hf_dap_signedSecurityError,
+ { "signedSecurityError", "dap.signedSecurityError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SecurityError/signedSecurityError", HFILL }},
+ { &hf_dap_securityErrorData,
+ { "securityError", "dap.securityError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SecurityError/signedSecurityError/securityError", HFILL }},
+ { &hf_dap_service_error_problem,
+ { "problem", "dap.problem",
+ FT_INT32, BASE_DEC, VALS(dap_ServiceProblem_vals), 0,
+ "ServiceErrorData/problem", HFILL }},
+ { &hf_dap_unsignedServiceError,
+ { "unsignedServiceError", "dap.unsignedServiceError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ServiceError/unsignedServiceError", HFILL }},
+ { &hf_dap_signedServiceError,
+ { "signedServiceError", "dap.signedServiceError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ServiceError/signedServiceError", HFILL }},
+ { &hf_dap_serviceError,
+ { "serviceError", "dap.serviceError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ServiceError/signedServiceError/serviceError", HFILL }},
+ { &hf_dap_update_error_problem,
+ { "problem", "dap.problem",
+ FT_INT32, BASE_DEC, VALS(dap_UpdateProblem_vals), 0,
+ "UpdateErrorData/problem", HFILL }},
+ { &hf_dap_attributeInfo,
+ { "attributeInfo", "dap.attributeInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UpdateErrorData/attributeInfo", HFILL }},
+ { &hf_dap_attributeInfo_item,
+ { "Item", "dap.attributeInfo_item",
+ FT_UINT32, BASE_DEC, VALS(dap_T_attributeInfo_item_vals), 0,
+ "UpdateErrorData/attributeInfo/_item", HFILL }},
+ { &hf_dap_unsignedUpdateError,
+ { "unsignedUpdateError", "dap.unsignedUpdateError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UpdateError/unsignedUpdateError", HFILL }},
+ { &hf_dap_signedUpdateError,
+ { "signedUpdateError", "dap.signedUpdateError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UpdateError/signedUpdateError", HFILL }},
+ { &hf_dap_updateError,
+ { "updateError", "dap.updateError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UpdateError/signedUpdateError/updateError", HFILL }},
+ { &hf_dap_identifier,
+ { "identifier", "dap.identifier",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "OperationalBindingID/identifier", HFILL }},
+ { &hf_dap_version,
+ { "version", "dap.version",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "OperationalBindingID/version", HFILL }},
+ { &hf_dap_teletexString,
+ { "teletexString", "dap.teletexString",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DirectoryString/teletexString", HFILL }},
+ { &hf_dap_printableString,
+ { "printableString", "dap.printableString",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DirectoryString/printableString", HFILL }},
+ { &hf_dap_universalString,
+ { "universalString", "dap.universalString",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DirectoryString/universalString", HFILL }},
+ { &hf_dap_bmpString,
+ { "bmpString", "dap.bmpString",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DirectoryString/bmpString", HFILL }},
+ { &hf_dap_uTF8String,
+ { "uTF8String", "dap.uTF8String",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DirectoryString/uTF8String", HFILL }},
+ { &hf_dap_ServiceControlOptions_preferChaining,
+ { "preferChaining", "dap.preferChaining",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_chainingProhibited,
+ { "chainingProhibited", "dap.chainingProhibited",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_localScope,
+ { "localScope", "dap.localScope",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_dontUseCopy,
+ { "dontUseCopy", "dap.dontUseCopy",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_dontDereferenceAliases,
+ { "dontDereferenceAliases", "dap.dontDereferenceAliases",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_subentries,
+ { "subentries", "dap.subentries",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_copyShallDo,
+ { "copyShallDo", "dap.copyShallDo",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_partialNameResolution,
+ { "partialNameResolution", "dap.partialNameResolution",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_manageDSAIT,
+ { "manageDSAIT", "dap.manageDSAIT",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_noSubtypeMatch,
+ { "noSubtypeMatch", "dap.noSubtypeMatch",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_noSubtypeSelection,
+ { "noSubtypeSelection", "dap.noSubtypeSelection",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_dap_ServiceControlOptions_countFamily,
+ { "countFamily", "dap.countFamily",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_dap_Versions_v1,
+ { "v1", "dap.v1",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_dap_Versions_v2,
+ { "v2", "dap.v2",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_dap_T_permission_add,
+ { "add", "dap.add",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_dap_T_permission_remove,
+ { "remove", "dap.remove",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_dap_T_permission_rename,
+ { "rename", "dap.rename",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_dap_T_permission_move,
+ { "move", "dap.move",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_self,
+ { "self", "dap.self",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_children,
+ { "children", "dap.children",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_parent,
+ { "parent", "dap.parent",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_hierarchy,
+ { "hierarchy", "dap.hierarchy",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_top,
+ { "top", "dap.top",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_subtree,
+ { "subtree", "dap.subtree",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_siblings,
+ { "siblings", "dap.siblings",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_siblingChildren,
+ { "siblingChildren", "dap.siblingChildren",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_siblingSubtree,
+ { "siblingSubtree", "dap.siblingSubtree",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_dap_HierarchySelections_all,
+ { "all", "dap.all",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_searchAliases,
+ { "searchAliases", "dap.searchAliases",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_matchedValuesOnly,
+ { "matchedValuesOnly", "dap.matchedValuesOnly",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_checkOverspecified,
+ { "checkOverspecified", "dap.checkOverspecified",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_performExactly,
+ { "performExactly", "dap.performExactly",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_includeAllAreas,
+ { "includeAllAreas", "dap.includeAllAreas",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_noSystemRelaxation,
+ { "noSystemRelaxation", "dap.noSystemRelaxation",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_dnAttribute,
+ { "dnAttribute", "dap.dnAttribute",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_matchOnResidualName,
+ { "matchOnResidualName", "dap.matchOnResidualName",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_entryCount,
+ { "entryCount", "dap.entryCount",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_useSubset,
+ { "useSubset", "dap.useSubset",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_separateFamilyMembers,
+ { "separateFamilyMembers", "dap.separateFamilyMembers",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_dap_SearchControlOptions_searchFamily,
+ { "searchFamily", "dap.searchFamily",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+
+/*--- End of included file: packet-dap-hfarr.c ---*/
+
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_dap,
+
+/*--- Included file: packet-dap-ettarr.c ---*/
+
+ &ett_dap_CommonResults,
+ &ett_dap_SEQUENCE_OF_Attribute,
+ &ett_dap_ServiceControls,
+ &ett_dap_T_manageDSAITPlaneRef,
+ &ett_dap_ServiceControlOptions,
+ &ett_dap_EntryInformationSelection,
+ &ett_dap_T_attributes,
+ &ett_dap_SET_OF_AttributeType,
+ &ett_dap_T_extraAttributes,
+ &ett_dap_ContextSelection,
+ &ett_dap_SET_OF_TypeAndContextAssertion,
+ &ett_dap_TypeAndContextAssertion,
+ &ett_dap_T_contextAssertions,
+ &ett_dap_SEQUENCE_OF_ContextAssertion,
+ &ett_dap_SET_OF_ContextAssertion,
+ &ett_dap_FamilyReturn,
+ &ett_dap_T_familySelect,
+ &ett_dap_EntryInformation,
+ &ett_dap_T_information,
+ &ett_dap_EntryInformationItem,
+ &ett_dap_FamilyEntries,
+ &ett_dap_SEQUENCE_OF_FamilyEntry,
+ &ett_dap_FamilyEntry,
+ &ett_dap_FamilyInformation,
+ &ett_dap_T_information_item,
+ &ett_dap_SEQUENCE_OF_FamilyEntries,
+ &ett_dap_Filter,
+ &ett_dap_SetOfFilter,
+ &ett_dap_FilterItem,
+ &ett_dap_T_substrings,
+ &ett_dap_T_strings,
+ &ett_dap_T_strings_item,
+ &ett_dap_MatchingRuleAssertion,
+ &ett_dap_T_matchingRule,
+ &ett_dap_PagedResultsRequest,
+ &ett_dap_T_newRequest,
+ &ett_dap_SEQUENCE_OF_SortKey,
+ &ett_dap_SortKey,
+ &ett_dap_SecurityParameters,
+ &ett_dap_Time,
+ &ett_dap_DirectoryBindArgument,
+ &ett_dap_Credentials,
+ &ett_dap_SimpleCredentials,
+ &ett_dap_T_validity,
+ &ett_dap_T_time1,
+ &ett_dap_T_time2,
+ &ett_dap_T_password,
+ &ett_dap_T_protected,
+ &ett_dap_StrongCredentials,
+ &ett_dap_SpkmCredentials,
+ &ett_dap_Versions,
+ &ett_dap_DirectoryBindErrorData,
+ &ett_dap_T_error,
+ &ett_dap_DirectoryBindError,
+ &ett_dap_T_signedDirectoryBindError,
+ &ett_dap_ReadArgumentData,
+ &ett_dap_Name,
+ &ett_dap_ReadArgument,
+ &ett_dap_T_signedReadArgument,
+ &ett_dap_ReadResultData,
+ &ett_dap_ReadResult,
+ &ett_dap_T_signedReadResult,
+ &ett_dap_ModifyRights,
+ &ett_dap_ModifyRights_item,
+ &ett_dap_T_item,
+ &ett_dap_T_permission,
+ &ett_dap_CompareArgumentData,
+ &ett_dap_CompareArgument,
+ &ett_dap_T_signedCompareArgument,
+ &ett_dap_CompareResultData,
+ &ett_dap_CompareResult,
+ &ett_dap_T_signedCompareResult,
+ &ett_dap_AbandonArgumentData,
+ &ett_dap_AbandonArgument,
+ &ett_dap_T_signedAbandonArgument,
+ &ett_dap_AbandonResultData,
+ &ett_dap_AbandonResult,
+ &ett_dap_AbandonInformation,
+ &ett_dap_T_signedAbandonResult,
+ &ett_dap_ListArgumentData,
+ &ett_dap_ListArgument,
+ &ett_dap_T_signedListArgument,
+ &ett_dap_ListResultData,
+ &ett_dap_T_listInfo,
+ &ett_dap_T_subordinates,
+ &ett_dap_T_subordinates_item,
+ &ett_dap_SET_OF_ListResult,
+ &ett_dap_ListResult,
+ &ett_dap_T_signedListResult,
+ &ett_dap_PartialOutcomeQualifier,
+ &ett_dap_SET_OF_ContinuationReference,
+ &ett_dap_T_unknownErrors,
+ &ett_dap_T_entryCount,
+ &ett_dap_SearchArgumentData,
+ &ett_dap_SEQUENCE_SIZE_1_MAX_OF_JoinArgument,
+ &ett_dap_SearchArgument,
+ &ett_dap_T_signedSearchArgument,
+ &ett_dap_HierarchySelections,
+ &ett_dap_SearchControlOptions,
+ &ett_dap_JoinArgument,
+ &ett_dap_SEQUENCE_OF_JoinAttPair,
+ &ett_dap_JoinAttPair,
+ &ett_dap_SEQUENCE_OF_JoinContextType,
+ &ett_dap_SearchResultData,
+ &ett_dap_T_searchInfo,
+ &ett_dap_SET_OF_EntryInformation,
+ &ett_dap_SET_OF_SearchResult,
+ &ett_dap_SearchResult,
+ &ett_dap_T_signedSearchResult,
+ &ett_dap_AddEntryArgumentData,
+ &ett_dap_SET_OF_Attribute,
+ &ett_dap_AddEntryArgument,
+ &ett_dap_T_signedAddEntryArgument,
+ &ett_dap_AddEntryResultData,
+ &ett_dap_AddEntryResult,
+ &ett_dap_AddEntryInformation,
+ &ett_dap_T_signedAddEntryResult,
+ &ett_dap_RemoveEntryArgumentData,
+ &ett_dap_RemoveEntryArgument,
+ &ett_dap_T_signedRemoveEntryArgument,
+ &ett_dap_RemoveEntryResultData,
+ &ett_dap_RemoveEntryResult,
+ &ett_dap_RemoveEntryInformation,
+ &ett_dap_T_signedRemoveEntryResult,
+ &ett_dap_ModifyEntryArgumentData,
+ &ett_dap_SEQUENCE_OF_EntryModification,
+ &ett_dap_ModifyEntryArgument,
+ &ett_dap_T_signedModifyEntryArgument,
+ &ett_dap_ModifyEntryResultData,
+ &ett_dap_ModifyEntryResult,
+ &ett_dap_ModifyEntryInformation,
+ &ett_dap_T_signedModifyEntryResult,
+ &ett_dap_EntryModification,
+ &ett_dap_ModifyDNArgument,
+ &ett_dap_ModifyDNResultData,
+ &ett_dap_ModifyDNResult,
+ &ett_dap_ModifyDNInformation,
+ &ett_dap_T_signedModifyDNResult,
+ &ett_dap_AbandonedData,
+ &ett_dap_Abandoned,
+ &ett_dap_T_signedAbandoned,
+ &ett_dap_AbandonFailedErrorData,
+ &ett_dap_AbandonFailedError,
+ &ett_dap_T_signedAbandonFailedError,
+ &ett_dap_AttributeErrorData,
+ &ett_dap_T_problems,
+ &ett_dap_T_problems_item,
+ &ett_dap_AttributeError,
+ &ett_dap_T_signedAttributeError,
+ &ett_dap_NameErrorData,
+ &ett_dap_NameError,
+ &ett_dap_T_signedNameError,
+ &ett_dap_ReferralData,
+ &ett_dap_Referral,
+ &ett_dap_T_signedReferral,
+ &ett_dap_SecurityErrorData,
+ &ett_dap_SecurityError,
+ &ett_dap_T_signedSecurityError,
+ &ett_dap_ServiceErrorData,
+ &ett_dap_ServiceError,
+ &ett_dap_T_signedServiceError,
+ &ett_dap_UpdateErrorData,
+ &ett_dap_T_attributeInfo,
+ &ett_dap_T_attributeInfo_item,
+ &ett_dap_UpdateError,
+ &ett_dap_T_signedUpdateError,
+ &ett_dap_OperationalBindingID,
+ &ett_dap_DirectoryString,
+
+/*--- End of included file: packet-dap-ettarr.c ---*/
+
+ };
+ module_t *dap_module;
+
+ /* Register protocol */
+ proto_dap = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ register_dissector("dap", dissect_dap, proto_dap);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_dap, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register our configuration options for DAP, particularly our port */
+
+ dap_module = prefs_register_protocol(proto_dap, prefs_register_dap);
+
+ prefs_register_uint_preference(dap_module, "tcp.port", "DAP TCP Port",
+ "Set the port for DAP operations (if other"
+ " than the default of 102)",
+ 10, &global_dap_tcp_port);
+
+}
+
+
+/*--- proto_reg_handoff_dap --- */
+void proto_reg_handoff_dap(void) {
+ dissector_handle_t handle = NULL;
+
+ /* #include "packet-dap-dis-tab.c" */
+
+ /* APPLICATION CONTEXT */
+
+ register_ber_oid_name("2.5.3.1", "id-ac-directory-access");
+
+ /* ABSTRACT SYNTAXES */
+
+ /* Register DAP with ROS (with no use of RTSE) */
+ if((handle = find_dissector("dap"))) {
+ register_ros_oid_dissector_handle("2.5.9.1", handle, 0, "id-as-directory-access", FALSE);
+ }
+
+ /* remember the tpkt handler for change in preferences */
+ tpkt_handle = find_dissector("tpkt");
+
+}
+
+
+void prefs_register_dap(void) {
+
+ /* de-register the old port */
+ /* port 102 is registered by TPKT - don't undo this! */
+ if((tcp_port != 102) && tpkt_handle)
+ dissector_delete("tcp.port", tcp_port, tpkt_handle);
+
+ /* Set our port number for future use */
+ tcp_port = global_dap_tcp_port;
+
+ if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
+ dissector_add("tcp.port", global_dap_tcp_port, tpkt_handle);
+
+}
diff --git a/epan/dissectors/packet-dap.h b/epan/dissectors/packet-dap.h
new file mode 100644
index 0000000000..1819c597c0
--- /dev/null
+++ b/epan/dissectors/packet-dap.h
@@ -0,0 +1,104 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-dap.h */
+/* ../../tools/asn2eth.py -X -b -e -p dap -c dap.cnf -s packet-dap-template dap.asn */
+
+/* Input file: packet-dap-template.h */
+
+/* packet-dap.h
+ * Routines for X.511 (X.500 Directory Access Protocol) packet dissection
+ * Graeme Lunt 2005
+ *
+ * $Id: packet-dap-template.h 14773 2005-06-26 10:59:15Z etxrab $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PACKET_DAP_H
+#define PACKET_DAP_H
+
+
+/*--- Included file: packet-dap-exp.h ---*/
+
+extern const value_string dap_ContextSelection_vals[];
+extern const value_string dap_DirectoryBindError_vals[];
+extern const value_string dap_ReadArgument_vals[];
+extern const value_string dap_ReadResult_vals[];
+extern const value_string dap_CompareArgument_vals[];
+extern const value_string dap_CompareResult_vals[];
+extern const value_string dap_AbandonArgument_vals[];
+extern const value_string dap_AbandonResult_vals[];
+extern const value_string dap_ListArgument_vals[];
+extern const value_string dap_ListResult_vals[];
+extern const value_string dap_SearchArgument_vals[];
+extern const value_string dap_SearchResult_vals[];
+extern const value_string dap_AddEntryArgument_vals[];
+extern const value_string dap_AddEntryResult_vals[];
+extern const value_string dap_RemoveEntryArgument_vals[];
+extern const value_string dap_RemoveEntryResult_vals[];
+extern const value_string dap_ModifyEntryArgument_vals[];
+extern const value_string dap_ModifyEntryResult_vals[];
+extern const value_string dap_EntryModification_vals[];
+extern const value_string dap_ModifyDNResult_vals[];
+extern const value_string dap_Abandoned_vals[];
+extern const value_string dap_AbandonFailedError_vals[];
+extern const value_string dap_AttributeError_vals[];
+extern const value_string dap_NameError_vals[];
+extern const value_string dap_Referral_vals[];
+extern const value_string dap_SecurityError_vals[];
+extern const value_string dap_ServiceError_vals[];
+extern const value_string dap_UpdateError_vals[];
+int dissect_dap_CommonResults(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ContextSelection(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_SecurityParameters(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_DirectoryBindArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_DirectoryBindError(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ReadArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ReadResult(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_CompareArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_CompareResult(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_AbandonArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_AbandonResult(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ListArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ListResult(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_SearchArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_SearchResult(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_AddEntryArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_AddEntryResult(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_RemoveEntryArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_RemoveEntryResult(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ModifyEntryArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ModifyEntryResult(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_EntryModification(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ModifyDNArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ModifyDNResult(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_Abandoned(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_AbandonFailedError(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_AttributeError(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_NameError(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_Referral(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_SecurityError(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_ServiceError(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_UpdateError(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_OperationalBindingID(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+/*--- End of included file: packet-dap-exp.h ---*/
+
+
+#endif /* PACKET_DAP_H */
diff --git a/epan/dissectors/packet-disp.c b/epan/dissectors/packet-disp.c
new file mode 100644
index 0000000000..0e8189ddea
--- /dev/null
+++ b/epan/dissectors/packet-disp.c
@@ -0,0 +1,2463 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-disp.c */
+/* ../../tools/asn2eth.py -X -b -e -p disp -c disp.cnf -s packet-disp-template disp.asn */
+
+/* Input file: packet-disp-template.c */
+
+/* packet-disp.c
+ * Routines for X.525 (X.500 Directory Shadow Asbtract Service) and X.519 DISP packet dissection
+ * Graeme Lunt 2005
+ *
+ * $Id: packet-disp-template.c 14773 2005-06-26 10:59:15Z etxrab $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/conversation.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "packet-ber.h"
+#include "packet-acse.h"
+#include "packet-ros.h"
+#include "packet-rtse.h"
+
+#include "packet-x509if.h"
+#include "packet-x509af.h"
+#include "packet-x509sat.h"
+#include "packet-crmf.h"
+
+#include "packet-x501.h"
+#include "packet-dap.h"
+#include "packet-dsp.h"
+#include "packet-disp.h"
+#include "packet-acse.h"
+
+
+/* we don't have a separate dissector for X519 -
+ and most of DISP is defined in X525 */
+#define PNAME "X.519 Directory Information Shadowing Protocol"
+#define PSNAME "DISP"
+#define PFNAME "disp"
+
+static guint global_disp_tcp_port = 102;
+static guint tcp_port = 0;
+static dissector_handle_t tpkt_handle = NULL;
+void prefs_register_disp(void); /* forwad declaration for use in preferences registration */
+
+
+/* Initialize the protocol and registered fields */
+int proto_disp = -1;
+
+static struct SESSION_DATA_STRUCTURE* session = NULL;
+
+
+/*--- Included file: packet-disp-hf.c ---*/
+
+static int hf_disp_modifiedSecondaryShadows = -1; /* SET_OF_SupplierAndConsumers */
+static int hf_disp_secondaryShadows_item = -1; /* SupplierAndConsumers */
+static int hf_disp_shadowSubject = -1; /* UnitOfReplication */
+static int hf_disp_updateMode = -1; /* UpdateMode */
+static int hf_disp_master = -1; /* AccessPoint */
+static int hf_disp_secondaryShadows = -1; /* BOOLEAN */
+static int hf_disp_area = -1; /* AreaSpecification */
+static int hf_disp_replication_attributes = -1; /* AttributeSelection */
+static int hf_disp_knowledge = -1; /* Knowledge */
+static int hf_disp_subordinates = -1; /* BOOLEAN */
+static int hf_disp_contextSelection = -1; /* ContextSelection */
+static int hf_disp_supplyContexts = -1; /* T_supplyContexts */
+static int hf_disp_allContexts = -1; /* NULL */
+static int hf_disp_selectedContexts = -1; /* T_selectedContexts */
+static int hf_disp_selectedContexts_item = -1; /* OBJECT_IDENTIFIER */
+static int hf_disp_contextPrefix = -1; /* DistinguishedName */
+static int hf_disp_replicationArea = -1; /* SubtreeSpecification */
+static int hf_disp_knowledgeType = -1; /* T_knowledgeType */
+static int hf_disp_extendedKnowledge = -1; /* BOOLEAN */
+static int hf_disp_AttributeSelection_item = -1; /* ClassAttributeSelection */
+static int hf_disp_class = -1; /* OBJECT_IDENTIFIER */
+static int hf_disp_classAttributes = -1; /* ClassAttributes */
+static int hf_disp_allAttributes = -1; /* NULL */
+static int hf_disp_include = -1; /* AttributeTypes */
+static int hf_disp_exclude = -1; /* AttributeTypes */
+static int hf_disp_AttributeTypes_item = -1; /* AttributeType */
+static int hf_disp_supplierInitiated = -1; /* SupplierUpdateMode */
+static int hf_disp_consumerInitiated = -1; /* ConsumerUpdateMode */
+static int hf_disp_onChange = -1; /* BOOLEAN */
+static int hf_disp_scheduled = -1; /* SchedulingParameters */
+static int hf_disp_periodic = -1; /* PeriodicStrategy */
+static int hf_disp_othertimes = -1; /* BOOLEAN */
+static int hf_disp_beginTime = -1; /* Time */
+static int hf_disp_windowSize = -1; /* INTEGER */
+static int hf_disp_updateInterval = -1; /* INTEGER */
+static int hf_disp_agreementID = -1; /* AgreementID */
+static int hf_disp_lastUpdate = -1; /* Time */
+static int hf_disp_updateStrategy = -1; /* T_updateStrategy */
+static int hf_disp_standardUpdate = -1; /* StandardUpdate */
+static int hf_disp_other = -1; /* EXTERNAL */
+static int hf_disp_securityParameters = -1; /* SecurityParameters */
+static int hf_disp_unsignedCoordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
+static int hf_disp_signedCoordinateShadowUpdateArgument = -1; /* T_signedCoordinateShadowUpdateArgument */
+static int hf_disp_coordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
+static int hf_disp_algorithmIdentifier = -1; /* AlgorithmIdentifier */
+static int hf_disp_encrypted = -1; /* BIT_STRING */
+static int hf_disp_null = -1; /* NULL */
+static int hf_disp_information = -1; /* Information */
+static int hf_disp_performer = -1; /* DistinguishedName */
+static int hf_disp_aliasDereferenced = -1; /* BOOLEAN */
+static int hf_disp_notification = -1; /* SEQUENCE_OF_Attribute */
+static int hf_disp_notification_item = -1; /* Attribute */
+static int hf_disp_unsignedInformation = -1; /* InformationData */
+static int hf_disp_signedInformation = -1; /* T_signedInformation */
+static int hf_disp_information_data = -1; /* InformationData */
+static int hf_disp_requestedStrategy = -1; /* T_requestedStrategy */
+static int hf_disp_standard = -1; /* T_standard */
+static int hf_disp_unsignedRequestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
+static int hf_disp_signedRequestShadowUpdateArgument = -1; /* T_signedRequestShadowUpdateArgument */
+static int hf_disp_requestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
+static int hf_disp_updateTime = -1; /* Time */
+static int hf_disp_updateWindow = -1; /* UpdateWindow */
+static int hf_disp_updatedInfo = -1; /* RefreshInformation */
+static int hf_disp_unsignedUpdateShadowArgument = -1; /* UpdateShadowArgumentData */
+static int hf_disp_signedUpdateShadowArgument = -1; /* T_signedUpdateShadowArgument */
+static int hf_disp_updateShadowArgument = -1; /* UpdateShadowArgumentData */
+static int hf_disp_start = -1; /* Time */
+static int hf_disp_stop = -1; /* Time */
+static int hf_disp_noRefresh = -1; /* NULL */
+static int hf_disp_total = -1; /* TotalRefresh */
+static int hf_disp_incremental = -1; /* IncrementalRefresh */
+static int hf_disp_otherStrategy = -1; /* EXTERNAL */
+static int hf_disp_sDSE = -1; /* SDSEContent */
+static int hf_disp_subtree = -1; /* SET_OF_Subtree */
+static int hf_disp_subtree_item = -1; /* Subtree */
+static int hf_disp_sDSEType = -1; /* SDSEType */
+static int hf_disp_subComplete = -1; /* BOOLEAN */
+static int hf_disp_attComplete = -1; /* BOOLEAN */
+static int hf_disp_attributes = -1; /* SET_OF_Attribute */
+static int hf_disp_attributes_item = -1; /* Attribute */
+static int hf_disp_attValIncomplete = -1; /* SET_OF_AttributeType */
+static int hf_disp_attValIncomplete_item = -1; /* AttributeType */
+static int hf_disp_rdn = -1; /* RelativeDistinguishedName */
+static int hf_disp_IncrementalRefresh_item = -1; /* IncrementalStepRefresh */
+static int hf_disp_sDSEChanges = -1; /* T_sDSEChanges */
+static int hf_disp_add = -1; /* SDSEContent */
+static int hf_disp_remove = -1; /* NULL */
+static int hf_disp_modify = -1; /* ContentChange */
+static int hf_disp_subordinateUpdates = -1; /* SEQUENCE_OF_SubordinateChanges */
+static int hf_disp_subordinateUpdates_item = -1; /* SubordinateChanges */
+static int hf_disp_rename = -1; /* T_rename */
+static int hf_disp_newRDN = -1; /* RelativeDistinguishedName */
+static int hf_disp_newDN = -1; /* DistinguishedName */
+static int hf_disp_attributeChanges = -1; /* T_attributeChanges */
+static int hf_disp_replace = -1; /* SET_OF_Attribute */
+static int hf_disp_replace_item = -1; /* Attribute */
+static int hf_disp_changes = -1; /* SEQUENCE_OF_EntryModification */
+static int hf_disp_changes_item = -1; /* EntryModification */
+static int hf_disp_subordinate = -1; /* RelativeDistinguishedName */
+static int hf_disp_subordinate_changes = -1; /* IncrementalStepRefresh */
+static int hf_disp_problem = -1; /* ShadowProblem */
+static int hf_disp_unsignedShadowError = -1; /* ShadowErrorData */
+static int hf_disp_signedShadowError = -1; /* T_signedShadowError */
+static int hf_disp_shadowError = -1; /* ShadowErrorData */
+
+/*--- End of included file: packet-disp-hf.c ---*/
+
+
+/* Initialize the subtree pointers */
+static gint ett_disp = -1;
+
+/*--- Included file: packet-disp-ett.c ---*/
+
+static gint ett_disp_ModificationParameter = -1;
+static gint ett_disp_SET_OF_SupplierAndConsumers = -1;
+static gint ett_disp_ShadowingAgreementInfo = -1;
+static gint ett_disp_UnitOfReplication = -1;
+static gint ett_disp_T_supplyContexts = -1;
+static gint ett_disp_T_selectedContexts = -1;
+static gint ett_disp_AreaSpecification = -1;
+static gint ett_disp_Knowledge = -1;
+static gint ett_disp_AttributeSelection = -1;
+static gint ett_disp_ClassAttributeSelection = -1;
+static gint ett_disp_ClassAttributes = -1;
+static gint ett_disp_AttributeTypes = -1;
+static gint ett_disp_UpdateMode = -1;
+static gint ett_disp_SupplierUpdateMode = -1;
+static gint ett_disp_SchedulingParameters = -1;
+static gint ett_disp_PeriodicStrategy = -1;
+static gint ett_disp_CoordinateShadowUpdateArgumentData = -1;
+static gint ett_disp_T_updateStrategy = -1;
+static gint ett_disp_CoordinateShadowUpdateArgument = -1;
+static gint ett_disp_T_signedCoordinateShadowUpdateArgument = -1;
+static gint ett_disp_CoordinateShadowUpdateResult = -1;
+static gint ett_disp_InformationData = -1;
+static gint ett_disp_SEQUENCE_OF_Attribute = -1;
+static gint ett_disp_Information = -1;
+static gint ett_disp_T_signedInformation = -1;
+static gint ett_disp_RequestShadowUpdateArgumentData = -1;
+static gint ett_disp_T_requestedStrategy = -1;
+static gint ett_disp_RequestShadowUpdateArgument = -1;
+static gint ett_disp_T_signedRequestShadowUpdateArgument = -1;
+static gint ett_disp_RequestShadowUpdateResult = -1;
+static gint ett_disp_UpdateShadowArgumentData = -1;
+static gint ett_disp_UpdateShadowArgument = -1;
+static gint ett_disp_T_signedUpdateShadowArgument = -1;
+static gint ett_disp_UpdateShadowResult = -1;
+static gint ett_disp_UpdateWindow = -1;
+static gint ett_disp_RefreshInformation = -1;
+static gint ett_disp_TotalRefresh = -1;
+static gint ett_disp_SET_OF_Subtree = -1;
+static gint ett_disp_SDSEContent = -1;
+static gint ett_disp_SET_OF_Attribute = -1;
+static gint ett_disp_SET_OF_AttributeType = -1;
+static gint ett_disp_Subtree = -1;
+static gint ett_disp_IncrementalRefresh = -1;
+static gint ett_disp_IncrementalStepRefresh = -1;
+static gint ett_disp_T_sDSEChanges = -1;
+static gint ett_disp_SEQUENCE_OF_SubordinateChanges = -1;
+static gint ett_disp_ContentChange = -1;
+static gint ett_disp_T_rename = -1;
+static gint ett_disp_T_attributeChanges = -1;
+static gint ett_disp_SEQUENCE_OF_EntryModification = -1;
+static gint ett_disp_SubordinateChanges = -1;
+static gint ett_disp_ShadowErrorData = -1;
+static gint ett_disp_ShadowError = -1;
+static gint ett_disp_T_signedShadowError = -1;
+
+/*--- End of included file: packet-disp-ett.c ---*/
+
+
+
+/*--- Included file: packet-disp-fn.c ---*/
+
+/*--- Cyclic dependencies ---*/
+
+/* Subtree -> Subtree/subtree -> Subtree */
+static int dissect_disp_Subtree(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+static int dissect_subtree_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_Subtree(FALSE, tvb, offset, pinfo, tree, hf_disp_subtree_item);
+}
+
+/* IncrementalStepRefresh -> IncrementalStepRefresh/subordinateUpdates -> SubordinateChanges -> IncrementalStepRefresh */
+static int dissect_disp_IncrementalStepRefresh(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+static int dissect_IncrementalRefresh_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_IncrementalStepRefresh(FALSE, tvb, offset, pinfo, tree, hf_disp_IncrementalRefresh_item);
+}
+static int dissect_subordinate_changes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_IncrementalStepRefresh(FALSE, tvb, offset, pinfo, tree, hf_disp_subordinate_changes);
+}
+
+
+/*--- Fields for imported types ---*/
+
+static int dissect_secondaryShadows_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x501_SupplierAndConsumers(FALSE, tvb, offset, pinfo, tree, hf_disp_secondaryShadows_item);
+}
+static int dissect_master(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_AccessPoint(FALSE, tvb, offset, pinfo, tree, hf_disp_master);
+}
+static int dissect_contextSelection(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ContextSelection(FALSE, tvb, offset, pinfo, tree, hf_disp_contextSelection);
+}
+static int dissect_contextPrefix(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_disp_contextPrefix);
+}
+static int dissect_replicationArea(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SubtreeSpecification(FALSE, tvb, offset, pinfo, tree, hf_disp_replicationArea);
+}
+static int dissect_AttributeTypes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_disp_AttributeTypes_item);
+}
+static int dissect_other(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_acse_EXTERNAL(FALSE, tvb, offset, pinfo, tree, hf_disp_other);
+}
+static int dissect_securityParameters(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SecurityParameters(FALSE, tvb, offset, pinfo, tree, hf_disp_securityParameters);
+}
+static int dissect_securityParameters_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SecurityParameters(TRUE, tvb, offset, pinfo, tree, hf_disp_securityParameters);
+}
+static int dissect_algorithmIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_disp_algorithmIdentifier);
+}
+static int dissect_performer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(TRUE, tvb, offset, pinfo, tree, hf_disp_performer);
+}
+static int dissect_notification_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_disp_notification_item);
+}
+static int dissect_otherStrategy(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_acse_EXTERNAL(FALSE, tvb, offset, pinfo, tree, hf_disp_otherStrategy);
+}
+static int dissect_attributes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_disp_attributes_item);
+}
+static int dissect_attValIncomplete_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_disp_attValIncomplete_item);
+}
+static int dissect_rdn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RelativeDistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_disp_rdn);
+}
+static int dissect_newRDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RelativeDistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_disp_newRDN);
+}
+static int dissect_newDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_disp_newDN);
+}
+static int dissect_replace_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_disp_replace_item);
+}
+static int dissect_changes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_EntryModification(FALSE, tvb, offset, pinfo, tree, hf_disp_changes_item);
+}
+static int dissect_subordinate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RelativeDistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_disp_subordinate);
+}
+
+
+
+static int
+dissect_disp_DSAShadowBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_disp_DSAShadowBindResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_disp_DSAShadowBindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_DirectoryBindError(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SET_OF_SupplierAndConsumers_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_secondaryShadows_item },
+};
+
+static int
+dissect_disp_SET_OF_SupplierAndConsumers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_SupplierAndConsumers_set_of, hf_index, ett_disp_SET_OF_SupplierAndConsumers);
+
+ return offset;
+}
+static int dissect_modifiedSecondaryShadows(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SET_OF_SupplierAndConsumers(FALSE, tvb, offset, pinfo, tree, hf_disp_modifiedSecondaryShadows);
+}
+
+
+static const ber_sequence_t ModificationParameter_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_modifiedSecondaryShadows },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_ModificationParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ ModificationParameter_sequence, hf_index, ett_disp_ModificationParameter);
+
+ return offset;
+}
+
+
+
+static int
+dissect_disp_AgreementID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_OperationalBindingID(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_agreementID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_AgreementID(FALSE, tvb, offset, pinfo, tree, hf_disp_agreementID);
+}
+
+
+static const ber_sequence_t AreaSpecification_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextPrefix },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_replicationArea },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_AreaSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ AreaSpecification_sequence, hf_index, ett_disp_AreaSpecification);
+
+ return offset;
+}
+static int dissect_area(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_AreaSpecification(FALSE, tvb, offset, pinfo, tree, hf_disp_area);
+}
+
+
+
+static int
+dissect_disp_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+static int dissect_selectedContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_disp_selectedContexts_item);
+}
+static int dissect_class(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_disp_class);
+}
+
+
+
+static int
+dissect_disp_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_allContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_NULL(FALSE, tvb, offset, pinfo, tree, hf_disp_allContexts);
+}
+static int dissect_allAttributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_NULL(FALSE, tvb, offset, pinfo, tree, hf_disp_allAttributes);
+}
+static int dissect_null(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_NULL(FALSE, tvb, offset, pinfo, tree, hf_disp_null);
+}
+static int dissect_noRefresh(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_NULL(FALSE, tvb, offset, pinfo, tree, hf_disp_noRefresh);
+}
+static int dissect_remove(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_NULL(FALSE, tvb, offset, pinfo, tree, hf_disp_remove);
+}
+
+
+static const ber_sequence_t AttributeTypes_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_AttributeTypes_item },
+};
+
+static int
+dissect_disp_AttributeTypes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ AttributeTypes_set_of, hf_index, ett_disp_AttributeTypes);
+
+ return offset;
+}
+static int dissect_include_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_AttributeTypes(TRUE, tvb, offset, pinfo, tree, hf_disp_include);
+}
+static int dissect_exclude_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_AttributeTypes(TRUE, tvb, offset, pinfo, tree, hf_disp_exclude);
+}
+
+
+static const value_string disp_ClassAttributes_vals[] = {
+ { 0, "allAttributes" },
+ { 1, "include" },
+ { 2, "exclude" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ClassAttributes_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allAttributes },
+ { 1, BER_CLASS_CON, 0, 0, dissect_include_impl },
+ { 2, BER_CLASS_CON, 1, 0, dissect_exclude_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_ClassAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ClassAttributes_choice, hf_index, ett_disp_ClassAttributes,
+ NULL);
+
+ return offset;
+}
+static int dissect_classAttributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_ClassAttributes(FALSE, tvb, offset, pinfo, tree, hf_disp_classAttributes);
+}
+
+
+static const ber_sequence_t ClassAttributeSelection_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_class },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_classAttributes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_ClassAttributeSelection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ ClassAttributeSelection_sequence, hf_index, ett_disp_ClassAttributeSelection);
+
+ return offset;
+}
+static int dissect_AttributeSelection_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_ClassAttributeSelection(FALSE, tvb, offset, pinfo, tree, hf_disp_AttributeSelection_item);
+}
+
+
+static const ber_sequence_t AttributeSelection_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_AttributeSelection_item },
+};
+
+static int
+dissect_disp_AttributeSelection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ AttributeSelection_set_of, hf_index, ett_disp_AttributeSelection);
+
+ return offset;
+}
+static int dissect_replication_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_AttributeSelection(FALSE, tvb, offset, pinfo, tree, hf_disp_replication_attributes);
+}
+
+
+static const value_string disp_T_knowledgeType_vals[] = {
+ { 0, "master" },
+ { 1, "shadow" },
+ { 2, "both" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_disp_T_knowledgeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_knowledgeType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_knowledgeType(FALSE, tvb, offset, pinfo, tree, hf_disp_knowledgeType);
+}
+
+
+
+static int
+dissect_disp_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_secondaryShadows_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_disp_secondaryShadows);
+}
+static int dissect_subordinates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_disp_subordinates);
+}
+static int dissect_extendedKnowledge(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_disp_extendedKnowledge);
+}
+static int dissect_onChange(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_disp_onChange);
+}
+static int dissect_othertimes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_disp_othertimes);
+}
+static int dissect_aliasDereferenced_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_disp_aliasDereferenced);
+}
+static int dissect_subComplete_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_disp_subComplete);
+}
+static int dissect_attComplete_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_disp_attComplete);
+}
+
+
+static const ber_sequence_t Knowledge_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_knowledgeType },
+ { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extendedKnowledge },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_Knowledge(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Knowledge_sequence, hf_index, ett_disp_Knowledge);
+
+ return offset;
+}
+static int dissect_knowledge(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_Knowledge(FALSE, tvb, offset, pinfo, tree, hf_disp_knowledge);
+}
+
+
+static const ber_sequence_t T_selectedContexts_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_selectedContexts_item },
+};
+
+static int
+dissect_disp_T_selectedContexts(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_selectedContexts_set_of, hf_index, ett_disp_T_selectedContexts);
+
+ return offset;
+}
+static int dissect_selectedContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_selectedContexts(FALSE, tvb, offset, pinfo, tree, hf_disp_selectedContexts);
+}
+
+
+static const value_string disp_T_supplyContexts_vals[] = {
+ { 0, "allContexts" },
+ { 1, "selectedContexts" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_supplyContexts_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allContexts },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_selectedContexts },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_T_supplyContexts(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_supplyContexts_choice, hf_index, ett_disp_T_supplyContexts,
+ NULL);
+
+ return offset;
+}
+static int dissect_supplyContexts_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_supplyContexts(TRUE, tvb, offset, pinfo, tree, hf_disp_supplyContexts);
+}
+
+
+static const ber_sequence_t UnitOfReplication_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_area },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_replication_attributes },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_knowledge },
+ { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_subordinates },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_contextSelection },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supplyContexts_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_UnitOfReplication(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ UnitOfReplication_sequence, hf_index, ett_disp_UnitOfReplication);
+
+ return offset;
+}
+static int dissect_shadowSubject(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_UnitOfReplication(FALSE, tvb, offset, pinfo, tree, hf_disp_shadowSubject);
+}
+
+
+
+static int
+dissect_disp_Time(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_beginTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_Time(FALSE, tvb, offset, pinfo, tree, hf_disp_beginTime);
+}
+static int dissect_lastUpdate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_Time(FALSE, tvb, offset, pinfo, tree, hf_disp_lastUpdate);
+}
+static int dissect_updateTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_Time(FALSE, tvb, offset, pinfo, tree, hf_disp_updateTime);
+}
+static int dissect_start(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_Time(FALSE, tvb, offset, pinfo, tree, hf_disp_start);
+}
+static int dissect_stop(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_Time(FALSE, tvb, offset, pinfo, tree, hf_disp_stop);
+}
+
+
+
+static int
+dissect_disp_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_windowSize(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_disp_windowSize);
+}
+static int dissect_updateInterval(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_disp_updateInterval);
+}
+
+
+static const ber_sequence_t PeriodicStrategy_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_beginTime },
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_windowSize },
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_updateInterval },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_PeriodicStrategy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ PeriodicStrategy_sequence, hf_index, ett_disp_PeriodicStrategy);
+
+ return offset;
+}
+static int dissect_periodic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_PeriodicStrategy(FALSE, tvb, offset, pinfo, tree, hf_disp_periodic);
+}
+
+
+static const ber_sequence_t SchedulingParameters_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_periodic },
+ { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_othertimes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_SchedulingParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ SchedulingParameters_sequence, hf_index, ett_disp_SchedulingParameters);
+
+ return offset;
+}
+static int dissect_scheduled(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SchedulingParameters(FALSE, tvb, offset, pinfo, tree, hf_disp_scheduled);
+}
+
+
+static const value_string disp_SupplierUpdateMode_vals[] = {
+ { 0, "onChange" },
+ { 1, "scheduled" },
+ { 0, NULL }
+};
+
+static const ber_choice_t SupplierUpdateMode_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_onChange },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_scheduled },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_SupplierUpdateMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ SupplierUpdateMode_choice, hf_index, ett_disp_SupplierUpdateMode,
+ NULL);
+
+ return offset;
+}
+static int dissect_supplierInitiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SupplierUpdateMode(TRUE, tvb, offset, pinfo, tree, hf_disp_supplierInitiated);
+}
+
+
+
+static int
+dissect_disp_ConsumerUpdateMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_disp_SchedulingParameters(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_consumerInitiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_ConsumerUpdateMode(TRUE, tvb, offset, pinfo, tree, hf_disp_consumerInitiated);
+}
+
+
+static const value_string disp_UpdateMode_vals[] = {
+ { 0, "supplierInitiated" },
+ { 1, "consumerInitiated" },
+ { 0, NULL }
+};
+
+static const ber_choice_t UpdateMode_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_supplierInitiated_impl },
+ { 1, BER_CLASS_CON, 1, 0, dissect_consumerInitiated_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_UpdateMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ UpdateMode_choice, hf_index, ett_disp_UpdateMode,
+ NULL);
+
+ return offset;
+}
+static int dissect_updateMode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_UpdateMode(FALSE, tvb, offset, pinfo, tree, hf_disp_updateMode);
+}
+
+
+static const ber_sequence_t ShadowingAgreementInfo_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_shadowSubject },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_updateMode },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_master },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_secondaryShadows_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_ShadowingAgreementInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ ShadowingAgreementInfo_sequence, hf_index, ett_disp_ShadowingAgreementInfo);
+
+ return offset;
+}
+
+
+static const value_string disp_StandardUpdate_vals[] = {
+ { 0, "noChanges" },
+ { 1, "incremental" },
+ { 2, "total" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_disp_StandardUpdate(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 update;
+
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &update);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_StandardUpdate_vals, "unknown(%d)"));
+ }
+
+
+ return offset;
+}
+static int dissect_standardUpdate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_StandardUpdate(FALSE, tvb, offset, pinfo, tree, hf_disp_standardUpdate);
+}
+
+
+static const value_string disp_T_updateStrategy_vals[] = {
+ { 0, "standard" },
+ { 1, "other" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_updateStrategy_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_standardUpdate },
+ { 1, BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_other },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_T_updateStrategy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_updateStrategy_choice, hf_index, ett_disp_T_updateStrategy,
+ NULL);
+
+ return offset;
+}
+static int dissect_updateStrategy(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_updateStrategy(FALSE, tvb, offset, pinfo, tree, hf_disp_updateStrategy);
+}
+
+
+static const ber_sequence_t CoordinateShadowUpdateArgumentData_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_agreementID },
+ { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lastUpdate },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_updateStrategy },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_securityParameters },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_CoordinateShadowUpdateArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ CoordinateShadowUpdateArgumentData_sequence, hf_index, ett_disp_CoordinateShadowUpdateArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedCoordinateShadowUpdateArgument_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_CoordinateShadowUpdateArgumentData(TRUE, tvb, offset, pinfo, tree, hf_disp_unsignedCoordinateShadowUpdateArgument);
+}
+static int dissect_coordinateShadowUpdateArgument_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_CoordinateShadowUpdateArgumentData(TRUE, tvb, offset, pinfo, tree, hf_disp_coordinateShadowUpdateArgument);
+}
+
+
+
+static int
+dissect_disp_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ NULL, hf_index, -1,
+ NULL);
+
+ return offset;
+}
+static int dissect_encrypted(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_disp_encrypted);
+}
+
+
+static const ber_sequence_t T_signedCoordinateShadowUpdateArgument_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_coordinateShadowUpdateArgument_impl },
+ { 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 }
+};
+
+static int
+dissect_disp_T_signedCoordinateShadowUpdateArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedCoordinateShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedCoordinateShadowUpdateArgument);
+
+ return offset;
+}
+static int dissect_signedCoordinateShadowUpdateArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_signedCoordinateShadowUpdateArgument(FALSE, tvb, offset, pinfo, tree, hf_disp_signedCoordinateShadowUpdateArgument);
+}
+
+
+static const value_string disp_CoordinateShadowUpdateArgument_vals[] = {
+ { 0, "unsignedCoordinateShadowUpdateArgument" },
+ { 1, "signedCoordinateShadowUpdateArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t CoordinateShadowUpdateArgument_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_unsignedCoordinateShadowUpdateArgument_impl },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedCoordinateShadowUpdateArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_CoordinateShadowUpdateArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ CoordinateShadowUpdateArgument_choice, hf_index, ett_disp_CoordinateShadowUpdateArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_notification_item },
+};
+
+static int
+dissect_disp_SEQUENCE_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_disp_SEQUENCE_OF_Attribute);
+
+ return offset;
+}
+static int dissect_notification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SEQUENCE_OF_Attribute(TRUE, tvb, offset, pinfo, tree, hf_disp_notification);
+}
+
+
+static const ber_sequence_t InformationData_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_agreementID },
+ { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lastUpdate },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_securityParameters_impl },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_performer_impl },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_aliasDereferenced_impl },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notification_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_InformationData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ InformationData_sequence, hf_index, ett_disp_InformationData);
+
+ return offset;
+}
+static int dissect_unsignedInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_InformationData(TRUE, tvb, offset, pinfo, tree, hf_disp_unsignedInformation);
+}
+static int dissect_information_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_InformationData(TRUE, tvb, offset, pinfo, tree, hf_disp_information_data);
+}
+
+
+static const ber_sequence_t T_signedInformation_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_information_data_impl },
+ { 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 }
+};
+
+static int
+dissect_disp_T_signedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedInformation_sequence, hf_index, ett_disp_T_signedInformation);
+
+ return offset;
+}
+static int dissect_signedInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_signedInformation(FALSE, tvb, offset, pinfo, tree, hf_disp_signedInformation);
+}
+
+
+static const value_string disp_Information_vals[] = {
+ { 0, "unsignedInformation" },
+ { 1, "signedInformation" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Information_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_unsignedInformation_impl },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedInformation },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_Information(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Information_choice, hf_index, ett_disp_Information,
+ NULL);
+
+ return offset;
+}
+static int dissect_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_Information(FALSE, tvb, offset, pinfo, tree, hf_disp_information);
+}
+
+
+static const value_string disp_CoordinateShadowUpdateResult_vals[] = {
+ { 0, "null" },
+ { 1, "information" },
+ { 0, NULL }
+};
+
+static const ber_choice_t CoordinateShadowUpdateResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
+ { 1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_information },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_CoordinateShadowUpdateResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 update;
+
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ CoordinateShadowUpdateResult_choice, hf_index, ett_disp_CoordinateShadowUpdateResult,
+ &update);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_CoordinateShadowUpdateResult_vals, "unknown(%d)"));
+ }
+
+
+ return offset;
+}
+
+
+static const value_string disp_T_standard_vals[] = {
+ { 1, "incremental" },
+ { 2, "total" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_disp_T_standard(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 update;
+
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &update);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_T_standard_vals, "standard(%d"));
+ }
+
+
+ return offset;
+}
+static int dissect_standard(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_standard(FALSE, tvb, offset, pinfo, tree, hf_disp_standard);
+}
+
+
+static const value_string disp_T_requestedStrategy_vals[] = {
+ { 0, "standard" },
+ { 1, "other" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_requestedStrategy_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_standard },
+ { 1, BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_other },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_T_requestedStrategy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_requestedStrategy_choice, hf_index, ett_disp_T_requestedStrategy,
+ NULL);
+
+ return offset;
+}
+static int dissect_requestedStrategy(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_requestedStrategy(FALSE, tvb, offset, pinfo, tree, hf_disp_requestedStrategy);
+}
+
+
+static const ber_sequence_t RequestShadowUpdateArgumentData_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_agreementID },
+ { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lastUpdate },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_requestedStrategy },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_securityParameters },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_RequestShadowUpdateArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ RequestShadowUpdateArgumentData_sequence, hf_index, ett_disp_RequestShadowUpdateArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedRequestShadowUpdateArgument_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_RequestShadowUpdateArgumentData(TRUE, tvb, offset, pinfo, tree, hf_disp_unsignedRequestShadowUpdateArgument);
+}
+static int dissect_requestShadowUpdateArgument_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_RequestShadowUpdateArgumentData(TRUE, tvb, offset, pinfo, tree, hf_disp_requestShadowUpdateArgument);
+}
+
+
+static const ber_sequence_t T_signedRequestShadowUpdateArgument_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_requestShadowUpdateArgument_impl },
+ { 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 }
+};
+
+static int
+dissect_disp_T_signedRequestShadowUpdateArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedRequestShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedRequestShadowUpdateArgument);
+
+ return offset;
+}
+static int dissect_signedRequestShadowUpdateArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_signedRequestShadowUpdateArgument(FALSE, tvb, offset, pinfo, tree, hf_disp_signedRequestShadowUpdateArgument);
+}
+
+
+static const value_string disp_RequestShadowUpdateArgument_vals[] = {
+ { 0, "unsignedRequestShadowUpdateArgument" },
+ { 1, "signedRequestShadowUpdateArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t RequestShadowUpdateArgument_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_unsignedRequestShadowUpdateArgument_impl },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedRequestShadowUpdateArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_RequestShadowUpdateArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ RequestShadowUpdateArgument_choice, hf_index, ett_disp_RequestShadowUpdateArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string disp_RequestShadowUpdateResult_vals[] = {
+ { 0, "null" },
+ { 1, "information" },
+ { 0, NULL }
+};
+
+static const ber_choice_t RequestShadowUpdateResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
+ { 1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_information },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_RequestShadowUpdateResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 update;
+
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ RequestShadowUpdateResult_choice, hf_index, ett_disp_RequestShadowUpdateResult,
+ &update);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RequestShadowUpdateResult_vals, "unknown(%d)"));
+ }
+
+
+ return offset;
+}
+
+
+static const ber_sequence_t UpdateWindow_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_start },
+ { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_stop },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_UpdateWindow(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ UpdateWindow_sequence, hf_index, ett_disp_UpdateWindow);
+
+ return offset;
+}
+static int dissect_updateWindow(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_UpdateWindow(FALSE, tvb, offset, pinfo, tree, hf_disp_updateWindow);
+}
+
+
+
+static int
+dissect_disp_SDSEType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_x501_DSEType(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_sDSEType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SDSEType(FALSE, tvb, offset, pinfo, tree, hf_disp_sDSEType);
+}
+
+
+static const ber_sequence_t SET_OF_Attribute_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_attributes_item },
+};
+
+static int
+dissect_disp_SET_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_Attribute_set_of, hf_index, ett_disp_SET_OF_Attribute);
+
+ return offset;
+}
+static int dissect_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SET_OF_Attribute(FALSE, tvb, offset, pinfo, tree, hf_disp_attributes);
+}
+static int dissect_replace_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SET_OF_Attribute(TRUE, tvb, offset, pinfo, tree, hf_disp_replace);
+}
+
+
+static const ber_sequence_t SET_OF_AttributeType_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attValIncomplete_item },
+};
+
+static int
+dissect_disp_SET_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_AttributeType_set_of, hf_index, ett_disp_SET_OF_AttributeType);
+
+ return offset;
+}
+static int dissect_attValIncomplete(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SET_OF_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_disp_attValIncomplete);
+}
+
+
+static const ber_sequence_t SDSEContent_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_sDSEType },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subComplete_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attComplete_impl },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attValIncomplete },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_SDSEContent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ SDSEContent_sequence, hf_index, ett_disp_SDSEContent);
+
+ return offset;
+}
+static int dissect_sDSE(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SDSEContent(FALSE, tvb, offset, pinfo, tree, hf_disp_sDSE);
+}
+static int dissect_add_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SDSEContent(TRUE, tvb, offset, pinfo, tree, hf_disp_add);
+}
+
+
+static const ber_sequence_t SET_OF_Subtree_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subtree_item },
+};
+
+static int
+dissect_disp_SET_OF_Subtree(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_Subtree_set_of, hf_index, ett_disp_SET_OF_Subtree);
+
+ return offset;
+}
+static int dissect_subtree(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SET_OF_Subtree(FALSE, tvb, offset, pinfo, tree, hf_disp_subtree);
+}
+
+
+static const ber_sequence_t Subtree_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_rdn },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sDSE },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_subtree },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_Subtree(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Subtree_sequence, hf_index, ett_disp_Subtree);
+
+ return offset;
+}
+
+
+static const ber_sequence_t TotalRefresh_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sDSE },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_subtree },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_TotalRefresh(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ TotalRefresh_sequence, hf_index, ett_disp_TotalRefresh);
+
+ return offset;
+}
+static int dissect_total_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_TotalRefresh(TRUE, tvb, offset, pinfo, tree, hf_disp_total);
+}
+
+
+static const value_string disp_T_rename_vals[] = {
+ { 0, "newRDN" },
+ { 1, "newDN" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_rename_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_newRDN },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_newDN },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_T_rename(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_rename_choice, hf_index, ett_disp_T_rename,
+ NULL);
+
+ return offset;
+}
+static int dissect_rename(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_rename(FALSE, tvb, offset, pinfo, tree, hf_disp_rename);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_EntryModification_sequence_of[1] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_changes_item },
+};
+
+static int
+dissect_disp_SEQUENCE_OF_EntryModification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_EntryModification_sequence_of, hf_index, ett_disp_SEQUENCE_OF_EntryModification);
+
+ return offset;
+}
+static int dissect_changes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SEQUENCE_OF_EntryModification(TRUE, tvb, offset, pinfo, tree, hf_disp_changes);
+}
+
+
+static const value_string disp_T_attributeChanges_vals[] = {
+ { 0, "replace" },
+ { 1, "changes" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_attributeChanges_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_replace_impl },
+ { 1, BER_CLASS_CON, 1, 0, dissect_changes_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_T_attributeChanges(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_attributeChanges_choice, hf_index, ett_disp_T_attributeChanges,
+ NULL);
+
+ return offset;
+}
+static int dissect_attributeChanges(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_attributeChanges(FALSE, tvb, offset, pinfo, tree, hf_disp_attributeChanges);
+}
+
+
+static const ber_sequence_t ContentChange_sequence[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_rename },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_attributeChanges },
+ { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_sDSEType },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subComplete_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attComplete_impl },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attValIncomplete },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_ContentChange(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ ContentChange_sequence, hf_index, ett_disp_ContentChange);
+
+ return offset;
+}
+static int dissect_modify_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_ContentChange(TRUE, tvb, offset, pinfo, tree, hf_disp_modify);
+}
+
+
+static const value_string disp_T_sDSEChanges_vals[] = {
+ { 0, "add" },
+ { 1, "remove" },
+ { 2, "modify" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_sDSEChanges_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_add_impl },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_remove },
+ { 2, BER_CLASS_CON, 1, 0, dissect_modify_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_T_sDSEChanges(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_sDSEChanges_choice, hf_index, ett_disp_T_sDSEChanges,
+ NULL);
+
+ return offset;
+}
+static int dissect_sDSEChanges(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_sDSEChanges(FALSE, tvb, offset, pinfo, tree, hf_disp_sDSEChanges);
+}
+
+
+static const ber_sequence_t SubordinateChanges_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_subordinate },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subordinate_changes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_SubordinateChanges(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ SubordinateChanges_sequence, hf_index, ett_disp_SubordinateChanges);
+
+ return offset;
+}
+static int dissect_subordinateUpdates_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SubordinateChanges(FALSE, tvb, offset, pinfo, tree, hf_disp_subordinateUpdates_item);
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_SubordinateChanges_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subordinateUpdates_item },
+};
+
+static int
+dissect_disp_SEQUENCE_OF_SubordinateChanges(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_SubordinateChanges_sequence_of, hf_index, ett_disp_SEQUENCE_OF_SubordinateChanges);
+
+ return offset;
+}
+static int dissect_subordinateUpdates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_SEQUENCE_OF_SubordinateChanges(FALSE, tvb, offset, pinfo, tree, hf_disp_subordinateUpdates);
+}
+
+
+static const ber_sequence_t IncrementalStepRefresh_sequence[] = {
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sDSEChanges },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_subordinateUpdates },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_IncrementalStepRefresh(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ IncrementalStepRefresh_sequence, hf_index, ett_disp_IncrementalStepRefresh);
+
+ return offset;
+}
+
+
+static const ber_sequence_t IncrementalRefresh_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_IncrementalRefresh_item },
+};
+
+static int
+dissect_disp_IncrementalRefresh(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ IncrementalRefresh_sequence_of, hf_index, ett_disp_IncrementalRefresh);
+
+ return offset;
+}
+static int dissect_incremental_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_IncrementalRefresh(TRUE, tvb, offset, pinfo, tree, hf_disp_incremental);
+}
+
+
+static const value_string disp_RefreshInformation_vals[] = {
+ { 0, "noRefresh" },
+ { 1, "total" },
+ { 2, "incremental" },
+ { 3, "otherStrategy" },
+ { 0, NULL }
+};
+
+static const ber_choice_t RefreshInformation_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_noRefresh },
+ { 1, BER_CLASS_CON, 0, 0, dissect_total_impl },
+ { 2, BER_CLASS_CON, 1, 0, dissect_incremental_impl },
+ { 3, BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_otherStrategy },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_RefreshInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 update;
+
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ RefreshInformation_choice, hf_index, ett_disp_RefreshInformation,
+ &update);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RefreshInformation_vals, "unknown(%d)"));
+ }
+
+
+ return offset;
+}
+static int dissect_updatedInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_RefreshInformation(FALSE, tvb, offset, pinfo, tree, hf_disp_updatedInfo);
+}
+
+
+static const ber_sequence_t UpdateShadowArgumentData_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_agreementID },
+ { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_updateTime },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_updateWindow },
+ { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_updatedInfo },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_securityParameters },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_UpdateShadowArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ UpdateShadowArgumentData_sequence, hf_index, ett_disp_UpdateShadowArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedUpdateShadowArgument_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_UpdateShadowArgumentData(TRUE, tvb, offset, pinfo, tree, hf_disp_unsignedUpdateShadowArgument);
+}
+static int dissect_updateShadowArgument_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_UpdateShadowArgumentData(TRUE, tvb, offset, pinfo, tree, hf_disp_updateShadowArgument);
+}
+
+
+static const ber_sequence_t T_signedUpdateShadowArgument_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_updateShadowArgument_impl },
+ { 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 }
+};
+
+static int
+dissect_disp_T_signedUpdateShadowArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedUpdateShadowArgument_sequence, hf_index, ett_disp_T_signedUpdateShadowArgument);
+
+ return offset;
+}
+static int dissect_signedUpdateShadowArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_signedUpdateShadowArgument(FALSE, tvb, offset, pinfo, tree, hf_disp_signedUpdateShadowArgument);
+}
+
+
+static const value_string disp_UpdateShadowArgument_vals[] = {
+ { 0, "unsignedUpdateShadowArgument" },
+ { 1, "signedUpdateShadowArgument" },
+ { 0, NULL }
+};
+
+static const ber_choice_t UpdateShadowArgument_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_unsignedUpdateShadowArgument_impl },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedUpdateShadowArgument },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_UpdateShadowArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ UpdateShadowArgument_choice, hf_index, ett_disp_UpdateShadowArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string disp_UpdateShadowResult_vals[] = {
+ { 0, "null" },
+ { 1, "information" },
+ { 0, NULL }
+};
+
+static const ber_choice_t UpdateShadowResult_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
+ { 1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_information },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_UpdateShadowResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 update;
+
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ UpdateShadowResult_choice, hf_index, ett_disp_UpdateShadowResult,
+ &update);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_UpdateShadowResult_vals, "unknown(%d)"));
+ }
+
+
+ return offset;
+}
+
+
+static const value_string disp_ShadowProblem_vals[] = {
+ { 1, "invalidAgreementID" },
+ { 2, "inactiveAgreement" },
+ { 3, "invalidInformationReceived" },
+ { 4, "unsupportedStrategy" },
+ { 5, "missedPrevious" },
+ { 6, "fullUpdateRequired" },
+ { 7, "unwillingToPerform" },
+ { 8, "unsuitableTiming" },
+ { 9, "updateAlreadyReceived" },
+ { 10, "invalidSequencing" },
+ { 11, "insufficientResources" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_disp_ShadowProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ guint32 problem;
+
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ &problem);
+
+
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, disp_ShadowProblem_vals, "ShadowProblem(%d)"));
+ }
+
+
+ return offset;
+}
+static int dissect_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_ShadowProblem(FALSE, tvb, offset, pinfo, tree, hf_disp_problem);
+}
+
+
+static const ber_sequence_t ShadowErrorData_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_problem },
+ { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lastUpdate },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_updateWindow },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_securityParameters_impl },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_performer_impl },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_aliasDereferenced_impl },
+ { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notification_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_ShadowErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ ShadowErrorData_sequence, hf_index, ett_disp_ShadowErrorData);
+
+ return offset;
+}
+static int dissect_unsignedShadowError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_ShadowErrorData(FALSE, tvb, offset, pinfo, tree, hf_disp_unsignedShadowError);
+}
+static int dissect_shadowError(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_ShadowErrorData(FALSE, tvb, offset, pinfo, tree, hf_disp_shadowError);
+}
+
+
+static const ber_sequence_t T_signedShadowError_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_shadowError },
+ { 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 }
+};
+
+static int
+dissect_disp_T_signedShadowError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedShadowError_sequence, hf_index, ett_disp_T_signedShadowError);
+
+ return offset;
+}
+static int dissect_signedShadowError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_disp_T_signedShadowError(TRUE, tvb, offset, pinfo, tree, hf_disp_signedShadowError);
+}
+
+
+static const value_string disp_ShadowError_vals[] = {
+ { 0, "unsignedShadowError" },
+ { 1, "signedShadowError" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ShadowError_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedShadowError },
+ { 1, BER_CLASS_CON, 0, 0, dissect_signedShadowError_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_disp_ShadowError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ShadowError_choice, hf_index, ett_disp_ShadowError,
+ NULL);
+
+ return offset;
+}
+
+
+/*--- End of included file: packet-disp-fn.c ---*/
+
+
+/*
+* Dissect DISP PDUs inside a ROS PDUs
+*/
+static void
+dissect_disp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
+{
+ int offset = 0;
+ int old_offset;
+ proto_item *item=NULL;
+ proto_tree *tree=NULL;
+ int (*disp_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) = NULL;
+ char *disp_op_name;
+
+ /* do we have operation information from the ROS dissector? */
+ if( !pinfo->private_data ){
+ if(parent_tree){
+ proto_tree_add_text(parent_tree, tvb, offset, -1,
+ "Internal error: can't get operation information from ROS dissector.");
+ }
+ return ;
+ } else {
+ session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
+ }
+
+ if(parent_tree){
+ item = proto_tree_add_item(parent_tree, proto_disp, tvb, 0, -1, FALSE);
+ tree = proto_item_add_subtree(item, ett_disp);
+ }
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DISP");
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ switch(session->ros_op & ROS_OP_MASK) {
+ case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
+ disp_dissector = dissect_disp_DSAShadowBindArgument;
+ disp_op_name = "Shadow-Bind-Argument";
+ break;
+ case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
+ disp_dissector = dissect_disp_DSAShadowBindResult;
+ disp_op_name = "Shadow-Bind-Result";
+ break;
+ case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
+ disp_dissector = dissect_disp_DSAShadowBindError;
+ disp_op_name = "Shadow-Bind-Error";
+ break;
+ case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
+ switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+ case 1: /* requestShadowUpdate */
+ disp_dissector = dissect_disp_RequestShadowUpdateArgument;
+ disp_op_name = "Request-Shadow-Update-Argument";
+ break;
+ case 2: /* updateShadow*/
+ disp_dissector = dissect_disp_UpdateShadowArgument;
+ disp_op_name = "Update-Shadow-Argument";
+ break;
+ case 3: /* coordinateShadowUpdate */
+ disp_dissector = dissect_disp_CoordinateShadowUpdateArgument;
+ disp_op_name = "Coordinate-Shadow-Update-Argument";
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode (%d)",
+ session->ros_op & ROS_OP_OPCODE_MASK);
+ break;
+ }
+ break;
+ case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
+ switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+ case 1: /* requestShadowUpdate */
+ disp_dissector = dissect_disp_RequestShadowUpdateResult;
+ disp_op_name = "Request-Shadow-Result";
+ break;
+ case 2: /* updateShadow */
+ disp_dissector = dissect_disp_UpdateShadowResult;
+ disp_op_name = "Update-Shadow-Result";
+ break;
+ case 3: /* coordinateShadowUpdate */
+ disp_dissector = dissect_disp_CoordinateShadowUpdateResult;
+ disp_op_name = "Coordinate-Shadow-Update-Result";
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode");
+ break;
+ }
+ break;
+ case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
+ switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+ case 1: /* shadowError */
+ disp_dissector = dissect_disp_ShadowError;
+ disp_op_name = "Shadow-Error";
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP errcode");
+ break;
+ }
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP PDU");
+ return;
+ }
+
+ if(disp_dissector) {
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_add_str(pinfo->cinfo, COL_INFO, disp_op_name);
+
+ while (tvb_reported_length_remaining(tvb, offset) > 0){
+ old_offset=offset;
+ offset=(*disp_dissector)(FALSE, tvb, offset, pinfo , tree, -1);
+ if(offset == old_offset){
+ proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DISP PDU");
+ offset = tvb_length(tvb);
+ break;
+ }
+ }
+ }
+}
+
+
+/*--- proto_register_disp -------------------------------------------*/
+void proto_register_disp(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] =
+ {
+
+/*--- Included file: packet-disp-hfarr.c ---*/
+
+ { &hf_disp_modifiedSecondaryShadows,
+ { "secondaryShadows", "disp.secondaryShadows",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ModificationParameter/secondaryShadows", HFILL }},
+ { &hf_disp_secondaryShadows_item,
+ { "Item", "disp.secondaryShadows_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ModificationParameter/secondaryShadows/_item", HFILL }},
+ { &hf_disp_shadowSubject,
+ { "shadowSubject", "disp.shadowSubject",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ShadowingAgreementInfo/shadowSubject", HFILL }},
+ { &hf_disp_updateMode,
+ { "updateMode", "disp.updateMode",
+ FT_UINT32, BASE_DEC, VALS(disp_UpdateMode_vals), 0,
+ "ShadowingAgreementInfo/updateMode", HFILL }},
+ { &hf_disp_master,
+ { "master", "disp.master",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ShadowingAgreementInfo/master", HFILL }},
+ { &hf_disp_secondaryShadows,
+ { "secondaryShadows", "disp.secondaryShadows",
+ FT_BOOLEAN, 8, NULL, 0,
+ "ShadowingAgreementInfo/secondaryShadows", HFILL }},
+ { &hf_disp_area,
+ { "area", "disp.area",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UnitOfReplication/area", HFILL }},
+ { &hf_disp_replication_attributes,
+ { "attributes", "disp.attributes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UnitOfReplication/attributes", HFILL }},
+ { &hf_disp_knowledge,
+ { "knowledge", "disp.knowledge",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UnitOfReplication/knowledge", HFILL }},
+ { &hf_disp_subordinates,
+ { "subordinates", "disp.subordinates",
+ FT_BOOLEAN, 8, NULL, 0,
+ "UnitOfReplication/subordinates", HFILL }},
+ { &hf_disp_contextSelection,
+ { "contextSelection", "disp.contextSelection",
+ FT_UINT32, BASE_DEC, VALS(dap_ContextSelection_vals), 0,
+ "UnitOfReplication/contextSelection", HFILL }},
+ { &hf_disp_supplyContexts,
+ { "supplyContexts", "disp.supplyContexts",
+ FT_UINT32, BASE_DEC, VALS(disp_T_supplyContexts_vals), 0,
+ "UnitOfReplication/supplyContexts", HFILL }},
+ { &hf_disp_allContexts,
+ { "allContexts", "disp.allContexts",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UnitOfReplication/supplyContexts/allContexts", HFILL }},
+ { &hf_disp_selectedContexts,
+ { "selectedContexts", "disp.selectedContexts",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UnitOfReplication/supplyContexts/selectedContexts", HFILL }},
+ { &hf_disp_selectedContexts_item,
+ { "Item", "disp.selectedContexts_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "UnitOfReplication/supplyContexts/selectedContexts/_item", HFILL }},
+ { &hf_disp_contextPrefix,
+ { "contextPrefix", "disp.contextPrefix",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AreaSpecification/contextPrefix", HFILL }},
+ { &hf_disp_replicationArea,
+ { "replicationArea", "disp.replicationArea",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AreaSpecification/replicationArea", HFILL }},
+ { &hf_disp_knowledgeType,
+ { "knowledgeType", "disp.knowledgeType",
+ FT_UINT32, BASE_DEC, VALS(disp_T_knowledgeType_vals), 0,
+ "Knowledge/knowledgeType", HFILL }},
+ { &hf_disp_extendedKnowledge,
+ { "extendedKnowledge", "disp.extendedKnowledge",
+ FT_BOOLEAN, 8, NULL, 0,
+ "Knowledge/extendedKnowledge", HFILL }},
+ { &hf_disp_AttributeSelection_item,
+ { "Item", "disp.AttributeSelection_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeSelection/_item", HFILL }},
+ { &hf_disp_class,
+ { "class", "disp.class",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "ClassAttributeSelection/class", HFILL }},
+ { &hf_disp_classAttributes,
+ { "classAttributes", "disp.classAttributes",
+ FT_UINT32, BASE_DEC, VALS(disp_ClassAttributes_vals), 0,
+ "ClassAttributeSelection/classAttributes", HFILL }},
+ { &hf_disp_allAttributes,
+ { "allAttributes", "disp.allAttributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ClassAttributes/allAttributes", HFILL }},
+ { &hf_disp_include,
+ { "include", "disp.include",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ClassAttributes/include", HFILL }},
+ { &hf_disp_exclude,
+ { "exclude", "disp.exclude",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ClassAttributes/exclude", HFILL }},
+ { &hf_disp_AttributeTypes_item,
+ { "Item", "disp.AttributeTypes_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "AttributeTypes/_item", HFILL }},
+ { &hf_disp_supplierInitiated,
+ { "supplierInitiated", "disp.supplierInitiated",
+ FT_UINT32, BASE_DEC, VALS(disp_SupplierUpdateMode_vals), 0,
+ "UpdateMode/supplierInitiated", HFILL }},
+ { &hf_disp_consumerInitiated,
+ { "consumerInitiated", "disp.consumerInitiated",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UpdateMode/consumerInitiated", HFILL }},
+ { &hf_disp_onChange,
+ { "onChange", "disp.onChange",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SupplierUpdateMode/onChange", HFILL }},
+ { &hf_disp_scheduled,
+ { "scheduled", "disp.scheduled",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SupplierUpdateMode/scheduled", HFILL }},
+ { &hf_disp_periodic,
+ { "periodic", "disp.periodic",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SchedulingParameters/periodic", HFILL }},
+ { &hf_disp_othertimes,
+ { "othertimes", "disp.othertimes",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SchedulingParameters/othertimes", HFILL }},
+ { &hf_disp_beginTime,
+ { "beginTime", "disp.beginTime",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "PeriodicStrategy/beginTime", HFILL }},
+ { &hf_disp_windowSize,
+ { "windowSize", "disp.windowSize",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "PeriodicStrategy/windowSize", HFILL }},
+ { &hf_disp_updateInterval,
+ { "updateInterval", "disp.updateInterval",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "PeriodicStrategy/updateInterval", HFILL }},
+ { &hf_disp_agreementID,
+ { "agreementID", "disp.agreementID",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_lastUpdate,
+ { "lastUpdate", "disp.lastUpdate",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_updateStrategy,
+ { "updateStrategy", "disp.updateStrategy",
+ FT_UINT32, BASE_DEC, VALS(disp_T_updateStrategy_vals), 0,
+ "CoordinateShadowUpdateArgumentData/updateStrategy", HFILL }},
+ { &hf_disp_standardUpdate,
+ { "standard", "disp.standard",
+ FT_UINT32, BASE_DEC, VALS(disp_StandardUpdate_vals), 0,
+ "CoordinateShadowUpdateArgumentData/updateStrategy/standard", HFILL }},
+ { &hf_disp_other,
+ { "other", "disp.other",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_securityParameters,
+ { "securityParameters", "disp.securityParameters",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_unsignedCoordinateShadowUpdateArgument,
+ { "unsignedCoordinateShadowUpdateArgument", "disp.unsignedCoordinateShadowUpdateArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CoordinateShadowUpdateArgument/unsignedCoordinateShadowUpdateArgument", HFILL }},
+ { &hf_disp_signedCoordinateShadowUpdateArgument,
+ { "signedCoordinateShadowUpdateArgument", "disp.signedCoordinateShadowUpdateArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CoordinateShadowUpdateArgument/signedCoordinateShadowUpdateArgument", HFILL }},
+ { &hf_disp_coordinateShadowUpdateArgument,
+ { "coordinateShadowUpdateArgument", "disp.coordinateShadowUpdateArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CoordinateShadowUpdateArgument/signedCoordinateShadowUpdateArgument/coordinateShadowUpdateArgument", HFILL }},
+ { &hf_disp_algorithmIdentifier,
+ { "algorithmIdentifier", "disp.algorithmIdentifier",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_encrypted,
+ { "encrypted", "disp.encrypted",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_null,
+ { "null", "disp.null",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_information,
+ { "information", "disp.information",
+ FT_UINT32, BASE_DEC, VALS(disp_Information_vals), 0,
+ "", HFILL }},
+ { &hf_disp_performer,
+ { "performer", "disp.performer",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_aliasDereferenced,
+ { "aliasDereferenced", "disp.aliasDereferenced",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_notification,
+ { "notification", "disp.notification",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_notification_item,
+ { "Item", "disp.notification_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_unsignedInformation,
+ { "unsignedInformation", "disp.unsignedInformation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Information/unsignedInformation", HFILL }},
+ { &hf_disp_signedInformation,
+ { "signedInformation", "disp.signedInformation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Information/signedInformation", HFILL }},
+ { &hf_disp_information_data,
+ { "information", "disp.information",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Information/signedInformation/information", HFILL }},
+ { &hf_disp_requestedStrategy,
+ { "requestedStrategy", "disp.requestedStrategy",
+ FT_UINT32, BASE_DEC, VALS(disp_T_requestedStrategy_vals), 0,
+ "RequestShadowUpdateArgumentData/requestedStrategy", HFILL }},
+ { &hf_disp_standard,
+ { "standard", "disp.standard",
+ FT_UINT32, BASE_DEC, VALS(disp_T_standard_vals), 0,
+ "RequestShadowUpdateArgumentData/requestedStrategy/standard", HFILL }},
+ { &hf_disp_unsignedRequestShadowUpdateArgument,
+ { "unsignedRequestShadowUpdateArgument", "disp.unsignedRequestShadowUpdateArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RequestShadowUpdateArgument/unsignedRequestShadowUpdateArgument", HFILL }},
+ { &hf_disp_signedRequestShadowUpdateArgument,
+ { "signedRequestShadowUpdateArgument", "disp.signedRequestShadowUpdateArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RequestShadowUpdateArgument/signedRequestShadowUpdateArgument", HFILL }},
+ { &hf_disp_requestShadowUpdateArgument,
+ { "requestShadowUpdateArgument", "disp.requestShadowUpdateArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RequestShadowUpdateArgument/signedRequestShadowUpdateArgument/requestShadowUpdateArgument", HFILL }},
+ { &hf_disp_updateTime,
+ { "updateTime", "disp.updateTime",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "UpdateShadowArgumentData/updateTime", HFILL }},
+ { &hf_disp_updateWindow,
+ { "updateWindow", "disp.updateWindow",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_updatedInfo,
+ { "updatedInfo", "disp.updatedInfo",
+ FT_UINT32, BASE_DEC, VALS(disp_RefreshInformation_vals), 0,
+ "UpdateShadowArgumentData/updatedInfo", HFILL }},
+ { &hf_disp_unsignedUpdateShadowArgument,
+ { "unsignedUpdateShadowArgument", "disp.unsignedUpdateShadowArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UpdateShadowArgument/unsignedUpdateShadowArgument", HFILL }},
+ { &hf_disp_signedUpdateShadowArgument,
+ { "signedUpdateShadowArgument", "disp.signedUpdateShadowArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UpdateShadowArgument/signedUpdateShadowArgument", HFILL }},
+ { &hf_disp_updateShadowArgument,
+ { "updateShadowArgument", "disp.updateShadowArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UpdateShadowArgument/signedUpdateShadowArgument/updateShadowArgument", HFILL }},
+ { &hf_disp_start,
+ { "start", "disp.start",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "UpdateWindow/start", HFILL }},
+ { &hf_disp_stop,
+ { "stop", "disp.stop",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "UpdateWindow/stop", HFILL }},
+ { &hf_disp_noRefresh,
+ { "noRefresh", "disp.noRefresh",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RefreshInformation/noRefresh", HFILL }},
+ { &hf_disp_total,
+ { "total", "disp.total",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RefreshInformation/total", HFILL }},
+ { &hf_disp_incremental,
+ { "incremental", "disp.incremental",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RefreshInformation/incremental", HFILL }},
+ { &hf_disp_otherStrategy,
+ { "otherStrategy", "disp.otherStrategy",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RefreshInformation/otherStrategy", HFILL }},
+ { &hf_disp_sDSE,
+ { "sDSE", "disp.sDSE",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_subtree,
+ { "subtree", "disp.subtree",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_subtree_item,
+ { "Item", "disp.subtree_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_sDSEType,
+ { "sDSEType", "disp.sDSEType",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_subComplete,
+ { "subComplete", "disp.subComplete",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_attComplete,
+ { "attComplete", "disp.attComplete",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_attributes,
+ { "attributes", "disp.attributes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SDSEContent/attributes", HFILL }},
+ { &hf_disp_attributes_item,
+ { "Item", "disp.attributes_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SDSEContent/attributes/_item", HFILL }},
+ { &hf_disp_attValIncomplete,
+ { "attValIncomplete", "disp.attValIncomplete",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_attValIncomplete_item,
+ { "Item", "disp.attValIncomplete_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_disp_rdn,
+ { "rdn", "disp.rdn",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Subtree/rdn", HFILL }},
+ { &hf_disp_IncrementalRefresh_item,
+ { "Item", "disp.IncrementalRefresh_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IncrementalRefresh/_item", HFILL }},
+ { &hf_disp_sDSEChanges,
+ { "sDSEChanges", "disp.sDSEChanges",
+ FT_UINT32, BASE_DEC, VALS(disp_T_sDSEChanges_vals), 0,
+ "IncrementalStepRefresh/sDSEChanges", HFILL }},
+ { &hf_disp_add,
+ { "add", "disp.add",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IncrementalStepRefresh/sDSEChanges/add", HFILL }},
+ { &hf_disp_remove,
+ { "remove", "disp.remove",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IncrementalStepRefresh/sDSEChanges/remove", HFILL }},
+ { &hf_disp_modify,
+ { "modify", "disp.modify",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IncrementalStepRefresh/sDSEChanges/modify", HFILL }},
+ { &hf_disp_subordinateUpdates,
+ { "subordinateUpdates", "disp.subordinateUpdates",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "IncrementalStepRefresh/subordinateUpdates", HFILL }},
+ { &hf_disp_subordinateUpdates_item,
+ { "Item", "disp.subordinateUpdates_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IncrementalStepRefresh/subordinateUpdates/_item", HFILL }},
+ { &hf_disp_rename,
+ { "rename", "disp.rename",
+ FT_UINT32, BASE_DEC, VALS(disp_T_rename_vals), 0,
+ "ContentChange/rename", HFILL }},
+ { &hf_disp_newRDN,
+ { "newRDN", "disp.newRDN",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContentChange/rename/newRDN", HFILL }},
+ { &hf_disp_newDN,
+ { "newDN", "disp.newDN",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContentChange/rename/newDN", HFILL }},
+ { &hf_disp_attributeChanges,
+ { "attributeChanges", "disp.attributeChanges",
+ FT_UINT32, BASE_DEC, VALS(disp_T_attributeChanges_vals), 0,
+ "ContentChange/attributeChanges", HFILL }},
+ { &hf_disp_replace,
+ { "replace", "disp.replace",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContentChange/attributeChanges/replace", HFILL }},
+ { &hf_disp_replace_item,
+ { "Item", "disp.replace_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ContentChange/attributeChanges/replace/_item", HFILL }},
+ { &hf_disp_changes,
+ { "changes", "disp.changes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContentChange/attributeChanges/changes", HFILL }},
+ { &hf_disp_changes_item,
+ { "Item", "disp.changes_item",
+ FT_UINT32, BASE_DEC, VALS(dap_EntryModification_vals), 0,
+ "ContentChange/attributeChanges/changes/_item", HFILL }},
+ { &hf_disp_subordinate,
+ { "subordinate", "disp.subordinate",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SubordinateChanges/subordinate", HFILL }},
+ { &hf_disp_subordinate_changes,
+ { "changes", "disp.changes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SubordinateChanges/changes", HFILL }},
+ { &hf_disp_problem,
+ { "problem", "disp.problem",
+ FT_INT32, BASE_DEC, VALS(disp_ShadowProblem_vals), 0,
+ "ShadowErrorData/problem", HFILL }},
+ { &hf_disp_unsignedShadowError,
+ { "unsignedShadowError", "disp.unsignedShadowError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ShadowError/unsignedShadowError", HFILL }},
+ { &hf_disp_signedShadowError,
+ { "signedShadowError", "disp.signedShadowError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ShadowError/signedShadowError", HFILL }},
+ { &hf_disp_shadowError,
+ { "shadowError", "disp.shadowError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ShadowError/signedShadowError/shadowError", HFILL }},
+
+/*--- End of included file: packet-disp-hfarr.c ---*/
+
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_disp,
+
+/*--- Included file: packet-disp-ettarr.c ---*/
+
+ &ett_disp_ModificationParameter,
+ &ett_disp_SET_OF_SupplierAndConsumers,
+ &ett_disp_ShadowingAgreementInfo,
+ &ett_disp_UnitOfReplication,
+ &ett_disp_T_supplyContexts,
+ &ett_disp_T_selectedContexts,
+ &ett_disp_AreaSpecification,
+ &ett_disp_Knowledge,
+ &ett_disp_AttributeSelection,
+ &ett_disp_ClassAttributeSelection,
+ &ett_disp_ClassAttributes,
+ &ett_disp_AttributeTypes,
+ &ett_disp_UpdateMode,
+ &ett_disp_SupplierUpdateMode,
+ &ett_disp_SchedulingParameters,
+ &ett_disp_PeriodicStrategy,
+ &ett_disp_CoordinateShadowUpdateArgumentData,
+ &ett_disp_T_updateStrategy,
+ &ett_disp_CoordinateShadowUpdateArgument,
+ &ett_disp_T_signedCoordinateShadowUpdateArgument,
+ &ett_disp_CoordinateShadowUpdateResult,
+ &ett_disp_InformationData,
+ &ett_disp_SEQUENCE_OF_Attribute,
+ &ett_disp_Information,
+ &ett_disp_T_signedInformation,
+ &ett_disp_RequestShadowUpdateArgumentData,
+ &ett_disp_T_requestedStrategy,
+ &ett_disp_RequestShadowUpdateArgument,
+ &ett_disp_T_signedRequestShadowUpdateArgument,
+ &ett_disp_RequestShadowUpdateResult,
+ &ett_disp_UpdateShadowArgumentData,
+ &ett_disp_UpdateShadowArgument,
+ &ett_disp_T_signedUpdateShadowArgument,
+ &ett_disp_UpdateShadowResult,
+ &ett_disp_UpdateWindow,
+ &ett_disp_RefreshInformation,
+ &ett_disp_TotalRefresh,
+ &ett_disp_SET_OF_Subtree,
+ &ett_disp_SDSEContent,
+ &ett_disp_SET_OF_Attribute,
+ &ett_disp_SET_OF_AttributeType,
+ &ett_disp_Subtree,
+ &ett_disp_IncrementalRefresh,
+ &ett_disp_IncrementalStepRefresh,
+ &ett_disp_T_sDSEChanges,
+ &ett_disp_SEQUENCE_OF_SubordinateChanges,
+ &ett_disp_ContentChange,
+ &ett_disp_T_rename,
+ &ett_disp_T_attributeChanges,
+ &ett_disp_SEQUENCE_OF_EntryModification,
+ &ett_disp_SubordinateChanges,
+ &ett_disp_ShadowErrorData,
+ &ett_disp_ShadowError,
+ &ett_disp_T_signedShadowError,
+
+/*--- End of included file: packet-disp-ettarr.c ---*/
+
+ };
+ module_t *disp_module;
+
+ /* Register protocol */
+ proto_disp = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ register_dissector("disp", dissect_disp, proto_disp);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_disp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register our configuration options for DISP, particularly our port */
+
+ disp_module = prefs_register_protocol(proto_disp, prefs_register_disp);
+
+ prefs_register_uint_preference(disp_module, "tcp.port", "DISP TCP Port",
+ "Set the port for DISP operations (if other"
+ " than the default of 102)",
+ 10, &global_disp_tcp_port);
+
+}
+
+
+/*--- proto_reg_handoff_disp --- */
+void proto_reg_handoff_disp(void) {
+ dissector_handle_t handle = NULL;
+
+ /* #include "packet-disp-dis-tab.c" */
+
+ /* APPLICATION CONTEXT */
+
+ register_ber_oid_name("2.5.3.4", "id-ac-shadow-consumer-initiated");
+ register_ber_oid_name("2.5.3.5", "id-ac-shadow-supplier-initiated");
+ register_ber_oid_name("2.5.3.6", "id-ac-reliable-shadow-consumer-initiated");
+ register_ber_oid_name("2.5.3.7", "id-ac-reliable-shadow-supplier-initiated");
+
+ /* ABSTRACT SYNTAXES */
+
+ if((handle = find_dissector("disp"))) {
+
+ register_ros_oid_dissector_handle("2.5.9.3", handle, 0, "id-as-directory-shadow", FALSE);
+
+ register_rtse_oid_dissector_handle("2.5.9.5", handle, 0, "id-as-directory-reliable-shadow", FALSE);
+ register_rtse_oid_dissector_handle("2.5.9.6", handle, 0, "id-as-directory-reliable-binding", FALSE);
+ }
+
+ tpkt_handle = find_dissector("tpkt");
+
+}
+
+
+void prefs_register_disp(void) {
+
+ /* de-register the old port */
+ /* port 102 is registered by TPKT - don't undo this! */
+ if((tcp_port != 102) && tpkt_handle)
+ dissector_delete("tcp.port", tcp_port, tpkt_handle);
+
+ /* Set our port number for future use */
+ tcp_port = global_disp_tcp_port;
+
+ if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
+ dissector_add("tcp.port", global_disp_tcp_port, tpkt_handle);
+
+}
diff --git a/epan/dissectors/packet-disp.h b/epan/dissectors/packet-disp.h
new file mode 100644
index 0000000000..a0cbfebfa5
--- /dev/null
+++ b/epan/dissectors/packet-disp.h
@@ -0,0 +1,37 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-disp.h */
+/* ../../tools/asn2eth.py -X -b -e -p disp -c disp.cnf -s packet-disp-template disp.asn */
+
+/* Input file: packet-disp-template.h */
+
+/* packet-disp.h
+ * Routines for X.525 (X.400 Message Transfer) packet dissection
+ * Graeme Lunt 2005
+ *
+ * $Id: packet-disp-template.h 14773 2005-06-26 10:59:15Z etxrab $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PACKET_DISP_H
+#define PACKET_DISP_H
+
+
+#endif /* PACKET_DISP_H */
diff --git a/epan/dissectors/packet-dsp.c b/epan/dissectors/packet-dsp.c
new file mode 100644
index 0000000000..75733c8e2d
--- /dev/null
+++ b/epan/dissectors/packet-dsp.c
@@ -0,0 +1,2986 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-dsp.c */
+/* ../../tools/asn2eth.py -X -b -e -p dsp -c dsp.cnf -s packet-dsp-template dsp.asn */
+
+/* Input file: packet-dsp-template.c */
+
+/* packet-dsp.c
+ * Routines for X.518 (X.500 Distributed Operations) packet dissection
+ * Graeme Lunt 2005
+ *
+ * $Id: packet-dsp-template.c 14773 2005-06-26 10:59:15Z etxrab $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/conversation.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "packet-ber.h"
+#include "packet-acse.h"
+#include "packet-ros.h"
+
+#include "packet-x509if.h"
+#include "packet-x509af.h"
+#include "packet-x509sat.h"
+
+#include "packet-dap.h"
+#include "packet-dsp.h"
+
+
+#define PNAME "X.519 Directory System Protocol"
+#define PSNAME "DSP"
+#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 */
+
+
+/* Initialize the protocol and registered fields */
+int proto_dsp = -1;
+
+static struct SESSION_DATA_STRUCTURE* session = NULL;
+
+
+/*--- Included file: packet-dsp-hf.c ---*/
+
+static int hf_dsp_AccessPoint_PDU = -1; /* AccessPoint */
+static int hf_dsp_MasterAndShadowAccessPoints_PDU = -1; /* MasterAndShadowAccessPoints */
+static int hf_dsp_chainedArgument = -1; /* ChainingArguments */
+static int hf_dsp_readArgument = -1; /* ReadArgument */
+static int hf_dsp_unsignedChainedReadArgument = -1; /* ChainedReadArgumentData */
+static int hf_dsp_signedChainedReadArgument = -1; /* T_signedChainedReadArgument */
+static int hf_dsp_chainedReadArgument = -1; /* ChainedReadArgumentData */
+static int hf_dsp_algorithmIdentifier = -1; /* AlgorithmIdentifier */
+static int hf_dsp_encrypted = -1; /* BIT_STRING */
+static int hf_dsp_chainedResults = -1; /* ChainingResults */
+static int hf_dsp_readResult = -1; /* ReadResult */
+static int hf_dsp_unsignedChainedReadResult = -1; /* ChainedReadResultData */
+static int hf_dsp_signedChainedReadResult = -1; /* T_signedChainedReadResult */
+static int hf_dsp_chainedReadResult = -1; /* ChainedReadResultData */
+static int hf_dsp_compareArgument = -1; /* CompareArgument */
+static int hf_dsp_unsignedChainedCompareArgument = -1; /* ChainedCompareArgumentData */
+static int hf_dsp_signedChainedCompareArgument = -1; /* T_signedChainedCompareArgument */
+static int hf_dsp_chainedCompareArgument = -1; /* ChainedCompareArgumentData */
+static int hf_dsp_compareResult = -1; /* CompareResult */
+static int hf_dsp_unsignedChainedCompareResult = -1; /* ChainedCompareResultData */
+static int hf_dsp_signedChainedCompareResult = -1; /* T_signedChainedCompareResult */
+static int hf_dsp_chainedCompareResult = -1; /* ChainedCompareResultData */
+static int hf_dsp_listArgument = -1; /* ListArgument */
+static int hf_dsp_unsignedChainedListArgument = -1; /* ChainedListArgumentData */
+static int hf_dsp_signedChainedListArgument = -1; /* T_signedChainedListArgument */
+static int hf_dsp_chainedListArgument = -1; /* ChainedListArgumentData */
+static int hf_dsp_listResult = -1; /* ListResult */
+static int hf_dsp_unsignedChainedListResult = -1; /* ChainedListResultData */
+static int hf_dsp_signedChainedListResult = -1; /* T_signedChainedListResult */
+static int hf_dsp_chainedListResult = -1; /* ChainedListResultData */
+static int hf_dsp_searchArgument = -1; /* SearchArgument */
+static int hf_dsp_unsignedChainedSearchArgument = -1; /* ChainedSearchArgumentData */
+static int hf_dsp_signedChainedSearchArgument = -1; /* T_signedChainedSearchArgument */
+static int hf_dsp_chainedSearchArgument = -1; /* ChainedSearchArgumentData */
+static int hf_dsp_searchResult = -1; /* SearchResult */
+static int hf_dsp_unsignedChainedSearchResult = -1; /* ChainedSearchResultData */
+static int hf_dsp_signedChainedSearchResult = -1; /* T_signedChainedSearchResult */
+static int hf_dsp_chainedSearchResult = -1; /* ChainedSearchResultData */
+static int hf_dsp_addEntryArgument = -1; /* AddEntryArgument */
+static int hf_dsp_unsignedChainedAddEntryArgument = -1; /* ChainedAddEntryArgumentData */
+static int hf_dsp_signedChainedAddEntryArgument = -1; /* T_signedChainedAddEntryArgument */
+static int hf_dsp_chainedAddEntryArgument = -1; /* ChainedAddEntryArgumentData */
+static int hf_dsp_addEntryResult = -1; /* AddEntryResult */
+static int hf_dsp_unsignedChainedAddEntryResult = -1; /* ChainedAddEntryResultData */
+static int hf_dsp_signedChainedAddEntryResult = -1; /* T_signedChainedAddEntryResult */
+static int hf_dsp_chainedAddEntryResult = -1; /* ChainedAddEntryResultData */
+static int hf_dsp_removeEntryArgument = -1; /* RemoveEntryArgument */
+static int hf_dsp_unsignedChainedRemoveEntryArgument = -1; /* ChainedRemoveEntryArgumentData */
+static int hf_dsp_signedChainedRemoveEntryArgument = -1; /* T_signedChainedRemoveEntryArgument */
+static int hf_dsp_chainedRemoveEntryArgument = -1; /* ChainedRemoveEntryArgumentData */
+static int hf_dsp_removeEntryResult = -1; /* RemoveEntryResult */
+static int hf_dsp_unsignedChainedRemoveEntryResult = -1; /* ChainedRemoveEntryResultData */
+static int hf_dsp_signedChainedRemoveEntryResult = -1; /* T_signedChainedRemoveEntryResult */
+static int hf_dsp_chainedRemoveEntryResult = -1; /* ChainedRemoveEntryResultData */
+static int hf_dsp_modifyEntryArgument = -1; /* ModifyEntryArgument */
+static int hf_dsp_unsignedChainedModifyEntryArgument = -1; /* ChainedModifyEntryArgumentData */
+static int hf_dsp_signedChainedModifyEntryArgument = -1; /* T_signedChainedModifyEntryArgument */
+static int hf_dsp_chainedModifyEntryArgument = -1; /* ChainedModifyEntryArgumentData */
+static int hf_dsp_modifyEntryResult = -1; /* ModifyEntryResult */
+static int hf_dsp_unsignedChainedModifyEntryResult = -1; /* ChainedModifyEntryResultData */
+static int hf_dsp_signedChainedModifyEntryResult = -1; /* T_signedChainedModifyEntryResult */
+static int hf_dsp_chainedModifyEntryResult = -1; /* ChainedModifyEntryResultData */
+static int hf_dsp_modifyDNArgument = -1; /* ModifyDNArgument */
+static int hf_dsp_unsignedChainedModifyDNArgument = -1; /* ChainedModifyDNArgumentData */
+static int hf_dsp_signedChainedModifyDNArgument = -1; /* T_signedChainedModifyDNArgument */
+static int hf_dsp_chainedModifyDNArgument = -1; /* ChainedModifyDNArgumentData */
+static int hf_dsp_modifyDNResult = -1; /* ModifyDNResult */
+static int hf_dsp_unsignedChainedModifyDNResult = -1; /* ChainedModifyDNResultData */
+static int hf_dsp_signedChainedModifyDNResult = -1; /* T_signedChainedModifyDNResult */
+static int hf_dsp_chainedModifyDNResult = -1; /* ChainedModifyDNResultData */
+static int hf_dsp_reference = -1; /* ContinuationReference */
+static int hf_dsp_contextPrefix = -1; /* DistinguishedName */
+static int hf_dsp_securityParameters = -1; /* SecurityParameters */
+static int hf_dsp_performer = -1; /* DistinguishedName */
+static int hf_dsp_aliasDereferenced = -1; /* BOOLEAN */
+static int hf_dsp_notification = -1; /* SEQUENCE_OF_Attribute */
+static int hf_dsp_notification_item = -1; /* Attribute */
+static int hf_dsp_unsignedDSAReferral = -1; /* DSAReferralData */
+static int hf_dsp_signedDSAReferral = -1; /* T_signedDSAReferral */
+static int hf_dsp_dsaReferral = -1; /* DSAReferralData */
+static int hf_dsp_originator = -1; /* DistinguishedName */
+static int hf_dsp_targetObjectDN = -1; /* DistinguishedName */
+static int hf_dsp_operationProgress = -1; /* OperationProgress */
+static int hf_dsp_traceInformation = -1; /* TraceInformation */
+static int hf_dsp_aliasedRDNs = -1; /* INTEGER */
+static int hf_dsp_returnCrossRefs = -1; /* BOOLEAN */
+static int hf_dsp_referenceType = -1; /* ReferenceType */
+static int hf_dsp_info = -1; /* DomainInfo */
+static int hf_dsp_timeLimit = -1; /* Time */
+static int hf_dsp_entryOnly = -1; /* BOOLEAN */
+static int hf_dsp_uniqueIdentifier = -1; /* UniqueIdentifier */
+static int hf_dsp_authenticationLevel = -1; /* AuthenticationLevel */
+static int hf_dsp_exclusions = -1; /* Exclusions */
+static int hf_dsp_excludeShadows = -1; /* BOOLEAN */
+static int hf_dsp_nameResolveOnMaster = -1; /* BOOLEAN */
+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_utcTime = -1; /* UTCTime */
+static int hf_dsp_generalizedTime = -1; /* GeneralizedTime */
+static int hf_dsp_crossReferences = -1; /* SEQUENCE_OF_CrossReference */
+static int hf_dsp_crossReferences_item = -1; /* CrossReference */
+static int hf_dsp_alreadySearched = -1; /* Exclusions */
+static int hf_dsp_accessPoint = -1; /* AccessPointInformation */
+static int hf_dsp_nameResolutionPhase = -1; /* T_nameResolutionPhase */
+static int hf_dsp_nextRDNToBeResolved = -1; /* INTEGER */
+static int hf_dsp_TraceInformation_item = -1; /* TraceItem */
+static int hf_dsp_dsa = -1; /* Name */
+static int hf_dsp_targetObject = -1; /* Name */
+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_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_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_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; /* EXTERNAL */
+
+/*--- End of included file: packet-dsp-hf.c ---*/
+
+
+/* Initialize the subtree pointers */
+static gint ett_dsp = -1;
+
+/*--- Included file: packet-dsp-ett.c ---*/
+
+static gint ett_dsp_ChainedReadArgumentData = -1;
+static gint ett_dsp_ChainedReadArgument = -1;
+static gint ett_dsp_T_signedChainedReadArgument = -1;
+static gint ett_dsp_ChainedReadResultData = -1;
+static gint ett_dsp_ChainedReadResult = -1;
+static gint ett_dsp_T_signedChainedReadResult = -1;
+static gint ett_dsp_ChainedCompareArgumentData = -1;
+static gint ett_dsp_ChainedCompareArgument = -1;
+static gint ett_dsp_T_signedChainedCompareArgument = -1;
+static gint ett_dsp_ChainedCompareResultData = -1;
+static gint ett_dsp_ChainedCompareResult = -1;
+static gint ett_dsp_T_signedChainedCompareResult = -1;
+static gint ett_dsp_ChainedListArgumentData = -1;
+static gint ett_dsp_ChainedListArgument = -1;
+static gint ett_dsp_T_signedChainedListArgument = -1;
+static gint ett_dsp_ChainedListResultData = -1;
+static gint ett_dsp_ChainedListResult = -1;
+static gint ett_dsp_T_signedChainedListResult = -1;
+static gint ett_dsp_ChainedSearchArgumentData = -1;
+static gint ett_dsp_ChainedSearchArgument = -1;
+static gint ett_dsp_T_signedChainedSearchArgument = -1;
+static gint ett_dsp_ChainedSearchResultData = -1;
+static gint ett_dsp_ChainedSearchResult = -1;
+static gint ett_dsp_T_signedChainedSearchResult = -1;
+static gint ett_dsp_ChainedAddEntryArgumentData = -1;
+static gint ett_dsp_ChainedAddEntryArgument = -1;
+static gint ett_dsp_T_signedChainedAddEntryArgument = -1;
+static gint ett_dsp_ChainedAddEntryResultData = -1;
+static gint ett_dsp_ChainedAddEntryResult = -1;
+static gint ett_dsp_T_signedChainedAddEntryResult = -1;
+static gint ett_dsp_ChainedRemoveEntryArgumentData = -1;
+static gint ett_dsp_ChainedRemoveEntryArgument = -1;
+static gint ett_dsp_T_signedChainedRemoveEntryArgument = -1;
+static gint ett_dsp_ChainedRemoveEntryResultData = -1;
+static gint ett_dsp_ChainedRemoveEntryResult = -1;
+static gint ett_dsp_T_signedChainedRemoveEntryResult = -1;
+static gint ett_dsp_ChainedModifyEntryArgumentData = -1;
+static gint ett_dsp_ChainedModifyEntryArgument = -1;
+static gint ett_dsp_T_signedChainedModifyEntryArgument = -1;
+static gint ett_dsp_ChainedModifyEntryResultData = -1;
+static gint ett_dsp_ChainedModifyEntryResult = -1;
+static gint ett_dsp_T_signedChainedModifyEntryResult = -1;
+static gint ett_dsp_ChainedModifyDNArgumentData = -1;
+static gint ett_dsp_ChainedModifyDNArgument = -1;
+static gint ett_dsp_T_signedChainedModifyDNArgument = -1;
+static gint ett_dsp_ChainedModifyDNResultData = -1;
+static gint ett_dsp_ChainedModifyDNResult = -1;
+static gint ett_dsp_T_signedChainedModifyDNResult = -1;
+static gint ett_dsp_DSAReferralData = -1;
+static gint ett_dsp_SEQUENCE_OF_Attribute = -1;
+static gint ett_dsp_DSAReferral = -1;
+static gint ett_dsp_T_signedDSAReferral = -1;
+static gint ett_dsp_ChainingArguments = -1;
+static gint ett_dsp_Time = -1;
+static gint ett_dsp_ChainingResults = -1;
+static gint ett_dsp_SEQUENCE_OF_CrossReference = -1;
+static gint ett_dsp_CrossReference = -1;
+static gint ett_dsp_OperationProgress = -1;
+static gint ett_dsp_TraceInformation = -1;
+static gint ett_dsp_TraceItem = -1;
+static gint ett_dsp_AccessPoint = -1;
+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_Exclusions = -1;
+static gint ett_dsp_ContinuationReference = -1;
+static gint ett_dsp_SET_OF_AccessPointInformation = -1;
+static gint ett_dsp_AuthenticationLevel = -1;
+static gint ett_dsp_T_basicLevels = -1;
+
+/*--- End of included file: packet-dsp-ett.c ---*/
+
+
+
+/*--- Included file: packet-dsp-fn.c ---*/
+
+/*--- Fields for imported types ---*/
+
+static int dissect_readArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ReadArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_readArgument);
+}
+static int dissect_algorithmIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_dsp_algorithmIdentifier);
+}
+static int dissect_readResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ReadResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_readResult);
+}
+static int dissect_compareArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_CompareArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_compareArgument);
+}
+static int dissect_compareResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_CompareResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_compareResult);
+}
+static int dissect_listArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ListArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_listArgument);
+}
+static int dissect_listResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ListResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_listResult);
+}
+static int dissect_searchArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SearchArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_searchArgument);
+}
+static int dissect_searchResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SearchResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_searchResult);
+}
+static int dissect_addEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AddEntryArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_addEntryArgument);
+}
+static int dissect_addEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_AddEntryResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_addEntryResult);
+}
+static int dissect_removeEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_RemoveEntryArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_removeEntryArgument);
+}
+static int dissect_removeEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_RemoveEntryResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_removeEntryResult);
+}
+static int dissect_modifyEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyEntryArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_modifyEntryArgument);
+}
+static int dissect_modifyEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyEntryResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_modifyEntryResult);
+}
+static int dissect_modifyDNArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyDNArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_modifyDNArgument);
+}
+static int dissect_modifyDNResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_ModifyDNResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_modifyDNResult);
+}
+static int dissect_contextPrefix(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dsp_contextPrefix);
+}
+static int dissect_securityParameters(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_SecurityParameters(FALSE, tvb, offset, pinfo, tree, hf_dsp_securityParameters);
+}
+static int dissect_performer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dsp_performer);
+}
+static int dissect_notification_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dsp_notification_item);
+}
+static int dissect_originator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dsp_originator);
+}
+static int dissect_targetObjectDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dsp_targetObjectDN);
+}
+static int dissect_uniqueIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509sat_UniqueIdentifier(FALSE, tvb, offset, pinfo, tree, hf_dsp_uniqueIdentifier);
+}
+static int dissect_searchRuleId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SearchRuleId(FALSE, tvb, offset, pinfo, tree, hf_dsp_searchRuleId);
+}
+static int dissect_chainedRelaxation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_dsp_chainedRelaxation);
+}
+static int dissect_dsa(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Name(FALSE, tvb, offset, pinfo, tree, hf_dsp_dsa);
+}
+static int dissect_targetObject(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Name(FALSE, tvb, offset, pinfo, tree, hf_dsp_targetObject);
+}
+static int dissect_ae_title(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Name(FALSE, tvb, offset, pinfo, tree, hf_dsp_ae_title);
+}
+static int dissect_address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509sat_PresentationAddress(FALSE, tvb, offset, pinfo, tree, hf_dsp_address);
+}
+static int dissect_protocolInformation_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509sat_ProtocolInformation(FALSE, tvb, offset, pinfo, tree, hf_dsp_protocolInformation_item);
+}
+static int dissect_Exclusions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RDNSequence(FALSE, tvb, offset, pinfo, tree, hf_dsp_Exclusions_item);
+}
+static int dissect_other(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_acse_EXTERNAL(FALSE, tvb, offset, pinfo, tree, hf_dsp_other);
+}
+
+
+
+static int
+dissect_dsp_DSASystemBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_dsp_DSASystemBindResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_dsp_DSASystemBindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_DirectoryBindError(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+static const value_string dsp_T_nameResolutionPhase_vals[] = {
+ { 1, "notStarted" },
+ { 2, "proceeding" },
+ { 3, "completed" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dsp_T_nameResolutionPhase(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_nameResolutionPhase(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_nameResolutionPhase(FALSE, tvb, offset, pinfo, tree, hf_dsp_nameResolutionPhase);
+}
+
+
+
+static int
+dissect_dsp_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_aliasedRDNs(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dsp_aliasedRDNs);
+}
+static int dissect_operationIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dsp_operationIdentifier);
+}
+static int dissect_relatedEntry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dsp_relatedEntry);
+}
+static int dissect_nextRDNToBeResolved(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dsp_nextRDNToBeResolved);
+}
+static int dissect_rdnsResolved(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dsp_rdnsResolved);
+}
+static int dissect_localQualifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_INTEGER(FALSE, tvb, offset, pinfo, 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 }
+};
+
+int
+dissect_dsp_OperationProgress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ OperationProgress_set, hf_index, ett_dsp_OperationProgress);
+
+ return offset;
+}
+static int dissect_operationProgress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_OperationProgress(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_TraceItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ TraceItem_set, hf_index, ett_dsp_TraceItem);
+
+ return offset;
+}
+static int dissect_TraceInformation_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_TraceItem(FALSE, tvb, offset, pinfo, 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 },
+};
+
+static int
+dissect_dsp_TraceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ TraceInformation_sequence_of, hf_index, ett_dsp_TraceInformation);
+
+ return offset;
+}
+static int dissect_traceInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_TraceInformation(FALSE, tvb, offset, pinfo, tree, hf_dsp_traceInformation);
+}
+
+
+
+static int
+dissect_dsp_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_aliasDereferenced(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dsp_aliasDereferenced);
+}
+static int dissect_returnCrossRefs(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dsp_returnCrossRefs);
+}
+static int dissect_entryOnly(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dsp_entryOnly);
+}
+static int dissect_excludeShadows(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dsp_excludeShadows);
+}
+static int dissect_nameResolveOnMaster(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dsp_nameResolveOnMaster);
+}
+static int dissect_chainingRequired(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dsp_chainingRequired);
+}
+static int dissect_returnToDUA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dsp_returnToDUA);
+}
+static int dissect_signed(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dsp_signed);
+}
+
+
+const value_string dsp_ReferenceType_vals[] = {
+ { 1, "superior" },
+ { 2, "subordinate" },
+ { 3, "cross" },
+ { 4, "nonSpecificSubordinate" },
+ { 5, "supplier" },
+ { 6, "master" },
+ { 7, "immediateSuperior" },
+ { 8, "self" },
+ { 0, NULL }
+};
+
+
+int
+dissect_dsp_ReferenceType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_referenceType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ReferenceType(FALSE, tvb, offset, pinfo, tree, hf_dsp_referenceType);
+}
+
+
+
+static int
+dissect_dsp_DomainInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+static int dissect_info(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_DomainInfo(FALSE, tvb, offset, pinfo, tree, hf_dsp_info);
+}
+
+
+
+static int
+dissect_dsp_UTCTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_utcTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_UTCTime(FALSE, tvb, offset, pinfo, tree, hf_dsp_utcTime);
+}
+
+
+
+static int
+dissect_dsp_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_generalizedTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_GeneralizedTime(FALSE, tvb, offset, pinfo, tree, hf_dsp_generalizedTime);
+}
+
+
+static const value_string dsp_Time_vals[] = {
+ { 0, "utcTime" },
+ { 1, "generalizedTime" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_Time(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Time_choice, hf_index, ett_dsp_Time,
+ NULL);
+
+ return offset;
+}
+static int dissect_timeLimit(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_Time(FALSE, tvb, offset, pinfo, tree, hf_dsp_timeLimit);
+}
+
+
+static const value_string dsp_T_level_vals[] = {
+ { 0, "none" },
+ { 1, "simple" },
+ { 2, "strong" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dsp_T_level(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_level(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_level(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_basicLevels(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_basicLevels_sequence, hf_index, ett_dsp_T_basicLevels);
+
+ return offset;
+}
+static int dissect_basicLevels(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_basicLevels(FALSE, tvb, offset, pinfo, tree, hf_dsp_basicLevels);
+}
+
+
+static const value_string dsp_AuthenticationLevel_vals[] = {
+ { 0, "basicLevels" },
+ { 1, "other" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_AuthenticationLevel(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AuthenticationLevel_choice, hf_index, ett_dsp_AuthenticationLevel,
+ NULL);
+
+ return offset;
+}
+static int dissect_authenticationLevel(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_AuthenticationLevel(FALSE, tvb, offset, pinfo, 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 },
+};
+
+static int
+dissect_dsp_Exclusions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ Exclusions_set_of, hf_index, ett_dsp_Exclusions);
+
+ return offset;
+}
+static int dissect_exclusions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_Exclusions(FALSE, tvb, offset, pinfo, tree, hf_dsp_exclusions);
+}
+static int dissect_alreadySearched(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_Exclusions(FALSE, tvb, offset, pinfo, tree, hf_dsp_alreadySearched);
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainingArguments(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainingArguments_set, hf_index, ett_dsp_ChainingArguments);
+
+ return offset;
+}
+static int dissect_chainedArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainingArguments(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_ChainedReadArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedReadArgumentData_set, hf_index, ett_dsp_ChainedReadArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedChainedReadArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedReadArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedReadArgument);
+}
+static int dissect_chainedReadArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedReadArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dsp_chainedReadArgument);
+}
+
+
+
+static int
+dissect_dsp_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ NULL, hf_index, -1,
+ NULL);
+
+ return offset;
+}
+static int dissect_encrypted(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_BIT_STRING(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedReadArgument_sequence, hf_index, ett_dsp_T_signedChainedReadArgument);
+
+ return offset;
+}
+static int dissect_signedChainedReadArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedReadArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedReadArgument);
+}
+
+
+static const value_string dsp_ChainedReadArgument_vals[] = {
+ { 0, "unsignedChainedReadArgument" },
+ { 1, "signedChainedReadArgument" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedReadArgument_choice, hf_index, ett_dsp_ChainedReadArgument,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SET_OF_ProtocolInformation_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protocolInformation_item },
+};
+
+static int
+dissect_dsp_SET_OF_ProtocolInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_ProtocolInformation_set_of, hf_index, ett_dsp_SET_OF_ProtocolInformation);
+
+ return offset;
+}
+static int dissect_protocolInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_SET_OF_ProtocolInformation(FALSE, tvb, offset, pinfo, tree, hf_dsp_protocolInformation);
+}
+
+
+static const value_string dsp_T_category_vals[] = {
+ { 0, "master" },
+ { 1, "shadow" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dsp_T_category(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_category(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_category(FALSE, tvb, offset, pinfo, tree, hf_dsp_category);
+}
+
+
+static const value_string dsp_APCategory_vals[] = {
+ { 0, "master" },
+ { 1, "shadow" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_dsp_APCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_access_point_category(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_APCategory(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_MasterOrShadowAccessPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ MasterOrShadowAccessPoint_set, hf_index, ett_dsp_MasterOrShadowAccessPoint);
+
+ return offset;
+}
+static int dissect_MasterAndShadowAccessPoints_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_MasterOrShadowAccessPoint(FALSE, tvb, offset, pinfo, 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 },
+};
+
+static int
+dissect_dsp_MasterAndShadowAccessPoints(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ MasterAndShadowAccessPoints_set_of, hf_index, ett_dsp_MasterAndShadowAccessPoints);
+
+ return offset;
+}
+static int dissect_additionalPoints(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_MasterAndShadowAccessPoints(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_AccessPointInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ AccessPointInformation_set, hf_index, ett_dsp_AccessPointInformation);
+
+ return offset;
+}
+static int dissect_accessPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_AccessPointInformation(FALSE, tvb, offset, pinfo, tree, hf_dsp_accessPoint);
+}
+static int dissect_accessPoints_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_AccessPointInformation(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_CrossReference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ CrossReference_set, hf_index, ett_dsp_CrossReference);
+
+ return offset;
+}
+static int dissect_crossReferences_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_CrossReference(FALSE, tvb, offset, pinfo, 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 },
+};
+
+static int
+dissect_dsp_SEQUENCE_OF_CrossReference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_CrossReference_sequence_of, hf_index, ett_dsp_SEQUENCE_OF_CrossReference);
+
+ return offset;
+}
+static int dissect_crossReferences(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_SEQUENCE_OF_CrossReference(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_ChainingResults(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainingResults_set, hf_index, ett_dsp_ChainingResults);
+
+ return offset;
+}
+static int dissect_chainedResults(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainingResults(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_ChainedReadResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedReadResultData_set, hf_index, ett_dsp_ChainedReadResultData);
+
+ return offset;
+}
+static int dissect_unsignedChainedReadResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedReadResultData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedReadResult);
+}
+static int dissect_chainedReadResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedReadResultData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedReadResult_sequence, hf_index, ett_dsp_T_signedChainedReadResult);
+
+ return offset;
+}
+static int dissect_signedChainedReadResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedReadResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedReadResult);
+}
+
+
+static const value_string dsp_ChainedReadResult_vals[] = {
+ { 0, "unsignedChainedReadResult" },
+ { 1, "signedChainedReadResult" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedReadResult_choice, hf_index, ett_dsp_ChainedReadResult,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedCompareArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedCompareArgumentData_set, hf_index, ett_dsp_ChainedCompareArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedChainedCompareArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedCompareArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedCompareArgument);
+}
+static int dissect_chainedCompareArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedCompareArgumentData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedCompareArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedCompareArgument_sequence, hf_index, ett_dsp_T_signedChainedCompareArgument);
+
+ return offset;
+}
+static int dissect_signedChainedCompareArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedCompareArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedCompareArgument);
+}
+
+
+static const value_string dsp_ChainedCompareArgument_vals[] = {
+ { 0, "unsignedChainedCompareArgument" },
+ { 1, "signedChainedCompareArgument" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedCompareArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedCompareArgument_choice, hf_index, ett_dsp_ChainedCompareArgument,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedCompareResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedCompareResultData_set, hf_index, ett_dsp_ChainedCompareResultData);
+
+ return offset;
+}
+static int dissect_unsignedChainedCompareResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedCompareResultData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedCompareResult);
+}
+static int dissect_chainedCompareResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedCompareResultData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedCompareResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedCompareResult_sequence, hf_index, ett_dsp_T_signedChainedCompareResult);
+
+ return offset;
+}
+static int dissect_signedChainedCompareResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedCompareResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedCompareResult);
+}
+
+
+static const value_string dsp_ChainedCompareResult_vals[] = {
+ { 0, "unsignedChainedCompareResult" },
+ { 1, "signedChainedCompareResult" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedCompareResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedCompareResult_choice, hf_index, ett_dsp_ChainedCompareResult,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_dsp_ChainedAbandonArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_AbandonArgument(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_dsp_ChainedAbandonResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_dap_AbandonResult(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedListArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedListArgumentData_set, hf_index, ett_dsp_ChainedListArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedChainedListArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedListArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedListArgument);
+}
+static int dissect_chainedListArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedListArgumentData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedListArgument_sequence, hf_index, ett_dsp_T_signedChainedListArgument);
+
+ return offset;
+}
+static int dissect_signedChainedListArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedListArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedListArgument);
+}
+
+
+static const value_string dsp_ChainedListArgument_vals[] = {
+ { 0, "unsignedChainedListArgument" },
+ { 1, "signedChainedListArgument" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedListArgument_choice, hf_index, ett_dsp_ChainedListArgument,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedListResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedListResultData_set, hf_index, ett_dsp_ChainedListResultData);
+
+ return offset;
+}
+static int dissect_unsignedChainedListResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedListResultData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedListResult);
+}
+static int dissect_chainedListResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedListResultData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedListResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedListResult_sequence, hf_index, ett_dsp_T_signedChainedListResult);
+
+ return offset;
+}
+static int dissect_signedChainedListResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedListResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedListResult);
+}
+
+
+static const value_string dsp_ChainedListResult_vals[] = {
+ { 0, "unsignedChainedListResult" },
+ { 1, "signedChainedListResult" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedListResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedListResult_choice, hf_index, ett_dsp_ChainedListResult,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedSearchArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedSearchArgumentData_set, hf_index, ett_dsp_ChainedSearchArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedChainedSearchArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedSearchArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedSearchArgument);
+}
+static int dissect_chainedSearchArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedSearchArgumentData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedSearchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedSearchArgument_sequence, hf_index, ett_dsp_T_signedChainedSearchArgument);
+
+ return offset;
+}
+static int dissect_signedChainedSearchArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedSearchArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedSearchArgument);
+}
+
+
+static const value_string dsp_ChainedSearchArgument_vals[] = {
+ { 0, "unsignedChainedSearchArgument" },
+ { 1, "signedChainedSearchArgument" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedSearchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedSearchArgument_choice, hf_index, ett_dsp_ChainedSearchArgument,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedSearchResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedSearchResultData_set, hf_index, ett_dsp_ChainedSearchResultData);
+
+ return offset;
+}
+static int dissect_unsignedChainedSearchResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedSearchResultData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedSearchResult);
+}
+static int dissect_chainedSearchResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedSearchResultData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedSearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedSearchResult_sequence, hf_index, ett_dsp_T_signedChainedSearchResult);
+
+ return offset;
+}
+static int dissect_signedChainedSearchResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedSearchResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedSearchResult);
+}
+
+
+static const value_string dsp_ChainedSearchResult_vals[] = {
+ { 0, "unsignedChainedSearchResult" },
+ { 1, "signedChainedSearchResult" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedSearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedSearchResult_choice, hf_index, ett_dsp_ChainedSearchResult,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedAddEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedAddEntryArgumentData_set, hf_index, ett_dsp_ChainedAddEntryArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedChainedAddEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedAddEntryArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedAddEntryArgument);
+}
+static int dissect_chainedAddEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedAddEntryArgumentData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedAddEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedAddEntryArgument_sequence, hf_index, ett_dsp_T_signedChainedAddEntryArgument);
+
+ return offset;
+}
+static int dissect_signedChainedAddEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedAddEntryArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedAddEntryArgument);
+}
+
+
+static const value_string dsp_ChainedAddEntryArgument_vals[] = {
+ { 0, "unsignedChainedAddEntryArgument" },
+ { 1, "signedChainedAddEntryArgument" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedAddEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedAddEntryArgument_choice, hf_index, ett_dsp_ChainedAddEntryArgument,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedAddEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedAddEntryResultData_set, hf_index, ett_dsp_ChainedAddEntryResultData);
+
+ return offset;
+}
+static int dissect_unsignedChainedAddEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedAddEntryResultData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedAddEntryResult);
+}
+static int dissect_chainedAddEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedAddEntryResultData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedAddEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedAddEntryResult_sequence, hf_index, ett_dsp_T_signedChainedAddEntryResult);
+
+ return offset;
+}
+static int dissect_signedChainedAddEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedAddEntryResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedAddEntryResult);
+}
+
+
+static const value_string dsp_ChainedAddEntryResult_vals[] = {
+ { 0, "unsignedChainedAddEntryResult" },
+ { 1, "signedChainedAddEntryResult" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedAddEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedAddEntryResult_choice, hf_index, ett_dsp_ChainedAddEntryResult,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedRemoveEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedRemoveEntryArgumentData_set, hf_index, ett_dsp_ChainedRemoveEntryArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedChainedRemoveEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedRemoveEntryArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedRemoveEntryArgument);
+}
+static int dissect_chainedRemoveEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedRemoveEntryArgumentData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedRemoveEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedRemoveEntryArgument_sequence, hf_index, ett_dsp_T_signedChainedRemoveEntryArgument);
+
+ return offset;
+}
+static int dissect_signedChainedRemoveEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedRemoveEntryArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedRemoveEntryArgument);
+}
+
+
+static const value_string dsp_ChainedRemoveEntryArgument_vals[] = {
+ { 0, "unsignedChainedRemoveEntryArgument" },
+ { 1, "signedChainedRemoveEntryArgument" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedRemoveEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedRemoveEntryArgument_choice, hf_index, ett_dsp_ChainedRemoveEntryArgument,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedRemoveEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedRemoveEntryResultData_set, hf_index, ett_dsp_ChainedRemoveEntryResultData);
+
+ return offset;
+}
+static int dissect_unsignedChainedRemoveEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedRemoveEntryResultData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedRemoveEntryResult);
+}
+static int dissect_chainedRemoveEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedRemoveEntryResultData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedRemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedRemoveEntryResult_sequence, hf_index, ett_dsp_T_signedChainedRemoveEntryResult);
+
+ return offset;
+}
+static int dissect_signedChainedRemoveEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedRemoveEntryResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedRemoveEntryResult);
+}
+
+
+static const value_string dsp_ChainedRemoveEntryResult_vals[] = {
+ { 0, "unsignedChainedRemoveEntryResult" },
+ { 1, "signedChainedRemoveEntryResult" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedRemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedRemoveEntryResult_choice, hf_index, ett_dsp_ChainedRemoveEntryResult,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedModifyEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedModifyEntryArgumentData_set, hf_index, ett_dsp_ChainedModifyEntryArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedChainedModifyEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedModifyEntryArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedModifyEntryArgument);
+}
+static int dissect_chainedModifyEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedModifyEntryArgumentData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedModifyEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedModifyEntryArgument_sequence, hf_index, ett_dsp_T_signedChainedModifyEntryArgument);
+
+ return offset;
+}
+static int dissect_signedChainedModifyEntryArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedModifyEntryArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedModifyEntryArgument);
+}
+
+
+static const value_string dsp_ChainedModifyEntryArgument_vals[] = {
+ { 0, "unsignedChainedModifyEntryArgument" },
+ { 1, "signedChainedModifyEntryArgument" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedModifyEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedModifyEntryArgument_choice, hf_index, ett_dsp_ChainedModifyEntryArgument,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedModifyEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedModifyEntryResultData_set, hf_index, ett_dsp_ChainedModifyEntryResultData);
+
+ return offset;
+}
+static int dissect_unsignedChainedModifyEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedModifyEntryResultData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedModifyEntryResult);
+}
+static int dissect_chainedModifyEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedModifyEntryResultData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedModifyEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedModifyEntryResult_sequence, hf_index, ett_dsp_T_signedChainedModifyEntryResult);
+
+ return offset;
+}
+static int dissect_signedChainedModifyEntryResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedModifyEntryResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedModifyEntryResult);
+}
+
+
+static const value_string dsp_ChainedModifyEntryResult_vals[] = {
+ { 0, "unsignedChainedModifyEntryResult" },
+ { 1, "signedChainedModifyEntryResult" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedModifyEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedModifyEntryResult_choice, hf_index, ett_dsp_ChainedModifyEntryResult,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedModifyDNArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedModifyDNArgumentData_set, hf_index, ett_dsp_ChainedModifyDNArgumentData);
+
+ return offset;
+}
+static int dissect_unsignedChainedModifyDNArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedModifyDNArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedModifyDNArgument);
+}
+static int dissect_chainedModifyDNArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedModifyDNArgumentData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedModifyDNArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedModifyDNArgument_sequence, hf_index, ett_dsp_T_signedChainedModifyDNArgument);
+
+ return offset;
+}
+static int dissect_signedChainedModifyDNArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedModifyDNArgument(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedModifyDNArgument);
+}
+
+
+static const value_string dsp_ChainedModifyDNArgument_vals[] = {
+ { 0, "unsignedChainedModifyDNArgument" },
+ { 1, "signedChainedModifyDNArgument" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedModifyDNArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedModifyDNArgument_choice, hf_index, ett_dsp_ChainedModifyDNArgument,
+ NULL);
+
+ return offset;
+}
+
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedModifyDNResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ChainedModifyDNResultData_set, hf_index, ett_dsp_ChainedModifyDNResultData);
+
+ return offset;
+}
+static int dissect_unsignedChainedModifyDNResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedModifyDNResultData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedChainedModifyDNResult);
+}
+static int dissect_chainedModifyDNResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ChainedModifyDNResultData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedChainedModifyDNResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedChainedModifyDNResult_sequence, hf_index, ett_dsp_T_signedChainedModifyDNResult);
+
+ return offset;
+}
+static int dissect_signedChainedModifyDNResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedChainedModifyDNResult(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedChainedModifyDNResult);
+}
+
+
+static const value_string dsp_ChainedModifyDNResult_vals[] = {
+ { 0, "unsignedChainedModifyDNResult" },
+ { 1, "signedChainedModifyDNResult" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_ChainedModifyDNResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ ChainedModifyDNResult_choice, hf_index, ett_dsp_ChainedModifyDNResult,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SET_OF_AccessPointInformation_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_accessPoints_item },
+};
+
+static int
+dissect_dsp_SET_OF_AccessPointInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_AccessPointInformation_set_of, hf_index, ett_dsp_SET_OF_AccessPointInformation);
+
+ return offset;
+}
+static int dissect_accessPoints(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_SET_OF_AccessPointInformation(FALSE, tvb, offset, pinfo, 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 }
+};
+
+int
+dissect_dsp_ContinuationReference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ ContinuationReference_set, hf_index, ett_dsp_ContinuationReference);
+
+ return offset;
+}
+static int dissect_reference(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_ContinuationReference(FALSE, tvb, offset, pinfo, 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 },
+};
+
+static int
+dissect_dsp_SEQUENCE_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_dsp_SEQUENCE_OF_Attribute);
+
+ return offset;
+}
+static int dissect_notification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_SEQUENCE_OF_Attribute(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_DSAReferralData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ DSAReferralData_set, hf_index, ett_dsp_DSAReferralData);
+
+ return offset;
+}
+static int dissect_unsignedDSAReferral(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_DSAReferralData(FALSE, tvb, offset, pinfo, tree, hf_dsp_unsignedDSAReferral);
+}
+static int dissect_dsaReferral(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_DSAReferralData(FALSE, tvb, offset, pinfo, 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 }
+};
+
+static int
+dissect_dsp_T_signedDSAReferral(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_signedDSAReferral_sequence, hf_index, ett_dsp_T_signedDSAReferral);
+
+ return offset;
+}
+static int dissect_signedDSAReferral(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_T_signedDSAReferral(FALSE, tvb, offset, pinfo, tree, hf_dsp_signedDSAReferral);
+}
+
+
+static const value_string dsp_DSAReferral_vals[] = {
+ { 0, "unsignedDSAReferral" },
+ { 1, "signedDSAReferral" },
+ { 0, NULL }
+};
+
+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 }
+};
+
+static int
+dissect_dsp_DSAReferral(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ DSAReferral_choice, hf_index, ett_dsp_DSAReferral,
+ NULL);
+
+ 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 }
+};
+
+int
+dissect_dsp_AccessPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ AccessPoint_set, hf_index, ett_dsp_AccessPoint);
+
+ return offset;
+}
+
+/*--- PDUs ---*/
+
+static void dissect_AccessPoint_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ dissect_dsp_AccessPoint(FALSE, tvb, 0, pinfo, tree, hf_dsp_AccessPoint_PDU);
+}
+static void dissect_MasterAndShadowAccessPoints_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ dissect_dsp_MasterAndShadowAccessPoints(FALSE, tvb, 0, pinfo, tree, hf_dsp_MasterAndShadowAccessPoints_PDU);
+}
+
+
+/*--- End of included file: packet-dsp-fn.c ---*/
+
+
+/*
+* Dissect X518 PDUs inside a ROS PDUs
+*/
+static void
+dissect_dsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
+{
+ int offset = 0;
+ int old_offset;
+ proto_item *item=NULL;
+ proto_tree *tree=NULL;
+ int (*dsp_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) = NULL;
+ char *dsp_op_name;
+
+ /* do we have operation information from the ROS dissector? */
+ if( !pinfo->private_data ){
+ if(parent_tree){
+ proto_tree_add_text(parent_tree, tvb, offset, -1,
+ "Internal error: can't get operation information from ROS dissector.");
+ }
+ return ;
+ } else {
+ session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
+ }
+
+ if(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);
+
+ switch(session->ros_op & ROS_OP_MASK) {
+ case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
+ dsp_dissector = dissect_dsp_DSASystemBindArgument;
+ dsp_op_name = "System-Bind-Argument";
+ break;
+ case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
+ dsp_dissector = dissect_dsp_DSASystemBindResult;
+ dsp_op_name = "System-Bind-Result";
+ break;
+ case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
+ dsp_dissector = dissect_dsp_DSASystemBindError;
+ dsp_op_name = "System-Bind-Error";
+ break;
+ case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
+ switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+ case 1: /* read */
+ dsp_dissector = dissect_dsp_ChainedReadArgument;
+ dsp_op_name = "Chained-Read-Argument";
+ break;
+ case 2: /* compare */
+ dsp_dissector = dissect_dsp_ChainedCompareArgument;
+ dsp_op_name = "Chained-Compare-Argument";
+ break;
+ case 3: /* abandon */
+ dsp_dissector = dissect_dsp_ChainedAbandonArgument;
+ dsp_op_name = "Chained-Abandon-Argument";
+ break;
+ case 4: /* list */
+ dsp_dissector = dissect_dsp_ChainedListArgument;
+ dsp_op_name = "Chained-List-Argument";
+ break;
+ case 5: /* search */
+ dsp_dissector = dissect_dsp_ChainedSearchArgument;
+ dsp_op_name = "Chained-Search-Argument";
+ break;
+ case 6: /* addEntry */
+ dsp_dissector = dissect_dsp_ChainedAddEntryArgument;
+ dsp_op_name = "Chained-Add-Entry-Argument";
+ break;
+ case 7: /* removeEntry */
+ dsp_dissector = dissect_dsp_ChainedRemoveEntryArgument;
+ dsp_op_name = "Chained-Remove-Entry-Argument";
+ break;
+ case 8: /* modifyEntry */
+ dsp_dissector = dissect_dsp_ChainedModifyEntryArgument;
+ dsp_op_name = "ChainedModify-Entry-Argument";
+ break;
+ case 9: /* modifyDN */
+ dsp_dissector = dissect_dsp_ChainedModifyDNArgument;
+ dsp_op_name = "ChainedModify-DN-Argument";
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP opcode (%d)",
+ session->ros_op & ROS_OP_OPCODE_MASK);
+ break;
+ }
+ break;
+ case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
+ switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+ case 1: /* read */
+ dsp_dissector = dissect_dsp_ChainedReadResult;
+ dsp_op_name = "Chained-Read-Result";
+ break;
+ case 2: /* compare */
+ dsp_dissector = dissect_dsp_ChainedCompareResult;
+ dsp_op_name = "Chained-Compare-Result";
+ break;
+ case 3: /* abandon */
+ dsp_dissector = dissect_dsp_ChainedAbandonResult;
+ dsp_op_name = "Chained-Abandon-Result";
+ break;
+ case 4: /* list */
+ dsp_dissector = dissect_dsp_ChainedListResult;
+ dsp_op_name = "Chained-List-Result";
+ break;
+ case 5: /* search */
+ dsp_dissector = dissect_dsp_ChainedSearchResult;
+ dsp_op_name = "Chained-Search-Result";
+ break;
+ case 6: /* addEntry */
+ dsp_dissector = dissect_dsp_ChainedAddEntryResult;
+ dsp_op_name = "Chained-Add-Entry-Result";
+ break;
+ case 7: /* removeEntry */
+ dsp_dissector = dissect_dsp_ChainedRemoveEntryResult;
+ dsp_op_name = "Chained-Remove-Entry-Result";
+ break;
+ case 8: /* modifyEntry */
+ dsp_dissector = dissect_dsp_ChainedModifyEntryResult;
+ dsp_op_name = "Chained-Modify-Entry-Result";
+ break;
+ case 9: /* modifyDN */
+ dsp_dissector = dissect_dsp_ChainedModifyDNResult;
+ dsp_op_name = "ChainedModify-DN-Result";
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP opcode");
+ break;
+ }
+ break;
+ case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
+ switch(session->ros_op & ROS_OP_OPCODE_MASK) {
+ case 1: /* attributeError */
+ dsp_dissector = dissect_dap_AttributeError;
+ dsp_op_name = "Attribute-Error";
+ break;
+ case 2: /* nameError */
+ dsp_dissector = dissect_dap_NameError;
+ dsp_op_name = "Name-Error";
+ break;
+ case 3: /* serviceError */
+ dsp_dissector = dissect_dap_ServiceError;
+ dsp_op_name = "Service-Error";
+ break;
+ case 4: /* referral */
+ dsp_dissector = dissect_dap_Referral;
+ dsp_op_name = "Referral";
+ break;
+ case 5: /* abandoned */
+ dsp_dissector = dissect_dap_Abandoned;
+ dsp_op_name = "Abandoned";
+ break;
+ case 6: /* securityError */
+ dsp_dissector = dissect_dap_SecurityError;
+ dsp_op_name = "Security-Error";
+ break;
+ case 7: /* abandonFailed */
+ dsp_dissector = dissect_dap_AbandonFailedError;
+ dsp_op_name = "Abandon-Failed-Error";
+ break;
+ case 8: /* updateError */
+ dsp_dissector = dissect_dap_UpdateError;
+ dsp_op_name = "Update-Error";
+ break;
+ case 9: /* DSAReferral */
+ dsp_dissector = dissect_dsp_DSAReferral;
+ dsp_op_name = "DSA-Referral";
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP errcode");
+ break;
+ }
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP PDU");
+ return;
+ }
+
+ if(dsp_dissector) {
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_add_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, pinfo , 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;
+ }
+ }
+ }
+}
+
+
+/*--- proto_register_dsp -------------------------------------------*/
+void proto_register_dsp(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] =
+ {
+
+/*--- Included file: packet-dsp-hfarr.c ---*/
+
+ { &hf_dsp_AccessPoint_PDU,
+ { "AccessPoint", "dsp.AccessPoint",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AccessPoint", HFILL }},
+ { &hf_dsp_MasterAndShadowAccessPoints_PDU,
+ { "MasterAndShadowAccessPoints", "dsp.MasterAndShadowAccessPoints",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MasterAndShadowAccessPoints", HFILL }},
+ { &hf_dsp_chainedArgument,
+ { "chainedArgument", "dsp.chainedArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_readArgument,
+ { "readArgument", "dsp.readArgument",
+ FT_UINT32, BASE_DEC, VALS(dap_ReadArgument_vals), 0,
+ "ChainedReadArgumentData/readArgument", HFILL }},
+ { &hf_dsp_unsignedChainedReadArgument,
+ { "unsignedChainedReadArgument", "dsp.unsignedChainedReadArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedReadArgument/unsignedChainedReadArgument", HFILL }},
+ { &hf_dsp_signedChainedReadArgument,
+ { "signedChainedReadArgument", "dsp.signedChainedReadArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedReadArgument/signedChainedReadArgument", HFILL }},
+ { &hf_dsp_chainedReadArgument,
+ { "chainedReadArgument", "dsp.chainedReadArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedReadArgument/signedChainedReadArgument/chainedReadArgument", HFILL }},
+ { &hf_dsp_algorithmIdentifier,
+ { "algorithmIdentifier", "dsp.algorithmIdentifier",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_encrypted,
+ { "encrypted", "dsp.encrypted",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_chainedResults,
+ { "chainedResults", "dsp.chainedResults",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_readResult,
+ { "readResult", "dsp.readResult",
+ FT_UINT32, BASE_DEC, VALS(dap_ReadResult_vals), 0,
+ "ChainedReadResultData/readResult", HFILL }},
+ { &hf_dsp_unsignedChainedReadResult,
+ { "unsignedChainedReadResult", "dsp.unsignedChainedReadResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedReadResult/unsignedChainedReadResult", HFILL }},
+ { &hf_dsp_signedChainedReadResult,
+ { "signedChainedReadResult", "dsp.signedChainedReadResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedReadResult/signedChainedReadResult", HFILL }},
+ { &hf_dsp_chainedReadResult,
+ { "chainedReadResult", "dsp.chainedReadResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedReadResult/signedChainedReadResult/chainedReadResult", HFILL }},
+ { &hf_dsp_compareArgument,
+ { "compareArgument", "dsp.compareArgument",
+ FT_UINT32, BASE_DEC, VALS(dap_CompareArgument_vals), 0,
+ "ChainedCompareArgumentData/compareArgument", HFILL }},
+ { &hf_dsp_unsignedChainedCompareArgument,
+ { "unsignedChainedCompareArgument", "dsp.unsignedChainedCompareArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedCompareArgument/unsignedChainedCompareArgument", HFILL }},
+ { &hf_dsp_signedChainedCompareArgument,
+ { "signedChainedCompareArgument", "dsp.signedChainedCompareArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedCompareArgument/signedChainedCompareArgument", HFILL }},
+ { &hf_dsp_chainedCompareArgument,
+ { "chainedCompareArgument", "dsp.chainedCompareArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedCompareArgument/signedChainedCompareArgument/chainedCompareArgument", HFILL }},
+ { &hf_dsp_compareResult,
+ { "compareResult", "dsp.compareResult",
+ FT_UINT32, BASE_DEC, VALS(dap_CompareResult_vals), 0,
+ "ChainedCompareResultData/compareResult", HFILL }},
+ { &hf_dsp_unsignedChainedCompareResult,
+ { "unsignedChainedCompareResult", "dsp.unsignedChainedCompareResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedCompareResult/unsignedChainedCompareResult", HFILL }},
+ { &hf_dsp_signedChainedCompareResult,
+ { "signedChainedCompareResult", "dsp.signedChainedCompareResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedCompareResult/signedChainedCompareResult", HFILL }},
+ { &hf_dsp_chainedCompareResult,
+ { "chainedCompareResult", "dsp.chainedCompareResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedCompareResult/signedChainedCompareResult/chainedCompareResult", HFILL }},
+ { &hf_dsp_listArgument,
+ { "listArgument", "dsp.listArgument",
+ FT_UINT32, BASE_DEC, VALS(dap_ListArgument_vals), 0,
+ "ChainedListArgumentData/listArgument", HFILL }},
+ { &hf_dsp_unsignedChainedListArgument,
+ { "unsignedChainedListArgument", "dsp.unsignedChainedListArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedListArgument/unsignedChainedListArgument", HFILL }},
+ { &hf_dsp_signedChainedListArgument,
+ { "signedChainedListArgument", "dsp.signedChainedListArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedListArgument/signedChainedListArgument", HFILL }},
+ { &hf_dsp_chainedListArgument,
+ { "chainedListArgument", "dsp.chainedListArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedListArgument/signedChainedListArgument/chainedListArgument", HFILL }},
+ { &hf_dsp_listResult,
+ { "listResult", "dsp.listResult",
+ FT_UINT32, BASE_DEC, VALS(dap_ListResult_vals), 0,
+ "ChainedListResultData/listResult", HFILL }},
+ { &hf_dsp_unsignedChainedListResult,
+ { "unsignedChainedListResult", "dsp.unsignedChainedListResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedListResult/unsignedChainedListResult", HFILL }},
+ { &hf_dsp_signedChainedListResult,
+ { "signedChainedListResult", "dsp.signedChainedListResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedListResult/signedChainedListResult", HFILL }},
+ { &hf_dsp_chainedListResult,
+ { "chainedListResult", "dsp.chainedListResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedListResult/signedChainedListResult/chainedListResult", HFILL }},
+ { &hf_dsp_searchArgument,
+ { "searchArgument", "dsp.searchArgument",
+ FT_UINT32, BASE_DEC, VALS(dap_SearchArgument_vals), 0,
+ "ChainedSearchArgumentData/searchArgument", HFILL }},
+ { &hf_dsp_unsignedChainedSearchArgument,
+ { "unsignedChainedSearchArgument", "dsp.unsignedChainedSearchArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedSearchArgument/unsignedChainedSearchArgument", HFILL }},
+ { &hf_dsp_signedChainedSearchArgument,
+ { "signedChainedSearchArgument", "dsp.signedChainedSearchArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedSearchArgument/signedChainedSearchArgument", HFILL }},
+ { &hf_dsp_chainedSearchArgument,
+ { "chainedSearchArgument", "dsp.chainedSearchArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedSearchArgument/signedChainedSearchArgument/chainedSearchArgument", HFILL }},
+ { &hf_dsp_searchResult,
+ { "searchResult", "dsp.searchResult",
+ FT_UINT32, BASE_DEC, VALS(dap_SearchResult_vals), 0,
+ "ChainedSearchResultData/searchResult", HFILL }},
+ { &hf_dsp_unsignedChainedSearchResult,
+ { "unsignedChainedSearchResult", "dsp.unsignedChainedSearchResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedSearchResult/unsignedChainedSearchResult", HFILL }},
+ { &hf_dsp_signedChainedSearchResult,
+ { "signedChainedSearchResult", "dsp.signedChainedSearchResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedSearchResult/signedChainedSearchResult", HFILL }},
+ { &hf_dsp_chainedSearchResult,
+ { "chainedSearchResult", "dsp.chainedSearchResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedSearchResult/signedChainedSearchResult/chainedSearchResult", HFILL }},
+ { &hf_dsp_addEntryArgument,
+ { "addEntryArgument", "dsp.addEntryArgument",
+ FT_UINT32, BASE_DEC, VALS(dap_AddEntryArgument_vals), 0,
+ "ChainedAddEntryArgumentData/addEntryArgument", HFILL }},
+ { &hf_dsp_unsignedChainedAddEntryArgument,
+ { "unsignedChainedAddEntryArgument", "dsp.unsignedChainedAddEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedAddEntryArgument/unsignedChainedAddEntryArgument", HFILL }},
+ { &hf_dsp_signedChainedAddEntryArgument,
+ { "signedChainedAddEntryArgument", "dsp.signedChainedAddEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedAddEntryArgument/signedChainedAddEntryArgument", HFILL }},
+ { &hf_dsp_chainedAddEntryArgument,
+ { "chainedAddEntryArgument", "dsp.chainedAddEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedAddEntryArgument/signedChainedAddEntryArgument/chainedAddEntryArgument", HFILL }},
+ { &hf_dsp_addEntryResult,
+ { "addEntryResult", "dsp.addEntryResult",
+ FT_UINT32, BASE_DEC, VALS(dap_AddEntryResult_vals), 0,
+ "ChainedAddEntryResultData/addEntryResult", HFILL }},
+ { &hf_dsp_unsignedChainedAddEntryResult,
+ { "unsignedChainedAddEntryResult", "dsp.unsignedChainedAddEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedAddEntryResult/unsignedChainedAddEntryResult", HFILL }},
+ { &hf_dsp_signedChainedAddEntryResult,
+ { "signedChainedAddEntryResult", "dsp.signedChainedAddEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedAddEntryResult/signedChainedAddEntryResult", HFILL }},
+ { &hf_dsp_chainedAddEntryResult,
+ { "chainedAddEntryResult", "dsp.chainedAddEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedAddEntryResult/signedChainedAddEntryResult/chainedAddEntryResult", HFILL }},
+ { &hf_dsp_removeEntryArgument,
+ { "removeEntryArgument", "dsp.removeEntryArgument",
+ FT_UINT32, BASE_DEC, VALS(dap_RemoveEntryArgument_vals), 0,
+ "ChainedRemoveEntryArgumentData/removeEntryArgument", HFILL }},
+ { &hf_dsp_unsignedChainedRemoveEntryArgument,
+ { "unsignedChainedRemoveEntryArgument", "dsp.unsignedChainedRemoveEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedRemoveEntryArgument/unsignedChainedRemoveEntryArgument", HFILL }},
+ { &hf_dsp_signedChainedRemoveEntryArgument,
+ { "signedChainedRemoveEntryArgument", "dsp.signedChainedRemoveEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedRemoveEntryArgument/signedChainedRemoveEntryArgument", HFILL }},
+ { &hf_dsp_chainedRemoveEntryArgument,
+ { "chainedRemoveEntryArgument", "dsp.chainedRemoveEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedRemoveEntryArgument/signedChainedRemoveEntryArgument/chainedRemoveEntryArgument", HFILL }},
+ { &hf_dsp_removeEntryResult,
+ { "removeEntryResult", "dsp.removeEntryResult",
+ FT_UINT32, BASE_DEC, VALS(dap_RemoveEntryResult_vals), 0,
+ "ChainedRemoveEntryResultData/removeEntryResult", HFILL }},
+ { &hf_dsp_unsignedChainedRemoveEntryResult,
+ { "unsignedChainedRemoveEntryResult", "dsp.unsignedChainedRemoveEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedRemoveEntryResult/unsignedChainedRemoveEntryResult", HFILL }},
+ { &hf_dsp_signedChainedRemoveEntryResult,
+ { "signedChainedRemoveEntryResult", "dsp.signedChainedRemoveEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedRemoveEntryResult/signedChainedRemoveEntryResult", HFILL }},
+ { &hf_dsp_chainedRemoveEntryResult,
+ { "chainedRemoveEntryResult", "dsp.chainedRemoveEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedRemoveEntryResult/signedChainedRemoveEntryResult/chainedRemoveEntryResult", HFILL }},
+ { &hf_dsp_modifyEntryArgument,
+ { "modifyEntryArgument", "dsp.modifyEntryArgument",
+ FT_UINT32, BASE_DEC, VALS(dap_ModifyEntryArgument_vals), 0,
+ "ChainedModifyEntryArgumentData/modifyEntryArgument", HFILL }},
+ { &hf_dsp_unsignedChainedModifyEntryArgument,
+ { "unsignedChainedModifyEntryArgument", "dsp.unsignedChainedModifyEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyEntryArgument/unsignedChainedModifyEntryArgument", HFILL }},
+ { &hf_dsp_signedChainedModifyEntryArgument,
+ { "signedChainedModifyEntryArgument", "dsp.signedChainedModifyEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyEntryArgument/signedChainedModifyEntryArgument", HFILL }},
+ { &hf_dsp_chainedModifyEntryArgument,
+ { "chainedModifyEntryArgument", "dsp.chainedModifyEntryArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyEntryArgument/signedChainedModifyEntryArgument/chainedModifyEntryArgument", HFILL }},
+ { &hf_dsp_modifyEntryResult,
+ { "modifyEntryResult", "dsp.modifyEntryResult",
+ FT_UINT32, BASE_DEC, VALS(dap_ModifyEntryResult_vals), 0,
+ "ChainedModifyEntryResultData/modifyEntryResult", HFILL }},
+ { &hf_dsp_unsignedChainedModifyEntryResult,
+ { "unsignedChainedModifyEntryResult", "dsp.unsignedChainedModifyEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyEntryResult/unsignedChainedModifyEntryResult", HFILL }},
+ { &hf_dsp_signedChainedModifyEntryResult,
+ { "signedChainedModifyEntryResult", "dsp.signedChainedModifyEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyEntryResult/signedChainedModifyEntryResult", HFILL }},
+ { &hf_dsp_chainedModifyEntryResult,
+ { "chainedModifyEntryResult", "dsp.chainedModifyEntryResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyEntryResult/signedChainedModifyEntryResult/chainedModifyEntryResult", HFILL }},
+ { &hf_dsp_modifyDNArgument,
+ { "modifyDNArgument", "dsp.modifyDNArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyDNArgumentData/modifyDNArgument", HFILL }},
+ { &hf_dsp_unsignedChainedModifyDNArgument,
+ { "unsignedChainedModifyDNArgument", "dsp.unsignedChainedModifyDNArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyDNArgument/unsignedChainedModifyDNArgument", HFILL }},
+ { &hf_dsp_signedChainedModifyDNArgument,
+ { "signedChainedModifyDNArgument", "dsp.signedChainedModifyDNArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyDNArgument/signedChainedModifyDNArgument", HFILL }},
+ { &hf_dsp_chainedModifyDNArgument,
+ { "chainedModifyDNArgument", "dsp.chainedModifyDNArgument",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyDNArgument/signedChainedModifyDNArgument/chainedModifyDNArgument", HFILL }},
+ { &hf_dsp_modifyDNResult,
+ { "modifyDNResult", "dsp.modifyDNResult",
+ FT_UINT32, BASE_DEC, VALS(dap_ModifyDNResult_vals), 0,
+ "ChainedModifyDNResultData/modifyDNResult", HFILL }},
+ { &hf_dsp_unsignedChainedModifyDNResult,
+ { "unsignedChainedModifyDNResult", "dsp.unsignedChainedModifyDNResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyDNResult/unsignedChainedModifyDNResult", HFILL }},
+ { &hf_dsp_signedChainedModifyDNResult,
+ { "signedChainedModifyDNResult", "dsp.signedChainedModifyDNResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyDNResult/signedChainedModifyDNResult", HFILL }},
+ { &hf_dsp_chainedModifyDNResult,
+ { "chainedModifyDNResult", "dsp.chainedModifyDNResult",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainedModifyDNResult/signedChainedModifyDNResult/chainedModifyDNResult", HFILL }},
+ { &hf_dsp_reference,
+ { "reference", "dsp.reference",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DSAReferralData/reference", HFILL }},
+ { &hf_dsp_contextPrefix,
+ { "contextPrefix", "dsp.contextPrefix",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_securityParameters,
+ { "securityParameters", "dsp.securityParameters",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_performer,
+ { "performer", "dsp.performer",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DSAReferralData/performer", HFILL }},
+ { &hf_dsp_aliasDereferenced,
+ { "aliasDereferenced", "dsp.aliasDereferenced",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_notification,
+ { "notification", "dsp.notification",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DSAReferralData/notification", HFILL }},
+ { &hf_dsp_notification_item,
+ { "Item", "dsp.notification_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DSAReferralData/notification/_item", HFILL }},
+ { &hf_dsp_unsignedDSAReferral,
+ { "unsignedDSAReferral", "dsp.unsignedDSAReferral",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DSAReferral/unsignedDSAReferral", HFILL }},
+ { &hf_dsp_signedDSAReferral,
+ { "signedDSAReferral", "dsp.signedDSAReferral",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DSAReferral/signedDSAReferral", HFILL }},
+ { &hf_dsp_dsaReferral,
+ { "dsaReferral", "dsp.dsaReferral",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DSAReferral/signedDSAReferral/dsaReferral", HFILL }},
+ { &hf_dsp_originator,
+ { "originator", "dsp.originator",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ChainingArguments/originator", HFILL }},
+ { &hf_dsp_targetObjectDN,
+ { "targetObject", "dsp.targetObject",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ChainingArguments/targetObject", HFILL }},
+ { &hf_dsp_operationProgress,
+ { "operationProgress", "dsp.operationProgress",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_traceInformation,
+ { "traceInformation", "dsp.traceInformation",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ChainingArguments/traceInformation", HFILL }},
+ { &hf_dsp_aliasedRDNs,
+ { "aliasedRDNs", "dsp.aliasedRDNs",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_returnCrossRefs,
+ { "returnCrossRefs", "dsp.returnCrossRefs",
+ FT_BOOLEAN, 8, NULL, 0,
+ "ChainingArguments/returnCrossRefs", HFILL }},
+ { &hf_dsp_referenceType,
+ { "referenceType", "dsp.referenceType",
+ FT_UINT32, BASE_DEC, VALS(dsp_ReferenceType_vals), 0,
+ "", HFILL }},
+ { &hf_dsp_info,
+ { "info", "dsp.info",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_timeLimit,
+ { "timeLimit", "dsp.timeLimit",
+ FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0,
+ "ChainingArguments/timeLimit", HFILL }},
+ { &hf_dsp_entryOnly,
+ { "entryOnly", "dsp.entryOnly",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_uniqueIdentifier,
+ { "uniqueIdentifier", "dsp.uniqueIdentifier",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "ChainingArguments/uniqueIdentifier", HFILL }},
+ { &hf_dsp_authenticationLevel,
+ { "authenticationLevel", "dsp.authenticationLevel",
+ FT_UINT32, BASE_DEC, VALS(dsp_AuthenticationLevel_vals), 0,
+ "ChainingArguments/authenticationLevel", HFILL }},
+ { &hf_dsp_exclusions,
+ { "exclusions", "dsp.exclusions",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_excludeShadows,
+ { "excludeShadows", "dsp.excludeShadows",
+ FT_BOOLEAN, 8, NULL, 0,
+ "ChainingArguments/excludeShadows", HFILL }},
+ { &hf_dsp_nameResolveOnMaster,
+ { "nameResolveOnMaster", "dsp.nameResolveOnMaster",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_operationIdentifier,
+ { "operationIdentifier", "dsp.operationIdentifier",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ChainingArguments/operationIdentifier", HFILL }},
+ { &hf_dsp_searchRuleId,
+ { "searchRuleId", "dsp.searchRuleId",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainingArguments/searchRuleId", HFILL }},
+ { &hf_dsp_chainedRelaxation,
+ { "chainedRelaxation", "dsp.chainedRelaxation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainingArguments/chainedRelaxation", HFILL }},
+ { &hf_dsp_relatedEntry,
+ { "relatedEntry", "dsp.relatedEntry",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ChainingArguments/relatedEntry", HFILL }},
+ { &hf_dsp_utcTime,
+ { "utcTime", "dsp.utcTime",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Time/utcTime", HFILL }},
+ { &hf_dsp_generalizedTime,
+ { "generalizedTime", "dsp.generalizedTime",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Time/generalizedTime", HFILL }},
+ { &hf_dsp_crossReferences,
+ { "crossReferences", "dsp.crossReferences",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ChainingResults/crossReferences", HFILL }},
+ { &hf_dsp_crossReferences_item,
+ { "Item", "dsp.crossReferences_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ChainingResults/crossReferences/_item", HFILL }},
+ { &hf_dsp_alreadySearched,
+ { "alreadySearched", "dsp.alreadySearched",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ChainingResults/alreadySearched", HFILL }},
+ { &hf_dsp_accessPoint,
+ { "accessPoint", "dsp.accessPoint",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CrossReference/accessPoint", HFILL }},
+ { &hf_dsp_nameResolutionPhase,
+ { "nameResolutionPhase", "dsp.nameResolutionPhase",
+ FT_UINT32, BASE_DEC, VALS(dsp_T_nameResolutionPhase_vals), 0,
+ "OperationProgress/nameResolutionPhase", HFILL }},
+ { &hf_dsp_nextRDNToBeResolved,
+ { "nextRDNToBeResolved", "dsp.nextRDNToBeResolved",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "OperationProgress/nextRDNToBeResolved", HFILL }},
+ { &hf_dsp_TraceInformation_item,
+ { "Item", "dsp.TraceInformation_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TraceInformation/_item", HFILL }},
+ { &hf_dsp_dsa,
+ { "dsa", "dsp.dsa",
+ FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
+ "TraceItem/dsa", HFILL }},
+ { &hf_dsp_targetObject,
+ { "targetObject", "dsp.targetObject",
+ FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
+ "", HFILL }},
+ { &hf_dsp_ae_title,
+ { "ae-title", "dsp.ae_title",
+ FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
+ "", HFILL }},
+ { &hf_dsp_address,
+ { "address", "dsp.address",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_protocolInformation,
+ { "protocolInformation", "dsp.protocolInformation",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_protocolInformation_item,
+ { "Item", "dsp.protocolInformation_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_access_point_category,
+ { "category", "dsp.category",
+ FT_UINT32, BASE_DEC, VALS(dsp_APCategory_vals), 0,
+ "MasterOrShadowAccessPoint/category", HFILL }},
+ { &hf_dsp_chainingRequired,
+ { "chainingRequired", "dsp.chainingRequired",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_dsp_MasterAndShadowAccessPoints_item,
+ { "Item", "dsp.MasterAndShadowAccessPoints_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MasterAndShadowAccessPoints/_item", HFILL }},
+ { &hf_dsp_category,
+ { "category", "dsp.category",
+ FT_UINT32, BASE_DEC, VALS(dsp_T_category_vals), 0,
+ "AccessPointInformation/category", HFILL }},
+ { &hf_dsp_additionalPoints,
+ { "additionalPoints", "dsp.additionalPoints",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AccessPointInformation/additionalPoints", HFILL }},
+ { &hf_dsp_Exclusions_item,
+ { "Item", "dsp.Exclusions_item",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Exclusions/_item", HFILL }},
+ { &hf_dsp_rdnsResolved,
+ { "rdnsResolved", "dsp.rdnsResolved",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ContinuationReference/rdnsResolved", HFILL }},
+ { &hf_dsp_accessPoints,
+ { "accessPoints", "dsp.accessPoints",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContinuationReference/accessPoints", HFILL }},
+ { &hf_dsp_accessPoints_item,
+ { "Item", "dsp.accessPoints_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ContinuationReference/accessPoints/_item", HFILL }},
+ { &hf_dsp_returnToDUA,
+ { "returnToDUA", "dsp.returnToDUA",
+ FT_BOOLEAN, 8, NULL, 0,
+ "ContinuationReference/returnToDUA", HFILL }},
+ { &hf_dsp_basicLevels,
+ { "basicLevels", "dsp.basicLevels",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AuthenticationLevel/basicLevels", HFILL }},
+ { &hf_dsp_level,
+ { "level", "dsp.level",
+ FT_UINT32, BASE_DEC, VALS(dsp_T_level_vals), 0,
+ "AuthenticationLevel/basicLevels/level", HFILL }},
+ { &hf_dsp_localQualifier,
+ { "localQualifier", "dsp.localQualifier",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "AuthenticationLevel/basicLevels/localQualifier", HFILL }},
+ { &hf_dsp_signed,
+ { "signed", "dsp.signed",
+ FT_BOOLEAN, 8, NULL, 0,
+ "AuthenticationLevel/basicLevels/signed", HFILL }},
+ { &hf_dsp_other,
+ { "other", "dsp.other",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AuthenticationLevel/other", HFILL }},
+
+/*--- End of included file: packet-dsp-hfarr.c ---*/
+
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_dsp,
+
+/*--- Included file: packet-dsp-ettarr.c ---*/
+
+ &ett_dsp_ChainedReadArgumentData,
+ &ett_dsp_ChainedReadArgument,
+ &ett_dsp_T_signedChainedReadArgument,
+ &ett_dsp_ChainedReadResultData,
+ &ett_dsp_ChainedReadResult,
+ &ett_dsp_T_signedChainedReadResult,
+ &ett_dsp_ChainedCompareArgumentData,
+ &ett_dsp_ChainedCompareArgument,
+ &ett_dsp_T_signedChainedCompareArgument,
+ &ett_dsp_ChainedCompareResultData,
+ &ett_dsp_ChainedCompareResult,
+ &ett_dsp_T_signedChainedCompareResult,
+ &ett_dsp_ChainedListArgumentData,
+ &ett_dsp_ChainedListArgument,
+ &ett_dsp_T_signedChainedListArgument,
+ &ett_dsp_ChainedListResultData,
+ &ett_dsp_ChainedListResult,
+ &ett_dsp_T_signedChainedListResult,
+ &ett_dsp_ChainedSearchArgumentData,
+ &ett_dsp_ChainedSearchArgument,
+ &ett_dsp_T_signedChainedSearchArgument,
+ &ett_dsp_ChainedSearchResultData,
+ &ett_dsp_ChainedSearchResult,
+ &ett_dsp_T_signedChainedSearchResult,
+ &ett_dsp_ChainedAddEntryArgumentData,
+ &ett_dsp_ChainedAddEntryArgument,
+ &ett_dsp_T_signedChainedAddEntryArgument,
+ &ett_dsp_ChainedAddEntryResultData,
+ &ett_dsp_ChainedAddEntryResult,
+ &ett_dsp_T_signedChainedAddEntryResult,
+ &ett_dsp_ChainedRemoveEntryArgumentData,
+ &ett_dsp_ChainedRemoveEntryArgument,
+ &ett_dsp_T_signedChainedRemoveEntryArgument,
+ &ett_dsp_ChainedRemoveEntryResultData,
+ &ett_dsp_ChainedRemoveEntryResult,
+ &ett_dsp_T_signedChainedRemoveEntryResult,
+ &ett_dsp_ChainedModifyEntryArgumentData,
+ &ett_dsp_ChainedModifyEntryArgument,
+ &ett_dsp_T_signedChainedModifyEntryArgument,
+ &ett_dsp_ChainedModifyEntryResultData,
+ &ett_dsp_ChainedModifyEntryResult,
+ &ett_dsp_T_signedChainedModifyEntryResult,
+ &ett_dsp_ChainedModifyDNArgumentData,
+ &ett_dsp_ChainedModifyDNArgument,
+ &ett_dsp_T_signedChainedModifyDNArgument,
+ &ett_dsp_ChainedModifyDNResultData,
+ &ett_dsp_ChainedModifyDNResult,
+ &ett_dsp_T_signedChainedModifyDNResult,
+ &ett_dsp_DSAReferralData,
+ &ett_dsp_SEQUENCE_OF_Attribute,
+ &ett_dsp_DSAReferral,
+ &ett_dsp_T_signedDSAReferral,
+ &ett_dsp_ChainingArguments,
+ &ett_dsp_Time,
+ &ett_dsp_ChainingResults,
+ &ett_dsp_SEQUENCE_OF_CrossReference,
+ &ett_dsp_CrossReference,
+ &ett_dsp_OperationProgress,
+ &ett_dsp_TraceInformation,
+ &ett_dsp_TraceItem,
+ &ett_dsp_AccessPoint,
+ &ett_dsp_SET_OF_ProtocolInformation,
+ &ett_dsp_MasterOrShadowAccessPoint,
+ &ett_dsp_MasterAndShadowAccessPoints,
+ &ett_dsp_AccessPointInformation,
+ &ett_dsp_Exclusions,
+ &ett_dsp_ContinuationReference,
+ &ett_dsp_SET_OF_AccessPointInformation,
+ &ett_dsp_AuthenticationLevel,
+ &ett_dsp_T_basicLevels,
+
+/*--- End of included file: packet-dsp-ettarr.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 */
+ proto_register_field_array(proto_dsp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register our configuration options for DSP, particularly our port */
+
+ dsp_module = prefs_register_protocol(proto_dsp, prefs_register_dsp);
+
+ prefs_register_uint_preference(dsp_module, "tcp.port", "DSP TCP Port",
+ "Set the port for DSP operations (if other"
+ " than the default of 102)",
+ 10, &global_dsp_tcp_port);
+
+
+}
+
+
+/*--- proto_reg_handoff_dsp --- */
+void proto_reg_handoff_dsp(void) {
+ dissector_handle_t handle = NULL;
+
+
+/*--- Included file: packet-dsp-dis-tab.c ---*/
+
+ register_ber_oid_dissector("2.5.12.1", dissect_AccessPoint_PDU, proto_dsp, "id-doa-myAccessPoint");
+ 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");
+
+
+/*--- End of included file: packet-dsp-dis-tab.c ---*/
+
+
+ /* APPLICATION CONTEXT */
+
+ register_ber_oid_name("2.5.3.2", "id-ac-directory-system");
+
+ /* 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);
+ }
+
+
+}
+
+void prefs_register_dsp(void) {
+
+ /* de-register the old port */
+ /* port 102 is registered by TPKT - don't undo this! */
+ if((tcp_port != 102) && tpkt_handle)
+ dissector_delete("tcp.port", tcp_port, tpkt_handle);
+
+ /* Set our port number for future use */
+ tcp_port = global_dsp_tcp_port;
+
+ if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
+ dissector_add("tcp.port", global_dsp_tcp_port, tpkt_handle);
+
+}
diff --git a/epan/dissectors/packet-dsp.h b/epan/dissectors/packet-dsp.h
new file mode 100644
index 0000000000..e9f00c5742
--- /dev/null
+++ b/epan/dissectors/packet-dsp.h
@@ -0,0 +1,48 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-dsp.h */
+/* ../../tools/asn2eth.py -X -b -e -p dsp -c dsp.cnf -s packet-dsp-template dsp.asn */
+
+/* Input file: packet-dsp-template.h */
+
+/* packet-dsp.h
+ * Routines for X.511 (X.500 Directory Access Protocol) packet dissection
+ * Graeme Lunt 2005
+ *
+ * $Id: packet-dsp-template.h 14773 2005-06-26 10:59:15Z etxrab $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PACKET_DSP_H
+#define PACKET_DSP_H
+
+
+/*--- Included file: packet-dsp-exp.h ---*/
+
+extern const value_string dsp_ReferenceType_vals[];
+int dissect_dsp_OperationProgress(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dsp_ReferenceType(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dsp_AccessPoint(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dsp_ContinuationReference(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+/*--- End of included file: packet-dsp-exp.h ---*/
+
+
+#endif /* PACKET_DSP_H */
diff --git a/epan/dissectors/packet-x501.c b/epan/dissectors/packet-x501.c
new file mode 100644
index 0000000000..f660b20210
--- /dev/null
+++ b/epan/dissectors/packet-x501.c
@@ -0,0 +1,470 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-x501.c */
+/* ../../tools/asn2eth.py -X -b -e -p x501 -c x501.cnf -s packet-x501-template x501.asn */
+
+/* Input file: packet-x501-template.c */
+
+/* packet-x501.c
+ * Routines for X.501 (DSA Operational Attributes) packet dissection
+ * Graeme Lunt 2005
+ *
+ * $Id: packet-x501-template.c 14773 2005-06-26 10:59:15Z etxrab $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/conversation.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "packet-ber.h"
+
+#include "packet-x509sat.h"
+#include "packet-x509if.h"
+#include "packet-dap.h"
+#include "packet-dsp.h"
+
+
+#include "packet-x501.h"
+
+#define PNAME "X.501 Operational Attributes"
+#define PSNAME "X501"
+#define PFNAME "x501"
+
+/* Initialize the protocol and registered fields */
+int proto_x501 = -1;
+
+
+/*--- Included file: packet-x501-hf.c ---*/
+
+static int hf_x501_DSEType_PDU = -1; /* DSEType */
+static int hf_x501_SupplierInformation_PDU = -1; /* SupplierInformation */
+static int hf_x501_ConsumerInformation_PDU = -1; /* ConsumerInformation */
+static int hf_x501_SupplierAndConsumers_PDU = -1; /* SupplierAndConsumers */
+static int hf_x501_ae_title = -1; /* Name */
+static int hf_x501_address = -1; /* PresentationAddress */
+static int hf_x501_protocolInformation = -1; /* SET_OF_ProtocolInformation */
+static int hf_x501_protocolInformation_item = -1; /* ProtocolInformation */
+static int hf_x501_agreementID = -1; /* OperationalBindingID */
+static int hf_x501_supplier_is_master = -1; /* BOOLEAN */
+static int hf_x501_non_supplying_master = -1; /* AccessPoint */
+static int hf_x501_consumers = -1; /* SET_OF_AccessPoint */
+static int hf_x501_consumers_item = -1; /* AccessPoint */
+/* named bits */
+static int hf_x501_DSEType_root = -1;
+static int hf_x501_DSEType_glue = -1;
+static int hf_x501_DSEType_cp = -1;
+static int hf_x501_DSEType_entry = -1;
+static int hf_x501_DSEType_alias = -1;
+static int hf_x501_DSEType_subr = -1;
+static int hf_x501_DSEType_nssr = -1;
+static int hf_x501_DSEType_supr = -1;
+static int hf_x501_DSEType_xr = -1;
+static int hf_x501_DSEType_admPoint = -1;
+static int hf_x501_DSEType_subentry = -1;
+static int hf_x501_DSEType_shadow = -1;
+static int hf_x501_DSEType_immSupr = -1;
+static int hf_x501_DSEType_rhob = -1;
+static int hf_x501_DSEType_sa = -1;
+static int hf_x501_DSEType_dsSubentry = -1;
+static int hf_x501_DSEType_familyMember = -1;
+
+/*--- End of included file: packet-x501-hf.c ---*/
+
+
+/* Initialize the subtree pointers */
+static gint ett_x501 = -1;
+
+/*--- Included file: packet-x501-ett.c ---*/
+
+static gint ett_x501_DSEType = -1;
+static gint ett_x501_SupplierOrConsumer = -1;
+static gint ett_x501_SET_OF_ProtocolInformation = -1;
+static gint ett_x501_SupplierInformation = -1;
+static gint ett_x501_SupplierAndConsumers = -1;
+static gint ett_x501_SET_OF_AccessPoint = -1;
+
+/*--- End of included file: packet-x501-ett.c ---*/
+
+
+
+/*--- Included file: packet-x501-fn.c ---*/
+
+/*--- Fields for imported types ---*/
+
+static int dissect_ae_title(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Name(FALSE, tvb, offset, pinfo, tree, hf_x501_ae_title);
+}
+static int dissect_address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509sat_PresentationAddress(FALSE, tvb, offset, pinfo, tree, hf_x501_address);
+}
+static int dissect_protocolInformation_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509sat_ProtocolInformation(FALSE, tvb, offset, pinfo, tree, hf_x501_protocolInformation_item);
+}
+static int dissect_agreementID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dap_OperationalBindingID(FALSE, tvb, offset, pinfo, tree, hf_x501_agreementID);
+}
+static int dissect_non_supplying_master(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_AccessPoint(FALSE, tvb, offset, pinfo, tree, hf_x501_non_supplying_master);
+}
+static int dissect_consumers_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_dsp_AccessPoint(FALSE, tvb, offset, pinfo, tree, hf_x501_consumers_item);
+}
+
+
+static const asn_namedbit DSEType_bits[] = {
+ { 0, &hf_x501_DSEType_root, -1, -1, "root", NULL },
+ { 1, &hf_x501_DSEType_glue, -1, -1, "glue", NULL },
+ { 2, &hf_x501_DSEType_cp, -1, -1, "cp", NULL },
+ { 3, &hf_x501_DSEType_entry, -1, -1, "entry", NULL },
+ { 4, &hf_x501_DSEType_alias, -1, -1, "alias", NULL },
+ { 5, &hf_x501_DSEType_subr, -1, -1, "subr", NULL },
+ { 6, &hf_x501_DSEType_nssr, -1, -1, "nssr", NULL },
+ { 7, &hf_x501_DSEType_supr, -1, -1, "supr", NULL },
+ { 8, &hf_x501_DSEType_xr, -1, -1, "xr", NULL },
+ { 9, &hf_x501_DSEType_admPoint, -1, -1, "admPoint", NULL },
+ { 10, &hf_x501_DSEType_subentry, -1, -1, "subentry", NULL },
+ { 11, &hf_x501_DSEType_shadow, -1, -1, "shadow", NULL },
+ { 13, &hf_x501_DSEType_immSupr, -1, -1, "immSupr", NULL },
+ { 14, &hf_x501_DSEType_rhob, -1, -1, "rhob", NULL },
+ { 15, &hf_x501_DSEType_sa, -1, -1, "sa", NULL },
+ { 16, &hf_x501_DSEType_dsSubentry, -1, -1, "dsSubentry", NULL },
+ { 17, &hf_x501_DSEType_familyMember, -1, -1, "familyMember", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+int
+dissect_x501_DSEType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ DSEType_bits, hf_index, ett_x501_DSEType,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SET_OF_ProtocolInformation_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protocolInformation_item },
+};
+
+static int
+dissect_x501_SET_OF_ProtocolInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_ProtocolInformation_set_of, hf_index, ett_x501_SET_OF_ProtocolInformation);
+
+ return offset;
+}
+static int dissect_protocolInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x501_SET_OF_ProtocolInformation(FALSE, tvb, offset, pinfo, tree, hf_x501_protocolInformation);
+}
+
+
+static const ber_sequence_t SupplierOrConsumer_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, 0, dissect_agreementID },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_x501_SupplierOrConsumer(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ SupplierOrConsumer_set, hf_index, ett_x501_SupplierOrConsumer);
+
+ return offset;
+}
+
+
+
+static int
+dissect_x501_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_supplier_is_master(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x501_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x501_supplier_is_master);
+}
+
+
+static const ber_sequence_t SupplierInformation_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, 0, dissect_agreementID },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_supplier_is_master },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_non_supplying_master },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_x501_SupplierInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ SupplierInformation_set, hf_index, ett_x501_SupplierInformation);
+
+ return offset;
+}
+
+
+
+static int
+dissect_x501_ConsumerInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_x501_SupplierOrConsumer(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SET_OF_AccessPoint_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_consumers_item },
+};
+
+static int
+dissect_x501_SET_OF_AccessPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_AccessPoint_set_of, hf_index, ett_x501_SET_OF_AccessPoint);
+
+ return offset;
+}
+static int dissect_consumers(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x501_SET_OF_AccessPoint(FALSE, tvb, offset, pinfo, tree, hf_x501_consumers);
+}
+
+
+static const ber_sequence_t SupplierAndConsumers_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, 0, dissect_consumers },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x501_SupplierAndConsumers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
+ SupplierAndConsumers_set, hf_index, ett_x501_SupplierAndConsumers);
+
+ return offset;
+}
+
+/*--- PDUs ---*/
+
+static void dissect_DSEType_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ dissect_x501_DSEType(FALSE, tvb, 0, pinfo, tree, hf_x501_DSEType_PDU);
+}
+static void dissect_SupplierInformation_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ dissect_x501_SupplierInformation(FALSE, tvb, 0, pinfo, tree, hf_x501_SupplierInformation_PDU);
+}
+static void dissect_ConsumerInformation_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ dissect_x501_ConsumerInformation(FALSE, tvb, 0, pinfo, tree, hf_x501_ConsumerInformation_PDU);
+}
+static void dissect_SupplierAndConsumers_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ dissect_x501_SupplierAndConsumers(FALSE, tvb, 0, pinfo, tree, hf_x501_SupplierAndConsumers_PDU);
+}
+
+
+/*--- End of included file: packet-x501-fn.c ---*/
+
+
+/*--- proto_register_x501 -------------------------------------------*/
+void proto_register_x501(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] =
+ {
+
+/*--- Included file: packet-x501-hfarr.c ---*/
+
+ { &hf_x501_DSEType_PDU,
+ { "DSEType", "x501.DSEType",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "DSEType", HFILL }},
+ { &hf_x501_SupplierInformation_PDU,
+ { "SupplierInformation", "x501.SupplierInformation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SupplierInformation", HFILL }},
+ { &hf_x501_ConsumerInformation_PDU,
+ { "ConsumerInformation", "x501.ConsumerInformation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ConsumerInformation", HFILL }},
+ { &hf_x501_SupplierAndConsumers_PDU,
+ { "SupplierAndConsumers", "x501.SupplierAndConsumers",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SupplierAndConsumers", HFILL }},
+ { &hf_x501_ae_title,
+ { "ae-title", "x501.ae_title",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x501_address,
+ { "address", "x501.address",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x501_protocolInformation,
+ { "protocolInformation", "x501.protocolInformation",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x501_protocolInformation_item,
+ { "Item", "x501.protocolInformation_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x501_agreementID,
+ { "agreementID", "x501.agreementID",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x501_supplier_is_master,
+ { "supplier-is-master", "x501.supplier_is_master",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SupplierInformation/supplier-is-master", HFILL }},
+ { &hf_x501_non_supplying_master,
+ { "non-supplying-master", "x501.non_supplying_master",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SupplierInformation/non-supplying-master", HFILL }},
+ { &hf_x501_consumers,
+ { "consumers", "x501.consumers",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SupplierAndConsumers/consumers", HFILL }},
+ { &hf_x501_consumers_item,
+ { "Item", "x501.consumers_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SupplierAndConsumers/consumers/_item", HFILL }},
+ { &hf_x501_DSEType_root,
+ { "root", "x501.root",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_x501_DSEType_glue,
+ { "glue", "x501.glue",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_x501_DSEType_cp,
+ { "cp", "x501.cp",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_x501_DSEType_entry,
+ { "entry", "x501.entry",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_x501_DSEType_alias,
+ { "alias", "x501.alias",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_x501_DSEType_subr,
+ { "subr", "x501.subr",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_x501_DSEType_nssr,
+ { "nssr", "x501.nssr",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_x501_DSEType_supr,
+ { "supr", "x501.supr",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_x501_DSEType_xr,
+ { "xr", "x501.xr",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_x501_DSEType_admPoint,
+ { "admPoint", "x501.admPoint",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_x501_DSEType_subentry,
+ { "subentry", "x501.subentry",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_x501_DSEType_shadow,
+ { "shadow", "x501.shadow",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_x501_DSEType_immSupr,
+ { "immSupr", "x501.immSupr",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_x501_DSEType_rhob,
+ { "rhob", "x501.rhob",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_x501_DSEType_sa,
+ { "sa", "x501.sa",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_x501_DSEType_dsSubentry,
+ { "dsSubentry", "x501.dsSubentry",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_x501_DSEType_familyMember,
+ { "familyMember", "x501.familyMember",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+
+/*--- End of included file: packet-x501-hfarr.c ---*/
+
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_x501,
+
+/*--- Included file: packet-x501-ettarr.c ---*/
+
+ &ett_x501_DSEType,
+ &ett_x501_SupplierOrConsumer,
+ &ett_x501_SET_OF_ProtocolInformation,
+ &ett_x501_SupplierInformation,
+ &ett_x501_SupplierAndConsumers,
+ &ett_x501_SET_OF_AccessPoint,
+
+/*--- End of included file: packet-x501-ettarr.c ---*/
+
+ };
+
+ /* Register protocol */
+ proto_x501 = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_x501, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+/*--- proto_reg_handoff_x501 --- */
+void proto_reg_handoff_x501(void) {
+
+
+/*--- Included file: packet-x501-dis-tab.c ---*/
+
+ register_ber_oid_dissector("2.5.12.0", dissect_DSEType_PDU, proto_x501, "id-doa-dseType");
+ register_ber_oid_dissector("2.5.12.5", dissect_SupplierInformation_PDU, proto_x501, "id-doa-supplierKnowledge");
+ register_ber_oid_dissector("2.5.12.6", dissect_ConsumerInformation_PDU, proto_x501, "id-doa-consumerKnowledge");
+ register_ber_oid_dissector("2.5.12.7", dissect_SupplierAndConsumers_PDU, proto_x501, "id-doa-secondaryShadows");
+
+
+/*--- End of included file: packet-x501-dis-tab.c ---*/
+
+
+}
diff --git a/epan/dissectors/packet-x501.h b/epan/dissectors/packet-x501.h
new file mode 100644
index 0000000000..69e690faf3
--- /dev/null
+++ b/epan/dissectors/packet-x501.h
@@ -0,0 +1,45 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-x501.h */
+/* ../../tools/asn2eth.py -X -b -e -p x501 -c x501.cnf -s packet-x501-template x501.asn */
+
+/* Input file: packet-x501-template.h */
+
+/* packet-x501.h
+ * Routines for X.501 (DSA Operational Attributes) packet dissection
+ * Graeme Lunt 2005
+ *
+ * $Id: packet-x501-template.h 14773 2005-06-26 10:59:15Z etxrab $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PACKET_X501_H
+#define PACKET_X501_H
+
+
+/*--- Included file: packet-x501-exp.h ---*/
+
+int dissect_x501_DSEType(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x501_SupplierAndConsumers(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+/*--- End of included file: packet-x501-exp.h ---*/
+
+
+#endif /* PACKET_X501_H */