diff options
author | Marius Paliga <mareko.paliga@gmail.com> | 2016-07-22 13:26:12 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2016-07-22 14:01:37 +0000 |
commit | 52ed7d3b5c25ca5337990f5f1311da975784353d (patch) | |
tree | a095bc2cc10bf62d556d65e893bf7ee079ed897f | |
parent | 12dd01225a0a63ff626b4aa2a2374edda7edebdf (diff) | |
download | wireshark-52ed7d3b5c25ca5337990f5f1311da975784353d.tar.gz wireshark-52ed7d3b5c25ca5337990f5f1311da975784353d.tar.bz2 wireshark-52ed7d3b5c25ca5337990f5f1311da975784353d.zip |
Add support for new AVPs defined in 29.273
Bug: 12643
Change-Id: Ic9c26dc864b2b016ba722620098caf44a800f0f4
Reviewed-on: https://code.wireshark.org/review/16581
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r-- | diameter/dictionary.xml | 59 | ||||
-rw-r--r-- | epan/dissectors/packet-diameter_3gpp.c | 243 |
2 files changed, 289 insertions, 13 deletions
diff --git a/diameter/dictionary.xml b/diameter/dictionary.xml index 471718f7f8..4070427b75 100644 --- a/diameter/dictionary.xml +++ b/diameter/dictionary.xml @@ -4979,24 +4979,57 @@ <avp name="MIP-FA-RK-SPI" code="1507" may-encrypt="yes" vendor-id="TGPP" vendor-bit="must" mandatory="must"> <type type-name="Unsigned32"/> </avp> + <avp name="PPR-Flags" code="1508" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="Unsigned32"/> + </avp> + <avp name="WLAN-Identifier" code="1509" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <grouped> + <gavp name="SSID"/> + <gavp name="HESSID"/> + </grouped> + </avp> + <avp name="TWAN-Access-Info" code="1510" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <grouped> + <gavp name="Access-Authorization-Flags"/> + <gavp name="WLAN-Identifier"/> + </grouped> + </avp> + <avp name="Access-Authorization-Flags" code="1511" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="Unsigned32"/> + </avp> + <avp name="TWAN-Default-APN-Context-Id" code="1512" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="Unsigned32"/> + </avp> <!-- - 1508 PPR-Flags Unsigned32 - 1509 WLAN-Identifier Grouped - 1510 TWAN-Access-Info Grouped - 1511 Access-Authorization-Flags Unsigned32 - 1512 TWAN-Default-APN-Context-Id Unsigned32 1513 Reserved - 1514 Reserved - 1515 Reserved - - 1516 Full-Network-Name OctetString - 1517 Short-Network-Name OctetString - 1518 AAA-Failure-Indication Unsigned32 - 1519 Transport-Access-Type Enumerated - 1520 DER-Flags Unsigned32 - 1521 DEA-Flags Unsigned32 - 1522 RAR-Flags Unsigned32 - 1523 DER-S6b-Flags Unsigned32 --> + <avp name="Full-Network-Name" code="1516" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="OctetString"/> + </avp> + <avp name="Short-Network-Name" code="1517" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="OctetString"/> + </avp> + <avp name="AAA-Failure-Indication" code="1518" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="Unsigned32"/> + </avp> + <avp name="Transport-Access-Type" code="1519" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="Enumerated"/> + <enum name="BBF" code="0"/> + </avp> + <avp name="DER-Flags" code="1520" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="Unsigned32"/> + </avp> + <avp name="DEA-Flags" code="1521" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="Unsigned32"/> + </avp> + <avp name="RAR-Flags" code="1522" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="Unsigned32"/> + </avp> + <avp name="DER-S6b-Flags" code="1523" mandatory="mustnot" may-encrypt="no" vendor-bit="must" vendor-id="TGPP"> + <type type-name="Unsigned32"/> + </avp> <avp name="SSID" code="1524" may-encrypt="yes" vendor-id="TGPP" vendor-bit="must" mandatory="must"> <type type-name="UTF8String"/> </avp> diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c index ed75893ee4..7cd4e5b528 100644 --- a/epan/dissectors/packet-diameter_3gpp.c +++ b/epan/dissectors/packet-diameter_3gpp.c @@ -247,6 +247,22 @@ static int hf_diameter_3gpp_idr_flags_bit5 = -1; static int hf_diameter_3gpp_idr_flags_bit6 = -1; static int hf_diameter_3gpp_idr_flags_bit7 = -1; static int hf_diameter_3gpp_idr_flags_bit8 = -1; +static int hf_diameter_3gpp_ppr_flags = -1; +static int hf_diameter_3gpp_ppr_flags_bit0 = -1; +static int hf_diameter_3gpp_ppr_flags_bit1 = -1; +static int hf_diameter_3gpp_ppr_flags_bit2 = -1; +static int hf_diameter_3gpp_ppr_flags_bit3 = -1; +static int hf_diameter_3gpp_der_flags = -1; +static int hf_diameter_3gpp_der_flags_bit0 = -1; +static int hf_diameter_3gpp_der_flags_bit1 = -1; +static int hf_diameter_3gpp_dea_flags = -1; +static int hf_diameter_3gpp_dea_flags_bit0 = -1; +static int hf_diameter_3gpp_dea_flags_bit1 = -1; +static int hf_diameter_3gpp_rar_flags = -1; +static int hf_diameter_3gpp_rar_flags_bit0 = -1; +static int hf_diameter_3gpp_rar_flags_bit1 = -1; +static int hf_diameter_3gpp_der_s6b_flags = -1; +static int hf_diameter_3gpp_der_s6b_flags_bit0 = -1; static int hf_diameter_3gpp_ipv6addr = -1; static int hf_diameter_3gpp_mbms_abs_time_ofmbms_data_tfer = -1; static int hf_diameter_3gpp_udp_port = -1; @@ -296,6 +312,11 @@ 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_ppr_flags_ett = -1; +static gint diameter_3gpp_der_flags_ett = -1; +static gint diameter_3gpp_dea_flags_ett = -1; +static gint diameter_3gpp_rar_flags_ett = -1; +static gint diameter_3gpp_der_s6b_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; @@ -1688,6 +1709,128 @@ dissect_diameter_3gpp_idr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre } +/* AVP Code: 1508 PPR-Flags */ +static int +dissect_diameter_3gpp_ppr_flags(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_ppr_flags, tvb, offset, 4, ENC_BIG_ENDIAN); + sub_tree = proto_item_add_subtree(item, diameter_3gpp_ppr_flags_ett); + bit_offset = 0; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 28, ENC_BIG_ENDIAN); + bit_offset+=28; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_ppr_flags_bit3, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_ppr_flags_bit2, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_ppr_flags_bit1, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_ppr_flags_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + + offset = bit_offset>>3; + return offset; + +} + +/* AVP Code: 1520 DER-Flags */ +static int +dissect_diameter_3gpp_der_flags(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_der_flags, tvb, offset, 4, ENC_BIG_ENDIAN); + sub_tree = proto_item_add_subtree(item, diameter_3gpp_der_flags_ett); + bit_offset = 0; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 30, ENC_BIG_ENDIAN); + bit_offset+=30; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_der_flags_bit1, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_der_flags_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + + offset = bit_offset>>3; + return offset; + +} + +/* AVP Code: 1521 DEA-Flags */ +static int +dissect_diameter_3gpp_dea_flags(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_dea_flags, tvb, offset, 4, ENC_BIG_ENDIAN); + sub_tree = proto_item_add_subtree(item, diameter_3gpp_dea_flags_ett); + bit_offset = 0; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 30, ENC_BIG_ENDIAN); + bit_offset+=30; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_dea_flags_bit1, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_dea_flags_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + + offset = bit_offset>>3; + return offset; + +} + +/* AVP Code: 1522 RAR-Flags */ +static int +dissect_diameter_3gpp_rar_flags(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_rar_flags, tvb, offset, 4, ENC_BIG_ENDIAN); + sub_tree = proto_item_add_subtree(item, diameter_3gpp_rar_flags_ett); + bit_offset = 0; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 30, ENC_BIG_ENDIAN); + bit_offset+=30; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_rar_flags_bit1, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_rar_flags_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + + offset = bit_offset>>3; + return offset; + +} + +/* AVP Code: 1523 DER-S6b-Flags */ +static int +dissect_diameter_3gpp_der_s6b_flags(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_der_s6b_flags, tvb, offset, 4, ENC_BIG_ENDIAN); + sub_tree = proto_item_add_subtree(item, diameter_3gpp_der_s6b_flags_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_der_s6b_flags_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + + offset = bit_offset>>3; + return offset; + +} + /* 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_) @@ -1941,6 +2084,21 @@ proto_reg_handoff_diameter_3gpp(void) /* AVP Code: 1490 IDR-Flags */ dissector_add_uint("diameter.3gpp", 1490, create_dissector_handle(dissect_diameter_3gpp_idr_flags, proto_diameter_3gpp)); + /* AVP Code: 1508 PPR-Flags */ + dissector_add_uint("diameter.3gpp", 1508, new_create_dissector_handle(dissect_diameter_3gpp_ppr_flags, proto_diameter_3gpp)); + + /* AVP Code: 1520 DER-Flags */ + dissector_add_uint("diameter.3gpp", 1520, new_create_dissector_handle(dissect_diameter_3gpp_der_flags, proto_diameter_3gpp)); + + /* AVP Code: 1521 DEA-Flags */ + dissector_add_uint("diameter.3gpp", 1521, new_create_dissector_handle(dissect_diameter_3gpp_dea_flags, proto_diameter_3gpp)); + + /* AVP Code: 1522 RAR-Flags */ + dissector_add_uint("diameter.3gpp", 1522, new_create_dissector_handle(dissect_diameter_3gpp_rar_flags, proto_diameter_3gpp)); + + /* AVP Code: 1523 DER-S6b-Flags */ + dissector_add_uint("diameter.3gpp", 1523, new_create_dissector_handle(dissect_diameter_3gpp_der_s6b_flags, proto_diameter_3gpp)); + /* AVP Code: 3502 MBMS-Bearer-Event */ dissector_add_uint("diameter.3gpp", 3502, create_dissector_handle(dissect_diameter_3gpp_mbms_bearer_event, proto_diameter_3gpp)); @@ -3121,6 +3279,86 @@ proto_register_diameter_3gpp(void) FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, NULL, HFILL } }, + { &hf_diameter_3gpp_ppr_flags, + { "PPR Flags", "diameter.3gpp.ppr_flags", + FT_UINT32, BASE_HEX, NULL, 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_ppr_flags_bit0, + { "Reset-Indication", "diameter.3gpp.ppr_flags_bit0", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_ppr_flags_bit1, + { "Access-Network-Info-Request", "diameter.3gpp.ppr_flags_bit1", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_ppr_flags_bit2, + { "UE-Local-Time-Zone-Request", "diameter.3gpp.ppr_flags_bit2", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_ppr_flags_bit3, + { "P-CSCF Restoration Request", "diameter.3gpp.ppr_flags_bit3", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_der_flags, + { "DER Flags", "diameter.3gpp.der_flags", + FT_UINT32, BASE_HEX, NULL, 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_der_flags_bit0, + { "NSWO-Capability-Indication", "diameter.3gpp.der_flags_bit0", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_der_flags_bit1, + { "TWAN-S2a-Connectivity-Indicator", "diameter.3gpp.der_flags_bit1", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_dea_flags, + { "DEA Flags", "diameter.3gpp.dea_flags", + FT_UINT32, BASE_HEX, NULL, 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_dea_flags_bit0, + { "NSWO-Authorization", "diameter.3gpp.dea_flags_bit0", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_dea_flags_bit1, + { "TWAN-S2a-Connectivity-Indicator", "diameter.3gpp.dea_flags_bit1", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_rar_flags, + { "RAR Flags", "diameter.3gpp.rar_flags", + FT_UINT32, BASE_HEX, NULL, 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_rar_flags_bit0, + { "Trust-Relationship-Update-indication", "diameter.3gpp.rar_flags_bit0", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_rar_flags_bit1, + { "P-CSCF Restoration Request", "diameter.3gpp.rar_flags_bit1", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_der_s6b_flags, + { "RAR Flags", "diameter.3gpp.rar_flags", + FT_UINT32, BASE_HEX, NULL, 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_der_s6b_flags_bit0, + { "Initial-Attach-Indicator", "diameter.3gpp.rar_flags_bit0", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, + NULL, HFILL } + }, { &hf_diameter_3gpp_ipv6addr, { "IPv6 Address", "diameter.3gpp.ipv6addr", FT_IPv6, BASE_NONE, NULL, 0x0, @@ -3311,6 +3549,11 @@ proto_register_diameter_3gpp(void) &diameter_3gpp_pua_flags_ett, &diameter_3gpp_nor_flags_ett, &diameter_3gpp_idr_flags_ett, + &diameter_3gpp_ppr_flags_ett, + &diameter_3gpp_der_flags_ett, + &diameter_3gpp_dea_flags_ett, + &diameter_3gpp_rar_flags_ett, + &diameter_3gpp_der_s6b_flags_ett, &diameter_3gpp_mbms_bearer_event_ett, &diameter_3gpp_mbms_bearer_result_ett, &diameter_3gpp_tmgi_allocation_result_ett, |