1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -b -e -p disp -c ./disp.cnf -s ./packet-disp-template -D . disp.asn */
6 /* Input file: packet-disp-template.c */
8 #line 1 "packet-disp-template.c"
10 * Routines for X.525 (X.500 Directory Shadow Asbtract Service) and X.519 DISP packet dissection
15 * Wireshark - Network traffic analyzer
16 * By Gerald Combs <gerald@wireshark.org>
17 * Copyright 1998 Gerald Combs
19 * This program is free software; you can redistribute it and/or
20 * modify it under the terms of the GNU General Public License
21 * as published by the Free Software Foundation; either version 2
22 * of the License, or (at your option) any later version.
24 * This program is distributed in the hope that it will be useful,
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 * GNU General Public License for more details.
29 * You should have received a copy of the GNU General Public License
30 * along with this program; if not, write to the Free Software
31 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
39 #include <epan/packet.h>
40 #include <epan/prefs.h>
41 #include <epan/oids.h>
42 #include <epan/asn1.h>
47 #include "packet-ber.h"
48 #include "packet-acse.h"
49 #include "packet-ros.h"
50 #include "packet-rtse.h"
52 #include "packet-x509if.h"
53 #include "packet-x509af.h"
54 #include "packet-x509sat.h"
55 #include "packet-crmf.h"
57 #include "packet-dop.h"
58 #include "packet-dap.h"
59 #include "packet-dsp.h"
60 #include "packet-disp.h"
63 /* we don't have a separate dissector for X519 -
64 and most of DISP is defined in X525 */
65 #define PNAME "X.519 Directory Information Shadowing Protocol"
69 static guint global_disp_tcp_port = 102;
70 static dissector_handle_t tpkt_handle;
71 void prefs_register_disp(void); /* forward declaration for use in preferences registration */
74 /* Initialize the protocol and registered fields */
77 static struct SESSION_DATA_STRUCTURE* session = NULL;
80 /*--- Included file: packet-disp-hf.c ---*/
81 #line 1 "packet-disp-hf.c"
82 static int hf_disp_EstablishParameter_PDU = -1; /* EstablishParameter */
83 static int hf_disp_ModificationParameter_PDU = -1; /* ModificationParameter */
84 static int hf_disp_ShadowingAgreementInfo_PDU = -1; /* ShadowingAgreementInfo */
85 static int hf_disp_modifiedSecondaryShadows = -1; /* SET_OF_SupplierAndConsumers */
86 static int hf_disp_modifiedSecondaryShadows_item = -1; /* SupplierAndConsumers */
87 static int hf_disp_shadowSubject = -1; /* UnitOfReplication */
88 static int hf_disp_updateMode = -1; /* UpdateMode */
89 static int hf_disp_master = -1; /* AccessPoint */
90 static int hf_disp_secondaryShadows = -1; /* BOOLEAN */
91 static int hf_disp_area = -1; /* AreaSpecification */
92 static int hf_disp_replication_attributes = -1; /* AttributeSelection */
93 static int hf_disp_knowledge = -1; /* Knowledge */
94 static int hf_disp_subordinates = -1; /* BOOLEAN */
95 static int hf_disp_contextSelection = -1; /* ContextSelection */
96 static int hf_disp_supplyContexts = -1; /* T_supplyContexts */
97 static int hf_disp_allContexts = -1; /* NULL */
98 static int hf_disp_selectedContexts = -1; /* T_selectedContexts */
99 static int hf_disp_selectedContexts_item = -1; /* OBJECT_IDENTIFIER */
100 static int hf_disp_contextPrefix = -1; /* DistinguishedName */
101 static int hf_disp_replicationArea = -1; /* SubtreeSpecification */
102 static int hf_disp_knowledgeType = -1; /* T_knowledgeType */
103 static int hf_disp_extendedKnowledge = -1; /* BOOLEAN */
104 static int hf_disp_AttributeSelection_item = -1; /* ClassAttributeSelection */
105 static int hf_disp_class = -1; /* OBJECT_IDENTIFIER */
106 static int hf_disp_classAttributes = -1; /* ClassAttributes */
107 static int hf_disp_allAttributes = -1; /* NULL */
108 static int hf_disp_include = -1; /* AttributeTypes */
109 static int hf_disp_exclude = -1; /* AttributeTypes */
110 static int hf_disp_AttributeTypes_item = -1; /* AttributeType */
111 static int hf_disp_supplierInitiated = -1; /* SupplierUpdateMode */
112 static int hf_disp_consumerInitiated = -1; /* ConsumerUpdateMode */
113 static int hf_disp_onChange = -1; /* BOOLEAN */
114 static int hf_disp_scheduled = -1; /* SchedulingParameters */
115 static int hf_disp_periodic = -1; /* PeriodicStrategy */
116 static int hf_disp_othertimes = -1; /* BOOLEAN */
117 static int hf_disp_beginTime = -1; /* Time */
118 static int hf_disp_windowSize = -1; /* INTEGER */
119 static int hf_disp_updateInterval = -1; /* INTEGER */
120 static int hf_disp_agreementID = -1; /* AgreementID */
121 static int hf_disp_lastUpdate = -1; /* Time */
122 static int hf_disp_updateStrategy = -1; /* T_updateStrategy */
123 static int hf_disp_standardUpdate = -1; /* StandardUpdate */
124 static int hf_disp_other = -1; /* EXTERNAL */
125 static int hf_disp_securityParameters = -1; /* SecurityParameters */
126 static int hf_disp_unsignedCoordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
127 static int hf_disp_signedCoordinateShadowUpdateArgument = -1; /* T_signedCoordinateShadowUpdateArgument */
128 static int hf_disp_coordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
129 static int hf_disp_algorithmIdentifier = -1; /* AlgorithmIdentifier */
130 static int hf_disp_encrypted = -1; /* BIT_STRING */
131 static int hf_disp_null = -1; /* NULL */
132 static int hf_disp_information = -1; /* Information */
133 static int hf_disp_performer = -1; /* DistinguishedName */
134 static int hf_disp_aliasDereferenced = -1; /* BOOLEAN */
135 static int hf_disp_notification = -1; /* SEQUENCE_OF_Attribute */
136 static int hf_disp_notification_item = -1; /* Attribute */
137 static int hf_disp_unsignedInformation = -1; /* InformationData */
138 static int hf_disp_signedInformation = -1; /* T_signedInformation */
139 static int hf_disp_information_data = -1; /* InformationData */
140 static int hf_disp_requestedStrategy = -1; /* T_requestedStrategy */
141 static int hf_disp_standard = -1; /* T_standard */
142 static int hf_disp_unsignedRequestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
143 static int hf_disp_signedRequestShadowUpdateArgument = -1; /* T_signedRequestShadowUpdateArgument */
144 static int hf_disp_requestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
145 static int hf_disp_updateTime = -1; /* Time */
146 static int hf_disp_updateWindow = -1; /* UpdateWindow */
147 static int hf_disp_updatedInfo = -1; /* RefreshInformation */
148 static int hf_disp_unsignedUpdateShadowArgument = -1; /* UpdateShadowArgumentData */
149 static int hf_disp_signedUpdateShadowArgument = -1; /* T_signedUpdateShadowArgument */
150 static int hf_disp_updateShadowArgument = -1; /* UpdateShadowArgumentData */
151 static int hf_disp_start = -1; /* Time */
152 static int hf_disp_stop = -1; /* Time */
153 static int hf_disp_noRefresh = -1; /* NULL */
154 static int hf_disp_total = -1; /* TotalRefresh */
155 static int hf_disp_incremental = -1; /* IncrementalRefresh */
156 static int hf_disp_otherStrategy = -1; /* EXTERNAL */
157 static int hf_disp_sDSE = -1; /* SDSEContent */
158 static int hf_disp_subtree = -1; /* SET_OF_Subtree */
159 static int hf_disp_subtree_item = -1; /* Subtree */
160 static int hf_disp_sDSEType = -1; /* SDSEType */
161 static int hf_disp_subComplete = -1; /* BOOLEAN */
162 static int hf_disp_attComplete = -1; /* BOOLEAN */
163 static int hf_disp_attributes = -1; /* SET_OF_Attribute */
164 static int hf_disp_attributes_item = -1; /* Attribute */
165 static int hf_disp_attValIncomplete = -1; /* SET_OF_AttributeType */
166 static int hf_disp_attValIncomplete_item = -1; /* AttributeType */
167 static int hf_disp_rdn = -1; /* RelativeDistinguishedName */
168 static int hf_disp_IncrementalRefresh_item = -1; /* IncrementalStepRefresh */
169 static int hf_disp_sDSEChanges = -1; /* T_sDSEChanges */
170 static int hf_disp_add = -1; /* SDSEContent */
171 static int hf_disp_remove = -1; /* NULL */
172 static int hf_disp_modify = -1; /* ContentChange */
173 static int hf_disp_subordinateUpdates = -1; /* SEQUENCE_OF_SubordinateChanges */
174 static int hf_disp_subordinateUpdates_item = -1; /* SubordinateChanges */
175 static int hf_disp_rename = -1; /* T_rename */
176 static int hf_disp_newRDN = -1; /* RelativeDistinguishedName */
177 static int hf_disp_newDN = -1; /* DistinguishedName */
178 static int hf_disp_attributeChanges = -1; /* T_attributeChanges */
179 static int hf_disp_replace = -1; /* SET_OF_Attribute */
180 static int hf_disp_replace_item = -1; /* Attribute */
181 static int hf_disp_changes = -1; /* SEQUENCE_OF_EntryModification */
182 static int hf_disp_changes_item = -1; /* EntryModification */
183 static int hf_disp_subordinate = -1; /* RelativeDistinguishedName */
184 static int hf_disp_subordinate_changes = -1; /* IncrementalStepRefresh */
185 static int hf_disp_problem = -1; /* ShadowProblem */
186 static int hf_disp_unsignedShadowError = -1; /* ShadowErrorData */
187 static int hf_disp_signedShadowError = -1; /* T_signedShadowError */
188 static int hf_disp_shadowError = -1; /* ShadowErrorData */
190 /*--- End of included file: packet-disp-hf.c ---*/
191 #line 72 "packet-disp-template.c"
193 /* Initialize the subtree pointers */
194 static gint ett_disp = -1;
196 /*--- Included file: packet-disp-ett.c ---*/
197 #line 1 "packet-disp-ett.c"
198 static gint ett_disp_ModificationParameter = -1;
199 static gint ett_disp_SET_OF_SupplierAndConsumers = -1;
200 static gint ett_disp_ShadowingAgreementInfo = -1;
201 static gint ett_disp_UnitOfReplication = -1;
202 static gint ett_disp_T_supplyContexts = -1;
203 static gint ett_disp_T_selectedContexts = -1;
204 static gint ett_disp_AreaSpecification = -1;
205 static gint ett_disp_Knowledge = -1;
206 static gint ett_disp_AttributeSelection = -1;
207 static gint ett_disp_ClassAttributeSelection = -1;
208 static gint ett_disp_ClassAttributes = -1;
209 static gint ett_disp_AttributeTypes = -1;
210 static gint ett_disp_UpdateMode = -1;
211 static gint ett_disp_SupplierUpdateMode = -1;
212 static gint ett_disp_SchedulingParameters = -1;
213 static gint ett_disp_PeriodicStrategy = -1;
214 static gint ett_disp_CoordinateShadowUpdateArgumentData = -1;
215 static gint ett_disp_T_updateStrategy = -1;
216 static gint ett_disp_CoordinateShadowUpdateArgument = -1;
217 static gint ett_disp_T_signedCoordinateShadowUpdateArgument = -1;
218 static gint ett_disp_CoordinateShadowUpdateResult = -1;
219 static gint ett_disp_InformationData = -1;
220 static gint ett_disp_SEQUENCE_OF_Attribute = -1;
221 static gint ett_disp_Information = -1;
222 static gint ett_disp_T_signedInformation = -1;
223 static gint ett_disp_RequestShadowUpdateArgumentData = -1;
224 static gint ett_disp_T_requestedStrategy = -1;
225 static gint ett_disp_RequestShadowUpdateArgument = -1;
226 static gint ett_disp_T_signedRequestShadowUpdateArgument = -1;
227 static gint ett_disp_RequestShadowUpdateResult = -1;
228 static gint ett_disp_UpdateShadowArgumentData = -1;
229 static gint ett_disp_UpdateShadowArgument = -1;
230 static gint ett_disp_T_signedUpdateShadowArgument = -1;
231 static gint ett_disp_UpdateShadowResult = -1;
232 static gint ett_disp_UpdateWindow = -1;
233 static gint ett_disp_RefreshInformation = -1;
234 static gint ett_disp_TotalRefresh = -1;
235 static gint ett_disp_SET_OF_Subtree = -1;
236 static gint ett_disp_SDSEContent = -1;
237 static gint ett_disp_SET_OF_Attribute = -1;
238 static gint ett_disp_SET_OF_AttributeType = -1;
239 static gint ett_disp_Subtree = -1;
240 static gint ett_disp_IncrementalRefresh = -1;
241 static gint ett_disp_IncrementalStepRefresh = -1;
242 static gint ett_disp_T_sDSEChanges = -1;
243 static gint ett_disp_SEQUENCE_OF_SubordinateChanges = -1;
244 static gint ett_disp_ContentChange = -1;
245 static gint ett_disp_T_rename = -1;
246 static gint ett_disp_T_attributeChanges = -1;
247 static gint ett_disp_SEQUENCE_OF_EntryModification = -1;
248 static gint ett_disp_SubordinateChanges = -1;
249 static gint ett_disp_ShadowErrorData = -1;
250 static gint ett_disp_ShadowError = -1;
251 static gint ett_disp_T_signedShadowError = -1;
253 /*--- End of included file: packet-disp-ett.c ---*/
254 #line 76 "packet-disp-template.c"
257 /*--- Included file: packet-disp-fn.c ---*/
258 #line 1 "packet-disp-fn.c"
259 /*--- Cyclic dependencies ---*/
261 /* Subtree -> Subtree/subtree -> Subtree */
262 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_);
264 /* IncrementalStepRefresh -> IncrementalStepRefresh/subordinateUpdates -> SubordinateChanges -> IncrementalStepRefresh */
265 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_);
271 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_) {
272 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
280 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_) {
281 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
289 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_) {
290 offset = dissect_dap_DirectoryBindError(implicit_tag, tvb, offset, actx, tree, hf_index);
298 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_) {
299 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
305 static const ber_sequence_t SET_OF_SupplierAndConsumers_set_of[1] = {
306 { &hf_disp_modifiedSecondaryShadows_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dop_SupplierAndConsumers },
310 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_) {
311 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
312 SET_OF_SupplierAndConsumers_set_of, hf_index, ett_disp_SET_OF_SupplierAndConsumers);
318 static const ber_sequence_t ModificationParameter_sequence[] = {
319 { &hf_disp_modifiedSecondaryShadows, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_SupplierAndConsumers },
320 { NULL, 0, 0, 0, NULL }
324 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_) {
325 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
326 ModificationParameter_sequence, hf_index, ett_disp_ModificationParameter);
334 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_) {
335 offset = dissect_dop_OperationalBindingID(implicit_tag, tvb, offset, actx, tree, hf_index);
341 static const ber_sequence_t AreaSpecification_sequence[] = {
342 { &hf_disp_contextPrefix , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_DistinguishedName },
343 { &hf_disp_replicationArea, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_SubtreeSpecification },
344 { NULL, 0, 0, 0, NULL }
348 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_) {
349 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
350 AreaSpecification_sequence, hf_index, ett_disp_AreaSpecification);
358 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_) {
359 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
367 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_) {
368 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
374 static const ber_sequence_t AttributeTypes_set_of[1] = {
375 { &hf_disp_AttributeTypes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
379 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_) {
380 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
381 AttributeTypes_set_of, hf_index, ett_disp_AttributeTypes);
387 static const value_string disp_ClassAttributes_vals[] = {
388 { 0, "allAttributes" },
394 static const ber_choice_t ClassAttributes_choice[] = {
395 { 0, &hf_disp_allAttributes , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
396 { 1, &hf_disp_include , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_AttributeTypes },
397 { 2, &hf_disp_exclude , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_AttributeTypes },
398 { 0, NULL, 0, 0, 0, NULL }
402 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_) {
403 offset = dissect_ber_choice(actx, tree, tvb, offset,
404 ClassAttributes_choice, hf_index, ett_disp_ClassAttributes,
411 static const ber_sequence_t ClassAttributeSelection_sequence[] = {
412 { &hf_disp_class , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_OBJECT_IDENTIFIER },
413 { &hf_disp_classAttributes, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_ClassAttributes },
414 { NULL, 0, 0, 0, NULL }
418 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_) {
419 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
420 ClassAttributeSelection_sequence, hf_index, ett_disp_ClassAttributeSelection);
426 static const ber_sequence_t AttributeSelection_set_of[1] = {
427 { &hf_disp_AttributeSelection_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ClassAttributeSelection },
431 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_) {
432 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
433 AttributeSelection_set_of, hf_index, ett_disp_AttributeSelection);
439 static const value_string disp_T_knowledgeType_vals[] = {
448 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_) {
449 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
458 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_) {
459 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
465 static const ber_sequence_t Knowledge_sequence[] = {
466 { &hf_disp_knowledgeType , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_T_knowledgeType },
467 { &hf_disp_extendedKnowledge, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
468 { NULL, 0, 0, 0, NULL }
472 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_) {
473 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
474 Knowledge_sequence, hf_index, ett_disp_Knowledge);
480 static const ber_sequence_t T_selectedContexts_set_of[1] = {
481 { &hf_disp_selectedContexts_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_disp_OBJECT_IDENTIFIER },
485 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_) {
486 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
487 T_selectedContexts_set_of, hf_index, ett_disp_T_selectedContexts);
493 static const value_string disp_T_supplyContexts_vals[] = {
494 { 0, "allContexts" },
495 { 1, "selectedContexts" },
499 static const ber_choice_t T_supplyContexts_choice[] = {
500 { 0, &hf_disp_allContexts , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
501 { 1, &hf_disp_selectedContexts, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_T_selectedContexts },
502 { 0, NULL, 0, 0, 0, NULL }
506 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_) {
507 offset = dissect_ber_choice(actx, tree, tvb, offset,
508 T_supplyContexts_choice, hf_index, ett_disp_T_supplyContexts,
515 static const ber_sequence_t UnitOfReplication_sequence[] = {
516 { &hf_disp_area , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AreaSpecification },
517 { &hf_disp_replication_attributes, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_AttributeSelection },
518 { &hf_disp_knowledge , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Knowledge },
519 { &hf_disp_subordinates , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
520 { &hf_disp_contextSelection, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_ContextSelection },
521 { &hf_disp_supplyContexts , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_T_supplyContexts },
522 { NULL, 0, 0, 0, NULL }
526 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_) {
527 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
528 UnitOfReplication_sequence, hf_index, ett_disp_UnitOfReplication);
536 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_) {
537 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
545 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_) {
546 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
553 static const ber_sequence_t PeriodicStrategy_sequence[] = {
554 { &hf_disp_beginTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
555 { &hf_disp_windowSize , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_INTEGER },
556 { &hf_disp_updateInterval , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_INTEGER },
557 { NULL, 0, 0, 0, NULL }
561 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_) {
562 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
563 PeriodicStrategy_sequence, hf_index, ett_disp_PeriodicStrategy);
569 static const ber_sequence_t SchedulingParameters_sequence[] = {
570 { &hf_disp_periodic , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_PeriodicStrategy },
571 { &hf_disp_othertimes , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
572 { NULL, 0, 0, 0, NULL }
576 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_) {
577 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
578 SchedulingParameters_sequence, hf_index, ett_disp_SchedulingParameters);
584 static const value_string disp_SupplierUpdateMode_vals[] = {
590 static const ber_choice_t SupplierUpdateMode_choice[] = {
591 { 0, &hf_disp_onChange , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
592 { 1, &hf_disp_scheduled , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_SchedulingParameters },
593 { 0, NULL, 0, 0, 0, NULL }
597 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_) {
598 offset = dissect_ber_choice(actx, tree, tvb, offset,
599 SupplierUpdateMode_choice, hf_index, ett_disp_SupplierUpdateMode,
608 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_) {
609 offset = dissect_disp_SchedulingParameters(implicit_tag, tvb, offset, actx, tree, hf_index);
615 static const value_string disp_UpdateMode_vals[] = {
616 { 0, "supplierInitiated" },
617 { 1, "consumerInitiated" },
621 static const ber_choice_t UpdateMode_choice[] = {
622 { 0, &hf_disp_supplierInitiated, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SupplierUpdateMode },
623 { 1, &hf_disp_consumerInitiated, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_ConsumerUpdateMode },
624 { 0, NULL, 0, 0, 0, NULL }
628 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_) {
629 offset = dissect_ber_choice(actx, tree, tvb, offset,
630 UpdateMode_choice, hf_index, ett_disp_UpdateMode,
637 static const ber_sequence_t ShadowingAgreementInfo_sequence[] = {
638 { &hf_disp_shadowSubject , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_UnitOfReplication },
639 { &hf_disp_updateMode , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_UpdateMode },
640 { &hf_disp_master , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_AccessPoint },
641 { &hf_disp_secondaryShadows, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
642 { NULL, 0, 0, 0, NULL }
646 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_) {
647 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
648 ShadowingAgreementInfo_sequence, hf_index, ett_disp_ShadowingAgreementInfo);
654 static const value_string disp_StandardUpdate_vals[] = {
656 { 1, "incremental" },
663 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_) {
667 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
671 if (check_col(actx->pinfo->cinfo, COL_INFO)) {
672 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_StandardUpdate_vals, "unknown(%d)"));
683 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_) {
684 offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
690 static const value_string disp_T_updateStrategy_vals[] = {
696 static const ber_choice_t T_updateStrategy_choice[] = {
697 { 0, &hf_disp_standardUpdate , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_StandardUpdate },
698 { 1, &hf_disp_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
699 { 0, NULL, 0, 0, 0, NULL }
703 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_) {
704 offset = dissect_ber_choice(actx, tree, tvb, offset,
705 T_updateStrategy_choice, hf_index, ett_disp_T_updateStrategy,
712 static const ber_sequence_t CoordinateShadowUpdateArgumentData_sequence[] = {
713 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
714 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
715 { &hf_disp_updateStrategy , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_updateStrategy },
716 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
717 { NULL, 0, 0, 0, NULL }
721 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_) {
722 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
723 CoordinateShadowUpdateArgumentData_sequence, hf_index, ett_disp_CoordinateShadowUpdateArgumentData);
731 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_) {
732 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
740 static const ber_sequence_t T_signedCoordinateShadowUpdateArgument_sequence[] = {
741 { &hf_disp_coordinateShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_CoordinateShadowUpdateArgumentData },
742 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
743 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
744 { NULL, 0, 0, 0, NULL }
748 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_) {
749 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
750 T_signedCoordinateShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedCoordinateShadowUpdateArgument);
756 static const value_string disp_CoordinateShadowUpdateArgument_vals[] = {
757 { 0, "unsignedCoordinateShadowUpdateArgument" },
758 { 1, "signedCoordinateShadowUpdateArgument" },
762 static const ber_choice_t CoordinateShadowUpdateArgument_choice[] = {
763 { 0, &hf_disp_unsignedCoordinateShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_CoordinateShadowUpdateArgumentData },
764 { 1, &hf_disp_signedCoordinateShadowUpdateArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedCoordinateShadowUpdateArgument },
765 { 0, NULL, 0, 0, 0, NULL }
769 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_) {
770 offset = dissect_ber_choice(actx, tree, tvb, offset,
771 CoordinateShadowUpdateArgument_choice, hf_index, ett_disp_CoordinateShadowUpdateArgument,
778 static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = {
779 { &hf_disp_notification_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
783 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_) {
784 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
785 SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_disp_SEQUENCE_OF_Attribute);
791 static const ber_sequence_t InformationData_sequence[] = {
792 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
793 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
794 { &hf_disp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dap_SecurityParameters },
795 { &hf_disp_performer , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509if_DistinguishedName },
796 { &hf_disp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
797 { &hf_disp_notification , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_Attribute },
798 { NULL, 0, 0, 0, NULL }
802 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_) {
803 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
804 InformationData_sequence, hf_index, ett_disp_InformationData);
810 static const ber_sequence_t T_signedInformation_sequence[] = {
811 { &hf_disp_information_data, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_InformationData },
812 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
813 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
814 { NULL, 0, 0, 0, NULL }
818 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_) {
819 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
820 T_signedInformation_sequence, hf_index, ett_disp_T_signedInformation);
826 static const value_string disp_Information_vals[] = {
827 { 0, "unsignedInformation" },
828 { 1, "signedInformation" },
832 static const ber_choice_t Information_choice[] = {
833 { 0, &hf_disp_unsignedInformation, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_InformationData },
834 { 1, &hf_disp_signedInformation, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedInformation },
835 { 0, NULL, 0, 0, 0, NULL }
839 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_) {
840 offset = dissect_ber_choice(actx, tree, tvb, offset,
841 Information_choice, hf_index, ett_disp_Information,
848 static const value_string disp_CoordinateShadowUpdateResult_vals[] = {
850 { 1, "information" },
854 static const ber_choice_t CoordinateShadowUpdateResult_choice[] = {
855 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
856 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
857 { 0, NULL, 0, 0, 0, NULL }
861 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_) {
865 offset = dissect_ber_choice(actx, tree, tvb, offset,
866 CoordinateShadowUpdateResult_choice, hf_index, ett_disp_CoordinateShadowUpdateResult,
870 if (check_col(actx->pinfo->cinfo, COL_INFO)) {
871 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_CoordinateShadowUpdateResult_vals, "unknown(%d)"));
880 static const value_string disp_T_standard_vals[] = {
881 { 1, "incremental" },
888 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_) {
892 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
896 if (check_col(actx->pinfo->cinfo, COL_INFO)) {
897 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_T_standard_vals, "standard(%d"));
906 static const value_string disp_T_requestedStrategy_vals[] = {
912 static const ber_choice_t T_requestedStrategy_choice[] = {
913 { 0, &hf_disp_standard , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_T_standard },
914 { 1, &hf_disp_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
915 { 0, NULL, 0, 0, 0, NULL }
919 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_) {
920 offset = dissect_ber_choice(actx, tree, tvb, offset,
921 T_requestedStrategy_choice, hf_index, ett_disp_T_requestedStrategy,
928 static const ber_sequence_t RequestShadowUpdateArgumentData_sequence[] = {
929 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
930 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
931 { &hf_disp_requestedStrategy, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_requestedStrategy },
932 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
933 { NULL, 0, 0, 0, NULL }
937 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_) {
938 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
939 RequestShadowUpdateArgumentData_sequence, hf_index, ett_disp_RequestShadowUpdateArgumentData);
945 static const ber_sequence_t T_signedRequestShadowUpdateArgument_sequence[] = {
946 { &hf_disp_requestShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_RequestShadowUpdateArgumentData },
947 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
948 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
949 { NULL, 0, 0, 0, NULL }
953 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_) {
954 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
955 T_signedRequestShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedRequestShadowUpdateArgument);
961 static const value_string disp_RequestShadowUpdateArgument_vals[] = {
962 { 0, "unsignedRequestShadowUpdateArgument" },
963 { 1, "signedRequestShadowUpdateArgument" },
967 static const ber_choice_t RequestShadowUpdateArgument_choice[] = {
968 { 0, &hf_disp_unsignedRequestShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_RequestShadowUpdateArgumentData },
969 { 1, &hf_disp_signedRequestShadowUpdateArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedRequestShadowUpdateArgument },
970 { 0, NULL, 0, 0, 0, NULL }
974 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_) {
975 offset = dissect_ber_choice(actx, tree, tvb, offset,
976 RequestShadowUpdateArgument_choice, hf_index, ett_disp_RequestShadowUpdateArgument,
983 static const value_string disp_RequestShadowUpdateResult_vals[] = {
985 { 1, "information" },
989 static const ber_choice_t RequestShadowUpdateResult_choice[] = {
990 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
991 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
992 { 0, NULL, 0, 0, 0, NULL }
996 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_) {
1000 offset = dissect_ber_choice(actx, tree, tvb, offset,
1001 RequestShadowUpdateResult_choice, hf_index, ett_disp_RequestShadowUpdateResult,
1005 if (check_col(actx->pinfo->cinfo, COL_INFO)) {
1006 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RequestShadowUpdateResult_vals, "unknown(%d)"));
1015 static const ber_sequence_t UpdateWindow_sequence[] = {
1016 { &hf_disp_start , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1017 { &hf_disp_stop , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1018 { NULL, 0, 0, 0, NULL }
1022 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_) {
1023 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1024 UpdateWindow_sequence, hf_index, ett_disp_UpdateWindow);
1032 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_) {
1033 offset = dissect_dop_DSEType(implicit_tag, tvb, offset, actx, tree, hf_index);
1039 static const ber_sequence_t SET_OF_Attribute_set_of[1] = {
1040 { &hf_disp_attributes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
1044 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_) {
1045 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1046 SET_OF_Attribute_set_of, hf_index, ett_disp_SET_OF_Attribute);
1052 static const ber_sequence_t SET_OF_AttributeType_set_of[1] = {
1053 { &hf_disp_attValIncomplete_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1057 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_) {
1058 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1059 SET_OF_AttributeType_set_of, hf_index, ett_disp_SET_OF_AttributeType);
1065 static const ber_sequence_t SDSEContent_sequence[] = {
1066 { &hf_disp_sDSEType , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_SDSEType },
1067 { &hf_disp_subComplete , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1068 { &hf_disp_attComplete , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1069 { &hf_disp_attributes , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Attribute },
1070 { &hf_disp_attValIncomplete, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_AttributeType },
1071 { NULL, 0, 0, 0, NULL }
1075 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_) {
1076 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1077 SDSEContent_sequence, hf_index, ett_disp_SDSEContent);
1083 static const ber_sequence_t SET_OF_Subtree_set_of[1] = {
1084 { &hf_disp_subtree_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_Subtree },
1088 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_) {
1089 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1090 SET_OF_Subtree_set_of, hf_index, ett_disp_SET_OF_Subtree);
1096 static const ber_sequence_t Subtree_sequence[] = {
1097 { &hf_disp_rdn , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1098 { &hf_disp_sDSE , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SDSEContent },
1099 { &hf_disp_subtree , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Subtree },
1100 { NULL, 0, 0, 0, NULL }
1104 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_) {
1105 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1106 Subtree_sequence, hf_index, ett_disp_Subtree);
1112 static const ber_sequence_t TotalRefresh_sequence[] = {
1113 { &hf_disp_sDSE , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SDSEContent },
1114 { &hf_disp_subtree , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Subtree },
1115 { NULL, 0, 0, 0, NULL }
1119 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_) {
1120 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1121 TotalRefresh_sequence, hf_index, ett_disp_TotalRefresh);
1127 static const value_string disp_T_rename_vals[] = {
1133 static const ber_choice_t T_rename_choice[] = {
1134 { 0, &hf_disp_newRDN , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1135 { 1, &hf_disp_newDN , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_DistinguishedName },
1136 { 0, NULL, 0, 0, 0, NULL }
1140 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_) {
1141 offset = dissect_ber_choice(actx, tree, tvb, offset,
1142 T_rename_choice, hf_index, ett_disp_T_rename,
1149 static const ber_sequence_t SEQUENCE_OF_EntryModification_sequence_of[1] = {
1150 { &hf_disp_changes_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_dap_EntryModification },
1154 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_) {
1155 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1156 SEQUENCE_OF_EntryModification_sequence_of, hf_index, ett_disp_SEQUENCE_OF_EntryModification);
1162 static const value_string disp_T_attributeChanges_vals[] = {
1168 static const ber_choice_t T_attributeChanges_choice[] = {
1169 { 0, &hf_disp_replace , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SET_OF_Attribute },
1170 { 1, &hf_disp_changes , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_EntryModification },
1171 { 0, NULL, 0, 0, 0, NULL }
1175 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_) {
1176 offset = dissect_ber_choice(actx, tree, tvb, offset,
1177 T_attributeChanges_choice, hf_index, ett_disp_T_attributeChanges,
1184 static const ber_sequence_t ContentChange_sequence[] = {
1185 { &hf_disp_rename , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_rename },
1186 { &hf_disp_attributeChanges, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_attributeChanges },
1187 { &hf_disp_sDSEType , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_SDSEType },
1188 { &hf_disp_subComplete , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1189 { &hf_disp_attComplete , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1190 { &hf_disp_attValIncomplete, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_AttributeType },
1191 { NULL, 0, 0, 0, NULL }
1195 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_) {
1196 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1197 ContentChange_sequence, hf_index, ett_disp_ContentChange);
1203 static const value_string disp_T_sDSEChanges_vals[] = {
1210 static const ber_choice_t T_sDSEChanges_choice[] = {
1211 { 0, &hf_disp_add , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SDSEContent },
1212 { 1, &hf_disp_remove , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1213 { 2, &hf_disp_modify , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_ContentChange },
1214 { 0, NULL, 0, 0, 0, NULL }
1218 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_) {
1219 offset = dissect_ber_choice(actx, tree, tvb, offset,
1220 T_sDSEChanges_choice, hf_index, ett_disp_T_sDSEChanges,
1227 static const ber_sequence_t SubordinateChanges_sequence[] = {
1228 { &hf_disp_subordinate , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1229 { &hf_disp_subordinate_changes, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_IncrementalStepRefresh },
1230 { NULL, 0, 0, 0, NULL }
1234 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_) {
1235 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1236 SubordinateChanges_sequence, hf_index, ett_disp_SubordinateChanges);
1242 static const ber_sequence_t SEQUENCE_OF_SubordinateChanges_sequence_of[1] = {
1243 { &hf_disp_subordinateUpdates_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_SubordinateChanges },
1247 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_) {
1248 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1249 SEQUENCE_OF_SubordinateChanges_sequence_of, hf_index, ett_disp_SEQUENCE_OF_SubordinateChanges);
1255 static const ber_sequence_t IncrementalStepRefresh_sequence[] = {
1256 { &hf_disp_sDSEChanges , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_sDSEChanges },
1257 { &hf_disp_subordinateUpdates, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SEQUENCE_OF_SubordinateChanges },
1258 { NULL, 0, 0, 0, NULL }
1262 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_) {
1263 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1264 IncrementalStepRefresh_sequence, hf_index, ett_disp_IncrementalStepRefresh);
1270 static const ber_sequence_t IncrementalRefresh_sequence_of[1] = {
1271 { &hf_disp_IncrementalRefresh_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_IncrementalStepRefresh },
1275 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_) {
1276 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1277 IncrementalRefresh_sequence_of, hf_index, ett_disp_IncrementalRefresh);
1283 static const value_string disp_RefreshInformation_vals[] = {
1286 { 2, "incremental" },
1287 { 3, "otherStrategy" },
1291 static const ber_choice_t RefreshInformation_choice[] = {
1292 { 0, &hf_disp_noRefresh , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1293 { 1, &hf_disp_total , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_TotalRefresh },
1294 { 2, &hf_disp_incremental , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_IncrementalRefresh },
1295 { 3, &hf_disp_otherStrategy , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
1296 { 0, NULL, 0, 0, 0, NULL }
1300 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_) {
1304 offset = dissect_ber_choice(actx, tree, tvb, offset,
1305 RefreshInformation_choice, hf_index, ett_disp_RefreshInformation,
1309 if (check_col(actx->pinfo->cinfo, COL_INFO)) {
1310 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RefreshInformation_vals, "unknown(%d)"));
1319 static const ber_sequence_t UpdateShadowArgumentData_sequence[] = {
1320 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
1321 { &hf_disp_updateTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1322 { &hf_disp_updateWindow , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_UpdateWindow },
1323 { &hf_disp_updatedInfo , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_RefreshInformation },
1324 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
1325 { NULL, 0, 0, 0, NULL }
1329 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_) {
1330 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1331 UpdateShadowArgumentData_sequence, hf_index, ett_disp_UpdateShadowArgumentData);
1337 static const ber_sequence_t T_signedUpdateShadowArgument_sequence[] = {
1338 { &hf_disp_updateShadowArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_UpdateShadowArgumentData },
1339 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1340 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
1341 { NULL, 0, 0, 0, NULL }
1345 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_) {
1346 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1347 T_signedUpdateShadowArgument_sequence, hf_index, ett_disp_T_signedUpdateShadowArgument);
1353 static const value_string disp_UpdateShadowArgument_vals[] = {
1354 { 0, "unsignedUpdateShadowArgument" },
1355 { 1, "signedUpdateShadowArgument" },
1359 static const ber_choice_t UpdateShadowArgument_choice[] = {
1360 { 0, &hf_disp_unsignedUpdateShadowArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_UpdateShadowArgumentData },
1361 { 1, &hf_disp_signedUpdateShadowArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedUpdateShadowArgument },
1362 { 0, NULL, 0, 0, 0, NULL }
1366 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_) {
1367 offset = dissect_ber_choice(actx, tree, tvb, offset,
1368 UpdateShadowArgument_choice, hf_index, ett_disp_UpdateShadowArgument,
1375 static const value_string disp_UpdateShadowResult_vals[] = {
1377 { 1, "information" },
1381 static const ber_choice_t UpdateShadowResult_choice[] = {
1382 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1383 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
1384 { 0, NULL, 0, 0, 0, NULL }
1388 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_) {
1392 offset = dissect_ber_choice(actx, tree, tvb, offset,
1393 UpdateShadowResult_choice, hf_index, ett_disp_UpdateShadowResult,
1397 if (check_col(actx->pinfo->cinfo, COL_INFO)) {
1398 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_UpdateShadowResult_vals, "unknown(%d)"));
1407 static const value_string disp_ShadowProblem_vals[] = {
1408 { 1, "invalidAgreementID" },
1409 { 2, "inactiveAgreement" },
1410 { 3, "invalidInformationReceived" },
1411 { 4, "unsupportedStrategy" },
1412 { 5, "missedPrevious" },
1413 { 6, "fullUpdateRequired" },
1414 { 7, "unwillingToPerform" },
1415 { 8, "unsuitableTiming" },
1416 { 9, "updateAlreadyReceived" },
1417 { 10, "invalidSequencing" },
1418 { 11, "insufficientResources" },
1424 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_) {
1425 #line 110 "disp.cnf"
1428 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1432 if (check_col(actx->pinfo->cinfo, COL_INFO)) {
1433 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, disp_ShadowProblem_vals, "ShadowProblem(%d)"));
1441 static const ber_sequence_t ShadowErrorData_sequence[] = {
1442 { &hf_disp_problem , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowProblem },
1443 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1444 { &hf_disp_updateWindow , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_UpdateWindow },
1445 { &hf_disp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dap_SecurityParameters },
1446 { &hf_disp_performer , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509if_DistinguishedName },
1447 { &hf_disp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1448 { &hf_disp_notification , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_Attribute },
1449 { NULL, 0, 0, 0, NULL }
1453 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_) {
1454 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1455 ShadowErrorData_sequence, hf_index, ett_disp_ShadowErrorData);
1461 static const ber_sequence_t T_signedShadowError_sequence[] = {
1462 { &hf_disp_shadowError , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowErrorData },
1463 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1464 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
1465 { NULL, 0, 0, 0, NULL }
1469 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_) {
1470 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1471 T_signedShadowError_sequence, hf_index, ett_disp_T_signedShadowError);
1477 static const value_string disp_ShadowError_vals[] = {
1478 { 0, "unsignedShadowError" },
1479 { 1, "signedShadowError" },
1483 static const ber_choice_t ShadowError_choice[] = {
1484 { 0, &hf_disp_unsignedShadowError, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowErrorData },
1485 { 1, &hf_disp_signedShadowError, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_T_signedShadowError },
1486 { 0, NULL, 0, 0, 0, NULL }
1490 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_) {
1491 offset = dissect_ber_choice(actx, tree, tvb, offset,
1492 ShadowError_choice, hf_index, ett_disp_ShadowError,
1500 static void dissect_EstablishParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1501 asn1_ctx_t asn1_ctx;
1502 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1503 dissect_disp_EstablishParameter(FALSE, tvb, 0, &asn1_ctx, tree, hf_disp_EstablishParameter_PDU);
1505 static void dissect_ModificationParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1506 asn1_ctx_t asn1_ctx;
1507 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1508 dissect_disp_ModificationParameter(FALSE, tvb, 0, &asn1_ctx, tree, hf_disp_ModificationParameter_PDU);
1510 static void dissect_ShadowingAgreementInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1511 asn1_ctx_t asn1_ctx;
1512 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1513 dissect_disp_ShadowingAgreementInfo(FALSE, tvb, 0, &asn1_ctx, tree, hf_disp_ShadowingAgreementInfo_PDU);
1517 /*--- End of included file: packet-disp-fn.c ---*/
1518 #line 78 "packet-disp-template.c"
1521 * Dissect DISP PDUs inside a ROS PDUs
1524 dissect_disp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1528 proto_item *item=NULL;
1529 proto_tree *tree=NULL;
1530 int (*disp_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) = NULL;
1532 asn1_ctx_t asn1_ctx;
1534 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1536 /* do we have operation information from the ROS dissector? */
1537 if( !pinfo->private_data ){
1539 proto_tree_add_text(parent_tree, tvb, offset, -1,
1540 "Internal error: can't get operation information from ROS dissector.");
1544 session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
1548 item = proto_tree_add_item(parent_tree, proto_disp, tvb, 0, -1, FALSE);
1549 tree = proto_item_add_subtree(item, ett_disp);
1551 col_set_str(pinfo->cinfo, COL_PROTOCOL, "DISP");
1552 col_clear(pinfo->cinfo, COL_INFO);
1554 switch(session->ros_op & ROS_OP_MASK) {
1555 case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
1556 disp_dissector = dissect_disp_DSAShadowBindArgument;
1557 disp_op_name = "Shadow-Bind-Argument";
1559 case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
1560 disp_dissector = dissect_disp_DSAShadowBindResult;
1561 disp_op_name = "Shadow-Bind-Result";
1563 case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
1564 disp_dissector = dissect_disp_DSAShadowBindError;
1565 disp_op_name = "Shadow-Bind-Error";
1567 case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
1568 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1569 case 1: /* requestShadowUpdate */
1570 disp_dissector = dissect_disp_RequestShadowUpdateArgument;
1571 disp_op_name = "Request-Shadow-Update-Argument";
1573 case 2: /* updateShadow*/
1574 disp_dissector = dissect_disp_UpdateShadowArgument;
1575 disp_op_name = "Update-Shadow-Argument";
1577 case 3: /* coordinateShadowUpdate */
1578 disp_dissector = dissect_disp_CoordinateShadowUpdateArgument;
1579 disp_op_name = "Coordinate-Shadow-Update-Argument";
1582 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode (%d)",
1583 session->ros_op & ROS_OP_OPCODE_MASK);
1587 case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
1588 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1589 case 1: /* requestShadowUpdate */
1590 disp_dissector = dissect_disp_RequestShadowUpdateResult;
1591 disp_op_name = "Request-Shadow-Result";
1593 case 2: /* updateShadow */
1594 disp_dissector = dissect_disp_UpdateShadowResult;
1595 disp_op_name = "Update-Shadow-Result";
1597 case 3: /* coordinateShadowUpdate */
1598 disp_dissector = dissect_disp_CoordinateShadowUpdateResult;
1599 disp_op_name = "Coordinate-Shadow-Update-Result";
1602 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode (%d)",
1603 session->ros_op & ROS_OP_OPCODE_MASK);
1607 case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
1608 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1609 case 1: /* shadowError */
1610 disp_dissector = dissect_disp_ShadowError;
1611 disp_op_name = "Shadow-Error";
1614 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP errcode (%d)",
1615 session->ros_op & ROS_OP_OPCODE_MASK);
1620 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP PDU");
1624 if(disp_dissector) {
1625 if (check_col(pinfo->cinfo, COL_INFO))
1626 col_set_str(pinfo->cinfo, COL_INFO, disp_op_name);
1628 while (tvb_reported_length_remaining(tvb, offset) > 0){
1630 offset=(*disp_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
1631 if(offset == old_offset){
1632 proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DISP PDU");
1633 offset = tvb_length(tvb);
1641 /*--- proto_register_disp -------------------------------------------*/
1642 void proto_register_disp(void) {
1644 /* List of fields */
1645 static hf_register_info hf[] =
1648 /*--- Included file: packet-disp-hfarr.c ---*/
1649 #line 1 "packet-disp-hfarr.c"
1650 { &hf_disp_EstablishParameter_PDU,
1651 { "EstablishParameter", "disp.EstablishParameter",
1652 FT_NONE, BASE_NONE, NULL, 0,
1653 "disp.EstablishParameter", HFILL }},
1654 { &hf_disp_ModificationParameter_PDU,
1655 { "ModificationParameter", "disp.ModificationParameter",
1656 FT_NONE, BASE_NONE, NULL, 0,
1657 "disp.ModificationParameter", HFILL }},
1658 { &hf_disp_ShadowingAgreementInfo_PDU,
1659 { "ShadowingAgreementInfo", "disp.ShadowingAgreementInfo",
1660 FT_NONE, BASE_NONE, NULL, 0,
1661 "disp.ShadowingAgreementInfo", HFILL }},
1662 { &hf_disp_modifiedSecondaryShadows,
1663 { "secondaryShadows", "disp.secondaryShadows",
1664 FT_UINT32, BASE_DEC, NULL, 0,
1665 "disp.SET_OF_SupplierAndConsumers", HFILL }},
1666 { &hf_disp_modifiedSecondaryShadows_item,
1667 { "SupplierAndConsumers", "disp.SupplierAndConsumers",
1668 FT_NONE, BASE_NONE, NULL, 0,
1669 "dop.SupplierAndConsumers", HFILL }},
1670 { &hf_disp_shadowSubject,
1671 { "shadowSubject", "disp.shadowSubject",
1672 FT_NONE, BASE_NONE, NULL, 0,
1673 "disp.UnitOfReplication", HFILL }},
1674 { &hf_disp_updateMode,
1675 { "updateMode", "disp.updateMode",
1676 FT_UINT32, BASE_DEC, VALS(disp_UpdateMode_vals), 0,
1677 "disp.UpdateMode", HFILL }},
1679 { "master", "disp.master",
1680 FT_NONE, BASE_NONE, NULL, 0,
1681 "dsp.AccessPoint", HFILL }},
1682 { &hf_disp_secondaryShadows,
1683 { "secondaryShadows", "disp.secondaryShadows",
1684 FT_BOOLEAN, BASE_NONE, NULL, 0,
1685 "disp.BOOLEAN", HFILL }},
1687 { "area", "disp.area",
1688 FT_NONE, BASE_NONE, NULL, 0,
1689 "disp.AreaSpecification", HFILL }},
1690 { &hf_disp_replication_attributes,
1691 { "attributes", "disp.attributes",
1692 FT_UINT32, BASE_DEC, NULL, 0,
1693 "disp.AttributeSelection", HFILL }},
1694 { &hf_disp_knowledge,
1695 { "knowledge", "disp.knowledge",
1696 FT_NONE, BASE_NONE, NULL, 0,
1697 "disp.Knowledge", HFILL }},
1698 { &hf_disp_subordinates,
1699 { "subordinates", "disp.subordinates",
1700 FT_BOOLEAN, BASE_NONE, NULL, 0,
1701 "disp.BOOLEAN", HFILL }},
1702 { &hf_disp_contextSelection,
1703 { "contextSelection", "disp.contextSelection",
1704 FT_UINT32, BASE_DEC, VALS(dap_ContextSelection_vals), 0,
1705 "dap.ContextSelection", HFILL }},
1706 { &hf_disp_supplyContexts,
1707 { "supplyContexts", "disp.supplyContexts",
1708 FT_UINT32, BASE_DEC, VALS(disp_T_supplyContexts_vals), 0,
1709 "disp.T_supplyContexts", HFILL }},
1710 { &hf_disp_allContexts,
1711 { "allContexts", "disp.allContexts",
1712 FT_NONE, BASE_NONE, NULL, 0,
1713 "disp.NULL", HFILL }},
1714 { &hf_disp_selectedContexts,
1715 { "selectedContexts", "disp.selectedContexts",
1716 FT_UINT32, BASE_DEC, NULL, 0,
1717 "disp.T_selectedContexts", HFILL }},
1718 { &hf_disp_selectedContexts_item,
1719 { "selectedContexts item", "disp.selectedContexts_item",
1720 FT_OID, BASE_NONE, NULL, 0,
1721 "disp.OBJECT_IDENTIFIER", HFILL }},
1722 { &hf_disp_contextPrefix,
1723 { "contextPrefix", "disp.contextPrefix",
1724 FT_UINT32, BASE_DEC, NULL, 0,
1725 "x509if.DistinguishedName", HFILL }},
1726 { &hf_disp_replicationArea,
1727 { "replicationArea", "disp.replicationArea",
1728 FT_NONE, BASE_NONE, NULL, 0,
1729 "x509if.SubtreeSpecification", HFILL }},
1730 { &hf_disp_knowledgeType,
1731 { "knowledgeType", "disp.knowledgeType",
1732 FT_UINT32, BASE_DEC, VALS(disp_T_knowledgeType_vals), 0,
1733 "disp.T_knowledgeType", HFILL }},
1734 { &hf_disp_extendedKnowledge,
1735 { "extendedKnowledge", "disp.extendedKnowledge",
1736 FT_BOOLEAN, BASE_NONE, NULL, 0,
1737 "disp.BOOLEAN", HFILL }},
1738 { &hf_disp_AttributeSelection_item,
1739 { "ClassAttributeSelection", "disp.ClassAttributeSelection",
1740 FT_NONE, BASE_NONE, NULL, 0,
1741 "disp.ClassAttributeSelection", HFILL }},
1743 { "class", "disp.class",
1744 FT_OID, BASE_NONE, NULL, 0,
1745 "disp.OBJECT_IDENTIFIER", HFILL }},
1746 { &hf_disp_classAttributes,
1747 { "classAttributes", "disp.classAttributes",
1748 FT_UINT32, BASE_DEC, VALS(disp_ClassAttributes_vals), 0,
1749 "disp.ClassAttributes", HFILL }},
1750 { &hf_disp_allAttributes,
1751 { "allAttributes", "disp.allAttributes",
1752 FT_NONE, BASE_NONE, NULL, 0,
1753 "disp.NULL", HFILL }},
1755 { "include", "disp.include",
1756 FT_UINT32, BASE_DEC, NULL, 0,
1757 "disp.AttributeTypes", HFILL }},
1759 { "exclude", "disp.exclude",
1760 FT_UINT32, BASE_DEC, NULL, 0,
1761 "disp.AttributeTypes", HFILL }},
1762 { &hf_disp_AttributeTypes_item,
1763 { "AttributeType", "disp.AttributeType",
1764 FT_OID, BASE_NONE, NULL, 0,
1765 "x509if.AttributeType", HFILL }},
1766 { &hf_disp_supplierInitiated,
1767 { "supplierInitiated", "disp.supplierInitiated",
1768 FT_UINT32, BASE_DEC, VALS(disp_SupplierUpdateMode_vals), 0,
1769 "disp.SupplierUpdateMode", HFILL }},
1770 { &hf_disp_consumerInitiated,
1771 { "consumerInitiated", "disp.consumerInitiated",
1772 FT_NONE, BASE_NONE, NULL, 0,
1773 "disp.ConsumerUpdateMode", HFILL }},
1774 { &hf_disp_onChange,
1775 { "onChange", "disp.onChange",
1776 FT_BOOLEAN, BASE_NONE, NULL, 0,
1777 "disp.BOOLEAN", HFILL }},
1778 { &hf_disp_scheduled,
1779 { "scheduled", "disp.scheduled",
1780 FT_NONE, BASE_NONE, NULL, 0,
1781 "disp.SchedulingParameters", HFILL }},
1782 { &hf_disp_periodic,
1783 { "periodic", "disp.periodic",
1784 FT_NONE, BASE_NONE, NULL, 0,
1785 "disp.PeriodicStrategy", HFILL }},
1786 { &hf_disp_othertimes,
1787 { "othertimes", "disp.othertimes",
1788 FT_BOOLEAN, BASE_NONE, NULL, 0,
1789 "disp.BOOLEAN", HFILL }},
1790 { &hf_disp_beginTime,
1791 { "beginTime", "disp.beginTime",
1792 FT_STRING, BASE_NONE, NULL, 0,
1793 "disp.Time", HFILL }},
1794 { &hf_disp_windowSize,
1795 { "windowSize", "disp.windowSize",
1796 FT_INT32, BASE_DEC, NULL, 0,
1797 "disp.INTEGER", HFILL }},
1798 { &hf_disp_updateInterval,
1799 { "updateInterval", "disp.updateInterval",
1800 FT_INT32, BASE_DEC, NULL, 0,
1801 "disp.INTEGER", HFILL }},
1802 { &hf_disp_agreementID,
1803 { "agreementID", "disp.agreementID",
1804 FT_NONE, BASE_NONE, NULL, 0,
1805 "disp.AgreementID", HFILL }},
1806 { &hf_disp_lastUpdate,
1807 { "lastUpdate", "disp.lastUpdate",
1808 FT_STRING, BASE_NONE, NULL, 0,
1809 "disp.Time", HFILL }},
1810 { &hf_disp_updateStrategy,
1811 { "updateStrategy", "disp.updateStrategy",
1812 FT_UINT32, BASE_DEC, VALS(disp_T_updateStrategy_vals), 0,
1813 "disp.T_updateStrategy", HFILL }},
1814 { &hf_disp_standardUpdate,
1815 { "standard", "disp.standard",
1816 FT_UINT32, BASE_DEC, VALS(disp_StandardUpdate_vals), 0,
1817 "disp.StandardUpdate", HFILL }},
1819 { "other", "disp.other",
1820 FT_NONE, BASE_NONE, NULL, 0,
1821 "disp.EXTERNAL", HFILL }},
1822 { &hf_disp_securityParameters,
1823 { "securityParameters", "disp.securityParameters",
1824 FT_NONE, BASE_NONE, NULL, 0,
1825 "dap.SecurityParameters", HFILL }},
1826 { &hf_disp_unsignedCoordinateShadowUpdateArgument,
1827 { "unsignedCoordinateShadowUpdateArgument", "disp.unsignedCoordinateShadowUpdateArgument",
1828 FT_NONE, BASE_NONE, NULL, 0,
1829 "disp.CoordinateShadowUpdateArgumentData", HFILL }},
1830 { &hf_disp_signedCoordinateShadowUpdateArgument,
1831 { "signedCoordinateShadowUpdateArgument", "disp.signedCoordinateShadowUpdateArgument",
1832 FT_NONE, BASE_NONE, NULL, 0,
1833 "disp.T_signedCoordinateShadowUpdateArgument", HFILL }},
1834 { &hf_disp_coordinateShadowUpdateArgument,
1835 { "coordinateShadowUpdateArgument", "disp.coordinateShadowUpdateArgument",
1836 FT_NONE, BASE_NONE, NULL, 0,
1837 "disp.CoordinateShadowUpdateArgumentData", HFILL }},
1838 { &hf_disp_algorithmIdentifier,
1839 { "algorithmIdentifier", "disp.algorithmIdentifier",
1840 FT_NONE, BASE_NONE, NULL, 0,
1841 "x509af.AlgorithmIdentifier", HFILL }},
1842 { &hf_disp_encrypted,
1843 { "encrypted", "disp.encrypted",
1844 FT_BYTES, BASE_NONE, NULL, 0,
1845 "disp.BIT_STRING", HFILL }},
1847 { "null", "disp.null",
1848 FT_NONE, BASE_NONE, NULL, 0,
1849 "disp.NULL", HFILL }},
1850 { &hf_disp_information,
1851 { "information", "disp.information",
1852 FT_UINT32, BASE_DEC, VALS(disp_Information_vals), 0,
1853 "disp.Information", HFILL }},
1854 { &hf_disp_performer,
1855 { "performer", "disp.performer",
1856 FT_UINT32, BASE_DEC, NULL, 0,
1857 "x509if.DistinguishedName", HFILL }},
1858 { &hf_disp_aliasDereferenced,
1859 { "aliasDereferenced", "disp.aliasDereferenced",
1860 FT_BOOLEAN, BASE_NONE, NULL, 0,
1861 "disp.BOOLEAN", HFILL }},
1862 { &hf_disp_notification,
1863 { "notification", "disp.notification",
1864 FT_UINT32, BASE_DEC, NULL, 0,
1865 "disp.SEQUENCE_OF_Attribute", HFILL }},
1866 { &hf_disp_notification_item,
1867 { "Attribute", "disp.Attribute",
1868 FT_NONE, BASE_NONE, NULL, 0,
1869 "x509if.Attribute", HFILL }},
1870 { &hf_disp_unsignedInformation,
1871 { "unsignedInformation", "disp.unsignedInformation",
1872 FT_NONE, BASE_NONE, NULL, 0,
1873 "disp.InformationData", HFILL }},
1874 { &hf_disp_signedInformation,
1875 { "signedInformation", "disp.signedInformation",
1876 FT_NONE, BASE_NONE, NULL, 0,
1877 "disp.T_signedInformation", HFILL }},
1878 { &hf_disp_information_data,
1879 { "information", "disp.information",
1880 FT_NONE, BASE_NONE, NULL, 0,
1881 "disp.InformationData", HFILL }},
1882 { &hf_disp_requestedStrategy,
1883 { "requestedStrategy", "disp.requestedStrategy",
1884 FT_UINT32, BASE_DEC, VALS(disp_T_requestedStrategy_vals), 0,
1885 "disp.T_requestedStrategy", HFILL }},
1886 { &hf_disp_standard,
1887 { "standard", "disp.standard",
1888 FT_UINT32, BASE_DEC, VALS(disp_T_standard_vals), 0,
1889 "disp.T_standard", HFILL }},
1890 { &hf_disp_unsignedRequestShadowUpdateArgument,
1891 { "unsignedRequestShadowUpdateArgument", "disp.unsignedRequestShadowUpdateArgument",
1892 FT_NONE, BASE_NONE, NULL, 0,
1893 "disp.RequestShadowUpdateArgumentData", HFILL }},
1894 { &hf_disp_signedRequestShadowUpdateArgument,
1895 { "signedRequestShadowUpdateArgument", "disp.signedRequestShadowUpdateArgument",
1896 FT_NONE, BASE_NONE, NULL, 0,
1897 "disp.T_signedRequestShadowUpdateArgument", HFILL }},
1898 { &hf_disp_requestShadowUpdateArgument,
1899 { "requestShadowUpdateArgument", "disp.requestShadowUpdateArgument",
1900 FT_NONE, BASE_NONE, NULL, 0,
1901 "disp.RequestShadowUpdateArgumentData", HFILL }},
1902 { &hf_disp_updateTime,
1903 { "updateTime", "disp.updateTime",
1904 FT_STRING, BASE_NONE, NULL, 0,
1905 "disp.Time", HFILL }},
1906 { &hf_disp_updateWindow,
1907 { "updateWindow", "disp.updateWindow",
1908 FT_NONE, BASE_NONE, NULL, 0,
1909 "disp.UpdateWindow", HFILL }},
1910 { &hf_disp_updatedInfo,
1911 { "updatedInfo", "disp.updatedInfo",
1912 FT_UINT32, BASE_DEC, VALS(disp_RefreshInformation_vals), 0,
1913 "disp.RefreshInformation", HFILL }},
1914 { &hf_disp_unsignedUpdateShadowArgument,
1915 { "unsignedUpdateShadowArgument", "disp.unsignedUpdateShadowArgument",
1916 FT_NONE, BASE_NONE, NULL, 0,
1917 "disp.UpdateShadowArgumentData", HFILL }},
1918 { &hf_disp_signedUpdateShadowArgument,
1919 { "signedUpdateShadowArgument", "disp.signedUpdateShadowArgument",
1920 FT_NONE, BASE_NONE, NULL, 0,
1921 "disp.T_signedUpdateShadowArgument", HFILL }},
1922 { &hf_disp_updateShadowArgument,
1923 { "updateShadowArgument", "disp.updateShadowArgument",
1924 FT_NONE, BASE_NONE, NULL, 0,
1925 "disp.UpdateShadowArgumentData", HFILL }},
1927 { "start", "disp.start",
1928 FT_STRING, BASE_NONE, NULL, 0,
1929 "disp.Time", HFILL }},
1931 { "stop", "disp.stop",
1932 FT_STRING, BASE_NONE, NULL, 0,
1933 "disp.Time", HFILL }},
1934 { &hf_disp_noRefresh,
1935 { "noRefresh", "disp.noRefresh",
1936 FT_NONE, BASE_NONE, NULL, 0,
1937 "disp.NULL", HFILL }},
1939 { "total", "disp.total",
1940 FT_NONE, BASE_NONE, NULL, 0,
1941 "disp.TotalRefresh", HFILL }},
1942 { &hf_disp_incremental,
1943 { "incremental", "disp.incremental",
1944 FT_UINT32, BASE_DEC, NULL, 0,
1945 "disp.IncrementalRefresh", HFILL }},
1946 { &hf_disp_otherStrategy,
1947 { "otherStrategy", "disp.otherStrategy",
1948 FT_NONE, BASE_NONE, NULL, 0,
1949 "disp.EXTERNAL", HFILL }},
1951 { "sDSE", "disp.sDSE",
1952 FT_NONE, BASE_NONE, NULL, 0,
1953 "disp.SDSEContent", HFILL }},
1955 { "subtree", "disp.subtree",
1956 FT_UINT32, BASE_DEC, NULL, 0,
1957 "disp.SET_OF_Subtree", HFILL }},
1958 { &hf_disp_subtree_item,
1959 { "Subtree", "disp.Subtree",
1960 FT_NONE, BASE_NONE, NULL, 0,
1961 "disp.Subtree", HFILL }},
1962 { &hf_disp_sDSEType,
1963 { "sDSEType", "disp.sDSEType",
1964 FT_BYTES, BASE_NONE, NULL, 0,
1965 "disp.SDSEType", HFILL }},
1966 { &hf_disp_subComplete,
1967 { "subComplete", "disp.subComplete",
1968 FT_BOOLEAN, BASE_NONE, NULL, 0,
1969 "disp.BOOLEAN", HFILL }},
1970 { &hf_disp_attComplete,
1971 { "attComplete", "disp.attComplete",
1972 FT_BOOLEAN, BASE_NONE, NULL, 0,
1973 "disp.BOOLEAN", HFILL }},
1974 { &hf_disp_attributes,
1975 { "attributes", "disp.attributes",
1976 FT_UINT32, BASE_DEC, NULL, 0,
1977 "disp.SET_OF_Attribute", HFILL }},
1978 { &hf_disp_attributes_item,
1979 { "Attribute", "disp.Attribute",
1980 FT_NONE, BASE_NONE, NULL, 0,
1981 "x509if.Attribute", HFILL }},
1982 { &hf_disp_attValIncomplete,
1983 { "attValIncomplete", "disp.attValIncomplete",
1984 FT_UINT32, BASE_DEC, NULL, 0,
1985 "disp.SET_OF_AttributeType", HFILL }},
1986 { &hf_disp_attValIncomplete_item,
1987 { "AttributeType", "disp.AttributeType",
1988 FT_OID, BASE_NONE, NULL, 0,
1989 "x509if.AttributeType", HFILL }},
1991 { "rdn", "disp.rdn",
1992 FT_UINT32, BASE_DEC, NULL, 0,
1993 "x509if.RelativeDistinguishedName", HFILL }},
1994 { &hf_disp_IncrementalRefresh_item,
1995 { "IncrementalStepRefresh", "disp.IncrementalStepRefresh",
1996 FT_NONE, BASE_NONE, NULL, 0,
1997 "disp.IncrementalStepRefresh", HFILL }},
1998 { &hf_disp_sDSEChanges,
1999 { "sDSEChanges", "disp.sDSEChanges",
2000 FT_UINT32, BASE_DEC, VALS(disp_T_sDSEChanges_vals), 0,
2001 "disp.T_sDSEChanges", HFILL }},
2003 { "add", "disp.add",
2004 FT_NONE, BASE_NONE, NULL, 0,
2005 "disp.SDSEContent", HFILL }},
2007 { "remove", "disp.remove",
2008 FT_NONE, BASE_NONE, NULL, 0,
2009 "disp.NULL", HFILL }},
2011 { "modify", "disp.modify",
2012 FT_NONE, BASE_NONE, NULL, 0,
2013 "disp.ContentChange", HFILL }},
2014 { &hf_disp_subordinateUpdates,
2015 { "subordinateUpdates", "disp.subordinateUpdates",
2016 FT_UINT32, BASE_DEC, NULL, 0,
2017 "disp.SEQUENCE_OF_SubordinateChanges", HFILL }},
2018 { &hf_disp_subordinateUpdates_item,
2019 { "SubordinateChanges", "disp.SubordinateChanges",
2020 FT_NONE, BASE_NONE, NULL, 0,
2021 "disp.SubordinateChanges", HFILL }},
2023 { "rename", "disp.rename",
2024 FT_UINT32, BASE_DEC, VALS(disp_T_rename_vals), 0,
2025 "disp.T_rename", HFILL }},
2027 { "newRDN", "disp.newRDN",
2028 FT_UINT32, BASE_DEC, NULL, 0,
2029 "x509if.RelativeDistinguishedName", HFILL }},
2031 { "newDN", "disp.newDN",
2032 FT_UINT32, BASE_DEC, NULL, 0,
2033 "x509if.DistinguishedName", HFILL }},
2034 { &hf_disp_attributeChanges,
2035 { "attributeChanges", "disp.attributeChanges",
2036 FT_UINT32, BASE_DEC, VALS(disp_T_attributeChanges_vals), 0,
2037 "disp.T_attributeChanges", HFILL }},
2039 { "replace", "disp.replace",
2040 FT_UINT32, BASE_DEC, NULL, 0,
2041 "disp.SET_OF_Attribute", HFILL }},
2042 { &hf_disp_replace_item,
2043 { "Attribute", "disp.Attribute",
2044 FT_NONE, BASE_NONE, NULL, 0,
2045 "x509if.Attribute", HFILL }},
2047 { "changes", "disp.changes",
2048 FT_UINT32, BASE_DEC, NULL, 0,
2049 "disp.SEQUENCE_OF_EntryModification", HFILL }},
2050 { &hf_disp_changes_item,
2051 { "EntryModification", "disp.EntryModification",
2052 FT_UINT32, BASE_DEC, VALS(dap_EntryModification_vals), 0,
2053 "dap.EntryModification", HFILL }},
2054 { &hf_disp_subordinate,
2055 { "subordinate", "disp.subordinate",
2056 FT_UINT32, BASE_DEC, NULL, 0,
2057 "x509if.RelativeDistinguishedName", HFILL }},
2058 { &hf_disp_subordinate_changes,
2059 { "changes", "disp.changes",
2060 FT_NONE, BASE_NONE, NULL, 0,
2061 "disp.IncrementalStepRefresh", HFILL }},
2063 { "problem", "disp.problem",
2064 FT_INT32, BASE_DEC, VALS(disp_ShadowProblem_vals), 0,
2065 "disp.ShadowProblem", HFILL }},
2066 { &hf_disp_unsignedShadowError,
2067 { "unsignedShadowError", "disp.unsignedShadowError",
2068 FT_NONE, BASE_NONE, NULL, 0,
2069 "disp.ShadowErrorData", HFILL }},
2070 { &hf_disp_signedShadowError,
2071 { "signedShadowError", "disp.signedShadowError",
2072 FT_NONE, BASE_NONE, NULL, 0,
2073 "disp.T_signedShadowError", HFILL }},
2074 { &hf_disp_shadowError,
2075 { "shadowError", "disp.shadowError",
2076 FT_NONE, BASE_NONE, NULL, 0,
2077 "disp.ShadowErrorData", HFILL }},
2079 /*--- End of included file: packet-disp-hfarr.c ---*/
2080 #line 209 "packet-disp-template.c"
2083 /* List of subtrees */
2084 static gint *ett[] = {
2087 /*--- Included file: packet-disp-ettarr.c ---*/
2088 #line 1 "packet-disp-ettarr.c"
2089 &ett_disp_ModificationParameter,
2090 &ett_disp_SET_OF_SupplierAndConsumers,
2091 &ett_disp_ShadowingAgreementInfo,
2092 &ett_disp_UnitOfReplication,
2093 &ett_disp_T_supplyContexts,
2094 &ett_disp_T_selectedContexts,
2095 &ett_disp_AreaSpecification,
2096 &ett_disp_Knowledge,
2097 &ett_disp_AttributeSelection,
2098 &ett_disp_ClassAttributeSelection,
2099 &ett_disp_ClassAttributes,
2100 &ett_disp_AttributeTypes,
2101 &ett_disp_UpdateMode,
2102 &ett_disp_SupplierUpdateMode,
2103 &ett_disp_SchedulingParameters,
2104 &ett_disp_PeriodicStrategy,
2105 &ett_disp_CoordinateShadowUpdateArgumentData,
2106 &ett_disp_T_updateStrategy,
2107 &ett_disp_CoordinateShadowUpdateArgument,
2108 &ett_disp_T_signedCoordinateShadowUpdateArgument,
2109 &ett_disp_CoordinateShadowUpdateResult,
2110 &ett_disp_InformationData,
2111 &ett_disp_SEQUENCE_OF_Attribute,
2112 &ett_disp_Information,
2113 &ett_disp_T_signedInformation,
2114 &ett_disp_RequestShadowUpdateArgumentData,
2115 &ett_disp_T_requestedStrategy,
2116 &ett_disp_RequestShadowUpdateArgument,
2117 &ett_disp_T_signedRequestShadowUpdateArgument,
2118 &ett_disp_RequestShadowUpdateResult,
2119 &ett_disp_UpdateShadowArgumentData,
2120 &ett_disp_UpdateShadowArgument,
2121 &ett_disp_T_signedUpdateShadowArgument,
2122 &ett_disp_UpdateShadowResult,
2123 &ett_disp_UpdateWindow,
2124 &ett_disp_RefreshInformation,
2125 &ett_disp_TotalRefresh,
2126 &ett_disp_SET_OF_Subtree,
2127 &ett_disp_SDSEContent,
2128 &ett_disp_SET_OF_Attribute,
2129 &ett_disp_SET_OF_AttributeType,
2131 &ett_disp_IncrementalRefresh,
2132 &ett_disp_IncrementalStepRefresh,
2133 &ett_disp_T_sDSEChanges,
2134 &ett_disp_SEQUENCE_OF_SubordinateChanges,
2135 &ett_disp_ContentChange,
2137 &ett_disp_T_attributeChanges,
2138 &ett_disp_SEQUENCE_OF_EntryModification,
2139 &ett_disp_SubordinateChanges,
2140 &ett_disp_ShadowErrorData,
2141 &ett_disp_ShadowError,
2142 &ett_disp_T_signedShadowError,
2144 /*--- End of included file: packet-disp-ettarr.c ---*/
2145 #line 215 "packet-disp-template.c"
2147 module_t *disp_module;
2149 /* Register protocol */
2150 proto_disp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2151 register_dissector("disp", dissect_disp, proto_disp);
2153 /* Register fields and subtrees */
2154 proto_register_field_array(proto_disp, hf, array_length(hf));
2155 proto_register_subtree_array(ett, array_length(ett));
2157 /* Register our configuration options for DISP, particularly our port */
2159 disp_module = prefs_register_protocol_subtree("OSI/X.500", proto_disp, prefs_register_disp);
2161 prefs_register_uint_preference(disp_module, "tcp.port", "DISP TCP Port",
2162 "Set the port for DISP operations (if other"
2163 " than the default of 102)",
2164 10, &global_disp_tcp_port);
2169 /*--- proto_reg_handoff_disp --- */
2170 void proto_reg_handoff_disp(void) {
2171 dissector_handle_t disp_handle;
2174 /*--- Included file: packet-disp-dis-tab.c ---*/
2175 #line 1 "packet-disp-dis-tab.c"
2176 dissector_add_string("dop.oid", "agreement.2.5.19.1", create_dissector_handle(dissect_ShadowingAgreementInfo_PDU, proto_disp));
2177 dissector_add_string("dop.oid", "establish.rolea.2.5.19.1", create_dissector_handle(dissect_EstablishParameter_PDU, proto_disp));
2178 dissector_add_string("dop.oid", "establish.roleb.2.5.19.1", create_dissector_handle(dissect_EstablishParameter_PDU, proto_disp));
2179 dissector_add_string("dop.oid", "modify.rolea.2.5.19.1", create_dissector_handle(dissect_ModificationParameter_PDU, proto_disp));
2180 dissector_add_string("dop.oid", "modify.roleb.2.5.19.1", create_dissector_handle(dissect_ModificationParameter_PDU, proto_disp));
2183 /*--- End of included file: packet-disp-dis-tab.c ---*/
2184 #line 243 "packet-disp-template.c"
2186 /* APPLICATION CONTEXT */
2188 oid_add_from_string("id-ac-shadow-consumer-initiated","2.5.3.4");
2189 oid_add_from_string("id-ac-shadow-supplier-initiated","2.5.3.5");
2190 oid_add_from_string("id-ac-reliable-shadow-consumer-initiated","2.5.3.6");
2191 oid_add_from_string("id-ac-reliable-shadow-supplier-initiated","2.5.3.7");
2193 /* ABSTRACT SYNTAXES */
2195 disp_handle = find_dissector("disp");
2197 register_ros_oid_dissector_handle("2.5.9.3", disp_handle, 0, "id-as-directory-shadow", FALSE);
2198 register_rtse_oid_dissector_handle("2.5.9.5", disp_handle, 0, "id-as-directory-reliable-shadow", FALSE);
2199 register_rtse_oid_dissector_handle("2.5.9.6", disp_handle, 0, "id-as-directory-reliable-binding", FALSE);
2201 /* OPERATIONAL BINDING */
2202 oid_add_from_string("id-op-binding-shadow","2.5.1.0.5.1");
2204 tpkt_handle = find_dissector("tpkt");
2207 x509if_register_fmt(hf_disp_contextPrefix, "cp=");
2212 void prefs_register_disp(void) {
2213 static guint tcp_port = 0;
2215 /* de-register the old port */
2216 /* port 102 is registered by TPKT - don't undo this! */
2217 if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
2218 dissector_delete("tcp.port", tcp_port, tpkt_handle);
2220 /* Set our port number for future use */
2221 tcp_port = global_disp_tcp_port;
2223 if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
2224 dissector_add("tcp.port", global_disp_tcp_port, tpkt_handle);