diff --git a/AUTHORS b/AUTHORS index a60c2861a1b..822f6266690 100644 --- a/AUTHORS +++ b/AUTHORS @@ -2406,6 +2406,17 @@ William Fiveash { Kerberos PA_ENCTYPE_INFO2 and aes crypto defines } +Graeme Lunt { + ROS support + RTS support + X.411 (P1) support + X.420 (P22) support + STANAG 4406 (P772) support + X.500 (DAP) support + X.500 (DSP) support + X.500 (DISP) support +} + Menno Andriesse { http://s5066.nc3a.nato.int STANAG 5066 support diff --git a/asn1/dap/packet-dap-template.c b/asn1/dap/packet-dap-template.c index 4c8b06fb57a..59511ea5bb7 100755 --- a/asn1/dap/packet-dap-template.c +++ b/asn1/dap/packet-dap-template.c @@ -46,6 +46,7 @@ #include "packet-dsp.h" #include "packet-dap.h" +#include /* we don't have a separate dissector for X519 - diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common index 5a597384b35..74ec9d36a73 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 00000000000..06f1f93cc19 --- /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 + * 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 +#include +#include +#include + +#include +#include + +#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 + + +/* 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; icinfo, 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 00000000000..1819c597c0d --- /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 + * 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 00000000000..0e8189ddeab --- /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 + * 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 +#include +#include +#include + +#include +#include + +#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 00000000000..a0cbfebfa59 --- /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 + * 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 00000000000..75733c8e2d4 --- /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 + * 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 +#include +#include +#include + +#include +#include + +#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 00000000000..e9f00c57428 --- /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 + * 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 00000000000..f660b202100 --- /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 + * 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 +#include +#include + +#include +#include + +#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 00000000000..69e690faf38 --- /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 + * 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 */