aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2018-01-05 12:43:51 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2018-01-05 14:16:09 +0000
commit82b26b686e49dcb0fa15f8d585d47a569f798403 (patch)
treeff1faf32173286a6d7b23cf94ba5f6f92271eb33 /epan
parentc0226ea401fd13f4f368ddf1d7013aaf6049978f (diff)
NAS EPS: upgrade dissector to v15.1.0
Change-Id: I0ea263b693910c1d8036a18e612c1daf538482dd Reviewed-on: https://code.wireshark.org/review/25161 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-gsm_a_common.h2
-rw-r--r--epan/dissectors/packet-nas_eps.c749
2 files changed, 655 insertions, 96 deletions
diff --git a/epan/dissectors/packet-gsm_a_common.h b/epan/dissectors/packet-gsm_a_common.h
index 7d56e39c36..ce16a8a941 100644
--- a/epan/dissectors/packet-gsm_a_common.h
+++ b/epan/dissectors/packet-gsm_a_common.h
@@ -1466,6 +1466,8 @@ typedef enum
DE_EMM_NON_3GPP_NW_PROV_POL, /* 9.9.3.49 Non-3GPP NW provided policies, See subclause 10.5.5.37 in 3GPP TS 24.008 */
DE_EMM_HASH_MME, /* 9.9.3.50 HashMME */
DE_EMM_REPLAYED_NAS_MSG_CONT, /* 9.9.3.51 Replayed NAS message container */
+ DE_EMM_NETWORK_POLICY, /* 9.9.3.52 Network policy */
+ DE_EMM_UE_ADD_SEC_CAP, /* 9.9.3.53 UE additional security capability */
DE_EMM_NONE /* NONE */
}
nas_emm_elem_idx_t;
diff --git a/epan/dissectors/packet-nas_eps.c b/epan/dissectors/packet-nas_eps.c
index b71064dc4f..be85e87846 100644
--- a/epan/dissectors/packet-nas_eps.c
+++ b/epan/dissectors/packet-nas_eps.c
@@ -9,11 +9,12 @@
*
* SPDX-License-Identifier: GPL-2.0+
*
- * References: 3GPP TS 24.301 V14.5.0 (2017-09)
+ * References: 3GPP TS 24.301 V15.1.0 (2017-12)
*/
#include "config.h"
+#include <math.h>
#include <epan/packet.h>
#include <epan/asn1.h>
#include <epan/prefs.h>
@@ -184,33 +185,65 @@ static int hf_nas_eps_emm_ue_ra_cap_inf_upd_need_flg = -1;
static int hf_nas_eps_emm_ss_code = -1;
static int hf_nas_eps_emm_lcs_ind = -1;
static int hf_nas_eps_emm_gen_msg_cont_type = -1;
-static int hf_nas_eps_emm_apn_ambr_ul = -1;
-static int hf_nas_eps_emm_apn_ambr_dl = -1;
-static int hf_nas_eps_emm_apn_ambr_ul_ext = -1;
-static int hf_nas_eps_emm_apn_ambr_dl_ext = -1;
-static int hf_nas_eps_emm_apn_ambr_ul_ext2 = -1;
-static int hf_nas_eps_emm_apn_ambr_dl_ext2 = -1;
-static int hf_nas_eps_emm_apn_ambr_ul_total = -1;
-static int hf_nas_eps_emm_apn_ambr_dl_total = -1;
+static int hf_nas_eps_esm_apn_ambr_ul = -1;
+static int hf_nas_eps_esm_apn_ambr_dl = -1;
+static int hf_nas_eps_esm_apn_ambr_ul_ext = -1;
+static int hf_nas_eps_esm_apn_ambr_dl_ext = -1;
+static int hf_nas_eps_esm_apn_ambr_ul_ext2 = -1;
+static int hf_nas_eps_esm_apn_ambr_dl_ext2 = -1;
+static int hf_nas_eps_esm_apn_ambr_ul_total = -1;
+static int hf_nas_eps_esm_apn_ambr_dl_total = -1;
static int hf_nas_eps_emm_guti_type = -1;
static int hf_nas_eps_hash_mme = -1;
static int hf_nas_eps_replayed_nas_msg_cont = -1;
+static int hf_nas_eps_redir_policy = -1;
+static int hf_nas_eps_emm_5g_ea0 = -1;
+static int hf_nas_eps_emm_128_5g_ea1 = -1;
+static int hf_nas_eps_emm_128_5g_ea2 = -1;
+static int hf_nas_eps_emm_128_5g_ea3 = -1;
+static int hf_nas_eps_emm_5g_ea4 = -1;
+static int hf_nas_eps_emm_5g_ea5 = -1;
+static int hf_nas_eps_emm_5g_ea6 = -1;
+static int hf_nas_eps_emm_5g_ea7 = -1;
+static int hf_nas_eps_emm_5g_ea8 = -1;
+static int hf_nas_eps_emm_5g_ea9 = -1;
+static int hf_nas_eps_emm_5g_ea10 = -1;
+static int hf_nas_eps_emm_5g_ea11 = -1;
+static int hf_nas_eps_emm_5g_ea12 = -1;
+static int hf_nas_eps_emm_5g_ea13 = -1;
+static int hf_nas_eps_emm_5g_ea14 = -1;
+static int hf_nas_eps_emm_5g_ea15 = -1;
+static int hf_nas_eps_emm_5g_ia0 = -1;
+static int hf_nas_eps_emm_128_5g_ia1 = -1;
+static int hf_nas_eps_emm_128_5g_ia2 = -1;
+static int hf_nas_eps_emm_128_5g_ia3 = -1;
+static int hf_nas_eps_emm_5g_ia4 = -1;
+static int hf_nas_eps_emm_5g_ia5 = -1;
+static int hf_nas_eps_emm_5g_ia6 = -1;
+static int hf_nas_eps_emm_5g_ia7 = -1;
+static int hf_nas_eps_emm_5g_ia8 = -1;
+static int hf_nas_eps_emm_5g_ia9 = -1;
+static int hf_nas_eps_emm_5g_ia10 = -1;
+static int hf_nas_eps_emm_5g_ia11 = -1;
+static int hf_nas_eps_emm_5g_ia12 = -1;
+static int hf_nas_eps_emm_5g_ia13 = -1;
+static int hf_nas_eps_emm_5g_ia14 = -1;
+static int hf_nas_eps_emm_5g_ia15 = -1;
static int hf_nas_eps_emm_detach_req_UL = -1;
static int hf_nas_eps_emm_detach_req_DL = -1;
static int hf_nas_eps_emm_switch_off = -1;
static int hf_nas_eps_emm_detach_type_UL = -1;
static int hf_nas_eps_emm_detach_type_DL = -1;
-static int hf_nas_eps_qci = -1;
-static int hf_nas_eps_mbr_ul = -1;
-static int hf_nas_eps_mbr_dl = -1;
-static int hf_nas_eps_gbr_ul = -1;
-static int hf_nas_eps_gbr_dl = -1;
-static int hf_nas_eps_embr_ul = -1;
-static int hf_nas_eps_embr_dl = -1;
-static int hf_nas_eps_egbr_ul = -1;
-static int hf_nas_eps_egbr_dl = -1;
-
+static int hf_nas_eps_esm_qci = -1;
+static int hf_nas_eps_esm_mbr_ul = -1;
+static int hf_nas_eps_esm_mbr_dl = -1;
+static int hf_nas_eps_esm_gbr_ul = -1;
+static int hf_nas_eps_esm_gbr_dl = -1;
+static int hf_nas_eps_esm_embr_ul = -1;
+static int hf_nas_eps_esm_embr_dl = -1;
+static int hf_nas_eps_esm_egbr_ul = -1;
+static int hf_nas_eps_esm_egbr_dl = -1;
static int hf_nas_eps_esm_cause = -1;
static int hf_nas_eps_esm_eit = -1;
static int hf_nas_eps_esm_notif_ind = -1;
@@ -265,6 +298,16 @@ static int hf_nas_eps_esm_hdr_compr_config_status_ebi10 = -1;
static int hf_nas_eps_esm_hdr_compr_config_status_ebi9 = -1;
static int hf_nas_eps_esm_hdr_compr_config_status_ebi8 = -1;
static int hf_nas_eps_esm_serv_plmn_rate_ctrl_val = -1;
+static int hf_nas_eps_esm_ext_apn_ambr_dl_unit = -1;
+static int hf_nas_eps_esm_ext_apn_ambr_dl = -1;
+static int hf_nas_eps_esm_ext_apn_ambr_ul_unit = -1;
+static int hf_nas_eps_esm_ext_apn_ambr_ul = -1;
+static int hf_nas_eps_esm_ext_mbr_unit = -1;
+static int hf_nas_eps_esm_ext_mbr_ul = -1;
+static int hf_nas_eps_esm_ext_mbr_dl = -1;
+static int hf_nas_eps_esm_ext_gbr_unit = -1;
+static int hf_nas_eps_esm_ext_gbr_ul = -1;
+static int hf_nas_eps_esm_ext_gbr_dl = -1;
static int hf_nas_eps_active_flg = -1;
static int hf_nas_eps_ctrl_plane_serv_type = -1;
@@ -758,6 +801,8 @@ static const value_string nas_emm_elem_strings[] = {
{ DE_EMM_NON_3GPP_NW_PROV_POL, "Non-3GPP NW provided policies" }, /* 9.9.3.49 Non-3GPP NW provided policies */
{ DE_EMM_HASH_MME, "HashMME" }, /* 9.9.3.50 HashMME */
{ DE_EMM_REPLAYED_NAS_MSG_CONT, "Replayed NAS message container" }, /* 9.9.3.51 Replayed NAS message container */
+ { DE_EMM_NETWORK_POLICY, "Network policy" }, /* 9.9.3.52 Network policy */
+ { DE_EMM_UE_ADD_SEC_CAP, "UE additional security capability" }, /* 9.9.3.53 UE additional security capability */
{ 0, NULL }
};
value_string_ext nas_emm_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_emm_elem_strings);
@@ -837,6 +882,8 @@ typedef enum
DE_EMM_NON_3GPP_NW_PROV_POL /* 9.9.3.49 Non-3GPP NW provided policies */
DE_EMM_HASH_MME, /* 9.9.3.50 HashMME */
DE_EMM_REPLAYED_NAS_MSG_CONT, /* 9.9.3.51 Replayed NAS message container */
+ DE_EMM_NETWORK_POLICY, /* 9.9.3.52 Network policy */
+ DE_EMM_UE_ADD_SEC_CAP, /* 9.9.3.53 UE additional security capability */
DE_EMM_NONE /* NONE */
}
nas_emm_elem_idx_t;
@@ -878,7 +925,7 @@ de_emm_add_upd_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
static const value_string nas_eps_emm_pnb_ciot_vals[] = {
{ 0x0, "No additional information"},
{ 0x1, "Control-plane CIoT EPS optimization"},
- { 0x2, "User-plane CIoT EPS optimization"},
+ { 0x2, "S1-U data transfer"},
{ 0x3, "Reserved"},
{ 0, NULL }
};
@@ -2409,6 +2456,100 @@ de_emm_replayed_nas_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
}
/*
+ * 9.9.3.52 Network policy
+ */
+static const true_false_string nas_eps_redir_policy_vals = {
+ "Unsecured redirection to GERAN not allowed",
+ "Unsecured redirection to GERAN allowed"
+};
+
+static guint16
+de_emm_network_policy(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, (offset<<3)+4, 3, ENC_NA);
+ proto_tree_add_item(tree, hf_nas_eps_redir_policy, tvb, offset, 1, ENC_NA);
+
+ return 1;
+}
+
+/*
+ * 9.9.3.53 UE additional security capability
+ */
+static guint16
+de_emm_ue_add_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ static const int * oct3_flags[] = {
+ &hf_nas_eps_emm_5g_ea0,
+ &hf_nas_eps_emm_128_5g_ea1,
+ &hf_nas_eps_emm_128_5g_ea2,
+ &hf_nas_eps_emm_128_5g_ea3,
+ &hf_nas_eps_emm_5g_ea4,
+ &hf_nas_eps_emm_5g_ea5,
+ &hf_nas_eps_emm_5g_ea6,
+ &hf_nas_eps_emm_5g_ea7,
+ NULL
+ };
+
+ static const int * oct4_flags[] = {
+ &hf_nas_eps_emm_5g_ea8,
+ &hf_nas_eps_emm_5g_ea9,
+ &hf_nas_eps_emm_5g_ea10,
+ &hf_nas_eps_emm_5g_ea11,
+ &hf_nas_eps_emm_5g_ea12,
+ &hf_nas_eps_emm_5g_ea13,
+ &hf_nas_eps_emm_5g_ea14,
+ &hf_nas_eps_emm_5g_ea15,
+ NULL
+ };
+
+ static const int * oct5_flags[] = {
+ &hf_nas_eps_emm_5g_ia0,
+ &hf_nas_eps_emm_128_5g_ia1,
+ &hf_nas_eps_emm_128_5g_ia2,
+ &hf_nas_eps_emm_128_5g_ia3,
+ &hf_nas_eps_emm_5g_ia4,
+ &hf_nas_eps_emm_5g_ia5,
+ &hf_nas_eps_emm_5g_ia6,
+ &hf_nas_eps_emm_5g_ia7,
+ NULL
+ };
+
+ static const int * oct6_flags[] = {
+ &hf_nas_eps_emm_5g_ia8,
+ &hf_nas_eps_emm_5g_ia9,
+ &hf_nas_eps_emm_5g_ia10,
+ &hf_nas_eps_emm_5g_ia11,
+ &hf_nas_eps_emm_5g_ia12,
+ &hf_nas_eps_emm_5g_ia13,
+ &hf_nas_eps_emm_5g_ia14,
+ &hf_nas_eps_emm_5g_ia15,
+ NULL
+ };
+
+ curr_offset = offset;
+
+ /* 5GS encryption algorithms supported (octet 3) */
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, oct3_flags, ENC_NA);
+ curr_offset++;
+
+ /* 5GS encryption algorithms supported (octet 4) */
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, oct4_flags, ENC_NA);
+ curr_offset++;
+
+ /* 5GS integrity algorithms supported (octet 5) */
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, oct5_flags, ENC_NA);
+ curr_offset++;
+
+ /* 5GS integrity algorithms supported (octet 6) */
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, oct6_flags, ENC_NA);
+ curr_offset++;
+
+ return len;
+}
+
+/*
* 9.9.4 EPS Session Management (ESM) information elements
*/
@@ -2435,12 +2576,12 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* APN-AMBR for downlink octet 3 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_apn_ambr_dl, tvb, curr_offset, 1, octet,
"Reserved");
} else {
bitrate = calc_bitrate(octet);
dl_total = bitrate;
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_dl, tvb, curr_offset, 1, octet,
"%u kbps", bitrate);
}
curr_offset++;
@@ -2448,12 +2589,12 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* APN-AMBR for uplink octet 4 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_apn_ambr_ul, tvb, curr_offset, 1, octet,
"Reserved");
} else {
bitrate = calc_bitrate(octet);
ul_total = bitrate;
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_ul, tvb, curr_offset, 1, octet,
"%u kbps", bitrate);
}
curr_offset++;
@@ -2462,20 +2603,20 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* APN-AMBR for downlink (extended) octet 5 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_dl_ext, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_apn_ambr_dl_ext, tvb, curr_offset, 1, octet,
"Use the value indicated by the APN-AMBR for downlink");
} else {
bitrate = calc_bitrate_ext(octet);
dl_total = (octet > 0x4a) ? bitrate*1000 : bitrate;
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_dl_ext, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_dl_ext, tvb, curr_offset, 1, octet,
"%u %s", bitrate, (octet > 0x4a) ? "Mbps" : "kbps");
}
if (len < 5) {
/* APN-AMBR for downlink (extended-2) is not present; display total now */
if (dl_total >= 1000) {
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_dl_total, tvb, curr_offset, 1, dl_total, "%.3f Mbps", (gfloat)dl_total / 1000);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_dl_total, tvb, curr_offset, 1, dl_total, "%.3f Mbps", (gfloat)dl_total / 1000);
} else {
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_dl_total, tvb, curr_offset, 1, dl_total, "%u kbps", dl_total);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_dl_total, tvb, curr_offset, 1, dl_total, "%u kbps", dl_total);
}
}
curr_offset++;
@@ -2484,20 +2625,20 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* APN-AMBR for uplink (extended) octet 6 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_ul_ext, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_apn_ambr_ul_ext, tvb, curr_offset, 1, octet,
"Use the value indicated by the APN-AMBR for uplink");
} else {
bitrate = calc_bitrate_ext(octet);
ul_total = (octet > 0x4a) ? bitrate*1000 : bitrate;
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_ul_ext, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_ul_ext, tvb, curr_offset, 1, octet,
"%u %s", bitrate, (octet > 0x4a) ? "Mbps" : "kbps");
}
if (len < 6) {
/* APN-AMBR for uplink (extended-2) is not present; display total now */
if (ul_total >= 1000) {
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_ul_total, tvb, curr_offset, 1, ul_total, "%.3f Mbps", (gfloat)ul_total / 1000);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_ul_total, tvb, curr_offset, 1, ul_total, "%.3f Mbps", (gfloat)ul_total / 1000);
} else {
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_ul_total, tvb, curr_offset, 1, ul_total, "%u kbps", ul_total);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_ul_total, tvb, curr_offset, 1, ul_total, "%u kbps", ul_total);
}
}
curr_offset++;
@@ -2506,28 +2647,28 @@ de_esm_apn_aggr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* APN-AMBR for downlink (extended-2) octet 7 */
octet = tvb_get_guint8(tvb,curr_offset);
if ((octet == 0)||(octet == 0xff)) {
- proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_dl_ext2, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_apn_ambr_dl_ext2, tvb, curr_offset, 1, octet,
"Use the value indicated by the APN-AMBR for downlink and APN-AMBR for downlink (extended)");
} else {
dl_total += octet*256*1000;
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_dl_ext2, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_dl_ext2, tvb, curr_offset, 1, octet,
"%u Mbps", (octet* 256));
}
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_dl_total, tvb, curr_offset, 1, dl_total, "%.3f Mbps", (gfloat)dl_total / 1000);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_dl_total, tvb, curr_offset, 1, dl_total, "%.3f Mbps", (gfloat)dl_total / 1000);
curr_offset++;
if ((curr_offset - offset) >= len)
return(len);
/* APN-AMBR for uplink (extended-2) octet 8 */
octet = tvb_get_guint8(tvb,curr_offset);
if ((octet == 0)||(octet == 0xff)) {
- proto_tree_add_uint_format(tree, hf_nas_eps_emm_apn_ambr_ul_ext2, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_apn_ambr_ul_ext2, tvb, curr_offset, 1, octet,
"Use the value indicated by the APN-AMBR for uplink and APN-AMBR for uplink (extended)");
} else {
ul_total += octet*256*1000;
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_ul_ext2, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_ul_ext2, tvb, curr_offset, 1, octet,
"%u Mbps", (octet* 256));
}
- proto_tree_add_uint_format_value(tree, hf_nas_eps_emm_apn_ambr_ul_total, tvb, curr_offset, 1, ul_total, "%.3f Mbps", (gfloat)ul_total / 1000);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_apn_ambr_ul_total, tvb, curr_offset, 1, ul_total, "%.3f Mbps", (gfloat)ul_total / 1000);
curr_offset++;
return(len);
@@ -2578,17 +2719,17 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
curr_offset = offset;
/* QCI octet 3 */
- proto_tree_add_item(tree, hf_nas_eps_qci, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_eps_esm_qci, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
if ((curr_offset - offset) >= len)
return(len);
/* Maximum bit rate for uplink octet 4 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_mbr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_mbr_ul, tvb, curr_offset, 1, octet,
"UE->NW Subscribed maximum bit rate for uplink/ NW->UE Reserved");
} else {
- proto_tree_add_uint_format_value(tree, hf_nas_eps_mbr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_mbr_ul, tvb, curr_offset, 1, octet,
"%u kbps", calc_bitrate(octet));
}
curr_offset++;
@@ -2597,10 +2738,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Maximum bit rate for downlink octet 5 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_mbr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_mbr_dl, tvb, curr_offset, 1, octet,
"UE->NW Subscribed maximum bit rate for downlink/ NW->UE Reserved");
} else {
- proto_tree_add_uint_format_value(tree, hf_nas_eps_mbr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_mbr_dl, tvb, curr_offset, 1, octet,
"%u kbps", calc_bitrate(octet));
}
curr_offset++;
@@ -2608,7 +2749,7 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
return(len);
/* Guaranteed bit rate for uplink octet 6 */
octet = tvb_get_guint8(tvb,curr_offset);
- proto_tree_add_uint_format_value(tree, hf_nas_eps_gbr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_gbr_ul, tvb, curr_offset, 1, octet,
"%u kbps", calc_bitrate(octet));
curr_offset++;
@@ -2616,7 +2757,7 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
return(len);
/* Guaranteed bit rate for downlink octet 7 */
octet = tvb_get_guint8(tvb,curr_offset);
- proto_tree_add_uint_format_value(tree, hf_nas_eps_gbr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_gbr_dl, tvb, curr_offset, 1, octet,
"%u kbps", calc_bitrate(octet));
curr_offset++;
@@ -2625,10 +2766,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Maximum bit rate for uplink (extended) octet 8 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_embr_ul, tvb, curr_offset, 1, octet,
"Use the value indicated by the maximum bit rate for uplink in octet 4");
} else {
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_embr_ul, tvb, curr_offset, 1, octet,
"Maximum bit rate for uplink (extended) : %u %s",
calc_bitrate_ext(octet),
(octet > 0x4a) ? "Mbps" : "kbps");
@@ -2639,10 +2780,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Maximum bit rate for downlink (extended) octet 9 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_embr_dl, tvb, curr_offset, 1, octet,
"Use the value indicated by the maximum bit rate for downlink in octet 5");
} else {
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_embr_dl, tvb, curr_offset, 1, octet,
"Maximum bit rate for downlink (extended) : %u %s",
calc_bitrate_ext(octet),
(octet > 0x4a) ? "Mbps" : "kbps");
@@ -2653,10 +2794,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Guaranteed bit rate for uplink (extended) octet 10 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_egbr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_egbr_ul, tvb, curr_offset, 1, octet,
"Use the value indicated by the guaranteed bit rate for uplink in octet 6");
} else {
- proto_tree_add_uint_format(tree, hf_nas_eps_egbr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_egbr_ul, tvb, curr_offset, 1, octet,
"Guaranteed bit rate for uplink (extended) : %u %s",
calc_bitrate_ext(octet),
(octet > 0x4a) ? "Mbps" : "kbps");
@@ -2667,10 +2808,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Guaranteed bit rate for downlink (extended) octet 11 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_egbr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_egbr_dl, tvb, curr_offset, 1, octet,
"Use the value indicated by the guaranteed bit rate for downlink in octet 7");
} else {
- proto_tree_add_uint_format(tree, hf_nas_eps_egbr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_egbr_dl, tvb, curr_offset, 1, octet,
"Guaranteed bit rate for downlink (extended) : %u %s",
calc_bitrate_ext(octet),
(octet > 0x4a) ? "Mbps" : "kbps");
@@ -2681,10 +2822,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Maximum bit rate for uplink (extended-2) octet 12 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_embr_ul, tvb, curr_offset, 1, octet,
"Use the value indicated by the maximum bit rate for uplink in octet 4 and octet 8");
} else {
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_embr_ul, tvb, curr_offset, 1, octet,
"Maximum bit rate for uplink (extended-2) : %u Mbps",
calc_bitrate_ext2(octet));
}
@@ -2692,10 +2833,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Maximum bit rate for downlink (extended-2) octet 13 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_embr_dl, tvb, curr_offset, 1, octet,
"Use the value indicated by the maximum bit rate for downlink in octet 5 and octet 9");
} else {
- proto_tree_add_uint_format(tree, hf_nas_eps_embr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_embr_dl, tvb, curr_offset, 1, octet,
"Maximum bit rate for downlink (extended-2) : %u Mbps",
calc_bitrate_ext2(octet));
}
@@ -2703,10 +2844,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Guaranteed bit rate for uplink (extended-2) octet 14 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_egbr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_egbr_ul, tvb, curr_offset, 1, octet,
"Use the value indicated by the guaranteed bit rate for uplink in octet 6 and octet 10");
} else {
- proto_tree_add_uint_format(tree, hf_nas_eps_egbr_ul, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_egbr_ul, tvb, curr_offset, 1, octet,
"Guaranteed bit rate for uplink (extended-2) : %u Mbps",
calc_bitrate_ext2(octet));
}
@@ -2714,10 +2855,10 @@ de_esm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Guaranteed bit rate for downlink (extended-2) octet 15 */
octet = tvb_get_guint8(tvb,curr_offset);
if (octet == 0) {
- proto_tree_add_uint_format(tree, hf_nas_eps_egbr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_egbr_dl, tvb, curr_offset, 1, octet,
"Use the value indicated by the guaranteed bit rate for downlink in octet 7 and octet 11");
} else {
- proto_tree_add_uint_format(tree, hf_nas_eps_egbr_dl, tvb, curr_offset, 1, octet,
+ proto_tree_add_uint_format(tree, hf_nas_eps_esm_egbr_dl, tvb, curr_offset, 1, octet,
"Guaranteed bit rate for downlink (extended-2) : %u Mbps",
calc_bitrate_ext2(octet));
}
@@ -3361,6 +3502,175 @@ de_esm_serv_plmn_rate_ctrl(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
return len;
}
+/*
+ * 9.9.4.29 Extended APN aggregate maximum bit rate
+ */
+static const range_string nas_eps_ext_apn_ambr_unit_vals[] = {
+ { 0x00, 0x02, "Not used" },
+ { 0x03, 0x03, "Multiple of 4 Mbps" },
+ { 0x04, 0x04, "Multiple of 16 Mbps" },
+ { 0x05, 0x05, "Multiple of 64 Mbps" },
+ { 0x06, 0x06, "Multiple of 256 Mbps" },
+ { 0x07, 0x07, "Multiple of 1 Gbps" },
+ { 0x08, 0x08, "Multiple of 4 Gbps" },
+ { 0x09, 0x09, "Multiple of 16 Gbps" },
+ { 0x0a, 0x0a, "Multiple of 64 Gbps" },
+ { 0x0b, 0x0b, "Multiple of 256 Gbps" },
+ { 0x0c, 0x0c, "Multiple of 1 Tbps" },
+ { 0x0d, 0x0d, "Multiple of 4 Tbps" },
+ { 0x0e, 0x0e, "Multiple of 16 Tbps" },
+ { 0x0f, 0x0f, "Multiple of 64 Tbps" },
+ { 0x10, 0x10, "Multiple of 256 Tbps" },
+ { 0x11, 0x11, "Multiple of 1 Pbps" },
+ { 0x12, 0x12, "Multiple of 4 Pbps" },
+ { 0x13, 0x13, "Multiple of 16 Pbps" },
+ { 0x14, 0x14, "Multiple of 64 Pbps" },
+ { 0x15, 0xff, "Multiple of 256 Pbps" },
+ { 0, 0, NULL }
+};
+
+guint32 get_ext_ambr_unit(guint32 byte, const char **unit_str)
+{
+ guint32 mult;
+
+ if (byte <= 0x02) {
+ mult = 0;
+ *unit_str = "";
+ } else if (byte <= 0x06) {
+ mult = (guint32)pow(4, byte-0x02);
+ *unit_str = "Mbps";
+ } else if (byte <= 0x0b) {
+ mult = (guint32)pow(4, byte-0x07);
+ *unit_str = "Gbps";
+ } else if (byte <= 0x10) {
+ mult = (guint32)pow(4, byte-0x0c);
+ *unit_str = "Tbps";
+ } else if (byte <= 0x15) {
+ mult = (guint32)pow(4, byte-0x11);
+ *unit_str = "Pbps";
+ } else {
+ mult = 256;
+ *unit_str = "Pbps";
+ }
+ return mult;
+}
+
+static guint16
+de_esm_ext_apn_agr_max_br(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
+ guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset, byte, mult, ambr_val;
+ const char *unit_str;
+
+ curr_offset = offset;
+ proto_tree_add_item_ret_uint(tree, hf_nas_eps_esm_ext_apn_ambr_dl_unit, tvb, curr_offset, 1, ENC_NA, &byte);
+ curr_offset++;
+ mult = get_ext_ambr_unit(byte, &unit_str);
+ ambr_val = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_ext_apn_ambr_dl, tvb, curr_offset, 2,
+ ambr_val, "%u %s (%u)", ambr_val * mult, unit_str, ambr_val);
+ curr_offset += 2;
+ proto_tree_add_item_ret_uint(tree, hf_nas_eps_esm_ext_apn_ambr_ul_unit, tvb, curr_offset, 1, ENC_NA, &byte);
+ curr_offset++;
+ mult = get_ext_ambr_unit(byte, &unit_str);
+ ambr_val = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_ext_apn_ambr_ul, tvb, curr_offset, 2,
+ ambr_val, "%u %s (%u)", ambr_val * mult, unit_str, ambr_val);
+
+ return len;
+}
+
+/*
+ * 9.9.4.29 Extended EPS quality of service
+ */
+static const range_string nas_eps_ext_eps_qos_unit_vals[] = {
+ { 0x00, 0x00, "Not used" },
+ { 0x01, 0x01, "Multiple of 200 kbps" },
+ { 0x02, 0x02, "Multiple of 1 Mbps" },
+ { 0x03, 0x03, "Multiple of 4 Mbps" },
+ { 0x04, 0x04, "Multiple of 16 Mbps" },
+ { 0x05, 0x05, "Multiple of 64 Mbps" },
+ { 0x06, 0x06, "Multiple of 256 Mbps" },
+ { 0x07, 0x07, "Multiple of 1 Gbps" },
+ { 0x08, 0x08, "Multiple of 4 Gbps" },
+ { 0x09, 0x09, "Multiple of 16 Gbps" },
+ { 0x0a, 0x0a, "Multiple of 64 Gbps" },
+ { 0x0b, 0x0b, "Multiple of 256 Gbps" },
+ { 0x0c, 0x0c, "Multiple of 1 Tbps" },
+ { 0x0d, 0x0d, "Multiple of 4 Tbps" },
+ { 0x0e, 0x0e, "Multiple of 16 Tbps" },
+ { 0x0f, 0x0f, "Multiple of 64 Tbps" },
+ { 0x10, 0x10, "Multiple of 256 Tbps" },
+ { 0x11, 0x11, "Multiple of 1 Pbps" },
+ { 0x12, 0x12, "Multiple of 4 Pbps" },
+ { 0x13, 0x13, "Multiple of 16 Pbps" },
+ { 0x14, 0x14, "Multiple of 64 Pbps" },
+ { 0x15, 0xff, "Multiple of 256 Pbps" },
+ { 0, 0, NULL }
+};
+
+guint32 get_ext_eps_qos_unit(guint32 byte, const char **unit_str)
+{
+ guint32 mult;
+
+ if (byte == 0x00) {
+ mult = 0;
+ *unit_str = "";
+ } else if (byte == 0x01) {
+ mult = 200;
+ *unit_str = "kbps";
+ } else if (byte <= 0x06) {
+ mult = (guint32)pow(4, byte-0x02);
+ *unit_str = "Mbps";
+ } else if (byte <= 0x0b) {
+ mult = (guint32)pow(4, byte-0x07);
+ *unit_str = "Gbps";
+ } else if (byte <= 0x10) {
+ mult = (guint32)pow(4, byte-0x0c);
+ *unit_str = "Tbps";
+ } else if (byte <= 0x15) {
+ mult = (guint32)pow(4, byte-0x11);
+ *unit_str = "Pbps";
+ } else {
+ mult = 256;
+ *unit_str = "Pbps";
+ }
+ return mult;
+}
+
+static guint16
+de_esm_ext_eps_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
+ guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset, byte, mult, val;
+ const char *unit_str;
+
+ curr_offset = offset;
+ proto_tree_add_item_ret_uint(tree, hf_nas_eps_esm_ext_mbr_unit, tvb, curr_offset, 1, ENC_NA, &byte);
+ curr_offset++;
+ mult = get_ext_eps_qos_unit(byte, &unit_str);
+ val = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_ext_mbr_ul, tvb, curr_offset,
+ 2, val, "%u %s (%u)", val * mult, unit_str, val);
+ curr_offset += 2;
+ val = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_ext_mbr_dl, tvb, curr_offset,
+ 2,val, "%u %s (%u)", val * mult, unit_str, val);
+ curr_offset += 2;
+ proto_tree_add_item_ret_uint(tree, hf_nas_eps_esm_ext_gbr_unit, tvb, curr_offset, 1, ENC_NA, &byte);
+ curr_offset++;
+ mult = get_ext_eps_qos_unit(byte, &unit_str);
+ val = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_ext_gbr_ul, tvb, curr_offset,
+ 2, val, "%u %s (%u)", val * mult, unit_str, val);
+ curr_offset += 2;
+ val = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_uint_format_value(tree, hf_nas_eps_esm_ext_gbr_dl, tvb, curr_offset,
+ 2, val, "%u %s (%u)", val * mult, unit_str, val);
+
+ return len;
+}
+
guint16 (*emm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len) = {
/* 9.9.3 EPS Mobility Management (EMM) information elements */
de_emm_add_upd_res, /* 9.9.3.0A Additional update result */
@@ -3423,6 +3733,8 @@ guint16 (*emm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
NULL, /* 9.9.3.49 Non-3GPP NW provided policies */
de_emm_hash_mme, /* 9.9.3.50 HashMME */
de_emm_replayed_nas_msg_cont, /* 9.9.3.51 Replayed NAS message container */
+ de_emm_network_policy, /* 9.9.3.52 Network policy */
+ de_emm_ue_add_sec_cap, /* 9.9.3.53 UE additional security capability */
NULL, /* NONE */
};
@@ -3460,6 +3772,8 @@ typedef enum
DE_ESM_EXT_PCO, /* 9.9.4.26 Extended protocol configuration options */
DE_ESM_HDR_COMPR_CONFIG_STATUS, /* 9.9.4.27 Header compression configuration status */
DE_ESM_SERV_PLMN_RATE_CTRL, /* 9.9.4.28 Serving PLMN rate control */
+ DE_ESM_EXT_APN_AGR_MAX_BR, /* 9.9.4.29 Extended APN aggregate maximum bit rate */
+ DE_ESM_EXT_EPS_QOS, /* 9.9.4.30 Extended EPS quality of service */
DE_ESM_NONE /* NONE */
}
nas_esm_elem_idx_t;
@@ -3496,6 +3810,8 @@ static const value_string nas_esm_elem_strings[] = {
{ DE_ESM_EXT_PCO, "Extended protocol configuration options" }, /* 9.9.4.26 Extended protocol configuration options */
{ DE_ESM_HDR_COMPR_CONFIG_STATUS, "Header compression configuration status" },/* 9.9.4.27 Header compression configuration status */
{ DE_ESM_SERV_PLMN_RATE_CTRL, "Serving PLMN rate control" }, /* 9.9.4.28 Serving PLMN rate control */
+ { DE_ESM_EXT_APN_AGR_MAX_BR, "Extended APN aggregate maximum bit rate" }, /* 9.9.4.29 Extended APN aggregate maximum bit rate */
+ { DE_ESM_EXT_EPS_QOS, "Extended EPS quality of service" }, /* 9.9.4.30 Extended EPS quality of service */
{ 0, NULL }
};
value_string_ext nas_esm_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_esm_elem_strings);
@@ -3535,6 +3851,8 @@ guint16 (*esm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
de_esm_ext_pco, /* 9.9.4.26 Extended protocol configuration options */
de_esm_hdr_compr_config_status, /* 9.9.4.27 Header compression configuration status */
de_esm_serv_plmn_rate_ctrl, /* 9.9.4.28 Serving PLMN rate control */
+ de_esm_ext_apn_agr_max_br, /* 9.9.4.29 Extended APN aggregate maximum bit rate */
+ de_esm_ext_eps_qos, /* 9.9.4.30 Extended EPS quality of service */
NULL, /* NONE */
};
@@ -3608,6 +3926,8 @@ nas_emm_attach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_NON_3GPP_NW_PROV_POL, NULL);
/* 6B T3448 value GPRS timer 2 9.9.3.16A O TLV 3 */
ELEM_OPT_TLV(0x6B, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3448 value");
+ /* X- Network policy Network policy 9.9.3.52 O TV 1 */
+ /*ELEM_OPT_TV_SHORT(0xX0, NAS_PDU_TYPE_EMM, DE_EMM_NETWORK_POLICY, NULL);*/
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -3738,6 +4058,8 @@ nas_emm_attach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV(0x5E, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3412 extended value");
/* 6E Extended DRX parameters Extended DRX parameters 9.9.3.46 O TLV 3 */
ELEM_OPT_TLV(0x6E, GSM_A_PDU_TYPE_GM, DE_EXT_DRX_PARAMS, NULL);
+ /* XX UE additional security capability UE additional security capability 9.9.3.53 O TLV 6 */
+ /*ELEM_OPT_TLV(0xXX, NAS_PDU_TYPE_EMM, DE_EMM_UE_ADD_SEC_CAP, NULL);*/
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4200,6 +4522,8 @@ nas_emm_sec_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
ELEM_OPT_TV(0x56, NAS_PDU_TYPE_EMM, DE_EMM_NONCE, " - NonceMME");
/* 4F HashMME HashMME 9.9.3.50 O TLV 10 */
ELEM_OPT_TLV(0x4F, NAS_PDU_TYPE_EMM, DE_EMM_HASH_MME, NULL);
+ /* XX Replayed UE additional security capability UE additional security capability 9.9.3.53 O TLV 6 */
+ /*ELEM_OPT_TLV(0xXX, NAS_PDU_TYPE_EMM, DE_EMM_UE_ADD_SEC_CAP, " - Replayed UE additional security capability");*/
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4374,6 +4698,8 @@ nas_emm_trac_area_upd_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_NON_3GPP_NW_PROV_POL, NULL);
/* 6B T3448 value GPRS timer 2 9.9.3.16A O TLV 3 */
ELEM_OPT_TLV(0x6B, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3448 value");
+ /* X- Network policy Network policy 9.9.3.52 O TV 1 */
+ /*ELEM_OPT_TV_SHORT(0xX0, NAS_PDU_TYPE_EMM, DE_EMM_NETWORK_POLICY, NULL);*/
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4490,6 +4816,8 @@ nas_emm_trac_area_upd_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
ELEM_OPT_TLV(0x5E, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3412 extended value");
/* 6E Extended DRX parameters Extended DRX parameters 9.9.3.46 O TLV 3 */
ELEM_OPT_TLV(0x6E, GSM_A_PDU_TYPE_GM, DE_EXT_DRX_PARAMS, NULL);
+ /* XX UE additional security capability UE additional security capability 9.9.3.53 O TLV 8 */
+ /*ELEM_OPT_TLV(0xXX, NAS_PDU_TYPE_EMM, DE_EMM_UE_ADD_SEC_CAP, NULL);*/
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4745,6 +5073,8 @@ nas_esm_act_ded_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info
ELEM_OPT_TLV(0x33, NAS_PDU_TYPE_ESM, DE_ESM_NBIFOM_CONT, NULL);
/* 7B Extended protocol configuration options Extended protocol configuration options 9.9.4.26 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
+ /* 5C Extended EPS QoS Extended EPS quality of service 9.9.4.30 O TLV 12 */
+ ELEM_OPT_TLV(0x5C, NAS_PDU_TYPE_ESM, DE_ESM_EXT_EPS_QOS, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4851,6 +5181,10 @@ nas_esm_act_def_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
/* 6E Serving PLMN rate control Serving PLMN rate control 9.9.4.28 O TLV 4 */
ELEM_OPT_TLV(0x6E, NAS_PDU_TYPE_ESM, DE_ESM_SERV_PLMN_RATE_CTRL, NULL);
+ /* 5F Extended APN-AMBR Extended APN aggregate maximum bit rate 9.9.4.29 O TLV 8 */
+ ELEM_OPT_TLV(0x5F, NAS_PDU_TYPE_ESM, DE_ESM_EXT_APN_AGR_MAX_BR , NULL);
+ /* 5C Extended EPS QoS Extended EPS quality of service 9.9.4.30 O TLV 12 */
+ ELEM_OPT_TLV(0x5C, NAS_PDU_TYPE_ESM, DE_ESM_EXT_EPS_QOS, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4926,6 +5260,8 @@ nas_esm_bearer_res_all_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TLV(0x33, NAS_PDU_TYPE_ESM, DE_ESM_NBIFOM_CONT, NULL);
/* 7B Extended protocol configuration options Extended protocol configuration options 9.9.4.26 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
+ /* 5C Extended EPS QoS Extended EPS quality of service 9.9.4.30 O TLV 12 */
+ ELEM_OPT_TLV(0x5C, NAS_PDU_TYPE_ESM, DE_ESM_EXT_EPS_QOS, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -5002,6 +5338,8 @@ nas_esm_bearer_res_mod_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TLV(0x66, NAS_PDU_TYPE_ESM, DE_ESM_HDR_COMPR_CONFIG, NULL);
/* 7B Extended protocol configuration options Extended protocol configuration options 9.9.4.26 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
+ /* 5C Extended EPS QoS Extended EPS quality of service 9.9.4.30 O TLV 12 */
+ ELEM_OPT_TLV(0x5C, NAS_PDU_TYPE_ESM, DE_ESM_EXT_EPS_QOS, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -5226,6 +5564,10 @@ nas_esm_mod_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
ELEM_OPT_TLV(0x66, NAS_PDU_TYPE_ESM, DE_ESM_HDR_COMPR_CONFIG, NULL);
/* 7B Extended protocol configuration options Extended protocol configuration options 9.9.4.26 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
+ /* 5F Extended APN-AMBR Extended APN aggregate maximum bit rate 9.9.4.29 O TLV 8 */
+ ELEM_OPT_TLV(0x5F, NAS_PDU_TYPE_ESM, DE_ESM_EXT_APN_AGR_MAX_BR , NULL);
+ /* 5C Extended EPS QoS Extended EPS quality of service 9.9.4.30 O TLV 12 */
+ ELEM_OPT_TLV(0x5C, NAS_PDU_TYPE_ESM, DE_ESM_EXT_EPS_QOS, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -6633,43 +6975,43 @@ proto_register_nas_eps(void)
FT_UINT8,BASE_DEC|BASE_RANGE_STRING, RVALS(nas_eps_emm_gen_msg_cont_type_vals), 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_apn_ambr_ul,
- { "APN-AMBR for uplink","nas_eps.emm.apn_ambr_ul",
+ { &hf_nas_eps_esm_apn_ambr_ul,
+ { "APN-AMBR for uplink","nas_eps.esm.apn_ambr_ul",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_apn_ambr_dl,
- { "APN-AMBR for downlink","nas_eps.emm.apn_ambr_dl",
+ { &hf_nas_eps_esm_apn_ambr_dl,
+ { "APN-AMBR for downlink","nas_eps.esm.apn_ambr_dl",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_apn_ambr_ul_ext,
- { "APN-AMBR for uplink (extended)","nas_eps.emm.apn_ambr_ul_ext",
+ { &hf_nas_eps_esm_apn_ambr_ul_ext,
+ { "APN-AMBR for uplink (extended)","nas_eps.esm.apn_ambr_ul_ext",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_apn_ambr_dl_ext,
- { "APN-AMBR for downlink (extended)","nas_eps.emm.apn_ambr_dl_ext",
+ { &hf_nas_eps_esm_apn_ambr_dl_ext,
+ { "APN-AMBR for downlink (extended)","nas_eps.esm.apn_ambr_dl_ext",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_apn_ambr_ul_ext2,
- { "APN-AMBR for uplink (extended-2)","nas_eps.emm.apn_ambr_ul_ext2",
+ { &hf_nas_eps_esm_apn_ambr_ul_ext2,
+ { "APN-AMBR for uplink (extended-2)","nas_eps.esm.apn_ambr_ul_ext2",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_apn_ambr_dl_ext2,
- { "APN-AMBR for downlink (extended-2)","nas_eps.emm.apn_ambr_dl_ext2",
+ { &hf_nas_eps_esm_apn_ambr_dl_ext2,
+ { "APN-AMBR for downlink (extended-2)","nas_eps.esm.apn_ambr_dl_ext2",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_apn_ambr_ul_total,
- { "Total APN-AMBR for uplink","nas_eps.emm.apn_ambr_ul_total",
+ { &hf_nas_eps_esm_apn_ambr_ul_total,
+ { "Total APN-AMBR for uplink","nas_eps.esm.apn_ambr_ul_total",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_apn_ambr_dl_total,
- { "Total APN-AMBR for downlink","nas_eps.emm.apn_ambr_dl_total",
+ { &hf_nas_eps_esm_apn_ambr_dl_total,
+ { "Total APN-AMBR for downlink","nas_eps.esm.apn_ambr_dl_total",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
@@ -6688,6 +7030,171 @@ proto_register_nas_eps(void)
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_nas_eps_redir_policy,
+ { "Redirection to GERAN security policy", "nas_eps.emm.redic_policy",
+ FT_BOOLEAN, 8, TFS(&nas_eps_redir_policy_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea0,
+ { "5G-EA0","nas_eps.emm.5g_ea0",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_128_5g_ea1,
+ { "128-5G-EA1","nas_eps.emm.128_5g_ea1",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_128_5g_ea2,
+ { "128-5G-EA2","nas_eps.emm.128_5g_ea2",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_128_5g_ea3,
+ { "128-5G-EA3","nas_eps.emm.128_5g_ea3",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea4,
+ { "5G-EA4","nas_eps.emm.5g_ea4",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea5,
+ { "5G-EA5","nas_eps.emm.5g_ea5",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea6,
+ { "5G-EA6","nas_eps.emm.5g_ea6",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea7,
+ { "5G-EA7","nas_eps.emm.5g_ea7",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea8,
+ { "5G-EA8","nas_eps.emm.5g_ea8",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea9,
+ { "5G-EA9","nas_eps.emm.5g_ea9",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea10,
+ { "5G-EA10","nas_eps.emm.5g_ea10",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea11,
+ { "5G-EA11","nas_eps.emm.5g_ea11",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea12,
+ { "5G-EA12","nas_eps.emm.5g_ea12",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea13,
+ { "5G-EA13","nas_eps.emm.5g_ea13",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea14,
+ { "5G-EA14","nas_eps.emm.5g_ea14",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ea15,
+ { "5G-EA15","nas_eps.emm.5g_ea15",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia0,
+ { "5G-IA0","nas_eps.emm.5g_ia0",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_128_5g_ia1,
+ { "128-5G-IA1","nas_eps.emm.128_5g_ia1",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_128_5g_ia2,
+ { "128-5G-IA2","nas_eps.emm.128_5g_ia2",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_128_5g_ia3,
+ { "128-5G-IA3","nas_eps.emm.128_5g_ia3",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia4,
+ { "5G-IA4","nas_eps.emm.5g_ia4",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia5,
+ { "5G-IA5","nas_eps.emm.5g_ia5",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia6,
+ { "5G-IA6","nas_eps.emm.5g_ia6",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia7,
+ { "5G-IA7","nas_eps.emm.5g_ia7",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia8,
+ { "5G-IA8","nas_eps.emm.5g_ia8",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia9,
+ { "5G-IA9","nas_eps.emm.5g_ia9",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia10,
+ { "5G-IA10","nas_eps.emm.5g_ia10",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia11,
+ { "5G-IA11","nas_eps.emm.5g_ia11",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia12,
+ { "5G-IA12","nas_eps.emm.5g_ia12",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia13,
+ { "5G-IA13","nas_eps.emm.5g_ia13",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia14,
+ { "5G-IA14","nas_eps.emm.5g_ia14",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_5g_ia15,
+ { "5G-IA15","nas_eps.emm.5g_ia15",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
{ &hf_nas_eps_emm_detach_req_UL,
{ "Uplink","nas_eps.emm.detach_req_ul",
FT_NONE, BASE_NONE, NULL, 0x0,
@@ -6713,48 +7220,48 @@ proto_register_nas_eps(void)
FT_UINT8,BASE_DEC, VALS(nas_eps_emm_type_of_detach_DL_vals), 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_qci,
- { "Quality of Service Class Identifier (QCI)","nas_eps.emm.qci",
+ { &hf_nas_eps_esm_qci,
+ { "Quality of Service Class Identifier (QCI)","nas_eps.esm.qci",
FT_UINT8,(BASE_DEC|BASE_RANGE_STRING), RVALS(nas_eps_qci_vals), 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_mbr_ul,
- { "Maximum bit rate for uplink","nas_eps.emm.mbr_ul",
+ { &hf_nas_eps_esm_mbr_ul,
+ { "Maximum bit rate for uplink","nas_eps.esm.mbr_ul",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_mbr_dl,
- { "Maximum bit rate for downlink","nas_eps.emm.mbr_dl",
+ { &hf_nas_eps_esm_mbr_dl,
+ { "Maximum bit rate for downlink","nas_eps.esm.mbr_dl",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_gbr_ul,
- { "Guaranteed bit rate for uplink","nas_eps.emm.gbr_ul",
+ { &hf_nas_eps_esm_gbr_ul,
+ { "Guaranteed bit rate for uplink","nas_eps.esm.gbr_ul",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_gbr_dl,
- { "Guaranteed bit rate for downlink","nas_eps.emm.gbr_dl",
+ { &hf_nas_eps_esm_gbr_dl,
+ { "Guaranteed bit rate for downlink","nas_eps.esm.gbr_dl",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_embr_ul,
- { "Maximum bit rate for uplink(ext)","nas_eps.emm.embr_ul",
+ { &hf_nas_eps_esm_embr_ul,
+ { "Maximum bit rate for uplink(ext)","nas_eps.esm.embr_ul",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_embr_dl,
- { "Maximum bit rate for downlink(ext)","nas_eps.emm.embr_dl",
+ { &hf_nas_eps_esm_embr_dl,
+ { "Maximum bit rate for downlink(ext)","nas_eps.esm.embr_dl",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_egbr_ul,
- { "Guaranteed bit rate for uplink(ext)","nas_eps.emm.egbr_ul",
+ { &hf_nas_eps_esm_egbr_ul,
+ { "Guaranteed bit rate for uplink(ext)","nas_eps.esm.egbr_ul",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_egbr_dl,
- { "Guaranteed bit rate for downlink(ext)","nas_eps.emm.egbr_dl",
+ { &hf_nas_eps_esm_egbr_dl,
+ { "Guaranteed bit rate for downlink(ext)","nas_eps.esm.egbr_dl",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
@@ -6764,7 +7271,7 @@ proto_register_nas_eps(void)
NULL, HFILL }
},
{ &hf_nas_eps_esm_eit,
- { "EIT (ESM information transfer)", "nas_eps.emm.eit",
+ { "EIT (ESM information transfer)", "nas_eps.esm.eit",
FT_BOOLEAN, 8, TFS(&nas_eps_emm_eit_vals), 0x01,
NULL, HFILL }
},
@@ -7023,6 +7530,56 @@ proto_register_nas_eps(void)
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_nas_eps_esm_ext_apn_ambr_dl_unit,
+ { "Unit for extended APN-AMBR for downlink", "nas_eps.esm.ext_apn_ambr_dl_unit",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(nas_eps_ext_apn_ambr_unit_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ext_apn_ambr_dl,
+ { "Extended APN-AMBR for downlink", "nas_eps.esm.ext_apn_ambr_dl",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ext_apn_ambr_ul_unit,
+ { "Unit for extended APN-AMBR for uplink", "nas_eps.esm.ext_apn_ambr_ul_unit",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(nas_eps_ext_apn_ambr_unit_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ext_apn_ambr_ul,
+ { "Extended APN-AMBR for uplink", "nas_eps.esm.ext_apn_ambr_ul",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ext_mbr_unit,
+ { "Unit for maximum bit rate", "nas_eps.esm.ext_mbr_unit",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(nas_eps_ext_eps_qos_unit_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ext_mbr_ul,
+ { "Maximum bit rate for uplink", "nas_eps.esm.ext_mbr_ul",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ext_mbr_dl,
+ { "Maximum bit rate for downlink", "nas_eps.esm.ext_mbr_dl",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ext_gbr_unit,
+ { "Unit for guaranteed bit rate", "nas_eps.esm.ext_gbr_unit",
+ FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(nas_eps_ext_eps_qos_unit_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ext_gbr_ul,
+ { "Guaranteed bit rate for uplink", "nas_eps.esm.ext_gbr_ul",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ext_gbr_dl,
+ { "Guaranteed bit rate for downlink", "nas_eps.esm.ext_gbr_dl",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_nas_eps_active_flg,
{ "Active flag", "nas_eps.emm.active_flg",
FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_active_flg_value), 0x0,