1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Ethereal dissector compiler */
4 /* ../../tools/asn2eth.py -X -b -e -p dop -c dop.cnf -s packet-dop-template dop.asn */
6 /* Input file: packet-dop-template.c */
8 #line 1 "packet-dop-template.c"
10 * Routines for X.501 (DSA Operational Attributes) packet dissection
15 * Ethereal - Network traffic analyzer
16 * By Gerald Combs <gerald@ethereal.com>
17 * Copyright 1998 Gerald Combs
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.
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.
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.
39 #include <epan/packet.h>
40 #include <epan/prefs.h>
41 #include <epan/conversation.h>
46 #include "packet-ber.h"
47 #include "packet-acse.h"
48 #include "packet-ros.h"
50 #include "packet-x509sat.h"
51 #include "packet-x509af.h"
52 #include "packet-x509if.h"
53 #include "packet-dap.h"
54 #include "packet-dsp.h"
57 #include "packet-dop.h"
59 #define PNAME "X.501 Directory Operational Binding Management Protocol"
63 static guint global_dop_tcp_port = 102;
64 static guint tcp_port = 0;
65 static dissector_handle_t tpkt_handle = NULL;
66 void prefs_register_dop(void); /* forwad declaration for use in preferences registration */
68 /* Initialize the protocol and registered fields */
71 static struct SESSION_DATA_STRUCTURE* session = NULL;
72 static const char *binding_type = NULL; /* binding_type */
74 static int call_dop_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
77 /*--- Included file: packet-dop-hf.c ---*/
78 #line 1 "packet-dop-hf.c"
79 static int hf_dop_DSEType_PDU = -1; /* DSEType */
80 static int hf_dop_SupplierInformation_PDU = -1; /* SupplierInformation */
81 static int hf_dop_ConsumerInformation_PDU = -1; /* ConsumerInformation */
82 static int hf_dop_SupplierAndConsumers_PDU = -1; /* SupplierAndConsumers */
83 static int hf_dop_HierarchicalAgreement_PDU = -1; /* HierarchicalAgreement */
84 static int hf_dop_SuperiorToSubordinate_PDU = -1; /* SuperiorToSubordinate */
85 static int hf_dop_SubordinateToSuperior_PDU = -1; /* SubordinateToSuperior */
86 static int hf_dop_SuperiorToSubordinateModification_PDU = -1; /* SuperiorToSubordinateModification */
87 static int hf_dop_NonSpecificHierarchicalAgreement_PDU = -1; /* NonSpecificHierarchicalAgreement */
88 static int hf_dop_NHOBSuperiorToSubordinate_PDU = -1; /* NHOBSuperiorToSubordinate */
89 static int hf_dop_NHOBSubordinateToSuperior_PDU = -1; /* NHOBSubordinateToSuperior */
90 static int hf_dop_ae_title = -1; /* Name */
91 static int hf_dop_address = -1; /* PresentationAddress */
92 static int hf_dop_protocolInformation = -1; /* SET_OF_ProtocolInformation */
93 static int hf_dop_protocolInformation_item = -1; /* ProtocolInformation */
94 static int hf_dop_agreementID = -1; /* OperationalBindingID */
95 static int hf_dop_supplier_is_master = -1; /* BOOLEAN */
96 static int hf_dop_non_supplying_master = -1; /* AccessPoint */
97 static int hf_dop_consumers = -1; /* SET_OF_AccessPoint */
98 static int hf_dop_consumers_item = -1; /* AccessPoint */
99 static int hf_dop_bindingType = -1; /* OBJECT_IDENTIFIER */
100 static int hf_dop_bindingID = -1; /* OperationalBindingID */
101 static int hf_dop_accessPoint = -1; /* AccessPoint */
102 static int hf_dop_establishInitiator = -1; /* EstablishArgumentInitiator */
103 static int hf_dop_establishSymmetric = -1; /* EstablishSymmetric */
104 static int hf_dop_establishRoleAInitiates = -1; /* EstablishRoleAInitiates */
105 static int hf_dop_establishRoleBInitiates = -1; /* EstablishRoleBInitiates */
106 static int hf_dop_agreement = -1; /* T_agreement */
107 static int hf_dop_valid = -1; /* Validity */
108 static int hf_dop_securityParameters = -1; /* SecurityParameters */
109 static int hf_dop_unsignedEstablishOperationalBindingArgument = -1; /* EstablishOperationalBindingArgumentData */
110 static int hf_dop_signedEstablishOperationalBindingArgument = -1; /* T_signedEstablishOperationalBindingArgument */
111 static int hf_dop_establishOperationalBindingArgument = -1; /* EstablishOperationalBindingArgumentData */
112 static int hf_dop_algorithmIdentifier = -1; /* AlgorithmIdentifier */
113 static int hf_dop_encrypted = -1; /* BIT_STRING */
114 static int hf_dop_identifier = -1; /* INTEGER */
115 static int hf_dop_version = -1; /* INTEGER */
116 static int hf_dop_validFrom = -1; /* T_validFrom */
117 static int hf_dop_now = -1; /* NULL */
118 static int hf_dop_time = -1; /* Time */
119 static int hf_dop_validUntil = -1; /* T_validUntil */
120 static int hf_dop_explicitTermination = -1; /* NULL */
121 static int hf_dop_utcTime = -1; /* UTCTime */
122 static int hf_dop_generalizedTime = -1; /* GeneralizedTime */
123 static int hf_dop_initiator = -1; /* T_initiator */
124 static int hf_dop_symmetric = -1; /* T_symmetric */
125 static int hf_dop_roleA_replies = -1; /* T_roleA_replies */
126 static int hf_dop_roleB_replies = -1; /* T_roleB_replies */
127 static int hf_dop_performer = -1; /* DistinguishedName */
128 static int hf_dop_aliasDereferenced = -1; /* BOOLEAN */
129 static int hf_dop_notification = -1; /* SEQUENCE_SIZE_1_MAX_OF_Attribute */
130 static int hf_dop_notification_item = -1; /* Attribute */
131 static int hf_dop_modifyInitiator = -1; /* ModifyArgumentInitiator */
132 static int hf_dop_modifySymmetric = -1; /* ModifySymmetric */
133 static int hf_dop_modifyRoleAInitiates = -1; /* ModifyRoleAInitiates */
134 static int hf_dop_modifyRoleBInitiates = -1; /* ModifyRoleBInitiates */
135 static int hf_dop_newBindingID = -1; /* OperationalBindingID */
136 static int hf_dop_argumentNewAgreement = -1; /* ArgumentNewAgreement */
137 static int hf_dop_unsignedModifyOperationalBindingArgument = -1; /* ModifyOperationalBindingArgumentData */
138 static int hf_dop_signedModifyOperationalBindingArgument = -1; /* T_signedModifyOperationalBindingArgument */
139 static int hf_dop_modifyOperationalBindingArgument = -1; /* ModifyOperationalBindingArgumentData */
140 static int hf_dop_null = -1; /* NULL */
141 static int hf_dop_protectedModifyResult = -1; /* ProtectedModifyResult */
142 static int hf_dop_modifyOperationalBindingResultData = -1; /* ModifyOperationalBindingResultData */
143 static int hf_dop_resultNewAgreement = -1; /* ResultNewAgreement */
144 static int hf_dop_terminateInitiator = -1; /* TerminateArgumentInitiator */
145 static int hf_dop_terminateSymmetric = -1; /* TerminateSymmetric */
146 static int hf_dop_terminateRoleAInitiates = -1; /* TerminateRoleAInitiates */
147 static int hf_dop_terminateRoleBInitiates = -1; /* TerminateRoleBInitiates */
148 static int hf_dop_terminateAtTime = -1; /* Time */
149 static int hf_dop_unsignedTerminateOperationalBindingArgument = -1; /* TerminateOperationalBindingArgumentData */
150 static int hf_dop_signedTerminateOperationalBindingArgument = -1; /* T_signedTerminateOperationalBindingArgument */
151 static int hf_dop_terminateOperationalBindingArgument = -1; /* TerminateOperationalBindingArgumentData */
152 static int hf_dop_protectedTerminateResult = -1; /* ProtectedTerminateResult */
153 static int hf_dop_terminateOperationalBindingResultData = -1; /* TerminateOperationalBindingResultData */
154 static int hf_dop_terminateAtGeneralizedTime = -1; /* GeneralizedTime */
155 static int hf_dop_problem = -1; /* T_problem */
156 static int hf_dop_agreementProposal = -1; /* T_agreementProposal */
157 static int hf_dop_retryAt = -1; /* Time */
158 static int hf_dop_rdn = -1; /* RelativeDistinguishedName */
159 static int hf_dop_immediateSuperior = -1; /* DistinguishedName */
160 static int hf_dop_contextPrefixInfo = -1; /* DITcontext */
161 static int hf_dop_entryInfo = -1; /* SET_OF_Attribute */
162 static int hf_dop_entryInfo_item = -1; /* Attribute */
163 static int hf_dop_immediateSuperiorInfo = -1; /* SET_OF_Attribute */
164 static int hf_dop_immediateSuperiorInfo_item = -1; /* Attribute */
165 static int hf_dop_DITcontext_item = -1; /* Vertex */
166 static int hf_dop_admPointInfo = -1; /* SET_OF_Attribute */
167 static int hf_dop_admPointInfo_item = -1; /* Attribute */
168 static int hf_dop_subentries = -1; /* SET_OF_SubentryInfo */
169 static int hf_dop_subentries_item = -1; /* SubentryInfo */
170 static int hf_dop_accessPoints = -1; /* MasterAndShadowAccessPoints */
171 static int hf_dop_info = -1; /* SET_OF_Attribute */
172 static int hf_dop_info_item = -1; /* Attribute */
173 static int hf_dop_alias = -1; /* BOOLEAN */
175 static int hf_dop_DSEType_root = -1;
176 static int hf_dop_DSEType_glue = -1;
177 static int hf_dop_DSEType_cp = -1;
178 static int hf_dop_DSEType_entry = -1;
179 static int hf_dop_DSEType_alias = -1;
180 static int hf_dop_DSEType_subr = -1;
181 static int hf_dop_DSEType_nssr = -1;
182 static int hf_dop_DSEType_supr = -1;
183 static int hf_dop_DSEType_xr = -1;
184 static int hf_dop_DSEType_admPoint = -1;
185 static int hf_dop_DSEType_subentry = -1;
186 static int hf_dop_DSEType_shadow = -1;
187 static int hf_dop_DSEType_immSupr = -1;
188 static int hf_dop_DSEType_rhob = -1;
189 static int hf_dop_DSEType_sa = -1;
190 static int hf_dop_DSEType_dsSubentry = -1;
191 static int hf_dop_DSEType_familyMember = -1;
193 /*--- End of included file: packet-dop-hf.c ---*/
194 #line 69 "packet-dop-template.c"
196 /* Initialize the subtree pointers */
197 static gint ett_dop = -1;
199 /*--- Included file: packet-dop-ett.c ---*/
200 #line 1 "packet-dop-ett.c"
201 static gint ett_dop_DSEType = -1;
202 static gint ett_dop_SupplierOrConsumer = -1;
203 static gint ett_dop_SET_OF_ProtocolInformation = -1;
204 static gint ett_dop_SupplierInformation = -1;
205 static gint ett_dop_SupplierAndConsumers = -1;
206 static gint ett_dop_SET_OF_AccessPoint = -1;
207 static gint ett_dop_EstablishOperationalBindingArgumentData = -1;
208 static gint ett_dop_EstablishArgumentInitiator = -1;
209 static gint ett_dop_EstablishOperationalBindingArgument = -1;
210 static gint ett_dop_T_signedEstablishOperationalBindingArgument = -1;
211 static gint ett_dop_OperationalBindingID = -1;
212 static gint ett_dop_Validity = -1;
213 static gint ett_dop_T_validFrom = -1;
214 static gint ett_dop_T_validUntil = -1;
215 static gint ett_dop_Time = -1;
216 static gint ett_dop_EstablishOperationalBindingResult = -1;
217 static gint ett_dop_T_initiator = -1;
218 static gint ett_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute = -1;
219 static gint ett_dop_ModifyOperationalBindingArgumentData = -1;
220 static gint ett_dop_ModifyArgumentInitiator = -1;
221 static gint ett_dop_ModifyOperationalBindingArgument = -1;
222 static gint ett_dop_T_signedModifyOperationalBindingArgument = -1;
223 static gint ett_dop_ModifyOperationalBindingResult = -1;
224 static gint ett_dop_ProtectedModifyResult = -1;
225 static gint ett_dop_ModifyOperationalBindingResultData = -1;
226 static gint ett_dop_TerminateOperationalBindingArgumentData = -1;
227 static gint ett_dop_TerminateArgumentInitiator = -1;
228 static gint ett_dop_TerminateOperationalBindingArgument = -1;
229 static gint ett_dop_T_signedTerminateOperationalBindingArgument = -1;
230 static gint ett_dop_TerminateOperationalBindingResult = -1;
231 static gint ett_dop_ProtectedTerminateResult = -1;
232 static gint ett_dop_TerminateOperationalBindingResultData = -1;
233 static gint ett_dop_OpBindingErrorParam = -1;
234 static gint ett_dop_HierarchicalAgreement = -1;
235 static gint ett_dop_SuperiorToSubordinate = -1;
236 static gint ett_dop_SET_OF_Attribute = -1;
237 static gint ett_dop_DITcontext = -1;
238 static gint ett_dop_Vertex = -1;
239 static gint ett_dop_SET_OF_SubentryInfo = -1;
240 static gint ett_dop_SubentryInfo = -1;
241 static gint ett_dop_SubordinateToSuperior = -1;
242 static gint ett_dop_SuperiorToSubordinateModification = -1;
243 static gint ett_dop_NonSpecificHierarchicalAgreement = -1;
244 static gint ett_dop_NHOBSuperiorToSubordinate = -1;
245 static gint ett_dop_NHOBSubordinateToSuperior = -1;
247 /*--- End of included file: packet-dop-ett.c ---*/
248 #line 73 "packet-dop-template.c"
251 /*--- Included file: packet-dop-fn.c ---*/
252 #line 1 "packet-dop-fn.c"
253 /*--- Fields for imported types ---*/
255 static int dissect_ae_title(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
256 return dissect_x509if_Name(FALSE, tvb, offset, pinfo, tree, hf_dop_ae_title);
258 static int dissect_address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
259 return dissect_x509sat_PresentationAddress(FALSE, tvb, offset, pinfo, tree, hf_dop_address);
261 static int dissect_protocolInformation_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
262 return dissect_x509sat_ProtocolInformation(FALSE, tvb, offset, pinfo, tree, hf_dop_protocolInformation_item);
264 static int dissect_non_supplying_master(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
265 return dissect_dsp_AccessPoint(FALSE, tvb, offset, pinfo, tree, hf_dop_non_supplying_master);
267 static int dissect_consumers_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
268 return dissect_dsp_AccessPoint(FALSE, tvb, offset, pinfo, tree, hf_dop_consumers_item);
270 static int dissect_accessPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
271 return dissect_dsp_AccessPoint(FALSE, tvb, offset, pinfo, tree, hf_dop_accessPoint);
273 static int dissect_securityParameters(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
274 return dissect_dap_SecurityParameters(FALSE, tvb, offset, pinfo, tree, hf_dop_securityParameters);
276 static int dissect_algorithmIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
277 return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_dop_algorithmIdentifier);
279 static int dissect_performer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
280 return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dop_performer);
282 static int dissect_notification_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
283 return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_notification_item);
285 static int dissect_rdn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
286 return dissect_x509if_RelativeDistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dop_rdn);
288 static int dissect_immediateSuperior(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
289 return dissect_x509if_DistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_dop_immediateSuperior);
291 static int dissect_entryInfo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
292 return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_entryInfo_item);
294 static int dissect_immediateSuperiorInfo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
295 return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_immediateSuperiorInfo_item);
297 static int dissect_admPointInfo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
298 return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_admPointInfo_item);
300 static int dissect_accessPoints(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
301 return dissect_dsp_MasterAndShadowAccessPoints(FALSE, tvb, offset, pinfo, tree, hf_dop_accessPoints);
303 static int dissect_info_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
304 return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_info_item);
308 static const asn_namedbit DSEType_bits[] = {
309 { 0, &hf_dop_DSEType_root, -1, -1, "root", NULL },
310 { 1, &hf_dop_DSEType_glue, -1, -1, "glue", NULL },
311 { 2, &hf_dop_DSEType_cp, -1, -1, "cp", NULL },
312 { 3, &hf_dop_DSEType_entry, -1, -1, "entry", NULL },
313 { 4, &hf_dop_DSEType_alias, -1, -1, "alias", NULL },
314 { 5, &hf_dop_DSEType_subr, -1, -1, "subr", NULL },
315 { 6, &hf_dop_DSEType_nssr, -1, -1, "nssr", NULL },
316 { 7, &hf_dop_DSEType_supr, -1, -1, "supr", NULL },
317 { 8, &hf_dop_DSEType_xr, -1, -1, "xr", NULL },
318 { 9, &hf_dop_DSEType_admPoint, -1, -1, "admPoint", NULL },
319 { 10, &hf_dop_DSEType_subentry, -1, -1, "subentry", NULL },
320 { 11, &hf_dop_DSEType_shadow, -1, -1, "shadow", NULL },
321 { 13, &hf_dop_DSEType_immSupr, -1, -1, "immSupr", NULL },
322 { 14, &hf_dop_DSEType_rhob, -1, -1, "rhob", NULL },
323 { 15, &hf_dop_DSEType_sa, -1, -1, "sa", NULL },
324 { 16, &hf_dop_DSEType_dsSubentry, -1, -1, "dsSubentry", NULL },
325 { 17, &hf_dop_DSEType_familyMember, -1, -1, "familyMember", NULL },
326 { 0, NULL, 0, 0, NULL, NULL }
330 dissect_dop_DSEType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
331 offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
332 DSEType_bits, hf_index, ett_dop_DSEType,
339 static const ber_sequence_t SET_OF_ProtocolInformation_set_of[1] = {
340 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protocolInformation_item },
344 dissect_dop_SET_OF_ProtocolInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
345 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
346 SET_OF_ProtocolInformation_set_of, hf_index, ett_dop_SET_OF_ProtocolInformation);
350 static int dissect_protocolInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
351 return dissect_dop_SET_OF_ProtocolInformation(FALSE, tvb, offset, pinfo, tree, hf_dop_protocolInformation);
357 dissect_dop_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
358 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
363 static int dissect_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
364 return dissect_dop_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dop_identifier);
366 static int dissect_version(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
367 return dissect_dop_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dop_version);
371 static const ber_sequence_t OperationalBindingID_sequence[] = {
372 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_identifier },
373 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_version },
378 dissect_dop_OperationalBindingID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
379 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
380 OperationalBindingID_sequence, hf_index, ett_dop_OperationalBindingID);
384 static int dissect_agreementID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
385 return dissect_dop_OperationalBindingID(FALSE, tvb, offset, pinfo, tree, hf_dop_agreementID);
387 static int dissect_bindingID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
388 return dissect_dop_OperationalBindingID(FALSE, tvb, offset, pinfo, tree, hf_dop_bindingID);
390 static int dissect_newBindingID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
391 return dissect_dop_OperationalBindingID(FALSE, tvb, offset, pinfo, tree, hf_dop_newBindingID);
395 static const ber_sequence_t SupplierOrConsumer_set[] = {
396 { BER_CLASS_CON, 0, 0, dissect_ae_title },
397 { BER_CLASS_CON, 1, 0, dissect_address },
398 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_protocolInformation },
399 { BER_CLASS_CON, 3, 0, dissect_agreementID },
404 dissect_dop_SupplierOrConsumer(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
405 offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
406 SupplierOrConsumer_set, hf_index, ett_dop_SupplierOrConsumer);
414 dissect_dop_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
415 offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
419 static int dissect_supplier_is_master(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
420 return dissect_dop_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dop_supplier_is_master);
422 static int dissect_aliasDereferenced(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
423 return dissect_dop_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dop_aliasDereferenced);
425 static int dissect_alias(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
426 return dissect_dop_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dop_alias);
430 static const ber_sequence_t SupplierInformation_set[] = {
431 { BER_CLASS_CON, 0, 0, dissect_ae_title },
432 { BER_CLASS_CON, 1, 0, dissect_address },
433 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_protocolInformation },
434 { BER_CLASS_CON, 3, 0, dissect_agreementID },
435 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_supplier_is_master },
436 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_non_supplying_master },
441 dissect_dop_SupplierInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
442 offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
443 SupplierInformation_set, hf_index, ett_dop_SupplierInformation);
451 dissect_dop_ConsumerInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
452 offset = dissect_dop_SupplierOrConsumer(implicit_tag, tvb, offset, pinfo, tree, hf_index);
458 static const ber_sequence_t SET_OF_AccessPoint_set_of[1] = {
459 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_consumers_item },
463 dissect_dop_SET_OF_AccessPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
464 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
465 SET_OF_AccessPoint_set_of, hf_index, ett_dop_SET_OF_AccessPoint);
469 static int dissect_consumers(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
470 return dissect_dop_SET_OF_AccessPoint(FALSE, tvb, offset, pinfo, tree, hf_dop_consumers);
474 static const ber_sequence_t SupplierAndConsumers_set[] = {
475 { BER_CLASS_CON, 0, 0, dissect_ae_title },
476 { BER_CLASS_CON, 1, 0, dissect_address },
477 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_protocolInformation },
478 { BER_CLASS_CON, 3, 0, dissect_consumers },
483 dissect_dop_SupplierAndConsumers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
484 offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
485 SupplierAndConsumers_set, hf_index, ett_dop_SupplierAndConsumers);
493 dissect_dop_DSAOperationalManagementBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
494 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, pinfo, tree, hf_index);
502 dissect_dop_DSAOperationalManagementBindResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
503 offset = dissect_dap_DirectoryBindArgument(implicit_tag, tvb, offset, pinfo, tree, hf_index);
511 dissect_dop_DSAOperationalManagementBindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
512 offset = dissect_dap_DirectoryBindError(implicit_tag, tvb, offset, pinfo, tree, hf_index);
520 dissect_dop_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
521 offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &binding_type);
525 static int dissect_bindingType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
526 return dissect_dop_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_dop_bindingType);
532 dissect_dop_EstablishSymmetric(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
535 offset = call_dop_oid_callback("dop.establish.symmetric", tvb, offset, pinfo, tree);
541 static int dissect_establishSymmetric(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
542 return dissect_dop_EstablishSymmetric(FALSE, tvb, offset, pinfo, tree, hf_dop_establishSymmetric);
548 dissect_dop_EstablishRoleAInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
551 offset = call_dop_oid_callback("dop.establish.rolea", tvb, offset, pinfo, tree);
557 static int dissect_establishRoleAInitiates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
558 return dissect_dop_EstablishRoleAInitiates(FALSE, tvb, offset, pinfo, tree, hf_dop_establishRoleAInitiates);
564 dissect_dop_EstablishRoleBInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
567 offset = call_dop_oid_callback("dop.establish.roleb", tvb, offset, pinfo, tree);
573 static int dissect_establishRoleBInitiates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
574 return dissect_dop_EstablishRoleBInitiates(FALSE, tvb, offset, pinfo, tree, hf_dop_establishRoleBInitiates);
578 static const value_string dop_EstablishArgumentInitiator_vals[] = {
580 { 4, "roleA-initiates" },
581 { 5, "roleB-initiates" },
585 static const ber_choice_t EstablishArgumentInitiator_choice[] = {
586 { 3, BER_CLASS_CON, 3, 0, dissect_establishSymmetric },
587 { 4, BER_CLASS_CON, 4, 0, dissect_establishRoleAInitiates },
588 { 5, BER_CLASS_CON, 5, 0, dissect_establishRoleBInitiates },
593 dissect_dop_EstablishArgumentInitiator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
594 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
595 EstablishArgumentInitiator_choice, hf_index, ett_dop_EstablishArgumentInitiator,
600 static int dissect_establishInitiator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
601 return dissect_dop_EstablishArgumentInitiator(FALSE, tvb, offset, pinfo, tree, hf_dop_establishInitiator);
607 dissect_dop_T_agreement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
610 offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree);
616 static int dissect_agreement(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
617 return dissect_dop_T_agreement(FALSE, tvb, offset, pinfo, tree, hf_dop_agreement);
623 dissect_dop_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
624 offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
628 static int dissect_now(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
629 return dissect_dop_NULL(FALSE, tvb, offset, pinfo, tree, hf_dop_now);
631 static int dissect_explicitTermination(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
632 return dissect_dop_NULL(FALSE, tvb, offset, pinfo, tree, hf_dop_explicitTermination);
634 static int dissect_null(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
635 return dissect_dop_NULL(FALSE, tvb, offset, pinfo, tree, hf_dop_null);
641 dissect_dop_UTCTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
642 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime,
643 pinfo, tree, tvb, offset, hf_index,
648 static int dissect_utcTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
649 return dissect_dop_UTCTime(FALSE, tvb, offset, pinfo, tree, hf_dop_utcTime);
655 dissect_dop_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
656 offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index);
660 static int dissect_generalizedTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
661 return dissect_dop_GeneralizedTime(FALSE, tvb, offset, pinfo, tree, hf_dop_generalizedTime);
663 static int dissect_terminateAtGeneralizedTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
664 return dissect_dop_GeneralizedTime(FALSE, tvb, offset, pinfo, tree, hf_dop_terminateAtGeneralizedTime);
668 static const value_string dop_Time_vals[] = {
670 { 1, "generalizedTime" },
674 static const ber_choice_t Time_choice[] = {
675 { 0, BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_utcTime },
676 { 1, BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_generalizedTime },
681 dissect_dop_Time(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
682 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
683 Time_choice, hf_index, ett_dop_Time,
688 static int dissect_time(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
689 return dissect_dop_Time(FALSE, tvb, offset, pinfo, tree, hf_dop_time);
691 static int dissect_terminateAtTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
692 return dissect_dop_Time(FALSE, tvb, offset, pinfo, tree, hf_dop_terminateAtTime);
694 static int dissect_retryAt(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
695 return dissect_dop_Time(FALSE, tvb, offset, pinfo, tree, hf_dop_retryAt);
699 static const value_string dop_T_validFrom_vals[] = {
705 static const ber_choice_t T_validFrom_choice[] = {
706 { 0, BER_CLASS_CON, 0, 0, dissect_now },
707 { 1, BER_CLASS_CON, 1, 0, dissect_time },
712 dissect_dop_T_validFrom(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
713 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
714 T_validFrom_choice, hf_index, ett_dop_T_validFrom,
719 static int dissect_validFrom(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
720 return dissect_dop_T_validFrom(FALSE, tvb, offset, pinfo, tree, hf_dop_validFrom);
724 static const value_string dop_T_validUntil_vals[] = {
725 { 0, "explicitTermination" },
730 static const ber_choice_t T_validUntil_choice[] = {
731 { 0, BER_CLASS_CON, 0, 0, dissect_explicitTermination },
732 { 1, BER_CLASS_CON, 1, 0, dissect_time },
737 dissect_dop_T_validUntil(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
738 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
739 T_validUntil_choice, hf_index, ett_dop_T_validUntil,
744 static int dissect_validUntil(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
745 return dissect_dop_T_validUntil(FALSE, tvb, offset, pinfo, tree, hf_dop_validUntil);
749 static const ber_sequence_t Validity_sequence[] = {
750 { BER_CLASS_CON, 0, 0, dissect_validFrom },
751 { BER_CLASS_CON, 1, 0, dissect_validUntil },
756 dissect_dop_Validity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
757 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
758 Validity_sequence, hf_index, ett_dop_Validity);
762 static int dissect_valid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
763 return dissect_dop_Validity(FALSE, tvb, offset, pinfo, tree, hf_dop_valid);
767 static const ber_sequence_t EstablishOperationalBindingArgumentData_sequence[] = {
768 { BER_CLASS_CON, 0, 0, dissect_bindingType },
769 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_bindingID },
770 { BER_CLASS_CON, 2, 0, dissect_accessPoint },
771 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_establishInitiator },
772 { BER_CLASS_CON, 6, 0, dissect_agreement },
773 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_valid },
774 { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_securityParameters },
779 dissect_dop_EstablishOperationalBindingArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
780 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
781 EstablishOperationalBindingArgumentData_sequence, hf_index, ett_dop_EstablishOperationalBindingArgumentData);
785 static int dissect_unsignedEstablishOperationalBindingArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
786 return dissect_dop_EstablishOperationalBindingArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dop_unsignedEstablishOperationalBindingArgument);
788 static int dissect_establishOperationalBindingArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
789 return dissect_dop_EstablishOperationalBindingArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dop_establishOperationalBindingArgument);
795 dissect_dop_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
796 offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
802 static int dissect_encrypted(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
803 return dissect_dop_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_dop_encrypted);
807 static const ber_sequence_t T_signedEstablishOperationalBindingArgument_sequence[] = {
808 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_establishOperationalBindingArgument },
809 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
810 { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
815 dissect_dop_T_signedEstablishOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
816 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
817 T_signedEstablishOperationalBindingArgument_sequence, hf_index, ett_dop_T_signedEstablishOperationalBindingArgument);
821 static int dissect_signedEstablishOperationalBindingArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
822 return dissect_dop_T_signedEstablishOperationalBindingArgument(FALSE, tvb, offset, pinfo, tree, hf_dop_signedEstablishOperationalBindingArgument);
826 static const value_string dop_EstablishOperationalBindingArgument_vals[] = {
827 { 0, "unsignedEstablishOperationalBindingArgument" },
828 { 1, "signedEstablishOperationalBindingArgument" },
832 static const ber_choice_t EstablishOperationalBindingArgument_choice[] = {
833 { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedEstablishOperationalBindingArgument },
834 { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedEstablishOperationalBindingArgument },
839 dissect_dop_EstablishOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
840 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
841 EstablishOperationalBindingArgument_choice, hf_index, ett_dop_EstablishOperationalBindingArgument,
850 dissect_dop_T_symmetric(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
853 offset = call_dop_oid_callback("dop.establish.symmetric", tvb, offset, pinfo, tree);
859 static int dissect_symmetric(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
860 return dissect_dop_T_symmetric(FALSE, tvb, offset, pinfo, tree, hf_dop_symmetric);
866 dissect_dop_T_roleA_replies(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
869 offset = call_dop_oid_callback("dop.establish.rolea", tvb, offset, pinfo, tree);
875 static int dissect_roleA_replies(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
876 return dissect_dop_T_roleA_replies(FALSE, tvb, offset, pinfo, tree, hf_dop_roleA_replies);
882 dissect_dop_T_roleB_replies(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
885 offset = call_dop_oid_callback("dop.establish.roleb", tvb, offset, pinfo, tree);
891 static int dissect_roleB_replies(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
892 return dissect_dop_T_roleB_replies(FALSE, tvb, offset, pinfo, tree, hf_dop_roleB_replies);
896 static const value_string dop_T_initiator_vals[] = {
898 { 4, "roleA-replies" },
899 { 5, "roleB-replies" },
903 static const ber_choice_t T_initiator_choice[] = {
904 { 3, BER_CLASS_CON, 3, 0, dissect_symmetric },
905 { 4, BER_CLASS_CON, 4, 0, dissect_roleA_replies },
906 { 5, BER_CLASS_CON, 5, 0, dissect_roleB_replies },
911 dissect_dop_T_initiator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
912 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
913 T_initiator_choice, hf_index, ett_dop_T_initiator,
918 static int dissect_initiator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
919 return dissect_dop_T_initiator(FALSE, tvb, offset, pinfo, tree, hf_dop_initiator);
923 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_Attribute_sequence_of[1] = {
924 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_notification_item },
928 dissect_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
929 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
930 SEQUENCE_SIZE_1_MAX_OF_Attribute_sequence_of, hf_index, ett_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute);
934 static int dissect_notification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
935 return dissect_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_notification);
939 static const ber_sequence_t EstablishOperationalBindingResult_sequence[] = {
940 { BER_CLASS_CON, 0, 0, dissect_bindingType },
941 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_bindingID },
942 { BER_CLASS_CON, 2, 0, dissect_accessPoint },
943 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_initiator },
944 { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_securityParameters },
945 { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_performer },
946 { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
947 { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_notification },
952 dissect_dop_EstablishOperationalBindingResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
953 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
954 EstablishOperationalBindingResult_sequence, hf_index, ett_dop_EstablishOperationalBindingResult);
962 dissect_dop_ModifySymmetric(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
965 offset = call_dop_oid_callback("dop.modify.symmetric", tvb, offset, pinfo, tree);
971 static int dissect_modifySymmetric(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
972 return dissect_dop_ModifySymmetric(FALSE, tvb, offset, pinfo, tree, hf_dop_modifySymmetric);
978 dissect_dop_ModifyRoleAInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
981 offset = call_dop_oid_callback("dop.modify.rolea", tvb, offset, pinfo, tree);
987 static int dissect_modifyRoleAInitiates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
988 return dissect_dop_ModifyRoleAInitiates(FALSE, tvb, offset, pinfo, tree, hf_dop_modifyRoleAInitiates);
994 dissect_dop_ModifyRoleBInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
997 offset = call_dop_oid_callback("dop.modify.roleb", tvb, offset, pinfo, tree);
1003 static int dissect_modifyRoleBInitiates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1004 return dissect_dop_ModifyRoleBInitiates(FALSE, tvb, offset, pinfo, tree, hf_dop_modifyRoleBInitiates);
1008 static const value_string dop_ModifyArgumentInitiator_vals[] = {
1010 { 4, "roleA-initiates" },
1011 { 5, "roleB-initiates" },
1015 static const ber_choice_t ModifyArgumentInitiator_choice[] = {
1016 { 3, BER_CLASS_CON, 3, 0, dissect_modifySymmetric },
1017 { 4, BER_CLASS_CON, 4, 0, dissect_modifyRoleAInitiates },
1018 { 5, BER_CLASS_CON, 5, 0, dissect_modifyRoleBInitiates },
1019 { 0, 0, 0, 0, NULL }
1023 dissect_dop_ModifyArgumentInitiator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1024 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1025 ModifyArgumentInitiator_choice, hf_index, ett_dop_ModifyArgumentInitiator,
1030 static int dissect_modifyInitiator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1031 return dissect_dop_ModifyArgumentInitiator(FALSE, tvb, offset, pinfo, tree, hf_dop_modifyInitiator);
1037 dissect_dop_ArgumentNewAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1040 offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree);
1045 static int dissect_argumentNewAgreement(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1046 return dissect_dop_ArgumentNewAgreement(FALSE, tvb, offset, pinfo, tree, hf_dop_argumentNewAgreement);
1050 static const ber_sequence_t ModifyOperationalBindingArgumentData_sequence[] = {
1051 { BER_CLASS_CON, 0, 0, dissect_bindingType },
1052 { BER_CLASS_CON, 1, 0, dissect_bindingID },
1053 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_accessPoint },
1054 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_modifyInitiator },
1055 { BER_CLASS_CON, 6, 0, dissect_newBindingID },
1056 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_argumentNewAgreement },
1057 { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_valid },
1058 { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1063 dissect_dop_ModifyOperationalBindingArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1064 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1065 ModifyOperationalBindingArgumentData_sequence, hf_index, ett_dop_ModifyOperationalBindingArgumentData);
1069 static int dissect_unsignedModifyOperationalBindingArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1070 return dissect_dop_ModifyOperationalBindingArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dop_unsignedModifyOperationalBindingArgument);
1072 static int dissect_modifyOperationalBindingArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1073 return dissect_dop_ModifyOperationalBindingArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dop_modifyOperationalBindingArgument);
1077 static const ber_sequence_t T_signedModifyOperationalBindingArgument_sequence[] = {
1078 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_modifyOperationalBindingArgument },
1079 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1080 { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1085 dissect_dop_T_signedModifyOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1086 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1087 T_signedModifyOperationalBindingArgument_sequence, hf_index, ett_dop_T_signedModifyOperationalBindingArgument);
1091 static int dissect_signedModifyOperationalBindingArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1092 return dissect_dop_T_signedModifyOperationalBindingArgument(FALSE, tvb, offset, pinfo, tree, hf_dop_signedModifyOperationalBindingArgument);
1096 static const value_string dop_ModifyOperationalBindingArgument_vals[] = {
1097 { 0, "unsignedModifyOperationalBindingArgument" },
1098 { 1, "signedModifyOperationalBindingArgument" },
1102 static const ber_choice_t ModifyOperationalBindingArgument_choice[] = {
1103 { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedModifyOperationalBindingArgument },
1104 { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedModifyOperationalBindingArgument },
1105 { 0, 0, 0, 0, NULL }
1109 dissect_dop_ModifyOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1110 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1111 ModifyOperationalBindingArgument_choice, hf_index, ett_dop_ModifyOperationalBindingArgument,
1120 dissect_dop_ResultNewAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1123 offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree);
1129 static int dissect_resultNewAgreement(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1130 return dissect_dop_ResultNewAgreement(FALSE, tvb, offset, pinfo, tree, hf_dop_resultNewAgreement);
1134 static const ber_sequence_t ModifyOperationalBindingResultData_sequence[] = {
1135 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_newBindingID },
1136 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_bindingType },
1137 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_resultNewAgreement },
1138 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_valid },
1139 { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1140 { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_performer },
1141 { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
1142 { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_notification },
1147 dissect_dop_ModifyOperationalBindingResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1148 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1149 ModifyOperationalBindingResultData_sequence, hf_index, ett_dop_ModifyOperationalBindingResultData);
1153 static int dissect_modifyOperationalBindingResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1154 return dissect_dop_ModifyOperationalBindingResultData(FALSE, tvb, offset, pinfo, tree, hf_dop_modifyOperationalBindingResultData);
1158 static const ber_sequence_t ProtectedModifyResult_sequence[] = {
1159 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_modifyOperationalBindingResultData },
1160 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1161 { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1166 dissect_dop_ProtectedModifyResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1167 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1168 ProtectedModifyResult_sequence, hf_index, ett_dop_ProtectedModifyResult);
1172 static int dissect_protectedModifyResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1173 return dissect_dop_ProtectedModifyResult(FALSE, tvb, offset, pinfo, tree, hf_dop_protectedModifyResult);
1177 static const value_string dop_ModifyOperationalBindingResult_vals[] = {
1183 static const ber_choice_t ModifyOperationalBindingResult_choice[] = {
1184 { 0, BER_CLASS_CON, 0, 0, dissect_null },
1185 { 1, BER_CLASS_CON, 1, 0, dissect_protectedModifyResult },
1186 { 0, 0, 0, 0, NULL }
1190 dissect_dop_ModifyOperationalBindingResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1191 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1192 ModifyOperationalBindingResult_choice, hf_index, ett_dop_ModifyOperationalBindingResult,
1201 dissect_dop_TerminateSymmetric(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1204 offset = call_dop_oid_callback("dop.terminate.symmetric", tvb, offset, pinfo, tree);
1210 static int dissect_terminateSymmetric(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1211 return dissect_dop_TerminateSymmetric(FALSE, tvb, offset, pinfo, tree, hf_dop_terminateSymmetric);
1217 dissect_dop_TerminateRoleAInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1220 offset = call_dop_oid_callback("dop.terminate.rolea", tvb, offset, pinfo, tree);
1226 static int dissect_terminateRoleAInitiates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1227 return dissect_dop_TerminateRoleAInitiates(FALSE, tvb, offset, pinfo, tree, hf_dop_terminateRoleAInitiates);
1233 dissect_dop_TerminateRoleBInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1236 offset = call_dop_oid_callback("dop.terminate.roleb", tvb, offset, pinfo, tree);
1242 static int dissect_terminateRoleBInitiates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1243 return dissect_dop_TerminateRoleBInitiates(FALSE, tvb, offset, pinfo, tree, hf_dop_terminateRoleBInitiates);
1247 static const value_string dop_TerminateArgumentInitiator_vals[] = {
1249 { 3, "roleA-initiates" },
1250 { 4, "roleB-initiates" },
1254 static const ber_choice_t TerminateArgumentInitiator_choice[] = {
1255 { 2, BER_CLASS_CON, 2, 0, dissect_terminateSymmetric },
1256 { 3, BER_CLASS_CON, 3, 0, dissect_terminateRoleAInitiates },
1257 { 4, BER_CLASS_CON, 4, 0, dissect_terminateRoleBInitiates },
1258 { 0, 0, 0, 0, NULL }
1262 dissect_dop_TerminateArgumentInitiator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1263 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1264 TerminateArgumentInitiator_choice, hf_index, ett_dop_TerminateArgumentInitiator,
1269 static int dissect_terminateInitiator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1270 return dissect_dop_TerminateArgumentInitiator(FALSE, tvb, offset, pinfo, tree, hf_dop_terminateInitiator);
1274 static const ber_sequence_t TerminateOperationalBindingArgumentData_sequence[] = {
1275 { BER_CLASS_CON, 0, 0, dissect_bindingType },
1276 { BER_CLASS_CON, 1, 0, dissect_bindingID },
1277 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_terminateInitiator },
1278 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_terminateAtTime },
1279 { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1284 dissect_dop_TerminateOperationalBindingArgumentData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1285 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1286 TerminateOperationalBindingArgumentData_sequence, hf_index, ett_dop_TerminateOperationalBindingArgumentData);
1290 static int dissect_unsignedTerminateOperationalBindingArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1291 return dissect_dop_TerminateOperationalBindingArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dop_unsignedTerminateOperationalBindingArgument);
1293 static int dissect_terminateOperationalBindingArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1294 return dissect_dop_TerminateOperationalBindingArgumentData(FALSE, tvb, offset, pinfo, tree, hf_dop_terminateOperationalBindingArgument);
1298 static const ber_sequence_t T_signedTerminateOperationalBindingArgument_sequence[] = {
1299 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_terminateOperationalBindingArgument },
1300 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1301 { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1306 dissect_dop_T_signedTerminateOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1307 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1308 T_signedTerminateOperationalBindingArgument_sequence, hf_index, ett_dop_T_signedTerminateOperationalBindingArgument);
1312 static int dissect_signedTerminateOperationalBindingArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1313 return dissect_dop_T_signedTerminateOperationalBindingArgument(FALSE, tvb, offset, pinfo, tree, hf_dop_signedTerminateOperationalBindingArgument);
1317 static const value_string dop_TerminateOperationalBindingArgument_vals[] = {
1318 { 0, "unsignedTerminateOperationalBindingArgument" },
1319 { 1, "signedTerminateOperationalBindingArgument" },
1323 static const ber_choice_t TerminateOperationalBindingArgument_choice[] = {
1324 { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_unsignedTerminateOperationalBindingArgument },
1325 { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signedTerminateOperationalBindingArgument },
1326 { 0, 0, 0, 0, NULL }
1330 dissect_dop_TerminateOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1331 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1332 TerminateOperationalBindingArgument_choice, hf_index, ett_dop_TerminateOperationalBindingArgument,
1339 static const ber_sequence_t TerminateOperationalBindingResultData_sequence[] = {
1340 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_bindingID },
1341 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_bindingType },
1342 { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_terminateAtGeneralizedTime },
1343 { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1344 { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_performer },
1345 { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
1346 { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_notification },
1351 dissect_dop_TerminateOperationalBindingResultData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1352 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1353 TerminateOperationalBindingResultData_sequence, hf_index, ett_dop_TerminateOperationalBindingResultData);
1357 static int dissect_terminateOperationalBindingResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1358 return dissect_dop_TerminateOperationalBindingResultData(FALSE, tvb, offset, pinfo, tree, hf_dop_terminateOperationalBindingResultData);
1362 static const ber_sequence_t ProtectedTerminateResult_sequence[] = {
1363 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_terminateOperationalBindingResultData },
1364 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1365 { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1370 dissect_dop_ProtectedTerminateResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1371 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1372 ProtectedTerminateResult_sequence, hf_index, ett_dop_ProtectedTerminateResult);
1376 static int dissect_protectedTerminateResult(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1377 return dissect_dop_ProtectedTerminateResult(FALSE, tvb, offset, pinfo, tree, hf_dop_protectedTerminateResult);
1381 static const value_string dop_TerminateOperationalBindingResult_vals[] = {
1387 static const ber_choice_t TerminateOperationalBindingResult_choice[] = {
1388 { 0, BER_CLASS_CON, 0, 0, dissect_null },
1389 { 1, BER_CLASS_CON, 1, 0, dissect_protectedTerminateResult },
1390 { 0, 0, 0, 0, NULL }
1394 dissect_dop_TerminateOperationalBindingResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1395 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1396 TerminateOperationalBindingResult_choice, hf_index, ett_dop_TerminateOperationalBindingResult,
1403 static const value_string dop_T_problem_vals[] = {
1405 { 1, "duplicateID" },
1406 { 2, "unsupportedBindingType" },
1407 { 3, "notAllowedForRole" },
1408 { 4, "parametersMissing" },
1409 { 5, "roleAssignment" },
1410 { 6, "invalidStartTime" },
1411 { 7, "invalidEndTime" },
1412 { 8, "invalidAgreement" },
1413 { 9, "currentlyNotDecidable" },
1414 { 10, "modificationNotAllowed" },
1420 dissect_dop_T_problem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1421 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1426 static int dissect_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1427 return dissect_dop_T_problem(FALSE, tvb, offset, pinfo, tree, hf_dop_problem);
1433 dissect_dop_T_agreementProposal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1436 offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree);
1442 static int dissect_agreementProposal(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1443 return dissect_dop_T_agreementProposal(FALSE, tvb, offset, pinfo, tree, hf_dop_agreementProposal);
1447 static const ber_sequence_t OpBindingErrorParam_sequence[] = {
1448 { BER_CLASS_CON, 0, 0, dissect_problem },
1449 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_bindingType },
1450 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_agreementProposal },
1451 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_retryAt },
1452 { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_securityParameters },
1453 { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_performer },
1454 { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_aliasDereferenced },
1455 { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL, dissect_notification },
1460 dissect_dop_OpBindingErrorParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1461 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1462 OpBindingErrorParam_sequence, hf_index, ett_dop_OpBindingErrorParam);
1468 static const ber_sequence_t HierarchicalAgreement_sequence[] = {
1469 { BER_CLASS_CON, 0, 0, dissect_rdn },
1470 { BER_CLASS_CON, 1, 0, dissect_immediateSuperior },
1475 dissect_dop_HierarchicalAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1476 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1477 HierarchicalAgreement_sequence, hf_index, ett_dop_HierarchicalAgreement);
1483 static const ber_sequence_t SET_OF_Attribute_set_of[1] = {
1484 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_entryInfo_item },
1488 dissect_dop_SET_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1489 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1490 SET_OF_Attribute_set_of, hf_index, ett_dop_SET_OF_Attribute);
1494 static int dissect_entryInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1495 return dissect_dop_SET_OF_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_entryInfo);
1497 static int dissect_immediateSuperiorInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1498 return dissect_dop_SET_OF_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_immediateSuperiorInfo);
1500 static int dissect_admPointInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1501 return dissect_dop_SET_OF_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_admPointInfo);
1503 static int dissect_info(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1504 return dissect_dop_SET_OF_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_info);
1508 static const ber_sequence_t SubentryInfo_sequence[] = {
1509 { BER_CLASS_CON, 0, 0, dissect_rdn },
1510 { BER_CLASS_CON, 1, 0, dissect_info },
1515 dissect_dop_SubentryInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1516 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1517 SubentryInfo_sequence, hf_index, ett_dop_SubentryInfo);
1521 static int dissect_subentries_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1522 return dissect_dop_SubentryInfo(FALSE, tvb, offset, pinfo, tree, hf_dop_subentries_item);
1526 static const ber_sequence_t SET_OF_SubentryInfo_set_of[1] = {
1527 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subentries_item },
1531 dissect_dop_SET_OF_SubentryInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1532 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1533 SET_OF_SubentryInfo_set_of, hf_index, ett_dop_SET_OF_SubentryInfo);
1537 static int dissect_subentries(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1538 return dissect_dop_SET_OF_SubentryInfo(FALSE, tvb, offset, pinfo, tree, hf_dop_subentries);
1542 static const ber_sequence_t Vertex_sequence[] = {
1543 { BER_CLASS_CON, 0, 0, dissect_rdn },
1544 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_admPointInfo },
1545 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_subentries },
1546 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_accessPoints },
1551 dissect_dop_Vertex(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1552 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1553 Vertex_sequence, hf_index, ett_dop_Vertex);
1557 static int dissect_DITcontext_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1558 return dissect_dop_Vertex(FALSE, tvb, offset, pinfo, tree, hf_dop_DITcontext_item);
1562 static const ber_sequence_t DITcontext_sequence_of[1] = {
1563 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_DITcontext_item },
1567 dissect_dop_DITcontext(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1568 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1569 DITcontext_sequence_of, hf_index, ett_dop_DITcontext);
1573 static int dissect_contextPrefixInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1574 return dissect_dop_DITcontext(FALSE, tvb, offset, pinfo, tree, hf_dop_contextPrefixInfo);
1578 static const ber_sequence_t SuperiorToSubordinate_sequence[] = {
1579 { BER_CLASS_CON, 0, 0, dissect_contextPrefixInfo },
1580 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_entryInfo },
1581 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_immediateSuperiorInfo },
1586 dissect_dop_SuperiorToSubordinate(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1587 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1588 SuperiorToSubordinate_sequence, hf_index, ett_dop_SuperiorToSubordinate);
1594 static const ber_sequence_t SubordinateToSuperior_sequence[] = {
1595 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_accessPoints },
1596 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_alias },
1597 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_entryInfo },
1598 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_subentries },
1603 dissect_dop_SubordinateToSuperior(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1604 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1605 SubordinateToSuperior_sequence, hf_index, ett_dop_SubordinateToSuperior);
1611 static const ber_sequence_t SuperiorToSubordinateModification_sequence[] = {
1612 { BER_CLASS_CON, 0, 0, dissect_contextPrefixInfo },
1613 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_immediateSuperiorInfo },
1618 dissect_dop_SuperiorToSubordinateModification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1619 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1620 SuperiorToSubordinateModification_sequence, hf_index, ett_dop_SuperiorToSubordinateModification);
1626 static const ber_sequence_t NonSpecificHierarchicalAgreement_sequence[] = {
1627 { BER_CLASS_CON, 1, 0, dissect_immediateSuperior },
1632 dissect_dop_NonSpecificHierarchicalAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1633 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1634 NonSpecificHierarchicalAgreement_sequence, hf_index, ett_dop_NonSpecificHierarchicalAgreement);
1640 static const ber_sequence_t NHOBSuperiorToSubordinate_sequence[] = {
1641 { BER_CLASS_CON, 0, 0, dissect_contextPrefixInfo },
1642 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_immediateSuperiorInfo },
1647 dissect_dop_NHOBSuperiorToSubordinate(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1648 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1649 NHOBSuperiorToSubordinate_sequence, hf_index, ett_dop_NHOBSuperiorToSubordinate);
1655 static const ber_sequence_t NHOBSubordinateToSuperior_sequence[] = {
1656 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_accessPoints },
1657 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_subentries },
1662 dissect_dop_NHOBSubordinateToSuperior(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1663 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1664 NHOBSubordinateToSuperior_sequence, hf_index, ett_dop_NHOBSubordinateToSuperior);
1671 static void dissect_DSEType_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1672 dissect_dop_DSEType(FALSE, tvb, 0, pinfo, tree, hf_dop_DSEType_PDU);
1674 static void dissect_SupplierInformation_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1675 dissect_dop_SupplierInformation(FALSE, tvb, 0, pinfo, tree, hf_dop_SupplierInformation_PDU);
1677 static void dissect_ConsumerInformation_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1678 dissect_dop_ConsumerInformation(FALSE, tvb, 0, pinfo, tree, hf_dop_ConsumerInformation_PDU);
1680 static void dissect_SupplierAndConsumers_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1681 dissect_dop_SupplierAndConsumers(FALSE, tvb, 0, pinfo, tree, hf_dop_SupplierAndConsumers_PDU);
1683 static void dissect_HierarchicalAgreement_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1684 dissect_dop_HierarchicalAgreement(FALSE, tvb, 0, pinfo, tree, hf_dop_HierarchicalAgreement_PDU);
1686 static void dissect_SuperiorToSubordinate_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1687 dissect_dop_SuperiorToSubordinate(FALSE, tvb, 0, pinfo, tree, hf_dop_SuperiorToSubordinate_PDU);
1689 static void dissect_SubordinateToSuperior_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1690 dissect_dop_SubordinateToSuperior(FALSE, tvb, 0, pinfo, tree, hf_dop_SubordinateToSuperior_PDU);
1692 static void dissect_SuperiorToSubordinateModification_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1693 dissect_dop_SuperiorToSubordinateModification(FALSE, tvb, 0, pinfo, tree, hf_dop_SuperiorToSubordinateModification_PDU);
1695 static void dissect_NonSpecificHierarchicalAgreement_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1696 dissect_dop_NonSpecificHierarchicalAgreement(FALSE, tvb, 0, pinfo, tree, hf_dop_NonSpecificHierarchicalAgreement_PDU);
1698 static void dissect_NHOBSuperiorToSubordinate_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1699 dissect_dop_NHOBSuperiorToSubordinate(FALSE, tvb, 0, pinfo, tree, hf_dop_NHOBSuperiorToSubordinate_PDU);
1701 static void dissect_NHOBSubordinateToSuperior_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
1702 dissect_dop_NHOBSubordinateToSuperior(FALSE, tvb, 0, pinfo, tree, hf_dop_NHOBSubordinateToSuperior_PDU);
1706 /*--- End of included file: packet-dop-fn.c ---*/
1707 #line 75 "packet-dop-template.c"
1710 call_dop_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1713 char binding_param[BER_MAX_OID_STR_LEN];
1715 sprintf(binding_param, "%s.%s", base_oid, binding_type ? binding_type : "");
1717 name = get_ber_oid_name(binding_param);
1718 proto_item_append_text(tree, " (%s)", name ? name : binding_param);
1720 return call_ber_oid_callback(binding_param, tvb, offset, pinfo, tree);
1726 * Dissect DOP PDUs inside a ROS PDUs
1729 dissect_dop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1733 proto_item *item=NULL;
1734 proto_tree *tree=NULL;
1735 int (*dop_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) = NULL;
1738 /* do we have operation information from the ROS dissector? */
1739 if( !pinfo->private_data ){
1741 proto_tree_add_text(parent_tree, tvb, offset, -1,
1742 "Internal error: can't get operation information from ROS dissector.");
1746 session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
1750 item = proto_tree_add_item(parent_tree, proto_dop, tvb, 0, -1, FALSE);
1751 tree = proto_item_add_subtree(item, ett_dop);
1753 if (check_col(pinfo->cinfo, COL_PROTOCOL))
1754 col_set_str(pinfo->cinfo, COL_PROTOCOL, "DOP");
1755 if (check_col(pinfo->cinfo, COL_INFO))
1756 col_clear(pinfo->cinfo, COL_INFO);
1758 switch(session->ros_op & ROS_OP_MASK) {
1759 case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
1760 dop_dissector = dissect_dop_DSAOperationalManagementBindArgument;
1761 dop_op_name = "DSA-Operational-Bind-Argument";
1763 case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
1764 dop_dissector = dissect_dop_DSAOperationalManagementBindResult;
1765 dop_op_name = "DSA-Operational-Bind-Result";
1767 case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
1768 dop_dissector = dissect_dop_DSAOperationalManagementBindError;
1769 dop_op_name = "DSA-Operational-Management-Bind-Error";
1771 case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
1772 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1773 case 100: /* establish */
1774 dop_dissector = dissect_dop_EstablishOperationalBindingArgument;
1775 dop_op_name = "Establish-Operational-Binding-Argument";
1777 case 101: /* terminate */
1778 dop_dissector = dissect_dop_TerminateOperationalBindingArgument;
1779 dop_op_name = "Terminate-Operational-Binding-Argument";
1781 case 102: /* modify */
1782 dop_dissector = dissect_dop_ModifyOperationalBindingArgument;
1783 dop_op_name = "Modify-Operational-Binding-Argument";
1786 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Argument opcode (%d)",
1787 session->ros_op & ROS_OP_OPCODE_MASK);
1791 case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
1792 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1793 case 100: /* establish */
1794 dop_dissector = dissect_dop_EstablishOperationalBindingResult;
1795 dop_op_name = "Establish-Operational-Binding-Result";
1797 case 101: /* terminate */
1798 dop_dissector = dissect_dop_TerminateOperationalBindingResult;
1799 dop_op_name = "Terminate-Operational-Binding-Result";
1801 case 102: /* modify */
1802 dop_dissector = dissect_dop_ModifyOperationalBindingResult;
1803 dop_op_name = "Modify-Operational-Binding-Result";
1806 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Result opcode (%d)",
1807 session->ros_op & ROS_OP_OPCODE_MASK);
1811 case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
1812 switch(session->ros_op & ROS_OP_OPCODE_MASK) {
1813 case 100: /* operational-binding */
1814 dop_dissector = dissect_dop_OpBindingErrorParam;
1815 dop_op_name = "Operational-Binding-Error";
1818 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Error opcode (%d)",
1819 session->ros_op & ROS_OP_OPCODE_MASK);
1824 proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP PDU");
1829 if (check_col(pinfo->cinfo, COL_INFO))
1830 col_add_str(pinfo->cinfo, COL_INFO, dop_op_name);
1832 while (tvb_reported_length_remaining(tvb, offset) > 0){
1834 offset=(*dop_dissector)(FALSE, tvb, offset, pinfo , tree, -1);
1835 if(offset == old_offset){
1836 proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DOP PDU");
1837 offset = tvb_length(tvb);
1846 /*--- proto_register_dop -------------------------------------------*/
1847 void proto_register_dop(void) {
1849 /* List of fields */
1850 static hf_register_info hf[] =
1853 /*--- Included file: packet-dop-hfarr.c ---*/
1854 #line 1 "packet-dop-hfarr.c"
1855 { &hf_dop_DSEType_PDU,
1856 { "DSEType", "dop.DSEType",
1857 FT_BYTES, BASE_HEX, NULL, 0,
1858 "DSEType", HFILL }},
1859 { &hf_dop_SupplierInformation_PDU,
1860 { "SupplierInformation", "dop.SupplierInformation",
1861 FT_NONE, BASE_NONE, NULL, 0,
1862 "SupplierInformation", HFILL }},
1863 { &hf_dop_ConsumerInformation_PDU,
1864 { "ConsumerInformation", "dop.ConsumerInformation",
1865 FT_NONE, BASE_NONE, NULL, 0,
1866 "ConsumerInformation", HFILL }},
1867 { &hf_dop_SupplierAndConsumers_PDU,
1868 { "SupplierAndConsumers", "dop.SupplierAndConsumers",
1869 FT_NONE, BASE_NONE, NULL, 0,
1870 "SupplierAndConsumers", HFILL }},
1871 { &hf_dop_HierarchicalAgreement_PDU,
1872 { "HierarchicalAgreement", "dop.HierarchicalAgreement",
1873 FT_NONE, BASE_NONE, NULL, 0,
1874 "HierarchicalAgreement", HFILL }},
1875 { &hf_dop_SuperiorToSubordinate_PDU,
1876 { "SuperiorToSubordinate", "dop.SuperiorToSubordinate",
1877 FT_NONE, BASE_NONE, NULL, 0,
1878 "SuperiorToSubordinate", HFILL }},
1879 { &hf_dop_SubordinateToSuperior_PDU,
1880 { "SubordinateToSuperior", "dop.SubordinateToSuperior",
1881 FT_NONE, BASE_NONE, NULL, 0,
1882 "SubordinateToSuperior", HFILL }},
1883 { &hf_dop_SuperiorToSubordinateModification_PDU,
1884 { "SuperiorToSubordinateModification", "dop.SuperiorToSubordinateModification",
1885 FT_NONE, BASE_NONE, NULL, 0,
1886 "SuperiorToSubordinateModification", HFILL }},
1887 { &hf_dop_NonSpecificHierarchicalAgreement_PDU,
1888 { "NonSpecificHierarchicalAgreement", "dop.NonSpecificHierarchicalAgreement",
1889 FT_NONE, BASE_NONE, NULL, 0,
1890 "NonSpecificHierarchicalAgreement", HFILL }},
1891 { &hf_dop_NHOBSuperiorToSubordinate_PDU,
1892 { "NHOBSuperiorToSubordinate", "dop.NHOBSuperiorToSubordinate",
1893 FT_NONE, BASE_NONE, NULL, 0,
1894 "NHOBSuperiorToSubordinate", HFILL }},
1895 { &hf_dop_NHOBSubordinateToSuperior_PDU,
1896 { "NHOBSubordinateToSuperior", "dop.NHOBSubordinateToSuperior",
1897 FT_NONE, BASE_NONE, NULL, 0,
1898 "NHOBSubordinateToSuperior", HFILL }},
1900 { "ae-title", "dop.ae_title",
1901 FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
1904 { "address", "dop.address",
1905 FT_NONE, BASE_NONE, NULL, 0,
1907 { &hf_dop_protocolInformation,
1908 { "protocolInformation", "dop.protocolInformation",
1909 FT_UINT32, BASE_DEC, NULL, 0,
1911 { &hf_dop_protocolInformation_item,
1912 { "Item", "dop.protocolInformation_item",
1913 FT_NONE, BASE_NONE, NULL, 0,
1915 { &hf_dop_agreementID,
1916 { "agreementID", "dop.agreementID",
1917 FT_NONE, BASE_NONE, NULL, 0,
1919 { &hf_dop_supplier_is_master,
1920 { "supplier-is-master", "dop.supplier_is_master",
1921 FT_BOOLEAN, 8, NULL, 0,
1922 "SupplierInformation/supplier-is-master", HFILL }},
1923 { &hf_dop_non_supplying_master,
1924 { "non-supplying-master", "dop.non_supplying_master",
1925 FT_NONE, BASE_NONE, NULL, 0,
1926 "SupplierInformation/non-supplying-master", HFILL }},
1927 { &hf_dop_consumers,
1928 { "consumers", "dop.consumers",
1929 FT_UINT32, BASE_DEC, NULL, 0,
1930 "SupplierAndConsumers/consumers", HFILL }},
1931 { &hf_dop_consumers_item,
1932 { "Item", "dop.consumers_item",
1933 FT_NONE, BASE_NONE, NULL, 0,
1934 "SupplierAndConsumers/consumers/_item", HFILL }},
1935 { &hf_dop_bindingType,
1936 { "bindingType", "dop.bindingType",
1937 FT_OID, BASE_NONE, NULL, 0,
1939 { &hf_dop_bindingID,
1940 { "bindingID", "dop.bindingID",
1941 FT_NONE, BASE_NONE, NULL, 0,
1943 { &hf_dop_accessPoint,
1944 { "accessPoint", "dop.accessPoint",
1945 FT_NONE, BASE_NONE, NULL, 0,
1947 { &hf_dop_establishInitiator,
1948 { "initiator", "dop.initiator",
1949 FT_UINT32, BASE_DEC, VALS(dop_EstablishArgumentInitiator_vals), 0,
1950 "EstablishOperationalBindingArgumentData/initiator", HFILL }},
1951 { &hf_dop_establishSymmetric,
1952 { "symmetric", "dop.symmetric",
1953 FT_NONE, BASE_NONE, NULL, 0,
1954 "EstablishOperationalBindingArgumentData/initiator/symmetric", HFILL }},
1955 { &hf_dop_establishRoleAInitiates,
1956 { "roleA-initiates", "dop.roleA_initiates",
1957 FT_NONE, BASE_NONE, NULL, 0,
1958 "EstablishOperationalBindingArgumentData/initiator/roleA-initiates", HFILL }},
1959 { &hf_dop_establishRoleBInitiates,
1960 { "roleB-initiates", "dop.roleB_initiates",
1961 FT_NONE, BASE_NONE, NULL, 0,
1962 "EstablishOperationalBindingArgumentData/initiator/roleB-initiates", HFILL }},
1963 { &hf_dop_agreement,
1964 { "agreement", "dop.agreement",
1965 FT_NONE, BASE_NONE, NULL, 0,
1966 "EstablishOperationalBindingArgumentData/agreement", HFILL }},
1968 { "valid", "dop.valid",
1969 FT_NONE, BASE_NONE, NULL, 0,
1971 { &hf_dop_securityParameters,
1972 { "securityParameters", "dop.securityParameters",
1973 FT_NONE, BASE_NONE, NULL, 0,
1975 { &hf_dop_unsignedEstablishOperationalBindingArgument,
1976 { "unsignedEstablishOperationalBindingArgument", "dop.unsignedEstablishOperationalBindingArgument",
1977 FT_NONE, BASE_NONE, NULL, 0,
1978 "EstablishOperationalBindingArgument/unsignedEstablishOperationalBindingArgument", HFILL }},
1979 { &hf_dop_signedEstablishOperationalBindingArgument,
1980 { "signedEstablishOperationalBindingArgument", "dop.signedEstablishOperationalBindingArgument",
1981 FT_NONE, BASE_NONE, NULL, 0,
1982 "EstablishOperationalBindingArgument/signedEstablishOperationalBindingArgument", HFILL }},
1983 { &hf_dop_establishOperationalBindingArgument,
1984 { "establishOperationalBindingArgument", "dop.establishOperationalBindingArgument",
1985 FT_NONE, BASE_NONE, NULL, 0,
1986 "EstablishOperationalBindingArgument/signedEstablishOperationalBindingArgument/establishOperationalBindingArgument", HFILL }},
1987 { &hf_dop_algorithmIdentifier,
1988 { "algorithmIdentifier", "dop.algorithmIdentifier",
1989 FT_NONE, BASE_NONE, NULL, 0,
1991 { &hf_dop_encrypted,
1992 { "encrypted", "dop.encrypted",
1993 FT_BYTES, BASE_HEX, NULL, 0,
1995 { &hf_dop_identifier,
1996 { "identifier", "dop.identifier",
1997 FT_INT32, BASE_DEC, NULL, 0,
1998 "OperationalBindingID/identifier", HFILL }},
2000 { "version", "dop.version",
2001 FT_INT32, BASE_DEC, NULL, 0,
2002 "OperationalBindingID/version", HFILL }},
2003 { &hf_dop_validFrom,
2004 { "validFrom", "dop.validFrom",
2005 FT_UINT32, BASE_DEC, VALS(dop_T_validFrom_vals), 0,
2006 "Validity/validFrom", HFILL }},
2009 FT_NONE, BASE_NONE, NULL, 0,
2010 "Validity/validFrom/now", HFILL }},
2012 { "time", "dop.time",
2013 FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0,
2015 { &hf_dop_validUntil,
2016 { "validUntil", "dop.validUntil",
2017 FT_UINT32, BASE_DEC, VALS(dop_T_validUntil_vals), 0,
2018 "Validity/validUntil", HFILL }},
2019 { &hf_dop_explicitTermination,
2020 { "explicitTermination", "dop.explicitTermination",
2021 FT_NONE, BASE_NONE, NULL, 0,
2022 "Validity/validUntil/explicitTermination", HFILL }},
2024 { "utcTime", "dop.utcTime",
2025 FT_STRING, BASE_NONE, NULL, 0,
2026 "Time/utcTime", HFILL }},
2027 { &hf_dop_generalizedTime,
2028 { "generalizedTime", "dop.generalizedTime",
2029 FT_STRING, BASE_NONE, NULL, 0,
2030 "Time/generalizedTime", HFILL }},
2031 { &hf_dop_initiator,
2032 { "initiator", "dop.initiator",
2033 FT_UINT32, BASE_DEC, VALS(dop_T_initiator_vals), 0,
2034 "EstablishOperationalBindingResult/initiator", HFILL }},
2035 { &hf_dop_symmetric,
2036 { "symmetric", "dop.symmetric",
2037 FT_NONE, BASE_NONE, NULL, 0,
2038 "EstablishOperationalBindingResult/initiator/symmetric", HFILL }},
2039 { &hf_dop_roleA_replies,
2040 { "roleA-replies", "dop.roleA_replies",
2041 FT_NONE, BASE_NONE, NULL, 0,
2042 "EstablishOperationalBindingResult/initiator/roleA-replies", HFILL }},
2043 { &hf_dop_roleB_replies,
2044 { "roleB-replies", "dop.roleB_replies",
2045 FT_NONE, BASE_NONE, NULL, 0,
2046 "EstablishOperationalBindingResult/initiator/roleB-replies", HFILL }},
2047 { &hf_dop_performer,
2048 { "performer", "dop.performer",
2049 FT_UINT32, BASE_DEC, NULL, 0,
2051 { &hf_dop_aliasDereferenced,
2052 { "aliasDereferenced", "dop.aliasDereferenced",
2053 FT_BOOLEAN, 8, NULL, 0,
2055 { &hf_dop_notification,
2056 { "notification", "dop.notification",
2057 FT_UINT32, BASE_DEC, NULL, 0,
2059 { &hf_dop_notification_item,
2060 { "Item", "dop.notification_item",
2061 FT_NONE, BASE_NONE, NULL, 0,
2063 { &hf_dop_modifyInitiator,
2064 { "initiator", "dop.initiator",
2065 FT_UINT32, BASE_DEC, VALS(dop_ModifyArgumentInitiator_vals), 0,
2066 "ModifyOperationalBindingArgumentData/initiator", HFILL }},
2067 { &hf_dop_modifySymmetric,
2068 { "symmetric", "dop.symmetric",
2069 FT_NONE, BASE_NONE, NULL, 0,
2070 "ModifyOperationalBindingArgumentData/initiator/symmetric", HFILL }},
2071 { &hf_dop_modifyRoleAInitiates,
2072 { "roleA-initiates", "dop.roleA_initiates",
2073 FT_NONE, BASE_NONE, NULL, 0,
2074 "ModifyOperationalBindingArgumentData/initiator/roleA-initiates", HFILL }},
2075 { &hf_dop_modifyRoleBInitiates,
2076 { "roleB-initiates", "dop.roleB_initiates",
2077 FT_NONE, BASE_NONE, NULL, 0,
2078 "ModifyOperationalBindingArgumentData/initiator/roleB-initiates", HFILL }},
2079 { &hf_dop_newBindingID,
2080 { "newBindingID", "dop.newBindingID",
2081 FT_NONE, BASE_NONE, NULL, 0,
2083 { &hf_dop_argumentNewAgreement,
2084 { "newAgreement", "dop.newAgreement",
2085 FT_NONE, BASE_NONE, NULL, 0,
2086 "ModifyOperationalBindingArgumentData/newAgreement", HFILL }},
2087 { &hf_dop_unsignedModifyOperationalBindingArgument,
2088 { "unsignedModifyOperationalBindingArgument", "dop.unsignedModifyOperationalBindingArgument",
2089 FT_NONE, BASE_NONE, NULL, 0,
2090 "ModifyOperationalBindingArgument/unsignedModifyOperationalBindingArgument", HFILL }},
2091 { &hf_dop_signedModifyOperationalBindingArgument,
2092 { "signedModifyOperationalBindingArgument", "dop.signedModifyOperationalBindingArgument",
2093 FT_NONE, BASE_NONE, NULL, 0,
2094 "ModifyOperationalBindingArgument/signedModifyOperationalBindingArgument", HFILL }},
2095 { &hf_dop_modifyOperationalBindingArgument,
2096 { "modifyOperationalBindingArgument", "dop.modifyOperationalBindingArgument",
2097 FT_NONE, BASE_NONE, NULL, 0,
2098 "ModifyOperationalBindingArgument/signedModifyOperationalBindingArgument/modifyOperationalBindingArgument", HFILL }},
2100 { "null", "dop.null",
2101 FT_NONE, BASE_NONE, NULL, 0,
2103 { &hf_dop_protectedModifyResult,
2104 { "protected", "dop.protected",
2105 FT_NONE, BASE_NONE, NULL, 0,
2106 "ModifyOperationalBindingResult/protected", HFILL }},
2107 { &hf_dop_modifyOperationalBindingResultData,
2108 { "modifyOperationalBindingResultData", "dop.modifyOperationalBindingResultData",
2109 FT_NONE, BASE_NONE, NULL, 0,
2110 "ModifyOperationalBindingResult/protected/modifyOperationalBindingResultData", HFILL }},
2111 { &hf_dop_resultNewAgreement,
2112 { "newAgreement", "dop.newAgreement",
2113 FT_NONE, BASE_NONE, NULL, 0,
2114 "ModifyOperationalBindingResultData/newAgreement", HFILL }},
2115 { &hf_dop_terminateInitiator,
2116 { "initiator", "dop.initiator",
2117 FT_UINT32, BASE_DEC, VALS(dop_TerminateArgumentInitiator_vals), 0,
2118 "TerminateOperationalBindingArgumentData/initiator", HFILL }},
2119 { &hf_dop_terminateSymmetric,
2120 { "symmetric", "dop.symmetric",
2121 FT_NONE, BASE_NONE, NULL, 0,
2122 "TerminateOperationalBindingArgumentData/initiator/symmetric", HFILL }},
2123 { &hf_dop_terminateRoleAInitiates,
2124 { "roleA-initiates", "dop.roleA_initiates",
2125 FT_NONE, BASE_NONE, NULL, 0,
2126 "TerminateOperationalBindingArgumentData/initiator/roleA-initiates", HFILL }},
2127 { &hf_dop_terminateRoleBInitiates,
2128 { "roleB-initiates", "dop.roleB_initiates",
2129 FT_NONE, BASE_NONE, NULL, 0,
2130 "TerminateOperationalBindingArgumentData/initiator/roleB-initiates", HFILL }},
2131 { &hf_dop_terminateAtTime,
2132 { "terminateAt", "dop.terminateAt",
2133 FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0,
2134 "TerminateOperationalBindingArgumentData/terminateAt", HFILL }},
2135 { &hf_dop_unsignedTerminateOperationalBindingArgument,
2136 { "unsignedTerminateOperationalBindingArgument", "dop.unsignedTerminateOperationalBindingArgument",
2137 FT_NONE, BASE_NONE, NULL, 0,
2138 "TerminateOperationalBindingArgument/unsignedTerminateOperationalBindingArgument", HFILL }},
2139 { &hf_dop_signedTerminateOperationalBindingArgument,
2140 { "signedTerminateOperationalBindingArgument", "dop.signedTerminateOperationalBindingArgument",
2141 FT_NONE, BASE_NONE, NULL, 0,
2142 "TerminateOperationalBindingArgument/signedTerminateOperationalBindingArgument", HFILL }},
2143 { &hf_dop_terminateOperationalBindingArgument,
2144 { "terminateOperationalBindingArgument", "dop.terminateOperationalBindingArgument",
2145 FT_NONE, BASE_NONE, NULL, 0,
2146 "TerminateOperationalBindingArgument/signedTerminateOperationalBindingArgument/terminateOperationalBindingArgument", HFILL }},
2147 { &hf_dop_protectedTerminateResult,
2148 { "protected", "dop.protected",
2149 FT_NONE, BASE_NONE, NULL, 0,
2150 "TerminateOperationalBindingResult/protected", HFILL }},
2151 { &hf_dop_terminateOperationalBindingResultData,
2152 { "terminateOperationalBindingResultData", "dop.terminateOperationalBindingResultData",
2153 FT_NONE, BASE_NONE, NULL, 0,
2154 "TerminateOperationalBindingResult/protected/terminateOperationalBindingResultData", HFILL }},
2155 { &hf_dop_terminateAtGeneralizedTime,
2156 { "terminateAt", "dop.terminateAt",
2157 FT_STRING, BASE_NONE, NULL, 0,
2158 "TerminateOperationalBindingResultData/terminateAt", HFILL }},
2160 { "problem", "dop.problem",
2161 FT_UINT32, BASE_DEC, VALS(dop_T_problem_vals), 0,
2162 "OpBindingErrorParam/problem", HFILL }},
2163 { &hf_dop_agreementProposal,
2164 { "agreementProposal", "dop.agreementProposal",
2165 FT_NONE, BASE_NONE, NULL, 0,
2166 "OpBindingErrorParam/agreementProposal", HFILL }},
2168 { "retryAt", "dop.retryAt",
2169 FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0,
2170 "OpBindingErrorParam/retryAt", HFILL }},
2173 FT_UINT32, BASE_DEC, NULL, 0,
2175 { &hf_dop_immediateSuperior,
2176 { "immediateSuperior", "dop.immediateSuperior",
2177 FT_UINT32, BASE_DEC, NULL, 0,
2179 { &hf_dop_contextPrefixInfo,
2180 { "contextPrefixInfo", "dop.contextPrefixInfo",
2181 FT_UINT32, BASE_DEC, NULL, 0,
2183 { &hf_dop_entryInfo,
2184 { "entryInfo", "dop.entryInfo",
2185 FT_UINT32, BASE_DEC, NULL, 0,
2187 { &hf_dop_entryInfo_item,
2188 { "Item", "dop.entryInfo_item",
2189 FT_NONE, BASE_NONE, NULL, 0,
2191 { &hf_dop_immediateSuperiorInfo,
2192 { "immediateSuperiorInfo", "dop.immediateSuperiorInfo",
2193 FT_UINT32, BASE_DEC, NULL, 0,
2195 { &hf_dop_immediateSuperiorInfo_item,
2196 { "Item", "dop.immediateSuperiorInfo_item",
2197 FT_NONE, BASE_NONE, NULL, 0,
2199 { &hf_dop_DITcontext_item,
2200 { "Item", "dop.DITcontext_item",
2201 FT_NONE, BASE_NONE, NULL, 0,
2202 "DITcontext/_item", HFILL }},
2203 { &hf_dop_admPointInfo,
2204 { "admPointInfo", "dop.admPointInfo",
2205 FT_UINT32, BASE_DEC, NULL, 0,
2206 "Vertex/admPointInfo", HFILL }},
2207 { &hf_dop_admPointInfo_item,
2208 { "Item", "dop.admPointInfo_item",
2209 FT_NONE, BASE_NONE, NULL, 0,
2210 "Vertex/admPointInfo/_item", HFILL }},
2211 { &hf_dop_subentries,
2212 { "subentries", "dop.subentries",
2213 FT_UINT32, BASE_DEC, NULL, 0,
2215 { &hf_dop_subentries_item,
2216 { "Item", "dop.subentries_item",
2217 FT_NONE, BASE_NONE, NULL, 0,
2219 { &hf_dop_accessPoints,
2220 { "accessPoints", "dop.accessPoints",
2221 FT_NONE, BASE_NONE, NULL, 0,
2224 { "info", "dop.info",
2225 FT_UINT32, BASE_DEC, NULL, 0,
2226 "SubentryInfo/info", HFILL }},
2227 { &hf_dop_info_item,
2228 { "Item", "dop.info_item",
2229 FT_NONE, BASE_NONE, NULL, 0,
2230 "SubentryInfo/info/_item", HFILL }},
2232 { "alias", "dop.alias",
2233 FT_BOOLEAN, 8, NULL, 0,
2234 "SubordinateToSuperior/alias", HFILL }},
2235 { &hf_dop_DSEType_root,
2236 { "root", "dop.root",
2237 FT_BOOLEAN, 8, NULL, 0x80,
2239 { &hf_dop_DSEType_glue,
2240 { "glue", "dop.glue",
2241 FT_BOOLEAN, 8, NULL, 0x40,
2243 { &hf_dop_DSEType_cp,
2245 FT_BOOLEAN, 8, NULL, 0x20,
2247 { &hf_dop_DSEType_entry,
2248 { "entry", "dop.entry",
2249 FT_BOOLEAN, 8, NULL, 0x10,
2251 { &hf_dop_DSEType_alias,
2252 { "alias", "dop.alias",
2253 FT_BOOLEAN, 8, NULL, 0x08,
2255 { &hf_dop_DSEType_subr,
2256 { "subr", "dop.subr",
2257 FT_BOOLEAN, 8, NULL, 0x04,
2259 { &hf_dop_DSEType_nssr,
2260 { "nssr", "dop.nssr",
2261 FT_BOOLEAN, 8, NULL, 0x02,
2263 { &hf_dop_DSEType_supr,
2264 { "supr", "dop.supr",
2265 FT_BOOLEAN, 8, NULL, 0x01,
2267 { &hf_dop_DSEType_xr,
2269 FT_BOOLEAN, 8, NULL, 0x80,
2271 { &hf_dop_DSEType_admPoint,
2272 { "admPoint", "dop.admPoint",
2273 FT_BOOLEAN, 8, NULL, 0x40,
2275 { &hf_dop_DSEType_subentry,
2276 { "subentry", "dop.subentry",
2277 FT_BOOLEAN, 8, NULL, 0x20,
2279 { &hf_dop_DSEType_shadow,
2280 { "shadow", "dop.shadow",
2281 FT_BOOLEAN, 8, NULL, 0x10,
2283 { &hf_dop_DSEType_immSupr,
2284 { "immSupr", "dop.immSupr",
2285 FT_BOOLEAN, 8, NULL, 0x04,
2287 { &hf_dop_DSEType_rhob,
2288 { "rhob", "dop.rhob",
2289 FT_BOOLEAN, 8, NULL, 0x02,
2291 { &hf_dop_DSEType_sa,
2293 FT_BOOLEAN, 8, NULL, 0x01,
2295 { &hf_dop_DSEType_dsSubentry,
2296 { "dsSubentry", "dop.dsSubentry",
2297 FT_BOOLEAN, 8, NULL, 0x80,
2299 { &hf_dop_DSEType_familyMember,
2300 { "familyMember", "dop.familyMember",
2301 FT_BOOLEAN, 8, NULL, 0x40,
2304 /*--- End of included file: packet-dop-hfarr.c ---*/
2305 #line 220 "packet-dop-template.c"
2308 /* List of subtrees */
2309 static gint *ett[] = {
2312 /*--- Included file: packet-dop-ettarr.c ---*/
2313 #line 1 "packet-dop-ettarr.c"
2315 &ett_dop_SupplierOrConsumer,
2316 &ett_dop_SET_OF_ProtocolInformation,
2317 &ett_dop_SupplierInformation,
2318 &ett_dop_SupplierAndConsumers,
2319 &ett_dop_SET_OF_AccessPoint,
2320 &ett_dop_EstablishOperationalBindingArgumentData,
2321 &ett_dop_EstablishArgumentInitiator,
2322 &ett_dop_EstablishOperationalBindingArgument,
2323 &ett_dop_T_signedEstablishOperationalBindingArgument,
2324 &ett_dop_OperationalBindingID,
2326 &ett_dop_T_validFrom,
2327 &ett_dop_T_validUntil,
2329 &ett_dop_EstablishOperationalBindingResult,
2330 &ett_dop_T_initiator,
2331 &ett_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute,
2332 &ett_dop_ModifyOperationalBindingArgumentData,
2333 &ett_dop_ModifyArgumentInitiator,
2334 &ett_dop_ModifyOperationalBindingArgument,
2335 &ett_dop_T_signedModifyOperationalBindingArgument,
2336 &ett_dop_ModifyOperationalBindingResult,
2337 &ett_dop_ProtectedModifyResult,
2338 &ett_dop_ModifyOperationalBindingResultData,
2339 &ett_dop_TerminateOperationalBindingArgumentData,
2340 &ett_dop_TerminateArgumentInitiator,
2341 &ett_dop_TerminateOperationalBindingArgument,
2342 &ett_dop_T_signedTerminateOperationalBindingArgument,
2343 &ett_dop_TerminateOperationalBindingResult,
2344 &ett_dop_ProtectedTerminateResult,
2345 &ett_dop_TerminateOperationalBindingResultData,
2346 &ett_dop_OpBindingErrorParam,
2347 &ett_dop_HierarchicalAgreement,
2348 &ett_dop_SuperiorToSubordinate,
2349 &ett_dop_SET_OF_Attribute,
2350 &ett_dop_DITcontext,
2352 &ett_dop_SET_OF_SubentryInfo,
2353 &ett_dop_SubentryInfo,
2354 &ett_dop_SubordinateToSuperior,
2355 &ett_dop_SuperiorToSubordinateModification,
2356 &ett_dop_NonSpecificHierarchicalAgreement,
2357 &ett_dop_NHOBSuperiorToSubordinate,
2358 &ett_dop_NHOBSubordinateToSuperior,
2360 /*--- End of included file: packet-dop-ettarr.c ---*/
2361 #line 226 "packet-dop-template.c"
2364 module_t *dop_module;
2366 /* Register protocol */
2367 proto_dop = proto_register_protocol(PNAME, PSNAME, PFNAME);
2369 /* initially disable the protocol */
2370 proto_set_decoding(proto_dop, FALSE);
2372 register_dissector("dop", dissect_dop, proto_dop);
2374 /* Register fields and subtrees */
2375 proto_register_field_array(proto_dop, hf, array_length(hf));
2376 proto_register_subtree_array(ett, array_length(ett));
2378 /* Register our configuration options for DOP, particularly our port */
2380 #ifdef PREFERENCE_GROUPING
2381 dop_module = prefs_register_protocol_subtree("OSI/X.500", proto_dop, prefs_register_dop);
2383 dop_module = prefs_register_protocol(proto_dop, prefs_register_dop);
2386 prefs_register_uint_preference(dop_module, "tcp.port", "DOP TCP Port",
2387 "Set the port for DOP operations (if other"
2388 " than the default of 102)",
2389 10, &global_dop_tcp_port);
2395 /*--- proto_reg_handoff_dop --- */
2396 void proto_reg_handoff_dop(void) {
2397 dissector_handle_t handle = NULL;
2400 /*--- Included file: packet-dop-dis-tab.c ---*/
2401 #line 1 "packet-dop-dis-tab.c"
2402 register_ber_oid_dissector("2.5.12.0", dissect_DSEType_PDU, proto_dop, "id-doa-dseType");
2403 register_ber_oid_dissector("2.5.12.5", dissect_SupplierInformation_PDU, proto_dop, "id-doa-supplierKnowledge");
2404 register_ber_oid_dissector("2.5.12.6", dissect_ConsumerInformation_PDU, proto_dop, "id-doa-consumerKnowledge");
2405 register_ber_oid_dissector("2.5.12.7", dissect_SupplierAndConsumers_PDU, proto_dop, "id-doa-secondaryShadows");
2406 register_ber_oid_dissector("dop.agreement.2.5.19.2", dissect_HierarchicalAgreement_PDU, proto_dop, "hierarchical-agreement");
2407 register_ber_oid_dissector("dop.establish.rolea.2.5.19.2", dissect_SuperiorToSubordinate_PDU, proto_dop, "hierarchical-establish-rolea");
2408 register_ber_oid_dissector("dop.modify.rolea.2.5.19.2", dissect_SuperiorToSubordinateModification_PDU, proto_dop, "hierarchical-modify-rolea");
2409 register_ber_oid_dissector("dop.establish.roleb.2.5.19.2", dissect_SubordinateToSuperior_PDU, proto_dop, "hierarchical-establish-roleb");
2410 register_ber_oid_dissector("dop.modify.roleb.2.5.19.2", dissect_SubordinateToSuperior_PDU, proto_dop, "hierarchical-modify-roleb");
2411 register_ber_oid_dissector("dop.agreement.2.5.19.3", dissect_NonSpecificHierarchicalAgreement_PDU, proto_dop, "non-specific-hierarchical-agreement");
2412 register_ber_oid_dissector("dop.establish.rolea.2.5.19.3", dissect_NHOBSuperiorToSubordinate_PDU, proto_dop, "non-specific-hierarchical-establish-rolea");
2413 register_ber_oid_dissector("dop.modify.rolea.2.5.19.3", dissect_NHOBSuperiorToSubordinate_PDU, proto_dop, "non-specific-hierarchical-modify-rolea");
2414 register_ber_oid_dissector("dop.establish.roleb.2.5.19.3", dissect_NHOBSubordinateToSuperior_PDU, proto_dop, "non-specific-hierarchical-establish-roleb");
2415 register_ber_oid_dissector("dop.modify.roleb.2.5.19.3", dissect_NHOBSubordinateToSuperior_PDU, proto_dop, "non-specific-hierarchical-modify-roleb");
2418 /*--- End of included file: packet-dop-dis-tab.c ---*/
2419 #line 264 "packet-dop-template.c"
2420 /* APPLICATION CONTEXT */
2422 register_ber_oid_name("2.5.3.3", "id-ac-directory-operational-binding-management");
2424 /* ABSTRACT SYNTAXES */
2426 /* Register DOP with ROS (with no use of RTSE) */
2427 if((handle = find_dissector("dop"))) {
2428 register_ros_oid_dissector_handle("2.5.9.4", handle, 0, "id-as-directory-operational-binding-management", FALSE);
2431 /* remember the tpkt handler for change in preferences */
2432 tpkt_handle = find_dissector("tpkt");
2436 void prefs_register_dop(void) {
2438 /* de-register the old port */
2439 /* port 102 is registered by TPKT - don't undo this! */
2440 if((tcp_port != 102) && tpkt_handle)
2441 dissector_delete("tcp.port", tcp_port, tpkt_handle);
2443 /* Set our port number for future use */
2444 tcp_port = global_dop_tcp_port;
2446 if((tcp_port > 0) && (tcp_port != 102) && tpkt_handle)
2447 dissector_add("tcp.port", global_dop_tcp_port, tpkt_handle);