aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUmberto Corponi <umberto.corponi@athonet.com>2015-07-16 22:42:30 +0200
committerAnders Broman <a.broman58@gmail.com>2015-07-23 17:03:19 +0000
commit9bca1274308c1e6f88af1fe69a73cfa72b08412e (patch)
treeb343a0944639fce3f7f871347549d2b0773e38d3
parentc5bda791f2c5a9dc4fa5db08483a247c9fafaeee (diff)
Add support for MB2c Diameter interface.
Add decoding for MB2c specific AVPs according to 3GPP TS 29.468 Rel 12.1.0. Change-Id: I0b50cacb5a3e7cb32de89b31da24e725361edf80 Reviewed-on: https://code.wireshark.org/review/9756 Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--diameter/TGPP.xml97
-rw-r--r--epan/dissectors/packet-diameter_3gpp.c291
2 files changed, 387 insertions, 1 deletions
diff --git a/diameter/TGPP.xml b/diameter/TGPP.xml
index 642ca5386a..8d5becd3c6 100644
--- a/diameter/TGPP.xml
+++ b/diameter/TGPP.xml
@@ -1191,3 +1191,100 @@
<enum name="TERMINATION" code="1"/>
</avp>
</application> <!-- 3GPP S9 -->
+
+<application id="16777335" name="3GPP MB2c" uri="http://www.3gpp.org/DynaReport/29468.htm">
+
+ <command name="GCS-Action" code="8388662" vendor-id="TGPP"/>
+ <command name="GCS-Notification" code="8388663" vendor-id="TGPP"/>
+
+ <avp name="BMSC-Address" code="3500" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="IPAddress"/>
+ </avp>
+ <avp name="BMSC-Port" code="3501" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="Unsigned32"/>
+ </avp>
+ <avp name="MBMS-Bearer-Event" code="3502" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="Unsigned32"/>
+ </avp>
+ <avp name="MBMS-Bearer-Event-Notification" code="3503" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <grouped>
+ <gavp name="TMGI"/>
+ <gavp name="MBMS-Flow-Identifier"/>
+ <gavp name="MBMS-Bearer-Event"/>
+ </grouped>
+ </avp>
+ <avp name="MBMS-Bearer-Request" code="3504" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <grouped>
+ <gavp name="MBMS-StartStop-Indication"/>
+ <gavp name="TMGI"/>
+ <gavp name="MBMS-Flow-Identifier"/>
+ <gavp name="QoS-Information"/>
+ <gavp name="MBMS-Service-Area"/>
+ <gavp name="MBMS-Start-Time"/>
+ <gavp name="MB2U-Security"/>
+ </grouped>
+ </avp>
+ <avp name="MBMS-Bearer-Response" code="3505" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <grouped>
+ <gavp name="TMGI"/>
+ <gavp name="MBMS-Flow-Identifier"/>
+ <gavp name="MBMS-Session-Duration"/>
+ <gavp name="MBMS-Bearer-Result"/>
+ <gavp name="BMSC-Address"/>
+ <gavp name="BMSC-Port"/>
+ <gavp name="MB2U-Security"/>
+ <gavp name="Radio-Frequency"/>
+ </grouped>
+ </avp>
+ <avp name="MBMS-Bearer-Result" code="3506" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="Unsigned32"/>
+ </avp>
+ <avp name="MBMS-Start-Time" code="3507" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="Time"/>
+ </avp>
+ <avp name="Radio-Frequency" code="3508" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="Unsigned32"/>
+ </avp>
+ <avp name="TMGI-Allocation-Request" code="3509" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <grouped>
+ <gavp name="TMGI-Number"/>
+ <gavp name="TMGI"/>
+ </grouped>
+ </avp>
+ <avp name="TMGI-Allocation-Response" code="3510" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <grouped>
+ <gavp name="TMGI"/>
+ <gavp name="MBMS-Session-Duration"/>
+ <gavp name="TMGI-Allocation-Result"/>
+ </grouped>
+ </avp>
+ <avp name="TMGI-Allocation-Result" code="3511" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="Unsigned32"/>
+ </avp>
+ <avp name="TMGI-Deallocation-Request" code="3512" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <grouped>
+ <gavp name="TMGI"/>
+ </grouped>
+ </avp>
+ <avp name="TMGI-Deallocation-Response" code="3513" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <grouped>
+ <gavp name="TMGI"/>
+ <gavp name="TMGI-Deallocation-Result"/>
+ </grouped>
+ </avp>
+ <avp name="TMGI-Deallocation-Result" code="3514" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="Unsigned32"/>
+ </avp>
+ <avp name="TMGI-Expiry" code="3515" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <grouped>
+ <gavp name="TMGI"/>
+ </grouped>
+ </avp>
+ <avp name="TMGI-Number" code="3516" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="Unsigned32"/>
+ </avp>
+
+ <avp name="MB2U-Security" code="3517" mandatory="must" vendor-bit="must" vendor-id="TGPP" may-encrypt="yes">
+ <type type-name="Unsigned32"/>
+ </avp>
+</application> <!-- 3GPP MB2c -->
diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c
index ad20aa7374..98afcefad8 100644
--- a/epan/dissectors/packet-diameter_3gpp.c
+++ b/epan/dissectors/packet-diameter_3gpp.c
@@ -209,6 +209,31 @@ static int hf_diameter_3gpp_imeisv = -1;
static int hf_diameter_3gpp_af_charging_identifier = -1;
static int hf_diameter_3gpp_af_application_identifier = -1;
static int hf_diameter_3gpp_charging_rule_name = -1;
+static int hf_diameter_3gpp_mbms_bearer_event = -1;
+static int hf_diameter_3gpp_mbms_bearer_event_bit0 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit0 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit1 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit2 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit3 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit4 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit5 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit6 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit7 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit8 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit9 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit10 = -1;
+static int hf_diameter_3gpp_mbms_bearer_result_bit11 = -1;
+static int hf_diameter_3gpp_tmgi_allocation_result = -1;
+static int hf_diameter_3gpp_tmgi_allocation_result_bit0 = -1;
+static int hf_diameter_3gpp_tmgi_allocation_result_bit1 = -1;
+static int hf_diameter_3gpp_tmgi_allocation_result_bit2 = -1;
+static int hf_diameter_3gpp_tmgi_allocation_result_bit3 = -1;
+static int hf_diameter_3gpp_tmgi_allocation_result_bit4 = -1;
+static int hf_diameter_3gpp_tmgi_deallocation_result = -1;
+static int hf_diameter_3gpp_tmgi_deallocation_result_bit0 = -1;
+static int hf_diameter_3gpp_tmgi_deallocation_result_bit1 = -1;
+static int hf_diameter_3gpp_tmgi_deallocation_result_bit2 = -1;
static gint diameter_3gpp_path_ett = -1;
static gint diameter_3gpp_feature_list_ett = -1;
@@ -222,6 +247,10 @@ static gint diameter_3gpp_ida_flags_ett = -1;
static gint diameter_3gpp_pua_flags_ett = -1;
static gint diameter_3gpp_nor_flags_ett = -1;
static gint diameter_3gpp_idr_flags_ett = -1;
+static gint diameter_3gpp_mbms_bearer_event_ett = -1;
+static gint diameter_3gpp_mbms_bearer_result_ett = -1;
+static gint diameter_3gpp_tmgi_allocation_result_ett = -1;
+static gint diameter_3gpp_tmgi_deallocation_result_ett = -1;
/* Dissector handles */
static dissector_handle_t xml_handle;
@@ -1244,6 +1273,125 @@ dissect_diameter_3gpp_idr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
}
+/* AVP Code: 3502 MBMS-Bearer-Event */
+static int
+dissect_diameter_3gpp_mbms_bearer_event(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
+{
+ proto_item *item;
+ proto_tree *sub_tree;
+ int offset = 0;
+ guint32 bit_offset;
+
+ item = proto_tree_add_item(tree, hf_diameter_3gpp_mbms_bearer_event, tvb, offset, 4, ENC_BIG_ENDIAN);
+ sub_tree = proto_item_add_subtree(item, diameter_3gpp_mbms_bearer_event_ett);
+ bit_offset = 0;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 31, ENC_BIG_ENDIAN);
+ bit_offset+=31;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_event_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ offset = bit_offset>>3;
+ return offset;
+}
+
+/* AVP Code: 3506 MBMS-Bearer-Result */
+static int
+dissect_diameter_3gpp_mbms_bearer_result(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
+{
+ proto_item *item;
+ proto_tree *sub_tree;
+ int offset = 0;
+ guint32 bit_offset;
+
+ item = proto_tree_add_item(tree, hf_diameter_3gpp_mbms_bearer_result, tvb, offset, 4, ENC_BIG_ENDIAN);
+ sub_tree = proto_item_add_subtree(item, diameter_3gpp_mbms_bearer_result_ett);
+ bit_offset = 0;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 20, ENC_BIG_ENDIAN);
+ bit_offset+=20;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit11, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit10, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit9, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit8, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit7, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit6, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit5, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit4, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit3, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit2, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit1, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_mbms_bearer_result_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ offset = bit_offset>>3;
+ return offset;
+}
+
+/* AVP Code: 3511 TMGI-Allocation-Result */
+static int
+dissect_diameter_3gpp_tmgi_allocation_result(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
+{
+ proto_item *item;
+ proto_tree *sub_tree;
+ int offset = 0;
+ guint32 bit_offset;
+
+ item = proto_tree_add_item(tree, hf_diameter_3gpp_tmgi_allocation_result, tvb, offset, 4, ENC_BIG_ENDIAN);
+ sub_tree = proto_item_add_subtree(item, diameter_3gpp_tmgi_allocation_result_ett);
+ bit_offset = 0;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 27, ENC_BIG_ENDIAN);
+ bit_offset+=27;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_tmgi_allocation_result_bit4, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_tmgi_allocation_result_bit3, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_tmgi_allocation_result_bit2, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_tmgi_allocation_result_bit1, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_tmgi_allocation_result_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ offset = bit_offset>>3;
+ return offset;
+}
+
+/* AVP Code: 3514 TMGI-Deallocation-Result */
+static int
+dissect_diameter_3gpp_tmgi_deallocation_result(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
+{
+ proto_item *item;
+ proto_tree *sub_tree;
+ int offset = 0;
+ guint32 bit_offset;
+
+ item = proto_tree_add_item(tree, hf_diameter_3gpp_tmgi_deallocation_result, tvb, offset, 4, ENC_BIG_ENDIAN);
+ sub_tree = proto_item_add_subtree(item, diameter_3gpp_tmgi_deallocation_result_ett);
+ bit_offset = 0;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 29, ENC_BIG_ENDIAN);
+ bit_offset+=29;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_tmgi_deallocation_result_bit2, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_tmgi_deallocation_result_bit1, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_tmgi_deallocation_result_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ offset = bit_offset>>3;
+ return offset;
+}
+
+
void
proto_reg_handoff_diameter_3gpp(void)
{
@@ -1365,6 +1513,18 @@ proto_reg_handoff_diameter_3gpp(void)
/* AVP Code: 1490 IDR-Flags */
dissector_add_uint("diameter.3gpp", 1490, new_create_dissector_handle(dissect_diameter_3gpp_idr_flags, proto_diameter_3gpp));
+ /* AVP Code: 3502 MBMS-Bearer-Event */
+ dissector_add_uint("diameter.3gpp", 3502, new_create_dissector_handle(dissect_diameter_3gpp_mbms_bearer_event, proto_diameter_3gpp));
+
+ /* AVP Code: 3506 MBMS-Bearer-Result */
+ dissector_add_uint("diameter.3gpp", 3506, new_create_dissector_handle(dissect_diameter_3gpp_mbms_bearer_result, proto_diameter_3gpp));
+
+ /* AVP Code: 3511 TMGI-Allocation-Result */
+ dissector_add_uint("diameter.3gpp", 3511, new_create_dissector_handle(dissect_diameter_3gpp_tmgi_allocation_result, proto_diameter_3gpp));
+
+ /* AVP Code: 3514 TMGI-Deallocation-Result */
+ dissector_add_uint("diameter.3gpp", 3514, new_create_dissector_handle(dissect_diameter_3gpp_tmgi_deallocation_result, proto_diameter_3gpp));
+
xml_handle = find_dissector("xml");
}
@@ -1372,7 +1532,7 @@ void
proto_register_diameter_3gpp(void)
{
-/* Setup list of header fields See Section 1.6.1 for details*/
+ /* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
{ &hf_diameter_3gpp_timezone,
{ "Timezone", "diameter.3gpp.3gpp_timezone",
@@ -2210,6 +2370,131 @@ proto_register_diameter_3gpp(void)
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_diameter_3gpp_mbms_bearer_event,
+ { "MBMS-Bearer-Event", "diameter.3gpp.mbms_bearer_event",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_event_bit0,
+ { "Bearer Terminated", "diameter.3gpp.mbms_bearer_event_bit0",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result,
+ { "MBMS-Bearer-Result", "diameter.3gpp.mbms_bearer_result",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit0,
+ { "Success", "diameter.3gpp.mbms_bearer_result_bit0",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit1,
+ { "Authorization rejected", "diameter.3gpp.mbms_bearer_result_bit1",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit2,
+ { "Resources exceeded", "diameter.3gpp.mbms_bearer_result_bit2",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit3,
+ { "Unknown TMGI", "diameter.3gpp.mbms_bearer_result_bit3",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit4,
+ { "TMGI not in use", "diameter.3gpp.mbms_bearer_result_bit4",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit5,
+ { "Overlapping MBMS-Service-Area", "diameter.3gpp.mbms_bearer_result_bit5",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit6,
+ { "Unknown Flow Identifier", "diameter.3gpp.mbms_bearer_result_bit6",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit7,
+ { "QoS Authorization Rejected", "diameter.3gpp.mbms_bearer_result_bit7",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit8,
+ { "Unknown MBMS-Service-Area", "diameter.3gpp.mbms_bearer_result_bit8",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit9,
+ { "MBMS-Service-Area Authorization Rejected", "diameter.3gpp.mbms_bearer_result_bit8",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit10,
+ { "MBMS-Start-Time", "diameter.3gpp.mbms_bearer_result_bit8",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_mbms_bearer_result_bit11,
+ { "Invalid AVP combination", "diameter.3gpp.mbms_bearer_result_bit8",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_allocation_result,
+ { "TMGI-Allocation-Result", "diameter.3gpp.tmgi_allocation_result",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_allocation_result_bit0,
+ { "Success", "diameter.3gpp.tmgi_allocation_result_bit0",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_allocation_result_bit1,
+ { "Authorization rejected", "diameter.3gpp.tmgi_allocation_result_bit1",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_allocation_result_bit2,
+ { "Resources exceeded", "diameter.3gpp.tmgi_allocation_result_bit2",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_allocation_result_bit3,
+ { "Unknown TMGI", "diameter.3gpp.tmgi_allocation_result_bit3",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_allocation_result_bit4,
+ { "Too many TMGIs requested", "diameter.3gpp.tmgi_allocation_result_bit4",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_deallocation_result,
+ { "TMGI-Deallocation-Result", "diameter.3gpp.tmgi_deallocation_result",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_deallocation_result_bit0,
+ { "Success", "diameter.3gpp.tmgi_deallocation_result_bit0",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_deallocation_result_bit1,
+ { "Authorization rejected", "diameter.3gpp.tmgi_deallocation_result_bit1",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_tmgi_deallocation_result_bit2,
+ { "Unknown TMGI", "diameter.3gpp.tmgi_deallocation_result_bit2",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
};
@@ -2227,6 +2512,10 @@ proto_register_diameter_3gpp(void)
&diameter_3gpp_pua_flags_ett,
&diameter_3gpp_nor_flags_ett,
&diameter_3gpp_idr_flags_ett,
+ &diameter_3gpp_mbms_bearer_event_ett,
+ &diameter_3gpp_mbms_bearer_result_ett,
+ &diameter_3gpp_tmgi_allocation_result_ett,
+ &diameter_3gpp_tmgi_deallocation_result_ett,
};
/* Required function calls to register the header fields and subtrees used */