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