diff options
-rw-r--r-- | diameter/TGPP.xml | 5 | ||||
-rw-r--r-- | epan/dissectors/packet-diameter_3gpp.c | 20 | ||||
-rw-r--r-- | epan/dissectors/packet-diameter_3gpp.h | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-gtpv2.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-gtpv2.h | 1 |
5 files changed, 26 insertions, 5 deletions
diff --git a/diameter/TGPP.xml b/diameter/TGPP.xml index 31ce080dfe..2b6c48e6d0 100644 --- a/diameter/TGPP.xml +++ b/diameter/TGPP.xml @@ -100,10 +100,11 @@ <!-- <avp name="Reserved" code="28" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="must" vendor-id="TGPP"> <type type-name="OctetString"/> - </avp> - <avp name="Reserved" code="29" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="must" vendor-id="TGPP"> + </avp> --> + <avp name="3GPP-TWAN-Identifier" code="29" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="must" vendor-id="TGPP"> <type type-name="OctetString"/> </avp> + <!-- <avp name="Reserved" code="30" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="must" vendor-id="TGPP"> <type type-name="OctetString"/> </avp> diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c index c2d7b3ca4e..f4e8ffed7e 100644 --- a/epan/dissectors/packet-diameter_3gpp.c +++ b/epan/dissectors/packet-diameter_3gpp.c @@ -35,6 +35,7 @@ #include "packet-diameter.h" #include "packet-diameter_3gpp.h" #include "packet-gsm_a_common.h" +#include "packet-gtpv2.h" #include "packet-e164.h" #include "packet-e212.h" #include "packet-ntp.h" @@ -562,6 +563,19 @@ dissect_diameter_3gpp_ms_timezone(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t return offset; } +/* AVP Code: 29 3GPP-TWAN-Identifier + * 3GPP TS 29.061 V14.2.0 (2016-12) +*/ +static int +dissect_diameter_3gpp_twan_identifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + int length = tvb_reported_length(tvb); + + dissect_gtpv2_twan_identifier(tvb, pinfo, tree, NULL, length, 0, 0, NULL); + + return length; +} + /* * AVP Code: 504 AF-Application-Identifier */ @@ -2067,6 +2081,9 @@ proto_reg_handoff_diameter_3gpp(void) /* AVP Code: 23 3GPP-MS-TimeZone */ dissector_add_uint("diameter.3gpp", 23, create_dissector_handle(dissect_diameter_3gpp_ms_timezone, proto_diameter_3gpp)); + /* AVP Code: 29 3GPP-TWAN-Identifier */ + dissector_add_uint("diameter.3gpp", 29, create_dissector_handle(dissect_diameter_3gpp_twan_identifier, proto_diameter_3gpp)); + /* AVP Code: 504 AF-Application-Identifier */ dissector_add_uint("diameter.3gpp", 504, create_dissector_handle(dissect_diameter_3gpp_af_application_identifier, proto_diameter_3gpp)); @@ -4073,8 +4090,9 @@ proto_register_diameter_3gpp(void) { &hf_diameter_3gpp_emergency_ind_flags_spare_bits, { "Spare", "diameter.3gpp.emergency_ind_flags_spare", FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE, - NULL, HFILL} + NULL, HFILL } }, + }; diff --git a/epan/dissectors/packet-diameter_3gpp.h b/epan/dissectors/packet-diameter_3gpp.h index 44f4b90af6..e4a7fe3271 100644 --- a/epan/dissectors/packet-diameter_3gpp.h +++ b/epan/dissectors/packet-diameter_3gpp.h @@ -90,6 +90,6 @@ static const value_string diameter_3gpp_termination_cause_vals[] = { * indent-tabs-mode: nil * End: * - * ex: set shiftwidt=4 tabstop=8 expandtab: + * ex: set shiftwidth=4 tabstop=8 expandtab: * :indentSize=4:tabSize=8:noTabs=true: */ diff --git a/epan/dissectors/packet-gtpv2.c b/epan/dissectors/packet-gtpv2.c index 41bfd28aca..cd5a7ad5a6 100644 --- a/epan/dissectors/packet-gtpv2.c +++ b/epan/dissectors/packet-gtpv2.c @@ -5827,7 +5827,8 @@ static const value_string gtpv2_twan_relay_id_type_vals[] = { { 1, "FQDN" }, { 0, NULL } }; -static void + +void dissect_gtpv2_twan_identifier(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_, session_args_t * args _U_) { int offset = 0; diff --git a/epan/dissectors/packet-gtpv2.h b/epan/dissectors/packet-gtpv2.h index 6e6d55fb4b..08f6fc790d 100644 --- a/epan/dissectors/packet-gtpv2.h +++ b/epan/dissectors/packet-gtpv2.h @@ -27,6 +27,7 @@ extern void dissect_gtpv2_arp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree extern void dissect_gtpv2_fq_csid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_, session_args_t * args _U_); extern void dissect_gtpv2_selec_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_, session_args_t * args _U_); extern void dissect_gtpv2_epc_timer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_, session_args_t * args _U_); +extern void dissect_gtpv2_twan_identifier(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_, session_args_t * args _U_); /*Used by custom dissector*/ extern gchar* dissect_gtpv2_tai(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset); extern value_string_ext gtpv2_cause_vals_ext; |