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