aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-gtpv2.c
diff options
context:
space:
mode:
authorAndersBroman <anders.broman@ericsson.com>2016-11-01 13:14:47 +0100
committerAnders Broman <a.broman58@gmail.com>2016-11-01 15:42:53 +0000
commit9a187cca7412707fa6272f7addf70fec5eaa1489 (patch)
tree977d04c35e47e33f7b64d66c7d90002b6c81b3b0 /epan/dissectors/packet-gtpv2.c
parentb54347127d47276bd023736ee7715ed27557417b (diff)
[GTPv2] Basic dissection of IE Integer Number and value_string updates.
Change-Id: I4b5fa57121b56daf55ac2ae3a966679c5ab874fb Reviewed-on: https://code.wireshark.org/review/18602 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-gtpv2.c')
-rw-r--r--epan/dissectors/packet-gtpv2.c79
1 files changed, 66 insertions, 13 deletions
diff --git a/epan/dissectors/packet-gtpv2.c b/epan/dissectors/packet-gtpv2.c
index 608b624144..705861a5a2 100644
--- a/epan/dissectors/packet-gtpv2.c
+++ b/epan/dissectors/packet-gtpv2.c
@@ -1,7 +1,7 @@
/* packet-gtpv2.c
*
* Routines for GTPv2 dissection
- * Copyright 2009 - 2015, Anders Broman <anders.broman [at] ericsson.com>
+ * Copyright 2009 - 2016, Anders Broman <anders.broman [at] ericsson.com>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@@ -559,6 +559,7 @@ static int hf_gtpv2_twan_relay_id_ipv4 = -1;
static int hf_gtpv2_twan_relay_id_ipv6 = -1;
static int hf_gtpv2_twan_circuit_id_len = -1;
static int hf_gtpv2_twan_circuit_id = -1;
+static int hf_gtpv2_integer_number_val = -1;
static gint ett_gtpv2 = -1;
static gint ett_gtpv2_flags = -1;
@@ -625,6 +626,7 @@ static expert_field ei_gtpv2_fq_csid_type_bad = EI_INIT;
static expert_field ei_gtpv2_mbms_session_duration_days = EI_INIT;
static expert_field ei_gtpv2_mbms_session_duration_secs = EI_INIT;
static expert_field ei_gtpv2_ie = EI_INIT;
+static expert_field ei_gtpv2_int_size_not_handled = EI_INIT;
/* Definition of User Location Info (AVP 22) masks */
@@ -693,10 +695,13 @@ static const value_string gtpv2_message_type_vals[] = {
{ 35, "Modify Bearer Response"},
{ 36, "Delete Session Request"},
{ 37, "Delete Session Response"},
- /* SGSN to PGW (S4, S5/S8) */
+ /* SGSN/MME to PGW (S4/S11, S5/S8) */
{ 38, "Change Notification Request"},
{ 39, "Change Notification Response"},
- /* 40-63 For future use */
+ /* MME to PGW (S11, S5/S8) */
+ { 40, "Remote UE Report Notification" },
+ { 41, "Remote UE Report Acknowledge" },
+ /* 42-63 For future use */
/* Messages without explicit response */
{ 64, "Modify Bearer Command"}, /* (MME/SGSN to PGW -S11/S4, S5/S8) */
{ 65, "Modify Bearer Failure Indication"}, /*(PGW to MME/SGSN -S5/S8, S11/S4) */
@@ -709,7 +714,7 @@ static const value_string gtpv2_message_type_vals[] = {
{ 72, "Trace Session Deactivation"},
{ 73, "Stop Paging Indication"},
/* 74-94 For future use */
- /* PDN-GW to SGSN/MME (S5/S8, S4/S11) */
+ /* PGW to SGSN/MME/ TWAN/ePDG (S5/S8, S4/S11, S2a, S2b) */
{ 95, "Create Bearer Request"},
{ 96, "Create Bearer Response"},
{ 97, "Update Bearer Request"},
@@ -719,7 +724,10 @@ static const value_string gtpv2_message_type_vals[] = {
/* PGW to MME, MME to PGW, SGW to PGW, SGW to MME (S5/S8, S11) */
{101, "Delete PDN Connection Set Request"},
{102, "Delete PDN Connection Set Response"},
- /* 103-127 For future use */
+ /* PGW to SGSN/MME(S5, S4/S11) */
+ {103, "PGW Downlink Triggering Notification" },
+ {104, "PGW Downlink Triggering Acknowledge" },
+ /* 105-127 For future use */
/* MME to MME, SGSN to MME, MME to SGSN, SGSN to SGSN (S3/10/S16) */
{128, "Identification Request"},
{129, "Identification Response"},
@@ -744,8 +752,10 @@ static const value_string gtpv2_message_type_vals[] = {
{153, "Alert MME Notification"},
{154, "Alert MME Acknowledge"},
{155, "UE Activity Notification"},
- {156, "UE Activity Acknowledge"},
- /* 157 to 159 For future use */
+ {156, "UE Activity Acknowledge" },
+ {157, "ISR Status Indication" },
+ {158, "UE Registration Query Request" },
+ {159, "UE Registration Query Response" },
/* MME to SGW (S11) */
{160, "Create Forwarding Tunnel Request"},
{161, "Create Forwarding Tunnel Response"},
@@ -783,6 +793,7 @@ static const value_string gtpv2_message_type_vals[] = {
{235, "MBMS Session Stop Request"},
{236, "MBMS Session Stop Response"},
/* 237 to 239 For future use */
+ /* Reserved for Sv interface (see also types 25 to 31) TS 29.280 */
{240, "SRVCC CS to PS Response"}, /* 5.2.9 3GPP TS 29.280 V11.5.0 (2013-09) */
{241, "SRVCC CS to PS Complete Notification"}, /* 5.2.10 3GPP TS 29.280 V11.5.0 (2013-09) */
{242, "SRVCC CS to PS Complete Acknowledge"}, /* 5.2.11 3GPP TS 29.280 V11.5.0 (2013-09) */
@@ -919,8 +930,8 @@ static value_string_ext gtpv2_message_type_vals_ext = VALUE_STRING_EXT_INIT(gtpv
#define GTPV2_IE_TRUST_WLAN_MODE_IND 174
#define GTPV2_IE_NODE_NUMBER 175
#define GTPV2_IE_NODE_IDENTIFIER 176
-#define GTPV2_IE_PRES_REP_AREA_ACT 177
-#define GTPV2_IE_PRES_REP_AREA_INF 178
+#define GTPV2_IE_PRES_REP_AREA_ACT 177
+#define GTPV2_IE_PRES_REP_AREA_INF 178
#define GTPV2_IE_TWAN_ID_TS 179
#define GTPV2_IE_OVERLOAD_CONTROL_INF 180
#define GTPV2_IE_LOAD_CONTROL_INF 181
@@ -929,7 +940,26 @@ static value_string_ext gtpv2_message_type_vals_ext = VALUE_STRING_EXT_INIT(gtpv
#define GTPV2_IE_APN_AND_REL_CAP 184
/* 185: WLAN Offloadability Indication*/
#define GTPV2_IE_PAGING_AND_SERVICE_INF 186
+#define GTPV2_IE_INTEGER_NUMBER 187
+/*
+188 Millisecond Time Stamp
+189 Monitoring Event Information
+190 ECGI List
+191 Remote UE Context
+192 Remote User ID
+193 Remote UE IP information
+194 CIoT Optimizations Support Indication
+195 SCEF PDN Connection
+196 Header Compression Configuration
+197 Extended Protocol Configuration Options (ePCO)
+198 Serving PLMN Rate Control
+199 Counter
+200 to 253 Spare. For future use.
+254 Special IE type for IE Type Extension
+255 Private Extension
+256 to 65535 Spare. For future use.
+*/
/* 169 to 254 reserved for future use */
#define GTPV2_IE_PRIVATE_EXT 255
@@ -950,7 +980,6 @@ static const value_string gtpv2_element_type_vals[] = {
{ 2, "Cause"}, /* Variable Length / 8.4 */
{ 3, "Recovery (Restart Counter)"}, /* Variable Length / 8.5 */
/* 4-34 Reserved for S101 interface Extendable / See 3GPP TS 29.276 [14] */
- /* 4-34 Reserved for S101 interface Extendable / See 3GPP TS 29.276 [14] */
/* 35-50 / See 3GPP TS 29.276 */
/*Start SRVCC Messages ETSI TS 129 280 V10.1.0 (2011-06) 6.1*/
{ 51, "STN-SR"}, /* Variable Length / 6.2 */
@@ -1095,8 +1124,8 @@ static const value_string gtpv2_element_type_vals[] = {
{196, "Header Compression Configuration"}, /* Extendable / 8.127 */
{197, "Extended Protocol Configuration Options(ePCO)"}, /* Variable Length / 8.128 */
{198, "Serving PLMN Rate Control"}, /* Extendable / 8.129 */
- /* 199 to 254 Spare. For future use. */
-
+ {199, "Counter" }, /* Extendable / 8.130 */
+ /* 1200 to 254 Spare. For future use. */
{255, "Private Extension"}, /* Variable Length / 8.67 */
{0, NULL}
};
@@ -6307,6 +6336,28 @@ dissect_gtpv2_paging_and_service_inf(tvbuff_t *tvb, packet_info *pinfo _U_, prot
proto_tree_add_item(tree, hf_gtpv2_ppi_value, tvb, offset, 1, ENC_BIG_ENDIAN);
}
}
+/*
+ * 8.118 Integer Number
+ */
+static void
+dissect_gtpv2_integer_number(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, guint8 instance _U_, session_args_t * args _U_)
+{
+ int offset = 0;
+ /* The Integer Number value shall be encoded as further described below for the following information elements:
+ * Maximum Wait Time IE: the length shall be set to 2, i.e. the integer number value shall be encoded as a 16 bit unsigned integer.
+ * DL Buffering Suggested Packet Count IE: the length shall be set to 1 or 2;
+ * UE Usage Type IE: the length shall be set to 1, i.e. the integer number value shall be encoded as a 8 bit unsigned integer as specified in subclause 7.3.202 of 3GPP TS 29.272 [70].
+ */
+ if (length <= 4) {
+ /* Only handle up to 32 bits for now */
+ proto_tree_add_item(tree, hf_gtpv2_integer_number_val, tvb, offset, length, ENC_BIG_ENDIAN);
+ } else {
+ /* value not handled, yet*/
+ proto_tree_add_expert(tree, pinfo, &ei_gtpv2_int_size_not_handled, tvb, offset, length);
+
+ }
+
+}
typedef struct _gtpv2_ie {
int ie_type;
@@ -6449,7 +6500,7 @@ static const gtpv2_ie_t gtpv2_ies[] = {
/* 185, 8.116 WLAN Offloadability Indication */
{GTPV2_IE_PAGING_AND_SERVICE_INF, dissect_gtpv2_paging_and_service_inf}, /* 186, 8.117 Paging and Service Information */
- /* 187, 8.118 Integer Number */
+ { GTPV2_IE_INTEGER_NUMBER, dissect_gtpv2_integer_number }, /* 187, 8.118 Integer Number */
/* 188, 8.119 Millisecond Time Stamp */
/* 189, 8.120 Monitoring Event Information */
/* 190, 8.121 ECGI List */
@@ -8966,6 +9017,7 @@ void proto_register_gtpv2(void)
{ &hf_gtpv2_twan_relay_id_ipv6,{ "Relay Identity", "gtpv2.twan_id.relay_id_ipv6", FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_gtpv2_twan_circuit_id_len,{ "Relay Identity Type Length", "gtpv2.twan_id.relay_id_type_len", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_gtpv2_twan_circuit_id,{ "Circuit-ID", "gtpv2.twan_id.circuit_id", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_gtpv2_integer_number_val,{ "Value", "gtpv2.integer_number_val", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
};
static gint *ett_gtpv2_array[] = {
@@ -9036,6 +9088,7 @@ void proto_register_gtpv2(void)
{ &ei_gtpv2_mbms_session_duration_days, { "gtpv2.mbms_session_duration_days.invalid", PI_PROTOCOL, PI_WARN, "Days out of allowed range", EXPFILL }},
{ &ei_gtpv2_mbms_session_duration_secs, { "gtpv2.mbms_session_duration_secs.unknown", PI_PROTOCOL, PI_WARN, "Seconds out of allowed range", EXPFILL }},
{ &ei_gtpv2_ie, { "gtpv2.ie_type.reserved", PI_PROTOCOL, PI_WARN, "IE type Zero is Reserved and should not be used", EXPFILL }},
+ { &ei_gtpv2_int_size_not_handled,{ "gtpv2.ie_type.int_size_not_handled", PI_PROTOCOL, PI_WARN, "Integer size not handled yet", EXPFILL } },
};
expert_module_t* expert_gtpv2;