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