aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2019-01-29 16:43:34 +0100
committerAnders Broman <a.broman58@gmail.com>2019-01-30 09:13:48 +0000
commit03e1efd6fe9b720ec42a1f869370f41b76aab1d9 (patch)
treec215d5359f05ea55773880f53a9cc59eea3c207b /epan
parentfec117b99a46e29c1bf2637c678148067d06ae24 (diff)
NAS-5GS: Dissect more V15.2 IE's
Change-Id: I654b537b22776a599e4f2b2260c028d76ba5dfc2 Reviewed-on: https://code.wireshark.org/review/31805 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-gsm_a_common.h4
-rw-r--r--epan/dissectors/packet-nas_5gs.c435
-rw-r--r--epan/tfs.c2
-rw-r--r--epan/tfs.h2
4 files changed, 386 insertions, 57 deletions
diff --git a/epan/dissectors/packet-gsm_a_common.h b/epan/dissectors/packet-gsm_a_common.h
index 1b20e1efb5..a86847079f 100644
--- a/epan/dissectors/packet-gsm_a_common.h
+++ b/epan/dissectors/packet-gsm_a_common.h
@@ -1606,6 +1606,7 @@ typedef enum
{
DE_NAS_5GS_MM_5GMM_CAP, /* 9.11.3.1 5GMM capability*/
DE_NAS_5GS_MM_5GMM_CAUSE, /* 9.11.3.2 5GMM cause*/
+ DE_NAS_5GS_MM_5GS_DRX_PARAM, /* 9.11.3.2A 5GS DRX parameters*/
DE_NAS_5GS_MM_5GS_IDENTITY_TYPE, /* 9.11.3.3 5GS identity type*/
DE_NAS_5GS_MM_5GS_MOBILE_ID, /* 9.11.3.4 5GS mobile identity*/
DE_NAS_5GS_MM_5GS_NW_FEAT_SUP, /* 9.11.3.5 5GS network feature support*/
@@ -1613,6 +1614,7 @@ typedef enum
DE_NAS_5GS_MM_5GS_REG_TYPE, /* 9.11.3.7 5GS registration type*/
DE_NAS_5GS_MM_5GS_TA_ID, /* 9.11.3.8 5GS tracking area identity */
DE_NAS_5GS_MM_5GS_TA_ID_LIST, /* 9.11.3.9 5GS tracking area identity list */
+ DE_NAS_5GS_MM_UPDATE_TYPE, /* 9.11.3.9A 5GS update type */
DE_NAS_5GS_MM_ABBA, /* 9.11.3.10 ABBA */
DE_NAS_5GS_MM_ACCESS_TYPE, /* 9.11.3.11 Access type */
DE_NAS_5GS_MM_ADD_5G_SEC_INF, /* 9.11.3.12 Additional 5G security information */
@@ -1669,7 +1671,7 @@ typedef enum
DE_NAS_5GS_MM_UE_USAGE_SET, /* 9.11.3.55 UE's usage setting */
DE_NAS_5GS_MM_UE_STATUS, /* 9.11.3.56 UE status */
DE_NAS_5GS_MM_UL_DATA_STATUS, /* 9.11.3.57 Uplink data status */
- DE_NAS_5GS_MM_NONE /* NONE */
+ DE_NAS_5GS_MM_NONE /* NONE */
}
nas_5gs_mm_elem_idx_t;
diff --git a/epan/dissectors/packet-nas_5gs.c b/epan/dissectors/packet-nas_5gs.c
index 5513013d33..b0d2bb52ca 100644
--- a/epan/dissectors/packet-nas_5gs.c
+++ b/epan/dissectors/packet-nas_5gs.c
@@ -28,6 +28,7 @@ void proto_reg_handoff_nas_5gs(void);
static gboolean g_nas_5gs_null_decipher = FALSE;
static int dissect_nas_5gs_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, void* data);
+static int dissect_nas_5gs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data);
static dissector_handle_t nas_5gs_handle = NULL;
static dissector_handle_t eap_handle = NULL;
@@ -62,7 +63,7 @@ static int hf_nas_5gs_spare_half_octet = -1;
static int hf_nas_5gs_pdu_session_id = -1;
static int hf_nas_5gs_msg_elems = -1;
static int hf_nas_5gs_mm_for = -1;
-static int hf_nas_5gs_mm_sms_over_nas = -1;
+static int hf_nas_5gs_mm_sms_requested = -1;
static int hf_nas_5gs_mm_5gs_reg_type = -1;
static int hf_nas_5gs_mm_tsc = -1;
static int hf_nas_5gs_mm_nas_key_set_id = -1;
@@ -183,6 +184,24 @@ static int hf_nas_5gs_ul_data_sts_psi_10_b2 = -1;
static int hf_nas_5gs_ul_data_sts_psi_9_b1 = -1;
static int hf_nas_5gs_ul_data_sts_psi_8_b0 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_7_b7 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_6_b6 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_5_b5 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_4_b4 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_3_b3 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_2_b2 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_1_b1 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_0_b0 = -1;
+
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_15_b7 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_14_b6 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_13_b5 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_12_b4 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_11_b3 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_10_b2 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_9_b1 = -1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_8_b0 = -1;
+
static int hf_nas_5gs_sm_pdu_session_type = -1;
static int hf_nas_5gs_sm_sc_mode = -1;
static int hf_nas_5gs_sm_sel_sc_mode = -1;
@@ -226,6 +245,14 @@ static int hf_nas_5gs_sm_all_ssc_mode_b2 = -1;
static int hf_nas_5gs_addr_mask_ipv4 = -1;
static int hf_nas_5gs_protocol_identifier_or_next_hd = -1;
static int hf_nas_5gs_protocol_identifier_or_next_hd_val = -1;
+static int hf_nas_5gs_mm_rinmr = -1;
+static int hf_nas_5gs_mm_hdp = -1;
+static int hf_nas_5gs_mm_dcni = -1;
+static int hf_nas_5gs_mm_nssci = -1;
+static int hf_nas_5gs_mm_nssai_inc_mode = -1;
+static int hf_nas_5gs_mm_ue_usage_setting = -1;
+static int hf_nas_5gs_mm_ng_ran_rcu = -1;
+static int hf_nas_5gs_mm_5gs_drx_param = -1;
static int ett_nas_5gs = -1;
static int ett_nas_5gs_mm_nssai = -1;
@@ -455,6 +482,29 @@ de_nas_5gs_mm_5gmm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
return 1;
}
+
+static const value_string nas_5gs_mm_drx_vals[] = {
+ { 0x0, "DRX value not specified" },
+ { 0x1, "DRX cycle parameter T = 32" },
+ { 0x2, "DRX cycle parameter T = 64" },
+ { 0x3, "DRX cycle parameter T = 128" },
+ { 0x4, "DRX cycle parameter T = 256" },
+ { 0, NULL }
+};
+
+
+/* 9.11.3.2A 5GS DRX parameters*/
+static guint16
+de_nas_5gs_mm_5gs_drx_param(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_item(tree, hf_nas_5gs_mm_5gs_drx_param, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return 1;
+}
+
/*
* 9.11.3.3 5GS identity type
*/
@@ -672,7 +722,6 @@ static true_false_string nas_5gs_for_tfs = {
static const int * nas_5gs_registration_type_flags[] = {
&hf_nas_5gs_mm_for,
- &hf_nas_5gs_mm_sms_over_nas,
&hf_nas_5gs_mm_5gs_reg_type,
NULL
};
@@ -830,6 +879,34 @@ de_nas_5gs_mm_5gs_ta_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
}
/*
+ * 9.11.3.9A 5GS update type
+ */
+
+static true_false_string tfs_nas5gs_sms_requested = {
+ "SMS over NAS supported",
+ "SMS over NAS not supported"
+};
+
+static guint16
+de_nas_5gs_mm_update_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
+ guint32 offset, guint len _U_,
+ gchar *add_string _U_, int string_len _U_)
+{
+ static const int * flags[] = {
+ &hf_nas_5gs_spare_b3,
+ &hf_nas_5gs_spare_b2,
+ &hf_nas_5gs_mm_ng_ran_rcu,
+ &hf_nas_5gs_mm_sms_requested,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags, ENC_BIG_ENDIAN);
+
+ return 1;
+
+}
+
+/*
* 9.11.3.10 ABBA
*/
static guint16
@@ -845,63 +922,117 @@ de_nas_5gs_mm_abba(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* 9.11.3.11 Access type
*/
static guint16
-de_nas_5gs_mm_access_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
+de_nas_5gs_mm_access_type(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_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+ static const int * flags[] = {
+ &hf_nas_5gs_spare_b3,
+ &hf_nas_5gs_spare_b2,
+ &hf_nas_5gs_mm_acc_type,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags, ENC_BIG_ENDIAN);
+
+ return 1;
- return len;
}
/*
* 9.11.3.12 Additional 5G security information
*/
static guint16
-de_nas_5gs_mm_add_5g_sec_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
+de_nas_5gs_mm_add_5g_sec_inf(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_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+ static const int * flags[] = {
+ &hf_nas_5gs_spare_b3,
+ &hf_nas_5gs_spare_b2,
+ &hf_nas_5gs_mm_rinmr,
+ &hf_nas_5gs_mm_hdp,
+ NULL
+ };
- return len;
+ proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags, ENC_BIG_ENDIAN);
+
+ return 1;
}
/*
* 9.11.3.13 Allowed PDU session status
*/
+static true_false_string tfs_nas_5gs_allow_pdu_ses_sts_psi = {
+ "user-plane resources of corresponding PDU session can be re-established over 3GPP access",
+ "user-plane resources of corresponding PDU session is not allowed to be re-established over 3GPP access"
+};
+
static guint16
de_nas_5gs_mm_allow_pdu_ses_sts(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint32 offset, guint len,
gchar *add_string _U_, int string_len _U_)
+
{
- proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+ int curr_offset;
- return len;
-}
+ static const int * psi_0_7_flags[] = {
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_7_b7,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_6_b6,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_5_b5,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_4_b4,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_3_b3,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_2_b2,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_1_b1,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_0_b0,
+ NULL
+ };
+
+ static const int * psi_8_15_flags[] = {
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_15_b7,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_14_b6,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_13_b5,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_12_b4,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_11_b3,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_10_b2,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_9_b1,
+ &hf_nas_5gs_allow_pdu_ses_sts_psi_8_b0,
+ NULL
+ };
+
+ curr_offset = offset;
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, psi_0_7_flags, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, psi_8_15_flags, ENC_BIG_ENDIAN);
+ curr_offset++;
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset, pinfo, &ei_nas_5gs_extraneous_data);
+
+ return (curr_offset - offset);
+}
/*
- * 9.11.3.13 Authentication failure parameter
+ * 9.11.3.14 Authentication failure parameter
*/
/* See subclause 10.5.3.2.2 in 3GPP TS 24.008 */
/*
- * 9.11.3.14 Authentication parameter AUTN
+ * 9.11.3.15 Authentication parameter AUTN
*/
/* See subclause 10.5.3.1 in 3GPP TS 24.008 [8].*/
/*
- * 9.11.3.15 Authentication parameter RAND
+ * 9.11.3.16 Authentication parameter RAND
*/
/* See subclause 10.5.3.1 in 3GPP TS 24.008 [8]. */
/*
- * 9.11.3.16 Authentication response parameter
+ * 9.11.3.17 Authentication response parameter
*/
/* See subclause 9.9.3.4 in 3GPP TS 24.301 [15].*/
/*
- * 9.11.3.17 Configuration update indication
+ * 9.11.3.18 Configuration update indication
*/
static guint16
de_nas_5gs_mm_conf_upd_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
@@ -924,12 +1055,12 @@ de_nas_5gs_mm_conf_upd_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
}
/*
- * 9.11.3.17 Daylight saving time
+ * 9.11.3.19 Daylight saving time
*/
/* See subclause 10.5.3.12 in 3GPP TS 24.008 */
/*
- * 9.11.3.18 De-registration type
+ * 9.11.3.20 De-registration type
*/
static const true_false_string nas_5gs_mm_switch_off_tfs = {
"Switch off",
@@ -1014,6 +1145,13 @@ de_nas_5gs_mm_drx_par(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
return len;
}
+/* 9.11.3.21 Void*/
+/* 9.11.3.22 Void*/
+
+/*
+ * 9.11.3.23 Emergency number list
+ */
+/* See subclause 10.5.3.13 in 3GPP TS 24.008 */
/*
* 9.11.3.24 EPS NAS message container
@@ -1043,6 +1181,8 @@ de_nas_5gs_mm_eps_nas_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
*/
/* See subclause 9.9.3.37A in 3GPP TS 24.301 */
+/* 9.11.3.27 Void*/
+
/*
* 9.11.3.28 IMEISV request
*/
@@ -1116,10 +1256,14 @@ de_nas_5gs_mm_nas_key_set_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
guint32 offset, guint len _U_,
gchar *add_string _U_, int string_len _U_)
{
+ static const int * flags[] = {
+ &hf_nas_5gs_mm_tsc,
+ &hf_nas_5gs_mm_nas_key_set_id,
+ NULL
+ };
/* NAS key set identifier IEI TSC NAS key set identifier */
- proto_tree_add_item(tree, hf_nas_5gs_mm_tsc, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_nas_5gs_mm_nas_key_set_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags, ENC_BIG_ENDIAN);
return 1;
}
@@ -1133,12 +1277,10 @@ de_nas_5gs_mm_nas_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
guint32 offset, guint len,
gchar *add_string _U_, int string_len _U_)
{
+ /* The purpose of the NAS message container IE is to encapsulate a plain 5GS NAS message. */
/* a NAS message without NAS security heade */
- if (nas_eps_plain_handle) {
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "/");
- col_set_fence(pinfo->cinfo, COL_PROTOCOL);
- call_dissector(nas_eps_plain_handle, tvb_new_subset_length(tvb, offset, len), pinfo, tree);
- }
+
+ dissect_nas_5gs(tvb_new_subset_length(tvb, offset, len), pinfo, tree, NULL);
return len;
}
@@ -1177,8 +1319,13 @@ de_nas_5gs_mm_nas_sec_algo(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
gchar *add_string _U_, int string_len _U_)
{
- proto_tree_add_item(tree, hf_nas_5gs_mm_nas_sec_algo_enc, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_nas_5gs_mm_nas_sec_algo_ip, tvb, offset, 1, ENC_BIG_ENDIAN);
+ static const int * flags[] = {
+ &hf_nas_5gs_mm_nas_sec_algo_enc,
+ &hf_nas_5gs_mm_nas_sec_algo_ip,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags, ENC_BIG_ENDIAN);
return 1;
}
@@ -1194,12 +1341,25 @@ de_nas_5gs_mm_nas_sec_algo(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
* 9.11.3.36 Network slicing indication
*/
+static const true_false_string nas_5gs_mm_dcni_tfs = {
+ "Requested NSSAI created from default configured NSSAI",
+ "Requested NSSAI not created from default configured NSSAI"
+};
+
static guint16
-de_nas_5gs_mm_nw_slicing_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
+de_nas_5gs_mm_nw_slicing_ind(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_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+ static const int * flags[] = {
+ &hf_nas_5gs_spare_b3,
+ &hf_nas_5gs_spare_b2,
+ &hf_nas_5gs_mm_dcni,
+ &hf_nas_5gs_mm_nssci,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags, ENC_BIG_ENDIAN);
return len;
}
@@ -1237,12 +1397,28 @@ de_nas_5gs_mm_nssai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/*
* 9.11.3.37A NSSAI inclusion mode
*/
+
+
+static const value_string nas_5gs_mm_nssai_inc_mode_vals[] = {
+ { 0x00, "A" },
+ { 0x01, "B" },
+ { 0x02, "C" },
+ { 0x03, "D" },
+ { 0, NULL } };
+
static guint16
-de_nas_5gs_mm_nssai_inc_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
+de_nas_5gs_mm_nssai_inc_mode(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_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+ static const int * flags[] = {
+ &hf_nas_5gs_spare_b3,
+ &hf_nas_5gs_spare_b2,
+ &hf_nas_5gs_mm_nssai_inc_mode,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags, ENC_BIG_ENDIAN);
return len;
}
@@ -1378,11 +1554,19 @@ de_nas_5gs_mm_pdu_ses_react_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
* 9.11.3.43 PDU session reactivation result error cause
*/
static guint16
-de_nas_5gs_mm_pdu_ses_react_res_err_c(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
+de_nas_5gs_mm_pdu_ses_react_res_err_c(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_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+ guint32 curr_offset = offset;
+
+ /*Partial service area list*/
+ while ((curr_offset - offset) < len) {
+ proto_tree_add_item(tree, hf_nas_5gs_pdu_session_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_nas_5gs_mm_5gmm_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ }
return len;
}
@@ -1749,20 +1933,33 @@ de_nas_5gs_mm_ue_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
}
/*
- * 9.11.3.51 UE's usage setting
+ * 9.11.3.55 UE's usage setting
*/
+static true_false_string tfs_nas_5gs_mm_ue_usage_setting = {
+ "Data centric",
+ "Voice centric"
+};
+
static guint16
-de_nas_5gs_mm_ue_usage_set(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
+de_nas_5gs_mm_ue_usage_set(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_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+ static const int * flags[] = {
+ &hf_nas_5gs_spare_b3,
+ &hf_nas_5gs_spare_b2,
+ &hf_nas_5gs_spare_b1,
+ &hf_nas_5gs_mm_ue_usage_setting,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags, ENC_BIG_ENDIAN);
return len;
}
/*
- * 9.11.3.52 UE status
+ * 9.11.3.56 UE status
*/
static true_false_string tfs_nas_5gs_mm_n1_mod = {
@@ -1801,7 +1998,7 @@ de_nas_5gs_mm_ue_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
}
/*
- * 9.11.3.53 Uplink data status
+ * 9.11.3.57 Uplink data status
*/
static true_false_string tfs_nas_5gs_ul_data_sts_psi = {
@@ -2820,6 +3017,7 @@ typedef enum
{
DE_NAS_5GS_MM_5GMM_CAP, /* 9.11.3.1 5GMM capability*/
DE_NAS_5GS_MM_5GMM_CAUSE, /* 9.11.3.2 5GMM cause*/
+ DE_NAS_5GS_MM_5GS_DRX_PARAM, /* 9.11.3.2A 5GS DRX parameters*/
DE_NAS_5GS_MM_5GS_IDENTITY_TYPE, /* 9.11.3.3 5GS identity type*/
DE_NAS_5GS_MM_5GS_MOBILE_ID, /* 9.11.3.4 5GS mobile identity*/
DE_NAS_5GS_MM_5GS_NW_FEAT_SUP, /* 9.11.3.5 5GS network feature support*/
@@ -2827,6 +3025,7 @@ typedef enum
DE_NAS_5GS_MM_5GS_REG_TYPE, /* 9.11.3.7 5GS registration type*/
DE_NAS_5GS_MM_5GS_TA_ID, /* 9.11.3.8 5GS tracking area identity */
DE_NAS_5GS_MM_5GS_TA_ID_LIST, /* 9.11.3.9 5GS tracking area identity list */
+ DE_NAS_5GS_MM_UPDATE_TYPE, /* 9.11.3.9A 5GS update type */
DE_NAS_5GS_MM_ABBA, /* 9.11.3.10 ABBA */
DE_NAS_5GS_MM_ACCESS_TYPE, /* 9.11.3.11 Access type */
DE_NAS_5GS_MM_ADD_5G_SEC_INF, /* 9.11.3.12 Additional 5G security information */
@@ -2891,6 +3090,7 @@ nas_5gs_mm_elem_idx_t;
static const value_string nas_5gs_mm_elem_strings[] = {
{ DE_NAS_5GS_MM_5GMM_CAP, "5GMM capability" }, /* 9.11.3.1 5GMM capability*/
{ DE_NAS_5GS_MM_5GMM_CAUSE, "5GMM cause" }, /* 9.11.3.2 5GMM cause*/
+ { DE_NAS_5GS_MM_5GS_DRX_PARAM, "5GS DRX parameters" }, /* 9.11.3.2A 5GS DRX parameters*/
{ DE_NAS_5GS_MM_5GS_IDENTITY_TYPE, "5GS identity type" }, /* 9.11.3.3 5GS identity type*/
{ DE_NAS_5GS_MM_5GS_MOBILE_ID, "5GS mobile identity" }, /* 9.11.3.4 5GS mobile identity*/
{ DE_NAS_5GS_MM_5GS_NW_FEAT_SUP, "5GS network feature support" }, /* 9.11.3.5 5GS network feature support*/
@@ -2898,6 +3098,7 @@ static const value_string nas_5gs_mm_elem_strings[] = {
{ DE_NAS_5GS_MM_5GS_REG_TYPE, "5GS registration type" }, /* 9.11.3.7 5GS registration type*/
{ DE_NAS_5GS_MM_5GS_TA_ID, "5GS tracking area identity" }, /* 9.11.3.8 5GS tracking area identity */
{ DE_NAS_5GS_MM_5GS_TA_ID_LIST, "5GS tracking area identity list" }, /* 9.11.3.9 5GS tracking area identity list*/
+ { DE_NAS_5GS_MM_UPDATE_TYPE, "5GS update type" }, /* 9.11.3.9A 5GS update type */
{ DE_NAS_5GS_MM_ABBA, "ABBA" }, /* 9.11.3.10 ABBA */
{ DE_NAS_5GS_MM_ACCESS_TYPE, "Access type" }, /* 9.11.3.11 Access type */
{ DE_NAS_5GS_MM_ADD_5G_SEC_INF, "Additional 5G security information" }, /* 9.11.3.12 Additional 5G security information */
@@ -2968,6 +3169,7 @@ guint16(*nas_5gs_mm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
/* 9.11.3 5GS mobility management (5GMM) information elements */
de_nas_5gs_mm_5gmm_cap, /* 9.11.3.1 5GMM capability*/
de_nas_5gs_mm_5gmm_cause, /* 9.11.3.2 5GMM cause*/
+ de_nas_5gs_mm_5gs_drx_param, /* 9.11.3.2A 5GS DRX parameters*/
de_nas_5gs_mm_5gs_identity_type, /* 9.11.3.3 5GS identity type*/
de_nas_5gs_mm_5gs_mobile_id, /* 9.11.3.4 5GS mobile identity*/
de_nas_5gs_mm_5gs_nw_feat_sup, /* 9.11.3.5 5GS network feature support*/
@@ -2975,6 +3177,7 @@ guint16(*nas_5gs_mm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
de_nas_5gs_mm_5gs_reg_type, /* 9.11.3.7 5GS registration type*/
de_nas_5gs_mm_5gs_ta_id, /* 9.11.3.8 5GS tracking area identity */
de_nas_5gs_mm_5gs_ta_id_list, /* 9.11.3.9 5GS tracking area identity list */
+ de_nas_5gs_mm_update_type, /* 9.11.3.9A 5GS update type */
de_nas_5gs_mm_abba, /* 9.11.3.10 ABBA */
de_nas_5gs_mm_access_type, /* 9.11.3.11 Access type */
de_nas_5gs_mm_add_5g_sec_inf, /* 9.11.3.12 Additional 5G security information */
@@ -3269,7 +3472,6 @@ nas_5gs_mm_registration_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* Mobile identity 5GS mobile identity 9.11.3.4 M LV-E 6-n*/
ELEM_MAND_LV_E(NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_5GS_MOBILE_ID, NULL, ei_nas_5gs_missing_mandatory_elemen);
-
/*C- Non-current native NAS KSI NAS key set identifier 9.11.3.32 O TV 1*/
ELEM_OPT_TV_SHORT(0xc0, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NAS_KEY_SET_ID, " - native KSI");
@@ -3310,7 +3512,7 @@ nas_5gs_mm_registration_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TLV(0x18, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_UE_USAGE_SET, NULL);
/*51 Requested DRX parameters 5GS DRX parameters 9.11.3.2A O TLV 3 */
- ELEM_OPT_TLV(0x51, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_DRX_PAR, " - Requested DRX parameters");
+ ELEM_OPT_TLV(0x51, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_5GS_DRX_PARAM, " - Requested DRX parameters");
/*70 EPS NAS message container EPS NAS message container 9.11.3.24 O TLV-E 4-n */
ELEM_OPT_TLV_E(0x70, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_EPS_NAS_MSG_CONT, NULL);
@@ -3322,11 +3524,13 @@ nas_5gs_mm_registration_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TLV_E(0x7B, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PLD_CONT, NULL);
/* 9- Network slicing indication Network slicing indication 9.11.3.36 O TV 1 */
+ ELEM_OPT_TV_SHORT(0x90, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NW_SLICING_IND, NULL);
/* 53 5GS update type 5GS update type 9.11.3.9A O TLV 3 */
+ ELEM_OPT_TLV(0x53, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_UPDATE_TYPE, NULL);
/* 71 NAS message container NAS message container 9.11.3.33 O TLV-E 4-n */
- ELEM_OPT_TLV_E(0x71, NAS_PDU_TYPE_ESM, DE_NAS_5GS_MM_NAS_MSG_CONT, NULL);
+ ELEM_OPT_TLV_E(0x71, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NAS_MSG_CONT, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -3372,9 +3576,8 @@ nas_5gs_mm_registration_accept(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
ELEM_OPT_TLV_E(0x79, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_LADN_INF, NULL);
/*B- MICO indication MICO indication 9.11.3.21 O TV 1*/
ELEM_OPT_TV_SHORT(0xb0, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_MICO_IND, NULL);
-
/* 9- Network slicing indication Network slicing indication 9.11.3.36 O TV 1 */
-
+ ELEM_OPT_TV_SHORT(0x90, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NW_SLICING_IND, NULL);
/*27 Service area list Service area list 9.11.3.47 O TLV 6-194*/
ELEM_OPT_TLV(0x27, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_SAL, NULL);
/*5E T3512 value GPRS timer 3 9.11.3.21 O TLV 3*/
@@ -3387,16 +3590,16 @@ nas_5gs_mm_registration_accept(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
ELEM_OPT_TLV(0x34, GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST, NULL);
/*7A Extended emergency number list Extended emergency number list 9.11.3.24 O TLV TBD*/
ELEM_OPT_TLV(0x7A, NAS_PDU_TYPE_EMM, DE_EMM_EXT_EMERG_NUM_LIST, NULL);
-
/*73 SOR transparent container SOR transparent container 9.11.3.51 O TLV-E 20-2048 */
-
+ ELEM_OPT_TLV_E(0x73, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_SOR_TRASP_CONT, NULL);
/*78 EAP message EAP message 9.10.2.2 O TLV-E 7-1503 */
ELEM_OPT_TLV_E(0x78, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_EAP_MESSAGE, NULL);
-
/* A- NSSAI inclusion mode NSSAI inclusion mode 9.11.3.37A O TV 1 */
+ ELEM_OPT_TV_SHORT(0xA0, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NSSAI_INC_MODE, NULL);
/* 76 Operator-defined access category definitions Operator-defined access category definitions 9.11.3.38 O TLV-E 3-TBD */
+ ELEM_OPT_TLV_E(0x76, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_OP_DEF_ACC_CAT_DEF, NULL);
/* 51 Negotiated DRX parameters 5GS DRX parameters 9.11.3.2A O TLV 3 */
-
+ ELEM_OPT_TLV(0x51, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_5GS_DRX_PARAM, " - Negotiated DRX parameters");
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -3885,8 +4088,8 @@ nas_5gs_mm_sec_mode_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
/* 77 IMEISV 5G mobile identity 9.11.3.4 O TLV-E 11 */
ELEM_OPT_TLV_E(0x77, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_5GS_MOBILE_ID, NULL);
- /* 71 NAS message container NAS message container 9.11.3.31 O TLV-E 4-n */
- ELEM_OPT_TLV_E(0x71, NAS_PDU_TYPE_ESM, DE_NAS_5GS_MM_NAS_MSG_CONT, NULL);
+ /* 71 NAS message container NAS message container 9.11.3.33 O TLV-E 4-n */
+ ELEM_OPT_TLV_E(0x71, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NAS_MSG_CONT, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -4869,7 +5072,7 @@ dissect_nas_5gs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
return dissect_nas_5gs_common(tvb, pinfo, nas_5gs_tree, offset, data);
}
/* Security protected NAS 5GS message*/
- sub_tree = proto_tree_add_subtree(tree, tvb, offset, 7, ett_nas_5gs_sec, NULL, "Security protected NAS 5GS message");
+ sub_tree = proto_tree_add_subtree(nas_5gs_tree, tvb, offset, 7, ett_nas_5gs_sec, NULL, "Security protected NAS 5GS message");
/* Extended protocol discriminator octet 1 */
proto_tree_add_item(sub_tree, hf_nas_5gs_epd, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -4889,7 +5092,7 @@ dissect_nas_5gs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
if (g_nas_5gs_null_decipher) {
return dissect_nas_5gs_common(tvb, pinfo, nas_5gs_tree, offset, data);
} else {
- proto_tree_add_subtree(tree, tvb, offset, -1, ett_nas_5gs_enc, NULL, "Encrypted data");
+ proto_tree_add_subtree(nas_5gs_tree, tvb, offset, -1, ett_nas_5gs_enc, NULL, "Encrypted data");
}
return tvb_reported_length(tvb);
@@ -5122,9 +5325,9 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&nas_5gs_for_tfs), 0x10,
NULL, HFILL }
},
- { &hf_nas_5gs_mm_sms_over_nas,
- { "SMS over NAS", "nas_5gs.mm.sms_over_nas",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ { &hf_nas_5gs_mm_sms_requested,
+ { "SMS requested", "nas_5gs.mm.sms_requested",
+ FT_BOOLEAN, 8, TFS(&tfs_nas5gs_sms_requested), 0x01,
NULL, HFILL }
},
{ &hf_nas_5gs_mm_5gs_reg_type,
@@ -5697,6 +5900,86 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_ul_data_sts_psi), 0x80,
NULL, HFILL }
},
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_0_b0,
+ { "Spare","nas_5gs.allow_pdu_ses_sts_psi_0_b0",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_1_b1,
+ { "PSI(1)","nas_5gs.allow_pdu_ses_sts_psi_1_b1",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_2_b2,
+ { "PSI(2)","nas_5gs.allow_pdu_ses_sts_psi_2_b2",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_3_b3,
+ { "PSI(3)","nas_5gs.allow_pdu_ses_sts_psi_3_b3",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_4_b4,
+ { "PSI(4)","nas_5gs.allow_pdu_ses_sts_psi_4_b4",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_5_b5,
+ { "PSI(5)","nas_5gs.allow_pdu_ses_sts_psi_5_b5",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_6_b6,
+ { "PSI(6)","nas_5gs.allow_pdu_ses_sts_psi_6_b6",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_7_b7,
+ { "PSI(7)","nas_5gs.allow_pdu_ses_sts_psi_7_b7",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_8_b0,
+ { "PSI(8)","nas_5gs.allow_pdu_ses_sts_psi_8_b0",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_9_b1,
+ { "PSI(9)","nas_5gs.allow_pdu_ses_sts_psi_9_b1",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_10_b2,
+ { "PSI(10)","nas_5gs.allow_pdu_ses_sts_psi_10_b2",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_11_b3,
+ { "PSI(11)","nas_5gs.allow_pdu_ses_sts_psi_11_b3",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_12_b4,
+ { "PSI(12)","nas_5gs.allow_pdu_ses_sts_psi_12_b4",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_13_b5,
+ { "PSI(13)","nas_5gs.allow_pdu_ses_sts_psi_13_b5",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_14_b6,
+ { "PSI(14)","nas_5gs.allow_pdu_ses_sts_psi_14_b6",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_allow_pdu_ses_sts_psi_15_b7,
+ { "PSI(15)","nas_5gs.allow_pdu_ses_sts_psi_15_b7",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_allow_pdu_ses_sts_psi), 0x80,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_sm_sc_mode,
{ "SSC mode", "nas_5gs.sm.sc_mode",
FT_UINT8, BASE_DEC, VALS(nas_5gs_sc_mode_values), 0x0f,
@@ -6002,6 +6285,46 @@ proto_register_nas_5gs(void)
FT_UINT8, BASE_DEC, NULL, 0x70,
NULL, HFILL }
},
+ { &hf_nas_5gs_mm_rinmr,
+ { "Retransmission of initial NAS message request(RINMR)", "nas_5gs.mm.rinmr",
+ FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_hdp,
+ { "Horizontal derivation parameter (HDP)", "nas_5gs.mm.hdp",
+ FT_BOOLEAN, 8, TFS(&tfs_required_not_required), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_dcni,
+ { "Default configured NSSAI indication (DCNI)", "nas_5gs.mm.dcni",
+ FT_BOOLEAN, 8, TFS(&nas_5gs_mm_dcni_tfs), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_nssci,
+ { "Network slicing subscription change indication (NSSCI)", "nas_5gs.mm.nssci",
+ FT_BOOLEAN, 8, TFS(&tfs_changed_not_changed), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_nssai_inc_mode,
+ { "NSSAI inclusion mode", "nas_5gs.mm.nssai_inc_mode",
+ FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_nssai_inc_mode_vals), 0x03,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ue_usage_setting,
+ { "UE's usage setting", "nas_5gs.mm.ue_usage_setting",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_mm_ue_usage_setting), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ng_ran_rcu,
+ { "NG-RAN Radio Capability Update (NG-RAN-RCU)", "nas_5gs.mm.ng_ran_rcu",
+ FT_BOOLEAN, 8, TFS(&tfs_needed_not_needed), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_5gs_drx_param,
+ { "DRX value", "nas_5gs.mm.drx_value",
+ FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_drx_vals), 0x0f,
+ NULL, HFILL }
+ },
};
guint i;
diff --git a/epan/tfs.c b/epan/tfs.c
index ddfb51a32a..7649c49c08 100644
--- a/epan/tfs.c
+++ b/epan/tfs.c
@@ -95,3 +95,5 @@ const true_false_string tfs_s2c_c2s = { "Server to Client", "Client to Server" }
const true_false_string tfs_c2s_s2c = { "Client to Server", "Server to Client" };
const true_false_string tfs_open_closed = { "Open", "Closed" };
const true_false_string tfs_external_internal = { "External", "Internal" };
+const true_false_string tfs_changed_not_changed = { "Changed", "Not Changed" };
+const true_false_string tfs_needed_not_needed = { "Needed", "Needed Changed" };
diff --git a/epan/tfs.h b/epan/tfs.h
index 5be56fc023..783fc859bb 100644
--- a/epan/tfs.h
+++ b/epan/tfs.h
@@ -110,6 +110,8 @@ WS_DLL_PUBLIC const true_false_string tfs_s2c_c2s;
WS_DLL_PUBLIC const true_false_string tfs_c2s_s2c;
WS_DLL_PUBLIC const true_false_string tfs_open_closed;
WS_DLL_PUBLIC const true_false_string tfs_external_internal;
+WS_DLL_PUBLIC const true_false_string tfs_changed_not_changed;
+WS_DLL_PUBLIC const true_false_string tfs_needed_not_needed;
#ifdef __cplusplus
}