5 * (c) 2006, Anders Broman <anders.broman@ericsson.com>
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * SPDX-License-Identifier: GPL-2.0-or-later
13 * Ref ITU-T Rec. Q.1950 (12/2002)
18 #include <epan/packet.h>
19 #include <epan/asn1.h>
21 #include "packet-ber.h"
22 #include "packet-isup.h"
23 #include "packet-h248.h"
25 void proto_reg_handoff_q1950(void);
26 void proto_register_q1950(void);
28 #define PNAME "H.248 Q.1950 Annex A"
29 #define PSNAME "H248Q1950"
30 #define PFNAME "h248q1950"
32 static int proto_q1950
;
35 /* A.3 Bearer characteristics package */
36 static int hf_h248_pkg_BCP
;
37 static int hf_h248_pkg_BCP_BNCChar
;
39 static int ett_h248_pkg_BCP
;
41 static const value_string h248_pkg_BCP_parameters
[] _U_
= {
42 { 0x0001, "BNCChar (BNC Characteristics)" },
46 static const value_string h248_pkg_BCP_props_vals
[] = {
47 {0, "Bearer Characteristics Q.1950 Annex A (bcp)" },
48 {1, "BNC Characteristics (BNCChar)"},
53 static h248_pkg_param_t h248_pkg_BCP_props
[] = {
54 { 0x0001, &hf_h248_pkg_BCP_BNCChar
, h248_param_ber_integer
, &implicit
},
55 { 0, NULL
, NULL
, NULL
}
58 /* Packet definitions */
59 static h248_package_t h248_pkg_BCP
= {
63 h248_pkg_BCP_props_vals
,
67 h248_pkg_BCP_props
, /* Properties */
73 /* A.4 Bearer Network connection cut-through package */
74 static int hf_h248_pkg_BNCCT
;
76 static int hf_h248_pkg_BNCCT_prop
;
78 static int ett_h248_pkg_BNCCT
;
81 static const value_string h248_pkg_BNCCT_parameters
[] _U_
= {
82 { 0x0001, "BNC Cut Through Capability" },
87 static const value_string h248_pkg_BNCCT_props_vals
[] = {
88 {0,"Bearer Network Connection Cut Q.1950 Annex A" },
93 static const value_string h248_pkg_BNCCT_prop_vals
[] = {
100 static const h248_pkg_param_t h248_pkg_BNCCT_props
[] = {
101 { 0x0001, &hf_h248_pkg_BNCCT_prop
, h248_param_ber_integer
, &implicit
},
102 { 0, NULL
, NULL
, NULL
}
105 /* Packet definitions */
106 static h248_package_t h248_pkg_BNCCT
= {
110 h248_pkg_BNCCT_props_vals
,
114 h248_pkg_BNCCT_props
, /* Properties */
117 NULL
/* statistics */
120 /* A.5 Bearer Reuse Idle Package */
121 static int hf_h248_pkg_RI
;
123 static int hf_h248_pkg_RII
;
125 static int ett_h248_pkg_RI
;
127 static const value_string h248_pkg_RI_parameters
[] = {
128 { 0x0000, "Reuse Idle Q.1950 Annex A" },
129 { 0x0001, "Reuse Idle Indication" },
133 static const value_string h248_pkg_RII_vals
[] = {
134 {0,"Not_Reuse_Idle"},
140 static h248_pkg_param_t h248_pkg_RI_props
[] = {
141 { 0x0001, &hf_h248_pkg_RII
, h248_param_ber_integer
, &implicit
},
142 { 0, NULL
, NULL
, NULL
}
145 /* Packet definitions */
146 static h248_package_t h248_pkg_RI
= {
150 h248_pkg_RI_parameters
,
154 h248_pkg_RI_props
, /* Properties */
157 NULL
/* statistics */
161 /* A.5 Bearer Reuse Idle Package */
163 /* A.6 Generic bearer connection package
168 static int hf_h248_pkg_GB
;
169 static int hf_h248_pkg_GB_BNCChange
;
170 static int hf_h248_pkg_GB_BNCChange_type
;
171 static int hf_h248_pkg_GB_EstBNC
;
172 static int hf_h248_pkg_GB_ModBNC
;
173 static int hf_h248_pkg_GB_RelBNC
;
174 static int hf_h248_pkg_GB_RelBNC_Generalcause
;
175 static int hf_h248_pkg_GB_RelBNC_Failurecause
;
176 static int hf_h248_pkg_GB_RelBNC_Reset
;
178 static int ett_h248_pkg_GB
;
179 static int ett_h248_pkg_GB_EstBNC
;
180 static int ett_h248_pkg_GB_ModBNC
;
181 static int ett_h248_pkg_GB_RelBNC
;
182 static int ett_h248_pkg_GB_BNCChange
;
184 static const value_string h248_pkg_GB_events_vals
[] = {
185 { 0x0001, "BNCChange" },
190 static const value_string h248_pkg_GB_BNCChange_type_vals
[] = {
191 {0x01, "Bearer Established"},
192 {0x02,"Bearer Modified"},
193 {0x03,"Bearer Cut through"},
194 {0x04,"Bearer Modification Failure"},
198 static const value_string h248_pkg_GB_BNCChange_params_vals
[] = {
203 static const h248_pkg_param_t h248_pkg_GB_BNCChange_pars
[] = {
204 { 0x0001, &hf_h248_pkg_GB_BNCChange_type
, h248_param_ber_integer
, &implicit
},
205 { 0, NULL
, NULL
, NULL
}
208 static const h248_pkg_evt_t h248_pkg_GB_events
[] = {
209 { 0x0001, &hf_h248_pkg_GB_BNCChange
, &ett_h248_pkg_GB_BNCChange
, h248_pkg_GB_BNCChange_pars
, h248_pkg_GB_BNCChange_params_vals
},
210 { 0, NULL
, NULL
, NULL
, NULL
}
213 static const value_string h248_pkg_GB_signals_vals
[] = {
214 {0x01, "Establish BNC"},
215 {0x02, "Modify BNC"},
219 static const value_string h248_pkg_GB_RelBNC_vals
[] = {
220 {0x01, "Generalcause"},
221 {0x02, "Failurecause"},
226 static const value_string h248_pkg_GB_RelBNC_Generalcause_vals
[] = {
227 {0x01, "Normal Release"},
228 {0x02, "Unavailable Resources"},
229 {0x03, "Failure, Temporary"},
230 {0x04, "Failure, Permanent"},
231 {0x05, "Interworking Error"},
232 {0x06, "Unsupported"},
236 static const h248_pkg_param_t h248_pkg_GB_RelBNC_pars
[] = {
237 { 0x0001, &hf_h248_pkg_GB_RelBNC_Generalcause
, h248_param_ber_integer
, &implicit
},
238 { 0x0002, &hf_h248_pkg_GB_RelBNC_Failurecause
, h248_param_ber_octetstring
, &implicit
},
239 { 0x0003, &hf_h248_pkg_GB_RelBNC_Reset
, h248_param_ber_boolean
, &implicit
},
240 { 0, NULL
, NULL
, NULL
}
244 static const h248_pkg_sig_t h248_pkg_GB_signals
[] = {
245 { 0x0001,&hf_h248_pkg_GB_EstBNC
,&ett_h248_pkg_GB_EstBNC
, NULL
, NULL
},
246 { 0x0002,&hf_h248_pkg_GB_ModBNC
,&ett_h248_pkg_GB_ModBNC
, NULL
, NULL
},
247 { 0x0003,&hf_h248_pkg_GB_RelBNC
,&ett_h248_pkg_GB_RelBNC
, h248_pkg_GB_RelBNC_pars
, h248_pkg_GB_RelBNC_vals
},
248 { 0, NULL
, NULL
, NULL
, NULL
}
251 static const value_string h248_pkg_GB_props_vals
[] = {
252 { 0x0000, "Generic Bearer Connection Q.1950 Annex A (gb)" },
256 static h248_package_t h248_pkg_GB
= {
260 h248_pkg_GB_props_vals
,
261 h248_pkg_GB_signals_vals
,
262 h248_pkg_GB_events_vals
,
264 NULL
, /* Properties */
265 h248_pkg_GB_signals
, /* signals */
266 h248_pkg_GB_events
, /* events */
267 NULL
/* statistics */
271 /* A.7 Bearer control tunnelling package */
272 static dissector_handle_t bctp_dissector
;
274 static int hf_h248_pkg_bt
;
275 static int hf_h248_pkg_bt_tind
;
276 static int hf_h248_pkg_bt_tunopt
;
277 static int hf_h248_pkg_bt_bit
;
279 static int ett_h248_pkg_bt
;
280 static int ett_h248_pkg_bt_tind
;
281 static int ett_h248_pkg_bt_bit
;
283 static void dissect_bt_tunneled_proto(proto_tree
* tree
, tvbuff_t
* tvb
, packet_info
* pinfo
, int hfid
, h248_curr_info_t
* i _U_
, void* d _U_
) {
284 tvbuff_t
* bctp_tvb
= NULL
;
290 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
292 get_ber_identifier(tvb
, 0, &appclass
, &pc
, &tag
);
294 /* XXX: is this enough to guess it? */
295 if (tag
== BER_UNI_TAG_OCTETSTRING
) {
296 dissect_ber_octet_string(false, &asn1_ctx
, tree
, tvb
, 0, hfid
, &bctp_tvb
);
299 call_dissector(bctp_dissector
,bctp_tvb
,pinfo
,tree
);
302 proto_tree_add_item(tree
,hfid
,tvb
,0,-1,ENC_NA
);
309 static const value_string h248_pkg_bt_props_vals
[] = {
310 { 0, "Bearer Control Tunnelling Q.1950 Annex A" },
311 { 1, "Tunnelling Options"},
315 static const value_string h248_pkg_bt_tunopt_vals
[] = {
316 { 1, "1 (In the same message as the command response to the command which generated the bearer control tunnel)"},
317 { 2, "2 (Tunnel message at any time)"},
322 static const h248_pkg_param_t h248_pkg_bt_props
[] = {
323 { 0x0001, &hf_h248_pkg_bt_tunopt
, h248_param_ber_integer
, &implicit
},
324 { 0, NULL
, NULL
, NULL
}
328 static const value_string h248_pkg_bt_evt_vals
[] = {
329 {1,"Tunnel indication"},
333 static const value_string h248_pkg_bt_tind_vals
[] = {
334 {1,"Tunnel Indication"},
338 static const h248_pkg_param_t h248_pkg_bt_bit_params
[] = {
339 { 0x0001, &hf_h248_pkg_bt_bit
, dissect_bt_tunneled_proto
, &implicit
},
340 { 0, NULL
, NULL
, NULL
}
343 static const value_string h248_pkg_bt_sigs_vals
[] = {
344 {1,"Bearer Information Tunnel"},
348 static const h248_pkg_evt_t h248_pkg_bt_events
[] = {
349 { 0x0001, &hf_h248_pkg_bt_tind
, &ett_h248_pkg_bt_tind
, h248_pkg_bt_bit_params
, h248_pkg_bt_tind_vals
},
350 { 0, NULL
, NULL
, NULL
, NULL
}
353 static const h248_pkg_sig_t h248_pkg_bt_signals
[] = {
354 { 0x0001,&hf_h248_pkg_bt_bit
,&ett_h248_pkg_bt_bit
, h248_pkg_bt_bit_params
, h248_pkg_bt_tind_vals
},
355 { 0, NULL
, NULL
, NULL
, NULL
}
358 /* Packet definitions */
359 static h248_package_t h248_pkg_bct
= {
363 h248_pkg_bt_props_vals
,
364 h248_pkg_bt_sigs_vals
,
365 h248_pkg_bt_evt_vals
,
367 h248_pkg_bt_props
, /* Properties */
368 h248_pkg_bt_signals
, /* signals */
369 h248_pkg_bt_events
, /* events */
370 NULL
/* statistics */
373 /* A.8 Basic call progress tones generator with directionality */
374 static int hf_h248_pkg_bcg
;
375 static int hf_h248_pkg_bcg_sig_bdt_par_btd
;
376 static int hf_h248_pkg_bcg_sig_bdt
;
377 static int hf_h248_pkg_bcg_sig_brt
;
378 static int hf_h248_pkg_bcg_sig_bbt
;
379 static int hf_h248_pkg_bcg_sig_bct
;
380 static int hf_h248_pkg_bcg_sig_bsit
;
381 static int hf_h248_pkg_bcg_sig_bwt
;
382 static int hf_h248_pkg_bcg_sig_bpt
;
383 static int hf_h248_pkg_bcg_sig_bcw
;
384 static int hf_h248_pkg_bcg_sig_bcr
;
385 static int hf_h248_pkg_bcg_sig_bpy
;
387 static int ett_h248_pkg_bcg
;
388 static int ett_h248_pkg_bcg_sig_bdt
;
390 static const value_string h248_pkg_bcg_sig_bdt_par_btd_vals
[] = {
391 { 0x0001, "ext (External)" },
392 { 0x0002, "int (Internal)" },
393 { 0x0003, "both (Both)" },
397 static h248_pkg_param_t h248_pkg_h248_pkg_bcg_sig_bdt_params
[] = {
398 { 0x0001, &hf_h248_pkg_bcg_sig_bdt_par_btd
, h248_param_ber_integer
, &implicit
},
399 { 0, NULL
, NULL
, NULL
}
402 static const value_string h248_pkg_bcg_signals_vals
[] = {
403 { 0x0040, "Dial Tone (bdt)" },
404 { 0x0041, "Ringing Tone (brt)" },
405 { 0x0042, "Busy Tone (bbt)" },
406 { 0x0043, "Congestion Tone (bct)" },
407 { 0x0044, "Special information tone (bsit)" },
408 { 0x0045, "Warning Tone (bwt)" },
409 { 0x0046, "Payphone Recognition Tone (bpt)" },
410 { 0x0047, "Call Waiting Tone (bcw)" },
411 { 0x0048, "Caller Waiting Tone (bcr)" },
412 { 0x0049, "Pay Tone (bpy)" },
416 static h248_pkg_sig_t h248_pkg_bcg_signals
[] = {
417 /* All the tones have the same parameters */
418 { 0x0040, &hf_h248_pkg_bcg_sig_bdt
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
419 { 0x0041, &hf_h248_pkg_bcg_sig_brt
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
420 { 0x0042, &hf_h248_pkg_bcg_sig_bbt
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
421 { 0x0043, &hf_h248_pkg_bcg_sig_bct
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
422 { 0x0044, &hf_h248_pkg_bcg_sig_bsit
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
423 { 0x0045, &hf_h248_pkg_bcg_sig_bwt
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
424 { 0x0046, &hf_h248_pkg_bcg_sig_bpt
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
425 { 0x0047, &hf_h248_pkg_bcg_sig_bcw
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
426 { 0x0048, &hf_h248_pkg_bcg_sig_bcr
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
427 { 0x0049, &hf_h248_pkg_bcg_sig_bpy
, &ett_h248_pkg_bcg_sig_bdt
, h248_pkg_h248_pkg_bcg_sig_bdt_params
, NULL
},
428 { 0, NULL
, NULL
, NULL
,NULL
}
431 static const value_string h248_pkg_bcg_props_vals
[] = {
432 { 0, "Basic Call Progress Tones Q.1950 Annex A" },
436 /* Packet definitions */
437 static h248_package_t h248_pkg_bcg
= {
441 h248_pkg_bcg_props_vals
,
442 h248_pkg_bcg_signals_vals
,
445 NULL
, /* Properties */
446 h248_pkg_bcg_signals
, /* signals */
448 NULL
/* statistics */
452 void proto_reg_handoff_q1950(void) {
453 bctp_dissector
= find_dissector_add_dependency("bctp", proto_q1950
);
457 /* Register dissector */
458 void proto_register_q1950(void) {
459 static hf_register_info hf
[] = {
460 /* A.3 Bearer characteristics package */
462 { "BCP (Bearer characteristics package)", "h248.BCP",
463 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}
465 { &hf_h248_pkg_BCP_BNCChar
,
466 { "BNCChar (BNC Characteristics)", "h248.bcp.bncchar",
467 FT_UINT32
, BASE_HEX
|BASE_EXT_STRING
, &bearer_network_connection_characteristics_vals_ext
, 0, "BNC Characteristics", HFILL
}
470 /* A.4 Bearer Network connection cut-through package */
471 { &hf_h248_pkg_BNCCT
,
472 { "BNCCT (Bearer network connection cut-through package)", "h248.BNCCT",
473 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}
475 { &hf_h248_pkg_BNCCT_prop
,
476 { "Bearer network connection cut-through capability", "h248.bcp.bncct",
477 FT_UINT32
, BASE_HEX
, VALS(h248_pkg_BNCCT_prop_vals
), 0, "This property allows the MGC to ask the MG when the cut through of a bearer will occur, early or late.", HFILL
}
481 { "GB (Generic bearer connection)", "h248.GB",
482 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}
484 { &hf_h248_pkg_GB_BNCChange
,
485 { "BNCChange", "h248.GB.BNCChang",
486 FT_BYTES
, BASE_NONE
, NULL
, 0, "This event occurs whenever a change to a Bearer Network connection occurs", HFILL
}
488 { &hf_h248_pkg_GB_BNCChange_type
,
489 { "Type", "h248.GB.BNCChang.Type",
490 FT_UINT32
, BASE_HEX
, VALS(h248_pkg_GB_BNCChange_type_vals
), 0, NULL
, HFILL
}
492 { &hf_h248_pkg_GB_EstBNC
,
493 { "Type", "h248.GB.BNCChang.EstBNC",
494 FT_BYTES
, BASE_NONE
, NULL
, 0, "This signal triggers the bearer control function to send bearer establishment signalling", HFILL
}
496 { &hf_h248_pkg_GB_ModBNC
,
497 { "Type", "h248.GB.BNCChang.ModBNC",
498 FT_BYTES
, BASE_NONE
, NULL
, 0, "This signal triggers the bearer control function to send bearer modification", HFILL
}
500 { &hf_h248_pkg_GB_RelBNC
,
501 { "RelBNC", "h248.GB.BNCChang.RelBNC",
502 FT_BYTES
, BASE_NONE
, NULL
, 0, "This signal triggers the bearer control function to send bearer release", HFILL
}
504 { &hf_h248_pkg_GB_RelBNC_Generalcause
,
505 { "Generalcause", "h248.GB.BNCChang.RelBNC.Generalcause",
506 FT_UINT32
, BASE_HEX
, VALS(h248_pkg_GB_RelBNC_Generalcause_vals
), 0, "This indicates the general reason for the Release", HFILL
}
508 { &hf_h248_pkg_GB_RelBNC_Failurecause
,
509 { "Failurecause", "h248.GB.BNCChang.RelBNC.Failurecause",
510 FT_BYTES
, BASE_NONE
, NULL
, 0, "The Release Cause is the value generated by the Released equipment", HFILL
}
512 { &hf_h248_pkg_GB_RelBNC_Reset
,
513 { "RelBNC", "h248.GB.BNCChang.RelBNC.Reset",
514 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, "This signal triggers the bearer control function to send bearer release", HFILL
}
517 /* A.5 Bearer Network connection cut-through package */
519 { "RI (Reuse idle package)", "h248.RI",
520 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}
523 { "Reuse Idle Indication", "h248.bcp.rii",
524 FT_UINT32
, BASE_HEX
, VALS(h248_pkg_RII_vals
), 0, "This property indicates that the provided bearer network connection relates to an Idle Bearer.", HFILL
}
527 /* A.7 Bearer control tunnelling package */
529 { "BT (Bearer control Tunneling)", "h248.BT",
530 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}
532 { &hf_h248_pkg_bt_tunopt
,
533 { "Tunnelling Options", "h248.BT.TunOpt",
534 FT_UINT32
, BASE_DEC
, VALS(h248_pkg_bt_tunopt_vals
), 0, NULL
, HFILL
}
536 { &hf_h248_pkg_bt_tind
,
537 { "tind (Tunnel INDication)", "h248.BT.TIND",
538 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}
540 { &hf_h248_pkg_bt_bit
,
541 { "Bearer Information Transport", "h248.BT.BIT",
542 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}
546 /* A.8 Basic call progress tones generator with directionality */
548 { "bcg (Basic call progress tones generator with directionality)", "h248.bcg",
549 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}
551 { &hf_h248_pkg_bcg_sig_bdt_par_btd
,
552 { "btd (Tone Direction)", "h248.bcp.btd",
553 FT_UINT32
, BASE_HEX
, VALS(h248_pkg_bcg_sig_bdt_par_btd_vals
), 0, NULL
, HFILL
}
555 { &hf_h248_pkg_bcg_sig_bdt
,
556 { "bdt (Dial Tone)", "h248.bcg.bdt",
557 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
559 { &hf_h248_pkg_bcg_sig_brt
,
560 { "brt (Ringing tone)", "h248.bcg.brt",
561 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
563 { &hf_h248_pkg_bcg_sig_bbt
,
564 { "bbt (Busy tone)", "h248.bcg.bbt",
565 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
567 { &hf_h248_pkg_bcg_sig_bct
,
568 { "bct (Congestion tone)", "h248.bcg.bct",
569 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
571 { &hf_h248_pkg_bcg_sig_bsit
,
572 { "bsit (Special information tone)", "h248.bcg.bsit",
573 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
575 { &hf_h248_pkg_bcg_sig_bwt
,
576 { "bwt (Warning tone)", "h248.bcg.bwt",
577 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
579 { &hf_h248_pkg_bcg_sig_bpt
,
580 { "bpt (Payphone recognition tone)", "h248.bcg.bpt",
581 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
583 { &hf_h248_pkg_bcg_sig_bcw
,
584 { "bcw (Call waiting tone)", "h248.bcg.bcw",
585 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
587 { &hf_h248_pkg_bcg_sig_bcr
,
588 { "bcr (Call ringing tone)", "h248.bcg.bcr",
589 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
591 { &hf_h248_pkg_bcg_sig_bpy
,
592 { "bpy (Pay tone)", "h248.bcg.bpy",
593 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
597 static int *ett
[] = {
600 &ett_h248_pkg_bt_tind
,
601 &ett_h248_pkg_bt_bit
,
603 &ett_h248_pkg_bcg_sig_bdt
,
607 &ett_h248_pkg_GB_EstBNC
,
608 &ett_h248_pkg_GB_ModBNC
,
609 &ett_h248_pkg_GB_RelBNC
,
610 &ett_h248_pkg_GB_BNCChange
613 proto_q1950
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
615 proto_register_field_array(proto_q1950
, hf
, array_length(hf
));
617 proto_register_subtree_array(ett
, array_length(ett
));
619 /* Register the packages */
620 h248_register_package(&h248_pkg_BCP
,REPLACE_PKG
);
621 h248_register_package(&h248_pkg_BNCCT
,REPLACE_PKG
);
622 h248_register_package(&h248_pkg_RI
,REPLACE_PKG
);
623 h248_register_package(&h248_pkg_GB
,REPLACE_PKG
);
624 h248_register_package(&h248_pkg_bcg
,REPLACE_PKG
);
625 h248_register_package(&h248_pkg_bct
,REPLACE_PKG
);
630 * Editor modelines - https://www.wireshark.org/tools/modelines.html
635 * indent-tabs-mode: nil
638 * vi: set shiftwidth=4 tabstop=8 expandtab:
639 * :indentSize=4:tabSize=8:noTabs=true: