diff options
author | Umberto Corponi <umberto.corponi@athonet.com> | 2015-07-16 22:42:30 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2015-07-23 17:03:19 +0000 |
commit | 9bca1274308c1e6f88af1fe69a73cfa72b08412e (patch) | |
tree | b343a0944639fce3f7f871347549d2b0773e38d3 | |
parent | c5bda791f2c5a9dc4fa5db08483a247c9fafaeee (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.xml | 97 | ||||
-rw-r--r-- | epan/dissectors/packet-diameter_3gpp.c | 291 |
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 */ |