1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -b -p t125 -c ./t125.cnf -s ./packet-t125-template -D . -O ../../epan/dissectors MCS-PROTOCOL.asn */
6 /* Input file: packet-t125-template.c */
8 #line 1 "../../asn1/t125/packet-t125-template.c"
10 * Routines for t125 packet dissection
11 * Copyright 2007, Ronnie Sahlberg
15 * Wireshark - Network traffic analyzer
16 * By Gerald Combs <gerald@wireshark.org>
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
38 #include <epan/packet.h>
39 #include <epan/exceptions.h>
41 #include <epan/asn1.h>
42 #include "packet-ber.h"
43 #include "packet-per.h"
45 #include "packet-t124.h"
47 #define PNAME "MULTIPOINT-COMMUNICATION-SERVICE T.125"
48 #define PSNAME "T.125"
51 void proto_register_t125(void);
52 void proto_reg_handoff_t125(void);
54 /* Initialize the protocol and registered fields */
55 static int proto_t125
= -1;
56 static proto_tree
*top_tree
= NULL
;
58 /*--- Included file: packet-t125-hf.c ---*/
59 #line 1 "../../asn1/t125/packet-t125-hf.c"
60 static int hf_t125_ConnectMCSPDU_PDU
= -1; /* ConnectMCSPDU */
61 static int hf_t125_maxChannelIds
= -1; /* INTEGER_0_MAX */
62 static int hf_t125_maxUserIds
= -1; /* INTEGER_0_MAX */
63 static int hf_t125_maxTokenIds
= -1; /* INTEGER_0_MAX */
64 static int hf_t125_numPriorities
= -1; /* INTEGER_0_MAX */
65 static int hf_t125_minThroughput
= -1; /* INTEGER_0_MAX */
66 static int hf_t125_maxHeight
= -1; /* INTEGER_0_MAX */
67 static int hf_t125_maxMCSPDUsize
= -1; /* INTEGER_0_MAX */
68 static int hf_t125_protocolVersion
= -1; /* INTEGER_0_MAX */
69 static int hf_t125_callingDomainSelector
= -1; /* OCTET_STRING */
70 static int hf_t125_calledDomainSelector
= -1; /* OCTET_STRING */
71 static int hf_t125_upwardFlag
= -1; /* BOOLEAN */
72 static int hf_t125_targetParameters
= -1; /* DomainParameters */
73 static int hf_t125_minimumParameters
= -1; /* DomainParameters */
74 static int hf_t125_maximumParameters
= -1; /* DomainParameters */
75 static int hf_t125_userData
= -1; /* T_userData */
76 static int hf_t125_result
= -1; /* Result */
77 static int hf_t125_calledConnectId
= -1; /* INTEGER_0_MAX */
78 static int hf_t125_domainParameters
= -1; /* DomainParameters */
79 static int hf_t125_userData_01
= -1; /* T_userData_01 */
80 static int hf_t125_dataPriority
= -1; /* DataPriority */
81 static int hf_t125_connect_initial
= -1; /* Connect_Initial */
82 static int hf_t125_connect_response
= -1; /* Connect_Response */
83 static int hf_t125_connect_additional
= -1; /* Connect_Additional */
84 static int hf_t125_connect_result
= -1; /* Connect_Result */
86 /*--- End of included file: packet-t125-hf.c ---*/
87 #line 50 "../../asn1/t125/packet-t125-template.c"
89 /* Initialize the subtree pointers */
90 static int ett_t125
= -1;
92 static int hf_t125_connectData
= -1;
93 static int hf_t125_heur
= -1;
96 /*--- Included file: packet-t125-ett.c ---*/
97 #line 1 "../../asn1/t125/packet-t125-ett.c"
98 static gint ett_t125_DomainParameters
= -1;
99 static gint ett_t125_Connect_Initial_U
= -1;
100 static gint ett_t125_Connect_Response_U
= -1;
101 static gint ett_t125_Connect_Additional_U
= -1;
102 static gint ett_t125_Connect_Result_U
= -1;
103 static gint ett_t125_ConnectMCSPDU
= -1;
105 /*--- End of included file: packet-t125-ett.c ---*/
106 #line 58 "../../asn1/t125/packet-t125-template.c"
108 static heur_dissector_list_t t125_heur_subdissector_list
;
111 /*--- Included file: packet-t125-fn.c ---*/
112 #line 1 "../../asn1/t125/packet-t125-fn.c"
114 static const value_string t125_DataPriority_vals
[] = {
124 dissect_t125_DataPriority(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
125 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
134 dissect_t125_INTEGER_0_MAX(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
135 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
142 static const ber_sequence_t DomainParameters_sequence
[] = {
143 { &hf_t125_maxChannelIds
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
144 { &hf_t125_maxUserIds
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
145 { &hf_t125_maxTokenIds
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
146 { &hf_t125_numPriorities
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
147 { &hf_t125_minThroughput
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
148 { &hf_t125_maxHeight
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
149 { &hf_t125_maxMCSPDUsize
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
150 { &hf_t125_protocolVersion
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
151 { NULL
, 0, 0, 0, NULL
}
155 dissect_t125_DomainParameters(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
156 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
157 DomainParameters_sequence
, hf_index
, ett_t125_DomainParameters
);
165 dissect_t125_OCTET_STRING(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
166 offset
= dissect_ber_octet_string(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
175 dissect_t125_BOOLEAN(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
176 offset
= dissect_ber_boolean(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, NULL
);
184 dissect_t125_T_userData(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
185 #line 99 "../../asn1/t125/t125.cnf"
186 tvbuff_t
*next_tvb
= NULL
;
187 offset
= dissect_ber_octet_string(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
191 dissector_try_heuristic(t125_heur_subdissector_list
, next_tvb
,
192 actx
->pinfo
, top_tree
, NULL
);
199 static const ber_sequence_t Connect_Initial_U_sequence
[] = {
200 { &hf_t125_callingDomainSelector
, BER_CLASS_UNI
, BER_UNI_TAG_OCTETSTRING
, BER_FLAGS_NOOWNTAG
, dissect_t125_OCTET_STRING
},
201 { &hf_t125_calledDomainSelector
, BER_CLASS_UNI
, BER_UNI_TAG_OCTETSTRING
, BER_FLAGS_NOOWNTAG
, dissect_t125_OCTET_STRING
},
202 { &hf_t125_upwardFlag
, BER_CLASS_UNI
, BER_UNI_TAG_BOOLEAN
, BER_FLAGS_NOOWNTAG
, dissect_t125_BOOLEAN
},
203 { &hf_t125_targetParameters
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_t125_DomainParameters
},
204 { &hf_t125_minimumParameters
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_t125_DomainParameters
},
205 { &hf_t125_maximumParameters
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_t125_DomainParameters
},
206 { &hf_t125_userData
, BER_CLASS_UNI
, BER_UNI_TAG_OCTETSTRING
, BER_FLAGS_NOOWNTAG
, dissect_t125_T_userData
},
207 { NULL
, 0, 0, 0, NULL
}
211 dissect_t125_Connect_Initial_U(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
212 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
213 Connect_Initial_U_sequence
, hf_index
, ett_t125_Connect_Initial_U
);
221 dissect_t125_Connect_Initial(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
222 offset
= dissect_ber_tagged_type(implicit_tag
, actx
, tree
, tvb
, offset
,
223 hf_index
, BER_CLASS_APP
, 101, TRUE
, dissect_t125_Connect_Initial_U
);
229 static const value_string t125_Result_vals
[] = {
230 { 0, "rt-successful" },
231 { 1, "rt-domain-merging" },
232 { 2, "rt-domain-not-hierarchical" },
233 { 3, "rt-no-such-channel" },
234 { 4, "rt-no-such-domain" },
235 { 5, "rt-no-such-user" },
236 { 6, "rt-not-admitted" },
237 { 7, "rt-other-user-id" },
238 { 8, "rt-parameters-unacceptable" },
239 { 9, "rt-token-not-available" },
240 { 10, "rt-token-not-possessed" },
241 { 11, "rt-too-many-channels" },
242 { 12, "rt-too-many-tokens" },
243 { 13, "rt-too-many-users" },
244 { 14, "rt-unspecified-failure" },
245 { 15, "rt-user-rejected" },
251 dissect_t125_Result(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
252 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
261 dissect_t125_T_userData_01(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
262 #line 108 "../../asn1/t125/t125.cnf"
263 tvbuff_t
*next_tvb
= NULL
;
264 offset
= dissect_ber_octet_string(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
268 dissector_try_heuristic(t125_heur_subdissector_list
, next_tvb
,
269 actx
->pinfo
, top_tree
, NULL
);
276 static const ber_sequence_t Connect_Response_U_sequence
[] = {
277 { &hf_t125_result
, BER_CLASS_UNI
, BER_UNI_TAG_ENUMERATED
, BER_FLAGS_NOOWNTAG
, dissect_t125_Result
},
278 { &hf_t125_calledConnectId
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
279 { &hf_t125_domainParameters
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_t125_DomainParameters
},
280 { &hf_t125_userData_01
, BER_CLASS_UNI
, BER_UNI_TAG_OCTETSTRING
, BER_FLAGS_NOOWNTAG
, dissect_t125_T_userData_01
},
281 { NULL
, 0, 0, 0, NULL
}
285 dissect_t125_Connect_Response_U(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
286 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
287 Connect_Response_U_sequence
, hf_index
, ett_t125_Connect_Response_U
);
295 dissect_t125_Connect_Response(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
296 offset
= dissect_ber_tagged_type(implicit_tag
, actx
, tree
, tvb
, offset
,
297 hf_index
, BER_CLASS_APP
, 102, TRUE
, dissect_t125_Connect_Response_U
);
303 static const ber_sequence_t Connect_Additional_U_sequence
[] = {
304 { &hf_t125_calledConnectId
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_t125_INTEGER_0_MAX
},
305 { &hf_t125_dataPriority
, BER_CLASS_UNI
, BER_UNI_TAG_ENUMERATED
, BER_FLAGS_NOOWNTAG
, dissect_t125_DataPriority
},
306 { NULL
, 0, 0, 0, NULL
}
310 dissect_t125_Connect_Additional_U(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
311 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
312 Connect_Additional_U_sequence
, hf_index
, ett_t125_Connect_Additional_U
);
320 dissect_t125_Connect_Additional(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
321 offset
= dissect_ber_tagged_type(implicit_tag
, actx
, tree
, tvb
, offset
,
322 hf_index
, BER_CLASS_APP
, 103, TRUE
, dissect_t125_Connect_Additional_U
);
328 static const ber_sequence_t Connect_Result_U_sequence
[] = {
329 { &hf_t125_result
, BER_CLASS_UNI
, BER_UNI_TAG_ENUMERATED
, BER_FLAGS_NOOWNTAG
, dissect_t125_Result
},
330 { NULL
, 0, 0, 0, NULL
}
334 dissect_t125_Connect_Result_U(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
335 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
336 Connect_Result_U_sequence
, hf_index
, ett_t125_Connect_Result_U
);
344 dissect_t125_Connect_Result(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
345 offset
= dissect_ber_tagged_type(implicit_tag
, actx
, tree
, tvb
, offset
,
346 hf_index
, BER_CLASS_APP
, 104, TRUE
, dissect_t125_Connect_Result_U
);
352 static const value_string t125_ConnectMCSPDU_vals
[] = {
353 { 101, "connect-initial" },
354 { 102, "connect-response" },
355 { 103, "connect-additional" },
356 { 104, "connect-result" },
360 static const ber_choice_t ConnectMCSPDU_choice
[] = {
361 { 101, &hf_t125_connect_initial
, BER_CLASS_APP
, 101, BER_FLAGS_NOOWNTAG
, dissect_t125_Connect_Initial
},
362 { 102, &hf_t125_connect_response
, BER_CLASS_APP
, 102, BER_FLAGS_NOOWNTAG
, dissect_t125_Connect_Response
},
363 { 103, &hf_t125_connect_additional
, BER_CLASS_APP
, 103, BER_FLAGS_NOOWNTAG
, dissect_t125_Connect_Additional
},
364 { 104, &hf_t125_connect_result
, BER_CLASS_APP
, 104, BER_FLAGS_NOOWNTAG
, dissect_t125_Connect_Result
},
365 { 0, NULL
, 0, 0, 0, NULL
}
369 dissect_t125_ConnectMCSPDU(gboolean implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
370 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
371 ConnectMCSPDU_choice
, hf_index
, ett_t125_ConnectMCSPDU
,
379 static int dissect_ConnectMCSPDU_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
382 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, TRUE
, pinfo
);
383 offset
= dissect_t125_ConnectMCSPDU(FALSE
, tvb
, offset
, &asn1_ctx
, tree
, hf_t125_ConnectMCSPDU_PDU
);
388 /*--- End of included file: packet-t125-fn.c ---*/
389 #line 62 "../../asn1/t125/packet-t125-template.c"
392 dissect_t125(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*parent_tree
, void *data _U_
)
394 proto_item
*item
= NULL
;
395 proto_tree
*tree
= NULL
;
400 top_tree
= parent_tree
;
402 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "T.125");
403 col_clear(pinfo
->cinfo
, COL_INFO
);
405 item
= proto_tree_add_item(parent_tree
, proto_t125
, tvb
, 0, tvb_length(tvb
), ENC_NA
);
406 tree
= proto_item_add_subtree(item
, ett_t125
);
408 get_ber_identifier(tvb
, 0, &ber_class
, &pc
, &tag
);
410 if ( (ber_class
==BER_CLASS_APP
) && (tag
>=101) && (tag
<=104) ){
411 dissect_ConnectMCSPDU_PDU(tvb
, pinfo
, tree
, NULL
);
413 t124_set_top_tree(top_tree
);
414 dissect_DomainMCSPDU_PDU(tvb
, pinfo
, tree
);
417 return tvb_length(tvb
);
421 dissect_t125_heur(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*parent_tree
, void *data _U_
)
426 guint32 choice_index
= 100;
430 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, TRUE
, pinfo
);
433 * We must catch all the "ran past the end of the packet" exceptions
434 * here and, if we catch one, just return FALSE. It's too painful
435 * to have a version of dissect_per_sequence() that checks all
436 * references to the tvbuff before making them and returning "no"
437 * if they would fail.
442 get_ber_identifier(tvb
, 0, &ber_class
, &pc
, &tag
);
443 } CATCH_BOUNDS_ERRORS
{
447 /* is this strong enough ? */
448 if (!failed
&& ((ber_class
==BER_CLASS_APP
) && ((tag
>=101) && (tag
<=104)))) {
449 dissect_t125(tvb
, pinfo
, parent_tree
, NULL
);
457 dissect_per_constrained_integer(tvb
, 0, &asn1_ctx
,
458 NULL
, hf_t125_heur
, 0, 42,
459 &choice_index
, FALSE
);
460 } CATCH_BOUNDS_ERRORS
{
464 /* is this strong enough ? */
465 if (!failed
&& (choice_index
<=42)) {
466 dissect_t125(tvb
, pinfo
, parent_tree
, NULL
);
475 /*--- proto_register_t125 -------------------------------------------*/
476 void proto_register_t125(void) {
479 static hf_register_info hf
[] = {
480 { &hf_t125_connectData
,
481 { "connectData", "t125.connectData",
482 FT_NONE
, BASE_NONE
, NULL
, 0,
485 { "heuristic", "t125.heuristic",
486 FT_UINT32
, BASE_DEC
, NULL
, 0,
489 /*--- Included file: packet-t125-hfarr.c ---*/
490 #line 1 "../../asn1/t125/packet-t125-hfarr.c"
491 { &hf_t125_ConnectMCSPDU_PDU
,
492 { "ConnectMCSPDU", "t125.ConnectMCSPDU",
493 FT_UINT32
, BASE_DEC
, VALS(t125_ConnectMCSPDU_vals
), 0,
495 { &hf_t125_maxChannelIds
,
496 { "maxChannelIds", "t125.maxChannelIds",
497 FT_UINT32
, BASE_DEC
, NULL
, 0,
498 "INTEGER_0_MAX", HFILL
}},
499 { &hf_t125_maxUserIds
,
500 { "maxUserIds", "t125.maxUserIds",
501 FT_UINT32
, BASE_DEC
, NULL
, 0,
502 "INTEGER_0_MAX", HFILL
}},
503 { &hf_t125_maxTokenIds
,
504 { "maxTokenIds", "t125.maxTokenIds",
505 FT_UINT32
, BASE_DEC
, NULL
, 0,
506 "INTEGER_0_MAX", HFILL
}},
507 { &hf_t125_numPriorities
,
508 { "numPriorities", "t125.numPriorities",
509 FT_UINT32
, BASE_DEC
, NULL
, 0,
510 "INTEGER_0_MAX", HFILL
}},
511 { &hf_t125_minThroughput
,
512 { "minThroughput", "t125.minThroughput",
513 FT_UINT32
, BASE_DEC
, NULL
, 0,
514 "INTEGER_0_MAX", HFILL
}},
515 { &hf_t125_maxHeight
,
516 { "maxHeight", "t125.maxHeight",
517 FT_UINT32
, BASE_DEC
, NULL
, 0,
518 "INTEGER_0_MAX", HFILL
}},
519 { &hf_t125_maxMCSPDUsize
,
520 { "maxMCSPDUsize", "t125.maxMCSPDUsize",
521 FT_UINT32
, BASE_DEC
, NULL
, 0,
522 "INTEGER_0_MAX", HFILL
}},
523 { &hf_t125_protocolVersion
,
524 { "protocolVersion", "t125.protocolVersion",
525 FT_UINT32
, BASE_DEC
, NULL
, 0,
526 "INTEGER_0_MAX", HFILL
}},
527 { &hf_t125_callingDomainSelector
,
528 { "callingDomainSelector", "t125.callingDomainSelector",
529 FT_BYTES
, BASE_NONE
, NULL
, 0,
530 "OCTET_STRING", HFILL
}},
531 { &hf_t125_calledDomainSelector
,
532 { "calledDomainSelector", "t125.calledDomainSelector",
533 FT_BYTES
, BASE_NONE
, NULL
, 0,
534 "OCTET_STRING", HFILL
}},
535 { &hf_t125_upwardFlag
,
536 { "upwardFlag", "t125.upwardFlag",
537 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
539 { &hf_t125_targetParameters
,
540 { "targetParameters", "t125.targetParameters_element",
541 FT_NONE
, BASE_NONE
, NULL
, 0,
542 "DomainParameters", HFILL
}},
543 { &hf_t125_minimumParameters
,
544 { "minimumParameters", "t125.minimumParameters_element",
545 FT_NONE
, BASE_NONE
, NULL
, 0,
546 "DomainParameters", HFILL
}},
547 { &hf_t125_maximumParameters
,
548 { "maximumParameters", "t125.maximumParameters_element",
549 FT_NONE
, BASE_NONE
, NULL
, 0,
550 "DomainParameters", HFILL
}},
552 { "userData", "t125.userData",
553 FT_BYTES
, BASE_NONE
, NULL
, 0,
556 { "result", "t125.result",
557 FT_UINT32
, BASE_DEC
, VALS(t125_Result_vals
), 0,
559 { &hf_t125_calledConnectId
,
560 { "calledConnectId", "t125.calledConnectId",
561 FT_UINT32
, BASE_DEC
, NULL
, 0,
562 "INTEGER_0_MAX", HFILL
}},
563 { &hf_t125_domainParameters
,
564 { "domainParameters", "t125.domainParameters_element",
565 FT_NONE
, BASE_NONE
, NULL
, 0,
567 { &hf_t125_userData_01
,
568 { "userData", "t125.userData",
569 FT_BYTES
, BASE_NONE
, NULL
, 0,
570 "T_userData_01", HFILL
}},
571 { &hf_t125_dataPriority
,
572 { "dataPriority", "t125.dataPriority",
573 FT_UINT32
, BASE_DEC
, VALS(t125_DataPriority_vals
), 0,
575 { &hf_t125_connect_initial
,
576 { "connect-initial", "t125.connect_initial_element",
577 FT_NONE
, BASE_NONE
, NULL
, 0,
579 { &hf_t125_connect_response
,
580 { "connect-response", "t125.connect_response_element",
581 FT_NONE
, BASE_NONE
, NULL
, 0,
583 { &hf_t125_connect_additional
,
584 { "connect-additional", "t125.connect_additional_element",
585 FT_NONE
, BASE_NONE
, NULL
, 0,
587 { &hf_t125_connect_result
,
588 { "connect-result", "t125.connect_result_element",
589 FT_NONE
, BASE_NONE
, NULL
, 0,
592 /*--- End of included file: packet-t125-hfarr.c ---*/
593 #line 161 "../../asn1/t125/packet-t125-template.c"
596 /* List of subtrees */
597 static gint
*ett
[] = {
600 /*--- Included file: packet-t125-ettarr.c ---*/
601 #line 1 "../../asn1/t125/packet-t125-ettarr.c"
602 &ett_t125_DomainParameters
,
603 &ett_t125_Connect_Initial_U
,
604 &ett_t125_Connect_Response_U
,
605 &ett_t125_Connect_Additional_U
,
606 &ett_t125_Connect_Result_U
,
607 &ett_t125_ConnectMCSPDU
,
609 /*--- End of included file: packet-t125-ettarr.c ---*/
610 #line 167 "../../asn1/t125/packet-t125-template.c"
613 /* Register protocol */
614 proto_t125
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
615 /* Register fields and subtrees */
616 proto_register_field_array(proto_t125
, hf
, array_length(hf
));
617 proto_register_subtree_array(ett
, array_length(ett
));
619 register_heur_dissector_list("t125", &t125_heur_subdissector_list
);
621 new_register_dissector("t125", dissect_t125
, proto_t125
);
625 /*--- proto_reg_handoff_t125 ---------------------------------------*/
626 void proto_reg_handoff_t125(void) {
628 heur_dissector_add("cotp", dissect_t125_heur
, proto_t125
);
629 heur_dissector_add("cotp_is", dissect_t125_heur
, proto_t125
);