epan/dissectors/pidl/ C99 drsuapi
[wireshark-sm.git] / epan / dissectors / packet-dsp.c
blobb5ca8032d5ced6d51dd5529d23c8eb112c076fee
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-dsp.c */
4 /* asn2wrs.py -b -q -L -p dsp -c ./dsp.cnf -s ./packet-dsp-template -D . -O ../.. dsp.asn */
6 /* packet-dsp.c
7 * Routines for X.518 (X.500 Distributed Operations) packet dissection
8 * Graeme Lunt 2005
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
17 #include "config.h"
19 #include <epan/packet.h>
20 #include <epan/expert.h>
21 #include <epan/prefs.h>
22 #include <epan/oids.h>
23 #include <epan/asn1.h>
24 #include <wsutil/array.h>
26 #include "packet-ber.h"
27 #include "packet-acse.h"
28 #include "packet-ros.h"
30 #include "packet-x509if.h"
31 #include "packet-x509af.h"
32 #include "packet-x509sat.h"
34 #include "packet-dap.h"
35 #include "packet-dsp.h"
38 #define PNAME "X.519 Directory System Protocol"
39 #define PSNAME "DSP"
40 #define PFNAME "dsp"
42 void proto_register_dsp(void);
43 void proto_reg_handoff_dsp(void);
45 /* Initialize the protocol and registered fields */
46 static int proto_dsp;
48 static int hf_dsp_AccessPoint_PDU; /* AccessPoint */
49 static int hf_dsp_MasterAndShadowAccessPoints_PDU; /* MasterAndShadowAccessPoints */
50 static int hf_dsp_DitBridgeKnowledge_PDU; /* DitBridgeKnowledge */
51 static int hf_dsp_chainedArgument; /* ChainingArguments */
52 static int hf_dsp_readArgument; /* ReadArgument */
53 static int hf_dsp_unsignedChainedReadArgument; /* ChainedReadArgumentData */
54 static int hf_dsp_signedChainedReadArgument; /* T_signedChainedReadArgument */
55 static int hf_dsp_chainedReadArgument; /* ChainedReadArgumentData */
56 static int hf_dsp_algorithmIdentifier; /* AlgorithmIdentifier */
57 static int hf_dsp_encrypted; /* BIT_STRING */
58 static int hf_dsp_chainedResults; /* ChainingResults */
59 static int hf_dsp_readResult; /* ReadResult */
60 static int hf_dsp_unsignedChainedReadResult; /* ChainedReadResultData */
61 static int hf_dsp_signedChainedReadResult; /* T_signedChainedReadResult */
62 static int hf_dsp_chainedReadResult; /* ChainedReadResultData */
63 static int hf_dsp_compareArgument; /* CompareArgument */
64 static int hf_dsp_unsignedChainedCompareArgument; /* ChainedCompareArgumentData */
65 static int hf_dsp_signedChainedCompareArgument; /* T_signedChainedCompareArgument */
66 static int hf_dsp_chainedCompareArgument; /* ChainedCompareArgumentData */
67 static int hf_dsp_compareResult; /* CompareResult */
68 static int hf_dsp_unsignedChainedCompareResult; /* ChainedCompareResultData */
69 static int hf_dsp_signedChainedCompareResult; /* T_signedChainedCompareResult */
70 static int hf_dsp_chainedCompareResult; /* ChainedCompareResultData */
71 static int hf_dsp_listArgument; /* ListArgument */
72 static int hf_dsp_unsignedChainedListArgument; /* ChainedListArgumentData */
73 static int hf_dsp_signedChainedListArgument; /* T_signedChainedListArgument */
74 static int hf_dsp_chainedListArgument; /* ChainedListArgumentData */
75 static int hf_dsp_listResult; /* ListResult */
76 static int hf_dsp_unsignedChainedListResult; /* ChainedListResultData */
77 static int hf_dsp_signedChainedListResult; /* T_signedChainedListResult */
78 static int hf_dsp_chainedListResult; /* ChainedListResultData */
79 static int hf_dsp_searchArgument; /* SearchArgument */
80 static int hf_dsp_unsignedChainedSearchArgument; /* ChainedSearchArgumentData */
81 static int hf_dsp_signedChainedSearchArgument; /* T_signedChainedSearchArgument */
82 static int hf_dsp_chainedSearchArgument; /* ChainedSearchArgumentData */
83 static int hf_dsp_searchResult; /* SearchResult */
84 static int hf_dsp_unsignedChainedSearchResult; /* ChainedSearchResultData */
85 static int hf_dsp_signedChainedSearchResult; /* T_signedChainedSearchResult */
86 static int hf_dsp_chainedSearchResult; /* ChainedSearchResultData */
87 static int hf_dsp_addEntryArgument; /* AddEntryArgument */
88 static int hf_dsp_unsignedChainedAddEntryArgument; /* ChainedAddEntryArgumentData */
89 static int hf_dsp_signedChainedAddEntryArgument; /* T_signedChainedAddEntryArgument */
90 static int hf_dsp_chainedAddEntryArgument; /* ChainedAddEntryArgumentData */
91 static int hf_dsp_addEntryResult; /* AddEntryResult */
92 static int hf_dsp_unsignedChainedAddEntryResult; /* ChainedAddEntryResultData */
93 static int hf_dsp_signedChainedAddEntryResult; /* T_signedChainedAddEntryResult */
94 static int hf_dsp_chainedAddEntryResult; /* ChainedAddEntryResultData */
95 static int hf_dsp_removeEntryArgument; /* RemoveEntryArgument */
96 static int hf_dsp_unsignedChainedRemoveEntryArgument; /* ChainedRemoveEntryArgumentData */
97 static int hf_dsp_signedChainedRemoveEntryArgument; /* T_signedChainedRemoveEntryArgument */
98 static int hf_dsp_chainedRemoveEntryArgument; /* ChainedRemoveEntryArgumentData */
99 static int hf_dsp_removeEntryResult; /* RemoveEntryResult */
100 static int hf_dsp_unsignedChainedRemoveEntryResult; /* ChainedRemoveEntryResultData */
101 static int hf_dsp_signedChainedRemoveEntryResult; /* T_signedChainedRemoveEntryResult */
102 static int hf_dsp_chainedRemoveEntryResult; /* ChainedRemoveEntryResultData */
103 static int hf_dsp_modifyEntryArgument; /* ModifyEntryArgument */
104 static int hf_dsp_unsignedChainedModifyEntryArgument; /* ChainedModifyEntryArgumentData */
105 static int hf_dsp_signedChainedModifyEntryArgument; /* T_signedChainedModifyEntryArgument */
106 static int hf_dsp_chainedModifyEntryArgument; /* ChainedModifyEntryArgumentData */
107 static int hf_dsp_modifyEntryResult; /* ModifyEntryResult */
108 static int hf_dsp_unsignedChainedModifyEntryResult; /* ChainedModifyEntryResultData */
109 static int hf_dsp_signedChainedModifyEntryResult; /* T_signedChainedModifyEntryResult */
110 static int hf_dsp_chainedModifyEntryResult; /* ChainedModifyEntryResultData */
111 static int hf_dsp_modifyDNArgument; /* ModifyDNArgument */
112 static int hf_dsp_unsignedChainedModifyDNArgument; /* ChainedModifyDNArgumentData */
113 static int hf_dsp_signedChainedModifyDNArgument; /* T_signedChainedModifyDNArgument */
114 static int hf_dsp_chainedModifyDNArgument; /* ChainedModifyDNArgumentData */
115 static int hf_dsp_modifyDNResult; /* ModifyDNResult */
116 static int hf_dsp_unsignedChainedModifyDNResult; /* ChainedModifyDNResultData */
117 static int hf_dsp_signedChainedModifyDNResult; /* T_signedChainedModifyDNResult */
118 static int hf_dsp_chainedModifyDNResult; /* ChainedModifyDNResultData */
119 static int hf_dsp_reference; /* ContinuationReference */
120 static int hf_dsp_contextPrefix; /* DistinguishedName */
121 static int hf_dsp_securityParameters; /* SecurityParameters */
122 static int hf_dsp_performer; /* DistinguishedName */
123 static int hf_dsp_aliasDereferenced; /* BOOLEAN */
124 static int hf_dsp_notification; /* SEQUENCE_OF_Attribute */
125 static int hf_dsp_notification_item; /* Attribute */
126 static int hf_dsp_unsignedDSAReferral; /* DSAReferralData */
127 static int hf_dsp_signedDSAReferral; /* T_signedDSAReferral */
128 static int hf_dsp_dsaReferral; /* DSAReferralData */
129 static int hf_dsp_originator; /* DistinguishedName */
130 static int hf_dsp_targetObjectDN; /* DistinguishedName */
131 static int hf_dsp_operationProgress; /* OperationProgress */
132 static int hf_dsp_traceInformation; /* TraceInformation */
133 static int hf_dsp_aliasedRDNs; /* INTEGER */
134 static int hf_dsp_returnCrossRefs; /* BOOLEAN */
135 static int hf_dsp_referenceType; /* ReferenceType */
136 static int hf_dsp_info; /* DomainInfo */
137 static int hf_dsp_timeLimit; /* Time */
138 static int hf_dsp_entryOnly; /* BOOLEAN */
139 static int hf_dsp_uniqueIdentifier; /* UniqueIdentifier */
140 static int hf_dsp_authenticationLevel; /* AuthenticationLevel */
141 static int hf_dsp_exclusions; /* Exclusions */
142 static int hf_dsp_excludeShadows; /* BOOLEAN */
143 static int hf_dsp_nameResolveOnMaster; /* BOOLEAN */
144 static int hf_dsp_operationIdentifier; /* INTEGER */
145 static int hf_dsp_searchRuleId; /* SearchRuleId */
146 static int hf_dsp_chainedRelaxation; /* MRMapping */
147 static int hf_dsp_relatedEntry; /* INTEGER */
148 static int hf_dsp_dspPaging; /* BOOLEAN */
149 static int hf_dsp_nonDapPdu; /* T_nonDapPdu */
150 static int hf_dsp_streamedResults; /* INTEGER */
151 static int hf_dsp_excludeWriteableCopies; /* BOOLEAN */
152 static int hf_dsp_utcTime; /* UTCTime */
153 static int hf_dsp_generalizedTime; /* GeneralizedTime */
154 static int hf_dsp_crossReferences; /* SEQUENCE_OF_CrossReference */
155 static int hf_dsp_crossReferences_item; /* CrossReference */
156 static int hf_dsp_alreadySearched; /* Exclusions */
157 static int hf_dsp_accessPoint; /* AccessPointInformation */
158 static int hf_dsp_nameResolutionPhase; /* T_nameResolutionPhase */
159 static int hf_dsp_nextRDNToBeResolved; /* INTEGER */
160 static int hf_dsp_TraceInformation_item; /* TraceItem */
161 static int hf_dsp_dsa; /* Name */
162 static int hf_dsp_targetObject; /* Name */
163 static int hf_dsp_ae_title; /* Name */
164 static int hf_dsp_address; /* PresentationAddress */
165 static int hf_dsp_protocolInformation; /* SET_OF_ProtocolInformation */
166 static int hf_dsp_protocolInformation_item; /* ProtocolInformation */
167 static int hf_dsp_labeledURI; /* LabeledURI */
168 static int hf_dsp_access_point_category; /* APCategory */
169 static int hf_dsp_chainingRequired; /* BOOLEAN */
170 static int hf_dsp_MasterAndShadowAccessPoints_item; /* MasterOrShadowAccessPoint */
171 static int hf_dsp_category; /* T_category */
172 static int hf_dsp_additionalPoints; /* MasterAndShadowAccessPoints */
173 static int hf_dsp_domainLocalID; /* DirectoryString */
174 static int hf_dsp_accessPoints; /* MasterAndShadowAccessPoints */
175 static int hf_dsp_Exclusions_item; /* RDNSequence */
176 static int hf_dsp_rdnsResolved; /* INTEGER */
177 static int hf_dsp_accessPoints_01; /* SET_OF_AccessPointInformation */
178 static int hf_dsp_accessPoints_item; /* AccessPointInformation */
179 static int hf_dsp_returnToDUA; /* BOOLEAN */
180 static int hf_dsp_basicLevels; /* T_basicLevels */
181 static int hf_dsp_level; /* T_level */
182 static int hf_dsp_localQualifier; /* INTEGER */
183 static int hf_dsp_signed; /* BOOLEAN */
184 static int hf_dsp_other; /* EXTERNAL */
186 /* Initialize the subtree pointers */
187 static int ett_dsp;
188 static int ett_dsp_ChainedReadArgumentData;
189 static int ett_dsp_ChainedReadArgument;
190 static int ett_dsp_T_signedChainedReadArgument;
191 static int ett_dsp_ChainedReadResultData;
192 static int ett_dsp_ChainedReadResult;
193 static int ett_dsp_T_signedChainedReadResult;
194 static int ett_dsp_ChainedCompareArgumentData;
195 static int ett_dsp_ChainedCompareArgument;
196 static int ett_dsp_T_signedChainedCompareArgument;
197 static int ett_dsp_ChainedCompareResultData;
198 static int ett_dsp_ChainedCompareResult;
199 static int ett_dsp_T_signedChainedCompareResult;
200 static int ett_dsp_ChainedListArgumentData;
201 static int ett_dsp_ChainedListArgument;
202 static int ett_dsp_T_signedChainedListArgument;
203 static int ett_dsp_ChainedListResultData;
204 static int ett_dsp_ChainedListResult;
205 static int ett_dsp_T_signedChainedListResult;
206 static int ett_dsp_ChainedSearchArgumentData;
207 static int ett_dsp_ChainedSearchArgument;
208 static int ett_dsp_T_signedChainedSearchArgument;
209 static int ett_dsp_ChainedSearchResultData;
210 static int ett_dsp_ChainedSearchResult;
211 static int ett_dsp_T_signedChainedSearchResult;
212 static int ett_dsp_ChainedAddEntryArgumentData;
213 static int ett_dsp_ChainedAddEntryArgument;
214 static int ett_dsp_T_signedChainedAddEntryArgument;
215 static int ett_dsp_ChainedAddEntryResultData;
216 static int ett_dsp_ChainedAddEntryResult;
217 static int ett_dsp_T_signedChainedAddEntryResult;
218 static int ett_dsp_ChainedRemoveEntryArgumentData;
219 static int ett_dsp_ChainedRemoveEntryArgument;
220 static int ett_dsp_T_signedChainedRemoveEntryArgument;
221 static int ett_dsp_ChainedRemoveEntryResultData;
222 static int ett_dsp_ChainedRemoveEntryResult;
223 static int ett_dsp_T_signedChainedRemoveEntryResult;
224 static int ett_dsp_ChainedModifyEntryArgumentData;
225 static int ett_dsp_ChainedModifyEntryArgument;
226 static int ett_dsp_T_signedChainedModifyEntryArgument;
227 static int ett_dsp_ChainedModifyEntryResultData;
228 static int ett_dsp_ChainedModifyEntryResult;
229 static int ett_dsp_T_signedChainedModifyEntryResult;
230 static int ett_dsp_ChainedModifyDNArgumentData;
231 static int ett_dsp_ChainedModifyDNArgument;
232 static int ett_dsp_T_signedChainedModifyDNArgument;
233 static int ett_dsp_ChainedModifyDNResultData;
234 static int ett_dsp_ChainedModifyDNResult;
235 static int ett_dsp_T_signedChainedModifyDNResult;
236 static int ett_dsp_DSAReferralData;
237 static int ett_dsp_SEQUENCE_OF_Attribute;
238 static int ett_dsp_DSAReferral;
239 static int ett_dsp_T_signedDSAReferral;
240 static int ett_dsp_ChainingArguments;
241 static int ett_dsp_Time;
242 static int ett_dsp_ChainingResults;
243 static int ett_dsp_SEQUENCE_OF_CrossReference;
244 static int ett_dsp_CrossReference;
245 static int ett_dsp_OperationProgress;
246 static int ett_dsp_TraceInformation;
247 static int ett_dsp_TraceItem;
248 static int ett_dsp_AccessPoint;
249 static int ett_dsp_SET_OF_ProtocolInformation;
250 static int ett_dsp_MasterOrShadowAccessPoint;
251 static int ett_dsp_MasterAndShadowAccessPoints;
252 static int ett_dsp_AccessPointInformation;
253 static int ett_dsp_DitBridgeKnowledge;
254 static int ett_dsp_Exclusions;
255 static int ett_dsp_ContinuationReference;
256 static int ett_dsp_SET_OF_AccessPointInformation;
257 static int ett_dsp_AuthenticationLevel;
258 static int ett_dsp_T_basicLevels;
260 static expert_field ei_dsp_unsupported_opcode;
261 static expert_field ei_dsp_unsupported_errcode;
262 static expert_field ei_dsp_unsupported_pdu;
263 static expert_field ei_dsp_zero_pdu;
267 static int
268 dissect_dsp_DSASystemBindArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
269 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
271 return offset;
276 static int
277 dissect_dsp_DSASystemBindResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
278 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
280 return offset;
285 static int
286 dissect_dsp_DSASystemBindError(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
287 offset = dissect_dap_DirectoryBindError(implicit_tag, tvb, offset, actx, tree, hf_index);
289 return offset;
293 static const value_string dsp_T_nameResolutionPhase_vals[] = {
294 { 1, "notStarted" },
295 { 2, "proceeding" },
296 { 3, "completed" },
297 { 0, NULL }
301 static int
302 dissect_dsp_T_nameResolutionPhase(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
303 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
304 NULL);
306 return offset;
311 static int
312 dissect_dsp_INTEGER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
313 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
314 NULL);
316 return offset;
320 static const ber_sequence_t OperationProgress_set[] = {
321 { &hf_dsp_nameResolutionPhase, BER_CLASS_CON, 0, 0, dissect_dsp_T_nameResolutionPhase },
322 { &hf_dsp_nextRDNToBeResolved, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
323 { NULL, 0, 0, 0, NULL }
327 dissect_dsp_OperationProgress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
328 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
329 OperationProgress_set, hf_index, ett_dsp_OperationProgress);
331 return offset;
335 static const ber_sequence_t TraceItem_set[] = {
336 { &hf_dsp_dsa , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
337 { &hf_dsp_targetObject , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_Name },
338 { &hf_dsp_operationProgress, BER_CLASS_CON, 2, 0, dissect_dsp_OperationProgress },
339 { NULL, 0, 0, 0, NULL }
342 static int
343 dissect_dsp_TraceItem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
344 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
345 TraceItem_set, hf_index, ett_dsp_TraceItem);
347 return offset;
351 static const ber_sequence_t TraceInformation_sequence_of[1] = {
352 { &hf_dsp_TraceInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_TraceItem },
355 static int
356 dissect_dsp_TraceInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
357 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
358 TraceInformation_sequence_of, hf_index, ett_dsp_TraceInformation);
360 return offset;
365 static int
366 dissect_dsp_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
367 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
369 return offset;
373 const value_string dsp_ReferenceType_vals[] = {
374 { 1, "superior" },
375 { 2, "subordinate" },
376 { 3, "cross" },
377 { 4, "nonSpecificSubordinate" },
378 { 5, "supplier" },
379 { 6, "master" },
380 { 7, "immediateSuperior" },
381 { 8, "self" },
382 { 9, "ditBridge" },
383 { 0, NULL }
388 dissect_dsp_ReferenceType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
389 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
390 NULL);
392 return offset;
397 static int
398 dissect_dsp_DomainInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
399 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
401 return offset;
406 static int
407 dissect_dsp_UTCTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
408 offset = dissect_ber_UTCTime(implicit_tag, actx, tree, tvb, offset, hf_index, NULL, NULL);
410 return offset;
415 static int
416 dissect_dsp_GeneralizedTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
417 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
419 return offset;
423 static const value_string dsp_Time_vals[] = {
424 { 0, "utcTime" },
425 { 1, "generalizedTime" },
426 { 0, NULL }
429 static const ber_choice_t Time_choice[] = {
430 { 0, &hf_dsp_utcTime , BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_dsp_UTCTime },
431 { 1, &hf_dsp_generalizedTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_dsp_GeneralizedTime },
432 { 0, NULL, 0, 0, 0, NULL }
435 static int
436 dissect_dsp_Time(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
437 offset = dissect_ber_choice(actx, tree, tvb, offset,
438 Time_choice, hf_index, ett_dsp_Time,
439 NULL);
441 return offset;
445 static const value_string dsp_T_level_vals[] = {
446 { 0, "none" },
447 { 1, "simple" },
448 { 2, "strong" },
449 { 0, NULL }
453 static int
454 dissect_dsp_T_level(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
455 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
456 NULL);
458 return offset;
462 static const ber_sequence_t T_basicLevels_sequence[] = {
463 { &hf_dsp_level , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_dsp_T_level },
464 { &hf_dsp_localQualifier , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_INTEGER },
465 { &hf_dsp_signed , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_BOOLEAN },
466 { NULL, 0, 0, 0, NULL }
469 static int
470 dissect_dsp_T_basicLevels(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
471 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
472 T_basicLevels_sequence, hf_index, ett_dsp_T_basicLevels);
474 return offset;
479 static int
480 dissect_dsp_EXTERNAL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
481 offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
483 return offset;
487 static const value_string dsp_AuthenticationLevel_vals[] = {
488 { 0, "basicLevels" },
489 { 1, "other" },
490 { 0, NULL }
493 static const ber_choice_t AuthenticationLevel_choice[] = {
494 { 0, &hf_dsp_basicLevels , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_basicLevels },
495 { 1, &hf_dsp_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_dsp_EXTERNAL },
496 { 0, NULL, 0, 0, 0, NULL }
499 static int
500 dissect_dsp_AuthenticationLevel(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
501 offset = dissect_ber_choice(actx, tree, tvb, offset,
502 AuthenticationLevel_choice, hf_index, ett_dsp_AuthenticationLevel,
503 NULL);
505 return offset;
509 static const ber_sequence_t Exclusions_set_of[1] = {
510 { &hf_dsp_Exclusions_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_RDNSequence },
514 dissect_dsp_Exclusions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
515 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
516 Exclusions_set_of, hf_index, ett_dsp_Exclusions);
518 return offset;
522 static const value_string dsp_T_nonDapPdu_vals[] = {
523 { 0, "ldap" },
524 { 0, NULL }
528 static int
529 dissect_dsp_T_nonDapPdu(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
530 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
531 NULL);
533 return offset;
537 static const ber_sequence_t ChainingArguments_set[] = {
538 { &hf_dsp_originator , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
539 { &hf_dsp_targetObjectDN , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
540 { &hf_dsp_operationProgress, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
541 { &hf_dsp_traceInformation, BER_CLASS_CON, 3, 0, dissect_dsp_TraceInformation },
542 { &hf_dsp_aliasDereferenced, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
543 { &hf_dsp_aliasedRDNs , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
544 { &hf_dsp_returnCrossRefs , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
545 { &hf_dsp_referenceType , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
546 { &hf_dsp_info , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dsp_DomainInfo },
547 { &hf_dsp_timeLimit , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dsp_Time },
548 { &hf_dsp_securityParameters, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
549 { &hf_dsp_entryOnly , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
550 { &hf_dsp_uniqueIdentifier, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_x509sat_UniqueIdentifier },
551 { &hf_dsp_authenticationLevel, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dsp_AuthenticationLevel },
552 { &hf_dsp_exclusions , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
553 { &hf_dsp_excludeShadows , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
554 { &hf_dsp_nameResolveOnMaster, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
555 { &hf_dsp_operationIdentifier, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
556 { &hf_dsp_searchRuleId , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL, dissect_x509if_SearchRuleId },
557 { &hf_dsp_chainedRelaxation, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_x509if_MRMapping },
558 { &hf_dsp_relatedEntry , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
559 { &hf_dsp_dspPaging , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
560 { &hf_dsp_nonDapPdu , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_dsp_T_nonDapPdu },
561 { &hf_dsp_streamedResults , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
562 { &hf_dsp_excludeWriteableCopies, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
563 { NULL, 0, 0, 0, NULL }
566 static int
567 dissect_dsp_ChainingArguments(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
568 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
569 ChainingArguments_set, hf_index, ett_dsp_ChainingArguments);
571 return offset;
575 static const ber_sequence_t ChainedReadArgumentData_set[] = {
576 { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
577 { &hf_dsp_readArgument , BER_CLASS_CON, 0, 0, dissect_dap_ReadArgument },
578 { NULL, 0, 0, 0, NULL }
581 static int
582 dissect_dsp_ChainedReadArgumentData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
583 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
584 ChainedReadArgumentData_set, hf_index, ett_dsp_ChainedReadArgumentData);
586 return offset;
591 static int
592 dissect_dsp_BIT_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
593 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
594 NULL, 0, hf_index, -1,
595 NULL);
597 return offset;
601 static const ber_sequence_t T_signedChainedReadArgument_sequence[] = {
602 { &hf_dsp_chainedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadArgumentData },
603 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
604 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
605 { NULL, 0, 0, 0, NULL }
608 static int
609 dissect_dsp_T_signedChainedReadArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
610 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
611 T_signedChainedReadArgument_sequence, hf_index, ett_dsp_T_signedChainedReadArgument);
613 return offset;
617 static const ber_choice_t ChainedReadArgument_choice[] = {
618 { 0, &hf_dsp_unsignedChainedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadArgumentData },
619 { 1, &hf_dsp_signedChainedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedReadArgument },
620 { 0, NULL, 0, 0, 0, NULL }
623 static int
624 dissect_dsp_ChainedReadArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
625 offset = dissect_ber_choice(actx, tree, tvb, offset,
626 ChainedReadArgument_choice, hf_index, ett_dsp_ChainedReadArgument,
627 NULL);
629 return offset;
633 static const ber_sequence_t SET_OF_ProtocolInformation_set_of[1] = {
634 { &hf_dsp_protocolInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509sat_ProtocolInformation },
637 static int
638 dissect_dsp_SET_OF_ProtocolInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
639 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
640 SET_OF_ProtocolInformation_set_of, hf_index, ett_dsp_SET_OF_ProtocolInformation);
642 return offset;
646 static const value_string dsp_T_category_vals[] = {
647 { 0, "master" },
648 { 1, "shadow" },
649 { 0, NULL }
653 static int
654 dissect_dsp_T_category(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
655 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
656 NULL);
658 return offset;
662 static const value_string dsp_APCategory_vals[] = {
663 { 0, "master" },
664 { 1, "shadow" },
665 { 0, NULL }
669 static int
670 dissect_dsp_APCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
671 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
672 NULL);
674 return offset;
678 static const ber_sequence_t MasterOrShadowAccessPoint_set[] = {
679 { &hf_dsp_ae_title , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
680 { &hf_dsp_address , BER_CLASS_CON, 1, 0, dissect_x509sat_PresentationAddress },
681 { &hf_dsp_protocolInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_SET_OF_ProtocolInformation },
682 { &hf_dsp_access_point_category, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_APCategory },
683 { &hf_dsp_chainingRequired, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
684 { NULL, 0, 0, 0, NULL }
687 static int
688 dissect_dsp_MasterOrShadowAccessPoint(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
689 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
690 MasterOrShadowAccessPoint_set, hf_index, ett_dsp_MasterOrShadowAccessPoint);
692 return offset;
696 static const ber_sequence_t MasterAndShadowAccessPoints_set_of[1] = {
697 { &hf_dsp_MasterAndShadowAccessPoints_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_MasterOrShadowAccessPoint },
701 dissect_dsp_MasterAndShadowAccessPoints(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
702 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
703 MasterAndShadowAccessPoints_set_of, hf_index, ett_dsp_MasterAndShadowAccessPoints);
705 return offset;
709 static const ber_sequence_t AccessPointInformation_set[] = {
710 { &hf_dsp_ae_title , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
711 { &hf_dsp_address , BER_CLASS_CON, 1, 0, dissect_x509sat_PresentationAddress },
712 { &hf_dsp_protocolInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_SET_OF_ProtocolInformation },
713 { &hf_dsp_category , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_T_category },
714 { &hf_dsp_chainingRequired, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
715 { &hf_dsp_additionalPoints, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dsp_MasterAndShadowAccessPoints },
716 { NULL, 0, 0, 0, NULL }
720 dissect_dsp_AccessPointInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
721 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
722 AccessPointInformation_set, hf_index, ett_dsp_AccessPointInformation);
724 return offset;
728 static const ber_sequence_t CrossReference_set[] = {
729 { &hf_dsp_contextPrefix , BER_CLASS_CON, 0, 0, dissect_x509if_DistinguishedName },
730 { &hf_dsp_accessPoint , BER_CLASS_CON, 1, 0, dissect_dsp_AccessPointInformation },
731 { NULL, 0, 0, 0, NULL }
734 static int
735 dissect_dsp_CrossReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
736 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
737 CrossReference_set, hf_index, ett_dsp_CrossReference);
739 return offset;
743 static const ber_sequence_t SEQUENCE_OF_CrossReference_sequence_of[1] = {
744 { &hf_dsp_crossReferences_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_CrossReference },
747 static int
748 dissect_dsp_SEQUENCE_OF_CrossReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
749 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
750 SEQUENCE_OF_CrossReference_sequence_of, hf_index, ett_dsp_SEQUENCE_OF_CrossReference);
752 return offset;
756 static const ber_sequence_t ChainingResults_set[] = {
757 { &hf_dsp_info , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_dsp_DomainInfo },
758 { &hf_dsp_crossReferences , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dsp_SEQUENCE_OF_CrossReference },
759 { &hf_dsp_securityParameters, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
760 { &hf_dsp_alreadySearched , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
761 { NULL, 0, 0, 0, NULL }
764 static int
765 dissect_dsp_ChainingResults(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
766 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
767 ChainingResults_set, hf_index, ett_dsp_ChainingResults);
769 return offset;
773 static const ber_sequence_t ChainedReadResultData_set[] = {
774 { &hf_dsp_chainedResults , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
775 { &hf_dsp_readResult , BER_CLASS_CON, 0, 0, dissect_dap_ReadResult },
776 { NULL, 0, 0, 0, NULL }
779 static int
780 dissect_dsp_ChainedReadResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
781 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
782 ChainedReadResultData_set, hf_index, ett_dsp_ChainedReadResultData);
784 return offset;
788 static const ber_sequence_t T_signedChainedReadResult_sequence[] = {
789 { &hf_dsp_chainedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadResultData },
790 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
791 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
792 { NULL, 0, 0, 0, NULL }
795 static int
796 dissect_dsp_T_signedChainedReadResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
797 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
798 T_signedChainedReadResult_sequence, hf_index, ett_dsp_T_signedChainedReadResult);
800 return offset;
804 static const ber_choice_t ChainedReadResult_choice[] = {
805 { 0, &hf_dsp_unsignedChainedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadResultData },
806 { 1, &hf_dsp_signedChainedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedReadResult },
807 { 0, NULL, 0, 0, 0, NULL }
810 static int
811 dissect_dsp_ChainedReadResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
812 offset = dissect_ber_choice(actx, tree, tvb, offset,
813 ChainedReadResult_choice, hf_index, ett_dsp_ChainedReadResult,
814 NULL);
816 return offset;
820 static const ber_sequence_t ChainedCompareArgumentData_set[] = {
821 { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
822 { &hf_dsp_compareArgument , BER_CLASS_CON, 0, 0, dissect_dap_CompareArgument },
823 { NULL, 0, 0, 0, NULL }
826 static int
827 dissect_dsp_ChainedCompareArgumentData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
828 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
829 ChainedCompareArgumentData_set, hf_index, ett_dsp_ChainedCompareArgumentData);
831 return offset;
835 static const ber_sequence_t T_signedChainedCompareArgument_sequence[] = {
836 { &hf_dsp_chainedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareArgumentData },
837 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
838 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
839 { NULL, 0, 0, 0, NULL }
842 static int
843 dissect_dsp_T_signedChainedCompareArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
844 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
845 T_signedChainedCompareArgument_sequence, hf_index, ett_dsp_T_signedChainedCompareArgument);
847 return offset;
851 static const ber_choice_t ChainedCompareArgument_choice[] = {
852 { 0, &hf_dsp_unsignedChainedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareArgumentData },
853 { 1, &hf_dsp_signedChainedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedCompareArgument },
854 { 0, NULL, 0, 0, 0, NULL }
857 static int
858 dissect_dsp_ChainedCompareArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
859 offset = dissect_ber_choice(actx, tree, tvb, offset,
860 ChainedCompareArgument_choice, hf_index, ett_dsp_ChainedCompareArgument,
861 NULL);
863 return offset;
867 static const ber_sequence_t ChainedCompareResultData_set[] = {
868 { &hf_dsp_chainedResults , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
869 { &hf_dsp_compareResult , BER_CLASS_CON, 0, 0, dissect_dap_CompareResult },
870 { NULL, 0, 0, 0, NULL }
873 static int
874 dissect_dsp_ChainedCompareResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
875 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
876 ChainedCompareResultData_set, hf_index, ett_dsp_ChainedCompareResultData);
878 return offset;
882 static const ber_sequence_t T_signedChainedCompareResult_sequence[] = {
883 { &hf_dsp_chainedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareResultData },
884 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
885 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
886 { NULL, 0, 0, 0, NULL }
889 static int
890 dissect_dsp_T_signedChainedCompareResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
891 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
892 T_signedChainedCompareResult_sequence, hf_index, ett_dsp_T_signedChainedCompareResult);
894 return offset;
898 static const ber_choice_t ChainedCompareResult_choice[] = {
899 { 0, &hf_dsp_unsignedChainedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareResultData },
900 { 1, &hf_dsp_signedChainedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedCompareResult },
901 { 0, NULL, 0, 0, 0, NULL }
904 static int
905 dissect_dsp_ChainedCompareResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
906 offset = dissect_ber_choice(actx, tree, tvb, offset,
907 ChainedCompareResult_choice, hf_index, ett_dsp_ChainedCompareResult,
908 NULL);
910 return offset;
915 static int
916 dissect_dsp_ChainedAbandonArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
917 offset = dissect_dap_AbandonArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
919 return offset;
924 static int
925 dissect_dsp_ChainedAbandonResult(bool 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_dap_AbandonResult(implicit_tag, tvb, offset, actx, tree, hf_index);
928 return offset;
932 static const ber_sequence_t ChainedListArgumentData_set[] = {
933 { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
934 { &hf_dsp_listArgument , BER_CLASS_CON, 0, 0, dissect_dap_ListArgument },
935 { NULL, 0, 0, 0, NULL }
938 static int
939 dissect_dsp_ChainedListArgumentData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
940 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
941 ChainedListArgumentData_set, hf_index, ett_dsp_ChainedListArgumentData);
943 return offset;
947 static const ber_sequence_t T_signedChainedListArgument_sequence[] = {
948 { &hf_dsp_chainedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListArgumentData },
949 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
950 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
951 { NULL, 0, 0, 0, NULL }
954 static int
955 dissect_dsp_T_signedChainedListArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
956 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
957 T_signedChainedListArgument_sequence, hf_index, ett_dsp_T_signedChainedListArgument);
959 return offset;
963 static const ber_choice_t ChainedListArgument_choice[] = {
964 { 0, &hf_dsp_unsignedChainedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListArgumentData },
965 { 1, &hf_dsp_signedChainedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedListArgument },
966 { 0, NULL, 0, 0, 0, NULL }
969 static int
970 dissect_dsp_ChainedListArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
971 offset = dissect_ber_choice(actx, tree, tvb, offset,
972 ChainedListArgument_choice, hf_index, ett_dsp_ChainedListArgument,
973 NULL);
975 return offset;
979 static const ber_sequence_t ChainedListResultData_set[] = {
980 { &hf_dsp_chainedResults , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
981 { &hf_dsp_listResult , BER_CLASS_CON, 0, 0, dissect_dap_ListResult },
982 { NULL, 0, 0, 0, NULL }
985 static int
986 dissect_dsp_ChainedListResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
987 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
988 ChainedListResultData_set, hf_index, ett_dsp_ChainedListResultData);
990 return offset;
994 static const ber_sequence_t T_signedChainedListResult_sequence[] = {
995 { &hf_dsp_chainedListResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListResultData },
996 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
997 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
998 { NULL, 0, 0, 0, NULL }
1001 static int
1002 dissect_dsp_T_signedChainedListResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1003 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1004 T_signedChainedListResult_sequence, hf_index, ett_dsp_T_signedChainedListResult);
1006 return offset;
1010 static const ber_choice_t ChainedListResult_choice[] = {
1011 { 0, &hf_dsp_unsignedChainedListResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListResultData },
1012 { 1, &hf_dsp_signedChainedListResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedListResult },
1013 { 0, NULL, 0, 0, 0, NULL }
1016 static int
1017 dissect_dsp_ChainedListResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1018 offset = dissect_ber_choice(actx, tree, tvb, offset,
1019 ChainedListResult_choice, hf_index, ett_dsp_ChainedListResult,
1020 NULL);
1022 return offset;
1026 static const ber_sequence_t ChainedSearchArgumentData_set[] = {
1027 { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1028 { &hf_dsp_searchArgument , BER_CLASS_CON, 0, 0, dissect_dap_SearchArgument },
1029 { NULL, 0, 0, 0, NULL }
1032 static int
1033 dissect_dsp_ChainedSearchArgumentData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1034 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1035 ChainedSearchArgumentData_set, hf_index, ett_dsp_ChainedSearchArgumentData);
1037 return offset;
1041 static const ber_sequence_t T_signedChainedSearchArgument_sequence[] = {
1042 { &hf_dsp_chainedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchArgumentData },
1043 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1044 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1045 { NULL, 0, 0, 0, NULL }
1048 static int
1049 dissect_dsp_T_signedChainedSearchArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1050 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1051 T_signedChainedSearchArgument_sequence, hf_index, ett_dsp_T_signedChainedSearchArgument);
1053 return offset;
1057 static const ber_choice_t ChainedSearchArgument_choice[] = {
1058 { 0, &hf_dsp_unsignedChainedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchArgumentData },
1059 { 1, &hf_dsp_signedChainedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedSearchArgument },
1060 { 0, NULL, 0, 0, 0, NULL }
1063 static int
1064 dissect_dsp_ChainedSearchArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1065 offset = dissect_ber_choice(actx, tree, tvb, offset,
1066 ChainedSearchArgument_choice, hf_index, ett_dsp_ChainedSearchArgument,
1067 NULL);
1069 return offset;
1073 static const ber_sequence_t ChainedSearchResultData_set[] = {
1074 { &hf_dsp_chainedResults , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1075 { &hf_dsp_searchResult , BER_CLASS_CON, 0, 0, dissect_dap_SearchResult },
1076 { NULL, 0, 0, 0, NULL }
1079 static int
1080 dissect_dsp_ChainedSearchResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1081 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1082 ChainedSearchResultData_set, hf_index, ett_dsp_ChainedSearchResultData);
1084 return offset;
1088 static const ber_sequence_t T_signedChainedSearchResult_sequence[] = {
1089 { &hf_dsp_chainedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchResultData },
1090 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1091 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1092 { NULL, 0, 0, 0, NULL }
1095 static int
1096 dissect_dsp_T_signedChainedSearchResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1097 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1098 T_signedChainedSearchResult_sequence, hf_index, ett_dsp_T_signedChainedSearchResult);
1100 return offset;
1104 static const ber_choice_t ChainedSearchResult_choice[] = {
1105 { 0, &hf_dsp_unsignedChainedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchResultData },
1106 { 1, &hf_dsp_signedChainedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedSearchResult },
1107 { 0, NULL, 0, 0, 0, NULL }
1110 static int
1111 dissect_dsp_ChainedSearchResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1112 offset = dissect_ber_choice(actx, tree, tvb, offset,
1113 ChainedSearchResult_choice, hf_index, ett_dsp_ChainedSearchResult,
1114 NULL);
1116 return offset;
1120 static const ber_sequence_t ChainedAddEntryArgumentData_set[] = {
1121 { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1122 { &hf_dsp_addEntryArgument, BER_CLASS_CON, 0, 0, dissect_dap_AddEntryArgument },
1123 { NULL, 0, 0, 0, NULL }
1126 static int
1127 dissect_dsp_ChainedAddEntryArgumentData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1128 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1129 ChainedAddEntryArgumentData_set, hf_index, ett_dsp_ChainedAddEntryArgumentData);
1131 return offset;
1135 static const ber_sequence_t T_signedChainedAddEntryArgument_sequence[] = {
1136 { &hf_dsp_chainedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryArgumentData },
1137 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1138 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1139 { NULL, 0, 0, 0, NULL }
1142 static int
1143 dissect_dsp_T_signedChainedAddEntryArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1144 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1145 T_signedChainedAddEntryArgument_sequence, hf_index, ett_dsp_T_signedChainedAddEntryArgument);
1147 return offset;
1151 static const ber_choice_t ChainedAddEntryArgument_choice[] = {
1152 { 0, &hf_dsp_unsignedChainedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryArgumentData },
1153 { 1, &hf_dsp_signedChainedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedAddEntryArgument },
1154 { 0, NULL, 0, 0, 0, NULL }
1157 static int
1158 dissect_dsp_ChainedAddEntryArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1159 offset = dissect_ber_choice(actx, tree, tvb, offset,
1160 ChainedAddEntryArgument_choice, hf_index, ett_dsp_ChainedAddEntryArgument,
1161 NULL);
1163 return offset;
1167 static const ber_sequence_t ChainedAddEntryResultData_set[] = {
1168 { &hf_dsp_chainedResults , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1169 { &hf_dsp_addEntryResult , BER_CLASS_CON, 0, 0, dissect_dap_AddEntryResult },
1170 { NULL, 0, 0, 0, NULL }
1173 static int
1174 dissect_dsp_ChainedAddEntryResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1175 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1176 ChainedAddEntryResultData_set, hf_index, ett_dsp_ChainedAddEntryResultData);
1178 return offset;
1182 static const ber_sequence_t T_signedChainedAddEntryResult_sequence[] = {
1183 { &hf_dsp_chainedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryResultData },
1184 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1185 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1186 { NULL, 0, 0, 0, NULL }
1189 static int
1190 dissect_dsp_T_signedChainedAddEntryResult(bool 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_sequence(implicit_tag, actx, tree, tvb, offset,
1192 T_signedChainedAddEntryResult_sequence, hf_index, ett_dsp_T_signedChainedAddEntryResult);
1194 return offset;
1198 static const ber_choice_t ChainedAddEntryResult_choice[] = {
1199 { 0, &hf_dsp_unsignedChainedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryResultData },
1200 { 1, &hf_dsp_signedChainedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedAddEntryResult },
1201 { 0, NULL, 0, 0, 0, NULL }
1204 static int
1205 dissect_dsp_ChainedAddEntryResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1206 offset = dissect_ber_choice(actx, tree, tvb, offset,
1207 ChainedAddEntryResult_choice, hf_index, ett_dsp_ChainedAddEntryResult,
1208 NULL);
1210 return offset;
1214 static const ber_sequence_t ChainedRemoveEntryArgumentData_set[] = {
1215 { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1216 { &hf_dsp_removeEntryArgument, BER_CLASS_CON, 0, 0, dissect_dap_RemoveEntryArgument },
1217 { NULL, 0, 0, 0, NULL }
1220 static int
1221 dissect_dsp_ChainedRemoveEntryArgumentData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1222 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1223 ChainedRemoveEntryArgumentData_set, hf_index, ett_dsp_ChainedRemoveEntryArgumentData);
1225 return offset;
1229 static const ber_sequence_t T_signedChainedRemoveEntryArgument_sequence[] = {
1230 { &hf_dsp_chainedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryArgumentData },
1231 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1232 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1233 { NULL, 0, 0, 0, NULL }
1236 static int
1237 dissect_dsp_T_signedChainedRemoveEntryArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1238 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1239 T_signedChainedRemoveEntryArgument_sequence, hf_index, ett_dsp_T_signedChainedRemoveEntryArgument);
1241 return offset;
1245 static const ber_choice_t ChainedRemoveEntryArgument_choice[] = {
1246 { 0, &hf_dsp_unsignedChainedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryArgumentData },
1247 { 1, &hf_dsp_signedChainedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedRemoveEntryArgument },
1248 { 0, NULL, 0, 0, 0, NULL }
1251 static int
1252 dissect_dsp_ChainedRemoveEntryArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1253 offset = dissect_ber_choice(actx, tree, tvb, offset,
1254 ChainedRemoveEntryArgument_choice, hf_index, ett_dsp_ChainedRemoveEntryArgument,
1255 NULL);
1257 return offset;
1261 static const ber_sequence_t ChainedRemoveEntryResultData_set[] = {
1262 { &hf_dsp_chainedResults , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1263 { &hf_dsp_removeEntryResult, BER_CLASS_CON, 0, 0, dissect_dap_RemoveEntryResult },
1264 { NULL, 0, 0, 0, NULL }
1267 static int
1268 dissect_dsp_ChainedRemoveEntryResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1269 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1270 ChainedRemoveEntryResultData_set, hf_index, ett_dsp_ChainedRemoveEntryResultData);
1272 return offset;
1276 static const ber_sequence_t T_signedChainedRemoveEntryResult_sequence[] = {
1277 { &hf_dsp_chainedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryResultData },
1278 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1279 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1280 { NULL, 0, 0, 0, NULL }
1283 static int
1284 dissect_dsp_T_signedChainedRemoveEntryResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1285 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1286 T_signedChainedRemoveEntryResult_sequence, hf_index, ett_dsp_T_signedChainedRemoveEntryResult);
1288 return offset;
1292 static const ber_choice_t ChainedRemoveEntryResult_choice[] = {
1293 { 0, &hf_dsp_unsignedChainedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryResultData },
1294 { 1, &hf_dsp_signedChainedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedRemoveEntryResult },
1295 { 0, NULL, 0, 0, 0, NULL }
1298 static int
1299 dissect_dsp_ChainedRemoveEntryResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1300 offset = dissect_ber_choice(actx, tree, tvb, offset,
1301 ChainedRemoveEntryResult_choice, hf_index, ett_dsp_ChainedRemoveEntryResult,
1302 NULL);
1304 return offset;
1308 static const ber_sequence_t ChainedModifyEntryArgumentData_set[] = {
1309 { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1310 { &hf_dsp_modifyEntryArgument, BER_CLASS_CON, 0, 0, dissect_dap_ModifyEntryArgument },
1311 { NULL, 0, 0, 0, NULL }
1314 static int
1315 dissect_dsp_ChainedModifyEntryArgumentData(bool 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_set(implicit_tag, actx, tree, tvb, offset,
1317 ChainedModifyEntryArgumentData_set, hf_index, ett_dsp_ChainedModifyEntryArgumentData);
1319 return offset;
1323 static const ber_sequence_t T_signedChainedModifyEntryArgument_sequence[] = {
1324 { &hf_dsp_chainedModifyEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryArgumentData },
1325 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1326 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1327 { NULL, 0, 0, 0, NULL }
1330 static int
1331 dissect_dsp_T_signedChainedModifyEntryArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1332 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1333 T_signedChainedModifyEntryArgument_sequence, hf_index, ett_dsp_T_signedChainedModifyEntryArgument);
1335 return offset;
1339 static const ber_choice_t ChainedModifyEntryArgument_choice[] = {
1340 { 0, &hf_dsp_unsignedChainedModifyEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryArgumentData },
1341 { 1, &hf_dsp_signedChainedModifyEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyEntryArgument },
1342 { 0, NULL, 0, 0, 0, NULL }
1345 static int
1346 dissect_dsp_ChainedModifyEntryArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1347 offset = dissect_ber_choice(actx, tree, tvb, offset,
1348 ChainedModifyEntryArgument_choice, hf_index, ett_dsp_ChainedModifyEntryArgument,
1349 NULL);
1351 return offset;
1355 static const ber_sequence_t ChainedModifyEntryResultData_set[] = {
1356 { &hf_dsp_chainedResults , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1357 { &hf_dsp_modifyEntryResult, BER_CLASS_CON, 0, 0, dissect_dap_ModifyEntryResult },
1358 { NULL, 0, 0, 0, NULL }
1361 static int
1362 dissect_dsp_ChainedModifyEntryResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1363 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1364 ChainedModifyEntryResultData_set, hf_index, ett_dsp_ChainedModifyEntryResultData);
1366 return offset;
1370 static const ber_sequence_t T_signedChainedModifyEntryResult_sequence[] = {
1371 { &hf_dsp_chainedModifyEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryResultData },
1372 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1373 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1374 { NULL, 0, 0, 0, NULL }
1377 static int
1378 dissect_dsp_T_signedChainedModifyEntryResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1379 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1380 T_signedChainedModifyEntryResult_sequence, hf_index, ett_dsp_T_signedChainedModifyEntryResult);
1382 return offset;
1386 static const ber_choice_t ChainedModifyEntryResult_choice[] = {
1387 { 0, &hf_dsp_unsignedChainedModifyEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryResultData },
1388 { 1, &hf_dsp_signedChainedModifyEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyEntryResult },
1389 { 0, NULL, 0, 0, 0, NULL }
1392 static int
1393 dissect_dsp_ChainedModifyEntryResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1394 offset = dissect_ber_choice(actx, tree, tvb, offset,
1395 ChainedModifyEntryResult_choice, hf_index, ett_dsp_ChainedModifyEntryResult,
1396 NULL);
1398 return offset;
1402 static const ber_sequence_t ChainedModifyDNArgumentData_set[] = {
1403 { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1404 { &hf_dsp_modifyDNArgument, BER_CLASS_CON, 0, 0, dissect_dap_ModifyDNArgument },
1405 { NULL, 0, 0, 0, NULL }
1408 static int
1409 dissect_dsp_ChainedModifyDNArgumentData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1410 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1411 ChainedModifyDNArgumentData_set, hf_index, ett_dsp_ChainedModifyDNArgumentData);
1413 return offset;
1417 static const ber_sequence_t T_signedChainedModifyDNArgument_sequence[] = {
1418 { &hf_dsp_chainedModifyDNArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNArgumentData },
1419 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1420 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1421 { NULL, 0, 0, 0, NULL }
1424 static int
1425 dissect_dsp_T_signedChainedModifyDNArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1426 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1427 T_signedChainedModifyDNArgument_sequence, hf_index, ett_dsp_T_signedChainedModifyDNArgument);
1429 return offset;
1433 static const ber_choice_t ChainedModifyDNArgument_choice[] = {
1434 { 0, &hf_dsp_unsignedChainedModifyDNArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNArgumentData },
1435 { 1, &hf_dsp_signedChainedModifyDNArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyDNArgument },
1436 { 0, NULL, 0, 0, 0, NULL }
1439 static int
1440 dissect_dsp_ChainedModifyDNArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1441 offset = dissect_ber_choice(actx, tree, tvb, offset,
1442 ChainedModifyDNArgument_choice, hf_index, ett_dsp_ChainedModifyDNArgument,
1443 NULL);
1445 return offset;
1449 static const ber_sequence_t ChainedModifyDNResultData_set[] = {
1450 { &hf_dsp_chainedResults , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1451 { &hf_dsp_modifyDNResult , BER_CLASS_CON, 0, 0, dissect_dap_ModifyDNResult },
1452 { NULL, 0, 0, 0, NULL }
1455 static int
1456 dissect_dsp_ChainedModifyDNResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1457 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1458 ChainedModifyDNResultData_set, hf_index, ett_dsp_ChainedModifyDNResultData);
1460 return offset;
1464 static const ber_sequence_t T_signedChainedModifyDNResult_sequence[] = {
1465 { &hf_dsp_chainedModifyDNResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNResultData },
1466 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1467 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1468 { NULL, 0, 0, 0, NULL }
1471 static int
1472 dissect_dsp_T_signedChainedModifyDNResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1473 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1474 T_signedChainedModifyDNResult_sequence, hf_index, ett_dsp_T_signedChainedModifyDNResult);
1476 return offset;
1480 static const ber_choice_t ChainedModifyDNResult_choice[] = {
1481 { 0, &hf_dsp_unsignedChainedModifyDNResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNResultData },
1482 { 1, &hf_dsp_signedChainedModifyDNResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyDNResult },
1483 { 0, NULL, 0, 0, 0, NULL }
1486 static int
1487 dissect_dsp_ChainedModifyDNResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1488 offset = dissect_ber_choice(actx, tree, tvb, offset,
1489 ChainedModifyDNResult_choice, hf_index, ett_dsp_ChainedModifyDNResult,
1490 NULL);
1492 return offset;
1496 static const ber_sequence_t SET_OF_AccessPointInformation_set_of[1] = {
1497 { &hf_dsp_accessPoints_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_AccessPointInformation },
1500 static int
1501 dissect_dsp_SET_OF_AccessPointInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1502 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1503 SET_OF_AccessPointInformation_set_of, hf_index, ett_dsp_SET_OF_AccessPointInformation);
1505 return offset;
1509 static const ber_sequence_t ContinuationReference_set[] = {
1510 { &hf_dsp_targetObject , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
1511 { &hf_dsp_aliasedRDNs , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
1512 { &hf_dsp_operationProgress, BER_CLASS_CON, 2, 0, dissect_dsp_OperationProgress },
1513 { &hf_dsp_rdnsResolved , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
1514 { &hf_dsp_referenceType , BER_CLASS_CON, 4, 0, dissect_dsp_ReferenceType },
1515 { &hf_dsp_accessPoints_01 , BER_CLASS_CON, 5, 0, dissect_dsp_SET_OF_AccessPointInformation },
1516 { &hf_dsp_entryOnly , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
1517 { &hf_dsp_exclusions , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
1518 { &hf_dsp_returnToDUA , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
1519 { &hf_dsp_nameResolveOnMaster, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
1520 { NULL, 0, 0, 0, NULL }
1524 dissect_dsp_ContinuationReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1525 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1526 ContinuationReference_set, hf_index, ett_dsp_ContinuationReference);
1528 return offset;
1532 static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = {
1533 { &hf_dsp_notification_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
1536 static int
1537 dissect_dsp_SEQUENCE_OF_Attribute(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1538 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1539 SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_dsp_SEQUENCE_OF_Attribute);
1541 return offset;
1545 static const ber_sequence_t DSAReferralData_set[] = {
1546 { &hf_dsp_reference , BER_CLASS_CON, 0, 0, dissect_dsp_ContinuationReference },
1547 { &hf_dsp_contextPrefix , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
1548 { &hf_dsp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
1549 { &hf_dsp_performer , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
1550 { &hf_dsp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
1551 { &hf_dsp_notification , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_SEQUENCE_OF_Attribute },
1552 { NULL, 0, 0, 0, NULL }
1555 static int
1556 dissect_dsp_DSAReferralData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1557 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1558 DSAReferralData_set, hf_index, ett_dsp_DSAReferralData);
1560 return offset;
1564 static const ber_sequence_t T_signedDSAReferral_sequence[] = {
1565 { &hf_dsp_dsaReferral , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_DSAReferralData },
1566 { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1567 { &hf_dsp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1568 { NULL, 0, 0, 0, NULL }
1571 static int
1572 dissect_dsp_T_signedDSAReferral(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1573 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1574 T_signedDSAReferral_sequence, hf_index, ett_dsp_T_signedDSAReferral);
1576 return offset;
1580 static const ber_choice_t DSAReferral_choice[] = {
1581 { 0, &hf_dsp_unsignedDSAReferral, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_DSAReferralData },
1582 { 1, &hf_dsp_signedDSAReferral, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedDSAReferral },
1583 { 0, NULL, 0, 0, 0, NULL }
1586 static int
1587 dissect_dsp_DSAReferral(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1588 offset = dissect_ber_choice(actx, tree, tvb, offset,
1589 DSAReferral_choice, hf_index, ett_dsp_DSAReferral,
1590 NULL);
1592 return offset;
1597 static int
1598 dissect_dsp_LabeledURI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1599 offset = dissect_x509sat_DirectoryString(implicit_tag, tvb, offset, actx, tree, hf_index);
1601 return offset;
1605 static const ber_sequence_t AccessPoint_set[] = {
1606 { &hf_dsp_ae_title , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
1607 { &hf_dsp_address , BER_CLASS_CON, 1, 0, dissect_x509sat_PresentationAddress },
1608 { &hf_dsp_protocolInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_SET_OF_ProtocolInformation },
1609 { &hf_dsp_labeledURI , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dsp_LabeledURI },
1610 { NULL, 0, 0, 0, NULL }
1614 dissect_dsp_AccessPoint(bool 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_set(implicit_tag, actx, tree, tvb, offset,
1616 AccessPoint_set, hf_index, ett_dsp_AccessPoint);
1618 return offset;
1622 static const ber_sequence_t DitBridgeKnowledge_sequence[] = {
1623 { &hf_dsp_domainLocalID , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509sat_DirectoryString },
1624 { &hf_dsp_accessPoints , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_MasterAndShadowAccessPoints },
1625 { NULL, 0, 0, 0, NULL }
1628 static int
1629 dissect_dsp_DitBridgeKnowledge(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1630 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1631 DitBridgeKnowledge_sequence, hf_index, ett_dsp_DitBridgeKnowledge);
1633 return offset;
1636 /*--- PDUs ---*/
1638 static int dissect_AccessPoint_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1639 int offset = 0;
1640 asn1_ctx_t asn1_ctx;
1641 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1642 offset = dissect_dsp_AccessPoint(false, tvb, offset, &asn1_ctx, tree, hf_dsp_AccessPoint_PDU);
1643 return offset;
1645 static int dissect_MasterAndShadowAccessPoints_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1646 int offset = 0;
1647 asn1_ctx_t asn1_ctx;
1648 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1649 offset = dissect_dsp_MasterAndShadowAccessPoints(false, tvb, offset, &asn1_ctx, tree, hf_dsp_MasterAndShadowAccessPoints_PDU);
1650 return offset;
1652 static int dissect_DitBridgeKnowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1653 int offset = 0;
1654 asn1_ctx_t asn1_ctx;
1655 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1656 offset = dissect_dsp_DitBridgeKnowledge(false, tvb, offset, &asn1_ctx, tree, hf_dsp_DitBridgeKnowledge_PDU);
1657 return offset;
1661 static dissector_handle_t dsp_handle;
1664 * Dissect X518 PDUs inside a ROS PDUs
1666 static int
1667 dissect_dsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data)
1669 int offset = 0;
1670 int old_offset;
1671 proto_item *item;
1672 proto_tree *tree;
1673 struct SESSION_DATA_STRUCTURE* session;
1674 int (*dsp_dissector)(bool implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) = NULL;
1675 const char *dsp_op_name;
1676 asn1_ctx_t asn1_ctx;
1678 /* do we have operation information from the ROS dissector? */
1679 if (data == NULL)
1680 return 0;
1681 session = (struct SESSION_DATA_STRUCTURE*)data;
1683 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1685 item = proto_tree_add_item(parent_tree, proto_dsp, tvb, 0, -1, ENC_NA);
1686 tree = proto_item_add_subtree(item, ett_dsp);
1688 col_set_str(pinfo->cinfo, COL_PROTOCOL, "DAP");
1689 col_clear(pinfo->cinfo, COL_INFO);
1691 asn1_ctx.private_data = session;
1693 switch(session->ros_op & ROS_OP_MASK) {
1694 case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
1695 dsp_dissector = dissect_dsp_DSASystemBindArgument;
1696 dsp_op_name = "System-Bind-Argument";
1697 break;
1698 case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
1699 dsp_dissector = dissect_dsp_DSASystemBindResult;
1700 dsp_op_name = "System-Bind-Result";
1701 break;
1702 case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
1703 dsp_dissector = dissect_dsp_DSASystemBindError;
1704 dsp_op_name = "System-Bind-Error";
1705 break;
1706 case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
1707 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1708 case 1: /* read */
1709 dsp_dissector = dissect_dsp_ChainedReadArgument;
1710 dsp_op_name = "Chained-Read-Argument";
1711 break;
1712 case 2: /* compare */
1713 dsp_dissector = dissect_dsp_ChainedCompareArgument;
1714 dsp_op_name = "Chained-Compare-Argument";
1715 break;
1716 case 3: /* abandon */
1717 dsp_dissector = dissect_dsp_ChainedAbandonArgument;
1718 dsp_op_name = "Chained-Abandon-Argument";
1719 break;
1720 case 4: /* list */
1721 dsp_dissector = dissect_dsp_ChainedListArgument;
1722 dsp_op_name = "Chained-List-Argument";
1723 break;
1724 case 5: /* search */
1725 dsp_dissector = dissect_dsp_ChainedSearchArgument;
1726 dsp_op_name = "Chained-Search-Argument";
1727 break;
1728 case 6: /* addEntry */
1729 dsp_dissector = dissect_dsp_ChainedAddEntryArgument;
1730 dsp_op_name = "Chained-Add-Entry-Argument";
1731 break;
1732 case 7: /* removeEntry */
1733 dsp_dissector = dissect_dsp_ChainedRemoveEntryArgument;
1734 dsp_op_name = "Chained-Remove-Entry-Argument";
1735 break;
1736 case 8: /* modifyEntry */
1737 dsp_dissector = dissect_dsp_ChainedModifyEntryArgument;
1738 dsp_op_name = "ChainedModify-Entry-Argument";
1739 break;
1740 case 9: /* modifyDN */
1741 dsp_dissector = dissect_dsp_ChainedModifyDNArgument;
1742 dsp_op_name = "ChainedModify-DN-Argument";
1743 break;
1744 default:
1745 proto_tree_add_expert_format(tree, pinfo, &ei_dsp_unsupported_opcode, tvb, offset, -1,
1746 "Unsupported DSP opcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
1747 break;
1749 break;
1750 case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
1751 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1752 case 1: /* read */
1753 dsp_dissector = dissect_dsp_ChainedReadResult;
1754 dsp_op_name = "Chained-Read-Result";
1755 break;
1756 case 2: /* compare */
1757 dsp_dissector = dissect_dsp_ChainedCompareResult;
1758 dsp_op_name = "Chained-Compare-Result";
1759 break;
1760 case 3: /* abandon */
1761 dsp_dissector = dissect_dsp_ChainedAbandonResult;
1762 dsp_op_name = "Chained-Abandon-Result";
1763 break;
1764 case 4: /* list */
1765 dsp_dissector = dissect_dsp_ChainedListResult;
1766 dsp_op_name = "Chained-List-Result";
1767 break;
1768 case 5: /* search */
1769 dsp_dissector = dissect_dsp_ChainedSearchResult;
1770 dsp_op_name = "Chained-Search-Result";
1771 break;
1772 case 6: /* addEntry */
1773 dsp_dissector = dissect_dsp_ChainedAddEntryResult;
1774 dsp_op_name = "Chained-Add-Entry-Result";
1775 break;
1776 case 7: /* removeEntry */
1777 dsp_dissector = dissect_dsp_ChainedRemoveEntryResult;
1778 dsp_op_name = "Chained-Remove-Entry-Result";
1779 break;
1780 case 8: /* modifyEntry */
1781 dsp_dissector = dissect_dsp_ChainedModifyEntryResult;
1782 dsp_op_name = "Chained-Modify-Entry-Result";
1783 break;
1784 case 9: /* modifyDN */
1785 dsp_dissector = dissect_dsp_ChainedModifyDNResult;
1786 dsp_op_name = "ChainedModify-DN-Result";
1787 break;
1788 default:
1789 proto_tree_add_expert(tree, pinfo, &ei_dsp_unsupported_opcode, tvb, offset, -1);
1790 break;
1792 break;
1793 case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
1794 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1795 case 1: /* attributeError */
1796 dsp_dissector = dissect_dap_AttributeError;
1797 dsp_op_name = "Attribute-Error";
1798 break;
1799 case 2: /* nameError */
1800 dsp_dissector = dissect_dap_NameError;
1801 dsp_op_name = "Name-Error";
1802 break;
1803 case 3: /* serviceError */
1804 dsp_dissector = dissect_dap_ServiceError;
1805 dsp_op_name = "Service-Error";
1806 break;
1807 case 4: /* referral */
1808 dsp_dissector = dissect_dap_Referral;
1809 dsp_op_name = "Referral";
1810 break;
1811 case 5: /* abandoned */
1812 dsp_dissector = dissect_dap_Abandoned;
1813 dsp_op_name = "Abandoned";
1814 break;
1815 case 6: /* securityError */
1816 dsp_dissector = dissect_dap_SecurityError;
1817 dsp_op_name = "Security-Error";
1818 break;
1819 case 7: /* abandonFailed */
1820 dsp_dissector = dissect_dap_AbandonFailedError;
1821 dsp_op_name = "Abandon-Failed-Error";
1822 break;
1823 case 8: /* updateError */
1824 dsp_dissector = dissect_dap_UpdateError;
1825 dsp_op_name = "Update-Error";
1826 break;
1827 case 9: /* DSAReferral */
1828 dsp_dissector = dissect_dsp_DSAReferral;
1829 dsp_op_name = "DSA-Referral";
1830 break;
1831 default:
1832 proto_tree_add_expert(tree, pinfo, &ei_dsp_unsupported_errcode, tvb, offset, -1);
1833 break;
1835 break;
1836 default:
1837 proto_tree_add_expert(tree, pinfo, &ei_dsp_unsupported_pdu, tvb, offset, -1);
1838 return tvb_captured_length(tvb);
1841 if(dsp_dissector) {
1842 col_set_str(pinfo->cinfo, COL_INFO, dsp_op_name);
1844 while (tvb_reported_length_remaining(tvb, offset) > 0){
1845 old_offset=offset;
1846 offset=(*dsp_dissector)(false, tvb, offset, &asn1_ctx, tree, -1);
1847 if(offset == old_offset){
1848 proto_tree_add_expert(tree, pinfo, &ei_dsp_zero_pdu, tvb, offset, -1);
1849 break;
1854 return tvb_captured_length(tvb);
1858 /*--- proto_register_dsp -------------------------------------------*/
1859 void proto_register_dsp(void) {
1861 /* List of fields */
1862 static hf_register_info hf[] =
1864 { &hf_dsp_AccessPoint_PDU,
1865 { "AccessPoint", "dsp.AccessPoint_element",
1866 FT_NONE, BASE_NONE, NULL, 0,
1867 NULL, HFILL }},
1868 { &hf_dsp_MasterAndShadowAccessPoints_PDU,
1869 { "MasterAndShadowAccessPoints", "dsp.MasterAndShadowAccessPoints",
1870 FT_UINT32, BASE_DEC, NULL, 0,
1871 NULL, HFILL }},
1872 { &hf_dsp_DitBridgeKnowledge_PDU,
1873 { "DitBridgeKnowledge", "dsp.DitBridgeKnowledge_element",
1874 FT_NONE, BASE_NONE, NULL, 0,
1875 NULL, HFILL }},
1876 { &hf_dsp_chainedArgument,
1877 { "chainedArgument", "dsp.chainedArgument_element",
1878 FT_NONE, BASE_NONE, NULL, 0,
1879 "ChainingArguments", HFILL }},
1880 { &hf_dsp_readArgument,
1881 { "readArgument", "dsp.readArgument",
1882 FT_UINT32, BASE_DEC, VALS(dap_ReadArgument_vals), 0,
1883 NULL, HFILL }},
1884 { &hf_dsp_unsignedChainedReadArgument,
1885 { "unsignedChainedReadArgument", "dsp.unsignedChainedReadArgument_element",
1886 FT_NONE, BASE_NONE, NULL, 0,
1887 "ChainedReadArgumentData", HFILL }},
1888 { &hf_dsp_signedChainedReadArgument,
1889 { "signedChainedReadArgument", "dsp.signedChainedReadArgument_element",
1890 FT_NONE, BASE_NONE, NULL, 0,
1891 NULL, HFILL }},
1892 { &hf_dsp_chainedReadArgument,
1893 { "chainedReadArgument", "dsp.chainedReadArgument_element",
1894 FT_NONE, BASE_NONE, NULL, 0,
1895 "ChainedReadArgumentData", HFILL }},
1896 { &hf_dsp_algorithmIdentifier,
1897 { "algorithmIdentifier", "dsp.algorithmIdentifier_element",
1898 FT_NONE, BASE_NONE, NULL, 0,
1899 NULL, HFILL }},
1900 { &hf_dsp_encrypted,
1901 { "encrypted", "dsp.encrypted",
1902 FT_BYTES, BASE_NONE, NULL, 0,
1903 "BIT_STRING", HFILL }},
1904 { &hf_dsp_chainedResults,
1905 { "chainedResults", "dsp.chainedResults_element",
1906 FT_NONE, BASE_NONE, NULL, 0,
1907 "ChainingResults", HFILL }},
1908 { &hf_dsp_readResult,
1909 { "readResult", "dsp.readResult",
1910 FT_UINT32, BASE_DEC, VALS(dap_ReadResult_vals), 0,
1911 NULL, HFILL }},
1912 { &hf_dsp_unsignedChainedReadResult,
1913 { "unsignedChainedReadResult", "dsp.unsignedChainedReadResult_element",
1914 FT_NONE, BASE_NONE, NULL, 0,
1915 "ChainedReadResultData", HFILL }},
1916 { &hf_dsp_signedChainedReadResult,
1917 { "signedChainedReadResult", "dsp.signedChainedReadResult_element",
1918 FT_NONE, BASE_NONE, NULL, 0,
1919 NULL, HFILL }},
1920 { &hf_dsp_chainedReadResult,
1921 { "chainedReadResult", "dsp.chainedReadResult_element",
1922 FT_NONE, BASE_NONE, NULL, 0,
1923 "ChainedReadResultData", HFILL }},
1924 { &hf_dsp_compareArgument,
1925 { "compareArgument", "dsp.compareArgument",
1926 FT_UINT32, BASE_DEC, VALS(dap_CompareArgument_vals), 0,
1927 NULL, HFILL }},
1928 { &hf_dsp_unsignedChainedCompareArgument,
1929 { "unsignedChainedCompareArgument", "dsp.unsignedChainedCompareArgument_element",
1930 FT_NONE, BASE_NONE, NULL, 0,
1931 "ChainedCompareArgumentData", HFILL }},
1932 { &hf_dsp_signedChainedCompareArgument,
1933 { "signedChainedCompareArgument", "dsp.signedChainedCompareArgument_element",
1934 FT_NONE, BASE_NONE, NULL, 0,
1935 NULL, HFILL }},
1936 { &hf_dsp_chainedCompareArgument,
1937 { "chainedCompareArgument", "dsp.chainedCompareArgument_element",
1938 FT_NONE, BASE_NONE, NULL, 0,
1939 "ChainedCompareArgumentData", HFILL }},
1940 { &hf_dsp_compareResult,
1941 { "compareResult", "dsp.compareResult",
1942 FT_UINT32, BASE_DEC, VALS(dap_CompareResult_vals), 0,
1943 NULL, HFILL }},
1944 { &hf_dsp_unsignedChainedCompareResult,
1945 { "unsignedChainedCompareResult", "dsp.unsignedChainedCompareResult_element",
1946 FT_NONE, BASE_NONE, NULL, 0,
1947 "ChainedCompareResultData", HFILL }},
1948 { &hf_dsp_signedChainedCompareResult,
1949 { "signedChainedCompareResult", "dsp.signedChainedCompareResult_element",
1950 FT_NONE, BASE_NONE, NULL, 0,
1951 NULL, HFILL }},
1952 { &hf_dsp_chainedCompareResult,
1953 { "chainedCompareResult", "dsp.chainedCompareResult_element",
1954 FT_NONE, BASE_NONE, NULL, 0,
1955 "ChainedCompareResultData", HFILL }},
1956 { &hf_dsp_listArgument,
1957 { "listArgument", "dsp.listArgument",
1958 FT_UINT32, BASE_DEC, VALS(dap_ListArgument_vals), 0,
1959 NULL, HFILL }},
1960 { &hf_dsp_unsignedChainedListArgument,
1961 { "unsignedChainedListArgument", "dsp.unsignedChainedListArgument_element",
1962 FT_NONE, BASE_NONE, NULL, 0,
1963 "ChainedListArgumentData", HFILL }},
1964 { &hf_dsp_signedChainedListArgument,
1965 { "signedChainedListArgument", "dsp.signedChainedListArgument_element",
1966 FT_NONE, BASE_NONE, NULL, 0,
1967 NULL, HFILL }},
1968 { &hf_dsp_chainedListArgument,
1969 { "chainedListArgument", "dsp.chainedListArgument_element",
1970 FT_NONE, BASE_NONE, NULL, 0,
1971 "ChainedListArgumentData", HFILL }},
1972 { &hf_dsp_listResult,
1973 { "listResult", "dsp.listResult",
1974 FT_UINT32, BASE_DEC, VALS(dap_ListResult_vals), 0,
1975 NULL, HFILL }},
1976 { &hf_dsp_unsignedChainedListResult,
1977 { "unsignedChainedListResult", "dsp.unsignedChainedListResult_element",
1978 FT_NONE, BASE_NONE, NULL, 0,
1979 "ChainedListResultData", HFILL }},
1980 { &hf_dsp_signedChainedListResult,
1981 { "signedChainedListResult", "dsp.signedChainedListResult_element",
1982 FT_NONE, BASE_NONE, NULL, 0,
1983 NULL, HFILL }},
1984 { &hf_dsp_chainedListResult,
1985 { "chainedListResult", "dsp.chainedListResult_element",
1986 FT_NONE, BASE_NONE, NULL, 0,
1987 "ChainedListResultData", HFILL }},
1988 { &hf_dsp_searchArgument,
1989 { "searchArgument", "dsp.searchArgument",
1990 FT_UINT32, BASE_DEC, VALS(dap_SearchArgument_vals), 0,
1991 NULL, HFILL }},
1992 { &hf_dsp_unsignedChainedSearchArgument,
1993 { "unsignedChainedSearchArgument", "dsp.unsignedChainedSearchArgument_element",
1994 FT_NONE, BASE_NONE, NULL, 0,
1995 "ChainedSearchArgumentData", HFILL }},
1996 { &hf_dsp_signedChainedSearchArgument,
1997 { "signedChainedSearchArgument", "dsp.signedChainedSearchArgument_element",
1998 FT_NONE, BASE_NONE, NULL, 0,
1999 NULL, HFILL }},
2000 { &hf_dsp_chainedSearchArgument,
2001 { "chainedSearchArgument", "dsp.chainedSearchArgument_element",
2002 FT_NONE, BASE_NONE, NULL, 0,
2003 "ChainedSearchArgumentData", HFILL }},
2004 { &hf_dsp_searchResult,
2005 { "searchResult", "dsp.searchResult",
2006 FT_UINT32, BASE_DEC, VALS(dap_SearchResult_vals), 0,
2007 NULL, HFILL }},
2008 { &hf_dsp_unsignedChainedSearchResult,
2009 { "unsignedChainedSearchResult", "dsp.unsignedChainedSearchResult_element",
2010 FT_NONE, BASE_NONE, NULL, 0,
2011 "ChainedSearchResultData", HFILL }},
2012 { &hf_dsp_signedChainedSearchResult,
2013 { "signedChainedSearchResult", "dsp.signedChainedSearchResult_element",
2014 FT_NONE, BASE_NONE, NULL, 0,
2015 NULL, HFILL }},
2016 { &hf_dsp_chainedSearchResult,
2017 { "chainedSearchResult", "dsp.chainedSearchResult_element",
2018 FT_NONE, BASE_NONE, NULL, 0,
2019 "ChainedSearchResultData", HFILL }},
2020 { &hf_dsp_addEntryArgument,
2021 { "addEntryArgument", "dsp.addEntryArgument",
2022 FT_UINT32, BASE_DEC, VALS(dap_AddEntryArgument_vals), 0,
2023 NULL, HFILL }},
2024 { &hf_dsp_unsignedChainedAddEntryArgument,
2025 { "unsignedChainedAddEntryArgument", "dsp.unsignedChainedAddEntryArgument_element",
2026 FT_NONE, BASE_NONE, NULL, 0,
2027 "ChainedAddEntryArgumentData", HFILL }},
2028 { &hf_dsp_signedChainedAddEntryArgument,
2029 { "signedChainedAddEntryArgument", "dsp.signedChainedAddEntryArgument_element",
2030 FT_NONE, BASE_NONE, NULL, 0,
2031 NULL, HFILL }},
2032 { &hf_dsp_chainedAddEntryArgument,
2033 { "chainedAddEntryArgument", "dsp.chainedAddEntryArgument_element",
2034 FT_NONE, BASE_NONE, NULL, 0,
2035 "ChainedAddEntryArgumentData", HFILL }},
2036 { &hf_dsp_addEntryResult,
2037 { "addEntryResult", "dsp.addEntryResult",
2038 FT_UINT32, BASE_DEC, VALS(dap_AddEntryResult_vals), 0,
2039 NULL, HFILL }},
2040 { &hf_dsp_unsignedChainedAddEntryResult,
2041 { "unsignedChainedAddEntryResult", "dsp.unsignedChainedAddEntryResult_element",
2042 FT_NONE, BASE_NONE, NULL, 0,
2043 "ChainedAddEntryResultData", HFILL }},
2044 { &hf_dsp_signedChainedAddEntryResult,
2045 { "signedChainedAddEntryResult", "dsp.signedChainedAddEntryResult_element",
2046 FT_NONE, BASE_NONE, NULL, 0,
2047 NULL, HFILL }},
2048 { &hf_dsp_chainedAddEntryResult,
2049 { "chainedAddEntryResult", "dsp.chainedAddEntryResult_element",
2050 FT_NONE, BASE_NONE, NULL, 0,
2051 "ChainedAddEntryResultData", HFILL }},
2052 { &hf_dsp_removeEntryArgument,
2053 { "removeEntryArgument", "dsp.removeEntryArgument",
2054 FT_UINT32, BASE_DEC, VALS(dap_RemoveEntryArgument_vals), 0,
2055 NULL, HFILL }},
2056 { &hf_dsp_unsignedChainedRemoveEntryArgument,
2057 { "unsignedChainedRemoveEntryArgument", "dsp.unsignedChainedRemoveEntryArgument_element",
2058 FT_NONE, BASE_NONE, NULL, 0,
2059 "ChainedRemoveEntryArgumentData", HFILL }},
2060 { &hf_dsp_signedChainedRemoveEntryArgument,
2061 { "signedChainedRemoveEntryArgument", "dsp.signedChainedRemoveEntryArgument_element",
2062 FT_NONE, BASE_NONE, NULL, 0,
2063 NULL, HFILL }},
2064 { &hf_dsp_chainedRemoveEntryArgument,
2065 { "chainedRemoveEntryArgument", "dsp.chainedRemoveEntryArgument_element",
2066 FT_NONE, BASE_NONE, NULL, 0,
2067 "ChainedRemoveEntryArgumentData", HFILL }},
2068 { &hf_dsp_removeEntryResult,
2069 { "removeEntryResult", "dsp.removeEntryResult",
2070 FT_UINT32, BASE_DEC, VALS(dap_RemoveEntryResult_vals), 0,
2071 NULL, HFILL }},
2072 { &hf_dsp_unsignedChainedRemoveEntryResult,
2073 { "unsignedChainedRemoveEntryResult", "dsp.unsignedChainedRemoveEntryResult_element",
2074 FT_NONE, BASE_NONE, NULL, 0,
2075 "ChainedRemoveEntryResultData", HFILL }},
2076 { &hf_dsp_signedChainedRemoveEntryResult,
2077 { "signedChainedRemoveEntryResult", "dsp.signedChainedRemoveEntryResult_element",
2078 FT_NONE, BASE_NONE, NULL, 0,
2079 NULL, HFILL }},
2080 { &hf_dsp_chainedRemoveEntryResult,
2081 { "chainedRemoveEntryResult", "dsp.chainedRemoveEntryResult_element",
2082 FT_NONE, BASE_NONE, NULL, 0,
2083 "ChainedRemoveEntryResultData", HFILL }},
2084 { &hf_dsp_modifyEntryArgument,
2085 { "modifyEntryArgument", "dsp.modifyEntryArgument",
2086 FT_UINT32, BASE_DEC, VALS(dap_ModifyEntryArgument_vals), 0,
2087 NULL, HFILL }},
2088 { &hf_dsp_unsignedChainedModifyEntryArgument,
2089 { "unsignedChainedModifyEntryArgument", "dsp.unsignedChainedModifyEntryArgument_element",
2090 FT_NONE, BASE_NONE, NULL, 0,
2091 "ChainedModifyEntryArgumentData", HFILL }},
2092 { &hf_dsp_signedChainedModifyEntryArgument,
2093 { "signedChainedModifyEntryArgument", "dsp.signedChainedModifyEntryArgument_element",
2094 FT_NONE, BASE_NONE, NULL, 0,
2095 NULL, HFILL }},
2096 { &hf_dsp_chainedModifyEntryArgument,
2097 { "chainedModifyEntryArgument", "dsp.chainedModifyEntryArgument_element",
2098 FT_NONE, BASE_NONE, NULL, 0,
2099 "ChainedModifyEntryArgumentData", HFILL }},
2100 { &hf_dsp_modifyEntryResult,
2101 { "modifyEntryResult", "dsp.modifyEntryResult",
2102 FT_UINT32, BASE_DEC, VALS(dap_ModifyEntryResult_vals), 0,
2103 NULL, HFILL }},
2104 { &hf_dsp_unsignedChainedModifyEntryResult,
2105 { "unsignedChainedModifyEntryResult", "dsp.unsignedChainedModifyEntryResult_element",
2106 FT_NONE, BASE_NONE, NULL, 0,
2107 "ChainedModifyEntryResultData", HFILL }},
2108 { &hf_dsp_signedChainedModifyEntryResult,
2109 { "signedChainedModifyEntryResult", "dsp.signedChainedModifyEntryResult_element",
2110 FT_NONE, BASE_NONE, NULL, 0,
2111 NULL, HFILL }},
2112 { &hf_dsp_chainedModifyEntryResult,
2113 { "chainedModifyEntryResult", "dsp.chainedModifyEntryResult_element",
2114 FT_NONE, BASE_NONE, NULL, 0,
2115 "ChainedModifyEntryResultData", HFILL }},
2116 { &hf_dsp_modifyDNArgument,
2117 { "modifyDNArgument", "dsp.modifyDNArgument_element",
2118 FT_NONE, BASE_NONE, NULL, 0,
2119 NULL, HFILL }},
2120 { &hf_dsp_unsignedChainedModifyDNArgument,
2121 { "unsignedChainedModifyDNArgument", "dsp.unsignedChainedModifyDNArgument_element",
2122 FT_NONE, BASE_NONE, NULL, 0,
2123 "ChainedModifyDNArgumentData", HFILL }},
2124 { &hf_dsp_signedChainedModifyDNArgument,
2125 { "signedChainedModifyDNArgument", "dsp.signedChainedModifyDNArgument_element",
2126 FT_NONE, BASE_NONE, NULL, 0,
2127 NULL, HFILL }},
2128 { &hf_dsp_chainedModifyDNArgument,
2129 { "chainedModifyDNArgument", "dsp.chainedModifyDNArgument_element",
2130 FT_NONE, BASE_NONE, NULL, 0,
2131 "ChainedModifyDNArgumentData", HFILL }},
2132 { &hf_dsp_modifyDNResult,
2133 { "modifyDNResult", "dsp.modifyDNResult",
2134 FT_UINT32, BASE_DEC, VALS(dap_ModifyDNResult_vals), 0,
2135 NULL, HFILL }},
2136 { &hf_dsp_unsignedChainedModifyDNResult,
2137 { "unsignedChainedModifyDNResult", "dsp.unsignedChainedModifyDNResult_element",
2138 FT_NONE, BASE_NONE, NULL, 0,
2139 "ChainedModifyDNResultData", HFILL }},
2140 { &hf_dsp_signedChainedModifyDNResult,
2141 { "signedChainedModifyDNResult", "dsp.signedChainedModifyDNResult_element",
2142 FT_NONE, BASE_NONE, NULL, 0,
2143 NULL, HFILL }},
2144 { &hf_dsp_chainedModifyDNResult,
2145 { "chainedModifyDNResult", "dsp.chainedModifyDNResult_element",
2146 FT_NONE, BASE_NONE, NULL, 0,
2147 "ChainedModifyDNResultData", HFILL }},
2148 { &hf_dsp_reference,
2149 { "reference", "dsp.reference_element",
2150 FT_NONE, BASE_NONE, NULL, 0,
2151 "ContinuationReference", HFILL }},
2152 { &hf_dsp_contextPrefix,
2153 { "contextPrefix", "dsp.contextPrefix",
2154 FT_UINT32, BASE_DEC, NULL, 0,
2155 "DistinguishedName", HFILL }},
2156 { &hf_dsp_securityParameters,
2157 { "securityParameters", "dsp.securityParameters_element",
2158 FT_NONE, BASE_NONE, NULL, 0,
2159 NULL, HFILL }},
2160 { &hf_dsp_performer,
2161 { "performer", "dsp.performer",
2162 FT_UINT32, BASE_DEC, NULL, 0,
2163 "DistinguishedName", HFILL }},
2164 { &hf_dsp_aliasDereferenced,
2165 { "aliasDereferenced", "dsp.aliasDereferenced",
2166 FT_BOOLEAN, BASE_NONE, NULL, 0,
2167 "BOOLEAN", HFILL }},
2168 { &hf_dsp_notification,
2169 { "notification", "dsp.notification",
2170 FT_UINT32, BASE_DEC, NULL, 0,
2171 "SEQUENCE_OF_Attribute", HFILL }},
2172 { &hf_dsp_notification_item,
2173 { "Attribute", "dsp.Attribute_element",
2174 FT_NONE, BASE_NONE, NULL, 0,
2175 NULL, HFILL }},
2176 { &hf_dsp_unsignedDSAReferral,
2177 { "unsignedDSAReferral", "dsp.unsignedDSAReferral_element",
2178 FT_NONE, BASE_NONE, NULL, 0,
2179 "DSAReferralData", HFILL }},
2180 { &hf_dsp_signedDSAReferral,
2181 { "signedDSAReferral", "dsp.signedDSAReferral_element",
2182 FT_NONE, BASE_NONE, NULL, 0,
2183 NULL, HFILL }},
2184 { &hf_dsp_dsaReferral,
2185 { "dsaReferral", "dsp.dsaReferral_element",
2186 FT_NONE, BASE_NONE, NULL, 0,
2187 "DSAReferralData", HFILL }},
2188 { &hf_dsp_originator,
2189 { "originator", "dsp.originator",
2190 FT_UINT32, BASE_DEC, NULL, 0,
2191 "DistinguishedName", HFILL }},
2192 { &hf_dsp_targetObjectDN,
2193 { "targetObject", "dsp.targetObject",
2194 FT_UINT32, BASE_DEC, NULL, 0,
2195 "DistinguishedName", HFILL }},
2196 { &hf_dsp_operationProgress,
2197 { "operationProgress", "dsp.operationProgress_element",
2198 FT_NONE, BASE_NONE, NULL, 0,
2199 NULL, HFILL }},
2200 { &hf_dsp_traceInformation,
2201 { "traceInformation", "dsp.traceInformation",
2202 FT_UINT32, BASE_DEC, NULL, 0,
2203 NULL, HFILL }},
2204 { &hf_dsp_aliasedRDNs,
2205 { "aliasedRDNs", "dsp.aliasedRDNs",
2206 FT_INT32, BASE_DEC, NULL, 0,
2207 "INTEGER", HFILL }},
2208 { &hf_dsp_returnCrossRefs,
2209 { "returnCrossRefs", "dsp.returnCrossRefs",
2210 FT_BOOLEAN, BASE_NONE, NULL, 0,
2211 "BOOLEAN", HFILL }},
2212 { &hf_dsp_referenceType,
2213 { "referenceType", "dsp.referenceType",
2214 FT_UINT32, BASE_DEC, VALS(dsp_ReferenceType_vals), 0,
2215 NULL, HFILL }},
2216 { &hf_dsp_info,
2217 { "info", "dsp.info",
2218 FT_OID, BASE_NONE, NULL, 0,
2219 "DomainInfo", HFILL }},
2220 { &hf_dsp_timeLimit,
2221 { "timeLimit", "dsp.timeLimit",
2222 FT_UINT32, BASE_DEC, VALS(dsp_Time_vals), 0,
2223 "Time", HFILL }},
2224 { &hf_dsp_entryOnly,
2225 { "entryOnly", "dsp.entryOnly",
2226 FT_BOOLEAN, BASE_NONE, NULL, 0,
2227 "BOOLEAN", HFILL }},
2228 { &hf_dsp_uniqueIdentifier,
2229 { "uniqueIdentifier", "dsp.uniqueIdentifier",
2230 FT_BYTES, BASE_NONE, NULL, 0,
2231 NULL, HFILL }},
2232 { &hf_dsp_authenticationLevel,
2233 { "authenticationLevel", "dsp.authenticationLevel",
2234 FT_UINT32, BASE_DEC, VALS(dsp_AuthenticationLevel_vals), 0,
2235 NULL, HFILL }},
2236 { &hf_dsp_exclusions,
2237 { "exclusions", "dsp.exclusions",
2238 FT_UINT32, BASE_DEC, NULL, 0,
2239 NULL, HFILL }},
2240 { &hf_dsp_excludeShadows,
2241 { "excludeShadows", "dsp.excludeShadows",
2242 FT_BOOLEAN, BASE_NONE, NULL, 0,
2243 "BOOLEAN", HFILL }},
2244 { &hf_dsp_nameResolveOnMaster,
2245 { "nameResolveOnMaster", "dsp.nameResolveOnMaster",
2246 FT_BOOLEAN, BASE_NONE, NULL, 0,
2247 "BOOLEAN", HFILL }},
2248 { &hf_dsp_operationIdentifier,
2249 { "operationIdentifier", "dsp.operationIdentifier",
2250 FT_INT32, BASE_DEC, NULL, 0,
2251 "INTEGER", HFILL }},
2252 { &hf_dsp_searchRuleId,
2253 { "searchRuleId", "dsp.searchRuleId_element",
2254 FT_NONE, BASE_NONE, NULL, 0,
2255 NULL, HFILL }},
2256 { &hf_dsp_chainedRelaxation,
2257 { "chainedRelaxation", "dsp.chainedRelaxation_element",
2258 FT_NONE, BASE_NONE, NULL, 0,
2259 "MRMapping", HFILL }},
2260 { &hf_dsp_relatedEntry,
2261 { "relatedEntry", "dsp.relatedEntry",
2262 FT_INT32, BASE_DEC, NULL, 0,
2263 "INTEGER", HFILL }},
2264 { &hf_dsp_dspPaging,
2265 { "dspPaging", "dsp.dspPaging",
2266 FT_BOOLEAN, BASE_NONE, NULL, 0,
2267 "BOOLEAN", HFILL }},
2268 { &hf_dsp_nonDapPdu,
2269 { "nonDapPdu", "dsp.nonDapPdu",
2270 FT_UINT32, BASE_DEC, VALS(dsp_T_nonDapPdu_vals), 0,
2271 NULL, HFILL }},
2272 { &hf_dsp_streamedResults,
2273 { "streamedResults", "dsp.streamedResults",
2274 FT_INT32, BASE_DEC, NULL, 0,
2275 "INTEGER", HFILL }},
2276 { &hf_dsp_excludeWriteableCopies,
2277 { "excludeWriteableCopies", "dsp.excludeWriteableCopies",
2278 FT_BOOLEAN, BASE_NONE, NULL, 0,
2279 "BOOLEAN", HFILL }},
2280 { &hf_dsp_utcTime,
2281 { "utcTime", "dsp.utcTime",
2282 FT_STRING, BASE_NONE, NULL, 0,
2283 NULL, HFILL }},
2284 { &hf_dsp_generalizedTime,
2285 { "generalizedTime", "dsp.generalizedTime",
2286 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
2287 NULL, HFILL }},
2288 { &hf_dsp_crossReferences,
2289 { "crossReferences", "dsp.crossReferences",
2290 FT_UINT32, BASE_DEC, NULL, 0,
2291 "SEQUENCE_OF_CrossReference", HFILL }},
2292 { &hf_dsp_crossReferences_item,
2293 { "CrossReference", "dsp.CrossReference_element",
2294 FT_NONE, BASE_NONE, NULL, 0,
2295 NULL, HFILL }},
2296 { &hf_dsp_alreadySearched,
2297 { "alreadySearched", "dsp.alreadySearched",
2298 FT_UINT32, BASE_DEC, NULL, 0,
2299 "Exclusions", HFILL }},
2300 { &hf_dsp_accessPoint,
2301 { "accessPoint", "dsp.accessPoint_element",
2302 FT_NONE, BASE_NONE, NULL, 0,
2303 "AccessPointInformation", HFILL }},
2304 { &hf_dsp_nameResolutionPhase,
2305 { "nameResolutionPhase", "dsp.nameResolutionPhase",
2306 FT_UINT32, BASE_DEC, VALS(dsp_T_nameResolutionPhase_vals), 0,
2307 NULL, HFILL }},
2308 { &hf_dsp_nextRDNToBeResolved,
2309 { "nextRDNToBeResolved", "dsp.nextRDNToBeResolved",
2310 FT_INT32, BASE_DEC, NULL, 0,
2311 "INTEGER", HFILL }},
2312 { &hf_dsp_TraceInformation_item,
2313 { "TraceItem", "dsp.TraceItem_element",
2314 FT_NONE, BASE_NONE, NULL, 0,
2315 NULL, HFILL }},
2316 { &hf_dsp_dsa,
2317 { "dsa", "dsp.dsa",
2318 FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2319 "Name", HFILL }},
2320 { &hf_dsp_targetObject,
2321 { "targetObject", "dsp.targetObject",
2322 FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2323 "Name", HFILL }},
2324 { &hf_dsp_ae_title,
2325 { "ae-title", "dsp.ae_title",
2326 FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2327 "Name", HFILL }},
2328 { &hf_dsp_address,
2329 { "address", "dsp.address_element",
2330 FT_NONE, BASE_NONE, NULL, 0,
2331 "PresentationAddress", HFILL }},
2332 { &hf_dsp_protocolInformation,
2333 { "protocolInformation", "dsp.protocolInformation",
2334 FT_UINT32, BASE_DEC, NULL, 0,
2335 "SET_OF_ProtocolInformation", HFILL }},
2336 { &hf_dsp_protocolInformation_item,
2337 { "ProtocolInformation", "dsp.ProtocolInformation_element",
2338 FT_NONE, BASE_NONE, NULL, 0,
2339 NULL, HFILL }},
2340 { &hf_dsp_labeledURI,
2341 { "labeledURI", "dsp.labeledURI",
2342 FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
2343 NULL, HFILL }},
2344 { &hf_dsp_access_point_category,
2345 { "category", "dsp.category",
2346 FT_UINT32, BASE_DEC, VALS(dsp_APCategory_vals), 0,
2347 "APCategory", HFILL }},
2348 { &hf_dsp_chainingRequired,
2349 { "chainingRequired", "dsp.chainingRequired",
2350 FT_BOOLEAN, BASE_NONE, NULL, 0,
2351 "BOOLEAN", HFILL }},
2352 { &hf_dsp_MasterAndShadowAccessPoints_item,
2353 { "MasterOrShadowAccessPoint", "dsp.MasterOrShadowAccessPoint_element",
2354 FT_NONE, BASE_NONE, NULL, 0,
2355 NULL, HFILL }},
2356 { &hf_dsp_category,
2357 { "category", "dsp.category",
2358 FT_UINT32, BASE_DEC, VALS(dsp_T_category_vals), 0,
2359 NULL, HFILL }},
2360 { &hf_dsp_additionalPoints,
2361 { "additionalPoints", "dsp.additionalPoints",
2362 FT_UINT32, BASE_DEC, NULL, 0,
2363 "MasterAndShadowAccessPoints", HFILL }},
2364 { &hf_dsp_domainLocalID,
2365 { "domainLocalID", "dsp.domainLocalID",
2366 FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
2367 "DirectoryString", HFILL }},
2368 { &hf_dsp_accessPoints,
2369 { "accessPoints", "dsp.accessPoints",
2370 FT_UINT32, BASE_DEC, NULL, 0,
2371 "MasterAndShadowAccessPoints", HFILL }},
2372 { &hf_dsp_Exclusions_item,
2373 { "RDNSequence", "dsp.RDNSequence",
2374 FT_UINT32, BASE_DEC, NULL, 0,
2375 NULL, HFILL }},
2376 { &hf_dsp_rdnsResolved,
2377 { "rdnsResolved", "dsp.rdnsResolved",
2378 FT_INT32, BASE_DEC, NULL, 0,
2379 "INTEGER", HFILL }},
2380 { &hf_dsp_accessPoints_01,
2381 { "accessPoints", "dsp.accessPoints",
2382 FT_UINT32, BASE_DEC, NULL, 0,
2383 "SET_OF_AccessPointInformation", HFILL }},
2384 { &hf_dsp_accessPoints_item,
2385 { "AccessPointInformation", "dsp.AccessPointInformation_element",
2386 FT_NONE, BASE_NONE, NULL, 0,
2387 NULL, HFILL }},
2388 { &hf_dsp_returnToDUA,
2389 { "returnToDUA", "dsp.returnToDUA",
2390 FT_BOOLEAN, BASE_NONE, NULL, 0,
2391 "BOOLEAN", HFILL }},
2392 { &hf_dsp_basicLevels,
2393 { "basicLevels", "dsp.basicLevels_element",
2394 FT_NONE, BASE_NONE, NULL, 0,
2395 NULL, HFILL }},
2396 { &hf_dsp_level,
2397 { "level", "dsp.level",
2398 FT_UINT32, BASE_DEC, VALS(dsp_T_level_vals), 0,
2399 NULL, HFILL }},
2400 { &hf_dsp_localQualifier,
2401 { "localQualifier", "dsp.localQualifier",
2402 FT_INT32, BASE_DEC, NULL, 0,
2403 "INTEGER", HFILL }},
2404 { &hf_dsp_signed,
2405 { "signed", "dsp.signed",
2406 FT_BOOLEAN, BASE_NONE, NULL, 0,
2407 "BOOLEAN", HFILL }},
2408 { &hf_dsp_other,
2409 { "other", "dsp.other_element",
2410 FT_NONE, BASE_NONE, NULL, 0,
2411 "EXTERNAL", HFILL }},
2414 /* List of subtrees */
2415 static int *ett[] = {
2416 &ett_dsp,
2417 &ett_dsp_ChainedReadArgumentData,
2418 &ett_dsp_ChainedReadArgument,
2419 &ett_dsp_T_signedChainedReadArgument,
2420 &ett_dsp_ChainedReadResultData,
2421 &ett_dsp_ChainedReadResult,
2422 &ett_dsp_T_signedChainedReadResult,
2423 &ett_dsp_ChainedCompareArgumentData,
2424 &ett_dsp_ChainedCompareArgument,
2425 &ett_dsp_T_signedChainedCompareArgument,
2426 &ett_dsp_ChainedCompareResultData,
2427 &ett_dsp_ChainedCompareResult,
2428 &ett_dsp_T_signedChainedCompareResult,
2429 &ett_dsp_ChainedListArgumentData,
2430 &ett_dsp_ChainedListArgument,
2431 &ett_dsp_T_signedChainedListArgument,
2432 &ett_dsp_ChainedListResultData,
2433 &ett_dsp_ChainedListResult,
2434 &ett_dsp_T_signedChainedListResult,
2435 &ett_dsp_ChainedSearchArgumentData,
2436 &ett_dsp_ChainedSearchArgument,
2437 &ett_dsp_T_signedChainedSearchArgument,
2438 &ett_dsp_ChainedSearchResultData,
2439 &ett_dsp_ChainedSearchResult,
2440 &ett_dsp_T_signedChainedSearchResult,
2441 &ett_dsp_ChainedAddEntryArgumentData,
2442 &ett_dsp_ChainedAddEntryArgument,
2443 &ett_dsp_T_signedChainedAddEntryArgument,
2444 &ett_dsp_ChainedAddEntryResultData,
2445 &ett_dsp_ChainedAddEntryResult,
2446 &ett_dsp_T_signedChainedAddEntryResult,
2447 &ett_dsp_ChainedRemoveEntryArgumentData,
2448 &ett_dsp_ChainedRemoveEntryArgument,
2449 &ett_dsp_T_signedChainedRemoveEntryArgument,
2450 &ett_dsp_ChainedRemoveEntryResultData,
2451 &ett_dsp_ChainedRemoveEntryResult,
2452 &ett_dsp_T_signedChainedRemoveEntryResult,
2453 &ett_dsp_ChainedModifyEntryArgumentData,
2454 &ett_dsp_ChainedModifyEntryArgument,
2455 &ett_dsp_T_signedChainedModifyEntryArgument,
2456 &ett_dsp_ChainedModifyEntryResultData,
2457 &ett_dsp_ChainedModifyEntryResult,
2458 &ett_dsp_T_signedChainedModifyEntryResult,
2459 &ett_dsp_ChainedModifyDNArgumentData,
2460 &ett_dsp_ChainedModifyDNArgument,
2461 &ett_dsp_T_signedChainedModifyDNArgument,
2462 &ett_dsp_ChainedModifyDNResultData,
2463 &ett_dsp_ChainedModifyDNResult,
2464 &ett_dsp_T_signedChainedModifyDNResult,
2465 &ett_dsp_DSAReferralData,
2466 &ett_dsp_SEQUENCE_OF_Attribute,
2467 &ett_dsp_DSAReferral,
2468 &ett_dsp_T_signedDSAReferral,
2469 &ett_dsp_ChainingArguments,
2470 &ett_dsp_Time,
2471 &ett_dsp_ChainingResults,
2472 &ett_dsp_SEQUENCE_OF_CrossReference,
2473 &ett_dsp_CrossReference,
2474 &ett_dsp_OperationProgress,
2475 &ett_dsp_TraceInformation,
2476 &ett_dsp_TraceItem,
2477 &ett_dsp_AccessPoint,
2478 &ett_dsp_SET_OF_ProtocolInformation,
2479 &ett_dsp_MasterOrShadowAccessPoint,
2480 &ett_dsp_MasterAndShadowAccessPoints,
2481 &ett_dsp_AccessPointInformation,
2482 &ett_dsp_DitBridgeKnowledge,
2483 &ett_dsp_Exclusions,
2484 &ett_dsp_ContinuationReference,
2485 &ett_dsp_SET_OF_AccessPointInformation,
2486 &ett_dsp_AuthenticationLevel,
2487 &ett_dsp_T_basicLevels,
2489 static ei_register_info ei[] = {
2490 { &ei_dsp_unsupported_opcode, { "dsp.unsupported_opcode", PI_UNDECODED, PI_WARN, "Unsupported DSP opcode", EXPFILL }},
2491 { &ei_dsp_unsupported_errcode, { "dsp.unsupported_errcode", PI_UNDECODED, PI_WARN, "Unsupported DSP errcode", EXPFILL }},
2492 { &ei_dsp_unsupported_pdu, { "dsp.unsupported_pdu", PI_UNDECODED, PI_WARN, "Unsupported DSP PDU", EXPFILL }},
2493 { &ei_dsp_zero_pdu, { "dsp.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte DSP PDU", EXPFILL }},
2496 module_t *dsp_module;
2497 expert_module_t* expert_dsp;
2499 /* Register protocol */
2500 proto_dsp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2502 dsp_handle = register_dissector("dsp", dissect_dsp, proto_dsp);
2504 /* Register fields and subtrees */
2505 proto_register_field_array(proto_dsp, hf, array_length(hf));
2506 proto_register_subtree_array(ett, array_length(ett));
2507 expert_dsp = expert_register_protocol(proto_dsp);
2508 expert_register_field_array(expert_dsp, ei, array_length(ei));
2510 /* Register our configuration options for DSP, particularly our port */
2512 dsp_module = prefs_register_protocol_subtree("OSI/X.500", proto_dsp, NULL);
2514 prefs_register_obsolete_preference(dsp_module, "tcp.port");
2516 prefs_register_static_text_preference(dsp_module, "tcp_port_info",
2517 "The TCP ports used by the DSP protocol should be added to the TPKT preference \"TPKT TCP ports\", or by selecting \"TPKT\" as the \"Transport\" protocol in the \"Decode As\" dialog.",
2518 "DSP TCP Port preference moved information");
2523 /*--- proto_reg_handoff_dsp --- */
2524 void proto_reg_handoff_dsp(void) {
2525 register_ber_oid_dissector("2.5.12.1", dissect_AccessPoint_PDU, proto_dsp, "id-doa-myAccessPoint");
2526 register_ber_oid_dissector("2.5.12.2", dissect_AccessPoint_PDU, proto_dsp, "id-doa-superiorKnowledge");
2527 register_ber_oid_dissector("2.5.12.3", dissect_MasterAndShadowAccessPoints_PDU, proto_dsp, "id-doa-specificKnowledge");
2528 register_ber_oid_dissector("2.5.12.4", dissect_MasterAndShadowAccessPoints_PDU, proto_dsp, "id-doa-nonSpecificKnowledge");
2529 register_ber_oid_dissector("2.5.12.8", dissect_DitBridgeKnowledge_PDU, proto_dsp, "id-doa-ditBridgeKnowledge");
2532 /* APPLICATION CONTEXT */
2534 oid_add_from_string("id-ac-directory-system","2.5.3.2");
2536 /* ABSTRACT SYNTAXES */
2538 /* Register DSP with ROS (with no use of RTSE) */
2539 register_ros_oid_dissector_handle("2.5.9.2", dsp_handle, 0, "id-as-directory-system", false);