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