aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2006-08-27 20:30:01 +0000
committerAnders Broman <anders.broman@ericsson.com>2006-08-27 20:30:01 +0000
commit65267d932f9accfeb704003b903074286190205d (patch)
treee6f01dbc66af0de44d080738d2fa3ba2631d865d /epan/dissectors
parent2c525a1d73433dacd89499e61343a61a8e6d16ed (diff)
Do some more of the relase 6 stuff.
svn path=/trunk/; revision=19056
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-bssgp.c71
-rw-r--r--epan/dissectors/packet-bssgp.h1
-rw-r--r--epan/dissectors/packet-gtp.c581
3 files changed, 519 insertions, 134 deletions
diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c
index 46964bd3d9..39596bfb1d 100644
--- a/epan/dissectors/packet-bssgp.c
+++ b/epan/dissectors/packet-bssgp.c
@@ -1717,12 +1717,7 @@ decode_iei_bvci(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
}
}
-static void
-decode_iei_cause(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
- proto_item *ti;
- guint8 value;
-
- static const value_string tab_cause[] = {
+const value_string tab_cause[] = {
{ 0x00, "Processor overload" },
{ 0x01, "Equipment failure" },
{ 0x02, "Transit network service failure" },
@@ -1754,6 +1749,12 @@ decode_iei_cause(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
{ 0, NULL },
};
+static void
+decode_iei_cause(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
+ proto_item *ti;
+ guint8 value;
+
+
if (bi->bssgp_tree) {
ti = bssgp_proto_tree_add_ie(ie, bi, ie_start_offset);
value = tvb_get_guint8(bi->tvb, bi->offset);
@@ -1765,6 +1766,9 @@ decode_iei_cause(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
bi->offset += ie->value_length;
}
+/*
+ * 11.3.9 Cell Identifier 3GPP TS 48.018 version 6.7.0 Release 6
+ */
static void
decode_iei_cell_identifier(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
proto_item *ti;
@@ -1784,6 +1788,9 @@ decode_iei_cell_identifier(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset
}
+/*
+ * 11.3.10 Channel needed
+ */
static void
decode_iei_channel_needed(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
/* XXX: 'If this IE is used for only one MS, the the first CHANNEL field
@@ -1806,7 +1813,9 @@ decode_iei_channel_needed(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset)
}
bi->offset += ie->value_length;
}
-
+/*
+ * 11.3.11 DRX Parameters
+ */
static void
decode_iei_drx_parameters(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
const guint8 MASK_CYCLE_LENGTH_COEFFICIENT = 0xf0;
@@ -1922,6 +1931,10 @@ decode_iei_drx_parameters(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset)
bi->offset++;
}
+/*
+ * 11.3.12 eMLPP-Priority
+ */
+
static void
decode_iei_emlpp_priority(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
const guint8 MASK_CALL_PRIORITY = 0x07;
@@ -1949,6 +1962,9 @@ decode_iei_emlpp_priority(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset)
}
bi->offset += ie->value_length;
}
+/*
+ * 11.3.13 Flush Action
+ */
static void
decode_iei_flush_action(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
@@ -1972,12 +1988,17 @@ decode_iei_flush_action(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
}
bi->offset += ie->value_length;
}
+/*
+ * 11.3.16 LLC Frames Discarded
+ */
static void
decode_iei_llc_frames_discarded(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
decode_simple_ie(ie, bi, ie_start_offset, "", " frames discarded", TRUE);
}
-
+/*
+ * 11.3.17 Location Area
+ */
static void
decode_iei_location_area(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
proto_item *ti;
@@ -2581,7 +2602,9 @@ decode_msrac_value_part(proto_tree *tree, tvbuff_t *tvb, guint64 bo) {
decode_msrac_value_part(tree, tvb, bo);
}
}
-
+/*
+ * 11.3.22 MS Radio Access Capability
+ */
static void
decode_iei_ms_radio_access_capability(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
proto_item *ti;
@@ -2593,11 +2616,17 @@ decode_iei_ms_radio_access_capability(bssgp_ie_t *ie, build_info_t *bi, int ie_s
}
ti = bssgp_proto_tree_add_ie(ie, bi, ie_start_offset);
tf = proto_item_add_subtree(ti, ett_bssgp_ms_radio_access_capability);
-
+ /* Rest of element coded as the value part defined in
+ * 3GPP TS 24.008, not including 3GPP TS 24.008 IEI and
+ * 3GPP TS 24.008 octet length indicator.
+ * 10.5.5.12a MS Radio Access capability
+ */
decode_msrac_value_part(tf, bi->tvb, bi->offset * 8);
bi->offset += ie->value_length;
}
-
+/*
+ * 11.3.23 OMC Id
+ */
static void
decode_iei_omc_id(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
/* XXX: Translation: where in 3GPP TS 12.20? */
@@ -2609,7 +2638,9 @@ decode_iei_omc_id(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
}
bi->offset += ie->value_length;
}
-
+/*
+ * 11.3.24 PDU In Error
+ */
static void
decode_iei_pdu_in_error(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
proto_item *ti;
@@ -2684,7 +2715,9 @@ decode_iei_priority(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
bi->offset += ie->value_length;
}
-
+/*
+ * 11.3.28 QoS Profile
+ */
static void
decode_iei_qos_profile(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
const guint8 MASK_CR_BIT = 0x20;
@@ -2763,7 +2796,9 @@ decode_iei_qos_profile(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
proto_item_append_text(pi, " (%#x)", value);
bi->offset++;
}
-
+/*
+ * 11.3.29 Radio Cause
+ */
static void
decode_iei_radio_cause(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
proto_item *ti;
@@ -4076,7 +4111,9 @@ decode_iei_application_error(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offs
}
}
-
+/*
+ * 11.3.63.1.1 RAN-INFORMATION-REQUEST Application Container for the NACC Application
+ */
static void
decode_iei_ran_information_request_application_container(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) {
proto_item *ti;
@@ -4087,6 +4124,10 @@ decode_iei_ran_information_request_application_container(bssgp_ie_t *ie, build_i
ti = bssgp_proto_tree_add_ie(ie, bi, ie_start_offset);
tf = proto_item_add_subtree(ti, ett_bssgp_ran_information_container_unit);
+ /*
+ * Octet 3-10 Reporting Cell Identifier:
+ * This field is encoded as the Cell Identifier defined in sub-clause 11.3.9
+ */
rai_ci = decode_rai_ci(bi, tf);
proto_item_append_text(ti, ": %s", rai_ci);
diff --git a/epan/dissectors/packet-bssgp.h b/epan/dissectors/packet-bssgp.h
index 53104dc650..e61412e339 100644
--- a/epan/dissectors/packet-bssgp.h
+++ b/epan/dissectors/packet-bssgp.h
@@ -47,5 +47,6 @@ typedef struct {
guint8 pdutype;
} build_info_t;
+extern const value_string tab_cause[];
#endif /* __PACKET_BSSGP_H__ */ \ No newline at end of file
diff --git a/epan/dissectors/packet-gtp.c b/epan/dissectors/packet-gtp.c
index 355b1ba202..adf6205964 100644
--- a/epan/dissectors/packet-gtp.c
+++ b/epan/dissectors/packet-gtp.c
@@ -50,6 +50,7 @@
#include "packet-gsm_map.h"
#include "packet-per.h"
#include "packet-ranap.h"
+#include "packet-bssgp.h"
static dissector_table_t ppp_subdissector_table;
@@ -194,6 +195,7 @@ static int hf_gtp_ext_geo_loc_type = -1;
static int hf_gtp_ext_sac = -1;
static int hf_gtp_ext_imeisv = -1;
static int hf_gtp_targetid = -1;
+static int hf_gtp_bssgp_cause = -1;
/* Initialize the subtree pointers */
@@ -382,6 +384,26 @@ static const value_string pt_types[] = {
#define GTP_MSG_FORW_SRNS_CNTXT 0x3A
#define GTP_MSG_FORW_RELOC_ACK 0x3B
#define GTP_MSG_FORW_SRNS_CNTXT_ACK 0x3C
+
+#define GTP_MSG_RAN_INFO_RELAY 70
+#define GTP_MBMS_NOTIFY_REQ 96
+#define GTP_MBMS_NOTIFY_RES 97
+#define GTP_MBMS_NOTIFY_REJ_REQ 98
+#define GTP_MBMS_NOTIFY_REJ_RES 99
+#define GTP_CREATE_MBMS_CNTXT_REQ 100
+#define GTP_CREATE_MBMS_CNTXT_RES 101
+#define GTP_UPD_MBMS_CNTXT_REQ 102
+#define GTP_UPD_MBMS_CNTXT_RES 103
+#define GTP_DEL_MBMS_CNTXT_REQ 104
+#define GTP_DEL_MBMS_CNTXT_RES 105
+#define GTP_MBMS_REG_REQ 112
+#define GTP_MBMS_REG_RES 113
+#define GTP_MBMS_DE_REG_REQ 114
+#define GTP_MBMS_DE_REG_RES 115
+#define GTP_MBMS_SES_START_REQ 116
+#define GTP_MBMS_SES_START_RES 117
+#define GTP_MBMS_SES_STOP_REQ 118
+#define GTP_MBMS_SES_STOP_RES 119
#define GTP_MSG_DATA_TRANSF_REQ 0xF0
#define GTP_MSG_DATA_TRANSF_RESP 0xF1
#define GTP_MSG_TPDU 0xFF
@@ -430,6 +452,25 @@ static const value_string message_type[] = {
{ GTP_MSG_FORW_SRNS_CNTXT, "Forward SRNS context" },
{ GTP_MSG_FORW_RELOC_ACK, "Forward relocation complete acknowledge" },
{ GTP_MSG_FORW_SRNS_CNTXT_ACK, "Forward SRNS context acknowledge" },
+ { GTP_MSG_RAN_INFO_RELAY, "RAN Information Relay" },
+ { GTP_MBMS_NOTIFY_REQ, "MBMS Notification Request" },
+ { GTP_MBMS_NOTIFY_RES, "MBMS Notification Response" },
+ { GTP_MBMS_NOTIFY_REJ_REQ, "MBMS Notification Reject Request" },
+ { GTP_MBMS_NOTIFY_REJ_RES, "MBMS Notification Reject Response" },
+ { GTP_CREATE_MBMS_CNTXT_REQ, "Create MBMS Context Request" },
+ { GTP_CREATE_MBMS_CNTXT_RES, "Create MBMS Context Response" },
+ { GTP_UPD_MBMS_CNTXT_REQ, "Update MBMS Context Request" },
+ { GTP_UPD_MBMS_CNTXT_RES, "Update MBMS Context Response" },
+ { GTP_DEL_MBMS_CNTXT_REQ, "Delete MBMS Context Request" },
+ { GTP_DEL_MBMS_CNTXT_RES, "Delete MBMS Context Response" },
+ { GTP_MBMS_REG_REQ, "MBMS Registration Request" },
+ { GTP_MBMS_REG_RES, "MBMS Registration Response" },
+ { GTP_MBMS_DE_REG_REQ, "MBMS De-Registration Request" },
+ { GTP_MBMS_DE_REG_RES, "MBMS De-Registration Response" },
+ { GTP_MBMS_SES_START_REQ, "MBMS Session Start Request" },
+ { GTP_MBMS_SES_START_RES, "MBMS Session Start Response" },
+ { GTP_MBMS_SES_STOP_REQ, "MBMS Session Stop Request" },
+ { GTP_MBMS_SES_STOP_RES, "MBMS Session Stop Response" },
{ GTP_MSG_DATA_TRANSF_REQ, "Data record transfer request" },
{ GTP_MSG_DATA_TRANSF_RESP, "Data record transfer response" },
{ GTP_MSG_TPDU, "T-PDU" },
@@ -1791,12 +1832,12 @@ static _gtp_mess_items gprs_mess_items[] = {
},
{
GTP_MSG_SEND_ROUT_INFO_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_IMSI, GTP_MANDATORY },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_IMSI, GTP_MANDATORY },
{ GTP_EXT_MAP_CAUSE, GTP_OPTIONAL },
{ GTP_EXT_MS_REASON, GTP_OPTIONAL },
- { GTP_EXT_GSN_ADDR, GTP_OPTIONAL },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_GSN_ADDR, GTP_OPTIONAL },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
@@ -1908,7 +1949,7 @@ static _gtp_mess_items gprs_mess_items[] = {
* UMTS messages
* -----------------------------*/
static _gtp_mess_items umts_mess_items[] = {
-
+ /* 7.2 Path Management Messages */
{
GTP_MSG_ECHO_REQ, {
{ GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
@@ -1928,6 +1969,13 @@ static _gtp_mess_items umts_mess_items[] = {
}
},
{
+ GTP_MSG_SUPP_EXT_HDR, {
+ { GTP_EXT_HDR_LIST, GTP_MANDATORY },
+ { 0, 0 }
+ }
+},
+ /* ??? */
+{
GTP_MSG_NODE_ALIVE_REQ, {
{ GTP_EXT_NODE_ADDR, GTP_MANDATORY },
{ GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
@@ -1953,9 +2001,12 @@ static _gtp_mess_items umts_mess_items[] = {
{ 0, 0 }
}
},
+ /* 7.3 Tunnel Management Messages */
{
GTP_MSG_CREATE_PDP_REQ, {
{ GTP_EXT_IMSI, GTP_CONDITIONAL },
+ /* RAI is in TS 29.060 V6.11.0 */
+ { GTP_EXT_RAI, GTP_OPTIONAL }, /* Routeing Area Identity (RAI) Optional 7.7.3 */
{ GTP_EXT_RECOVER, GTP_OPTIONAL },
{ GTP_EXT_SEL_MODE, GTP_CONDITIONAL },
{ GTP_EXT_TEID, GTP_MANDATORY },
@@ -2002,224 +2053,238 @@ static _gtp_mess_items umts_mess_items[] = {
{ GTP_EXT_QOS_UMTS, GTP_CONDITIONAL },
{ GTP_EXT_CHRG_ADDR, GTP_OPTIONAL },
/* TS 29.060 V6.11.0 */
- /* Alternative Charging Gateway Address Optional 7.7.44 */
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
- /* Common Flags Optional 7.7.48 */
+ { GTP_EXT_CHRG_ADDR, GTP_OPTIONAL }, /* Alternative Charging Gateway Address Optional 7.7.44 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_COMMON_FLGS, GTP_OPTIONAL }, /* Common Flags Optional 7.7.48 */
{ GTP_EXT_APN_RES, GTP_OPTIONAL }, /* APN Restriction Optional 7.7.49 */
{ 0, 0 }
}
},
{ /* checked, SGSN -> GGSN */
GTP_MSG_UPDATE_PDP_REQ, {
- { GTP_EXT_IMSI, GTP_CONDITIONAL },
- { GTP_EXT_RECOVER, GTP_OPTIONAL },
- { GTP_EXT_TEID, GTP_MANDATORY },
- { GTP_EXT_TEID_CP, GTP_CONDITIONAL },
- { GTP_EXT_NSAPI, GTP_MANDATORY },
+ { GTP_EXT_IMSI, GTP_CONDITIONAL },
+ { GTP_EXT_RAI, GTP_OPTIONAL }, /* Routeing Area Identity (RAI) Optional 7.7.3 */
+ { GTP_EXT_RECOVER, GTP_OPTIONAL },
+ { GTP_EXT_TEID, GTP_MANDATORY },
+ { GTP_EXT_TEID_CP, GTP_CONDITIONAL },
+ { GTP_EXT_NSAPI, GTP_MANDATORY },
{ GTP_EXT_TRACE_REF, GTP_OPTIONAL },
{ GTP_EXT_TRACE_TYPE, GTP_OPTIONAL },
- { GTP_EXT_GSN_ADDR, GTP_MANDATORY },
- { GTP_EXT_GSN_ADDR, GTP_MANDATORY },
- { GTP_EXT_QOS_UMTS, GTP_MANDATORY },
- { GTP_EXT_TFT, GTP_OPTIONAL },
+ { GTP_EXT_PROTO_CONF, GTP_OPTIONAL }, /* Protocol Configuration Options Optional 7.7.31 */
+ { GTP_EXT_GSN_ADDR, GTP_MANDATORY }, /* SGSN Address for Control Plane Mandatory GSN Address 7.7.32 */
+ { GTP_EXT_GSN_ADDR, GTP_MANDATORY }, /* SGSN Address for User Traffic Mandatory GSN Address 7.7.32 */
+ { GTP_EXT_GSN_ADDR, GTP_OPTIONAL }, /* Alternative SGSN Address for Control Plane Conditional GSN Address 7.7.32 */
+ { GTP_EXT_GSN_ADDR, GTP_OPTIONAL }, /* Alternative SGSN Address for User Traffic Conditional GSN Address 7.7.32 */
+ { GTP_EXT_QOS_UMTS, GTP_MANDATORY },
+ { GTP_EXT_TFT, GTP_OPTIONAL },
{ GTP_EXT_TRIGGER_ID, GTP_OPTIONAL },
- { GTP_EXT_OMC_ID, GTP_OPTIONAL },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_OMC_ID, GTP_OPTIONAL },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ GTP_EXT_RAT_TYPE, GTP_OPTIONAL }, /* RAT Type Optional 7.7.50 */
{ GTP_EXT_USR_LOC_INF, GTP_OPTIONAL }, /* User Location Information Optional 7.7.51 */
{ GTP_EXT_MS_TIME_ZONE, GTP_OPTIONAL }, /* MS Time Zone Optional 7.7.52 */
{ GTP_EXT_ADD_TRS_INF, GTP_OPTIONAL }, /* Additonal Trace Info Optional 7.7.62 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{ /* checked, GGSN -> SGSN */
GTP_MSG_UPDATE_PDP_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_RECOVER, GTP_OPTIONAL },
- { GTP_EXT_TEID, GTP_CONDITIONAL },
- { GTP_EXT_TEID_CP, GTP_CONDITIONAL },
- { GTP_EXT_CHRG_ID, GTP_CONDITIONAL },
- { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL },
- { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL },
- { GTP_EXT_QOS_UMTS, GTP_CONDITIONAL },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_RECOVER, GTP_OPTIONAL },
+ { GTP_EXT_TEID, GTP_CONDITIONAL },
+ { GTP_EXT_TEID_CP, GTP_CONDITIONAL },
+ { GTP_EXT_CHRG_ID, GTP_CONDITIONAL },
+ { GTP_EXT_PROTO_CONF, GTP_OPTIONAL }, /* Protocol Configuration Options Optional 7.7.31 */
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL },
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL },
+ { GTP_EXT_GSN_ADDR, GTP_OPTIONAL }, /* Alternative SGSN Address for Control Plane Conditional GSN Address 7.7.32 */
+ { GTP_EXT_GSN_ADDR, GTP_OPTIONAL }, /* Alternative SGSN Address for User Traffic Conditional GSN Address 7.7.32 */
+ { GTP_EXT_QOS_UMTS, GTP_CONDITIONAL },
{ GTP_EXT_CHRG_ADDR, GTP_OPTIONAL },
- /* Alternative Charging Gateway Address Optional 7.7.44 */
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
- /* Common Flags Optional 7.7.48 */
- /* APN Restriction Optional 7.7.49 */
+ { GTP_EXT_CHRG_ADDR, GTP_OPTIONAL }, /* Alternative Charging Gateway Address Optional 7.7.44 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_COMMON_FLGS, GTP_OPTIONAL }, /* Common Flags Optional 7.7.48 */
+ { GTP_EXT_APN_RES, GTP_OPTIONAL }, /* APN Restriction Optional 7.7.49 */
{ 0, 0 }
}
},
{
GTP_MSG_DELETE_PDP_REQ, {
- { GTP_EXT_TEAR_IND, GTP_CONDITIONAL },
- { GTP_EXT_NSAPI, GTP_MANDATORY },
- /* Protocol Configuration Options Optional 7.7.31 */
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_TEAR_IND, GTP_CONDITIONAL },
+ { GTP_EXT_NSAPI, GTP_MANDATORY },
+ { GTP_EXT_PROTO_CONF, GTP_OPTIONAL }, /* Protocol Configuration Options Optional 7.7.31 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_DELETE_PDP_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- /* Protocol Configuration Options Optional 7.7.31 */
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_PROTO_CONF, GTP_OPTIONAL }, /* Protocol Configuration Options Optional 7.7.31 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_ERR_IND, {
- { GTP_EXT_TEID, GTP_MANDATORY },
- /* GSN Address Mandatory 7.7.32 */
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_TEID, GTP_MANDATORY },
+ { GTP_EXT_GSN_ADDR, GTP_MANDATORY }, /* GSN Address Mandatory 7.7.32 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_PDU_NOTIFY_REQ, {
- { GTP_EXT_IMSI, GTP_MANDATORY },
- { GTP_EXT_TEID_CP, GTP_MANDATORY },
+ { GTP_EXT_IMSI, GTP_MANDATORY },
+ { GTP_EXT_TEID_CP, GTP_MANDATORY },
{ GTP_EXT_USER_ADDR, GTP_MANDATORY },
- { GTP_EXT_APN, GTP_MANDATORY },
- /* Protocol Configuration Options Optional 7.7.31 */
- { GTP_EXT_GSN_ADDR, GTP_MANDATORY },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_APN, GTP_MANDATORY },
+ { GTP_EXT_PROTO_CONF, GTP_OPTIONAL }, /* Protocol Configuration Options Optional 7.7.31 */
+ { GTP_EXT_GSN_ADDR, GTP_MANDATORY },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_PDU_NOTIFY_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_PDU_NOTIFY_REJ_REQ, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_TEID_CP, GTP_MANDATORY },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_TEID_CP, GTP_MANDATORY },
{ GTP_EXT_USER_ADDR, GTP_MANDATORY },
- { GTP_EXT_APN, GTP_MANDATORY },
- /* Protocol Configuration Options Optional 7.7.31 */
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_APN, GTP_MANDATORY },
+ { GTP_EXT_PROTO_CONF, GTP_OPTIONAL }, /* Protocol Configuration Options Optional 7.7.31 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_PDU_NOTIFY_REJ_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
- { 0, 0 }
- }
-},
-{
- GTP_MSG_SUPP_EXT_HDR, {
- { GTP_EXT_HDR_LIST, GTP_MANDATORY },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
+ /* 7.4 Location Management Messages */
{
GTP_MSG_SEND_ROUT_INFO_REQ, {
- { GTP_EXT_IMSI, GTP_MANDATORY },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_IMSI, GTP_MANDATORY },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_SEND_ROUT_INFO_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_IMSI, GTP_MANDATORY },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_IMSI, GTP_MANDATORY },
{ GTP_EXT_MAP_CAUSE, GTP_OPTIONAL },
{ GTPv1_EXT_MS_REASON, GTP_OPTIONAL },
- { GTP_EXT_GSN_ADDR, GTP_OPTIONAL },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_GSN_ADDR, GTP_OPTIONAL },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_FAIL_REP_REQ, {
- { GTP_EXT_IMSI, GTP_MANDATORY },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_IMSI, GTP_MANDATORY },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_FAIL_REP_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
{ GTP_EXT_MAP_CAUSE, GTP_OPTIONAL },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_MS_PRESENT_REQ, {
- { GTP_EXT_IMSI, GTP_MANDATORY },
- { GTP_EXT_GSN_ADDR, GTP_MANDATORY },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_IMSI, GTP_MANDATORY },
+ { GTP_EXT_GSN_ADDR, GTP_MANDATORY },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_MS_PRESENT_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
+ /* 7.5 Mobility Management Messages */
{
GTP_MSG_IDENT_REQ, {
- { GTP_EXT_RAI, GTP_MANDATORY },
- { GTP_EXT_PTMSI, GTP_MANDATORY },
+ { GTP_EXT_RAI, GTP_MANDATORY },
+ { GTP_EXT_PTMSI, GTP_MANDATORY },
{ GTP_EXT_PTMSI_SIG, GTP_CONDITIONAL },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_GSN_ADDR, GTP_OPTIONAL }, /* SGSN Address for Control Plane Optional 7.7.32 */
+ { GTP_EXT_HOP_COUNT, GTP_OPTIONAL }, /* Hop Counter Optional 7.7.63 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_IDENT_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_IMSI, GTP_CONDITIONAL },
- { GTP_EXT_AUTH_TRI, GTP_CONDITIONAL },
- { GTP_EXT_AUTH_QUI, GTP_CONDITIONAL },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_IMSI, GTP_CONDITIONAL },
+ { GTP_EXT_AUTH_TRI, GTP_CONDITIONAL },
+ { GTP_EXT_AUTH_QUI, GTP_CONDITIONAL },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_SGSN_CNTXT_REQ, {
- { GTP_EXT_IMSI, GTP_CONDITIONAL },
- { GTP_EXT_RAI, GTP_MANDATORY },
- { GTP_EXT_TLLI, GTP_CONDITIONAL },
- { GTP_EXT_PTMSI, GTP_CONDITIONAL },
+ { GTP_EXT_IMSI, GTP_CONDITIONAL },
+ { GTP_EXT_RAI, GTP_MANDATORY },
+ { GTP_EXT_TLLI, GTP_CONDITIONAL },
+ { GTP_EXT_PTMSI, GTP_CONDITIONAL },
{ GTP_EXT_PTMSI_SIG, GTP_CONDITIONAL },
- { GTP_EXT_MS_VALID, GTP_OPTIONAL },
- { GTP_EXT_TEID_CP, GTP_MANDATORY },
- { GTP_EXT_GSN_ADDR, GTP_MANDATORY },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_MS_VALID, GTP_OPTIONAL },
+ { GTP_EXT_TEID_CP, GTP_MANDATORY },
+ { GTP_EXT_GSN_ADDR, GTP_MANDATORY },
+ { GTP_EXT_GSN_ADDR, GTP_OPTIONAL }, /* Alternative SGSN Address for Control Plane Optional 7.7.32 */
+ { GTP_EXT_SSGN_NO, GTP_OPTIONAL }, /* SGSN Number Optional 7.7.47 */
+ { GTP_EXT_HOP_COUNT, GTP_OPTIONAL }, /* Hop Counter Optional 7.7.63 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_SGSN_CNTXT_RESP, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_IMSI, GTP_CONDITIONAL },
- { GTP_EXT_TEID_CP, GTP_CONDITIONAL },
- { GTP_EXT_RP_SMS, GTP_OPTIONAL },
- { GTP_EXT_RP, GTP_OPTIONAL },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_IMSI, GTP_CONDITIONAL },
+ { GTP_EXT_TEID_CP, GTP_CONDITIONAL },
+ { GTP_EXT_RAB_CNTXT, GTP_CONDITIONAL }, /* RAB Context Conditional 7.7.19 */
+ { GTP_EXT_RP_SMS, GTP_OPTIONAL },
+ { GTP_EXT_RP, GTP_OPTIONAL },
{ GTP_EXT_PKT_FLOW_ID, GTP_OPTIONAL },
- { GTP_EXT_MM_CNTXT, GTP_CONDITIONAL },
+ { GTP_EXT_CHRG_CHAR, GTP_OPTIONAL }, /* CharingCharacteristics Optional 7.7.23 */
+ { GTP_EXT_RA_PRIO_LCS, GTP_OPTIONAL }, /* Radio Priority LCS Optional 7.7.25B */
+ { GTP_EXT_MM_CNTXT, GTP_CONDITIONAL },
{ GTP_EXT_PDP_CNTXT, GTP_CONDITIONAL },
- { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL },
+ { GTP_EXT_PDP_CONT_PRIO,GTP_OPTIONAL }, /* PDP Context Prioritization Optional 7.7.45 */
+ { GTP_EXT_MBMS_UE_CTX, GTP_OPTIONAL }, /* MBMS UE Context Optional 7.7.55 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
GTP_MSG_SGSN_CNTXT_ACK, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_TEID_II, GTP_CONDITIONAL },
- { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_TEID_II, GTP_CONDITIONAL },
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL },
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
@@ -2228,11 +2293,19 @@ static _gtp_mess_items umts_mess_items[] = {
{ GTP_EXT_IMSI, GTP_MANDATORY },
{ GTP_EXT_TEID_CP, GTP_MANDATORY },
{ GTP_EXT_RANAP_CAUSE, GTP_MANDATORY },
+ { GTP_EXT_CHRG_CHAR, GTP_OPTIONAL }, /* CharingCharacteristics Optional 7.7.23 */
{ GTP_EXT_MM_CNTXT, GTP_MANDATORY },
{ GTP_EXT_PDP_CNTXT, GTP_CONDITIONAL },
{ GTP_EXT_GSN_ADDR, GTP_MANDATORY },
{ GTP_EXT_TARGET_ID, GTP_MANDATORY },
{ GTP_EXT_UTRAN_CONT, GTP_MANDATORY },
+ { GTP_EXT_PDP_CONT_PRIO,GTP_OPTIONAL }, /* PDP Context Prioritization Optional 7.7.45 */
+ { GTP_EXT_MBMS_UE_CTX, GTP_OPTIONAL }, /* MBMS UE Context Optional 7.7.55 */
+ { GTP_EXT_SEL_PLMN_ID, GTP_OPTIONAL }, /* Selected PLMN ID Optional 7.7.64 */
+ { GTP_EXT_PS_HO_REQ_CTX,GTP_OPTIONAL }, /* PS Handover Request Context Optional 7.7.71 */
+ { GTP_EXT_BSS_CONT, GTP_OPTIONAL }, /* BSS Container Optional 7.7.72 */
+ { GTP_EXT_CELL_ID, GTP_OPTIONAL }, /* Cell Identification Optional 7.7.73 */
+ { GTP_EXT_BSSGP_CAUSE, GTP_OPTIONAL }, /* BSSGP Cause Optional 7.7.75 */
{ GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ GTP_EXT_SSGN_NO, GTP_OPTIONAL },
{ 0, 0 }
@@ -2242,10 +2315,12 @@ static _gtp_mess_items umts_mess_items[] = {
GTP_MSG_FORW_RELOC_RESP, {
{ GTP_EXT_CAUSE, GTP_MANDATORY },
{ GTP_EXT_TEID_CP, GTP_CONDITIONAL },
+ { GTP_EXT_TEID_II, GTP_CONDITIONAL }, /* Tunnel Endpoint Identifier Data II Optional 7.7.15 */
{ GTP_EXT_RANAP_CAUSE, GTP_CONDITIONAL },
{ GTP_EXT_GSN_ADDR, GTP_CONDITIONAL },
{ GTP_EXT_UTRAN_CONT, GTP_OPTIONAL },
{ GTP_EXT_RAB_SETUP, GTP_CONDITIONAL },
+ { GTP_EXT_ADD_RAB_SETUP_INF, GTP_CONDITIONAL }, /* Additional RAB Setup Information Conditional 7.7.45A */
{ GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
@@ -2278,16 +2353,245 @@ static _gtp_mess_items umts_mess_items[] = {
}
},
{
- GTP_MSG_FORW_SRNS_CNTXT, {
- { GTP_EXT_RAB_CNTXT, GTP_MANDATORY },
+ GTP_MSG_FORW_SRNS_CNTXT_ACK, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY },
{ GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
{ 0, 0 }
}
},
{
- GTP_MSG_FORW_SRNS_CNTXT_ACK, {
- { GTP_EXT_CAUSE, GTP_MANDATORY },
- { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ GTP_MSG_FORW_SRNS_CNTXT, {
+ { GTP_EXT_RAB_CNTXT, GTP_MANDATORY },
+ { GTP_EXT_SRC_RNC_PDP_CTX_INF, GTP_OPTIONAL }, /* Source RNC PDCP context info Optional 7.7.61 */
+ { GTP_EXT_PDU_NO, GTP_OPTIONAL }, /* PDU Numbers Optional 7.7.74 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { 0, 0 }
+ }
+},
+
+/* 7.5.14 RAN Information Management Messages */
+{
+ GTP_MSG_RAN_INFO_RELAY, {
+ { GTP_EXT_RAN_TR_CONT, GTP_MANDATORY }, /* RAN Transparent Container Mandatory 7.7.43 */
+ { GTP_EXT_RIM_RA, GTP_OPTIONAL }, /* RIM Routing Address Optional 7.7.57 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { 0, 0 }
+ }
+},
+/* 7.5A MBMS Messages
+ * 7.5A.1 UE Specific MBMS Messages
+ */
+{
+ GTP_MBMS_NOTIFY_REQ, {
+ { GTP_EXT_IMSI, GTP_MANDATORY }, /* IMSI Mandatory 7.7.2 */
+ { GTP_EXT_TEID_CP, GTP_MANDATORY }, /* Tunnel Endpoint Identifier Control Plane Mandatory 7.7.14 */
+ { GTP_EXT_NSAPI, GTP_MANDATORY }, /* NSAPI Mandatory 7.7.17 */
+ { GTP_EXT_USER_ADDR, GTP_MANDATORY }, /* End User Address Mandatory 7.7.27 */
+ { GTP_EXT_APN, GTP_MANDATORY }, /* Access Point Name Mandatory 7.7.30 */
+ { GTP_EXT_GSN_ADDR, GTP_MANDATORY }, /* GGSN Address for Control Plane Mandatory 7.7.32 */
+ { GTP_EXT_MBMS_PROT_CONF_OPT, GTP_OPTIONAL }, /* MBMS Protocol Configuration Options Optional 7.7.58 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_NOTIFY_RES, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_NOTIFY_REJ_REQ, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ { GTP_EXT_TEID_CP, GTP_MANDATORY }, /* Tunnel Endpoint Identifier Control Plane Mandatory 7.7.14 */
+ { GTP_EXT_NSAPI, GTP_MANDATORY }, /* NSAPI Mandatory 7.7.17 */
+ { GTP_EXT_USER_ADDR, GTP_MANDATORY }, /* End User Address Mandatory 7.7.27 */
+ { GTP_EXT_APN, GTP_MANDATORY }, /* Access Point Name Mandatory 7.7.30 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_NOTIFY_REJ_RES, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { 0, 0 }
+ }
+},
+{
+ GTP_CREATE_MBMS_CNTXT_REQ, {
+ { GTP_EXT_IMSI, GTP_CONDITIONAL }, /* IMSI Conditional 7.7.2 */
+ { GTP_EXT_RAI, GTP_MANDATORY }, /* Routeing Area Identity (RAI) Mandatory 7.7.3 */
+ { GTP_EXT_RECOVER, GTP_OPTIONAL }, /* Recovery Optional 7.7.11 */
+ /* Selection mode Conditional 7.7.12 */
+ { GTP_EXT_TEID_CP, GTP_CONDITIONAL }, /* Tunnel Endpoint Identifier Control Plane Conditional 7.7.14 */
+ /* Trace Reference Optional 7.7.24 */
+ /* Trace Type Optional 7.7.25 */
+ { GTP_EXT_USER_ADDR, GTP_MANDATORY }, /* End User Address Mandatory 7.7.27 */
+ { GTP_EXT_APN, GTP_MANDATORY }, /* Access Point Name Mandatory 7.7.30 */
+ { GTP_EXT_GSN_ADDR, GTP_MANDATORY }, /* SGSN Address for signalling Mandatory GSN Address 7.7.32 */
+ /* MSISDN Conditional 7.7.33 */
+ /* Trigger Id Optional 7.7.41 */
+ /* OMC Identity Optional 7.7.42 */
+ /* RAT Type Optional 7.7.50 */
+ /* User Location Information Optional 7.7.51 */
+ /* MS Time Zone Optional 7.7.52 */
+ /* IMEI(SV) Optional 7.7.53 */
+ { GTP_EXT_MBMS_PROT_CONF_OPT, GTP_OPTIONAL }, /* MBMS Protocol Configuration Options Optional 7.7.58 */
+ /* Additonal Trace Info Optional 7.7.62 */
+ { GTP_EXT_ENH_NSAPI, GTP_MANDATORY }, /* Enhanced NSAPI Mandatory 7.7.67 */
+ /* Additional MBMS Trace Info Optional 7.7.68 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { 0, 0 }
+ }
+},
+{
+ GTP_CREATE_MBMS_CNTXT_RES, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ { GTP_EXT_RECOVER, GTP_OPTIONAL }, /* Recovery Optional 7.7.11 */
+ { GTP_EXT_TEID_CP, GTP_CONDITIONAL }, /* Tunnel Endpoint Identifier Control Plane Conditional 7.7.14 */
+ /* Charging ID Conditional 7.7.26 */
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL }, /* GGSN Address for Control Plane Conditional GSN Address 7.7.32 */
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL }, /* Alternative GGSN Address for Control Plane Conditional GSN Address 7.7.32 */
+ /* Charging Gateway Address Optional 7.7.44 */
+ /* Alternative Charging Gateway Address Optional 7.7.44 */
+ { GTP_EXT_MBMS_PROT_CONF_OPT, GTP_OPTIONAL }, /* MBMS Protocol Configuration Options Optional 7.7.58 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { 0, 0 }
+ }
+},
+{
+ GTP_UPD_MBMS_CNTXT_REQ, {
+ { GTP_EXT_IMSI, GTP_CONDITIONAL }, /* IMSI Conditional 7.7.2 */
+ { GTP_EXT_RAI, GTP_MANDATORY }, /* Routeing Area Identity (RAI) Mandatory 7.7.3 */
+ { GTP_EXT_RECOVER, GTP_OPTIONAL }, /* Recovery Optional 7.7.11 */
+ { GTP_EXT_TEID_CP, GTP_CONDITIONAL }, /* Tunnel Endpoint Identifier Control Plane Conditional 7.7.14 */
+ /* Trace Reference Optional 7.7.24 */
+ /* Trace Type Optional 7.7.25 */
+ { GTP_EXT_GSN_ADDR, GTP_MANDATORY }, /* SGSN Address for Control Plane Mandatory GSN Address 7.7.32 */
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL }, /* Alternative SGSN Address for Control Plane Conditional GSN Address 7.7.32 */
+ /* Trigger Id Optional 7.7.41 */
+ /* OMC Identity Optional 7.7.42 */
+ /* RAT Type Optional 7.7.50 */
+ /* User Location Information Optional 7.7.51 */
+ /* MS Time Zone Optional 7.7.52 */
+ /* Additional Trace Info Optional 7.7.62 */
+ { GTP_EXT_ENH_NSAPI, GTP_MANDATORY }, /* Enhanced NSAPI Mandatory 7.7.67 */
+ /* Additional MBMS Trace Info Optional 7.7.68 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { 0, 0 }
+ }
+},
+{
+ GTP_UPD_MBMS_CNTXT_RES, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ { GTP_EXT_RECOVER, GTP_OPTIONAL }, /* Recovery Optional 7.7.11 */
+ { GTP_EXT_TEID_CP, GTP_MANDATORY }, /* Tunnel Endpoint Identifier Control Plane Conditional 7.7.14 */
+ /* Charging ID Conditional 7.7.26 */
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL }, /* GGSN Address for Control Plane Conditional GSN Address 7.7.32 */
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL }, /* Alternative GGSN Address for Control Plane Conditional GSN Address 7.7.32 */
+ /* Charging Gateway Address Optional 7.7.44 */
+ /* Alternative Charging Gateway Address Optional 7.7.44 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_DEL_MBMS_CNTXT_REQ, {
+ { GTP_EXT_IMSI, GTP_CONDITIONAL }, /* IMSI Conditional 7.7.2 */
+ { GTP_EXT_TEID_CP, GTP_MANDATORY }, /* Tunnel Endpoint Identifier Control Plane Conditional 7.7.14 */
+ { GTP_EXT_USER_ADDR, GTP_CONDITIONAL }, /* End User Address Conditional 7.7.27 */
+ { GTP_EXT_APN, GTP_CONDITIONAL }, /* Access Point Name Conditional 7.7.30 */
+ { GTP_EXT_MBMS_PROT_CONF_OPT, GTP_OPTIONAL }, /* MBMS Protocol Configuration Options Optional 7.7.58 */
+ { GTP_EXT_ENH_NSAPI, GTP_MANDATORY }, /* Enhanced NSAPI Conditional 7.7.67 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_DEL_MBMS_CNTXT_RES, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ { GTP_EXT_MBMS_PROT_CONF_OPT, GTP_OPTIONAL }, /* MBMS Protocol Configuration Options Optional 7.7.58 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL },
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_REG_REQ, {
+ { GTP_EXT_USER_ADDR, GTP_MANDATORY }, /* End User Address Mandatory 7.7.27 */
+ { GTP_EXT_APN, GTP_MANDATORY }, /* Access Point Name Mandatory 7.7.30 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_REG_RES, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ /* Temporary Mobile Group Identity (TMGI) Conditional 7.7.56 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_DE_REG_REQ, {
+ { GTP_EXT_USER_ADDR, GTP_MANDATORY }, /* End User Address Mandatory 7.7.27 */
+ { GTP_EXT_APN, GTP_MANDATORY }, /* Access Point Name Mandatory 7.7.30 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_DE_REG_RES, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_SES_START_REQ, {
+ { GTP_EXT_RECOVER, GTP_OPTIONAL }, /* Recovery Optional 7.7.11 */
+ { GTP_EXT_TEID_CP, GTP_CONDITIONAL }, /* Tunnel Endpoint Identifier Control Plane Conditional 7.7.14 */
+ { GTP_EXT_USER_ADDR, GTP_MANDATORY }, /* End User Address Mandatory 7.7.27 */
+ { GTP_EXT_APN, GTP_MANDATORY }, /* Access Point Name Mandatory 7.7.30 */
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL }, /* GGSN Address for Control Plane Conditional GSN Address 7.7.32 */
+ /* Quality of Service Profile Mandatory 7.7.34 */
+ /* Common Flags Mandatory 7.7.48 */
+ /* Temporary Mobile Group Identity (TMGI) Mandatory 7.7.56 */
+ /* MBMS Session Duration Mandatory 7.7.59 */
+ /* MBMS Service Area Mandatory 7.7.60 */
+ /* MBMS Session Identifier Optional 7.7.65 */
+ /* MBMS 2G/3G Indicator Mandatory 7.7.66 */
+ /* MBMS Session Identity Repetition Number Optional 7.7.69 */
+ /* MBMS Time To Data Transfer Mandatory 7.7.70 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_SES_START_RES, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ { GTP_EXT_RECOVER, GTP_OPTIONAL }, /* Recovery Optional 7.7.11 */
+ /* Tunnel Endpoint Identifier Data I Conditional 7.7.13 */
+ /* Tunnel Endpoint Identifier Control Plane Conditional 7.7.14 */
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL }, /* SGSN Address for Control Plane Conditional GSN Address 7.7.32 */
+ { GTP_EXT_GSN_ADDR, GTP_CONDITIONAL }, /* SGSN Address for user traffic Conditional GSN Address 7.7.32 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_SES_STOP_REQ, {
+ { GTP_EXT_USER_ADDR, GTP_MANDATORY }, /* End User Address Mandatory 7.7.27 */
+ { GTP_EXT_APN, GTP_MANDATORY }, /* Access Point Name Mandatory 7.7.30 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
+ { 0, 0 }
+ }
+},
+{
+ GTP_MBMS_SES_STOP_RES, {
+ { GTP_EXT_CAUSE, GTP_MANDATORY }, /* Cause Mandatory 7.7.1 */
+ { GTP_EXT_PRIV_EXT, GTP_OPTIONAL }, /* Private Extension Optional 7.7.46 */
{ 0, 0 }
}
},
@@ -4194,7 +4498,7 @@ decode_gtp_omc_id(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree
}
/* GPRS: 9.60 v7.6.0, chapter 7.9.25
- * UMTS: 29.060 v4.0, chapter 7.7.43 ( 7.7.44 in v6 ).
+ * UMTS: 29.060 v6.11.0, chapter 7.7.44 Charging Gateway Address
*/
static int
decode_gtp_chrg_addr(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree) {
@@ -4302,7 +4606,8 @@ decode_gtp_add_rab_setup_inf(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
}
-/* GPRS: ?
+
+ /* GPRS: ?
* UMTS: 29.060 v6.11.0, chapter 7.7.47 SGSN Number
*/
static int
@@ -4449,6 +4754,8 @@ decode_gtp_ms_time_zone(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto
guint16 length;
proto_tree *ext_tree;
proto_item *te;
+ guint8 data;
+ char sign;
length = tvb_get_ntohs(tvb, offset+1);
te = proto_tree_add_text(tree, tvb, offset, 3+length, "%s : ", val_to_str(GTP_EXT_MS_TIME_ZONE, gtp_val, "Unknown"));
@@ -4457,9 +4764,25 @@ decode_gtp_ms_time_zone(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, FALSE);
offset = offset +2;
- /* TODO add decoding of data */
+
proto_tree_add_text(ext_tree, tvb, offset, length, "Data not decoded yet");
+ /* 3GPP TS 23.040 version 6.6.0 Release 6
+ * 9.2.3.11 TP-Service-Centre-Time-Stamp (TP-SCTS)
+ * :
+ * The Time Zone indicates the difference, expressed in quarters of an hour,
+ * between the local time and GMT. In the first of the two semi-octets,
+ * the first bit (bit 3 of the seventh octet of the TP-Service-Centre-Time-Stamp field)
+ * represents the algebraic sign of this difference (0: positive, 1: negative).
+ */
+ /*
+ data = tvb_get_guint8(tvb, offset);
+ sign = (data & 0x08)?'-':'+';
+ data = (data >> 4) + (data & 0x07) * 10;
+ proto_tree_add_text(tree, tvb, offset, 1,"Timezone: GMT %c %d hours %d minutes",
+ sign, data / 4, data % 4 * 15);
+
+ */
return 3 + length;
}
@@ -4556,9 +4879,7 @@ decode_gtp_tmgi(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *t
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, FALSE);
offset = offset +2;
- /* TODO add decoding of data
- * Octets 4-n are coded according to 3GPP TS 48.018 [20] 11.3.77 RIM Routing Information IE octets 4-n.
- */
+
proto_tree_add_text(ext_tree, tvb, offset, length, "Data not decoded yet");
return 3 + length;
@@ -4585,6 +4906,9 @@ decode_gtp_rim_ra(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree
offset = offset +2;
/* TODO add decoding of data */
proto_tree_add_text(ext_tree, tvb, offset, length, "Data not decoded yet");
+ /*
+ * Octets 4-n are coded according to 3GPP TS 48.018 [20] 11.3.77 RIM Routing Information IE octets 4-n.
+ */
return 3 + length;
@@ -4959,6 +5283,9 @@ decode_gtp_bss_cont(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tre
offset = offset +2;
/* TODO add decoding of data */
proto_tree_add_text(ext_tree, tvb, offset, length, "Data not decoded yet");
+ /*
+ * The content of this container is defined in 3GPP TS 48.018
+ */
return 3 + length;
@@ -4984,6 +5311,13 @@ decode_gtp_cell_id(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree
offset = offset +2;
/* TODO add decoding of data */
proto_tree_add_text(ext_tree, tvb, offset, length, "Data not decoded yet");
+ /*
+ * for PS handover from A/Gb mode, the identification of a target cell (Cell ID 1) and the identification of the
+ * source cell (Cell ID 2) as defined in 3GPP TS 48.018 [20].
+ *
+ * for PS handover from Iu mode, the identification of a target cell (Cell ID 1)) and the identification of the
+ * source RNC (RNC-ID) as defined in 3GPP TS 48.018
+ */
return 3 + length;
@@ -5032,8 +5366,11 @@ decode_gtp_bssgp_cause(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_
offset++;
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, FALSE);
offset = offset +2;
- /* TODO add decoding of data */
- proto_tree_add_text(ext_tree, tvb, offset, length, "Data not decoded yet");
+
+ /*
+ * The BSSGP Cause information element contains the cause as defined in 3GPP TS 48.018
+ */
+ proto_tree_add_item(ext_tree, hf_gtp_bssgp_cause, tvb, offset, 2, FALSE);
return 3 + length;
@@ -5196,8 +5533,10 @@ decode_gtp_node_addr(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tr
}
/* GPRS: 9.60 v7.6.0, chapter 7.9.26
- * UMTS: 29.060 v4.0, chapter 7.7.44
+ * UMTS: 29.060 v4.0, chapter 7.7.46 Private Extension
+ *
*/
+
static int
decode_gtp_priv_ext(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree) {
@@ -5639,6 +5978,10 @@ proto_register_gtp(void)
{ "TargetID", "gtp.targetid",
FT_UINT32, BASE_DEC, VALS(ranap_TargetID_vals), 0,
"TargetID", HFILL }},
+ { &hf_gtp_bssgp_cause,
+ { "BSSGP Cause", "gtp.bssgp_cause",
+ FT_UINT8, BASE_DEC, VALS(tab_cause), 0,
+ "BSSGP Cause", HFILL }},
};