Coverage Report

Created: 2026-07-12 07:10

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