aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--asn1/h248/h248.cnf5
-rw-r--r--asn1/h248/packet-h248-template.c126
2 files changed, 129 insertions, 2 deletions
diff --git a/asn1/h248/h248.cnf b/asn1/h248/h248.cnf
index 40a1aecbee..56ec68cd06 100644
--- a/asn1/h248/h248.cnf
+++ b/asn1/h248/h248.cnf
@@ -61,5 +61,6 @@ ServiceChangeRequest/terminationID terminationIDList
ServiceChangeReply/terminationID terminationIDList
#.END
-
-
+#.TYPE_ATTR
+IP4Address/address TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL
+IP6Address/address TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL
diff --git a/asn1/h248/packet-h248-template.c b/asn1/h248/packet-h248-template.c
index a501836238..914ae94a1f 100644
--- a/asn1/h248/packet-h248-template.c
+++ b/asn1/h248/packet-h248-template.c
@@ -55,10 +55,18 @@ static int hf_h248_package_name = -1;
static int hf_h248_event_name = -1;
static int hf_h248_signal_name = -1;
static int hf_h248_package_bcp_BNCChar_PDU = -1;
+static int hf_h248_package_annex_C_ACodec = -1;
static int hf_h248_package_annex_C_TMR = -1;
+static int hf_h248_package_annex_C_Mediatx = -1;
static int hf_h248_package_annex_C_USI = -1;
static int hf_h248_package_annex_C_NSAP = -1;
static int hf_h248_package_annex_C_BIR = -1;
+static int hf_h248_package_3GUP_Mode = -1;
+static int hf_h248_package_3GUP_UPversions = -1;
+static int hf_h248_package_3GUP_delerrsdu = -1;
+static int hf_h248_package_3GUP_interface = -1;
+static int hf_h248_package_3GUP_initdir = -1;
+
#include "packet-h248-hf.c"
/* Initialize the subtree pointers */
@@ -256,6 +264,14 @@ static const value_string signal_name_vals[] = {
{0, NULL}
};
+static const value_string h248_package_annex_C_Mediatx_vals[] = {
+ { 0x0000, "TDM Circuit" },
+ { 0x0001, "ATM" },
+ { 0x0002, "FR" },
+ { 0x0003, "Ipv4" },
+ { 0x0004, "Ipv6" },
+ {0, NULL}
+};
static void
dissect_h248_annex_C_PDU(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 name_minor) {
int offset = 0;
@@ -265,6 +281,12 @@ dissect_h248_annex_C_PDU(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinf
case 0x1001: /* Media */
proto_tree_add_text(tree, tvb, offset, -1,"Media");
break;
+ case 0x1006: /* ACodec Ref.: ITU-T Rec. Q.765.5 */
+ offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_C_ACodec, &new_tvb);
+ break;
+ case 0x3001: /* Mediatx */
+ offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_annex_C_Mediatx, NULL);
+ break;
case 0x3002: /* BIR */
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_C_BIR, &new_tvb);
break;
@@ -284,6 +306,79 @@ dissect_h248_annex_C_PDU(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinf
break;
}
}
+
+static const value_string h248_3GUP_Mode_vals[] = {
+ { 0x00000001, "Transparent mode" },
+ { 0x00000002, "Support mode for predefined SDU sizes" },
+ {0, NULL}
+};
+
+static const value_string h248_3GUP_upversions_vals[] = {
+ { 0x01, "Version 1" },
+ { 0x02, "Version 2" },
+ { 0x03, "Version 3" },
+ { 0x04, "Version 4" },
+ { 0x05, "Version 5" },
+ { 0x06, "Version 6" },
+ { 0x07, "Version 7" },
+ { 0x08, "Version 8" },
+ { 0x09, "Version 9" },
+ { 0x0A, "Version 10" },
+ { 0x0B, "Version 11" },
+ { 0x0C, "Version 12" },
+ { 0x0D, "Version 13" },
+ { 0x0E, "Version 14" },
+ { 0x0F, "Version 15" },
+ { 0x10, "Version 16" },
+ {0, NULL}
+};
+
+static const value_string h248_3GUP_delerrsdu_vals[] = {
+ { 0x0001, "Yes" },
+ { 0x0002, "No" },
+ { 0x0003, "Not Applicable" },
+ {0, NULL}
+};
+
+static const value_string h248_3GUP_interface_vals[] = {
+ { 0x0001, "RAN (Iu interface)" },
+ { 0x0002, "CN (Nb interfac)" },
+ {0, NULL}
+};
+
+static const value_string h248_3GUP_initdir_vals[] = {
+ { 0x0001, "Incoming" },
+ { 0x0002, "Outgoing" },
+ {0, NULL}
+};
+
+static void
+dissect_3G_User_Plane_PDU(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 name_minor){
+ int offset = 0;
+
+ switch ( name_minor ){
+ case 0x0001:
+ offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_Mode, NULL);
+ break;
+ case 0x0002:
+ offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_UPversions, NULL);
+ break;
+ case 0x0003:
+ offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_delerrsdu, NULL);
+ break;
+ case 0x0004:
+ offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_interface, NULL);
+ break;
+ case 0x0005:
+ offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_h248_package_3GUP_initdir, NULL);
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, offset, -1,"PropertyID not decoded(yet) 0x%x",name_minor);
+ break;
+ }
+
+
+}
static const value_string BNCChar_vals[] = {
{ 1, "aal1" },
{ 2, "aal2" },
@@ -310,6 +405,9 @@ guint offset=0;
case 0x0021: /* Generic Bearer Connection Q.1950 Annex A */
proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "H.248: Dissector for Package/ID:0x%04x not implemented (yet).", name_major);
break;
+ case 0x002f: /* 3G User Plane TS 29.232 */
+ dissect_3G_User_Plane_PDU(implicit_tag, tvb, pinfo, tree, name_minor);
+ break;
default:
proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "H.248: Dissector for Package/ID:0x%04x not implemented (yet).", name_major);
break;
@@ -514,10 +612,18 @@ void proto_register_h248(void) {
{ "BNCChar", "h248.package_bcp.BNCChar",
FT_UINT32, BASE_DEC, VALS(BNCChar_vals), 0,
"BNCChar", HFILL }},
+ { &hf_h248_package_annex_C_ACodec,
+ { "ACodec", "h248.package_annex_C.ACodec",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "ACodec", HFILL }},
{ &hf_h248_package_annex_C_TMR,
{ "TMR", "h248.package_annex_C.TMR",
FT_UINT32, BASE_DEC, VALS(isup_transmission_medium_requirement_value), 0,
"BNCChar", HFILL }},
+ { &hf_h248_package_annex_C_Mediatx,
+ { "Mediatx", "h248.package_annex_C.Mediatx",
+ FT_UINT32, BASE_DEC, VALS(h248_package_annex_C_Mediatx_vals), 0,
+ "Mediatx", HFILL }},
{ &hf_h248_package_annex_C_USI,
{ "USI", "h248.package_annex_C.USI",
FT_BYTES, BASE_HEX, NULL, 0,
@@ -530,6 +636,26 @@ void proto_register_h248(void) {
{ "NSAP", "h248.package_annex_C.NSAP",
FT_BYTES, BASE_HEX, NULL, 0,
"NSAP", HFILL }},
+ { &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_UPversions,
+ { "UPversions", "h248.package_3GUP.upversions",
+ FT_UINT32, BASE_DEC, VALS(h248_3GUP_upversions_vals), 0,
+ "UPversions", HFILL }},
+ { &hf_h248_package_3GUP_delerrsdu,
+ { "Delivery of erroneous SDUs", "h248.package_3GUP.delerrsdu",
+ FT_UINT32, BASE_DEC, VALS(h248_3GUP_delerrsdu_vals), 0,
+ "Delivery of erroneous SDUs", HFILL }},
+ { &hf_h248_package_3GUP_interface,
+ { "Interface", "h248.package_3GUP.interface",
+ FT_UINT32, BASE_DEC, VALS(h248_3GUP_interface_vals), 0,
+ "Interface", HFILL }},
+ { &hf_h248_package_3GUP_initdir,
+ { "Initialisation Direction", "h248.package_3GUP.initdir",
+ FT_UINT32, BASE_DEC, VALS(h248_3GUP_initdir_vals), 0,
+ "Initialisation Direction", HFILL }},
#include "packet-h248-hfarr.c"
};