3d01e9c2a3966f8f9359bfb583cc50b7ca019ec4
[obnox/wireshark/wip.git] / epan / dissectors / packet-dap.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-dap.c                                                               */
4 /* ../../tools/asn2wrs.py -b -e -L -p dap -c ./dap.cnf -s ./packet-dap-template -D . dap.asn DirectoryAccessProtocol.asn */
5
6 /* Input file: packet-dap-template.c */
7
8 #line 1 "packet-dap-template.c"
9 /* packet-dap.c
10  * Routines for X.511 (X.500 Directory Asbtract Service) and X.519 DAP  packet dissection
11  * Graeme Lunt 2005
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
19  * This program is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU General Public License
21  * as published by the Free Software Foundation; either version 2
22  * of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program; if not, write to the Free Software
31  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
32  */
33
34 #ifdef HAVE_CONFIG_H
35 # include "config.h"
36 #endif
37
38 #include <glib.h>
39 #include <epan/packet.h>
40 #include <epan/prefs.h>
41 #include <epan/oids.h>
42 #include <epan/asn1.h>
43
44 #include <string.h>
45
46 #include "packet-ber.h"
47 #include "packet-acse.h"
48 #include "packet-ros.h"
49
50 #include "packet-x509if.h"
51 #include "packet-x509af.h"
52 #include "packet-x509sat.h"
53 #include "packet-crmf.h"
54
55 #include "packet-dsp.h"
56 #include "packet-disp.h"
57 #include "packet-dap.h"
58 #include <epan/strutil.h>
59
60 /* we don't have a separate dissector for X519 - 
61    most of DAP is defined in X511 */
62 #define PNAME  "X.519 Directory Access Protocol"
63 #define PSNAME "DAP"
64 #define PFNAME "dap"
65
66 static guint global_dap_tcp_port = 102;
67 static dissector_handle_t tpkt_handle;
68 void prefs_register_dap(void); /* forward declaration for use in preferences registration */
69
70
71 /* Initialize the protocol and registered fields */
72 static int proto_dap = -1;
73
74
75
76 /*--- Included file: packet-dap-hf.c ---*/
77 #line 1 "packet-dap-hf.c"
78 static int hf_dap_DirectoryBindArgument_PDU = -1;  /* DirectoryBindArgument */
79 static int hf_dap_DirectoryBindResult_PDU = -1;   /* DirectoryBindResult */
80 static int hf_dap_DirectoryBindError_PDU = -1;    /* DirectoryBindError */
81 static int hf_dap_ReadArgument_PDU = -1;          /* ReadArgument */
82 static int hf_dap_ReadResult_PDU = -1;            /* ReadResult */
83 static int hf_dap_CompareArgument_PDU = -1;       /* CompareArgument */
84 static int hf_dap_CompareResult_PDU = -1;         /* CompareResult */
85 static int hf_dap_AbandonArgument_PDU = -1;       /* AbandonArgument */
86 static int hf_dap_AbandonResult_PDU = -1;         /* AbandonResult */
87 static int hf_dap_ListArgument_PDU = -1;          /* ListArgument */
88 static int hf_dap_ListResult_PDU = -1;            /* ListResult */
89 static int hf_dap_SearchArgument_PDU = -1;        /* SearchArgument */
90 static int hf_dap_SearchResult_PDU = -1;          /* SearchResult */
91 static int hf_dap_AddEntryArgument_PDU = -1;      /* AddEntryArgument */
92 static int hf_dap_AddEntryResult_PDU = -1;        /* AddEntryResult */
93 static int hf_dap_RemoveEntryArgument_PDU = -1;   /* RemoveEntryArgument */
94 static int hf_dap_RemoveEntryResult_PDU = -1;     /* RemoveEntryResult */
95 static int hf_dap_ModifyEntryArgument_PDU = -1;   /* ModifyEntryArgument */
96 static int hf_dap_ModifyEntryResult_PDU = -1;     /* ModifyEntryResult */
97 static int hf_dap_ModifyDNArgument_PDU = -1;      /* ModifyDNArgument */
98 static int hf_dap_ModifyDNResult_PDU = -1;        /* ModifyDNResult */
99 static int hf_dap_Abandoned_PDU = -1;             /* Abandoned */
100 static int hf_dap_AbandonFailedError_PDU = -1;    /* AbandonFailedError */
101 static int hf_dap_AttributeError_PDU = -1;        /* AttributeError */
102 static int hf_dap_NameError_PDU = -1;             /* NameError */
103 static int hf_dap_Referral_PDU = -1;              /* Referral */
104 static int hf_dap_SecurityError_PDU = -1;         /* SecurityError */
105 static int hf_dap_ServiceError_PDU = -1;          /* ServiceError */
106 static int hf_dap_UpdateError_PDU = -1;           /* UpdateError */
107 static int hf_dap_options = -1;                   /* ServiceControlOptions */
108 static int hf_dap_priority = -1;                  /* T_priority */
109 static int hf_dap_timeLimit = -1;                 /* INTEGER */
110 static int hf_dap_sizeLimit = -1;                 /* INTEGER */
111 static int hf_dap_scopeOfReferral = -1;           /* T_scopeOfReferral */
112 static int hf_dap_attributeSizeLimit = -1;        /* INTEGER */
113 static int hf_dap_manageDSAITPlaneRef = -1;       /* T_manageDSAITPlaneRef */
114 static int hf_dap_dsaName = -1;                   /* Name */
115 static int hf_dap_agreementID = -1;               /* AgreementID */
116 static int hf_dap_serviceType = -1;               /* OBJECT_IDENTIFIER */
117 static int hf_dap_userClass = -1;                 /* INTEGER */
118 static int hf_dap_attributes = -1;                /* T_attributes */
119 static int hf_dap_allUserAttributes = -1;         /* NULL */
120 static int hf_dap_select = -1;                    /* SET_OF_AttributeType */
121 static int hf_dap_select_item = -1;               /* AttributeType */
122 static int hf_dap_infoTypes = -1;                 /* T_infoTypes */
123 static int hf_dap_extraAttributes = -1;           /* T_extraAttributes */
124 static int hf_dap_allOperationalAttributes = -1;  /* NULL */
125 static int hf_dap_extraSelect = -1;               /* SET_SIZE_1_MAX_OF_AttributeType */
126 static int hf_dap_extraSelect_item = -1;          /* AttributeType */
127 static int hf_dap_contextSelection = -1;          /* ContextSelection */
128 static int hf_dap_returnContexts = -1;            /* BOOLEAN */
129 static int hf_dap_familyReturn = -1;              /* FamilyReturn */
130 static int hf_dap_allContexts = -1;               /* NULL */
131 static int hf_dap_selectedContexts = -1;          /* SET_SIZE_1_MAX_OF_TypeAndContextAssertion */
132 static int hf_dap_selectedContexts_item = -1;     /* TypeAndContextAssertion */
133 static int hf_dap_type = -1;                      /* AttributeType */
134 static int hf_dap_contextAssertions = -1;         /* T_contextAssertions */
135 static int hf_dap_preference = -1;                /* SEQUENCE_OF_ContextAssertion */
136 static int hf_dap_preference_item = -1;           /* ContextAssertion */
137 static int hf_dap_all = -1;                       /* SET_OF_ContextAssertion */
138 static int hf_dap_all_item = -1;                  /* ContextAssertion */
139 static int hf_dap_memberSelect = -1;              /* T_memberSelect */
140 static int hf_dap_familySelect = -1;              /* T_familySelect */
141 static int hf_dap_familySelect_item = -1;         /* OBJECT_IDENTIFIER */
142 static int hf_dap_name = -1;                      /* Name */
143 static int hf_dap_fromEntry = -1;                 /* BOOLEAN */
144 static int hf_dap_entry_information = -1;         /* T_entry_information */
145 static int hf_dap_entry_information_item = -1;    /* EntryInformationItem */
146 static int hf_dap_attributeType = -1;             /* AttributeType */
147 static int hf_dap_attribute = -1;                 /* Attribute */
148 static int hf_dap_incompleteEntry = -1;           /* BOOLEAN */
149 static int hf_dap_partialName = -1;               /* BOOLEAN */
150 static int hf_dap_derivedEntry = -1;              /* BOOLEAN */
151 static int hf_dap_family_class = -1;              /* OBJECT_IDENTIFIER */
152 static int hf_dap_familyEntries = -1;             /* SEQUENCE_OF_FamilyEntry */
153 static int hf_dap_familyEntries_item = -1;        /* FamilyEntry */
154 static int hf_dap_rdn = -1;                       /* RelativeDistinguishedName */
155 static int hf_dap_family_information = -1;        /* FamilyInformation */
156 static int hf_dap_family_information_item = -1;   /* T_family_information_item */
157 static int hf_dap_family_info = -1;               /* SEQUENCE_SIZE_1_MAX_OF_FamilyEntries */
158 static int hf_dap_family_info_item = -1;          /* FamilyEntries */
159 static int hf_dap_filter_item = -1;               /* FilterItem */
160 static int hf_dap_and = -1;                       /* SetOfFilter */
161 static int hf_dap_or = -1;                        /* SetOfFilter */
162 static int hf_dap_not = -1;                       /* Filter */
163 static int hf_dap_SetOfFilter_item = -1;          /* Filter */
164 static int hf_dap_equality = -1;                  /* AttributeValueAssertion */
165 static int hf_dap_substrings = -1;                /* T_substrings */
166 static int hf_dap_sunstringType = -1;             /* OBJECT_IDENTIFIER */
167 static int hf_dap_strings = -1;                   /* T_strings */
168 static int hf_dap_strings_item = -1;              /* T_strings_item */
169 static int hf_dap_initial = -1;                   /* T_initial */
170 static int hf_dap_any = -1;                       /* T_any */
171 static int hf_dap_final = -1;                     /* T_final */
172 static int hf_dap_control = -1;                   /* Attribute */
173 static int hf_dap_greaterOrEqual = -1;            /* AttributeValueAssertion */
174 static int hf_dap_lessOrEqual = -1;               /* AttributeValueAssertion */
175 static int hf_dap_present = -1;                   /* AttributeType */
176 static int hf_dap_approximateMatch = -1;          /* AttributeValueAssertion */
177 static int hf_dap_extensibleMatch = -1;           /* MatchingRuleAssertion */
178 static int hf_dap_contextPresent = -1;            /* AttributeTypeAssertion */
179 static int hf_dap_matchingRule = -1;              /* T_matchingRule */
180 static int hf_dap_matchingRule_item = -1;         /* OBJECT_IDENTIFIER */
181 static int hf_dap_matchValue = -1;                /* T_matchValue */
182 static int hf_dap_dnAttributes = -1;              /* BOOLEAN */
183 static int hf_dap_newRequest = -1;                /* T_newRequest */
184 static int hf_dap_pageSize = -1;                  /* INTEGER */
185 static int hf_dap_sortKeys = -1;                  /* SEQUENCE_SIZE_1_MAX_OF_SortKey */
186 static int hf_dap_sortKeys_item = -1;             /* SortKey */
187 static int hf_dap_reverse = -1;                   /* BOOLEAN */
188 static int hf_dap_unmerged = -1;                  /* BOOLEAN */
189 static int hf_dap_pagedResultsQueryReference = -1;  /* T_pagedResultsQueryReference */
190 static int hf_dap_orderingRule = -1;              /* OBJECT_IDENTIFIER */
191 static int hf_dap_certification_path = -1;        /* CertificationPath */
192 static int hf_dap_distinguished_name = -1;        /* DistinguishedName */
193 static int hf_dap_time = -1;                      /* Time */
194 static int hf_dap_random = -1;                    /* BIT_STRING */
195 static int hf_dap_target = -1;                    /* ProtectionRequest */
196 static int hf_dap_response = -1;                  /* BIT_STRING */
197 static int hf_dap_operationCode = -1;             /* Code */
198 static int hf_dap_attributeCertificationPath = -1;  /* AttributeCertificationPath */
199 static int hf_dap_errorProtection = -1;           /* ErrorProtectionRequest */
200 static int hf_dap_errorCode = -1;                 /* Code */
201 static int hf_dap_utcTime = -1;                   /* UTCTime */
202 static int hf_dap_generalizedTime = -1;           /* GeneralizedTime */
203 static int hf_dap_credentials = -1;               /* Credentials */
204 static int hf_dap_versions = -1;                  /* Versions */
205 static int hf_dap_simple = -1;                    /* SimpleCredentials */
206 static int hf_dap_strong = -1;                    /* StrongCredentials */
207 static int hf_dap_externalProcedure = -1;         /* EXTERNAL */
208 static int hf_dap_spkm = -1;                      /* SpkmCredentials */
209 static int hf_dap_sasl = -1;                      /* SaslCredentials */
210 static int hf_dap_validity = -1;                  /* T_validity */
211 static int hf_dap_time1 = -1;                     /* T_time1 */
212 static int hf_dap_utc = -1;                       /* UTCTime */
213 static int hf_dap_gt = -1;                        /* GeneralizedTime */
214 static int hf_dap_time2 = -1;                     /* T_time2 */
215 static int hf_dap_random1 = -1;                   /* BIT_STRING */
216 static int hf_dap_random2 = -1;                   /* BIT_STRING */
217 static int hf_dap_password = -1;                  /* T_password */
218 static int hf_dap_unprotected = -1;               /* OCTET_STRING */
219 static int hf_dap_protected = -1;                 /* T_protected */
220 static int hf_dap_protectedPassword = -1;         /* OCTET_STRING */
221 static int hf_dap_algorithmIdentifier = -1;       /* AlgorithmIdentifier */
222 static int hf_dap_encrypted = -1;                 /* BIT_STRING */
223 static int hf_dap_bind_token = -1;                /* Token */
224 static int hf_dap_req = -1;                       /* T_req */
225 static int hf_dap_rep = -1;                       /* T_rep */
226 static int hf_dap_mechanism = -1;                 /* DirectoryString */
227 static int hf_dap_credentials_01 = -1;            /* OCTET_STRING */
228 static int hf_dap_saslAbort = -1;                 /* BOOLEAN */
229 static int hf_dap_algorithm = -1;                 /* AlgorithmIdentifier */
230 static int hf_dap_utctime = -1;                   /* UTCTime */
231 static int hf_dap_bindIntAlgorithm = -1;          /* SEQUENCE_SIZE_1_MAX_OF_AlgorithmIdentifier */
232 static int hf_dap_bindIntAlgorithm_item = -1;     /* AlgorithmIdentifier */
233 static int hf_dap_bindIntKeyInfo = -1;            /* BindKeyInfo */
234 static int hf_dap_bindConfAlgorithm = -1;         /* SEQUENCE_SIZE_1_MAX_OF_AlgorithmIdentifier */
235 static int hf_dap_bindConfAlgorithm_item = -1;    /* AlgorithmIdentifier */
236 static int hf_dap_bindConfKeyInfo = -1;           /* BindKeyInfo */
237 static int hf_dap_token_data = -1;                /* TokenData */
238 static int hf_dap_algorithm_identifier = -1;      /* AlgorithmIdentifier */
239 static int hf_dap_unsignedDirectoryBindError = -1;  /* DirectoryBindErrorData */
240 static int hf_dap_signedDirectoryBindError = -1;  /* T_signedDirectoryBindError */
241 static int hf_dap_directoryBindError = -1;        /* DirectoryBindErrorData */
242 static int hf_dap_error = -1;                     /* T_error */
243 static int hf_dap_serviceProblem = -1;            /* ServiceProblem */
244 static int hf_dap_securityProblem = -1;           /* SecurityProblem */
245 static int hf_dap_securityParameters = -1;        /* SecurityParameters */
246 static int hf_dap_object = -1;                    /* Name */
247 static int hf_dap_selection = -1;                 /* EntryInformationSelection */
248 static int hf_dap_modifyRightsRequest = -1;       /* BOOLEAN */
249 static int hf_dap_serviceControls = -1;           /* ServiceControls */
250 static int hf_dap_requestor = -1;                 /* DistinguishedName */
251 static int hf_dap_operationProgress = -1;         /* OperationProgress */
252 static int hf_dap_aliasedRDNs = -1;               /* INTEGER */
253 static int hf_dap_criticalExtensions = -1;        /* BIT_STRING */
254 static int hf_dap_referenceType = -1;             /* ReferenceType */
255 static int hf_dap_entryOnly = -1;                 /* BOOLEAN */
256 static int hf_dap_exclusions = -1;                /* Exclusions */
257 static int hf_dap_nameResolveOnMaster = -1;       /* BOOLEAN */
258 static int hf_dap_operationContexts = -1;         /* ContextSelection */
259 static int hf_dap_familyGrouping = -1;            /* FamilyGrouping */
260 static int hf_dap_rdnSequence = -1;               /* RDNSequence */
261 static int hf_dap_unsignedReadArgument = -1;      /* ReadArgumentData */
262 static int hf_dap_signedReadArgument = -1;        /* T_signedReadArgument */
263 static int hf_dap_readArgument = -1;              /* ReadArgumentData */
264 static int hf_dap_entry = -1;                     /* EntryInformation */
265 static int hf_dap_modifyRights = -1;              /* ModifyRights */
266 static int hf_dap_performer = -1;                 /* DistinguishedName */
267 static int hf_dap_aliasDereferenced = -1;         /* BOOLEAN */
268 static int hf_dap_notification = -1;              /* SEQUENCE_SIZE_1_MAX_OF_Attribute */
269 static int hf_dap_notification_item = -1;         /* Attribute */
270 static int hf_dap_unsignedReadResult = -1;        /* ReadResultData */
271 static int hf_dap_signedReadResult = -1;          /* T_signedReadResult */
272 static int hf_dap_readResult = -1;                /* ReadResultData */
273 static int hf_dap_ModifyRights_item = -1;         /* ModifyRights_item */
274 static int hf_dap_item = -1;                      /* T_item */
275 static int hf_dap_item_entry = -1;                /* NULL */
276 static int hf_dap_attribute_type = -1;            /* AttributeType */
277 static int hf_dap_value_assertion = -1;           /* AttributeValueAssertion */
278 static int hf_dap_permission = -1;                /* T_permission */
279 static int hf_dap_purported = -1;                 /* AttributeValueAssertion */
280 static int hf_dap_unsignedCompareArgument = -1;   /* CompareArgumentData */
281 static int hf_dap_signedCompareArgument = -1;     /* T_signedCompareArgument */
282 static int hf_dap_compareArgument = -1;           /* CompareArgumentData */
283 static int hf_dap_matched = -1;                   /* BOOLEAN */
284 static int hf_dap_matchedSubtype = -1;            /* AttributeType */
285 static int hf_dap_unsignedCompareResult = -1;     /* CompareResultData */
286 static int hf_dap_signedCompareResult = -1;       /* T_signedCompareResult */
287 static int hf_dap_compareResult = -1;             /* CompareResultData */
288 static int hf_dap_invokeID = -1;                  /* InvokeId */
289 static int hf_dap_unsignedAbandonArgument = -1;   /* AbandonArgumentData */
290 static int hf_dap_signedAbandonArgument = -1;     /* T_signedAbandonArgument */
291 static int hf_dap_abandonArgument = -1;           /* AbandonArgumentData */
292 static int hf_dap_null = -1;                      /* NULL */
293 static int hf_dap_abandon_information = -1;       /* AbandonInformation */
294 static int hf_dap_unsignedAbandonResult = -1;     /* AbandonResultData */
295 static int hf_dap_signedAbandonResult = -1;       /* T_signedAbandonResult */
296 static int hf_dap_abandonResult = -1;             /* AbandonResultData */
297 static int hf_dap_pagedResults = -1;              /* PagedResultsRequest */
298 static int hf_dap_listFamily = -1;                /* BOOLEAN */
299 static int hf_dap_unsignedListArgument = -1;      /* ListArgumentData */
300 static int hf_dap_signedListArgument = -1;        /* T_signedListArgument */
301 static int hf_dap_listArgument = -1;              /* ListArgumentData */
302 static int hf_dap_listInfo = -1;                  /* T_listInfo */
303 static int hf_dap_subordinates = -1;              /* T_subordinates */
304 static int hf_dap_subordinates_item = -1;         /* T_subordinates_item */
305 static int hf_dap_aliasEntry = -1;                /* BOOLEAN */
306 static int hf_dap_partialOutcomeQualifier = -1;   /* PartialOutcomeQualifier */
307 static int hf_dap_uncorrelatedListInfo = -1;      /* SET_OF_ListResult */
308 static int hf_dap_uncorrelatedListInfo_item = -1;  /* ListResult */
309 static int hf_dap_unsignedListResult = -1;        /* ListResultData */
310 static int hf_dap_signedListResult = -1;          /* T_signedListResult */
311 static int hf_dap_listResult = -1;                /* ListResultData */
312 static int hf_dap_limitProblem = -1;              /* LimitProblem */
313 static int hf_dap_unexplored = -1;                /* SET_SIZE_1_MAX_OF_ContinuationReference */
314 static int hf_dap_unexplored_item = -1;           /* ContinuationReference */
315 static int hf_dap_unavailableCriticalExtensions = -1;  /* BOOLEAN */
316 static int hf_dap_unknownErrors = -1;             /* T_unknownErrors */
317 static int hf_dap_unknownErrors_item = -1;        /* OBJECT_IDENTIFIER */
318 static int hf_dap_queryReference = -1;            /* OCTET_STRING */
319 static int hf_dap_overspecFilter = -1;            /* Filter */
320 static int hf_dap_entryCount = -1;                /* T_entryCount */
321 static int hf_dap_bestEstimate = -1;              /* INTEGER */
322 static int hf_dap_lowEstimate = -1;               /* INTEGER */
323 static int hf_dap_exact = -1;                     /* INTEGER */
324 static int hf_dap_streamedResult = -1;            /* BOOLEAN */
325 static int hf_dap_baseObject = -1;                /* Name */
326 static int hf_dap_subset = -1;                    /* T_subset */
327 static int hf_dap_filter = -1;                    /* Filter */
328 static int hf_dap_searchAliases = -1;             /* BOOLEAN */
329 static int hf_dap_matchedValuesOnly = -1;         /* BOOLEAN */
330 static int hf_dap_extendedFilter = -1;            /* Filter */
331 static int hf_dap_checkOverspecified = -1;        /* BOOLEAN */
332 static int hf_dap_relaxation = -1;                /* RelaxationPolicy */
333 static int hf_dap_extendedArea = -1;              /* INTEGER */
334 static int hf_dap_hierarchySelections = -1;       /* HierarchySelections */
335 static int hf_dap_searchControlOptions = -1;      /* SearchControlOptions */
336 static int hf_dap_joinArguments = -1;             /* SEQUENCE_SIZE_1_MAX_OF_JoinArgument */
337 static int hf_dap_joinArguments_item = -1;        /* JoinArgument */
338 static int hf_dap_joinType = -1;                  /* T_joinType */
339 static int hf_dap_unsignedSearchArgument = -1;    /* SearchArgumentData */
340 static int hf_dap_signedSearchArgument = -1;      /* T_signedSearchArgument */
341 static int hf_dap_searchArgument = -1;            /* SearchArgumentData */
342 static int hf_dap_joinBaseObject = -1;            /* Name */
343 static int hf_dap_domainLocalID = -1;             /* DomainLocalID */
344 static int hf_dap_joinSubset = -1;                /* T_joinSubset */
345 static int hf_dap_joinFilter = -1;                /* Filter */
346 static int hf_dap_joinAttributes = -1;            /* SEQUENCE_SIZE_1_MAX_OF_JoinAttPair */
347 static int hf_dap_joinAttributes_item = -1;       /* JoinAttPair */
348 static int hf_dap_joinSelection = -1;             /* EntryInformationSelection */
349 static int hf_dap_baseAtt = -1;                   /* AttributeType */
350 static int hf_dap_joinAtt = -1;                   /* AttributeType */
351 static int hf_dap_joinContext = -1;               /* SEQUENCE_SIZE_1_MAX_OF_JoinContextType */
352 static int hf_dap_joinContext_item = -1;          /* JoinContextType */
353 static int hf_dap_searchInfo = -1;                /* T_searchInfo */
354 static int hf_dap_entries = -1;                   /* SET_OF_EntryInformation */
355 static int hf_dap_entries_item = -1;              /* EntryInformation */
356 static int hf_dap_altMatching = -1;               /* BOOLEAN */
357 static int hf_dap_uncorrelatedSearchInfo = -1;    /* SET_OF_SearchResult */
358 static int hf_dap_uncorrelatedSearchInfo_item = -1;  /* SearchResult */
359 static int hf_dap_unsignedSearchResult = -1;      /* SearchResultData */
360 static int hf_dap_signedSearchResult = -1;        /* T_signedSearchResult */
361 static int hf_dap_searchResult = -1;              /* SearchResultData */
362 static int hf_dap_add_entry = -1;                 /* SET_OF_Attribute */
363 static int hf_dap_add_entry_item = -1;            /* Attribute */
364 static int hf_dap_targetSystem = -1;              /* AccessPoint */
365 static int hf_dap_unsignedAddEntryArgument = -1;  /* AddEntryArgumentData */
366 static int hf_dap_signedAddEntryArgument = -1;    /* T_signedAddEntryArgument */
367 static int hf_dap_addEntryArgument = -1;          /* AddEntryArgumentData */
368 static int hf_dap_add_entry_information = -1;     /* AddEntryInformation */
369 static int hf_dap_unsignedAddEntryResult = -1;    /* AddEntryResultData */
370 static int hf_dap_signedAddEntryResult = -1;      /* T_signedAddEntryResult */
371 static int hf_dap_addEntryResult = -1;            /* AddEntryResultData */
372 static int hf_dap_unsignedRemoveEntryArgument = -1;  /* RemoveEntryArgumentData */
373 static int hf_dap_signedRemoveEntryArgument = -1;  /* T_signedRemoveEntryArgument */
374 static int hf_dap_removeEntryArgument = -1;       /* RemoveEntryArgumentData */
375 static int hf_dap_remove_entry_information = -1;  /* RemoveEntryInformation */
376 static int hf_dap_unsignedRemoveEntryResult = -1;  /* RemoveEntryResultData */
377 static int hf_dap_signedRemoveEntryResult = -1;   /* T_signedRemoveEntryResult */
378 static int hf_dap_removeEntryResult = -1;         /* RemoveEntryResultData */
379 static int hf_dap_changes = -1;                   /* SEQUENCE_OF_EntryModification */
380 static int hf_dap_changes_item = -1;              /* EntryModification */
381 static int hf_dap_unsignedModifyEntryArgument = -1;  /* ModifyEntryArgumentData */
382 static int hf_dap_signedModifyEntryArgument = -1;  /* T_signedModifyEntryArgument */
383 static int hf_dap_modifyEntryArgument = -1;       /* ModifyEntryArgumentData */
384 static int hf_dap_modify_entry_information = -1;  /* ModifyEntryInformation */
385 static int hf_dap_unsignedModifyEntryResult = -1;  /* ModifyEntryResultData */
386 static int hf_dap_signedModifyEntryResult = -1;   /* T_signedModifyEntryResult */
387 static int hf_dap_modifyEntryResult = -1;         /* ModifyEntryResultData */
388 static int hf_dap_addAttribute = -1;              /* Attribute */
389 static int hf_dap_removeAttribute = -1;           /* AttributeType */
390 static int hf_dap_addValues = -1;                 /* Attribute */
391 static int hf_dap_removeValues = -1;              /* Attribute */
392 static int hf_dap_alterValues = -1;               /* AttributeTypeAndValue */
393 static int hf_dap_resetValue = -1;                /* AttributeType */
394 static int hf_dap_newRDN = -1;                    /* RelativeDistinguishedName */
395 static int hf_dap_deleteOldRDN = -1;              /* BOOLEAN */
396 static int hf_dap_newSuperior = -1;               /* DistinguishedName */
397 static int hf_dap_modify_dn_information = -1;     /* ModifyDNInformation */
398 static int hf_dap_unsignedModifyDNResult = -1;    /* ModifyDNResultData */
399 static int hf_dap_signedModifyDNResult = -1;      /* T_signedModifyDNResult */
400 static int hf_dap_modifyDNResult = -1;            /* ModifyDNResultData */
401 static int hf_dap_unsignedAbandoned = -1;         /* AbandonedData */
402 static int hf_dap_signedAbandoned = -1;           /* T_signedAbandoned */
403 static int hf_dap_abandoned = -1;                 /* AbandonedData */
404 static int hf_dap_abandon_failed_problem = -1;    /* AbandonProblem */
405 static int hf_dap_operation = -1;                 /* InvokeId */
406 static int hf_dap_unsignedAbandonFailedError = -1;  /* AbandonFailedErrorData */
407 static int hf_dap_signedAbandonFailedError = -1;  /* T_signedAbandonFailedError */
408 static int hf_dap_abandonFailedError = -1;        /* AbandonFailedErrorData */
409 static int hf_dap_problems = -1;                  /* T_problems */
410 static int hf_dap_problems_item = -1;             /* T_problems_item */
411 static int hf_dap_attribute_error_problem = -1;   /* AttributeProblem */
412 static int hf_dap_value = -1;                     /* AttributeValue */
413 static int hf_dap_unsignedAttributeError = -1;    /* AttributeErrorData */
414 static int hf_dap_signedAttributeError = -1;      /* T_signedAttributeError */
415 static int hf_dap_attributeError = -1;            /* AttributeErrorData */
416 static int hf_dap_name_error_problem = -1;        /* NameProblem */
417 static int hf_dap_matched_name = -1;              /* Name */
418 static int hf_dap_unsignedNameError = -1;         /* NameErrorData */
419 static int hf_dap_signedNameError = -1;           /* T_signedNameError */
420 static int hf_dap_nameError = -1;                 /* NameErrorData */
421 static int hf_dap_candidate = -1;                 /* ContinuationReference */
422 static int hf_dap_unsignedReferral = -1;          /* ReferralData */
423 static int hf_dap_signedReferral = -1;            /* T_signedReferral */
424 static int hf_dap_referral = -1;                  /* ReferralData */
425 static int hf_dap_security_error_problem = -1;    /* SecurityProblem */
426 static int hf_dap_spkmInfo = -1;                  /* T_spkmInfo */
427 static int hf_dap_unsignedSecurityError = -1;     /* SecurityErrorData */
428 static int hf_dap_signedSecurityError = -1;       /* T_signedSecurityError */
429 static int hf_dap_securityErrorData = -1;         /* SecurityErrorData */
430 static int hf_dap_service_error_problem = -1;     /* ServiceProblem */
431 static int hf_dap_unsignedServiceError = -1;      /* ServiceErrorData */
432 static int hf_dap_signedServiceError = -1;        /* T_signedServiceError */
433 static int hf_dap_serviceError = -1;              /* ServiceErrorData */
434 static int hf_dap_update_error_problem = -1;      /* UpdateProblem */
435 static int hf_dap_attributeInfo = -1;             /* T_attributeInfo */
436 static int hf_dap_attributeInfo_item = -1;        /* T_attributeInfo_item */
437 static int hf_dap_unsignedUpdateError = -1;       /* UpdateErrorData */
438 static int hf_dap_signedUpdateError = -1;         /* T_signedUpdateError */
439 static int hf_dap_updateError = -1;               /* UpdateErrorData */
440 /* named bits */
441 static int hf_dap_ServiceControlOptions_preferChaining = -1;
442 static int hf_dap_ServiceControlOptions_chainingProhibited = -1;
443 static int hf_dap_ServiceControlOptions_localScope = -1;
444 static int hf_dap_ServiceControlOptions_dontUseCopy = -1;
445 static int hf_dap_ServiceControlOptions_dontDereferenceAliases = -1;
446 static int hf_dap_ServiceControlOptions_subentries = -1;
447 static int hf_dap_ServiceControlOptions_copyShallDo = -1;
448 static int hf_dap_ServiceControlOptions_partialNameResolution = -1;
449 static int hf_dap_ServiceControlOptions_manageDSAIT = -1;
450 static int hf_dap_ServiceControlOptions_noSubtypeMatch = -1;
451 static int hf_dap_ServiceControlOptions_noSubtypeSelection = -1;
452 static int hf_dap_ServiceControlOptions_countFamily = -1;
453 static int hf_dap_ServiceControlOptions_dontSelectFriends = -1;
454 static int hf_dap_ServiceControlOptions_dontMatchFriends = -1;
455 static int hf_dap_Versions_v1 = -1;
456 static int hf_dap_Versions_v2 = -1;
457 static int hf_dap_T_permission_add = -1;
458 static int hf_dap_T_permission_remove = -1;
459 static int hf_dap_T_permission_rename = -1;
460 static int hf_dap_T_permission_move = -1;
461 static int hf_dap_HierarchySelections_self = -1;
462 static int hf_dap_HierarchySelections_children = -1;
463 static int hf_dap_HierarchySelections_parent = -1;
464 static int hf_dap_HierarchySelections_hierarchy = -1;
465 static int hf_dap_HierarchySelections_top = -1;
466 static int hf_dap_HierarchySelections_subtree = -1;
467 static int hf_dap_HierarchySelections_siblings = -1;
468 static int hf_dap_HierarchySelections_siblingChildren = -1;
469 static int hf_dap_HierarchySelections_siblingSubtree = -1;
470 static int hf_dap_HierarchySelections_all = -1;
471 static int hf_dap_SearchControlOptions_searchAliases = -1;
472 static int hf_dap_SearchControlOptions_matchedValuesOnly = -1;
473 static int hf_dap_SearchControlOptions_checkOverspecified = -1;
474 static int hf_dap_SearchControlOptions_performExactly = -1;
475 static int hf_dap_SearchControlOptions_includeAllAreas = -1;
476 static int hf_dap_SearchControlOptions_noSystemRelaxation = -1;
477 static int hf_dap_SearchControlOptions_dnAttribute = -1;
478 static int hf_dap_SearchControlOptions_matchOnResidualName = -1;
479 static int hf_dap_SearchControlOptions_entryCount = -1;
480 static int hf_dap_SearchControlOptions_useSubset = -1;
481 static int hf_dap_SearchControlOptions_separateFamilyMembers = -1;
482 static int hf_dap_SearchControlOptions_searchFamily = -1;
483
484 /*--- End of included file: packet-dap-hf.c ---*/
485 #line 68 "packet-dap-template.c"
486
487 /* Initialize the subtree pointers */
488 static gint ett_dap = -1;
489
490 /*--- Included file: packet-dap-ett.c ---*/
491 #line 1 "packet-dap-ett.c"
492 static gint ett_dap_ServiceControls = -1;
493 static gint ett_dap_T_manageDSAITPlaneRef = -1;
494 static gint ett_dap_ServiceControlOptions = -1;
495 static gint ett_dap_EntryInformationSelection = -1;
496 static gint ett_dap_T_attributes = -1;
497 static gint ett_dap_SET_OF_AttributeType = -1;
498 static gint ett_dap_T_extraAttributes = -1;
499 static gint ett_dap_SET_SIZE_1_MAX_OF_AttributeType = -1;
500 static gint ett_dap_ContextSelection = -1;
501 static gint ett_dap_SET_SIZE_1_MAX_OF_TypeAndContextAssertion = -1;
502 static gint ett_dap_TypeAndContextAssertion = -1;
503 static gint ett_dap_T_contextAssertions = -1;
504 static gint ett_dap_SEQUENCE_OF_ContextAssertion = -1;
505 static gint ett_dap_SET_OF_ContextAssertion = -1;
506 static gint ett_dap_FamilyReturn = -1;
507 static gint ett_dap_T_familySelect = -1;
508 static gint ett_dap_EntryInformation = -1;
509 static gint ett_dap_T_entry_information = -1;
510 static gint ett_dap_EntryInformationItem = -1;
511 static gint ett_dap_FamilyEntries = -1;
512 static gint ett_dap_SEQUENCE_OF_FamilyEntry = -1;
513 static gint ett_dap_FamilyEntry = -1;
514 static gint ett_dap_FamilyInformation = -1;
515 static gint ett_dap_T_family_information_item = -1;
516 static gint ett_dap_SEQUENCE_SIZE_1_MAX_OF_FamilyEntries = -1;
517 static gint ett_dap_Filter = -1;
518 static gint ett_dap_SetOfFilter = -1;
519 static gint ett_dap_FilterItem = -1;
520 static gint ett_dap_T_substrings = -1;
521 static gint ett_dap_T_strings = -1;
522 static gint ett_dap_T_strings_item = -1;
523 static gint ett_dap_MatchingRuleAssertion = -1;
524 static gint ett_dap_T_matchingRule = -1;
525 static gint ett_dap_PagedResultsRequest = -1;
526 static gint ett_dap_T_newRequest = -1;
527 static gint ett_dap_SEQUENCE_SIZE_1_MAX_OF_SortKey = -1;
528 static gint ett_dap_SortKey = -1;
529 static gint ett_dap_SecurityParameters = -1;
530 static gint ett_dap_Time = -1;
531 static gint ett_dap_DirectoryBindArgument = -1;
532 static gint ett_dap_Credentials = -1;
533 static gint ett_dap_SimpleCredentials = -1;
534 static gint ett_dap_T_validity = -1;
535 static gint ett_dap_T_time1 = -1;
536 static gint ett_dap_T_time2 = -1;
537 static gint ett_dap_T_password = -1;
538 static gint ett_dap_T_protected = -1;
539 static gint ett_dap_StrongCredentials = -1;
540 static gint ett_dap_SpkmCredentials = -1;
541 static gint ett_dap_SaslCredentials = -1;
542 static gint ett_dap_TokenData = -1;
543 static gint ett_dap_SEQUENCE_SIZE_1_MAX_OF_AlgorithmIdentifier = -1;
544 static gint ett_dap_Token = -1;
545 static gint ett_dap_Versions = -1;
546 static gint ett_dap_DirectoryBindError = -1;
547 static gint ett_dap_T_signedDirectoryBindError = -1;
548 static gint ett_dap_DirectoryBindErrorData = -1;
549 static gint ett_dap_T_error = -1;
550 static gint ett_dap_ReadArgumentData = -1;
551 static gint ett_dap_Name = -1;
552 static gint ett_dap_ReadArgument = -1;
553 static gint ett_dap_T_signedReadArgument = -1;
554 static gint ett_dap_ReadResultData = -1;
555 static gint ett_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute = -1;
556 static gint ett_dap_ReadResult = -1;
557 static gint ett_dap_T_signedReadResult = -1;
558 static gint ett_dap_ModifyRights = -1;
559 static gint ett_dap_ModifyRights_item = -1;
560 static gint ett_dap_T_item = -1;
561 static gint ett_dap_T_permission = -1;
562 static gint ett_dap_CompareArgumentData = -1;
563 static gint ett_dap_CompareArgument = -1;
564 static gint ett_dap_T_signedCompareArgument = -1;
565 static gint ett_dap_CompareResultData = -1;
566 static gint ett_dap_CompareResult = -1;
567 static gint ett_dap_T_signedCompareResult = -1;
568 static gint ett_dap_AbandonArgumentData = -1;
569 static gint ett_dap_AbandonArgument = -1;
570 static gint ett_dap_T_signedAbandonArgument = -1;
571 static gint ett_dap_AbandonResultData = -1;
572 static gint ett_dap_AbandonResult = -1;
573 static gint ett_dap_AbandonInformation = -1;
574 static gint ett_dap_T_signedAbandonResult = -1;
575 static gint ett_dap_ListArgumentData = -1;
576 static gint ett_dap_ListArgument = -1;
577 static gint ett_dap_T_signedListArgument = -1;
578 static gint ett_dap_ListResultData = -1;
579 static gint ett_dap_T_listInfo = -1;
580 static gint ett_dap_T_subordinates = -1;
581 static gint ett_dap_T_subordinates_item = -1;
582 static gint ett_dap_SET_OF_ListResult = -1;
583 static gint ett_dap_ListResult = -1;
584 static gint ett_dap_T_signedListResult = -1;
585 static gint ett_dap_PartialOutcomeQualifier = -1;
586 static gint ett_dap_SET_SIZE_1_MAX_OF_ContinuationReference = -1;
587 static gint ett_dap_T_unknownErrors = -1;
588 static gint ett_dap_T_entryCount = -1;
589 static gint ett_dap_SearchArgumentData = -1;
590 static gint ett_dap_SEQUENCE_SIZE_1_MAX_OF_JoinArgument = -1;
591 static gint ett_dap_SearchArgument = -1;
592 static gint ett_dap_T_signedSearchArgument = -1;
593 static gint ett_dap_HierarchySelections = -1;
594 static gint ett_dap_SearchControlOptions = -1;
595 static gint ett_dap_JoinArgument = -1;
596 static gint ett_dap_SEQUENCE_SIZE_1_MAX_OF_JoinAttPair = -1;
597 static gint ett_dap_JoinAttPair = -1;
598 static gint ett_dap_SEQUENCE_SIZE_1_MAX_OF_JoinContextType = -1;
599 static gint ett_dap_SearchResultData = -1;
600 static gint ett_dap_T_searchInfo = -1;
601 static gint ett_dap_SET_OF_EntryInformation = -1;
602 static gint ett_dap_SET_OF_SearchResult = -1;
603 static gint ett_dap_SearchResult = -1;
604 static gint ett_dap_T_signedSearchResult = -1;
605 static gint ett_dap_AddEntryArgumentData = -1;
606 static gint ett_dap_SET_OF_Attribute = -1;
607 static gint ett_dap_AddEntryArgument = -1;
608 static gint ett_dap_T_signedAddEntryArgument = -1;
609 static gint ett_dap_AddEntryResultData = -1;
610 static gint ett_dap_AddEntryResult = -1;
611 static gint ett_dap_AddEntryInformation = -1;
612 static gint ett_dap_T_signedAddEntryResult = -1;
613 static gint ett_dap_RemoveEntryArgumentData = -1;
614 static gint ett_dap_RemoveEntryArgument = -1;
615 static gint ett_dap_T_signedRemoveEntryArgument = -1;
616 static gint ett_dap_RemoveEntryResultData = -1;
617 static gint ett_dap_RemoveEntryResult = -1;
618 static gint ett_dap_RemoveEntryInformation = -1;
619 static gint ett_dap_T_signedRemoveEntryResult = -1;
620 static gint ett_dap_ModifyEntryArgumentData = -1;
621 static gint ett_dap_SEQUENCE_OF_EntryModification = -1;
622 static gint ett_dap_ModifyEntryArgument = -1;
623 static gint ett_dap_T_signedModifyEntryArgument = -1;
624 static gint ett_dap_ModifyEntryResultData = -1;
625 static gint ett_dap_ModifyEntryResult = -1;
626 static gint ett_dap_ModifyEntryInformation = -1;
627 static gint ett_dap_T_signedModifyEntryResult = -1;
628 static gint ett_dap_EntryModification = -1;
629 static gint ett_dap_ModifyDNArgument = -1;
630 static gint ett_dap_ModifyDNResultData = -1;
631 static gint ett_dap_ModifyDNResult = -1;
632 static gint ett_dap_ModifyDNInformation = -1;
633 static gint ett_dap_T_signedModifyDNResult = -1;
634 static gint ett_dap_AbandonedData = -1;
635 static gint ett_dap_Abandoned = -1;
636 static gint ett_dap_T_signedAbandoned = -1;
637 static gint ett_dap_AbandonFailedErrorData = -1;
638 static gint ett_dap_AbandonFailedError = -1;
639 static gint ett_dap_T_signedAbandonFailedError = -1;
640 static gint ett_dap_AttributeErrorData = -1;
641 static gint ett_dap_T_problems = -1;
642 static gint ett_dap_T_problems_item = -1;
643 static gint ett_dap_AttributeError = -1;
644 static gint ett_dap_T_signedAttributeError = -1;
645 static gint ett_dap_NameErrorData = -1;
646 static gint ett_dap_NameError = -1;
647 static gint ett_dap_T_signedNameError = -1;
648 static gint ett_dap_ReferralData = -1;
649 static gint ett_dap_Referral = -1;
650 static gint ett_dap_T_signedReferral = -1;
651 static gint ett_dap_SecurityErrorData = -1;
652 static gint ett_dap_SecurityError = -1;
653 static gint ett_dap_T_signedSecurityError = -1;
654 static gint ett_dap_ServiceErrorData = -1;
655 static gint ett_dap_ServiceError = -1;
656 static gint ett_dap_T_signedServiceError = -1;
657 static gint ett_dap_UpdateErrorData = -1;
658 static gint ett_dap_T_attributeInfo = -1;
659 static gint ett_dap_T_attributeInfo_item = -1;
660 static gint ett_dap_UpdateError = -1;
661 static gint ett_dap_T_signedUpdateError = -1;
662
663 /*--- End of included file: packet-dap-ett.c ---*/
664 #line 72 "packet-dap-template.c"
665
666
667 /*--- Included file: packet-dap-val.h ---*/
668 #line 1 "packet-dap-val.h"
669 #define id_opcode_read                 1
670 #define id_opcode_compare              2
671 #define id_opcode_abandon              3
672 #define id_opcode_list                 4
673 #define id_opcode_search               5
674 #define id_opcode_addEntry             6
675 #define id_opcode_removeEntry          7
676 #define id_opcode_modifyEntry          8
677 #define id_opcode_modifyDN             9
678 #define id_errcode_attributeError      1
679 #define id_errcode_nameError           2
680 #define id_errcode_serviceError        3
681 #define id_errcode_referral            4
682 #define id_errcode_abandoned           5
683 #define id_errcode_securityError       6
684 #define id_errcode_abandonFailed       7
685 #define id_errcode_updateError         8
686 #define id_errcode_dsaReferral         9
687
688 /*--- End of included file: packet-dap-val.h ---*/
689 #line 74 "packet-dap-template.c"
690
691
692 /*--- Included file: packet-dap-table.c ---*/
693 #line 1 "packet-dap-table.c"
694
695 /* DAP OPERATIONS */
696 const value_string dap_opr_code_string_vals[] = {
697         { op_ros_bind, "directoryBind" },
698         { id_opcode_read, "read" },
699         { id_opcode_compare, "compare" },
700         { id_opcode_abandon, "abandon" },
701         { id_opcode_list, "list" },
702         { id_opcode_search, "search" },
703         { id_opcode_addEntry, "addEntry" },
704         { id_opcode_removeEntry, "removeEntry" },
705         { id_opcode_modifyEntry, "modifyEntry" },
706         { id_opcode_modifyDN, "modifyDN" },
707         { 0, NULL }
708 };
709
710
711 /* DAP ERRORS */
712 static const value_string dap_err_code_string_vals[] = {
713         { err_ros_bind, "directoryBindError" },  
714         { id_errcode_abandoned, "abandoned" },  
715         { id_errcode_abandonFailed, "abandonFailed" },  
716         { id_errcode_attributeError, "attributeError" },  
717         { id_errcode_nameError, "nameError" },  
718         { id_errcode_referral, "referral" },  
719         { id_errcode_securityError, "securityError" },  
720         { id_errcode_serviceError, "serviceError" },  
721         { id_errcode_updateError, "updateError" },  
722           { 0, NULL }
723 };
724
725
726 /*--- End of included file: packet-dap-table.c ---*/
727 #line 76 "packet-dap-template.c"
728
729
730 /*--- Included file: packet-dap-fn.c ---*/
731 #line 1 "packet-dap-fn.c"
732 /*--- Cyclic dependencies ---*/
733
734 /* FamilyEntries -> FamilyEntries/familyEntries -> FamilyEntry -> FamilyEntry/family-info -> FamilyEntries */
735 static int dissect_dap_FamilyEntries(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
736
737 /* Filter -> SetOfFilter -> Filter */
738 /* Filter -> Filter */
739 int dissect_dap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
740
741 /* ListResultData -> ListResultData/uncorrelatedListInfo -> ListResult -> ListResultData */
742 /* ListResultData -> ListResultData/uncorrelatedListInfo -> ListResult -> ListResult/signedListResult -> ListResultData */
743 static int dissect_dap_ListResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
744
745 /* SearchResultData -> SearchResultData/uncorrelatedSearchInfo -> SearchResult -> SearchResultData */
746 /* SearchResultData -> SearchResultData/uncorrelatedSearchInfo -> SearchResult -> SearchResult/signedSearchResult -> SearchResultData */
747 static int dissect_dap_SearchResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
748
749
750
751 const value_string dap_FamilyGrouping_vals[] = {
752   {   1, "entryOnly" },
753   {   2, "compoundEntry" },
754   {   3, "strands" },
755   {   4, "multiStrand" },
756   { 0, NULL }
757 };
758
759
760 int
761 dissect_dap_FamilyGrouping(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
762   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
763                                   NULL);
764
765   return offset;
766 }
767
768
769 static const asn_namedbit ServiceControlOptions_bits[] = {
770   {  0, &hf_dap_ServiceControlOptions_preferChaining, -1, -1, "preferChaining", NULL },
771   {  1, &hf_dap_ServiceControlOptions_chainingProhibited, -1, -1, "chainingProhibited", NULL },
772   {  2, &hf_dap_ServiceControlOptions_localScope, -1, -1, "localScope", NULL },
773   {  3, &hf_dap_ServiceControlOptions_dontUseCopy, -1, -1, "dontUseCopy", NULL },
774   {  4, &hf_dap_ServiceControlOptions_dontDereferenceAliases, -1, -1, "dontDereferenceAliases", NULL },
775   {  5, &hf_dap_ServiceControlOptions_subentries, -1, -1, "subentries", NULL },
776   {  6, &hf_dap_ServiceControlOptions_copyShallDo, -1, -1, "copyShallDo", NULL },
777   {  7, &hf_dap_ServiceControlOptions_partialNameResolution, -1, -1, "partialNameResolution", NULL },
778   {  8, &hf_dap_ServiceControlOptions_manageDSAIT, -1, -1, "manageDSAIT", NULL },
779   {  9, &hf_dap_ServiceControlOptions_noSubtypeMatch, -1, -1, "noSubtypeMatch", NULL },
780   { 10, &hf_dap_ServiceControlOptions_noSubtypeSelection, -1, -1, "noSubtypeSelection", NULL },
781   { 11, &hf_dap_ServiceControlOptions_countFamily, -1, -1, "countFamily", NULL },
782   { 12, &hf_dap_ServiceControlOptions_dontSelectFriends, -1, -1, "dontSelectFriends", NULL },
783   { 13, &hf_dap_ServiceControlOptions_dontMatchFriends, -1, -1, "dontMatchFriends", NULL },
784   { 0, NULL, 0, 0, NULL, NULL }
785 };
786
787 int
788 dissect_dap_ServiceControlOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
789   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
790                                     ServiceControlOptions_bits, hf_index, ett_dap_ServiceControlOptions,
791                                     NULL);
792
793   return offset;
794 }
795
796
797 static const value_string dap_T_priority_vals[] = {
798   {   0, "low" },
799   {   1, "medium" },
800   {   2, "high" },
801   { 0, NULL }
802 };
803
804
805 static int
806 dissect_dap_T_priority(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
807   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
808                                                 NULL);
809
810   return offset;
811 }
812
813
814
815 static int
816 dissect_dap_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
817   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
818                                                 NULL);
819
820   return offset;
821 }
822
823
824 static const value_string dap_T_scopeOfReferral_vals[] = {
825   {   0, "dmd" },
826   {   1, "country" },
827   { 0, NULL }
828 };
829
830
831 static int
832 dissect_dap_T_scopeOfReferral(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
833   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
834                                                 NULL);
835
836   return offset;
837 }
838
839
840 static const value_string dap_Name_vals[] = {
841   {   0, "rdnSequence" },
842   { 0, NULL }
843 };
844
845 static const ber_choice_t Name_choice[] = {
846   {   0, &hf_dap_rdnSequence     , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_RDNSequence },
847   { 0, NULL, 0, 0, 0, NULL }
848 };
849
850 static int
851 dissect_dap_Name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
852         const char *dn;
853
854           offset = dissect_ber_choice(actx, tree, tvb, offset,
855                                  Name_choice, hf_index, ett_dap_Name,
856                                  NULL);
857
858
859         dn = x509if_get_last_dn();
860         col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", (dn && *dn) ? dn : "(root)");
861
862
863   return offset;
864 }
865
866
867 static const ber_sequence_t T_manageDSAITPlaneRef_sequence[] = {
868   { &hf_dap_dsaName         , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
869   { &hf_dap_agreementID     , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
870   { NULL, 0, 0, 0, NULL }
871 };
872
873 static int
874 dissect_dap_T_manageDSAITPlaneRef(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
875   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
876                                    T_manageDSAITPlaneRef_sequence, hf_index, ett_dap_T_manageDSAITPlaneRef);
877
878   return offset;
879 }
880
881
882
883 static int
884 dissect_dap_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
885   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
886
887   return offset;
888 }
889
890
891 static const ber_sequence_t ServiceControls_set[] = {
892   { &hf_dap_options         , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_dap_ServiceControlOptions },
893   { &hf_dap_priority        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_T_priority },
894   { &hf_dap_timeLimit       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
895   { &hf_dap_sizeLimit       , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
896   { &hf_dap_scopeOfReferral , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dap_T_scopeOfReferral },
897   { &hf_dap_attributeSizeLimit, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
898   { &hf_dap_manageDSAITPlaneRef, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dap_T_manageDSAITPlaneRef },
899   { &hf_dap_serviceType     , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_dap_OBJECT_IDENTIFIER },
900   { &hf_dap_userClass       , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
901   { NULL, 0, 0, 0, NULL }
902 };
903
904 static int
905 dissect_dap_ServiceControls(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
906   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
907                               ServiceControls_set, hf_index, ett_dap_ServiceControls);
908
909   return offset;
910 }
911
912
913
914 static int
915 dissect_dap_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
916   offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
917
918   return offset;
919 }
920
921
922 static const ber_sequence_t SET_OF_AttributeType_set_of[1] = {
923   { &hf_dap_select_item     , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
924 };
925
926 static int
927 dissect_dap_SET_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
928   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
929                                  SET_OF_AttributeType_set_of, hf_index, ett_dap_SET_OF_AttributeType);
930
931   return offset;
932 }
933
934
935 static const value_string dap_T_attributes_vals[] = {
936   {   0, "allUserAttributes" },
937   {   1, "select" },
938   { 0, NULL }
939 };
940
941 static const ber_choice_t T_attributes_choice[] = {
942   {   0, &hf_dap_allUserAttributes, BER_CLASS_CON, 0, 0, dissect_dap_NULL },
943   {   1, &hf_dap_select          , BER_CLASS_CON, 1, 0, dissect_dap_SET_OF_AttributeType },
944   { 0, NULL, 0, 0, 0, NULL }
945 };
946
947 static int
948 dissect_dap_T_attributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
949   offset = dissect_ber_choice(actx, tree, tvb, offset,
950                                  T_attributes_choice, hf_index, ett_dap_T_attributes,
951                                  NULL);
952
953   return offset;
954 }
955
956
957 static const value_string dap_T_infoTypes_vals[] = {
958   {   0, "attributeTypesOnly" },
959   {   1, "attributeTypesAndValues" },
960   { 0, NULL }
961 };
962
963
964 static int
965 dissect_dap_T_infoTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
966   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
967                                                 NULL);
968
969   return offset;
970 }
971
972
973 static const ber_sequence_t SET_SIZE_1_MAX_OF_AttributeType_set_of[1] = {
974   { &hf_dap_extraSelect_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
975 };
976
977 static int
978 dissect_dap_SET_SIZE_1_MAX_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
979   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
980                                  SET_SIZE_1_MAX_OF_AttributeType_set_of, hf_index, ett_dap_SET_SIZE_1_MAX_OF_AttributeType);
981
982   return offset;
983 }
984
985
986 static const value_string dap_T_extraAttributes_vals[] = {
987   {   3, "allOperationalAttributes" },
988   {   4, "select" },
989   { 0, NULL }
990 };
991
992 static const ber_choice_t T_extraAttributes_choice[] = {
993   {   3, &hf_dap_allOperationalAttributes, BER_CLASS_CON, 3, 0, dissect_dap_NULL },
994   {   4, &hf_dap_extraSelect     , BER_CLASS_CON, 4, 0, dissect_dap_SET_SIZE_1_MAX_OF_AttributeType },
995   { 0, NULL, 0, 0, 0, NULL }
996 };
997
998 static int
999 dissect_dap_T_extraAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1000   offset = dissect_ber_choice(actx, tree, tvb, offset,
1001                                  T_extraAttributes_choice, hf_index, ett_dap_T_extraAttributes,
1002                                  NULL);
1003
1004   return offset;
1005 }
1006
1007
1008 static const ber_sequence_t SEQUENCE_OF_ContextAssertion_sequence_of[1] = {
1009   { &hf_dap_preference_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_ContextAssertion },
1010 };
1011
1012 static int
1013 dissect_dap_SEQUENCE_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1014   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1015                                       SEQUENCE_OF_ContextAssertion_sequence_of, hf_index, ett_dap_SEQUENCE_OF_ContextAssertion);
1016
1017   return offset;
1018 }
1019
1020
1021 static const ber_sequence_t SET_OF_ContextAssertion_set_of[1] = {
1022   { &hf_dap_all_item        , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_ContextAssertion },
1023 };
1024
1025 static int
1026 dissect_dap_SET_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1027   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1028                                  SET_OF_ContextAssertion_set_of, hf_index, ett_dap_SET_OF_ContextAssertion);
1029
1030   return offset;
1031 }
1032
1033
1034 static const value_string dap_T_contextAssertions_vals[] = {
1035   {   0, "preference" },
1036   {   1, "all" },
1037   { 0, NULL }
1038 };
1039
1040 static const ber_choice_t T_contextAssertions_choice[] = {
1041   {   0, &hf_dap_preference      , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_SEQUENCE_OF_ContextAssertion },
1042   {   1, &hf_dap_all             , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_SET_OF_ContextAssertion },
1043   { 0, NULL, 0, 0, 0, NULL }
1044 };
1045
1046 static int
1047 dissect_dap_T_contextAssertions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1048   offset = dissect_ber_choice(actx, tree, tvb, offset,
1049                                  T_contextAssertions_choice, hf_index, ett_dap_T_contextAssertions,
1050                                  NULL);
1051
1052   return offset;
1053 }
1054
1055
1056 static const ber_sequence_t TypeAndContextAssertion_sequence[] = {
1057   { &hf_dap_type            , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1058   { &hf_dap_contextAssertions, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_T_contextAssertions },
1059   { NULL, 0, 0, 0, NULL }
1060 };
1061
1062 static int
1063 dissect_dap_TypeAndContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1064   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1065                                    TypeAndContextAssertion_sequence, hf_index, ett_dap_TypeAndContextAssertion);
1066
1067   return offset;
1068 }
1069
1070
1071 static const ber_sequence_t SET_SIZE_1_MAX_OF_TypeAndContextAssertion_set_of[1] = {
1072   { &hf_dap_selectedContexts_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_TypeAndContextAssertion },
1073 };
1074
1075 static int
1076 dissect_dap_SET_SIZE_1_MAX_OF_TypeAndContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1077   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1078                                  SET_SIZE_1_MAX_OF_TypeAndContextAssertion_set_of, hf_index, ett_dap_SET_SIZE_1_MAX_OF_TypeAndContextAssertion);
1079
1080   return offset;
1081 }
1082
1083
1084 const value_string dap_ContextSelection_vals[] = {
1085   {   0, "allContexts" },
1086   {   1, "selectedContexts" },
1087   { 0, NULL }
1088 };
1089
1090 static const ber_choice_t ContextSelection_choice[] = {
1091   {   0, &hf_dap_allContexts     , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_dap_NULL },
1092   {   1, &hf_dap_selectedContexts, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_SET_SIZE_1_MAX_OF_TypeAndContextAssertion },
1093   { 0, NULL, 0, 0, 0, NULL }
1094 };
1095
1096 int
1097 dissect_dap_ContextSelection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1098   offset = dissect_ber_choice(actx, tree, tvb, offset,
1099                                  ContextSelection_choice, hf_index, ett_dap_ContextSelection,
1100                                  NULL);
1101
1102   return offset;
1103 }
1104
1105
1106
1107 static int
1108 dissect_dap_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1109   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1110
1111   return offset;
1112 }
1113
1114
1115 static const value_string dap_T_memberSelect_vals[] = {
1116   {   1, "contributingEntriesOnly" },
1117   {   2, "participatingEntriesOnly" },
1118   {   3, "compoundEntry" },
1119   { 0, NULL }
1120 };
1121
1122
1123 static int
1124 dissect_dap_T_memberSelect(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1125   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1126                                   NULL);
1127
1128   return offset;
1129 }
1130
1131
1132 static const ber_sequence_t T_familySelect_sequence_of[1] = {
1133   { &hf_dap_familySelect_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_dap_OBJECT_IDENTIFIER },
1134 };
1135
1136 static int
1137 dissect_dap_T_familySelect(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1138   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1139                                       T_familySelect_sequence_of, hf_index, ett_dap_T_familySelect);
1140
1141   return offset;
1142 }
1143
1144
1145 static const ber_sequence_t FamilyReturn_sequence[] = {
1146   { &hf_dap_memberSelect    , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_dap_T_memberSelect },
1147   { &hf_dap_familySelect    , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_T_familySelect },
1148   { NULL, 0, 0, 0, NULL }
1149 };
1150
1151 int
1152 dissect_dap_FamilyReturn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1153   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1154                                    FamilyReturn_sequence, hf_index, ett_dap_FamilyReturn);
1155
1156   return offset;
1157 }
1158
1159
1160 static const ber_sequence_t EntryInformationSelection_set[] = {
1161   { &hf_dap_attributes      , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_T_attributes },
1162   { &hf_dap_infoTypes       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_T_infoTypes },
1163   { &hf_dap_extraAttributes , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_T_extraAttributes },
1164   { &hf_dap_contextSelection, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_ContextSelection },
1165   { &hf_dap_returnContexts  , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_BOOLEAN },
1166   { &hf_dap_familyReturn    , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_FamilyReturn },
1167   { NULL, 0, 0, 0, NULL }
1168 };
1169
1170 static int
1171 dissect_dap_EntryInformationSelection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1172   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1173                               EntryInformationSelection_set, hf_index, ett_dap_EntryInformationSelection);
1174
1175   return offset;
1176 }
1177
1178
1179 static const value_string dap_EntryInformationItem_vals[] = {
1180   {   0, "attributeType" },
1181   {   1, "attribute" },
1182   { 0, NULL }
1183 };
1184
1185 static const ber_choice_t EntryInformationItem_choice[] = {
1186   {   0, &hf_dap_attributeType   , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1187   {   1, &hf_dap_attribute       , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
1188   { 0, NULL, 0, 0, 0, NULL }
1189 };
1190
1191 static int
1192 dissect_dap_EntryInformationItem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1193   offset = dissect_ber_choice(actx, tree, tvb, offset,
1194                                  EntryInformationItem_choice, hf_index, ett_dap_EntryInformationItem,
1195                                  NULL);
1196
1197   return offset;
1198 }
1199
1200
1201 static const ber_sequence_t T_entry_information_set_of[1] = {
1202   { &hf_dap_entry_information_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_EntryInformationItem },
1203 };
1204
1205 static int
1206 dissect_dap_T_entry_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1207   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1208                                  T_entry_information_set_of, hf_index, ett_dap_T_entry_information);
1209
1210   return offset;
1211 }
1212
1213
1214 static const ber_sequence_t EntryInformation_sequence[] = {
1215   { &hf_dap_name            , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
1216   { &hf_dap_fromEntry       , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_BOOLEAN },
1217   { &hf_dap_entry_information, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_T_entry_information },
1218   { &hf_dap_incompleteEntry , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
1219   { &hf_dap_partialName     , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
1220   { &hf_dap_derivedEntry    , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
1221   { NULL, 0, 0, 0, NULL }
1222 };
1223
1224 static int
1225 dissect_dap_EntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1226   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1227                                    EntryInformation_sequence, hf_index, ett_dap_EntryInformation);
1228
1229   return offset;
1230 }
1231
1232
1233 static const value_string dap_T_family_information_item_vals[] = {
1234   {   0, "attributeType" },
1235   {   1, "attribute" },
1236   { 0, NULL }
1237 };
1238
1239 static const ber_choice_t T_family_information_item_choice[] = {
1240   {   0, &hf_dap_attributeType   , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1241   {   1, &hf_dap_attribute       , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
1242   { 0, NULL, 0, 0, 0, NULL }
1243 };
1244
1245 static int
1246 dissect_dap_T_family_information_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1247   offset = dissect_ber_choice(actx, tree, tvb, offset,
1248                                  T_family_information_item_choice, hf_index, ett_dap_T_family_information_item,
1249                                  NULL);
1250
1251   return offset;
1252 }
1253
1254
1255 static const ber_sequence_t FamilyInformation_sequence_of[1] = {
1256   { &hf_dap_family_information_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_T_family_information_item },
1257 };
1258
1259 static int
1260 dissect_dap_FamilyInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1261   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1262                                       FamilyInformation_sequence_of, hf_index, ett_dap_FamilyInformation);
1263
1264   return offset;
1265 }
1266
1267
1268 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_FamilyEntries_sequence_of[1] = {
1269   { &hf_dap_family_info_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_FamilyEntries },
1270 };
1271
1272 static int
1273 dissect_dap_SEQUENCE_SIZE_1_MAX_OF_FamilyEntries(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1274   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1275                                       SEQUENCE_SIZE_1_MAX_OF_FamilyEntries_sequence_of, hf_index, ett_dap_SEQUENCE_SIZE_1_MAX_OF_FamilyEntries);
1276
1277   return offset;
1278 }
1279
1280
1281 static const ber_sequence_t FamilyEntry_sequence[] = {
1282   { &hf_dap_rdn             , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1283   { &hf_dap_family_information, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_FamilyInformation },
1284   { &hf_dap_family_info     , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_FamilyEntries },
1285   { NULL, 0, 0, 0, NULL }
1286 };
1287
1288 static int
1289 dissect_dap_FamilyEntry(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1290   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1291                                    FamilyEntry_sequence, hf_index, ett_dap_FamilyEntry);
1292
1293   return offset;
1294 }
1295
1296
1297 static const ber_sequence_t SEQUENCE_OF_FamilyEntry_sequence_of[1] = {
1298   { &hf_dap_familyEntries_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_FamilyEntry },
1299 };
1300
1301 static int
1302 dissect_dap_SEQUENCE_OF_FamilyEntry(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1303   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1304                                       SEQUENCE_OF_FamilyEntry_sequence_of, hf_index, ett_dap_SEQUENCE_OF_FamilyEntry);
1305
1306   return offset;
1307 }
1308
1309
1310 static const ber_sequence_t FamilyEntries_sequence[] = {
1311   { &hf_dap_family_class    , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_dap_OBJECT_IDENTIFIER },
1312   { &hf_dap_familyEntries   , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_SEQUENCE_OF_FamilyEntry },
1313   { NULL, 0, 0, 0, NULL }
1314 };
1315
1316 static int
1317 dissect_dap_FamilyEntries(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1318   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1319                                    FamilyEntries_sequence, hf_index, ett_dap_FamilyEntries);
1320
1321   return offset;
1322 }
1323
1324
1325
1326 static int
1327 dissect_dap_T_initial(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1328         proto_item *it;
1329         it = proto_tree_add_item(tree, hf_index, tvb, offset, -1, FALSE);
1330         proto_item_append_text(it," XXX: Not yet implemented!");
1331
1332
1333   return offset;
1334 }
1335
1336
1337
1338 static int
1339 dissect_dap_T_any(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1340         /* XXX: not yet implemented */
1341
1342
1343   return offset;
1344 }
1345
1346
1347
1348 static int
1349 dissect_dap_T_final(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1350         /* XXX: not yet implemented */
1351
1352
1353   return offset;
1354 }
1355
1356
1357 static const value_string dap_T_strings_item_vals[] = {
1358   {   0, "initial" },
1359   {   1, "any" },
1360   {   2, "final" },
1361   {   3, "control" },
1362   { 0, NULL }
1363 };
1364
1365 static const ber_choice_t T_strings_item_choice[] = {
1366   {   0, &hf_dap_initial         , BER_CLASS_CON, 0, 0, dissect_dap_T_initial },
1367   {   1, &hf_dap_any             , BER_CLASS_CON, 1, 0, dissect_dap_T_any },
1368   {   2, &hf_dap_final           , BER_CLASS_CON, 2, 0, dissect_dap_T_final },
1369   {   3, &hf_dap_control         , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
1370   { 0, NULL, 0, 0, 0, NULL }
1371 };
1372
1373 static int
1374 dissect_dap_T_strings_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1375   offset = dissect_ber_choice(actx, tree, tvb, offset,
1376                                  T_strings_item_choice, hf_index, ett_dap_T_strings_item,
1377                                  NULL);
1378
1379   return offset;
1380 }
1381
1382
1383 static const ber_sequence_t T_strings_sequence_of[1] = {
1384   { &hf_dap_strings_item    , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_T_strings_item },
1385 };
1386
1387 static int
1388 dissect_dap_T_strings(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1389   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1390                                       T_strings_sequence_of, hf_index, ett_dap_T_strings);
1391
1392   return offset;
1393 }
1394
1395
1396 static const ber_sequence_t T_substrings_sequence[] = {
1397   { &hf_dap_sunstringType   , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_dap_OBJECT_IDENTIFIER },
1398   { &hf_dap_strings         , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_strings },
1399   { NULL, 0, 0, 0, NULL }
1400 };
1401
1402 static int
1403 dissect_dap_T_substrings(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1404   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1405                                    T_substrings_sequence, hf_index, ett_dap_T_substrings);
1406
1407   return offset;
1408 }
1409
1410
1411 static const ber_sequence_t T_matchingRule_set_of[1] = {
1412   { &hf_dap_matchingRule_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_dap_OBJECT_IDENTIFIER },
1413 };
1414
1415 static int
1416 dissect_dap_T_matchingRule(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1417   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1418                                  T_matchingRule_set_of, hf_index, ett_dap_T_matchingRule);
1419
1420   return offset;
1421 }
1422
1423
1424
1425 static int
1426 dissect_dap_T_matchValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1427         /* XXX: not yet implemented */
1428
1429
1430   return offset;
1431 }
1432
1433
1434 static const ber_sequence_t MatchingRuleAssertion_sequence[] = {
1435   { &hf_dap_matchingRule    , BER_CLASS_CON, 1, 0, dissect_dap_T_matchingRule },
1436   { &hf_dap_type            , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_AttributeType },
1437   { &hf_dap_matchValue      , BER_CLASS_CON, 3, 0, dissect_dap_T_matchValue },
1438   { &hf_dap_dnAttributes    , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
1439   { NULL, 0, 0, 0, NULL }
1440 };
1441
1442 static int
1443 dissect_dap_MatchingRuleAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1444   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1445                                    MatchingRuleAssertion_sequence, hf_index, ett_dap_MatchingRuleAssertion);
1446
1447   return offset;
1448 }
1449
1450
1451 static const value_string dap_FilterItem_vals[] = {
1452   {   0, "equality" },
1453   {   1, "substrings" },
1454   {   2, "greaterOrEqual" },
1455   {   3, "lessOrEqual" },
1456   {   4, "present" },
1457   {   5, "approximateMatch" },
1458   {   6, "extensibleMatch" },
1459   {   7, "contextPresent" },
1460   { 0, NULL }
1461 };
1462
1463 static const ber_choice_t FilterItem_choice[] = {
1464   {   0, &hf_dap_equality        , BER_CLASS_CON, 0, 0, dissect_x509if_AttributeValueAssertion },
1465   {   1, &hf_dap_substrings      , BER_CLASS_CON, 1, 0, dissect_dap_T_substrings },
1466   {   2, &hf_dap_greaterOrEqual  , BER_CLASS_CON, 2, 0, dissect_x509if_AttributeValueAssertion },
1467   {   3, &hf_dap_lessOrEqual     , BER_CLASS_CON, 3, 0, dissect_x509if_AttributeValueAssertion },
1468   {   4, &hf_dap_present         , BER_CLASS_CON, 4, 0, dissect_x509if_AttributeType },
1469   {   5, &hf_dap_approximateMatch, BER_CLASS_CON, 5, 0, dissect_x509if_AttributeValueAssertion },
1470   {   6, &hf_dap_extensibleMatch , BER_CLASS_CON, 6, 0, dissect_dap_MatchingRuleAssertion },
1471   {   7, &hf_dap_contextPresent  , BER_CLASS_CON, 7, 0, dissect_x509if_AttributeTypeAssertion },
1472   { 0, NULL, 0, 0, 0, NULL }
1473 };
1474
1475 static int
1476 dissect_dap_FilterItem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1477   offset = dissect_ber_choice(actx, tree, tvb, offset,
1478                                  FilterItem_choice, hf_index, ett_dap_FilterItem,
1479                                  NULL);
1480
1481   return offset;
1482 }
1483
1484
1485 static const ber_sequence_t SetOfFilter_set_of[1] = {
1486   { &hf_dap_SetOfFilter_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_Filter },
1487 };
1488
1489 static int
1490 dissect_dap_SetOfFilter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1491   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1492                                  SetOfFilter_set_of, hf_index, ett_dap_SetOfFilter);
1493
1494   return offset;
1495 }
1496
1497
1498 const value_string dap_Filter_vals[] = {
1499   {   0, "item" },
1500   {   1, "and" },
1501   {   2, "or" },
1502   {   3, "not" },
1503   { 0, NULL }
1504 };
1505
1506 static const ber_choice_t Filter_choice[] = {
1507   {   0, &hf_dap_filter_item     , BER_CLASS_CON, 0, 0, dissect_dap_FilterItem },
1508   {   1, &hf_dap_and             , BER_CLASS_CON, 1, 0, dissect_dap_SetOfFilter },
1509   {   2, &hf_dap_or              , BER_CLASS_CON, 2, 0, dissect_dap_SetOfFilter },
1510   {   3, &hf_dap_not             , BER_CLASS_CON, 3, 0, dissect_dap_Filter },
1511   { 0, NULL, 0, 0, 0, NULL }
1512 };
1513
1514 int
1515 dissect_dap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1516   offset = dissect_ber_choice(actx, tree, tvb, offset,
1517                                  Filter_choice, hf_index, ett_dap_Filter,
1518                                  NULL);
1519
1520   return offset;
1521 }
1522
1523
1524 static const ber_sequence_t SortKey_sequence[] = {
1525   { &hf_dap_type            , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1526   { &hf_dap_orderingRule    , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_OBJECT_IDENTIFIER },
1527   { NULL, 0, 0, 0, NULL }
1528 };
1529
1530 static int
1531 dissect_dap_SortKey(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1532   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1533                                    SortKey_sequence, hf_index, ett_dap_SortKey);
1534
1535   return offset;
1536 }
1537
1538
1539 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_SortKey_sequence_of[1] = {
1540   { &hf_dap_sortKeys_item   , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_SortKey },
1541 };
1542
1543 static int
1544 dissect_dap_SEQUENCE_SIZE_1_MAX_OF_SortKey(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1545   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1546                                       SEQUENCE_SIZE_1_MAX_OF_SortKey_sequence_of, hf_index, ett_dap_SEQUENCE_SIZE_1_MAX_OF_SortKey);
1547
1548   return offset;
1549 }
1550
1551
1552 static const ber_sequence_t T_newRequest_sequence[] = {
1553   { &hf_dap_pageSize        , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_dap_INTEGER },
1554   { &hf_dap_sortKeys        , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_SortKey },
1555   { &hf_dap_reverse         , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
1556   { &hf_dap_unmerged        , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
1557   { NULL, 0, 0, 0, NULL }
1558 };
1559
1560 static int
1561 dissect_dap_T_newRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1562   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1563                                    T_newRequest_sequence, hf_index, ett_dap_T_newRequest);
1564
1565   return offset;
1566 }
1567
1568
1569
1570 static int
1571 dissect_dap_T_pagedResultsQueryReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1572         tvbuff_t *out_tvb;
1573         int     i;
1574         int     len;
1575
1576           offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1577                                        &out_tvb);
1578
1579
1580         if(out_tvb) {
1581                 len = tvb_length(out_tvb);
1582                 /* now see if we can add a string representation */
1583                 for(i=0; i<len; i++)
1584                         if(!g_ascii_isprint(tvb_get_guint8(out_tvb, i)))
1585                                 break;
1586         
1587                 if(i == len) {
1588                         if(actx->created_item) {
1589
1590                                 proto_item_append_text(actx->created_item," (");
1591                                 for(i=0; i<len; i++)
1592                                         proto_item_append_text(actx->created_item,"%c",tvb_get_guint8(out_tvb,i));
1593                                 proto_item_append_text(actx->created_item,")");
1594                         }
1595                 }
1596         }
1597         
1598
1599   return offset;
1600 }
1601
1602
1603 static const value_string dap_PagedResultsRequest_vals[] = {
1604   {   0, "newRequest" },
1605   {   1, "queryReference" },
1606   { 0, NULL }
1607 };
1608
1609 static const ber_choice_t PagedResultsRequest_choice[] = {
1610   {   0, &hf_dap_newRequest      , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_newRequest },
1611   {   1, &hf_dap_pagedResultsQueryReference, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_T_pagedResultsQueryReference },
1612   { 0, NULL, 0, 0, 0, NULL }
1613 };
1614
1615 static int
1616 dissect_dap_PagedResultsRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1617   offset = dissect_ber_choice(actx, tree, tvb, offset,
1618                                  PagedResultsRequest_choice, hf_index, ett_dap_PagedResultsRequest,
1619                                  NULL);
1620
1621   return offset;
1622 }
1623
1624
1625
1626 static int
1627 dissect_dap_UTCTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1628   offset = dissect_ber_UTCTime(implicit_tag, actx, tree, tvb, offset, hf_index);
1629
1630   return offset;
1631 }
1632
1633
1634
1635 static int
1636 dissect_dap_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1637   offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
1638
1639   return offset;
1640 }
1641
1642
1643 static const value_string dap_Time_vals[] = {
1644   {   0, "utcTime" },
1645   {   1, "generalizedTime" },
1646   { 0, NULL }
1647 };
1648
1649 static const ber_choice_t Time_choice[] = {
1650   {   0, &hf_dap_utcTime         , BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_dap_UTCTime },
1651   {   1, &hf_dap_generalizedTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_dap_GeneralizedTime },
1652   { 0, NULL, 0, 0, 0, NULL }
1653 };
1654
1655 static int
1656 dissect_dap_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1657   offset = dissect_ber_choice(actx, tree, tvb, offset,
1658                                  Time_choice, hf_index, ett_dap_Time,
1659                                  NULL);
1660
1661   return offset;
1662 }
1663
1664
1665
1666 static int
1667 dissect_dap_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1668   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1669                                     NULL, hf_index, -1,
1670                                     NULL);
1671
1672   return offset;
1673 }
1674
1675
1676 static const value_string dap_ProtectionRequest_vals[] = {
1677   {   0, "none" },
1678   {   1, "signed" },
1679   {   2, "encrypted" },
1680   {   3, "signed-encrypted" },
1681   { 0, NULL }
1682 };
1683
1684
1685 static int
1686 dissect_dap_ProtectionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1687   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1688                                                 NULL);
1689
1690   return offset;
1691 }
1692
1693
1694 static const value_string dap_ErrorProtectionRequest_vals[] = {
1695   {   0, "none" },
1696   {   1, "signed" },
1697   {   2, "encrypted" },
1698   {   3, "signed-encrypted" },
1699   { 0, NULL }
1700 };
1701
1702
1703 static int
1704 dissect_dap_ErrorProtectionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1705   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1706                                                 NULL);
1707
1708   return offset;
1709 }
1710
1711
1712 static const ber_sequence_t SecurityParameters_set[] = {
1713   { &hf_dap_certification_path, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509af_CertificationPath },
1714   { &hf_dap_distinguished_name, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
1715   { &hf_dap_time            , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_Time },
1716   { &hf_dap_random          , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
1717   { &hf_dap_target          , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dap_ProtectionRequest },
1718   { &hf_dap_response        , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
1719   { &hf_dap_operationCode   , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_ros_Code },
1720   { &hf_dap_attributeCertificationPath, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_x509af_AttributeCertificationPath },
1721   { &hf_dap_errorProtection , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dap_ErrorProtectionRequest },
1722   { &hf_dap_errorCode       , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_ros_Code },
1723   { NULL, 0, 0, 0, NULL }
1724 };
1725
1726 int
1727 dissect_dap_SecurityParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1728   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1729                               SecurityParameters_set, hf_index, ett_dap_SecurityParameters);
1730
1731   return offset;
1732 }
1733
1734
1735 static const value_string dap_T_time1_vals[] = {
1736   {   0, "utc" },
1737   {   1, "gt" },
1738   { 0, NULL }
1739 };
1740
1741 static const ber_choice_t T_time1_choice[] = {
1742   {   0, &hf_dap_utc             , BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_dap_UTCTime },
1743   {   1, &hf_dap_gt              , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_dap_GeneralizedTime },
1744   { 0, NULL, 0, 0, 0, NULL }
1745 };
1746
1747 static int
1748 dissect_dap_T_time1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1749   offset = dissect_ber_choice(actx, tree, tvb, offset,
1750                                  T_time1_choice, hf_index, ett_dap_T_time1,
1751                                  NULL);
1752
1753   return offset;
1754 }
1755
1756
1757 static const value_string dap_T_time2_vals[] = {
1758   {   0, "utc" },
1759   {   1, "gt" },
1760   { 0, NULL }
1761 };
1762
1763 static const ber_choice_t T_time2_choice[] = {
1764   {   0, &hf_dap_utc             , BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_dap_UTCTime },
1765   {   1, &hf_dap_gt              , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_dap_GeneralizedTime },
1766   { 0, NULL, 0, 0, 0, NULL }
1767 };
1768
1769 static int
1770 dissect_dap_T_time2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1771   offset = dissect_ber_choice(actx, tree, tvb, offset,
1772                                  T_time2_choice, hf_index, ett_dap_T_time2,
1773                                  NULL);
1774
1775   return offset;
1776 }
1777
1778
1779 static const ber_sequence_t T_validity_set[] = {
1780   { &hf_dap_time1           , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_dap_T_time1 },
1781   { &hf_dap_time2           , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_T_time2 },
1782   { &hf_dap_random1         , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
1783   { &hf_dap_random2         , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
1784   { NULL, 0, 0, 0, NULL }
1785 };
1786
1787 static int
1788 dissect_dap_T_validity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1789   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1790                               T_validity_set, hf_index, ett_dap_T_validity);
1791
1792   return offset;
1793 }
1794
1795
1796
1797 static int
1798 dissect_dap_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1799   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1800                                        NULL);
1801
1802   return offset;
1803 }
1804
1805
1806 static const ber_sequence_t T_protected_sequence[] = {
1807   { &hf_dap_protectedPassword, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_OCTET_STRING },
1808   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1809   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
1810   { NULL, 0, 0, 0, NULL }
1811 };
1812
1813 static int
1814 dissect_dap_T_protected(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1815   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1816                                    T_protected_sequence, hf_index, ett_dap_T_protected);
1817
1818   return offset;
1819 }
1820
1821
1822 static const value_string dap_T_password_vals[] = {
1823   {   0, "unprotected" },
1824   {   1, "protected" },
1825   { 0, NULL }
1826 };
1827
1828 static const ber_choice_t T_password_choice[] = {
1829   {   0, &hf_dap_unprotected     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_OCTET_STRING },
1830   {   1, &hf_dap_protected       , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_protected },
1831   { 0, NULL, 0, 0, 0, NULL }
1832 };
1833
1834 static int
1835 dissect_dap_T_password(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1836   offset = dissect_ber_choice(actx, tree, tvb, offset,
1837                                  T_password_choice, hf_index, ett_dap_T_password,
1838                                  NULL);
1839
1840   return offset;
1841 }
1842
1843
1844 static const ber_sequence_t SimpleCredentials_sequence[] = {
1845   { &hf_dap_distinguished_name, BER_CLASS_CON, 0, 0, dissect_x509if_DistinguishedName },
1846   { &hf_dap_validity        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_T_validity },
1847   { &hf_dap_password        , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_T_password },
1848   { NULL, 0, 0, 0, NULL }
1849 };
1850
1851 static int
1852 dissect_dap_SimpleCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1853
1854           offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1855                                    SimpleCredentials_sequence, hf_index, ett_dap_SimpleCredentials);
1856
1857
1858         col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", x509if_get_last_dn());
1859
1860
1861         
1862         
1863
1864   return offset;
1865 }
1866
1867
1868 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_AlgorithmIdentifier_sequence_of[1] = {
1869   { &hf_dap_bindIntAlgorithm_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1870 };
1871
1872 static int
1873 dissect_dap_SEQUENCE_SIZE_1_MAX_OF_AlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1874   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1875                                       SEQUENCE_SIZE_1_MAX_OF_AlgorithmIdentifier_sequence_of, hf_index, ett_dap_SEQUENCE_SIZE_1_MAX_OF_AlgorithmIdentifier);
1876
1877   return offset;
1878 }
1879
1880
1881
1882 static int
1883 dissect_dap_BindKeyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1884   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1885                                     NULL, hf_index, -1,
1886                                     NULL);
1887
1888   return offset;
1889 }
1890
1891
1892 static const ber_sequence_t TokenData_sequence[] = {
1893   { &hf_dap_algorithm       , BER_CLASS_CON, 0, 0, dissect_x509af_AlgorithmIdentifier },
1894   { &hf_dap_distinguished_name, BER_CLASS_CON, 1, 0, dissect_x509if_DistinguishedName },
1895   { &hf_dap_utctime         , BER_CLASS_CON, 2, 0, dissect_dap_UTCTime },
1896   { &hf_dap_random          , BER_CLASS_CON, 3, 0, dissect_dap_BIT_STRING },
1897   { &hf_dap_response        , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
1898   { &hf_dap_bindIntAlgorithm, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_AlgorithmIdentifier },
1899   { &hf_dap_bindIntKeyInfo  , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dap_BindKeyInfo },
1900   { &hf_dap_bindConfAlgorithm, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_AlgorithmIdentifier },
1901   { &hf_dap_bindConfKeyInfo , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dap_BindKeyInfo },
1902   { NULL, 0, 0, 0, NULL }
1903 };
1904
1905 static int
1906 dissect_dap_TokenData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1907   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1908                                    TokenData_sequence, hf_index, ett_dap_TokenData);
1909
1910   return offset;
1911 }
1912
1913
1914 static const ber_sequence_t Token_sequence[] = {
1915   { &hf_dap_token_data      , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_TokenData },
1916   { &hf_dap_algorithm_identifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1917   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
1918   { NULL, 0, 0, 0, NULL }
1919 };
1920
1921 static int
1922 dissect_dap_Token(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1923   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1924                                    Token_sequence, hf_index, ett_dap_Token);
1925
1926   return offset;
1927 }
1928
1929
1930 static const ber_sequence_t StrongCredentials_set[] = {
1931   { &hf_dap_certification_path, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509af_CertificationPath },
1932   { &hf_dap_bind_token      , BER_CLASS_CON, 1, 0, dissect_dap_Token },
1933   { &hf_dap_distinguished_name, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
1934   { &hf_dap_attributeCertificationPath, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_x509af_AttributeCertificationPath },
1935   { NULL, 0, 0, 0, NULL }
1936 };
1937
1938 static int
1939 dissect_dap_StrongCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1940   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1941                               StrongCredentials_set, hf_index, ett_dap_StrongCredentials);
1942
1943   return offset;
1944 }
1945
1946
1947
1948 static int
1949 dissect_dap_EXTERNAL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1950   offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
1951
1952   return offset;
1953 }
1954
1955
1956
1957 static int
1958 dissect_dap_T_req(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1959         /* XXX: not yet implemented */
1960
1961
1962   return offset;
1963 }
1964
1965
1966
1967 static int
1968 dissect_dap_T_rep(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1969         /* XXX: not yet implemented */
1970
1971
1972   return offset;
1973 }
1974
1975
1976 static const value_string dap_SpkmCredentials_vals[] = {
1977   {   0, "req" },
1978   {   1, "rep" },
1979   { 0, NULL }
1980 };
1981
1982 static const ber_choice_t SpkmCredentials_choice[] = {
1983   {   0, &hf_dap_req             , BER_CLASS_CON, 0, 0, dissect_dap_T_req },
1984   {   1, &hf_dap_rep             , BER_CLASS_CON, 1, 0, dissect_dap_T_rep },
1985   { 0, NULL, 0, 0, 0, NULL }
1986 };
1987
1988 static int
1989 dissect_dap_SpkmCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1990   offset = dissect_ber_choice(actx, tree, tvb, offset,
1991                                  SpkmCredentials_choice, hf_index, ett_dap_SpkmCredentials,
1992                                  NULL);
1993
1994   return offset;
1995 }
1996
1997
1998 static const ber_sequence_t SaslCredentials_sequence[] = {
1999   { &hf_dap_mechanism       , BER_CLASS_CON, 0, 0, dissect_x509sat_DirectoryString },
2000   { &hf_dap_credentials_01  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_OCTET_STRING },
2001   { &hf_dap_saslAbort       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2002   { NULL, 0, 0, 0, NULL }
2003 };
2004
2005 static int
2006 dissect_dap_SaslCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2007   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2008                                    SaslCredentials_sequence, hf_index, ett_dap_SaslCredentials);
2009
2010   return offset;
2011 }
2012
2013
2014 static const value_string dap_Credentials_vals[] = {
2015   {   0, "simple" },
2016   {   1, "strong" },
2017   {   2, "externalProcedure" },
2018   {   3, "spkm" },
2019   {   4, "sasl" },
2020   { 0, NULL }
2021 };
2022
2023 static const ber_choice_t Credentials_choice[] = {
2024   {   0, &hf_dap_simple          , BER_CLASS_CON, 0, 0, dissect_dap_SimpleCredentials },
2025   {   1, &hf_dap_strong          , BER_CLASS_CON, 1, 0, dissect_dap_StrongCredentials },
2026   {   2, &hf_dap_externalProcedure, BER_CLASS_CON, 2, 0, dissect_dap_EXTERNAL },
2027   {   3, &hf_dap_spkm            , BER_CLASS_CON, 3, 0, dissect_dap_SpkmCredentials },
2028   {   4, &hf_dap_sasl            , BER_CLASS_CON, 4, 0, dissect_dap_SaslCredentials },
2029   { 0, NULL, 0, 0, 0, NULL }
2030 };
2031
2032 static int
2033 dissect_dap_Credentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2034   offset = dissect_ber_choice(actx, tree, tvb, offset,
2035                                  Credentials_choice, hf_index, ett_dap_Credentials,
2036                                  NULL);
2037
2038   return offset;
2039 }
2040
2041
2042 static const asn_namedbit Versions_bits[] = {
2043   {  0, &hf_dap_Versions_v1, -1, -1, "v1", NULL },
2044   {  1, &hf_dap_Versions_v2, -1, -1, "v2", NULL },
2045   { 0, NULL, 0, 0, NULL, NULL }
2046 };
2047
2048 static int
2049 dissect_dap_Versions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2050   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2051                                     Versions_bits, hf_index, ett_dap_Versions,
2052                                     NULL);
2053
2054   return offset;
2055 }
2056
2057
2058 static const ber_sequence_t DirectoryBindArgument_set[] = {
2059   { &hf_dap_credentials     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_Credentials },
2060   { &hf_dap_versions        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_Versions },
2061   { NULL, 0, 0, 0, NULL }
2062 };
2063
2064 int
2065 dissect_dap_DirectoryBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2066
2067         guint32 len;
2068
2069         /* check and see if this is an empty set */
2070         dissect_ber_length(actx->pinfo, tree, tvb, offset+1, &len, NULL);
2071
2072         if(len == 0) {
2073                 /* its an empty set - i.e anonymous  (assuming version is DEFAULTed) */
2074                 proto_tree_add_text(tree, tvb, offset, -1,"Anonymous");
2075
2076                 col_append_str(actx->pinfo->cinfo, COL_INFO, " anonymous");
2077
2078         }
2079         /* do the default thing */
2080
2081           offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2082                               DirectoryBindArgument_set, hf_index, ett_dap_DirectoryBindArgument);
2083         
2084
2085
2086   return offset;
2087 }
2088
2089
2090
2091 static int
2092 dissect_dap_DirectoryBindResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2093   offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
2094
2095   return offset;
2096 }
2097
2098
2099 static const value_string dap_ServiceProblem_vals[] = {
2100   {   1, "busy" },
2101   {   2, "unavailable" },
2102   {   3, "unwillingToPerform" },
2103   {   4, "chainingRequired" },
2104   {   5, "unableToProceed" },
2105   {   6, "invalidReference" },
2106   {   7, "timeLimitExceeded" },
2107   {   8, "administrativeLimitExceeded" },
2108   {   9, "loopDetected" },
2109   {  10, "unavailableCriticalExtension" },
2110   {  11, "outOfScope" },
2111   {  12, "ditError" },
2112   {  13, "invalidQueryReference" },
2113   {  14, "requestedServiceNotAvailable" },
2114   {  15, "unsupportedMatchingUse" },
2115   {  16, "ambiguousKeyAttributes" },
2116   {  17, "saslBindInProgress" },
2117   { 0, NULL }
2118 };
2119
2120
2121 static int
2122 dissect_dap_ServiceProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2123   guint32 problem;
2124
2125     offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2126                                                 &problem);
2127
2128
2129   col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, dap_ServiceProblem_vals, "ServiceProblem(%d)"));
2130
2131
2132   return offset;
2133 }
2134
2135
2136 const value_string dap_SecurityProblem_vals[] = {
2137   {   1, "inappropriateAuthentication" },
2138   {   2, "invalidCredentials" },
2139   {   3, "insufficientAccessRights" },
2140   {   4, "invalidSignature" },
2141   {   5, "protectionRequired" },
2142   {   6, "noInformation" },
2143   {   7, "blockedCredentials" },
2144   {   8, "invalidQOPMatch" },
2145   {   9, "spkmError" },
2146   { 0, NULL }
2147 };
2148
2149
2150 int
2151 dissect_dap_SecurityProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2152   guint32 problem;
2153
2154     offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2155                                                 &problem);
2156
2157
2158   col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, dap_SecurityProblem_vals, "SecurityProblem(%d)"));
2159
2160
2161   return offset;
2162 }
2163
2164
2165 static const value_string dap_T_error_vals[] = {
2166   {   1, "serviceError" },
2167   {   2, "securityError" },
2168   { 0, NULL }
2169 };
2170
2171 static const ber_choice_t T_error_choice[] = {
2172   {   1, &hf_dap_serviceProblem  , BER_CLASS_CON, 1, 0, dissect_dap_ServiceProblem },
2173   {   2, &hf_dap_securityProblem , BER_CLASS_CON, 2, 0, dissect_dap_SecurityProblem },
2174   { 0, NULL, 0, 0, 0, NULL }
2175 };
2176
2177 static int
2178 dissect_dap_T_error(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2179   offset = dissect_ber_choice(actx, tree, tvb, offset,
2180                                  T_error_choice, hf_index, ett_dap_T_error,
2181                                  NULL);
2182
2183   return offset;
2184 }
2185
2186
2187 static const ber_sequence_t DirectoryBindErrorData_set[] = {
2188   { &hf_dap_versions        , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_dap_Versions },
2189   { &hf_dap_error           , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_T_error },
2190   { &hf_dap_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
2191   { NULL, 0, 0, 0, NULL }
2192 };
2193
2194 static int
2195 dissect_dap_DirectoryBindErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2196   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2197                               DirectoryBindErrorData_set, hf_index, ett_dap_DirectoryBindErrorData);
2198
2199   return offset;
2200 }
2201
2202
2203 static const ber_sequence_t T_signedDirectoryBindError_sequence[] = {
2204   { &hf_dap_directoryBindError, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_DirectoryBindErrorData },
2205   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2206   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
2207   { NULL, 0, 0, 0, NULL }
2208 };
2209
2210 static int
2211 dissect_dap_T_signedDirectoryBindError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2212   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2213                                    T_signedDirectoryBindError_sequence, hf_index, ett_dap_T_signedDirectoryBindError);
2214
2215   return offset;
2216 }
2217
2218
2219 const value_string dap_DirectoryBindError_vals[] = {
2220   {   0, "unsignedDirectoryBindError" },
2221   {   1, "signedDirectoryBindError" },
2222   { 0, NULL }
2223 };
2224
2225 static const ber_choice_t DirectoryBindError_choice[] = {
2226   {   0, &hf_dap_unsignedDirectoryBindError, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_DirectoryBindErrorData },
2227   {   1, &hf_dap_signedDirectoryBindError, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedDirectoryBindError },
2228   { 0, NULL, 0, 0, 0, NULL }
2229 };
2230
2231 int
2232 dissect_dap_DirectoryBindError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2233   offset = dissect_ber_choice(actx, tree, tvb, offset,
2234                                  DirectoryBindError_choice, hf_index, ett_dap_DirectoryBindError,
2235                                  NULL);
2236
2237   return offset;
2238 }
2239
2240
2241 static const ber_sequence_t ReadArgumentData_set[] = {
2242   { &hf_dap_object          , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
2243   { &hf_dap_selection       , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_EntryInformationSelection },
2244   { &hf_dap_modifyRightsRequest, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2245   { &hf_dap_serviceControls , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_ServiceControls },
2246   { &hf_dap_securityParameters, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
2247   { &hf_dap_requestor       , BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
2248   { &hf_dap_operationProgress, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
2249   { &hf_dap_aliasedRDNs     , BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
2250   { &hf_dap_criticalExtensions, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
2251   { &hf_dap_referenceType   , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
2252   { &hf_dap_entryOnly       , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2253   { &hf_dap_exclusions      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
2254   { &hf_dap_nameResolveOnMaster, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2255   { &hf_dap_operationContexts, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_ContextSelection },
2256   { &hf_dap_familyGrouping  , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_dap_FamilyGrouping },
2257   { NULL, 0, 0, 0, NULL }
2258 };
2259
2260 static int
2261 dissect_dap_ReadArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2262   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2263                               ReadArgumentData_set, hf_index, ett_dap_ReadArgumentData);
2264
2265   return offset;
2266 }
2267
2268
2269 static const ber_sequence_t T_signedReadArgument_sequence[] = {
2270   { &hf_dap_readArgument    , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_ReadArgumentData },
2271   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2272   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
2273   { NULL, 0, 0, 0, NULL }
2274 };
2275
2276 static int
2277 dissect_dap_T_signedReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2278   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2279                                    T_signedReadArgument_sequence, hf_index, ett_dap_T_signedReadArgument);
2280
2281   return offset;
2282 }
2283
2284
2285 const value_string dap_ReadArgument_vals[] = {
2286   {   0, "unsignedReadArgument" },
2287   {   1, "signedReadArgument" },
2288   { 0, NULL }
2289 };
2290
2291 static const ber_choice_t ReadArgument_choice[] = {
2292   {   0, &hf_dap_unsignedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_ReadArgumentData },
2293   {   1, &hf_dap_signedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedReadArgument },
2294   { 0, NULL, 0, 0, 0, NULL }
2295 };
2296
2297 int
2298 dissect_dap_ReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2299   offset = dissect_ber_choice(actx, tree, tvb, offset,
2300                                  ReadArgument_choice, hf_index, ett_dap_ReadArgument,
2301                                  NULL);
2302
2303   return offset;
2304 }
2305
2306
2307 static const value_string dap_T_item_vals[] = {
2308   {   0, "entry" },
2309   {   1, "attribute" },
2310   {   2, "value" },
2311   { 0, NULL }
2312 };
2313
2314 static const ber_choice_t T_item_choice[] = {
2315   {   0, &hf_dap_item_entry      , BER_CLASS_CON, 0, 0, dissect_dap_NULL },
2316   {   1, &hf_dap_attribute_type  , BER_CLASS_CON, 1, 0, dissect_x509if_AttributeType },
2317   {   2, &hf_dap_value_assertion , BER_CLASS_CON, 2, 0, dissect_x509if_AttributeValueAssertion },
2318   { 0, NULL, 0, 0, 0, NULL }
2319 };
2320
2321 static int
2322 dissect_dap_T_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2323   offset = dissect_ber_choice(actx, tree, tvb, offset,
2324                                  T_item_choice, hf_index, ett_dap_T_item,
2325                                  NULL);
2326
2327   return offset;
2328 }
2329
2330
2331 static const asn_namedbit T_permission_bits[] = {
2332   {  0, &hf_dap_T_permission_add, -1, -1, "add", NULL },
2333   {  1, &hf_dap_T_permission_remove, -1, -1, "remove", NULL },
2334   {  2, &hf_dap_T_permission_rename, -1, -1, "rename", NULL },
2335   {  3, &hf_dap_T_permission_move, -1, -1, "move", NULL },
2336   { 0, NULL, 0, 0, NULL, NULL }
2337 };
2338
2339 static int
2340 dissect_dap_T_permission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2341   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2342                                     T_permission_bits, hf_index, ett_dap_T_permission,
2343                                     NULL);
2344
2345   return offset;
2346 }
2347
2348
2349 static const ber_sequence_t ModifyRights_item_sequence[] = {
2350   { &hf_dap_item            , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_T_item },
2351   { &hf_dap_permission      , BER_CLASS_CON, 3, 0, dissect_dap_T_permission },
2352   { NULL, 0, 0, 0, NULL }
2353 };
2354
2355 static int
2356 dissect_dap_ModifyRights_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2357   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2358                                    ModifyRights_item_sequence, hf_index, ett_dap_ModifyRights_item);
2359
2360   return offset;
2361 }
2362
2363
2364 static const ber_sequence_t ModifyRights_set_of[1] = {
2365   { &hf_dap_ModifyRights_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_ModifyRights_item },
2366 };
2367
2368 static int
2369 dissect_dap_ModifyRights(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2370   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2371                                  ModifyRights_set_of, hf_index, ett_dap_ModifyRights);
2372
2373   return offset;
2374 }
2375
2376
2377 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_Attribute_sequence_of[1] = {
2378   { &hf_dap_notification_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
2379 };
2380
2381 static int
2382 dissect_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2383   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2384                                       SEQUENCE_SIZE_1_MAX_OF_Attribute_sequence_of, hf_index, ett_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute);
2385
2386   return offset;
2387 }
2388
2389
2390 static const ber_sequence_t ReadResultData_set[] = {
2391   { &hf_dap_entry           , BER_CLASS_CON, 0, 0, dissect_dap_EntryInformation },
2392   { &hf_dap_modifyRights    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_ModifyRights },
2393   { &hf_dap_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
2394   { &hf_dap_performer       , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
2395   { &hf_dap_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2396   { &hf_dap_notification    , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute },
2397   { NULL, 0, 0, 0, NULL }
2398 };
2399
2400 static int
2401 dissect_dap_ReadResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2402   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2403                               ReadResultData_set, hf_index, ett_dap_ReadResultData);
2404
2405   return offset;
2406 }
2407
2408
2409 static const ber_sequence_t T_signedReadResult_sequence[] = {
2410   { &hf_dap_readResult      , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_ReadResultData },
2411   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2412   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
2413   { NULL, 0, 0, 0, NULL }
2414 };
2415
2416 static int
2417 dissect_dap_T_signedReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2418   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2419                                    T_signedReadResult_sequence, hf_index, ett_dap_T_signedReadResult);
2420
2421   return offset;
2422 }
2423
2424
2425 const value_string dap_ReadResult_vals[] = {
2426   {   0, "unsignedReadResult" },
2427   {   1, "signedReadResult" },
2428   { 0, NULL }
2429 };
2430
2431 static const ber_choice_t ReadResult_choice[] = {
2432   {   0, &hf_dap_unsignedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_ReadResultData },
2433   {   1, &hf_dap_signedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedReadResult },
2434   { 0, NULL, 0, 0, 0, NULL }
2435 };
2436
2437 int
2438 dissect_dap_ReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2439   offset = dissect_ber_choice(actx, tree, tvb, offset,
2440                                  ReadResult_choice, hf_index, ett_dap_ReadResult,
2441                                  NULL);
2442
2443   return offset;
2444 }
2445
2446
2447 static const ber_sequence_t CompareArgumentData_set[] = {
2448   { &hf_dap_object          , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
2449   { &hf_dap_purported       , BER_CLASS_CON, 1, 0, dissect_x509if_AttributeValueAssertion },
2450   { &hf_dap_serviceControls , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_ServiceControls },
2451   { &hf_dap_securityParameters, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
2452   { &hf_dap_requestor       , BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
2453   { &hf_dap_operationProgress, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
2454   { &hf_dap_aliasedRDNs     , BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
2455   { &hf_dap_criticalExtensions, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
2456   { &hf_dap_referenceType   , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
2457   { &hf_dap_entryOnly       , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2458   { &hf_dap_exclusions      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
2459   { &hf_dap_nameResolveOnMaster, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2460   { &hf_dap_operationContexts, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_ContextSelection },
2461   { &hf_dap_familyGrouping  , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_dap_FamilyGrouping },
2462   { NULL, 0, 0, 0, NULL }
2463 };
2464
2465 static int
2466 dissect_dap_CompareArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2467   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2468                               CompareArgumentData_set, hf_index, ett_dap_CompareArgumentData);
2469
2470   return offset;
2471 }
2472
2473
2474 static const ber_sequence_t T_signedCompareArgument_sequence[] = {
2475   { &hf_dap_compareArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_CompareArgumentData },
2476   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2477   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
2478   { NULL, 0, 0, 0, NULL }
2479 };
2480
2481 static int
2482 dissect_dap_T_signedCompareArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2483   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2484                                    T_signedCompareArgument_sequence, hf_index, ett_dap_T_signedCompareArgument);
2485
2486   return offset;
2487 }
2488
2489
2490 const value_string dap_CompareArgument_vals[] = {
2491   {   0, "unsignedCompareArgument" },
2492   {   1, "signedCompareArgument" },
2493   { 0, NULL }
2494 };
2495
2496 static const ber_choice_t CompareArgument_choice[] = {
2497   {   0, &hf_dap_unsignedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_CompareArgumentData },
2498   {   1, &hf_dap_signedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedCompareArgument },
2499   { 0, NULL, 0, 0, 0, NULL }
2500 };
2501
2502 int
2503 dissect_dap_CompareArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2504   offset = dissect_ber_choice(actx, tree, tvb, offset,
2505                                  CompareArgument_choice, hf_index, ett_dap_CompareArgument,
2506                                  NULL);
2507
2508   return offset;
2509 }
2510
2511
2512 static const ber_sequence_t CompareResultData_set[] = {
2513   { &hf_dap_name            , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
2514   { &hf_dap_matched         , BER_CLASS_CON, 0, 0, dissect_dap_BOOLEAN },
2515   { &hf_dap_fromEntry       , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2516   { &hf_dap_matchedSubtype  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_AttributeType },
2517   { &hf_dap_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
2518   { &hf_dap_performer       , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
2519   { &hf_dap_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2520   { &hf_dap_notification    , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute },
2521   { NULL, 0, 0, 0, NULL }
2522 };
2523
2524 static int
2525 dissect_dap_CompareResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2526   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2527                               CompareResultData_set, hf_index, ett_dap_CompareResultData);
2528
2529   return offset;
2530 }
2531
2532
2533 static const ber_sequence_t T_signedCompareResult_sequence[] = {
2534   { &hf_dap_compareResult   , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_CompareResultData },
2535   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2536   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
2537   { NULL, 0, 0, 0, NULL }
2538 };
2539
2540 static int
2541 dissect_dap_T_signedCompareResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2542   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2543                                    T_signedCompareResult_sequence, hf_index, ett_dap_T_signedCompareResult);
2544
2545   return offset;
2546 }
2547
2548
2549 const value_string dap_CompareResult_vals[] = {
2550   {   0, "unsignedCompareResult" },
2551   {   1, "signedCompareResult" },
2552   { 0, NULL }
2553 };
2554
2555 static const ber_choice_t CompareResult_choice[] = {
2556   {   0, &hf_dap_unsignedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_CompareResultData },
2557   {   1, &hf_dap_signedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedCompareResult },
2558   { 0, NULL, 0, 0, 0, NULL }
2559 };
2560
2561 int
2562 dissect_dap_CompareResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2563   offset = dissect_ber_choice(actx, tree, tvb, offset,
2564                                  CompareResult_choice, hf_index, ett_dap_CompareResult,
2565                                  NULL);
2566
2567   return offset;
2568 }
2569
2570
2571 static const ber_sequence_t AbandonArgumentData_sequence[] = {
2572   { &hf_dap_invokeID        , BER_CLASS_CON, 0, 0, dissect_ros_InvokeId },
2573   { NULL, 0, 0, 0, NULL }
2574 };
2575
2576 static int
2577 dissect_dap_AbandonArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2578   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2579                                    AbandonArgumentData_sequence, hf_index, ett_dap_AbandonArgumentData);
2580
2581   return offset;
2582 }
2583
2584
2585 static const ber_sequence_t T_signedAbandonArgument_sequence[] = {
2586   { &hf_dap_abandonArgument , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_AbandonArgumentData },
2587   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2588   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
2589   { NULL, 0, 0, 0, NULL }
2590 };
2591
2592 static int
2593 dissect_dap_T_signedAbandonArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2594   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2595                                    T_signedAbandonArgument_sequence, hf_index, ett_dap_T_signedAbandonArgument);
2596
2597   return offset;
2598 }
2599
2600
2601 const value_string dap_AbandonArgument_vals[] = {
2602   {   0, "unsignedAbandonArgument" },
2603   {   1, "signedAbandonArgument" },
2604   { 0, NULL }
2605 };
2606
2607 static const ber_choice_t AbandonArgument_choice[] = {
2608   {   0, &hf_dap_unsignedAbandonArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_AbandonArgumentData },
2609   {   1, &hf_dap_signedAbandonArgument, BER_CLASS_CON, 0, 0, dissect_dap_T_signedAbandonArgument },
2610   { 0, NULL, 0, 0, 0, NULL }
2611 };
2612
2613 int
2614 dissect_dap_AbandonArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2615   offset = dissect_ber_choice(actx, tree, tvb, offset,
2616                                  AbandonArgument_choice, hf_index, ett_dap_AbandonArgument,
2617                                  NULL);
2618
2619   return offset;
2620 }
2621
2622
2623 static const ber_sequence_t AbandonResultData_sequence[] = {
2624   { &hf_dap_invokeID        , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_ros_InvokeId },
2625   { &hf_dap_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
2626   { &hf_dap_performer       , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
2627   { &hf_dap_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2628   { &hf_dap_notification    , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute },
2629   { NULL, 0, 0, 0, NULL }
2630 };
2631
2632 static int
2633 dissect_dap_AbandonResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2634   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2635                                    AbandonResultData_sequence, hf_index, ett_dap_AbandonResultData);
2636
2637   return offset;
2638 }
2639
2640
2641 static const ber_sequence_t T_signedAbandonResult_sequence[] = {
2642   { &hf_dap_abandonResult   , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_AbandonResultData },
2643   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2644   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
2645   { NULL, 0, 0, 0, NULL }
2646 };
2647
2648 static int
2649 dissect_dap_T_signedAbandonResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2650   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2651                                    T_signedAbandonResult_sequence, hf_index, ett_dap_T_signedAbandonResult);
2652
2653   return offset;
2654 }
2655
2656
2657 static const value_string dap_AbandonInformation_vals[] = {
2658   {   0, "unsignedAbandonResult" },
2659   {   1, "signedAbandonResult" },
2660   { 0, NULL }
2661 };
2662
2663 static const ber_choice_t AbandonInformation_choice[] = {
2664   {   0, &hf_dap_unsignedAbandonResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_AbandonResultData },
2665   {   1, &hf_dap_signedAbandonResult, BER_CLASS_CON, 0, 0, dissect_dap_T_signedAbandonResult },
2666   { 0, NULL, 0, 0, 0, NULL }
2667 };
2668
2669 static int
2670 dissect_dap_AbandonInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2671   offset = dissect_ber_choice(actx, tree, tvb, offset,
2672                                  AbandonInformation_choice, hf_index, ett_dap_AbandonInformation,
2673                                  NULL);
2674
2675   return offset;
2676 }
2677
2678
2679 const value_string dap_AbandonResult_vals[] = {
2680   {   0, "null" },
2681   {   1, "information" },
2682   { 0, NULL }
2683 };
2684
2685 static const ber_choice_t AbandonResult_choice[] = {
2686   {   0, &hf_dap_null            , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_dap_NULL },
2687   {   1, &hf_dap_abandon_information, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_dap_AbandonInformation },
2688   { 0, NULL, 0, 0, 0, NULL }
2689 };
2690
2691 int
2692 dissect_dap_AbandonResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2693   offset = dissect_ber_choice(actx, tree, tvb, offset,
2694                                  AbandonResult_choice, hf_index, ett_dap_AbandonResult,
2695                                  NULL);
2696
2697   return offset;
2698 }
2699
2700
2701 static const ber_sequence_t ListArgumentData_set[] = {
2702   { &hf_dap_object          , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
2703   { &hf_dap_pagedResults    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_PagedResultsRequest },
2704   { &hf_dap_listFamily      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2705   { &hf_dap_serviceControls , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_ServiceControls },
2706   { &hf_dap_securityParameters, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
2707   { &hf_dap_requestor       , BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
2708   { &hf_dap_operationProgress, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
2709   { &hf_dap_aliasedRDNs     , BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
2710   { &hf_dap_criticalExtensions, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
2711   { &hf_dap_referenceType   , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
2712   { &hf_dap_entryOnly       , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2713   { &hf_dap_exclusions      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
2714   { &hf_dap_nameResolveOnMaster, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2715   { &hf_dap_operationContexts, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_ContextSelection },
2716   { &hf_dap_familyGrouping  , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_dap_FamilyGrouping },
2717   { NULL, 0, 0, 0, NULL }
2718 };
2719
2720 static int
2721 dissect_dap_ListArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2722   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2723                               ListArgumentData_set, hf_index, ett_dap_ListArgumentData);
2724
2725   return offset;
2726 }
2727
2728
2729 static const ber_sequence_t T_signedListArgument_sequence[] = {
2730   { &hf_dap_listArgument    , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_ListArgumentData },
2731   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2732   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
2733   { NULL, 0, 0, 0, NULL }
2734 };
2735
2736 static int
2737 dissect_dap_T_signedListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2738   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2739                                    T_signedListArgument_sequence, hf_index, ett_dap_T_signedListArgument);
2740
2741   return offset;
2742 }
2743
2744
2745 const value_string dap_ListArgument_vals[] = {
2746   {   0, "unsignedListArgument" },
2747   {   1, "signedListArgument" },
2748   { 0, NULL }
2749 };
2750
2751 static const ber_choice_t ListArgument_choice[] = {
2752   {   0, &hf_dap_unsignedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_ListArgumentData },
2753   {   1, &hf_dap_signedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedListArgument },
2754   { 0, NULL, 0, 0, 0, NULL }
2755 };
2756
2757 int
2758 dissect_dap_ListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2759   offset = dissect_ber_choice(actx, tree, tvb, offset,
2760                                  ListArgument_choice, hf_index, ett_dap_ListArgument,
2761                                  NULL);
2762
2763   return offset;
2764 }
2765
2766
2767 static const ber_sequence_t T_subordinates_item_sequence[] = {
2768   { &hf_dap_rdn             , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
2769   { &hf_dap_aliasEntry      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2770   { &hf_dap_fromEntry       , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2771   { NULL, 0, 0, 0, NULL }
2772 };
2773
2774 static int
2775 dissect_dap_T_subordinates_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2776   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2777                                    T_subordinates_item_sequence, hf_index, ett_dap_T_subordinates_item);
2778
2779   return offset;
2780 }
2781
2782
2783 static const ber_sequence_t T_subordinates_set_of[1] = {
2784   { &hf_dap_subordinates_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_subordinates_item },
2785 };
2786
2787 static int
2788 dissect_dap_T_subordinates(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2789   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2790                                  T_subordinates_set_of, hf_index, ett_dap_T_subordinates);
2791
2792   return offset;
2793 }
2794
2795
2796 static const value_string dap_LimitProblem_vals[] = {
2797   {   0, "timeLimitExceeded" },
2798   {   1, "sizeLimitExceeded" },
2799   {   2, "administrativeLimitExceeded" },
2800   { 0, NULL }
2801 };
2802
2803
2804 static int
2805 dissect_dap_LimitProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2806   guint32 problem;
2807
2808     offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2809                                                 &problem);
2810
2811
2812   col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, dap_LimitProblem_vals, "LimitProblem(%d)"));
2813
2814
2815   return offset;
2816 }
2817
2818
2819 static const ber_sequence_t SET_SIZE_1_MAX_OF_ContinuationReference_set_of[1] = {
2820   { &hf_dap_unexplored_item , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ContinuationReference },
2821 };
2822
2823 static int
2824 dissect_dap_SET_SIZE_1_MAX_OF_ContinuationReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2825   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2826                                  SET_SIZE_1_MAX_OF_ContinuationReference_set_of, hf_index, ett_dap_SET_SIZE_1_MAX_OF_ContinuationReference);
2827
2828   return offset;
2829 }
2830
2831
2832 static const ber_sequence_t T_unknownErrors_set_of[1] = {
2833   { &hf_dap_unknownErrors_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_dap_OBJECT_IDENTIFIER },
2834 };
2835
2836 static int
2837 dissect_dap_T_unknownErrors(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2838   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2839                                  T_unknownErrors_set_of, hf_index, ett_dap_T_unknownErrors);
2840
2841   return offset;
2842 }
2843
2844
2845 static const value_string dap_T_entryCount_vals[] = {
2846   {   7, "bestEstimate" },
2847   {   8, "lowEstimate" },
2848   {   9, "exact" },
2849   { 0, NULL }
2850 };
2851
2852 static const ber_choice_t T_entryCount_choice[] = {
2853   {   7, &hf_dap_bestEstimate    , BER_CLASS_CON, 7, 0, dissect_dap_INTEGER },
2854   {   8, &hf_dap_lowEstimate     , BER_CLASS_CON, 8, 0, dissect_dap_INTEGER },
2855   {   9, &hf_dap_exact           , BER_CLASS_CON, 9, 0, dissect_dap_INTEGER },
2856   { 0, NULL, 0, 0, 0, NULL }
2857 };
2858
2859 static int
2860 dissect_dap_T_entryCount(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2861   offset = dissect_ber_choice(actx, tree, tvb, offset,
2862                                  T_entryCount_choice, hf_index, ett_dap_T_entryCount,
2863                                  NULL);
2864
2865   return offset;
2866 }
2867
2868
2869 static const ber_sequence_t PartialOutcomeQualifier_set[] = {
2870   { &hf_dap_limitProblem    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_dap_LimitProblem },
2871   { &hf_dap_unexplored      , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_SET_SIZE_1_MAX_OF_ContinuationReference },
2872   { &hf_dap_unavailableCriticalExtensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2873   { &hf_dap_unknownErrors   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dap_T_unknownErrors },
2874   { &hf_dap_queryReference  , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dap_OCTET_STRING },
2875   { &hf_dap_overspecFilter  , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_Filter },
2876   { &hf_dap_notification    , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute },
2877   { &hf_dap_entryCount      , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_T_entryCount },
2878   { &hf_dap_streamedResult  , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2879   { NULL, 0, 0, 0, NULL }
2880 };
2881
2882 static int
2883 dissect_dap_PartialOutcomeQualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2884   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2885                               PartialOutcomeQualifier_set, hf_index, ett_dap_PartialOutcomeQualifier);
2886
2887   return offset;
2888 }
2889
2890
2891 static const ber_sequence_t T_listInfo_set[] = {
2892   { &hf_dap_name            , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
2893   { &hf_dap_subordinates    , BER_CLASS_CON, 1, 0, dissect_dap_T_subordinates },
2894   { &hf_dap_partialOutcomeQualifier, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_PartialOutcomeQualifier },
2895   { &hf_dap_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
2896   { &hf_dap_performer       , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
2897   { &hf_dap_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
2898   { &hf_dap_notification    , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute },
2899   { NULL, 0, 0, 0, NULL }
2900 };
2901
2902 static int
2903 dissect_dap_T_listInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2904   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2905                               T_listInfo_set, hf_index, ett_dap_T_listInfo);
2906
2907   return offset;
2908 }
2909
2910
2911 static const ber_sequence_t T_signedListResult_sequence[] = {
2912   { &hf_dap_listResult      , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_ListResultData },
2913   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2914   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
2915   { NULL, 0, 0, 0, NULL }
2916 };
2917
2918 static int
2919 dissect_dap_T_signedListResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2920   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2921                                    T_signedListResult_sequence, hf_index, ett_dap_T_signedListResult);
2922
2923   return offset;
2924 }
2925
2926
2927 const value_string dap_ListResult_vals[] = {
2928   {   0, "unsignedListResult" },
2929   {   1, "signedListResult" },
2930   { 0, NULL }
2931 };
2932
2933 static const ber_choice_t ListResult_choice[] = {
2934   {   0, &hf_dap_unsignedListResult, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_dap_ListResultData },
2935   {   1, &hf_dap_signedListResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedListResult },
2936   { 0, NULL, 0, 0, 0, NULL }
2937 };
2938
2939 int
2940 dissect_dap_ListResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2941   offset = dissect_ber_choice(actx, tree, tvb, offset,
2942                                  ListResult_choice, hf_index, ett_dap_ListResult,
2943                                  NULL);
2944
2945   return offset;
2946 }
2947
2948
2949 static const ber_sequence_t SET_OF_ListResult_set_of[1] = {
2950   { &hf_dap_uncorrelatedListInfo_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_ListResult },
2951 };
2952
2953 static int
2954 dissect_dap_SET_OF_ListResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2955   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2956                                  SET_OF_ListResult_set_of, hf_index, ett_dap_SET_OF_ListResult);
2957
2958   return offset;
2959 }
2960
2961
2962 static const value_string dap_ListResultData_vals[] = {
2963   {   0, "listInfo" },
2964   {   1, "uncorrelatedListInfo" },
2965   { 0, NULL }
2966 };
2967
2968 static const ber_choice_t ListResultData_choice[] = {
2969   {   0, &hf_dap_listInfo        , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_T_listInfo },
2970   {   1, &hf_dap_uncorrelatedListInfo, BER_CLASS_CON, 0, 0, dissect_dap_SET_OF_ListResult },
2971   { 0, NULL, 0, 0, 0, NULL }
2972 };
2973
2974 static int
2975 dissect_dap_ListResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2976   offset = dissect_ber_choice(actx, tree, tvb, offset,
2977                                  ListResultData_choice, hf_index, ett_dap_ListResultData,
2978                                  NULL);
2979
2980   return offset;
2981 }
2982
2983
2984 static const value_string dap_T_subset_vals[] = {
2985   {   0, "baseObject" },
2986   {   1, "oneLevel" },
2987   {   2, "wholeSubtree" },
2988   { 0, NULL }
2989 };
2990
2991
2992 static int
2993 dissect_dap_T_subset(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2994   guint32 subset;
2995
2996     offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2997                                                 &subset);
2998
2999
3000   col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(subset, dap_T_subset_vals, "Subset(%d)"));
3001
3002
3003
3004   return offset;
3005 }
3006
3007
3008 static const asn_namedbit HierarchySelections_bits[] = {
3009   {  0, &hf_dap_HierarchySelections_self, -1, -1, "self", NULL },
3010   {  1, &hf_dap_HierarchySelections_children, -1, -1, "children", NULL },
3011   {  2, &hf_dap_HierarchySelections_parent, -1, -1, "parent", NULL },
3012   {  3, &hf_dap_HierarchySelections_hierarchy, -1, -1, "hierarchy", NULL },
3013   {  4, &hf_dap_HierarchySelections_top, -1, -1, "top", NULL },
3014   {  5, &hf_dap_HierarchySelections_subtree, -1, -1, "subtree", NULL },
3015   {  6, &hf_dap_HierarchySelections_siblings, -1, -1, "siblings", NULL },
3016   {  7, &hf_dap_HierarchySelections_siblingChildren, -1, -1, "siblingChildren", NULL },
3017   {  8, &hf_dap_HierarchySelections_siblingSubtree, -1, -1, "siblingSubtree", NULL },
3018   {  9, &hf_dap_HierarchySelections_all, -1, -1, "all", NULL },
3019   { 0, NULL, 0, 0, NULL, NULL }
3020 };
3021
3022 int
3023 dissect_dap_HierarchySelections(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3024   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
3025                                     HierarchySelections_bits, hf_index, ett_dap_HierarchySelections,
3026                                     NULL);
3027
3028   return offset;
3029 }
3030
3031
3032 static const asn_namedbit SearchControlOptions_bits[] = {
3033   {  0, &hf_dap_SearchControlOptions_searchAliases, -1, -1, "searchAliases", NULL },
3034   {  1, &hf_dap_SearchControlOptions_matchedValuesOnly, -1, -1, "matchedValuesOnly", NULL },
3035   {  2, &hf_dap_SearchControlOptions_checkOverspecified, -1, -1, "checkOverspecified", NULL },
3036   {  3, &hf_dap_SearchControlOptions_performExactly, -1, -1, "performExactly", NULL },
3037   {  4, &hf_dap_SearchControlOptions_includeAllAreas, -1, -1, "includeAllAreas", NULL },
3038   {  5, &hf_dap_SearchControlOptions_noSystemRelaxation, -1, -1, "noSystemRelaxation", NULL },
3039   {  6, &hf_dap_SearchControlOptions_dnAttribute, -1, -1, "dnAttribute", NULL },
3040   {  7, &hf_dap_SearchControlOptions_matchOnResidualName, -1, -1, "matchOnResidualName", NULL },
3041   {  8, &hf_dap_SearchControlOptions_entryCount, -1, -1, "entryCount", NULL },
3042   {  9, &hf_dap_SearchControlOptions_useSubset, -1, -1, "useSubset", NULL },
3043   { 10, &hf_dap_SearchControlOptions_separateFamilyMembers, -1, -1, "separateFamilyMembers", NULL },
3044   { 11, &hf_dap_SearchControlOptions_searchFamily, -1, -1, "searchFamily", NULL },
3045   { 0, NULL, 0, 0, NULL, NULL }
3046 };
3047
3048 int
3049 dissect_dap_SearchControlOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3050   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
3051                                     SearchControlOptions_bits, hf_index, ett_dap_SearchControlOptions,
3052                                     NULL);
3053
3054   return offset;
3055 }
3056
3057
3058
3059 static int
3060 dissect_dap_DomainLocalID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3061   offset = dissect_x509sat_DirectoryString(implicit_tag, tvb, offset, actx, tree, hf_index);
3062
3063   return offset;
3064 }
3065
3066
3067 static const value_string dap_T_joinSubset_vals[] = {
3068   {   0, "baseObject" },
3069   {   1, "oneLevel" },
3070   {   2, "wholeSubtree" },
3071   { 0, NULL }
3072 };
3073
3074
3075 static int
3076 dissect_dap_T_joinSubset(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3077   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3078                                   NULL);
3079
3080   return offset;
3081 }
3082
3083
3084
3085 static int
3086 dissect_dap_JoinContextType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3087   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
3088
3089   return offset;
3090 }
3091
3092
3093 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_JoinContextType_sequence_of[1] = {
3094   { &hf_dap_joinContext_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_dap_JoinContextType },
3095 };
3096
3097 static int
3098 dissect_dap_SEQUENCE_SIZE_1_MAX_OF_JoinContextType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3099   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3100                                       SEQUENCE_SIZE_1_MAX_OF_JoinContextType_sequence_of, hf_index, ett_dap_SEQUENCE_SIZE_1_MAX_OF_JoinContextType);
3101
3102   return offset;
3103 }
3104
3105
3106 static const ber_sequence_t JoinAttPair_sequence[] = {
3107   { &hf_dap_baseAtt         , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
3108   { &hf_dap_joinAtt         , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
3109   { &hf_dap_joinContext     , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_JoinContextType },
3110   { NULL, 0, 0, 0, NULL }
3111 };
3112
3113 static int
3114 dissect_dap_JoinAttPair(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3115   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3116                                    JoinAttPair_sequence, hf_index, ett_dap_JoinAttPair);
3117
3118   return offset;
3119 }
3120
3121
3122 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_JoinAttPair_sequence_of[1] = {
3123   { &hf_dap_joinAttributes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_JoinAttPair },
3124 };
3125
3126 static int
3127 dissect_dap_SEQUENCE_SIZE_1_MAX_OF_JoinAttPair(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3128   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3129                                       SEQUENCE_SIZE_1_MAX_OF_JoinAttPair_sequence_of, hf_index, ett_dap_SEQUENCE_SIZE_1_MAX_OF_JoinAttPair);
3130
3131   return offset;
3132 }
3133
3134
3135 static const ber_sequence_t JoinArgument_sequence[] = {
3136   { &hf_dap_joinBaseObject  , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
3137   { &hf_dap_domainLocalID   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_DomainLocalID },
3138   { &hf_dap_joinSubset      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_T_joinSubset },
3139   { &hf_dap_joinFilter      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_Filter },
3140   { &hf_dap_joinAttributes  , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_JoinAttPair },
3141   { &hf_dap_joinSelection   , BER_CLASS_CON, 5, 0, dissect_dap_EntryInformationSelection },
3142   { NULL, 0, 0, 0, NULL }
3143 };
3144
3145 static int
3146 dissect_dap_JoinArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3147   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3148                                    JoinArgument_sequence, hf_index, ett_dap_JoinArgument);
3149
3150   return offset;
3151 }
3152
3153
3154 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_JoinArgument_sequence_of[1] = {
3155   { &hf_dap_joinArguments_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_JoinArgument },
3156 };
3157
3158 static int
3159 dissect_dap_SEQUENCE_SIZE_1_MAX_OF_JoinArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3160   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3161                                       SEQUENCE_SIZE_1_MAX_OF_JoinArgument_sequence_of, hf_index, ett_dap_SEQUENCE_SIZE_1_MAX_OF_JoinArgument);
3162
3163   return offset;
3164 }
3165
3166
3167 static const value_string dap_T_joinType_vals[] = {
3168   {   0, "innerJoin" },
3169   {   1, "leftOuterJoin" },
3170   {   2, "fullOuterJoin" },
3171   { 0, NULL }
3172 };
3173
3174
3175 static int
3176 dissect_dap_T_joinType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3177   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3178                                   NULL);
3179
3180   return offset;
3181 }
3182
3183
3184 static const ber_sequence_t SearchArgumentData_set[] = {
3185   { &hf_dap_baseObject      , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
3186   { &hf_dap_subset          , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_T_subset },
3187   { &hf_dap_filter          , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_Filter },
3188   { &hf_dap_searchAliases   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3189   { &hf_dap_selection       , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dap_EntryInformationSelection },
3190   { &hf_dap_pagedResults    , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_PagedResultsRequest },
3191   { &hf_dap_matchedValuesOnly, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3192   { &hf_dap_extendedFilter  , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_Filter },
3193   { &hf_dap_checkOverspecified, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3194   { &hf_dap_relaxation      , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_x509if_RelaxationPolicy },
3195   { &hf_dap_extendedArea    , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
3196   { &hf_dap_hierarchySelections, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_dap_HierarchySelections },
3197   { &hf_dap_searchControlOptions, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_dap_SearchControlOptions },
3198   { &hf_dap_joinArguments   , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_JoinArgument },
3199   { &hf_dap_joinType        , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_dap_T_joinType },
3200   { &hf_dap_serviceControls , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_ServiceControls },
3201   { &hf_dap_securityParameters, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
3202   { &hf_dap_requestor       , BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
3203   { &hf_dap_operationProgress, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
3204   { &hf_dap_aliasedRDNs     , BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
3205   { &hf_dap_criticalExtensions, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
3206   { &hf_dap_referenceType   , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
3207   { &hf_dap_entryOnly       , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3208   { &hf_dap_exclusions      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
3209   { &hf_dap_nameResolveOnMaster, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3210   { &hf_dap_operationContexts, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_ContextSelection },
3211   { &hf_dap_familyGrouping  , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_dap_FamilyGrouping },
3212   { NULL, 0, 0, 0, NULL }
3213 };
3214
3215 static int
3216 dissect_dap_SearchArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3217   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3218                               SearchArgumentData_set, hf_index, ett_dap_SearchArgumentData);
3219
3220   return offset;
3221 }
3222
3223
3224 static const ber_sequence_t T_signedSearchArgument_sequence[] = {
3225   { &hf_dap_searchArgument  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_SearchArgumentData },
3226   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
3227   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
3228   { NULL, 0, 0, 0, NULL }
3229 };
3230
3231 static int
3232 dissect_dap_T_signedSearchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3233   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3234                                    T_signedSearchArgument_sequence, hf_index, ett_dap_T_signedSearchArgument);
3235
3236   return offset;
3237 }
3238
3239
3240 const value_string dap_SearchArgument_vals[] = {
3241   {   0, "unsignedSearchArgument" },
3242   {   1, "signedSearchArgument" },
3243   { 0, NULL }
3244 };
3245
3246 static const ber_choice_t SearchArgument_choice[] = {
3247   {   0, &hf_dap_unsignedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_SearchArgumentData },
3248   {   1, &hf_dap_signedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedSearchArgument },
3249   { 0, NULL, 0, 0, 0, NULL }
3250 };
3251
3252 int
3253 dissect_dap_SearchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3254   offset = dissect_ber_choice(actx, tree, tvb, offset,
3255                                  SearchArgument_choice, hf_index, ett_dap_SearchArgument,
3256                                  NULL);
3257
3258   return offset;
3259 }
3260
3261
3262 static const ber_sequence_t SET_OF_EntryInformation_set_of[1] = {
3263   { &hf_dap_entries_item    , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_EntryInformation },
3264 };
3265
3266 static int
3267 dissect_dap_SET_OF_EntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3268   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3269                                  SET_OF_EntryInformation_set_of, hf_index, ett_dap_SET_OF_EntryInformation);
3270
3271   return offset;
3272 }
3273
3274
3275 static const ber_sequence_t T_searchInfo_set[] = {
3276   { &hf_dap_name            , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
3277   { &hf_dap_entries         , BER_CLASS_CON, 0, 0, dissect_dap_SET_OF_EntryInformation },
3278   { &hf_dap_partialOutcomeQualifier, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_PartialOutcomeQualifier },
3279   { &hf_dap_altMatching     , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3280   { &hf_dap_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
3281   { &hf_dap_performer       , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
3282   { &hf_dap_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3283   { &hf_dap_notification    , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute },
3284   { NULL, 0, 0, 0, NULL }
3285 };
3286
3287 static int
3288 dissect_dap_T_searchInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3289   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3290                               T_searchInfo_set, hf_index, ett_dap_T_searchInfo);
3291
3292   return offset;
3293 }
3294
3295
3296 static const ber_sequence_t T_signedSearchResult_sequence[] = {
3297   { &hf_dap_searchResult    , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_SearchResultData },
3298   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
3299   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
3300   { NULL, 0, 0, 0, NULL }
3301 };
3302
3303 static int
3304 dissect_dap_T_signedSearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3305   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3306                                    T_signedSearchResult_sequence, hf_index, ett_dap_T_signedSearchResult);
3307
3308   return offset;
3309 }
3310
3311
3312 const value_string dap_SearchResult_vals[] = {
3313   {   0, "unsignedSearchResult" },
3314   {   1, "signedSearchResult" },
3315   { 0, NULL }
3316 };
3317
3318 static const ber_choice_t SearchResult_choice[] = {
3319   {   0, &hf_dap_unsignedSearchResult, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_dap_SearchResultData },
3320   {   1, &hf_dap_signedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedSearchResult },
3321   { 0, NULL, 0, 0, 0, NULL }
3322 };
3323
3324 int
3325 dissect_dap_SearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3326   offset = dissect_ber_choice(actx, tree, tvb, offset,
3327                                  SearchResult_choice, hf_index, ett_dap_SearchResult,
3328                                  NULL);
3329
3330   return offset;
3331 }
3332
3333
3334 static const ber_sequence_t SET_OF_SearchResult_set_of[1] = {
3335   { &hf_dap_uncorrelatedSearchInfo_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_SearchResult },
3336 };
3337
3338 static int
3339 dissect_dap_SET_OF_SearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3340   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3341                                  SET_OF_SearchResult_set_of, hf_index, ett_dap_SET_OF_SearchResult);
3342
3343   return offset;
3344 }
3345
3346
3347 static const value_string dap_SearchResultData_vals[] = {
3348   {   0, "searchInfo" },
3349   {   1, "uncorrelatedSearchInfo" },
3350   { 0, NULL }
3351 };
3352
3353 static const ber_choice_t SearchResultData_choice[] = {
3354   {   0, &hf_dap_searchInfo      , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_T_searchInfo },
3355   {   1, &hf_dap_uncorrelatedSearchInfo, BER_CLASS_CON, 0, 0, dissect_dap_SET_OF_SearchResult },
3356   { 0, NULL, 0, 0, 0, NULL }
3357 };
3358
3359 static int
3360 dissect_dap_SearchResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3361   offset = dissect_ber_choice(actx, tree, tvb, offset,
3362                                  SearchResultData_choice, hf_index, ett_dap_SearchResultData,
3363                                  NULL);
3364
3365   return offset;
3366 }
3367
3368
3369 static const ber_sequence_t SET_OF_Attribute_set_of[1] = {
3370   { &hf_dap_add_entry_item  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
3371 };
3372
3373 static int
3374 dissect_dap_SET_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3375   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3376                                  SET_OF_Attribute_set_of, hf_index, ett_dap_SET_OF_Attribute);
3377
3378   return offset;
3379 }
3380
3381
3382 static const ber_sequence_t AddEntryArgumentData_set[] = {
3383   { &hf_dap_object          , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
3384   { &hf_dap_add_entry       , BER_CLASS_CON, 1, 0, dissect_dap_SET_OF_Attribute },
3385   { &hf_dap_targetSystem    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_AccessPoint },
3386   { &hf_dap_serviceControls , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_ServiceControls },
3387   { &hf_dap_securityParameters, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
3388   { &hf_dap_requestor       , BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
3389   { &hf_dap_operationProgress, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
3390   { &hf_dap_aliasedRDNs     , BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
3391   { &hf_dap_criticalExtensions, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
3392   { &hf_dap_referenceType   , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
3393   { &hf_dap_entryOnly       , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3394   { &hf_dap_exclusions      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
3395   { &hf_dap_nameResolveOnMaster, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3396   { &hf_dap_operationContexts, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_ContextSelection },
3397   { &hf_dap_familyGrouping  , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_dap_FamilyGrouping },
3398   { NULL, 0, 0, 0, NULL }
3399 };
3400
3401 static int
3402 dissect_dap_AddEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3403   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3404                               AddEntryArgumentData_set, hf_index, ett_dap_AddEntryArgumentData);
3405
3406   return offset;
3407 }
3408
3409
3410 static const ber_sequence_t T_signedAddEntryArgument_sequence[] = {
3411   { &hf_dap_addEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_AddEntryArgumentData },
3412   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
3413   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
3414   { NULL, 0, 0, 0, NULL }
3415 };
3416
3417 static int
3418 dissect_dap_T_signedAddEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3419   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3420                                    T_signedAddEntryArgument_sequence, hf_index, ett_dap_T_signedAddEntryArgument);
3421
3422   return offset;
3423 }
3424
3425
3426 const value_string dap_AddEntryArgument_vals[] = {
3427   {   0, "unsignedAddEntryArgument" },
3428   {   1, "signedAddEntryArgument" },
3429   { 0, NULL }
3430 };
3431
3432 static const ber_choice_t AddEntryArgument_choice[] = {
3433   {   0, &hf_dap_unsignedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_AddEntryArgumentData },
3434   {   1, &hf_dap_signedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedAddEntryArgument },
3435   { 0, NULL, 0, 0, 0, NULL }
3436 };
3437
3438 int
3439 dissect_dap_AddEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3440   offset = dissect_ber_choice(actx, tree, tvb, offset,
3441                                  AddEntryArgument_choice, hf_index, ett_dap_AddEntryArgument,
3442                                  NULL);
3443
3444   return offset;
3445 }
3446
3447
3448 static const ber_sequence_t AddEntryResultData_sequence[] = {
3449   { &hf_dap_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
3450   { &hf_dap_performer       , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
3451   { &hf_dap_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3452   { &hf_dap_notification    , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute },
3453   { NULL, 0, 0, 0, NULL }
3454 };
3455
3456 static int
3457 dissect_dap_AddEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3458   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3459                                    AddEntryResultData_sequence, hf_index, ett_dap_AddEntryResultData);
3460
3461   return offset;
3462 }
3463
3464
3465 static const ber_sequence_t T_signedAddEntryResult_sequence[] = {
3466   { &hf_dap_addEntryResult  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_AddEntryResultData },
3467   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
3468   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
3469   { NULL, 0, 0, 0, NULL }
3470 };
3471
3472 static int
3473 dissect_dap_T_signedAddEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3474   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3475                                    T_signedAddEntryResult_sequence, hf_index, ett_dap_T_signedAddEntryResult);
3476
3477   return offset;
3478 }
3479
3480
3481 static const value_string dap_AddEntryInformation_vals[] = {
3482   {   0, "unsignedAddEntryResult" },
3483   {   1, "signedAddEntryResult" },
3484   { 0, NULL }
3485 };
3486
3487 static const ber_choice_t AddEntryInformation_choice[] = {
3488   {   0, &hf_dap_unsignedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_AddEntryResultData },
3489   {   1, &hf_dap_signedAddEntryResult, BER_CLASS_CON, 0, 0, dissect_dap_T_signedAddEntryResult },
3490   { 0, NULL, 0, 0, 0, NULL }
3491 };
3492
3493 static int
3494 dissect_dap_AddEntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3495   offset = dissect_ber_choice(actx, tree, tvb, offset,
3496                                  AddEntryInformation_choice, hf_index, ett_dap_AddEntryInformation,
3497                                  NULL);
3498
3499   return offset;
3500 }
3501
3502
3503 const value_string dap_AddEntryResult_vals[] = {
3504   {   0, "null" },
3505   {   1, "information" },
3506   { 0, NULL }
3507 };
3508
3509 static const ber_choice_t AddEntryResult_choice[] = {
3510   {   0, &hf_dap_null            , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_dap_NULL },
3511   {   1, &hf_dap_add_entry_information, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_dap_AddEntryInformation },
3512   { 0, NULL, 0, 0, 0, NULL }
3513 };
3514
3515 int
3516 dissect_dap_AddEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3517   offset = dissect_ber_choice(actx, tree, tvb, offset,
3518                                  AddEntryResult_choice, hf_index, ett_dap_AddEntryResult,
3519                                  NULL);
3520
3521   return offset;
3522 }
3523
3524
3525 static const ber_sequence_t RemoveEntryArgumentData_set[] = {
3526   { &hf_dap_object          , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
3527   { &hf_dap_serviceControls , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_ServiceControls },
3528   { &hf_dap_securityParameters, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
3529   { &hf_dap_requestor       , BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
3530   { &hf_dap_operationProgress, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
3531   { &hf_dap_aliasedRDNs     , BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
3532   { &hf_dap_criticalExtensions, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
3533   { &hf_dap_referenceType   , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
3534   { &hf_dap_entryOnly       , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3535   { &hf_dap_exclusions      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
3536   { &hf_dap_nameResolveOnMaster, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3537   { &hf_dap_operationContexts, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_ContextSelection },
3538   { &hf_dap_familyGrouping  , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_dap_FamilyGrouping },
3539   { NULL, 0, 0, 0, NULL }
3540 };
3541
3542 static int
3543 dissect_dap_RemoveEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3544   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3545                               RemoveEntryArgumentData_set, hf_index, ett_dap_RemoveEntryArgumentData);
3546
3547   return offset;
3548 }
3549
3550
3551 static const ber_sequence_t T_signedRemoveEntryArgument_sequence[] = {
3552   { &hf_dap_removeEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_RemoveEntryArgumentData },
3553   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
3554   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
3555   { NULL, 0, 0, 0, NULL }
3556 };
3557
3558 static int
3559 dissect_dap_T_signedRemoveEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3560   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3561                                    T_signedRemoveEntryArgument_sequence, hf_index, ett_dap_T_signedRemoveEntryArgument);
3562
3563   return offset;
3564 }
3565
3566
3567 const value_string dap_RemoveEntryArgument_vals[] = {
3568   {   0, "unsignedRemoveEntryArgument" },
3569   {   1, "signedRemoveEntryArgument" },
3570   { 0, NULL }
3571 };
3572
3573 static const ber_choice_t RemoveEntryArgument_choice[] = {
3574   {   0, &hf_dap_unsignedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dap_RemoveEntryArgumentData },
3575   {   1, &hf_dap_signedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_T_signedRemoveEntryArgument },
3576   { 0, NULL, 0, 0, 0, NULL }
3577 };
3578
3579 int
3580 dissect_dap_RemoveEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3581   offset = dissect_ber_choice(actx, tree, tvb, offset,
3582                                  RemoveEntryArgument_choice, hf_index, ett_dap_RemoveEntryArgument,
3583                                  NULL);
3584
3585   return offset;
3586 }
3587
3588
3589 static const ber_sequence_t RemoveEntryResultData_sequence[] = {
3590   { &hf_dap_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
3591   { &hf_dap_performer       , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
3592   { &hf_dap_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3593   { &hf_dap_notification    , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dap_SEQUENCE_SIZE_1_MAX_OF_Attribute },
3594   { NULL, 0, 0, 0, NULL }
3595 };
3596
3597 static int
3598 dissect_dap_RemoveEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3599   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3600                                    RemoveEntryResultData_sequence, hf_index, ett_dap_RemoveEntryResultData);
3601
3602   return offset;
3603 }
3604
3605
3606 static const ber_sequence_t T_signedRemoveEntryResult_sequence[] = {
3607   { &hf_dap_removeEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_RemoveEntryResultData },
3608   { &hf_dap_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
3609   { &hf_dap_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dap_BIT_STRING },
3610   { NULL, 0, 0, 0, NULL }
3611 };
3612
3613 static int
3614 dissect_dap_T_signedRemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3615   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3616                                    T_signedRemoveEntryResult_sequence, hf_index, ett_dap_T_signedRemoveEntryResult);
3617
3618   return offset;
3619 }
3620
3621
3622 static const value_string dap_RemoveEntryInformation_vals[] = {
3623   {   0, "unsignedRemoveEntryResult" },
3624   {   1, "signedRemoveEntryResult" },
3625   { 0, NULL }
3626 };
3627
3628 static const ber_choice_t RemoveEntryInformation_choice[] = {
3629   {   0, &hf_dap_unsignedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dap_RemoveEntryResultData },
3630   {   1, &hf_dap_signedRemoveEntryResult, BER_CLASS_CON, 0, 0, dissect_dap_T_signedRemoveEntryResult },
3631   { 0, NULL, 0, 0, 0, NULL }
3632 };
3633
3634 static int
3635 dissect_dap_RemoveEntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3636   offset = dissect_ber_choice(actx, tree, tvb, offset,
3637                                  RemoveEntryInformation_choice, hf_index, ett_dap_RemoveEntryInformation,
3638                                  NULL);
3639
3640   return offset;
3641 }
3642
3643
3644 const value_string dap_RemoveEntryResult_vals[] = {
3645   {   0, "null" },
3646   {   1, "information" },
3647   { 0, NULL }
3648 };
3649
3650 static const ber_choice_t RemoveEntryResult_choice[] = {
3651   {   0, &hf_dap_null            , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_dap_NULL },
3652   {   1, &hf_dap_remove_entry_information, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_dap_RemoveEntryInformation },
3653   { 0, NULL, 0, 0, 0, NULL }
3654 };
3655
3656 int
3657 dissect_dap_RemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3658   offset = dissect_ber_choice(actx, tree, tvb, offset,
3659                                  RemoveEntryResult_choice, hf_index, ett_dap_RemoveEntryResult,
3660                                  NULL);
3661
3662   return offset;
3663 }
3664
3665
3666 const value_string dap_EntryModification_vals[] = {
3667   {   0, "addAttribute" },
3668   {   1, "removeAttribute" },
3669   {   2, "addValues" },
3670   {   3, "removeValues" },
3671   {   4, "alterValues" },
3672   {   5, "resetValue" },
3673   { 0, NULL }
3674 };
3675
3676 static const ber_choice_t EntryModification_choice[] = {
3677   {   0, &hf_dap_addAttribute    , BER_CLASS_CON, 0, 0, dissect_x509if_Attribute },
3678   {   1, &hf_dap_removeAttribute , BER_CLASS_CON, 1, 0, dissect_x509if_AttributeType },
3679   {   2, &hf_dap_addValues       , BER_CLASS_CON, 2, 0, dissect_x509if_Attribute },
3680   {   3, &hf_dap_removeValues    , BER_CLASS_CON, 3, 0, dissect_x509if_Attribute },
3681   {   4, &hf_dap_alterValues     , BER_CLASS_CON, 4, 0, dissect_crmf_AttributeTypeAndValue },
3682   {   5, &hf_dap_resetValue      , BER_CLASS_CON, 5, 0, dissect_x509if_AttributeType },
3683   { 0, NULL, 0, 0, 0, NULL }
3684 };
3685
3686 int
3687 dissect_dap_EntryModification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3688   offset = dissect_ber_choice(actx, tree, tvb, offset,
3689                                  EntryModification_choice, hf_index, ett_dap_EntryModification,
3690                                  NULL);
3691
3692   return offset;
3693 }
3694
3695
3696 static const ber_sequence_t SEQUENCE_OF_EntryModification_sequence_of[1] = {
3697   { &hf_dap_changes_item    , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_dap_EntryModification },
3698 };
3699
3700 static int
3701 dissect_dap_SEQUENCE_OF_EntryModification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3702   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3703                                       SEQUENCE_OF_EntryModification_sequence_of, hf_index, ett_dap_SEQUENCE_OF_EntryModification);
3704
3705   return offset;
3706 }
3707
3708
3709 static const ber_sequence_t ModifyEntryArgumentData_set[] = {
3710   { &hf_dap_object          , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_dap_Name },
3711   { &hf_dap_changes         , BER_CLASS_CON, 1, 0, dissect_dap_SEQUENCE_OF_EntryModification },
3712   { &hf_dap_selection       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_EntryInformationSelection },
3713   { &hf_dap_serviceControls , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_ServiceControls },
3714   { &hf_dap_securityParameters, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
3715   { &hf_dap_requestor       , BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
3716   { &hf_dap_operationProgress, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
3717   { &hf_dap_aliasedRDNs     , BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL, dissect_dap_INTEGER },
3718   { &hf_dap_criticalExtensions, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL, dissect_dap_BIT_STRING },
3719   { &hf_dap_referenceType   , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
3720   { &hf_dap_entryOnly       , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3721   { &hf_dap_exclusions      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
3722   { &hf_dap_nameResolveOnMaster, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_dap_BOOLEAN },
3723   { &hf_dap_operationContexts, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dap_ContextSelection },