aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2016-06-30 17:40:44 +0200
committerPascal Quantin <pascal.quantin@gmail.com>2016-06-30 19:17:49 +0000
commit6b152515abf075b84422d344e085891e2b76f41e (patch)
treea177f0bd617a9649dbc750181de966af99626aba /epan
parente59460348f82c4e18141cef25e7531b0121cf15c (diff)
NAS EPS: upgrade dissector to v13.6.0
Change-Id: Ie27ce7481b9730ad8da0d465ed1c2bc373d4b602 Reviewed-on: https://code.wireshark.org/review/16224 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-gsm_a_common.h1
-rw-r--r--epan/dissectors/packet-nas_eps.c1258
2 files changed, 912 insertions, 347 deletions
diff --git a/epan/dissectors/packet-gsm_a_common.h b/epan/dissectors/packet-gsm_a_common.h
index 869b4b323e..3a3cfcf103 100644
--- a/epan/dissectors/packet-gsm_a_common.h
+++ b/epan/dissectors/packet-gsm_a_common.h
@@ -1400,6 +1400,7 @@ typedef enum
DE_EMM_VOICE_DMN_PREF, /* 9.9.3.44 Voice domain preference and UE's usage setting */
DE_EMM_GUTI_TYPE, /* 9.9.3.45 GUTI type */
DE_EMM_EXT_DRX_PARAMS, /* 9.9.3.46 Extended DRX parameters */
+ DE_EMM_DATA_SERV_TYPE, /* 9.9.3.47 Data service type */
DE_EMM_NONE /* NONE */
}
diff --git a/epan/dissectors/packet-nas_eps.c b/epan/dissectors/packet-nas_eps.c
index 6ce0cc7f2f..4ddb97b61f 100644
--- a/epan/dissectors/packet-nas_eps.c
+++ b/epan/dissectors/packet-nas_eps.c
@@ -30,6 +30,8 @@
#include <epan/asn1.h>
#include <epan/prefs.h>
#include <epan/expert.h>
+#include <epan/exceptions.h>
+#include <epan/show_exception.h>
#include "packet-gsm_map.h"
#include "packet-gsm_a_common.h"
#include "packet-e212.h"
@@ -85,12 +87,17 @@ static int hf_nas_eps_emm_nonce = -1;
static int hf_nas_eps_emm_paging_id = -1;
static int hf_nas_eps_emm_ext_emm_cause = -1;
static int hf_nas_eps_emm_eps_att_type = -1;
-static int hf_nas_eps_emm_ea_wo_pdn = -1;
+static int hf_nas_eps_emm_cp_ciot = -1;
+static int hf_nas_eps_emm_er_wo_pdn = -1;
static int hf_nas_eps_emm_esr_ps = -1;
static int hf_nas_eps_emm_cs_lcs = -1;
static int hf_nas_eps_emm_epc_lcs = -1;
static int hf_nas_eps_emm_emc_bs = -1;
static int hf_nas_eps_emm_ims_vops = -1;
+static int hf_nas_eps_emm_epco = -1;
+static int hf_nas_eps_emm_hc_cp_ciot = -1;
+static int hf_nas_eps_emm_s1_u_data = -1;
+static int hf_nas_eps_emm_up_ciot = -1;
static int hf_nas_eps_emm_nas_key_set_id = -1;
static int hf_nas_eps_tsc = -1;
static int hf_nas_eps_emm_odd_even = -1;
@@ -105,9 +112,11 @@ static int hf_nas_eps_emm_toi = -1;
static int hf_nas_eps_emm_toc = -1;
static int hf_nas_eps_emm_EPS_attach_result = -1;
static int hf_nas_eps_emm_spare_half_octet = -1;
-static int hf_nas_eps_emm_nnb_ciot = -1;
+static int hf_nas_eps_emm_anb_up_ciot = -1;
+static int hf_nas_eps_emm_anb_cp_ciot = -1;
static int hf_nas_eps_emm_add_upd_res = -1;
static int hf_nas_eps_emm_pnb_ciot = -1;
+static int hf_nas_eps_emm_saf = -1;
static int hf_nas_eps_emm_add_upd_type = -1;
static int hf_nas_eps_emm_res = -1;
static int hf_nas_eps_emm_csfb_resp = -1;
@@ -164,7 +173,9 @@ static int hf_nas_eps_emm_lpp_cap = -1;
static int hf_nas_eps_emm_lcs_cap = -1;
static int hf_nas_eps_emm_1xsrvcc_cap = -1;
static int hf_nas_eps_emm_nf_cap = -1;
-static int hf_nas_eps_emm_ea_wo_pdn_cap = -1;
+static int hf_nas_eps_emm_epco_cap = -1;
+static int hf_nas_eps_emm_hc_cp_ciot_cap = -1;
+static int hf_nas_eps_emm_er_wo_pdn_cap = -1;
static int hf_nas_eps_emm_s1u_data_cap = -1;
static int hf_nas_eps_emm_up_ciot_cap = -1;
static int hf_nas_eps_emm_cp_ciot_cap = -1;
@@ -208,21 +219,51 @@ static int hf_nas_eps_esm_pdn_ipv6_if_id = -1;
static int hf_nas_eps_esm_eplmnc = -1;
static int hf_nas_eps_esm_ratc = -1;
static int hf_nas_eps_esm_linked_bearer_id = -1;
-static int hf_nas_eps_esm_remote_ue_context_list_user_info_len = -1;
-static int hf_nas_eps_esm_remote_ue_context_list_odd_even_indic = -1;
-static int hf_nas_eps_esm_remote_ue_context_list_user_info_type = -1;
-static int hf_nas_eps_esm_remote_ue_context_list_encr_imsi = -1;
-static int hf_nas_eps_esm_remote_ue_context_list_msisdn = -1;
-static int hf_nas_esm_remote_ue_context_list_address_type = -1;
-static int hf_nas_esm_remote_ue_context_list_ipv4 = -1;
-static int hf_nas_esm_remote_ue_context_list_port_number = -1;
-static int hf_nas_esm_remote_ue_context_list_ipv6_prefix = -1;
-static int hf_nas_esm_pkmf_address_type = -1;
-static int hf_nas_esm_pkmf_ipv4 = -1;
-static int hf_nas_esm_pkmf_ipv6 = -1;
-static int hf_nas_eps_esm_rohc_config_params = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_nb_ue_contexts = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_len = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_nb_user_id = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_user_id_len = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_odd_even_indic = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_user_id_type = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_encr_imsi = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_msisdn = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_imei = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_imeisv = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_address_type = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_ipv4 = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_port_number = -1;
+static int hf_nas_eps_esm_remote_ue_context_list_ue_context_ipv6_prefix = -1;
+static int hf_nas_eps_esm_pkmf_address_type = -1;
+static int hf_nas_eps_esm_pkmf_ipv4 = -1;
+static int hf_nas_eps_esm_pkmf_ipv6 = -1;
+static int hf_nas_eps_esm_spare_bit0x80 = -1;
+static int hf_nas_eps_esm_hdr_comp_config_prof_0104 = -1;
+static int hf_nas_eps_esm_hdr_comp_config_prof_0103 = -1;
+static int hf_nas_eps_esm_hdr_comp_config_prof_0102 = -1;
+static int hf_nas_eps_esm_hdr_comp_config_prof_0006 = -1;
+static int hf_nas_eps_esm_hdr_comp_config_prof_0004 = -1;
+static int hf_nas_eps_esm_hdr_comp_config_prof_0003 = -1;
+static int hf_nas_eps_esm_hdr_comp_config_prof_0002 = -1;
+static int hf_nas_eps_esm_hdr_compr_config_max_cid = -1;
+static int hf_nas_eps_esm_ctrl_plane_only_ind_cpoi = -1;
+static int hf_nas_eps_esm_user_data_cont = -1;
+static int hf_nas_eps_esm_rel_assist_ind_ddx = -1;
+static int hf_nas_eps_esm_hdr_compr_config_status_ebi7 = -1;
+static int hf_nas_eps_esm_hdr_compr_config_status_ebi6 = -1;
+static int hf_nas_eps_esm_hdr_compr_config_status_ebi5 = -1;
+static int hf_nas_eps_esm_spare_bits0x1f00 = -1;
+static int hf_nas_eps_esm_hdr_compr_config_status_ebi15 = -1;
+static int hf_nas_eps_esm_hdr_compr_config_status_ebi14 = -1;
+static int hf_nas_eps_esm_hdr_compr_config_status_ebi13 = -1;
+static int hf_nas_eps_esm_hdr_compr_config_status_ebi12 = -1;
+static int hf_nas_eps_esm_hdr_compr_config_status_ebi11 = -1;
+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_active_flg = -1;
+static int hf_nas_eps_data_serv_type = -1;
static int hf_nas_eps_eps_update_result_value = -1;
static int hf_nas_eps_eps_update_type_value = -1;
static int hf_nas_eps_service_type = -1;
@@ -244,6 +285,7 @@ static int ett_nas_eps_esm_msg_cont = -1;
static int ett_nas_eps_nas_msg_cont = -1;
static int ett_nas_eps_gen_msg_cont = -1;
static int ett_nas_eps_cmn_add_info = -1;
+static int ett_nas_eps_remote_ue_context = -1;
static expert_field ei_nas_eps_extraneous_data = EI_INIT;
static expert_field ei_nas_eps_unknown_identity = EI_INIT;
@@ -275,7 +317,9 @@ static const value_string nas_msg_emm_strings[] = {
{ 0x4b, "Tracking area update reject"},
{ 0x4c, "Extended service request"},
+ { 0x4d, "Control plane service request"},
{ 0x4e, "Service reject"},
+ { 0x4f, "Service accept"},
{ 0x50, "GUTI reallocation command"},
{ 0x51, "GUTI reallocation complete"},
@@ -325,9 +369,11 @@ static const value_string nas_msg_esm_strings[] = {
{ 0xd9, "ESM information request"},
{ 0xda, "ESM information response"},
{ 0xdb, "Notification"},
+ { 0xdc, "ESM dummy message"},
{ 0xe8, "ESM status"},
{ 0xe9, "Remote UE report"},
{ 0xea, "Remote UE report response"},
+ { 0xeb, "ESM data transport"},
{ 0, NULL }
};
static value_string_ext nas_msg_esm_strings_ext = VALUE_STRING_EXT_INIT(nas_msg_esm_strings);
@@ -338,7 +384,7 @@ static const value_string security_header_type_vals[] = {
{ 2, "Integrity protected and ciphered"},
{ 3, "Integrity protected with new EPS security context"},
{ 4, "Integrity protected and ciphered with new EPS security context"},
- { 5, "Reserved"},
+ { 5, "Integrity protected and partially ciphered NAS message"},
{ 6, "Reserved"},
{ 7, "Reserved"},
{ 8, "Reserved"},
@@ -697,6 +743,7 @@ static const value_string nas_emm_elem_strings[] = {
{ DE_EMM_VOICE_DMN_PREF, "Voice domain preference and UEs usage setting" },/* 9.9.3.44 Voice domain preference and UEs usage setting */
{ DE_EMM_GUTI_TYPE, "GUTI type" }, /* 9.9.3.45 GUTI type */
{ DE_EMM_EXT_DRX_PARAMS, "Extended DRX parameters" }, /* 9.9.3.46 Extended DRX parameters */
+ { DE_EMM_DATA_SERV_TYPE, "Data service type" }, /* 9.9.3.47 Data service type */
{ 0, NULL }
};
value_string_ext nas_emm_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_emm_elem_strings);
@@ -769,7 +816,8 @@ typedef enum
DE_EMM_GEN_MSG_CONT, /* 9.9.3.43 Generic message container */
DE_EMM_VOICE_DMN_PREF, /* 9.9.3.44 Voice domain preference and UEs usage setting */
DE_EMM_GUTI_TYPE, /* 9.9.3.45 GUTI type */
- DE_EMM_EXT_DRX_PARAMS /* 9.9.3.46 Extended DRX parameters */
+ DE_EMM_EXT_DRX_PARAMS, /* 9.9.3.46 Extended DRX parameters */
+ DE_EMM_DATA_SERV_TYPE, /* 9.9.3.47 Data service type */
DE_EMM_NONE /* NONE */
}
nas_emm_elem_idx_t;
@@ -781,18 +829,19 @@ nas_emm_elem_idx_t;
/*
* 9.9.3.0A Additional update result
*/
-static const value_string nas_eps_emm_nb_ciot_vals[] = {
- { 0x0, "no additional information"},
- { 0x1, "control-plane CIoT EPS optimization"},
- { 0x2, "user-plane EPS optimization"},
- { 0x3, "reserved"},
- { 0, NULL }
+static const true_false_string nas_eps_emm_anb_up_ciot_value = {
+ "User plane EPS optimization accepted",
+ "User plane EPS optimization not accepted"
+};
+static const true_false_string nas_eps_emm_anb_cp_ciot_value = {
+ "Control plane CIoT EPS optimization accepted",
+ "Control plane CIoT EPS optimization not accepted"
};
static const value_string nas_eps_emm_add_upd_res_vals[] = {
- { 0x0, "no additional information"},
+ { 0x0, "No additional information"},
{ 0x1, "CS Fallback not preferred"},
{ 0x2, "SMS only"},
- { 0x3, "reserved"},
+ { 0x3, "Reserved"},
{ 0, NULL }
};
static guint16
@@ -805,8 +854,10 @@ de_emm_add_upd_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
curr_offset = offset;
bit_offset = (curr_offset<<3)+4;
- proto_tree_add_bits_item(tree, hf_nas_eps_emm_nnb_ciot, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
- bit_offset += 2;
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_anb_up_ciot, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset ++;
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_anb_cp_ciot, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset ++;
proto_tree_add_bits_item(tree, hf_nas_eps_emm_add_upd_res, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
curr_offset++;
@@ -815,12 +866,24 @@ de_emm_add_upd_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/*
* 9.9.3.0B Additional update type
*/
-static const value_string nas_eps_emm_add_upd_type_vals[] = {
- { 0x0, "no additional information (shall be interpreted as request for"
- " combined attach or combined tracking area updating)"},
- { 0x1, "SMS only"},
+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"},
+ { 0x3, "Reserved"},
{ 0, NULL }
};
+static const true_false_string nas_eps_emm_saf_value = {
+ "Keeping the NAS signalling connection is required after the completion of the"
+ "tracking area updating procedure",
+ "Keeping the NAS signalling connection is not required after the completion of the"
+ "tracking area updating procedure"
+};
+static const true_false_string nas_eps_emm_add_upd_type_value = {
+ "SMS only",
+ "No additional information (shall be interpreted as request for"
+ " combined attach or combined tracking area updating)"
+};
static guint16
de_emm_add_upd_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
guint32 offset, guint len _U_,
@@ -833,7 +896,7 @@ de_emm_add_upd_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
proto_tree_add_bits_item(tree, hf_nas_eps_emm_pnb_ciot, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
bit_offset += 2;
- proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_saf, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset += 1;
proto_tree_add_bits_item(tree, hf_nas_eps_emm_add_upd_type, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
@@ -1130,14 +1193,6 @@ de_emm_eps_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/*
* 9.9.3.12A EPS network feature support
*/
-static const true_false_string nas_eps_emm_ea_wo_pdn_value = {
- "EPS attached without PDN connectivity supported",
- "EPS attached without PDN connectivity not supported"
-};
-static const true_false_string nas_eps_emm_esr_ps_value = {
- "network supports use of EXTENDED SERVICE REQUEST to request for packet services",
- "network does not support use of EXTENDED SERVICE REQUEST to request for packet services"
-};
static const value_string nas_eps_emm_cs_lcs_vals[] = {
{ 0, "no information about support of location services via CS domain is available"},
{ 1, "location services via CS domain not supported"},
@@ -1145,19 +1200,6 @@ static const value_string nas_eps_emm_cs_lcs_vals[] = {
{ 3, "reserved"},
{ 0, NULL }
};
-static const true_false_string nas_eps_emm_epc_lcs_value = {
- "location services via EPC supported",
- "location services via EPC not supported"
-};
-static const true_false_string nas_eps_emm_emc_bs_value = {
- "emergency bearer services in S1 mode supported",
- "emergency bearer services in S1 mode not supported"
-};
-static const true_false_string nas_eps_emm_ims_vops_value = {
- "IMS voice over PS session in S1 mode supported",
- "IMS voice over PS session in S1 mode not supported"
-};
-
static guint16
de_emm_eps_net_feature_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
guint32 offset, guint len _U_,
@@ -1167,9 +1209,9 @@ de_emm_eps_net_feature_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
curr_offset = offset;
bit_offset = curr_offset << 3;
- proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_cp_ciot, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset += 1;
- proto_tree_add_bits_item(tree, hf_nas_eps_emm_ea_wo_pdn, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_er_wo_pdn, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset += 1;
proto_tree_add_bits_item(tree, hf_nas_eps_emm_esr_ps, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset += 1;
@@ -1180,7 +1222,18 @@ de_emm_eps_net_feature_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
proto_tree_add_bits_item(tree, hf_nas_eps_emm_emc_bs, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset += 1;
proto_tree_add_bits_item(tree, hf_nas_eps_emm_ims_vops, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- /*bit_offset += 1;*/
+ bit_offset += 1;
+ if (len >= 2) {
+ proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
+ bit_offset += 4;
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_epco, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += 1;
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_hc_cp_ciot, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += 1;
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_s1_u_data, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += 1;
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_up_ciot, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ }
return len;
}
@@ -1231,6 +1284,7 @@ de_emm_esm_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
proto_tree *sub_tree;
tvbuff_t *new_tvb;
guint32 curr_offset;
+ guint8 init_sec_hdr_type = tvb_get_bits8(tvb, 0, 4);
curr_offset = offset;
@@ -1240,8 +1294,25 @@ de_emm_esm_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* This IE can contain any ESM PDU as defined in subclause 8.3. */
new_tvb = tvb_new_subset_length(tvb, curr_offset, len);
- /* Plain NAS message */
- disect_nas_eps_esm_msg(new_tvb, pinfo, sub_tree, 0/* offset */);
+ if (init_sec_hdr_type == 5) {
+ /* Integrity protected and partially ciphered NAS message */
+ guint8 pd = tvb_get_guint8(new_tvb, 0);
+ /* If pd is in plaintext this message probably isn't ciphered */
+ if (((pd&0x0f) != 2) || (((pd&0x0f) == 2) && ((pd&0xf0) > 0) && ((pd&0xf0) < 0x50))) {
+ proto_tree_add_item(sub_tree, hf_nas_eps_ciphered_msg, new_tvb, 0, len, ENC_NA);
+ } else {
+ TRY {
+ /* Potential plain NAS message: let's try to decode it and catch exceptions */
+ disect_nas_eps_esm_msg(new_tvb, pinfo, sub_tree, 0/* offset */);
+ } CATCH_BOUNDS_ERRORS {
+ /* Dissection exception: message was probably ciphered and heuristic was too weak */
+ show_exception(new_tvb, pinfo, sub_tree, EXCEPT_CODE, GET_MESSAGE);
+ } ENDTRY
+ }
+ } else {
+ /* Plain NAS message */
+ disect_nas_eps_esm_msg(new_tvb, pinfo, sub_tree, 0/* offset */);
+ }
return(len);
}
@@ -1729,85 +1800,10 @@ de_emm_trac_area_id_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
* 9.9.3.34 UE network capability
*/
-static const true_false_string nas_eps_emm_supported_flg_value = {
- "Supported",
- "Not Supported"
-};
static const true_false_string nas_eps_emm_ucs2_supp_flg_value = {
"The UE has no preference between the use of the default alphabet and the use of UCS2",
"The UE has a preference for the default alphabet"
};
-/* ProSe-dd capability (octet 7, bit 8) */
-static const true_false_string nas_eps_emm_prose_dd_cap_flg = {
- "ProSe direct discovery supported",
- "ProSe direct discovery not supported"
-};
-/* ProSe capability (octet 7, bit 7) */
-static const true_false_string nas_eps_emm_prose_cap_flg = {
- "ProSe supported",
- "ProSe not supported"
-};
-/* H.245-ASH capability (octet 7, bit 6) */
-static const true_false_string nas_eps_emm_h245_ash_cap_flg = {
- "H.245 after SRVCC handover capability supported",
- "H.245 after SRVCC handover capability not supported"
-};
-/* ACC-CSFB capability (octet 7, bit 5) */
-static const true_false_string nas_eps_emm_acc_csfb_cap_flg = {
- "eNodeB-based access class control for CSFB supported",
- "eNodeB-based access class control for CSFB not supported"
-};
-/* LPP capability (octet 7, bit 4) */
-static const true_false_string nas_eps_emm_lpp_cap_flg = {
- "LTE Positioning Protocol supported",
- "LTE Positioning Protocol not supported"
-};
-/* LCS capability (octet 7, bit 3) */
-static const true_false_string nas_eps_emm_lcs_cap_flg = {
- "Location services notification mechanisms supported",
- "Location services notification mechanisms not supported"
-};
-/* 1xSRVCC capability (octet 7, bit 2) */
-static const true_false_string nas_eps_emm_1xsrvcc_cap_flg = {
- "SRVCC from E-UTRAN to cdma2000 1xCS supported",
- "SRVCC from E-UTRAN to cdma2000 1x CS not supported"
-};
-/* NF capability (octet 7, bit 1) */
-static const true_false_string nas_eps_emm_nf_cap_flg = {
- "Notification procedure supported",
- "Notification procedure not supported"
-};
-/* EAw/oPDN capability (octet 8, bit 6) */
-static const true_false_string nas_eps_emm_ea_wo_pdn_cap_flg = {
- "EPS attached without PDN connectivity supported",
- "EPS attached without PDN connectivity not supported"
-};
-/* S1-U data capability (octet 8, bit 5) */
-static const true_false_string nas_eps_emm_s1u_data_cap_flg = {
- "S1-U data transfer supported",
- "S1-U data transfer not supported"
-};
-/* UP CIoT capability (octet 8, bit 4) */
-static const true_false_string nas_eps_emm_up_ciot_cap_flg = {
- "User-plane CIoT EPS optimization supported",
- "User-plane CIoT EPS optimization not supported"
-};
-/* CP CIoT capability (octet 8, bit 3) */
-static const true_false_string nas_eps_emm_cp_ciot_cap_flg = {
- "Control-plane CIoT EPS optimization supported",
- "Control-plane CIoT EPS optimization not supported"
-};
-/* ProSe-relay capability (octet 8, bit 2) */
-static const true_false_string nas_eps_emm_prose_relay_cap_flg = {
- "Acting as a ProSe UE-to-network relay supported",
- "Acting as a ProSe UE-to-network relay not supported"
-};
-/* ProSe-dc capability (octet 8, bit 1) */
-static const true_false_string nas_eps_emm_prose_dc_cap_flg = {
- "ProSe direct communication supported",
- "ProSe direct communication not supported"
-};
-
guint16
de_emm_ue_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
guint32 offset, guint len,
@@ -1932,10 +1928,12 @@ de_emm_ue_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
if ((curr_offset - offset) >= len)
return (len);
- /* Bits 8 to 7 of octet 8 are spare and shall be coded as zero. */
- proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, (curr_offset<<3), 2, ENC_BIG_ENDIAN);
- /* EAw/oPDN capability (octet 8, bit 6) */
- proto_tree_add_item(tree, hf_nas_eps_emm_ea_wo_pdn_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* ePCO capability (octet 8, bit 8) */
+ proto_tree_add_item(tree, hf_nas_eps_emm_epco_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* HC-CP CIoT capability (octet 8, bit 7) */
+ proto_tree_add_item(tree, hf_nas_eps_emm_hc_cp_ciot_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* ERw/oPDN capability (octet 8, bit 6) */
+ proto_tree_add_item(tree, hf_nas_eps_emm_er_wo_pdn_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* S1-U data capability (octet 8, bit 5) */
proto_tree_add_item(tree, hf_nas_eps_emm_s1u_data_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* UP CIoT capability (octet 8, bit 4) */
@@ -2284,6 +2282,11 @@ de_emm_guti_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* See subclause 10.5.5.32 in 3GPP TS 24.008
*/
+/*
+ * 9.9.3.47 Data service type
+ * Coded inline 1/2 octet
+ */
+
/*
* 9.9.4 EPS Session Management (ESM) information elements
*/
@@ -2913,6 +2916,8 @@ static const value_string nas_eps_esm_user_info_type_values[] = {
{ 0x1, "Encrypted IMSI" },
{ 0x2, "IMSI" },
{ 0x3, "MSISDN" },
+ { 0x4, "IMEI" },
+ { 0x5, "IMEISV" },
{ 0, NULL }
};
static const value_string nas_eps_esm_address_type_values[] = {
@@ -2921,53 +2926,79 @@ static const value_string nas_eps_esm_address_type_values[] = {
{ 0x2, "IPv6" },
{ 0, NULL }
};
-
static guint16
de_esm_remote_ue_context_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset = offset;
- guint32 user_info_len, user_info_type, remote_address_type;
-
- while ((curr_offset - offset) < len) {
- proto_tree_add_item_ret_uint(tree, hf_nas_eps_esm_remote_ue_context_list_user_info_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &user_info_len);
+ guint32 nb_ue_contexts, ue_context_len, nb_user_id, user_id_len, user_id_type, remote_address_type, i, j;
+ proto_tree *subtree;
+ proto_item *subtree_item;
+
+ proto_tree_add_item_ret_uint(tree, hf_nas_eps_esm_remote_ue_context_list_nb_ue_contexts, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &nb_ue_contexts);
+ curr_offset ++;
+ for (i = 1; i <= nb_ue_contexts; i++) {
+ subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, len - (curr_offset - offset), ett_nas_eps_remote_ue_context,
+ &subtree_item, "Remote UE context %u", i);
+ proto_tree_add_item_ret_uint(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ue_context_len);
+ proto_item_set_len(subtree_item, ue_context_len+1);
curr_offset ++;
- proto_tree_add_item(tree, hf_nas_eps_esm_remote_ue_context_list_odd_even_indic, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item_ret_uint(tree, hf_nas_eps_esm_remote_ue_context_list_user_info_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &user_info_type);
- switch (user_info_type & 0x07) {
- case 1:
- proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, curr_offset<<3, 4, ENC_BIG_ENDIAN);
- curr_offset++;
- proto_tree_add_item(tree, hf_nas_eps_esm_remote_ue_context_list_encr_imsi, tvb, curr_offset, 16, ENC_NA);
- curr_offset += 16;
- break;
- case 2:
- dissect_e212_imsi(tvb, pinfo, tree, curr_offset, user_info_len, TRUE);
- curr_offset += user_info_len;
- break;
- case 3:
- {
- const gchar *msisdn_str = tvb_bcd_dig_to_wmem_packet_str(tvb, curr_offset, user_info_len, NULL, TRUE);
- proto_tree_add_string(tree, hf_nas_eps_esm_remote_ue_context_list_msisdn, tvb, curr_offset, user_info_len, msisdn_str);
- curr_offset += user_info_len;
- }
- break;
- default:
- curr_offset += user_info_len;
- break;
+ proto_tree_add_item_ret_uint(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_nb_user_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &nb_user_id);
+ curr_offset ++;
+ for (j = 0; i < nb_user_id; j++) {
+ proto_tree_add_item_ret_uint(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_user_id_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &user_id_len);
+ curr_offset ++;
+ proto_tree_add_item(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_odd_even_indic, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item_ret_uint(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_user_id_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &user_id_type);
+ switch (user_id_type & 0x07) {
+ case 1:
+ proto_tree_add_bits_item(subtree, hf_nas_eps_spare_bits, tvb, curr_offset<<3, 4, ENC_BIG_ENDIAN);
+ curr_offset++;
+ proto_tree_add_item(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_encr_imsi, tvb, curr_offset, 16, ENC_NA);
+ curr_offset += 16;
+ break;
+ case 2:
+ dissect_e212_imsi(tvb, pinfo, subtree, curr_offset, user_id_len, TRUE);
+ curr_offset += user_id_len;
+ break;
+ case 3:
+ {
+ const gchar *msisdn_str = tvb_bcd_dig_to_wmem_packet_str(tvb, curr_offset, user_id_len, NULL, TRUE);
+ proto_tree_add_string(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_msisdn, tvb, curr_offset, user_id_len, msisdn_str);
+ curr_offset += user_id_len;
+ }
+ break;
+ case 4:
+ {
+ const gchar *imei_str = tvb_bcd_dig_to_wmem_packet_str(tvb, curr_offset, user_id_len, NULL, TRUE);
+ proto_tree_add_string(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_imei, tvb, curr_offset, user_id_len, imei_str);
+ curr_offset += user_id_len;
+ }
+ break;
+ case 5:
+ {
+ const gchar *imeisv_str = tvb_bcd_dig_to_wmem_packet_str(tvb, curr_offset, user_id_len, NULL, TRUE);
+ proto_tree_add_string(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_imeisv, tvb, curr_offset, user_id_len, imeisv_str);
+ curr_offset += user_id_len;
+ }
+ break;
+ default:
+ curr_offset += user_id_len;
+ break;
+ }
}
- proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, curr_offset<<3, 5, ENC_BIG_ENDIAN);
- proto_tree_add_item_ret_uint(tree, hf_nas_esm_remote_ue_context_list_address_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &remote_address_type);
+ proto_tree_add_bits_item(subtree, hf_nas_eps_spare_bits, tvb, curr_offset<<3, 5, ENC_BIG_ENDIAN);
+ proto_tree_add_item_ret_uint(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_address_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &remote_address_type);
curr_offset++;
switch (remote_address_type & 0x07) {
case 1:
- proto_tree_add_item(tree, hf_nas_esm_remote_ue_context_list_ipv4, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_ipv4, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
curr_offset += 4;
- proto_tree_add_item(tree, hf_nas_esm_remote_ue_context_list_port_number, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_port_number, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
curr_offset += 2;
break;
case 2:
- proto_tree_add_item(tree, hf_nas_esm_remote_ue_context_list_ipv6_prefix, tvb, curr_offset, 8, ENC_NA);
+ proto_tree_add_item(subtree, hf_nas_eps_esm_remote_ue_context_list_ue_context_ipv6_prefix, tvb, curr_offset, 8, ENC_NA);
curr_offset += 8;
break;
case 0:
@@ -2987,7 +3018,6 @@ static const value_string nas_eps_esm_pkmf_address_type_values[] = {
{ 0x2, "IPv6" },
{ 0, NULL }
};
-
static guint16
de_esm_pkmf_address(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -2996,14 +3026,14 @@ de_esm_pkmf_address(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
guint32 pkmf_address_type;
proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, curr_offset<<3, 5, ENC_BIG_ENDIAN);
- proto_tree_add_item_ret_uint(tree, hf_nas_esm_pkmf_address_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &pkmf_address_type);
+ proto_tree_add_item_ret_uint(tree, hf_nas_eps_esm_pkmf_address_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &pkmf_address_type);
curr_offset++;
switch (pkmf_address_type & 0x07) {
case 1:
- proto_tree_add_item(tree, hf_nas_esm_pkmf_ipv4, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_eps_esm_pkmf_ipv4, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
break;
case 2:
- proto_tree_add_item(tree, hf_nas_esm_pkmf_ipv6, tvb, curr_offset, 16, ENC_NA);
+ proto_tree_add_item(tree, hf_nas_eps_esm_pkmf_ipv6, tvb, curr_offset, 16, ENC_NA);
break;
default:
break;
@@ -3016,10 +3046,131 @@ de_esm_pkmf_address(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* 9.9.4.22 Header compression configuration
*/
static guint16
-de_esm_header_compr_config(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
+de_esm_hdr_compr_config(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 = offset;
+
+ static const int * flags[] = {
+ &hf_nas_eps_esm_spare_bit0x80,
+ &hf_nas_eps_esm_hdr_comp_config_prof_0104,
+ &hf_nas_eps_esm_hdr_comp_config_prof_0103,
+ &hf_nas_eps_esm_hdr_comp_config_prof_0102,
+ &hf_nas_eps_esm_hdr_comp_config_prof_0006,
+ &hf_nas_eps_esm_hdr_comp_config_prof_0004,
+ &hf_nas_eps_esm_hdr_comp_config_prof_0003,
+ &hf_nas_eps_esm_hdr_comp_config_prof_0002,
+ NULL
+ };
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags, ENC_NA);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_nas_eps_esm_hdr_compr_config_max_cid, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+
+ return len;
+}
+
+/*
+ * 9.9.4.23 Control plane only indication
+ */
+static true_false_string nas_eps_ctrl_plane_only_ind_cpoi_value = {
+ "PDN connection can be used for control plane CIoT EPS optimization only",
+ "PDN connection can be used with user plane radio bearer(s)"
+};
+static guint16
+de_esm_ctrl_plane_only_ind(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_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_esm_ctrl_plane_only_ind_cpoi, tvb, (offset<<3)+7, 1, ENC_BIG_ENDIAN);
+
+ return 1;
+}
+
+/*
+ * 9.9.4.24 User data container
+ */
+static guint16
+de_esm_user_data_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
+ guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ proto_tree_add_item(tree, hf_nas_eps_esm_user_data_cont, tvb, offset, len, ENC_NA);
+
+ return len;
+}
+
+/*
+ * 9.9.4.25 Release assistance indication
+ */
+static const value_string nas_eps_esm_rel_assist_ind_ddx_vals[] = {
+ { 0x00, "No information available" },
+ { 0x01, "Downlink data transmission subsequent to the uplink data transmission is not expected" },
+ { 0x02, "Downlink data transmission subsequent to the uplink data transmission is expected" },
+ { 0x03, "Reserved" },
+ { 0, NULL}
+};
+static guint16
+de_esm_rel_assist_ind(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, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_esm_rel_assist_ind_ddx, tvb, (offset<<3)+6, 2, ENC_BIG_ENDIAN);
+
+ return 1;
+}
+
+/*
+ * 9.9.4.26 Extended protocol configuration options
+ */
+static guint16
+de_esm_ext_pco(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
+ guint32 offset, guint len, gchar *add_string, int string_len)
+{
+ return de_sm_pco(tvb, tree, pinfo, offset, len, add_string, string_len);
+}
+
+/*
+ * 9.9.4.27 Header compression configuration status
+ */
+static true_false_string nas_eps_esm_hdr_compr_config_status_ebi_value = {
+ "Header compression configuration is not used",
+ "Header compression configuration is used"
+};
+static guint16
+de_esm_hdr_compr_config_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
+ guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ static const int * flags[] = {
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi7,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi6,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi5,
+ &hf_nas_eps_esm_spare_bits0x1f00,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi15,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi14,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi13,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi12,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi11,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi10,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi9,
+ &hf_nas_eps_esm_hdr_compr_config_status_ebi8,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list(tree, tvb, offset, 2, flags, ENC_BIG_ENDIAN);
+
+ return len;
+}
+
+/*
+ * 9.9.4.28 Serving PLMN rate control
+ */
+static guint16
+de_esm_serv_plmn_rate_ctrl(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- proto_tree_add_item(tree, hf_nas_eps_esm_rohc_config_params, tvb, offset, len, ENC_NA);
+ proto_item *pi;
+
+ pi = proto_tree_add_item(tree, hf_nas_eps_esm_serv_plmn_rate_ctrl_val, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_item_append_text(pi, " message(s)");
return len;
}
@@ -3080,6 +3231,7 @@ guint16 (*emm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
NULL, /* 9.9.3.44 Voice domain preference and UE's usage setting */
de_emm_guti_type, /* 9.9.3.45 GUTI type */
NULL, /* 9.9.3.46 Extended DRX parameters */
+ NULL, /* 9.9.3.47 Data service type */
NULL, /* NONE */
};
@@ -3110,39 +3262,49 @@ typedef enum
DE_ESM_NBIFOM_CONT, /* 9.9.4.19 NBIFOM container */
DE_ESM_REMOTE_UE_CONTEXT_LIST, /* 9.9.4.20 Remote UE context list */
DE_ESM_PKMF_ADDRESS, /* 9.9.4.21 PKMF address */
- DE_ESM_HEADER_COMPR_CONFIG, /* 9.9.4.22 Header compression configuration */
+ DE_ESM_HDR_COMPR_CONFIG, /* 9.9.4.22 Header compression configuration */
DE_ESM_CTRL_PLANE_ONLY_IND, /* 9.9.4.23 Control plane only indication */
+ DE_ESM_USER_DATA_CONT, /* 9.9.4.24 User data container */
+ DE_ESM_REL_ASSIST_IND, /* 9.9.4.25 Release assistance indication */
+ 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_NONE /* NONE */
}
nas_esm_elem_idx_t;
static const value_string nas_esm_elem_strings[] = {
- { DE_ESM_APN, "Access point name" }, /* 9.9.4.1 Access point name */
- { DE_ESM_APN_AGR_MAX_BR, "APN aggregate maximum bit rate" }, /* 9.9.4.2 APN aggregate maximum bit rate */
- { DE_ESM_CONNECTIVITY_TYPE, "Connectivity type" }, /* 9.9.4.2A Connectivity type */
- { DE_ESM_EPS_QOS, "EPS quality of service" }, /* 9.9.4.3 EPS quality of service */
- { DE_ESM_CAUSE, "ESM cause" }, /* 9.9.4.4 ESM cause */
- { DE_ESM_INF_TRF_FLG, "ESM information transfer flag" }, /* 9.9.4.5 ESM information transfer flag */
- { DE_ESM_LNKED_EPS_B_ID, "Linked EPS bearer identity" }, /* 9.9.4.6 Linked EPS bearer identity */
- { DE_ESM_LLC_SAPI, "LLC service access point identifier" }, /* 9.9.4.7 LLC service access point identifier */
- { DE_ESM_NOTIF_IND, "Notification indicator" }, /* 9.9.4.7a Notification indicator */
- { DE_ESM_P_FLW_ID, "Packet flow identifier" }, /* 9.9.4.8 Packet flow identifier */
- { DE_ESM_PDN_ADDR, "PDN address" }, /* 9.9.4.9 PDN address */
- { DE_ESM_PDN_TYPE, "PDN type" }, /* 9.9.4.10 PDN type */
- { DE_ESM_PROT_CONF_OPT, "Protocol configuration options" }, /* 9.9.4.11 Protocol configuration options */
- { DE_ESM_QOS, "Quality of service" }, /* 9.9.4.12 Quality of service */
- { DE_ESM_RA_PRI, "Radio priority" }, /* 9.9.4.13 Radio priority */
- { DE_ESM_RE_ATTEMPT_IND, "Re-attempt indicator" }, /* 9.9.4.13a Re-attempt indicator */
- { DE_ESM_REQ_TYPE, "Request type" }, /* 9.9.4.14 Request type */
- { DE_ESM_TRAF_FLOW_AGR_DESC, "Traffic flow aggregate description" },/* 9.9.4.15 Traffic flow aggregate description */
- { DE_ESM_TRAF_FLOW_TEMPL, "Traffic flow template" }, /* 9.9.4.16 Traffic flow template */
- { DE_ESM_TID, "Transaction identifier" }, /* 9.9.4.17 Transaction identifier */
- { DE_ESM_WLAN_OFFLOAD_ACCEPT, "WLAN offload acceptability" }, /* 9.9.4.18 WLAN offload acceptability */
- { DE_ESM_NBIFOM_CONT, "NBIFOM container" }, /* 9.9.4.19 NBIFOM container */
- { DE_ESM_REMOTE_UE_CONTEXT_LIST, "Remote UE context list" }, /* 9.9.4.20 Remote UE context list */
- { DE_ESM_PKMF_ADDRESS, "PKMF address" }, /* 9.9.4.21 PKMF address */
- { DE_ESM_HEADER_COMPR_CONFIG, "Header compression configuration" }, /* 9.9.4.22 Header compression configuration */
- { DE_ESM_CTRL_PLANE_ONLY_IND, "Control plane only indication" }, /* 9.9.4.23 Control plane only indication */
+ { DE_ESM_APN, "Access point name" }, /* 9.9.4.1 Access point name */
+ { DE_ESM_APN_AGR_MAX_BR, "APN aggregate maximum bit rate" }, /* 9.9.4.2 APN aggregate maximum bit rate */
+ { DE_ESM_CONNECTIVITY_TYPE, "Connectivity type" }, /* 9.9.4.2A Connectivity type */
+ { DE_ESM_EPS_QOS, "EPS quality of service" }, /* 9.9.4.3 EPS quality of service */
+ { DE_ESM_CAUSE, "ESM cause" }, /* 9.9.4.4 ESM cause */
+ { DE_ESM_INF_TRF_FLG, "ESM information transfer flag" }, /* 9.9.4.5 ESM information transfer flag */
+ { DE_ESM_LNKED_EPS_B_ID, "Linked EPS bearer identity" }, /* 9.9.4.6 Linked EPS bearer identity */
+ { DE_ESM_LLC_SAPI, "LLC service access point identifier" }, /* 9.9.4.7 LLC service access point identifier */
+ { DE_ESM_NOTIF_IND, "Notification indicator" }, /* 9.9.4.7a Notification indicator */
+ { DE_ESM_P_FLW_ID, "Packet flow identifier" }, /* 9.9.4.8 Packet flow identifier */
+ { DE_ESM_PDN_ADDR, "PDN address" }, /* 9.9.4.9 PDN address */
+ { DE_ESM_PDN_TYPE, "PDN type" }, /* 9.9.4.10 PDN type */
+ { DE_ESM_PROT_CONF_OPT, "Protocol configuration options" }, /* 9.9.4.11 Protocol configuration options */
+ { DE_ESM_QOS, "Quality of service" }, /* 9.9.4.12 Quality of service */
+ { DE_ESM_RA_PRI, "Radio priority" }, /* 9.9.4.13 Radio priority */
+ { DE_ESM_RE_ATTEMPT_IND, "Re-attempt indicator" }, /* 9.9.4.13a Re-attempt indicator */
+ { DE_ESM_REQ_TYPE, "Request type" }, /* 9.9.4.14 Request type */
+ { DE_ESM_TRAF_FLOW_AGR_DESC, "Traffic flow aggregate description" }, /* 9.9.4.15 Traffic flow aggregate description */
+ { DE_ESM_TRAF_FLOW_TEMPL, "Traffic flow template" }, /* 9.9.4.16 Traffic flow template */
+ { DE_ESM_TID, "Transaction identifier" }, /* 9.9.4.17 Transaction identifier */
+ { DE_ESM_WLAN_OFFLOAD_ACCEPT, "WLAN offload acceptability" }, /* 9.9.4.18 WLAN offload acceptability */
+ { DE_ESM_NBIFOM_CONT, "NBIFOM container" }, /* 9.9.4.19 NBIFOM container */
+ { DE_ESM_REMOTE_UE_CONTEXT_LIST, "Remote UE context list" }, /* 9.9.4.20 Remote UE context list */
+ { DE_ESM_PKMF_ADDRESS, "PKMF address" }, /* 9.9.4.21 PKMF address */
+ { DE_ESM_HDR_COMPR_CONFIG, "Header compression configuration" }, /* 9.9.4.22 Header compression configuration */
+ { DE_ESM_CTRL_PLANE_ONLY_IND, "Control plane only indication" }, /* 9.9.4.23 Control plane only indication */
+ { DE_ESM_USER_DATA_CONT, "User data container" }, /* 9.9.4.24 User data container */
+ { DE_ESM_REL_ASSIST_IND, "Release assistance indication" }, /* 9.9.4.25 Release assistance indication */
+ { 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 */
{ 0, NULL }
};
value_string_ext nas_esm_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_esm_elem_strings);
@@ -3175,8 +3337,13 @@ guint16 (*esm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
NULL, /* 9.9.4.19 NBIFOM container */
de_esm_remote_ue_context_list, /* 9.9.4.20 Remote UE context list */
de_esm_pkmf_address, /* 9.9.4.21 PKMF address */
- de_esm_header_compr_config, /* 9.9.4.22 Header compression configuration */
- NULL, /* 9.9.4.23 Control plane only indication */
+ de_esm_hdr_compr_config, /* 9.9.4.22 Header compression configuration */
+ de_esm_ctrl_plane_only_ind, /* 9.9.4.23 Control plane only indication */
+ de_esm_user_data_cont, /* 9.9.4.24 User data container */
+ de_esm_rel_assist_ind, /* 9.9.4.25 Release assistance indication */
+ 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 */
NULL, /* NONE */
};
@@ -3196,6 +3363,8 @@ nas_emm_attach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* Spare half octet Spare half octet 9.9.2.7 M V 1/2 */
bit_offset = curr_offset<<3;
proto_tree_add_bits_item(tree, hf_nas_eps_emm_spare_half_octet, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
@@ -3256,6 +3425,8 @@ nas_emm_attach_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_UL;
+
/* ESM message container ESM message container 9.9.3.15 M LV-E 2-n */
ELEM_MAND_LV_E(NAS_PDU_TYPE_EMM, DE_EMM_ESM_MSG_CONT, NULL);
@@ -3276,6 +3447,8 @@ nas_emm_attach_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* * EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
/* 78 ESM message container ESM message container 9.9.3.15 O TLV-E 4-n */
@@ -3305,6 +3478,8 @@ nas_emm_attach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
bit_offset = curr_offset<<3;
+ pinfo->link_dir = P2P_DIR_UL;
+
/* NAS key set identifier NAS key set identifier 9.9.3.21 M V 1/2 */
de_emm_nas_key_set_id_bits(tvb, tree, bit_offset, NULL);
bit_offset+=4;
@@ -3380,7 +3555,9 @@ nas_emm_auth_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
curr_offset = offset;
curr_len = len;
- /* EMM cause EMM cause 9.9.3.9 M V 1 */
+ pinfo->link_dir = P2P_DIR_UL;
+
+ /* EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
/* 30 Authentication failure parameter Authentication failure parameter 9.9.3.1 O TLV 1 */
ELEM_OPT_TLV(0x30, GSM_A_PDU_TYPE_DTAP, DE_AUTH_FAIL_PARAM, NULL);
@@ -3405,6 +3582,8 @@ nas_emm_auth_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
bit_offset = curr_offset<<3;
/* H1 */
/* Spare half octet Spare half octet 9.9.2.7 M V 1/2 */
@@ -3446,6 +3625,8 @@ nas_emm_auth_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_UL;
+
/*
* Authentication response parameter 9.9.3.4 M LV 5-17
*/
@@ -3468,6 +3649,8 @@ nas_emm_cs_serv_not(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* Paging identity Paging identity 9.9.3.25A M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_PAGING_ID, NULL);
/* 60 CLI CLI 9.9.3.38 O TLV 3-12 */
@@ -3620,6 +3803,8 @@ nas_emm_emm_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* 43 Full name for network Network name 9.9.3.24 O TLV 3-? */
ELEM_OPT_TLV(0x43, GSM_A_PDU_TYPE_DTAP, DE_NETWORK_NAME, " - Full name for network");
/* 45 Short name for network Network name 9.9.3.24 O TLV 3-? */
@@ -3669,6 +3854,8 @@ nas_emm_ext_serv_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
bit_offset = curr_offset<<3;
+ pinfo->link_dir = P2P_DIR_UL;
+
/* NAS key set identifier NAS key set identifier 9.9.3.21 M V 1/2 */
de_emm_nas_key_set_id_bits(tvb, tree, bit_offset, NULL);
bit_offset+=4;
@@ -3703,6 +3890,8 @@ nas_emm_guti_realloc_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* GUTI EPS mobile identity 9.9.3.12 M LV 12 */
ELEM_MAND_LV(NAS_PDU_TYPE_EMM, DE_EMM_EPS_MID, " - GUTI");
@@ -3730,6 +3919,7 @@ nas_emm_id_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
bit_offset=curr_offset<<3;
@@ -3762,6 +3952,8 @@ nas_emm_id_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_UL;
+
/* Mobile identity Mobile identity 9.9.2.3 M LV 4-10 */
ELEM_MAND_LV(NAS_PDU_TYPE_COMMON, DE_EPS_CMN_MOB_ID, NULL);
@@ -3783,6 +3975,8 @@ nas_emm_sec_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* Selected NAS security algorithms NAS security algorithms 9.9.3.23 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_NAS_SEC_ALGS, " - Selected NAS security algorithms");
@@ -3822,6 +4016,8 @@ nas_emm_sec_mode_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_UL;
+
if (curr_len == 0)
return;
@@ -3843,6 +4039,8 @@ nas_emm_sec_mode_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_UL;
+
/* EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
@@ -3861,6 +4059,8 @@ nas_emm_serv_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
/* 5B T3442 value GPRS timer 9.9.3.16 C TV 2 */
@@ -3892,6 +4092,8 @@ nas_emm_service_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_UL;
+
/* KSI and sequence number 9.9.3.19 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_KSI_AND_SEQ_NO, NULL);
@@ -3914,6 +4116,8 @@ nas_emm_trac_area_upd_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* Spare half octet Spare half octet 9.9.2.7 M V 1/2 */
bit_offset = curr_offset<<3;
proto_tree_add_bits_item(tree, hf_nas_eps_emm_spare_half_octet, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
@@ -3961,6 +4165,8 @@ nas_emm_trac_area_upd_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
ELEM_OPT_TLV(0x6A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3324");
/* 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);
+ /* 68 Header compression configuration status Header compression configuration status 9.9.4.27 O TLV 4 */
+ ELEM_OPT_TLV(0x68, NAS_PDU_TYPE_ESM, DE_ESM_HDR_COMPR_CONFIG_STATUS, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -3981,6 +4187,8 @@ nas_emm_trac_area_upd_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* EMM cause EMM cause 9.9.3.9 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_CAUSE, NULL);
/* 5F T3346 value GPRS timer 2 9.9.3.16A O TLV 3 */
@@ -4006,6 +4214,8 @@ nas_emm_trac_area_upd_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
bit_offset = curr_offset<<3;
+ pinfo->link_dir = P2P_DIR_UL;
+
/* NAS key set identifierASME NAS key set identifier 9.9.3.21 M V 1/2 */
de_emm_nas_key_set_id_bits(tvb, tree, bit_offset, " ASME");
bit_offset+=4;
@@ -4153,6 +4363,78 @@ nas_emm_ul_gen_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
}
/*
+ * 8.2.33 Control plane service request
+ */
+static const value_string nas_eps_emm_data_serv_type_vals[] = {
+ { 0x0, "Mobile originating request" },
+ { 0x1, "Mobile terminating request" },
+ { 0, NULL }
+};
+
+static void
+nas_emm_ctrl_plane_serv_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
+{
+ guint32 curr_offset, bit_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+ bit_offset = curr_offset<<3;
+
+ pinfo->link_dir = P2P_DIR_UL;
+
+ /* NAS key set identifier NAS key set identifier 9.9.3.21 M V 1/2 */
+ de_emm_nas_key_set_id_bits(tvb, tree, bit_offset, NULL);
+ bit_offset+=4;
+ /* Data service type Data service type 9.9.3.47 M V 1/2 */
+ proto_tree_add_bits_item(tree, hf_nas_eps_active_flg, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset += 1;
+ proto_tree_add_bits_item(tree, hf_nas_eps_data_serv_type, tvb, bit_offset, 3, ENC_BIG_ENDIAN);
+
+ /* Fix the lengths */
+ curr_len--;
+ curr_offset++;
+ if (curr_len == 0)
+ return;
+
+ /* 78 ESM message container ESM message container 9.9.3.15 O TLV-E 3-n */
+ ELEM_OPT_TLV_E(0x78, NAS_PDU_TYPE_EMM, DE_EMM_ESM_MSG_CONT, NULL);
+ /* 67 NAS message container NAS message container 9.9.3.22 O TLV 4-253 */
+ ELEM_OPT_TLV(0x67, NAS_PDU_TYPE_EMM, DE_EMM_NAS_MSG_CONT, NULL);
+ /* 57 EPS bearer context status EPS bearer context status 9.9.2.1 O TLV 4 */
+ ELEM_OPT_TLV(0x57, NAS_PDU_TYPE_COMMON, DE_EPS_CMN_EPS_BE_CTX_STATUS, NULL);
+ /* D- Device properties Device properties 9.9.2.0A O TV 1 */
+ ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
+}
+
+/*
+ * 8.2.34 Service accept
+ */
+static void
+nas_emm_serv_accept(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ pinfo->link_dir = P2P_DIR_DL;
+
+ if (curr_len == 0)
+ return;
+
+ /* 57 EPS bearer context status EPS bearer context status 9.9.2.1 O TLV 4 */
+ ELEM_OPT_TLV(0x57, NAS_PDU_TYPE_COMMON, DE_EPS_CMN_EPS_BE_CTX_STATUS, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
+}
+
+/*
* 8.3 EPS session management messages
*/
@@ -4179,6 +4461,8 @@ nas_esm_act_ded_eps_bearer_ctx_acc(tvbuff_t *tvb, proto_tree *tree, packet_info
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4205,6 +4489,8 @@ nas_esm_act_ded_eps_bearer_ctx_rej(tvbuff_t *tvb, proto_tree *tree, packet_info
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4256,6 +4542,8 @@ nas_esm_act_ded_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info
ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_SM_WLAN_OFFLOAD_ACCEPT, " - WLAN offload indication");
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4281,6 +4569,8 @@ nas_esm_act_def_eps_bearer_ctx_acc(tvbuff_t *tvb, proto_tree *tree, packet_info
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , 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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4305,6 +4595,8 @@ nas_esm_act_def_eps_bearer_ctx_rej(tvbuff_t *tvb, proto_tree *tree, packet_info
ELEM_MAND_V(NAS_PDU_TYPE_ESM, DE_ESM_CAUSE, NULL);
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , 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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4353,10 +4645,14 @@ nas_esm_act_def_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info
ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_SM_WLAN_OFFLOAD_ACCEPT, " - WLAN offload indication");
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_NBIFOM_CONT, NULL);
- /* 90 Header compression configuration Header compression configuration 9.9.4.22 O TLV 3-TBD */
- ELEM_OPT_TLV(0x90, NAS_PDU_TYPE_ESM, DE_ESM_HEADER_COMPR_CONFIG, NULL);
- /* 91 Control plane only indication Control plane only indication 9.9.4.23 O T 1 */
- ELEM_OPT_T(0x91, NAS_PDU_TYPE_ESM, DE_ESM_CTRL_PLANE_ONLY_IND, NULL);
+ /* 66 Header compression configuration Header compression configuration 9.9.4.22 O TLV 3-TBD */
+ ELEM_OPT_TLV(0x66, NAS_PDU_TYPE_ESM, DE_ESM_HDR_COMPR_CONFIG, NULL);
+ /* 9- Control plane only indication Control plane only indication 9.9.4.23 O TV 1 */
+ ELEM_OPT_TV_SHORT(0x90, NAS_PDU_TYPE_ESM, DE_ESM_CTRL_PLANE_ONLY_IND, 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);
+ /* 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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4387,6 +4683,8 @@ nas_esm_bearer_res_all_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TLV(0x6B, NAS_PDU_TYPE_ESM, DE_ESM_RE_ATTEMPT_IND, NULL);
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4428,6 +4726,8 @@ nas_esm_bearer_res_all_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4457,6 +4757,8 @@ nas_esm_bearer_res_mod_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TLV(0x6B, NAS_PDU_TYPE_ESM, DE_ESM_RE_ATTEMPT_IND, NULL);
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4498,6 +4800,10 @@ nas_esm_bearer_res_mod_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_NBIFOM_CONT, NULL);
+ /* 66 Header compression configuration Header compression configuration 9.9.4.22 O TLV 3-TBD */
+ 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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4522,8 +4828,8 @@ nas_esm_deact_eps_bearer_ctx_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *p
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
- /* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
- ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4553,11 +4859,29 @@ nas_esm_deact_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info *p
ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_SM_WLAN_OFFLOAD_ACCEPT, " - WLAN offload indication");
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
/*
+ * 8.3.12A ESM dummy message
+ * No IE:s
+ */
+static void
+nas_esm_dummy_msg(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
+}
+
+ /*
* 8.3.13 ESM information request
* No IE:s
*/
@@ -4595,6 +4919,8 @@ nas_esm_inf_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
ELEM_OPT_TLV( 0x28 , GSM_A_PDU_TYPE_GM, DE_ACC_POINT_NAME , NULL );
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , 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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4639,6 +4965,8 @@ nas_esm_mod_eps_bearer_ctx_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4664,6 +4992,8 @@ nas_esm_mod_eps_bearer_ctx_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL );
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4706,6 +5036,10 @@ nas_esm_mod_eps_bearer_ctx_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_SM_WLAN_OFFLOAD_ACCEPT, " - WLAN offload indication");
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_NBIFOM_CONT, NULL);
+ /* 66 Header compression configuration Header compression configuration 9.9.4.22 O TLV 3-TBD */
+ 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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4722,6 +5056,8 @@ nas_esm_notification(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
curr_offset = offset;
curr_len = len;
+ pinfo->link_dir = P2P_DIR_DL;
+
/* Notification indicator Notification indicator 9.9.4.7A M LV 2 */
ELEM_MAND_LV(NAS_PDU_TYPE_ESM, DE_ESM_NOTIF_IND, NULL);
@@ -4752,6 +5088,10 @@ nas_esm_pdn_con_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - Back-off timer value");
/* 6B Re-attempt indicator Re-attempt indicator 9.9.4.13A O TLV 3 */
ELEM_OPT_TLV(0x6B, NAS_PDU_TYPE_ESM, DE_ESM_RE_ATTEMPT_IND, NULL);
+ /* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
+ ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4797,6 +5137,10 @@ nas_esm_pdn_con_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TV_SHORT(0xC0 , GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
/* 33 NBIFOM container NBIFOM container 9.9.4.19 O TLV 3-257 */
ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_GM, DE_NBIFOM_CONT, NULL);
+ /* 66 Header compression configuration Header compression configuration 9.9.4.22 O TLV 3-TBD */
+ 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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4813,13 +5157,15 @@ nas_esm_pdn_disc_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
curr_offset = offset;
curr_len = len;
- /*This message is sent by the UE to the network to initiate establishment of a PDN connection. */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This message is sent by the network to the UE to reject release of a PDN connection. */
+ pinfo->link_dir = P2P_DIR_DL;
/* ESM cause ESM cause 9.9.4.4 M V 1 */
ELEM_MAND_V(NAS_PDU_TYPE_ESM, DE_ESM_CAUSE, NULL);
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , 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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4836,8 +5182,8 @@ nas_esm_pdn_disc_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
curr_offset = offset;
curr_len = len;
- /* This message is sent by the network to the UE to reject release of a PDN connection. */
- pinfo->link_dir = P2P_DIR_DL;
+ /*This message is sent by the UE to the network to initiate release of a PDN connection. */
+ pinfo->link_dir = P2P_DIR_UL;
/* Spare half octet Spare half octet 9.9.2.9 M V 1/2 */
bit_offset = curr_offset<<3;
@@ -4853,6 +5199,8 @@ nas_esm_pdn_disc_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
return;
/* 27 Protocol configuration options Protocol configuration options 9.9.4.11 O TLV 3-253 */
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , 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);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
@@ -4874,10 +5222,10 @@ nas_esm_remote_ue_report(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
pinfo->link_dir = P2P_DIR_UL;
- /* 6C Remote UE Context Connected Remote UE context list 9.9.4.20 O TLV 3-257 */
- ELEM_OPT_TLV(0x6C, NAS_PDU_TYPE_ESM, DE_ESM_REMOTE_UE_CONTEXT_LIST, " - Remote UE Context Connected");
- /* 6D Remote UE Context Disconnected Remote UE context list 9.9.4.20 O TLV 3-257 */
- ELEM_OPT_TLV(0x6D, NAS_PDU_TYPE_ESM, DE_ESM_REMOTE_UE_CONTEXT_LIST, " - Remote UE Context Disconnected");
+ /* 79 Remote UE Context Connected Remote UE context list 9.9.4.20 O TLV-E 3-65538 */
+ ELEM_OPT_TLV_E(0x79, NAS_PDU_TYPE_ESM, DE_ESM_REMOTE_UE_CONTEXT_LIST, " - Remote UE Context Connected");
+ /* 7A Remote UE Context Disconnected Remote UE context list 9.9.4.20 O TLV-E 3-65538 */
+ ELEM_OPT_TLV_E(0x7A, NAS_PDU_TYPE_ESM, DE_ESM_REMOTE_UE_CONTEXT_LIST, " - Remote UE Context Disconnected");
/* 6F ProSe Key Management Function address PKMF address 9.9.4.21 O TLV 3-19 */
ELEM_OPT_TLV(0x6F, NAS_PDU_TYPE_ESM, DE_ESM_PKMF_ADDRESS, " - ProSe Key Management Function address");
@@ -4896,14 +5244,30 @@ nas_esm_remote_ue_report_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
curr_offset = offset;
curr_len = len;
- if (len == 0)
- return;
-
pinfo->link_dir = P2P_DIR_DL;
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
}
+/*
+ * 8.3.25 ESM data transport
+ */
+static void
+nas_esm_data_transport(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+ curr_offset = offset;
+ curr_len = len;
+
+ /* User data container User data container 9.9.4.24 M LV-E 2-n */
+ ELEM_MAND_LV_E(NAS_PDU_TYPE_ESM, DE_ESM_USER_DATA_CONT, NULL);
+ /* F- Release assistance indication Release assistance indication 9.9.4.25 O TV 1 */
+ ELEM_OPT_TV_SHORT(0xF0, NAS_PDU_TYPE_ESM, DE_ESM_REL_ASSIST_IND, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_eps_extraneous_data);
+}
#define NUM_NAS_MSG_ESM (sizeof(nas_msg_esm_strings)/sizeof(value_string))
static gint ett_nas_msg_esm[NUM_NAS_MSG_ESM];
@@ -4930,9 +5294,11 @@ static void (*nas_msg_esm_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *p
nas_esm_inf_req, /* ESM information request, No IE:s*/
nas_esm_inf_resp, /* ESM information response*/
nas_esm_notification, /* Notification */
+ nas_esm_dummy_msg, /* ESM dummy message */
nas_esm_status, /* ESM status */
nas_esm_remote_ue_report, /* Remote UE report */
nas_esm_remote_ue_report_resp, /* Remote UE report response */
+ nas_esm_data_transport, /* ESM data transport */
NULL, /* NONE */
};
@@ -4970,7 +5336,9 @@ static void (*nas_msg_emm_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *p
nas_emm_trac_area_upd_rej, /* Tracking area update reject */
nas_emm_ext_serv_req, /* Extended service request */
+ nas_emm_ctrl_plane_serv_req,/* Control plane servire request */
nas_emm_serv_rej, /* Service reject */
+ nas_emm_serv_accept, /* Service accept */
nas_emm_guti_realloc_cmd, /* GUTI reallocation command */
NULL, /* GUTI reallocation complete (No IE's) */
@@ -5553,15 +5921,20 @@ proto_register_nas_eps(void)
FT_UINT8,BASE_DEC, VALS(nas_eps_emm_eps_att_type_vals), 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_ea_wo_pdn,
- { "EAw/oPDN","nas_eps.emm.ea_wo_pdn",
- FT_BOOLEAN ,BASE_NONE, TFS(&nas_eps_emm_ea_wo_pdn_value), 0x0,
- "EPS attached w/o PDN connectivity", HFILL }
+ { &hf_nas_eps_emm_cp_ciot,
+ { "Control plane CIoT EPS optimization","nas_eps.emm.cp_ciot",
+ FT_BOOLEAN ,BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_er_wo_pdn,
+ { "EMM-REGISTERED w/o PDN connectivity","nas_eps.emm.er_wo_pdn",
+ FT_BOOLEAN ,BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_esr_ps,
- { "ESRPS","nas_eps.emm.esr_ps",
- FT_BOOLEAN ,BASE_NONE, TFS(&nas_eps_emm_esr_ps_value), 0x0,
- "Support of EXTENDED SERVICE REQUEST for packet services", HFILL }
+ { "Support of EXTENDED SERVICE REQUEST for packet services","nas_eps.emm.esr_ps",
+ FT_BOOLEAN ,BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_cs_lcs,
{ "CS-LCS","nas_eps.emm.cs_lcs",
@@ -5569,19 +5942,39 @@ proto_register_nas_eps(void)
"Location services indicator in CS", HFILL }
},
{ &hf_nas_eps_emm_epc_lcs,
- { "EPC-LCS","nas_eps.emm.epc_lcs",
- FT_BOOLEAN ,BASE_NONE, TFS(&nas_eps_emm_epc_lcs_value), 0x0,
- "Location services indicator in EPC", HFILL }
+ { "Location services via EPC","nas_eps.emm.epc_lcs",
+ FT_BOOLEAN ,BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_emc_bs,
- { "EMC BS","nas_eps.emm.emc_bs",
- FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_emc_bs_value), 0x0,
- "Emergency bearer services indicator", HFILL }
+ { "Emergency bearer services in S1 mode","nas_eps.emm.emc_bs",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_ims_vops,
- { "IMS VoPS","nas_eps.emm.ims_vops",
- FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_ims_vops_value), 0x0,
- "IMS voice over PS session indicator", HFILL }
+ { "IMS voice over PS session in S1 mode","nas_eps.emm.ims_vops",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_epco,
+ { "Extended protocol configuration options IE","nas_eps.emm.epco",
+ FT_BOOLEAN ,BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_hc_cp_ciot,
+ { "Header compression for control plane CIoT EPS optimization","nas_eps.emm.hc_cp_ciot",
+ FT_BOOLEAN ,BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_s1_u_data,
+ { "S1-u data transfer","nas_eps.emm.s1_u_data",
+ FT_BOOLEAN ,BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_up_ciot,
+ { "User plane CIoT EPS optimization","nas_eps.emm.up_ciot",
+ FT_BOOLEAN ,BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
+ NULL, HFILL }
},
{ &hf_nas_eps_tsc,
{ "Type of security context flag (TSC)","nas_eps.emm.tsc",
@@ -5653,9 +6046,14 @@ proto_register_nas_eps(void)
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_emm_nnb_ciot,
- { "Negotiated CIoT network behaviour","nas_eps.emm.nnb_ciot",
- FT_UINT8, BASE_DEC, VALS(nas_eps_emm_nb_ciot_vals), 0x0,
+ { &hf_nas_eps_emm_anb_up_ciot,
+ { "Accepted Network Behavior UP CIoT","nas_eps.emm.anb_up_ciot",
+ FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_anb_up_ciot_value), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_anb_cp_ciot,
+ { "Accepted Network Behavior CP CIoT","nas_eps.emm.anb_cp_ciot",
+ FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_anb_cp_ciot_value), 0x0,
NULL, HFILL }
},
{ &hf_nas_eps_emm_add_upd_res,
@@ -5665,12 +6063,17 @@ proto_register_nas_eps(void)
},
{ &hf_nas_eps_emm_pnb_ciot,
{ "Preferred CIoT network behaviour","nas_eps.emm.pnb_ciot",
- FT_UINT8, BASE_DEC, VALS(nas_eps_emm_nb_ciot_vals), 0x0,
+ FT_UINT8, BASE_DEC, VALS(nas_eps_emm_pnb_ciot_vals), 0x0,
NULL, HFILL }
},
+ { &hf_nas_eps_emm_saf,
+ { "SAF","nas_eps.emm.saf",
+ FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_saf_value), 0x0,
+ "Signalling active flag", HFILL }
+ },
{ &hf_nas_eps_emm_add_upd_type,
{ "AUTV","nas_eps.emm.add_upd_type",
- FT_UINT8, BASE_DEC, VALS(nas_eps_emm_add_upd_type_vals), 0x0,
+ FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_emm_add_upd_type_value), 0x0,
"Additional update type value", HFILL }
},
{ &hf_nas_eps_emm_res,
@@ -5715,124 +6118,124 @@ proto_register_nas_eps(void)
},
{ &hf_nas_eps_emm_eea0,
{ "EEA0","nas_eps.emm.eea0",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x80,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
NULL, HFILL }
},
{ &hf_nas_eps_emm_128eea1,
{ "128-EEA1","nas_eps.emm.128eea1",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x40,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
NULL, HFILL }
},
{ &hf_nas_eps_emm_128eea2,
{ "128-EEA2","nas_eps.emm.128eea2",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x20,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eea3,
{ "128-EEA3","nas_eps.emm.eea3",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x10,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eea4,
{ "EEA4","nas_eps.emm.eea4",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x08,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eea5,
{ "EEA5","nas_eps.emm.eea5",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x04,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eea6,
{ "EEA6","nas_eps.emm.eea6",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x02,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eea7,
{ "EEA7","nas_eps.emm.eea7",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x01,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eia0,
{ "EIA0","nas_eps.emm.eia0",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x80,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
NULL, HFILL }
},
{ &hf_nas_eps_emm_128eia1,
{ "128-EIA1","nas_eps.emm.128eia1",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x40,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
NULL, HFILL }
},
{ &hf_nas_eps_emm_128eia2,
{ "128-EIA2","nas_eps.emm.128eia2",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x20,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eia3,
{ "128-EIA3","nas_eps.emm.eia3",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x10,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eia4,
{ "EIA4","nas_eps.emm.eia4",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x08,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eia5,
{ "EIA5","nas_eps.emm.eia5",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x04,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eia6,
{ "EIA6","nas_eps.emm.eia6",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x02,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
NULL, HFILL }
},
{ &hf_nas_eps_emm_eia7,
{ "EIA7","nas_eps.emm.eia7",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x01,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uea0,
{ "UEA0","nas_eps.emm.uea0",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x80,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uea1,
{ "UEA1","nas_eps.emm.uea1",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x40,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uea2,
{ "UEA2","nas_eps.emm.uea2",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x20,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uea3,
{ "UEA3","nas_eps.emm.uea3",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x10,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uea4,
{ "UEA4","nas_eps.emm.uea4",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x08,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uea5,
{ "UEA5","nas_eps.emm.uea5",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x04,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uea6,
{ "UEA6","nas_eps.emm.uea6",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x02,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uea7,
{ "UEA7","nas_eps.emm.uea7",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x01,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
NULL, HFILL }
},
{ &hf_nas_eps_emm_ucs2_supp,
@@ -5842,143 +6245,153 @@ proto_register_nas_eps(void)
},
{ &hf_nas_eps_emm_uia1,
{ "UMTS integrity algorithm UIA1","nas_eps.emm.uia1",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x40,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uia2,
{ "UMTS integrity algorithm UIA2","nas_eps.emm.uia2",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x20,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uia3,
{ "UMTS integrity algorithm UIA3","nas_eps.emm.uia3",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x10,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uia4,
{ "UMTS integrity algorithm UIA4","nas_eps.emm.uia4",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x08,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uia5,
{ "UMTS integrity algorithm UIA5","nas_eps.emm.uia5",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x04,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uia6,
{ "UMTS integrity algorithm UIA6","nas_eps.emm.uia6",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x02,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
NULL, HFILL }
},
{ &hf_nas_eps_emm_uia7,
{ "UMTS integrity algorithm UIA7","nas_eps.emm.uia7",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x01,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
NULL, HFILL }
},
{ &hf_nas_eps_emm_gea1,
{ "GPRS encryption algorithm GEA1","nas_eps.emm.gea1",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x40,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
NULL, HFILL }
},
{ &hf_nas_eps_emm_gea2,
{ "GPRS encryption algorithm GEA2","nas_eps.emm.gea2",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x20,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
NULL, HFILL }
},
{ &hf_nas_eps_emm_gea3,
{ "GPRS encryption algorithm GEA3","nas_eps.emm.gea3",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x10,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
NULL, HFILL }
},
{ &hf_nas_eps_emm_gea4,
{ "GPRS encryption algorithm GEA4","nas_eps.emm.gea4",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x08,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
NULL, HFILL }
},
{ &hf_nas_eps_emm_gea5,
{ "GPRS encryption algorithm GEA5","nas_eps.emm.gea5",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x04,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
NULL, HFILL }
},
{ &hf_nas_eps_emm_gea6,
{ "GPRS encryption algorithm GEA6","nas_eps.emm.gea6",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x02,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
NULL, HFILL }
},
{ &hf_nas_eps_emm_gea7,
{ "GPRS encryption algorithm GEA7","nas_eps.emm.gea7",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x01,
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
NULL, HFILL }
},
{ &hf_nas_eps_emm_prose_dd_cap,
- { "ProSe-dd capability","nas_eps.emm.prose_dd_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_prose_dd_cap_flg), 0x80,
- "ProSe direct discovery capability", HFILL }
+ { "ProSe direct discovery","nas_eps.emm.prose_dd_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_prose_cap,
- { "ProSe capability","nas_eps.emm.prose_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_prose_cap_flg), 0x40,
+ { "ProSe","nas_eps.emm.prose_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
NULL, HFILL }
},
{ &hf_nas_eps_emm_h245_ash_cap,
- { "H.245-ASH capability","nas_eps.emm.h245_ash_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_h245_ash_cap_flg), 0x20,
- "H.245 after SRVCC handover capability", HFILL }
+ { "H.245 After SRVCC Handover","nas_eps.emm.h245_ash_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_acc_csfb_cap,
- { "ACC-CSFB capability","nas_eps.emm.acc_csfb_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_acc_csfb_cap_flg), 0x10,
- "Access class control for CSFB capability", HFILL }
+ { "Access class control for CSFB","nas_eps.emm.acc_csfb_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_lpp_cap,
- { "LPP capability","nas_eps.emm.lpp_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_lpp_cap_flg), 0x08,
- "LTE Positioning Protocol capability", HFILL }
+ { "LTE Positioning Protocol","nas_eps.emm.lpp_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_lcs_cap,
- { "LCS capability","nas_eps.emm.lcs_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_lcs_cap_flg), 0x04,
- "Location services notification mechanisms capability", HFILL }
+ { "Location services (LCS) notification mechanisms","nas_eps.emm.lcs_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_1xsrvcc_cap,
- { "1xSRVCC capability","nas_eps.emm.1xsrvcc_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_1xsrvcc_cap_flg), 0x02,
+ { "SRVCC from E-UTRAN to cdma2000 1xCS","nas_eps.emm.1xsrvcc_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
NULL, HFILL }
},
{ &hf_nas_eps_emm_nf_cap,
- { "NF capability","nas_eps.emm.nf_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_nf_cap_flg), 0x01,
+ { "Notification procedure","nas_eps.emm.nf_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_epco_cap,
+ { "Extended protocol configuration options","nas_eps.emm.epco_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_hc_cp_ciot_cap,
+ { "Header compression for control plane CIoT EPS optimization","nas_eps.emm.hc_cp_ciot_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
NULL, HFILL }
},
- { &hf_nas_eps_emm_ea_wo_pdn_cap,
- { "EAw/oPDN","nas_eps.emm.ea_wo_pdn_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_ea_wo_pdn_cap_flg), 0x20,
- "EPS attached w/o PDN connectivity", HFILL }
+ { &hf_nas_eps_emm_er_wo_pdn_cap,
+ { "EMM-REGISTERED w/o PDN connectivity","nas_eps.emm.er_wo_pdn_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_s1u_data_cap,
- { "S1-U data","nas_eps.emm.s1u_data_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_s1u_data_cap_flg), 0x10,
- "S1-U data transfer capability", HFILL }
+ { "S1-U data transfer","nas_eps.emm.s1u_data_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_up_ciot_cap,
- { "UP CIoT","nas_eps.emm.up_ciot_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_up_ciot_cap_flg), 0x08,
- "User-plane CIoT EPS optimization capability", HFILL }
+ { "User plane CIoT EPS optimization","nas_eps.emm.up_ciot_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_cp_ciot_cap,
- { "CP CIoT","nas_eps.emm.cp_ciot_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_cp_ciot_cap_flg), 0x04,
- "Control-plane CIoT EPS optimization capability", HFILL }
+ { "Control plane CIoT EPS optimization","nas_eps.emm.cp_ciot_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_prose_relay_cap,
- { "ProSe-relay capability","nas_eps.emm.prose_relay_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_prose_relay_cap_flg), 0x02,
- "ProSe UE-to-network-relay capability", HFILL }
+ { "ProSe UE-to-network relay","nas_eps.emm.prose_relay_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_prose_dc_cap,
- { "ProSe-dc capability","nas_eps.emm.prose_dc_cap",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_prose_dc_cap_flg), 0x01,
- "ProSe direct communication capability", HFILL }
+ { "ProSe direct communication","nas_eps.emm.prose_dc_cap",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
},
{ &hf_nas_eps_emm_ue_ra_cap_inf_upd_need_flg,
{ "URC upd","nas_eps.emm.ue_ra_cap_inf_upd_need_flg",
@@ -6155,76 +6568,226 @@ proto_register_nas_eps(void)
FT_UINT8,BASE_DEC, VALS(nas_eps_esm_linked_bearer_id_vals), 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_esm_remote_ue_context_list_user_info_len,
- { "User info length","nas_eps.esm.remote_ue_context_list.user_info_len",
+ { &hf_nas_eps_esm_remote_ue_context_list_nb_ue_contexts,
+ { "Number of remote UE contexts","nas_eps.esm.remote_ue_context_list.nb_ue_contexts",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_len,
+ { "Length of remote UE context","nas_eps.esm.remote_ue_context_list.ue_context.len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_nb_user_id,
+ { "Number of user identities","nas_eps.esm.remote_ue_context_list.ue_context.nb_user_id",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_user_id_len,
+ { "Length of user identity","nas_eps.esm.remote_ue_context_list.ue_context.user_id_len",
FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_esm_remote_ue_context_list_odd_even_indic,
- { "Odd/even indication","nas_eps.esm.remote_ue_context_list.odd_even_indic",
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_odd_even_indic,
+ { "Odd/even indication","nas_eps.esm.remote_ue_context_list.ue_context.odd_even_indic",
FT_BOOLEAN, 8, TFS(&nas_eps_odd_even_value), 0x08,
NULL, HFILL }
},
- { &hf_nas_eps_esm_remote_ue_context_list_user_info_type,
- { "User info type","nas_eps.esm.remote_ue_context_list.user_info_type",
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_user_id_type,
+ { "Type of user identity","nas_eps.esm.remote_ue_context_list.ue_context.user_id_type",
FT_UINT8, BASE_DEC, VALS(nas_eps_esm_user_info_type_values), 0x07,
NULL, HFILL }
},
- { &hf_nas_eps_esm_remote_ue_context_list_encr_imsi,
- { "Encrypted IMSI", "nas_eps.esm.remote_ue_context_list.encr_imsi",
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_encr_imsi,
+ { "Encrypted IMSI", "nas_eps.esm.remote_ue_context_list.ue_context.encr_imsi",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_esm_remote_ue_context_list_msisdn,
- { "MSISDN", "nas_eps.esm.remote_ue_context_list.msisdn",
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_msisdn,
+ { "MSISDN", "nas_eps.esm.remote_ue_context_list.ue_context.msisdn",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_imei,
+ { "IMEI", "nas_eps.esm.remote_ue_context_list.ue_context.imei",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_imeisv,
+ { "IMEISV", "nas_eps.esm.remote_ue_context_list.ue_context.imeisv",
FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_esm_remote_ue_context_list_address_type,
- { "Address type","nas_eps.esm.remote_ue_context_list.address_type",
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_address_type,
+ { "Address type","nas_eps.esm.remote_ue_context_list.ue_context.address_type",
FT_UINT8, BASE_DEC, VALS(nas_eps_esm_address_type_values), 0x07,
NULL, HFILL }
},
- { &hf_nas_esm_remote_ue_context_list_ipv4,
- { "IPv4 address","nas_eps.esm.remote_ue_context_list.ipv4",
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_ipv4,
+ { "IPv4 address","nas_eps.esm.remote_ue_context_list.ue_context.ipv4",
FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_esm_remote_ue_context_list_port_number,
- { "Port number","nas_eps.esm.remote_ue_context_list.port_number",
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_port_number,
+ { "Port number","nas_eps.esm.remote_ue_context_list.ue_context.port_number",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_esm_remote_ue_context_list_ipv6_prefix,
- { "IPv6 prefix","nas_eps.esm.remote_ue_context_list.ipv6_prefix",
+ { &hf_nas_eps_esm_remote_ue_context_list_ue_context_ipv6_prefix,
+ { "IPv6 prefix","nas_eps.esm.remote_ue_context_list.ue_context.ipv6_prefix",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_esm_pkmf_address_type,
+ { &hf_nas_eps_esm_pkmf_address_type,
{ "Address type","nas_eps.esm.pkmf.address_type",
FT_UINT8, BASE_DEC, VALS(nas_eps_esm_pkmf_address_type_values), 0x07,
NULL, HFILL }
},
- { &hf_nas_esm_pkmf_ipv4,
+ { &hf_nas_eps_esm_pkmf_ipv4,
{ "IPv4 address","nas_eps.esm.pkmf.ipv4",
FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_esm_pkmf_ipv6,
+ { &hf_nas_eps_esm_pkmf_ipv6,
{ "IPv6 address","nas_eps.esm.pkmf.ipv6",
FT_IPv6, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
- { &hf_nas_eps_esm_rohc_config_params,
- { "RoHC configurations parameters","nas_eps.esm.rohc_config_params",
+ { &hf_nas_eps_esm_spare_bit0x80,
+ { "Spare bit(s)", "nas_eps.spare_bits",
+ FT_UINT8, BASE_HEX, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_comp_config_prof_0104,
+ { "RoHC profile 0x0104 (IP)", "nas_eps.esm.hdr_comp_config.prof_0104",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_comp_config_prof_0103,
+ { "RoHC profile 0x0103 (ESP/IP)", "nas_eps.esm.hdr_comp_config.prof_0103",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_comp_config_prof_0102,
+ { "RoHC profile 0x0102 (UDP/IP)", "nas_eps.esm.hdr_comp_config.prof_0102",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_comp_config_prof_0006,
+ { "RoHC profile 0x0006 (TCP/IP)", "nas_eps.esm.hdr_comp_config.prof_0006",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_comp_config_prof_0004,
+ { "RoHC profile 0x0004 (IP)", "nas_eps.esm.hdr_comp_config.prof_0004",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_comp_config_prof_0003,
+ { "RoHC profile 0x0003 (ESP/IP)", "nas_eps.esm.hdr_comp_config.prof_0003",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_comp_config_prof_0002,
+ { "RoHC profile 0x0002 (UDP/IP)", "nas_eps.esm.hdr_comp_config.prof_0002",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_max_cid,
+ { "MAX_CID", "nas_eps.esm.hdr_comp_config.max_cid",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_ctrl_plane_only_ind_cpoi,
+ { "CPOI", "nas_eps.esm.ctrl_plane_only_ind.cpoi",
+ FT_BOOLEAN, BASE_NONE, TFS(&nas_eps_ctrl_plane_only_ind_cpoi_value), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_user_data_cont,
+ { "User data contents", "nas_eps.esm.user_data_cont",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_nas_eps_esm_rel_assist_ind_ddx,
+ { "Downlink data expected","nas_eps.esm.rel_assist_ind.ddx",
+ FT_UINT8, BASE_DEC, VALS(nas_eps_esm_rel_assist_ind_ddx_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi7,
+ { "EBI(7)", "nas_eps.esm.hdr_compr_config_status.ebi7",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x8000,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi6,
+ { "EBI(6)", "nas_eps.esm.hdr_compr_config_status.ebi6",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x4000,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi5,
+ { "EBI(5)", "nas_eps.esm.hdr_compr_config_status.ebi5",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x2000,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_spare_bits0x1f00,
+ { "Spare bit(s)", "nas_eps.spare_bits",
+ FT_UINT16, BASE_HEX, NULL, 0x1f00,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi15,
+ { "EBI(15)", "nas_eps.esm.hdr_compr_config_status.ebi15",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x0080,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi14,
+ { "EBI(14)", "nas_eps.esm.hdr_compr_config_status.ebi14",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x0040,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi13,
+ { "EBI(13)", "nas_eps.esm.hdr_compr_config_status.ebi13",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x0020,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi12,
+ { "EBI(12)", "nas_eps.esm.hdr_compr_config_status.ebi12",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x0010,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi11,
+ { "EBI(11)", "nas_eps.esm.hdr_compr_config_status.ebi11",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x0008,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi10,
+ { "EBI(10)", "nas_eps.esm.hdr_compr_config_status.ebi10",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x0004,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi9,
+ { "EBI(9)", "nas_eps.esm.hdr_compr_config_status.ebi9",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x0002,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_hdr_compr_config_status_ebi8,
+ { "EBI(8)", "nas_eps.esm.hdr_compr_config_status.ebi8",
+ FT_BOOLEAN, 16, TFS(&nas_eps_esm_hdr_compr_config_status_ebi_value), 0x0001,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_esm_serv_plmn_rate_ctrl_val,
+ { "Serving PLMN rate control value", "nas_eps.esm.serv_plmn_rate_ctrl_val",
+ 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,
NULL, HFILL }
},
+ { &hf_nas_eps_data_serv_type,
+ { "Data service type", "nas_eps.emm.data_serv_type",
+ FT_UINT8, BASE_DEC, VALS(nas_eps_emm_data_serv_type_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_nas_eps_eps_update_result_value,
{ "EPS update result value","nas_eps.emm.eps_update_result_value",
FT_UINT8,BASE_DEC, VALS(nas_eps_emm_eps_update_result_vals), 0x0,
@@ -6296,7 +6859,7 @@ proto_register_nas_eps(void)
expert_module_t* expert_nas_eps;
/* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_ELEMS 5
+#define NUM_INDIVIDUAL_ELEMS 6
gint *ett[NUM_INDIVIDUAL_ELEMS +
NUM_NAS_EPS_COMMON_ELEM +
NUM_NAS_MSG_EMM + NUM_NAS_EMM_ELEM+
@@ -6307,6 +6870,7 @@ proto_register_nas_eps(void)
ett[2] = &ett_nas_eps_nas_msg_cont;
ett[3] = &ett_nas_eps_gen_msg_cont;
ett[4] = &ett_nas_eps_cmn_add_info;
+ ett[5] = &ett_nas_eps_remote_ue_context;
last_offset = NUM_INDIVIDUAL_ELEMS;