Add a few packages and fix dissecton of a_codecs and handle the case when

hf_param = -1.

svn path=/trunk/; revision=19445
This commit is contained in:
Anders Broman 2006-10-06 19:48:00 +00:00
parent 004cb06d90
commit 1785428d4c
5 changed files with 1610 additions and 1497 deletions

View File

@ -749,8 +749,9 @@ static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offse
if (! pkg ) pkg = &no_package;
hf_param = *(pkg->hfid_params);
proto_tree_add_uint(package_tree, hf_param, tvb, offset-2, 2, name_minor);
if (hf_param > 0)
/* TODO: Will this ever happen now??*/
proto_tree_add_uint(package_tree, hf_param, tvb, offset-2, 2, name_minor);
} else {
pkg = &no_package;

View File

@ -1161,8 +1161,9 @@ static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offse
if (! pkg ) pkg = &no_package;
hf_param = *(pkg->hfid_params);
proto_tree_add_uint(package_tree, hf_param, tvb, offset-2, 2, name_minor);
if (hf_param > 0)
/* TODO: Will this ever happen now??*/
proto_tree_add_uint(package_tree, hf_param, tvb, offset-2, 2, name_minor);
} else {
pkg = &no_package;
@ -5868,7 +5869,7 @@ dissect_h248_MegacoMessage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
/*--- End of included file: packet-h248-fn.c ---*/
#line 1757 "packet-h248-template.c"
#line 1758 "packet-h248-template.c"
static void
dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@ -7059,7 +7060,7 @@ void proto_register_h248(void) {
"", HFILL }},
/*--- End of included file: packet-h248-hfarr.c ---*/
#line 1891 "packet-h248-template.c"
#line 1892 "packet-h248-template.c"
{ &hf_h248_ctx, { "Context", "h248.ctx", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_ctx_term, { "Termination", "h248.ctx.term", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
@ -7219,7 +7220,7 @@ void proto_register_h248(void) {
&ett_h248_Value,
/*--- End of included file: packet-h248-ettarr.c ---*/
#line 1916 "packet-h248-template.c"
#line 1917 "packet-h248-template.c"
};
module_t *h248_module;

File diff suppressed because it is too large Load Diff

View File

@ -54,6 +54,7 @@ static h248_pkg_param_t h248_pkg_generic_cause_evt_params[] = {
static h248_pkg_evt_t h248_pkg_generic_cause_evts[] = {
{ 0x0001, &hf_h248_pkg_generic_cause_evt, &ett_h248_pkg_generic_cause_evt, h248_pkg_generic_cause_evt_params},
{ 0, NULL, NULL, NULL}
};
@ -136,6 +137,91 @@ static int hf_h248_pkg_tonedet_evt_std = -1;
static int hf_h248_pkg_tonedet_evt_etd = -1;
static int hf_h248_pkg_tonedet_evt_ltd = -1;
*/
/* H.248.1 E.9 Analog Line Supervision Package */
static int hf_h248_pkg_al = -1;
static int hf_h248_pkg_al_param = -1;
static int hf_h248_pkg_al_evt_onhook = -1;
static int hf_h248_pkg_al_evt_offhook = -1;
static int hf_h248_pkg_al_evt_flashhook = -1;
static int hf_h248_pkg_al_evt_onhook_par_strict = -1;
static int hf_h248_pkg_al_evt_onhook_par_init = -1;
static int hf_h248_pkg_al_evt_flashhook_par_mindur = -1;
static gint ett_h248_pkg_al = -1;
static gint ett_h248_pkg_al_evt_onhook = -1;
static gint ett_h248_pkg_al_evt_offhook = -1;
static gint ett_h248_pkg_al_evt_flashhook = -1;
/* Events defenitions */
static const value_string h248_pkg_al_evt_onhook_strict_vals[] = {
{ 0, "exact"},
{ 1, "state"},
{ 2, "failWrong"},
{ 0, NULL }
};
static const true_false_string h248_pkg_al_evt_onhook_par_init_vals = {
"already off-hook",
"actual state transition to off-hook"
};
static h248_pkg_param_t h248_pkg_al_evt_onhook_params[] = {
{ 0x0001, &hf_h248_pkg_al_evt_onhook_par_strict, h248_param_ber_integer, NULL },
{ 0x0002, &hf_h248_pkg_al_evt_onhook_par_init, h248_param_ber_boolean, NULL },
{ 0, NULL, NULL, NULL}
};
static h248_pkg_param_t h248_pkg_al_evt_flashhook_params[] = {
{ 0x0001, &hf_h248_pkg_al_evt_flashhook_par_mindur, h248_param_ber_integer, NULL },
{ 0, NULL, NULL, NULL}
};
static h248_pkg_evt_t h248_pkg_al_evts[] = {
{ 0x0004, &hf_h248_pkg_al_evt_onhook, &ett_h248_pkg_al_evt_onhook, h248_pkg_al_evt_onhook_params },
{ 0x0005, &hf_h248_pkg_al_evt_offhook, &ett_h248_pkg_al_evt_offhook, h248_pkg_al_evt_onhook_params },
{ 0x0006, &hf_h248_pkg_al_evt_flashhook, &ett_h248_pkg_al_evt_flashhook, h248_pkg_al_evt_flashhook_params },
{ 0, NULL, NULL, NULL}
};
/* Packet defenitions */
static h248_package_t h248_pkg_al = {
0x0009,
&hf_h248_pkg_al,
&hf_h248_pkg_al_param,
&ett_h248_pkg_al,
NULL, /* Properties */
NULL, /* signals */
h248_pkg_al_evts, /* events */
NULL /* statistics */
};
/* H.248.1 E.12 RTP package */
static int hf_h248_pkg_rtp = -1;
static int hf_h248_pkg_rtp_param = -1;
static int hf_h248_pkg_rtp_stat_ps = -1;
static int ett_h248_pkg_rtp = -1;
static h248_pkg_stat_t h248_pkg_rtp_stat[] = {
{ 0x0004, &hf_h248_pkg_rtp_stat_ps, h248_param_ber_integer, NULL },
{ 0, NULL, NULL, NULL}
};
/* Packet defenitions */
static h248_package_t h248_pkg_rtp = {
0x000c,
&hf_h248_pkg_rtp,
&hf_h248_pkg_rtp_param,
&ett_h248_pkg_rtp,
NULL, /* Properties */
NULL, /* signals */
NULL, /* events */
h248_pkg_rtp_stat /* statistics */
};
/* H.248.1 E.13 TDM Circuit Package */
static int hf_h248_pkg_tdmc = -1;
@ -154,6 +240,7 @@ static const true_false_string h248_tdmc_ec_vals = {
static h248_pkg_param_t h248_pkg_tdmc_props[] = {
{ 0x0008, &hf_h248_pkg_tdmc_ec, h248_param_ber_boolean, NULL },
{ 0x000a, &hf_h248_pkg_tdmc_gain, h248_param_ber_integer, NULL },
{ 0, NULL, NULL, NULL}
};
static h248_package_t h248_pkg_tdmc = {
@ -161,22 +248,34 @@ static h248_package_t h248_pkg_tdmc = {
&hf_h248_pkg_tdmc,
&hf_h248_pkg_tdmc_param,
&ett_h248_pkg_tdmc,
h248_pkg_tdmc_props,
NULL,
NULL,
NULL
h248_pkg_tdmc_props, /* Properties */
NULL, /* signals */
NULL, /* events */
NULL /* statistics */
};
void proto_register_h248_annex_e(void) {
static hf_register_info hf[] = {
static hf_register_info hf[] = {
/* H.248.1 E.1 Generic Package */
{ &hf_h248_pkg_generic, { "Generic Package", "h248.pkg.generic", FT_BYTES, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_generic_cause_evt, { "Cause Event", "h248.pkg.generic.cause", FT_BYTES, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_generic_cause_gencause, { "Generic Cause", "h248.pkg.generic.cause.gencause", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_generic_cause_failurecause, { "Generic Cause", "h248.pkg.generic.cause.failurecause", FT_STRING, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_tdmc_ec, { "Echo Cancellation", "h248.pkg.tdmc.ec", FT_BOOLEAN, 8, TFS(&h248_tdmc_ec_vals), 0, "Echo Cancellation", HFILL }},
/* H.248.1 E.9 Analog Line Supervision Package */
{ &hf_h248_pkg_al, { "Analog Line Supervision Package", "h248.pkg.al", FT_BYTES, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_al_evt_onhook, { "onhook", "h248.pkg.al.onhook", FT_BYTES, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_al_evt_offhook, { "offhook", "h248.pkg.al.offhook", FT_BYTES, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_al_evt_flashhook, { "flashhook", "h248.pkg.al.flashhook", FT_BYTES, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_al_evt_onhook_par_strict, { "strict", "h248.pkg.al.ev.onhook.strict", FT_UINT8, BASE_DEC, VALS(h248_pkg_al_evt_onhook_strict_vals), 0, "", HFILL }},
{ &hf_h248_pkg_al_evt_flashhook_par_mindur, { "Minimum duration in ms", "h248.pkg.al.ev.flashhook.mindur", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
/* H.248.1 E.12 RTP package */
{ &hf_h248_pkg_rtp, { "RTP package", "h248.pkg.rtp", FT_BYTES, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_rtp_stat_ps, { "Packets Sent", "h248.pkg.rtp.stat.ps", FT_UINT64, BASE_DEC, NULL, 0, "Packets Sent", HFILL }},
/* H.248.1 E.13 TDM Circuit Package */
{ &hf_h248_pkg_tdmc, { "TDM Circuit Package", "h248.pkg.tdmc", FT_BYTES, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_h248_pkg_tdmc_ec, { "Echo Cancellation", "h248.pkg.tdmc.ec", FT_BOOLEAN, 8, TFS(&h248_tdmc_ec_vals), 0, "Echo Cancellation", HFILL }},
{ &hf_h248_pkg_tdmc_gain, { "Gain", "h248.pkg.tdmc.gain", FT_UINT32, BASE_HEX, NULL, 0, "Gain", HFILL }},
};
@ -184,7 +283,10 @@ void proto_register_h248_annex_e(void) {
&ett_h248_pkg_generic_cause_evt,
&ett_h248_pkg_generic,
&ett_h248_pkg_al,
&ett_h248_pkg_al_evt_onhook,
&ett_h248_pkg_rtp,
&ett_tdmc
};
@ -195,7 +297,9 @@ void proto_register_h248_annex_e(void) {
proto_register_subtree_array(ett, array_length(ett));
h248_register_package(&h248_pkg_generic);
h248_register_package(&h248_pkg_tdmc);
h248_register_package(&h248_pkg_al);
h248_register_package(&h248_pkg_rtp);
h248_register_package(&h248_pkg_tdmc);
}
void proto_reg_handoff_h248_annex_e(void) {

View File

@ -2859,14 +2859,15 @@ static const value_string BAT_ASE_Report_Reason_vals[] = {
{ 0x02, "BICC data with unrecognized information element, discarded"},
{ 0, NULL }
};
/* This routine should bve called with offset at Organization_Identifier not the lengh indicator
* because of use from other disectors.
*/
extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int len) {
guint8 tempdata;
proto_tree *scs_item, *acs_item;
proto_tree *scs_tree, *acs_tree;
offset = offset + 1;
tempdata = tvb_get_guint8(tvb, offset);
proto_tree_add_uint(tree, hf_Organization_Identifier , tvb, offset, 1, tempdata );
switch ( tempdata ){
@ -2980,7 +2981,7 @@ guint8 compatibility_info;
proto_tree_add_boolean(bat_ase_element_tree, hf_Send_notification_ind_for_pass_on_not_possible , parameter_tvb, offset, 1, compatibility_info );
proto_tree_add_boolean(bat_ase_element_tree, hf_isup_extension_ind , parameter_tvb, offset, 1, compatibility_info );
offset = dissect_codec_mode(bat_ase_element_tree, parameter_tvb, offset,length_indicator-1);
offset = dissect_codec_mode(bat_ase_element_tree, parameter_tvb, offset+1,length_indicator-1);
return offset;
}