diff options
author | lego <lego@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-02-21 00:00:49 +0000 |
---|---|---|
committer | lego <lego@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-02-21 00:00:49 +0000 |
commit | e2cf7c32823bb5701be2d41e88274e58579442f3 (patch) | |
tree | ea96ca96bbdfc767e689f54f7339d026abc623a5 /epan/dissectors | |
parent | 2b7491f55ddb0a425a773f2ab5ee8ce18c7a8268 (diff) |
+ add some more packages from 3GPP TS 29.232
- fix http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1385
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@20885 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-h248.c | 10 | ||||
-rw-r--r-- | epan/dissectors/packet-h248.h | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-h248_3gpp.c | 307 |
3 files changed, 304 insertions, 15 deletions
diff --git a/epan/dissectors/packet-h248.c b/epan/dissectors/packet-h248.c index b2d7708573..dbca0ff97b 100644 --- a/epan/dissectors/packet-h248.c +++ b/epan/dissectors/packet-h248.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-h248.c */ +/* ./packet-h248.c */ /* ../../tools/asn2wrs.py -b -e -p h248 -c h248.cnf -s packet-h248-template h248v3.asn */ /* Input file: packet-h248-template.c */ @@ -1207,8 +1207,8 @@ static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offse hf_param = *(pkg->hfid_params); if (hf_param > 0) - /* TODO: Will this ever happen now??*/ - proto_tree_add_uint(package_tree, hf_param, tvb, offset-2, 2, name_minor); + /* TODO: Will this ever happen now ??*/ + proto_tree_add_uint(package_tree, hf_h248_pkg_name, tvb, offset-2, 2, name_minor); } else { pkg = &no_package; @@ -7884,8 +7884,8 @@ void proto_register_h248(void) { h248_module = prefs_register_protocol(proto_h248, h248_init); prefs_register_bool_preference(h248_module, "ctx_info", - "Keep Persistent Context Information", - "Whether persistent context information is to be kept", + "Track Context", + "Mantain relationships between transactions and contexts and display an extra tree showing context data", &keep_persistent_data); prefs_register_uint_preference(h248_module, "udp_port", "UDP port", diff --git a/epan/dissectors/packet-h248.h b/epan/dissectors/packet-h248.h index 24dd0e82c4..9f63cdb745 100644 --- a/epan/dissectors/packet-h248.h +++ b/epan/dissectors/packet-h248.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-h248.h */ +/* ./packet-h248.h */ /* ../../tools/asn2wrs.py -b -e -p h248 -c h248.cnf -s packet-h248-template h248v3.asn */ /* Input file: packet-h248-template.h */ diff --git a/epan/dissectors/packet-h248_3gpp.c b/epan/dissectors/packet-h248_3gpp.c index 8857bf68cf..1524de7a4a 100644 --- a/epan/dissectors/packet-h248_3gpp.c +++ b/epan/dissectors/packet-h248_3gpp.c @@ -31,7 +31,10 @@ #define PFNAME "h2483gpp" -/* 3GPP TS 29.232 v4.1.0 */ +/* + * 3GUP Package + * 3GPP TS 29.232 -- 15.1.1 + */ static int hf_h248_package_3GUP = -1; static int hf_h248_package_3GUP_parameters = -1; @@ -41,7 +44,7 @@ static int hf_h248_package_3GUP_delerrsdu = -1; static int hf_h248_package_3GUP_interface = -1; static int hf_h248_package_3GUP_initdir = -1; -static gint ett_h248_package_3GUP; +static gint ett_h248_package_3GUP = -1; static gboolean implicit = FALSE; @@ -105,6 +108,7 @@ h248_pkg_param_t h248_package_3GUP_properties[] = { { 0x0003, &hf_h248_package_3GUP_delerrsdu, h248_param_ber_integer, &implicit }, { 0x0004, &hf_h248_package_3GUP_interface, h248_param_ber_integer, &implicit }, { 0x0005, &hf_h248_package_3GUP_initdir, h248_param_ber_integer, &implicit }, + { 0x0000, NULL, NULL, NULL } }; static h248_package_t h248_package_3GUP = { @@ -118,18 +122,202 @@ static h248_package_t h248_package_3GUP = { NULL }; + +/* + * Circuit Switched Data package + * 3GPP TS 29.232 -- 15.2.1 + */ + +static int hf_h248_package_3GCSD = -1; +static int hf_h248_package_3GCSD_parameters = -1; + +static int hf_h248_package_3GCSD_plmnbc = -1; +static int hf_h248_package_3GCSD_gsmchancod = -1; +static int hf_h248_pkg_3GCSD_evt_protres = -1; +static int hf_h248_pkg_3GCSD_evt_protres_result = -1; +static int hf_h248_pkg_3GCSD_evt_protres_cause = -1; +static int hf_h248_pkg_3GCSD_evt_ratechg = -1; +static int hf_h248_pkg_3GCSD_evt_ratechg_rate = -1; +static int hf_h248_pkg_3GCSD_sig_actprot = -1; +static int hf_h248_pkg_3GCSD_actprot_sig_localpeer = -1; + +static gint ett_h248_package_3GCSD = -1; +static gint ett_h248_3GCSD_evt_protres = -1; +static gint ett_h248_3GCSD_evt_ratechg = -1; +static gint ett_pkg_3GCSD_sig_actprot = -1; + +static const value_string h248_3GCSD_evt_protres_result_vals[] = { + {1,"Success"}, + {0,"Failure"}, + {0,NULL} +}; + +static const value_string h248_3GCSD_evt_protres_cause_vals[] = { + {1,"Unsp"}, + {2,"V8V34"}, + {0,NULL} +}; + +static const value_string h248_3GCSD_actprot_sig_localpeer_vals[] = { + {0,"Orig"}, + {1,"Term"}, + {0,NULL} +}; + +static h248_pkg_param_t h248_package_3GCSD_props[] = { + { 0x0001, &hf_h248_package_3GCSD_plmnbc, h248_param_ber_octetstring, &implicit }, + { 0x0002, &hf_h248_package_3GCSD_gsmchancod, h248_param_ber_octetstring, &implicit }, + { 0x0000, NULL, NULL, NULL } +}; + +static h248_pkg_param_t h248_pkg_3GCSD_evt_protres_params[] = { + { 0x0001, &hf_h248_pkg_3GCSD_evt_protres_result, h248_param_ber_integer, &implicit }, + { 0x0002, &hf_h248_pkg_3GCSD_evt_protres_cause, h248_param_ber_integer, &implicit }, + { 0, NULL, NULL, NULL} +}; + +static h248_pkg_param_t h248_pkg_3GCSD_evt_ratechg_params[] = { + { 0x0001, &hf_h248_pkg_3GCSD_evt_ratechg_rate, h248_param_ber_integer, &implicit }, + { 0, NULL, NULL, NULL} +}; + +static h248_pkg_evt_t h248_package_3GCSD_evts[] = { + { 0x0001, &hf_h248_pkg_3GCSD_evt_protres, &ett_h248_3GCSD_evt_protres, h248_pkg_3GCSD_evt_protres_params}, + { 0x0002, &hf_h248_pkg_3GCSD_evt_ratechg, &ett_h248_3GCSD_evt_ratechg, h248_pkg_3GCSD_evt_ratechg_params}, + { 0, NULL, NULL, NULL} +}; + +static h248_pkg_param_t h248_pkg_3GCSD_actprot_sig_params[] = { + { 0x0001, &hf_h248_pkg_3GCSD_actprot_sig_localpeer, h248_param_ber_integer, &implicit }, + { 0, NULL, NULL, NULL} +}; + +static h248_pkg_sig_t h248_package_3GCSD_sigs[] = { + { 0x0010, &hf_h248_pkg_3GCSD_sig_actprot, &ett_pkg_3GCSD_sig_actprot, h248_pkg_3GCSD_actprot_sig_params }, + { 0, NULL, NULL, NULL} +}; + +static h248_package_t h248_package_3GCSD = { + 0x0030, + &hf_h248_package_3GCSD, + &hf_h248_package_3GCSD_parameters, + &ett_h248_package_3GCSD, + h248_package_3GCSD_props, + h248_package_3GCSD_sigs, + h248_package_3GCSD_evts, + NULL}; + + +/* + * TFO package + * 3GPP TS 29.232 -- 15.2.2 + */ +static int hf_h248_package_3GTFO = -1; +static int hf_h248_package_3GTFO_parameters = -1; +static int hf_h248_pkg_3GTFO_evt_codec_modify = -1; +static int hf_h248_pkg_3GTFO_evt_distant_codec_list = -1; +static int hf_h248_pkg_3GTFO_evt_status = -1; +static int hf_h248_pkg_3GTFO_enable = -1; +static int hf_h248_pkg_3GTFO_codeclist = -1; +static int hf_h248_pkg_3GTFO_evt_codec_modify_optimalcodec = -1; +static int hf_h248_pkg_3GTFO_evt_distant_codec_list_distlist = -1; +static int hf_h248_pkg_3GTFO_evt_status_tfostatus = -1; + +static gint ett_h248_package_3GTFO = -1; +static gint ett_h248_3GTFO_evt_status = -1; +static gint ett_h248_3GTFO_evt_distant_codec_list = -1; +static gint ett_h248_3GTFO_evt_codec_modify = -1; + +static const value_string tfoenable_vals[] = { + {1,"On"}, + {2,"Off"}, + {0,NULL} +}; + +static h248_pkg_param_t h248_package_3GTFO_props[] = { + { 0x0001, &hf_h248_pkg_3GTFO_enable, h248_param_ber_integer, &implicit }, + { 0x0002, &hf_h248_pkg_3GTFO_codeclist, h248_param_item, &implicit }, /* Sub-list of Octet string Q.765.5 + TS 26.103 .*/ + { 0, NULL, NULL, NULL} +}; + + +static h248_pkg_param_t h248_pkg_3GTFO_evt_codec_modify_params[] = { + { 0x0011, &hf_h248_pkg_3GTFO_evt_codec_modify_optimalcodec, h248_param_ber_octetstring, &implicit }, /* Q.765.5 + TS 26.103 .*/ + { 0, NULL, NULL, NULL} +}; + + +static h248_pkg_param_t h248_pkg_3GTFO_evt_distant_codec_list_params[] = { + { 0x0013, &hf_h248_pkg_3GTFO_evt_distant_codec_list_distlist, h248_param_item, &implicit }, /* Sub-list of Octet string Q.765.5 + TS 26.103 .*/ + { 0, NULL, NULL, NULL} +}; + +static h248_pkg_param_t h248_pkg_3GTFO_evt_status_params[] = { + { 0x0001, &hf_h248_pkg_3GTFO_evt_status_tfostatus, h248_param_ber_boolean, &implicit }, + { 0, NULL, NULL, NULL} +}; + +static h248_pkg_evt_t h248_package_3GTFO_evts[] = { + { 0x0010, &hf_h248_pkg_3GTFO_evt_codec_modify, &ett_h248_3GTFO_evt_codec_modify, h248_pkg_3GTFO_evt_codec_modify_params}, + { 0x0012, &hf_h248_pkg_3GTFO_evt_distant_codec_list, &ett_h248_3GTFO_evt_distant_codec_list, h248_pkg_3GTFO_evt_distant_codec_list_params}, + { 0x0014, &hf_h248_pkg_3GTFO_evt_status, &ett_h248_3GTFO_evt_status, h248_pkg_3GTFO_evt_status_params}, + { 0, NULL, NULL, NULL} +}; + +static h248_package_t h248_package_3GTFO = { + 0x0031, + &hf_h248_package_3GTFO, + &hf_h248_package_3GTFO_parameters, + &ett_h248_package_3GTFO, + h248_package_3GTFO_props, + NULL, + h248_package_3GTFO_evts, + NULL}; + +/* + * 3G Expanded Call Progress Tones Generator Package + * 3GPP TS 29.232 -- 15.2.3 + */ +/* + * Modification Of Link Characteristics Bearer Capability + * 3GPP TS 29.232 -- 15.2.4 + */ +/* + * Enhanced Circuit Switched Data package + * 3GPP TS 29.232 -- 15.2.5 + */ +/* + * Cellular Text telephone Modem Text Transport + * 3GPP TS 29.232 -- 15.2.6 + */ +/* + * IP transport package + * 3GPP TS 29.232 -- 15.2.7 + */ +/* + * Flexible Tone Generator Package + * 3GPP TS 29.232 -- 15.2.8 + */ +/* + * Trace Package + * 3GPP TS 29.232 -- 15.2.9 + */ +/* + * ASCI Group call package + * 3GPP TS 29.232 -- 15.2.10 + */ + + void proto_register_h248_3gpp(void) { static hf_register_info hf[] = { { &hf_h248_package_3GUP_Mode, { "Mode", "h248.package_3GUP.Mode", FT_UINT32, BASE_DEC, VALS(h248_3GUP_Mode_vals), 0, "Mode", HFILL }}, - { &hf_h248_package_3GUP_parameters, - { "Parameter", "h248.package_3GUP.parameter", - FT_UINT16, BASE_HEX, VALS(h248_3GUP_parameters), 0, - "Parameter", HFILL }}, - - + { &hf_h248_package_3GUP_parameters, + { "Parameter", "h248.package_3GUP.parameter", + FT_UINT16, BASE_HEX, VALS(h248_3GUP_parameters), 0, + "Parameter", HFILL }}, { &hf_h248_package_3GUP_UPversions, { "UPversions", "h248.package_3GUP.upversions", FT_UINT32, BASE_DEC, VALS(h248_3GUP_upversions_vals), 0, @@ -146,10 +334,109 @@ void proto_register_h248_3gpp(void) { { "Initialisation Direction", "h248.package_3GUP.initdir", FT_UINT32, BASE_DEC, VALS(h248_3GUP_initdir_vals), 0, "Initialisation Direction", HFILL }}, + + + { &hf_h248_package_3GCSD, + { "CSD Package", "h248.package_3GCSD", + FT_BYTES, BASE_HEX, NULL, 0, + "Circuit Switched Data Package", HFILL }}, + { &hf_h248_package_3GCSD_parameters, + { "CSD Package params", "h248.package_3GCSD.params", + FT_BYTES, BASE_DEC, NULL, 0, + "", HFILL }}, + { &hf_h248_package_3GCSD_plmnbc, + { "PLMN Bearer Capability", "h248.package_3GCSD.plmnbc", + FT_BYTES, BASE_DEC, NULL, 0, + "The PLMN Bearer Capability", HFILL }}, + { &hf_h248_package_3GCSD_gsmchancod, + { "GSM channel coding", "h248.package_3GCSD.gsmchancod", + FT_BYTES, BASE_DEC, NULL, 0, + "Channel information needed for GSM", HFILL }}, + { &hf_h248_pkg_3GCSD_evt_protres, + { "Protocol Negotiation Result", "h248.package_3GCSD.protres", + FT_BYTES, BASE_DEC, NULL, 0, + "This event is used to report the result of the protocol negotiation", HFILL }}, + { &hf_h248_pkg_3GCSD_evt_protres_result, + { "Negotiation Result", "h248.package_3GCSD.protres.result", + FT_UINT32, BASE_DEC, VALS(h248_3GCSD_evt_protres_result_vals), 0, + "reports whether the protocol negotiation has been successful", HFILL }}, + { &hf_h248_pkg_3GCSD_evt_protres_cause, + { "Possible Failure Cause", "h248.package_3GCSD.protres.cause", + FT_UINT32, BASE_DEC, VALS(h248_3GCSD_evt_protres_cause_vals), 0, + "indicates the possible failure cause", HFILL }}, + { &hf_h248_pkg_3GCSD_evt_ratechg, + { "Rate Change", "h248.package_3GCSD.ratechg", + FT_BYTES, BASE_DEC, NULL, 0, + "This event is used to report a rate change", HFILL }}, + { &hf_h248_pkg_3GCSD_evt_ratechg_rate, + { "New Rate", "h248.package_3GCSD.ratechg.rate", + FT_UINT32, BASE_DEC, NULL, 0, + "reports the new rate for the termination", HFILL }}, + { &hf_h248_pkg_3GCSD_sig_actprot, + { "Activate Protocol", "h248.package_3GCSD.actprot", + FT_BYTES, BASE_DEC, NULL, 0, + "Activate the higher layer protocol", HFILL }}, + { &hf_h248_pkg_3GCSD_actprot_sig_localpeer, + { "Local Peer Role", "h248.package_3GCSD.actprot.localpeer", + FT_UINT32, BASE_DEC, VALS(h248_3GCSD_actprot_sig_localpeer_vals), 0, + "It is used to inform the modem whether it should act as originating or terminating peer", HFILL }}, + + + { &hf_h248_package_3GTFO, + { "Tandem Free Operation ", "h248.package_3GTFO", + FT_BYTES, BASE_HEX, NULL, 0, + "This package defines events and properties for Tandem Free Operation (TFO) control", HFILL }}, + { &hf_h248_package_3GTFO_parameters, + { "Tandem Free Operation", "h248.package_3GTFO", + FT_BYTES, BASE_DEC, NULL, 0, + "", HFILL }}, + { &hf_h248_pkg_3GTFO_enable, + { "TFO Activity Control", "h248.package_3GTFO.tfoenable", + FT_UINT32, BASE_DEC, VALS(tfoenable_vals), 0, + "Defines if TFO is enabled or not", HFILL }}, + { &hf_h248_pkg_3GTFO_codeclist, + { "TFO Codec List", "h248.package_3GTFO.codeclist", + FT_BYTES, BASE_DEC, NULL, 0, + "List of codecs for use in TFO protocol", HFILL }}, + + { &hf_h248_pkg_3GTFO_evt_codec_modify, + { "Optimal Codec Event", "h248.package_3GTFO.codec_modify", + FT_BYTES, BASE_DEC, NULL, 0, + "The event is used to notify the MGC that TFO negotiation has resulted in an optimal codec type being proposed", HFILL }}, + { &hf_h248_pkg_3GTFO_evt_codec_modify_optimalcodec, + { "Optimal Codec Type", "h248.package_3GTFO.codec_modify.optimalcodec", + FT_BYTES, BASE_DEC, NULL, 0, + "indicates which is the proposed codec type for TFO", HFILL }}, + + { &hf_h248_pkg_3GTFO_evt_distant_codec_list, + { "Codec List Event", "h248.package_3GTFO.distant_codec_list", + FT_BYTES, BASE_DEC, NULL, 0, + "The event is used to notify the MGC of the distant TFO partner's supported codec list", HFILL }}, + + { &hf_h248_pkg_3GTFO_evt_distant_codec_list_distlist, + { "Distant Codec List", "h248.package_3GTFO.distant_codec_list.distlist", + FT_BYTES, BASE_DEC, NULL, 0, + "indicates the codec list for TFO", HFILL }}, + + { &hf_h248_pkg_3GTFO_evt_status, + { "TFO Status Event", "h248.package_3GTFO.status", + FT_BYTES, BASE_DEC, NULL, 0, + "The event is used to notify the MGC that a TFO link has been established or broken", HFILL }}, + { &hf_h248_pkg_3GTFO_evt_status_tfostatus, + { "TFO Status", "h248.package_3GTFO.status.tfostatus", + FT_BOOLEAN, BASE_DEC, NULL, 0, + "reports whether TFO has been established or broken", HFILL }}, }; static gint *ett[] = { - &ett_h248_package_3GUP + &ett_h248_package_3GUP, + &ett_h248_package_3GCSD, + &ett_h248_3GCSD_evt_protres, + &ett_h248_3GCSD_evt_ratechg, + &ett_h248_package_3GTFO, + &ett_h248_3GTFO_evt_status, + &ett_h248_3GTFO_evt_distant_codec_list, + &ett_h248_3GTFO_evt_codec_modify }; hf_h248_package_3GUP = proto_register_protocol(PNAME, PSNAME, PFNAME); @@ -159,6 +446,8 @@ void proto_register_h248_3gpp(void) { proto_register_subtree_array(ett, array_length(ett)); h248_register_package(&h248_package_3GUP); + h248_register_package(&h248_package_3GCSD); + h248_register_package(&h248_package_3GTFO); } void proto_reg_handoff_h248_3gpp(void) { |