HACK: pinfo->private_data points to smb_info again
[wireshark-wip.git] / epan / dissectors / packet-disp.c
blob5968e7b7f6eebcf5d72419b3e8d501f83ab3784e
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-disp.c */
4 /* ../../tools/asn2wrs.py -b -p disp -c ./disp.cnf -s ./packet-disp-template -D . -O ../../epan/dissectors disp.asn */
6 /* Input file: packet-disp-template.c */
8 #line 1 "../../asn1/disp/packet-disp-template.c"
9 /* packet-disp.c
10 * Routines for X.525 (X.500 Directory Shadow Asbtract Service) and X.519 DISP packet dissection
11 * Graeme Lunt 2005
13 * $Id$
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
34 #include "config.h"
36 #include <glib.h>
37 #include <epan/packet.h>
38 #include <epan/prefs.h>
39 #include <epan/oids.h>
40 #include <epan/asn1.h>
42 #include "packet-ber.h"
43 #include "packet-acse.h"
44 #include "packet-ros.h"
45 #include "packet-rtse.h"
47 #include "packet-x509if.h"
48 #include "packet-x509af.h"
49 #include "packet-x509sat.h"
50 #include "packet-crmf.h"
52 #include "packet-dop.h"
53 #include "packet-dap.h"
54 #include "packet-dsp.h"
55 #include "packet-disp.h"
58 /* we don't have a separate dissector for X519 -
59 and most of DISP is defined in X525 */
60 #define PNAME "X.519 Directory Information Shadowing Protocol"
61 #define PSNAME "DISP"
62 #define PFNAME "disp"
64 static guint global_disp_tcp_port = 102;
65 static dissector_handle_t tpkt_handle;
66 static void prefs_register_disp(void); /* forward declaration for use in preferences registration */
69 /* Initialize the protocol and registered fields */
70 static int proto_disp = -1;
73 /*--- Included file: packet-disp-hf.c ---*/
74 #line 1 "../../asn1/disp/packet-disp-hf.c"
75 static int hf_disp_EstablishParameter_PDU = -1; /* EstablishParameter */
76 static int hf_disp_ModificationParameter_PDU = -1; /* ModificationParameter */
77 static int hf_disp_ShadowingAgreementInfo_PDU = -1; /* ShadowingAgreementInfo */
78 static int hf_disp_modifiedSecondaryShadows = -1; /* SET_OF_SupplierAndConsumers */
79 static int hf_disp_modifiedSecondaryShadows_item = -1; /* SupplierAndConsumers */
80 static int hf_disp_shadowSubject = -1; /* UnitOfReplication */
81 static int hf_disp_updateMode = -1; /* UpdateMode */
82 static int hf_disp_master = -1; /* AccessPoint */
83 static int hf_disp_secondaryShadows = -1; /* BOOLEAN */
84 static int hf_disp_area = -1; /* AreaSpecification */
85 static int hf_disp_replication_attributes = -1; /* AttributeSelection */
86 static int hf_disp_knowledge = -1; /* Knowledge */
87 static int hf_disp_subordinates = -1; /* BOOLEAN */
88 static int hf_disp_contextSelection = -1; /* ContextSelection */
89 static int hf_disp_supplyContexts = -1; /* T_supplyContexts */
90 static int hf_disp_allContexts = -1; /* NULL */
91 static int hf_disp_selectedContexts = -1; /* T_selectedContexts */
92 static int hf_disp_selectedContexts_item = -1; /* OBJECT_IDENTIFIER */
93 static int hf_disp_contextPrefix = -1; /* DistinguishedName */
94 static int hf_disp_replicationArea = -1; /* SubtreeSpecification */
95 static int hf_disp_knowledgeType = -1; /* T_knowledgeType */
96 static int hf_disp_extendedKnowledge = -1; /* BOOLEAN */
97 static int hf_disp_AttributeSelection_item = -1; /* ClassAttributeSelection */
98 static int hf_disp_class = -1; /* OBJECT_IDENTIFIER */
99 static int hf_disp_classAttributes = -1; /* ClassAttributes */
100 static int hf_disp_allAttributes = -1; /* NULL */
101 static int hf_disp_include = -1; /* AttributeTypes */
102 static int hf_disp_exclude = -1; /* AttributeTypes */
103 static int hf_disp_AttributeTypes_item = -1; /* AttributeType */
104 static int hf_disp_supplierInitiated = -1; /* SupplierUpdateMode */
105 static int hf_disp_consumerInitiated = -1; /* ConsumerUpdateMode */
106 static int hf_disp_onChange = -1; /* BOOLEAN */
107 static int hf_disp_scheduled = -1; /* SchedulingParameters */
108 static int hf_disp_periodic = -1; /* PeriodicStrategy */
109 static int hf_disp_othertimes = -1; /* BOOLEAN */
110 static int hf_disp_beginTime = -1; /* Time */
111 static int hf_disp_windowSize = -1; /* INTEGER */
112 static int hf_disp_updateInterval = -1; /* INTEGER */
113 static int hf_disp_agreementID = -1; /* AgreementID */
114 static int hf_disp_lastUpdate = -1; /* Time */
115 static int hf_disp_updateStrategy = -1; /* T_updateStrategy */
116 static int hf_disp_standardUpdate = -1; /* StandardUpdate */
117 static int hf_disp_other = -1; /* EXTERNAL */
118 static int hf_disp_securityParameters = -1; /* SecurityParameters */
119 static int hf_disp_unsignedCoordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
120 static int hf_disp_signedCoordinateShadowUpdateArgument = -1; /* T_signedCoordinateShadowUpdateArgument */
121 static int hf_disp_coordinateShadowUpdateArgument = -1; /* CoordinateShadowUpdateArgumentData */
122 static int hf_disp_algorithmIdentifier = -1; /* AlgorithmIdentifier */
123 static int hf_disp_encrypted = -1; /* BIT_STRING */
124 static int hf_disp_null = -1; /* NULL */
125 static int hf_disp_information = -1; /* Information */
126 static int hf_disp_performer = -1; /* DistinguishedName */
127 static int hf_disp_aliasDereferenced = -1; /* BOOLEAN */
128 static int hf_disp_notification = -1; /* SEQUENCE_OF_Attribute */
129 static int hf_disp_notification_item = -1; /* Attribute */
130 static int hf_disp_unsignedInformation = -1; /* InformationData */
131 static int hf_disp_signedInformation = -1; /* T_signedInformation */
132 static int hf_disp_information_data = -1; /* InformationData */
133 static int hf_disp_requestedStrategy = -1; /* T_requestedStrategy */
134 static int hf_disp_standard = -1; /* T_standard */
135 static int hf_disp_unsignedRequestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
136 static int hf_disp_signedRequestShadowUpdateArgument = -1; /* T_signedRequestShadowUpdateArgument */
137 static int hf_disp_requestShadowUpdateArgument = -1; /* RequestShadowUpdateArgumentData */
138 static int hf_disp_updateTime = -1; /* Time */
139 static int hf_disp_updateWindow = -1; /* UpdateWindow */
140 static int hf_disp_updatedInfo = -1; /* RefreshInformation */
141 static int hf_disp_unsignedUpdateShadowArgument = -1; /* UpdateShadowArgumentData */
142 static int hf_disp_signedUpdateShadowArgument = -1; /* T_signedUpdateShadowArgument */
143 static int hf_disp_updateShadowArgument = -1; /* UpdateShadowArgumentData */
144 static int hf_disp_start = -1; /* Time */
145 static int hf_disp_stop = -1; /* Time */
146 static int hf_disp_noRefresh = -1; /* NULL */
147 static int hf_disp_total = -1; /* TotalRefresh */
148 static int hf_disp_incremental = -1; /* IncrementalRefresh */
149 static int hf_disp_otherStrategy = -1; /* EXTERNAL */
150 static int hf_disp_sDSE = -1; /* SDSEContent */
151 static int hf_disp_subtree = -1; /* SET_OF_Subtree */
152 static int hf_disp_subtree_item = -1; /* Subtree */
153 static int hf_disp_sDSEType = -1; /* SDSEType */
154 static int hf_disp_subComplete = -1; /* BOOLEAN */
155 static int hf_disp_attComplete = -1; /* BOOLEAN */
156 static int hf_disp_attributes = -1; /* SET_OF_Attribute */
157 static int hf_disp_attributes_item = -1; /* Attribute */
158 static int hf_disp_attValIncomplete = -1; /* SET_OF_AttributeType */
159 static int hf_disp_attValIncomplete_item = -1; /* AttributeType */
160 static int hf_disp_rdn = -1; /* RelativeDistinguishedName */
161 static int hf_disp_IncrementalRefresh_item = -1; /* IncrementalStepRefresh */
162 static int hf_disp_sDSEChanges = -1; /* T_sDSEChanges */
163 static int hf_disp_add = -1; /* SDSEContent */
164 static int hf_disp_remove = -1; /* NULL */
165 static int hf_disp_modify = -1; /* ContentChange */
166 static int hf_disp_subordinateUpdates = -1; /* SEQUENCE_OF_SubordinateChanges */
167 static int hf_disp_subordinateUpdates_item = -1; /* SubordinateChanges */
168 static int hf_disp_rename = -1; /* T_rename */
169 static int hf_disp_newRDN = -1; /* RelativeDistinguishedName */
170 static int hf_disp_newDN = -1; /* DistinguishedName */
171 static int hf_disp_attributeChanges = -1; /* T_attributeChanges */
172 static int hf_disp_replace = -1; /* SET_OF_Attribute */
173 static int hf_disp_replace_item = -1; /* Attribute */
174 static int hf_disp_changes = -1; /* SEQUENCE_OF_EntryModification */
175 static int hf_disp_changes_item = -1; /* EntryModification */
176 static int hf_disp_subordinate = -1; /* RelativeDistinguishedName */
177 static int hf_disp_subordinate_changes = -1; /* IncrementalStepRefresh */
178 static int hf_disp_problem = -1; /* ShadowProblem */
179 static int hf_disp_unsignedShadowError = -1; /* ShadowErrorData */
180 static int hf_disp_signedShadowError = -1; /* T_signedShadowError */
181 static int hf_disp_shadowError = -1; /* ShadowErrorData */
183 /*--- End of included file: packet-disp-hf.c ---*/
184 #line 65 "../../asn1/disp/packet-disp-template.c"
186 /* Initialize the subtree pointers */
187 static gint ett_disp = -1;
189 /*--- Included file: packet-disp-ett.c ---*/
190 #line 1 "../../asn1/disp/packet-disp-ett.c"
191 static gint ett_disp_ModificationParameter = -1;
192 static gint ett_disp_SET_OF_SupplierAndConsumers = -1;
193 static gint ett_disp_ShadowingAgreementInfo = -1;
194 static gint ett_disp_UnitOfReplication = -1;
195 static gint ett_disp_T_supplyContexts = -1;
196 static gint ett_disp_T_selectedContexts = -1;
197 static gint ett_disp_AreaSpecification = -1;
198 static gint ett_disp_Knowledge = -1;
199 static gint ett_disp_AttributeSelection = -1;
200 static gint ett_disp_ClassAttributeSelection = -1;
201 static gint ett_disp_ClassAttributes = -1;
202 static gint ett_disp_AttributeTypes = -1;
203 static gint ett_disp_UpdateMode = -1;
204 static gint ett_disp_SupplierUpdateMode = -1;
205 static gint ett_disp_SchedulingParameters = -1;
206 static gint ett_disp_PeriodicStrategy = -1;
207 static gint ett_disp_CoordinateShadowUpdateArgumentData = -1;
208 static gint ett_disp_T_updateStrategy = -1;
209 static gint ett_disp_CoordinateShadowUpdateArgument = -1;
210 static gint ett_disp_T_signedCoordinateShadowUpdateArgument = -1;
211 static gint ett_disp_CoordinateShadowUpdateResult = -1;
212 static gint ett_disp_InformationData = -1;
213 static gint ett_disp_SEQUENCE_OF_Attribute = -1;
214 static gint ett_disp_Information = -1;
215 static gint ett_disp_T_signedInformation = -1;
216 static gint ett_disp_RequestShadowUpdateArgumentData = -1;
217 static gint ett_disp_T_requestedStrategy = -1;
218 static gint ett_disp_RequestShadowUpdateArgument = -1;
219 static gint ett_disp_T_signedRequestShadowUpdateArgument = -1;
220 static gint ett_disp_RequestShadowUpdateResult = -1;
221 static gint ett_disp_UpdateShadowArgumentData = -1;
222 static gint ett_disp_UpdateShadowArgument = -1;
223 static gint ett_disp_T_signedUpdateShadowArgument = -1;
224 static gint ett_disp_UpdateShadowResult = -1;
225 static gint ett_disp_UpdateWindow = -1;
226 static gint ett_disp_RefreshInformation = -1;
227 static gint ett_disp_TotalRefresh = -1;
228 static gint ett_disp_SET_OF_Subtree = -1;
229 static gint ett_disp_SDSEContent = -1;
230 static gint ett_disp_SET_OF_Attribute = -1;
231 static gint ett_disp_SET_OF_AttributeType = -1;
232 static gint ett_disp_Subtree = -1;
233 static gint ett_disp_IncrementalRefresh = -1;
234 static gint ett_disp_IncrementalStepRefresh = -1;
235 static gint ett_disp_T_sDSEChanges = -1;
236 static gint ett_disp_SEQUENCE_OF_SubordinateChanges = -1;
237 static gint ett_disp_ContentChange = -1;
238 static gint ett_disp_T_rename = -1;
239 static gint ett_disp_T_attributeChanges = -1;
240 static gint ett_disp_SEQUENCE_OF_EntryModification = -1;
241 static gint ett_disp_SubordinateChanges = -1;
242 static gint ett_disp_ShadowErrorData = -1;
243 static gint ett_disp_ShadowError = -1;
244 static gint ett_disp_T_signedShadowError = -1;
246 /*--- End of included file: packet-disp-ett.c ---*/
247 #line 69 "../../asn1/disp/packet-disp-template.c"
250 /*--- Included file: packet-disp-fn.c ---*/
251 #line 1 "../../asn1/disp/packet-disp-fn.c"
252 /*--- Cyclic dependencies ---*/
254 /* Subtree -> Subtree/subtree -> Subtree */
255 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_);
257 /* IncrementalStepRefresh -> IncrementalStepRefresh/subordinateUpdates -> SubordinateChanges -> IncrementalStepRefresh */
258 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_);
263 static int
264 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_) {
265 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
267 return offset;
272 static int
273 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_) {
274 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
276 return offset;
281 static int
282 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_) {
283 offset = dissect_dap_DirectoryBindError(implicit_tag, tvb, offset, actx, tree, hf_index);
285 return offset;
290 static int
291 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_) {
292 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
294 return offset;
298 static const ber_sequence_t SET_OF_SupplierAndConsumers_set_of[1] = {
299 { &hf_disp_modifiedSecondaryShadows_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_dop_SupplierAndConsumers },
302 static int
303 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_) {
304 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
305 SET_OF_SupplierAndConsumers_set_of, hf_index, ett_disp_SET_OF_SupplierAndConsumers);
307 return offset;
311 static const ber_sequence_t ModificationParameter_sequence[] = {
312 { &hf_disp_modifiedSecondaryShadows, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_SupplierAndConsumers },
313 { NULL, 0, 0, 0, NULL }
316 static int
317 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_) {
318 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
319 ModificationParameter_sequence, hf_index, ett_disp_ModificationParameter);
321 return offset;
327 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_) {
328 offset = dissect_dop_OperationalBindingID(implicit_tag, tvb, offset, actx, tree, hf_index);
330 return offset;
334 static const ber_sequence_t AreaSpecification_sequence[] = {
335 { &hf_disp_contextPrefix , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_DistinguishedName },
336 { &hf_disp_replicationArea, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_SubtreeSpecification },
337 { NULL, 0, 0, 0, NULL }
340 static int
341 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_) {
342 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
343 AreaSpecification_sequence, hf_index, ett_disp_AreaSpecification);
345 return offset;
350 static int
351 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_) {
352 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
354 return offset;
359 static int
360 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_) {
361 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
363 return offset;
367 static const ber_sequence_t AttributeTypes_set_of[1] = {
368 { &hf_disp_AttributeTypes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
371 static int
372 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_) {
373 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
374 AttributeTypes_set_of, hf_index, ett_disp_AttributeTypes);
376 return offset;
380 static const value_string disp_ClassAttributes_vals[] = {
381 { 0, "allAttributes" },
382 { 1, "include" },
383 { 2, "exclude" },
384 { 0, NULL }
387 static const ber_choice_t ClassAttributes_choice[] = {
388 { 0, &hf_disp_allAttributes , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
389 { 1, &hf_disp_include , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_AttributeTypes },
390 { 2, &hf_disp_exclude , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_AttributeTypes },
391 { 0, NULL, 0, 0, 0, NULL }
394 static int
395 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_) {
396 offset = dissect_ber_choice(actx, tree, tvb, offset,
397 ClassAttributes_choice, hf_index, ett_disp_ClassAttributes,
398 NULL);
400 return offset;
404 static const ber_sequence_t ClassAttributeSelection_sequence[] = {
405 { &hf_disp_class , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_OBJECT_IDENTIFIER },
406 { &hf_disp_classAttributes, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_ClassAttributes },
407 { NULL, 0, 0, 0, NULL }
410 static int
411 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_) {
412 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
413 ClassAttributeSelection_sequence, hf_index, ett_disp_ClassAttributeSelection);
415 return offset;
419 static const ber_sequence_t AttributeSelection_set_of[1] = {
420 { &hf_disp_AttributeSelection_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ClassAttributeSelection },
423 static int
424 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_) {
425 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
426 AttributeSelection_set_of, hf_index, ett_disp_AttributeSelection);
428 return offset;
432 static const value_string disp_T_knowledgeType_vals[] = {
433 { 0, "master" },
434 { 1, "shadow" },
435 { 2, "both" },
436 { 0, NULL }
440 static int
441 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_) {
442 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
443 NULL);
445 return offset;
450 static int
451 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_) {
452 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
454 return offset;
458 static const ber_sequence_t Knowledge_sequence[] = {
459 { &hf_disp_knowledgeType , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_T_knowledgeType },
460 { &hf_disp_extendedKnowledge, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
461 { NULL, 0, 0, 0, NULL }
464 static int
465 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_) {
466 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
467 Knowledge_sequence, hf_index, ett_disp_Knowledge);
469 return offset;
473 static const ber_sequence_t T_selectedContexts_set_of[1] = {
474 { &hf_disp_selectedContexts_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_disp_OBJECT_IDENTIFIER },
477 static int
478 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_) {
479 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
480 T_selectedContexts_set_of, hf_index, ett_disp_T_selectedContexts);
482 return offset;
486 static const value_string disp_T_supplyContexts_vals[] = {
487 { 0, "allContexts" },
488 { 1, "selectedContexts" },
489 { 0, NULL }
492 static const ber_choice_t T_supplyContexts_choice[] = {
493 { 0, &hf_disp_allContexts , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
494 { 1, &hf_disp_selectedContexts, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_T_selectedContexts },
495 { 0, NULL, 0, 0, 0, NULL }
498 static int
499 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_) {
500 offset = dissect_ber_choice(actx, tree, tvb, offset,
501 T_supplyContexts_choice, hf_index, ett_disp_T_supplyContexts,
502 NULL);
504 return offset;
508 static const ber_sequence_t UnitOfReplication_sequence[] = {
509 { &hf_disp_area , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AreaSpecification },
510 { &hf_disp_replication_attributes, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_AttributeSelection },
511 { &hf_disp_knowledge , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Knowledge },
512 { &hf_disp_subordinates , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
513 { &hf_disp_contextSelection, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_ContextSelection },
514 { &hf_disp_supplyContexts , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_T_supplyContexts },
515 { NULL, 0, 0, 0, NULL }
518 static int
519 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_) {
520 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
521 UnitOfReplication_sequence, hf_index, ett_disp_UnitOfReplication);
523 return offset;
528 static int
529 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_) {
530 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
532 return offset;
537 static int
538 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_) {
539 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
540 NULL);
542 return offset;
546 static const ber_sequence_t PeriodicStrategy_sequence[] = {
547 { &hf_disp_beginTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
548 { &hf_disp_windowSize , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_INTEGER },
549 { &hf_disp_updateInterval , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_INTEGER },
550 { NULL, 0, 0, 0, NULL }
553 static int
554 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_) {
555 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
556 PeriodicStrategy_sequence, hf_index, ett_disp_PeriodicStrategy);
558 return offset;
562 static const ber_sequence_t SchedulingParameters_sequence[] = {
563 { &hf_disp_periodic , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_PeriodicStrategy },
564 { &hf_disp_othertimes , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
565 { NULL, 0, 0, 0, NULL }
568 static int
569 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_) {
570 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
571 SchedulingParameters_sequence, hf_index, ett_disp_SchedulingParameters);
573 return offset;
577 static const value_string disp_SupplierUpdateMode_vals[] = {
578 { 0, "onChange" },
579 { 1, "scheduled" },
580 { 0, NULL }
583 static const ber_choice_t SupplierUpdateMode_choice[] = {
584 { 0, &hf_disp_onChange , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_disp_BOOLEAN },
585 { 1, &hf_disp_scheduled , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_SchedulingParameters },
586 { 0, NULL, 0, 0, 0, NULL }
589 static int
590 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_) {
591 offset = dissect_ber_choice(actx, tree, tvb, offset,
592 SupplierUpdateMode_choice, hf_index, ett_disp_SupplierUpdateMode,
593 NULL);
595 return offset;
600 static int
601 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_) {
602 offset = dissect_disp_SchedulingParameters(implicit_tag, tvb, offset, actx, tree, hf_index);
604 return offset;
608 static const value_string disp_UpdateMode_vals[] = {
609 { 0, "supplierInitiated" },
610 { 1, "consumerInitiated" },
611 { 0, NULL }
614 static const ber_choice_t UpdateMode_choice[] = {
615 { 0, &hf_disp_supplierInitiated, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SupplierUpdateMode },
616 { 1, &hf_disp_consumerInitiated, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_ConsumerUpdateMode },
617 { 0, NULL, 0, 0, 0, NULL }
620 static int
621 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_) {
622 offset = dissect_ber_choice(actx, tree, tvb, offset,
623 UpdateMode_choice, hf_index, ett_disp_UpdateMode,
624 NULL);
626 return offset;
630 static const ber_sequence_t ShadowingAgreementInfo_sequence[] = {
631 { &hf_disp_shadowSubject , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_UnitOfReplication },
632 { &hf_disp_updateMode , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_UpdateMode },
633 { &hf_disp_master , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dsp_AccessPoint },
634 { &hf_disp_secondaryShadows, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
635 { NULL, 0, 0, 0, NULL }
638 static int
639 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_) {
640 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
641 ShadowingAgreementInfo_sequence, hf_index, ett_disp_ShadowingAgreementInfo);
643 return offset;
647 static const value_string disp_StandardUpdate_vals[] = {
648 { 0, "noChanges" },
649 { 1, "incremental" },
650 { 2, "total" },
651 { 0, NULL }
655 static int
656 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_) {
657 #line 60 "../../asn1/disp/disp.cnf"
658 guint32 update;
660 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
661 &update);
664 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_StandardUpdate_vals, "unknown(%d)"));
668 return offset;
673 static int
674 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_) {
675 offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
677 return offset;
681 static const value_string disp_T_updateStrategy_vals[] = {
682 { 0, "standard" },
683 { 1, "other" },
684 { 0, NULL }
687 static const ber_choice_t T_updateStrategy_choice[] = {
688 { 0, &hf_disp_standardUpdate , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_StandardUpdate },
689 { 1, &hf_disp_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
690 { 0, NULL, 0, 0, 0, NULL }
693 static int
694 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_) {
695 offset = dissect_ber_choice(actx, tree, tvb, offset,
696 T_updateStrategy_choice, hf_index, ett_disp_T_updateStrategy,
697 NULL);
699 return offset;
703 static const ber_sequence_t CoordinateShadowUpdateArgumentData_sequence[] = {
704 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
705 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
706 { &hf_disp_updateStrategy , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_updateStrategy },
707 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
708 { NULL, 0, 0, 0, NULL }
711 static int
712 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_) {
713 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
714 CoordinateShadowUpdateArgumentData_sequence, hf_index, ett_disp_CoordinateShadowUpdateArgumentData);
716 return offset;
721 static int
722 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_) {
723 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
724 NULL, hf_index, -1,
725 NULL);
727 return offset;
731 static const ber_sequence_t T_signedCoordinateShadowUpdateArgument_sequence[] = {
732 { &hf_disp_coordinateShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_CoordinateShadowUpdateArgumentData },
733 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
734 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
735 { NULL, 0, 0, 0, NULL }
738 static int
739 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_) {
740 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
741 T_signedCoordinateShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedCoordinateShadowUpdateArgument);
743 return offset;
747 static const value_string disp_CoordinateShadowUpdateArgument_vals[] = {
748 { 0, "unsignedCoordinateShadowUpdateArgument" },
749 { 1, "signedCoordinateShadowUpdateArgument" },
750 { 0, NULL }
753 static const ber_choice_t CoordinateShadowUpdateArgument_choice[] = {
754 { 0, &hf_disp_unsignedCoordinateShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_CoordinateShadowUpdateArgumentData },
755 { 1, &hf_disp_signedCoordinateShadowUpdateArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedCoordinateShadowUpdateArgument },
756 { 0, NULL, 0, 0, 0, NULL }
759 static int
760 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_) {
761 offset = dissect_ber_choice(actx, tree, tvb, offset,
762 CoordinateShadowUpdateArgument_choice, hf_index, ett_disp_CoordinateShadowUpdateArgument,
763 NULL);
765 return offset;
769 static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = {
770 { &hf_disp_notification_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
773 static int
774 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_) {
775 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
776 SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_disp_SEQUENCE_OF_Attribute);
778 return offset;
782 static const ber_sequence_t InformationData_sequence[] = {
783 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
784 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
785 { &hf_disp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dap_SecurityParameters },
786 { &hf_disp_performer , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509if_DistinguishedName },
787 { &hf_disp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
788 { &hf_disp_notification , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_Attribute },
789 { NULL, 0, 0, 0, NULL }
792 static int
793 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_) {
794 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
795 InformationData_sequence, hf_index, ett_disp_InformationData);
797 return offset;
801 static const ber_sequence_t T_signedInformation_sequence[] = {
802 { &hf_disp_information_data, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_InformationData },
803 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
804 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
805 { NULL, 0, 0, 0, NULL }
808 static int
809 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_) {
810 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
811 T_signedInformation_sequence, hf_index, ett_disp_T_signedInformation);
813 return offset;
817 static const value_string disp_Information_vals[] = {
818 { 0, "unsignedInformation" },
819 { 1, "signedInformation" },
820 { 0, NULL }
823 static const ber_choice_t Information_choice[] = {
824 { 0, &hf_disp_unsignedInformation, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_InformationData },
825 { 1, &hf_disp_signedInformation, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedInformation },
826 { 0, NULL, 0, 0, 0, NULL }
829 static int
830 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_) {
831 offset = dissect_ber_choice(actx, tree, tvb, offset,
832 Information_choice, hf_index, ett_disp_Information,
833 NULL);
835 return offset;
839 static const value_string disp_CoordinateShadowUpdateResult_vals[] = {
840 { 0, "null" },
841 { 1, "information" },
842 { 0, NULL }
845 static const ber_choice_t CoordinateShadowUpdateResult_choice[] = {
846 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
847 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
848 { 0, NULL, 0, 0, 0, NULL }
851 static int
852 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_) {
853 #line 70 "../../asn1/disp/disp.cnf"
854 guint32 update;
856 offset = dissect_ber_choice(actx, tree, tvb, offset,
857 CoordinateShadowUpdateResult_choice, hf_index, ett_disp_CoordinateShadowUpdateResult,
858 &update);
861 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_CoordinateShadowUpdateResult_vals, "unknown(%d)"));
865 return offset;
869 static const value_string disp_T_standard_vals[] = {
870 { 1, "incremental" },
871 { 2, "total" },
872 { 0, NULL }
876 static int
877 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_) {
878 #line 40 "../../asn1/disp/disp.cnf"
879 guint32 update;
881 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
882 &update);
885 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_T_standard_vals, "standard(%d"));
889 return offset;
893 static const value_string disp_T_requestedStrategy_vals[] = {
894 { 0, "standard" },
895 { 1, "other" },
896 { 0, NULL }
899 static const ber_choice_t T_requestedStrategy_choice[] = {
900 { 0, &hf_disp_standard , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_disp_T_standard },
901 { 1, &hf_disp_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
902 { 0, NULL, 0, 0, 0, NULL }
905 static int
906 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_) {
907 offset = dissect_ber_choice(actx, tree, tvb, offset,
908 T_requestedStrategy_choice, hf_index, ett_disp_T_requestedStrategy,
909 NULL);
911 return offset;
915 static const ber_sequence_t RequestShadowUpdateArgumentData_sequence[] = {
916 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
917 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
918 { &hf_disp_requestedStrategy, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_requestedStrategy },
919 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
920 { NULL, 0, 0, 0, NULL }
923 static int
924 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_) {
925 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
926 RequestShadowUpdateArgumentData_sequence, hf_index, ett_disp_RequestShadowUpdateArgumentData);
928 return offset;
932 static const ber_sequence_t T_signedRequestShadowUpdateArgument_sequence[] = {
933 { &hf_disp_requestShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_RequestShadowUpdateArgumentData },
934 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
935 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
936 { NULL, 0, 0, 0, NULL }
939 static int
940 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_) {
941 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
942 T_signedRequestShadowUpdateArgument_sequence, hf_index, ett_disp_T_signedRequestShadowUpdateArgument);
944 return offset;
948 static const value_string disp_RequestShadowUpdateArgument_vals[] = {
949 { 0, "unsignedRequestShadowUpdateArgument" },
950 { 1, "signedRequestShadowUpdateArgument" },
951 { 0, NULL }
954 static const ber_choice_t RequestShadowUpdateArgument_choice[] = {
955 { 0, &hf_disp_unsignedRequestShadowUpdateArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_RequestShadowUpdateArgumentData },
956 { 1, &hf_disp_signedRequestShadowUpdateArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedRequestShadowUpdateArgument },
957 { 0, NULL, 0, 0, 0, NULL }
960 static int
961 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_) {
962 offset = dissect_ber_choice(actx, tree, tvb, offset,
963 RequestShadowUpdateArgument_choice, hf_index, ett_disp_RequestShadowUpdateArgument,
964 NULL);
966 return offset;
970 static const value_string disp_RequestShadowUpdateResult_vals[] = {
971 { 0, "null" },
972 { 1, "information" },
973 { 0, NULL }
976 static const ber_choice_t RequestShadowUpdateResult_choice[] = {
977 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
978 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
979 { 0, NULL, 0, 0, 0, NULL }
982 static int
983 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_) {
984 #line 80 "../../asn1/disp/disp.cnf"
985 guint32 update;
987 offset = dissect_ber_choice(actx, tree, tvb, offset,
988 RequestShadowUpdateResult_choice, hf_index, ett_disp_RequestShadowUpdateResult,
989 &update);
992 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RequestShadowUpdateResult_vals, "unknown(%d)"));
996 return offset;
1000 static const ber_sequence_t UpdateWindow_sequence[] = {
1001 { &hf_disp_start , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1002 { &hf_disp_stop , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1003 { NULL, 0, 0, 0, NULL }
1006 static int
1007 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_) {
1008 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1009 UpdateWindow_sequence, hf_index, ett_disp_UpdateWindow);
1011 return offset;
1016 static int
1017 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_) {
1018 offset = dissect_dop_DSEType(implicit_tag, tvb, offset, actx, tree, hf_index);
1020 return offset;
1024 static const ber_sequence_t SET_OF_Attribute_set_of[1] = {
1025 { &hf_disp_attributes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Attribute },
1028 static int
1029 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_) {
1030 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1031 SET_OF_Attribute_set_of, hf_index, ett_disp_SET_OF_Attribute);
1033 return offset;
1037 static const ber_sequence_t SET_OF_AttributeType_set_of[1] = {
1038 { &hf_disp_attValIncomplete_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1041 static int
1042 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_) {
1043 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1044 SET_OF_AttributeType_set_of, hf_index, ett_disp_SET_OF_AttributeType);
1046 return offset;
1050 static const ber_sequence_t SDSEContent_sequence[] = {
1051 { &hf_disp_sDSEType , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_SDSEType },
1052 { &hf_disp_subComplete , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1053 { &hf_disp_attComplete , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1054 { &hf_disp_attributes , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Attribute },
1055 { &hf_disp_attValIncomplete, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_AttributeType },
1056 { NULL, 0, 0, 0, NULL }
1059 static int
1060 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_) {
1061 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1062 SDSEContent_sequence, hf_index, ett_disp_SDSEContent);
1064 return offset;
1068 static const ber_sequence_t SET_OF_Subtree_set_of[1] = {
1069 { &hf_disp_subtree_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_Subtree },
1072 static int
1073 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_) {
1074 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1075 SET_OF_Subtree_set_of, hf_index, ett_disp_SET_OF_Subtree);
1077 return offset;
1081 static const ber_sequence_t Subtree_sequence[] = {
1082 { &hf_disp_rdn , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1083 { &hf_disp_sDSE , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SDSEContent },
1084 { &hf_disp_subtree , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_Subtree },
1085 { NULL, 0, 0, 0, NULL }
1088 static int
1089 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_) {
1090 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1091 Subtree_sequence, hf_index, ett_disp_Subtree);
1093 return offset;
1097 static const ber_sequence_t TotalRefresh_sequence[] = {
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 }
1103 static int
1104 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_) {
1105 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1106 TotalRefresh_sequence, hf_index, ett_disp_TotalRefresh);
1108 return offset;
1112 static const value_string disp_T_rename_vals[] = {
1113 { 0, "newRDN" },
1114 { 1, "newDN" },
1115 { 0, NULL }
1118 static const ber_choice_t T_rename_choice[] = {
1119 { 0, &hf_disp_newRDN , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1120 { 1, &hf_disp_newDN , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_DistinguishedName },
1121 { 0, NULL, 0, 0, 0, NULL }
1124 static int
1125 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_) {
1126 offset = dissect_ber_choice(actx, tree, tvb, offset,
1127 T_rename_choice, hf_index, ett_disp_T_rename,
1128 NULL);
1130 return offset;
1134 static const ber_sequence_t SEQUENCE_OF_EntryModification_sequence_of[1] = {
1135 { &hf_disp_changes_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_dap_EntryModification },
1138 static int
1139 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_) {
1140 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1141 SEQUENCE_OF_EntryModification_sequence_of, hf_index, ett_disp_SEQUENCE_OF_EntryModification);
1143 return offset;
1147 static const value_string disp_T_attributeChanges_vals[] = {
1148 { 0, "replace" },
1149 { 1, "changes" },
1150 { 0, NULL }
1153 static const ber_choice_t T_attributeChanges_choice[] = {
1154 { 0, &hf_disp_replace , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SET_OF_Attribute },
1155 { 1, &hf_disp_changes , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_EntryModification },
1156 { 0, NULL, 0, 0, 0, NULL }
1159 static int
1160 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_) {
1161 offset = dissect_ber_choice(actx, tree, tvb, offset,
1162 T_attributeChanges_choice, hf_index, ett_disp_T_attributeChanges,
1163 NULL);
1165 return offset;
1169 static const ber_sequence_t ContentChange_sequence[] = {
1170 { &hf_disp_rename , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_rename },
1171 { &hf_disp_attributeChanges, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_attributeChanges },
1172 { &hf_disp_sDSEType , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_SDSEType },
1173 { &hf_disp_subComplete , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1174 { &hf_disp_attComplete , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1175 { &hf_disp_attValIncomplete, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SET_OF_AttributeType },
1176 { NULL, 0, 0, 0, NULL }
1179 static int
1180 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_) {
1181 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1182 ContentChange_sequence, hf_index, ett_disp_ContentChange);
1184 return offset;
1188 static const value_string disp_T_sDSEChanges_vals[] = {
1189 { 0, "add" },
1190 { 1, "remove" },
1191 { 2, "modify" },
1192 { 0, NULL }
1195 static const ber_choice_t T_sDSEChanges_choice[] = {
1196 { 0, &hf_disp_add , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_SDSEContent },
1197 { 1, &hf_disp_remove , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1198 { 2, &hf_disp_modify , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_ContentChange },
1199 { 0, NULL, 0, 0, 0, NULL }
1202 static int
1203 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_) {
1204 offset = dissect_ber_choice(actx, tree, tvb, offset,
1205 T_sDSEChanges_choice, hf_index, ett_disp_T_sDSEChanges,
1206 NULL);
1208 return offset;
1212 static const ber_sequence_t SubordinateChanges_sequence[] = {
1213 { &hf_disp_subordinate , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName },
1214 { &hf_disp_subordinate_changes, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_IncrementalStepRefresh },
1215 { NULL, 0, 0, 0, NULL }
1218 static int
1219 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_) {
1220 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1221 SubordinateChanges_sequence, hf_index, ett_disp_SubordinateChanges);
1223 return offset;
1227 static const ber_sequence_t SEQUENCE_OF_SubordinateChanges_sequence_of[1] = {
1228 { &hf_disp_subordinateUpdates_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_SubordinateChanges },
1231 static int
1232 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_) {
1233 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1234 SEQUENCE_OF_SubordinateChanges_sequence_of, hf_index, ett_disp_SEQUENCE_OF_SubordinateChanges);
1236 return offset;
1240 static const ber_sequence_t IncrementalStepRefresh_sequence[] = {
1241 { &hf_disp_sDSEChanges , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_T_sDSEChanges },
1242 { &hf_disp_subordinateUpdates, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_SEQUENCE_OF_SubordinateChanges },
1243 { NULL, 0, 0, 0, NULL }
1246 static int
1247 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_) {
1248 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1249 IncrementalStepRefresh_sequence, hf_index, ett_disp_IncrementalStepRefresh);
1251 return offset;
1255 static const ber_sequence_t IncrementalRefresh_sequence_of[1] = {
1256 { &hf_disp_IncrementalRefresh_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_IncrementalStepRefresh },
1259 static int
1260 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_) {
1261 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1262 IncrementalRefresh_sequence_of, hf_index, ett_disp_IncrementalRefresh);
1264 return offset;
1268 static const value_string disp_RefreshInformation_vals[] = {
1269 { 0, "noRefresh" },
1270 { 1, "total" },
1271 { 2, "incremental" },
1272 { 3, "otherStrategy" },
1273 { 0, NULL }
1276 static const ber_choice_t RefreshInformation_choice[] = {
1277 { 0, &hf_disp_noRefresh , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1278 { 1, &hf_disp_total , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_TotalRefresh },
1279 { 2, &hf_disp_incremental , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_disp_IncrementalRefresh },
1280 { 3, &hf_disp_otherStrategy , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_disp_EXTERNAL },
1281 { 0, NULL, 0, 0, 0, NULL }
1284 static int
1285 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_) {
1286 #line 50 "../../asn1/disp/disp.cnf"
1287 guint32 update;
1289 offset = dissect_ber_choice(actx, tree, tvb, offset,
1290 RefreshInformation_choice, hf_index, ett_disp_RefreshInformation,
1291 &update);
1294 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_RefreshInformation_vals, "unknown(%d)"));
1298 return offset;
1302 static const ber_sequence_t UpdateShadowArgumentData_sequence[] = {
1303 { &hf_disp_agreementID , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_AgreementID },
1304 { &hf_disp_updateTime , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1305 { &hf_disp_updateWindow , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_UpdateWindow },
1306 { &hf_disp_updatedInfo , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_disp_RefreshInformation },
1307 { &hf_disp_securityParameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_dap_SecurityParameters },
1308 { NULL, 0, 0, 0, NULL }
1311 static int
1312 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_) {
1313 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1314 UpdateShadowArgumentData_sequence, hf_index, ett_disp_UpdateShadowArgumentData);
1316 return offset;
1320 static const ber_sequence_t T_signedUpdateShadowArgument_sequence[] = {
1321 { &hf_disp_updateShadowArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_UpdateShadowArgumentData },
1322 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1323 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
1324 { NULL, 0, 0, 0, NULL }
1327 static int
1328 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_) {
1329 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1330 T_signedUpdateShadowArgument_sequence, hf_index, ett_disp_T_signedUpdateShadowArgument);
1332 return offset;
1336 static const value_string disp_UpdateShadowArgument_vals[] = {
1337 { 0, "unsignedUpdateShadowArgument" },
1338 { 1, "signedUpdateShadowArgument" },
1339 { 0, NULL }
1342 static const ber_choice_t UpdateShadowArgument_choice[] = {
1343 { 0, &hf_disp_unsignedUpdateShadowArgument, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_UpdateShadowArgumentData },
1344 { 1, &hf_disp_signedUpdateShadowArgument, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_T_signedUpdateShadowArgument },
1345 { 0, NULL, 0, 0, 0, NULL }
1348 static int
1349 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_) {
1350 offset = dissect_ber_choice(actx, tree, tvb, offset,
1351 UpdateShadowArgument_choice, hf_index, ett_disp_UpdateShadowArgument,
1352 NULL);
1354 return offset;
1358 static const value_string disp_UpdateShadowResult_vals[] = {
1359 { 0, "null" },
1360 { 1, "information" },
1361 { 0, NULL }
1364 static const ber_choice_t UpdateShadowResult_choice[] = {
1365 { 0, &hf_disp_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_disp_NULL },
1366 { 1, &hf_disp_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_disp_Information },
1367 { 0, NULL, 0, 0, 0, NULL }
1370 static int
1371 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_) {
1372 #line 90 "../../asn1/disp/disp.cnf"
1373 guint32 update;
1375 offset = dissect_ber_choice(actx, tree, tvb, offset,
1376 UpdateShadowResult_choice, hf_index, ett_disp_UpdateShadowResult,
1377 &update);
1380 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(update, disp_UpdateShadowResult_vals, "unknown(%d)"));
1384 return offset;
1388 static const value_string disp_ShadowProblem_vals[] = {
1389 { 1, "invalidAgreementID" },
1390 { 2, "inactiveAgreement" },
1391 { 3, "invalidInformationReceived" },
1392 { 4, "unsupportedStrategy" },
1393 { 5, "missedPrevious" },
1394 { 6, "fullUpdateRequired" },
1395 { 7, "unwillingToPerform" },
1396 { 8, "unsuitableTiming" },
1397 { 9, "updateAlreadyReceived" },
1398 { 10, "invalidSequencing" },
1399 { 11, "insufficientResources" },
1400 { 0, NULL }
1404 static int
1405 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_) {
1406 #line 100 "../../asn1/disp/disp.cnf"
1407 guint32 problem;
1409 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1410 &problem);
1413 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s", val_to_str(problem, disp_ShadowProblem_vals, "ShadowProblem(%d)"));
1416 return offset;
1420 static const ber_sequence_t ShadowErrorData_sequence[] = {
1421 { &hf_disp_problem , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowProblem },
1422 { &hf_disp_lastUpdate , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_Time },
1423 { &hf_disp_updateWindow , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_disp_UpdateWindow },
1424 { &hf_disp_securityParameters, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dap_SecurityParameters },
1425 { &hf_disp_performer , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509if_DistinguishedName },
1426 { &hf_disp_aliasDereferenced, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_BOOLEAN },
1427 { &hf_disp_notification , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_disp_SEQUENCE_OF_Attribute },
1428 { NULL, 0, 0, 0, NULL }
1431 static int
1432 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_) {
1433 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1434 ShadowErrorData_sequence, hf_index, ett_disp_ShadowErrorData);
1436 return offset;
1440 static const ber_sequence_t T_signedShadowError_sequence[] = {
1441 { &hf_disp_shadowError , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowErrorData },
1442 { &hf_disp_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1443 { &hf_disp_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_disp_BIT_STRING },
1444 { NULL, 0, 0, 0, NULL }
1447 static int
1448 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_) {
1449 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1450 T_signedShadowError_sequence, hf_index, ett_disp_T_signedShadowError);
1452 return offset;
1456 static const value_string disp_ShadowError_vals[] = {
1457 { 0, "unsignedShadowError" },
1458 { 1, "signedShadowError" },
1459 { 0, NULL }
1462 static const ber_choice_t ShadowError_choice[] = {
1463 { 0, &hf_disp_unsignedShadowError, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_disp_ShadowErrorData },
1464 { 1, &hf_disp_signedShadowError, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_disp_T_signedShadowError },
1465 { 0, NULL, 0, 0, 0, NULL }
1468 static int
1469 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_) {
1470 offset = dissect_ber_choice(actx, tree, tvb, offset,
1471 ShadowError_choice, hf_index, ett_disp_ShadowError,
1472 NULL);
1474 return offset;
1477 /*--- PDUs ---*/
1479 static void dissect_EstablishParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1480 asn1_ctx_t asn1_ctx;
1481 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1482 dissect_disp_EstablishParameter(FALSE, tvb, 0, &asn1_ctx, tree, hf_disp_EstablishParameter_PDU);
1484 static void dissect_ModificationParameter_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1485 asn1_ctx_t asn1_ctx;
1486 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1487 dissect_disp_ModificationParameter(FALSE, tvb, 0, &asn1_ctx, tree, hf_disp_ModificationParameter_PDU);
1489 static void dissect_ShadowingAgreementInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1490 asn1_ctx_t asn1_ctx;
1491 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1492 dissect_disp_ShadowingAgreementInfo(FALSE, tvb, 0, &asn1_ctx, tree, hf_disp_ShadowingAgreementInfo_PDU);
1496 /*--- End of included file: packet-disp-fn.c ---*/
1497 #line 71 "../../asn1/disp/packet-disp-template.c"
1500 * Dissect DISP PDUs inside a ROS PDUs
1502 static int
1503 dissect_disp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data)
1505 int offset = 0;
1506 int old_offset;
1507 proto_item *item;
1508 proto_tree *tree;
1509 struct SESSION_DATA_STRUCTURE* session;
1510 int (*disp_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) = NULL;
1511 const char *disp_op_name;
1512 asn1_ctx_t asn1_ctx;
1514 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1516 /* do we have operation information from the ROS dissector? */
1517 if( data == NULL ){
1518 if(parent_tree){
1519 proto_tree_add_text(parent_tree, tvb, offset, -1,
1520 "Internal error: can't get operation information from ROS dissector.");
1522 return 0;
1525 session = ((struct SESSION_DATA_STRUCTURE*)data);
1527 asn1_ctx.private_data = session;
1529 item = proto_tree_add_item(parent_tree, proto_disp, tvb, 0, -1, ENC_NA);
1530 tree = proto_item_add_subtree(item, ett_disp);
1532 col_set_str(pinfo->cinfo, COL_PROTOCOL, "DISP");
1533 col_clear(pinfo->cinfo, COL_INFO);
1535 switch(session->ros_op & ROS_OP_MASK) {
1536 case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
1537 disp_dissector = dissect_disp_DSAShadowBindArgument;
1538 disp_op_name = "Shadow-Bind-Argument";
1539 break;
1540 case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
1541 disp_dissector = dissect_disp_DSAShadowBindResult;
1542 disp_op_name = "Shadow-Bind-Result";
1543 break;
1544 case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
1545 disp_dissector = dissect_disp_DSAShadowBindError;
1546 disp_op_name = "Shadow-Bind-Error";
1547 break;
1548 case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
1549 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1550 case 1: /* requestShadowUpdate */
1551 disp_dissector = dissect_disp_RequestShadowUpdateArgument;
1552 disp_op_name = "Request-Shadow-Update-Argument";
1553 break;
1554 case 2: /* updateShadow*/
1555 disp_dissector = dissect_disp_UpdateShadowArgument;
1556 disp_op_name = "Update-Shadow-Argument";
1557 break;
1558 case 3: /* coordinateShadowUpdate */
1559 disp_dissector = dissect_disp_CoordinateShadowUpdateArgument;
1560 disp_op_name = "Coordinate-Shadow-Update-Argument";
1561 break;
1562 default:
1563 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode (%d)",
1564 session->ros_op & ROS_OP_OPCODE_MASK);
1565 break;
1567 break;
1568 case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
1569 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1570 case 1: /* requestShadowUpdate */
1571 disp_dissector = dissect_disp_RequestShadowUpdateResult;
1572 disp_op_name = "Request-Shadow-Result";
1573 break;
1574 case 2: /* updateShadow */
1575 disp_dissector = dissect_disp_UpdateShadowResult;
1576 disp_op_name = "Update-Shadow-Result";
1577 break;
1578 case 3: /* coordinateShadowUpdate */
1579 disp_dissector = dissect_disp_CoordinateShadowUpdateResult;
1580 disp_op_name = "Coordinate-Shadow-Update-Result";
1581 break;
1582 default:
1583 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode (%d)",
1584 session->ros_op & ROS_OP_OPCODE_MASK);
1585 break;
1587 break;
1588 case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
1589 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1590 case 1: /* shadowError */
1591 disp_dissector = dissect_disp_ShadowError;
1592 disp_op_name = "Shadow-Error";
1593 break;
1594 default:
1595 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP errcode (%d)",
1596 session->ros_op & ROS_OP_OPCODE_MASK);
1597 break;
1599 break;
1600 default:
1601 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP PDU");
1602 return tvb_length(tvb);
1605 if(disp_dissector) {
1606 col_set_str(pinfo->cinfo, COL_INFO, disp_op_name);
1608 while (tvb_reported_length_remaining(tvb, offset) > 0){
1609 old_offset=offset;
1610 offset=(*disp_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
1611 if(offset == old_offset){
1612 proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DISP PDU");
1613 break;
1618 return tvb_length(tvb);
1622 /*--- proto_register_disp -------------------------------------------*/
1623 void proto_register_disp(void) {
1625 /* List of fields */
1626 static hf_register_info hf[] =
1629 /*--- Included file: packet-disp-hfarr.c ---*/
1630 #line 1 "../../asn1/disp/packet-disp-hfarr.c"
1631 { &hf_disp_EstablishParameter_PDU,
1632 { "EstablishParameter", "disp.EstablishParameter_element",
1633 FT_NONE, BASE_NONE, NULL, 0,
1634 NULL, HFILL }},
1635 { &hf_disp_ModificationParameter_PDU,
1636 { "ModificationParameter", "disp.ModificationParameter_element",
1637 FT_NONE, BASE_NONE, NULL, 0,
1638 NULL, HFILL }},
1639 { &hf_disp_ShadowingAgreementInfo_PDU,
1640 { "ShadowingAgreementInfo", "disp.ShadowingAgreementInfo_element",
1641 FT_NONE, BASE_NONE, NULL, 0,
1642 NULL, HFILL }},
1643 { &hf_disp_modifiedSecondaryShadows,
1644 { "secondaryShadows", "disp.secondaryShadows",
1645 FT_UINT32, BASE_DEC, NULL, 0,
1646 "SET_OF_SupplierAndConsumers", HFILL }},
1647 { &hf_disp_modifiedSecondaryShadows_item,
1648 { "SupplierAndConsumers", "disp.SupplierAndConsumers_element",
1649 FT_NONE, BASE_NONE, NULL, 0,
1650 NULL, HFILL }},
1651 { &hf_disp_shadowSubject,
1652 { "shadowSubject", "disp.shadowSubject_element",
1653 FT_NONE, BASE_NONE, NULL, 0,
1654 "UnitOfReplication", HFILL }},
1655 { &hf_disp_updateMode,
1656 { "updateMode", "disp.updateMode",
1657 FT_UINT32, BASE_DEC, VALS(disp_UpdateMode_vals), 0,
1658 NULL, HFILL }},
1659 { &hf_disp_master,
1660 { "master", "disp.master_element",
1661 FT_NONE, BASE_NONE, NULL, 0,
1662 "AccessPoint", HFILL }},
1663 { &hf_disp_secondaryShadows,
1664 { "secondaryShadows", "disp.secondaryShadows",
1665 FT_BOOLEAN, BASE_NONE, NULL, 0,
1666 "BOOLEAN", HFILL }},
1667 { &hf_disp_area,
1668 { "area", "disp.area_element",
1669 FT_NONE, BASE_NONE, NULL, 0,
1670 "AreaSpecification", HFILL }},
1671 { &hf_disp_replication_attributes,
1672 { "attributes", "disp.attributes",
1673 FT_UINT32, BASE_DEC, NULL, 0,
1674 "AttributeSelection", HFILL }},
1675 { &hf_disp_knowledge,
1676 { "knowledge", "disp.knowledge_element",
1677 FT_NONE, BASE_NONE, NULL, 0,
1678 NULL, HFILL }},
1679 { &hf_disp_subordinates,
1680 { "subordinates", "disp.subordinates",
1681 FT_BOOLEAN, BASE_NONE, NULL, 0,
1682 "BOOLEAN", HFILL }},
1683 { &hf_disp_contextSelection,
1684 { "contextSelection", "disp.contextSelection",
1685 FT_UINT32, BASE_DEC, VALS(dap_ContextSelection_vals), 0,
1686 NULL, HFILL }},
1687 { &hf_disp_supplyContexts,
1688 { "supplyContexts", "disp.supplyContexts",
1689 FT_UINT32, BASE_DEC, VALS(disp_T_supplyContexts_vals), 0,
1690 NULL, HFILL }},
1691 { &hf_disp_allContexts,
1692 { "allContexts", "disp.allContexts_element",
1693 FT_NONE, BASE_NONE, NULL, 0,
1694 NULL, HFILL }},
1695 { &hf_disp_selectedContexts,
1696 { "selectedContexts", "disp.selectedContexts",
1697 FT_UINT32, BASE_DEC, NULL, 0,
1698 NULL, HFILL }},
1699 { &hf_disp_selectedContexts_item,
1700 { "selectedContexts item", "disp.selectedContexts_item",
1701 FT_OID, BASE_NONE, NULL, 0,
1702 "OBJECT_IDENTIFIER", HFILL }},
1703 { &hf_disp_contextPrefix,
1704 { "contextPrefix", "disp.contextPrefix",
1705 FT_UINT32, BASE_DEC, NULL, 0,
1706 "DistinguishedName", HFILL }},
1707 { &hf_disp_replicationArea,
1708 { "replicationArea", "disp.replicationArea_element",
1709 FT_NONE, BASE_NONE, NULL, 0,
1710 "SubtreeSpecification", HFILL }},
1711 { &hf_disp_knowledgeType,
1712 { "knowledgeType", "disp.knowledgeType",
1713 FT_UINT32, BASE_DEC, VALS(disp_T_knowledgeType_vals), 0,
1714 NULL, HFILL }},
1715 { &hf_disp_extendedKnowledge,
1716 { "extendedKnowledge", "disp.extendedKnowledge",
1717 FT_BOOLEAN, BASE_NONE, NULL, 0,
1718 "BOOLEAN", HFILL }},
1719 { &hf_disp_AttributeSelection_item,
1720 { "ClassAttributeSelection", "disp.ClassAttributeSelection_element",
1721 FT_NONE, BASE_NONE, NULL, 0,
1722 NULL, HFILL }},
1723 { &hf_disp_class,
1724 { "class", "disp.class",
1725 FT_OID, BASE_NONE, NULL, 0,
1726 "OBJECT_IDENTIFIER", HFILL }},
1727 { &hf_disp_classAttributes,
1728 { "classAttributes", "disp.classAttributes",
1729 FT_UINT32, BASE_DEC, VALS(disp_ClassAttributes_vals), 0,
1730 NULL, HFILL }},
1731 { &hf_disp_allAttributes,
1732 { "allAttributes", "disp.allAttributes_element",
1733 FT_NONE, BASE_NONE, NULL, 0,
1734 NULL, HFILL }},
1735 { &hf_disp_include,
1736 { "include", "disp.include",
1737 FT_UINT32, BASE_DEC, NULL, 0,
1738 "AttributeTypes", HFILL }},
1739 { &hf_disp_exclude,
1740 { "exclude", "disp.exclude",
1741 FT_UINT32, BASE_DEC, NULL, 0,
1742 "AttributeTypes", HFILL }},
1743 { &hf_disp_AttributeTypes_item,
1744 { "AttributeType", "disp.AttributeType",
1745 FT_OID, BASE_NONE, NULL, 0,
1746 NULL, HFILL }},
1747 { &hf_disp_supplierInitiated,
1748 { "supplierInitiated", "disp.supplierInitiated",
1749 FT_UINT32, BASE_DEC, VALS(disp_SupplierUpdateMode_vals), 0,
1750 "SupplierUpdateMode", HFILL }},
1751 { &hf_disp_consumerInitiated,
1752 { "consumerInitiated", "disp.consumerInitiated_element",
1753 FT_NONE, BASE_NONE, NULL, 0,
1754 "ConsumerUpdateMode", HFILL }},
1755 { &hf_disp_onChange,
1756 { "onChange", "disp.onChange",
1757 FT_BOOLEAN, BASE_NONE, NULL, 0,
1758 "BOOLEAN", HFILL }},
1759 { &hf_disp_scheduled,
1760 { "scheduled", "disp.scheduled_element",
1761 FT_NONE, BASE_NONE, NULL, 0,
1762 "SchedulingParameters", HFILL }},
1763 { &hf_disp_periodic,
1764 { "periodic", "disp.periodic_element",
1765 FT_NONE, BASE_NONE, NULL, 0,
1766 "PeriodicStrategy", HFILL }},
1767 { &hf_disp_othertimes,
1768 { "othertimes", "disp.othertimes",
1769 FT_BOOLEAN, BASE_NONE, NULL, 0,
1770 "BOOLEAN", HFILL }},
1771 { &hf_disp_beginTime,
1772 { "beginTime", "disp.beginTime",
1773 FT_STRING, BASE_NONE, NULL, 0,
1774 "Time", HFILL }},
1775 { &hf_disp_windowSize,
1776 { "windowSize", "disp.windowSize",
1777 FT_INT32, BASE_DEC, NULL, 0,
1778 "INTEGER", HFILL }},
1779 { &hf_disp_updateInterval,
1780 { "updateInterval", "disp.updateInterval",
1781 FT_INT32, BASE_DEC, NULL, 0,
1782 "INTEGER", HFILL }},
1783 { &hf_disp_agreementID,
1784 { "agreementID", "disp.agreementID_element",
1785 FT_NONE, BASE_NONE, NULL, 0,
1786 NULL, HFILL }},
1787 { &hf_disp_lastUpdate,
1788 { "lastUpdate", "disp.lastUpdate",
1789 FT_STRING, BASE_NONE, NULL, 0,
1790 "Time", HFILL }},
1791 { &hf_disp_updateStrategy,
1792 { "updateStrategy", "disp.updateStrategy",
1793 FT_UINT32, BASE_DEC, VALS(disp_T_updateStrategy_vals), 0,
1794 NULL, HFILL }},
1795 { &hf_disp_standardUpdate,
1796 { "standard", "disp.standard",
1797 FT_UINT32, BASE_DEC, VALS(disp_StandardUpdate_vals), 0,
1798 "StandardUpdate", HFILL }},
1799 { &hf_disp_other,
1800 { "other", "disp.other_element",
1801 FT_NONE, BASE_NONE, NULL, 0,
1802 "EXTERNAL", HFILL }},
1803 { &hf_disp_securityParameters,
1804 { "securityParameters", "disp.securityParameters_element",
1805 FT_NONE, BASE_NONE, NULL, 0,
1806 NULL, HFILL }},
1807 { &hf_disp_unsignedCoordinateShadowUpdateArgument,
1808 { "unsignedCoordinateShadowUpdateArgument", "disp.unsignedCoordinateShadowUpdateArgument_element",
1809 FT_NONE, BASE_NONE, NULL, 0,
1810 "CoordinateShadowUpdateArgumentData", HFILL }},
1811 { &hf_disp_signedCoordinateShadowUpdateArgument,
1812 { "signedCoordinateShadowUpdateArgument", "disp.signedCoordinateShadowUpdateArgument_element",
1813 FT_NONE, BASE_NONE, NULL, 0,
1814 NULL, HFILL }},
1815 { &hf_disp_coordinateShadowUpdateArgument,
1816 { "coordinateShadowUpdateArgument", "disp.coordinateShadowUpdateArgument_element",
1817 FT_NONE, BASE_NONE, NULL, 0,
1818 "CoordinateShadowUpdateArgumentData", HFILL }},
1819 { &hf_disp_algorithmIdentifier,
1820 { "algorithmIdentifier", "disp.algorithmIdentifier_element",
1821 FT_NONE, BASE_NONE, NULL, 0,
1822 NULL, HFILL }},
1823 { &hf_disp_encrypted,
1824 { "encrypted", "disp.encrypted",
1825 FT_BYTES, BASE_NONE, NULL, 0,
1826 "BIT_STRING", HFILL }},
1827 { &hf_disp_null,
1828 { "null", "disp.null_element",
1829 FT_NONE, BASE_NONE, NULL, 0,
1830 NULL, HFILL }},
1831 { &hf_disp_information,
1832 { "information", "disp.information",
1833 FT_UINT32, BASE_DEC, VALS(disp_Information_vals), 0,
1834 NULL, HFILL }},
1835 { &hf_disp_performer,
1836 { "performer", "disp.performer",
1837 FT_UINT32, BASE_DEC, NULL, 0,
1838 "DistinguishedName", HFILL }},
1839 { &hf_disp_aliasDereferenced,
1840 { "aliasDereferenced", "disp.aliasDereferenced",
1841 FT_BOOLEAN, BASE_NONE, NULL, 0,
1842 "BOOLEAN", HFILL }},
1843 { &hf_disp_notification,
1844 { "notification", "disp.notification",
1845 FT_UINT32, BASE_DEC, NULL, 0,
1846 "SEQUENCE_OF_Attribute", HFILL }},
1847 { &hf_disp_notification_item,
1848 { "Attribute", "disp.Attribute_element",
1849 FT_NONE, BASE_NONE, NULL, 0,
1850 NULL, HFILL }},
1851 { &hf_disp_unsignedInformation,
1852 { "unsignedInformation", "disp.unsignedInformation_element",
1853 FT_NONE, BASE_NONE, NULL, 0,
1854 "InformationData", HFILL }},
1855 { &hf_disp_signedInformation,
1856 { "signedInformation", "disp.signedInformation_element",
1857 FT_NONE, BASE_NONE, NULL, 0,
1858 NULL, HFILL }},
1859 { &hf_disp_information_data,
1860 { "information", "disp.information_element",
1861 FT_NONE, BASE_NONE, NULL, 0,
1862 "InformationData", HFILL }},
1863 { &hf_disp_requestedStrategy,
1864 { "requestedStrategy", "disp.requestedStrategy",
1865 FT_UINT32, BASE_DEC, VALS(disp_T_requestedStrategy_vals), 0,
1866 NULL, HFILL }},
1867 { &hf_disp_standard,
1868 { "standard", "disp.standard",
1869 FT_UINT32, BASE_DEC, VALS(disp_T_standard_vals), 0,
1870 NULL, HFILL }},
1871 { &hf_disp_unsignedRequestShadowUpdateArgument,
1872 { "unsignedRequestShadowUpdateArgument", "disp.unsignedRequestShadowUpdateArgument_element",
1873 FT_NONE, BASE_NONE, NULL, 0,
1874 "RequestShadowUpdateArgumentData", HFILL }},
1875 { &hf_disp_signedRequestShadowUpdateArgument,
1876 { "signedRequestShadowUpdateArgument", "disp.signedRequestShadowUpdateArgument_element",
1877 FT_NONE, BASE_NONE, NULL, 0,
1878 NULL, HFILL }},
1879 { &hf_disp_requestShadowUpdateArgument,
1880 { "requestShadowUpdateArgument", "disp.requestShadowUpdateArgument_element",
1881 FT_NONE, BASE_NONE, NULL, 0,
1882 "RequestShadowUpdateArgumentData", HFILL }},
1883 { &hf_disp_updateTime,
1884 { "updateTime", "disp.updateTime",
1885 FT_STRING, BASE_NONE, NULL, 0,
1886 "Time", HFILL }},
1887 { &hf_disp_updateWindow,
1888 { "updateWindow", "disp.updateWindow_element",
1889 FT_NONE, BASE_NONE, NULL, 0,
1890 NULL, HFILL }},
1891 { &hf_disp_updatedInfo,
1892 { "updatedInfo", "disp.updatedInfo",
1893 FT_UINT32, BASE_DEC, VALS(disp_RefreshInformation_vals), 0,
1894 "RefreshInformation", HFILL }},
1895 { &hf_disp_unsignedUpdateShadowArgument,
1896 { "unsignedUpdateShadowArgument", "disp.unsignedUpdateShadowArgument_element",
1897 FT_NONE, BASE_NONE, NULL, 0,
1898 "UpdateShadowArgumentData", HFILL }},
1899 { &hf_disp_signedUpdateShadowArgument,
1900 { "signedUpdateShadowArgument", "disp.signedUpdateShadowArgument_element",
1901 FT_NONE, BASE_NONE, NULL, 0,
1902 NULL, HFILL }},
1903 { &hf_disp_updateShadowArgument,
1904 { "updateShadowArgument", "disp.updateShadowArgument_element",
1905 FT_NONE, BASE_NONE, NULL, 0,
1906 "UpdateShadowArgumentData", HFILL }},
1907 { &hf_disp_start,
1908 { "start", "disp.start",
1909 FT_STRING, BASE_NONE, NULL, 0,
1910 "Time", HFILL }},
1911 { &hf_disp_stop,
1912 { "stop", "disp.stop",
1913 FT_STRING, BASE_NONE, NULL, 0,
1914 "Time", HFILL }},
1915 { &hf_disp_noRefresh,
1916 { "noRefresh", "disp.noRefresh_element",
1917 FT_NONE, BASE_NONE, NULL, 0,
1918 NULL, HFILL }},
1919 { &hf_disp_total,
1920 { "total", "disp.total_element",
1921 FT_NONE, BASE_NONE, NULL, 0,
1922 "TotalRefresh", HFILL }},
1923 { &hf_disp_incremental,
1924 { "incremental", "disp.incremental",
1925 FT_UINT32, BASE_DEC, NULL, 0,
1926 "IncrementalRefresh", HFILL }},
1927 { &hf_disp_otherStrategy,
1928 { "otherStrategy", "disp.otherStrategy_element",
1929 FT_NONE, BASE_NONE, NULL, 0,
1930 "EXTERNAL", HFILL }},
1931 { &hf_disp_sDSE,
1932 { "sDSE", "disp.sDSE_element",
1933 FT_NONE, BASE_NONE, NULL, 0,
1934 "SDSEContent", HFILL }},
1935 { &hf_disp_subtree,
1936 { "subtree", "disp.subtree",
1937 FT_UINT32, BASE_DEC, NULL, 0,
1938 "SET_OF_Subtree", HFILL }},
1939 { &hf_disp_subtree_item,
1940 { "Subtree", "disp.Subtree_element",
1941 FT_NONE, BASE_NONE, NULL, 0,
1942 NULL, HFILL }},
1943 { &hf_disp_sDSEType,
1944 { "sDSEType", "disp.sDSEType",
1945 FT_BYTES, BASE_NONE, NULL, 0,
1946 NULL, HFILL }},
1947 { &hf_disp_subComplete,
1948 { "subComplete", "disp.subComplete",
1949 FT_BOOLEAN, BASE_NONE, NULL, 0,
1950 "BOOLEAN", HFILL }},
1951 { &hf_disp_attComplete,
1952 { "attComplete", "disp.attComplete",
1953 FT_BOOLEAN, BASE_NONE, NULL, 0,
1954 "BOOLEAN", HFILL }},
1955 { &hf_disp_attributes,
1956 { "attributes", "disp.attributes",
1957 FT_UINT32, BASE_DEC, NULL, 0,
1958 "SET_OF_Attribute", HFILL }},
1959 { &hf_disp_attributes_item,
1960 { "Attribute", "disp.Attribute_element",
1961 FT_NONE, BASE_NONE, NULL, 0,
1962 NULL, HFILL }},
1963 { &hf_disp_attValIncomplete,
1964 { "attValIncomplete", "disp.attValIncomplete",
1965 FT_UINT32, BASE_DEC, NULL, 0,
1966 "SET_OF_AttributeType", HFILL }},
1967 { &hf_disp_attValIncomplete_item,
1968 { "AttributeType", "disp.AttributeType",
1969 FT_OID, BASE_NONE, NULL, 0,
1970 NULL, HFILL }},
1971 { &hf_disp_rdn,
1972 { "rdn", "disp.rdn",
1973 FT_UINT32, BASE_DEC, NULL, 0,
1974 "RelativeDistinguishedName", HFILL }},
1975 { &hf_disp_IncrementalRefresh_item,
1976 { "IncrementalStepRefresh", "disp.IncrementalStepRefresh_element",
1977 FT_NONE, BASE_NONE, NULL, 0,
1978 NULL, HFILL }},
1979 { &hf_disp_sDSEChanges,
1980 { "sDSEChanges", "disp.sDSEChanges",
1981 FT_UINT32, BASE_DEC, VALS(disp_T_sDSEChanges_vals), 0,
1982 NULL, HFILL }},
1983 { &hf_disp_add,
1984 { "add", "disp.add_element",
1985 FT_NONE, BASE_NONE, NULL, 0,
1986 "SDSEContent", HFILL }},
1987 { &hf_disp_remove,
1988 { "remove", "disp.remove_element",
1989 FT_NONE, BASE_NONE, NULL, 0,
1990 NULL, HFILL }},
1991 { &hf_disp_modify,
1992 { "modify", "disp.modify_element",
1993 FT_NONE, BASE_NONE, NULL, 0,
1994 "ContentChange", HFILL }},
1995 { &hf_disp_subordinateUpdates,
1996 { "subordinateUpdates", "disp.subordinateUpdates",
1997 FT_UINT32, BASE_DEC, NULL, 0,
1998 "SEQUENCE_OF_SubordinateChanges", HFILL }},
1999 { &hf_disp_subordinateUpdates_item,
2000 { "SubordinateChanges", "disp.SubordinateChanges_element",
2001 FT_NONE, BASE_NONE, NULL, 0,
2002 NULL, HFILL }},
2003 { &hf_disp_rename,
2004 { "rename", "disp.rename",
2005 FT_UINT32, BASE_DEC, VALS(disp_T_rename_vals), 0,
2006 NULL, HFILL }},
2007 { &hf_disp_newRDN,
2008 { "newRDN", "disp.newRDN",
2009 FT_UINT32, BASE_DEC, NULL, 0,
2010 "RelativeDistinguishedName", HFILL }},
2011 { &hf_disp_newDN,
2012 { "newDN", "disp.newDN",
2013 FT_UINT32, BASE_DEC, NULL, 0,
2014 "DistinguishedName", HFILL }},
2015 { &hf_disp_attributeChanges,
2016 { "attributeChanges", "disp.attributeChanges",
2017 FT_UINT32, BASE_DEC, VALS(disp_T_attributeChanges_vals), 0,
2018 NULL, HFILL }},
2019 { &hf_disp_replace,
2020 { "replace", "disp.replace",
2021 FT_UINT32, BASE_DEC, NULL, 0,
2022 "SET_OF_Attribute", HFILL }},
2023 { &hf_disp_replace_item,
2024 { "Attribute", "disp.Attribute_element",
2025 FT_NONE, BASE_NONE, NULL, 0,
2026 NULL, HFILL }},
2027 { &hf_disp_changes,
2028 { "changes", "disp.changes",
2029 FT_UINT32, BASE_DEC, NULL, 0,
2030 "SEQUENCE_OF_EntryModification", HFILL }},
2031 { &hf_disp_changes_item,
2032 { "EntryModification", "disp.EntryModification",
2033 FT_UINT32, BASE_DEC, VALS(dap_EntryModification_vals), 0,
2034 NULL, HFILL }},
2035 { &hf_disp_subordinate,
2036 { "subordinate", "disp.subordinate",
2037 FT_UINT32, BASE_DEC, NULL, 0,
2038 "RelativeDistinguishedName", HFILL }},
2039 { &hf_disp_subordinate_changes,
2040 { "changes", "disp.changes_element",
2041 FT_NONE, BASE_NONE, NULL, 0,
2042 "IncrementalStepRefresh", HFILL }},
2043 { &hf_disp_problem,
2044 { "problem", "disp.problem",
2045 FT_INT32, BASE_DEC, VALS(disp_ShadowProblem_vals), 0,
2046 "ShadowProblem", HFILL }},
2047 { &hf_disp_unsignedShadowError,
2048 { "unsignedShadowError", "disp.unsignedShadowError_element",
2049 FT_NONE, BASE_NONE, NULL, 0,
2050 "ShadowErrorData", HFILL }},
2051 { &hf_disp_signedShadowError,
2052 { "signedShadowError", "disp.signedShadowError_element",
2053 FT_NONE, BASE_NONE, NULL, 0,
2054 NULL, HFILL }},
2055 { &hf_disp_shadowError,
2056 { "shadowError", "disp.shadowError_element",
2057 FT_NONE, BASE_NONE, NULL, 0,
2058 "ShadowErrorData", HFILL }},
2060 /*--- End of included file: packet-disp-hfarr.c ---*/
2061 #line 202 "../../asn1/disp/packet-disp-template.c"
2064 /* List of subtrees */
2065 static gint *ett[] = {
2066 &ett_disp,
2068 /*--- Included file: packet-disp-ettarr.c ---*/
2069 #line 1 "../../asn1/disp/packet-disp-ettarr.c"
2070 &ett_disp_ModificationParameter,
2071 &ett_disp_SET_OF_SupplierAndConsumers,
2072 &ett_disp_ShadowingAgreementInfo,
2073 &ett_disp_UnitOfReplication,
2074 &ett_disp_T_supplyContexts,
2075 &ett_disp_T_selectedContexts,
2076 &ett_disp_AreaSpecification,
2077 &ett_disp_Knowledge,
2078 &ett_disp_AttributeSelection,
2079 &ett_disp_ClassAttributeSelection,
2080 &ett_disp_ClassAttributes,
2081 &ett_disp_AttributeTypes,
2082 &ett_disp_UpdateMode,
2083 &ett_disp_SupplierUpdateMode,
2084 &ett_disp_SchedulingParameters,
2085 &ett_disp_PeriodicStrategy,
2086 &ett_disp_CoordinateShadowUpdateArgumentData,
2087 &ett_disp_T_updateStrategy,
2088 &ett_disp_CoordinateShadowUpdateArgument,
2089 &ett_disp_T_signedCoordinateShadowUpdateArgument,
2090 &ett_disp_CoordinateShadowUpdateResult,
2091 &ett_disp_InformationData,
2092 &ett_disp_SEQUENCE_OF_Attribute,
2093 &ett_disp_Information,
2094 &ett_disp_T_signedInformation,
2095 &ett_disp_RequestShadowUpdateArgumentData,
2096 &ett_disp_T_requestedStrategy,
2097 &ett_disp_RequestShadowUpdateArgument,
2098 &ett_disp_T_signedRequestShadowUpdateArgument,
2099 &ett_disp_RequestShadowUpdateResult,
2100 &ett_disp_UpdateShadowArgumentData,
2101 &ett_disp_UpdateShadowArgument,
2102 &ett_disp_T_signedUpdateShadowArgument,
2103 &ett_disp_UpdateShadowResult,
2104 &ett_disp_UpdateWindow,
2105 &ett_disp_RefreshInformation,
2106 &ett_disp_TotalRefresh,
2107 &ett_disp_SET_OF_Subtree,
2108 &ett_disp_SDSEContent,
2109 &ett_disp_SET_OF_Attribute,
2110 &ett_disp_SET_OF_AttributeType,
2111 &ett_disp_Subtree,
2112 &ett_disp_IncrementalRefresh,
2113 &ett_disp_IncrementalStepRefresh,
2114 &ett_disp_T_sDSEChanges,
2115 &ett_disp_SEQUENCE_OF_SubordinateChanges,
2116 &ett_disp_ContentChange,
2117 &ett_disp_T_rename,
2118 &ett_disp_T_attributeChanges,
2119 &ett_disp_SEQUENCE_OF_EntryModification,
2120 &ett_disp_SubordinateChanges,
2121 &ett_disp_ShadowErrorData,
2122 &ett_disp_ShadowError,
2123 &ett_disp_T_signedShadowError,
2125 /*--- End of included file: packet-disp-ettarr.c ---*/
2126 #line 208 "../../asn1/disp/packet-disp-template.c"
2128 module_t *disp_module;
2130 /* Register protocol */
2131 proto_disp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2132 new_register_dissector("disp", dissect_disp, proto_disp);
2134 /* Register fields and subtrees */
2135 proto_register_field_array(proto_disp, hf, array_length(hf));
2136 proto_register_subtree_array(ett, array_length(ett));
2138 /* Register our configuration options for DISP, particularly our port */
2140 disp_module = prefs_register_protocol_subtree("OSI/X.500", proto_disp, prefs_register_disp);
2142 prefs_register_uint_preference(disp_module, "tcp.port", "DISP TCP Port",
2143 "Set the port for DISP operations (if other"
2144 " than the default of 102)",
2145 10, &global_disp_tcp_port);
2150 /*--- proto_reg_handoff_disp --- */
2151 void proto_reg_handoff_disp(void) {
2152 dissector_handle_t disp_handle;
2155 /*--- Included file: packet-disp-dis-tab.c ---*/
2156 #line 1 "../../asn1/disp/packet-disp-dis-tab.c"
2157 dissector_add_string("dop.oid", "agreement.2.5.19.1", create_dissector_handle(dissect_ShadowingAgreementInfo_PDU, proto_disp));
2158 dissector_add_string("dop.oid", "establish.rolea.2.5.19.1", create_dissector_handle(dissect_EstablishParameter_PDU, proto_disp));
2159 dissector_add_string("dop.oid", "establish.roleb.2.5.19.1", create_dissector_handle(dissect_EstablishParameter_PDU, proto_disp));
2160 dissector_add_string("dop.oid", "modify.rolea.2.5.19.1", create_dissector_handle(dissect_ModificationParameter_PDU, proto_disp));
2161 dissector_add_string("dop.oid", "modify.roleb.2.5.19.1", create_dissector_handle(dissect_ModificationParameter_PDU, proto_disp));
2164 /*--- End of included file: packet-disp-dis-tab.c ---*/
2165 #line 236 "../../asn1/disp/packet-disp-template.c"
2167 /* APPLICATION CONTEXT */
2169 oid_add_from_string("id-ac-shadow-consumer-initiated","2.5.3.4");
2170 oid_add_from_string("id-ac-shadow-supplier-initiated","2.5.3.5");
2171 oid_add_from_string("id-ac-reliable-shadow-consumer-initiated","2.5.3.6");
2172 oid_add_from_string("id-ac-reliable-shadow-supplier-initiated","2.5.3.7");
2174 /* ABSTRACT SYNTAXES */
2176 disp_handle = find_dissector("disp");
2178 register_ros_oid_dissector_handle("2.5.9.3", disp_handle, 0, "id-as-directory-shadow", FALSE);
2179 register_rtse_oid_dissector_handle("2.5.9.5", disp_handle, 0, "id-as-directory-reliable-shadow", FALSE);
2180 register_rtse_oid_dissector_handle("2.5.9.6", disp_handle, 0, "id-as-directory-reliable-binding", FALSE);
2182 /* OPERATIONAL BINDING */
2183 oid_add_from_string("id-op-binding-shadow","2.5.1.0.5.1");
2185 tpkt_handle = find_dissector("tpkt");
2187 /* DNs */
2188 x509if_register_fmt(hf_disp_contextPrefix, "cp=");
2193 static void
2194 prefs_register_disp(void)
2196 static guint tcp_port = 0;
2198 /* de-register the old port */
2199 /* port 102 is registered by TPKT - don't undo this! */
2200 if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
2201 dissector_delete_uint("tcp.port", tcp_port, tpkt_handle);
2203 /* Set our port number for future use */
2204 tcp_port = global_disp_tcp_port;
2206 if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
2207 dissector_add_uint("tcp.port", global_disp_tcp_port, tpkt_handle);