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