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