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