aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlego <lego@f5534014-38df-0310-8fa8-9805f1628bb7>2007-02-21 00:00:49 +0000
committerlego <lego@f5534014-38df-0310-8fa8-9805f1628bb7>2007-02-21 00:00:49 +0000
commite2cf7c32823bb5701be2d41e88274e58579442f3 (patch)
treeea96ca96bbdfc767e689f54f7339d026abc623a5
parent2b7491f55ddb0a425a773f2ab5ee8ce18c7a8268 (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
-rw-r--r--asn1/h248/packet-h248-template.c8
-rw-r--r--epan/dissectors/packet-h248.c10
-rw-r--r--epan/dissectors/packet-h248.h2
-rw-r--r--epan/dissectors/packet-h248_3gpp.c307
4 files changed, 308 insertions, 19 deletions
diff --git a/asn1/h248/packet-h248-template.c b/asn1/h248/packet-h248-template.c
index c4928eeaff..0c5fe0b5d5 100644
--- a/asn1/h248/packet-h248-template.c
+++ b/asn1/h248/packet-h248-template.c
@@ -746,8 +746,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;
@@ -1932,8 +1932,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.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) {