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