MSWSP: add two more Property Sets
[wireshark-wip.git] / epan / dissectors / packet-t125.c
blobbea86e8201e5ba47869a33dcceddc30339a64268
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-t125.c */
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"
9 /* packet-t125.c
10 * Routines for t125 packet dissection
11 * Copyright 2007, Ronnie Sahlberg
13 * $Id$
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.
35 #include "config.h"
37 #include <glib.h>
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"
49 #define PFNAME "t125"
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[] = {
115 { 0, "top" },
116 { 1, "high" },
117 { 2, "medium" },
118 { 3, "low" },
119 { 0, NULL }
123 static int
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,
126 NULL);
128 return offset;
133 static int
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,
136 NULL);
138 return offset;
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 }
154 static int
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);
159 return offset;
164 static int
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,
167 NULL);
169 return offset;
174 static int
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);
178 return offset;
183 static int
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,
188 &next_tvb);
190 if(next_tvb)
191 dissector_try_heuristic(t125_heur_subdissector_list, next_tvb,
192 actx->pinfo, top_tree, NULL);
195 return offset;
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 }
210 static int
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);
215 return offset;
220 static int
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);
225 return offset;
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" },
246 { 0, NULL }
250 static int
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,
253 NULL);
255 return offset;
260 static int
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,
265 &next_tvb);
267 if(next_tvb)
268 dissector_try_heuristic(t125_heur_subdissector_list, next_tvb,
269 actx->pinfo, top_tree, NULL);
272 return offset;
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 }
284 static int
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);
289 return offset;
294 static int
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);
299 return offset;
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 }
309 static int
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);
314 return offset;
319 static int
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);
324 return offset;
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 }
333 static int
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);
338 return offset;
343 static int
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);
348 return offset;
352 static const value_string t125_ConnectMCSPDU_vals[] = {
353 { 101, "connect-initial" },
354 { 102, "connect-response" },
355 { 103, "connect-additional" },
356 { 104, "connect-result" },
357 { 0, NULL }
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 }
368 static int
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,
372 NULL);
374 return offset;
377 /*--- PDUs ---*/
379 static int dissect_ConnectMCSPDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
380 int offset = 0;
381 asn1_ctx_t asn1_ctx;
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);
384 return offset;
388 /*--- End of included file: packet-t125-fn.c ---*/
389 #line 62 "../../asn1/t125/packet-t125-template.c"
391 static int
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;
396 gint8 ber_class;
397 gboolean pc;
398 gint32 tag;
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);
412 } else {
413 t124_set_top_tree(top_tree);
414 dissect_DomainMCSPDU_PDU(tvb, pinfo, tree);
417 return tvb_length(tvb);
420 static gboolean
421 dissect_t125_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *data _U_)
423 gint8 ber_class;
424 gboolean pc;
425 gint32 tag;
426 guint32 choice_index = 100;
427 asn1_ctx_t asn1_ctx;
428 gboolean failed;
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.
439 failed = FALSE;
440 TRY {
441 /* could be BER */
442 get_ber_identifier(tvb, 0, &ber_class, &pc, &tag);
443 } CATCH_BOUNDS_ERRORS {
444 failed = TRUE;
445 } ENDTRY;
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);
451 return TRUE;
454 failed = FALSE;
455 TRY {
456 /* or PER */
457 dissect_per_constrained_integer(tvb, 0, &asn1_ctx,
458 NULL, hf_t125_heur, 0, 42,
459 &choice_index, FALSE);
460 } CATCH_BOUNDS_ERRORS {
461 failed = TRUE;
462 } ENDTRY;
464 /* is this strong enough ? */
465 if (!failed && (choice_index <=42)) {
466 dissect_t125(tvb, pinfo, parent_tree, NULL);
468 return TRUE;
471 return FALSE;
475 /*--- proto_register_t125 -------------------------------------------*/
476 void proto_register_t125(void) {
478 /* List of fields */
479 static hf_register_info hf[] = {
480 { &hf_t125_connectData,
481 { "connectData", "t125.connectData",
482 FT_NONE, BASE_NONE, NULL, 0,
483 NULL, HFILL }},
484 { &hf_t125_heur,
485 { "heuristic", "t125.heuristic",
486 FT_UINT32, BASE_DEC, NULL, 0,
487 NULL, HFILL }},
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,
494 NULL, HFILL }},
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,
538 "BOOLEAN", HFILL }},
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 }},
551 { &hf_t125_userData,
552 { "userData", "t125.userData",
553 FT_BYTES, BASE_NONE, NULL, 0,
554 NULL, HFILL }},
555 { &hf_t125_result,
556 { "result", "t125.result",
557 FT_UINT32, BASE_DEC, VALS(t125_Result_vals), 0,
558 NULL, HFILL }},
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,
566 NULL, HFILL }},
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,
574 NULL, HFILL }},
575 { &hf_t125_connect_initial,
576 { "connect-initial", "t125.connect_initial_element",
577 FT_NONE, BASE_NONE, NULL, 0,
578 NULL, HFILL }},
579 { &hf_t125_connect_response,
580 { "connect-response", "t125.connect_response_element",
581 FT_NONE, BASE_NONE, NULL, 0,
582 NULL, HFILL }},
583 { &hf_t125_connect_additional,
584 { "connect-additional", "t125.connect_additional_element",
585 FT_NONE, BASE_NONE, NULL, 0,
586 NULL, HFILL }},
587 { &hf_t125_connect_result,
588 { "connect-result", "t125.connect_result_element",
589 FT_NONE, BASE_NONE, NULL, 0,
590 NULL, HFILL }},
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[] = {
598 &ett_t125,
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);