1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
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"
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
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"
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_
);
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
);
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
);
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
);
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
);
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
},
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
);
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
}
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
);
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
);
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
}
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
);
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
);
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
);
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
},
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
);
380 static const value_string disp_ClassAttributes_vals
[] = {
381 { 0, "allAttributes" },
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
}
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
,
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
}
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
);
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
},
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
);
432 static const value_string disp_T_knowledgeType_vals
[] = {
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
,
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
);
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
}
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
);
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
},
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
);
486 static const value_string disp_T_supplyContexts_vals
[] = {
487 { 0, "allContexts" },
488 { 1, "selectedContexts" },
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
}
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
,
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
}
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
);
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
);
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
,
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
}
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
);
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
}
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
);
577 static const value_string disp_SupplierUpdateMode_vals
[] = {
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
}
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
,
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
);
608 static const value_string disp_UpdateMode_vals
[] = {
609 { 0, "supplierInitiated" },
610 { 1, "consumerInitiated" },
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
}
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
,
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
}
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
);
647 static const value_string disp_StandardUpdate_vals
[] = {
649 { 1, "incremental" },
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"
660 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
664 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " %s", val_to_str(update
, disp_StandardUpdate_vals
, "unknown(%d)"));
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
);
681 static const value_string disp_T_updateStrategy_vals
[] = {
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
}
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
,
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
}
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
);
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
,
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
}
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
);
747 static const value_string disp_CoordinateShadowUpdateArgument_vals
[] = {
748 { 0, "unsignedCoordinateShadowUpdateArgument" },
749 { 1, "signedCoordinateShadowUpdateArgument" },
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
}
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
,
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
},
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
);
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
}
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
);
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
}
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
);
817 static const value_string disp_Information_vals
[] = {
818 { 0, "unsignedInformation" },
819 { 1, "signedInformation" },
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
}
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
,
839 static const value_string disp_CoordinateShadowUpdateResult_vals
[] = {
841 { 1, "information" },
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
}
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"
856 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
857 CoordinateShadowUpdateResult_choice
, hf_index
, ett_disp_CoordinateShadowUpdateResult
,
861 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " %s", val_to_str(update
, disp_CoordinateShadowUpdateResult_vals
, "unknown(%d)"));
869 static const value_string disp_T_standard_vals
[] = {
870 { 1, "incremental" },
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"
881 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
885 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " %s", val_to_str(update
, disp_T_standard_vals
, "standard(%d"));
893 static const value_string disp_T_requestedStrategy_vals
[] = {
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
}
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
,
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
}
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
);
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
}
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
);
948 static const value_string disp_RequestShadowUpdateArgument_vals
[] = {
949 { 0, "unsignedRequestShadowUpdateArgument" },
950 { 1, "signedRequestShadowUpdateArgument" },
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
}
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
,
970 static const value_string disp_RequestShadowUpdateResult_vals
[] = {
972 { 1, "information" },
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
}
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"
987 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
988 RequestShadowUpdateResult_choice
, hf_index
, ett_disp_RequestShadowUpdateResult
,
992 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " %s", val_to_str(update
, disp_RequestShadowUpdateResult_vals
, "unknown(%d)"));
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
}
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
);
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
);
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
},
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
);
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
},
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
);
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
}
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
);
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
},
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
);
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
}
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
);
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
}
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
);
1112 static const value_string disp_T_rename_vals
[] = {
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
}
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
,
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
},
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
);
1147 static const value_string disp_T_attributeChanges_vals
[] = {
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
}
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
,
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
}
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
);
1188 static const value_string disp_T_sDSEChanges_vals
[] = {
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
}
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
,
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
}
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
);
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
},
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
);
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
}
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
);
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
},
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
);
1268 static const value_string disp_RefreshInformation_vals
[] = {
1271 { 2, "incremental" },
1272 { 3, "otherStrategy" },
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
}
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"
1289 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1290 RefreshInformation_choice
, hf_index
, ett_disp_RefreshInformation
,
1294 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " %s", val_to_str(update
, disp_RefreshInformation_vals
, "unknown(%d)"));
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
}
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
);
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
}
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
);
1336 static const value_string disp_UpdateShadowArgument_vals
[] = {
1337 { 0, "unsignedUpdateShadowArgument" },
1338 { 1, "signedUpdateShadowArgument" },
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
}
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
,
1358 static const value_string disp_UpdateShadowResult_vals
[] = {
1360 { 1, "information" },
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
}
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"
1375 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1376 UpdateShadowResult_choice
, hf_index
, ett_disp_UpdateShadowResult
,
1380 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " %s", val_to_str(update
, disp_UpdateShadowResult_vals
, "unknown(%d)"));
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" },
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"
1409 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1413 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " %s", val_to_str(problem
, disp_ShadowProblem_vals
, "ShadowProblem(%d)"));
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
}
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
);
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
}
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
);
1456 static const value_string disp_ShadowError_vals
[] = {
1457 { 0, "unsignedShadowError" },
1458 { 1, "signedShadowError" },
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
}
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
,
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
1503 dissect_disp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*parent_tree
, void* data
)
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? */
1519 proto_tree_add_text(parent_tree
, tvb
, offset
, -1,
1520 "Internal error: can't get operation information from ROS dissector.");
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";
1540 case (ROS_OP_BIND
| ROS_OP_RESULT
): /* BindResult */
1541 disp_dissector
= dissect_disp_DSAShadowBindResult
;
1542 disp_op_name
= "Shadow-Bind-Result";
1544 case (ROS_OP_BIND
| ROS_OP_ERROR
): /* BindError */
1545 disp_dissector
= dissect_disp_DSAShadowBindError
;
1546 disp_op_name
= "Shadow-Bind-Error";
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";
1554 case 2: /* updateShadow*/
1555 disp_dissector
= dissect_disp_UpdateShadowArgument
;
1556 disp_op_name
= "Update-Shadow-Argument";
1558 case 3: /* coordinateShadowUpdate */
1559 disp_dissector
= dissect_disp_CoordinateShadowUpdateArgument
;
1560 disp_op_name
= "Coordinate-Shadow-Update-Argument";
1563 proto_tree_add_text(tree
, tvb
, offset
, -1,"Unsupported DISP opcode (%d)",
1564 session
->ros_op
& ROS_OP_OPCODE_MASK
);
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";
1574 case 2: /* updateShadow */
1575 disp_dissector
= dissect_disp_UpdateShadowResult
;
1576 disp_op_name
= "Update-Shadow-Result";
1578 case 3: /* coordinateShadowUpdate */
1579 disp_dissector
= dissect_disp_CoordinateShadowUpdateResult
;
1580 disp_op_name
= "Coordinate-Shadow-Update-Result";
1583 proto_tree_add_text(tree
, tvb
, offset
, -1,"Unsupported DISP opcode (%d)",
1584 session
->ros_op
& ROS_OP_OPCODE_MASK
);
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";
1595 proto_tree_add_text(tree
, tvb
, offset
, -1,"Unsupported DISP errcode (%d)",
1596 session
->ros_op
& ROS_OP_OPCODE_MASK
);
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){
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");
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,
1635 { &hf_disp_ModificationParameter_PDU
,
1636 { "ModificationParameter", "disp.ModificationParameter_element",
1637 FT_NONE
, BASE_NONE
, NULL
, 0,
1639 { &hf_disp_ShadowingAgreementInfo_PDU
,
1640 { "ShadowingAgreementInfo", "disp.ShadowingAgreementInfo_element",
1641 FT_NONE
, BASE_NONE
, NULL
, 0,
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,
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,
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
}},
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,
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,
1687 { &hf_disp_supplyContexts
,
1688 { "supplyContexts", "disp.supplyContexts",
1689 FT_UINT32
, BASE_DEC
, VALS(disp_T_supplyContexts_vals
), 0,
1691 { &hf_disp_allContexts
,
1692 { "allContexts", "disp.allContexts_element",
1693 FT_NONE
, BASE_NONE
, NULL
, 0,
1695 { &hf_disp_selectedContexts
,
1696 { "selectedContexts", "disp.selectedContexts",
1697 FT_UINT32
, BASE_DEC
, NULL
, 0,
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,
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,
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,
1731 { &hf_disp_allAttributes
,
1732 { "allAttributes", "disp.allAttributes_element",
1733 FT_NONE
, BASE_NONE
, NULL
, 0,
1736 { "include", "disp.include",
1737 FT_UINT32
, BASE_DEC
, NULL
, 0,
1738 "AttributeTypes", HFILL
}},
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,
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,
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,
1787 { &hf_disp_lastUpdate
,
1788 { "lastUpdate", "disp.lastUpdate",
1789 FT_STRING
, BASE_NONE
, NULL
, 0,
1791 { &hf_disp_updateStrategy
,
1792 { "updateStrategy", "disp.updateStrategy",
1793 FT_UINT32
, BASE_DEC
, VALS(disp_T_updateStrategy_vals
), 0,
1795 { &hf_disp_standardUpdate
,
1796 { "standard", "disp.standard",
1797 FT_UINT32
, BASE_DEC
, VALS(disp_StandardUpdate_vals
), 0,
1798 "StandardUpdate", HFILL
}},
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,
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,
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,
1823 { &hf_disp_encrypted
,
1824 { "encrypted", "disp.encrypted",
1825 FT_BYTES
, BASE_NONE
, NULL
, 0,
1826 "BIT_STRING", HFILL
}},
1828 { "null", "disp.null_element",
1829 FT_NONE
, BASE_NONE
, NULL
, 0,
1831 { &hf_disp_information
,
1832 { "information", "disp.information",
1833 FT_UINT32
, BASE_DEC
, VALS(disp_Information_vals
), 0,
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,
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,
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,
1867 { &hf_disp_standard
,
1868 { "standard", "disp.standard",
1869 FT_UINT32
, BASE_DEC
, VALS(disp_T_standard_vals
), 0,
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,
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,
1887 { &hf_disp_updateWindow
,
1888 { "updateWindow", "disp.updateWindow_element",
1889 FT_NONE
, BASE_NONE
, NULL
, 0,
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,
1903 { &hf_disp_updateShadowArgument
,
1904 { "updateShadowArgument", "disp.updateShadowArgument_element",
1905 FT_NONE
, BASE_NONE
, NULL
, 0,
1906 "UpdateShadowArgumentData", HFILL
}},
1908 { "start", "disp.start",
1909 FT_STRING
, BASE_NONE
, NULL
, 0,
1912 { "stop", "disp.stop",
1913 FT_STRING
, BASE_NONE
, NULL
, 0,
1915 { &hf_disp_noRefresh
,
1916 { "noRefresh", "disp.noRefresh_element",
1917 FT_NONE
, BASE_NONE
, NULL
, 0,
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
}},
1932 { "sDSE", "disp.sDSE_element",
1933 FT_NONE
, BASE_NONE
, NULL
, 0,
1934 "SDSEContent", HFILL
}},
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,
1943 { &hf_disp_sDSEType
,
1944 { "sDSEType", "disp.sDSEType",
1945 FT_BYTES
, BASE_NONE
, NULL
, 0,
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,
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,
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,
1979 { &hf_disp_sDSEChanges
,
1980 { "sDSEChanges", "disp.sDSEChanges",
1981 FT_UINT32
, BASE_DEC
, VALS(disp_T_sDSEChanges_vals
), 0,
1984 { "add", "disp.add_element",
1985 FT_NONE
, BASE_NONE
, NULL
, 0,
1986 "SDSEContent", HFILL
}},
1988 { "remove", "disp.remove_element",
1989 FT_NONE
, BASE_NONE
, NULL
, 0,
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,
2004 { "rename", "disp.rename",
2005 FT_UINT32
, BASE_DEC
, VALS(disp_T_rename_vals
), 0,
2008 { "newRDN", "disp.newRDN",
2009 FT_UINT32
, BASE_DEC
, NULL
, 0,
2010 "RelativeDistinguishedName", HFILL
}},
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,
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,
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,
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
}},
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,
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
[] = {
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
,
2112 &ett_disp_IncrementalRefresh
,
2113 &ett_disp_IncrementalStepRefresh
,
2114 &ett_disp_T_sDSEChanges
,
2115 &ett_disp_SEQUENCE_OF_SubordinateChanges
,
2116 &ett_disp_ContentChange
,
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");
2188 x509if_register_fmt(hf_disp_contextPrefix
, "cp=");
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
);