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 "../../asn1/disp/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>
44 #include "packet-ber.h"
45 #include "packet-acse.h"
46 #include "packet-ros.h"
47 #include "packet-rtse.h"
49 #include "packet-x509if.h"
50 #include "packet-x509af.h"
51 #include "packet-x509sat.h"
52 #include "packet-crmf.h"
54 #include "packet-dop.h"
55 #include "packet-dap.h"
56 #include "packet-dsp.h"
57 #include "packet-disp.h"
60 /* we don't have a separate dissector for X519 -
61 and most of DISP is defined in X525 */
62 #define PNAME "X.519 Directory Information Shadowing Protocol"
66 static guint global_disp_tcp_port = 102;
67 static dissector_handle_t tpkt_handle;
68 static void prefs_register_disp(void); /* forward declaration for use in preferences registration */
71 /* Initialize the protocol and registered fields */
72 static int proto_disp = -1;
74 static struct SESSION_DATA_STRUCTURE* session = NULL;
77 /*--- Included file: packet-disp-hf.c ---*/
78 #line 1 "../../asn1/disp/packet-disp-hf.c"
79 static int hf_disp_EstablishParameter_PDU = -1; /* EstablishParameter */
80 static int hf_disp_ModificationParameter_PDU = -1; /* ModificationParameter */
81 static int hf_disp_ShadowingAgreementInfo_PDU = -1; /* ShadowingAgreementInfo */
82 static int hf_disp_modifiedSecondaryShadows = -1; /* SET_OF_SupplierAndConsumers */
83 static int hf_disp_modifiedSecondaryShadows_item = -1; /* SupplierAndConsumers */
84 static int hf_disp_shadowSubject = -1; /* UnitOfReplication */
85 static int hf_disp_updateMode = -1; /* UpdateMode */
86 static int hf_disp_master = -1; /* AccessPoint */
87 static int hf_disp_secondaryShadows = -1; /* BOOLEAN */
88 static int hf_disp_area = -1; /* AreaSpecification */
89 static int hf_disp_replication_attributes = -1; /* AttributeSelection */
90 static int hf_disp_knowledge = -1; /* Knowledge */
91 static int hf_disp_subordinates = -1; /* BOOLEAN */
92 static int hf_disp_contextSelection = -1; /* ContextSelection */
93 static int hf_disp_supplyContexts = -1; /* T_supplyContexts */
94 static int hf_disp_allContexts = -1; /* NULL */
95 static int hf_disp_selectedContexts = -1; /* T_selectedContexts */
96 static int hf_disp_selectedContexts_item = -1; /* OBJECT_IDENTIFIER */
97 static int hf_disp_contextPrefix = -1; /* DistinguishedName */
98 static int hf_disp_replicationArea = -1; /* SubtreeSpecification */
99 static int hf_disp_knowledgeType = -1; /* T_knowledgeType */
100 static int hf_disp_extendedKnowledge = -1; /* BOOLEAN */
101 static int hf_disp_AttributeSelection_item = -1; /* ClassAttributeSelection */
102 static int hf_disp_class = -1; /* OBJECT_IDENTIFIER */
103 static int hf_disp_classAttributes = -1; /* ClassAttributes */
104 static int hf_disp_allAttributes = -1; /* NULL */
105 static int hf_disp_include = -1; /* AttributeTypes */
106 static int hf_disp_exclude = -1; /* AttributeTypes */
107 static int hf_disp_AttributeTypes_item = -1; /* AttributeType */
108 static int hf_disp_supplierInitiated = -1; /* SupplierUpdateMode */
109 static int hf_disp_consumerInitiated = -1; /* ConsumerUpdateMode */
110 static int hf_disp_onChange = -1; /* BOOLEAN */
111 static int hf_disp_scheduled = -1; /* SchedulingParameters */
112 static int hf_disp_periodic = -1; /* PeriodicStrategy */
113 static int hf_disp_othertimes = -1; /* BOOLEAN */
114 static int hf_disp_beginTime = -1; /* Time */
115 static int hf_disp_windowSize = -1; /* INTEGER */
116 static int hf_disp_updateInterval = -1; /* INTEGER */
117 static int hf_disp_agreementID = -1; /* AgreementID */
118 static int hf_disp_lastUpdate = -1; /* Time */
119 static int hf_disp_updateStrategy = -1; /* T_updateStrategy */
120 static int hf_disp_standardUpdate = -1; /* StandardUpdate */
121 static int hf_disp_other = -1; /* EXTERNAL */
122 static int hf_disp_securityParameters = -1; /* SecurityParameters */
123 static int hf_disp_unsignedCoordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
124 static int hf_disp_signedCoordinateShadowUpdateArgument = -1; /* T_signedCoordinateShadowUpdateArgument */
125 static int hf_disp_coordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
126 static int hf_disp_algorithmIdentifier = -1; /* AlgorithmIdentifier */
127 static int hf_disp_encrypted = -1; /* BIT_STRING */
128 static int hf_disp_null = -1; /* NULL */
129 static int hf_disp_information = -1; /* Information */
130 static int hf_disp_performer = -1; /* DistinguishedName */
131 static int hf_disp_aliasDereferenced = -1; /* BOOLEAN */
132 static int hf_disp_notification = -1; /* SEQUENCE_OF_Attribute */
133 static int hf_disp_notification_item = -1; /* Attribute */
134 static int hf_disp_unsignedInformation = -1; /* InformationData */
135 static int hf_disp_signedInformation = -1; /* T_signedInformation */
136 static int hf_disp_information_data = -1; /* InformationData */
137 static int hf_disp_requestedStrategy = -1; /* T_requestedStrategy */
138 static int hf_disp_standard = -1; /* T_standard */
139 static int hf_disp_unsignedRequestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
140 static int hf_disp_signedRequestShadowUpdateArgument = -1; /* T_signedRequestShadowUpdateArgument */
141 static int hf_disp_requestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
142 static int hf_disp_updateTime = -1; /* Time */
143 static int hf_disp_updateWindow = -1; /* UpdateWindow */
144 static int hf_disp_updatedInfo = -1; /* RefreshInformation */
145 static int hf_disp_unsignedUpdateShadowArgument = -1; /* UpdateShadowArgumentData */
146 static int hf_disp_signedUpdateShadowArgument = -1; /* T_signedUpdateShadowArgument */
147 static int hf_disp_updateShadowArgument = -1; /* UpdateShadowArgumentData */
148 static int hf_disp_start = -1; /* Time */
149 static int hf_disp_stop = -1; /* Time */
150 static int hf_disp_noRefresh = -1; /* NULL */
151 static int hf_disp_total = -1; /* TotalRefresh */
152 static int hf_disp_incremental = -1; /* IncrementalRefresh */
153 static int hf_disp_otherStrategy = -1; /* EXTERNAL */
154 static int hf_disp_sDSE = -1; /* SDSEContent */
155 static int hf_disp_subtree = -1; /* SET_OF_Subtree */
156 static int hf_disp_subtree_item = -1; /* Subtree */
157 static int hf_disp_sDSEType = -1; /* SDSEType */
158 static int hf_disp_subComplete = -1; /* BOOLEAN */
159 static int hf_disp_attComplete = -1; /* BOOLEAN */
160 static int hf_disp_attributes = -1; /* SET_OF_Attribute */
161 static int hf_disp_attributes_item = -1; /* Attribute */
162 static int hf_disp_attValIncomplete = -1; /* SET_OF_AttributeType */
163 static int hf_disp_attValIncomplete_item = -1; /* AttributeType */
164 static int hf_disp_rdn = -1; /* RelativeDistinguishedName */
165 static int hf_disp_IncrementalRefresh_item = -1; /* IncrementalStepRefresh */
166 static int hf_disp_sDSEChanges = -1; /* T_sDSEChanges */
167 static int hf_disp_add = -1; /* SDSEContent */
168 static int hf_disp_remove = -1; /* NULL */
169 static int hf_disp_modify = -1; /* ContentChange */
170 static int hf_disp_subordinateUpdates = -1; /* SEQUENCE_OF_SubordinateChanges */
171 static int hf_disp_subordinateUpdates_item = -1; /* SubordinateChanges */
172 static int hf_disp_rename = -1; /* T_rename */
173 static int hf_disp_newRDN = -1; /* RelativeDistinguishedName */
174 static int hf_disp_newDN = -1; /* DistinguishedName */
175 static int hf_disp_attributeChanges = -1; /* T_attributeChanges */
176 static int hf_disp_replace = -1; /* SET_OF_Attribute */
177 static int hf_disp_replace_item = -1; /* Attribute */
178 static int hf_disp_changes = -1; /* SEQUENCE_OF_EntryModification */
179 static int hf_disp_changes_item = -1; /* EntryModification */
180 static int hf_disp_subordinate = -1; /* RelativeDistinguishedName */
181 static int hf_disp_subordinate_changes = -1; /* IncrementalStepRefresh */
182 static int hf_disp_problem = -1; /* ShadowProblem */
183 static int hf_disp_unsignedShadowError = -1; /* ShadowErrorData */
184 static int hf_disp_signedShadowError = -1; /* T_signedShadowError */
185 static int hf_disp_shadowError = -1; /* ShadowErrorData */
187 /*--- End of included file: packet-disp-hf.c ---*/
188 #line 69 "../../asn1/disp/packet-disp-template.c"
190 /* Initialize the subtree pointers */
191 static gint ett_disp = -1;
193 /*--- Included file: packet-disp-ett.c ---*/
194 #line 1 "../../asn1/disp/packet-disp-ett.c"
195 static gint ett_disp_ModificationParameter = -1;
196 static gint ett_disp_SET_OF_SupplierAndConsumers = -1;
197 static gint ett_disp_ShadowingAgreementInfo = -1;
198 static gint ett_disp_UnitOfReplication = -1;
199 static gint ett_disp_T_supplyContexts = -1;
200 static gint ett_disp_T_selectedContexts = -1;
201 static gint ett_disp_AreaSpecification = -1;
202 static gint ett_disp_Knowledge = -1;
203 static gint ett_disp_AttributeSelection = -1;
204 static gint ett_disp_ClassAttributeSelection = -1;
205 static gint ett_disp_ClassAttributes = -1;
206 static gint ett_disp_AttributeTypes = -1;
207 static gint ett_disp_UpdateMode = -1;
208 static gint ett_disp_SupplierUpdateMode = -1;
209 static gint ett_disp_SchedulingParameters = -1;
210 static gint ett_disp_PeriodicStrategy = -1;
211 static gint ett_disp_CoordinateShadowUpdateArgumentData = -1;
212 static gint ett_disp_T_updateStrategy = -1;
213 static gint ett_disp_CoordinateShadowUpdateArgument = -1;
214 static gint ett_disp_T_signedCoordinateShadowUpdateArgument = -1;
215 static gint ett_disp_CoordinateShadowUpdateResult = -1;
216 static gint ett_disp_InformationData = -1;
217 static gint ett_disp_SEQUENCE_OF_Attribute = -1;
218 static gint ett_disp_Information = -1;
219 static gint ett_disp_T_signedInformation = -1;
220 static gint ett_disp_RequestShadowUpdateArgumentData = -1;
221 static gint ett_disp_T_requestedStrategy = -1;
222 static gint ett_disp_RequestShadowUpdateArgument = -1;
223 static gint ett_disp_T_signedRequestShadowUpdateArgument = -1;
224 static gint ett_disp_RequestShadowUpdateResult = -1;
225 static gint ett_disp_UpdateShadowArgumentData = -1;
226 static gint ett_disp_UpdateShadowArgument = -1;
227 static gint ett_disp_T_signedUpdateShadowArgument = -1;
228 static gint ett_disp_UpdateShadowResult = -1;
229 static gint ett_disp_UpdateWindow = -1;
230 static gint ett_disp_RefreshInformation = -1;
231 static gint ett_disp_TotalRefresh = -1;
232 static gint ett_disp_SET_OF_Subtree = -1;
233 static gint ett_disp_SDSEContent = -1;
234 static gint ett_disp_SET_OF_Attribute = -1;
235 static gint ett_disp_SET_OF_AttributeType = -1;
236 static gint ett_disp_Subtree = -1;
237 static gint ett_disp_IncrementalRefresh = -1;
238 static gint ett_disp_IncrementalStepRefresh = -1;
239 static gint ett_disp_T_sDSEChanges = -1;
240 static gint ett_disp_SEQUENCE_OF_SubordinateChanges = -1;
241 static gint ett_disp_ContentChange = -1;
242 static gint ett_disp_T_rename = -1;
243 static gint ett_disp_T_attributeChanges = -1;
244 static gint ett_disp_SEQUENCE_OF_EntryModification = -1;
245 static gint ett_disp_SubordinateChanges = -1;
246 static gint ett_disp_ShadowErrorData = -1;
247 static gint ett_disp_ShadowError = -1;
248 static gint ett_disp_T_signedShadowError = -1;
250 /*--- End of included file: packet-disp-ett.c ---*/
251 #line 73 "../../asn1/disp/packet-disp-template.c"
254 /*--- Included file: packet-disp-fn.c ---*/
255 #line 1 "../../asn1/disp/packet-disp-fn.c"
256 /*--- Cyclic dependencies ---*/
258 /* Subtree -> Subtree/subtree -> Subtree */
259 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_);
261 /* IncrementalStepRefresh -> IncrementalStepRefresh/subordinateUpdates -> SubordinateChanges -> IncrementalStepRefresh */
262 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_);
268 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_) {
269 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
277 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_) {
278 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
286 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_) {
287 offset = dissect_dap_DirectoryBindError(implicit_tag, tvb, offset, actx, tree, hf_index);
295 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_) {
296 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
302 static const ber_sequence_t SET_OF_SupplierAndConsumers_set_of[1] = {
303 { &hf_disp_modifiedSecondaryShadows_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dop_SupplierAndConsumers },
307 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_) {
308 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
309 SET_OF_SupplierAndConsumers_set_of, hf_index, ett_disp_SET_OF_SupplierAndConsumers);
315 static const ber_sequence_t ModificationParameter_sequence[] = {
316 { &hf_disp_modifiedSecondaryShadows, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_SupplierAndConsumers },
317 { NULL, 0, 0, 0, NULL }
321 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_) {
322 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
323 ModificationParameter_sequence, hf_index, ett_disp_ModificationParameter);
331 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_) {
332 offset = dissect_dop_OperationalBindingID(implicit_tag, tvb, offset, actx, tree, hf_index);
338 static const ber_sequence_t AreaSpecification_sequence[] = {
339 { &hf_disp_contextPrefix , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_DistinguishedName },
340 { &hf_disp_replicationArea, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_SubtreeSpecification },
341 { NULL, 0, 0, 0, NULL }
345 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_) {
346 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
347 AreaSpecification_sequence, hf_index, ett_disp_AreaSpecification);
355 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_) {
356 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
364 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_) {
365 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
371 static const ber_sequence_t AttributeTypes_set_of[1] = {
372 { &hf_disp_AttributeTypes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
376 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_) {
377 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
378 AttributeTypes_set_of, hf_index, ett_disp_AttributeTypes);
384 static const value_string disp_ClassAttributes_vals[] = {
385 { 0, "allAttributes" },
391 static const ber_choice_t ClassAttributes_choice[] = {
392 { 0, &hf_disp_allAttributes , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
393 { 1, &hf_disp_include , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_AttributeTypes },
394 { 2, &hf_disp_exclude , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_AttributeTypes },
395 { 0, NULL, 0, 0, 0, NULL }
399 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_) {
400 offset = dissect_ber_choice(actx, tree, tvb, offset,
401 ClassAttributes_choice, hf_index, ett_disp_ClassAttributes,
408 static const ber_sequence_t ClassAttributeSelection_sequence[] = {
409 { &hf_disp_class , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_OBJECT_IDENTIFIER },
410 { &hf_disp_classAttributes, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_ClassAttributes },
411 { NULL, 0, 0, 0, NULL }
415 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_) {
416 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
417 ClassAttributeSelection_sequence, hf_index, ett_disp_ClassAttributeSelection);
423 static const ber_sequence_t AttributeSelection_set_of[1] = {
424 { &hf_disp_AttributeSelection_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ClassAttributeSelection },
428 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_) {
429 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
430 AttributeSelection_set_of, hf_index, ett_disp_AttributeSelection);
436 static const value_string disp_T_knowledgeType_vals[] = {
445 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_) {
446 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
455 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_) {
456 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
462 static const ber_sequence_t Knowledge_sequence[] = {
463 { &hf_disp_knowledgeType , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_T_knowledgeType },
464 { &hf_disp_extendedKnowledge, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
465 { NULL, 0, 0, 0, NULL }
469 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_) {
470 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
471 Knowledge_sequence, hf_index, ett_disp_Knowledge);
477 static const ber_sequence_t T_selectedContexts_set_of[1] = {
478 { &hf_disp_selectedContexts_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_disp_OBJECT_IDENTIFIER },
482 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_) {
483 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
484 T_selectedContexts_set_of, hf_index, ett_disp_T_selectedContexts);
490 static const value_string disp_T_supplyContexts_vals[] = {
491 { 0, "allContexts" },
492 { 1, "selectedContexts" },
496 static const ber_choice_t T_supplyContexts_choice[] = {
497 { 0, &hf_disp_allContexts , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
498 { 1, &hf_disp_selectedContexts, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_T_selectedContexts },
499 { 0, NULL, 0, 0, 0, NULL }
503 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_) {
504 offset = dissect_ber_choice(actx, tree, tvb, offset,
505 T_supplyContexts_choice, hf_index, ett_disp_T_supplyContexts,
512 static const ber_sequence_t UnitOfReplication_sequence[] = {
513 { &hf_disp_area , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AreaSpecification },
514 { &hf_disp_replication_attributes, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_AttributeSelection },
515 { &hf_disp_knowledge , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Knowledge },
516 { &hf_disp_subordinates , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
517 { &hf_disp_contextSelection, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_ContextSelection },
518 { &hf_disp_supplyContexts , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_T_supplyContexts },
519 { NULL, 0, 0, 0, NULL }
523 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_) {
524 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
525 UnitOfReplication_sequence, hf_index, ett_disp_UnitOfReplication);
533 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_) {
534 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
542 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_) {
543 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
550 static const ber_sequence_t PeriodicStrategy_sequence[] = {
551 { &hf_disp_beginTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
552 { &hf_disp_windowSize , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_INTEGER },
553 { &hf_disp_updateInterval , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_INTEGER },
554 { NULL, 0, 0, 0, NULL }
558 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_) {
559 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
560 PeriodicStrategy_sequence, hf_index, ett_disp_PeriodicStrategy);
566 static const ber_sequence_t SchedulingParameters_sequence[] = {
567 { &hf_disp_periodic , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_PeriodicStrategy },
568 { &hf_disp_othertimes , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
569 { NULL, 0, 0, 0, NULL }
573 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_) {
574 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
575 SchedulingParameters_sequence, hf_index, ett_disp_SchedulingParameters);
581 static const value_string disp_SupplierUpdateMode_vals[] = {
587 static const ber_choice_t SupplierUpdateMode_choice[] = {
588 { 0, &hf_disp_onChange , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
589 { 1, &hf_disp_scheduled , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_SchedulingParameters },
590 { 0, NULL, 0, 0, 0, NULL }
594 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_) {
595 offset = dissect_ber_choice(actx, tree, tvb, offset,
596 SupplierUpdateMode_choice, hf_index, ett_disp_SupplierUpdateMode,
605 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_) {
606 offset = dissect_disp_SchedulingParameters(implicit_tag, tvb, offset, actx, tree, hf_index);
612 static const value_string disp_UpdateMode_vals[] = {
613 { 0, "supplierInitiated" },
614 { 1, "consumerInitiated" },
618 static const ber_choice_t UpdateMode_choice[] = {
619 { 0, &hf_disp_supplierInitiated, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SupplierUpdateMode },
620 { 1, &hf_disp_consumerInitiated, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_ConsumerUpdateMode },
621 { 0, NULL, 0, 0, 0, NULL }
625 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_) {
626 offset = dissect_ber_choice(actx, tree, tvb, offset,
627 UpdateMode_choice, hf_index, ett_disp_UpdateMode,
634 static const ber_sequence_t ShadowingAgreementInfo_sequence[] = {
635 { &hf_disp_shadowSubject , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_UnitOfReplication },
636 { &hf_disp_updateMode , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_UpdateMode },
637 { &hf_disp_master , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_AccessPoint },
638 { &hf_disp_secondaryShadows, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
639 { NULL, 0, 0, 0, NULL }
643 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_) {
644 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
645 ShadowingAgreementInfo_sequence, hf_index, ett_disp_ShadowingAgreementInfo);
651 static const value_string disp_StandardUpdate_vals[] = {
653 { 1, "incremental" },
660 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_) {
661 #line 58 "../../asn1/disp/disp.cnf"
664 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
668 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_StandardUpdate_vals, "unknown(%d)"));
678 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_) {
679 offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
685 static const value_string disp_T_updateStrategy_vals[] = {
691 static const ber_choice_t T_updateStrategy_choice[] = {
692 { 0, &hf_disp_standardUpdate , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_StandardUpdate },
693 { 1, &hf_disp_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
694 { 0, NULL, 0, 0, 0, NULL }
698 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_) {
699 offset = dissect_ber_choice(actx, tree, tvb, offset,
700 T_updateStrategy_choice, hf_index, ett_disp_T_updateStrategy,
707 static const ber_sequence_t CoordinateShadowUpdateArgumentData_sequence[] = {
708 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
709 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
710 { &hf_disp_updateStrategy , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_updateStrategy },
711 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
712 { NULL, 0, 0, 0, NULL }
716 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_) {
717 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
718 CoordinateShadowUpdateArgumentData_sequence, hf_index, ett_disp_CoordinateShadowUpdateArgumentData);
726 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_) {
727 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
735 static const ber_sequence_t T_signedCoordinateShadowUpdateArgument_sequence[] = {
736 { &hf_disp_coordinateShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_CoordinateShadowUpdateArgumentData },
737 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
738 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
739 { NULL, 0, 0, 0, NULL }
743 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_) {
744 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
745 T_signedCoordinateShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedCoordinateShadowUpdateArgument);
751 static const value_string disp_CoordinateShadowUpdateArgument_vals[] = {
752 { 0, "unsignedCoordinateShadowUpdateArgument" },
753 { 1, "signedCoordinateShadowUpdateArgument" },
757 static const ber_choice_t CoordinateShadowUpdateArgument_choice[] = {
758 { 0, &hf_disp_unsignedCoordinateShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_CoordinateShadowUpdateArgumentData },
759 { 1, &hf_disp_signedCoordinateShadowUpdateArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedCoordinateShadowUpdateArgument },
760 { 0, NULL, 0, 0, 0, NULL }
764 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_) {
765 offset = dissect_ber_choice(actx, tree, tvb, offset,
766 CoordinateShadowUpdateArgument_choice, hf_index, ett_disp_CoordinateShadowUpdateArgument,
773 static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = {
774 { &hf_disp_notification_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
778 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_) {
779 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
780 SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_disp_SEQUENCE_OF_Attribute);
786 static const ber_sequence_t InformationData_sequence[] = {
787 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
788 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
789 { &hf_disp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dap_SecurityParameters },
790 { &hf_disp_performer , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509if_DistinguishedName },
791 { &hf_disp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
792 { &hf_disp_notification , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_Attribute },
793 { NULL, 0, 0, 0, NULL }
797 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_) {
798 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
799 InformationData_sequence, hf_index, ett_disp_InformationData);
805 static const ber_sequence_t T_signedInformation_sequence[] = {
806 { &hf_disp_information_data, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_InformationData },
807 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
808 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
809 { NULL, 0, 0, 0, NULL }
813 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_) {
814 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
815 T_signedInformation_sequence, hf_index, ett_disp_T_signedInformation);
821 static const value_string disp_Information_vals[] = {
822 { 0, "unsignedInformation" },
823 { 1, "signedInformation" },
827 static const ber_choice_t Information_choice[] = {
828 { 0, &hf_disp_unsignedInformation, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_InformationData },
829 { 1, &hf_disp_signedInformation, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedInformation },
830 { 0, NULL, 0, 0, 0, NULL }
834 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_) {
835 offset = dissect_ber_choice(actx, tree, tvb, offset,
836 Information_choice, hf_index, ett_disp_Information,
843 static const value_string disp_CoordinateShadowUpdateResult_vals[] = {
845 { 1, "information" },
849 static const ber_choice_t CoordinateShadowUpdateResult_choice[] = {
850 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
851 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
852 { 0, NULL, 0, 0, 0, NULL }
856 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_) {
857 #line 68 "../../asn1/disp/disp.cnf"
860 offset = dissect_ber_choice(actx, tree, tvb, offset,
861 CoordinateShadowUpdateResult_choice, hf_index, ett_disp_CoordinateShadowUpdateResult,
865 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_CoordinateShadowUpdateResult_vals, "unknown(%d)"));
873 static const value_string disp_T_standard_vals[] = {
874 { 1, "incremental" },
881 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_) {
882 #line 38 "../../asn1/disp/disp.cnf"
885 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
889 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_T_standard_vals, "standard(%d"));
897 static const value_string disp_T_requestedStrategy_vals[] = {
903 static const ber_choice_t T_requestedStrategy_choice[] = {
904 { 0, &hf_disp_standard , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_T_standard },
905 { 1, &hf_disp_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
906 { 0, NULL, 0, 0, 0, NULL }
910 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_) {
911 offset = dissect_ber_choice(actx, tree, tvb, offset,
912 T_requestedStrategy_choice, hf_index, ett_disp_T_requestedStrategy,
919 static const ber_sequence_t RequestShadowUpdateArgumentData_sequence[] = {
920 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
921 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
922 { &hf_disp_requestedStrategy, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_requestedStrategy },
923 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
924 { NULL, 0, 0, 0, NULL }
928 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_) {
929 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
930 RequestShadowUpdateArgumentData_sequence, hf_index, ett_disp_RequestShadowUpdateArgumentData);
936 static const ber_sequence_t T_signedRequestShadowUpdateArgument_sequence[] = {
937 { &hf_disp_requestShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_RequestShadowUpdateArgumentData },
938 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
939 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
940 { NULL, 0, 0, 0, NULL }
944 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_) {
945 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
946 T_signedRequestShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedRequestShadowUpdateArgument);
952 static const value_string disp_RequestShadowUpdateArgument_vals[] = {
953 { 0, "unsignedRequestShadowUpdateArgument" },
954 { 1, "signedRequestShadowUpdateArgument" },
958 static const ber_choice_t RequestShadowUpdateArgument_choice[] = {
959 { 0, &hf_disp_unsignedRequestShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_RequestShadowUpdateArgumentData },
960 { 1, &hf_disp_signedRequestShadowUpdateArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedRequestShadowUpdateArgument },
961 { 0, NULL, 0, 0, 0, NULL }
965 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_) {
966 offset = dissect_ber_choice(actx, tree, tvb, offset,
967 RequestShadowUpdateArgument_choice, hf_index, ett_disp_RequestShadowUpdateArgument,
974 static const value_string disp_RequestShadowUpdateResult_vals[] = {
976 { 1, "information" },
980 static const ber_choice_t RequestShadowUpdateResult_choice[] = {
981 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
982 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
983 { 0, NULL, 0, 0, 0, NULL }
987 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_) {
988 #line 78 "../../asn1/disp/disp.cnf"
991 offset = dissect_ber_choice(actx, tree, tvb, offset,
992 RequestShadowUpdateResult_choice, hf_index, ett_disp_RequestShadowUpdateResult,
996 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RequestShadowUpdateResult_vals, "unknown(%d)"));
1004 static const ber_sequence_t UpdateWindow_sequence[] = {
1005 { &hf_disp_start , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1006 { &hf_disp_stop , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1007 { NULL, 0, 0, 0, NULL }
1011 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_) {
1012 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1013 UpdateWindow_sequence, hf_index, ett_disp_UpdateWindow);
1021 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_) {
1022 offset = dissect_dop_DSEType(implicit_tag, tvb, offset, actx, tree, hf_index);
1028 static const ber_sequence_t SET_OF_Attribute_set_of[1] = {
1029 { &hf_disp_attributes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
1033 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_) {
1034 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1035 SET_OF_Attribute_set_of, hf_index, ett_disp_SET_OF_Attribute);
1041 static const ber_sequence_t SET_OF_AttributeType_set_of[1] = {
1042 { &hf_disp_attValIncomplete_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1046 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_) {
1047 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1048 SET_OF_AttributeType_set_of, hf_index, ett_disp_SET_OF_AttributeType);
1054 static const ber_sequence_t SDSEContent_sequence[] = {
1055 { &hf_disp_sDSEType , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_SDSEType },
1056 { &hf_disp_subComplete , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1057 { &hf_disp_attComplete , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1058 { &hf_disp_attributes , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Attribute },
1059 { &hf_disp_attValIncomplete, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_AttributeType },
1060 { NULL, 0, 0, 0, NULL }
1064 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_) {
1065 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1066 SDSEContent_sequence, hf_index, ett_disp_SDSEContent);
1072 static const ber_sequence_t SET_OF_Subtree_set_of[1] = {
1073 { &hf_disp_subtree_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_Subtree },
1077 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_) {
1078 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1079 SET_OF_Subtree_set_of, hf_index, ett_disp_SET_OF_Subtree);
1085 static const ber_sequence_t Subtree_sequence[] = {
1086 { &hf_disp_rdn , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1087 { &hf_disp_sDSE , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SDSEContent },
1088 { &hf_disp_subtree , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Subtree },
1089 { NULL, 0, 0, 0, NULL }
1093 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_) {
1094 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1095 Subtree_sequence, hf_index, ett_disp_Subtree);
1101 static const ber_sequence_t TotalRefresh_sequence[] = {
1102 { &hf_disp_sDSE , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SDSEContent },
1103 { &hf_disp_subtree , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Subtree },
1104 { NULL, 0, 0, 0, NULL }
1108 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_) {
1109 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1110 TotalRefresh_sequence, hf_index, ett_disp_TotalRefresh);
1116 static const value_string disp_T_rename_vals[] = {
1122 static const ber_choice_t T_rename_choice[] = {
1123 { 0, &hf_disp_newRDN , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1124 { 1, &hf_disp_newDN , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_DistinguishedName },
1125 { 0, NULL, 0, 0, 0, NULL }
1129 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_) {
1130 offset = dissect_ber_choice(actx, tree, tvb, offset,
1131 T_rename_choice, hf_index, ett_disp_T_rename,
1138 static const ber_sequence_t SEQUENCE_OF_EntryModification_sequence_of[1] = {
1139 { &hf_disp_changes_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_dap_EntryModification },
1143 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_) {
1144 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1145 SEQUENCE_OF_EntryModification_sequence_of, hf_index, ett_disp_SEQUENCE_OF_EntryModification);
1151 static const value_string disp_T_attributeChanges_vals[] = {
1157 static const ber_choice_t T_attributeChanges_choice[] = {
1158 { 0, &hf_disp_replace , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SET_OF_Attribute },
1159 { 1, &hf_disp_changes , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_EntryModification },
1160 { 0, NULL, 0, 0, 0, NULL }
1164 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_) {
1165 offset = dissect_ber_choice(actx, tree, tvb, offset,
1166 T_attributeChanges_choice, hf_index, ett_disp_T_attributeChanges,
1173 static const ber_sequence_t ContentChange_sequence[] = {
1174 { &hf_disp_rename , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_rename },
1175 { &hf_disp_attributeChanges, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_attributeChanges },
1176 { &hf_disp_sDSEType , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_SDSEType },
1177 { &hf_disp_subComplete , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1178 { &hf_disp_attComplete , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1179 { &hf_disp_attValIncomplete, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_AttributeType },
1180 { NULL, 0, 0, 0, NULL }
1184 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_) {
1185 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1186 ContentChange_sequence, hf_index, ett_disp_ContentChange);
1192 static const value_string disp_T_sDSEChanges_vals[] = {
1199 static const ber_choice_t T_sDSEChanges_choice[] = {
1200 { 0, &hf_disp_add , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SDSEContent },
1201 { 1, &hf_disp_remove , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1202 { 2, &hf_disp_modify , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_ContentChange },
1203 { 0, NULL, 0, 0, 0, NULL }
1207 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_) {
1208 offset = dissect_ber_choice(actx, tree, tvb, offset,
1209 T_sDSEChanges_choice, hf_index, ett_disp_T_sDSEChanges,
1216 static const ber_sequence_t SubordinateChanges_sequence[] = {
1217 { &hf_disp_subordinate , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1218 { &hf_disp_subordinate_changes, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_IncrementalStepRefresh },
1219 { NULL, 0, 0, 0, NULL }
1223 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_) {
1224 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1225 SubordinateChanges_sequence, hf_index, ett_disp_SubordinateChanges);
1231 static const ber_sequence_t SEQUENCE_OF_SubordinateChanges_sequence_of[1] = {
1232 { &hf_disp_subordinateUpdates_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_SubordinateChanges },
1236 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_) {
1237 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1238 SEQUENCE_OF_SubordinateChanges_sequence_of, hf_index, ett_disp_SEQUENCE_OF_SubordinateChanges);
1244 static const ber_sequence_t IncrementalStepRefresh_sequence[] = {
1245 { &hf_disp_sDSEChanges , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_sDSEChanges },
1246 { &hf_disp_subordinateUpdates, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SEQUENCE_OF_SubordinateChanges },
1247 { NULL, 0, 0, 0, NULL }
1251 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_) {
1252 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1253 IncrementalStepRefresh_sequence, hf_index, ett_disp_IncrementalStepRefresh);
1259 static const ber_sequence_t IncrementalRefresh_sequence_of[1] = {
1260 { &hf_disp_IncrementalRefresh_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_IncrementalStepRefresh },
1264 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_) {
1265 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1266 IncrementalRefresh_sequence_of, hf_index, ett_disp_IncrementalRefresh);
1272 static const value_string disp_RefreshInformation_vals[] = {
1275 { 2, "incremental" },
1276 { 3, "otherStrategy" },
1280 static const ber_choice_t RefreshInformation_choice[] = {
1281 { 0, &hf_disp_noRefresh , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1282 { 1, &hf_disp_total , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_TotalRefresh },
1283 { 2, &hf_disp_incremental , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_IncrementalRefresh },
1284 { 3, &hf_disp_otherStrategy , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
1285 { 0, NULL, 0, 0, 0, NULL }
1289 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_) {
1290 #line 48 "../../asn1/disp/disp.cnf"
1293 offset = dissect_ber_choice(actx, tree, tvb, offset,
1294 RefreshInformation_choice, hf_index, ett_disp_RefreshInformation,
1298 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RefreshInformation_vals, "unknown(%d)"));
1306 static const ber_sequence_t UpdateShadowArgumentData_sequence[] = {
1307 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
1308 { &hf_disp_updateTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1309 { &hf_disp_updateWindow , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_UpdateWindow },
1310 { &hf_disp_updatedInfo , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_RefreshInformation },
1311 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
1312 { NULL, 0, 0, 0, NULL }
1316 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_) {
1317 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1318 UpdateShadowArgumentData_sequence, hf_index, ett_disp_UpdateShadowArgumentData);
1324 static const ber_sequence_t T_signedUpdateShadowArgument_sequence[] = {
1325 { &hf_disp_updateShadowArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_UpdateShadowArgumentData },
1326 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1327 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
1328 { NULL, 0, 0, 0, NULL }
1332 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_) {
1333 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1334 T_signedUpdateShadowArgument_sequence, hf_index, ett_disp_T_signedUpdateShadowArgument);
1340 static const value_string disp_UpdateShadowArgument_vals[] = {
1341 { 0, "unsignedUpdateShadowArgument" },
1342 { 1, "signedUpdateShadowArgument" },
1346 static const ber_choice_t UpdateShadowArgument_choice[] = {
1347 { 0, &hf_disp_unsignedUpdateShadowArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_UpdateShadowArgumentData },
1348 { 1, &hf_disp_signedUpdateShadowArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedUpdateShadowArgument },
1349 { 0, NULL, 0, 0, 0, NULL }
1353 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_) {
1354 offset = dissect_ber_choice(actx, tree, tvb, offset,
1355 UpdateShadowArgument_choice, hf_index, ett_disp_UpdateShadowArgument,
1362 static const value_string disp_UpdateShadowResult_vals[] = {
1364 { 1, "information" },
1368 static const ber_choice_t UpdateShadowResult_choice[] = {
1369 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1370 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
1371 { 0, NULL, 0, 0, 0, NULL }
1375 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_) {
1376 #line 88 "../../asn1/disp/disp.cnf"
1379 offset = dissect_ber_choice(actx, tree, tvb, offset,
1380 UpdateShadowResult_choice, hf_index, ett_disp_UpdateShadowResult,
1384 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_UpdateShadowResult_vals, "unknown(%d)"));
1392 static const value_string disp_ShadowProblem_vals[] = {
1393 { 1, "invalidAgreementID" },
1394 { 2, "inactiveAgreement" },
1395 { 3, "invalidInformationReceived" },
1396 { 4, "unsupportedStrategy" },
1397 { 5, "missedPrevious" },
1398 { 6, "fullUpdateRequired" },
1399 { 7, "unwillingToPerform" },
1400 { 8, "unsuitableTiming" },
1401 { 9, "updateAlreadyReceived" },
1402 { 10, "invalidSequencing" },
1403 { 11, "insufficientResources" },
1409 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_) {
1410 #line 98 "../../asn1/disp/disp.cnf"
1413 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1417 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, disp_ShadowProblem_vals, "ShadowProblem(%d)"));
1424 static const ber_sequence_t ShadowErrorData_sequence[] = {
1425 { &hf_disp_problem , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowProblem },
1426 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1427 { &hf_disp_updateWindow , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_UpdateWindow },
1428 { &hf_disp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dap_SecurityParameters },
1429 { &hf_disp_performer , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509if_DistinguishedName },
1430 { &hf_disp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1431 { &hf_disp_notification , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_Attribute },
1432 { NULL, 0, 0, 0, NULL }
1436 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_) {
1437 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1438 ShadowErrorData_sequence, hf_index, ett_disp_ShadowErrorData);
1444 static const ber_sequence_t T_signedShadowError_sequence[] = {
1445 { &hf_disp_shadowError , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowErrorData },
1446 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1447 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
1448 { NULL, 0, 0, 0, NULL }
1452 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_) {
1453 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1454 T_signedShadowError_sequence, hf_index, ett_disp_T_signedShadowError);
1460 static const value_string disp_ShadowError_vals[] = {
1461 { 0, "unsignedShadowError" },
1462 { 1, "signedShadowError" },
1466 static const ber_choice_t ShadowError_choice[] = {
1467 { 0, &hf_disp_unsignedShadowError, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowErrorData },
1468 { 1, &hf_disp_signedShadowError, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_T_signedShadowError },
1469 { 0, NULL, 0, 0, 0, NULL }
1473 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_) {
1474 offset = dissect_ber_choice(actx, tree, tvb, offset,
1475 ShadowError_choice, hf_index, ett_disp_ShadowError,
1483 static void dissect_EstablishParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1484 asn1_ctx_t asn1_ctx;
1485 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1486 dissect_disp_EstablishParameter(FALSE, tvb, 0, &asn1_ctx, tree, hf_disp_EstablishParameter_PDU);
1488 static void dissect_ModificationParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1489 asn1_ctx_t asn1_ctx;
1490 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1491 dissect_disp_ModificationParameter(FALSE, tvb, 0, &asn1_ctx, tree, hf_disp_ModificationParameter_PDU);
1493 static void dissect_ShadowingAgreementInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1494 asn1_ctx_t asn1_ctx;
1495 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1496 dissect_disp_ShadowingAgreementInfo(FALSE, tvb, 0, &asn1_ctx, tree, hf_disp_ShadowingAgreementInfo_PDU);
1500 /*--- End of included file: packet-disp-fn.c ---*/
1501 #line 75 "../../asn1/disp/packet-disp-template.c"
1504 * Dissect DISP PDUs inside a ROS PDUs
1507 dissect_disp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1511 proto_item *item=NULL;
1512 proto_tree *tree=NULL;
1513 int (*disp_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) = NULL;
1515 asn1_ctx_t asn1_ctx;
1517 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1519 /* do we have operation information from the ROS dissector? */
1520 if( !pinfo->private_data ){
1522 proto_tree_add_text(parent_tree, tvb, offset, -1,
1523 "Internal error: can't get operation information from ROS dissector.");
1527 session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
1531 item = proto_tree_add_item(parent_tree, proto_disp, tvb, 0, -1, FALSE);
1532 tree = proto_item_add_subtree(item, ett_disp);
1534 col_set_str(pinfo->cinfo, COL_PROTOCOL, "DISP");
1535 col_clear(pinfo->cinfo, COL_INFO);
1537 switch(session->ros_op & ROS_OP_MASK) {
1538 case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
1539 disp_dissector = dissect_disp_DSAShadowBindArgument;
1540 disp_op_name = "Shadow-Bind-Argument";
1542 case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
1543 disp_dissector = dissect_disp_DSAShadowBindResult;
1544 disp_op_name = "Shadow-Bind-Result";
1546 case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
1547 disp_dissector = dissect_disp_DSAShadowBindError;
1548 disp_op_name = "Shadow-Bind-Error";
1550 case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
1551 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1552 case 1: /* requestShadowUpdate */
1553 disp_dissector = dissect_disp_RequestShadowUpdateArgument;
1554 disp_op_name = "Request-Shadow-Update-Argument";
1556 case 2: /* updateShadow*/
1557 disp_dissector = dissect_disp_UpdateShadowArgument;
1558 disp_op_name = "Update-Shadow-Argument";
1560 case 3: /* coordinateShadowUpdate */
1561 disp_dissector = dissect_disp_CoordinateShadowUpdateArgument;
1562 disp_op_name = "Coordinate-Shadow-Update-Argument";
1565 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode (%d)",
1566 session->ros_op & ROS_OP_OPCODE_MASK);
1570 case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
1571 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1572 case 1: /* requestShadowUpdate */
1573 disp_dissector = dissect_disp_RequestShadowUpdateResult;
1574 disp_op_name = "Request-Shadow-Result";
1576 case 2: /* updateShadow */
1577 disp_dissector = dissect_disp_UpdateShadowResult;
1578 disp_op_name = "Update-Shadow-Result";
1580 case 3: /* coordinateShadowUpdate */
1581 disp_dissector = dissect_disp_CoordinateShadowUpdateResult;
1582 disp_op_name = "Coordinate-Shadow-Update-Result";
1585 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode (%d)",
1586 session->ros_op & ROS_OP_OPCODE_MASK);
1590 case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
1591 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1592 case 1: /* shadowError */
1593 disp_dissector = dissect_disp_ShadowError;
1594 disp_op_name = "Shadow-Error";
1597 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP errcode (%d)",
1598 session->ros_op & ROS_OP_OPCODE_MASK);
1603 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP PDU");
1607 if(disp_dissector) {
1608 col_set_str(pinfo->cinfo, COL_INFO, disp_op_name);
1610 while (tvb_reported_length_remaining(tvb, offset) > 0){
1612 offset=(*disp_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
1613 if(offset == old_offset){
1614 proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DISP PDU");
1615 offset = tvb_length(tvb);
1623 /*--- proto_register_disp -------------------------------------------*/
1624 void proto_register_disp(void) {
1626 /* List of fields */
1627 static hf_register_info hf[] =
1630 /*--- Included file: packet-disp-hfarr.c ---*/
1631 #line 1 "../../asn1/disp/packet-disp-hfarr.c"
1632 { &hf_disp_EstablishParameter_PDU,
1633 { "EstablishParameter", "disp.EstablishParameter",
1634 FT_NONE, BASE_NONE, NULL, 0,
1636 { &hf_disp_ModificationParameter_PDU,
1637 { "ModificationParameter", "disp.ModificationParameter",
1638 FT_NONE, BASE_NONE, NULL, 0,
1640 { &hf_disp_ShadowingAgreementInfo_PDU,
1641 { "ShadowingAgreementInfo", "disp.ShadowingAgreementInfo",
1642 FT_NONE, BASE_NONE, NULL, 0,
1644 { &hf_disp_modifiedSecondaryShadows,
1645 { "secondaryShadows", "disp.secondaryShadows",
1646 FT_UINT32, BASE_DEC, NULL, 0,
1647 "SET_OF_SupplierAndConsumers", HFILL }},
1648 { &hf_disp_modifiedSecondaryShadows_item,
1649 { "SupplierAndConsumers", "disp.SupplierAndConsumers",
1650 FT_NONE, BASE_NONE, NULL, 0,
1652 { &hf_disp_shadowSubject,
1653 { "shadowSubject", "disp.shadowSubject",
1654 FT_NONE, BASE_NONE, NULL, 0,
1655 "UnitOfReplication", HFILL }},
1656 { &hf_disp_updateMode,
1657 { "updateMode", "disp.updateMode",
1658 FT_UINT32, BASE_DEC, VALS(disp_UpdateMode_vals), 0,
1661 { "master", "disp.master",
1662 FT_NONE, BASE_NONE, NULL, 0,
1663 "AccessPoint", HFILL }},
1664 { &hf_disp_secondaryShadows,
1665 { "secondaryShadows", "disp.secondaryShadows",
1666 FT_BOOLEAN, BASE_NONE, NULL, 0,
1667 "BOOLEAN", HFILL }},
1669 { "area", "disp.area",
1670 FT_NONE, BASE_NONE, NULL, 0,
1671 "AreaSpecification", HFILL }},
1672 { &hf_disp_replication_attributes,
1673 { "attributes", "disp.attributes",
1674 FT_UINT32, BASE_DEC, NULL, 0,
1675 "AttributeSelection", HFILL }},
1676 { &hf_disp_knowledge,
1677 { "knowledge", "disp.knowledge",
1678 FT_NONE, BASE_NONE, NULL, 0,
1680 { &hf_disp_subordinates,
1681 { "subordinates", "disp.subordinates",
1682 FT_BOOLEAN, BASE_NONE, NULL, 0,
1683 "BOOLEAN", HFILL }},
1684 { &hf_disp_contextSelection,
1685 { "contextSelection", "disp.contextSelection",
1686 FT_UINT32, BASE_DEC, VALS(dap_ContextSelection_vals), 0,
1688 { &hf_disp_supplyContexts,
1689 { "supplyContexts", "disp.supplyContexts",
1690 FT_UINT32, BASE_DEC, VALS(disp_T_supplyContexts_vals), 0,
1692 { &hf_disp_allContexts,
1693 { "allContexts", "disp.allContexts",
1694 FT_NONE, BASE_NONE, NULL, 0,
1696 { &hf_disp_selectedContexts,
1697 { "selectedContexts", "disp.selectedContexts",
1698 FT_UINT32, BASE_DEC, NULL, 0,
1700 { &hf_disp_selectedContexts_item,
1701 { "selectedContexts item", "disp.selectedContexts_item",
1702 FT_OID, BASE_NONE, NULL, 0,
1703 "OBJECT_IDENTIFIER", HFILL }},
1704 { &hf_disp_contextPrefix,
1705 { "contextPrefix", "disp.contextPrefix",
1706 FT_UINT32, BASE_DEC, NULL, 0,
1707 "DistinguishedName", HFILL }},
1708 { &hf_disp_replicationArea,
1709 { "replicationArea", "disp.replicationArea",
1710 FT_NONE, BASE_NONE, NULL, 0,
1711 "SubtreeSpecification", HFILL }},
1712 { &hf_disp_knowledgeType,
1713 { "knowledgeType", "disp.knowledgeType",
1714 FT_UINT32, BASE_DEC, VALS(disp_T_knowledgeType_vals), 0,
1716 { &hf_disp_extendedKnowledge,
1717 { "extendedKnowledge", "disp.extendedKnowledge",
1718 FT_BOOLEAN, BASE_NONE, NULL, 0,
1719 "BOOLEAN", HFILL }},
1720 { &hf_disp_AttributeSelection_item,
1721 { "ClassAttributeSelection", "disp.ClassAttributeSelection",
1722 FT_NONE, BASE_NONE, NULL, 0,
1725 { "class", "disp.class",
1726 FT_OID, BASE_NONE, NULL, 0,
1727 "OBJECT_IDENTIFIER", HFILL }},
1728 { &hf_disp_classAttributes,
1729 { "classAttributes", "disp.classAttributes",
1730 FT_UINT32, BASE_DEC, VALS(disp_ClassAttributes_vals), 0,
1732 { &hf_disp_allAttributes,
1733 { "allAttributes", "disp.allAttributes",
1734 FT_NONE, BASE_NONE, NULL, 0,
1737 { "include", "disp.include",
1738 FT_UINT32, BASE_DEC, NULL, 0,
1739 "AttributeTypes", HFILL }},
1741 { "exclude", "disp.exclude",
1742 FT_UINT32, BASE_DEC, NULL, 0,
1743 "AttributeTypes", HFILL }},
1744 { &hf_disp_AttributeTypes_item,
1745 { "AttributeType", "disp.AttributeType",
1746 FT_OID, BASE_NONE, NULL, 0,
1748 { &hf_disp_supplierInitiated,
1749 { "supplierInitiated", "disp.supplierInitiated",
1750 FT_UINT32, BASE_DEC, VALS(disp_SupplierUpdateMode_vals), 0,
1751 "SupplierUpdateMode", HFILL }},
1752 { &hf_disp_consumerInitiated,
1753 { "consumerInitiated", "disp.consumerInitiated",
1754 FT_NONE, BASE_NONE, NULL, 0,
1755 "ConsumerUpdateMode", HFILL }},
1756 { &hf_disp_onChange,
1757 { "onChange", "disp.onChange",
1758 FT_BOOLEAN, BASE_NONE, NULL, 0,
1759 "BOOLEAN", HFILL }},
1760 { &hf_disp_scheduled,
1761 { "scheduled", "disp.scheduled",
1762 FT_NONE, BASE_NONE, NULL, 0,
1763 "SchedulingParameters", HFILL }},
1764 { &hf_disp_periodic,
1765 { "periodic", "disp.periodic",
1766 FT_NONE, BASE_NONE, NULL, 0,
1767 "PeriodicStrategy", HFILL }},
1768 { &hf_disp_othertimes,
1769 { "othertimes", "disp.othertimes",
1770 FT_BOOLEAN, BASE_NONE, NULL, 0,
1771 "BOOLEAN", HFILL }},
1772 { &hf_disp_beginTime,
1773 { "beginTime", "disp.beginTime",
1774 FT_STRING, BASE_NONE, NULL, 0,
1776 { &hf_disp_windowSize,
1777 { "windowSize", "disp.windowSize",
1778 FT_INT32, BASE_DEC, NULL, 0,
1779 "INTEGER", HFILL }},
1780 { &hf_disp_updateInterval,
1781 { "updateInterval", "disp.updateInterval",
1782 FT_INT32, BASE_DEC, NULL, 0,
1783 "INTEGER", HFILL }},
1784 { &hf_disp_agreementID,
1785 { "agreementID", "disp.agreementID",
1786 FT_NONE, BASE_NONE, NULL, 0,
1788 { &hf_disp_lastUpdate,
1789 { "lastUpdate", "disp.lastUpdate",
1790 FT_STRING, BASE_NONE, NULL, 0,
1792 { &hf_disp_updateStrategy,
1793 { "updateStrategy", "disp.updateStrategy",
1794 FT_UINT32, BASE_DEC, VALS(disp_T_updateStrategy_vals), 0,
1796 { &hf_disp_standardUpdate,
1797 { "standard", "disp.standard",
1798 FT_UINT32, BASE_DEC, VALS(disp_StandardUpdate_vals), 0,
1799 "StandardUpdate", HFILL }},
1801 { "other", "disp.other",
1802 FT_NONE, BASE_NONE, NULL, 0,
1803 "EXTERNAL", HFILL }},
1804 { &hf_disp_securityParameters,
1805 { "securityParameters", "disp.securityParameters",
1806 FT_NONE, BASE_NONE, NULL, 0,
1808 { &hf_disp_unsignedCoordinateShadowUpdateArgument,
1809 { "unsignedCoordinateShadowUpdateArgument", "disp.unsignedCoordinateShadowUpdateArgument",
1810 FT_NONE, BASE_NONE, NULL, 0,
1811 "CoordinateShadowUpdateArgumentData", HFILL }},
1812 { &hf_disp_signedCoordinateShadowUpdateArgument,
1813 { "signedCoordinateShadowUpdateArgument", "disp.signedCoordinateShadowUpdateArgument",
1814 FT_NONE, BASE_NONE, NULL, 0,
1816 { &hf_disp_coordinateShadowUpdateArgument,
1817 { "coordinateShadowUpdateArgument", "disp.coordinateShadowUpdateArgument",
1818 FT_NONE, BASE_NONE, NULL, 0,
1819 "CoordinateShadowUpdateArgumentData", HFILL }},
1820 { &hf_disp_algorithmIdentifier,
1821 { "algorithmIdentifier", "disp.algorithmIdentifier",
1822 FT_NONE, BASE_NONE, NULL, 0,
1824 { &hf_disp_encrypted,
1825 { "encrypted", "disp.encrypted",
1826 FT_BYTES, BASE_NONE, NULL, 0,
1827 "BIT_STRING", HFILL }},
1829 { "null", "disp.null",
1830 FT_NONE, BASE_NONE, NULL, 0,
1832 { &hf_disp_information,
1833 { "information", "disp.information",
1834 FT_UINT32, BASE_DEC, VALS(disp_Information_vals), 0,
1836 { &hf_disp_performer,
1837 { "performer", "disp.performer",
1838 FT_UINT32, BASE_DEC, NULL, 0,
1839 "DistinguishedName", HFILL }},
1840 { &hf_disp_aliasDereferenced,
1841 { "aliasDereferenced", "disp.aliasDereferenced",
1842 FT_BOOLEAN, BASE_NONE, NULL, 0,
1843 "BOOLEAN", HFILL }},
1844 { &hf_disp_notification,
1845 { "notification", "disp.notification",
1846 FT_UINT32, BASE_DEC, NULL, 0,
1847 "SEQUENCE_OF_Attribute", HFILL }},
1848 { &hf_disp_notification_item,
1849 { "Attribute", "disp.Attribute",
1850 FT_NONE, BASE_NONE, NULL, 0,
1852 { &hf_disp_unsignedInformation,
1853 { "unsignedInformation", "disp.unsignedInformation",
1854 FT_NONE, BASE_NONE, NULL, 0,
1855 "InformationData", HFILL }},
1856 { &hf_disp_signedInformation,
1857 { "signedInformation", "disp.signedInformation",
1858 FT_NONE, BASE_NONE, NULL, 0,
1860 { &hf_disp_information_data,
1861 { "information", "disp.information",
1862 FT_NONE, BASE_NONE, NULL, 0,
1863 "InformationData", HFILL }},
1864 { &hf_disp_requestedStrategy,
1865 { "requestedStrategy", "disp.requestedStrategy",
1866 FT_UINT32, BASE_DEC, VALS(disp_T_requestedStrategy_vals), 0,
1868 { &hf_disp_standard,
1869 { "standard", "disp.standard",
1870 FT_UINT32, BASE_DEC, VALS(disp_T_standard_vals), 0,
1872 { &hf_disp_unsignedRequestShadowUpdateArgument,
1873 { "unsignedRequestShadowUpdateArgument", "disp.unsignedRequestShadowUpdateArgument",
1874 FT_NONE, BASE_NONE, NULL, 0,
1875 "RequestShadowUpdateArgumentData", HFILL }},
1876 { &hf_disp_signedRequestShadowUpdateArgument,
1877 { "signedRequestShadowUpdateArgument", "disp.signedRequestShadowUpdateArgument",
1878 FT_NONE, BASE_NONE, NULL, 0,
1880 { &hf_disp_requestShadowUpdateArgument,
1881 { "requestShadowUpdateArgument", "disp.requestShadowUpdateArgument",
1882 FT_NONE, BASE_NONE, NULL, 0,
1883 "RequestShadowUpdateArgumentData", HFILL }},
1884 { &hf_disp_updateTime,
1885 { "updateTime", "disp.updateTime",
1886 FT_STRING, BASE_NONE, NULL, 0,
1888 { &hf_disp_updateWindow,
1889 { "updateWindow", "disp.updateWindow",
1890 FT_NONE, BASE_NONE, NULL, 0,
1892 { &hf_disp_updatedInfo,
1893 { "updatedInfo", "disp.updatedInfo",
1894 FT_UINT32, BASE_DEC, VALS(disp_RefreshInformation_vals), 0,
1895 "RefreshInformation", HFILL }},
1896 { &hf_disp_unsignedUpdateShadowArgument,
1897 { "unsignedUpdateShadowArgument", "disp.unsignedUpdateShadowArgument",
1898 FT_NONE, BASE_NONE, NULL, 0,
1899 "UpdateShadowArgumentData", HFILL }},
1900 { &hf_disp_signedUpdateShadowArgument,
1901 { "signedUpdateShadowArgument", "disp.signedUpdateShadowArgument",
1902 FT_NONE, BASE_NONE, NULL, 0,
1904 { &hf_disp_updateShadowArgument,
1905 { "updateShadowArgument", "disp.updateShadowArgument",
1906 FT_NONE, BASE_NONE, NULL, 0,
1907 "UpdateShadowArgumentData", HFILL }},
1909 { "start", "disp.start",
1910 FT_STRING, BASE_NONE, NULL, 0,
1913 { "stop", "disp.stop",
1914 FT_STRING, BASE_NONE, NULL, 0,
1916 { &hf_disp_noRefresh,
1917 { "noRefresh", "disp.noRefresh",
1918 FT_NONE, BASE_NONE, NULL, 0,
1921 { "total", "disp.total",
1922 FT_NONE, BASE_NONE, NULL, 0,
1923 "TotalRefresh", HFILL }},
1924 { &hf_disp_incremental,
1925 { "incremental", "disp.incremental",
1926 FT_UINT32, BASE_DEC, NULL, 0,
1927 "IncrementalRefresh", HFILL }},
1928 { &hf_disp_otherStrategy,
1929 { "otherStrategy", "disp.otherStrategy",
1930 FT_NONE, BASE_NONE, NULL, 0,
1931 "EXTERNAL", HFILL }},
1933 { "sDSE", "disp.sDSE",
1934 FT_NONE, BASE_NONE, NULL, 0,
1935 "SDSEContent", HFILL }},
1937 { "subtree", "disp.subtree",
1938 FT_UINT32, BASE_DEC, NULL, 0,
1939 "SET_OF_Subtree", HFILL }},
1940 { &hf_disp_subtree_item,
1941 { "Subtree", "disp.Subtree",
1942 FT_NONE, BASE_NONE, NULL, 0,
1944 { &hf_disp_sDSEType,
1945 { "sDSEType", "disp.sDSEType",
1946 FT_BYTES, BASE_NONE, NULL, 0,
1948 { &hf_disp_subComplete,
1949 { "subComplete", "disp.subComplete",
1950 FT_BOOLEAN, BASE_NONE, NULL, 0,
1951 "BOOLEAN", HFILL }},
1952 { &hf_disp_attComplete,
1953 { "attComplete", "disp.attComplete",
1954 FT_BOOLEAN, BASE_NONE, NULL, 0,
1955 "BOOLEAN", HFILL }},
1956 { &hf_disp_attributes,
1957 { "attributes", "disp.attributes",
1958 FT_UINT32, BASE_DEC, NULL, 0,
1959 "SET_OF_Attribute", HFILL }},
1960 { &hf_disp_attributes_item,
1961 { "Attribute", "disp.Attribute",
1962 FT_NONE, BASE_NONE, NULL, 0,
1964 { &hf_disp_attValIncomplete,
1965 { "attValIncomplete", "disp.attValIncomplete",
1966 FT_UINT32, BASE_DEC, NULL, 0,
1967 "SET_OF_AttributeType", HFILL }},
1968 { &hf_disp_attValIncomplete_item,
1969 { "AttributeType", "disp.AttributeType",
1970 FT_OID, BASE_NONE, NULL, 0,
1973 { "rdn", "disp.rdn",
1974 FT_UINT32, BASE_DEC, NULL, 0,
1975 "RelativeDistinguishedName", HFILL }},
1976 { &hf_disp_IncrementalRefresh_item,
1977 { "IncrementalStepRefresh", "disp.IncrementalStepRefresh",
1978 FT_NONE, BASE_NONE, NULL, 0,
1980 { &hf_disp_sDSEChanges,
1981 { "sDSEChanges", "disp.sDSEChanges",
1982 FT_UINT32, BASE_DEC, VALS(disp_T_sDSEChanges_vals), 0,
1985 { "add", "disp.add",
1986 FT_NONE, BASE_NONE, NULL, 0,
1987 "SDSEContent", HFILL }},
1989 { "remove", "disp.remove",
1990 FT_NONE, BASE_NONE, NULL, 0,
1993 { "modify", "disp.modify",
1994 FT_NONE, BASE_NONE, NULL, 0,
1995 "ContentChange", HFILL }},
1996 { &hf_disp_subordinateUpdates,
1997 { "subordinateUpdates", "disp.subordinateUpdates",
1998 FT_UINT32, BASE_DEC, NULL, 0,
1999 "SEQUENCE_OF_SubordinateChanges", HFILL }},
2000 { &hf_disp_subordinateUpdates_item,
2001 { "SubordinateChanges", "disp.SubordinateChanges",
2002 FT_NONE, BASE_NONE, NULL, 0,
2005 { "rename", "disp.rename",
2006 FT_UINT32, BASE_DEC, VALS(disp_T_rename_vals), 0,
2009 { "newRDN", "disp.newRDN",
2010 FT_UINT32, BASE_DEC, NULL, 0,
2011 "RelativeDistinguishedName", HFILL }},
2013 { "newDN", "disp.newDN",
2014 FT_UINT32, BASE_DEC, NULL, 0,
2015 "DistinguishedName", HFILL }},
2016 { &hf_disp_attributeChanges,
2017 { "attributeChanges", "disp.attributeChanges",
2018 FT_UINT32, BASE_DEC, VALS(disp_T_attributeChanges_vals), 0,
2021 { "replace", "disp.replace",
2022 FT_UINT32, BASE_DEC, NULL, 0,
2023 "SET_OF_Attribute", HFILL }},
2024 { &hf_disp_replace_item,
2025 { "Attribute", "disp.Attribute",
2026 FT_NONE, BASE_NONE, NULL, 0,
2029 { "changes", "disp.changes",
2030 FT_UINT32, BASE_DEC, NULL, 0,
2031 "SEQUENCE_OF_EntryModification", HFILL }},
2032 { &hf_disp_changes_item,
2033 { "EntryModification", "disp.EntryModification",
2034 FT_UINT32, BASE_DEC, VALS(dap_EntryModification_vals), 0,
2036 { &hf_disp_subordinate,
2037 { "subordinate", "disp.subordinate",
2038 FT_UINT32, BASE_DEC, NULL, 0,
2039 "RelativeDistinguishedName", HFILL }},
2040 { &hf_disp_subordinate_changes,
2041 { "changes", "disp.changes",
2042 FT_NONE, BASE_NONE, NULL, 0,
2043 "IncrementalStepRefresh", HFILL }},
2045 { "problem", "disp.problem",
2046 FT_INT32, BASE_DEC, VALS(disp_ShadowProblem_vals), 0,
2047 "ShadowProblem", HFILL }},
2048 { &hf_disp_unsignedShadowError,
2049 { "unsignedShadowError", "disp.unsignedShadowError",
2050 FT_NONE, BASE_NONE, NULL, 0,
2051 "ShadowErrorData", HFILL }},
2052 { &hf_disp_signedShadowError,
2053 { "signedShadowError", "disp.signedShadowError",
2054 FT_NONE, BASE_NONE, NULL, 0,
2056 { &hf_disp_shadowError,
2057 { "shadowError", "disp.shadowError",
2058 FT_NONE, BASE_NONE, NULL, 0,
2059 "ShadowErrorData", HFILL }},
2061 /*--- End of included file: packet-disp-hfarr.c ---*/
2062 #line 203 "../../asn1/disp/packet-disp-template.c"
2065 /* List of subtrees */
2066 static gint *ett[] = {
2069 /*--- Included file: packet-disp-ettarr.c ---*/
2070 #line 1 "../../asn1/disp/packet-disp-ettarr.c"
2071 &ett_disp_ModificationParameter,
2072 &ett_disp_SET_OF_SupplierAndConsumers,
2073 &ett_disp_ShadowingAgreementInfo,
2074 &ett_disp_UnitOfReplication,
2075 &ett_disp_T_supplyContexts,
2076 &ett_disp_T_selectedContexts,
2077 &ett_disp_AreaSpecification,
2078 &ett_disp_Knowledge,
2079 &ett_disp_AttributeSelection,
2080 &ett_disp_ClassAttributeSelection,
2081 &ett_disp_ClassAttributes,
2082 &ett_disp_AttributeTypes,
2083 &ett_disp_UpdateMode,
2084 &ett_disp_SupplierUpdateMode,
2085 &ett_disp_SchedulingParameters,
2086 &ett_disp_PeriodicStrategy,
2087 &ett_disp_CoordinateShadowUpdateArgumentData,
2088 &ett_disp_T_updateStrategy,
2089 &ett_disp_CoordinateShadowUpdateArgument,
2090 &ett_disp_T_signedCoordinateShadowUpdateArgument,
2091 &ett_disp_CoordinateShadowUpdateResult,
2092 &ett_disp_InformationData,
2093 &ett_disp_SEQUENCE_OF_Attribute,
2094 &ett_disp_Information,
2095 &ett_disp_T_signedInformation,
2096 &ett_disp_RequestShadowUpdateArgumentData,
2097 &ett_disp_T_requestedStrategy,
2098 &ett_disp_RequestShadowUpdateArgument,
2099 &ett_disp_T_signedRequestShadowUpdateArgument,
2100 &ett_disp_RequestShadowUpdateResult,
2101 &ett_disp_UpdateShadowArgumentData,
2102 &ett_disp_UpdateShadowArgument,
2103 &ett_disp_T_signedUpdateShadowArgument,
2104 &ett_disp_UpdateShadowResult,
2105 &ett_disp_UpdateWindow,
2106 &ett_disp_RefreshInformation,
2107 &ett_disp_TotalRefresh,
2108 &ett_disp_SET_OF_Subtree,
2109 &ett_disp_SDSEContent,
2110 &ett_disp_SET_OF_Attribute,
2111 &ett_disp_SET_OF_AttributeType,
2113 &ett_disp_IncrementalRefresh,
2114 &ett_disp_IncrementalStepRefresh,
2115 &ett_disp_T_sDSEChanges,
2116 &ett_disp_SEQUENCE_OF_SubordinateChanges,
2117 &ett_disp_ContentChange,
2119 &ett_disp_T_attributeChanges,
2120 &ett_disp_SEQUENCE_OF_EntryModification,
2121 &ett_disp_SubordinateChanges,
2122 &ett_disp_ShadowErrorData,
2123 &ett_disp_ShadowError,
2124 &ett_disp_T_signedShadowError,
2126 /*--- End of included file: packet-disp-ettarr.c ---*/
2127 #line 209 "../../asn1/disp/packet-disp-template.c"
2129 module_t *disp_module;
2131 /* Register protocol */
2132 proto_disp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2133 register_dissector("disp", dissect_disp, proto_disp);
2135 /* Register fields and subtrees */
2136 proto_register_field_array(proto_disp, hf, array_length(hf));
2137 proto_register_subtree_array(ett, array_length(ett));
2139 /* Register our configuration options for DISP, particularly our port */
2141 disp_module = prefs_register_protocol_subtree("OSI/X.500", proto_disp, prefs_register_disp);
2143 prefs_register_uint_preference(disp_module, "tcp.port", "DISP TCP Port",
2144 "Set the port for DISP operations (if other"
2145 " than the default of 102)",
2146 10, &global_disp_tcp_port);
2151 /*--- proto_reg_handoff_disp --- */
2152 void proto_reg_handoff_disp(void) {
2153 dissector_handle_t disp_handle;
2156 /*--- Included file: packet-disp-dis-tab.c ---*/
2157 #line 1 "../../asn1/disp/packet-disp-dis-tab.c"
2158 dissector_add_string("dop.oid", "agreement.2.5.19.1", create_dissector_handle(dissect_ShadowingAgreementInfo_PDU, proto_disp));
2159 dissector_add_string("dop.oid", "establish.rolea.2.5.19.1", create_dissector_handle(dissect_EstablishParameter_PDU, proto_disp));
2160 dissector_add_string("dop.oid", "establish.roleb.2.5.19.1", create_dissector_handle(dissect_EstablishParameter_PDU, proto_disp));
2161 dissector_add_string("dop.oid", "modify.rolea.2.5.19.1", create_dissector_handle(dissect_ModificationParameter_PDU, proto_disp));
2162 dissector_add_string("dop.oid", "modify.roleb.2.5.19.1", create_dissector_handle(dissect_ModificationParameter_PDU, proto_disp));
2165 /*--- End of included file: packet-disp-dis-tab.c ---*/
2166 #line 237 "../../asn1/disp/packet-disp-template.c"
2168 /* APPLICATION CONTEXT */
2170 oid_add_from_string("id-ac-shadow-consumer-initiated","2.5.3.4");
2171 oid_add_from_string("id-ac-shadow-supplier-initiated","2.5.3.5");
2172 oid_add_from_string("id-ac-reliable-shadow-consumer-initiated","2.5.3.6");
2173 oid_add_from_string("id-ac-reliable-shadow-supplier-initiated","2.5.3.7");
2175 /* ABSTRACT SYNTAXES */
2177 disp_handle = find_dissector("disp");
2179 register_ros_oid_dissector_handle("2.5.9.3", disp_handle, 0, "id-as-directory-shadow", FALSE);
2180 register_rtse_oid_dissector_handle("2.5.9.5", disp_handle, 0, "id-as-directory-reliable-shadow", FALSE);
2181 register_rtse_oid_dissector_handle("2.5.9.6", disp_handle, 0, "id-as-directory-reliable-binding", FALSE);
2183 /* OPERATIONAL BINDING */
2184 oid_add_from_string("id-op-binding-shadow","2.5.1.0.5.1");
2186 tpkt_handle = find_dissector("tpkt");
2189 x509if_register_fmt(hf_disp_contextPrefix, "cp=");
2195 prefs_register_disp(void)
2197 static guint tcp_port = 0;
2199 /* de-register the old port */
2200 /* port 102 is registered by TPKT - don't undo this! */
2201 if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
2202 dissector_delete_uint("tcp.port", tcp_port, tpkt_handle);
2204 /* Set our port number for future use */
2205 tcp_port = global_disp_tcp_port;
2207 if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
2208 dissector_add_uint("tcp.port", global_disp_tcp_port, tpkt_handle);