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