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