Rewrote handling of parameters to get rid of "funky" oid strings.
[obnox/wireshark/wip.git] / epan / dissectors / packet-dop.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* ./packet-dop.c                                                             */
4 /* ../../tools/asn2wrs.py -b -e -p dop -c dop.cnf -s packet-dop-template dop.asn */
5
6 /* Input file: packet-dop-template.c */
7
8 #line 1 "packet-dop-template.c"
9 /* packet-dop.c
10  * Routines for X.501 (DSA Operational Attributes)  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/oids.h>
43 #include <epan/asn1.h>
44
45 #include <stdio.h>
46 #include <string.h>
47
48 #include "packet-ber.h"
49 #include "packet-acse.h"
50 #include "packet-ros.h"
51
52 #include "packet-x509sat.h"
53 #include "packet-x509af.h"
54 #include "packet-x509if.h"
55 #include "packet-dap.h"
56 #include "packet-dsp.h"
57 #include "packet-crmf.h"
58
59
60 #include "packet-dop.h"
61
62 #define PNAME  "X.501 Directory Operational Binding Management Protocol"
63 #define PSNAME "DOP"
64 #define PFNAME "dop"
65
66 static guint global_dop_tcp_port = 102;
67 static guint tcp_port = 0;
68 static dissector_handle_t tpkt_handle = NULL;
69 void prefs_register_dop(void); /* forwad declaration for use in preferences registration */
70
71 /* Initialize the protocol and registered fields */
72 int proto_dop = -1;
73
74 static struct SESSION_DATA_STRUCTURE* session = NULL;
75 static const char *binding_type = NULL; /* binding_type */
76
77 static int call_dop_oid_callback(char *base_string, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, char *col_info);
78
79
80 /*--- Included file: packet-dop-hf.c ---*/
81 #line 1 "packet-dop-hf.c"
82 static int hf_dop_DSEType_PDU = -1;               /* DSEType */
83 static int hf_dop_SupplierInformation_PDU = -1;   /* SupplierInformation */
84 static int hf_dop_ConsumerInformation_PDU = -1;   /* ConsumerInformation */
85 static int hf_dop_SupplierAndConsumers_PDU = -1;  /* SupplierAndConsumers */
86 static int hf_dop_HierarchicalAgreement_PDU = -1;  /* HierarchicalAgreement */
87 static int hf_dop_SuperiorToSubordinate_PDU = -1;  /* SuperiorToSubordinate */
88 static int hf_dop_SubordinateToSuperior_PDU = -1;  /* SubordinateToSuperior */
89 static int hf_dop_SuperiorToSubordinateModification_PDU = -1;  /* SuperiorToSubordinateModification */
90 static int hf_dop_NonSpecificHierarchicalAgreement_PDU = -1;  /* NonSpecificHierarchicalAgreement */
91 static int hf_dop_NHOBSuperiorToSubordinate_PDU = -1;  /* NHOBSuperiorToSubordinate */
92 static int hf_dop_NHOBSubordinateToSuperior_PDU = -1;  /* NHOBSubordinateToSuperior */
93 static int hf_dop_ACIItem_PDU = -1;               /* ACIItem */
94 static int hf_dop_ae_title = -1;                  /* Name */
95 static int hf_dop_address = -1;                   /* PresentationAddress */
96 static int hf_dop_protocolInformation = -1;       /* SET_OF_ProtocolInformation */
97 static int hf_dop_protocolInformation_item = -1;  /* ProtocolInformation */
98 static int hf_dop_agreementID = -1;               /* OperationalBindingID */
99 static int hf_dop_supplier_is_master = -1;        /* BOOLEAN */
100 static int hf_dop_non_supplying_master = -1;      /* AccessPoint */
101 static int hf_dop_consumers = -1;                 /* SET_OF_AccessPoint */
102 static int hf_dop_consumers_item = -1;            /* AccessPoint */
103 static int hf_dop_bindingType = -1;               /* BindingType */
104 static int hf_dop_bindingID = -1;                 /* OperationalBindingID */
105 static int hf_dop_accessPoint = -1;               /* AccessPoint */
106 static int hf_dop_establishInitiator = -1;        /* EstablishArgumentInitiator */
107 static int hf_dop_establishSymmetric = -1;        /* EstablishSymmetric */
108 static int hf_dop_establishRoleAInitiates = -1;   /* EstablishRoleAInitiates */
109 static int hf_dop_establishRoleBInitiates = -1;   /* EstablishRoleBInitiates */
110 static int hf_dop_agreement = -1;                 /* T_agreement */
111 static int hf_dop_valid = -1;                     /* Validity */
112 static int hf_dop_securityParameters = -1;        /* SecurityParameters */
113 static int hf_dop_unsignedEstablishOperationalBindingArgument = -1;  /* EstablishOperationalBindingArgumentData */
114 static int hf_dop_signedEstablishOperationalBindingArgument = -1;  /* T_signedEstablishOperationalBindingArgument */
115 static int hf_dop_establishOperationalBindingArgument = -1;  /* EstablishOperationalBindingArgumentData */
116 static int hf_dop_algorithmIdentifier = -1;       /* AlgorithmIdentifier */
117 static int hf_dop_encrypted = -1;                 /* BIT_STRING */
118 static int hf_dop_identifier = -1;                /* T_identifier */
119 static int hf_dop_version = -1;                   /* T_version */
120 static int hf_dop_validFrom = -1;                 /* T_validFrom */
121 static int hf_dop_now = -1;                       /* NULL */
122 static int hf_dop_time = -1;                      /* Time */
123 static int hf_dop_validUntil = -1;                /* T_validUntil */
124 static int hf_dop_explicitTermination = -1;       /* NULL */
125 static int hf_dop_utcTime = -1;                   /* UTCTime */
126 static int hf_dop_generalizedTime = -1;           /* GeneralizedTime */
127 static int hf_dop_initiator = -1;                 /* T_initiator */
128 static int hf_dop_symmetric = -1;                 /* T_symmetric */
129 static int hf_dop_roleA_replies = -1;             /* T_roleA_replies */
130 static int hf_dop_roleB_replies = -1;             /* T_roleB_replies */
131 static int hf_dop_performer = -1;                 /* DistinguishedName */
132 static int hf_dop_aliasDereferenced = -1;         /* BOOLEAN */
133 static int hf_dop_notification = -1;              /* SEQUENCE_SIZE_1_MAX_OF_Attribute */
134 static int hf_dop_notification_item = -1;         /* Attribute */
135 static int hf_dop_modifyInitiator = -1;           /* ModifyArgumentInitiator */
136 static int hf_dop_modifySymmetric = -1;           /* ModifySymmetric */
137 static int hf_dop_modifyRoleAInitiates = -1;      /* ModifyRoleAInitiates */
138 static int hf_dop_modifyRoleBInitiates = -1;      /* ModifyRoleBInitiates */
139 static int hf_dop_newBindingID = -1;              /* OperationalBindingID */
140 static int hf_dop_argumentNewAgreement = -1;      /* ArgumentNewAgreement */
141 static int hf_dop_unsignedModifyOperationalBindingArgument = -1;  /* ModifyOperationalBindingArgumentData */
142 static int hf_dop_signedModifyOperationalBindingArgument = -1;  /* T_signedModifyOperationalBindingArgument */
143 static int hf_dop_modifyOperationalBindingArgument = -1;  /* ModifyOperationalBindingArgumentData */
144 static int hf_dop_null = -1;                      /* NULL */
145 static int hf_dop_protectedModifyResult = -1;     /* ProtectedModifyResult */
146 static int hf_dop_modifyOperationalBindingResultData = -1;  /* ModifyOperationalBindingResultData */
147 static int hf_dop_resultNewAgreement = -1;        /* ResultNewAgreement */
148 static int hf_dop_terminateInitiator = -1;        /* TerminateArgumentInitiator */
149 static int hf_dop_terminateSymmetric = -1;        /* TerminateSymmetric */
150 static int hf_dop_terminateRoleAInitiates = -1;   /* TerminateRoleAInitiates */
151 static int hf_dop_terminateRoleBInitiates = -1;   /* TerminateRoleBInitiates */
152 static int hf_dop_terminateAtTime = -1;           /* Time */
153 static int hf_dop_unsignedTerminateOperationalBindingArgument = -1;  /* TerminateOperationalBindingArgumentData */
154 static int hf_dop_signedTerminateOperationalBindingArgument = -1;  /* T_signedTerminateOperationalBindingArgument */
155 static int hf_dop_terminateOperationalBindingArgument = -1;  /* TerminateOperationalBindingArgumentData */
156 static int hf_dop_protectedTerminateResult = -1;  /* ProtectedTerminateResult */
157 static int hf_dop_terminateOperationalBindingResultData = -1;  /* TerminateOperationalBindingResultData */
158 static int hf_dop_terminateAtGeneralizedTime = -1;  /* GeneralizedTime */
159 static int hf_dop_problem = -1;                   /* T_problem */
160 static int hf_dop_agreementProposal = -1;         /* T_agreementProposal */
161 static int hf_dop_retryAt = -1;                   /* Time */
162 static int hf_dop_rdn = -1;                       /* RelativeDistinguishedName */
163 static int hf_dop_immediateSuperior = -1;         /* DistinguishedName */
164 static int hf_dop_contextPrefixInfo = -1;         /* DITcontext */
165 static int hf_dop_entryInfo = -1;                 /* SET_OF_Attribute */
166 static int hf_dop_entryInfo_item = -1;            /* Attribute */
167 static int hf_dop_immediateSuperiorInfo = -1;     /* SET_OF_Attribute */
168 static int hf_dop_immediateSuperiorInfo_item = -1;  /* Attribute */
169 static int hf_dop_DITcontext_item = -1;           /* Vertex */
170 static int hf_dop_admPointInfo = -1;              /* SET_OF_Attribute */
171 static int hf_dop_admPointInfo_item = -1;         /* Attribute */
172 static int hf_dop_subentries = -1;                /* SET_OF_SubentryInfo */
173 static int hf_dop_subentries_item = -1;           /* SubentryInfo */
174 static int hf_dop_accessPoints = -1;              /* MasterAndShadowAccessPoints */
175 static int hf_dop_info = -1;                      /* SET_OF_Attribute */
176 static int hf_dop_info_item = -1;                 /* Attribute */
177 static int hf_dop_alias = -1;                     /* BOOLEAN */
178 static int hf_dop_identificationTag = -1;         /* DirectoryString */
179 static int hf_dop_precedence = -1;                /* Precedence */
180 static int hf_dop_authenticationLevel = -1;       /* AuthenticationLevel */
181 static int hf_dop_itemOrUserFirst = -1;           /* T_itemOrUserFirst */
182 static int hf_dop_itemFirst = -1;                 /* T_itemFirst */
183 static int hf_dop_protectedItems = -1;            /* ProtectedItems */
184 static int hf_dop_itemPermissions = -1;           /* SET_OF_ItemPermission */
185 static int hf_dop_itemPermissions_item = -1;      /* ItemPermission */
186 static int hf_dop_userFirst = -1;                 /* T_userFirst */
187 static int hf_dop_userClasses = -1;               /* UserClasses */
188 static int hf_dop_userPermissions = -1;           /* SET_OF_UserPermission */
189 static int hf_dop_userPermissions_item = -1;      /* UserPermission */
190 static int hf_dop_entry = -1;                     /* NULL */
191 static int hf_dop_allUserAttributeTypes = -1;     /* NULL */
192 static int hf_dop_attributeType = -1;             /* SET_OF_AttributeType */
193 static int hf_dop_attributeType_item = -1;        /* AttributeType */
194 static int hf_dop_allAttributeValues = -1;        /* SET_OF_AttributeType */
195 static int hf_dop_allAttributeValues_item = -1;   /* AttributeType */
196 static int hf_dop_allUserAttributeTypesAndValues = -1;  /* NULL */
197 static int hf_dop_attributeValue = -1;            /* SET_OF_AttributeTypeAndValue */
198 static int hf_dop_attributeValue_item = -1;       /* AttributeTypeAndValue */
199 static int hf_dop_selfValue = -1;                 /* SET_OF_AttributeType */
200 static int hf_dop_selfValue_item = -1;            /* AttributeType */
201 static int hf_dop_rangeOfValues = -1;             /* Filter */
202 static int hf_dop_maxValueCount = -1;             /* SET_OF_MaxValueCount */
203 static int hf_dop_maxValueCount_item = -1;        /* MaxValueCount */
204 static int hf_dop_maxImmSub = -1;                 /* INTEGER */
205 static int hf_dop_restrictedBy = -1;              /* SET_OF_RestrictedValue */
206 static int hf_dop_restrictedBy_item = -1;         /* RestrictedValue */
207 static int hf_dop_contexts = -1;                  /* SET_OF_ContextAssertion */
208 static int hf_dop_contexts_item = -1;             /* ContextAssertion */
209 static int hf_dop_classes = -1;                   /* Refinement */
210 static int hf_dop_type = -1;                      /* AttributeType */
211 static int hf_dop_maxCount = -1;                  /* INTEGER */
212 static int hf_dop_valuesIn = -1;                  /* AttributeType */
213 static int hf_dop_allUsers = -1;                  /* NULL */
214 static int hf_dop_thisEntry = -1;                 /* NULL */
215 static int hf_dop_name = -1;                      /* SET_OF_NameAndOptionalUID */
216 static int hf_dop_name_item = -1;                 /* NameAndOptionalUID */
217 static int hf_dop_userGroup = -1;                 /* SET_OF_NameAndOptionalUID */
218 static int hf_dop_userGroup_item = -1;            /* NameAndOptionalUID */
219 static int hf_dop_subtree = -1;                   /* SET_OF_SubtreeSpecification */
220 static int hf_dop_subtree_item = -1;              /* SubtreeSpecification */
221 static int hf_dop_grantsAndDenials = -1;          /* GrantsAndDenials */
222 static int hf_dop_basicLevels = -1;               /* T_basicLevels */
223 static int hf_dop_level = -1;                     /* T_level */
224 static int hf_dop_localQualifier = -1;            /* INTEGER */
225 static int hf_dop_signed = -1;                    /* BOOLEAN */
226 static int hf_dop_other = -1;                     /* EXTERNALt */
227 /* named bits */
228 static int hf_dop_DSEType_root = -1;
229 static int hf_dop_DSEType_glue = -1;
230 static int hf_dop_DSEType_cp = -1;
231 static int hf_dop_DSEType_entry = -1;
232 static int hf_dop_DSEType_alias = -1;
233 static int hf_dop_DSEType_subr = -1;
234 static int hf_dop_DSEType_nssr = -1;
235 static int hf_dop_DSEType_supr = -1;
236 static int hf_dop_DSEType_xr = -1;
237 static int hf_dop_DSEType_admPoint = -1;
238 static int hf_dop_DSEType_subentry = -1;
239 static int hf_dop_DSEType_shadow = -1;
240 static int hf_dop_DSEType_immSupr = -1;
241 static int hf_dop_DSEType_rhob = -1;
242 static int hf_dop_DSEType_sa = -1;
243 static int hf_dop_DSEType_dsSubentry = -1;
244 static int hf_dop_DSEType_familyMember = -1;
245 static int hf_dop_GrantsAndDenials_grantAdd = -1;
246 static int hf_dop_GrantsAndDenials_denyAdd = -1;
247 static int hf_dop_GrantsAndDenials_grantDiscloseOnError = -1;
248 static int hf_dop_GrantsAndDenials_denyDiscloseOnError = -1;
249 static int hf_dop_GrantsAndDenials_grantRead = -1;
250 static int hf_dop_GrantsAndDenials_denyRead = -1;
251 static int hf_dop_GrantsAndDenials_grantRemove = -1;
252 static int hf_dop_GrantsAndDenials_denyRemove = -1;
253 static int hf_dop_GrantsAndDenials_grantBrowse = -1;
254 static int hf_dop_GrantsAndDenials_denyBrowse = -1;
255 static int hf_dop_GrantsAndDenials_grantExport = -1;
256 static int hf_dop_GrantsAndDenials_denyExport = -1;
257 static int hf_dop_GrantsAndDenials_grantImport = -1;
258 static int hf_dop_GrantsAndDenials_denyImport = -1;
259 static int hf_dop_GrantsAndDenials_grantModify = -1;
260 static int hf_dop_GrantsAndDenials_denyModify = -1;
261 static int hf_dop_GrantsAndDenials_grantRename = -1;
262 static int hf_dop_GrantsAndDenials_denyRename = -1;
263 static int hf_dop_GrantsAndDenials_grantReturnDN = -1;
264 static int hf_dop_GrantsAndDenials_denyReturnDN = -1;
265 static int hf_dop_GrantsAndDenials_grantCompare = -1;
266 static int hf_dop_GrantsAndDenials_denyCompare = -1;
267 static int hf_dop_GrantsAndDenials_grantFilterMatch = -1;
268 static int hf_dop_GrantsAndDenials_denyFilterMatch = -1;
269 static int hf_dop_GrantsAndDenials_grantInvoke = -1;
270 static int hf_dop_GrantsAndDenials_denyInvoke = -1;
271
272 /*--- End of included file: packet-dop-hf.c ---*/
273 #line 72 "packet-dop-template.c"
274
275 /* Initialize the subtree pointers */
276 static gint ett_dop = -1;
277 static gint ett_dop_unknown = -1;
278
279 /*--- Included file: packet-dop-ett.c ---*/
280 #line 1 "packet-dop-ett.c"
281 static gint ett_dop_DSEType = -1;
282 static gint ett_dop_SupplierOrConsumer = -1;
283 static gint ett_dop_SET_OF_ProtocolInformation = -1;
284 static gint ett_dop_SupplierInformation = -1;
285 static gint ett_dop_SupplierAndConsumers = -1;
286 static gint ett_dop_SET_OF_AccessPoint = -1;
287 static gint ett_dop_EstablishOperationalBindingArgumentData = -1;
288 static gint ett_dop_EstablishArgumentInitiator = -1;
289 static gint ett_dop_EstablishOperationalBindingArgument = -1;
290 static gint ett_dop_T_signedEstablishOperationalBindingArgument = -1;
291 static gint ett_dop_OperationalBindingID = -1;
292 static gint ett_dop_Validity = -1;
293 static gint ett_dop_T_validFrom = -1;
294 static gint ett_dop_T_validUntil = -1;
295 static gint ett_dop_Time = -1;
296 static gint ett_dop_EstablishOperationalBindingResult = -1;
297 static gint ett_dop_T_initiator = -1;
298 static gint ett_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute = -1;
299 static gint ett_dop_ModifyOperationalBindingArgumentData = -1;
300 static gint ett_dop_ModifyArgumentInitiator = -1;
301 static gint ett_dop_ModifyOperationalBindingArgument = -1;
302 static gint ett_dop_T_signedModifyOperationalBindingArgument = -1;
303 static gint ett_dop_ModifyOperationalBindingResult = -1;
304 static gint ett_dop_ProtectedModifyResult = -1;
305 static gint ett_dop_ModifyOperationalBindingResultData = -1;
306 static gint ett_dop_TerminateOperationalBindingArgumentData = -1;
307 static gint ett_dop_TerminateArgumentInitiator = -1;
308 static gint ett_dop_TerminateOperationalBindingArgument = -1;
309 static gint ett_dop_T_signedTerminateOperationalBindingArgument = -1;
310 static gint ett_dop_TerminateOperationalBindingResult = -1;
311 static gint ett_dop_ProtectedTerminateResult = -1;
312 static gint ett_dop_TerminateOperationalBindingResultData = -1;
313 static gint ett_dop_OpBindingErrorParam = -1;
314 static gint ett_dop_HierarchicalAgreement = -1;
315 static gint ett_dop_SuperiorToSubordinate = -1;
316 static gint ett_dop_SET_OF_Attribute = -1;
317 static gint ett_dop_DITcontext = -1;
318 static gint ett_dop_Vertex = -1;
319 static gint ett_dop_SET_OF_SubentryInfo = -1;
320 static gint ett_dop_SubentryInfo = -1;
321 static gint ett_dop_SubordinateToSuperior = -1;
322 static gint ett_dop_SuperiorToSubordinateModification = -1;
323 static gint ett_dop_NonSpecificHierarchicalAgreement = -1;
324 static gint ett_dop_NHOBSuperiorToSubordinate = -1;
325 static gint ett_dop_NHOBSubordinateToSuperior = -1;
326 static gint ett_dop_ACIItem = -1;
327 static gint ett_dop_T_itemOrUserFirst = -1;
328 static gint ett_dop_T_itemFirst = -1;
329 static gint ett_dop_SET_OF_ItemPermission = -1;
330 static gint ett_dop_T_userFirst = -1;
331 static gint ett_dop_SET_OF_UserPermission = -1;
332 static gint ett_dop_ProtectedItems = -1;
333 static gint ett_dop_SET_OF_AttributeType = -1;
334 static gint ett_dop_SET_OF_AttributeTypeAndValue = -1;
335 static gint ett_dop_SET_OF_MaxValueCount = -1;
336 static gint ett_dop_SET_OF_RestrictedValue = -1;
337 static gint ett_dop_SET_OF_ContextAssertion = -1;
338 static gint ett_dop_MaxValueCount = -1;
339 static gint ett_dop_RestrictedValue = -1;
340 static gint ett_dop_UserClasses = -1;
341 static gint ett_dop_SET_OF_NameAndOptionalUID = -1;
342 static gint ett_dop_SET_OF_SubtreeSpecification = -1;
343 static gint ett_dop_ItemPermission = -1;
344 static gint ett_dop_UserPermission = -1;
345 static gint ett_dop_AuthenticationLevel = -1;
346 static gint ett_dop_T_basicLevels = -1;
347 static gint ett_dop_GrantsAndDenials = -1;
348
349 /*--- End of included file: packet-dop-ett.c ---*/
350 #line 77 "packet-dop-template.c"
351
352 /* Dissector table */
353 static dissector_table_t dop_dissector_table;
354
355 static void append_oid(packet_info *pinfo, const char *oid)
356 {
357         const char *name = NULL;
358
359   if(check_col(pinfo->cinfo, COL_INFO)) {
360     name = get_oid_str_name(oid);
361     col_append_fstr(pinfo->cinfo, COL_INFO, " %s", name ? name : oid);
362   }
363 }
364
365
366 /*--- Included file: packet-dop-fn.c ---*/
367 #line 1 "packet-dop-fn.c"
368 /*--- Fields for imported types ---*/
369
370 static int dissect_ae_title(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
371   return dissect_x509if_Name(FALSE, tvb, offset, actx, tree, hf_dop_ae_title);
372 }
373 static int dissect_address(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
374   return dissect_x509sat_PresentationAddress(FALSE, tvb, offset, actx, tree, hf_dop_address);
375 }
376 static int dissect_protocolInformation_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
377   return dissect_x509sat_ProtocolInformation(FALSE, tvb, offset, actx, tree, hf_dop_protocolInformation_item);
378 }
379 static int dissect_non_supplying_master(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
380   return dissect_dsp_AccessPoint(FALSE, tvb, offset, actx, tree, hf_dop_non_supplying_master);
381 }
382 static int dissect_consumers_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
383   return dissect_dsp_AccessPoint(FALSE, tvb, offset, actx, tree, hf_dop_consumers_item);
384 }
385 static int dissect_accessPoint(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
386   return dissect_dsp_AccessPoint(FALSE, tvb, offset, actx, tree, hf_dop_accessPoint);
387 }
388 static int dissect_securityParameters(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
389   return dissect_dap_SecurityParameters(FALSE, tvb, offset, actx, tree, hf_dop_securityParameters);
390 }
391 static int dissect_algorithmIdentifier(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
392   return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, actx, tree, hf_dop_algorithmIdentifier);
393 }
394 static int dissect_performer(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
395   return dissect_x509if_DistinguishedName(FALSE, tvb, offset, actx, tree, hf_dop_performer);
396 }
397 static int dissect_notification_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
398   return dissect_x509if_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_notification_item);
399 }
400 static int dissect_rdn(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
401   return dissect_x509if_RelativeDistinguishedName(FALSE, tvb, offset, actx, tree, hf_dop_rdn);
402 }
403 static int dissect_immediateSuperior(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
404   return dissect_x509if_DistinguishedName(FALSE, tvb, offset, actx, tree, hf_dop_immediateSuperior);
405 }
406 static int dissect_entryInfo_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
407   return dissect_x509if_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_entryInfo_item);
408 }
409 static int dissect_immediateSuperiorInfo_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
410   return dissect_x509if_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_immediateSuperiorInfo_item);
411 }
412 static int dissect_admPointInfo_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
413   return dissect_x509if_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_admPointInfo_item);
414 }
415 static int dissect_accessPoints(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
416   return dissect_dsp_MasterAndShadowAccessPoints(FALSE, tvb, offset, actx, tree, hf_dop_accessPoints);
417 }
418 static int dissect_info_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
419   return dissect_x509if_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_info_item);
420 }
421 static int dissect_identificationTag(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
422   return dissect_x509sat_DirectoryString(FALSE, tvb, offset, actx, tree, hf_dop_identificationTag);
423 }
424 static int dissect_attributeType_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
425   return dissect_x509if_AttributeType(FALSE, tvb, offset, actx, tree, hf_dop_attributeType_item);
426 }
427 static int dissect_allAttributeValues_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
428   return dissect_x509if_AttributeType(FALSE, tvb, offset, actx, tree, hf_dop_allAttributeValues_item);
429 }
430 static int dissect_attributeValue_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
431   return dissect_crmf_AttributeTypeAndValue(FALSE, tvb, offset, actx, tree, hf_dop_attributeValue_item);
432 }
433 static int dissect_selfValue_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
434   return dissect_x509if_AttributeType(FALSE, tvb, offset, actx, tree, hf_dop_selfValue_item);
435 }
436 static int dissect_rangeOfValues(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
437   return dissect_dap_Filter(FALSE, tvb, offset, actx, tree, hf_dop_rangeOfValues);
438 }
439 static int dissect_contexts_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
440   return dissect_x509if_ContextAssertion(FALSE, tvb, offset, actx, tree, hf_dop_contexts_item);
441 }
442 static int dissect_classes(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
443   return dissect_x509if_Refinement(FALSE, tvb, offset, actx, tree, hf_dop_classes);
444 }
445 static int dissect_type(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
446   return dissect_x509if_AttributeType(FALSE, tvb, offset, actx, tree, hf_dop_type);
447 }
448 static int dissect_valuesIn(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
449   return dissect_x509if_AttributeType(FALSE, tvb, offset, actx, tree, hf_dop_valuesIn);
450 }
451 static int dissect_name_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
452   return dissect_x509sat_NameAndOptionalUID(FALSE, tvb, offset, actx, tree, hf_dop_name_item);
453 }
454 static int dissect_userGroup_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
455   return dissect_x509sat_NameAndOptionalUID(FALSE, tvb, offset, actx, tree, hf_dop_userGroup_item);
456 }
457 static int dissect_subtree_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
458   return dissect_x509if_SubtreeSpecification(FALSE, tvb, offset, actx, tree, hf_dop_subtree_item);
459 }
460 static int dissect_other(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
461   return dissect_acse_EXTERNALt(FALSE, tvb, offset, actx, tree, hf_dop_other);
462 }
463
464
465 static const asn_namedbit DSEType_bits[] = {
466   {  0, &hf_dop_DSEType_root, -1, -1, "root", NULL },
467   {  1, &hf_dop_DSEType_glue, -1, -1, "glue", NULL },
468   {  2, &hf_dop_DSEType_cp, -1, -1, "cp", NULL },
469   {  3, &hf_dop_DSEType_entry, -1, -1, "entry", NULL },
470   {  4, &hf_dop_DSEType_alias, -1, -1, "alias", NULL },
471   {  5, &hf_dop_DSEType_subr, -1, -1, "subr", NULL },
472   {  6, &hf_dop_DSEType_nssr, -1, -1, "nssr", NULL },
473   {  7, &hf_dop_DSEType_supr, -1, -1, "supr", NULL },
474   {  8, &hf_dop_DSEType_xr, -1, -1, "xr", NULL },
475   {  9, &hf_dop_DSEType_admPoint, -1, -1, "admPoint", NULL },
476   { 10, &hf_dop_DSEType_subentry, -1, -1, "subentry", NULL },
477   { 11, &hf_dop_DSEType_shadow, -1, -1, "shadow", NULL },
478   { 13, &hf_dop_DSEType_immSupr, -1, -1, "immSupr", NULL },
479   { 14, &hf_dop_DSEType_rhob, -1, -1, "rhob", NULL },
480   { 15, &hf_dop_DSEType_sa, -1, -1, "sa", NULL },
481   { 16, &hf_dop_DSEType_dsSubentry, -1, -1, "dsSubentry", NULL },
482   { 17, &hf_dop_DSEType_familyMember, -1, -1, "familyMember", NULL },
483   { 0, NULL, 0, 0, NULL, NULL }
484 };
485
486 int
487 dissect_dop_DSEType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
488   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
489                                     DSEType_bits, hf_index, ett_dop_DSEType,
490                                     NULL);
491
492   return offset;
493 }
494
495
496 static const ber_old_sequence_t SET_OF_ProtocolInformation_set_of[1] = {
497   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protocolInformation_item },
498 };
499
500 static int
501 dissect_dop_SET_OF_ProtocolInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
502   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
503                                      SET_OF_ProtocolInformation_set_of, hf_index, ett_dop_SET_OF_ProtocolInformation);
504
505   return offset;
506 }
507 static int dissect_protocolInformation(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
508   return dissect_dop_SET_OF_ProtocolInformation(FALSE, tvb, offset, actx, tree, hf_dop_protocolInformation);
509 }
510
511
512
513 static int
514 dissect_dop_T_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
515 #line 173 "dop.cnf"
516         guint32 value;
517
518           offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
519                                   &value);
520
521
522         if (check_col(actx->pinfo->cinfo, COL_INFO)) {
523                         col_append_fstr(actx->pinfo->cinfo, COL_INFO, " id=%d", value);
524         }
525
526
527
528
529
530   return offset;
531 }
532 static int dissect_identifier(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
533   return dissect_dop_T_identifier(FALSE, tvb, offset, actx, tree, hf_dop_identifier);
534 }
535
536
537
538 static int
539 dissect_dop_T_version(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
540 #line 184 "dop.cnf"
541         guint32 value;
542
543           offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
544                                   &value);
545
546
547         if (check_col(actx->pinfo->cinfo, COL_INFO)) {
548                         col_append_fstr(actx->pinfo->cinfo, COL_INFO, " id=%d", value);
549         }
550
551
552
553   return offset;
554 }
555 static int dissect_version(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
556   return dissect_dop_T_version(FALSE, tvb, offset, actx, tree, hf_dop_version);
557 }
558
559
560 static const ber_old_sequence_t OperationalBindingID_sequence[] = {
561   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_identifier },
562   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_version },
563   { 0, 0, 0, NULL }
564 };
565
566 int
567 dissect_dop_OperationalBindingID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
568   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
569                                        OperationalBindingID_sequence, hf_index, ett_dop_OperationalBindingID);
570
571   return offset;
572 }
573 static int dissect_agreementID(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
574   return dissect_dop_OperationalBindingID(FALSE, tvb, offset, actx, tree, hf_dop_agreementID);
575 }
576 static int dissect_bindingID(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
577   return dissect_dop_OperationalBindingID(FALSE, tvb, offset, actx, tree, hf_dop_bindingID);
578 }
579 static int dissect_newBindingID(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
580   return dissect_dop_OperationalBindingID(FALSE, tvb, offset, actx, tree, hf_dop_newBindingID);
581 }
582
583
584 static const ber_old_sequence_t SupplierOrConsumer_set[] = {
585   { BER_CLASS_CON, 0, 0, dissect_ae_title },
586   { BER_CLASS_CON, 1, 0, dissect_address },
587   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_protocolInformation },
588   { BER_CLASS_CON, 3, 0, dissect_agreementID },
589   { 0, 0, 0, NULL }
590 };
591
592 static int
593 dissect_dop_SupplierOrConsumer(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
594   offset = dissect_ber_old_set(implicit_tag, actx, tree, tvb, offset,
595                                   SupplierOrConsumer_set, hf_index, ett_dop_SupplierOrConsumer);
596
597   return offset;
598 }
599
600
601
602 static int
603 dissect_dop_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
604   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index);
605
606   return offset;
607 }
608 static int dissect_supplier_is_master(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
609   return dissect_dop_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dop_supplier_is_master);
610 }
611 static int dissect_aliasDereferenced(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
612   return dissect_dop_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dop_aliasDereferenced);
613 }
614 static int dissect_alias(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
615   return dissect_dop_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dop_alias);
616 }
617 static int dissect_signed(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
618   return dissect_dop_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_dop_signed);
619 }
620
621
622 static const ber_old_sequence_t SupplierInformation_set[] = {
623   { BER_CLASS_CON, 0, 0, dissect_ae_title },
624   { BER_CLASS_CON, 1, 0, dissect_address },
625   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_protocolInformation },
626   { BER_CLASS_CON, 3, 0, dissect_agreementID },
627   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_supplier_is_master },
628   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_non_supplying_master },
629   { 0, 0, 0, NULL }
630 };
631
632 static int
633 dissect_dop_SupplierInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
634   offset = dissect_ber_old_set(implicit_tag, actx, tree, tvb, offset,
635                                   SupplierInformation_set, hf_index, ett_dop_SupplierInformation);
636
637   return offset;
638 }
639
640
641
642 static int
643 dissect_dop_ConsumerInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
644   offset = dissect_dop_SupplierOrConsumer(implicit_tag, tvb, offset, actx, tree, hf_index);
645
646   return offset;
647 }
648
649
650 static const ber_old_sequence_t SET_OF_AccessPoint_set_of[1] = {
651   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_consumers_item },
652 };
653
654 static int
655 dissect_dop_SET_OF_AccessPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
656   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
657                                      SET_OF_AccessPoint_set_of, hf_index, ett_dop_SET_OF_AccessPoint);
658
659   return offset;
660 }
661 static int dissect_consumers(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
662   return dissect_dop_SET_OF_AccessPoint(FALSE, tvb, offset, actx, tree, hf_dop_consumers);
663 }
664
665
666 static const ber_old_sequence_t SupplierAndConsumers_set[] = {
667   { BER_CLASS_CON, 0, 0, dissect_ae_title },
668   { BER_CLASS_CON, 1, 0, dissect_address },
669   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_protocolInformation },
670   { BER_CLASS_CON, 3, 0, dissect_consumers },
671   { 0, 0, 0, NULL }
672 };
673
674 int
675 dissect_dop_SupplierAndConsumers(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
676   offset = dissect_ber_old_set(implicit_tag, actx, tree, tvb, offset,
677                                   SupplierAndConsumers_set, hf_index, ett_dop_SupplierAndConsumers);
678
679   return offset;
680 }
681
682
683
684 static int
685 dissect_dop_DSAOperationalManagementBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
686   offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
687
688   return offset;
689 }
690
691
692
693 static int
694 dissect_dop_DSAOperationalManagementBindResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
695   offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, actx, tree, hf_index);
696
697   return offset;
698 }
699
700
701
702 static int
703 dissect_dop_DSAOperationalManagementBindError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
704   offset = dissect_dap_DirectoryBindError(implicit_tag, tvb, offset, actx, tree, hf_index);
705
706   return offset;
707 }
708
709
710
711 static int
712 dissect_dop_BindingType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
713   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &binding_type);
714
715 #line 104 "dop.cnf"
716   append_oid(actx->pinfo, binding_type);
717
718   return offset;
719 }
720 static int dissect_bindingType(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
721   return dissect_dop_BindingType(FALSE, tvb, offset, actx, tree, hf_dop_bindingType);
722 }
723
724
725
726 static int
727 dissect_dop_EstablishSymmetric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
728 #line 108 "dop.cnf"
729
730   offset = call_dop_oid_callback("establish.symmetric", tvb, offset, actx->pinfo, tree, "symmetric");
731
732
733
734   return offset;
735 }
736 static int dissect_establishSymmetric(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
737   return dissect_dop_EstablishSymmetric(FALSE, tvb, offset, actx, tree, hf_dop_establishSymmetric);
738 }
739
740
741
742 static int
743 dissect_dop_EstablishRoleAInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
744 #line 112 "dop.cnf"
745
746   offset = call_dop_oid_callback("establish.rolea", tvb, offset, actx->pinfo, tree, "roleA");
747
748
749
750   return offset;
751 }
752 static int dissect_establishRoleAInitiates(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
753   return dissect_dop_EstablishRoleAInitiates(FALSE, tvb, offset, actx, tree, hf_dop_establishRoleAInitiates);
754 }
755
756
757
758 static int
759 dissect_dop_EstablishRoleBInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
760 #line 116 "dop.cnf"
761
762   offset = call_dop_oid_callback("establish.roleb", tvb, offset, actx->pinfo, tree, "roleB");
763
764
765
766   return offset;
767 }
768 static int dissect_establishRoleBInitiates(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
769   return dissect_dop_EstablishRoleBInitiates(FALSE, tvb, offset, actx, tree, hf_dop_establishRoleBInitiates);
770 }
771
772
773 static const value_string dop_EstablishArgumentInitiator_vals[] = {
774   {   3, "symmetric" },
775   {   4, "roleA-initiates" },
776   {   5, "roleB-initiates" },
777   { 0, NULL }
778 };
779
780 static const ber_old_choice_t EstablishArgumentInitiator_choice[] = {
781   {   3, BER_CLASS_CON, 3, 0, dissect_establishSymmetric },
782   {   4, BER_CLASS_CON, 4, 0, dissect_establishRoleAInitiates },
783   {   5, BER_CLASS_CON, 5, 0, dissect_establishRoleBInitiates },
784   { 0, 0, 0, 0, NULL }
785 };
786
787 static int
788 dissect_dop_EstablishArgumentInitiator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
789   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
790                                      EstablishArgumentInitiator_choice, hf_index, ett_dop_EstablishArgumentInitiator,
791                                      NULL);
792
793   return offset;
794 }
795 static int dissect_establishInitiator(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
796   return dissect_dop_EstablishArgumentInitiator(FALSE, tvb, offset, actx, tree, hf_dop_establishInitiator);
797 }
798
799
800
801 static int
802 dissect_dop_T_agreement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
803 #line 144 "dop.cnf"
804
805   offset = call_dop_oid_callback("agreement", tvb, offset, actx->pinfo, tree, NULL);
806
807
808
809   return offset;
810 }
811 static int dissect_agreement(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
812   return dissect_dop_T_agreement(FALSE, tvb, offset, actx, tree, hf_dop_agreement);
813 }
814
815
816
817 static int
818 dissect_dop_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
819   offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
820
821   return offset;
822 }
823 static int dissect_now(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
824   return dissect_dop_NULL(FALSE, tvb, offset, actx, tree, hf_dop_now);
825 }
826 static int dissect_explicitTermination(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
827   return dissect_dop_NULL(FALSE, tvb, offset, actx, tree, hf_dop_explicitTermination);
828 }
829 static int dissect_null(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
830   return dissect_dop_NULL(FALSE, tvb, offset, actx, tree, hf_dop_null);
831 }
832 static int dissect_entry(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
833   return dissect_dop_NULL(FALSE, tvb, offset, actx, tree, hf_dop_entry);
834 }
835 static int dissect_allUserAttributeTypes(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
836   return dissect_dop_NULL(FALSE, tvb, offset, actx, tree, hf_dop_allUserAttributeTypes);
837 }
838 static int dissect_allUserAttributeTypesAndValues(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
839   return dissect_dop_NULL(FALSE, tvb, offset, actx, tree, hf_dop_allUserAttributeTypesAndValues);
840 }
841 static int dissect_allUsers(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
842   return dissect_dop_NULL(FALSE, tvb, offset, actx, tree, hf_dop_allUsers);
843 }
844 static int dissect_thisEntry(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
845   return dissect_dop_NULL(FALSE, tvb, offset, actx, tree, hf_dop_thisEntry);
846 }
847
848
849
850 static int
851 dissect_dop_UTCTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
852   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime,
853                                             actx, tree, tvb, offset, hf_index,
854                                             NULL);
855
856   return offset;
857 }
858 static int dissect_utcTime(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
859   return dissect_dop_UTCTime(FALSE, tvb, offset, actx, tree, hf_dop_utcTime);
860 }
861
862
863
864 static int
865 dissect_dop_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
866   offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
867
868   return offset;
869 }
870 static int dissect_generalizedTime(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
871   return dissect_dop_GeneralizedTime(FALSE, tvb, offset, actx, tree, hf_dop_generalizedTime);
872 }
873 static int dissect_terminateAtGeneralizedTime(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
874   return dissect_dop_GeneralizedTime(FALSE, tvb, offset, actx, tree, hf_dop_terminateAtGeneralizedTime);
875 }
876
877
878 static const value_string dop_Time_vals[] = {
879   {   0, "utcTime" },
880   {   1, "generalizedTime" },
881   { 0, NULL }
882 };
883
884 static const ber_old_choice_t Time_choice[] = {
885   {   0, BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_utcTime },
886   {   1, BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_generalizedTime },
887   { 0, 0, 0, 0, NULL }
888 };
889
890 static int
891 dissect_dop_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
892   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
893                                      Time_choice, hf_index, ett_dop_Time,
894                                      NULL);
895
896   return offset;
897 }
898 static int dissect_time(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
899   return dissect_dop_Time(FALSE, tvb, offset, actx, tree, hf_dop_time);
900 }
901 static int dissect_terminateAtTime(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
902   return dissect_dop_Time(FALSE, tvb, offset, actx, tree, hf_dop_terminateAtTime);
903 }
904 static int dissect_retryAt(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
905   return dissect_dop_Time(FALSE, tvb, offset, actx, tree, hf_dop_retryAt);
906 }
907
908
909 static const value_string dop_T_validFrom_vals[] = {
910   {   0, "now" },
911   {   1, "time" },
912   { 0, NULL }
913 };
914
915 static const ber_old_choice_t T_validFrom_choice[] = {
916   {   0, BER_CLASS_CON, 0, 0, dissect_now },
917   {   1, BER_CLASS_CON, 1, 0, dissect_time },
918   { 0, 0, 0, 0, NULL }
919 };
920
921 static int
922 dissect_dop_T_validFrom(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
923   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
924                                      T_validFrom_choice, hf_index, ett_dop_T_validFrom,
925                                      NULL);
926
927   return offset;
928 }
929 static int dissect_validFrom(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
930   return dissect_dop_T_validFrom(FALSE, tvb, offset, actx, tree, hf_dop_validFrom);
931 }
932
933
934 static const value_string dop_T_validUntil_vals[] = {
935   {   0, "explicitTermination" },
936   {   1, "time" },
937   { 0, NULL }
938 };
939
940 static const ber_old_choice_t T_validUntil_choice[] = {
941   {   0, BER_CLASS_CON, 0, 0, dissect_explicitTermination },
942   {   1, BER_CLASS_CON, 1, 0, dissect_time },
943   { 0, 0, 0, 0, NULL }
944 };
945
946 static int
947 dissect_dop_T_validUntil(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
948   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
949                                      T_validUntil_choice, hf_index, ett_dop_T_validUntil,
950                                      NULL);
951
952   return offset;
953 }
954 static int dissect_validUntil(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
955   return dissect_dop_T_validUntil(FALSE, tvb, offset, actx, tree, hf_dop_validUntil);
956 }
957
958
959 static const ber_old_sequence_t Validity_sequence[] = {
960   { BER_CLASS_CON, 0, 0, dissect_validFrom },
961   { BER_CLASS_CON, 1, 0, dissect_validUntil },
962   { 0, 0, 0, NULL }
963 };
964
965 static int
966 dissect_dop_Validity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
967   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
968                                        Validity_sequence, hf_index, ett_dop_Validity);
969
970   return offset;
971 }
972 static int dissect_valid(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
973   return dissect_dop_Validity(FALSE, tvb, offset, actx, tree, hf_dop_valid);
974 }
975
976
977 static const ber_old_sequence_t EstablishOperationalBindingArgumentData_sequence[] = {
978   { BER_CLASS_CON, 0, 0, dissect_bindingType },
979   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_bindingID },
980   { BER_CLASS_CON, 2, 0, dissect_accessPoint },
981   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_establishInitiator },
982   { BER_CLASS_CON, 6, 0, dissect_agreement },
983   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_valid },
984   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_securityParameters },
985   { 0, 0, 0, NULL }
986 };
987
988 static int
989 dissect_dop_EstablishOperationalBindingArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
990   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
991                                        EstablishOperationalBindingArgumentData_sequence, hf_index, ett_dop_EstablishOperationalBindingArgumentData);
992
993   return offset;
994 }
995 static int dissect_unsignedEstablishOperationalBindingArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
996   return dissect_dop_EstablishOperationalBindingArgumentData(FALSE, tvb, offset, actx, tree, hf_dop_unsignedEstablishOperationalBindingArgument);
997 }
998 static int dissect_establishOperationalBindingArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
999   return dissect_dop_EstablishOperationalBindingArgumentData(FALSE, tvb, offset, actx, tree, hf_dop_establishOperationalBindingArgument);
1000 }
1001
1002
1003
1004 static int
1005 dissect_dop_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1006   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1007                                     NULL, hf_index, -1,
1008                                     NULL);
1009
1010   return offset;
1011 }
1012 static int dissect_encrypted(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1013   return dissect_dop_BIT_STRING(FALSE, tvb, offset, actx, tree, hf_dop_encrypted);
1014 }
1015
1016
1017 static const ber_old_sequence_t T_signedEstablishOperationalBindingArgument_sequence[] = {
1018   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_establishOperationalBindingArgument },
1019   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1020   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1021   { 0, 0, 0, NULL }
1022 };
1023
1024 static int
1025 dissect_dop_T_signedEstablishOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1026   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1027                                        T_signedEstablishOperationalBindingArgument_sequence, hf_index, ett_dop_T_signedEstablishOperationalBindingArgument);
1028
1029   return offset;
1030 }
1031 static int dissect_signedEstablishOperationalBindingArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1032   return dissect_dop_T_signedEstablishOperationalBindingArgument(FALSE, tvb, offset, actx, tree, hf_dop_signedEstablishOperationalBindingArgument);
1033 }
1034
1035
1036 static const value_string dop_EstablishOperationalBindingArgument_vals[] = {
1037   {   0, "unsignedEstablishOperationalBindingArgument" },
1038   {   1, "signedEstablishOperationalBindingArgument" },
1039   { 0, NULL }
1040 };
1041
1042 static const ber_old_choice_t EstablishOperationalBindingArgument_choice[] = {
1043   {   0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedEstablishOperationalBindingArgument },
1044   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedEstablishOperationalBindingArgument },
1045   { 0, 0, 0, 0, NULL }
1046 };
1047
1048 static int
1049 dissect_dop_EstablishOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1050   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
1051                                      EstablishOperationalBindingArgument_choice, hf_index, ett_dop_EstablishOperationalBindingArgument,
1052                                      NULL);
1053
1054   return offset;
1055 }
1056
1057
1058
1059 static int
1060 dissect_dop_T_symmetric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1061 #line 148 "dop.cnf"
1062
1063   offset = call_dop_oid_callback("establish.symmetric", tvb, offset, actx->pinfo, tree, "symmetric"); 
1064
1065
1066
1067   return offset;
1068 }
1069 static int dissect_symmetric(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1070   return dissect_dop_T_symmetric(FALSE, tvb, offset, actx, tree, hf_dop_symmetric);
1071 }
1072
1073
1074
1075 static int
1076 dissect_dop_T_roleA_replies(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1077 #line 152 "dop.cnf"
1078
1079   offset = call_dop_oid_callback("establish.rolea", tvb, offset, actx->pinfo, tree, "roleA");
1080
1081
1082
1083   return offset;
1084 }
1085 static int dissect_roleA_replies(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1086   return dissect_dop_T_roleA_replies(FALSE, tvb, offset, actx, tree, hf_dop_roleA_replies);
1087 }
1088
1089
1090
1091 static int
1092 dissect_dop_T_roleB_replies(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1093 #line 156 "dop.cnf"
1094
1095   offset = call_dop_oid_callback("establish.roleb", tvb, offset, actx->pinfo, tree, "roleB");
1096
1097
1098
1099   return offset;
1100 }
1101 static int dissect_roleB_replies(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1102   return dissect_dop_T_roleB_replies(FALSE, tvb, offset, actx, tree, hf_dop_roleB_replies);
1103 }
1104
1105
1106 static const value_string dop_T_initiator_vals[] = {
1107   {   3, "symmetric" },
1108   {   4, "roleA-replies" },
1109   {   5, "roleB-replies" },
1110   { 0, NULL }
1111 };
1112
1113 static const ber_old_choice_t T_initiator_choice[] = {
1114   {   3, BER_CLASS_CON, 3, 0, dissect_symmetric },
1115   {   4, BER_CLASS_CON, 4, 0, dissect_roleA_replies },
1116   {   5, BER_CLASS_CON, 5, 0, dissect_roleB_replies },
1117   { 0, 0, 0, 0, NULL }
1118 };
1119
1120 static int
1121 dissect_dop_T_initiator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1122   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
1123                                      T_initiator_choice, hf_index, ett_dop_T_initiator,
1124                                      NULL);
1125
1126   return offset;
1127 }
1128 static int dissect_initiator(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1129   return dissect_dop_T_initiator(FALSE, tvb, offset, actx, tree, hf_dop_initiator);
1130 }
1131
1132
1133 static const ber_old_sequence_t SEQUENCE_SIZE_1_MAX_OF_Attribute_sequence_of[1] = {
1134   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_notification_item },
1135 };
1136
1137 static int
1138 dissect_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1139   offset = dissect_ber_old_sequence_of(implicit_tag, actx, tree, tvb, offset,
1140                                           SEQUENCE_SIZE_1_MAX_OF_Attribute_sequence_of, hf_index, ett_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute);
1141
1142   return offset;
1143 }
1144 static int dissect_notification(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1145   return dissect_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_notification);
1146 }
1147
1148
1149 static const ber_old_sequence_t EstablishOperationalBindingResult_sequence[] = {
1150   { BER_CLASS_CON, 0, 0, dissect_bindingType },
1151   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_bindingID },
1152   { BER_CLASS_CON, 2, 0, dissect_accessPoint },
1153   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_initiator },
1154   { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1155   { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_performer },
1156   { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
1157   { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_notification },
1158   { 0, 0, 0, NULL }
1159 };
1160
1161 static int
1162 dissect_dop_EstablishOperationalBindingResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1163   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1164                                        EstablishOperationalBindingResult_sequence, hf_index, ett_dop_EstablishOperationalBindingResult);
1165
1166   return offset;
1167 }
1168
1169
1170
1171 static int
1172 dissect_dop_ModifySymmetric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1173 #line 120 "dop.cnf"
1174
1175   offset = call_dop_oid_callback("modify.symmetric", tvb, offset, actx->pinfo, tree, "symmetric");
1176
1177
1178
1179   return offset;
1180 }
1181 static int dissect_modifySymmetric(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1182   return dissect_dop_ModifySymmetric(FALSE, tvb, offset, actx, tree, hf_dop_modifySymmetric);
1183 }
1184
1185
1186
1187 static int
1188 dissect_dop_ModifyRoleAInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1189 #line 124 "dop.cnf"
1190
1191   offset = call_dop_oid_callback("modify.rolea", tvb, offset, actx->pinfo, tree, "roleA");
1192
1193
1194
1195   return offset;
1196 }
1197 static int dissect_modifyRoleAInitiates(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1198   return dissect_dop_ModifyRoleAInitiates(FALSE, tvb, offset, actx, tree, hf_dop_modifyRoleAInitiates);
1199 }
1200
1201
1202
1203 static int
1204 dissect_dop_ModifyRoleBInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1205 #line 128 "dop.cnf"
1206
1207   offset = call_dop_oid_callback("modify.roleb", tvb, offset, actx->pinfo, tree, "roleB");
1208
1209
1210
1211   return offset;
1212 }
1213 static int dissect_modifyRoleBInitiates(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1214   return dissect_dop_ModifyRoleBInitiates(FALSE, tvb, offset, actx, tree, hf_dop_modifyRoleBInitiates);
1215 }
1216
1217
1218 static const value_string dop_ModifyArgumentInitiator_vals[] = {
1219   {   3, "symmetric" },
1220   {   4, "roleA-initiates" },
1221   {   5, "roleB-initiates" },
1222   { 0, NULL }
1223 };
1224
1225 static const ber_old_choice_t ModifyArgumentInitiator_choice[] = {
1226   {   3, BER_CLASS_CON, 3, 0, dissect_modifySymmetric },
1227   {   4, BER_CLASS_CON, 4, 0, dissect_modifyRoleAInitiates },
1228   {   5, BER_CLASS_CON, 5, 0, dissect_modifyRoleBInitiates },
1229   { 0, 0, 0, 0, NULL }
1230 };
1231
1232 static int
1233 dissect_dop_ModifyArgumentInitiator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1234   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
1235                                      ModifyArgumentInitiator_choice, hf_index, ett_dop_ModifyArgumentInitiator,
1236                                      NULL);
1237
1238   return offset;
1239 }
1240 static int dissect_modifyInitiator(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1241   return dissect_dop_ModifyArgumentInitiator(FALSE, tvb, offset, actx, tree, hf_dop_modifyInitiator);
1242 }
1243
1244
1245
1246 static int
1247 dissect_dop_ArgumentNewAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1248 #line 168 "dop.cnf"
1249
1250   offset = call_dop_oid_callback("agreement", tvb, offset, actx->pinfo, tree, NULL);
1251
1252
1253
1254
1255   return offset;
1256 }
1257 static int dissect_argumentNewAgreement(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1258   return dissect_dop_ArgumentNewAgreement(FALSE, tvb, offset, actx, tree, hf_dop_argumentNewAgreement);
1259 }
1260
1261
1262 static const ber_old_sequence_t ModifyOperationalBindingArgumentData_sequence[] = {
1263   { BER_CLASS_CON, 0, 0, dissect_bindingType },
1264   { BER_CLASS_CON, 1, 0, dissect_bindingID },
1265   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_accessPoint },
1266   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_modifyInitiator },
1267   { BER_CLASS_CON, 6, 0, dissect_newBindingID },
1268   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_argumentNewAgreement },
1269   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_valid },
1270   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1271   { 0, 0, 0, NULL }
1272 };
1273
1274 static int
1275 dissect_dop_ModifyOperationalBindingArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1276   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1277                                        ModifyOperationalBindingArgumentData_sequence, hf_index, ett_dop_ModifyOperationalBindingArgumentData);
1278
1279   return offset;
1280 }
1281 static int dissect_unsignedModifyOperationalBindingArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1282   return dissect_dop_ModifyOperationalBindingArgumentData(FALSE, tvb, offset, actx, tree, hf_dop_unsignedModifyOperationalBindingArgument);
1283 }
1284 static int dissect_modifyOperationalBindingArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1285   return dissect_dop_ModifyOperationalBindingArgumentData(FALSE, tvb, offset, actx, tree, hf_dop_modifyOperationalBindingArgument);
1286 }
1287
1288
1289 static const ber_old_sequence_t T_signedModifyOperationalBindingArgument_sequence[] = {
1290   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_modifyOperationalBindingArgument },
1291   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1292   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1293   { 0, 0, 0, NULL }
1294 };
1295
1296 static int
1297 dissect_dop_T_signedModifyOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1298   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1299                                        T_signedModifyOperationalBindingArgument_sequence, hf_index, ett_dop_T_signedModifyOperationalBindingArgument);
1300
1301   return offset;
1302 }
1303 static int dissect_signedModifyOperationalBindingArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1304   return dissect_dop_T_signedModifyOperationalBindingArgument(FALSE, tvb, offset, actx, tree, hf_dop_signedModifyOperationalBindingArgument);
1305 }
1306
1307
1308 static const value_string dop_ModifyOperationalBindingArgument_vals[] = {
1309   {   0, "unsignedModifyOperationalBindingArgument" },
1310   {   1, "signedModifyOperationalBindingArgument" },
1311   { 0, NULL }
1312 };
1313
1314 static const ber_old_choice_t ModifyOperationalBindingArgument_choice[] = {
1315   {   0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedModifyOperationalBindingArgument },
1316   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedModifyOperationalBindingArgument },
1317   { 0, 0, 0, 0, NULL }
1318 };
1319
1320 static int
1321 dissect_dop_ModifyOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1322   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
1323                                      ModifyOperationalBindingArgument_choice, hf_index, ett_dop_ModifyOperationalBindingArgument,
1324                                      NULL);
1325
1326   return offset;
1327 }
1328
1329
1330
1331 static int
1332 dissect_dop_ResultNewAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1333 #line 164 "dop.cnf"
1334
1335   offset = call_dop_oid_callback("agreement", tvb, offset, actx->pinfo, tree, NULL);
1336
1337
1338
1339   return offset;
1340 }
1341 static int dissect_resultNewAgreement(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1342   return dissect_dop_ResultNewAgreement(FALSE, tvb, offset, actx, tree, hf_dop_resultNewAgreement);
1343 }
1344
1345
1346 static const ber_old_sequence_t ModifyOperationalBindingResultData_sequence[] = {
1347   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_newBindingID },
1348   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_bindingType },
1349   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_resultNewAgreement },
1350   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_valid },
1351   { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1352   { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_performer },
1353   { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
1354   { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_notification },
1355   { 0, 0, 0, NULL }
1356 };
1357
1358 static int
1359 dissect_dop_ModifyOperationalBindingResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1360   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1361                                        ModifyOperationalBindingResultData_sequence, hf_index, ett_dop_ModifyOperationalBindingResultData);
1362
1363   return offset;
1364 }
1365 static int dissect_modifyOperationalBindingResultData(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1366   return dissect_dop_ModifyOperationalBindingResultData(FALSE, tvb, offset, actx, tree, hf_dop_modifyOperationalBindingResultData);
1367 }
1368
1369
1370 static const ber_old_sequence_t ProtectedModifyResult_sequence[] = {
1371   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_modifyOperationalBindingResultData },
1372   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1373   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1374   { 0, 0, 0, NULL }
1375 };
1376
1377 static int
1378 dissect_dop_ProtectedModifyResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1379   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1380                                        ProtectedModifyResult_sequence, hf_index, ett_dop_ProtectedModifyResult);
1381
1382   return offset;
1383 }
1384 static int dissect_protectedModifyResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1385   return dissect_dop_ProtectedModifyResult(FALSE, tvb, offset, actx, tree, hf_dop_protectedModifyResult);
1386 }
1387
1388
1389 static const value_string dop_ModifyOperationalBindingResult_vals[] = {
1390   {   0, "null" },
1391   {   1, "protected" },
1392   { 0, NULL }
1393 };
1394
1395 static const ber_old_choice_t ModifyOperationalBindingResult_choice[] = {
1396   {   0, BER_CLASS_CON, 0, 0, dissect_null },
1397   {   1, BER_CLASS_CON, 1, 0, dissect_protectedModifyResult },
1398   { 0, 0, 0, 0, NULL }
1399 };
1400
1401 static int
1402 dissect_dop_ModifyOperationalBindingResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1403   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
1404                                      ModifyOperationalBindingResult_choice, hf_index, ett_dop_ModifyOperationalBindingResult,
1405                                      NULL);
1406
1407   return offset;
1408 }
1409
1410
1411
1412 static int
1413 dissect_dop_TerminateSymmetric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1414 #line 132 "dop.cnf"
1415
1416   offset = call_dop_oid_callback("terminate.symmetric", tvb, offset, actx->pinfo, tree, "symmetric");
1417
1418
1419
1420   return offset;
1421 }
1422 static int dissect_terminateSymmetric(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1423   return dissect_dop_TerminateSymmetric(FALSE, tvb, offset, actx, tree, hf_dop_terminateSymmetric);
1424 }
1425
1426
1427
1428 static int
1429 dissect_dop_TerminateRoleAInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1430 #line 136 "dop.cnf"
1431
1432   offset = call_dop_oid_callback("terminate.rolea", tvb, offset, actx->pinfo, tree, "roleA");
1433
1434
1435
1436   return offset;
1437 }
1438 static int dissect_terminateRoleAInitiates(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1439   return dissect_dop_TerminateRoleAInitiates(FALSE, tvb, offset, actx, tree, hf_dop_terminateRoleAInitiates);
1440 }
1441
1442
1443
1444 static int
1445 dissect_dop_TerminateRoleBInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1446 #line 140 "dop.cnf"
1447
1448   offset = call_dop_oid_callback("terminate.roleb", tvb, offset, actx->pinfo, tree, "roleB");
1449
1450
1451
1452   return offset;
1453 }
1454 static int dissect_terminateRoleBInitiates(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1455   return dissect_dop_TerminateRoleBInitiates(FALSE, tvb, offset, actx, tree, hf_dop_terminateRoleBInitiates);
1456 }
1457
1458
1459 static const value_string dop_TerminateArgumentInitiator_vals[] = {
1460   {   2, "symmetric" },
1461   {   3, "roleA-initiates" },
1462   {   4, "roleB-initiates" },
1463   { 0, NULL }
1464 };
1465
1466 static const ber_old_choice_t TerminateArgumentInitiator_choice[] = {
1467   {   2, BER_CLASS_CON, 2, 0, dissect_terminateSymmetric },
1468   {   3, BER_CLASS_CON, 3, 0, dissect_terminateRoleAInitiates },
1469   {   4, BER_CLASS_CON, 4, 0, dissect_terminateRoleBInitiates },
1470   { 0, 0, 0, 0, NULL }
1471 };
1472
1473 static int
1474 dissect_dop_TerminateArgumentInitiator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1475   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
1476                                      TerminateArgumentInitiator_choice, hf_index, ett_dop_TerminateArgumentInitiator,
1477                                      NULL);
1478
1479   return offset;
1480 }
1481 static int dissect_terminateInitiator(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1482   return dissect_dop_TerminateArgumentInitiator(FALSE, tvb, offset, actx, tree, hf_dop_terminateInitiator);
1483 }
1484
1485
1486 static const ber_old_sequence_t TerminateOperationalBindingArgumentData_sequence[] = {
1487   { BER_CLASS_CON, 0, 0, dissect_bindingType },
1488   { BER_CLASS_CON, 1, 0, dissect_bindingID },
1489   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_terminateInitiator },
1490   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_terminateAtTime },
1491   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1492   { 0, 0, 0, NULL }
1493 };
1494
1495 static int
1496 dissect_dop_TerminateOperationalBindingArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1497   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1498                                        TerminateOperationalBindingArgumentData_sequence, hf_index, ett_dop_TerminateOperationalBindingArgumentData);
1499
1500   return offset;
1501 }
1502 static int dissect_unsignedTerminateOperationalBindingArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1503   return dissect_dop_TerminateOperationalBindingArgumentData(FALSE, tvb, offset, actx, tree, hf_dop_unsignedTerminateOperationalBindingArgument);
1504 }
1505 static int dissect_terminateOperationalBindingArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1506   return dissect_dop_TerminateOperationalBindingArgumentData(FALSE, tvb, offset, actx, tree, hf_dop_terminateOperationalBindingArgument);
1507 }
1508
1509
1510 static const ber_old_sequence_t T_signedTerminateOperationalBindingArgument_sequence[] = {
1511   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_terminateOperationalBindingArgument },
1512   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1513   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1514   { 0, 0, 0, NULL }
1515 };
1516
1517 static int
1518 dissect_dop_T_signedTerminateOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1519   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1520                                        T_signedTerminateOperationalBindingArgument_sequence, hf_index, ett_dop_T_signedTerminateOperationalBindingArgument);
1521
1522   return offset;
1523 }
1524 static int dissect_signedTerminateOperationalBindingArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1525   return dissect_dop_T_signedTerminateOperationalBindingArgument(FALSE, tvb, offset, actx, tree, hf_dop_signedTerminateOperationalBindingArgument);
1526 }
1527
1528
1529 static const value_string dop_TerminateOperationalBindingArgument_vals[] = {
1530   {   0, "unsignedTerminateOperationalBindingArgument" },
1531   {   1, "signedTerminateOperationalBindingArgument" },
1532   { 0, NULL }
1533 };
1534
1535 static const ber_old_choice_t TerminateOperationalBindingArgument_choice[] = {
1536   {   0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedTerminateOperationalBindingArgument },
1537   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedTerminateOperationalBindingArgument },
1538   { 0, 0, 0, 0, NULL }
1539 };
1540
1541 static int
1542 dissect_dop_TerminateOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1543   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
1544                                      TerminateOperationalBindingArgument_choice, hf_index, ett_dop_TerminateOperationalBindingArgument,
1545                                      NULL);
1546
1547   return offset;
1548 }
1549
1550
1551 static const ber_old_sequence_t TerminateOperationalBindingResultData_sequence[] = {
1552   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_bindingID },
1553   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_bindingType },
1554   { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_terminateAtGeneralizedTime },
1555   { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1556   { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_performer },
1557   { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
1558   { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_notification },
1559   { 0, 0, 0, NULL }
1560 };
1561
1562 static int
1563 dissect_dop_TerminateOperationalBindingResultData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1564   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1565                                        TerminateOperationalBindingResultData_sequence, hf_index, ett_dop_TerminateOperationalBindingResultData);
1566
1567   return offset;
1568 }
1569 static int dissect_terminateOperationalBindingResultData(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1570   return dissect_dop_TerminateOperationalBindingResultData(FALSE, tvb, offset, actx, tree, hf_dop_terminateOperationalBindingResultData);
1571 }
1572
1573
1574 static const ber_old_sequence_t ProtectedTerminateResult_sequence[] = {
1575   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_terminateOperationalBindingResultData },
1576   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1577   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1578   { 0, 0, 0, NULL }
1579 };
1580
1581 static int
1582 dissect_dop_ProtectedTerminateResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1583   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1584                                        ProtectedTerminateResult_sequence, hf_index, ett_dop_ProtectedTerminateResult);
1585
1586   return offset;
1587 }
1588 static int dissect_protectedTerminateResult(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1589   return dissect_dop_ProtectedTerminateResult(FALSE, tvb, offset, actx, tree, hf_dop_protectedTerminateResult);
1590 }
1591
1592
1593 static const value_string dop_TerminateOperationalBindingResult_vals[] = {
1594   {   0, "null" },
1595   {   1, "protected" },
1596   { 0, NULL }
1597 };
1598
1599 static const ber_old_choice_t TerminateOperationalBindingResult_choice[] = {
1600   {   0, BER_CLASS_CON, 0, 0, dissect_null },
1601   {   1, BER_CLASS_CON, 1, 0, dissect_protectedTerminateResult },
1602   { 0, 0, 0, 0, NULL }
1603 };
1604
1605 static int
1606 dissect_dop_TerminateOperationalBindingResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1607   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
1608                                      TerminateOperationalBindingResult_choice, hf_index, ett_dop_TerminateOperationalBindingResult,
1609                                      NULL);
1610
1611   return offset;
1612 }
1613
1614
1615 static const value_string dop_T_problem_vals[] = {
1616   {   0, "invalidID" },
1617   {   1, "duplicateID" },
1618   {   2, "unsupportedBindingType" },
1619   {   3, "notAllowedForRole" },
1620   {   4, "parametersMissing" },
1621   {   5, "roleAssignment" },
1622   {   6, "invalidStartTime" },
1623   {   7, "invalidEndTime" },
1624   {   8, "invalidAgreement" },
1625   {   9, "currentlyNotDecidable" },
1626   {  10, "modificationNotAllowed" },
1627   { 0, NULL }
1628 };
1629
1630
1631 static int
1632 dissect_dop_T_problem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1633   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1634                                   NULL);
1635
1636   return offset;
1637 }
1638 static int dissect_problem(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1639   return dissect_dop_T_problem(FALSE, tvb, offset, actx, tree, hf_dop_problem);
1640 }
1641
1642
1643
1644 static int
1645 dissect_dop_T_agreementProposal(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1646 #line 160 "dop.cnf"
1647
1648   offset = call_dop_oid_callback("agreement", tvb, offset, actx->pinfo, tree, NULL);
1649
1650
1651
1652   return offset;
1653 }
1654 static int dissect_agreementProposal(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1655   return dissect_dop_T_agreementProposal(FALSE, tvb, offset, actx, tree, hf_dop_agreementProposal);
1656 }
1657
1658
1659 static const ber_old_sequence_t OpBindingErrorParam_sequence[] = {
1660   { BER_CLASS_CON, 0, 0, dissect_problem },
1661   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_bindingType },
1662   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_agreementProposal },
1663   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_retryAt },
1664   { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1665   { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_performer },
1666   { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
1667   { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_notification },
1668   { 0, 0, 0, NULL }
1669 };
1670
1671 static int
1672 dissect_dop_OpBindingErrorParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1673   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1674                                        OpBindingErrorParam_sequence, hf_index, ett_dop_OpBindingErrorParam);
1675
1676   return offset;
1677 }
1678
1679
1680 static const ber_old_sequence_t HierarchicalAgreement_sequence[] = {
1681   { BER_CLASS_CON, 0, 0, dissect_rdn },
1682   { BER_CLASS_CON, 1, 0, dissect_immediateSuperior },
1683   { 0, 0, 0, NULL }
1684 };
1685
1686 static int
1687 dissect_dop_HierarchicalAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1688   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1689                                        HierarchicalAgreement_sequence, hf_index, ett_dop_HierarchicalAgreement);
1690
1691   return offset;
1692 }
1693
1694
1695 static const ber_old_sequence_t SET_OF_Attribute_set_of[1] = {
1696   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_entryInfo_item },
1697 };
1698
1699 static int
1700 dissect_dop_SET_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1701   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
1702                                      SET_OF_Attribute_set_of, hf_index, ett_dop_SET_OF_Attribute);
1703
1704   return offset;
1705 }
1706 static int dissect_entryInfo(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1707   return dissect_dop_SET_OF_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_entryInfo);
1708 }
1709 static int dissect_immediateSuperiorInfo(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1710   return dissect_dop_SET_OF_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_immediateSuperiorInfo);
1711 }
1712 static int dissect_admPointInfo(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1713   return dissect_dop_SET_OF_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_admPointInfo);
1714 }
1715 static int dissect_info(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1716   return dissect_dop_SET_OF_Attribute(FALSE, tvb, offset, actx, tree, hf_dop_info);
1717 }
1718
1719
1720 static const ber_old_sequence_t SubentryInfo_sequence[] = {
1721   { BER_CLASS_CON, 0, 0, dissect_rdn },
1722   { BER_CLASS_CON, 1, 0, dissect_info },
1723   { 0, 0, 0, NULL }
1724 };
1725
1726 static int
1727 dissect_dop_SubentryInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1728   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1729                                        SubentryInfo_sequence, hf_index, ett_dop_SubentryInfo);
1730
1731   return offset;
1732 }
1733 static int dissect_subentries_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1734   return dissect_dop_SubentryInfo(FALSE, tvb, offset, actx, tree, hf_dop_subentries_item);
1735 }
1736
1737
1738 static const ber_old_sequence_t SET_OF_SubentryInfo_set_of[1] = {
1739   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subentries_item },
1740 };
1741
1742 static int
1743 dissect_dop_SET_OF_SubentryInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1744   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
1745                                      SET_OF_SubentryInfo_set_of, hf_index, ett_dop_SET_OF_SubentryInfo);
1746
1747   return offset;
1748 }
1749 static int dissect_subentries(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1750   return dissect_dop_SET_OF_SubentryInfo(FALSE, tvb, offset, actx, tree, hf_dop_subentries);
1751 }
1752
1753
1754 static const ber_old_sequence_t Vertex_sequence[] = {
1755   { BER_CLASS_CON, 0, 0, dissect_rdn },
1756   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_admPointInfo },
1757   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_subentries },
1758   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_accessPoints },
1759   { 0, 0, 0, NULL }
1760 };
1761
1762 static int
1763 dissect_dop_Vertex(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1764   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1765                                        Vertex_sequence, hf_index, ett_dop_Vertex);
1766
1767   return offset;
1768 }
1769 static int dissect_DITcontext_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1770   return dissect_dop_Vertex(FALSE, tvb, offset, actx, tree, hf_dop_DITcontext_item);
1771 }
1772
1773
1774 static const ber_old_sequence_t DITcontext_sequence_of[1] = {
1775   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_DITcontext_item },
1776 };
1777
1778 static int
1779 dissect_dop_DITcontext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1780   offset = dissect_ber_old_sequence_of(implicit_tag, actx, tree, tvb, offset,
1781                                           DITcontext_sequence_of, hf_index, ett_dop_DITcontext);
1782
1783   return offset;
1784 }
1785 static int dissect_contextPrefixInfo(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1786   return dissect_dop_DITcontext(FALSE, tvb, offset, actx, tree, hf_dop_contextPrefixInfo);
1787 }
1788
1789
1790 static const ber_old_sequence_t SuperiorToSubordinate_sequence[] = {
1791   { BER_CLASS_CON, 0, 0, dissect_contextPrefixInfo },
1792   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_entryInfo },
1793   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_immediateSuperiorInfo },
1794   { 0, 0, 0, NULL }
1795 };
1796
1797 static int
1798 dissect_dop_SuperiorToSubordinate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1799   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1800                                        SuperiorToSubordinate_sequence, hf_index, ett_dop_SuperiorToSubordinate);
1801
1802   return offset;
1803 }
1804
1805
1806 static const ber_old_sequence_t SubordinateToSuperior_sequence[] = {
1807   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_accessPoints },
1808   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_alias },
1809   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_entryInfo },
1810   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_subentries },
1811   { 0, 0, 0, NULL }
1812 };
1813
1814 static int
1815 dissect_dop_SubordinateToSuperior(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1816   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1817                                        SubordinateToSuperior_sequence, hf_index, ett_dop_SubordinateToSuperior);
1818
1819   return offset;
1820 }
1821
1822
1823 static const ber_old_sequence_t SuperiorToSubordinateModification_sequence[] = {
1824   { BER_CLASS_CON, 0, 0, dissect_contextPrefixInfo },
1825   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_immediateSuperiorInfo },
1826   { 0, 0, 0, NULL }
1827 };
1828
1829 static int
1830 dissect_dop_SuperiorToSubordinateModification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1831   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1832                                        SuperiorToSubordinateModification_sequence, hf_index, ett_dop_SuperiorToSubordinateModification);
1833
1834   return offset;
1835 }
1836
1837
1838 static const ber_old_sequence_t NonSpecificHierarchicalAgreement_sequence[] = {
1839   { BER_CLASS_CON, 1, 0, dissect_immediateSuperior },
1840   { 0, 0, 0, NULL }
1841 };
1842
1843 static int
1844 dissect_dop_NonSpecificHierarchicalAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1845   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1846                                        NonSpecificHierarchicalAgreement_sequence, hf_index, ett_dop_NonSpecificHierarchicalAgreement);
1847
1848   return offset;
1849 }
1850
1851
1852 static const ber_old_sequence_t NHOBSuperiorToSubordinate_sequence[] = {
1853   { BER_CLASS_CON, 0, 0, dissect_contextPrefixInfo },
1854   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_immediateSuperiorInfo },
1855   { 0, 0, 0, NULL }
1856 };
1857
1858 static int
1859 dissect_dop_NHOBSuperiorToSubordinate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1860   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1861                                        NHOBSuperiorToSubordinate_sequence, hf_index, ett_dop_NHOBSuperiorToSubordinate);
1862
1863   return offset;
1864 }
1865
1866
1867 static const ber_old_sequence_t NHOBSubordinateToSuperior_sequence[] = {
1868   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_accessPoints },
1869   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_subentries },
1870   { 0, 0, 0, NULL }
1871 };
1872
1873 static int
1874 dissect_dop_NHOBSubordinateToSuperior(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1875   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1876                                        NHOBSubordinateToSuperior_sequence, hf_index, ett_dop_NHOBSubordinateToSuperior);
1877
1878   return offset;
1879 }
1880
1881
1882
1883 static int
1884 dissect_dop_Precedence(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1885 #line 195 "dop.cnf"
1886   guint32 precedence = 0;
1887
1888     offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1889                                   &precedence);
1890
1891
1892   proto_item_append_text(tree, " precedence=%d", precedence);
1893
1894
1895
1896   return offset;
1897 }
1898 static int dissect_precedence(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1899   return dissect_dop_Precedence(FALSE, tvb, offset, actx, tree, hf_dop_precedence);
1900 }
1901
1902
1903 static const value_string dop_T_level_vals[] = {
1904   {   0, "none" },
1905   {   1, "simple" },
1906   {   2, "strong" },
1907   { 0, NULL }
1908 };
1909
1910
1911 static int
1912 dissect_dop_T_level(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1913   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1914                                   NULL);
1915
1916   return offset;
1917 }
1918 static int dissect_level(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1919   return dissect_dop_T_level(FALSE, tvb, offset, actx, tree, hf_dop_level);
1920 }
1921
1922
1923
1924 static int
1925 dissect_dop_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1926   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1927                                   NULL);
1928
1929   return offset;
1930 }
1931 static int dissect_maxImmSub(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1932   return dissect_dop_INTEGER(FALSE, tvb, offset, actx, tree, hf_dop_maxImmSub);
1933 }
1934 static int dissect_maxCount(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1935   return dissect_dop_INTEGER(FALSE, tvb, offset, actx, tree, hf_dop_maxCount);
1936 }
1937 static int dissect_localQualifier(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1938   return dissect_dop_INTEGER(FALSE, tvb, offset, actx, tree, hf_dop_localQualifier);
1939 }
1940
1941
1942 static const ber_old_sequence_t T_basicLevels_sequence[] = {
1943   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_level },
1944   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_localQualifier },
1945   { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_signed },
1946   { 0, 0, 0, NULL }
1947 };
1948
1949 static int
1950 dissect_dop_T_basicLevels(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1951   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
1952                                        T_basicLevels_sequence, hf_index, ett_dop_T_basicLevels);
1953
1954   return offset;
1955 }
1956 static int dissect_basicLevels(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1957   return dissect_dop_T_basicLevels(FALSE, tvb, offset, actx, tree, hf_dop_basicLevels);
1958 }
1959
1960
1961 static const value_string dop_AuthenticationLevel_vals[] = {
1962   {   0, "basicLevels" },
1963   {   1, "other" },
1964   { 0, NULL }
1965 };
1966
1967 static const ber_old_choice_t AuthenticationLevel_choice[] = {
1968   {   0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_basicLevels },
1969   {   1, BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_other },
1970   { 0, 0, 0, 0, NULL }
1971 };
1972
1973 static int
1974 dissect_dop_AuthenticationLevel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1975   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
1976                                      AuthenticationLevel_choice, hf_index, ett_dop_AuthenticationLevel,
1977                                      NULL);
1978
1979   return offset;
1980 }
1981 static int dissect_authenticationLevel(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1982   return dissect_dop_AuthenticationLevel(FALSE, tvb, offset, actx, tree, hf_dop_authenticationLevel);
1983 }
1984
1985
1986 static const ber_old_sequence_t SET_OF_AttributeType_set_of[1] = {
1987   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType_item },
1988 };
1989
1990 static int
1991 dissect_dop_SET_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1992   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
1993                                      SET_OF_AttributeType_set_of, hf_index, ett_dop_SET_OF_AttributeType);
1994
1995   return offset;
1996 }
1997 static int dissect_attributeType(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1998   return dissect_dop_SET_OF_AttributeType(FALSE, tvb, offset, actx, tree, hf_dop_attributeType);
1999 }
2000 static int dissect_allAttributeValues(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2001   return dissect_dop_SET_OF_AttributeType(FALSE, tvb, offset, actx, tree, hf_dop_allAttributeValues);
2002 }
2003 static int dissect_selfValue(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2004   return dissect_dop_SET_OF_AttributeType(FALSE, tvb, offset, actx, tree, hf_dop_selfValue);
2005 }
2006
2007
2008 static const ber_old_sequence_t SET_OF_AttributeTypeAndValue_set_of[1] = {
2009   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_attributeValue_item },
2010 };
2011
2012 static int
2013 dissect_dop_SET_OF_AttributeTypeAndValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2014   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
2015                                      SET_OF_AttributeTypeAndValue_set_of, hf_index, ett_dop_SET_OF_AttributeTypeAndValue);
2016
2017   return offset;
2018 }
2019 static int dissect_attributeValue(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2020   return dissect_dop_SET_OF_AttributeTypeAndValue(FALSE, tvb, offset, actx, tree, hf_dop_attributeValue);
2021 }
2022
2023
2024 static const ber_old_sequence_t MaxValueCount_sequence[] = {
2025   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
2026   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_maxCount },
2027   { 0, 0, 0, NULL }
2028 };
2029
2030 static int
2031 dissect_dop_MaxValueCount(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2032   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
2033                                        MaxValueCount_sequence, hf_index, ett_dop_MaxValueCount);
2034
2035   return offset;
2036 }
2037 static int dissect_maxValueCount_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2038   return dissect_dop_MaxValueCount(FALSE, tvb, offset, actx, tree, hf_dop_maxValueCount_item);
2039 }
2040
2041
2042 static const ber_old_sequence_t SET_OF_MaxValueCount_set_of[1] = {
2043   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_maxValueCount_item },
2044 };
2045
2046 static int
2047 dissect_dop_SET_OF_MaxValueCount(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2048   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
2049                                      SET_OF_MaxValueCount_set_of, hf_index, ett_dop_SET_OF_MaxValueCount);
2050
2051   return offset;
2052 }
2053 static int dissect_maxValueCount(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2054   return dissect_dop_SET_OF_MaxValueCount(FALSE, tvb, offset, actx, tree, hf_dop_maxValueCount);
2055 }
2056
2057
2058 static const ber_old_sequence_t RestrictedValue_sequence[] = {
2059   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
2060   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_valuesIn },
2061   { 0, 0, 0, NULL }
2062 };
2063
2064 static int
2065 dissect_dop_RestrictedValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2066   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
2067                                        RestrictedValue_sequence, hf_index, ett_dop_RestrictedValue);
2068
2069   return offset;
2070 }
2071 static int dissect_restrictedBy_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2072   return dissect_dop_RestrictedValue(FALSE, tvb, offset, actx, tree, hf_dop_restrictedBy_item);
2073 }
2074
2075
2076 static const ber_old_sequence_t SET_OF_RestrictedValue_set_of[1] = {
2077   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_restrictedBy_item },
2078 };
2079
2080 static int
2081 dissect_dop_SET_OF_RestrictedValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2082   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
2083                                      SET_OF_RestrictedValue_set_of, hf_index, ett_dop_SET_OF_RestrictedValue);
2084
2085   return offset;
2086 }
2087 static int dissect_restrictedBy(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2088   return dissect_dop_SET_OF_RestrictedValue(FALSE, tvb, offset, actx, tree, hf_dop_restrictedBy);
2089 }
2090
2091
2092 static const ber_old_sequence_t SET_OF_ContextAssertion_set_of[1] = {
2093   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contexts_item },
2094 };
2095
2096 static int
2097 dissect_dop_SET_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2098   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
2099                                      SET_OF_ContextAssertion_set_of, hf_index, ett_dop_SET_OF_ContextAssertion);
2100
2101   return offset;
2102 }
2103 static int dissect_contexts(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2104   return dissect_dop_SET_OF_ContextAssertion(FALSE, tvb, offset, actx, tree, hf_dop_contexts);
2105 }
2106
2107
2108 static const ber_old_sequence_t ProtectedItems_sequence[] = {
2109   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_entry },
2110   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_allUserAttributeTypes },
2111   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_attributeType },
2112   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_allAttributeValues },
2113   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_allUserAttributeTypesAndValues },
2114   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_attributeValue },
2115   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_selfValue },
2116   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_rangeOfValues },
2117   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_maxValueCount },
2118   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_maxImmSub },
2119   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_restrictedBy },
2120   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_contexts },
2121   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_classes },
2122   { 0, 0, 0, NULL }
2123 };
2124
2125 static int
2126 dissect_dop_ProtectedItems(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2127   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
2128                                        ProtectedItems_sequence, hf_index, ett_dop_ProtectedItems);
2129
2130   return offset;
2131 }
2132 static int dissect_protectedItems(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2133   return dissect_dop_ProtectedItems(FALSE, tvb, offset, actx, tree, hf_dop_protectedItems);
2134 }
2135
2136
2137 static const ber_old_sequence_t SET_OF_NameAndOptionalUID_set_of[1] = {
2138   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_name_item },
2139 };
2140
2141 static int
2142 dissect_dop_SET_OF_NameAndOptionalUID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2143   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
2144                                      SET_OF_NameAndOptionalUID_set_of, hf_index, ett_dop_SET_OF_NameAndOptionalUID);
2145
2146   return offset;
2147 }
2148 static int dissect_name(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2149   return dissect_dop_SET_OF_NameAndOptionalUID(FALSE, tvb, offset, actx, tree, hf_dop_name);
2150 }
2151 static int dissect_userGroup(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2152   return dissect_dop_SET_OF_NameAndOptionalUID(FALSE, tvb, offset, actx, tree, hf_dop_userGroup);
2153 }
2154
2155
2156 static const ber_old_sequence_t SET_OF_SubtreeSpecification_set_of[1] = {
2157   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subtree_item },
2158 };
2159
2160 static int
2161 dissect_dop_SET_OF_SubtreeSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2162   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
2163                                      SET_OF_SubtreeSpecification_set_of, hf_index, ett_dop_SET_OF_SubtreeSpecification);
2164
2165   return offset;
2166 }
2167 static int dissect_subtree(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2168   return dissect_dop_SET_OF_SubtreeSpecification(FALSE, tvb, offset, actx, tree, hf_dop_subtree);
2169 }
2170
2171
2172 static const ber_old_sequence_t UserClasses_sequence[] = {
2173   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_allUsers },
2174   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_thisEntry },
2175   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_name },
2176   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_userGroup },
2177   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_subtree },
2178   { 0, 0, 0, NULL }
2179 };
2180
2181 static int
2182 dissect_dop_UserClasses(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2183   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
2184                                        UserClasses_sequence, hf_index, ett_dop_UserClasses);
2185
2186   return offset;
2187 }
2188 static int dissect_userClasses(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2189   return dissect_dop_UserClasses(FALSE, tvb, offset, actx, tree, hf_dop_userClasses);
2190 }
2191
2192
2193 static const asn_namedbit GrantsAndDenials_bits[] = {
2194   {  0, &hf_dop_GrantsAndDenials_grantAdd, -1, -1, "grantAdd", NULL },
2195   {  1, &hf_dop_GrantsAndDenials_denyAdd, -1, -1, "denyAdd", NULL },
2196   {  2, &hf_dop_GrantsAndDenials_grantDiscloseOnError, -1, -1, "grantDiscloseOnError", NULL },
2197   {  3, &hf_dop_GrantsAndDenials_denyDiscloseOnError, -1, -1, "denyDiscloseOnError", NULL },
2198   {  4, &hf_dop_GrantsAndDenials_grantRead, -1, -1, "grantRead", NULL },
2199   {  5, &hf_dop_GrantsAndDenials_denyRead, -1, -1, "denyRead", NULL },
2200   {  6, &hf_dop_GrantsAndDenials_grantRemove, -1, -1, "grantRemove", NULL },
2201   {  7, &hf_dop_GrantsAndDenials_denyRemove, -1, -1, "denyRemove", NULL },
2202   {  8, &hf_dop_GrantsAndDenials_grantBrowse, -1, -1, "grantBrowse", NULL },
2203   {  9, &hf_dop_GrantsAndDenials_denyBrowse, -1, -1, "denyBrowse", NULL },
2204   { 10, &hf_dop_GrantsAndDenials_grantExport, -1, -1, "grantExport", NULL },
2205   { 11, &hf_dop_GrantsAndDenials_denyExport, -1, -1, "denyExport", NULL },
2206   { 12, &hf_dop_GrantsAndDenials_grantImport, -1, -1, "grantImport", NULL },
2207   { 13, &hf_dop_GrantsAndDenials_denyImport, -1, -1, "denyImport", NULL },
2208   { 14, &hf_dop_GrantsAndDenials_grantModify, -1, -1, "grantModify", NULL },
2209   { 15, &hf_dop_GrantsAndDenials_denyModify, -1, -1, "denyModify", NULL },
2210   { 16, &hf_dop_GrantsAndDenials_grantRename, -1, -1, "grantRename", NULL },
2211   { 17, &hf_dop_GrantsAndDenials_denyRename, -1, -1, "denyRename", NULL },
2212   { 18, &hf_dop_GrantsAndDenials_grantReturnDN, -1, -1, "grantReturnDN", NULL },
2213   { 19, &hf_dop_GrantsAndDenials_denyReturnDN, -1, -1, "denyReturnDN", NULL },
2214   { 20, &hf_dop_GrantsAndDenials_grantCompare, -1, -1, "grantCompare", NULL },
2215   { 21, &hf_dop_GrantsAndDenials_denyCompare, -1, -1, "denyCompare", NULL },
2216   { 22, &hf_dop_GrantsAndDenials_grantFilterMatch, -1, -1, "grantFilterMatch", NULL },
2217   { 23, &hf_dop_GrantsAndDenials_denyFilterMatch, -1, -1, "denyFilterMatch", NULL },
2218   { 24, &hf_dop_GrantsAndDenials_grantInvoke, -1, -1, "grantInvoke", NULL },
2219   { 25, &hf_dop_GrantsAndDenials_denyInvoke, -1, -1, "denyInvoke", NULL },
2220   { 0, NULL, 0, 0, NULL, NULL }
2221 };
2222
2223 static int
2224 dissect_dop_GrantsAndDenials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2225   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2226                                     GrantsAndDenials_bits, hf_index, ett_dop_GrantsAndDenials,
2227                                     NULL);
2228
2229   return offset;
2230 }
2231 static int dissect_grantsAndDenials(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2232   return dissect_dop_GrantsAndDenials(FALSE, tvb, offset, actx, tree, hf_dop_grantsAndDenials);
2233 }
2234
2235
2236 static const ber_old_sequence_t ItemPermission_sequence[] = {
2237   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_precedence },
2238   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_userClasses },
2239   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_grantsAndDenials },
2240   { 0, 0, 0, NULL }
2241 };
2242
2243 static int
2244 dissect_dop_ItemPermission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2245   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
2246                                        ItemPermission_sequence, hf_index, ett_dop_ItemPermission);
2247
2248   return offset;
2249 }
2250 static int dissect_itemPermissions_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2251   return dissect_dop_ItemPermission(FALSE, tvb, offset, actx, tree, hf_dop_itemPermissions_item);
2252 }
2253
2254
2255 static const ber_old_sequence_t SET_OF_ItemPermission_set_of[1] = {
2256   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_itemPermissions_item },
2257 };
2258
2259 static int
2260 dissect_dop_SET_OF_ItemPermission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2261   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
2262                                      SET_OF_ItemPermission_set_of, hf_index, ett_dop_SET_OF_ItemPermission);
2263
2264   return offset;
2265 }
2266 static int dissect_itemPermissions(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2267   return dissect_dop_SET_OF_ItemPermission(FALSE, tvb, offset, actx, tree, hf_dop_itemPermissions);
2268 }
2269
2270
2271 static const ber_old_sequence_t T_itemFirst_sequence[] = {
2272   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protectedItems },
2273   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_itemPermissions },
2274   { 0, 0, 0, NULL }
2275 };
2276
2277 static int
2278 dissect_dop_T_itemFirst(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2279   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
2280                                        T_itemFirst_sequence, hf_index, ett_dop_T_itemFirst);
2281
2282   return offset;
2283 }
2284 static int dissect_itemFirst(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2285   return dissect_dop_T_itemFirst(FALSE, tvb, offset, actx, tree, hf_dop_itemFirst);
2286 }
2287
2288
2289 static const ber_old_sequence_t UserPermission_sequence[] = {
2290   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_precedence },
2291   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protectedItems },
2292   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_grantsAndDenials },
2293   { 0, 0, 0, NULL }
2294 };
2295
2296 static int
2297 dissect_dop_UserPermission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2298   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
2299                                        UserPermission_sequence, hf_index, ett_dop_UserPermission);
2300
2301   return offset;
2302 }
2303 static int dissect_userPermissions_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2304   return dissect_dop_UserPermission(FALSE, tvb, offset, actx, tree, hf_dop_userPermissions_item);
2305 }
2306
2307
2308 static const ber_old_sequence_t SET_OF_UserPermission_set_of[1] = {
2309   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_userPermissions_item },
2310 };
2311
2312 static int
2313 dissect_dop_SET_OF_UserPermission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2314   offset = dissect_ber_old_set_of(implicit_tag, actx, tree, tvb, offset,
2315                                      SET_OF_UserPermission_set_of, hf_index, ett_dop_SET_OF_UserPermission);
2316
2317   return offset;
2318 }
2319 static int dissect_userPermissions(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2320   return dissect_dop_SET_OF_UserPermission(FALSE, tvb, offset, actx, tree, hf_dop_userPermissions);
2321 }
2322
2323
2324 static const ber_old_sequence_t T_userFirst_sequence[] = {
2325   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_userClasses },
2326   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_userPermissions },
2327   { 0, 0, 0, NULL }
2328 };
2329
2330 static int
2331 dissect_dop_T_userFirst(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2332   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
2333                                        T_userFirst_sequence, hf_index, ett_dop_T_userFirst);
2334
2335   return offset;
2336 }
2337 static int dissect_userFirst(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2338   return dissect_dop_T_userFirst(FALSE, tvb, offset, actx, tree, hf_dop_userFirst);
2339 }
2340
2341
2342 static const value_string dop_T_itemOrUserFirst_vals[] = {
2343   {   0, "itemFirst" },
2344   {   1, "userFirst" },
2345   { 0, NULL }
2346 };
2347
2348 static const ber_old_choice_t T_itemOrUserFirst_choice[] = {
2349   {   0, BER_CLASS_CON, 0, 0, dissect_itemFirst },
2350   {   1, BER_CLASS_CON, 1, 0, dissect_userFirst },
2351   { 0, 0, 0, 0, NULL }
2352 };
2353
2354 static int
2355 dissect_dop_T_itemOrUserFirst(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2356   offset = dissect_ber_old_choice(actx, tree, tvb, offset,
2357                                      T_itemOrUserFirst_choice, hf_index, ett_dop_T_itemOrUserFirst,
2358                                      NULL);
2359
2360   return offset;
2361 }
2362 static int dissect_itemOrUserFirst(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2363   return dissect_dop_T_itemOrUserFirst(FALSE, tvb, offset, actx, tree, hf_dop_itemOrUserFirst);
2364 }
2365
2366
2367 static const ber_old_sequence_t ACIItem_sequence[] = {
2368   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_identificationTag },
2369   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_precedence },
2370   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationLevel },
2371   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_itemOrUserFirst },
2372   { 0, 0, 0, NULL }
2373 };
2374
2375 static int
2376 dissect_dop_ACIItem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2377   offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset,
2378                                        ACIItem_sequence, hf_index, ett_dop_ACIItem);
2379
2380   return offset;
2381 }
2382
2383 /*--- PDUs ---*/
2384
2385 static void dissect_DSEType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2386   asn1_ctx_t asn1_ctx;
2387   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2388   dissect_dop_DSEType(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_DSEType_PDU);
2389 }
2390 static void dissect_SupplierInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2391   asn1_ctx_t asn1_ctx;
2392   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2393   dissect_dop_SupplierInformation(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_SupplierInformation_PDU);
2394 }
2395 static void dissect_ConsumerInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2396   asn1_ctx_t asn1_ctx;
2397   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2398   dissect_dop_ConsumerInformation(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_ConsumerInformation_PDU);
2399 }
2400 static void dissect_SupplierAndConsumers_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2401   asn1_ctx_t asn1_ctx;
2402   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2403   dissect_dop_SupplierAndConsumers(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_SupplierAndConsumers_PDU);
2404 }
2405 static void dissect_HierarchicalAgreement_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2406   asn1_ctx_t asn1_ctx;
2407   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2408   dissect_dop_HierarchicalAgreement(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_HierarchicalAgreement_PDU);
2409 }
2410 static void dissect_SuperiorToSubordinate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2411   asn1_ctx_t asn1_ctx;
2412   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2413   dissect_dop_SuperiorToSubordinate(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_SuperiorToSubordinate_PDU);
2414 }
2415 static void dissect_SubordinateToSuperior_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2416   asn1_ctx_t asn1_ctx;
2417   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2418   dissect_dop_SubordinateToSuperior(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_SubordinateToSuperior_PDU);
2419 }
2420 static void dissect_SuperiorToSubordinateModification_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2421   asn1_ctx_t asn1_ctx;
2422   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2423   dissect_dop_SuperiorToSubordinateModification(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_SuperiorToSubordinateModification_PDU);
2424 }
2425 static void dissect_NonSpecificHierarchicalAgreement_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2426   asn1_ctx_t asn1_ctx;
2427   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2428   dissect_dop_NonSpecificHierarchicalAgreement(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_NonSpecificHierarchicalAgreement_PDU);
2429 }
2430 static void dissect_NHOBSuperiorToSubordinate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2431   asn1_ctx_t asn1_ctx;
2432   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2433   dissect_dop_NHOBSuperiorToSubordinate(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_NHOBSuperiorToSubordinate_PDU);
2434 }
2435 static void dissect_NHOBSubordinateToSuperior_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2436   asn1_ctx_t asn1_ctx;
2437   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2438   dissect_dop_NHOBSubordinateToSuperior(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_NHOBSubordinateToSuperior_PDU);
2439 }
2440 static void dissect_ACIItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2441   asn1_ctx_t asn1_ctx;
2442   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2443   dissect_dop_ACIItem(FALSE, tvb, 0, &asn1_ctx, tree, hf_dop_ACIItem_PDU);
2444 }
2445
2446
2447 /*--- End of included file: packet-dop-fn.c ---*/
2448 #line 92 "packet-dop-template.c"
2449
2450 static int
2451 call_dop_oid_callback(char *base_string, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, char *col_info)
2452 {
2453   char* binding_param;
2454
2455   binding_param = ep_strdup_printf("%s.%s", base_string, binding_type ? binding_type : "");
2456
2457   if (col_info && (check_col(pinfo->cinfo, COL_INFO))) 
2458     col_append_fstr(pinfo->cinfo, COL_INFO, " %s", col_info);
2459
2460   if (dissector_try_string(dop_dissector_table, binding_param, tvb, pinfo, tree)) {
2461      offset += tvb_length_remaining (tvb, offset);
2462   } else {
2463      proto_item *item=NULL;
2464      proto_tree *next_tree=NULL;
2465
2466      item = proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "Dissector for parameter %s OID:%s not implemented. Contact Wireshark developers if you want this supported", base_string, binding_type ? binding_type : "<empty>");
2467      if (item) {
2468         next_tree = proto_item_add_subtree(item, ett_dop_unknown);
2469      }
2470      offset = dissect_unknown_ber(pinfo, tvb, offset, next_tree);
2471      expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "Unknown binding-parameter");
2472    }
2473
2474    return offset;
2475 }
2476
2477
2478 /*
2479 * Dissect DOP PDUs inside a ROS PDUs
2480 */
2481 static void
2482 dissect_dop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
2483 {
2484         int offset = 0;
2485         int old_offset;
2486         proto_item *item=NULL;
2487         proto_tree *tree=NULL;
2488         int (*dop_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) = NULL;
2489         char *dop_op_name;
2490         asn1_ctx_t asn1_ctx;
2491
2492         asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2493
2494         /* do we have operation information from the ROS dissector?  */
2495         if( !pinfo->private_data ){
2496                 if(parent_tree){
2497                         proto_tree_add_text(parent_tree, tvb, offset, -1,
2498                                 "Internal error: can't get operation information from ROS dissector.");
2499                 } 
2500                 return  ;
2501         } else {
2502                 session  = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
2503         }
2504
2505         if(parent_tree){
2506                 item = proto_tree_add_item(parent_tree, proto_dop, tvb, 0, -1, FALSE);
2507                 tree = proto_item_add_subtree(item, ett_dop);
2508         }
2509         if (check_col(pinfo->cinfo, COL_PROTOCOL))
2510                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "DOP");
2511         if (check_col(pinfo->cinfo, COL_INFO))
2512                 col_clear(pinfo->cinfo, COL_INFO);
2513
2514         switch(session->ros_op & ROS_OP_MASK) {
2515         case (ROS_OP_BIND | ROS_OP_ARGUMENT):   /*  BindInvoke */
2516           dop_dissector = dissect_dop_DSAOperationalManagementBindArgument;
2517           dop_op_name = "DSA-Operational-Bind-Argument";
2518           break;
2519         case (ROS_OP_BIND | ROS_OP_RESULT):     /*  BindResult */
2520           dop_dissector = dissect_dop_DSAOperationalManagementBindResult;
2521           dop_op_name = "DSA-Operational-Bind-Result";
2522           break;
2523         case (ROS_OP_BIND | ROS_OP_ERROR):      /*  BindError */
2524           dop_dissector = dissect_dop_DSAOperationalManagementBindError;
2525           dop_op_name = "DSA-Operational-Management-Bind-Error";
2526           break;
2527         case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /*  Invoke Argument */
2528           switch(session->ros_op & ROS_OP_OPCODE_MASK) {
2529           case 100: /* establish */
2530             dop_dissector = dissect_dop_EstablishOperationalBindingArgument;
2531             dop_op_name = "Establish-Operational-Binding-Argument";
2532             break;
2533           case 101: /* terminate */
2534             dop_dissector = dissect_dop_TerminateOperationalBindingArgument;
2535             dop_op_name = "Terminate-Operational-Binding-Argument";
2536             break;
2537           case 102: /* modify */
2538             dop_dissector = dissect_dop_ModifyOperationalBindingArgument;
2539             dop_op_name = "Modify-Operational-Binding-Argument";
2540             break;
2541           default:
2542             proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Argument opcode (%d)",
2543                                 session->ros_op & ROS_OP_OPCODE_MASK);
2544             break;
2545           }
2546           break;
2547         case (ROS_OP_INVOKE | ROS_OP_RESULT):   /*  Return Result */
2548           switch(session->ros_op & ROS_OP_OPCODE_MASK) {
2549           case 100: /* establish */
2550             dop_dissector = dissect_dop_EstablishOperationalBindingResult;
2551             dop_op_name = "Establish-Operational-Binding-Result";
2552             break;
2553           case 101: /* terminate */
2554             dop_dissector = dissect_dop_TerminateOperationalBindingResult;
2555             dop_op_name = "Terminate-Operational-Binding-Result";
2556             break;
2557           case 102: /* modify */
2558             dop_dissector = dissect_dop_ModifyOperationalBindingResult;
2559             dop_op_name = "Modify-Operational-Binding-Result";
2560             break;
2561           default:
2562             proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Result opcode (%d)",
2563                                 session->ros_op & ROS_OP_OPCODE_MASK);
2564             break;
2565           }
2566           break;
2567         case (ROS_OP_INVOKE | ROS_OP_ERROR):    /*  Return Error */
2568           switch(session->ros_op & ROS_OP_OPCODE_MASK) {
2569           case 100: /* operational-binding */
2570             dop_dissector = dissect_dop_OpBindingErrorParam;
2571             dop_op_name = "Operational-Binding-Error";
2572             break;
2573           default:
2574             proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Error opcode (%d)",
2575                                 session->ros_op & ROS_OP_OPCODE_MASK);
2576             break;
2577           }
2578           break;
2579         default:
2580           proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP PDU");
2581           return;
2582         }
2583
2584         if(dop_dissector) {
2585           if (check_col(pinfo->cinfo, COL_INFO))
2586             col_add_str(pinfo->cinfo, COL_INFO, dop_op_name);
2587
2588           while (tvb_reported_length_remaining(tvb, offset) > 0){
2589             old_offset=offset;
2590             offset=(*dop_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
2591             if(offset == old_offset){
2592               proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DOP PDU");
2593               offset = tvb_length(tvb);
2594               break;
2595             }
2596           }
2597         }
2598 }
2599
2600
2601
2602 /*--- proto_register_dop -------------------------------------------*/
2603 void proto_register_dop(void) {
2604
2605   /* List of fields */
2606   static hf_register_info hf[] =
2607   {
2608
2609 /*--- Included file: packet-dop-hfarr.c ---*/
2610 #line 1 "packet-dop-hfarr.c"
2611     { &hf_dop_DSEType_PDU,
2612       { "DSEType", "dop.DSEType",
2613         FT_BYTES, BASE_HEX, NULL, 0,
2614         "dop.DSEType", HFILL }},
2615     { &hf_dop_SupplierInformation_PDU,
2616       { "SupplierInformation", "dop.SupplierInformation",
2617         FT_NONE, BASE_NONE, NULL, 0,
2618         "dop.SupplierInformation", HFILL }},
2619     { &hf_dop_ConsumerInformation_PDU,
2620       { "ConsumerInformation", "dop.ConsumerInformation",
2621         FT_NONE, BASE_NONE, NULL, 0,
2622         "dop.ConsumerInformation", HFILL }},
2623     { &hf_dop_SupplierAndConsumers_PDU,
2624       { "SupplierAndConsumers", "dop.SupplierAndConsumers",
2625         FT_NONE, BASE_NONE, NULL, 0,
2626         "dop.SupplierAndConsumers", HFILL }},
2627     { &hf_dop_HierarchicalAgreement_PDU,
2628       { "HierarchicalAgreement", "dop.HierarchicalAgreement",
2629         FT_NONE, BASE_NONE, NULL, 0,
2630         "dop.HierarchicalAgreement", HFILL }},
2631     { &hf_dop_SuperiorToSubordinate_PDU,
2632       { "SuperiorToSubordinate", "dop.SuperiorToSubordinate",
2633         FT_NONE, BASE_NONE, NULL, 0,
2634         "dop.SuperiorToSubordinate", HFILL }},
2635     { &hf_dop_SubordinateToSuperior_PDU,
2636       { "SubordinateToSuperior", "dop.SubordinateToSuperior",
2637         FT_NONE, BASE_NONE, NULL, 0,
2638         "dop.SubordinateToSuperior", HFILL }},
2639     { &hf_dop_SuperiorToSubordinateModification_PDU,
2640       { "SuperiorToSubordinateModification", "dop.SuperiorToSubordinateModification",
2641         FT_NONE, BASE_NONE, NULL, 0,
2642         "dop.SuperiorToSubordinateModification", HFILL }},
2643     { &hf_dop_NonSpecificHierarchicalAgreement_PDU,
2644       { "NonSpecificHierarchicalAgreement", "dop.NonSpecificHierarchicalAgreement",
2645         FT_NONE, BASE_NONE, NULL, 0,
2646         "dop.NonSpecificHierarchicalAgreement", HFILL }},
2647     { &hf_dop_NHOBSuperiorToSubordinate_PDU,
2648       { "NHOBSuperiorToSubordinate", "dop.NHOBSuperiorToSubordinate",
2649         FT_NONE, BASE_NONE, NULL, 0,
2650         "dop.NHOBSuperiorToSubordinate", HFILL }},
2651     { &hf_dop_NHOBSubordinateToSuperior_PDU,
2652       { "NHOBSubordinateToSuperior", "dop.NHOBSubordinateToSuperior",
2653         FT_NONE, BASE_NONE, NULL, 0,
2654         "dop.NHOBSubordinateToSuperior", HFILL }},
2655     { &hf_dop_ACIItem_PDU,
2656       { "ACIItem", "dop.ACIItem",
2657         FT_NONE, BASE_NONE, NULL, 0,
2658         "dop.ACIItem", HFILL }},
2659     { &hf_dop_ae_title,
2660       { "ae-title", "dop.ae_title",
2661         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2662         "x509if.Name", HFILL }},
2663     { &hf_dop_address,
2664       { "address", "dop.address",
2665         FT_NONE, BASE_NONE, NULL, 0,
2666         "x509sat.PresentationAddress", HFILL }},
2667     { &hf_dop_protocolInformation,
2668       { "protocolInformation", "dop.protocolInformation",
2669         FT_UINT32, BASE_DEC, NULL, 0,
2670         "dop.SET_OF_ProtocolInformation", HFILL }},
2671     { &hf_dop_protocolInformation_item,
2672       { "Item", "dop.protocolInformation_item",
2673         FT_NONE, BASE_NONE, NULL, 0,
2674         "x509sat.ProtocolInformation", HFILL }},
2675     { &hf_dop_agreementID,
2676       { "agreementID", "dop.agreementID",
2677         FT_NONE, BASE_NONE, NULL, 0,
2678         "dop.OperationalBindingID", HFILL }},
2679     { &hf_dop_supplier_is_master,
2680       { "supplier-is-master", "dop.supplier_is_master",
2681         FT_BOOLEAN, 8, NULL, 0,
2682         "dop.BOOLEAN", HFILL }},
2683     { &hf_dop_non_supplying_master,
2684       { "non-supplying-master", "dop.non_supplying_master",
2685         FT_NONE, BASE_NONE, NULL, 0,
2686         "dsp.AccessPoint", HFILL }},
2687     { &hf_dop_consumers,
2688       { "consumers", "dop.consumers",
2689         FT_UINT32, BASE_DEC, NULL, 0,
2690         "dop.SET_OF_AccessPoint", HFILL }},
2691     { &hf_dop_consumers_item,
2692       { "Item", "dop.consumers_item",
2693         FT_NONE, BASE_NONE, NULL, 0,
2694         "dsp.AccessPoint", HFILL }},
2695     { &hf_dop_bindingType,
2696       { "bindingType", "dop.bindingType",
2697         FT_OID, BASE_NONE, NULL, 0,
2698         "dop.BindingType", HFILL }},
2699     { &hf_dop_bindingID,
2700       { "bindingID", "dop.bindingID",
2701         FT_NONE, BASE_NONE, NULL, 0,
2702         "dop.OperationalBindingID", HFILL }},
2703     { &hf_dop_accessPoint,
2704       { "accessPoint", "dop.accessPoint",
2705         FT_NONE, BASE_NONE, NULL, 0,
2706         "dsp.AccessPoint", HFILL }},
2707     { &hf_dop_establishInitiator,
2708       { "initiator", "dop.initiator",
2709         FT_UINT32, BASE_DEC, VALS(dop_EstablishArgumentInitiator_vals), 0,
2710         "dop.EstablishArgumentInitiator", HFILL }},
2711     { &hf_dop_establishSymmetric,
2712       { "symmetric", "dop.symmetric",
2713         FT_NONE, BASE_NONE, NULL, 0,
2714         "dop.EstablishSymmetric", HFILL }},
2715     { &hf_dop_establishRoleAInitiates,
2716       { "roleA-initiates", "dop.roleA_initiates",
2717         FT_NONE, BASE_NONE, NULL, 0,
2718         "dop.EstablishRoleAInitiates", HFILL }},
2719     { &hf_dop_establishRoleBInitiates,
2720       { "roleB-initiates", "dop.roleB_initiates",
2721         FT_NONE, BASE_NONE, NULL, 0,
2722         "dop.EstablishRoleBInitiates", HFILL }},
2723     { &hf_dop_agreement,
2724       { "agreement", "dop.agreement",
2725         FT_NONE, BASE_NONE, NULL, 0,
2726         "dop.T_agreement", HFILL }},
2727     { &hf_dop_valid,
2728       { "valid", "dop.valid",
2729         FT_NONE, BASE_NONE, NULL, 0,
2730         "dop.Validity", HFILL }},
2731     { &hf_dop_securityParameters,
2732       { "securityParameters", "dop.securityParameters",
2733         FT_NONE, BASE_NONE, NULL, 0,
2734         "dap.SecurityParameters", HFILL }},
2735     { &hf_dop_unsignedEstablishOperationalBindingArgument,
2736       { "unsignedEstablishOperationalBindingArgument", "dop.unsignedEstablishOperationalBindingArgument",
2737         FT_NONE, BASE_NONE, NULL, 0,
2738         "dop.EstablishOperationalBindingArgumentData", HFILL }},
2739     { &hf_dop_signedEstablishOperationalBindingArgument,
2740       { "signedEstablishOperationalBindingArgument", "dop.signedEstablishOperationalBindingArgument",
2741         FT_NONE, BASE_NONE, NULL, 0,
2742         "dop.T_signedEstablishOperationalBindingArgument", HFILL }},
2743     { &hf_dop_establishOperationalBindingArgument,
2744       { "establishOperationalBindingArgument", "dop.establishOperationalBindingArgument",
2745         FT_NONE, BASE_NONE, NULL, 0,
2746         "dop.EstablishOperationalBindingArgumentData", HFILL }},
2747     { &hf_dop_algorithmIdentifier,
2748       { "algorithmIdentifier", "dop.algorithmIdentifier",
2749         FT_NONE, BASE_NONE, NULL, 0,
2750         "x509af.AlgorithmIdentifier", HFILL }},
2751     { &hf_dop_encrypted,
2752       { "encrypted", "dop.encrypted",
2753         FT_BYTES, BASE_HEX, NULL, 0,
2754         "dop.BIT_STRING", HFILL }},
2755     { &hf_dop_identifier,
2756       { "identifier", "dop.identifier",
2757         FT_INT32, BASE_DEC, NULL, 0,
2758         "dop.T_identifier", HFILL }},
2759     { &hf_dop_version,
2760       { "version", "dop.version",
2761         FT_INT32, BASE_DEC, NULL, 0,
2762         "dop.T_version", HFILL }},
2763     { &hf_dop_validFrom,
2764       { "validFrom", "dop.validFrom",
2765         FT_UINT32, BASE_DEC, VALS(dop_T_validFrom_vals), 0,
2766         "dop.T_validFrom", HFILL }},
2767     { &hf_dop_now,
2768       { "now", "dop.now",
2769         FT_NONE, BASE_NONE, NULL, 0,
2770         "dop.NULL", HFILL }},
2771     { &hf_dop_time,
2772       { "time", "dop.time",
2773         FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0,
2774         "dop.Time", HFILL }},
2775     { &hf_dop_validUntil,
2776       { "validUntil", "dop.validUntil",
2777         FT_UINT32, BASE_DEC, VALS(dop_T_validUntil_vals), 0,
2778         "dop.T_validUntil", HFILL }},
2779     { &hf_dop_explicitTermination,
2780       { "explicitTermination", "dop.explicitTermination",
2781         FT_NONE, BASE_NONE, NULL, 0,
2782         "dop.NULL", HFILL }},
2783     { &hf_dop_utcTime,
2784       { "utcTime", "dop.utcTime",
2785         FT_STRING, BASE_NONE, NULL, 0,
2786         "dop.UTCTime", HFILL }},
2787     { &hf_dop_generalizedTime,
2788       { "generalizedTime", "dop.generalizedTime",
2789         FT_STRING, BASE_NONE, NULL, 0,
2790         "dop.GeneralizedTime", HFILL }},
2791     { &hf_dop_initiator,
2792       { "initiator", "dop.initiator",
2793         FT_UINT32, BASE_DEC, VALS(dop_T_initiator_vals), 0,
2794         "dop.T_initiator", HFILL }},
2795     { &hf_dop_symmetric,
2796       { "symmetric", "dop.symmetric",
2797         FT_NONE, BASE_NONE, NULL, 0,
2798         "dop.T_symmetric", HFILL }},
2799     { &hf_dop_roleA_replies,
2800       { "roleA-replies", "dop.roleA_replies",
2801         FT_NONE, BASE_NONE, NULL, 0,
2802         "dop.T_roleA_replies", HFILL }},
2803     { &hf_dop_roleB_replies,
2804       { "roleB-replies", "dop.roleB_replies",
2805         FT_NONE, BASE_NONE, NULL, 0,
2806         "dop.T_roleB_replies", HFILL }},
2807     { &hf_dop_performer,
2808       { "performer", "dop.performer",
2809         FT_UINT32, BASE_DEC, NULL, 0,
2810         "x509if.DistinguishedName", HFILL }},
2811     { &hf_dop_aliasDereferenced,
2812       { "aliasDereferenced", "dop.aliasDereferenced",
2813         FT_BOOLEAN, 8, NULL, 0,
2814         "dop.BOOLEAN", HFILL }},
2815     { &hf_dop_notification,
2816       { "notification", "dop.notification",
2817         FT_UINT32, BASE_DEC, NULL, 0,
2818         "dop.SEQUENCE_SIZE_1_MAX_OF_Attribute", HFILL }},
2819     { &hf_dop_notification_item,
2820       { "Item", "dop.notification_item",
2821         FT_NONE, BASE_NONE, NULL, 0,
2822         "x509if.Attribute", HFILL }},
2823     { &hf_dop_modifyInitiator,
2824       { "initiator", "dop.initiator",
2825         FT_UINT32, BASE_DEC, VALS(dop_ModifyArgumentInitiator_vals), 0,
2826         "dop.ModifyArgumentInitiator", HFILL }},
2827     { &hf_dop_modifySymmetric,
2828       { "symmetric", "dop.symmetric",
2829         FT_NONE, BASE_NONE, NULL, 0,
2830         "dop.ModifySymmetric", HFILL }},
2831     { &hf_dop_modifyRoleAInitiates,
2832       { "roleA-initiates", "dop.roleA_initiates",
2833         FT_NONE, BASE_NONE, NULL, 0,
2834         "dop.ModifyRoleAInitiates", HFILL }},
2835     { &hf_dop_modifyRoleBInitiates,
2836       { "roleB-initiates", "dop.roleB_initiates",
2837         FT_NONE, BASE_NONE, NULL, 0,
2838         "dop.ModifyRoleBInitiates", HFILL }},
2839     { &hf_dop_newBindingID,
2840       { "newBindingID", "dop.newBindingID",
2841         FT_NONE, BASE_NONE, NULL, 0,
2842         "dop.OperationalBindingID", HFILL }},
2843     { &hf_dop_argumentNewAgreement,
2844       { "newAgreement", "dop.newAgreement",
2845         FT_NONE, BASE_NONE, NULL, 0,
2846         "dop.ArgumentNewAgreement", HFILL }},
2847     { &hf_dop_unsignedModifyOperationalBindingArgument,
2848       { "unsignedModifyOperationalBindingArgument", "dop.unsignedModifyOperationalBindingArgument",
2849         FT_NONE, BASE_NONE, NULL, 0,
2850         "dop.ModifyOperationalBindingArgumentData", HFILL }},
2851     { &hf_dop_signedModifyOperationalBindingArgument,
2852       { "signedModifyOperationalBindingArgument", "dop.signedModifyOperationalBindingArgument",
2853         FT_NONE, BASE_NONE, NULL, 0,
2854         "dop.T_signedModifyOperationalBindingArgument", HFILL }},
2855     { &hf_dop_modifyOperationalBindingArgument,
2856       { "modifyOperationalBindingArgument", "dop.modifyOperationalBindingArgument",
2857         FT_NONE, BASE_NONE, NULL, 0,
2858         "dop.ModifyOperationalBindingArgumentData", HFILL }},
2859     { &hf_dop_null,
2860       { "null", "dop.null",
2861         FT_NONE, BASE_NONE, NULL, 0,
2862         "dop.NULL", HFILL }},
2863     { &hf_dop_protectedModifyResult,
2864       { "protected", "dop.protected",
2865         FT_NONE, BASE_NONE, NULL, 0,
2866         "dop.ProtectedModifyResult", HFILL }},
2867     { &hf_dop_modifyOperationalBindingResultData,
2868       { "modifyOperationalBindingResultData", "dop.modifyOperationalBindingResultData",
2869         FT_NONE, BASE_NONE, NULL, 0,
2870         "dop.ModifyOperationalBindingResultData", HFILL }},
2871     { &hf_dop_resultNewAgreement,
2872       { "newAgreement", "dop.newAgreement",
2873         FT_NONE, BASE_NONE, NULL, 0,
2874         "dop.ResultNewAgreement", HFILL }},
2875     { &hf_dop_terminateInitiator,
2876       { "initiator", "dop.initiator",
2877         FT_UINT32, BASE_DEC, VALS(dop_TerminateArgumentInitiator_vals), 0,
2878         "dop.TerminateArgumentInitiator", HFILL }},
2879     { &hf_dop_terminateSymmetric,
2880       { "symmetric", "dop.symmetric",
2881         FT_NONE, BASE_NONE, NULL, 0,
2882         "dop.TerminateSymmetric", HFILL }},
2883     { &hf_dop_terminateRoleAInitiates,
2884       { "roleA-initiates", "dop.roleA_initiates",
2885         FT_NONE, BASE_NONE, NULL, 0,
2886         "dop.TerminateRoleAInitiates", HFILL }},
2887     { &hf_dop_terminateRoleBInitiates,
2888       { "roleB-initiates", "dop.roleB_initiates",
2889         FT_NONE, BASE_NONE, NULL, 0,
2890         "dop.TerminateRoleBInitiates", HFILL }},
2891     { &hf_dop_terminateAtTime,
2892       { "terminateAt", "dop.terminateAt",
2893         FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0,
2894         "dop.Time", HFILL }},
2895     { &hf_dop_unsignedTerminateOperationalBindingArgument,
2896       { "unsignedTerminateOperationalBindingArgument", "dop.unsignedTerminateOperationalBindingArgument",
2897         FT_NONE, BASE_NONE, NULL, 0,
2898         "dop.TerminateOperationalBindingArgumentData", HFILL }},
2899     { &hf_dop_signedTerminateOperationalBindingArgument,
2900       { "signedTerminateOperationalBindingArgument", "dop.signedTerminateOperationalBindingArgument",
2901         FT_NONE, BASE_NONE, NULL, 0,
2902         "dop.T_signedTerminateOperationalBindingArgument", HFILL }},
2903     { &hf_dop_terminateOperationalBindingArgument,
2904       { "terminateOperationalBindingArgument", "dop.terminateOperationalBindingArgument",
2905         FT_NONE, BASE_NONE, NULL, 0,
2906         "dop.TerminateOperationalBindingArgumentData", HFILL }},
2907     { &hf_dop_protectedTerminateResult,
2908       { "protected", "dop.protected",
2909         FT_NONE, BASE_NONE, NULL, 0,
2910         "dop.ProtectedTerminateResult", HFILL }},
2911     { &hf_dop_terminateOperationalBindingResultData,
2912       { "terminateOperationalBindingResultData", "dop.terminateOperationalBindingResultData",
2913         FT_NONE, BASE_NONE, NULL, 0,
2914         "dop.TerminateOperationalBindingResultData", HFILL }},
2915     { &hf_dop_terminateAtGeneralizedTime,
2916       { "terminateAt", "dop.terminateAt",
2917         FT_STRING, BASE_NONE, NULL, 0,
2918         "dop.GeneralizedTime", HFILL }},
2919     { &hf_dop_problem,
2920       { "problem", "dop.problem",
2921         FT_UINT32, BASE_DEC, VALS(dop_T_problem_vals), 0,
2922         "dop.T_problem", HFILL }},
2923     { &hf_dop_agreementProposal,
2924       { "agreementProposal", "dop.agreementProposal",
2925         FT_NONE, BASE_NONE, NULL, 0,
2926         "dop.T_agreementProposal", HFILL }},
2927     { &hf_dop_retryAt,
2928       { "retryAt", "dop.retryAt",
2929         FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0,
2930         "dop.Time", HFILL }},
2931     { &hf_dop_rdn,
2932       { "rdn", "dop.rdn",
2933         FT_UINT32, BASE_DEC, NULL, 0,
2934         "x509if.RelativeDistinguishedName", HFILL }},
2935     { &hf_dop_immediateSuperior,
2936       { "immediateSuperior", "dop.immediateSuperior",
2937         FT_UINT32, BASE_DEC, NULL, 0,
2938         "x509if.DistinguishedName", HFILL }},
2939     { &hf_dop_contextPrefixInfo,
2940       { "contextPrefixInfo", "dop.contextPrefixInfo",
2941         FT_UINT32, BASE_DEC, NULL, 0,
2942         "dop.DITcontext", HFILL }},
2943     { &hf_dop_entryInfo,
2944       { "entryInfo", "dop.entryInfo",
2945         FT_UINT32, BASE_DEC, NULL, 0,
2946         "dop.SET_OF_Attribute", HFILL }},
2947     { &hf_dop_entryInfo_item,
2948       { "Item", "dop.entryInfo_item",
2949         FT_NONE, BASE_NONE, NULL, 0,
2950         "x509if.Attribute", HFILL }},
2951     { &hf_dop_immediateSuperiorInfo,
2952       { "immediateSuperiorInfo", "dop.immediateSuperiorInfo",
2953         FT_UINT32, BASE_DEC, NULL, 0,
2954         "dop.SET_OF_Attribute", HFILL }},
2955     { &hf_dop_immediateSuperiorInfo_item,
2956       { "Item", "dop.immediateSuperiorInfo_item",
2957         FT_NONE, BASE_NONE, NULL, 0,
2958         "x509if.Attribute", HFILL }},
2959     { &hf_dop_DITcontext_item,
2960       { "Item", "dop.DITcontext_item",
2961         FT_NONE, BASE_NONE, NULL, 0,
2962         "dop.Vertex", HFILL }},
2963     { &hf_dop_admPointInfo,
2964       { "admPointInfo", "dop.admPointInfo",
2965         FT_UINT32, BASE_DEC, NULL, 0,
2966         "dop.SET_OF_Attribute", HFILL }},
2967     { &hf_dop_admPointInfo_item,
2968       { "Item", "dop.admPointInfo_item",
2969         FT_NONE, BASE_NONE, NULL, 0,
2970         "x509if.Attribute", HFILL }},
2971     { &hf_dop_subentries,
2972       { "subentries", "dop.subentries",
2973         FT_UINT32, BASE_DEC, NULL, 0,
2974         "dop.SET_OF_SubentryInfo", HFILL }},
2975     { &hf_dop_subentries_item,
2976       { "Item", "dop.subentries_item",
2977         FT_NONE, BASE_NONE, NULL, 0,
2978         "dop.SubentryInfo", HFILL }},
2979     { &hf_dop_accessPoints,
2980       { "accessPoints", "dop.accessPoints",
2981         FT_UINT32, BASE_DEC, NULL, 0,
2982         "dsp.MasterAndShadowAccessPoints", HFILL }},
2983     { &hf_dop_info,
2984       { "info", "dop.info",
2985         FT_UINT32, BASE_DEC, NULL, 0,
2986         "dop.SET_OF_Attribute", HFILL }},
2987     { &hf_dop_info_item,
2988       { "Item", "dop.info_item",
2989         FT_NONE, BASE_NONE, NULL, 0,
2990         "x509if.Attribute", HFILL }},
2991     { &hf_dop_alias,
2992       { "alias", "dop.alias",
2993         FT_BOOLEAN, 8, NULL, 0,
2994         "dop.BOOLEAN", HFILL }},
2995     { &hf_dop_identificationTag,
2996       { "identificationTag", "dop.identificationTag",
2997         FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
2998         "x509sat.DirectoryString", HFILL }},
2999     { &hf_dop_precedence,
3000       { "precedence", "dop.precedence",
3001         FT_INT32, BASE_DEC, NULL, 0,
3002         "dop.Precedence", HFILL }},
3003     { &hf_dop_authenticationLevel,
3004       { "authenticationLevel", "dop.authenticationLevel",
3005         FT_UINT32, BASE_DEC, VALS(dop_AuthenticationLevel_vals), 0,
3006         "dop.AuthenticationLevel", HFILL }},
3007     { &hf_dop_itemOrUserFirst,
3008       { "itemOrUserFirst", "dop.itemOrUserFirst",
3009         FT_UINT32, BASE_DEC, VALS(dop_T_itemOrUserFirst_vals), 0,
3010         "dop.T_itemOrUserFirst", HFILL }},
3011     { &hf_dop_itemFirst,
3012       { "itemFirst", "dop.itemFirst",
3013         FT_NONE, BASE_NONE, NULL, 0,
3014         "dop.T_itemFirst", HFILL }},
3015     { &hf_dop_protectedItems,
3016       { "protectedItems", "dop.protectedItems",
3017         FT_NONE, BASE_NONE, NULL, 0,
3018         "dop.ProtectedItems", HFILL }},
3019     { &hf_dop_itemPermissions,
3020       { "itemPermissions", "dop.itemPermissions",
3021         FT_UINT32, BASE_DEC, NULL, 0,
3022         "dop.SET_OF_ItemPermission", HFILL }},
3023     { &hf_dop_itemPermissions_item,
3024       { "Item", "dop.itemPermissions_item",
3025         FT_NONE, BASE_NONE, NULL, 0,
3026         "dop.ItemPermission", HFILL }},
3027     { &hf_dop_userFirst,
3028       { "userFirst", "dop.userFirst",
3029         FT_NONE, BASE_NONE, NULL, 0,
3030         "dop.T_userFirst", HFILL }},
3031     { &hf_dop_userClasses,
3032       { "userClasses", "dop.userClasses",
3033         FT_NONE, BASE_NONE, NULL, 0,
3034         "dop.UserClasses", HFILL }},
3035     { &hf_dop_userPermissions,
3036       { "userPermissions", "dop.userPermissions",
3037         FT_UINT32, BASE_DEC, NULL, 0,
3038         "dop.SET_OF_UserPermission", HFILL }},
3039     { &hf_dop_userPermissions_item,
3040       { "Item", "dop.userPermissions_item",
3041         FT_NONE, BASE_NONE, NULL, 0,
3042         "dop.UserPermission", HFILL }},
3043     { &hf_dop_entry,
3044       { "entry", "dop.entry",
3045         FT_NONE, BASE_NONE, NULL, 0,
3046         "dop.NULL", HFILL }},
3047     { &hf_dop_allUserAttributeTypes,
3048       { "allUserAttributeTypes", "dop.allUserAttributeTypes",
3049         FT_NONE, BASE_NONE, NULL, 0,
3050         "dop.NULL", HFILL }},
3051     { &hf_dop_attributeType,
3052       { "attributeType", "dop.attributeType",
3053         FT_UINT32, BASE_DEC, NULL, 0,
3054         "dop.SET_OF_AttributeType", HFILL }},
3055     { &hf_dop_attributeType_item,
3056       { "Item", "dop.attributeType_item",
3057         FT_OID, BASE_NONE, NULL, 0,
3058         "x509if.AttributeType", HFILL }},
3059     { &hf_dop_allAttributeValues,
3060       { "allAttributeValues", "dop.allAttributeValues",
3061         FT_UINT32, BASE_DEC, NULL, 0,
3062         "dop.SET_OF_AttributeType", HFILL }},
3063     { &hf_dop_allAttributeValues_item,
3064       { "Item", "dop.allAttributeValues_item",
3065         FT_OID, BASE_NONE, NULL, 0,
3066         "x509if.AttributeType", HFILL }},
3067     { &hf_dop_allUserAttributeTypesAndValues,
3068       { "allUserAttributeTypesAndValues", "dop.allUserAttributeTypesAndValues",
3069         FT_NONE, BASE_NONE, NULL, 0,
3070         "dop.NULL", HFILL }},
3071     { &hf_dop_attributeValue,
3072       { "attributeValue", "dop.attributeValue",
3073         FT_UINT32, BASE_DEC, NULL, 0,
3074         "dop.SET_OF_AttributeTypeAndValue", HFILL }},
3075     { &hf_dop_attributeValue_item,
3076       { "Item", "dop.attributeValue_item",
3077         FT_NONE, BASE_NONE, NULL, 0,
3078         "crmf.AttributeTypeAndValue", HFILL }},
3079     { &hf_dop_selfValue,
3080       { "selfValue", "dop.selfValue",
3081         FT_UINT32, BASE_DEC, NULL, 0,
3082         "dop.SET_OF_AttributeType", HFILL }},
3083     { &hf_dop_selfValue_item,
3084       { "Item", "dop.selfValue_item",
3085         FT_OID, BASE_NONE, NULL, 0,
3086         "x509if.AttributeType", HFILL }},
3087     { &hf_dop_rangeOfValues,
3088       { "rangeOfValues", "dop.rangeOfValues",
3089         FT_UINT32, BASE_DEC, VALS(dap_Filter_vals), 0,
3090         "dap.Filter", HFILL }},
3091     { &hf_dop_maxValueCount,
3092       { "maxValueCount", "dop.maxValueCount",
3093         FT_UINT32, BASE_DEC, NULL, 0,
3094         "dop.SET_OF_MaxValueCount", HFILL }},
3095     { &hf_dop_maxValueCount_item,
3096       { "Item", "dop.maxValueCount_item",
3097         FT_NONE, BASE_NONE, NULL, 0,
3098         "dop.MaxValueCount", HFILL }},
3099     { &hf_dop_maxImmSub,
3100       { "maxImmSub", "dop.maxImmSub",
3101         FT_INT32, BASE_DEC, NULL, 0,
3102         "dop.INTEGER", HFILL }},
3103     { &hf_dop_restrictedBy,
3104       { "restrictedBy", "dop.restrictedBy",
3105         FT_UINT32, BASE_DEC, NULL, 0,
3106         "dop.SET_OF_RestrictedValue", HFILL }},
3107     { &hf_dop_restrictedBy_item,
3108       { "Item", "dop.restrictedBy_item",
3109         FT_NONE, BASE_NONE, NULL, 0,
3110         "dop.RestrictedValue", HFILL }},
3111     { &hf_dop_contexts,
3112       { "contexts", "dop.contexts",
3113         FT_UINT32, BASE_DEC, NULL, 0,
3114         "dop.SET_OF_ContextAssertion", HFILL }},
3115     { &hf_dop_contexts_item,
3116       { "Item", "dop.contexts_item",
3117         FT_NONE, BASE_NONE, NULL, 0,
3118         "x509if.ContextAssertion", HFILL }},
3119     { &hf_dop_classes,
3120       { "classes", "dop.classes",
3121         FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
3122         "x509if.Refinement", HFILL }},
3123     { &hf_dop_type,
3124       { "type", "dop.type",
3125         FT_OID, BASE_NONE, NULL, 0,
3126         "x509if.AttributeType", HFILL }},
3127     { &hf_dop_maxCount,
3128       { "maxCount", "dop.maxCount",
3129         FT_INT32, BASE_DEC, NULL, 0,
3130         "dop.INTEGER", HFILL }},
3131     { &hf_dop_valuesIn,
3132       { "valuesIn", "dop.valuesIn",
3133         FT_OID, BASE_NONE, NULL, 0,
3134         "x509if.AttributeType", HFILL }},
3135     { &hf_dop_allUsers,
3136       { "allUsers", "dop.allUsers",
3137         FT_NONE, BASE_NONE, NULL, 0,
3138         "dop.NULL", HFILL }},
3139     { &hf_dop_thisEntry,
3140       { "thisEntry", "dop.thisEntry",
3141         FT_NONE, BASE_NONE, NULL, 0,
3142         "dop.NULL", HFILL }},
3143     { &hf_dop_name,
3144       { "name", "dop.name",
3145         FT_UINT32, BASE_DEC, NULL, 0,
3146         "dop.SET_OF_NameAndOptionalUID", HFILL }},
3147     { &hf_dop_name_item,
3148       { "Item", "dop.name_item",
3149         FT_NONE, BASE_NONE, NULL, 0,
3150         "x509sat.NameAndOptionalUID", HFILL }},
3151     { &hf_dop_userGroup,
3152       { "userGroup", "dop.userGroup",
3153         FT_UINT32, BASE_DEC, NULL, 0,
3154         "dop.SET_OF_NameAndOptionalUID", HFILL }},
3155     { &hf_dop_userGroup_item,
3156       { "Item", "dop.userGroup_item",
3157         FT_NONE, BASE_NONE, NULL, 0,
3158         "x509sat.NameAndOptionalUID", HFILL }},
3159     { &hf_dop_subtree,
3160       { "subtree", "dop.subtree",
3161         FT_UINT32, BASE_DEC, NULL, 0,
3162         "dop.SET_OF_SubtreeSpecification", HFILL }},
3163     { &hf_dop_subtree_item,
3164       { "Item", "dop.subtree_item",
3165         FT_NONE, BASE_NONE, NULL, 0,
3166         "x509if.SubtreeSpecification", HFILL }},
3167     { &hf_dop_grantsAndDenials,
3168       { "grantsAndDenials", "dop.grantsAndDenials",
3169         FT_BYTES, BASE_HEX, NULL, 0,
3170         "dop.GrantsAndDenials", HFILL }},
3171     { &hf_dop_basicLevels,
3172       { "basicLevels", "dop.basicLevels",
3173         FT_NONE, BASE_NONE, NULL, 0,
3174         "dop.T_basicLevels", HFILL }},
3175     { &hf_dop_level,
3176       { "level", "dop.level",
3177         FT_UINT32, BASE_DEC, VALS(dop_T_level_vals), 0,
3178         "dop.T_level", HFILL }},
3179     { &hf_dop_localQualifier,
3180       { "localQualifier", "dop.localQualifier",
3181         FT_INT32, BASE_DEC, NULL, 0,
3182         "dop.INTEGER", HFILL }},
3183     { &hf_dop_signed,
3184       { "signed", "dop.signed",
3185         FT_BOOLEAN, 8, NULL, 0,
3186         "dop.BOOLEAN", HFILL }},
3187     { &hf_dop_other,
3188       { "other", "dop.other",
3189         FT_NONE, BASE_NONE, NULL, 0,
3190         "acse.EXTERNALt", HFILL }},
3191     { &hf_dop_DSEType_root,
3192       { "root", "dop.root",
3193         FT_BOOLEAN, 8, NULL, 0x80,
3194         "", HFILL }},
3195     { &hf_dop_DSEType_glue,
3196       { "glue", "dop.glue",
3197         FT_BOOLEAN, 8, NULL, 0x40,
3198         "", HFILL }},
3199     { &hf_dop_DSEType_cp,
3200       { "cp", "dop.cp",
3201         FT_BOOLEAN, 8, NULL, 0x20,
3202         "", HFILL }},
3203     { &hf_dop_DSEType_entry,
3204       { "entry", "dop.entry",
3205         FT_BOOLEAN, 8, NULL, 0x10,
3206         "", HFILL }},
3207     { &hf_dop_DSEType_alias,
3208       { "alias", "dop.alias",
3209         FT_BOOLEAN, 8, NULL, 0x08,
3210         "", HFILL }},
3211     { &hf_dop_DSEType_subr,
3212       { "subr", "dop.subr",
3213         FT_BOOLEAN, 8, NULL, 0x04,
3214         "", HFILL }},
3215     { &hf_dop_DSEType_nssr,
3216       { "nssr", "dop.nssr",
3217         FT_BOOLEAN, 8, NULL, 0x02,
3218         "", HFILL }},
3219     { &hf_dop_DSEType_supr,
3220       { "supr", "dop.supr",
3221         FT_BOOLEAN, 8, NULL, 0x01,
3222         "", HFILL }},
3223     { &hf_dop_DSEType_xr,
3224       { "xr", "dop.xr",
3225         FT_BOOLEAN, 8, NULL, 0x80,
3226         "", HFILL }},
3227     { &hf_dop_DSEType_admPoint,
3228       { "admPoint", "dop.admPoint",
3229         FT_BOOLEAN, 8, NULL, 0x40,
3230         "", HFILL }},
3231     { &hf_dop_DSEType_subentry,
3232       { "subentry", "dop.subentry",
3233         FT_BOOLEAN, 8, NULL, 0x20,
3234         "", HFILL }},
3235     { &hf_dop_DSEType_shadow,
3236       { "shadow", "dop.shadow",
3237         FT_BOOLEAN, 8, NULL, 0x10,
3238         "", HFILL }},
3239     { &hf_dop_DSEType_immSupr,
3240       { "immSupr", "dop.immSupr",
3241         FT_BOOLEAN, 8, NULL, 0x04,
3242         "", HFILL }},
3243     { &hf_dop_DSEType_rhob,
3244       { "rhob", "dop.rhob",
3245         FT_BOOLEAN, 8, NULL, 0x02,
3246         "", HFILL }},
3247     { &hf_dop_DSEType_sa,
3248       { "sa", "dop.sa",
3249         FT_BOOLEAN, 8, NULL, 0x01,
3250         "", HFILL }},
3251     { &hf_dop_DSEType_dsSubentry,
3252       { "dsSubentry", "dop.dsSubentry",
3253         FT_BOOLEAN, 8, NULL, 0x80,
3254         "", HFILL }},
3255     { &hf_dop_DSEType_familyMember,
3256       { "familyMember", "dop.familyMember",
3257         FT_BOOLEAN, 8, NULL, 0x40,
3258         "", HFILL }},
3259     { &hf_dop_GrantsAndDenials_grantAdd,
3260       { "grantAdd", "dop.grantAdd",
3261         FT_BOOLEAN, 8, NULL, 0x80,
3262         "", HFILL }},
3263     { &hf_dop_GrantsAndDenials_denyAdd,
3264       { "denyAdd", "dop.denyAdd",
3265         FT_BOOLEAN, 8, NULL, 0x40,
3266         "", HFILL }},
3267     { &hf_dop_GrantsAndDenials_grantDiscloseOnError,
3268       { "grantDiscloseOnError", "dop.grantDiscloseOnError",
3269         FT_BOOLEAN, 8, NULL, 0x20,
3270         "", HFILL }},
3271     { &hf_dop_GrantsAndDenials_denyDiscloseOnError,
3272       { "denyDiscloseOnError", "dop.denyDiscloseOnError",
3273         FT_BOOLEAN, 8, NULL, 0x10,
3274         "", HFILL }},
3275     { &hf_dop_GrantsAndDenials_grantRead,
3276       { "grantRead", "dop.grantRead",
3277         FT_BOOLEAN, 8, NULL, 0x08,
3278         "", HFILL }},
3279     { &hf_dop_GrantsAndDenials_denyRead,
3280       { "denyRead", "dop.denyRead",
3281         FT_BOOLEAN, 8, NULL, 0x04,
3282         "", HFILL }},
3283     { &hf_dop_GrantsAndDenials_grantRemove,
3284       { "grantRemove", "dop.grantRemove",
3285         FT_BOOLEAN, 8, NULL, 0x02,
3286         "", HFILL }},
3287     { &hf_dop_GrantsAndDenials_denyRemove,
3288       { "denyRemove", "dop.denyRemove",
3289         FT_BOOLEAN, 8, NULL, 0x01,
3290         "", HFILL }},
3291     { &hf_dop_GrantsAndDenials_grantBrowse,
3292       { "grantBrowse", "dop.grantBrowse",
3293         FT_BOOLEAN, 8, NULL, 0x80,
3294         "", HFILL }},
3295     { &hf_dop_GrantsAndDenials_denyBrowse,
3296       { "denyBrowse", "dop.denyBrowse",
3297         FT_BOOLEAN, 8, NULL, 0x40,
3298         "", HFILL }},
3299     { &hf_dop_GrantsAndDenials_grantExport,
3300       { "grantExport", "dop.grantExport",
3301         FT_BOOLEAN, 8, NULL, 0x20,
3302         "", HFILL }},
3303     { &hf_dop_GrantsAndDenials_denyExport,
3304       { "denyExport", "dop.denyExport",
3305         FT_BOOLEAN, 8, NULL, 0x10,
3306         "", HFILL }},
3307     { &hf_dop_GrantsAndDenials_grantImport,
3308       { "grantImport", "dop.grantImport",
3309         FT_BOOLEAN, 8, NULL, 0x08,
3310         "", HFILL }},
3311     { &hf_dop_GrantsAndDenials_denyImport,
3312       { "denyImport", "dop.denyImport",
3313         FT_BOOLEAN, 8, NULL, 0x04,
3314         "", HFILL }},
3315     { &hf_dop_GrantsAndDenials_grantModify,
3316       { "grantModify", "dop.grantModify",
3317         FT_BOOLEAN, 8, NULL, 0x02,
3318         "", HFILL }},
3319     { &hf_dop_GrantsAndDenials_denyModify,
3320       { "denyModify", "dop.denyModify",
3321         FT_BOOLEAN, 8, NULL, 0x01,
3322         "", HFILL }},
3323     { &hf_dop_GrantsAndDenials_grantRename,
3324       { "grantRename", "dop.grantRename",
3325         FT_BOOLEAN, 8, NULL, 0x80,
3326         "", HFILL }},
3327     { &hf_dop_GrantsAndDenials_denyRename,
3328       { "denyRename", "dop.denyRename",
3329         FT_BOOLEAN, 8, NULL, 0x40,
3330         "", HFILL }},
3331     { &hf_dop_GrantsAndDenials_grantReturnDN,
3332       { "grantReturnDN", "dop.grantReturnDN",
3333         FT_BOOLEAN, 8, NULL, 0x20,
3334         "", HFILL }},
3335     { &hf_dop_GrantsAndDenials_denyReturnDN,
3336       { "denyReturnDN", "dop.denyReturnDN",
3337         FT_BOOLEAN, 8, NULL, 0x10,
3338         "", HFILL }},
3339     { &hf_dop_GrantsAndDenials_grantCompare,
3340       { "grantCompare", "dop.grantCompare",
3341         FT_BOOLEAN, 8, NULL, 0x08,
3342         "", HFILL }},
3343     { &hf_dop_GrantsAndDenials_denyCompare,
3344       { "denyCompare", "dop.denyCompare",
3345         FT_BOOLEAN, 8, NULL, 0x04,
3346         "", HFILL }},
3347     { &hf_dop_GrantsAndDenials_grantFilterMatch,
3348       { "grantFilterMatch", "dop.grantFilterMatch",
3349         FT_BOOLEAN, 8, NULL, 0x02,
3350         "", HFILL }},
3351     { &hf_dop_GrantsAndDenials_denyFilterMatch,
3352       { "denyFilterMatch", "dop.denyFilterMatch",
3353         FT_BOOLEAN, 8, NULL, 0x01,
3354         "", HFILL }},
3355     { &hf_dop_GrantsAndDenials_grantInvoke,
3356       { "grantInvoke", "dop.grantInvoke",
3357         FT_BOOLEAN, 8, NULL, 0x80,
3358         "", HFILL }},
3359     { &hf_dop_GrantsAndDenials_denyInvoke,
3360       { "denyInvoke", "dop.denyInvoke",
3361         FT_BOOLEAN, 8, NULL, 0x40,
3362         "", HFILL }},
3363
3364 /*--- End of included file: packet-dop-hfarr.c ---*/
3365 #line 252 "packet-dop-template.c"
3366   };
3367
3368   /* List of subtrees */
3369   static gint *ett[] = {
3370     &ett_dop,
3371     &ett_dop_unknown,
3372
3373 /*--- Included file: packet-dop-ettarr.c ---*/
3374 #line 1 "packet-dop-ettarr.c"
3375     &ett_dop_DSEType,
3376     &ett_dop_SupplierOrConsumer,
3377     &ett_dop_SET_OF_ProtocolInformation,
3378     &ett_dop_SupplierInformation,
3379     &ett_dop_SupplierAndConsumers,
3380     &ett_dop_SET_OF_AccessPoint,
3381     &ett_dop_EstablishOperationalBindingArgumentData,
3382     &ett_dop_EstablishArgumentInitiator,
3383     &ett_dop_EstablishOperationalBindingArgument,
3384     &ett_dop_T_signedEstablishOperationalBindingArgument,
3385     &ett_dop_OperationalBindingID,
3386     &ett_dop_Validity,
3387     &ett_dop_T_validFrom,
3388     &ett_dop_T_validUntil,
3389     &ett_dop_Time,
3390     &ett_dop_EstablishOperationalBindingResult,
3391     &ett_dop_T_initiator,
3392     &ett_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute,
3393     &ett_dop_ModifyOperationalBindingArgumentData,
3394     &ett_dop_ModifyArgumentInitiator,
3395     &ett_dop_ModifyOperationalBindingArgument,
3396     &ett_dop_T_signedModifyOperationalBindingArgument,
3397     &ett_dop_ModifyOperationalBindingResult,
3398     &ett_dop_ProtectedModifyResult,
3399     &ett_dop_ModifyOperationalBindingResultData,
3400     &ett_dop_TerminateOperationalBindingArgumentData,
3401     &ett_dop_TerminateArgumentInitiator,
3402     &ett_dop_TerminateOperationalBindingArgument,
3403     &ett_dop_T_signedTerminateOperationalBindingArgument,
3404     &ett_dop_TerminateOperationalBindingResult,
3405     &ett_dop_ProtectedTerminateResult,
3406     &ett_dop_TerminateOperationalBindingResultData,
3407     &ett_dop_OpBindingErrorParam,
3408     &ett_dop_HierarchicalAgreement,
3409     &ett_dop_SuperiorToSubordinate,
3410     &ett_dop_SET_OF_Attribute,
3411     &ett_dop_DITcontext,
3412     &ett_dop_Vertex,
3413     &ett_dop_SET_OF_SubentryInfo,
3414     &ett_dop_SubentryInfo,
3415     &ett_dop_SubordinateToSuperior,
3416     &ett_dop_SuperiorToSubordinateModification,
3417     &ett_dop_NonSpecificHierarchicalAgreement,
3418     &ett_dop_NHOBSuperiorToSubordinate,
3419     &ett_dop_NHOBSubordinateToSuperior,
3420     &ett_dop_ACIItem,
3421     &ett_dop_T_itemOrUserFirst,
3422     &ett_dop_T_itemFirst,
3423     &ett_dop_SET_OF_ItemPermission,
3424     &ett_dop_T_userFirst,
3425     &ett_dop_SET_OF_UserPermission,
3426     &ett_dop_ProtectedItems,
3427     &ett_dop_SET_OF_AttributeType,
3428     &ett_dop_SET_OF_AttributeTypeAndValue,
3429     &ett_dop_SET_OF_MaxValueCount,
3430     &ett_dop_SET_OF_RestrictedValue,
3431     &ett_dop_SET_OF_ContextAssertion,
3432     &ett_dop_MaxValueCount,
3433     &ett_dop_RestrictedValue,
3434     &ett_dop_UserClasses,
3435     &ett_dop_SET_OF_NameAndOptionalUID,
3436     &ett_dop_SET_OF_SubtreeSpecification,
3437     &ett_dop_ItemPermission,
3438     &ett_dop_UserPermission,
3439     &ett_dop_AuthenticationLevel,
3440     &ett_dop_T_basicLevels,
3441     &ett_dop_GrantsAndDenials,
3442
3443 /*--- End of included file: packet-dop-ettarr.c ---*/
3444 #line 259 "packet-dop-template.c"
3445   };
3446
3447   module_t *dop_module;
3448
3449   /* Register protocol */
3450   proto_dop = proto_register_protocol(PNAME, PSNAME, PFNAME);
3451
3452   register_dissector("dop", dissect_dop, proto_dop);
3453
3454   dop_dissector_table = register_dissector_table("dop.oid", "DOP OID Dissectors", FT_STRING, BASE_NONE);
3455
3456   /* Register fields and subtrees */
3457   proto_register_field_array(proto_dop, hf, array_length(hf));
3458   proto_register_subtree_array(ett, array_length(ett));
3459
3460   /* Register our configuration options for DOP, particularly our port */
3461
3462 #ifdef PREFERENCE_GROUPING
3463   dop_module = prefs_register_protocol_subtree("OSI/X.500", proto_dop, prefs_register_dop);
3464 #else
3465   dop_module = prefs_register_protocol(proto_dop, prefs_register_dop);
3466 #endif 
3467
3468   prefs_register_uint_preference(dop_module, "tcp.port", "DOP TCP Port",
3469                                  "Set the port for DOP operations (if other"
3470                                  " than the default of 102)",
3471                                  10, &global_dop_tcp_port);
3472
3473
3474 }
3475
3476
3477 /*--- proto_reg_handoff_dop --- */
3478 void proto_reg_handoff_dop(void) {
3479   dissector_handle_t handle = NULL;
3480
3481
3482 /*--- Included file: packet-dop-dis-tab.c ---*/
3483 #line 1 "packet-dop-dis-tab.c"
3484   register_ber_oid_dissector("2.5.12.0", dissect_DSEType_PDU, proto_dop, "id-doa-dseType");
3485   register_ber_oid_dissector("2.5.12.5", dissect_SupplierInformation_PDU, proto_dop, "id-doa-supplierKnowledge");
3486   register_ber_oid_dissector("2.5.12.6", dissect_ConsumerInformation_PDU, proto_dop, "id-doa-consumerKnowledge");
3487   register_ber_oid_dissector("2.5.12.7", dissect_SupplierAndConsumers_PDU, proto_dop, "id-doa-secondaryShadows");
3488   dissector_add_string("dop.oid", "agreement.2.5.19.2", create_dissector_handle(dissect_HierarchicalAgreement_PDU, proto_dop));
3489   dissector_add_string("dop.oid", "establish.rolea.2.5.19.2", create_dissector_handle(dissect_SuperiorToSubordinate_PDU, proto_dop));
3490   dissector_add_string("dop.oid", "modify.rolea.2.5.19.2", create_dissector_handle(dissect_SuperiorToSubordinateModification_PDU, proto_dop));
3491   dissector_add_string("dop.oid", "establish.roleb.2.5.19.2", create_dissector_handle(dissect_SubordinateToSuperior_PDU, proto_dop));
3492   dissector_add_string("dop.oid", "modify.roleb.2.5.19.2", create_dissector_handle(dissect_SubordinateToSuperior_PDU, proto_dop));
3493   dissector_add_string("dop.oid", "agreement.2.5.19.3", create_dissector_handle(dissect_NonSpecificHierarchicalAgreement_PDU, proto_dop));
3494   dissector_add_string("dop.oid", "establish.rolea.2.5.19.3", create_dissector_handle(dissect_NHOBSuperiorToSubordinate_PDU, proto_dop));
3495   dissector_add_string("dop.oid", "modify.rolea.2.5.19.3", create_dissector_handle(dissect_NHOBSuperiorToSubordinate_PDU, proto_dop));
3496   dissector_add_string("dop.oid", "establish.roleb.2.5.19.3", create_dissector_handle(dissect_NHOBSubordinateToSuperior_PDU, proto_dop));
3497   dissector_add_string("dop.oid", "modify.roleb.2.5.19.3", create_dissector_handle(dissect_NHOBSubordinateToSuperior_PDU, proto_dop));
3498   register_ber_oid_dissector("2.5.24.4", dissect_ACIItem_PDU, proto_dop, "id-aca-prescriptiveACI");
3499   register_ber_oid_dissector("2.5.24.5", dissect_ACIItem_PDU, proto_dop, "id-aca-entryACI");
3500   register_ber_oid_dissector("2.5.24.6", dissect_ACIItem_PDU, proto_dop, "id-aca-subentryACI");
3501
3502
3503 /*--- End of included file: packet-dop-dis-tab.c ---*/
3504 #line 296 "packet-dop-template.c"
3505   /* APPLICATION CONTEXT */
3506
3507   add_oid_str_name("2.5.3.3", "id-ac-directory-operational-binding-management");
3508
3509   /* ABSTRACT SYNTAXES */
3510     
3511   /* Register DOP with ROS (with no use of RTSE) */
3512   if((handle = find_dissector("dop"))) {
3513     register_ros_oid_dissector_handle("2.5.9.4", handle, 0, "id-as-directory-operational-binding-management", FALSE); 
3514   }
3515
3516   /* BINDING TYPES */
3517
3518   add_oid_str_name("2.5.19.1", "shadow-agreement");
3519   add_oid_str_name("2.5.19.2", "hierarchical-agreement");
3520   add_oid_str_name("2.5.19.3", "non-specific-hierarchical-agreement");
3521
3522   /* ACCESS CONTROL SCHEMES */
3523   add_oid_str_name("2.5.28.1", "basic-ACS");
3524   add_oid_str_name("2.5.28.2", "simplified-ACS");
3525   add_oid_str_name("2.5.28.3", "ruleBased-ACS");
3526   add_oid_str_name("2.5.28.4", "ruleAndBasic-ACS");
3527   add_oid_str_name("2.5.28.5", "ruleAndSimple-ACS");
3528
3529   /* ADMINISTRATIVE ROLES */
3530   add_oid_str_name("2.5.23.1", "id-ar-autonomousArea");
3531   add_oid_str_name("2.5.23.2", "id-ar-accessControlSpecificArea");
3532   add_oid_str_name("2.5.23.3", "id-ar-accessControlInnerArea");
3533   add_oid_str_name("2.5.23.4", "id-ar-subschemaAdminSpecificArea");
3534   add_oid_str_name("2.5.23.5", "id-ar-collectiveAttributeSpecificArea");
3535   add_oid_str_name("2.5.23.6", "id-ar-collectiveAttributeInnerArea");
3536   add_oid_str_name("2.5.23.7", "id-ar-contextDefaultSpecificArea");
3537   add_oid_str_name("2.5.23.8", "id-ar-serviceSpecificArea");
3538
3539   /* remember the tpkt handler for change in preferences */
3540   tpkt_handle = find_dissector("tpkt");
3541
3542 }
3543
3544 void prefs_register_dop(void) {
3545
3546   /* de-register the old port */
3547   /* port 102 is registered by TPKT - don't undo this! */
3548   if((tcp_port != 102) && tpkt_handle)
3549     dissector_delete("tcp.port", tcp_port, tpkt_handle);
3550
3551   /* Set our port number for future use */
3552   tcp_port = global_dop_tcp_port;
3553
3554   if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
3555     dissector_add("tcp.port", global_dop_tcp_port, tpkt_handle);
3556
3557 }