aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--diameter/TGPP.xml5
-rw-r--r--epan/dissectors/packet-diameter_3gpp.c20
-rw-r--r--epan/dissectors/packet-diameter_3gpp.h2
-rw-r--r--epan/dissectors/packet-gtpv2.c3
-rw-r--r--epan/dissectors/packet-gtpv2.h1
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;