1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-disp.c */
4 /* asn2wrs.py -b -p disp -c ./disp.cnf -s ./packet-disp-template -D . -O ../.. disp.asn */
5
6 /* Input file: packet-disp-template.c */
7
8 #line 1 "./asn1/disp/packet-disp-template.c"
9 /* packet-disp.c
10 * Routines for X.525 (X.500 Directory Shadow Asbtract Service) and X.519 DISP packet dissection
11 * Graeme Lunt 2005
12 *
13 * Wireshark - Network traffic analyzer
14 * By Gerald Combs <gerald@wireshark.org>
15 * Copyright 1998 Gerald Combs
16 *
17 * SPDX-License-Identifier: GPL-2.0-or-later
18 */
19
20 #include "config.h"
21
22 #include <epan/packet.h>
23 #include <epan/expert.h>
24 #include <epan/prefs.h>
25 #include <epan/oids.h>
26 #include <epan/asn1.h>
27
28 #include "packet-ber.h"
29 #include "packet-acse.h"
30 #include "packet-ros.h"
31 #include "packet-rtse.h"
32
33 #include "packet-x509if.h"
34 #include "packet-x509af.h"
35 #include "packet-x509sat.h"
36 #include "packet-crmf.h"
37
38 #include "packet-dop.h"
39 #include "packet-dap.h"
40 #include "packet-dsp.h"
41 #include "packet-disp.h"
42
43
44 /* we don't have a separate dissector for X519 -
45 and most of DISP is defined in X525 */
46 #define PNAME "X.519 Directory Information Shadowing Protocol"
47 #define PSNAME "DISP"
48 #define PFNAME "disp"
49
50 void proto_register_disp(void);
51 void proto_reg_handoff_disp(void);
52
53 /* Initialize the protocol and registered fields */
54 static int proto_disp = -1;
55
56
57 /*--- Included file: packet-disp-hf.c ---*/
58 #line 1 "./asn1/disp/packet-disp-hf.c"
59 static int hf_disp_EstablishParameter_PDU = -1; /* EstablishParameter */
60 static int hf_disp_ModificationParameter_PDU = -1; /* ModificationParameter */
61 static int hf_disp_ShadowingAgreementInfo_PDU = -1; /* ShadowingAgreementInfo */
62 static int hf_disp_modifiedSecondaryShadows = -1; /* SET_OF_SupplierAndConsumers */
63 static int hf_disp_modifiedSecondaryShadows_item = -1; /* SupplierAndConsumers */
64 static int hf_disp_shadowSubject = -1; /* UnitOfReplication */
65 static int hf_disp_updateMode = -1; /* UpdateMode */
66 static int hf_disp_master = -1; /* AccessPoint */
67 static int hf_disp_secondaryShadows = -1; /* BOOLEAN */
68 static int hf_disp_area = -1; /* AreaSpecification */
69 static int hf_disp_replication_attributes = -1; /* AttributeSelection */
70 static int hf_disp_knowledge = -1; /* Knowledge */
71 static int hf_disp_subordinates = -1; /* BOOLEAN */
72 static int hf_disp_contextSelection = -1; /* ContextSelection */
73 static int hf_disp_supplyContexts = -1; /* T_supplyContexts */
74 static int hf_disp_allContexts = -1; /* NULL */
75 static int hf_disp_selectedContexts = -1; /* T_selectedContexts */
76 static int hf_disp_selectedContexts_item = -1; /* OBJECT_IDENTIFIER */
77 static int hf_disp_contextPrefix = -1; /* DistinguishedName */
78 static int hf_disp_replicationArea = -1; /* SubtreeSpecification */
79 static int hf_disp_knowledgeType = -1; /* T_knowledgeType */
80 static int hf_disp_extendedKnowledge = -1; /* BOOLEAN */
81 static int hf_disp_AttributeSelection_item = -1; /* ClassAttributeSelection */
82 static int hf_disp_class = -1; /* OBJECT_IDENTIFIER */
83 static int hf_disp_classAttributes = -1; /* ClassAttributes */
84 static int hf_disp_allAttributes = -1; /* NULL */
85 static int hf_disp_include = -1; /* AttributeTypes */
86 static int hf_disp_exclude = -1; /* AttributeTypes */
87 static int hf_disp_AttributeTypes_item = -1; /* AttributeType */
88 static int hf_disp_supplierInitiated = -1; /* SupplierUpdateMode */
89 static int hf_disp_consumerInitiated = -1; /* ConsumerUpdateMode */
90 static int hf_disp_onChange = -1; /* BOOLEAN */
91 static int hf_disp_scheduled = -1; /* SchedulingParameters */
92 static int hf_disp_periodic = -1; /* PeriodicStrategy */
93 static int hf_disp_othertimes = -1; /* BOOLEAN */
94 static int hf_disp_beginTime = -1; /* Time */
95 static int hf_disp_windowSize = -1; /* INTEGER */
96 static int hf_disp_updateInterval = -1; /* INTEGER */
97 static int hf_disp_agreementID = -1; /* AgreementID */
98 static int hf_disp_lastUpdate = -1; /* Time */
99 static int hf_disp_updateStrategy = -1; /* T_updateStrategy */
100 static int hf_disp_standardUpdate = -1; /* StandardUpdate */
101 static int hf_disp_other = -1; /* EXTERNAL */
102 static int hf_disp_securityParameters = -1; /* SecurityParameters */
103 static int hf_disp_unsignedCoordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
104 static int hf_disp_signedCoordinateShadowUpdateArgument = -1; /* T_signedCoordinateShadowUpdateArgument */
105 static int hf_disp_coordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
106 static int hf_disp_algorithmIdentifier = -1; /* AlgorithmIdentifier */
107 static int hf_disp_encrypted = -1; /* BIT_STRING */
108 static int hf_disp_null = -1; /* NULL */
109 static int hf_disp_information = -1; /* Information */
110 static int hf_disp_performer = -1; /* DistinguishedName */
111 static int hf_disp_aliasDereferenced = -1; /* BOOLEAN */
112 static int hf_disp_notification = -1; /* SEQUENCE_OF_Attribute */
113 static int hf_disp_notification_item = -1; /* Attribute */
114 static int hf_disp_unsignedInformation = -1; /* InformationData */
115 static int hf_disp_signedInformation = -1; /* T_signedInformation */
116 static int hf_disp_information_data = -1; /* InformationData */
117 static int hf_disp_requestedStrategy = -1; /* T_requestedStrategy */
118 static int hf_disp_standard = -1; /* T_standard */
119 static int hf_disp_unsignedRequestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
120 static int hf_disp_signedRequestShadowUpdateArgument = -1; /* T_signedRequestShadowUpdateArgument */
121 static int hf_disp_requestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
122 static int hf_disp_updateTime = -1; /* Time */
123 static int hf_disp_updateWindow = -1; /* UpdateWindow */
124 static int hf_disp_updatedInfo = -1; /* RefreshInformation */
125 static int hf_disp_unsignedUpdateShadowArgument = -1; /* UpdateShadowArgumentData */
126 static int hf_disp_signedUpdateShadowArgument = -1; /* T_signedUpdateShadowArgument */
127 static int hf_disp_updateShadowArgument = -1; /* UpdateShadowArgumentData */
128 static int hf_disp_start = -1; /* Time */
129 static int hf_disp_stop = -1; /* Time */
130 static int hf_disp_noRefresh = -1; /* NULL */
131 static int hf_disp_total = -1; /* TotalRefresh */
132 static int hf_disp_incremental = -1; /* IncrementalRefresh */
133 static int hf_disp_otherStrategy = -1; /* EXTERNAL */
134 static int hf_disp_sDSE = -1; /* SDSEContent */
135 static int hf_disp_subtree = -1; /* SET_OF_Subtree */
136 static int hf_disp_subtree_item = -1; /* Subtree */
137 static int hf_disp_sDSEType = -1; /* SDSEType */
138 static int hf_disp_subComplete = -1; /* BOOLEAN */
139 static int hf_disp_attComplete = -1; /* BOOLEAN */
140 static int hf_disp_attributes = -1; /* SET_OF_Attribute */
141 static int hf_disp_attributes_item = -1; /* Attribute */
142 static int hf_disp_attValIncomplete = -1; /* SET_OF_AttributeType */
143 static int hf_disp_attValIncomplete_item = -1; /* AttributeType */
144 static int hf_disp_rdn = -1; /* RelativeDistinguishedName */
145 static int hf_disp_IncrementalRefresh_item = -1; /* IncrementalStepRefresh */
146 static int hf_disp_sDSEChanges = -1; /* T_sDSEChanges */
147 static int hf_disp_add = -1; /* SDSEContent */
148 static int hf_disp_remove = -1; /* NULL */
149 static int hf_disp_modify = -1; /* ContentChange */
150 static int hf_disp_subordinateUpdates = -1; /* SEQUENCE_OF_SubordinateChanges */
151 static int hf_disp_subordinateUpdates_item = -1; /* SubordinateChanges */
152 static int hf_disp_rename = -1; /* T_rename */
153 static int hf_disp_newRDN = -1; /* RelativeDistinguishedName */
154 static int hf_disp_newDN = -1; /* DistinguishedName */
155 static int hf_disp_attributeChanges = -1; /* T_attributeChanges */
156 static int hf_disp_replace = -1; /* SET_OF_Attribute */
157 static int hf_disp_replace_item = -1; /* Attribute */
158 static int hf_disp_changes = -1; /* SEQUENCE_OF_EntryModification */
159 static int hf_disp_changes_item = -1; /* EntryModification */
160 static int hf_disp_subordinate = -1; /* RelativeDistinguishedName */
161 static int hf_disp_subordinate_changes = -1; /* IncrementalStepRefresh */
162 static int hf_disp_problem = -1; /* ShadowProblem */
163 static int hf_disp_unsignedShadowError = -1; /* ShadowErrorData */
164 static int hf_disp_signedShadowError = -1; /* T_signedShadowError */
165 static int hf_disp_shadowError = -1; /* ShadowErrorData */
166
167 /*--- End of included file: packet-disp-hf.c ---*/
168 #line 49 "./asn1/disp/packet-disp-template.c"
169
170 /* Initialize the subtree pointers */
171 static gint ett_disp = -1;
172
173 /*--- Included file: packet-disp-ett.c ---*/
174 #line 1 "./asn1/disp/packet-disp-ett.c"
175 static gint ett_disp_ModificationParameter = -1;
176 static gint ett_disp_SET_OF_SupplierAndConsumers = -1;
177 static gint ett_disp_ShadowingAgreementInfo = -1;
178 static gint ett_disp_UnitOfReplication = -1;
179 static gint ett_disp_T_supplyContexts = -1;
180 static gint ett_disp_T_selectedContexts = -1;
181 static gint ett_disp_AreaSpecification = -1;
182 static gint ett_disp_Knowledge = -1;
183 static gint ett_disp_AttributeSelection = -1;
184 static gint ett_disp_ClassAttributeSelection = -1;
185 static gint ett_disp_ClassAttributes = -1;
186 static gint ett_disp_AttributeTypes = -1;
187 static gint ett_disp_UpdateMode = -1;
188 static gint ett_disp_SupplierUpdateMode = -1;
189 static gint ett_disp_SchedulingParameters = -1;
190 static gint ett_disp_PeriodicStrategy = -1;
191 static gint ett_disp_CoordinateShadowUpdateArgumentData = -1;
192 static gint ett_disp_T_updateStrategy = -1;
193 static gint ett_disp_CoordinateShadowUpdateArgument = -1;
194 static gint ett_disp_T_signedCoordinateShadowUpdateArgument = -1;
195 static gint ett_disp_CoordinateShadowUpdateResult = -1;
196 static gint ett_disp_InformationData = -1;
197 static gint ett_disp_SEQUENCE_OF_Attribute = -1;
198 static gint ett_disp_Information = -1;
199 static gint ett_disp_T_signedInformation = -1;
200 static gint ett_disp_RequestShadowUpdateArgumentData = -1;
201 static gint ett_disp_T_requestedStrategy = -1;
202 static gint ett_disp_RequestShadowUpdateArgument = -1;
203 static gint ett_disp_T_signedRequestShadowUpdateArgument = -1;
204 static gint ett_disp_RequestShadowUpdateResult = -1;
205 static gint ett_disp_UpdateShadowArgumentData = -1;
206 static gint ett_disp_UpdateShadowArgument = -1;
207 static gint ett_disp_T_signedUpdateShadowArgument = -1;
208 static gint ett_disp_UpdateShadowResult = -1;
209 static gint ett_disp_UpdateWindow = -1;
210 static gint ett_disp_RefreshInformation = -1;
211 static gint ett_disp_TotalRefresh = -1;
212 static gint ett_disp_SET_OF_Subtree = -1;
213 static gint ett_disp_SDSEContent = -1;
214 static gint ett_disp_SET_OF_Attribute = -1;
215 static gint ett_disp_SET_OF_AttributeType = -1;
216 static gint ett_disp_Subtree = -1;
217 static gint ett_disp_IncrementalRefresh = -1;
218 static gint ett_disp_IncrementalStepRefresh = -1;
219 static gint ett_disp_T_sDSEChanges = -1;
220 static gint ett_disp_SEQUENCE_OF_SubordinateChanges = -1;
221 static gint ett_disp_ContentChange = -1;
222 static gint ett_disp_T_rename = -1;
223 static gint ett_disp_T_attributeChanges = -1;
224 static gint ett_disp_SEQUENCE_OF_EntryModification = -1;
225 static gint ett_disp_SubordinateChanges = -1;
226 static gint ett_disp_ShadowErrorData = -1;
227 static gint ett_disp_ShadowError = -1;
228 static gint ett_disp_T_signedShadowError = -1;
229
230 /*--- End of included file: packet-disp-ett.c ---*/
231 #line 53 "./asn1/disp/packet-disp-template.c"
232
233 static expert_field ei_disp_unsupported_opcode = EI_INIT;
234 static expert_field ei_disp_unsupported_errcode = EI_INIT;
235 static expert_field ei_disp_unsupported_pdu = EI_INIT;
236 static expert_field ei_disp_zero_pdu = EI_INIT;
237
238 static dissector_handle_t disp_handle = NULL;
239
240
241 /*--- Included file: packet-disp-fn.c ---*/
242 #line 1 "./asn1/disp/packet-disp-fn.c"
243 /*--- Cyclic dependencies ---*/
244
245 /* Subtree -> Subtree/subtree -> Subtree */
246 static int dissect_disp_Subtree(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
247
248 /* IncrementalStepRefresh -> IncrementalStepRefresh/subordinateUpdates -> SubordinateChanges -> IncrementalStepRefresh */
249 static int dissect_disp_IncrementalStepRefresh(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
250
251
252
253
254 static int
dissect_disp_DSAShadowBindArgument(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)255 dissect_disp_DSAShadowBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
256 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
257
258 return offset;
259 }
260
261
262
263 static int
dissect_disp_DSAShadowBindResult(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)264 dissect_disp_DSAShadowBindResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
265 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
266
267 return offset;
268 }
269
270
271
272 static int
dissect_disp_DSAShadowBindError(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)273 dissect_disp_DSAShadowBindError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
274 offset = dissect_dap_DirectoryBindError(implicit_tag, tvb, offset, actx, tree, hf_index);
275
276 return offset;
277 }
278
279
280
281 static int
dissect_disp_EstablishParameter(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)282 dissect_disp_EstablishParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
283 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
284
285 return offset;
286 }
287
288
289 static const ber_sequence_t SET_OF_SupplierAndConsumers_set_of[1] = {
290 { &hf_disp_modifiedSecondaryShadows_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dop_SupplierAndConsumers },
291 };
292
293 static int
dissect_disp_SET_OF_SupplierAndConsumers(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)294 dissect_disp_SET_OF_SupplierAndConsumers(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
295 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
296 SET_OF_SupplierAndConsumers_set_of, hf_index, ett_disp_SET_OF_SupplierAndConsumers);
297
298 return offset;
299 }
300
301
302 static const ber_sequence_t ModificationParameter_sequence[] = {
303 { &hf_disp_modifiedSecondaryShadows, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_SupplierAndConsumers },
304 { NULL, 0, 0, 0, NULL }
305 };
306
307 static int
dissect_disp_ModificationParameter(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)308 dissect_disp_ModificationParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
309 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
310 ModificationParameter_sequence, hf_index, ett_disp_ModificationParameter);
311
312 return offset;
313 }
314
315
316
317 int
dissect_disp_AgreementID(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)318 dissect_disp_AgreementID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
319 offset = dissect_dop_OperationalBindingID(implicit_tag, tvb, offset, actx, tree, hf_index);
320
321 return offset;
322 }
323
324
325 static const ber_sequence_t AreaSpecification_sequence[] = {
326 { &hf_disp_contextPrefix , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_DistinguishedName },
327 { &hf_disp_replicationArea, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_SubtreeSpecification },
328 { NULL, 0, 0, 0, NULL }
329 };
330
331 static int
dissect_disp_AreaSpecification(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)332 dissect_disp_AreaSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
333 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
334 AreaSpecification_sequence, hf_index, ett_disp_AreaSpecification);
335
336 return offset;
337 }
338
339
340
341 static int
dissect_disp_OBJECT_IDENTIFIER(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)342 dissect_disp_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
343 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
344
345 return offset;
346 }
347
348
349
350 static int
dissect_disp_NULL(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)351 dissect_disp_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
352 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
353
354 return offset;
355 }
356
357
358 static const ber_sequence_t AttributeTypes_set_of[1] = {
359 { &hf_disp_AttributeTypes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
360 };
361
362 static int
dissect_disp_AttributeTypes(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)363 dissect_disp_AttributeTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
364 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
365 AttributeTypes_set_of, hf_index, ett_disp_AttributeTypes);
366
367 return offset;
368 }
369
370
371 static const value_string disp_ClassAttributes_vals[] = {
372 { 0, "allAttributes" },
373 { 1, "include" },
374 { 2, "exclude" },
375 { 0, NULL }
376 };
377
378 static const ber_choice_t ClassAttributes_choice[] = {
379 { 0, &hf_disp_allAttributes , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
380 { 1, &hf_disp_include , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_AttributeTypes },
381 { 2, &hf_disp_exclude , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_AttributeTypes },
382 { 0, NULL, 0, 0, 0, NULL }
383 };
384
385 static int
dissect_disp_ClassAttributes(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)386 dissect_disp_ClassAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
387 offset = dissect_ber_choice(actx, tree, tvb, offset,
388 ClassAttributes_choice, hf_index, ett_disp_ClassAttributes,
389 NULL);
390
391 return offset;
392 }
393
394
395 static const ber_sequence_t ClassAttributeSelection_sequence[] = {
396 { &hf_disp_class , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_OBJECT_IDENTIFIER },
397 { &hf_disp_classAttributes, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_ClassAttributes },
398 { NULL, 0, 0, 0, NULL }
399 };
400
401 static int
dissect_disp_ClassAttributeSelection(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)402 dissect_disp_ClassAttributeSelection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
403 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
404 ClassAttributeSelection_sequence, hf_index, ett_disp_ClassAttributeSelection);
405
406 return offset;
407 }
408
409
410 static const ber_sequence_t AttributeSelection_set_of[1] = {
411 { &hf_disp_AttributeSelection_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ClassAttributeSelection },
412 };
413
414 static int
dissect_disp_AttributeSelection(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)415 dissect_disp_AttributeSelection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
416 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
417 AttributeSelection_set_of, hf_index, ett_disp_AttributeSelection);
418
419 return offset;
420 }
421
422
423 static const value_string disp_T_knowledgeType_vals[] = {
424 { 0, "master" },
425 { 1, "shadow" },
426 { 2, "both" },
427 { 0, NULL }
428 };
429
430
431 static int
dissect_disp_T_knowledgeType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)432 dissect_disp_T_knowledgeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
433 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
434 NULL);
435
436 return offset;
437 }
438
439
440
441 static int
dissect_disp_BOOLEAN(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)442 dissect_disp_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
443 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
444
445 return offset;
446 }
447
448
449 static const ber_sequence_t Knowledge_sequence[] = {
450 { &hf_disp_knowledgeType , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_T_knowledgeType },
451 { &hf_disp_extendedKnowledge, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
452 { NULL, 0, 0, 0, NULL }
453 };
454
455 static int
dissect_disp_Knowledge(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)456 dissect_disp_Knowledge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
457 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
458 Knowledge_sequence, hf_index, ett_disp_Knowledge);
459
460 return offset;
461 }
462
463
464 static const ber_sequence_t T_selectedContexts_set_of[1] = {
465 { &hf_disp_selectedContexts_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_disp_OBJECT_IDENTIFIER },
466 };
467
468 static int
dissect_disp_T_selectedContexts(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)469 dissect_disp_T_selectedContexts(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
470 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
471 T_selectedContexts_set_of, hf_index, ett_disp_T_selectedContexts);
472
473 return offset;
474 }
475
476
477 static const value_string disp_T_supplyContexts_vals[] = {
478 { 0, "allContexts" },
479 { 1, "selectedContexts" },
480 { 0, NULL }
481 };
482
483 static const ber_choice_t T_supplyContexts_choice[] = {
484 { 0, &hf_disp_allContexts , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
485 { 1, &hf_disp_selectedContexts, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_T_selectedContexts },
486 { 0, NULL, 0, 0, 0, NULL }
487 };
488
489 static int
dissect_disp_T_supplyContexts(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)490 dissect_disp_T_supplyContexts(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
491 offset = dissect_ber_choice(actx, tree, tvb, offset,
492 T_supplyContexts_choice, hf_index, ett_disp_T_supplyContexts,
493 NULL);
494
495 return offset;
496 }
497
498
499 static const ber_sequence_t UnitOfReplication_sequence[] = {
500 { &hf_disp_area , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AreaSpecification },
501 { &hf_disp_replication_attributes, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_AttributeSelection },
502 { &hf_disp_knowledge , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Knowledge },
503 { &hf_disp_subordinates , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
504 { &hf_disp_contextSelection, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_ContextSelection },
505 { &hf_disp_supplyContexts , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_T_supplyContexts },
506 { NULL, 0, 0, 0, NULL }
507 };
508
509 static int
dissect_disp_UnitOfReplication(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)510 dissect_disp_UnitOfReplication(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
511 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
512 UnitOfReplication_sequence, hf_index, ett_disp_UnitOfReplication);
513
514 return offset;
515 }
516
517
518
519 static int
dissect_disp_Time(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)520 dissect_disp_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
521 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
522
523 return offset;
524 }
525
526
527
528 static int
dissect_disp_INTEGER(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)529 dissect_disp_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
530 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
531 NULL);
532
533 return offset;
534 }
535
536
537 static const ber_sequence_t PeriodicStrategy_sequence[] = {
538 { &hf_disp_beginTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
539 { &hf_disp_windowSize , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_INTEGER },
540 { &hf_disp_updateInterval , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_INTEGER },
541 { NULL, 0, 0, 0, NULL }
542 };
543
544 static int
dissect_disp_PeriodicStrategy(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)545 dissect_disp_PeriodicStrategy(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
546 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
547 PeriodicStrategy_sequence, hf_index, ett_disp_PeriodicStrategy);
548
549 return offset;
550 }
551
552
553 static const ber_sequence_t SchedulingParameters_sequence[] = {
554 { &hf_disp_periodic , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_PeriodicStrategy },
555 { &hf_disp_othertimes , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
556 { NULL, 0, 0, 0, NULL }
557 };
558
559 static int
dissect_disp_SchedulingParameters(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)560 dissect_disp_SchedulingParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
561 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
562 SchedulingParameters_sequence, hf_index, ett_disp_SchedulingParameters);
563
564 return offset;
565 }
566
567
568 static const value_string disp_SupplierUpdateMode_vals[] = {
569 { 0, "onChange" },
570 { 1, "scheduled" },
571 { 0, NULL }
572 };
573
574 static const ber_choice_t SupplierUpdateMode_choice[] = {
575 { 0, &hf_disp_onChange , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
576 { 1, &hf_disp_scheduled , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_SchedulingParameters },
577 { 0, NULL, 0, 0, 0, NULL }
578 };
579
580 static int
dissect_disp_SupplierUpdateMode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)581 dissect_disp_SupplierUpdateMode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
582 offset = dissect_ber_choice(actx, tree, tvb, offset,
583 SupplierUpdateMode_choice, hf_index, ett_disp_SupplierUpdateMode,
584 NULL);
585
586 return offset;
587 }
588
589
590
591 static int
dissect_disp_ConsumerUpdateMode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)592 dissect_disp_ConsumerUpdateMode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
593 offset = dissect_disp_SchedulingParameters(implicit_tag, tvb, offset, actx, tree, hf_index);
594
595 return offset;
596 }
597
598
599 static const value_string disp_UpdateMode_vals[] = {
600 { 0, "supplierInitiated" },
601 { 1, "consumerInitiated" },
602 { 0, NULL }
603 };
604
605 static const ber_choice_t UpdateMode_choice[] = {
606 { 0, &hf_disp_supplierInitiated, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SupplierUpdateMode },
607 { 1, &hf_disp_consumerInitiated, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_ConsumerUpdateMode },
608 { 0, NULL, 0, 0, 0, NULL }
609 };
610
611 static int
dissect_disp_UpdateMode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)612 dissect_disp_UpdateMode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
613 offset = dissect_ber_choice(actx, tree, tvb, offset,
614 UpdateMode_choice, hf_index, ett_disp_UpdateMode,
615 NULL);
616
617 return offset;
618 }
619
620
621 static const ber_sequence_t ShadowingAgreementInfo_sequence[] = {
622 { &hf_disp_shadowSubject , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_UnitOfReplication },
623 { &hf_disp_updateMode , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_UpdateMode },
624 { &hf_disp_master , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_AccessPoint },
625 { &hf_disp_secondaryShadows, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
626 { NULL, 0, 0, 0, NULL }
627 };
628
629 static int
dissect_disp_ShadowingAgreementInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)630 dissect_disp_ShadowingAgreementInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
631 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
632 ShadowingAgreementInfo_sequence, hf_index, ett_disp_ShadowingAgreementInfo);
633
634 return offset;
635 }
636
637
638 static const value_string disp_StandardUpdate_vals[] = {
639 { 0, "noChanges" },
640 { 1, "incremental" },
641 { 2, "total" },
642 { 0, NULL }
643 };
644
645
646 static int
dissect_disp_StandardUpdate(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)647 dissect_disp_StandardUpdate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
648 #line 65 "./asn1/disp/disp.cnf"
649 guint32 update;
650
651 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
652 &update);
653
654
655 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_StandardUpdate_vals, "unknown(%d)"));
656
657
658
659 return offset;
660 }
661
662
663
664 static int
dissect_disp_EXTERNAL(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)665 dissect_disp_EXTERNAL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
666 offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
667
668 return offset;
669 }
670
671
672 static const value_string disp_T_updateStrategy_vals[] = {
673 { 0, "standard" },
674 { 1, "other" },
675 { 0, NULL }
676 };
677
678 static const ber_choice_t T_updateStrategy_choice[] = {
679 { 0, &hf_disp_standardUpdate , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_StandardUpdate },
680 { 1, &hf_disp_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
681 { 0, NULL, 0, 0, 0, NULL }
682 };
683
684 static int
dissect_disp_T_updateStrategy(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)685 dissect_disp_T_updateStrategy(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
686 offset = dissect_ber_choice(actx, tree, tvb, offset,
687 T_updateStrategy_choice, hf_index, ett_disp_T_updateStrategy,
688 NULL);
689
690 return offset;
691 }
692
693
694 static const ber_sequence_t CoordinateShadowUpdateArgumentData_sequence[] = {
695 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
696 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
697 { &hf_disp_updateStrategy , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_updateStrategy },
698 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
699 { NULL, 0, 0, 0, NULL }
700 };
701
702 static int
dissect_disp_CoordinateShadowUpdateArgumentData(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)703 dissect_disp_CoordinateShadowUpdateArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
704 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
705 CoordinateShadowUpdateArgumentData_sequence, hf_index, ett_disp_CoordinateShadowUpdateArgumentData);
706
707 return offset;
708 }
709
710
711
712 static int
dissect_disp_BIT_STRING(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)713 dissect_disp_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
714 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
715 NULL, 0, hf_index, -1,
716 NULL);
717
718 return offset;
719 }
720
721
722 static const ber_sequence_t T_signedCoordinateShadowUpdateArgument_sequence[] = {
723 { &hf_disp_coordinateShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_CoordinateShadowUpdateArgumentData },
724 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
725 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
726 { NULL, 0, 0, 0, NULL }
727 };
728
729 static int
dissect_disp_T_signedCoordinateShadowUpdateArgument(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)730 dissect_disp_T_signedCoordinateShadowUpdateArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
731 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
732 T_signedCoordinateShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedCoordinateShadowUpdateArgument);
733
734 return offset;
735 }
736
737
738 static const ber_choice_t CoordinateShadowUpdateArgument_choice[] = {
739 { 0, &hf_disp_unsignedCoordinateShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_CoordinateShadowUpdateArgumentData },
740 { 1, &hf_disp_signedCoordinateShadowUpdateArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedCoordinateShadowUpdateArgument },
741 { 0, NULL, 0, 0, 0, NULL }
742 };
743
744 static int
dissect_disp_CoordinateShadowUpdateArgument(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)745 dissect_disp_CoordinateShadowUpdateArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
746 offset = dissect_ber_choice(actx, tree, tvb, offset,
747 CoordinateShadowUpdateArgument_choice, hf_index, ett_disp_CoordinateShadowUpdateArgument,
748 NULL);
749
750 return offset;
751 }
752
753
754 static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = {
755 { &hf_disp_notification_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
756 };
757
758 static int
dissect_disp_SEQUENCE_OF_Attribute(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)759 dissect_disp_SEQUENCE_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
760 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
761 SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_disp_SEQUENCE_OF_Attribute);
762
763 return offset;
764 }
765
766
767 static const ber_sequence_t InformationData_sequence[] = {
768 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
769 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
770 { &hf_disp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dap_SecurityParameters },
771 { &hf_disp_performer , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509if_DistinguishedName },
772 { &hf_disp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
773 { &hf_disp_notification , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_Attribute },
774 { NULL, 0, 0, 0, NULL }
775 };
776
777 static int
dissect_disp_InformationData(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)778 dissect_disp_InformationData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
779 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
780 InformationData_sequence, hf_index, ett_disp_InformationData);
781
782 return offset;
783 }
784
785
786 static const ber_sequence_t T_signedInformation_sequence[] = {
787 { &hf_disp_information_data, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_InformationData },
788 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
789 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
790 { NULL, 0, 0, 0, NULL }
791 };
792
793 static int
dissect_disp_T_signedInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)794 dissect_disp_T_signedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
795 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
796 T_signedInformation_sequence, hf_index, ett_disp_T_signedInformation);
797
798 return offset;
799 }
800
801
802 static const value_string disp_Information_vals[] = {
803 { 0, "unsignedInformation" },
804 { 1, "signedInformation" },
805 { 0, NULL }
806 };
807
808 static const ber_choice_t Information_choice[] = {
809 { 0, &hf_disp_unsignedInformation, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_InformationData },
810 { 1, &hf_disp_signedInformation, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedInformation },
811 { 0, NULL, 0, 0, 0, NULL }
812 };
813
814 static int
dissect_disp_Information(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)815 dissect_disp_Information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
816 offset = dissect_ber_choice(actx, tree, tvb, offset,
817 Information_choice, hf_index, ett_disp_Information,
818 NULL);
819
820 return offset;
821 }
822
823
824 static const value_string disp_CoordinateShadowUpdateResult_vals[] = {
825 { 0, "null" },
826 { 1, "information" },
827 { 0, NULL }
828 };
829
830 static const ber_choice_t CoordinateShadowUpdateResult_choice[] = {
831 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
832 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
833 { 0, NULL, 0, 0, 0, NULL }
834 };
835
836 static int
dissect_disp_CoordinateShadowUpdateResult(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)837 dissect_disp_CoordinateShadowUpdateResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
838 #line 75 "./asn1/disp/disp.cnf"
839 guint32 update;
840
841 offset = dissect_ber_choice(actx, tree, tvb, offset,
842 CoordinateShadowUpdateResult_choice, hf_index, ett_disp_CoordinateShadowUpdateResult,
843 &update);
844
845
846 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_CoordinateShadowUpdateResult_vals, "unknown(%d)"));
847
848
849
850 return offset;
851 }
852
853
854 static const value_string disp_T_standard_vals[] = {
855 { 1, "incremental" },
856 { 2, "total" },
857 { 0, NULL }
858 };
859
860
861 static int
dissect_disp_T_standard(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)862 dissect_disp_T_standard(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
863 #line 45 "./asn1/disp/disp.cnf"
864 guint32 update;
865
866 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
867 &update);
868
869
870 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_T_standard_vals, "standard(%d"));
871
872
873
874 return offset;
875 }
876
877
878 static const value_string disp_T_requestedStrategy_vals[] = {
879 { 0, "standard" },
880 { 1, "other" },
881 { 0, NULL }
882 };
883
884 static const ber_choice_t T_requestedStrategy_choice[] = {
885 { 0, &hf_disp_standard , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_T_standard },
886 { 1, &hf_disp_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
887 { 0, NULL, 0, 0, 0, NULL }
888 };
889
890 static int
dissect_disp_T_requestedStrategy(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)891 dissect_disp_T_requestedStrategy(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
892 offset = dissect_ber_choice(actx, tree, tvb, offset,
893 T_requestedStrategy_choice, hf_index, ett_disp_T_requestedStrategy,
894 NULL);
895
896 return offset;
897 }
898
899
900 static const ber_sequence_t RequestShadowUpdateArgumentData_sequence[] = {
901 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
902 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
903 { &hf_disp_requestedStrategy, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_requestedStrategy },
904 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
905 { NULL, 0, 0, 0, NULL }
906 };
907
908 static int
dissect_disp_RequestShadowUpdateArgumentData(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)909 dissect_disp_RequestShadowUpdateArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
910 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
911 RequestShadowUpdateArgumentData_sequence, hf_index, ett_disp_RequestShadowUpdateArgumentData);
912
913 return offset;
914 }
915
916
917 static const ber_sequence_t T_signedRequestShadowUpdateArgument_sequence[] = {
918 { &hf_disp_requestShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_RequestShadowUpdateArgumentData },
919 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
920 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
921 { NULL, 0, 0, 0, NULL }
922 };
923
924 static int
dissect_disp_T_signedRequestShadowUpdateArgument(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)925 dissect_disp_T_signedRequestShadowUpdateArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
926 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
927 T_signedRequestShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedRequestShadowUpdateArgument);
928
929 return offset;
930 }
931
932
933 static const ber_choice_t RequestShadowUpdateArgument_choice[] = {
934 { 0, &hf_disp_unsignedRequestShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_RequestShadowUpdateArgumentData },
935 { 1, &hf_disp_signedRequestShadowUpdateArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedRequestShadowUpdateArgument },
936 { 0, NULL, 0, 0, 0, NULL }
937 };
938
939 static int
dissect_disp_RequestShadowUpdateArgument(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)940 dissect_disp_RequestShadowUpdateArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
941 offset = dissect_ber_choice(actx, tree, tvb, offset,
942 RequestShadowUpdateArgument_choice, hf_index, ett_disp_RequestShadowUpdateArgument,
943 NULL);
944
945 return offset;
946 }
947
948
949 static const value_string disp_RequestShadowUpdateResult_vals[] = {
950 { 0, "null" },
951 { 1, "information" },
952 { 0, NULL }
953 };
954
955 static const ber_choice_t RequestShadowUpdateResult_choice[] = {
956 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
957 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
958 { 0, NULL, 0, 0, 0, NULL }
959 };
960
961 static int
dissect_disp_RequestShadowUpdateResult(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)962 dissect_disp_RequestShadowUpdateResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
963 #line 85 "./asn1/disp/disp.cnf"
964 guint32 update;
965
966 offset = dissect_ber_choice(actx, tree, tvb, offset,
967 RequestShadowUpdateResult_choice, hf_index, ett_disp_RequestShadowUpdateResult,
968 &update);
969
970
971 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RequestShadowUpdateResult_vals, "unknown(%d)"));
972
973
974
975 return offset;
976 }
977
978
979 static const ber_sequence_t UpdateWindow_sequence[] = {
980 { &hf_disp_start , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
981 { &hf_disp_stop , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
982 { NULL, 0, 0, 0, NULL }
983 };
984
985 static int
dissect_disp_UpdateWindow(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)986 dissect_disp_UpdateWindow(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
987 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
988 UpdateWindow_sequence, hf_index, ett_disp_UpdateWindow);
989
990 return offset;
991 }
992
993
994
995 static int
dissect_disp_SDSEType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)996 dissect_disp_SDSEType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
997 offset = dissect_dop_DSEType(implicit_tag, tvb, offset, actx, tree, hf_index);
998
999 return offset;
1000 }
1001
1002
1003 static const ber_sequence_t SET_OF_Attribute_set_of[1] = {
1004 { &hf_disp_attributes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
1005 };
1006
1007 static int
dissect_disp_SET_OF_Attribute(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1008 dissect_disp_SET_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1009 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1010 SET_OF_Attribute_set_of, hf_index, ett_disp_SET_OF_Attribute);
1011
1012 return offset;
1013 }
1014
1015
1016 static const ber_sequence_t SET_OF_AttributeType_set_of[1] = {
1017 { &hf_disp_attValIncomplete_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1018 };
1019
1020 static int
dissect_disp_SET_OF_AttributeType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1021 dissect_disp_SET_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1022 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1023 SET_OF_AttributeType_set_of, hf_index, ett_disp_SET_OF_AttributeType);
1024
1025 return offset;
1026 }
1027
1028
1029 static const ber_sequence_t SDSEContent_sequence[] = {
1030 { &hf_disp_sDSEType , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_SDSEType },
1031 { &hf_disp_subComplete , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1032 { &hf_disp_attComplete , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1033 { &hf_disp_attributes , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Attribute },
1034 { &hf_disp_attValIncomplete, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_AttributeType },
1035 { NULL, 0, 0, 0, NULL }
1036 };
1037
1038 static int
dissect_disp_SDSEContent(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1039 dissect_disp_SDSEContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1040 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1041 SDSEContent_sequence, hf_index, ett_disp_SDSEContent);
1042
1043 return offset;
1044 }
1045
1046
1047 static const ber_sequence_t SET_OF_Subtree_set_of[1] = {
1048 { &hf_disp_subtree_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_Subtree },
1049 };
1050
1051 static int
dissect_disp_SET_OF_Subtree(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1052 dissect_disp_SET_OF_Subtree(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1053 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1054 SET_OF_Subtree_set_of, hf_index, ett_disp_SET_OF_Subtree);
1055
1056 return offset;
1057 }
1058
1059
1060 static const ber_sequence_t Subtree_sequence[] = {
1061 { &hf_disp_rdn , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1062 { &hf_disp_sDSE , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SDSEContent },
1063 { &hf_disp_subtree , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Subtree },
1064 { NULL, 0, 0, 0, NULL }
1065 };
1066
1067 static int
dissect_disp_Subtree(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1068 dissect_disp_Subtree(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1069 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1070 Subtree_sequence, hf_index, ett_disp_Subtree);
1071
1072 return offset;
1073 }
1074
1075
1076 static const ber_sequence_t TotalRefresh_sequence[] = {
1077 { &hf_disp_sDSE , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SDSEContent },
1078 { &hf_disp_subtree , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Subtree },
1079 { NULL, 0, 0, 0, NULL }
1080 };
1081
1082 static int
dissect_disp_TotalRefresh(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1083 dissect_disp_TotalRefresh(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1084 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1085 TotalRefresh_sequence, hf_index, ett_disp_TotalRefresh);
1086
1087 return offset;
1088 }
1089
1090
1091 static const value_string disp_T_rename_vals[] = {
1092 { 0, "newRDN" },
1093 { 1, "newDN" },
1094 { 0, NULL }
1095 };
1096
1097 static const ber_choice_t T_rename_choice[] = {
1098 { 0, &hf_disp_newRDN , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1099 { 1, &hf_disp_newDN , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_DistinguishedName },
1100 { 0, NULL, 0, 0, 0, NULL }
1101 };
1102
1103 static int
dissect_disp_T_rename(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1104 dissect_disp_T_rename(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1105 offset = dissect_ber_choice(actx, tree, tvb, offset,
1106 T_rename_choice, hf_index, ett_disp_T_rename,
1107 NULL);
1108
1109 return offset;
1110 }
1111
1112
1113 static const ber_sequence_t SEQUENCE_OF_EntryModification_sequence_of[1] = {
1114 { &hf_disp_changes_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_dap_EntryModification },
1115 };
1116
1117 static int
dissect_disp_SEQUENCE_OF_EntryModification(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1118 dissect_disp_SEQUENCE_OF_EntryModification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1119 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1120 SEQUENCE_OF_EntryModification_sequence_of, hf_index, ett_disp_SEQUENCE_OF_EntryModification);
1121
1122 return offset;
1123 }
1124
1125
1126 static const value_string disp_T_attributeChanges_vals[] = {
1127 { 0, "replace" },
1128 { 1, "changes" },
1129 { 0, NULL }
1130 };
1131
1132 static const ber_choice_t T_attributeChanges_choice[] = {
1133 { 0, &hf_disp_replace , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SET_OF_Attribute },
1134 { 1, &hf_disp_changes , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_EntryModification },
1135 { 0, NULL, 0, 0, 0, NULL }
1136 };
1137
1138 static int
dissect_disp_T_attributeChanges(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1139 dissect_disp_T_attributeChanges(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1140 offset = dissect_ber_choice(actx, tree, tvb, offset,
1141 T_attributeChanges_choice, hf_index, ett_disp_T_attributeChanges,
1142 NULL);
1143
1144 return offset;
1145 }
1146
1147
1148 static const ber_sequence_t ContentChange_sequence[] = {
1149 { &hf_disp_rename , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_rename },
1150 { &hf_disp_attributeChanges, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_attributeChanges },
1151 { &hf_disp_sDSEType , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_SDSEType },
1152 { &hf_disp_subComplete , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1153 { &hf_disp_attComplete , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1154 { &hf_disp_attValIncomplete, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_AttributeType },
1155 { NULL, 0, 0, 0, NULL }
1156 };
1157
1158 static int
dissect_disp_ContentChange(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1159 dissect_disp_ContentChange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1160 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1161 ContentChange_sequence, hf_index, ett_disp_ContentChange);
1162
1163 return offset;
1164 }
1165
1166
1167 static const value_string disp_T_sDSEChanges_vals[] = {
1168 { 0, "add" },
1169 { 1, "remove" },
1170 { 2, "modify" },
1171 { 0, NULL }
1172 };
1173
1174 static const ber_choice_t T_sDSEChanges_choice[] = {
1175 { 0, &hf_disp_add , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SDSEContent },
1176 { 1, &hf_disp_remove , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1177 { 2, &hf_disp_modify , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_ContentChange },
1178 { 0, NULL, 0, 0, 0, NULL }
1179 };
1180
1181 static int
dissect_disp_T_sDSEChanges(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1182 dissect_disp_T_sDSEChanges(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1183 offset = dissect_ber_choice(actx, tree, tvb, offset,
1184 T_sDSEChanges_choice, hf_index, ett_disp_T_sDSEChanges,
1185 NULL);
1186
1187 return offset;
1188 }
1189
1190
1191 static const ber_sequence_t SubordinateChanges_sequence[] = {
1192 { &hf_disp_subordinate , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1193 { &hf_disp_subordinate_changes, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_IncrementalStepRefresh },
1194 { NULL, 0, 0, 0, NULL }
1195 };
1196
1197 static int
dissect_disp_SubordinateChanges(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1198 dissect_disp_SubordinateChanges(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1199 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1200 SubordinateChanges_sequence, hf_index, ett_disp_SubordinateChanges);
1201
1202 return offset;
1203 }
1204
1205
1206 static const ber_sequence_t SEQUENCE_OF_SubordinateChanges_sequence_of[1] = {
1207 { &hf_disp_subordinateUpdates_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_SubordinateChanges },
1208 };
1209
1210 static int
dissect_disp_SEQUENCE_OF_SubordinateChanges(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1211 dissect_disp_SEQUENCE_OF_SubordinateChanges(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1212 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1213 SEQUENCE_OF_SubordinateChanges_sequence_of, hf_index, ett_disp_SEQUENCE_OF_SubordinateChanges);
1214
1215 return offset;
1216 }
1217
1218
1219 static const ber_sequence_t IncrementalStepRefresh_sequence[] = {
1220 { &hf_disp_sDSEChanges , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_sDSEChanges },
1221 { &hf_disp_subordinateUpdates, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SEQUENCE_OF_SubordinateChanges },
1222 { NULL, 0, 0, 0, NULL }
1223 };
1224
1225 static int
dissect_disp_IncrementalStepRefresh(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1226 dissect_disp_IncrementalStepRefresh(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1227 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1228 IncrementalStepRefresh_sequence, hf_index, ett_disp_IncrementalStepRefresh);
1229
1230 return offset;
1231 }
1232
1233
1234 static const ber_sequence_t IncrementalRefresh_sequence_of[1] = {
1235 { &hf_disp_IncrementalRefresh_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_IncrementalStepRefresh },
1236 };
1237
1238 static int
dissect_disp_IncrementalRefresh(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1239 dissect_disp_IncrementalRefresh(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1240 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1241 IncrementalRefresh_sequence_of, hf_index, ett_disp_IncrementalRefresh);
1242
1243 return offset;
1244 }
1245
1246
1247 static const value_string disp_RefreshInformation_vals[] = {
1248 { 0, "noRefresh" },
1249 { 1, "total" },
1250 { 2, "incremental" },
1251 { 3, "otherStrategy" },
1252 { 0, NULL }
1253 };
1254
1255 static const ber_choice_t RefreshInformation_choice[] = {
1256 { 0, &hf_disp_noRefresh , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1257 { 1, &hf_disp_total , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_TotalRefresh },
1258 { 2, &hf_disp_incremental , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_IncrementalRefresh },
1259 { 3, &hf_disp_otherStrategy , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
1260 { 0, NULL, 0, 0, 0, NULL }
1261 };
1262
1263 static int
dissect_disp_RefreshInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1264 dissect_disp_RefreshInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1265 #line 55 "./asn1/disp/disp.cnf"
1266 guint32 update;
1267
1268 offset = dissect_ber_choice(actx, tree, tvb, offset,
1269 RefreshInformation_choice, hf_index, ett_disp_RefreshInformation,
1270 &update);
1271
1272
1273 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RefreshInformation_vals, "unknown(%d)"));
1274
1275
1276
1277 return offset;
1278 }
1279
1280
1281 static const ber_sequence_t UpdateShadowArgumentData_sequence[] = {
1282 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
1283 { &hf_disp_updateTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1284 { &hf_disp_updateWindow , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_UpdateWindow },
1285 { &hf_disp_updatedInfo , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_RefreshInformation },
1286 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
1287 { NULL, 0, 0, 0, NULL }
1288 };
1289
1290 static int
dissect_disp_UpdateShadowArgumentData(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1291 dissect_disp_UpdateShadowArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1292 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1293 UpdateShadowArgumentData_sequence, hf_index, ett_disp_UpdateShadowArgumentData);
1294
1295 return offset;
1296 }
1297
1298
1299 static const ber_sequence_t T_signedUpdateShadowArgument_sequence[] = {
1300 { &hf_disp_updateShadowArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_UpdateShadowArgumentData },
1301 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1302 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
1303 { NULL, 0, 0, 0, NULL }
1304 };
1305
1306 static int
dissect_disp_T_signedUpdateShadowArgument(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1307 dissect_disp_T_signedUpdateShadowArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1308 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1309 T_signedUpdateShadowArgument_sequence, hf_index, ett_disp_T_signedUpdateShadowArgument);
1310
1311 return offset;
1312 }
1313
1314
1315 static const ber_choice_t UpdateShadowArgument_choice[] = {
1316 { 0, &hf_disp_unsignedUpdateShadowArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_UpdateShadowArgumentData },
1317 { 1, &hf_disp_signedUpdateShadowArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedUpdateShadowArgument },
1318 { 0, NULL, 0, 0, 0, NULL }
1319 };
1320
1321 static int
dissect_disp_UpdateShadowArgument(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1322 dissect_disp_UpdateShadowArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1323 offset = dissect_ber_choice(actx, tree, tvb, offset,
1324 UpdateShadowArgument_choice, hf_index, ett_disp_UpdateShadowArgument,
1325 NULL);
1326
1327 return offset;
1328 }
1329
1330
1331 static const value_string disp_UpdateShadowResult_vals[] = {
1332 { 0, "null" },
1333 { 1, "information" },
1334 { 0, NULL }
1335 };
1336
1337 static const ber_choice_t UpdateShadowResult_choice[] = {
1338 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1339 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
1340 { 0, NULL, 0, 0, 0, NULL }
1341 };
1342
1343 static int
dissect_disp_UpdateShadowResult(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1344 dissect_disp_UpdateShadowResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1345 #line 95 "./asn1/disp/disp.cnf"
1346 guint32 update;
1347
1348 offset = dissect_ber_choice(actx, tree, tvb, offset,
1349 UpdateShadowResult_choice, hf_index, ett_disp_UpdateShadowResult,
1350 &update);
1351
1352
1353 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_UpdateShadowResult_vals, "unknown(%d)"));
1354
1355
1356
1357 return offset;
1358 }
1359
1360
1361 static const value_string disp_ShadowProblem_vals[] = {
1362 { 1, "invalidAgreementID" },
1363 { 2, "inactiveAgreement" },
1364 { 3, "invalidInformationReceived" },
1365 { 4, "unsupportedStrategy" },
1366 { 5, "missedPrevious" },
1367 { 6, "fullUpdateRequired" },
1368 { 7, "unwillingToPerform" },
1369 { 8, "unsuitableTiming" },
1370 { 9, "updateAlreadyReceived" },
1371 { 10, "invalidSequencing" },
1372 { 11, "insufficientResources" },
1373 { 0, NULL }
1374 };
1375
1376
1377 static int
dissect_disp_ShadowProblem(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1378 dissect_disp_ShadowProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1379 #line 105 "./asn1/disp/disp.cnf"
1380 guint32 problem;
1381
1382 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1383 &problem);
1384
1385
1386 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, disp_ShadowProblem_vals, "ShadowProblem(%d)"));
1387
1388
1389 return offset;
1390 }
1391
1392
1393 static const ber_sequence_t ShadowErrorData_sequence[] = {
1394 { &hf_disp_problem , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowProblem },
1395 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1396 { &hf_disp_updateWindow , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_UpdateWindow },
1397 { &hf_disp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dap_SecurityParameters },
1398 { &hf_disp_performer , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509if_DistinguishedName },
1399 { &hf_disp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1400 { &hf_disp_notification , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_Attribute },
1401 { NULL, 0, 0, 0, NULL }
1402 };
1403
1404 static int
dissect_disp_ShadowErrorData(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1405 dissect_disp_ShadowErrorData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1406 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1407 ShadowErrorData_sequence, hf_index, ett_disp_ShadowErrorData);
1408
1409 return offset;
1410 }
1411
1412
1413 static const ber_sequence_t T_signedShadowError_sequence[] = {
1414 { &hf_disp_shadowError , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowErrorData },
1415 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1416 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
1417 { NULL, 0, 0, 0, NULL }
1418 };
1419
1420 static int
dissect_disp_T_signedShadowError(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1421 dissect_disp_T_signedShadowError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1422 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1423 T_signedShadowError_sequence, hf_index, ett_disp_T_signedShadowError);
1424
1425 return offset;
1426 }
1427
1428
1429 static const ber_choice_t ShadowError_choice[] = {
1430 { 0, &hf_disp_unsignedShadowError, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowErrorData },
1431 { 1, &hf_disp_signedShadowError, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_T_signedShadowError },
1432 { 0, NULL, 0, 0, 0, NULL }
1433 };
1434
1435 static int
dissect_disp_ShadowError(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1436 dissect_disp_ShadowError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1437 offset = dissect_ber_choice(actx, tree, tvb, offset,
1438 ShadowError_choice, hf_index, ett_disp_ShadowError,
1439 NULL);
1440
1441 return offset;
1442 }
1443
1444 /*--- PDUs ---*/
1445
dissect_EstablishParameter_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)1446 static int dissect_EstablishParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1447 int offset = 0;
1448 asn1_ctx_t asn1_ctx;
1449 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1450 offset = dissect_disp_EstablishParameter(FALSE, tvb, offset, &asn1_ctx, tree, hf_disp_EstablishParameter_PDU);
1451 return offset;
1452 }
dissect_ModificationParameter_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)1453 static int dissect_ModificationParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1454 int offset = 0;
1455 asn1_ctx_t asn1_ctx;
1456 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1457 offset = dissect_disp_ModificationParameter(FALSE, tvb, offset, &asn1_ctx, tree, hf_disp_ModificationParameter_PDU);
1458 return offset;
1459 }
dissect_ShadowingAgreementInfo_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)1460 static int dissect_ShadowingAgreementInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1461 int offset = 0;
1462 asn1_ctx_t asn1_ctx;
1463 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1464 offset = dissect_disp_ShadowingAgreementInfo(FALSE, tvb, offset, &asn1_ctx, tree, hf_disp_ShadowingAgreementInfo_PDU);
1465 return offset;
1466 }
1467
1468
1469 /*--- End of included file: packet-disp-fn.c ---*/
1470 #line 62 "./asn1/disp/packet-disp-template.c"
1471
1472 /*
1473 * Dissect DISP PDUs inside a ROS PDUs
1474 */
1475 static int
dissect_disp(tvbuff_t * tvb,packet_info * pinfo,proto_tree * parent_tree,void * data)1476 dissect_disp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data)
1477 {
1478 int offset = 0;
1479 int old_offset;
1480 proto_item *item;
1481 proto_tree *tree;
1482 struct SESSION_DATA_STRUCTURE* session;
1483 int (*disp_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) = NULL;
1484 const char *disp_op_name;
1485 asn1_ctx_t asn1_ctx;
1486
1487 /* do we have operation information from the ROS dissector */
1488 if (data == NULL)
1489 return 0;
1490 session = (struct SESSION_DATA_STRUCTURE*)data;
1491
1492 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1493
1494 asn1_ctx.private_data = session;
1495
1496 item = proto_tree_add_item(parent_tree, proto_disp, tvb, 0, -1, ENC_NA);
1497 tree = proto_item_add_subtree(item, ett_disp);
1498
1499 col_set_str(pinfo->cinfo, COL_PROTOCOL, "DISP");
1500 col_clear(pinfo->cinfo, COL_INFO);
1501
1502 switch(session->ros_op & ROS_OP_MASK) {
1503 case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
1504 disp_dissector = dissect_disp_DSAShadowBindArgument;
1505 disp_op_name = "Shadow-Bind-Argument";
1506 break;
1507 case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
1508 disp_dissector = dissect_disp_DSAShadowBindResult;
1509 disp_op_name = "Shadow-Bind-Result";
1510 break;
1511 case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
1512 disp_dissector = dissect_disp_DSAShadowBindError;
1513 disp_op_name = "Shadow-Bind-Error";
1514 break;
1515 case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
1516 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1517 case 1: /* requestShadowUpdate */
1518 disp_dissector = dissect_disp_RequestShadowUpdateArgument;
1519 disp_op_name = "Request-Shadow-Update-Argument";
1520 break;
1521 case 2: /* updateShadow*/
1522 disp_dissector = dissect_disp_UpdateShadowArgument;
1523 disp_op_name = "Update-Shadow-Argument";
1524 break;
1525 case 3: /* coordinateShadowUpdate */
1526 disp_dissector = dissect_disp_CoordinateShadowUpdateArgument;
1527 disp_op_name = "Coordinate-Shadow-Update-Argument";
1528 break;
1529 default:
1530 proto_tree_add_expert_format(tree, pinfo, &ei_disp_unsupported_opcode, tvb, offset, -1,
1531 "Unsupported DISP opcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
1532 break;
1533 }
1534 break;
1535 case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
1536 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1537 case 1: /* requestShadowUpdate */
1538 disp_dissector = dissect_disp_RequestShadowUpdateResult;
1539 disp_op_name = "Request-Shadow-Result";
1540 break;
1541 case 2: /* updateShadow */
1542 disp_dissector = dissect_disp_UpdateShadowResult;
1543 disp_op_name = "Update-Shadow-Result";
1544 break;
1545 case 3: /* coordinateShadowUpdate */
1546 disp_dissector = dissect_disp_CoordinateShadowUpdateResult;
1547 disp_op_name = "Coordinate-Shadow-Update-Result";
1548 break;
1549 default:
1550 proto_tree_add_expert_format(tree, pinfo, &ei_disp_unsupported_opcode, tvb, offset, -1,
1551 "Unsupported DISP opcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
1552 break;
1553 }
1554 break;
1555 case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
1556 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1557 case 1: /* shadowError */
1558 disp_dissector = dissect_disp_ShadowError;
1559 disp_op_name = "Shadow-Error";
1560 break;
1561 default:
1562 proto_tree_add_expert_format(tree, pinfo, &ei_disp_unsupported_errcode, tvb, offset, -1,
1563 "Unsupported DISP errcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
1564 break;
1565 }
1566 break;
1567 default:
1568 proto_tree_add_expert(tree, pinfo, &ei_disp_unsupported_pdu, tvb, offset, -1);
1569 return tvb_captured_length(tvb);
1570 }
1571
1572 if(disp_dissector) {
1573 col_set_str(pinfo->cinfo, COL_INFO, disp_op_name);
1574
1575 while (tvb_reported_length_remaining(tvb, offset) > 0){
1576 old_offset=offset;
1577 offset=(*disp_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
1578 if(offset == old_offset){
1579 proto_tree_add_expert(tree, pinfo, &ei_disp_zero_pdu, tvb, offset, -1);
1580 break;
1581 }
1582 }
1583 }
1584
1585 return tvb_captured_length(tvb);
1586 }
1587
1588
1589 /*--- proto_register_disp -------------------------------------------*/
proto_register_disp(void)1590 void proto_register_disp(void) {
1591
1592 /* List of fields */
1593 static hf_register_info hf[] =
1594 {
1595
1596 /*--- Included file: packet-disp-hfarr.c ---*/
1597 #line 1 "./asn1/disp/packet-disp-hfarr.c"
1598 { &hf_disp_EstablishParameter_PDU,
1599 { "EstablishParameter", "disp.EstablishParameter_element",
1600 FT_NONE, BASE_NONE, NULL, 0,
1601 NULL, HFILL }},
1602 { &hf_disp_ModificationParameter_PDU,
1603 { "ModificationParameter", "disp.ModificationParameter_element",
1604 FT_NONE, BASE_NONE, NULL, 0,
1605 NULL, HFILL }},
1606 { &hf_disp_ShadowingAgreementInfo_PDU,
1607 { "ShadowingAgreementInfo", "disp.ShadowingAgreementInfo_element",
1608 FT_NONE, BASE_NONE, NULL, 0,
1609 NULL, HFILL }},
1610 { &hf_disp_modifiedSecondaryShadows,
1611 { "secondaryShadows", "disp.modifiedSecondaryShadows",
1612 FT_UINT32, BASE_DEC, NULL, 0,
1613 "SET_OF_SupplierAndConsumers", HFILL }},
1614 { &hf_disp_modifiedSecondaryShadows_item,
1615 { "SupplierAndConsumers", "disp.SupplierAndConsumers_element",
1616 FT_NONE, BASE_NONE, NULL, 0,
1617 NULL, HFILL }},
1618 { &hf_disp_shadowSubject,
1619 { "shadowSubject", "disp.shadowSubject_element",
1620 FT_NONE, BASE_NONE, NULL, 0,
1621 "UnitOfReplication", HFILL }},
1622 { &hf_disp_updateMode,
1623 { "updateMode", "disp.updateMode",
1624 FT_UINT32, BASE_DEC, VALS(disp_UpdateMode_vals), 0,
1625 NULL, HFILL }},
1626 { &hf_disp_master,
1627 { "master", "disp.master_element",
1628 FT_NONE, BASE_NONE, NULL, 0,
1629 "AccessPoint", HFILL }},
1630 { &hf_disp_secondaryShadows,
1631 { "secondaryShadows", "disp.secondaryShadows",
1632 FT_BOOLEAN, BASE_NONE, NULL, 0,
1633 "BOOLEAN", HFILL }},
1634 { &hf_disp_area,
1635 { "area", "disp.area_element",
1636 FT_NONE, BASE_NONE, NULL, 0,
1637 "AreaSpecification", HFILL }},
1638 { &hf_disp_replication_attributes,
1639 { "attributes", "disp.attributes",
1640 FT_UINT32, BASE_DEC, NULL, 0,
1641 "AttributeSelection", HFILL }},
1642 { &hf_disp_knowledge,
1643 { "knowledge", "disp.knowledge_element",
1644 FT_NONE, BASE_NONE, NULL, 0,
1645 NULL, HFILL }},
1646 { &hf_disp_subordinates,
1647 { "subordinates", "disp.subordinates",
1648 FT_BOOLEAN, BASE_NONE, NULL, 0,
1649 "BOOLEAN", HFILL }},
1650 { &hf_disp_contextSelection,
1651 { "contextSelection", "disp.contextSelection",
1652 FT_UINT32, BASE_DEC, VALS(dap_ContextSelection_vals), 0,
1653 NULL, HFILL }},
1654 { &hf_disp_supplyContexts,
1655 { "supplyContexts", "disp.supplyContexts",
1656 FT_UINT32, BASE_DEC, VALS(disp_T_supplyContexts_vals), 0,
1657 NULL, HFILL }},
1658 { &hf_disp_allContexts,
1659 { "allContexts", "disp.allContexts_element",
1660 FT_NONE, BASE_NONE, NULL, 0,
1661 NULL, HFILL }},
1662 { &hf_disp_selectedContexts,
1663 { "selectedContexts", "disp.selectedContexts",
1664 FT_UINT32, BASE_DEC, NULL, 0,
1665 NULL, HFILL }},
1666 { &hf_disp_selectedContexts_item,
1667 { "selectedContexts item", "disp.selectedContexts_item",
1668 FT_OID, BASE_NONE, NULL, 0,
1669 "OBJECT_IDENTIFIER", HFILL }},
1670 { &hf_disp_contextPrefix,
1671 { "contextPrefix", "disp.contextPrefix",
1672 FT_UINT32, BASE_DEC, NULL, 0,
1673 "DistinguishedName", HFILL }},
1674 { &hf_disp_replicationArea,
1675 { "replicationArea", "disp.replicationArea_element",
1676 FT_NONE, BASE_NONE, NULL, 0,
1677 "SubtreeSpecification", HFILL }},
1678 { &hf_disp_knowledgeType,
1679 { "knowledgeType", "disp.knowledgeType",
1680 FT_UINT32, BASE_DEC, VALS(disp_T_knowledgeType_vals), 0,
1681 NULL, HFILL }},
1682 { &hf_disp_extendedKnowledge,
1683 { "extendedKnowledge", "disp.extendedKnowledge",
1684 FT_BOOLEAN, BASE_NONE, NULL, 0,
1685 "BOOLEAN", HFILL }},
1686 { &hf_disp_AttributeSelection_item,
1687 { "ClassAttributeSelection", "disp.ClassAttributeSelection_element",
1688 FT_NONE, BASE_NONE, NULL, 0,
1689 NULL, HFILL }},
1690 { &hf_disp_class,
1691 { "class", "disp.class",
1692 FT_OID, BASE_NONE, NULL, 0,
1693 "OBJECT_IDENTIFIER", HFILL }},
1694 { &hf_disp_classAttributes,
1695 { "classAttributes", "disp.classAttributes",
1696 FT_UINT32, BASE_DEC, VALS(disp_ClassAttributes_vals), 0,
1697 NULL, HFILL }},
1698 { &hf_disp_allAttributes,
1699 { "allAttributes", "disp.allAttributes_element",
1700 FT_NONE, BASE_NONE, NULL, 0,
1701 NULL, HFILL }},
1702 { &hf_disp_include,
1703 { "include", "disp.include",
1704 FT_UINT32, BASE_DEC, NULL, 0,
1705 "AttributeTypes", HFILL }},
1706 { &hf_disp_exclude,
1707 { "exclude", "disp.exclude",
1708 FT_UINT32, BASE_DEC, NULL, 0,
1709 "AttributeTypes", HFILL }},
1710 { &hf_disp_AttributeTypes_item,
1711 { "AttributeType", "disp.AttributeType",
1712 FT_OID, BASE_NONE, NULL, 0,
1713 NULL, HFILL }},
1714 { &hf_disp_supplierInitiated,
1715 { "supplierInitiated", "disp.supplierInitiated",
1716 FT_UINT32, BASE_DEC, VALS(disp_SupplierUpdateMode_vals), 0,
1717 "SupplierUpdateMode", HFILL }},
1718 { &hf_disp_consumerInitiated,
1719 { "consumerInitiated", "disp.consumerInitiated_element",
1720 FT_NONE, BASE_NONE, NULL, 0,
1721 "ConsumerUpdateMode", HFILL }},
1722 { &hf_disp_onChange,
1723 { "onChange", "disp.onChange",
1724 FT_BOOLEAN, BASE_NONE, NULL, 0,
1725 "BOOLEAN", HFILL }},
1726 { &hf_disp_scheduled,
1727 { "scheduled", "disp.scheduled_element",
1728 FT_NONE, BASE_NONE, NULL, 0,
1729 "SchedulingParameters", HFILL }},
1730 { &hf_disp_periodic,
1731 { "periodic", "disp.periodic_element",
1732 FT_NONE, BASE_NONE, NULL, 0,
1733 "PeriodicStrategy", HFILL }},
1734 { &hf_disp_othertimes,
1735 { "othertimes", "disp.othertimes",
1736 FT_BOOLEAN, BASE_NONE, NULL, 0,
1737 "BOOLEAN", HFILL }},
1738 { &hf_disp_beginTime,
1739 { "beginTime", "disp.beginTime",
1740 FT_STRING, BASE_NONE, NULL, 0,
1741 "Time", HFILL }},
1742 { &hf_disp_windowSize,
1743 { "windowSize", "disp.windowSize",
1744 FT_INT32, BASE_DEC, NULL, 0,
1745 "INTEGER", HFILL }},
1746 { &hf_disp_updateInterval,
1747 { "updateInterval", "disp.updateInterval",
1748 FT_INT32, BASE_DEC, NULL, 0,
1749 "INTEGER", HFILL }},
1750 { &hf_disp_agreementID,
1751 { "agreementID", "disp.agreementID_element",
1752 FT_NONE, BASE_NONE, NULL, 0,
1753 NULL, HFILL }},
1754 { &hf_disp_lastUpdate,
1755 { "lastUpdate", "disp.lastUpdate",
1756 FT_STRING, BASE_NONE, NULL, 0,
1757 "Time", HFILL }},
1758 { &hf_disp_updateStrategy,
1759 { "updateStrategy", "disp.updateStrategy",
1760 FT_UINT32, BASE_DEC, VALS(disp_T_updateStrategy_vals), 0,
1761 NULL, HFILL }},
1762 { &hf_disp_standardUpdate,
1763 { "standard", "disp.standard",
1764 FT_UINT32, BASE_DEC, VALS(disp_StandardUpdate_vals), 0,
1765 "StandardUpdate", HFILL }},
1766 { &hf_disp_other,
1767 { "other", "disp.other_element",
1768 FT_NONE, BASE_NONE, NULL, 0,
1769 "EXTERNAL", HFILL }},
1770 { &hf_disp_securityParameters,
1771 { "securityParameters", "disp.securityParameters_element",
1772 FT_NONE, BASE_NONE, NULL, 0,
1773 NULL, HFILL }},
1774 { &hf_disp_unsignedCoordinateShadowUpdateArgument,
1775 { "unsignedCoordinateShadowUpdateArgument", "disp.unsignedCoordinateShadowUpdateArgument_element",
1776 FT_NONE, BASE_NONE, NULL, 0,
1777 "CoordinateShadowUpdateArgumentData", HFILL }},
1778 { &hf_disp_signedCoordinateShadowUpdateArgument,
1779 { "signedCoordinateShadowUpdateArgument", "disp.signedCoordinateShadowUpdateArgument_element",
1780 FT_NONE, BASE_NONE, NULL, 0,
1781 NULL, HFILL }},
1782 { &hf_disp_coordinateShadowUpdateArgument,
1783 { "coordinateShadowUpdateArgument", "disp.coordinateShadowUpdateArgument_element",
1784 FT_NONE, BASE_NONE, NULL, 0,
1785 "CoordinateShadowUpdateArgumentData", HFILL }},
1786 { &hf_disp_algorithmIdentifier,
1787 { "algorithmIdentifier", "disp.algorithmIdentifier_element",
1788 FT_NONE, BASE_NONE, NULL, 0,
1789 NULL, HFILL }},
1790 { &hf_disp_encrypted,
1791 { "encrypted", "disp.encrypted",
1792 FT_BYTES, BASE_NONE, NULL, 0,
1793 "BIT_STRING", HFILL }},
1794 { &hf_disp_null,
1795 { "null", "disp.null_element",
1796 FT_NONE, BASE_NONE, NULL, 0,
1797 NULL, HFILL }},
1798 { &hf_disp_information,
1799 { "information", "disp.information",
1800 FT_UINT32, BASE_DEC, VALS(disp_Information_vals), 0,
1801 NULL, HFILL }},
1802 { &hf_disp_performer,
1803 { "performer", "disp.performer",
1804 FT_UINT32, BASE_DEC, NULL, 0,
1805 "DistinguishedName", HFILL }},
1806 { &hf_disp_aliasDereferenced,
1807 { "aliasDereferenced", "disp.aliasDereferenced",
1808 FT_BOOLEAN, BASE_NONE, NULL, 0,
1809 "BOOLEAN", HFILL }},
1810 { &hf_disp_notification,
1811 { "notification", "disp.notification",
1812 FT_UINT32, BASE_DEC, NULL, 0,
1813 "SEQUENCE_OF_Attribute", HFILL }},
1814 { &hf_disp_notification_item,
1815 { "Attribute", "disp.Attribute_element",
1816 FT_NONE, BASE_NONE, NULL, 0,
1817 NULL, HFILL }},
1818 { &hf_disp_unsignedInformation,
1819 { "unsignedInformation", "disp.unsignedInformation_element",
1820 FT_NONE, BASE_NONE, NULL, 0,
1821 "InformationData", HFILL }},
1822 { &hf_disp_signedInformation,
1823 { "signedInformation", "disp.signedInformation_element",
1824 FT_NONE, BASE_NONE, NULL, 0,
1825 NULL, HFILL }},
1826 { &hf_disp_information_data,
1827 { "information", "disp.information_element",
1828 FT_NONE, BASE_NONE, NULL, 0,
1829 "InformationData", HFILL }},
1830 { &hf_disp_requestedStrategy,
1831 { "requestedStrategy", "disp.requestedStrategy",
1832 FT_UINT32, BASE_DEC, VALS(disp_T_requestedStrategy_vals), 0,
1833 NULL, HFILL }},
1834 { &hf_disp_standard,
1835 { "standard", "disp.standard",
1836 FT_UINT32, BASE_DEC, VALS(disp_T_standard_vals), 0,
1837 NULL, HFILL }},
1838 { &hf_disp_unsignedRequestShadowUpdateArgument,
1839 { "unsignedRequestShadowUpdateArgument", "disp.unsignedRequestShadowUpdateArgument_element",
1840 FT_NONE, BASE_NONE, NULL, 0,
1841 "RequestShadowUpdateArgumentData", HFILL }},
1842 { &hf_disp_signedRequestShadowUpdateArgument,
1843 { "signedRequestShadowUpdateArgument", "disp.signedRequestShadowUpdateArgument_element",
1844 FT_NONE, BASE_NONE, NULL, 0,
1845 NULL, HFILL }},
1846 { &hf_disp_requestShadowUpdateArgument,
1847 { "requestShadowUpdateArgument", "disp.requestShadowUpdateArgument_element",
1848 FT_NONE, BASE_NONE, NULL, 0,
1849 "RequestShadowUpdateArgumentData", HFILL }},
1850 { &hf_disp_updateTime,
1851 { "updateTime", "disp.updateTime",
1852 FT_STRING, BASE_NONE, NULL, 0,
1853 "Time", HFILL }},
1854 { &hf_disp_updateWindow,
1855 { "updateWindow", "disp.updateWindow_element",
1856 FT_NONE, BASE_NONE, NULL, 0,
1857 NULL, HFILL }},
1858 { &hf_disp_updatedInfo,
1859 { "updatedInfo", "disp.updatedInfo",
1860 FT_UINT32, BASE_DEC, VALS(disp_RefreshInformation_vals), 0,
1861 "RefreshInformation", HFILL }},
1862 { &hf_disp_unsignedUpdateShadowArgument,
1863 { "unsignedUpdateShadowArgument", "disp.unsignedUpdateShadowArgument_element",
1864 FT_NONE, BASE_NONE, NULL, 0,
1865 "UpdateShadowArgumentData", HFILL }},
1866 { &hf_disp_signedUpdateShadowArgument,
1867 { "signedUpdateShadowArgument", "disp.signedUpdateShadowArgument_element",
1868 FT_NONE, BASE_NONE, NULL, 0,
1869 NULL, HFILL }},
1870 { &hf_disp_updateShadowArgument,
1871 { "updateShadowArgument", "disp.updateShadowArgument_element",
1872 FT_NONE, BASE_NONE, NULL, 0,
1873 "UpdateShadowArgumentData", HFILL }},
1874 { &hf_disp_start,
1875 { "start", "disp.start",
1876 FT_STRING, BASE_NONE, NULL, 0,
1877 "Time", HFILL }},
1878 { &hf_disp_stop,
1879 { "stop", "disp.stop",
1880 FT_STRING, BASE_NONE, NULL, 0,
1881 "Time", HFILL }},
1882 { &hf_disp_noRefresh,
1883 { "noRefresh", "disp.noRefresh_element",
1884 FT_NONE, BASE_NONE, NULL, 0,
1885 NULL, HFILL }},
1886 { &hf_disp_total,
1887 { "total", "disp.total_element",
1888 FT_NONE, BASE_NONE, NULL, 0,
1889 "TotalRefresh", HFILL }},
1890 { &hf_disp_incremental,
1891 { "incremental", "disp.incremental",
1892 FT_UINT32, BASE_DEC, NULL, 0,
1893 "IncrementalRefresh", HFILL }},
1894 { &hf_disp_otherStrategy,
1895 { "otherStrategy", "disp.otherStrategy_element",
1896 FT_NONE, BASE_NONE, NULL, 0,
1897 "EXTERNAL", HFILL }},
1898 { &hf_disp_sDSE,
1899 { "sDSE", "disp.sDSE_element",
1900 FT_NONE, BASE_NONE, NULL, 0,
1901 "SDSEContent", HFILL }},
1902 { &hf_disp_subtree,
1903 { "subtree", "disp.subtree",
1904 FT_UINT32, BASE_DEC, NULL, 0,
1905 "SET_OF_Subtree", HFILL }},
1906 { &hf_disp_subtree_item,
1907 { "Subtree", "disp.Subtree_element",
1908 FT_NONE, BASE_NONE, NULL, 0,
1909 NULL, HFILL }},
1910 { &hf_disp_sDSEType,
1911 { "sDSEType", "disp.sDSEType",
1912 FT_BYTES, BASE_NONE, NULL, 0,
1913 NULL, HFILL }},
1914 { &hf_disp_subComplete,
1915 { "subComplete", "disp.subComplete",
1916 FT_BOOLEAN, BASE_NONE, NULL, 0,
1917 "BOOLEAN", HFILL }},
1918 { &hf_disp_attComplete,
1919 { "attComplete", "disp.attComplete",
1920 FT_BOOLEAN, BASE_NONE, NULL, 0,
1921 "BOOLEAN", HFILL }},
1922 { &hf_disp_attributes,
1923 { "attributes", "disp.attributes",
1924 FT_UINT32, BASE_DEC, NULL, 0,
1925 "SET_OF_Attribute", HFILL }},
1926 { &hf_disp_attributes_item,
1927 { "Attribute", "disp.Attribute_element",
1928 FT_NONE, BASE_NONE, NULL, 0,
1929 NULL, HFILL }},
1930 { &hf_disp_attValIncomplete,
1931 { "attValIncomplete", "disp.attValIncomplete",
1932 FT_UINT32, BASE_DEC, NULL, 0,
1933 "SET_OF_AttributeType", HFILL }},
1934 { &hf_disp_attValIncomplete_item,
1935 { "AttributeType", "disp.AttributeType",
1936 FT_OID, BASE_NONE, NULL, 0,
1937 NULL, HFILL }},
1938 { &hf_disp_rdn,
1939 { "rdn", "disp.rdn",
1940 FT_UINT32, BASE_DEC, NULL, 0,
1941 "RelativeDistinguishedName", HFILL }},
1942 { &hf_disp_IncrementalRefresh_item,
1943 { "IncrementalStepRefresh", "disp.IncrementalStepRefresh_element",
1944 FT_NONE, BASE_NONE, NULL, 0,
1945 NULL, HFILL }},
1946 { &hf_disp_sDSEChanges,
1947 { "sDSEChanges", "disp.sDSEChanges",
1948 FT_UINT32, BASE_DEC, VALS(disp_T_sDSEChanges_vals), 0,
1949 NULL, HFILL }},
1950 { &hf_disp_add,
1951 { "add", "disp.add_element",
1952 FT_NONE, BASE_NONE, NULL, 0,
1953 "SDSEContent", HFILL }},
1954 { &hf_disp_remove,
1955 { "remove", "disp.remove_element",
1956 FT_NONE, BASE_NONE, NULL, 0,
1957 NULL, HFILL }},
1958 { &hf_disp_modify,
1959 { "modify", "disp.modify_element",
1960 FT_NONE, BASE_NONE, NULL, 0,
1961 "ContentChange", HFILL }},
1962 { &hf_disp_subordinateUpdates,
1963 { "subordinateUpdates", "disp.subordinateUpdates",
1964 FT_UINT32, BASE_DEC, NULL, 0,
1965 "SEQUENCE_OF_SubordinateChanges", HFILL }},
1966 { &hf_disp_subordinateUpdates_item,
1967 { "SubordinateChanges", "disp.SubordinateChanges_element",
1968 FT_NONE, BASE_NONE, NULL, 0,
1969 NULL, HFILL }},
1970 { &hf_disp_rename,
1971 { "rename", "disp.rename",
1972 FT_UINT32, BASE_DEC, VALS(disp_T_rename_vals), 0,
1973 NULL, HFILL }},
1974 { &hf_disp_newRDN,
1975 { "newRDN", "disp.newRDN",
1976 FT_UINT32, BASE_DEC, NULL, 0,
1977 "RelativeDistinguishedName", HFILL }},
1978 { &hf_disp_newDN,
1979 { "newDN", "disp.newDN",
1980 FT_UINT32, BASE_DEC, NULL, 0,
1981 "DistinguishedName", HFILL }},
1982 { &hf_disp_attributeChanges,
1983 { "attributeChanges", "disp.attributeChanges",
1984 FT_UINT32, BASE_DEC, VALS(disp_T_attributeChanges_vals), 0,
1985 NULL, HFILL }},
1986 { &hf_disp_replace,
1987 { "replace", "disp.replace",
1988 FT_UINT32, BASE_DEC, NULL, 0,
1989 "SET_OF_Attribute", HFILL }},
1990 { &hf_disp_replace_item,
1991 { "Attribute", "disp.Attribute_element",
1992 FT_NONE, BASE_NONE, NULL, 0,
1993 NULL, HFILL }},
1994 { &hf_disp_changes,
1995 { "changes", "disp.changes",
1996 FT_UINT32, BASE_DEC, NULL, 0,
1997 "SEQUENCE_OF_EntryModification", HFILL }},
1998 { &hf_disp_changes_item,
1999 { "EntryModification", "disp.EntryModification",
2000 FT_UINT32, BASE_DEC, VALS(dap_EntryModification_vals), 0,
2001 NULL, HFILL }},
2002 { &hf_disp_subordinate,
2003 { "subordinate", "disp.subordinate",
2004 FT_UINT32, BASE_DEC, NULL, 0,
2005 "RelativeDistinguishedName", HFILL }},
2006 { &hf_disp_subordinate_changes,
2007 { "changes", "disp.changes_element",
2008 FT_NONE, BASE_NONE, NULL, 0,
2009 "IncrementalStepRefresh", HFILL }},
2010 { &hf_disp_problem,
2011 { "problem", "disp.problem",
2012 FT_INT32, BASE_DEC, VALS(disp_ShadowProblem_vals), 0,
2013 "ShadowProblem", HFILL }},
2014 { &hf_disp_unsignedShadowError,
2015 { "unsignedShadowError", "disp.unsignedShadowError_element",
2016 FT_NONE, BASE_NONE, NULL, 0,
2017 "ShadowErrorData", HFILL }},
2018 { &hf_disp_signedShadowError,
2019 { "signedShadowError", "disp.signedShadowError_element",
2020 FT_NONE, BASE_NONE, NULL, 0,
2021 NULL, HFILL }},
2022 { &hf_disp_shadowError,
2023 { "shadowError", "disp.shadowError_element",
2024 FT_NONE, BASE_NONE, NULL, 0,
2025 "ShadowErrorData", HFILL }},
2026
2027 /*--- End of included file: packet-disp-hfarr.c ---*/
2028 #line 187 "./asn1/disp/packet-disp-template.c"
2029 };
2030
2031 /* List of subtrees */
2032 static gint *ett[] = {
2033 &ett_disp,
2034
2035 /*--- Included file: packet-disp-ettarr.c ---*/
2036 #line 1 "./asn1/disp/packet-disp-ettarr.c"
2037 &ett_disp_ModificationParameter,
2038 &ett_disp_SET_OF_SupplierAndConsumers,
2039 &ett_disp_ShadowingAgreementInfo,
2040 &ett_disp_UnitOfReplication,
2041 &ett_disp_T_supplyContexts,
2042 &ett_disp_T_selectedContexts,
2043 &ett_disp_AreaSpecification,
2044 &ett_disp_Knowledge,
2045 &ett_disp_AttributeSelection,
2046 &ett_disp_ClassAttributeSelection,
2047 &ett_disp_ClassAttributes,
2048 &ett_disp_AttributeTypes,
2049 &ett_disp_UpdateMode,
2050 &ett_disp_SupplierUpdateMode,
2051 &ett_disp_SchedulingParameters,
2052 &ett_disp_PeriodicStrategy,
2053 &ett_disp_CoordinateShadowUpdateArgumentData,
2054 &ett_disp_T_updateStrategy,
2055 &ett_disp_CoordinateShadowUpdateArgument,
2056 &ett_disp_T_signedCoordinateShadowUpdateArgument,
2057 &ett_disp_CoordinateShadowUpdateResult,
2058 &ett_disp_InformationData,
2059 &ett_disp_SEQUENCE_OF_Attribute,
2060 &ett_disp_Information,
2061 &ett_disp_T_signedInformation,
2062 &ett_disp_RequestShadowUpdateArgumentData,
2063 &ett_disp_T_requestedStrategy,
2064 &ett_disp_RequestShadowUpdateArgument,
2065 &ett_disp_T_signedRequestShadowUpdateArgument,
2066 &ett_disp_RequestShadowUpdateResult,
2067 &ett_disp_UpdateShadowArgumentData,
2068 &ett_disp_UpdateShadowArgument,
2069 &ett_disp_T_signedUpdateShadowArgument,
2070 &ett_disp_UpdateShadowResult,
2071 &ett_disp_UpdateWindow,
2072 &ett_disp_RefreshInformation,
2073 &ett_disp_TotalRefresh,
2074 &ett_disp_SET_OF_Subtree,
2075 &ett_disp_SDSEContent,
2076 &ett_disp_SET_OF_Attribute,
2077 &ett_disp_SET_OF_AttributeType,
2078 &ett_disp_Subtree,
2079 &ett_disp_IncrementalRefresh,
2080 &ett_disp_IncrementalStepRefresh,
2081 &ett_disp_T_sDSEChanges,
2082 &ett_disp_SEQUENCE_OF_SubordinateChanges,
2083 &ett_disp_ContentChange,
2084 &ett_disp_T_rename,
2085 &ett_disp_T_attributeChanges,
2086 &ett_disp_SEQUENCE_OF_EntryModification,
2087 &ett_disp_SubordinateChanges,
2088 &ett_disp_ShadowErrorData,
2089 &ett_disp_ShadowError,
2090 &ett_disp_T_signedShadowError,
2091
2092 /*--- End of included file: packet-disp-ettarr.c ---*/
2093 #line 193 "./asn1/disp/packet-disp-template.c"
2094 };
2095
2096 static ei_register_info ei[] = {
2097 { &ei_disp_unsupported_opcode, { "disp.unsupported_opcode", PI_UNDECODED, PI_WARN, "Unsupported DISP opcode", EXPFILL }},
2098 { &ei_disp_unsupported_errcode, { "disp.unsupported_errcode", PI_UNDECODED, PI_WARN, "Unsupported DISP errcode", EXPFILL }},
2099 { &ei_disp_unsupported_pdu, { "disp.unsupported_pdu", PI_UNDECODED, PI_WARN, "Unsupported DISP PDU", EXPFILL }},
2100 { &ei_disp_zero_pdu, { "disp.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte DISP PDU", EXPFILL }},
2101 };
2102
2103 module_t *disp_module;
2104 expert_module_t* expert_disp;
2105
2106 /* Register protocol */
2107 proto_disp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2108 disp_handle = register_dissector("disp", dissect_disp, proto_disp);
2109
2110 /* Register fields and subtrees */
2111 proto_register_field_array(proto_disp, hf, array_length(hf));
2112 proto_register_subtree_array(ett, array_length(ett));
2113 expert_disp = expert_register_protocol(proto_disp);
2114 expert_register_field_array(expert_disp, ei, array_length(ei));
2115
2116 /* Register our configuration options for DISP, particularly our port */
2117
2118 disp_module = prefs_register_protocol_subtree("OSI/X.500", proto_disp, NULL);
2119
2120 prefs_register_obsolete_preference(disp_module, "tcp.port");
2121
2122 prefs_register_static_text_preference(disp_module, "tcp_port_info",
2123 "The TCP ports used by the DISP protocol should be added to the TPKT preference \"TPKT TCP ports\", or by selecting \"TPKT\" as the \"Transport\" protocol in the \"Decode As\" dialog.",
2124 "DISP TCP Port preference moved information");
2125
2126 }
2127
2128
2129 /*--- proto_reg_handoff_disp --- */
proto_reg_handoff_disp(void)2130 void proto_reg_handoff_disp(void) {
2131
2132 /*--- Included file: packet-disp-dis-tab.c ---*/
2133 #line 1 "./asn1/disp/packet-disp-dis-tab.c"
2134 dissector_add_string("dop.oid", "agreement.2.5.19.1", create_dissector_handle(dissect_ShadowingAgreementInfo_PDU, proto_disp));
2135 dissector_add_string("dop.oid", "establish.rolea.2.5.19.1", create_dissector_handle(dissect_EstablishParameter_PDU, proto_disp));
2136 dissector_add_string("dop.oid", "establish.roleb.2.5.19.1", create_dissector_handle(dissect_EstablishParameter_PDU, proto_disp));
2137 dissector_add_string("dop.oid", "modify.rolea.2.5.19.1", create_dissector_handle(dissect_ModificationParameter_PDU, proto_disp));
2138 dissector_add_string("dop.oid", "modify.roleb.2.5.19.1", create_dissector_handle(dissect_ModificationParameter_PDU, proto_disp));
2139
2140
2141 /*--- End of included file: packet-disp-dis-tab.c ---*/
2142 #line 231 "./asn1/disp/packet-disp-template.c"
2143
2144 /* APPLICATION CONTEXT */
2145
2146 oid_add_from_string("id-ac-shadow-consumer-initiated","2.5.3.4");
2147 oid_add_from_string("id-ac-shadow-supplier-initiated","2.5.3.5");
2148 oid_add_from_string("id-ac-reliable-shadow-consumer-initiated","2.5.3.6");
2149 oid_add_from_string("id-ac-reliable-shadow-supplier-initiated","2.5.3.7");
2150
2151 /* ABSTRACT SYNTAXES */
2152 register_ros_oid_dissector_handle("2.5.9.3", disp_handle, 0, "id-as-directory-shadow", FALSE);
2153 register_rtse_oid_dissector_handle("2.5.9.5", disp_handle, 0, "id-as-directory-reliable-shadow", FALSE);
2154 register_rtse_oid_dissector_handle("2.5.9.6", disp_handle, 0, "id-as-directory-reliable-binding", FALSE);
2155
2156 /* OPERATIONAL BINDING */
2157 oid_add_from_string("id-op-binding-shadow","2.5.1.0.5.1");
2158
2159 /* DNs */
2160 x509if_register_fmt(hf_disp_contextPrefix, "cp=");
2161
2162 }
2163