From Kovarththanan Rajaratnam via bug 3548:
[obnox/wireshark/wip.git] / epan / dissectors / packet-dsp.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-dsp.c                                                               */
4 /* ../../tools/asn2wrs.py -b -e -p dsp -c ./dsp.cnf -s ./packet-dsp-template -D . dsp.asn */
5
6 /* Input file: packet-dsp-template.c */
7
8 #line 1 "packet-dsp-template.c"
9 /* packet-dsp.c
10  * Routines for X.518 (X.500 Distributed Operations)  packet dissection
11  * Graeme Lunt 2005
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
19  * This program is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU General Public License
21  * as published by the Free Software Foundation; either version 2
22  * of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program; if not, write to the Free Software
31  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
32  */
33
34 #ifdef HAVE_CONFIG_H
35 # include "config.h"
36 #endif
37
38 #include <glib.h>
39 #include <epan/packet.h>
40 #include <epan/prefs.h>
41 #include <epan/oids.h>
42 #include <epan/asn1.h>
43
44 #include <stdio.h>
45 #include <string.h>
46
47 #include "packet-ber.h"
48 #include "packet-acse.h"
49 #include "packet-ros.h"
50
51 #include "packet-x509if.h"
52 #include "packet-x509af.h"
53 #include "packet-x509sat.h"
54
55 #include "packet-dap.h"
56 #include "packet-dsp.h"
57
58
59 #define PNAME  "X.519 Directory System Protocol"
60 #define PSNAME "DSP"
61 #define PFNAME "dsp"
62
63 static guint global_dsp_tcp_port = 102;
64 static dissector_handle_t tpkt_handle;
65 void prefs_register_dsp(void); /* forward declaration for use in preferences registration */
66
67
68 /* Initialize the protocol and registered fields */
69 int proto_dsp = -1;
70
71 static struct SESSION_DATA_STRUCTURE* session = NULL;
72
73
74 /*--- Included file: packet-dsp-hf.c ---*/
75 #line 1 "packet-dsp-hf.c"
76 static int hf_dsp_AccessPoint_PDU = -1;           /* AccessPoint */
77 static int hf_dsp_MasterAndShadowAccessPoints_PDU = -1;  /* MasterAndShadowAccessPoints */
78 static int hf_dsp_chainedArgument = -1;           /* ChainingArguments */
79 static int hf_dsp_readArgument = -1;              /* ReadArgument */
80 static int hf_dsp_unsignedChainedReadArgument = -1;  /* ChainedReadArgumentData */
81 static int hf_dsp_signedChainedReadArgument = -1;  /* T_signedChainedReadArgument */
82 static int hf_dsp_chainedReadArgument = -1;       /* ChainedReadArgumentData */
83 static int hf_dsp_algorithmIdentifier = -1;       /* AlgorithmIdentifier */
84 static int hf_dsp_encrypted = -1;                 /* BIT_STRING */
85 static int hf_dsp_chainedResults = -1;            /* ChainingResults */
86 static int hf_dsp_readResult = -1;                /* ReadResult */
87 static int hf_dsp_unsignedChainedReadResult = -1;  /* ChainedReadResultData */
88 static int hf_dsp_signedChainedReadResult = -1;   /* T_signedChainedReadResult */
89 static int hf_dsp_chainedReadResult = -1;         /* ChainedReadResultData */
90 static int hf_dsp_compareArgument = -1;           /* CompareArgument */
91 static int hf_dsp_unsignedChainedCompareArgument = -1;  /* ChainedCompareArgumentData */
92 static int hf_dsp_signedChainedCompareArgument = -1;  /* T_signedChainedCompareArgument */
93 static int hf_dsp_chainedCompareArgument = -1;    /* ChainedCompareArgumentData */
94 static int hf_dsp_compareResult = -1;             /* CompareResult */
95 static int hf_dsp_unsignedChainedCompareResult = -1;  /* ChainedCompareResultData */
96 static int hf_dsp_signedChainedCompareResult = -1;  /* T_signedChainedCompareResult */
97 static int hf_dsp_chainedCompareResult = -1;      /* ChainedCompareResultData */
98 static int hf_dsp_listArgument = -1;              /* ListArgument */
99 static int hf_dsp_unsignedChainedListArgument = -1;  /* ChainedListArgumentData */
100 static int hf_dsp_signedChainedListArgument = -1;  /* T_signedChainedListArgument */
101 static int hf_dsp_chainedListArgument = -1;       /* ChainedListArgumentData */
102 static int hf_dsp_listResult = -1;                /* ListResult */
103 static int hf_dsp_unsignedChainedListResult = -1;  /* ChainedListResultData */
104 static int hf_dsp_signedChainedListResult = -1;   /* T_signedChainedListResult */
105 static int hf_dsp_chainedListResult = -1;         /* ChainedListResultData */
106 static int hf_dsp_searchArgument = -1;            /* SearchArgument */
107 static int hf_dsp_unsignedChainedSearchArgument = -1;  /* ChainedSearchArgumentData */
108 static int hf_dsp_signedChainedSearchArgument = -1;  /* T_signedChainedSearchArgument */
109 static int hf_dsp_chainedSearchArgument = -1;     /* ChainedSearchArgumentData */
110 static int hf_dsp_searchResult = -1;              /* SearchResult */
111 static int hf_dsp_unsignedChainedSearchResult = -1;  /* ChainedSearchResultData */
112 static int hf_dsp_signedChainedSearchResult = -1;  /* T_signedChainedSearchResult */
113 static int hf_dsp_chainedSearchResult = -1;       /* ChainedSearchResultData */
114 static int hf_dsp_addEntryArgument = -1;          /* AddEntryArgument */
115 static int hf_dsp_unsignedChainedAddEntryArgument = -1;  /* ChainedAddEntryArgumentData */
116 static int hf_dsp_signedChainedAddEntryArgument = -1;  /* T_signedChainedAddEntryArgument */
117 static int hf_dsp_chainedAddEntryArgument = -1;   /* ChainedAddEntryArgumentData */
118 static int hf_dsp_addEntryResult = -1;            /* AddEntryResult */
119 static int hf_dsp_unsignedChainedAddEntryResult = -1;  /* ChainedAddEntryResultData */
120 static int hf_dsp_signedChainedAddEntryResult = -1;  /* T_signedChainedAddEntryResult */
121 static int hf_dsp_chainedAddEntryResult = -1;     /* ChainedAddEntryResultData */
122 static int hf_dsp_removeEntryArgument = -1;       /* RemoveEntryArgument */
123 static int hf_dsp_unsignedChainedRemoveEntryArgument = -1;  /* ChainedRemoveEntryArgumentData */
124 static int hf_dsp_signedChainedRemoveEntryArgument = -1;  /* T_signedChainedRemoveEntryArgument */
125 static int hf_dsp_chainedRemoveEntryArgument = -1;  /* ChainedRemoveEntryArgumentData */
126 static int hf_dsp_removeEntryResult = -1;         /* RemoveEntryResult */
127 static int hf_dsp_unsignedChainedRemoveEntryResult = -1;  /* ChainedRemoveEntryResultData */
128 static int hf_dsp_signedChainedRemoveEntryResult = -1;  /* T_signedChainedRemoveEntryResult */
129 static int hf_dsp_chainedRemoveEntryResult = -1;  /* ChainedRemoveEntryResultData */
130 static int hf_dsp_modifyEntryArgument = -1;       /* ModifyEntryArgument */
131 static int hf_dsp_unsignedChainedModifyEntryArgument = -1;  /* ChainedModifyEntryArgumentData */
132 static int hf_dsp_signedChainedModifyEntryArgument = -1;  /* T_signedChainedModifyEntryArgument */
133 static int hf_dsp_chainedModifyEntryArgument = -1;  /* ChainedModifyEntryArgumentData */
134 static int hf_dsp_modifyEntryResult = -1;         /* ModifyEntryResult */
135 static int hf_dsp_unsignedChainedModifyEntryResult = -1;  /* ChainedModifyEntryResultData */
136 static int hf_dsp_signedChainedModifyEntryResult = -1;  /* T_signedChainedModifyEntryResult */
137 static int hf_dsp_chainedModifyEntryResult = -1;  /* ChainedModifyEntryResultData */
138 static int hf_dsp_modifyDNArgument = -1;          /* ModifyDNArgument */
139 static int hf_dsp_unsignedChainedModifyDNArgument = -1;  /* ChainedModifyDNArgumentData */
140 static int hf_dsp_signedChainedModifyDNArgument = -1;  /* T_signedChainedModifyDNArgument */
141 static int hf_dsp_chainedModifyDNArgument = -1;   /* ChainedModifyDNArgumentData */
142 static int hf_dsp_modifyDNResult = -1;            /* ModifyDNResult */
143 static int hf_dsp_unsignedChainedModifyDNResult = -1;  /* ChainedModifyDNResultData */
144 static int hf_dsp_signedChainedModifyDNResult = -1;  /* T_signedChainedModifyDNResult */
145 static int hf_dsp_chainedModifyDNResult = -1;     /* ChainedModifyDNResultData */
146 static int hf_dsp_reference = -1;                 /* ContinuationReference */
147 static int hf_dsp_contextPrefix = -1;             /* DistinguishedName */
148 static int hf_dsp_securityParameters = -1;        /* SecurityParameters */
149 static int hf_dsp_performer = -1;                 /* DistinguishedName */
150 static int hf_dsp_aliasDereferenced = -1;         /* BOOLEAN */
151 static int hf_dsp_notification = -1;              /* SEQUENCE_OF_Attribute */
152 static int hf_dsp_notification_item = -1;         /* Attribute */
153 static int hf_dsp_unsignedDSAReferral = -1;       /* DSAReferralData */
154 static int hf_dsp_signedDSAReferral = -1;         /* T_signedDSAReferral */
155 static int hf_dsp_dsaReferral = -1;               /* DSAReferralData */
156 static int hf_dsp_originator = -1;                /* DistinguishedName */
157 static int hf_dsp_targetObjectDN = -1;            /* DistinguishedName */
158 static int hf_dsp_operationProgress = -1;         /* OperationProgress */
159 static int hf_dsp_traceInformation = -1;          /* TraceInformation */
160 static int hf_dsp_aliasedRDNs = -1;               /* INTEGER */
161 static int hf_dsp_returnCrossRefs = -1;           /* BOOLEAN */
162 static int hf_dsp_referenceType = -1;             /* ReferenceType */
163 static int hf_dsp_info = -1;                      /* DomainInfo */
164 static int hf_dsp_timeLimit = -1;                 /* Time */
165 static int hf_dsp_entryOnly = -1;                 /* BOOLEAN */
166 static int hf_dsp_uniqueIdentifier = -1;          /* UniqueIdentifier */
167 static int hf_dsp_authenticationLevel = -1;       /* AuthenticationLevel */
168 static int hf_dsp_exclusions = -1;                /* Exclusions */
169 static int hf_dsp_excludeShadows = -1;            /* BOOLEAN */
170 static int hf_dsp_nameResolveOnMaster = -1;       /* BOOLEAN */
171 static int hf_dsp_operationIdentifier = -1;       /* INTEGER */
172 static int hf_dsp_searchRuleId = -1;              /* SearchRuleId */
173 static int hf_dsp_chainedRelaxation = -1;         /* MRMapping */
174 static int hf_dsp_relatedEntry = -1;              /* INTEGER */
175 static int hf_dsp_utcTime = -1;                   /* UTCTime */
176 static int hf_dsp_generalizedTime = -1;           /* GeneralizedTime */
177 static int hf_dsp_crossReferences = -1;           /* SEQUENCE_OF_CrossReference */
178 static int hf_dsp_crossReferences_item = -1;      /* CrossReference */
179 static int hf_dsp_alreadySearched = -1;           /* Exclusions */
180 static int hf_dsp_accessPoint = -1;               /* AccessPointInformation */
181 static int hf_dsp_nameResolutionPhase = -1;       /* T_nameResolutionPhase */
182 static int hf_dsp_nextRDNToBeResolved = -1;       /* INTEGER */
183 static int hf_dsp_TraceInformation_item = -1;     /* TraceItem */
184 static int hf_dsp_dsa = -1;                       /* Name */
185 static int hf_dsp_targetObject = -1;              /* Name */
186 static int hf_dsp_ae_title = -1;                  /* Name */
187 static int hf_dsp_address = -1;                   /* PresentationAddress */
188 static int hf_dsp_protocolInformation = -1;       /* SET_OF_ProtocolInformation */
189 static int hf_dsp_protocolInformation_item = -1;  /* ProtocolInformation */
190 static int hf_dsp_access_point_category = -1;     /* APCategory */
191 static int hf_dsp_chainingRequired = -1;          /* BOOLEAN */
192 static int hf_dsp_MasterAndShadowAccessPoints_item = -1;  /* MasterOrShadowAccessPoint */
193 static int hf_dsp_category = -1;                  /* T_category */
194 static int hf_dsp_additionalPoints = -1;          /* MasterAndShadowAccessPoints */
195 static int hf_dsp_Exclusions_item = -1;           /* RDNSequence */
196 static int hf_dsp_rdnsResolved = -1;              /* INTEGER */
197 static int hf_dsp_accessPoints = -1;              /* SET_OF_AccessPointInformation */
198 static int hf_dsp_accessPoints_item = -1;         /* AccessPointInformation */
199 static int hf_dsp_returnToDUA = -1;               /* BOOLEAN */
200 static int hf_dsp_basicLevels = -1;               /* T_basicLevels */
201 static int hf_dsp_level = -1;                     /* T_level */
202 static int hf_dsp_localQualifier = -1;            /* INTEGER */
203 static int hf_dsp_signed = -1;                    /* BOOLEAN */
204 static int hf_dsp_other = -1;                     /* EXTERNAL */
205
206 /*--- End of included file: packet-dsp-hf.c ---*/
207 #line 66 "packet-dsp-template.c"
208
209 /* Initialize the subtree pointers */
210 static gint ett_dsp = -1;
211
212 /*--- Included file: packet-dsp-ett.c ---*/
213 #line 1 "packet-dsp-ett.c"
214 static gint ett_dsp_ChainedReadArgumentData = -1;
215 static gint ett_dsp_ChainedReadArgument = -1;
216 static gint ett_dsp_T_signedChainedReadArgument = -1;
217 static gint ett_dsp_ChainedReadResultData = -1;
218 static gint ett_dsp_ChainedReadResult = -1;
219 static gint ett_dsp_T_signedChainedReadResult = -1;
220 static gint ett_dsp_ChainedCompareArgumentData = -1;
221 static gint ett_dsp_ChainedCompareArgument = -1;
222 static gint ett_dsp_T_signedChainedCompareArgument = -1;
223 static gint ett_dsp_ChainedCompareResultData = -1;
224 static gint ett_dsp_ChainedCompareResult = -1;
225 static gint ett_dsp_T_signedChainedCompareResult = -1;
226 static gint ett_dsp_ChainedListArgumentData = -1;
227 static gint ett_dsp_ChainedListArgument = -1;
228 static gint ett_dsp_T_signedChainedListArgument = -1;
229 static gint ett_dsp_ChainedListResultData = -1;
230 static gint ett_dsp_ChainedListResult = -1;
231 static gint ett_dsp_T_signedChainedListResult = -1;
232 static gint ett_dsp_ChainedSearchArgumentData = -1;
233 static gint ett_dsp_ChainedSearchArgument = -1;
234 static gint ett_dsp_T_signedChainedSearchArgument = -1;
235 static gint ett_dsp_ChainedSearchResultData = -1;
236 static gint ett_dsp_ChainedSearchResult = -1;
237 static gint ett_dsp_T_signedChainedSearchResult = -1;
238 static gint ett_dsp_ChainedAddEntryArgumentData = -1;
239 static gint ett_dsp_ChainedAddEntryArgument = -1;
240 static gint ett_dsp_T_signedChainedAddEntryArgument = -1;
241 static gint ett_dsp_ChainedAddEntryResultData = -1;
242 static gint ett_dsp_ChainedAddEntryResult = -1;
243 static gint ett_dsp_T_signedChainedAddEntryResult = -1;
244 static gint ett_dsp_ChainedRemoveEntryArgumentData = -1;
245 static gint ett_dsp_ChainedRemoveEntryArgument = -1;
246 static gint ett_dsp_T_signedChainedRemoveEntryArgument = -1;
247 static gint ett_dsp_ChainedRemoveEntryResultData = -1;
248 static gint ett_dsp_ChainedRemoveEntryResult = -1;
249 static gint ett_dsp_T_signedChainedRemoveEntryResult = -1;
250 static gint ett_dsp_ChainedModifyEntryArgumentData = -1;
251 static gint ett_dsp_ChainedModifyEntryArgument = -1;
252 static gint ett_dsp_T_signedChainedModifyEntryArgument = -1;
253 static gint ett_dsp_ChainedModifyEntryResultData = -1;
254 static gint ett_dsp_ChainedModifyEntryResult = -1;
255 static gint ett_dsp_T_signedChainedModifyEntryResult = -1;
256 static gint ett_dsp_ChainedModifyDNArgumentData = -1;
257 static gint ett_dsp_ChainedModifyDNArgument = -1;
258 static gint ett_dsp_T_signedChainedModifyDNArgument = -1;
259 static gint ett_dsp_ChainedModifyDNResultData = -1;
260 static gint ett_dsp_ChainedModifyDNResult = -1;
261 static gint ett_dsp_T_signedChainedModifyDNResult = -1;
262 static gint ett_dsp_DSAReferralData = -1;
263 static gint ett_dsp_SEQUENCE_OF_Attribute = -1;
264 static gint ett_dsp_DSAReferral = -1;
265 static gint ett_dsp_T_signedDSAReferral = -1;
266 static gint ett_dsp_ChainingArguments = -1;
267 static gint ett_dsp_Time = -1;
268 static gint ett_dsp_ChainingResults = -1;
269 static gint ett_dsp_SEQUENCE_OF_CrossReference = -1;
270 static gint ett_dsp_CrossReference = -1;
271 static gint ett_dsp_OperationProgress = -1;
272 static gint ett_dsp_TraceInformation = -1;
273 static gint ett_dsp_TraceItem = -1;
274 static gint ett_dsp_AccessPoint = -1;
275 static gint ett_dsp_SET_OF_ProtocolInformation = -1;
276 static gint ett_dsp_MasterOrShadowAccessPoint = -1;
277 static gint ett_dsp_MasterAndShadowAccessPoints = -1;
278 static gint ett_dsp_AccessPointInformation = -1;
279 static gint ett_dsp_Exclusions = -1;
280 static gint ett_dsp_ContinuationReference = -1;
281 static gint ett_dsp_SET_OF_AccessPointInformation = -1;
282 static gint ett_dsp_AuthenticationLevel = -1;
283 static gint ett_dsp_T_basicLevels = -1;
284
285 /*--- End of included file: packet-dsp-ett.c ---*/
286 #line 70 "packet-dsp-template.c"
287
288
289 /*--- Included file: packet-dsp-fn.c ---*/
290 #line 1 "packet-dsp-fn.c"
291
292
293 static int
294 dissect_dsp_DSASystemBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
295   offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
296
297   return offset;
298 }
299
300
301
302 static int
303 dissect_dsp_DSASystemBindResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
304   offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
305
306   return offset;
307 }
308
309
310
311 static int
312 dissect_dsp_DSASystemBindError(gboolean 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_dap_DirectoryBindError(implicit_tag, tvb, offset, actx, tree, hf_index);
314
315   return offset;
316 }
317
318
319 static const value_string dsp_T_nameResolutionPhase_vals[] = {
320   {   1, "notStarted" },
321   {   2, "proceeding" },
322   {   3, "completed" },
323   { 0, NULL }
324 };
325
326
327 static int
328 dissect_dsp_T_nameResolutionPhase(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
329   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
330                                   NULL);
331
332   return offset;
333 }
334
335
336
337 static int
338 dissect_dsp_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
339   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
340                                                 NULL);
341
342   return offset;
343 }
344
345
346 static const ber_sequence_t OperationProgress_set[] = {
347   { &hf_dsp_nameResolutionPhase, BER_CLASS_CON, 0, 0, dissect_dsp_T_nameResolutionPhase },
348   { &hf_dsp_nextRDNToBeResolved, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
349   { NULL, 0, 0, 0, NULL }
350 };
351
352 int
353 dissect_dsp_OperationProgress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
354   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
355                               OperationProgress_set, hf_index, ett_dsp_OperationProgress);
356
357   return offset;
358 }
359
360
361 static const ber_sequence_t TraceItem_set[] = {
362   { &hf_dsp_dsa             , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
363   { &hf_dsp_targetObject    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_Name },
364   { &hf_dsp_operationProgress, BER_CLASS_CON, 2, 0, dissect_dsp_OperationProgress },
365   { NULL, 0, 0, 0, NULL }
366 };
367
368 static int
369 dissect_dsp_TraceItem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
370   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
371                               TraceItem_set, hf_index, ett_dsp_TraceItem);
372
373   return offset;
374 }
375
376
377 static const ber_sequence_t TraceInformation_sequence_of[1] = {
378   { &hf_dsp_TraceInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_TraceItem },
379 };
380
381 static int
382 dissect_dsp_TraceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
383   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
384                                       TraceInformation_sequence_of, hf_index, ett_dsp_TraceInformation);
385
386   return offset;
387 }
388
389
390
391 static int
392 dissect_dsp_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
393   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
394
395   return offset;
396 }
397
398
399 const value_string dsp_ReferenceType_vals[] = {
400   {   1, "superior" },
401   {   2, "subordinate" },
402   {   3, "cross" },
403   {   4, "nonSpecificSubordinate" },
404   {   5, "supplier" },
405   {   6, "master" },
406   {   7, "immediateSuperior" },
407   {   8, "self" },
408   { 0, NULL }
409 };
410
411
412 int
413 dissect_dsp_ReferenceType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
414   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
415                                   NULL);
416
417   return offset;
418 }
419
420
421
422 static int
423 dissect_dsp_DomainInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
424   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
425
426   return offset;
427 }
428
429
430
431 static int
432 dissect_dsp_UTCTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
433   offset = dissect_ber_UTCTime(implicit_tag, actx, tree, tvb, offset, hf_index);
434
435   return offset;
436 }
437
438
439
440 static int
441 dissect_dsp_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
442   offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
443
444   return offset;
445 }
446
447
448 static const value_string dsp_Time_vals[] = {
449   {   0, "utcTime" },
450   {   1, "generalizedTime" },
451   { 0, NULL }
452 };
453
454 static const ber_choice_t Time_choice[] = {
455   {   0, &hf_dsp_utcTime         , BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_dsp_UTCTime },
456   {   1, &hf_dsp_generalizedTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_dsp_GeneralizedTime },
457   { 0, NULL, 0, 0, 0, NULL }
458 };
459
460 static int
461 dissect_dsp_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
462   offset = dissect_ber_choice(actx, tree, tvb, offset,
463                                  Time_choice, hf_index, ett_dsp_Time,
464                                  NULL);
465
466   return offset;
467 }
468
469
470 static const value_string dsp_T_level_vals[] = {
471   {   0, "none" },
472   {   1, "simple" },
473   {   2, "strong" },
474   { 0, NULL }
475 };
476
477
478 static int
479 dissect_dsp_T_level(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
480   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
481                                   NULL);
482
483   return offset;
484 }
485
486
487 static const ber_sequence_t T_basicLevels_sequence[] = {
488   { &hf_dsp_level           , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_dsp_T_level },
489   { &hf_dsp_localQualifier  , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_INTEGER },
490   { &hf_dsp_signed          , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_BOOLEAN },
491   { NULL, 0, 0, 0, NULL }
492 };
493
494 static int
495 dissect_dsp_T_basicLevels(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
496   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
497                                    T_basicLevels_sequence, hf_index, ett_dsp_T_basicLevels);
498
499   return offset;
500 }
501
502
503
504 static int
505 dissect_dsp_EXTERNAL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
506   offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
507
508   return offset;
509 }
510
511
512 static const value_string dsp_AuthenticationLevel_vals[] = {
513   {   0, "basicLevels" },
514   {   1, "other" },
515   { 0, NULL }
516 };
517
518 static const ber_choice_t AuthenticationLevel_choice[] = {
519   {   0, &hf_dsp_basicLevels     , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_basicLevels },
520   {   1, &hf_dsp_other           , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_dsp_EXTERNAL },
521   { 0, NULL, 0, 0, 0, NULL }
522 };
523
524 static int
525 dissect_dsp_AuthenticationLevel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
526   offset = dissect_ber_choice(actx, tree, tvb, offset,
527                                  AuthenticationLevel_choice, hf_index, ett_dsp_AuthenticationLevel,
528                                  NULL);
529
530   return offset;
531 }
532
533
534 static const ber_sequence_t Exclusions_set_of[1] = {
535   { &hf_dsp_Exclusions_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_RDNSequence },
536 };
537
538 static int
539 dissect_dsp_Exclusions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
540   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
541                                  Exclusions_set_of, hf_index, ett_dsp_Exclusions);
542
543   return offset;
544 }
545
546
547 static const ber_sequence_t ChainingArguments_set[] = {
548   { &hf_dsp_originator      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
549   { &hf_dsp_targetObjectDN  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
550   { &hf_dsp_operationProgress, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_OperationProgress },
551   { &hf_dsp_traceInformation, BER_CLASS_CON, 3, 0, dissect_dsp_TraceInformation },
552   { &hf_dsp_aliasDereferenced, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
553   { &hf_dsp_aliasedRDNs     , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
554   { &hf_dsp_returnCrossRefs , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
555   { &hf_dsp_referenceType   , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_dsp_ReferenceType },
556   { &hf_dsp_info            , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dsp_DomainInfo },
557   { &hf_dsp_timeLimit       , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dsp_Time },
558   { &hf_dsp_securityParameters, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
559   { &hf_dsp_entryOnly       , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
560   { &hf_dsp_uniqueIdentifier, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_x509sat_UniqueIdentifier },
561   { &hf_dsp_authenticationLevel, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_dsp_AuthenticationLevel },
562   { &hf_dsp_exclusions      , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
563   { &hf_dsp_excludeShadows  , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
564   { &hf_dsp_nameResolveOnMaster, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
565   { &hf_dsp_operationIdentifier, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
566   { &hf_dsp_searchRuleId    , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL, dissect_x509if_SearchRuleId },
567   { &hf_dsp_chainedRelaxation, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL, dissect_x509if_MRMapping },
568   { &hf_dsp_relatedEntry    , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
569   { NULL, 0, 0, 0, NULL }
570 };
571
572 static int
573 dissect_dsp_ChainingArguments(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
574   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
575                               ChainingArguments_set, hf_index, ett_dsp_ChainingArguments);
576
577   return offset;
578 }
579
580
581 static const ber_sequence_t ChainedReadArgumentData_set[] = {
582   { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
583   { &hf_dsp_readArgument    , BER_CLASS_CON, 0, 0, dissect_dap_ReadArgument },
584   { NULL, 0, 0, 0, NULL }
585 };
586
587 static int
588 dissect_dsp_ChainedReadArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
589   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
590                               ChainedReadArgumentData_set, hf_index, ett_dsp_ChainedReadArgumentData);
591
592   return offset;
593 }
594
595
596
597 static int
598 dissect_dsp_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
599   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
600                                     NULL, hf_index, -1,
601                                     NULL);
602
603   return offset;
604 }
605
606
607 static const ber_sequence_t T_signedChainedReadArgument_sequence[] = {
608   { &hf_dsp_chainedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadArgumentData },
609   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
610   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
611   { NULL, 0, 0, 0, NULL }
612 };
613
614 static int
615 dissect_dsp_T_signedChainedReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
616   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
617                                    T_signedChainedReadArgument_sequence, hf_index, ett_dsp_T_signedChainedReadArgument);
618
619   return offset;
620 }
621
622
623 static const value_string dsp_ChainedReadArgument_vals[] = {
624   {   0, "unsignedChainedReadArgument" },
625   {   1, "signedChainedReadArgument" },
626   { 0, NULL }
627 };
628
629 static const ber_choice_t ChainedReadArgument_choice[] = {
630   {   0, &hf_dsp_unsignedChainedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadArgumentData },
631   {   1, &hf_dsp_signedChainedReadArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedReadArgument },
632   { 0, NULL, 0, 0, 0, NULL }
633 };
634
635 static int
636 dissect_dsp_ChainedReadArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
637   offset = dissect_ber_choice(actx, tree, tvb, offset,
638                                  ChainedReadArgument_choice, hf_index, ett_dsp_ChainedReadArgument,
639                                  NULL);
640
641   return offset;
642 }
643
644
645 static const ber_sequence_t SET_OF_ProtocolInformation_set_of[1] = {
646   { &hf_dsp_protocolInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509sat_ProtocolInformation },
647 };
648
649 static int
650 dissect_dsp_SET_OF_ProtocolInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
651   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
652                                  SET_OF_ProtocolInformation_set_of, hf_index, ett_dsp_SET_OF_ProtocolInformation);
653
654   return offset;
655 }
656
657
658 static const value_string dsp_T_category_vals[] = {
659   {   0, "master" },
660   {   1, "shadow" },
661   { 0, NULL }
662 };
663
664
665 static int
666 dissect_dsp_T_category(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
667   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
668                                   NULL);
669
670   return offset;
671 }
672
673
674 static const value_string dsp_APCategory_vals[] = {
675   {   0, "master" },
676   {   1, "shadow" },
677   { 0, NULL }
678 };
679
680
681 static int
682 dissect_dsp_APCategory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
683   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
684                                   NULL);
685
686   return offset;
687 }
688
689
690 static const ber_sequence_t MasterOrShadowAccessPoint_set[] = {
691   { &hf_dsp_ae_title        , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
692   { &hf_dsp_address         , BER_CLASS_CON, 1, 0, dissect_x509sat_PresentationAddress },
693   { &hf_dsp_protocolInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_SET_OF_ProtocolInformation },
694   { &hf_dsp_access_point_category, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_APCategory },
695   { &hf_dsp_chainingRequired, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
696   { NULL, 0, 0, 0, NULL }
697 };
698
699 static int
700 dissect_dsp_MasterOrShadowAccessPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
701   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
702                               MasterOrShadowAccessPoint_set, hf_index, ett_dsp_MasterOrShadowAccessPoint);
703
704   return offset;
705 }
706
707
708 static const ber_sequence_t MasterAndShadowAccessPoints_set_of[1] = {
709   { &hf_dsp_MasterAndShadowAccessPoints_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_MasterOrShadowAccessPoint },
710 };
711
712 int
713 dissect_dsp_MasterAndShadowAccessPoints(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
714   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
715                                  MasterAndShadowAccessPoints_set_of, hf_index, ett_dsp_MasterAndShadowAccessPoints);
716
717   return offset;
718 }
719
720
721 static const ber_sequence_t AccessPointInformation_set[] = {
722   { &hf_dsp_ae_title        , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
723   { &hf_dsp_address         , BER_CLASS_CON, 1, 0, dissect_x509sat_PresentationAddress },
724   { &hf_dsp_protocolInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_SET_OF_ProtocolInformation },
725   { &hf_dsp_category        , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_T_category },
726   { &hf_dsp_chainingRequired, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
727   { &hf_dsp_additionalPoints, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_dsp_MasterAndShadowAccessPoints },
728   { NULL, 0, 0, 0, NULL }
729 };
730
731 static int
732 dissect_dsp_AccessPointInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
733   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
734                               AccessPointInformation_set, hf_index, ett_dsp_AccessPointInformation);
735
736   return offset;
737 }
738
739
740 static const ber_sequence_t CrossReference_set[] = {
741   { &hf_dsp_contextPrefix   , BER_CLASS_CON, 0, 0, dissect_x509if_DistinguishedName },
742   { &hf_dsp_accessPoint     , BER_CLASS_CON, 1, 0, dissect_dsp_AccessPointInformation },
743   { NULL, 0, 0, 0, NULL }
744 };
745
746 static int
747 dissect_dsp_CrossReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
748   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
749                               CrossReference_set, hf_index, ett_dsp_CrossReference);
750
751   return offset;
752 }
753
754
755 static const ber_sequence_t SEQUENCE_OF_CrossReference_sequence_of[1] = {
756   { &hf_dsp_crossReferences_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_CrossReference },
757 };
758
759 static int
760 dissect_dsp_SEQUENCE_OF_CrossReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
761   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
762                                       SEQUENCE_OF_CrossReference_sequence_of, hf_index, ett_dsp_SEQUENCE_OF_CrossReference);
763
764   return offset;
765 }
766
767
768 static const ber_sequence_t ChainingResults_set[] = {
769   { &hf_dsp_info            , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_dsp_DomainInfo },
770   { &hf_dsp_crossReferences , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dsp_SEQUENCE_OF_CrossReference },
771   { &hf_dsp_securityParameters, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
772   { &hf_dsp_alreadySearched , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
773   { NULL, 0, 0, 0, NULL }
774 };
775
776 static int
777 dissect_dsp_ChainingResults(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
778   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
779                               ChainingResults_set, hf_index, ett_dsp_ChainingResults);
780
781   return offset;
782 }
783
784
785 static const ber_sequence_t ChainedReadResultData_set[] = {
786   { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
787   { &hf_dsp_readResult      , BER_CLASS_CON, 0, 0, dissect_dap_ReadResult },
788   { NULL, 0, 0, 0, NULL }
789 };
790
791 static int
792 dissect_dsp_ChainedReadResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
793   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
794                               ChainedReadResultData_set, hf_index, ett_dsp_ChainedReadResultData);
795
796   return offset;
797 }
798
799
800 static const ber_sequence_t T_signedChainedReadResult_sequence[] = {
801   { &hf_dsp_chainedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadResultData },
802   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
803   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
804   { NULL, 0, 0, 0, NULL }
805 };
806
807 static int
808 dissect_dsp_T_signedChainedReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
809   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
810                                    T_signedChainedReadResult_sequence, hf_index, ett_dsp_T_signedChainedReadResult);
811
812   return offset;
813 }
814
815
816 static const value_string dsp_ChainedReadResult_vals[] = {
817   {   0, "unsignedChainedReadResult" },
818   {   1, "signedChainedReadResult" },
819   { 0, NULL }
820 };
821
822 static const ber_choice_t ChainedReadResult_choice[] = {
823   {   0, &hf_dsp_unsignedChainedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedReadResultData },
824   {   1, &hf_dsp_signedChainedReadResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedReadResult },
825   { 0, NULL, 0, 0, 0, NULL }
826 };
827
828 static int
829 dissect_dsp_ChainedReadResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
830   offset = dissect_ber_choice(actx, tree, tvb, offset,
831                                  ChainedReadResult_choice, hf_index, ett_dsp_ChainedReadResult,
832                                  NULL);
833
834   return offset;
835 }
836
837
838 static const ber_sequence_t ChainedCompareArgumentData_set[] = {
839   { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
840   { &hf_dsp_compareArgument , BER_CLASS_CON, 0, 0, dissect_dap_CompareArgument },
841   { NULL, 0, 0, 0, NULL }
842 };
843
844 static int
845 dissect_dsp_ChainedCompareArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
846   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
847                               ChainedCompareArgumentData_set, hf_index, ett_dsp_ChainedCompareArgumentData);
848
849   return offset;
850 }
851
852
853 static const ber_sequence_t T_signedChainedCompareArgument_sequence[] = {
854   { &hf_dsp_chainedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareArgumentData },
855   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
856   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
857   { NULL, 0, 0, 0, NULL }
858 };
859
860 static int
861 dissect_dsp_T_signedChainedCompareArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
862   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
863                                    T_signedChainedCompareArgument_sequence, hf_index, ett_dsp_T_signedChainedCompareArgument);
864
865   return offset;
866 }
867
868
869 static const value_string dsp_ChainedCompareArgument_vals[] = {
870   {   0, "unsignedChainedCompareArgument" },
871   {   1, "signedChainedCompareArgument" },
872   { 0, NULL }
873 };
874
875 static const ber_choice_t ChainedCompareArgument_choice[] = {
876   {   0, &hf_dsp_unsignedChainedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareArgumentData },
877   {   1, &hf_dsp_signedChainedCompareArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedCompareArgument },
878   { 0, NULL, 0, 0, 0, NULL }
879 };
880
881 static int
882 dissect_dsp_ChainedCompareArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
883   offset = dissect_ber_choice(actx, tree, tvb, offset,
884                                  ChainedCompareArgument_choice, hf_index, ett_dsp_ChainedCompareArgument,
885                                  NULL);
886
887   return offset;
888 }
889
890
891 static const ber_sequence_t ChainedCompareResultData_set[] = {
892   { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
893   { &hf_dsp_compareResult   , BER_CLASS_CON, 0, 0, dissect_dap_CompareResult },
894   { NULL, 0, 0, 0, NULL }
895 };
896
897 static int
898 dissect_dsp_ChainedCompareResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
899   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
900                               ChainedCompareResultData_set, hf_index, ett_dsp_ChainedCompareResultData);
901
902   return offset;
903 }
904
905
906 static const ber_sequence_t T_signedChainedCompareResult_sequence[] = {
907   { &hf_dsp_chainedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareResultData },
908   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
909   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
910   { NULL, 0, 0, 0, NULL }
911 };
912
913 static int
914 dissect_dsp_T_signedChainedCompareResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
915   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
916                                    T_signedChainedCompareResult_sequence, hf_index, ett_dsp_T_signedChainedCompareResult);
917
918   return offset;
919 }
920
921
922 static const value_string dsp_ChainedCompareResult_vals[] = {
923   {   0, "unsignedChainedCompareResult" },
924   {   1, "signedChainedCompareResult" },
925   { 0, NULL }
926 };
927
928 static const ber_choice_t ChainedCompareResult_choice[] = {
929   {   0, &hf_dsp_unsignedChainedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedCompareResultData },
930   {   1, &hf_dsp_signedChainedCompareResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedCompareResult },
931   { 0, NULL, 0, 0, 0, NULL }
932 };
933
934 static int
935 dissect_dsp_ChainedCompareResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
936   offset = dissect_ber_choice(actx, tree, tvb, offset,
937                                  ChainedCompareResult_choice, hf_index, ett_dsp_ChainedCompareResult,
938                                  NULL);
939
940   return offset;
941 }
942
943
944
945 static int
946 dissect_dsp_ChainedAbandonArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
947   offset = dissect_dap_AbandonArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
948
949   return offset;
950 }
951
952
953
954 static int
955 dissect_dsp_ChainedAbandonResult(gboolean 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_dap_AbandonResult(implicit_tag, tvb, offset, actx, tree, hf_index);
957
958   return offset;
959 }
960
961
962 static const ber_sequence_t ChainedListArgumentData_set[] = {
963   { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
964   { &hf_dsp_listArgument    , BER_CLASS_CON, 0, 0, dissect_dap_ListArgument },
965   { NULL, 0, 0, 0, NULL }
966 };
967
968 static int
969 dissect_dsp_ChainedListArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
970   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
971                               ChainedListArgumentData_set, hf_index, ett_dsp_ChainedListArgumentData);
972
973   return offset;
974 }
975
976
977 static const ber_sequence_t T_signedChainedListArgument_sequence[] = {
978   { &hf_dsp_chainedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListArgumentData },
979   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
980   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
981   { NULL, 0, 0, 0, NULL }
982 };
983
984 static int
985 dissect_dsp_T_signedChainedListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
986   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
987                                    T_signedChainedListArgument_sequence, hf_index, ett_dsp_T_signedChainedListArgument);
988
989   return offset;
990 }
991
992
993 static const value_string dsp_ChainedListArgument_vals[] = {
994   {   0, "unsignedChainedListArgument" },
995   {   1, "signedChainedListArgument" },
996   { 0, NULL }
997 };
998
999 static const ber_choice_t ChainedListArgument_choice[] = {
1000   {   0, &hf_dsp_unsignedChainedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListArgumentData },
1001   {   1, &hf_dsp_signedChainedListArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedListArgument },
1002   { 0, NULL, 0, 0, 0, NULL }
1003 };
1004
1005 static int
1006 dissect_dsp_ChainedListArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1007   offset = dissect_ber_choice(actx, tree, tvb, offset,
1008                                  ChainedListArgument_choice, hf_index, ett_dsp_ChainedListArgument,
1009                                  NULL);
1010
1011   return offset;
1012 }
1013
1014
1015 static const ber_sequence_t ChainedListResultData_set[] = {
1016   { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1017   { &hf_dsp_listResult      , BER_CLASS_CON, 0, 0, dissect_dap_ListResult },
1018   { NULL, 0, 0, 0, NULL }
1019 };
1020
1021 static int
1022 dissect_dsp_ChainedListResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1023   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1024                               ChainedListResultData_set, hf_index, ett_dsp_ChainedListResultData);
1025
1026   return offset;
1027 }
1028
1029
1030 static const ber_sequence_t T_signedChainedListResult_sequence[] = {
1031   { &hf_dsp_chainedListResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListResultData },
1032   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1033   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1034   { NULL, 0, 0, 0, NULL }
1035 };
1036
1037 static int
1038 dissect_dsp_T_signedChainedListResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1039   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1040                                    T_signedChainedListResult_sequence, hf_index, ett_dsp_T_signedChainedListResult);
1041
1042   return offset;
1043 }
1044
1045
1046 static const value_string dsp_ChainedListResult_vals[] = {
1047   {   0, "unsignedChainedListResult" },
1048   {   1, "signedChainedListResult" },
1049   { 0, NULL }
1050 };
1051
1052 static const ber_choice_t ChainedListResult_choice[] = {
1053   {   0, &hf_dsp_unsignedChainedListResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedListResultData },
1054   {   1, &hf_dsp_signedChainedListResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedListResult },
1055   { 0, NULL, 0, 0, 0, NULL }
1056 };
1057
1058 static int
1059 dissect_dsp_ChainedListResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1060   offset = dissect_ber_choice(actx, tree, tvb, offset,
1061                                  ChainedListResult_choice, hf_index, ett_dsp_ChainedListResult,
1062                                  NULL);
1063
1064   return offset;
1065 }
1066
1067
1068 static const ber_sequence_t ChainedSearchArgumentData_set[] = {
1069   { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1070   { &hf_dsp_searchArgument  , BER_CLASS_CON, 0, 0, dissect_dap_SearchArgument },
1071   { NULL, 0, 0, 0, NULL }
1072 };
1073
1074 static int
1075 dissect_dsp_ChainedSearchArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1076   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1077                               ChainedSearchArgumentData_set, hf_index, ett_dsp_ChainedSearchArgumentData);
1078
1079   return offset;
1080 }
1081
1082
1083 static const ber_sequence_t T_signedChainedSearchArgument_sequence[] = {
1084   { &hf_dsp_chainedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchArgumentData },
1085   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1086   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1087   { NULL, 0, 0, 0, NULL }
1088 };
1089
1090 static int
1091 dissect_dsp_T_signedChainedSearchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1092   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1093                                    T_signedChainedSearchArgument_sequence, hf_index, ett_dsp_T_signedChainedSearchArgument);
1094
1095   return offset;
1096 }
1097
1098
1099 static const value_string dsp_ChainedSearchArgument_vals[] = {
1100   {   0, "unsignedChainedSearchArgument" },
1101   {   1, "signedChainedSearchArgument" },
1102   { 0, NULL }
1103 };
1104
1105 static const ber_choice_t ChainedSearchArgument_choice[] = {
1106   {   0, &hf_dsp_unsignedChainedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchArgumentData },
1107   {   1, &hf_dsp_signedChainedSearchArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedSearchArgument },
1108   { 0, NULL, 0, 0, 0, NULL }
1109 };
1110
1111 static int
1112 dissect_dsp_ChainedSearchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1113   offset = dissect_ber_choice(actx, tree, tvb, offset,
1114                                  ChainedSearchArgument_choice, hf_index, ett_dsp_ChainedSearchArgument,
1115                                  NULL);
1116
1117   return offset;
1118 }
1119
1120
1121 static const ber_sequence_t ChainedSearchResultData_set[] = {
1122   { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1123   { &hf_dsp_searchResult    , BER_CLASS_CON, 0, 0, dissect_dap_SearchResult },
1124   { NULL, 0, 0, 0, NULL }
1125 };
1126
1127 static int
1128 dissect_dsp_ChainedSearchResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1129   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1130                               ChainedSearchResultData_set, hf_index, ett_dsp_ChainedSearchResultData);
1131
1132   return offset;
1133 }
1134
1135
1136 static const ber_sequence_t T_signedChainedSearchResult_sequence[] = {
1137   { &hf_dsp_chainedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchResultData },
1138   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1139   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1140   { NULL, 0, 0, 0, NULL }
1141 };
1142
1143 static int
1144 dissect_dsp_T_signedChainedSearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1145   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1146                                    T_signedChainedSearchResult_sequence, hf_index, ett_dsp_T_signedChainedSearchResult);
1147
1148   return offset;
1149 }
1150
1151
1152 static const value_string dsp_ChainedSearchResult_vals[] = {
1153   {   0, "unsignedChainedSearchResult" },
1154   {   1, "signedChainedSearchResult" },
1155   { 0, NULL }
1156 };
1157
1158 static const ber_choice_t ChainedSearchResult_choice[] = {
1159   {   0, &hf_dsp_unsignedChainedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedSearchResultData },
1160   {   1, &hf_dsp_signedChainedSearchResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedSearchResult },
1161   { 0, NULL, 0, 0, 0, NULL }
1162 };
1163
1164 static int
1165 dissect_dsp_ChainedSearchResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1166   offset = dissect_ber_choice(actx, tree, tvb, offset,
1167                                  ChainedSearchResult_choice, hf_index, ett_dsp_ChainedSearchResult,
1168                                  NULL);
1169
1170   return offset;
1171 }
1172
1173
1174 static const ber_sequence_t ChainedAddEntryArgumentData_set[] = {
1175   { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1176   { &hf_dsp_addEntryArgument, BER_CLASS_CON, 0, 0, dissect_dap_AddEntryArgument },
1177   { NULL, 0, 0, 0, NULL }
1178 };
1179
1180 static int
1181 dissect_dsp_ChainedAddEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1182   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1183                               ChainedAddEntryArgumentData_set, hf_index, ett_dsp_ChainedAddEntryArgumentData);
1184
1185   return offset;
1186 }
1187
1188
1189 static const ber_sequence_t T_signedChainedAddEntryArgument_sequence[] = {
1190   { &hf_dsp_chainedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryArgumentData },
1191   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1192   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1193   { NULL, 0, 0, 0, NULL }
1194 };
1195
1196 static int
1197 dissect_dsp_T_signedChainedAddEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1198   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1199                                    T_signedChainedAddEntryArgument_sequence, hf_index, ett_dsp_T_signedChainedAddEntryArgument);
1200
1201   return offset;
1202 }
1203
1204
1205 static const value_string dsp_ChainedAddEntryArgument_vals[] = {
1206   {   0, "unsignedChainedAddEntryArgument" },
1207   {   1, "signedChainedAddEntryArgument" },
1208   { 0, NULL }
1209 };
1210
1211 static const ber_choice_t ChainedAddEntryArgument_choice[] = {
1212   {   0, &hf_dsp_unsignedChainedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryArgumentData },
1213   {   1, &hf_dsp_signedChainedAddEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedAddEntryArgument },
1214   { 0, NULL, 0, 0, 0, NULL }
1215 };
1216
1217 static int
1218 dissect_dsp_ChainedAddEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1219   offset = dissect_ber_choice(actx, tree, tvb, offset,
1220                                  ChainedAddEntryArgument_choice, hf_index, ett_dsp_ChainedAddEntryArgument,
1221                                  NULL);
1222
1223   return offset;
1224 }
1225
1226
1227 static const ber_sequence_t ChainedAddEntryResultData_set[] = {
1228   { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1229   { &hf_dsp_addEntryResult  , BER_CLASS_CON, 0, 0, dissect_dap_AddEntryResult },
1230   { NULL, 0, 0, 0, NULL }
1231 };
1232
1233 static int
1234 dissect_dsp_ChainedAddEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1235   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1236                               ChainedAddEntryResultData_set, hf_index, ett_dsp_ChainedAddEntryResultData);
1237
1238   return offset;
1239 }
1240
1241
1242 static const ber_sequence_t T_signedChainedAddEntryResult_sequence[] = {
1243   { &hf_dsp_chainedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryResultData },
1244   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1245   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1246   { NULL, 0, 0, 0, NULL }
1247 };
1248
1249 static int
1250 dissect_dsp_T_signedChainedAddEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1251   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1252                                    T_signedChainedAddEntryResult_sequence, hf_index, ett_dsp_T_signedChainedAddEntryResult);
1253
1254   return offset;
1255 }
1256
1257
1258 static const value_string dsp_ChainedAddEntryResult_vals[] = {
1259   {   0, "unsignedChainedAddEntryResult" },
1260   {   1, "signedChainedAddEntryResult" },
1261   { 0, NULL }
1262 };
1263
1264 static const ber_choice_t ChainedAddEntryResult_choice[] = {
1265   {   0, &hf_dsp_unsignedChainedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedAddEntryResultData },
1266   {   1, &hf_dsp_signedChainedAddEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedAddEntryResult },
1267   { 0, NULL, 0, 0, 0, NULL }
1268 };
1269
1270 static int
1271 dissect_dsp_ChainedAddEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1272   offset = dissect_ber_choice(actx, tree, tvb, offset,
1273                                  ChainedAddEntryResult_choice, hf_index, ett_dsp_ChainedAddEntryResult,
1274                                  NULL);
1275
1276   return offset;
1277 }
1278
1279
1280 static const ber_sequence_t ChainedRemoveEntryArgumentData_set[] = {
1281   { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1282   { &hf_dsp_removeEntryArgument, BER_CLASS_CON, 0, 0, dissect_dap_RemoveEntryArgument },
1283   { NULL, 0, 0, 0, NULL }
1284 };
1285
1286 static int
1287 dissect_dsp_ChainedRemoveEntryArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1288   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1289                               ChainedRemoveEntryArgumentData_set, hf_index, ett_dsp_ChainedRemoveEntryArgumentData);
1290
1291   return offset;
1292 }
1293
1294
1295 static const ber_sequence_t T_signedChainedRemoveEntryArgument_sequence[] = {
1296   { &hf_dsp_chainedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryArgumentData },
1297   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1298   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1299   { NULL, 0, 0, 0, NULL }
1300 };
1301
1302 static int
1303 dissect_dsp_T_signedChainedRemoveEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1304   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1305                                    T_signedChainedRemoveEntryArgument_sequence, hf_index, ett_dsp_T_signedChainedRemoveEntryArgument);
1306
1307   return offset;
1308 }
1309
1310
1311 static const value_string dsp_ChainedRemoveEntryArgument_vals[] = {
1312   {   0, "unsignedChainedRemoveEntryArgument" },
1313   {   1, "signedChainedRemoveEntryArgument" },
1314   { 0, NULL }
1315 };
1316
1317 static const ber_choice_t ChainedRemoveEntryArgument_choice[] = {
1318   {   0, &hf_dsp_unsignedChainedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryArgumentData },
1319   {   1, &hf_dsp_signedChainedRemoveEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedRemoveEntryArgument },
1320   { 0, NULL, 0, 0, 0, NULL }
1321 };
1322
1323 static int
1324 dissect_dsp_ChainedRemoveEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1325   offset = dissect_ber_choice(actx, tree, tvb, offset,
1326                                  ChainedRemoveEntryArgument_choice, hf_index, ett_dsp_ChainedRemoveEntryArgument,
1327                                  NULL);
1328
1329   return offset;
1330 }
1331
1332
1333 static const ber_sequence_t ChainedRemoveEntryResultData_set[] = {
1334   { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1335   { &hf_dsp_removeEntryResult, BER_CLASS_CON, 0, 0, dissect_dap_RemoveEntryResult },
1336   { NULL, 0, 0, 0, NULL }
1337 };
1338
1339 static int
1340 dissect_dsp_ChainedRemoveEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1341   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1342                               ChainedRemoveEntryResultData_set, hf_index, ett_dsp_ChainedRemoveEntryResultData);
1343
1344   return offset;
1345 }
1346
1347
1348 static const ber_sequence_t T_signedChainedRemoveEntryResult_sequence[] = {
1349   { &hf_dsp_chainedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryResultData },
1350   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1351   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1352   { NULL, 0, 0, 0, NULL }
1353 };
1354
1355 static int
1356 dissect_dsp_T_signedChainedRemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1357   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1358                                    T_signedChainedRemoveEntryResult_sequence, hf_index, ett_dsp_T_signedChainedRemoveEntryResult);
1359
1360   return offset;
1361 }
1362
1363
1364 static const value_string dsp_ChainedRemoveEntryResult_vals[] = {
1365   {   0, "unsignedChainedRemoveEntryResult" },
1366   {   1, "signedChainedRemoveEntryResult" },
1367   { 0, NULL }
1368 };
1369
1370 static const ber_choice_t ChainedRemoveEntryResult_choice[] = {
1371   {   0, &hf_dsp_unsignedChainedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedRemoveEntryResultData },
1372   {   1, &hf_dsp_signedChainedRemoveEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedRemoveEntryResult },
1373   { 0, NULL, 0, 0, 0, NULL }
1374 };
1375
1376 static int
1377 dissect_dsp_ChainedRemoveEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1378   offset = dissect_ber_choice(actx, tree, tvb, offset,
1379                                  ChainedRemoveEntryResult_choice, hf_index, ett_dsp_ChainedRemoveEntryResult,
1380                                  NULL);
1381
1382   return offset;
1383 }
1384
1385
1386 static const ber_sequence_t ChainedModifyEntryArgumentData_set[] = {
1387   { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1388   { &hf_dsp_modifyEntryArgument, BER_CLASS_CON, 0, 0, dissect_dap_ModifyEntryArgument },
1389   { NULL, 0, 0, 0, NULL }
1390 };
1391
1392 static int
1393 dissect_dsp_ChainedModifyEntryArgumentData(gboolean 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_set(implicit_tag, actx, tree, tvb, offset,
1395                               ChainedModifyEntryArgumentData_set, hf_index, ett_dsp_ChainedModifyEntryArgumentData);
1396
1397   return offset;
1398 }
1399
1400
1401 static const ber_sequence_t T_signedChainedModifyEntryArgument_sequence[] = {
1402   { &hf_dsp_chainedModifyEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryArgumentData },
1403   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1404   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1405   { NULL, 0, 0, 0, NULL }
1406 };
1407
1408 static int
1409 dissect_dsp_T_signedChainedModifyEntryArgument(gboolean 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_sequence(implicit_tag, actx, tree, tvb, offset,
1411                                    T_signedChainedModifyEntryArgument_sequence, hf_index, ett_dsp_T_signedChainedModifyEntryArgument);
1412
1413   return offset;
1414 }
1415
1416
1417 static const value_string dsp_ChainedModifyEntryArgument_vals[] = {
1418   {   0, "unsignedChainedModifyEntryArgument" },
1419   {   1, "signedChainedModifyEntryArgument" },
1420   { 0, NULL }
1421 };
1422
1423 static const ber_choice_t ChainedModifyEntryArgument_choice[] = {
1424   {   0, &hf_dsp_unsignedChainedModifyEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryArgumentData },
1425   {   1, &hf_dsp_signedChainedModifyEntryArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyEntryArgument },
1426   { 0, NULL, 0, 0, 0, NULL }
1427 };
1428
1429 static int
1430 dissect_dsp_ChainedModifyEntryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1431   offset = dissect_ber_choice(actx, tree, tvb, offset,
1432                                  ChainedModifyEntryArgument_choice, hf_index, ett_dsp_ChainedModifyEntryArgument,
1433                                  NULL);
1434
1435   return offset;
1436 }
1437
1438
1439 static const ber_sequence_t ChainedModifyEntryResultData_set[] = {
1440   { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1441   { &hf_dsp_modifyEntryResult, BER_CLASS_CON, 0, 0, dissect_dap_ModifyEntryResult },
1442   { NULL, 0, 0, 0, NULL }
1443 };
1444
1445 static int
1446 dissect_dsp_ChainedModifyEntryResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1447   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1448                               ChainedModifyEntryResultData_set, hf_index, ett_dsp_ChainedModifyEntryResultData);
1449
1450   return offset;
1451 }
1452
1453
1454 static const ber_sequence_t T_signedChainedModifyEntryResult_sequence[] = {
1455   { &hf_dsp_chainedModifyEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryResultData },
1456   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1457   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1458   { NULL, 0, 0, 0, NULL }
1459 };
1460
1461 static int
1462 dissect_dsp_T_signedChainedModifyEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1463   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1464                                    T_signedChainedModifyEntryResult_sequence, hf_index, ett_dsp_T_signedChainedModifyEntryResult);
1465
1466   return offset;
1467 }
1468
1469
1470 static const value_string dsp_ChainedModifyEntryResult_vals[] = {
1471   {   0, "unsignedChainedModifyEntryResult" },
1472   {   1, "signedChainedModifyEntryResult" },
1473   { 0, NULL }
1474 };
1475
1476 static const ber_choice_t ChainedModifyEntryResult_choice[] = {
1477   {   0, &hf_dsp_unsignedChainedModifyEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyEntryResultData },
1478   {   1, &hf_dsp_signedChainedModifyEntryResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyEntryResult },
1479   { 0, NULL, 0, 0, 0, NULL }
1480 };
1481
1482 static int
1483 dissect_dsp_ChainedModifyEntryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1484   offset = dissect_ber_choice(actx, tree, tvb, offset,
1485                                  ChainedModifyEntryResult_choice, hf_index, ett_dsp_ChainedModifyEntryResult,
1486                                  NULL);
1487
1488   return offset;
1489 }
1490
1491
1492 static const ber_sequence_t ChainedModifyDNArgumentData_set[] = {
1493   { &hf_dsp_chainedArgument , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingArguments },
1494   { &hf_dsp_modifyDNArgument, BER_CLASS_CON, 0, 0, dissect_dap_ModifyDNArgument },
1495   { NULL, 0, 0, 0, NULL }
1496 };
1497
1498 static int
1499 dissect_dsp_ChainedModifyDNArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1500   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1501                               ChainedModifyDNArgumentData_set, hf_index, ett_dsp_ChainedModifyDNArgumentData);
1502
1503   return offset;
1504 }
1505
1506
1507 static const ber_sequence_t T_signedChainedModifyDNArgument_sequence[] = {
1508   { &hf_dsp_chainedModifyDNArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNArgumentData },
1509   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1510   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1511   { NULL, 0, 0, 0, NULL }
1512 };
1513
1514 static int
1515 dissect_dsp_T_signedChainedModifyDNArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1516   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1517                                    T_signedChainedModifyDNArgument_sequence, hf_index, ett_dsp_T_signedChainedModifyDNArgument);
1518
1519   return offset;
1520 }
1521
1522
1523 static const value_string dsp_ChainedModifyDNArgument_vals[] = {
1524   {   0, "unsignedChainedModifyDNArgument" },
1525   {   1, "signedChainedModifyDNArgument" },
1526   { 0, NULL }
1527 };
1528
1529 static const ber_choice_t ChainedModifyDNArgument_choice[] = {
1530   {   0, &hf_dsp_unsignedChainedModifyDNArgument, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNArgumentData },
1531   {   1, &hf_dsp_signedChainedModifyDNArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyDNArgument },
1532   { 0, NULL, 0, 0, 0, NULL }
1533 };
1534
1535 static int
1536 dissect_dsp_ChainedModifyDNArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1537   offset = dissect_ber_choice(actx, tree, tvb, offset,
1538                                  ChainedModifyDNArgument_choice, hf_index, ett_dsp_ChainedModifyDNArgument,
1539                                  NULL);
1540
1541   return offset;
1542 }
1543
1544
1545 static const ber_sequence_t ChainedModifyDNResultData_set[] = {
1546   { &hf_dsp_chainedResults  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainingResults },
1547   { &hf_dsp_modifyDNResult  , BER_CLASS_CON, 0, 0, dissect_dap_ModifyDNResult },
1548   { NULL, 0, 0, 0, NULL }
1549 };
1550
1551 static int
1552 dissect_dsp_ChainedModifyDNResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1553   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1554                               ChainedModifyDNResultData_set, hf_index, ett_dsp_ChainedModifyDNResultData);
1555
1556   return offset;
1557 }
1558
1559
1560 static const ber_sequence_t T_signedChainedModifyDNResult_sequence[] = {
1561   { &hf_dsp_chainedModifyDNResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNResultData },
1562   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1563   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1564   { NULL, 0, 0, 0, NULL }
1565 };
1566
1567 static int
1568 dissect_dsp_T_signedChainedModifyDNResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1569   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1570                                    T_signedChainedModifyDNResult_sequence, hf_index, ett_dsp_T_signedChainedModifyDNResult);
1571
1572   return offset;
1573 }
1574
1575
1576 static const value_string dsp_ChainedModifyDNResult_vals[] = {
1577   {   0, "unsignedChainedModifyDNResult" },
1578   {   1, "signedChainedModifyDNResult" },
1579   { 0, NULL }
1580 };
1581
1582 static const ber_choice_t ChainedModifyDNResult_choice[] = {
1583   {   0, &hf_dsp_unsignedChainedModifyDNResult, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_ChainedModifyDNResultData },
1584   {   1, &hf_dsp_signedChainedModifyDNResult, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedChainedModifyDNResult },
1585   { 0, NULL, 0, 0, 0, NULL }
1586 };
1587
1588 static int
1589 dissect_dsp_ChainedModifyDNResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1590   offset = dissect_ber_choice(actx, tree, tvb, offset,
1591                                  ChainedModifyDNResult_choice, hf_index, ett_dsp_ChainedModifyDNResult,
1592                                  NULL);
1593
1594   return offset;
1595 }
1596
1597
1598 static const ber_sequence_t SET_OF_AccessPointInformation_set_of[1] = {
1599   { &hf_dsp_accessPoints_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_AccessPointInformation },
1600 };
1601
1602 static int
1603 dissect_dsp_SET_OF_AccessPointInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1604   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1605                                  SET_OF_AccessPointInformation_set_of, hf_index, ett_dsp_SET_OF_AccessPointInformation);
1606
1607   return offset;
1608 }
1609
1610
1611 static const ber_sequence_t ContinuationReference_set[] = {
1612   { &hf_dsp_targetObject    , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
1613   { &hf_dsp_aliasedRDNs     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
1614   { &hf_dsp_operationProgress, BER_CLASS_CON, 2, 0, dissect_dsp_OperationProgress },
1615   { &hf_dsp_rdnsResolved    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_dsp_INTEGER },
1616   { &hf_dsp_referenceType   , BER_CLASS_CON, 4, 0, dissect_dsp_ReferenceType },
1617   { &hf_dsp_accessPoints    , BER_CLASS_CON, 5, 0, dissect_dsp_SET_OF_AccessPointInformation },
1618   { &hf_dsp_entryOnly       , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
1619   { &hf_dsp_exclusions      , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_dsp_Exclusions },
1620   { &hf_dsp_returnToDUA     , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
1621   { &hf_dsp_nameResolveOnMaster, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
1622   { NULL, 0, 0, 0, NULL }
1623 };
1624
1625 int
1626 dissect_dsp_ContinuationReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1627   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1628                               ContinuationReference_set, hf_index, ett_dsp_ContinuationReference);
1629
1630   return offset;
1631 }
1632
1633
1634 static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = {
1635   { &hf_dsp_notification_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
1636 };
1637
1638 static int
1639 dissect_dsp_SEQUENCE_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1640   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1641                                       SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_dsp_SEQUENCE_OF_Attribute);
1642
1643   return offset;
1644 }
1645
1646
1647 static const ber_sequence_t DSAReferralData_set[] = {
1648   { &hf_dsp_reference       , BER_CLASS_CON, 0, 0, dissect_dsp_ContinuationReference },
1649   { &hf_dsp_contextPrefix   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
1650   { &hf_dsp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_dap_SecurityParameters },
1651   { &hf_dsp_performer       , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509if_DistinguishedName },
1652   { &hf_dsp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_dsp_BOOLEAN },
1653   { &hf_dsp_notification    , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_dsp_SEQUENCE_OF_Attribute },
1654   { NULL, 0, 0, 0, NULL }
1655 };
1656
1657 static int
1658 dissect_dsp_DSAReferralData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1659   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1660                               DSAReferralData_set, hf_index, ett_dsp_DSAReferralData);
1661
1662   return offset;
1663 }
1664
1665
1666 static const ber_sequence_t T_signedDSAReferral_sequence[] = {
1667   { &hf_dsp_dsaReferral     , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_DSAReferralData },
1668   { &hf_dsp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1669   { &hf_dsp_encrypted       , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_dsp_BIT_STRING },
1670   { NULL, 0, 0, 0, NULL }
1671 };
1672
1673 static int
1674 dissect_dsp_T_signedDSAReferral(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1675   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1676                                    T_signedDSAReferral_sequence, hf_index, ett_dsp_T_signedDSAReferral);
1677
1678   return offset;
1679 }
1680
1681
1682 static const value_string dsp_DSAReferral_vals[] = {
1683   {   0, "unsignedDSAReferral" },
1684   {   1, "signedDSAReferral" },
1685   { 0, NULL }
1686 };
1687
1688 static const ber_choice_t DSAReferral_choice[] = {
1689   {   0, &hf_dsp_unsignedDSAReferral, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dsp_DSAReferralData },
1690   {   1, &hf_dsp_signedDSAReferral, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dsp_T_signedDSAReferral },
1691   { 0, NULL, 0, 0, 0, NULL }
1692 };
1693
1694 static int
1695 dissect_dsp_DSAReferral(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1696   offset = dissect_ber_choice(actx, tree, tvb, offset,
1697                                  DSAReferral_choice, hf_index, ett_dsp_DSAReferral,
1698                                  NULL);
1699
1700   return offset;
1701 }
1702
1703
1704 static const ber_sequence_t AccessPoint_set[] = {
1705   { &hf_dsp_ae_title        , BER_CLASS_CON, 0, 0, dissect_x509if_Name },
1706   { &hf_dsp_address         , BER_CLASS_CON, 1, 0, dissect_x509sat_PresentationAddress },
1707   { &hf_dsp_protocolInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dsp_SET_OF_ProtocolInformation },
1708   { NULL, 0, 0, 0, NULL }
1709 };
1710
1711 int
1712 dissect_dsp_AccessPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1713   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1714                               AccessPoint_set, hf_index, ett_dsp_AccessPoint);
1715
1716   return offset;
1717 }
1718
1719 /*--- PDUs ---*/
1720
1721 static void dissect_AccessPoint_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1722   asn1_ctx_t asn1_ctx;
1723   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1724   dissect_dsp_AccessPoint(FALSE, tvb, 0, &asn1_ctx, tree, hf_dsp_AccessPoint_PDU);
1725 }
1726 static void dissect_MasterAndShadowAccessPoints_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1727   asn1_ctx_t asn1_ctx;
1728   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1729   dissect_dsp_MasterAndShadowAccessPoints(FALSE, tvb, 0, &asn1_ctx, tree, hf_dsp_MasterAndShadowAccessPoints_PDU);
1730 }
1731
1732
1733 /*--- End of included file: packet-dsp-fn.c ---*/
1734 #line 72 "packet-dsp-template.c"
1735
1736 /*
1737 * Dissect X518 PDUs inside a ROS PDUs
1738 */
1739 static void
1740 dissect_dsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1741 {
1742         int offset = 0;
1743         int old_offset;
1744         proto_item *item=NULL;
1745         proto_tree *tree=NULL;
1746         int (*dsp_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) = NULL;
1747         char *dsp_op_name;
1748         asn1_ctx_t asn1_ctx;
1749
1750         asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1751
1752         /* do we have operation information from the ROS dissector?  */
1753         if( !pinfo->private_data ){
1754                 if(parent_tree){
1755                         proto_tree_add_text(parent_tree, tvb, offset, -1,
1756                                 "Internal error: can't get operation information from ROS dissector.");
1757                 } 
1758                 return  ;
1759         } else {
1760                 session  = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
1761         }
1762
1763         if(parent_tree){
1764                 item = proto_tree_add_item(parent_tree, proto_dsp, tvb, 0, -1, FALSE);
1765                 tree = proto_item_add_subtree(item, ett_dsp);
1766         }
1767         if (check_col(pinfo->cinfo, COL_PROTOCOL))
1768                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "DAP");
1769         if (check_col(pinfo->cinfo, COL_INFO))
1770                 col_clear(pinfo->cinfo, COL_INFO);
1771
1772         switch(session->ros_op & ROS_OP_MASK) {
1773         case (ROS_OP_BIND | ROS_OP_ARGUMENT):   /*  BindInvoke */
1774           dsp_dissector = dissect_dsp_DSASystemBindArgument;
1775           dsp_op_name = "System-Bind-Argument";
1776           break;
1777         case (ROS_OP_BIND | ROS_OP_RESULT):     /*  BindResult */
1778           dsp_dissector = dissect_dsp_DSASystemBindResult;
1779           dsp_op_name = "System-Bind-Result";
1780           break;
1781         case (ROS_OP_BIND | ROS_OP_ERROR):      /*  BindError */
1782           dsp_dissector = dissect_dsp_DSASystemBindError;
1783           dsp_op_name = "System-Bind-Error";
1784           break;
1785         case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /*  Invoke Argument */
1786           switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1787           case 1: /* read */
1788             dsp_dissector = dissect_dsp_ChainedReadArgument;
1789             dsp_op_name = "Chained-Read-Argument";
1790             break;
1791           case 2: /* compare */
1792             dsp_dissector = dissect_dsp_ChainedCompareArgument;
1793             dsp_op_name = "Chained-Compare-Argument";
1794             break;
1795           case 3: /* abandon */
1796             dsp_dissector = dissect_dsp_ChainedAbandonArgument;
1797             dsp_op_name = "Chained-Abandon-Argument";
1798             break;
1799           case 4: /* list */
1800             dsp_dissector = dissect_dsp_ChainedListArgument;
1801             dsp_op_name = "Chained-List-Argument";
1802             break;
1803           case 5: /* search */
1804             dsp_dissector = dissect_dsp_ChainedSearchArgument;
1805             dsp_op_name = "Chained-Search-Argument";
1806             break;
1807           case 6: /* addEntry */
1808             dsp_dissector = dissect_dsp_ChainedAddEntryArgument;
1809             dsp_op_name = "Chained-Add-Entry-Argument";
1810             break;
1811           case 7: /* removeEntry */
1812             dsp_dissector = dissect_dsp_ChainedRemoveEntryArgument;
1813             dsp_op_name = "Chained-Remove-Entry-Argument";
1814             break;
1815           case 8: /* modifyEntry */
1816             dsp_dissector = dissect_dsp_ChainedModifyEntryArgument;
1817             dsp_op_name = "ChainedModify-Entry-Argument";
1818             break;
1819           case 9: /* modifyDN */
1820             dsp_dissector = dissect_dsp_ChainedModifyDNArgument;
1821             dsp_op_name = "ChainedModify-DN-Argument";
1822             break;
1823           default:
1824             proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP opcode (%d)",
1825                                 session->ros_op & ROS_OP_OPCODE_MASK);
1826             break;
1827           }
1828           break;
1829         case (ROS_OP_INVOKE | ROS_OP_RESULT):   /*  Return Result */
1830           switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1831           case 1: /* read */
1832             dsp_dissector = dissect_dsp_ChainedReadResult;
1833             dsp_op_name = "Chained-Read-Result";
1834             break;
1835           case 2: /* compare */
1836             dsp_dissector = dissect_dsp_ChainedCompareResult;
1837             dsp_op_name = "Chained-Compare-Result";
1838             break;
1839           case 3: /* abandon */
1840             dsp_dissector = dissect_dsp_ChainedAbandonResult;
1841             dsp_op_name = "Chained-Abandon-Result";
1842             break;
1843           case 4: /* list */
1844             dsp_dissector = dissect_dsp_ChainedListResult;
1845             dsp_op_name = "Chained-List-Result";
1846             break;
1847           case 5: /* search */
1848             dsp_dissector = dissect_dsp_ChainedSearchResult;
1849             dsp_op_name = "Chained-Search-Result";
1850             break;
1851           case 6: /* addEntry */
1852             dsp_dissector = dissect_dsp_ChainedAddEntryResult;
1853             dsp_op_name = "Chained-Add-Entry-Result";
1854             break;
1855           case 7: /* removeEntry */
1856             dsp_dissector = dissect_dsp_ChainedRemoveEntryResult;
1857             dsp_op_name = "Chained-Remove-Entry-Result";
1858             break;
1859           case 8: /* modifyEntry */
1860             dsp_dissector = dissect_dsp_ChainedModifyEntryResult;
1861             dsp_op_name = "Chained-Modify-Entry-Result";
1862             break;
1863           case 9: /* modifyDN */
1864             dsp_dissector = dissect_dsp_ChainedModifyDNResult;
1865             dsp_op_name = "ChainedModify-DN-Result";
1866             break;
1867           default:
1868             proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP opcode");
1869             break;
1870           }
1871           break;
1872         case (ROS_OP_INVOKE | ROS_OP_ERROR):    /*  Return Error */
1873           switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1874           case 1: /* attributeError */
1875             dsp_dissector = dissect_dap_AttributeError;
1876             dsp_op_name = "Attribute-Error";
1877             break;
1878           case 2: /* nameError */
1879             dsp_dissector = dissect_dap_NameError;
1880             dsp_op_name = "Name-Error";
1881             break;
1882           case 3: /* serviceError */
1883             dsp_dissector = dissect_dap_ServiceError;
1884             dsp_op_name = "Service-Error";
1885             break;
1886           case 4: /* referral */
1887             dsp_dissector = dissect_dap_Referral;
1888             dsp_op_name = "Referral";
1889             break;
1890           case 5: /* abandoned */
1891             dsp_dissector = dissect_dap_Abandoned;
1892             dsp_op_name = "Abandoned";
1893             break;
1894           case 6: /* securityError */
1895             dsp_dissector = dissect_dap_SecurityError;
1896             dsp_op_name = "Security-Error";
1897             break;
1898           case 7: /* abandonFailed */
1899             dsp_dissector = dissect_dap_AbandonFailedError;
1900             dsp_op_name = "Abandon-Failed-Error";
1901             break;
1902           case 8: /* updateError */
1903             dsp_dissector = dissect_dap_UpdateError;
1904             dsp_op_name = "Update-Error";
1905             break;
1906           case 9: /* DSAReferral */
1907             dsp_dissector = dissect_dsp_DSAReferral;
1908             dsp_op_name = "DSA-Referral";
1909             break;
1910           default:
1911             proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP errcode");
1912             break;
1913           }
1914           break;
1915         default:
1916           proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP PDU");
1917           return;
1918         }
1919
1920         if(dsp_dissector) {
1921           if (check_col(pinfo->cinfo, COL_INFO))
1922             col_set_str(pinfo->cinfo, COL_INFO, dsp_op_name);
1923
1924           while (tvb_reported_length_remaining(tvb, offset) > 0){
1925             old_offset=offset;
1926             offset=(*dsp_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
1927             if(offset == old_offset){
1928               proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DSP PDU");
1929               offset = tvb_length(tvb);
1930               break;
1931             }
1932           }
1933         }
1934 }
1935
1936
1937 /*--- proto_register_dsp -------------------------------------------*/
1938 void proto_register_dsp(void) {
1939
1940   /* List of fields */
1941   static hf_register_info hf[] =
1942   {
1943
1944 /*--- Included file: packet-dsp-hfarr.c ---*/
1945 #line 1 "packet-dsp-hfarr.c"
1946     { &hf_dsp_AccessPoint_PDU,
1947       { "AccessPoint", "dsp.AccessPoint",
1948         FT_NONE, BASE_NONE, NULL, 0,
1949         "dsp.AccessPoint", HFILL }},
1950     { &hf_dsp_MasterAndShadowAccessPoints_PDU,
1951       { "MasterAndShadowAccessPoints", "dsp.MasterAndShadowAccessPoints",
1952         FT_UINT32, BASE_DEC, NULL, 0,
1953         "dsp.MasterAndShadowAccessPoints", HFILL }},
1954     { &hf_dsp_chainedArgument,
1955       { "chainedArgument", "dsp.chainedArgument",
1956         FT_NONE, BASE_NONE, NULL, 0,
1957         "dsp.ChainingArguments", HFILL }},
1958     { &hf_dsp_readArgument,
1959       { "readArgument", "dsp.readArgument",
1960         FT_UINT32, BASE_DEC, VALS(dap_ReadArgument_vals), 0,
1961         "dap.ReadArgument", HFILL }},
1962     { &hf_dsp_unsignedChainedReadArgument,
1963       { "unsignedChainedReadArgument", "dsp.unsignedChainedReadArgument",
1964         FT_NONE, BASE_NONE, NULL, 0,
1965         "dsp.ChainedReadArgumentData", HFILL }},
1966     { &hf_dsp_signedChainedReadArgument,
1967       { "signedChainedReadArgument", "dsp.signedChainedReadArgument",
1968         FT_NONE, BASE_NONE, NULL, 0,
1969         "dsp.T_signedChainedReadArgument", HFILL }},
1970     { &hf_dsp_chainedReadArgument,
1971       { "chainedReadArgument", "dsp.chainedReadArgument",
1972         FT_NONE, BASE_NONE, NULL, 0,
1973         "dsp.ChainedReadArgumentData", HFILL }},
1974     { &hf_dsp_algorithmIdentifier,
1975       { "algorithmIdentifier", "dsp.algorithmIdentifier",
1976         FT_NONE, BASE_NONE, NULL, 0,
1977         "x509af.AlgorithmIdentifier", HFILL }},
1978     { &hf_dsp_encrypted,
1979       { "encrypted", "dsp.encrypted",
1980         FT_BYTES, BASE_NONE, NULL, 0,
1981         "dsp.BIT_STRING", HFILL }},
1982     { &hf_dsp_chainedResults,
1983       { "chainedResults", "dsp.chainedResults",
1984         FT_NONE, BASE_NONE, NULL, 0,
1985         "dsp.ChainingResults", HFILL }},
1986     { &hf_dsp_readResult,
1987       { "readResult", "dsp.readResult",
1988         FT_UINT32, BASE_DEC, VALS(dap_ReadResult_vals), 0,
1989         "dap.ReadResult", HFILL }},
1990     { &hf_dsp_unsignedChainedReadResult,
1991       { "unsignedChainedReadResult", "dsp.unsignedChainedReadResult",
1992         FT_NONE, BASE_NONE, NULL, 0,
1993         "dsp.ChainedReadResultData", HFILL }},
1994     { &hf_dsp_signedChainedReadResult,
1995       { "signedChainedReadResult", "dsp.signedChainedReadResult",
1996         FT_NONE, BASE_NONE, NULL, 0,
1997         "dsp.T_signedChainedReadResult", HFILL }},
1998     { &hf_dsp_chainedReadResult,
1999       { "chainedReadResult", "dsp.chainedReadResult",
2000         FT_NONE, BASE_NONE, NULL, 0,
2001         "dsp.ChainedReadResultData", HFILL }},
2002     { &hf_dsp_compareArgument,
2003       { "compareArgument", "dsp.compareArgument",
2004         FT_UINT32, BASE_DEC, VALS(dap_CompareArgument_vals), 0,
2005         "dap.CompareArgument", HFILL }},
2006     { &hf_dsp_unsignedChainedCompareArgument,
2007       { "unsignedChainedCompareArgument", "dsp.unsignedChainedCompareArgument",
2008         FT_NONE, BASE_NONE, NULL, 0,
2009         "dsp.ChainedCompareArgumentData", HFILL }},
2010     { &hf_dsp_signedChainedCompareArgument,
2011       { "signedChainedCompareArgument", "dsp.signedChainedCompareArgument",
2012         FT_NONE, BASE_NONE, NULL, 0,
2013         "dsp.T_signedChainedCompareArgument", HFILL }},
2014     { &hf_dsp_chainedCompareArgument,
2015       { "chainedCompareArgument", "dsp.chainedCompareArgument",
2016         FT_NONE, BASE_NONE, NULL, 0,
2017         "dsp.ChainedCompareArgumentData", HFILL }},
2018     { &hf_dsp_compareResult,
2019       { "compareResult", "dsp.compareResult",
2020         FT_UINT32, BASE_DEC, VALS(dap_CompareResult_vals), 0,
2021         "dap.CompareResult", HFILL }},
2022     { &hf_dsp_unsignedChainedCompareResult,
2023       { "unsignedChainedCompareResult", "dsp.unsignedChainedCompareResult",
2024         FT_NONE, BASE_NONE, NULL, 0,
2025         "dsp.ChainedCompareResultData", HFILL }},
2026     { &hf_dsp_signedChainedCompareResult,
2027       { "signedChainedCompareResult", "dsp.signedChainedCompareResult",
2028         FT_NONE, BASE_NONE, NULL, 0,
2029         "dsp.T_signedChainedCompareResult", HFILL }},
2030     { &hf_dsp_chainedCompareResult,
2031       { "chainedCompareResult", "dsp.chainedCompareResult",
2032         FT_NONE, BASE_NONE, NULL, 0,
2033         "dsp.ChainedCompareResultData", HFILL }},
2034     { &hf_dsp_listArgument,
2035       { "listArgument", "dsp.listArgument",
2036         FT_UINT32, BASE_DEC, VALS(dap_ListArgument_vals), 0,
2037         "dap.ListArgument", HFILL }},
2038     { &hf_dsp_unsignedChainedListArgument,
2039       { "unsignedChainedListArgument", "dsp.unsignedChainedListArgument",
2040         FT_NONE, BASE_NONE, NULL, 0,
2041         "dsp.ChainedListArgumentData", HFILL }},
2042     { &hf_dsp_signedChainedListArgument,
2043       { "signedChainedListArgument", "dsp.signedChainedListArgument",
2044         FT_NONE, BASE_NONE, NULL, 0,
2045         "dsp.T_signedChainedListArgument", HFILL }},
2046     { &hf_dsp_chainedListArgument,
2047       { "chainedListArgument", "dsp.chainedListArgument",
2048         FT_NONE, BASE_NONE, NULL, 0,
2049         "dsp.ChainedListArgumentData", HFILL }},
2050     { &hf_dsp_listResult,
2051       { "listResult", "dsp.listResult",
2052         FT_UINT32, BASE_DEC, VALS(dap_ListResult_vals), 0,
2053         "dap.ListResult", HFILL }},
2054     { &hf_dsp_unsignedChainedListResult,
2055       { "unsignedChainedListResult", "dsp.unsignedChainedListResult",
2056         FT_NONE, BASE_NONE, NULL, 0,
2057         "dsp.ChainedListResultData", HFILL }},
2058     { &hf_dsp_signedChainedListResult,
2059       { "signedChainedListResult", "dsp.signedChainedListResult",
2060         FT_NONE, BASE_NONE, NULL, 0,
2061         "dsp.T_signedChainedListResult", HFILL }},
2062     { &hf_dsp_chainedListResult,
2063       { "chainedListResult", "dsp.chainedListResult",
2064         FT_NONE, BASE_NONE, NULL, 0,
2065         "dsp.ChainedListResultData", HFILL }},
2066     { &hf_dsp_searchArgument,
2067       { "searchArgument", "dsp.searchArgument",
2068         FT_UINT32, BASE_DEC, VALS(dap_SearchArgument_vals), 0,
2069         "dap.SearchArgument", HFILL }},
2070     { &hf_dsp_unsignedChainedSearchArgument,
2071       { "unsignedChainedSearchArgument", "dsp.unsignedChainedSearchArgument",
2072         FT_NONE, BASE_NONE, NULL, 0,
2073         "dsp.ChainedSearchArgumentData", HFILL }},
2074     { &hf_dsp_signedChainedSearchArgument,
2075       { "signedChainedSearchArgument", "dsp.signedChainedSearchArgument",
2076         FT_NONE, BASE_NONE, NULL, 0,
2077         "dsp.T_signedChainedSearchArgument", HFILL }},
2078     { &hf_dsp_chainedSearchArgument,
2079       { "chainedSearchArgument", "dsp.chainedSearchArgument",
2080         FT_NONE, BASE_NONE, NULL, 0,
2081         "dsp.ChainedSearchArgumentData", HFILL }},
2082     { &hf_dsp_searchResult,
2083       { "searchResult", "dsp.searchResult",
2084         FT_UINT32, BASE_DEC, VALS(dap_SearchResult_vals), 0,
2085         "dap.SearchResult", HFILL }},
2086     { &hf_dsp_unsignedChainedSearchResult,
2087       { "unsignedChainedSearchResult", "dsp.unsignedChainedSearchResult",
2088         FT_NONE, BASE_NONE, NULL, 0,
2089         "dsp.ChainedSearchResultData", HFILL }},
2090     { &hf_dsp_signedChainedSearchResult,
2091       { "signedChainedSearchResult", "dsp.signedChainedSearchResult",
2092         FT_NONE, BASE_NONE, NULL, 0,
2093         "dsp.T_signedChainedSearchResult", HFILL }},
2094     { &hf_dsp_chainedSearchResult,
2095       { "chainedSearchResult", "dsp.chainedSearchResult",
2096         FT_NONE, BASE_NONE, NULL, 0,
2097         "dsp.ChainedSearchResultData", HFILL }},
2098     { &hf_dsp_addEntryArgument,
2099       { "addEntryArgument", "dsp.addEntryArgument",
2100         FT_UINT32, BASE_DEC, VALS(dap_AddEntryArgument_vals), 0,
2101         "dap.AddEntryArgument", HFILL }},
2102     { &hf_dsp_unsignedChainedAddEntryArgument,
2103       { "unsignedChainedAddEntryArgument", "dsp.unsignedChainedAddEntryArgument",
2104         FT_NONE, BASE_NONE, NULL, 0,
2105         "dsp.ChainedAddEntryArgumentData", HFILL }},
2106     { &hf_dsp_signedChainedAddEntryArgument,
2107       { "signedChainedAddEntryArgument", "dsp.signedChainedAddEntryArgument",
2108         FT_NONE, BASE_NONE, NULL, 0,
2109         "dsp.T_signedChainedAddEntryArgument", HFILL }},
2110     { &hf_dsp_chainedAddEntryArgument,
2111       { "chainedAddEntryArgument", "dsp.chainedAddEntryArgument",
2112         FT_NONE, BASE_NONE, NULL, 0,
2113         "dsp.ChainedAddEntryArgumentData", HFILL }},
2114     { &hf_dsp_addEntryResult,
2115       { "addEntryResult", "dsp.addEntryResult",
2116         FT_UINT32, BASE_DEC, VALS(dap_AddEntryResult_vals), 0,
2117         "dap.AddEntryResult", HFILL }},
2118     { &hf_dsp_unsignedChainedAddEntryResult,
2119       { "unsignedChainedAddEntryResult", "dsp.unsignedChainedAddEntryResult",
2120         FT_NONE, BASE_NONE, NULL, 0,
2121         "dsp.ChainedAddEntryResultData", HFILL }},
2122     { &hf_dsp_signedChainedAddEntryResult,
2123       { "signedChainedAddEntryResult", "dsp.signedChainedAddEntryResult",
2124         FT_NONE, BASE_NONE, NULL, 0,
2125         "dsp.T_signedChainedAddEntryResult", HFILL }},
2126     { &hf_dsp_chainedAddEntryResult,
2127       { "chainedAddEntryResult", "dsp.chainedAddEntryResult",
2128         FT_NONE, BASE_NONE, NULL, 0,
2129         "dsp.ChainedAddEntryResultData", HFILL }},
2130     { &hf_dsp_removeEntryArgument,
2131       { "removeEntryArgument", "dsp.removeEntryArgument",
2132         FT_UINT32, BASE_DEC, VALS(dap_RemoveEntryArgument_vals), 0,
2133         "dap.RemoveEntryArgument", HFILL }},
2134     { &hf_dsp_unsignedChainedRemoveEntryArgument,
2135       { "unsignedChainedRemoveEntryArgument", "dsp.unsignedChainedRemoveEntryArgument",
2136         FT_NONE, BASE_NONE, NULL, 0,
2137         "dsp.ChainedRemoveEntryArgumentData", HFILL }},
2138     { &hf_dsp_signedChainedRemoveEntryArgument,
2139       { "signedChainedRemoveEntryArgument", "dsp.signedChainedRemoveEntryArgument",
2140         FT_NONE, BASE_NONE, NULL, 0,
2141         "dsp.T_signedChainedRemoveEntryArgument", HFILL }},
2142     { &hf_dsp_chainedRemoveEntryArgument,
2143       { "chainedRemoveEntryArgument", "dsp.chainedRemoveEntryArgument",
2144         FT_NONE, BASE_NONE, NULL, 0,
2145         "dsp.ChainedRemoveEntryArgumentData", HFILL }},
2146     { &hf_dsp_removeEntryResult,
2147       { "removeEntryResult", "dsp.removeEntryResult",
2148         FT_UINT32, BASE_DEC, VALS(dap_RemoveEntryResult_vals), 0,
2149         "dap.RemoveEntryResult", HFILL }},
2150     { &hf_dsp_unsignedChainedRemoveEntryResult,
2151       { "unsignedChainedRemoveEntryResult", "dsp.unsignedChainedRemoveEntryResult",
2152         FT_NONE, BASE_NONE, NULL, 0,
2153         "dsp.ChainedRemoveEntryResultData", HFILL }},
2154     { &hf_dsp_signedChainedRemoveEntryResult,
2155       { "signedChainedRemoveEntryResult", "dsp.signedChainedRemoveEntryResult",
2156         FT_NONE, BASE_NONE, NULL, 0,
2157         "dsp.T_signedChainedRemoveEntryResult", HFILL }},
2158     { &hf_dsp_chainedRemoveEntryResult,
2159       { "chainedRemoveEntryResult", "dsp.chainedRemoveEntryResult",
2160         FT_NONE, BASE_NONE, NULL, 0,
2161         "dsp.ChainedRemoveEntryResultData", HFILL }},
2162     { &hf_dsp_modifyEntryArgument,
2163       { "modifyEntryArgument", "dsp.modifyEntryArgument",
2164         FT_UINT32, BASE_DEC, VALS(dap_ModifyEntryArgument_vals), 0,
2165         "dap.ModifyEntryArgument", HFILL }},
2166     { &hf_dsp_unsignedChainedModifyEntryArgument,
2167       { "unsignedChainedModifyEntryArgument", "dsp.unsignedChainedModifyEntryArgument",
2168         FT_NONE, BASE_NONE, NULL, 0,
2169         "dsp.ChainedModifyEntryArgumentData", HFILL }},
2170     { &hf_dsp_signedChainedModifyEntryArgument,
2171       { "signedChainedModifyEntryArgument", "dsp.signedChainedModifyEntryArgument",
2172         FT_NONE, BASE_NONE, NULL, 0,
2173         "dsp.T_signedChainedModifyEntryArgument", HFILL }},
2174     { &hf_dsp_chainedModifyEntryArgument,
2175       { "chainedModifyEntryArgument", "dsp.chainedModifyEntryArgument",
2176         FT_NONE, BASE_NONE, NULL, 0,
2177         "dsp.ChainedModifyEntryArgumentData", HFILL }},
2178     { &hf_dsp_modifyEntryResult,
2179       { "modifyEntryResult", "dsp.modifyEntryResult",
2180         FT_UINT32, BASE_DEC, VALS(dap_ModifyEntryResult_vals), 0,
2181         "dap.ModifyEntryResult", HFILL }},
2182     { &hf_dsp_unsignedChainedModifyEntryResult,
2183       { "unsignedChainedModifyEntryResult", "dsp.unsignedChainedModifyEntryResult",
2184         FT_NONE, BASE_NONE, NULL, 0,
2185         "dsp.ChainedModifyEntryResultData", HFILL }},
2186     { &hf_dsp_signedChainedModifyEntryResult,
2187       { "signedChainedModifyEntryResult", "dsp.signedChainedModifyEntryResult",
2188         FT_NONE, BASE_NONE, NULL, 0,
2189         "dsp.T_signedChainedModifyEntryResult", HFILL }},
2190     { &hf_dsp_chainedModifyEntryResult,
2191       { "chainedModifyEntryResult", "dsp.chainedModifyEntryResult",
2192         FT_NONE, BASE_NONE, NULL, 0,
2193         "dsp.ChainedModifyEntryResultData", HFILL }},
2194     { &hf_dsp_modifyDNArgument,
2195       { "modifyDNArgument", "dsp.modifyDNArgument",
2196         FT_NONE, BASE_NONE, NULL, 0,
2197         "dap.ModifyDNArgument", HFILL }},
2198     { &hf_dsp_unsignedChainedModifyDNArgument,
2199       { "unsignedChainedModifyDNArgument", "dsp.unsignedChainedModifyDNArgument",
2200         FT_NONE, BASE_NONE, NULL, 0,
2201         "dsp.ChainedModifyDNArgumentData", HFILL }},
2202     { &hf_dsp_signedChainedModifyDNArgument,
2203       { "signedChainedModifyDNArgument", "dsp.signedChainedModifyDNArgument",
2204         FT_NONE, BASE_NONE, NULL, 0,
2205         "dsp.T_signedChainedModifyDNArgument", HFILL }},
2206     { &hf_dsp_chainedModifyDNArgument,
2207       { "chainedModifyDNArgument", "dsp.chainedModifyDNArgument",
2208         FT_NONE, BASE_NONE, NULL, 0,
2209         "dsp.ChainedModifyDNArgumentData", HFILL }},
2210     { &hf_dsp_modifyDNResult,
2211       { "modifyDNResult", "dsp.modifyDNResult",
2212         FT_UINT32, BASE_DEC, VALS(dap_ModifyDNResult_vals), 0,
2213         "dap.ModifyDNResult", HFILL }},
2214     { &hf_dsp_unsignedChainedModifyDNResult,
2215       { "unsignedChainedModifyDNResult", "dsp.unsignedChainedModifyDNResult",
2216         FT_NONE, BASE_NONE, NULL, 0,
2217         "dsp.ChainedModifyDNResultData", HFILL }},
2218     { &hf_dsp_signedChainedModifyDNResult,
2219       { "signedChainedModifyDNResult", "dsp.signedChainedModifyDNResult",
2220         FT_NONE, BASE_NONE, NULL, 0,
2221         "dsp.T_signedChainedModifyDNResult", HFILL }},
2222     { &hf_dsp_chainedModifyDNResult,
2223       { "chainedModifyDNResult", "dsp.chainedModifyDNResult",
2224         FT_NONE, BASE_NONE, NULL, 0,
2225         "dsp.ChainedModifyDNResultData", HFILL }},
2226     { &hf_dsp_reference,
2227       { "reference", "dsp.reference",
2228         FT_NONE, BASE_NONE, NULL, 0,
2229         "dsp.ContinuationReference", HFILL }},
2230     { &hf_dsp_contextPrefix,
2231       { "contextPrefix", "dsp.contextPrefix",
2232         FT_UINT32, BASE_DEC, NULL, 0,
2233         "x509if.DistinguishedName", HFILL }},
2234     { &hf_dsp_securityParameters,
2235       { "securityParameters", "dsp.securityParameters",
2236         FT_NONE, BASE_NONE, NULL, 0,
2237         "dap.SecurityParameters", HFILL }},
2238     { &hf_dsp_performer,
2239       { "performer", "dsp.performer",
2240         FT_UINT32, BASE_DEC, NULL, 0,
2241         "x509if.DistinguishedName", HFILL }},
2242     { &hf_dsp_aliasDereferenced,
2243       { "aliasDereferenced", "dsp.aliasDereferenced",
2244         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
2245         "dsp.BOOLEAN", HFILL }},
2246     { &hf_dsp_notification,
2247       { "notification", "dsp.notification",
2248         FT_UINT32, BASE_DEC, NULL, 0,
2249         "dsp.SEQUENCE_OF_Attribute", HFILL }},
2250     { &hf_dsp_notification_item,
2251       { "Attribute", "dsp.Attribute",
2252         FT_NONE, BASE_NONE, NULL, 0,
2253         "x509if.Attribute", HFILL }},
2254     { &hf_dsp_unsignedDSAReferral,
2255       { "unsignedDSAReferral", "dsp.unsignedDSAReferral",
2256         FT_NONE, BASE_NONE, NULL, 0,
2257         "dsp.DSAReferralData", HFILL }},
2258     { &hf_dsp_signedDSAReferral,
2259       { "signedDSAReferral", "dsp.signedDSAReferral",
2260         FT_NONE, BASE_NONE, NULL, 0,
2261         "dsp.T_signedDSAReferral", HFILL }},
2262     { &hf_dsp_dsaReferral,
2263       { "dsaReferral", "dsp.dsaReferral",
2264         FT_NONE, BASE_NONE, NULL, 0,
2265         "dsp.DSAReferralData", HFILL }},
2266     { &hf_dsp_originator,
2267       { "originator", "dsp.originator",
2268         FT_UINT32, BASE_DEC, NULL, 0,
2269         "x509if.DistinguishedName", HFILL }},
2270     { &hf_dsp_targetObjectDN,
2271       { "targetObject", "dsp.targetObject",
2272         FT_UINT32, BASE_DEC, NULL, 0,
2273         "x509if.DistinguishedName", HFILL }},
2274     { &hf_dsp_operationProgress,
2275       { "operationProgress", "dsp.operationProgress",
2276         FT_NONE, BASE_NONE, NULL, 0,
2277         "dsp.OperationProgress", HFILL }},
2278     { &hf_dsp_traceInformation,
2279       { "traceInformation", "dsp.traceInformation",
2280         FT_UINT32, BASE_DEC, NULL, 0,
2281         "dsp.TraceInformation", HFILL }},
2282     { &hf_dsp_aliasedRDNs,
2283       { "aliasedRDNs", "dsp.aliasedRDNs",
2284         FT_INT32, BASE_DEC, NULL, 0,
2285         "dsp.INTEGER", HFILL }},
2286     { &hf_dsp_returnCrossRefs,
2287       { "returnCrossRefs", "dsp.returnCrossRefs",
2288         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
2289         "dsp.BOOLEAN", HFILL }},
2290     { &hf_dsp_referenceType,
2291       { "referenceType", "dsp.referenceType",
2292         FT_UINT32, BASE_DEC, VALS(dsp_ReferenceType_vals), 0,
2293         "dsp.ReferenceType", HFILL }},
2294     { &hf_dsp_info,
2295       { "info", "dsp.info",
2296         FT_OID, BASE_NONE, NULL, 0,
2297         "dsp.DomainInfo", HFILL }},
2298     { &hf_dsp_timeLimit,
2299       { "timeLimit", "dsp.timeLimit",
2300         FT_UINT32, BASE_DEC, VALS(dsp_Time_vals), 0,
2301         "dsp.Time", HFILL }},
2302     { &hf_dsp_entryOnly,
2303       { "entryOnly", "dsp.entryOnly",
2304         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
2305         "dsp.BOOLEAN", HFILL }},
2306     { &hf_dsp_uniqueIdentifier,
2307       { "uniqueIdentifier", "dsp.uniqueIdentifier",
2308         FT_BYTES, BASE_NONE, NULL, 0,
2309         "x509sat.UniqueIdentifier", HFILL }},
2310     { &hf_dsp_authenticationLevel,
2311       { "authenticationLevel", "dsp.authenticationLevel",
2312         FT_UINT32, BASE_DEC, VALS(dsp_AuthenticationLevel_vals), 0,
2313         "dsp.AuthenticationLevel", HFILL }},
2314     { &hf_dsp_exclusions,
2315       { "exclusions", "dsp.exclusions",
2316         FT_UINT32, BASE_DEC, NULL, 0,
2317         "dsp.Exclusions", HFILL }},
2318     { &hf_dsp_excludeShadows,
2319       { "excludeShadows", "dsp.excludeShadows",
2320         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
2321         "dsp.BOOLEAN", HFILL }},
2322     { &hf_dsp_nameResolveOnMaster,
2323       { "nameResolveOnMaster", "dsp.nameResolveOnMaster",
2324         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
2325         "dsp.BOOLEAN", HFILL }},
2326     { &hf_dsp_operationIdentifier,
2327       { "operationIdentifier", "dsp.operationIdentifier",
2328         FT_INT32, BASE_DEC, NULL, 0,
2329         "dsp.INTEGER", HFILL }},
2330     { &hf_dsp_searchRuleId,
2331       { "searchRuleId", "dsp.searchRuleId",
2332         FT_NONE, BASE_NONE, NULL, 0,
2333         "x509if.SearchRuleId", HFILL }},
2334     { &hf_dsp_chainedRelaxation,
2335       { "chainedRelaxation", "dsp.chainedRelaxation",
2336         FT_NONE, BASE_NONE, NULL, 0,
2337         "x509if.MRMapping", HFILL }},
2338     { &hf_dsp_relatedEntry,
2339       { "relatedEntry", "dsp.relatedEntry",
2340         FT_INT32, BASE_DEC, NULL, 0,
2341         "dsp.INTEGER", HFILL }},
2342     { &hf_dsp_utcTime,
2343       { "utcTime", "dsp.utcTime",
2344         FT_STRING, BASE_NONE, NULL, 0,
2345         "dsp.UTCTime", HFILL }},
2346     { &hf_dsp_generalizedTime,
2347       { "generalizedTime", "dsp.generalizedTime",
2348         FT_STRING, BASE_NONE, NULL, 0,
2349         "dsp.GeneralizedTime", HFILL }},
2350     { &hf_dsp_crossReferences,
2351       { "crossReferences", "dsp.crossReferences",
2352         FT_UINT32, BASE_DEC, NULL, 0,
2353         "dsp.SEQUENCE_OF_CrossReference", HFILL }},
2354     { &hf_dsp_crossReferences_item,
2355       { "CrossReference", "dsp.CrossReference",
2356         FT_NONE, BASE_NONE, NULL, 0,
2357         "dsp.CrossReference", HFILL }},
2358     { &hf_dsp_alreadySearched,
2359       { "alreadySearched", "dsp.alreadySearched",
2360         FT_UINT32, BASE_DEC, NULL, 0,
2361         "dsp.Exclusions", HFILL }},
2362     { &hf_dsp_accessPoint,
2363       { "accessPoint", "dsp.accessPoint",
2364         FT_NONE, BASE_NONE, NULL, 0,
2365         "dsp.AccessPointInformation", HFILL }},
2366     { &hf_dsp_nameResolutionPhase,
2367       { "nameResolutionPhase", "dsp.nameResolutionPhase",
2368         FT_UINT32, BASE_DEC, VALS(dsp_T_nameResolutionPhase_vals), 0,
2369         "dsp.T_nameResolutionPhase", HFILL }},
2370     { &hf_dsp_nextRDNToBeResolved,
2371       { "nextRDNToBeResolved", "dsp.nextRDNToBeResolved",
2372         FT_INT32, BASE_DEC, NULL, 0,
2373         "dsp.INTEGER", HFILL }},
2374     { &hf_dsp_TraceInformation_item,
2375       { "TraceItem", "dsp.TraceItem",
2376         FT_NONE, BASE_NONE, NULL, 0,
2377         "dsp.TraceItem", HFILL }},
2378     { &hf_dsp_dsa,
2379       { "dsa", "dsp.dsa",
2380         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2381         "x509if.Name", HFILL }},
2382     { &hf_dsp_targetObject,
2383       { "targetObject", "dsp.targetObject",
2384         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2385         "x509if.Name", HFILL }},
2386     { &hf_dsp_ae_title,
2387       { "ae-title", "dsp.ae_title",
2388         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2389         "x509if.Name", HFILL }},
2390     { &hf_dsp_address,
2391       { "address", "dsp.address",
2392         FT_NONE, BASE_NONE, NULL, 0,
2393         "x509sat.PresentationAddress", HFILL }},
2394     { &hf_dsp_protocolInformation,
2395       { "protocolInformation", "dsp.protocolInformation",
2396         FT_UINT32, BASE_DEC, NULL, 0,
2397         "dsp.SET_OF_ProtocolInformation", HFILL }},
2398     { &hf_dsp_protocolInformation_item,
2399       { "ProtocolInformation", "dsp.ProtocolInformation",
2400         FT_NONE, BASE_NONE, NULL, 0,
2401         "x509sat.ProtocolInformation", HFILL }},
2402     { &hf_dsp_access_point_category,
2403       { "category", "dsp.category",
2404         FT_UINT32, BASE_DEC, VALS(dsp_APCategory_vals), 0,
2405         "dsp.APCategory", HFILL }},
2406     { &hf_dsp_chainingRequired,
2407       { "chainingRequired", "dsp.chainingRequired",
2408         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
2409         "dsp.BOOLEAN", HFILL }},
2410     { &hf_dsp_MasterAndShadowAccessPoints_item,
2411       { "MasterOrShadowAccessPoint", "dsp.MasterOrShadowAccessPoint",
2412         FT_NONE, BASE_NONE, NULL, 0,
2413         "dsp.MasterOrShadowAccessPoint", HFILL }},
2414     { &hf_dsp_category,
2415       { "category", "dsp.category",
2416         FT_UINT32, BASE_DEC, VALS(dsp_T_category_vals), 0,
2417         "dsp.T_category", HFILL }},
2418     { &hf_dsp_additionalPoints,
2419       { "additionalPoints", "dsp.additionalPoints",
2420         FT_UINT32, BASE_DEC, NULL, 0,
2421         "dsp.MasterAndShadowAccessPoints", HFILL }},
2422     { &hf_dsp_Exclusions_item,
2423       { "RDNSequence", "dsp.RDNSequence",
2424         FT_UINT32, BASE_DEC, NULL, 0,
2425         "x509if.RDNSequence", HFILL }},
2426     { &hf_dsp_rdnsResolved,
2427       { "rdnsResolved", "dsp.rdnsResolved",
2428         FT_INT32, BASE_DEC, NULL, 0,
2429         "dsp.INTEGER", HFILL }},
2430     { &hf_dsp_accessPoints,
2431       { "accessPoints", "dsp.accessPoints",
2432         FT_UINT32, BASE_DEC, NULL, 0,
2433         "dsp.SET_OF_AccessPointInformation", HFILL }},
2434     { &hf_dsp_accessPoints_item,
2435       { "AccessPointInformation", "dsp.AccessPointInformation",
2436         FT_NONE, BASE_NONE, NULL, 0,
2437         "dsp.AccessPointInformation", HFILL }},
2438     { &hf_dsp_returnToDUA,
2439       { "returnToDUA", "dsp.returnToDUA",
2440         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
2441         "dsp.BOOLEAN", HFILL }},
2442     { &hf_dsp_basicLevels,
2443       { "basicLevels", "dsp.basicLevels",
2444         FT_NONE, BASE_NONE, NULL, 0,
2445         "dsp.T_basicLevels", HFILL }},
2446     { &hf_dsp_level,
2447       { "level", "dsp.level",
2448         FT_UINT32, BASE_DEC, VALS(dsp_T_level_vals), 0,
2449         "dsp.T_level", HFILL }},
2450     { &hf_dsp_localQualifier,
2451       { "localQualifier", "dsp.localQualifier",
2452         FT_INT32, BASE_DEC, NULL, 0,
2453         "dsp.INTEGER", HFILL }},
2454     { &hf_dsp_signed,
2455       { "signed", "dsp.signed",
2456         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
2457         "dsp.BOOLEAN", HFILL }},
2458     { &hf_dsp_other,
2459       { "other", "dsp.other",
2460         FT_NONE, BASE_NONE, NULL, 0,
2461         "dsp.EXTERNAL", HFILL }},
2462
2463 /*--- End of included file: packet-dsp-hfarr.c ---*/
2464 #line 281 "packet-dsp-template.c"
2465   };
2466
2467   /* List of subtrees */
2468   static gint *ett[] = {
2469     &ett_dsp,
2470
2471 /*--- Included file: packet-dsp-ettarr.c ---*/
2472 #line 1 "packet-dsp-ettarr.c"
2473     &ett_dsp_ChainedReadArgumentData,
2474     &ett_dsp_ChainedReadArgument,
2475     &ett_dsp_T_signedChainedReadArgument,
2476     &ett_dsp_ChainedReadResultData,
2477     &ett_dsp_ChainedReadResult,
2478     &ett_dsp_T_signedChainedReadResult,
2479     &ett_dsp_ChainedCompareArgumentData,
2480     &ett_dsp_ChainedCompareArgument,
2481     &ett_dsp_T_signedChainedCompareArgument,
2482     &ett_dsp_ChainedCompareResultData,
2483     &ett_dsp_ChainedCompareResult,
2484     &ett_dsp_T_signedChainedCompareResult,
2485     &ett_dsp_ChainedListArgumentData,
2486     &ett_dsp_ChainedListArgument,
2487     &ett_dsp_T_signedChainedListArgument,
2488     &ett_dsp_ChainedListResultData,
2489     &ett_dsp_ChainedListResult,
2490     &ett_dsp_T_signedChainedListResult,
2491     &ett_dsp_ChainedSearchArgumentData,
2492     &ett_dsp_ChainedSearchArgument,
2493     &ett_dsp_T_signedChainedSearchArgument,
2494     &ett_dsp_ChainedSearchResultData,
2495     &ett_dsp_ChainedSearchResult,
2496     &ett_dsp_T_signedChainedSearchResult,
2497     &ett_dsp_ChainedAddEntryArgumentData,
2498     &ett_dsp_ChainedAddEntryArgument,
2499     &ett_dsp_T_signedChainedAddEntryArgument,
2500     &ett_dsp_ChainedAddEntryResultData,
2501     &ett_dsp_ChainedAddEntryResult,
2502     &ett_dsp_T_signedChainedAddEntryResult,
2503     &ett_dsp_ChainedRemoveEntryArgumentData,
2504     &ett_dsp_ChainedRemoveEntryArgument,
2505     &ett_dsp_T_signedChainedRemoveEntryArgument,
2506     &ett_dsp_ChainedRemoveEntryResultData,
2507     &ett_dsp_ChainedRemoveEntryResult,
2508     &ett_dsp_T_signedChainedRemoveEntryResult,
2509     &ett_dsp_ChainedModifyEntryArgumentData,
2510     &ett_dsp_ChainedModifyEntryArgument,
2511     &ett_dsp_T_signedChainedModifyEntryArgument,
2512     &ett_dsp_ChainedModifyEntryResultData,
2513     &ett_dsp_ChainedModifyEntryResult,
2514     &ett_dsp_T_signedChainedModifyEntryResult,
2515     &ett_dsp_ChainedModifyDNArgumentData,
2516     &ett_dsp_ChainedModifyDNArgument,
2517     &ett_dsp_T_signedChainedModifyDNArgument,
2518     &ett_dsp_ChainedModifyDNResultData,
2519     &ett_dsp_ChainedModifyDNResult,
2520     &ett_dsp_T_signedChainedModifyDNResult,
2521     &ett_dsp_DSAReferralData,
2522     &ett_dsp_SEQUENCE_OF_Attribute,
2523     &ett_dsp_DSAReferral,
2524     &ett_dsp_T_signedDSAReferral,
2525     &ett_dsp_ChainingArguments,
2526     &ett_dsp_Time,
2527     &ett_dsp_ChainingResults,
2528     &ett_dsp_SEQUENCE_OF_CrossReference,
2529     &ett_dsp_CrossReference,
2530     &ett_dsp_OperationProgress,
2531     &ett_dsp_TraceInformation,
2532     &ett_dsp_TraceItem,
2533     &ett_dsp_AccessPoint,
2534     &ett_dsp_SET_OF_ProtocolInformation,
2535     &ett_dsp_MasterOrShadowAccessPoint,
2536     &ett_dsp_MasterAndShadowAccessPoints,
2537     &ett_dsp_AccessPointInformation,
2538     &ett_dsp_Exclusions,
2539     &ett_dsp_ContinuationReference,
2540     &ett_dsp_SET_OF_AccessPointInformation,
2541     &ett_dsp_AuthenticationLevel,
2542     &ett_dsp_T_basicLevels,
2543
2544 /*--- End of included file: packet-dsp-ettarr.c ---*/
2545 #line 287 "packet-dsp-template.c"
2546   };
2547   module_t *dsp_module;
2548
2549   /* Register protocol */
2550   proto_dsp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2551
2552   /* initially disable the protocol */
2553   proto_set_decoding(proto_dsp, FALSE);
2554
2555   register_dissector("dsp", dissect_dsp, proto_dsp);
2556
2557   /* Register fields and subtrees */
2558   proto_register_field_array(proto_dsp, hf, array_length(hf));
2559   proto_register_subtree_array(ett, array_length(ett));
2560
2561   /* Register our configuration options for DSP, particularly our port */
2562
2563   dsp_module = prefs_register_protocol_subtree("OSI/X.500", proto_dsp, prefs_register_dsp);
2564
2565   prefs_register_uint_preference(dsp_module, "tcp.port", "DSP TCP Port",
2566                                  "Set the port for DSP operations (if other"
2567                                  " than the default of 102)",
2568                                  10, &global_dsp_tcp_port);
2569
2570
2571 }
2572
2573
2574 /*--- proto_reg_handoff_dsp --- */
2575 void proto_reg_handoff_dsp(void) {
2576   dissector_handle_t dsp_handle;
2577
2578
2579 /*--- Included file: packet-dsp-dis-tab.c ---*/
2580 #line 1 "packet-dsp-dis-tab.c"
2581   register_ber_oid_dissector("2.5.12.1", dissect_AccessPoint_PDU, proto_dsp, "id-doa-myAccessPoint");
2582   register_ber_oid_dissector("2.5.12.2", dissect_AccessPoint_PDU, proto_dsp, "id-doa-superiorKnowledge");
2583   register_ber_oid_dissector("2.5.12.3", dissect_MasterAndShadowAccessPoints_PDU, proto_dsp, "id-doa-specificKnowledge");
2584   register_ber_oid_dissector("2.5.12.4", dissect_MasterAndShadowAccessPoints_PDU, proto_dsp, "id-doa-nonSpecificKnowledge");
2585
2586
2587 /*--- End of included file: packet-dsp-dis-tab.c ---*/
2588 #line 320 "packet-dsp-template.c"
2589
2590   /* APPLICATION CONTEXT */
2591
2592   oid_add_from_string("id-ac-directory-system","2.5.3.2");
2593
2594   /* ABSTRACT SYNTAXES */
2595     
2596   /* remember the tpkt handler for change in preferences */
2597   tpkt_handle = find_dissector("tpkt");
2598
2599   /* Register DSP with ROS (with no use of RTSE) */
2600   dsp_handle = find_dissector("dsp");
2601   register_ros_oid_dissector_handle("2.5.9.2", dsp_handle, 0, "id-as-directory-system", FALSE); 
2602
2603 }
2604
2605 void prefs_register_dsp(void) {
2606   static guint tcp_port = 0;
2607
2608   /* de-register the old port */
2609   /* port 102 is registered by TPKT - don't undo this! */
2610   if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
2611     dissector_delete("tcp.port", tcp_port, tpkt_handle);
2612
2613   /* Set our port number for future use */
2614   tcp_port = global_dsp_tcp_port;
2615
2616   if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
2617     dissector_add("tcp.port", global_dsp_tcp_port, tpkt_handle);
2618
2619 }