Coverage Report

Created: 2025-12-27 06:52

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