summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-nas_5gs.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--epan/dissectors/packet-nas_5gs.c4838
1 files changed, 3111 insertions, 1727 deletions
diff --git a/epan/dissectors/packet-nas_5gs.c b/epan/dissectors/packet-nas_5gs.c
index 26bb927f..2e2a61ae 100644
--- a/epan/dissectors/packet-nas_5gs.c
+++ b/epan/dissectors/packet-nas_5gs.c
@@ -9,7 +9,7 @@
*
* SPDX-License-Identifier: GPL-2.0-or-later
*
- * References: 3GPP TS 24.501 17.11.0
+ * References: 3GPP TS 24.501 18.7.0
*/
#include "config.h"
@@ -22,7 +22,10 @@
#include <epan/exceptions.h>
#include <epan/show_exception.h>
#include <epan/to_str.h>
+#include <epan/tfs.h>
+#include <epan/unit_strings.h>
+#include <wsutil/array.h>
#include <wsutil/pow2.h>
#include <wsutil/pint.h>
#include <wsutil/wsjson.h>
@@ -34,7 +37,7 @@
void proto_register_nas_5gs(void);
void proto_reg_handoff_nas_5gs(void);
-static gboolean g_nas_5gs_null_decipher = FALSE;
+static bool g_nas_5gs_null_decipher;
enum {
DECODE_USER_DATA_AS_NONE,
DECODE_USER_DATA_AS_IP,
@@ -48,21 +51,20 @@ static const enum_val_t nas_5gs_user_data_container_as_vals[] = {
{"ethernet","Ethernet", DECODE_USER_DATA_AS_ETHERNET},
{NULL, NULL, -1}
};
-static gint g_nas_5gs_decode_user_data_container_as = DECODE_USER_DATA_AS_NONE;
-static const gchar *g_nas_5gs_non_ip_data_dissector = "";
+static int g_nas_5gs_decode_user_data_container_as = DECODE_USER_DATA_AS_NONE;
+static const char *g_nas_5gs_non_ip_data_dissector = "";
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 guint16 de_nas_5gs_mm_pdu_ses_id_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_);
-static guint16 de_nas_5gs_cmn_add_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_);
-static void nas_5gs_mm_5gmm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len);
-static guint16 de_nas_5gs_mm_req_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 uint16_t de_nas_5gs_mm_pdu_ses_id_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len _U_, char *add_string _U_, int string_len _U_);
+static uint16_t de_nas_5gs_cmn_add_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len, char *add_string _U_, int string_len _U_);
+static void nas_5gs_mm_5gmm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len);
+static uint16_t de_nas_5gs_mm_req_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len _U_, char *add_string _U_, int string_len _U_);
static dissector_handle_t nas_5gs_handle;
static dissector_handle_t eap_handle;
static dissector_handle_t nas_eps_handle;
-static dissector_handle_t nas_eps_plain_handle;
static dissector_handle_t lpp_handle;
static dissector_handle_t gsm_a_dtap_handle;
static dissector_handle_t ipv4_handle;
@@ -74,733 +76,829 @@ static dissector_handle_t ethernet_handle;
#define PSNAME "NAS-5GS"
#define PFNAME "nas-5gs"
-static int proto_json = -1;
-
-static int proto_nas_5gs = -1;
-
-int hf_nas_5gs_common_elem_id = -1;
-int hf_nas_5gs_mm_elem_id = -1;
-int hf_nas_5gs_sm_elem_id = -1;
-int hf_nas_5gs_updp_elem_id = -1;
-
-static int hf_nas_5gs_epd = -1;
-static int hf_nas_5gs_spare_bits = -1;
-static int hf_nas_5gs_spare_b7 = -1;
-static int hf_nas_5gs_spare_b6 = -1;
-static int hf_nas_5gs_spare_b5 = -1;
-static int hf_nas_5gs_spare_b4 = -1;
-static int hf_nas_5gs_spare_b3 = -1;
-static int hf_nas_5gs_spare_b2 = -1;
-static int hf_nas_5gs_spare_b1 = -1;
-static int hf_nas_5gs_spare_b0 = -1;
+static int proto_json;
+
+static int proto_nas_5gs;
+
+int hf_nas_5gs_common_elem_id;
+int hf_nas_5gs_mm_elem_id;
+int hf_nas_5gs_sm_elem_id;
+int hf_nas_5gs_updp_elem_id;
+
+static int hf_nas_5gs_epd;
+static int hf_nas_5gs_spare_bits;
+static int hf_nas_5gs_spare_b7;
+static int hf_nas_5gs_spare_b6;
+static int hf_nas_5gs_spare_b5;
+static int hf_nas_5gs_spare_b4;
+static int hf_nas_5gs_spare_b3;
+static int hf_nas_5gs_spare_b2;
+static int hf_nas_5gs_spare_b1;
+static int hf_nas_5gs_spare_b0;
static int hf_nas_5gs_rfu_b2;
static int hf_nas_5gs_rfu_b1;
static int hf_nas_5gs_rfu_b0;
-static int hf_nas_5gs_security_header_type = -1;
-static int hf_nas_5gs_msg_auth_code = -1;
-static int hf_nas_5gs_seq_no = -1;
-static int hf_nas_5gs_mm_msg_type = -1;
-static int hf_nas_5gs_sm_msg_type = -1;
-static int hf_nas_5gs_updp_msg_type = -1;
-static int hf_nas_5gs_proc_trans_id = -1;
-static int hf_nas_5gs_spare_half_octet = -1;
-static int hf_nas_5gs_spare_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_cmn_add_info = -1;
-static int hf_nas_5gs_cmn_acc_type = -1;
-static int hf_nas_5gs_cmn_dnn = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_type = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_len = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_device_id = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_addr_type = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_addr_ipv4 = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_addr_ipv6 = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_addr_fqdn = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_resp_c2ar = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_resp_slar = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_payload_type = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_payload = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_pending_ind_slapi = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_service_status_ind_uas = -1;
-static int hf_nas_5gs_cmn_service_level_aa_param_unknown = -1;
-static int hf_nas_5gs_mm_sms_requested = -1;
-static int hf_nas_5gs_mm_ng_ran_rcu = -1;
-static int hf_nas_5gs_mm_5gs_pnb_ciot = -1;
-static int hf_nas_5gs_mm_eps_pnb_ciot = -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;
-static int hf_nas_5gs_mm_tsc_h1 = -1;
-static int hf_nas_5gs_mm_nas_key_set_id_h1 = -1;
-static int hf_nas_5gs_mm_5gmm_cause = -1;
-static int hf_nas_5gs_mm_pld_cont_type = -1;
-static int hf_nas_5gs_mm_sst = -1;
-static int hf_nas_5gs_mm_sd = -1;
-static int hf_nas_5gs_mm_mapped_hplmn_sst = -1;
-static int hf_nas_5gs_mm_mapped_hplmn_ssd = -1;
-static int hf_nas_5gs_mm_switch_off = -1;
-static int hf_nas_5gs_mm_re_reg_req = -1;
-static int hf_nas_5gs_mm_acc_type = -1;
-static int hf_nas_5gs_mm_raai_b0 = -1;
-static int hf_nas_5gs_mm_sprti_b1 = -1;
-static int hf_nas_5gs_mm_ma_pdu_session_info_value = -1;
-static int hf_nas_5gs_mm_len_of_mapped_s_nssai = -1;
-static int hf_nas_5gs_mm_conf_upd_ind_ack_b0 = -1;
-static int hf_nas_5gs_mm_conf_upd_ind_red_b1 = -1;
-static int hf_nas_5gs_mm_cag_info_entry_len = -1;
-static int hf_nas_5gs_mm_cag_info_entry_cag_only = -1;
-static int hf_nas_5gs_mm_cag_info_entry_cag_id = -1;
-static int hf_nas_5gs_mm_ciot_small_data_cont_data_type = -1;
-static int hf_nas_5gs_mm_ciot_small_data_cont_ddx = -1;
-static int hf_nas_5gs_mm_ciot_small_data_cont_pdu_session_id = -1;
-static int hf_nas_5gs_mm_ciot_small_data_cont_add_info_len = -1;
-static int hf_nas_5gs_mm_ciot_small_data_cont_add_info = -1;
-static int hf_nas_5gs_mm_ciot_small_data_cont_data_contents = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_2 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_3 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_4 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_5 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_6 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_7 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_8 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_2 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_3 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_4 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_5 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_6 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_7 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_8 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_9 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_10 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_11 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_12 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_13 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_14 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_15 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_16 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_17 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_18 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_19 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_20 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_21 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_22 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_23 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_24 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_25 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_3_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_4_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_5_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_2 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_3 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_4 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_5 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_6 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_7 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_8 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_2 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_3 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_4 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_5 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_6 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_7 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_8 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_9 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_10 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_11 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_12 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_13 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_14 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_15 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_16 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_17 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_18 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_19 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_20 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_21 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_22 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_23 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_3_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_4_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_5_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_1 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_2 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_3 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_ciphering_set_id = -1;
-static int hf_nas_5gs_mm_ciph_key_data_ciphering_key = -1;
-static int hf_nas_5gs_mm_ciph_key_data_c0_len = -1;
-static int hf_nas_5gs_mm_ciph_key_data_c0 = -1;
-static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_len = -1;
-static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_len = -1;
-static int hf_nas_5gs_mm_ciph_key_data_validity_start_time = -1;
-static int hf_nas_5gs_mm_ciph_key_data_validity_duration = -1;
-static int hf_nas_5gs_mm_ciph_key_data_tais_list_len = -1;
-static int hf_nas_5gs_mm_ctrl_plane_serv_type = -1;
-static int hf_nas_5gs_mm_nas_sec_algo_enc = -1;
-static int hf_nas_5gs_mm_nas_sec_algo_ip = -1;
-static int hf_nas_5gs_mm_s1_mode_b0 = -1;
-static int hf_nas_5gs_mm_ho_attach_b1 = -1;
-static int hf_nas_5gs_mm_lpp_cap_b2 = -1;
-static int hf_nas_5gs_mm_restrict_ec_b3 = -1;
-static int hf_nas_5gs_mm_5g_cp_ciot_b4 = -1;
-static int hf_nas_5gs_mm_n3_data_b5 = -1;
-static int hf_nas_5gs_mm_5g_iphc_cp_ciot_b6 = -1;
-static int hf_nas_5gs_mm_sgc_b7 = -1;
-static int hf_nas_5gs_mm_5g_srvcc_b0 = -1;
-static int hf_nas_5gs_mm_5g_up_ciot_b1 = -1;
-static int hf_nas_5gs_mm_v2x_b2 = -1;
-static int hf_nas_5gs_mm_v2xcepc5_b3 = -1;
-static int hf_nas_5gs_mm_v2xcnpc5_b4 = -1;
-static int hf_nas_5gs_mm_5g_lcs_b5 = -1;
-static int hf_nas_5gs_mm_nssaa_b6 = -1;
-static int hf_nas_5gs_mm_racs_b7 = -1;
-static int hf_nas_5gs_mm_cag_b0 = -1;
-static int hf_nas_5gs_mm_wsusa_b1 = -1;
-static int hf_nas_5gs_mm_multiple_up_b2 = -1;
-static int hf_nas_5gs_mm_5g_ehc_cp_ciot_b3 = -1;
-static int hf_nas_5gs_mm_er_nssai_b4 = -1;
-static int hf_nas_5gs_mm_5g_prose_dd_b5 = -1;
-static int hf_nas_5gs_mm_5g_prose_dc_b6 = -1;
-static int hf_nas_5gs_mm_5g_prose_l2relay_b7 = -1;
-static int hf_nas_5gs_mm_5g_prose_l3relay_b0 = -1;
-static int hf_nas_5gs_mm_5g_prose_l2rmt_b1 = -1;
-static int hf_nas_5gs_mm_5g_prose_l3rmt_b2 = -1;
-static int hf_nas_5gs_mm_nr_pssi_b3 = -1;
-static int hf_nas_5gs_mm_ncr_b4 = -1;
-static int hf_nas_5gs_mm_piv_b5 = -1;
-static int hf_nas_5gs_mm_rpr_b6 = -1;
-static int hf_nas_5gs_mm_pr_b7 = -1;
-static int hf_nas_5gs_mm_nssrg_b0 = -1;
-static int hf_nas_5gs_mm_mint_b1 = -1;
-static int hf_nas_5gs_mm_event_notif_b2 = -1;
-static int hf_nas_5gs_mm_ssnpnsi_b3 = -1;
-static int hf_nas_5gs_mm_ex_cag_b4 = -1;
-static int hf_nas_5gs_mm_nsag_b5 = -1;
-static int hf_nas_5gs_mm_uas_b6 = -1;
-static int hf_nas_5gs_mm_mpsiu_b7 = -1;
-static int hf_nas_5gs_mm_rcmap_b0 = -1;
-static int hf_nas_5gs_mm_rcman_b1 = -1;
-static int hf_nas_5gs_mm_type_id = -1;
-static int hf_nas_5gs_mm_odd_even = -1;
-static int hf_nas_5gs_mm_length = -1;
-static int hf_nas_5gs_mm_pld_cont = -1;
-static int hf_nas_5gs_mm_pld_cont_event_notif_ind_nb = -1;
-static int hf_nas_5gs_mm_pld_cont_event_notif_ind_type = -1;
-static int hf_nas_5gs_mm_pld_cont_event_notif_ind_len = -1;
-static int hf_nas_5gs_mm_pld_cont_event_notif_ind_val = -1;
-static int hf_nas_5gs_mm_pld_cont_nb_entries = -1;
-static int hf_nas_5gs_mm_pld_cont_pld_cont_len = -1;
-static int hf_nas_5gs_mm_pld_cont_nb_opt_ies = -1;
-static int hf_nas_5gs_mm_pld_cont_pld_cont_type = -1;
-static int hf_nas_5gs_mm_pld_cont_opt_ie_type = -1;
-static int hf_nas_5gs_mm_pld_cont_opt_ie_len = -1;
-static int hf_nas_5gs_mm_pld_cont_opt_ie_val = -1;
-static int hf_nas_5gs_mm_req_type = -1;
-static int hf_nas_5gs_mm_serv_type = -1;
-static int hf_nas_5gs_mm_5g_ea0 = -1;
-static int hf_nas_5gs_mm_128_5g_ea1 = -1;
-static int hf_nas_5gs_mm_128_5g_ea2 = -1;
-static int hf_nas_5gs_mm_128_5g_ea3 = -1;
-static int hf_nas_5gs_mm_5g_ea4 = -1;
-static int hf_nas_5gs_mm_5g_ea5 = -1;
-static int hf_nas_5gs_mm_5g_ea6 = -1;
-static int hf_nas_5gs_mm_5g_ea7 = -1;
-static int hf_nas_5gs_mm_5g_ia0 = -1;
-static int hf_nas_5gs_mm_5g_128_ia1 = -1;
-static int hf_nas_5gs_mm_5g_128_ia2 = -1;
-static int hf_nas_5gs_mm_5g_128_ia3 = -1;
-static int hf_nas_5gs_mm_5g_ia4 = -1;
-static int hf_nas_5gs_mm_5g_ia5 = -1;
-static int hf_nas_5gs_mm_5g_ia6 = -1;
-static int hf_nas_5gs_mm_5g_ia7 = -1;
-static int hf_nas_5gs_mm_eea0 = -1;
-static int hf_nas_5gs_mm_128eea1 = -1;
-static int hf_nas_5gs_mm_128eea2 = -1;
-static int hf_nas_5gs_mm_eea3 = -1;
-static int hf_nas_5gs_mm_eea4 = -1;
-static int hf_nas_5gs_mm_eea5 = -1;
-static int hf_nas_5gs_mm_eea6 = -1;
-static int hf_nas_5gs_mm_eea7 = -1;
-static int hf_nas_5gs_mm_eia0 = -1;
-static int hf_nas_5gs_mm_128eia1 = -1;
-static int hf_nas_5gs_mm_128eia2 = -1;
-static int hf_nas_5gs_mm_eia3 = -1;
-static int hf_nas_5gs_mm_eia4 = -1;
-static int hf_nas_5gs_mm_eia5 = -1;
-static int hf_nas_5gs_mm_eia6 = -1;
-static int hf_nas_5gs_mm_eia7 = -1;
-static int hf_nas_5gs_mm_n1_mode_reg_b1 = -1;
-static int hf_nas_5gs_mm_s1_mode_reg_b0 = -1;
-
-static int hf_nas_5gs_mm_sal_al_t = -1;
-static int hf_nas_5gs_mm_sal_t_li = -1;
-static int hf_nas_5gs_mm_sal_num_e = -1;
-
-static int hf_nas_5gs_pdu_ses_sts_psi_7_b7 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_6_b6 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_5_b5 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_4_b4 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_3_b3 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_2_b2 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_1_b1 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_0_b0 = -1;
-
-static int hf_nas_5gs_pdu_ses_sts_psi_15_b7 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_14_b6 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_13_b5 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_12_b4 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_11_b3 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_10_b2 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_9_b1 = -1;
-static int hf_nas_5gs_pdu_ses_sts_psi_8_b0 = -1;
-
-static int hf_nas_5gs_pdu_ses_rect_res_psi_7_b7 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_6_b6 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_5_b5 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_4_b4 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_3_b3 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_2_b2 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_1_b1 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_0_b0 = -1;
-
-static int hf_nas_5gs_pdu_ses_rect_res_psi_15_b7 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_14_b6 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_13_b5 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_12_b4 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_11_b3 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_10_b2 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_9_b1 = -1;
-static int hf_nas_5gs_pdu_ses_rect_res_psi_8_b0 = -1;
-
-static int hf_nas_5gs_ul_data_sts_psi_7_b7 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_6_b6 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_5_b5 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_4_b4 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_3_b3 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_2_b2 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_1_b1 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_0_b0 = -1;
-
-static int hf_nas_5gs_ul_data_sts_psi_15_b7 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_14_b6 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_13_b5 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_12_b4 = -1;
-static int hf_nas_5gs_ul_data_sts_psi_11_b3 = -1;
-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_eplmnc = -1;
-static int hf_nas_5gs_sm_ratc = -1;
-static int hf_nas_5gs_sm_ept_s1 = -1;
-static int hf_nas_5gs_sm_catbo = -1;
-static int hf_nas_5gs_sm_abo = -1;
-static int hf_nas_5gs_sm_atsss_cont = -1;
-static int hf_nas_5gs_sm_cpoi = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_p0104 = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_p0103 = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_p0102 = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_p0006 = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_p0004 = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_p0003 = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_p0002 = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_max_cid = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_add_ip_hdr_compr_cxt_setup_params_type = -1;
-static int hf_nas_5gs_sm_ip_hdr_comp_config_add_ip_hdr_compr_cxt_setup_params_cont = -1;
-static int hf_nas_5gs_sm_ds_tt_eth_port_mac_addr = -1;
-static int hf_nas_5gs_sm_ue_ds_tt_residence_time = -1;
-static int hf_nas_5gs_sm_port_mgmt_info_cont = -1;
-static int hf_nas_5gs_sm_eth_hdr_comp_config_cid_len = -1;
-static int hf_nas_5gs_sm_pdu_session_pair_id = -1;
-static int hf_nas_5gs_sm_pdu_session_rsn = -1;
-static int hf_nas_5gs_sm_sel_sc_mode = -1;
-static int hf_nas_5gs_sm_tpmic_b7 = -1;
-static int hf_nas_5gs_sm_atsss_st_b3_b6 = -1;
-static int hf_nas_5gs_sm_ept_s1_b2 = -1;
-static int hf_nas_5gs_sm_mh6_pdu_b1 = -1;
-static int hf_nas_5gs_sm_rqos_b0 = -1;
-static int hf_nas_5gs_sm_apmqf_b0 = -1;
-static int hf_nas_5gs_sm_5gsm_cause = -1;
-static int hf_nas_5gs_sm_apsi = -1;
-static int hf_nas_5gs_sm_apsr = -1;
-static int hf_nas_5gs_sm_int_prot_max_data_rate_ul = -1;
-static int hf_nas_5gs_sm_int_prot_max_data_rate_dl = -1;
-static int hf_nas_5gs_sm_si6lla = -1;
-static int hf_nas_5gs_sm_pdu_ses_type = -1;
-static int hf_nas_5gs_sm_pdu_addr_inf_ipv4 = -1;
-static int hf_nas_5gs_sm_pdu_addr_inf_ipv6 = -1;
-static int hf_nas_5gs_sm_smf_ipv6_lla = -1;
-static int hf_nas_5gs_sm_qos_rule_id = -1;
-static int hf_nas_5gs_sm_length = -1;
-static int hf_nas_5gs_sm_rop = -1;
-static int hf_nas_5gs_sm_dqr = -1;
-static int hf_nas_5gs_sm_nof_pkt_filters = -1;
-static int hf_nas_5gs_sm_pkt_flt_id = -1;
-static int hf_nas_5gs_sm_pkt_flt_dir = -1;
-static int hf_nas_5gs_sm_pf_len = -1;
-static int hf_nas_5gs_sm_pf_type = -1;
-static int hf_nas_5gs_sm_e = -1;
-static int hf_nas_5gs_sm_nof_params = -1;
-static int hf_nas_5gs_sm_param_id = -1;
-static int hf_nas_5gs_sm_param_len = -1;
-static int hf_nas_5gs_sm_qos_rule_precedence = -1;
-static int hf_nas_5gs_sm_segregation = -1;
-static int hf_nas_5gs_sm_param_cont = -1;
-static int hf_nas_5gs_sm_5qi = -1;
-static int hf_nas_5gs_sm_unit_for_gfbr_ul = -1;
-static int hf_nas_5gs_sm_gfbr_ul = -1;
-static int hf_nas_5gs_sm_unit_for_gfbr_dl = -1;
-static int hf_nas_5gs_sm_gfbr_dl = -1;
-static int hf_nas_5gs_sm_unit_for_mfbr_ul = -1;
-static int hf_nas_5gs_sm_mfbr_ul = -1;
-static int hf_nas_5gs_sm_unit_for_mfbr_dl = -1;
-static int hf_nas_5gs_sm_mfbr_dl = -1;
-static int hf_nas_5gs_sm_averaging_window = -1;
-static int hf_nas_5gs_sm_eps_bearer_id = -1;
-static int hf_nas_5gs_sm_qfi = -1;
-static int hf_nas_5gs_sm_mapd_eps_b_cont_id = -1;
-static int hf_nas_5gs_sm_mapd_eps_b_cont_opt_code = -1;
-static int hf_nas_5gs_sm_qos_des_flow_opt_code = -1;
-static int hf_nas_5gs_sm_mapd_eps_b_cont_E = -1;
-static int hf_nas_5gs_sm_mapd_eps_b_cont_num_eps_parms = -1;
-static int hf_nas_5gs_sm_mapd_eps_b_cont_E_mod = -1;
-static int hf_nas_5gs_sm_mapd_eps_b_cont_param_id = -1;
-
-static int hf_nas_5gs_sm_unit_for_session_ambr_dl = -1;
-static int hf_nas_5gs_sm_session_ambr_dl = -1;
-static int hf_nas_5gs_sm_unit_for_session_ambr_ul = -1;
-static int hf_nas_5gs_sm_session_ambr_ul = -1;
-static int hf_nas_5gs_sm_dm_spec_id = -1;
-static int hf_nas_5gs_sm_all_ssc_mode_b0 = -1;
-static int hf_nas_5gs_sm_all_ssc_mode_b1 = -1;
-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_ipv6 = -1;
-static int hf_nas_5gs_ipv6_prefix_len = -1;
-static int hf_nas_5gs_protocol_identifier_or_next_hd = -1;
-static int hf_nas_5gs_mm_rinmr = -1;
-static int hf_nas_5gs_mm_hdp = -1;
-static int hf_nas_5gs_mm_cipher_key = -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_5gs_drx_param = -1;
-static int hf_nas_5gs_sup_andsp = -1;
-static int hf_nas_5gs_nssui = -1;
-
-static int ett_nas_5gs = -1;
-static int ett_nas_5gs_mm_nssai = -1;
-static int ett_nas_5gs_mm_pdu_ses_id = -1;
-static int ett_nas_5gs_sm_qos_rules = -1;
-static int ett_nas_5gs_sm_qos_params = -1;
-static int ett_nas_5gs_plain = -1;
-static int ett_nas_5gs_sec = -1;
-static int ett_nas_5gs_mm_part_sal = -1;
-static int ett_nas_5gs_mm_part_tal = -1;
-static int ett_nas_5gs_sm_mapd_eps_b_cont = -1;
-static int ett_nas_5gs_sm_mapd_eps_b_cont_params_list = -1;
-static int ett_nas_5gs_enc = -1;
-static int ett_nas_5gs_mm_ladn_indic = -1;
-static int ett_nas_5gs_mm_sor = -1;
-static int ett_nas_5gs_sm_pkt_filter_components = -1;
-static int ett_nas_5gs_updp_ue_policy_section_mgm_lst = -1;
-static int ett_nas_5gs_updp_ue_policy_section_mgm_sublst = -1;
-static int ett_nas_5gs_ue_policies_ursp = -1;
-static int ett_nas_5gs_ursp_traff_desc = -1;
-static int ett_nas_5gs_usrp_r_sel_list = -1;
-static int ett_nas_5gs_usrp_r_sel = -1;
-static int ett_nas_5gs_ursp_r_sel_desc_cont = -1;
-static int ett_nas_5gs_updp_upsi_list = -1;
-static int ett_nas_5gs_mm_rej_nssai = -1;
-static int ett_nas_5gs_mm_scheme_output = -1;
-static int ett_nas_5gs_mm_pld_cont_pld_entry = -1;
-static int ett_nas_5gs_mm_pld_cont_opt_ie = -1;
-static int ett_nas_5gs_mm_cag_info_entry = -1;
-static int ett_nas_5gs_ciot_small_data_cont_data_contents = -1;
-static int ett_nas_5gs_user_data_cont = -1;
-static int ett_nas_5gs_ciph_data_set = -1;
-static int ett_nas_5gs_mm_mapped_nssai = -1;
-static int ett_nas_5gs_mm_partial_extended_rejected_nssai_list = -1;
-static int ett_nas_5gs_mm_ext_rej_nssai = -1;
-static int ett_nas_5gs_mm_op_def_acc_cat_def = -1;
-static int ett_nas_5gs_mm_op_def_acc_cat_criteria_component = -1;
-static int ett_nas_5gs_mm_op_def_acc_cat_criteria = -1;
-static int ett_nas_5gs_cmn_service_level_aa_cont_param = -1;
-static int ett_nas_5gs_mm_pld_cont_event_notif_ind = -1;
-static int ett_nas_5gs_mm_peips_assist_info = -1;
-static int ett_nas_5gs_mm_nssrg_info = -1;
-static int ett_nas_5gs_mm_plmns_list_disaster_cond = -1;
-static int ett_nas_5gs_mm_reg_wait_range = -1;
-static int ett_nas_5gs_mm_nsag_info = -1;
-
-static int hf_nas_5gs_mm_abba = -1;
-static int hf_nas_5gs_mm_supi_fmt = -1;
-static int hf_nas_5gs_mm_routing_indicator = -1;
-static int hf_nas_5gs_mm_prot_scheme_id = -1;
-static int hf_nas_5gs_mm_pki = -1;
-static int hf_nas_5gs_mm_suci_msin = -1;
-static int hf_nas_5gs_mm_scheme_output = -1;
-static int hf_nas_5gs_mm_scheme_output_ecc_public_key = -1;
-static int hf_nas_5gs_mm_scheme_output_ciphertext = -1;
-static int hf_nas_5gs_mm_scheme_output_mac_tag = -1;
-static int hf_nas_5gs_mm_suci_nai = -1;
-static int hf_nas_5gs_mm_imei = -1;
-static int hf_nas_5gs_mm_imeisv = -1;
-static int hf_nas_5gs_mm_mauri = -1;
-static int hf_nas_5gs_mm_mac_addr = -1;
-static int hf_nas_5gs_mm_eui_64 = -1;
-static int hf_nas_5gs_mm_reg_res_res = -1;
-static int hf_nas_5gs_mm_reg_res_sms_allowed = -1;
-static int hf_nas_5gs_mm_reg_res_nssaa_perf = -1;
-static int hf_nas_5gs_mm_reg_res_emergency_reg = -1;
-static int hf_nas_5gs_mm_reg_res_disaster_roaming_reg_res = -1;
-static int hf_nas_5gs_amf_region_id = -1;
-static int hf_nas_5gs_amf_set_id = -1;
-static int hf_nas_5gs_amf_pointer = -1;
-static int hf_nas_5gs_5g_tmsi = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_len = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_precedence = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_psac = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_number = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_length = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_type = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_dnn_count = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_dnn_len = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_os_id_os_app_id_count = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_os_id = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_os_app_id_len = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_os_app_id = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_s_nssai_count = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_criteria_s_nssai_len = -1;
-static int hf_nas_5gs_mm_op_def_access_cat_standardized_number = -1;
-static int hf_nas_5gs_mm_sms_indic_sai = -1;
-
-static int hf_nas_5gs_nw_feat_sup_mpsi_b7 = -1;
-static int hf_nas_5gs_nw_feat_sup_ims_iwk_n26_b6 = -1;
-static int hf_nas_5gs_nw_feat_sup_ims_emf_b5b4 = -1;
-static int hf_nas_5gs_nw_feat_sup_ims_emc_b3b2 = -1;
-static int hf_nas_5gs_nw_feat_sup_ims_vops_3gpp = -1;
-static int hf_nas_5gs_nw_feat_sup_ims_vops_n3gpp = -1;
-static int hf_nas_5gs_nw_feat_sup_emcn3 = -1;
-static int hf_nas_5gs_nw_feat_sup_mcsi = -1;
-static int hf_nas_5gs_nw_feat_sup_restrict_ec = -1;
-static int hf_nas_5gs_nw_feat_sup_5g_cp_ciot = -1;
-static int hf_nas_5gs_nw_feat_sup_n3_data = -1;
-static int hf_nas_5gs_nw_feat_sup_5g_iphc_cp_ciot = -1;
-static int hf_nas_5gs_nw_feat_sup_5g_ciot_up = -1;
-static int hf_nas_5gs_nw_feat_sup_5g_lcs = -1;
-static int hf_nas_5gs_nw_feat_sup_ats_ind = -1;
-static int hf_nas_5gs_nw_feat_sup_5g_ehc_cp_ciot = -1;
-static int hf_nas_5gs_nw_feat_sup_ncr = -1;
-static int hf_nas_5gs_nw_feat_sup_piv = -1;
-static int hf_nas_5gs_nw_feat_sup_rpr = -1;
-static int hf_nas_5gs_nw_feat_sup_pr = -1;
-
-static int hf_nas_5gs_tac = -1;
-
-static int hf_nas_5gs_mm_tal_t_li = -1;
-static int hf_nas_5gs_mm_tal_num_e = -1;
-static int hf_nas_5gs_sm_mapd_eps_b_cont_eps_param_cont = -1;
-
-static int hf_nas_5gs_sm_max_nb_sup_pkt_flt_nb = -1;
-static int hf_nas_5gs_sm_max_nb_sup_pkt_flt_spare = -1;
-
-static int hf_nas_5gs_kacf = -1;
-static int hf_nas_5gs_ncc = -1;
-
-static int hf_nas_5gs_sor_hdr0_ap = -1;
-static int hf_nas_5gs_sor_hdr0_ack = -1;
-static int hf_nas_5gs_sor_hdr0_list_type = -1;
-static int hf_nas_5gs_sor_hdr0_list_ind = -1;
-static int hf_nas_5gs_sor_hdr0_sor_data_type = -1;
-static int hf_nas_5gs_sor_mssnpnsi = -1;
-static int hf_nas_5gs_sor_hdr0_mssi = -1;
-static int hf_nas_5gs_sor_mac_iue = -1;
-static int hf_nas_5gs_sor_mac_iausf = -1;
-static int hf_nas_5gs_counter_sor = -1;
-static int hf_nas_5gs_sor_sec_pkt = -1;
-static int hf_nas_5gs_sor_sssi = -1;
-static int hf_nas_5gs_sor_sscmi = -1;
-static int hf_nas_5gs_sor_si = -1;
-static int hf_nas_5gs_sor_plmn_id_act_len = -1;
-static int hf_nas_5gs_sor_cmci_len = -1;
-static int hf_nas_5gs_sor_cmci_payload = -1;
-static int hf_nas_5gs_sor_snpn_si_len = -1;
-static int hf_nas_5gs_sor_snpn_si_payload = -1;
-
-static int hf_nas_5gs_access_tech_o1_b7 = -1;
-static int hf_nas_5gs_access_tech_o1_b6 = -1;
-static int hf_nas_5gs_access_tech_o1_b5 = -1;
-static int hf_nas_5gs_access_tech_o1_b4 = -1;
-static int hf_nas_5gs_access_tech_o1_b3 = -1;
-static int hf_nas_5gs_access_tech_o2_b7 = -1;
-static int hf_nas_5gs_access_tech_o2_b6 = -1;
-static int hf_nas_5gs_access_tech_o2_b5 = -1;
-static int hf_nas_5gs_access_tech_o2_b4 = -1;
-static int hf_nas_5gs_access_tech_o2_b3 = -1;
-static int hf_nas_5gs_access_tech_o2_b2 = -1;
-static int hf_nas_5gs_single_port_type = -1;
-static int hf_nas_5gs_port_range_type_low = -1;
-static int hf_nas_5gs_port_range_type_high = -1;
-static int hf_nas_5gs_sec_param_idx = -1;
-static int hf_nas_5gs_tos_tc_val = -1;
-static int hf_nas_5gs_tos_tc_mask = -1;
-static int hf_nas_5gs_flow_label = -1;
-static int hf_nas_5gs_mac_addr = -1;
-static int hf_nas_5gs_vlan_tag_vid = -1;
-static int hf_nas_5gs_vlan_tag_pcp = -1;
-static int hf_nas_5gs_vlan_tag_dei = -1;
-static int hf_nas_5gs_ethertype = -1;
-static int hf_nas_5gs_mac_addr_low = -1;
-static int hf_nas_5gs_mac_addr_high = -1;
-static int hf_nas_5gs_updp_ue_pol_sect_sublst_len = -1;
-static int hf_nas_5gs_updp_ue_pol_sect_subresult_len = -1;
-static int hf_nas_5gs_updp_instr_len = -1;
-static int hf_nas_5gs_updp_upsc = -1;
-static int hf_nas_5gs_updp_failed_instruction_order = -1;
-static int hf_nas_5gs_updp_policy_len = -1;
-static int hf_nas_5gs_updp_ue_policy_part_type = -1;
-static int hf_nas_5gs_updp_ue_policy_part_cont = -1;
-static int hf_nas_5gs_ursp_rule_len = -1;
-static int hf_nas_5gs_ursp_rule_prec = -1;
-static int hf_nas_5gs_ursp_traff_desc_lst_len = -1;
-static int hf_nas_5gs_ursp_traff_desc = -1;
-static int hf_nas_5gs_ursp_r_sel_desc_lst_len = -1;
-static int hf_nas_5gs_ursp_r_sel_desc_lst = -1;
-static int hf_nas_5gs_ursp_traff_desc_ipv4 = -1;
-static int hf_nas_5gs_ursp_traff_desc_ipv4_mask = -1;
-static int hf_nas_5gs_ursp_traff_desc_ipv6 = -1;
-static int hf_nas_5gs_ursp_traff_desc_ipv6_prefix_len = -1;
-static int hf_nas_5gs_ursp_traff_desc_next_hdr = -1;
-static int hf_nas_5gs_ursp_traff_desc_single_remote_port = -1;
-static int hf_nas_5gs_ursp_traff_desc_remote_port_range_low = -1;
-static int hf_nas_5gs_ursp_traff_desc_remote_port_range_high = -1;
-static int hf_nas_5gs_ursp_traff_desc_sec_param_index = -1;
-static int hf_nas_5gs_ursp_traff_desc_tos_tc = -1;
-static int hf_nas_5gs_ursp_traff_desc_tos_tc_mask = -1;
-static int hf_nas_5gs_ursp_traff_desc_flow_label = -1;
-static int hf_nas_5gs_ursp_traff_desc_dest_mac_addr = -1;
-static int hf_nas_5gs_ursp_traff_desc_ctag_vid = -1;
-static int hf_nas_5gs_ursp_traff_desc_stag_vid = -1;
-static int hf_nas_5gs_ursp_traff_desc_ctag_pcp= -1;
-static int hf_nas_5gs_ursp_traff_desc_ctag_dei = -1;
-static int hf_nas_5gs_ursp_traff_desc_stag_pcp = -1;
-static int hf_nas_5gs_ursp_traff_desc_stag_dei = -1;
-static int hf_nas_5gs_ursp_traff_desc_ethertype = -1;
-static int hf_nas_5gs_ursp_traff_desc_conn_cap_len = -1;
-static int hf_nas_5gs_ursp_traff_desc_conn_cap = -1;
-static int hf_nas_5gs_ursp_traff_desc_dest_fqdn_len = -1;
-static int hf_nas_5gs_ursp_traff_desc_dest_fqdn = -1;
-static int hf_nas_5gs_ursp_traff_desc_dest_mac_addr_range_low = -1;
-static int hf_nas_5gs_ursp_traff_desc_dest_mac_addr_range_high = -1;
-static int hf_nas_5gs_ursp_traff_desc_len = -1;
-static int hf_nas_5gs_ursp_r_sel_des_prec = -1;
-static int hf_nas_5gs_ursp_r_sel_des_cont_len = -1;
-static int hf_nas_5gs_ursp_ursp_r_sel_desc_comp_type = -1;
-static int hf_nas_5gs_dnn_len = -1;
-static int hf_nas_5gs_upsi_sublist_len = -1;
-static int hf_nas_5gs_upsc = -1;
-static int hf_nas_5gs_os_id = -1;
-static int hf_nas_5gs_upds_cause = -1;
-static int hf_nas_5gs_v2xuui = -1;
-static int hf_nas_5gs_v2xpc5i = -1;
-static int hf_nas_5gs_os_app_id_len = -1;
-static int hf_nas_5gs_os_app_id = -1;
-static int hf_nas_5gs_mm_len_of_rej_s_nssai = -1;
-static int hf_nas_5gs_mm_rej_s_nssai_cause = -1;
-static int hf_nas_5gs_mm_ue_radio_cap_id = -1;
-static int hf_nas_5gs_mm_ue_radio_cap_id_del_req = -1;
-static int hf_nas_5gs_mm_trunc_amf_set_id = -1;
-static int hf_nas_5gs_mm_trunc_amf_pointer = -1;
-static int hf_nas_5gs_mm_n5gcreg_b0 = -1;
-static int hf_nas_5gs_mm_nb_n1_drx_value = -1;
-static int hf_nas_5gs_mm_scmr = -1;
-static int hf_nas_5gs_mm_extended_rejected_s_nssai_number_of_element = -1;
-static int hf_nas_5gs_mm_extended_rejected_s_nssai_type_of_list = -1;
-static int hf_nas_5gs_mm_extended_rejected_s_nssai_spare = -1;
-static int hf_nas_5gs_mm_extended_rejected_s_nssai_back_off_timer = -1;
-static int hf_nas_5gs_mm_len_of_rejected_s_nssai = -1;
-static int hf_nas_5gs_mm_rejected_s_nssai_cause_value = -1;
-static int hf_nas_5gs_mm_paging_restriction_type = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_7 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_6 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_5 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_4 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_3 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_2 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_1 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_0 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_15 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_14 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_13 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_12 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_11 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_10 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_9 = -1;
-static int hf_nas_5gs_mm_paging_restriction_psi_8 = -1;
-static int hf_nas_5gs_mm_nid_assign_mode = -1;
-static int hf_nas_5gs_mm_nid_value = -1;
-static int hf_nas_5gs_mm_peips_assist_info_type = -1;
-static int hf_nas_5gs_mm_peips_assist_info_paging_subgroup_id = -1;
-static int hf_nas_5gs_mm_peips_assist_info_ue_paging_probability_info = -1;
-static int hf_nas_5gs_mm_add_req_res_prd = -1;
-static int hf_nas_5gs_mm_nssrg_info_len = -1;
-static int hf_nas_5gs_mm_nssrg_info_s_nssai_len = -1;
-static int hf_nas_5gs_mm_nssrg_info_nssrg = -1;
-static int hf_nas_5gs_mm_nsag_info_len = -1;
-static int hf_nas_5gs_mm_nsag_id = -1;
-static int hf_nas_5gs_mm_nsag_info_s_nssai_len = -1;
-static int hf_nas_5gs_mm_nsag_prio = -1;
-static int hf_nas_5gs_mm_nsag_tais_list_len = -1;
-static int hf_nas_5gs_mm_prose_relay_trans_id = -1;
-static int hf_nas_5gs_mm_relay_key_req_params_relay_service_code = -1;
-static int hf_nas_5gs_mm_relay_key_req_params_nonce_1 = -1;
-static int hf_nas_5gs_mm_relay_key_req_params_ruit = -1;
-static int hf_nas_5gs_mm_relay_key_req_params_remote_ue_id = -1;
-static int hf_nas_5gs_mm_relay_key_resp_params_key_knr_prose = -1;
-static int hf_nas_5gs_mm_relay_key_resp_params_nonce_2 = -1;
-static int hf_nas_5gs_mm_relay_key_resp_params_cp_pruk_id = -1;
-static int hf_nas_5gs_mm_prio_ind_mpsi = -1;
-static int hf_nas_5gs_ue_os_id = -1;
-
-static expert_field ei_nas_5gs_extraneous_data = EI_INIT;
-static expert_field ei_nas_5gs_unknown_pd = EI_INIT;
-static expert_field ei_nas_5gs_mm_unknown_msg_type = EI_INIT;
-static expert_field ei_nas_5gs_sm_unknown_msg_type = EI_INIT;
-static expert_field ei_nas_5gs_updp_unknown_msg_type = EI_INIT;
-static expert_field ei_nas_5gs_msg_not_dis = EI_INIT;
-static expert_field ei_nas_5gs_ie_not_dis = EI_INIT;
-static expert_field ei_nas_5gs_missing_mandatory_element = EI_INIT;
-static expert_field ei_nas_5gs_dnn_too_long = EI_INIT;
-static expert_field ei_nas_5gs_unknown_value = EI_INIT;
-static expert_field ei_nas_5gs_num_pkt_flt = EI_INIT;
-static expert_field ei_nas_5gs_not_diss = EI_INIT;
+static int hf_nas_5gs_security_header_type;
+static int hf_nas_5gs_msg_auth_code;
+static int hf_nas_5gs_seq_no;
+static int hf_nas_5gs_mm_msg_type;
+static int hf_nas_5gs_sm_msg_type;
+static int hf_nas_5gs_updp_msg_type;
+static int hf_nas_5gs_proc_trans_id;
+static int hf_nas_5gs_spare_half_octet;
+static int hf_nas_5gs_spare_octet;
+static int hf_nas_5gs_pdu_session_id;
+static int hf_nas_5gs_msg_elems;
+static int hf_nas_5gs_mm_for;
+static int hf_nas_5gs_cmn_add_info;
+static int hf_nas_5gs_cmn_acc_type;
+static int hf_nas_5gs_cmn_dnn;
+static int hf_nas_5gs_cmn_service_level_aa_param_type;
+static int hf_nas_5gs_cmn_service_level_aa_param_len;
+static int hf_nas_5gs_cmn_service_level_aa_param_device_id;
+static int hf_nas_5gs_cmn_service_level_aa_param_addr_type;
+static int hf_nas_5gs_cmn_service_level_aa_param_addr_ipv4;
+static int hf_nas_5gs_cmn_service_level_aa_param_addr_ipv6;
+static int hf_nas_5gs_cmn_service_level_aa_param_addr_fqdn;
+static int hf_nas_5gs_cmn_service_level_aa_param_resp_c2ar;
+static int hf_nas_5gs_cmn_service_level_aa_param_resp_slar;
+static int hf_nas_5gs_cmn_service_level_aa_param_payload_type;
+static int hf_nas_5gs_cmn_service_level_aa_param_payload;
+static int hf_nas_5gs_cmn_service_level_aa_param_pending_ind_slapi;
+static int hf_nas_5gs_cmn_service_level_aa_param_service_status_ind_uas;
+static int hf_nas_5gs_cmn_service_level_aa_param_unknown;
+static int hf_nas_5gs_mm_sms_requested;
+static int hf_nas_5gs_mm_ng_ran_rcu;
+static int hf_nas_5gs_mm_5gs_pnb_ciot;
+static int hf_nas_5gs_mm_eps_pnb_ciot;
+static int hf_nas_5gs_mm_5gs_reg_type;
+static int hf_nas_5gs_mm_tsc;
+static int hf_nas_5gs_mm_nas_key_set_id;
+static int hf_nas_5gs_mm_tsc_h1;
+static int hf_nas_5gs_mm_nas_key_set_id_h1;
+static int hf_nas_5gs_mm_5gmm_cause;
+static int hf_nas_5gs_mm_pld_cont_type;
+static int hf_nas_5gs_mm_sst;
+static int hf_nas_5gs_mm_sd;
+static int hf_nas_5gs_mm_mapped_hplmn_sst;
+static int hf_nas_5gs_mm_mapped_hplmn_ssd;
+static int hf_nas_5gs_mm_switch_off;
+static int hf_nas_5gs_mm_re_reg_req;
+static int hf_nas_5gs_mm_acc_type;
+static int hf_nas_5gs_mm_raai_b0;
+static int hf_nas_5gs_mm_sprti_b1;
+static int hf_nas_5gs_mm_ma_pdu_session_info_value;
+static int hf_nas_5gs_mm_len_of_mapped_s_nssai;
+static int hf_nas_5gs_mm_conf_upd_ind_ack_b0;
+static int hf_nas_5gs_mm_conf_upd_ind_red_b1;
+static int hf_nas_5gs_mm_cag_info_entry_len;
+static int hf_nas_5gs_mm_cag_info_entry_cag_only;
+static int hf_nas_5gs_mm_cag_info_entry_lci;
+static int hf_nas_5gs_mm_cag_info_entry_caili;
+static int hf_nas_5gs_mm_cag_info_entry_cag_without_add_info_list_len;
+static int hf_nas_5gs_mm_cag_info_entry_cag_with_add_info_list_len;
+static int hf_nas_5gs_mm_cag_info_entry_cag_with_add_info_len;
+static int hf_nas_5gs_mm_cag_info_entry_cag_id;
+static int hf_nas_5gs_mm_cag_info_entry_svii;
+static int hf_nas_5gs_mm_cag_info_entry_tvii;
+static int hf_nas_5gs_mm_cag_info_entry_nb_time_periods;
+static int hf_nas_5gs_mm_cag_info_entry_time_period;
+static int hf_nas_5gs_mm_ciot_small_data_cont_data_type;
+static int hf_nas_5gs_mm_ciot_small_data_cont_ddx;
+static int hf_nas_5gs_mm_ciot_small_data_cont_pdu_session_id;
+static int hf_nas_5gs_mm_ciot_small_data_cont_add_info_len;
+static int hf_nas_5gs_mm_ciot_small_data_cont_add_info;
+static int hf_nas_5gs_mm_ciot_small_data_cont_data_contents;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_1;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_2;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_3;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_4;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_5;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_6;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_7;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_8;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_1;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_2;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_3;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_4;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_5;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_6;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_7;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_8;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_9;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_10;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_11;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_12;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_13;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_14;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_15;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_16;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_17;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_18;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_19;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_20;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_21;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_22;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_23;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_24;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_2_25;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_3_1;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_4_1;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_5_1;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_9;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_10;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_1;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_2;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_3;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_4;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_5;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_6;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_7;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_8;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_1;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_2;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_3;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_4;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_5;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_6;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_7;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_8;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_9;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_10;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_11;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_12;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_13;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_14;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_15;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_16;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_17;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_18;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_19;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_20;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_21;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_22;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_23;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_3_1;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_4_1;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_5_1;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_1;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_2;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_3;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_4;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_5;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_6;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_9;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_10;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_24;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_25;
+static int hf_nas_5gs_mm_ciph_key_data_ciphering_set_id;
+static int hf_nas_5gs_mm_ciph_key_data_ciphering_key;
+static int hf_nas_5gs_mm_ciph_key_data_c0_len;
+static int hf_nas_5gs_mm_ciph_key_data_c0;
+static int hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_len;
+static int hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_len;
+static int hf_nas_5gs_mm_ciph_key_data_validity_start_time;
+static int hf_nas_5gs_mm_ciph_key_data_validity_duration;
+static int hf_nas_5gs_mm_ciph_key_data_tais_list_len;
+static int hf_nas_5gs_mm_ctrl_plane_serv_type;
+static int hf_nas_5gs_mm_nas_sec_algo_enc;
+static int hf_nas_5gs_mm_nas_sec_algo_ip;
+static int hf_nas_5gs_mm_s1_mode_b0;
+static int hf_nas_5gs_mm_ho_attach_b1;
+static int hf_nas_5gs_mm_lpp_cap_b2;
+static int hf_nas_5gs_mm_restrict_ec_b3;
+static int hf_nas_5gs_mm_5g_cp_ciot_b4;
+static int hf_nas_5gs_mm_n3_data_b5;
+static int hf_nas_5gs_mm_5g_iphc_cp_ciot_b6;
+static int hf_nas_5gs_mm_sgc_b7;
+static int hf_nas_5gs_mm_5g_srvcc_b0;
+static int hf_nas_5gs_mm_5g_up_ciot_b1;
+static int hf_nas_5gs_mm_v2x_b2;
+static int hf_nas_5gs_mm_v2xcepc5_b3;
+static int hf_nas_5gs_mm_v2xcnpc5_b4;
+static int hf_nas_5gs_mm_5g_lcs_b5;
+static int hf_nas_5gs_mm_nssaa_b6;
+static int hf_nas_5gs_mm_racs_b7;
+static int hf_nas_5gs_mm_cag_b0;
+static int hf_nas_5gs_mm_wsusa_b1;
+static int hf_nas_5gs_mm_multiple_up_b2;
+static int hf_nas_5gs_mm_5g_ehc_cp_ciot_b3;
+static int hf_nas_5gs_mm_er_nssai_b4;
+static int hf_nas_5gs_mm_5g_prose_dd_b5;
+static int hf_nas_5gs_mm_5g_prose_dc_b6;
+static int hf_nas_5gs_mm_5g_prose_l2relay_b7;
+static int hf_nas_5gs_mm_5g_prose_l3relay_b0;
+static int hf_nas_5gs_mm_5g_prose_l2rmt_b1;
+static int hf_nas_5gs_mm_5g_prose_l3rmt_b2;
+static int hf_nas_5gs_mm_nr_pssi_b3;
+static int hf_nas_5gs_mm_ncr_b4;
+static int hf_nas_5gs_mm_piv_b5;
+static int hf_nas_5gs_mm_rpr_b6;
+static int hf_nas_5gs_mm_pr_b7;
+static int hf_nas_5gs_mm_nssrg_b0;
+static int hf_nas_5gs_mm_mint_b1;
+static int hf_nas_5gs_mm_event_notif_b2;
+static int hf_nas_5gs_mm_ssnpnsi_b3;
+static int hf_nas_5gs_mm_ex_cag_b4;
+static int hf_nas_5gs_mm_nsag_b5;
+static int hf_nas_5gs_mm_uas_b6;
+static int hf_nas_5gs_mm_mpsiu_b7;
+static int hf_nas_5gs_mm_rcmap_b0;
+static int hf_nas_5gs_mm_rcman_b1;
+static int hf_nas_5gs_mm_esi_b2;
+static int hf_nas_5gs_mm_eci_b3;
+static int hf_nas_5gs_mm_rantiming_b4;
+static int hf_nas_5gs_mm_ladn_ds_b5;
+static int hf_nas_5gs_mm_nsr_b6;
+static int hf_nas_5gs_mm_sbts_b7;
+static int hf_nas_5gs_mm_a2xepc5_b0;
+static int hf_nas_5gs_mm_a2xnpc5_b1;
+static int hf_nas_5gs_mm_un_per_b2;
+static int hf_nas_5gs_mm_sbns_b3;
+static int hf_nas_5gs_mm_rslps_b4;
+static int hf_nas_5gs_mm_5g_prose_l2u2u_relay_b5;
+static int hf_nas_5gs_mm_5g_prose_l3u2u_relay_b6;
+static int hf_nas_5gs_mm_5g_prose_l2end_b7;
+static int hf_nas_5gs_mm_5g_prose_l3end_b0;
+static int hf_nas_5gs_mm_rslp_b1;
+static int hf_nas_5gs_mm_pns_b2;
+static int hf_nas_5gs_mm_lcs_upp_b3;
+static int hf_nas_5gs_mm_supl_b4;
+static int hf_nas_5gs_mm_tempns_b5;
+static int hf_nas_5gs_mm_slvi_b6;
+static int hf_nas_5gs_mm_a2x_uu_b7;
+static int hf_nas_5gs_mm_mcsiu_b0;
+static int hf_nas_5gs_mm_nvl_satnr_b1;
+static int hf_nas_5gs_rslpl_b2;
+static int hf_nas_5gs_nsuc_b3;
+static int hf_nas_5gs_mm_type_id;
+static int hf_nas_5gs_mm_odd_even;
+static int hf_nas_5gs_mm_length;
+static int hf_nas_5gs_mm_pld_cont;
+static int hf_nas_5gs_mm_pld_cont_event_notif_ind_nb;
+static int hf_nas_5gs_mm_pld_cont_event_notif_ind_type;
+static int hf_nas_5gs_mm_pld_cont_event_notif_ind_len;
+static int hf_nas_5gs_mm_pld_cont_event_notif_ind_val;
+static int hf_nas_5gs_mm_pld_cont_nb_entries;
+static int hf_nas_5gs_mm_pld_cont_pld_cont_len;
+static int hf_nas_5gs_mm_pld_cont_nb_opt_ies;
+static int hf_nas_5gs_mm_pld_cont_pld_cont_type;
+static int hf_nas_5gs_mm_pld_cont_opt_ie_type;
+static int hf_nas_5gs_mm_pld_cont_opt_ie_len;
+static int hf_nas_5gs_mm_pld_cont_opt_ie_val;
+static int hf_nas_5gs_mm_req_type;
+static int hf_nas_5gs_mm_serv_type;
+static int hf_nas_5gs_mm_5g_ea0;
+static int hf_nas_5gs_mm_128_5g_ea1;
+static int hf_nas_5gs_mm_128_5g_ea2;
+static int hf_nas_5gs_mm_128_5g_ea3;
+static int hf_nas_5gs_mm_5g_ea4;
+static int hf_nas_5gs_mm_5g_ea5;
+static int hf_nas_5gs_mm_5g_ea6;
+static int hf_nas_5gs_mm_5g_ea7;
+static int hf_nas_5gs_mm_5g_ia0;
+static int hf_nas_5gs_mm_5g_128_ia1;
+static int hf_nas_5gs_mm_5g_128_ia2;
+static int hf_nas_5gs_mm_5g_128_ia3;
+static int hf_nas_5gs_mm_5g_ia4;
+static int hf_nas_5gs_mm_5g_ia5;
+static int hf_nas_5gs_mm_5g_ia6;
+static int hf_nas_5gs_mm_5g_ia7;
+static int hf_nas_5gs_mm_eea0;
+static int hf_nas_5gs_mm_128eea1;
+static int hf_nas_5gs_mm_128eea2;
+static int hf_nas_5gs_mm_eea3;
+static int hf_nas_5gs_mm_eea4;
+static int hf_nas_5gs_mm_eea5;
+static int hf_nas_5gs_mm_eea6;
+static int hf_nas_5gs_mm_eea7;
+static int hf_nas_5gs_mm_eia0;
+static int hf_nas_5gs_mm_128eia1;
+static int hf_nas_5gs_mm_128eia2;
+static int hf_nas_5gs_mm_eia3;
+static int hf_nas_5gs_mm_eia4;
+static int hf_nas_5gs_mm_eia5;
+static int hf_nas_5gs_mm_eia6;
+static int hf_nas_5gs_mm_eia7;
+static int hf_nas_5gs_mm_n1_mode_reg_b1;
+static int hf_nas_5gs_mm_s1_mode_reg_b0;
+
+static int hf_nas_5gs_mm_sal_al_t;
+static int hf_nas_5gs_mm_sal_t_li;
+static int hf_nas_5gs_mm_sal_num_e;
+
+static int hf_nas_5gs_pdu_ses_sts_psi_7_b7;
+static int hf_nas_5gs_pdu_ses_sts_psi_6_b6;
+static int hf_nas_5gs_pdu_ses_sts_psi_5_b5;
+static int hf_nas_5gs_pdu_ses_sts_psi_4_b4;
+static int hf_nas_5gs_pdu_ses_sts_psi_3_b3;
+static int hf_nas_5gs_pdu_ses_sts_psi_2_b2;
+static int hf_nas_5gs_pdu_ses_sts_psi_1_b1;
+static int hf_nas_5gs_pdu_ses_sts_psi_0_b0;
+
+static int hf_nas_5gs_pdu_ses_sts_psi_15_b7;
+static int hf_nas_5gs_pdu_ses_sts_psi_14_b6;
+static int hf_nas_5gs_pdu_ses_sts_psi_13_b5;
+static int hf_nas_5gs_pdu_ses_sts_psi_12_b4;
+static int hf_nas_5gs_pdu_ses_sts_psi_11_b3;
+static int hf_nas_5gs_pdu_ses_sts_psi_10_b2;
+static int hf_nas_5gs_pdu_ses_sts_psi_9_b1;
+static int hf_nas_5gs_pdu_ses_sts_psi_8_b0;
+
+static int hf_nas_5gs_pdu_ses_rect_res_psi_7_b7;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_6_b6;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_5_b5;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_4_b4;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_3_b3;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_2_b2;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_1_b1;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_0_b0;
+
+static int hf_nas_5gs_pdu_ses_rect_res_psi_15_b7;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_14_b6;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_13_b5;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_12_b4;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_11_b3;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_10_b2;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_9_b1;
+static int hf_nas_5gs_pdu_ses_rect_res_psi_8_b0;
+
+static int hf_nas_5gs_ul_data_sts_psi_7_b7;
+static int hf_nas_5gs_ul_data_sts_psi_6_b6;
+static int hf_nas_5gs_ul_data_sts_psi_5_b5;
+static int hf_nas_5gs_ul_data_sts_psi_4_b4;
+static int hf_nas_5gs_ul_data_sts_psi_3_b3;
+static int hf_nas_5gs_ul_data_sts_psi_2_b2;
+static int hf_nas_5gs_ul_data_sts_psi_1_b1;
+static int hf_nas_5gs_ul_data_sts_psi_0_b0;
+
+static int hf_nas_5gs_ul_data_sts_psi_15_b7;
+static int hf_nas_5gs_ul_data_sts_psi_14_b6;
+static int hf_nas_5gs_ul_data_sts_psi_13_b5;
+static int hf_nas_5gs_ul_data_sts_psi_12_b4;
+static int hf_nas_5gs_ul_data_sts_psi_11_b3;
+static int hf_nas_5gs_ul_data_sts_psi_10_b2;
+static int hf_nas_5gs_ul_data_sts_psi_9_b1;
+static int hf_nas_5gs_ul_data_sts_psi_8_b0;
+
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_7_b7;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_6_b6;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_5_b5;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_4_b4;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_3_b3;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_2_b2;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_1_b1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_0_b0;
+
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_15_b7;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_14_b6;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_13_b5;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_12_b4;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_11_b3;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_10_b2;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_9_b1;
+static int hf_nas_5gs_allow_pdu_ses_sts_psi_8_b0;
+
+static int hf_nas_5gs_sm_pdu_session_type;
+static int hf_nas_5gs_sm_sc_mode;
+static int hf_nas_5gs_sm_eplmnc;
+static int hf_nas_5gs_sm_ratc;
+static int hf_nas_5gs_sm_naps;
+static int hf_nas_5gs_sm_ept_s1;
+static int hf_nas_5gs_sm_catbo;
+static int hf_nas_5gs_sm_abo;
+static int hf_nas_5gs_sm_atsss_cont;
+static int hf_nas_5gs_sm_cpoi;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_p0104;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_p0103;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_p0102;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_p0006;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_p0004;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_p0003;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_p0002;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_max_cid;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_add_ip_hdr_compr_cxt_setup_params_type;
+static int hf_nas_5gs_sm_ip_hdr_comp_config_add_ip_hdr_compr_cxt_setup_params_cont;
+static int hf_nas_5gs_sm_ds_tt_eth_port_mac_addr;
+static int hf_nas_5gs_sm_ue_ds_tt_residence_time;
+static int hf_nas_5gs_sm_port_mgmt_info_cont;
+static int hf_nas_5gs_sm_eth_hdr_comp_config_cid_len;
+static int hf_nas_5gs_sm_pdu_session_pair_id;
+static int hf_nas_5gs_sm_pdu_session_rsn;
+static int hf_nas_5gs_sm_sel_sc_mode;
+static int hf_nas_5gs_sm_tpmic_b7;
+static int hf_nas_5gs_sm_atsss_st_b3_b6;
+static int hf_nas_5gs_sm_ept_s1_b2;
+static int hf_nas_5gs_sm_mh6_pdu_b1;
+static int hf_nas_5gs_sm_rqos_b0;
+static int hf_nas_5gs_sm_sdnaepc_b1;
+static int hf_nas_5gs_sm_apmqf_b0;
+static int hf_nas_5gs_sm_5gsm_cause;
+static int hf_nas_5gs_sm_apsi;
+static int hf_nas_5gs_sm_apsr;
+static int hf_nas_5gs_sm_int_prot_max_data_rate_ul;
+static int hf_nas_5gs_sm_int_prot_max_data_rate_dl;
+static int hf_nas_5gs_sm_si6lla;
+static int hf_nas_5gs_sm_pdu_ses_type;
+static int hf_nas_5gs_sm_pdu_addr_inf_ipv4;
+static int hf_nas_5gs_sm_pdu_addr_inf_ipv6;
+static int hf_nas_5gs_sm_smf_ipv6_lla;
+static int hf_nas_5gs_sm_qos_rule_id;
+static int hf_nas_5gs_sm_length;
+static int hf_nas_5gs_sm_rop;
+static int hf_nas_5gs_sm_dqr;
+static int hf_nas_5gs_sm_nof_pkt_filters;
+static int hf_nas_5gs_sm_pkt_flt_id;
+static int hf_nas_5gs_sm_pkt_flt_dir;
+static int hf_nas_5gs_sm_pf_len;
+static int hf_nas_5gs_sm_pf_type;
+static int hf_nas_5gs_sm_e;
+static int hf_nas_5gs_sm_nof_params;
+static int hf_nas_5gs_sm_param_id;
+static int hf_nas_5gs_sm_param_len;
+static int hf_nas_5gs_sm_qos_rule_precedence;
+static int hf_nas_5gs_sm_segregation;
+static int hf_nas_5gs_sm_param_cont;
+static int hf_nas_5gs_sm_5qi;
+static int hf_nas_5gs_sm_unit_for_gfbr_ul;
+static int hf_nas_5gs_sm_gfbr_ul;
+static int hf_nas_5gs_sm_unit_for_gfbr_dl;
+static int hf_nas_5gs_sm_gfbr_dl;
+static int hf_nas_5gs_sm_unit_for_mfbr_ul;
+static int hf_nas_5gs_sm_mfbr_ul;
+static int hf_nas_5gs_sm_unit_for_mfbr_dl;
+static int hf_nas_5gs_sm_mfbr_dl;
+static int hf_nas_5gs_sm_averaging_window;
+static int hf_nas_5gs_sm_eps_bearer_id;
+static int hf_nas_5gs_sm_qfi;
+static int hf_nas_5gs_sm_mapd_eps_b_cont_id;
+static int hf_nas_5gs_sm_mapd_eps_b_cont_opt_code;
+static int hf_nas_5gs_sm_qos_des_flow_opt_code;
+static int hf_nas_5gs_sm_mapd_eps_b_cont_E;
+static int hf_nas_5gs_sm_mapd_eps_b_cont_num_eps_parms;
+static int hf_nas_5gs_sm_mapd_eps_b_cont_E_mod;
+static int hf_nas_5gs_sm_mapd_eps_b_cont_param_id;
+
+static int hf_nas_5gs_sm_unit_for_session_ambr_dl;
+static int hf_nas_5gs_sm_session_ambr_dl;
+static int hf_nas_5gs_sm_unit_for_session_ambr_ul;
+static int hf_nas_5gs_sm_session_ambr_ul;
+static int hf_nas_5gs_sm_dm_spec_id;
+static int hf_nas_5gs_sm_all_ssc_mode_b0;
+static int hf_nas_5gs_sm_all_ssc_mode_b1;
+static int hf_nas_5gs_sm_all_ssc_mode_b2;
+static int hf_nas_5gs_addr_mask_ipv4;
+static int hf_nas_5gs_ipv6;
+static int hf_nas_5gs_ipv6_prefix_len;
+static int hf_nas_5gs_protocol_identifier_or_next_hd;
+static int hf_nas_5gs_mm_rinmr;
+static int hf_nas_5gs_mm_hdp;
+static int hf_nas_5gs_mm_cipher_key;
+static int hf_nas_5gs_mm_dcni;
+static int hf_nas_5gs_mm_nssci;
+static int hf_nas_5gs_mm_nssai_inc_mode;
+static int hf_nas_5gs_mm_ue_usage_setting;
+static int hf_nas_5gs_mm_5gs_drx_param;
+static int hf_nas_5gs_sup_andsp;
+static int hf_nas_5gs_nssui;
+
+static int ett_nas_5gs;
+static int ett_nas_5gs_mm_nssai;
+static int ett_nas_5gs_mm_pdu_ses_id;
+static int ett_nas_5gs_sm_qos_rules;
+static int ett_nas_5gs_sm_qos_params;
+static int ett_nas_5gs_plain;
+static int ett_nas_5gs_sec;
+static int ett_nas_5gs_mm_part_sal;
+static int ett_nas_5gs_mm_part_tal;
+static int ett_nas_5gs_sm_mapd_eps_b_cont;
+static int ett_nas_5gs_sm_mapd_eps_b_cont_params_list;
+static int ett_nas_5gs_enc;
+static int ett_nas_5gs_mm_ladn_indic;
+static int ett_nas_5gs_mm_sor;
+static int ett_nas_5gs_sm_pkt_filter_components;
+static int ett_nas_5gs_updp_ue_policy_section_mgm_lst;
+static int ett_nas_5gs_updp_ue_policy_section_mgm_sublst;
+static int ett_nas_5gs_ue_policies_ursp;
+static int ett_nas_5gs_ursp_traff_desc;
+static int ett_nas_5gs_usrp_r_sel_list;
+static int ett_nas_5gs_usrp_r_sel;
+static int ett_nas_5gs_ursp_r_sel_desc_cont;
+static int ett_nas_5gs_updp_upsi_list;
+static int ett_nas_5gs_mm_rej_nssai;
+static int ett_nas_5gs_mm_scheme_output;
+static int ett_nas_5gs_mm_pld_cont_pld_entry;
+static int ett_nas_5gs_mm_pld_cont_opt_ie;
+static int ett_nas_5gs_mm_cag_info_entry;
+static int ett_nas_5gs_ciot_small_data_cont_data_contents;
+static int ett_nas_5gs_user_data_cont;
+static int ett_nas_5gs_ciph_data_set;
+static int ett_nas_5gs_mm_mapped_nssai;
+static int ett_nas_5gs_mm_partial_extended_rejected_nssai_list;
+static int ett_nas_5gs_mm_ext_rej_nssai_back_off_timer;
+static int ett_nas_5gs_mm_ext_rej_nssai;
+static int ett_nas_5gs_mm_op_def_acc_cat_def;
+static int ett_nas_5gs_mm_op_def_acc_cat_criteria_component;
+static int ett_nas_5gs_mm_op_def_acc_cat_criteria;
+static int ett_nas_5gs_cmn_service_level_aa_cont_param;
+static int ett_nas_5gs_mm_pld_cont_event_notif_ind;
+static int ett_nas_5gs_mm_peips_assist_info;
+static int ett_nas_5gs_mm_nssrg_info;
+static int ett_nas_5gs_mm_plmns_list_disaster_cond;
+static int ett_nas_5gs_mm_reg_wait_range;
+static int ett_nas_5gs_mm_nsag_info;
+static int ett_nas_5gs_mm_snpn_list;
+static int ett_nas_5gs_mm_ext_ladn_info;
+static int ett_nas_5gs_mm_alt_nssai;
+static int ett_nas_5gs_mm_alt_nssai_replaced;
+static int ett_nas_5gs_mm_alt_nssai_alternative;
+static int ett_nas_5gs_mm_s_nssai_loc_valid_info;
+static int ett_nas_5gs_mm_s_nssai_time_valid_info;
+static int ett_nas_5gs_mm_on_demand_nssai;
+
+static int hf_nas_5gs_mm_abba;
+static int hf_nas_5gs_mm_supi_fmt;
+static int hf_nas_5gs_mm_routing_indicator;
+static int hf_nas_5gs_mm_prot_scheme_id;
+static int hf_nas_5gs_mm_pki;
+static int hf_nas_5gs_mm_suci_msin;
+static int hf_nas_5gs_mm_scheme_output;
+static int hf_nas_5gs_mm_scheme_output_ecc_public_key;
+static int hf_nas_5gs_mm_scheme_output_ciphertext;
+static int hf_nas_5gs_mm_scheme_output_mac_tag;
+static int hf_nas_5gs_mm_suci_nai;
+static int hf_nas_5gs_mm_imei;
+static int hf_nas_5gs_mm_imeisv;
+static int hf_nas_5gs_mm_mauri;
+static int hf_nas_5gs_mm_mac_addr;
+static int hf_nas_5gs_mm_eui_64;
+static int hf_nas_5gs_mm_reg_res_res;
+static int hf_nas_5gs_mm_reg_res_sms_allowed;
+static int hf_nas_5gs_mm_reg_res_nssaa_perf;
+static int hf_nas_5gs_mm_reg_res_emergency_reg;
+static int hf_nas_5gs_mm_reg_res_disaster_roaming_reg_res;
+static int hf_nas_5gs_amf_region_id;
+static int hf_nas_5gs_amf_set_id;
+static int hf_nas_5gs_amf_pointer;
+static int hf_nas_5gs_5g_tmsi;
+static int hf_nas_5gs_mm_op_def_access_cat_len;
+static int hf_nas_5gs_mm_op_def_access_cat_precedence;
+static int hf_nas_5gs_mm_op_def_access_cat_psac;
+static int hf_nas_5gs_mm_op_def_access_cat_number;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_length;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_type;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_dnn_count;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_dnn_len;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_os_id_os_app_id_count;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_os_id;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_os_app_id_len;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_os_app_id;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_s_nssai_count;
+static int hf_nas_5gs_mm_op_def_access_cat_criteria_s_nssai_len;
+static int hf_nas_5gs_mm_op_def_access_cat_standardized_number;
+static int hf_nas_5gs_mm_sms_indic_sai;
+
+static int hf_nas_5gs_nw_feat_sup_mpsi_b7;
+static int hf_nas_5gs_nw_feat_sup_ims_iwk_n26_b6;
+static int hf_nas_5gs_nw_feat_sup_ims_emf_b5b4;
+static int hf_nas_5gs_nw_feat_sup_ims_emc_b3b2;
+static int hf_nas_5gs_nw_feat_sup_ims_vops_3gpp;
+static int hf_nas_5gs_nw_feat_sup_ims_vops_n3gpp;
+static int hf_nas_5gs_nw_feat_sup_emcn3;
+static int hf_nas_5gs_nw_feat_sup_mcsi;
+static int hf_nas_5gs_nw_feat_sup_restrict_ec;
+static int hf_nas_5gs_nw_feat_sup_5g_cp_ciot;
+static int hf_nas_5gs_nw_feat_sup_n3_data;
+static int hf_nas_5gs_nw_feat_sup_5g_iphc_cp_ciot;
+static int hf_nas_5gs_nw_feat_sup_5g_ciot_up;
+static int hf_nas_5gs_nw_feat_sup_5g_lcs;
+static int hf_nas_5gs_nw_feat_sup_ats_ind;
+static int hf_nas_5gs_nw_feat_sup_5g_ehc_cp_ciot;
+static int hf_nas_5gs_nw_feat_sup_ncr;
+static int hf_nas_5gs_nw_feat_sup_piv;
+static int hf_nas_5gs_nw_feat_sup_rpr;
+static int hf_nas_5gs_nw_feat_sup_pr;
+static int hf_nas_5gs_nw_feat_sup_un_per;
+static int hf_nas_5gs_nw_feat_sup_naps;
+static int hf_nas_5gs_nw_feat_sup_lcs_upp;
+static int hf_nas_5gs_nw_feat_sup_supl;
+static int hf_nas_5gs_nw_feat_sup_rslp;
+
+static int hf_nas_5gs_tac;
+
+static int hf_nas_5gs_mm_tal_t_li;
+static int hf_nas_5gs_mm_tal_num_e;
+static int hf_nas_5gs_sm_mapd_eps_b_cont_eps_param_cont;
+
+static int hf_nas_5gs_sm_max_nb_sup_pkt_flt_nb;
+static int hf_nas_5gs_sm_max_nb_sup_pkt_flt_spare;
+
+static int hf_nas_5gs_kacf;
+static int hf_nas_5gs_ncc;
+
+static int hf_nas_5gs_sor_hdr0_ap;
+static int hf_nas_5gs_sor_hdr0_ack;
+static int hf_nas_5gs_sor_hdr0_list_type;
+static int hf_nas_5gs_sor_hdr0_list_ind;
+static int hf_nas_5gs_sor_hdr0_sor_data_type;
+static int hf_nas_5gs_sor_mssi;
+static int hf_nas_5gs_sor_mssnpnsi;
+static int hf_nas_5gs_sor_msssnpnsils;
+static int hf_nas_5gs_sor_mac_iue;
+static int hf_nas_5gs_sor_mac_iausf;
+static int hf_nas_5gs_counter_sor;
+static int hf_nas_5gs_sor_sec_pkt;
+static int hf_nas_5gs_sor_sssli;
+static int hf_nas_5gs_sor_sssi;
+static int hf_nas_5gs_sor_sscmi;
+static int hf_nas_5gs_sor_si;
+static int hf_nas_5gs_sor_plmn_id_act_len;
+static int hf_nas_5gs_sor_cmci_len;
+static int hf_nas_5gs_sor_cmci_payload;
+static int hf_nas_5gs_sor_snpn_si_len;
+static int hf_nas_5gs_sor_snpn_si_payload;
+static int hf_nas_5gs_sor_snpn_si_ls_len;
+static int hf_nas_5gs_sor_snpn_si_ls_payload;
+
+static int hf_nas_5gs_access_tech_o1_b7;
+static int hf_nas_5gs_access_tech_o1_b6;
+static int hf_nas_5gs_access_tech_o1_b5;
+static int hf_nas_5gs_access_tech_o1_b4;
+static int hf_nas_5gs_access_tech_o1_b3;
+static int hf_nas_5gs_access_tech_o2_b7;
+static int hf_nas_5gs_access_tech_o2_b6;
+static int hf_nas_5gs_access_tech_o2_b5;
+static int hf_nas_5gs_access_tech_o2_b4;
+static int hf_nas_5gs_access_tech_o2_b3;
+static int hf_nas_5gs_access_tech_o2_b2;
+static int hf_nas_5gs_single_port_type;
+static int hf_nas_5gs_port_range_type_low;
+static int hf_nas_5gs_port_range_type_high;
+static int hf_nas_5gs_sec_param_idx;
+static int hf_nas_5gs_tos_tc_val;
+static int hf_nas_5gs_tos_tc_mask;
+static int hf_nas_5gs_flow_label;
+static int hf_nas_5gs_mac_addr;
+static int hf_nas_5gs_vlan_tag_vid;
+static int hf_nas_5gs_vlan_tag_pcp;
+static int hf_nas_5gs_vlan_tag_dei;
+static int hf_nas_5gs_ethertype;
+static int hf_nas_5gs_mac_addr_low;
+static int hf_nas_5gs_mac_addr_high;
+static int hf_nas_5gs_updp_ue_pol_sect_sublst_len;
+static int hf_nas_5gs_updp_ue_pol_sect_subresult_len;
+static int hf_nas_5gs_updp_instr_len;
+static int hf_nas_5gs_updp_upsc;
+static int hf_nas_5gs_updp_failed_instruction_order;
+static int hf_nas_5gs_updp_policy_len;
+static int hf_nas_5gs_updp_ue_policy_part_type;
+static int hf_nas_5gs_updp_ue_policy_part_cont;
+static int hf_nas_5gs_ursp_rule_len;
+static int hf_nas_5gs_ursp_rule_prec;
+static int hf_nas_5gs_ursp_traff_desc_lst_len;
+static int hf_nas_5gs_ursp_traff_desc;
+static int hf_nas_5gs_ursp_r_sel_desc_lst_len;
+static int hf_nas_5gs_ursp_r_sel_desc_lst;
+static int hf_nas_5gs_ursp_traff_desc_ipv4;
+static int hf_nas_5gs_ursp_traff_desc_ipv4_mask;
+static int hf_nas_5gs_ursp_traff_desc_ipv6;
+static int hf_nas_5gs_ursp_traff_desc_ipv6_prefix_len;
+static int hf_nas_5gs_ursp_traff_desc_next_hdr;
+static int hf_nas_5gs_ursp_traff_desc_single_remote_port;
+static int hf_nas_5gs_ursp_traff_desc_remote_port_range_low;
+static int hf_nas_5gs_ursp_traff_desc_remote_port_range_high;
+static int hf_nas_5gs_ursp_traff_desc_sec_param_index;
+static int hf_nas_5gs_ursp_traff_desc_tos_tc;
+static int hf_nas_5gs_ursp_traff_desc_tos_tc_mask;
+static int hf_nas_5gs_ursp_traff_desc_flow_label;
+static int hf_nas_5gs_ursp_traff_desc_dest_mac_addr;
+static int hf_nas_5gs_ursp_traff_desc_ctag_vid;
+static int hf_nas_5gs_ursp_traff_desc_stag_vid;
+static int hf_nas_5gs_ursp_traff_desc_ctag_pcp;
+static int hf_nas_5gs_ursp_traff_desc_ctag_dei;
+static int hf_nas_5gs_ursp_traff_desc_stag_pcp;
+static int hf_nas_5gs_ursp_traff_desc_stag_dei;
+static int hf_nas_5gs_ursp_traff_desc_ethertype;
+static int hf_nas_5gs_ursp_traff_desc_conn_cap_len;
+static int hf_nas_5gs_ursp_traff_desc_conn_cap;
+static int hf_nas_5gs_ursp_traff_desc_dest_fqdn_len;
+static int hf_nas_5gs_ursp_traff_desc_dest_fqdn;
+static int hf_nas_5gs_ursp_traff_desc_dest_mac_addr_range_low;
+static int hf_nas_5gs_ursp_traff_desc_dest_mac_addr_range_high;
+static int hf_nas_5gs_ursp_traff_desc_len;
+static int hf_nas_5gs_ursp_r_sel_des_prec;
+static int hf_nas_5gs_ursp_r_sel_des_cont_len;
+static int hf_nas_5gs_ursp_ursp_r_sel_desc_comp_type;
+static int hf_nas_5gs_dnn_len;
+static int hf_nas_5gs_upsi_sublist_len;
+static int hf_nas_5gs_upsc;
+static int hf_nas_5gs_os_id;
+static int hf_nas_5gs_upds_cause;
+static int hf_nas_5gs_v2xuui;
+static int hf_nas_5gs_v2xpc5i;
+static int hf_nas_5gs_os_app_id_len;
+static int hf_nas_5gs_os_app_id;
+static int hf_nas_5gs_mm_len_of_rej_s_nssai;
+static int hf_nas_5gs_mm_rej_s_nssai_cause;
+static int hf_nas_5gs_mm_ue_radio_cap_id;
+static int hf_nas_5gs_mm_ue_radio_cap_id_del_req;
+static int hf_nas_5gs_mm_trunc_amf_set_id;
+static int hf_nas_5gs_mm_trunc_amf_pointer;
+static int hf_nas_5gs_mm_n5gcreg_b0;
+static int hf_nas_5gs_mm_nb_n1_drx_value;
+static int hf_nas_5gs_mm_scmr;
+static int hf_nas_5gs_mm_extended_rejected_nssai_number_of_element;
+static int hf_nas_5gs_mm_extended_rejected_nssai_type_of_list;
+static int hf_nas_5gs_mm_extended_rejected_nssai_spare;
+static int hf_nas_5gs_mm_extended_rejected_nssai_back_off_timer;
+static int hf_nas_5gs_mm_len_of_rejected_s_nssai;
+static int hf_nas_5gs_mm_rejected_s_nssai_cause_value;
+static int hf_nas_5gs_mm_paging_restriction_type;
+static int hf_nas_5gs_mm_paging_restriction_psi_7;
+static int hf_nas_5gs_mm_paging_restriction_psi_6;
+static int hf_nas_5gs_mm_paging_restriction_psi_5;
+static int hf_nas_5gs_mm_paging_restriction_psi_4;
+static int hf_nas_5gs_mm_paging_restriction_psi_3;
+static int hf_nas_5gs_mm_paging_restriction_psi_2;
+static int hf_nas_5gs_mm_paging_restriction_psi_1;
+static int hf_nas_5gs_mm_paging_restriction_psi_0;
+static int hf_nas_5gs_mm_paging_restriction_psi_15;
+static int hf_nas_5gs_mm_paging_restriction_psi_14;
+static int hf_nas_5gs_mm_paging_restriction_psi_13;
+static int hf_nas_5gs_mm_paging_restriction_psi_12;
+static int hf_nas_5gs_mm_paging_restriction_psi_11;
+static int hf_nas_5gs_mm_paging_restriction_psi_10;
+static int hf_nas_5gs_mm_paging_restriction_psi_9;
+static int hf_nas_5gs_mm_paging_restriction_psi_8;
+static int hf_nas_5gs_mm_nid_assign_mode;
+static int hf_nas_5gs_mm_nid_value;
+static int hf_nas_5gs_mm_peips_assist_info_type;
+static int hf_nas_5gs_mm_peips_assist_info_paging_subgroup_id;
+static int hf_nas_5gs_mm_peips_assist_info_ue_paging_probability_info;
+static int hf_nas_5gs_mm_add_req_res_prd;
+static int hf_nas_5gs_mm_nssrg_info_len;
+static int hf_nas_5gs_mm_nssrg_info_s_nssai_len;
+static int hf_nas_5gs_mm_nssrg_info_nssrg;
+static int hf_nas_5gs_mm_nsag_info_len;
+static int hf_nas_5gs_mm_nsag_id;
+static int hf_nas_5gs_mm_nsag_info_s_nssai_len;
+static int hf_nas_5gs_mm_nsag_prio;
+static int hf_nas_5gs_mm_nsag_tais_list_len;
+static int hf_nas_5gs_mm_prose_relay_trans_id;
+static int hf_nas_5gs_mm_relay_key_req_params_relay_service_code;
+static int hf_nas_5gs_mm_relay_key_req_params_nonce_1;
+static int hf_nas_5gs_mm_relay_key_req_params_uit;
+static int hf_nas_5gs_mm_relay_key_req_params_ue_id;
+static int hf_nas_5gs_mm_relay_key_resp_params_key_knr_prose;
+static int hf_nas_5gs_mm_relay_key_resp_params_nonce_2;
+static int hf_nas_5gs_mm_relay_key_resp_params_cp_pruk_id;
+static int hf_nas_5gs_mm_prio_ind_mcsi;
+static int hf_nas_5gs_mm_prio_ind_mpsi;
+static int hf_nas_5gs_mm_n3iwf_id_type;
+static int hf_nas_5gs_mm_n3iwf_id_ipv4;
+static int hf_nas_5gs_mm_n3iwf_id_ipv6;
+static int hf_nas_5gs_mm_n3iwf_id_fqdn;
+static int hf_nas_5gs_mm_tnan_info_ssid_ind;
+static int hf_nas_5gs_mm_tnan_info_tngf_id_ind;
+static int hf_nas_5gs_mm_tnan_info_tngf_id_len;
+static int hf_nas_5gs_mm_tnan_info_tngf_id;
+static int hf_nas_5gs_mm_tnan_info_ssid_len;
+static int hf_nas_5gs_mm_tnan_info_ssid;
+static int hf_nas_5gs_mm_ran_timing_sync_recreq;
+static int hf_nas_5gs_mm_n3gpp_acc_path_switch_ind_naps;
+static int hf_nas_5gs_mm_s_nssai_loc_valid_info_per_s_nssai_len;
+static int hf_nas_5gs_mm_s_nssai_loc_valid_info_per_s_nssai_nb_nr_cgi;
+static int hf_nas_5gs_mm_s_nssai_loc_valid_info_per_s_nssai_nr_cell_id;
+static int hf_nas_5gs_mm_s_nssai_time_valid_info_per_s_nssai_len;
+static int hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_len;
+static int hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_start_time;
+static int hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_stop_time;
+static int hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_recurrence_pattern;
+static int hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_recurrence_end_time;
+static int hf_nas_5gs_mm_n3gpp_path_switch_info_nsonr;
+static int hf_nas_5gs_mm_au3n_ind_aun3reg;
+static int hf_nas_5gs_mm_feat_auth_ind_mbsrai;
+static int hf_nas_5gs_mm_payload_cont_info_pru;
+static int hf_nas_5gs_mm_aun3_device_sec_key_askt;
+static int hf_nas_5gs_mm_aun3_device_sec_key_key_len;
+static int hf_nas_5gs_mm_aun3_device_sec_key_key;
+static int hf_nas_5gs_mm_on_demand_nssai_len;
+static int hf_nas_5gs_mm_on_demand_nssai_slice_dereg_inactiv_timer;
+static int hf_nas_5gs_mm_ext_5gmm_cause_sat_nr;
+static int hf_nas_5gs_ue_os_id;
+
+static expert_field ei_nas_5gs_extraneous_data;
+static expert_field ei_nas_5gs_unknown_pd;
+static expert_field ei_nas_5gs_mm_unknown_msg_type;
+static expert_field ei_nas_5gs_sm_unknown_msg_type;
+static expert_field ei_nas_5gs_updp_unknown_msg_type;
+static expert_field ei_nas_5gs_msg_not_dis;
+static expert_field ei_nas_5gs_ie_not_dis;
+static expert_field ei_nas_5gs_missing_mandatory_element;
+static expert_field ei_nas_5gs_dnn_too_long;
+static expert_field ei_nas_5gs_unknown_value;
+static expert_field ei_nas_5gs_num_pkt_flt;
+static expert_field ei_nas_5gs_not_diss;
#define NAS_5GS_PLAIN_NAS_MSG 0
#define NAS_5GS_INTEG_NAS_MSG 1
@@ -808,8 +906,6 @@ static expert_field ei_nas_5gs_not_diss = EI_INIT;
#define NAS_5GS_INTEG_NEW_NAS_MSG 3
#define NAS_5GS_INTEG_CIPH_NEW_NAS_MSG 4
-static void dissect_nas_5gs_updp(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, int offset);
-
static const value_string nas_5gs_security_header_type_vals[] = {
{ NAS_5GS_PLAIN_NAS_MSG, "Plain NAS message, not security protected"},
{ NAS_5GS_INTEG_NAS_MSG, "Integrity protected"},
@@ -849,8 +945,8 @@ static const value_string nas_5gs_epd_vals[] = {
};
struct nas5gs_private_data {
- guint8 sec_hdr_type;
- guint32 payload_container_type;
+ uint8_t sec_hdr_type;
+ uint32_t payload_container_type;
};
static struct nas5gs_private_data*
@@ -864,10 +960,10 @@ nas5gs_get_private_data(packet_info *pinfo)
return nas5gs_data;
}
-static guint32
-get_ext_ambr_unit(guint32 unit, const char **unit_str)
+static uint32_t
+get_ext_ambr_unit(uint32_t unit, const char **unit_str)
{
- guint32 mult;
+ uint32_t mult;
if (unit == 0) {
mult = 1;
@@ -876,19 +972,19 @@ get_ext_ambr_unit(guint32 unit, const char **unit_str)
}
if (unit <= 0x05) {
- mult = pow4(guint32, unit - 0x01);
+ mult = pow4(uint32_t, unit - 0x01);
*unit_str = "Kbps";
} else if (unit <= 0x0a) {
- mult = pow4(guint32, unit - 0x06);
+ mult = pow4(uint32_t, unit - 0x06);
*unit_str = "Mbps";
} else if (unit <= 0x0f) {
- mult = pow4(guint32, unit - 0x0b);
+ mult = pow4(uint32_t, unit - 0x0b);
*unit_str = "Gbps";
} else if (unit <= 0x14) {
- mult = pow4(guint32, unit - 0x10);
+ mult = pow4(uint32_t, unit - 0x10);
*unit_str = "Tbps";
} else if (unit <= 0x19) {
- mult = pow4(guint32, unit - 0x15);
+ mult = pow4(uint32_t, unit - 0x15);
*unit_str = "Pbps";
} else {
mult = 256;
@@ -904,12 +1000,12 @@ get_ext_ambr_unit(guint32 unit, const char **unit_str)
/*
* 9.11.3.1 5GMM capability
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_5gmm_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ uint32_t curr_offset;
static int * const flags1[] = {
&hf_nas_5gs_mm_sgc_b7,
@@ -972,14 +1068,50 @@ de_nas_5gs_mm_5gmm_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
};
static int * const flags6[] = {
+ &hf_nas_5gs_mm_sbts_b7,
+ &hf_nas_5gs_mm_nsr_b6,
+ &hf_nas_5gs_mm_ladn_ds_b5,
+ &hf_nas_5gs_mm_rantiming_b4,
+ &hf_nas_5gs_mm_eci_b3,
+ &hf_nas_5gs_mm_esi_b2,
+ &hf_nas_5gs_mm_rcman_b1,
+ &hf_nas_5gs_mm_rcmap_b0,
+ NULL
+ };
+
+ static int * const flags7[] = {
+ &hf_nas_5gs_mm_5g_prose_l2end_b7,
+ &hf_nas_5gs_mm_5g_prose_l3u2u_relay_b6,
+ &hf_nas_5gs_mm_5g_prose_l2u2u_relay_b5,
+ &hf_nas_5gs_mm_rslps_b4,
+ &hf_nas_5gs_mm_sbns_b3,
+ &hf_nas_5gs_mm_un_per_b2,
+ &hf_nas_5gs_mm_a2xnpc5_b1,
+ &hf_nas_5gs_mm_a2xepc5_b0,
+ NULL
+ };
+
+ static int * const flags8[] = {
+ &hf_nas_5gs_mm_a2x_uu_b7,
+ &hf_nas_5gs_mm_slvi_b6,
+ &hf_nas_5gs_mm_tempns_b5,
+ &hf_nas_5gs_mm_supl_b4,
+ &hf_nas_5gs_mm_lcs_upp_b3,
+ &hf_nas_5gs_mm_pns_b2,
+ &hf_nas_5gs_mm_rslp_b1,
+ &hf_nas_5gs_mm_5g_prose_l3end_b0,
+ NULL
+ };
+
+ static int * const flags9[] = {
&hf_nas_5gs_spare_b7,
&hf_nas_5gs_spare_b6,
&hf_nas_5gs_spare_b5,
&hf_nas_5gs_spare_b4,
- &hf_nas_5gs_spare_b3,
- &hf_nas_5gs_spare_b2,
- &hf_nas_5gs_mm_rcman_b1,
- &hf_nas_5gs_mm_rcmap_b0,
+ &hf_nas_5gs_nsuc_b3,
+ &hf_nas_5gs_rslpl_b2,
+ &hf_nas_5gs_mm_nvl_satnr_b1,
+ &hf_nas_5gs_mm_mcsiu_b0,
NULL
};
@@ -1018,6 +1150,24 @@ de_nas_5gs_mm_5gmm_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags6, ENC_BIG_ENDIAN);
curr_offset++;
+ if ((curr_offset - offset) >= len)
+ return (len);
+
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags7, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ if ((curr_offset - offset) >= len)
+ return (len);
+
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags8, ENC_BIG_ENDIAN);
+ curr_offset++;
+
+ if ((curr_offset - offset) >= len)
+ return (len);
+
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags9, ENC_BIG_ENDIAN);
+ curr_offset++;
+
EXTRANEOUS_DATA_CHECK(len, curr_offset - offset, pinfo, &ei_nas_5gs_extraneous_data);
return (curr_offset - offset);
@@ -1047,6 +1197,7 @@ static const value_string nas_5gs_mm_cause_vals[] = {
{ 0x1b, "N1 mode not allowed" },
{ 0x1c, "Restricted service area" },
{ 0x1f, "Redirection to EPC required" },
+ { 0x24, "IAB-node operation not authorized" },
{ 0x2b, "LADN not available" },
{ 0x3e, "No network slices available" },
{ 0x41, "Maximum number of PDU sessions reached" },
@@ -1062,10 +1213,13 @@ static const value_string nas_5gs_mm_cause_vals[] = {
{ 0x4e, "PLMN not allowed to operate at the present UE location" },
{ 0x4f, "UAS services not allowed" },
{ 0x50, "Disaster roaming for the determined PLMN with disaster condition not allowed" },
+ { 0x51, "Selected N3IWF is not compatible with the allowed NSSAI" },
+ { 0x52, "Selected TNGF is not compatible with the allowed NSSAI" },
{ 0x5a, "Payload was not forwarded" },
{ 0x5b, "DNN not supported or not subscribed in the slice" },
{ 0x5c, "Insufficient user-plane resources for the PDU session" },
{ 0x5d, "Onboarding services terminated" },
+ { 0x5e, "User plane positioning not authorized" },
{ 0x5f, "Semantically incorrect message" },
{ 0x60, "Invalid mandatory information" },
{ 0x61, "Message type non-existent or not implemented" },
@@ -1077,12 +1231,12 @@ static const value_string nas_5gs_mm_cause_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_5gmm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
- guint32 cause;
+ uint32_t cause;
proto_tree_add_item_ret_uint(tree, hf_nas_5gs_mm_5gmm_cause, tvb, offset, 1, ENC_BIG_ENDIAN, &cause);
@@ -1105,10 +1259,10 @@ static const value_string nas_5gs_mm_drx_vals[] = {
/* 9.11.3.2A 5GS DRX parameters*/
-static guint16
+static uint16_t
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_)
+ uint32_t offset, unsigned len _U_,
+ char *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);
@@ -1119,10 +1273,10 @@ de_nas_5gs_mm_5gs_drx_param(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
/*
* 9.11.3.3 5GS identity type
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_5gs_identity_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_mm_type_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1170,13 +1324,13 @@ static true_false_string nas_5gs_mauri_tfs = {
"No restrictions"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_5gs_mobile_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint8 oct, type_id, supi_fmt;
- guint32 scheme_id, fiveg_tmsi;
+ uint8_t oct, type_id, supi_fmt;
+ uint32_t scheme_id, fiveg_tmsi;
tvbuff_t * new_tvb;
const char *route_id_str;
proto_item* ti;
@@ -1215,7 +1369,7 @@ de_nas_5gs_mm_5gs_mobile_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
NULL
};
- oct = tvb_get_guint8(tvb, offset);
+ oct = tvb_get_uint8(tvb, offset);
type_id = oct & 0x07;
switch (type_id) {
@@ -1235,10 +1389,10 @@ de_nas_5gs_mm_5gs_mobile_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
* MNC digit 3 MCC digit 3
* MNC digit 2 MNC digit 1
*/
- offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, E212_NONE, TRUE);
+ offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, E212_NONE, true);
/* Routing indicator octet 8-9 */
new_tvb = tvb_new_subset_length(tvb, offset, 2);
- route_id_str = tvb_bcd_dig_to_str(pinfo->pool, new_tvb, 0, (tvb_get_guint8(new_tvb, 1) == 0xff) ? 1 : 2, NULL, FALSE);
+ route_id_str = tvb_bcd_dig_to_str(pinfo->pool, new_tvb, 0, (tvb_get_uint8(new_tvb, 1) == 0xff) ? 1 : 2, NULL, false);
proto_tree_add_string(tree, hf_nas_5gs_mm_routing_indicator, new_tvb, 0, -1, route_id_str);
offset += 2;
/* Protection scheme id octet 10 */
@@ -1250,11 +1404,11 @@ de_nas_5gs_mm_5gs_mobile_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* Scheme output octet 12-x */
if (scheme_id == 0) {
new_tvb = tvb_new_subset_length(tvb, offset, len - 8);
- proto_tree_add_item(tree, hf_nas_5gs_mm_suci_msin, new_tvb, 0, -1, ENC_BCD_DIGITS_0_9);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_suci_msin, new_tvb, 0, -1, ENC_BCD_DIGITS_0_9|ENC_LITTLE_ENDIAN);
} else {
proto_item *pi = proto_tree_add_item(tree, hf_nas_5gs_mm_scheme_output, tvb, offset, len - 8, ENC_NA);
if ((scheme_id == 1 && len >= 49) || (scheme_id == 2 && len >= 50)) {
- guint32 public_key_len;
+ uint32_t public_key_len;
proto_tree *subtree = proto_item_add_subtree(pi, ett_nas_5gs_mm_scheme_output);
if (scheme_id == 1) {
public_key_len = 32;
@@ -1283,7 +1437,7 @@ de_nas_5gs_mm_5gs_mobile_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
* MNC digit 3 MCC digit 3
* MNC digit 2 MNC digit 1
*/
- offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, E212_GUAMI, TRUE);
+ offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, E212_GUAMI, true);
/* AMF Region ID octet 7 */
proto_tree_add_item(tree, hf_nas_5gs_amf_region_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
@@ -1300,7 +1454,7 @@ de_nas_5gs_mm_5gs_mobile_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
case 3:
/* IMEI */
proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags_odd_even_tid, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_nas_5gs_mm_imei, tvb, offset, len, ENC_BCD_DIGITS_0_9 | ENC_BCD_SKIP_FIRST);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_imei, tvb, offset, len, ENC_BCD_DIGITS_0_9 | ENC_LITTLE_ENDIAN | ENC_BCD_SKIP_FIRST);
break;
case 4:
/*5G-S-TMSI*/
@@ -1320,7 +1474,7 @@ de_nas_5gs_mm_5gs_mobile_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* IMEISV */
proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags_odd_even_tid, ENC_BIG_ENDIAN);
/* XXXX Do we need the odd/even bit?*/
- proto_tree_add_item(tree, hf_nas_5gs_mm_imeisv, tvb, offset, len, ENC_BCD_DIGITS_0_9 | ENC_BCD_SKIP_FIRST);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_imeisv, tvb, offset, len, ENC_BCD_DIGITS_0_9 | ENC_LITTLE_ENDIAN | ENC_BCD_SKIP_FIRST);
break;
case 6:
/* MAC address */
@@ -1382,12 +1536,12 @@ static const value_string nas_5gs_nw_feat_sup_restrict_ec_values[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_5gs_nw_feat_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
static int * const flags_oct3[] = {
&hf_nas_5gs_nw_feat_sup_mpsi_b7,
@@ -1411,7 +1565,7 @@ de_nas_5gs_mm_5gs_nw_feat_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
};
static int * const flags_oct5[] = {
- &hf_nas_5gs_spare_b7,
+ &hf_nas_5gs_nw_feat_sup_un_per,
&hf_nas_5gs_nw_feat_sup_pr,
&hf_nas_5gs_nw_feat_sup_rpr,
&hf_nas_5gs_nw_feat_sup_piv,
@@ -1422,6 +1576,18 @@ de_nas_5gs_mm_5gs_nw_feat_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
NULL
};
+ static int * const flags_oct6[] = {
+ &hf_nas_5gs_spare_b7,
+ &hf_nas_5gs_spare_b6,
+ &hf_nas_5gs_spare_b5,
+ &hf_nas_5gs_spare_b4,
+ &hf_nas_5gs_nw_feat_sup_rslp,
+ &hf_nas_5gs_nw_feat_sup_supl,
+ &hf_nas_5gs_nw_feat_sup_lcs_upp,
+ &hf_nas_5gs_nw_feat_sup_naps,
+ NULL
+ };
+
/* MPSI IWK N26 EMF EMC IMS VoPS octet 3*/
proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags_oct3, ENC_BIG_ENDIAN);
curr_offset++;
@@ -1438,10 +1604,18 @@ de_nas_5gs_mm_5gs_nw_feat_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
return len;
}
- /* spare PR RPR PIV NCR 5G-EHC-CP CIoT ATS-IND 5G-LCS octet 5*/
+ /* UN-PER PR RPR PIV NCR 5G-EHC-CP CIoT ATS-IND 5G-LCS octet 5*/
proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags_oct5, ENC_BIG_ENDIAN);
curr_offset++;
+ if (len == 3) {
+ return len;
+ }
+
+ /* spare spare spare spare RSLP SUPL LCS-UPP NAPS octet 6*/
+ proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags_oct6, ENC_BIG_ENDIAN);
+ curr_offset++;
+
EXTRANEOUS_DATA_CHECK(len, curr_offset - offset, pinfo, &ei_nas_5gs_extraneous_data);
return len;
@@ -1473,10 +1647,10 @@ static true_false_string tfs_nas_5gs_mm_reg_res_disaster_roaming_reg_res = {
"No additional information"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_5gs_reg_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int* const flags[] = {
@@ -1520,10 +1694,10 @@ static int * const nas_5gs_registration_type_flags[] = {
NULL
};
-static guint16
+static uint16_t
de_nas_5gs_mm_5gs_reg_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
@@ -1537,24 +1711,24 @@ de_nas_5gs_mm_5gs_reg_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
/*
* 9.11.3.8 5GS tracking area identity
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_5gs_ta_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
/* MCC digit 2 MCC digit 1 Octet 2*/
/* MNC digit 3 MCC digit 3 Octet 3*/
/* MNC digit 2 MNC digit 1 Octet 4*/
/* TAC Octet 5 - 7 */
- guint32 curr_offset;
+ uint32_t curr_offset;
curr_offset = offset;
- curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, curr_offset, E212_5GSTAI, TRUE);
+ curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, curr_offset, E212_5GSTAI, true);
proto_tree_add_item(tree, hf_nas_5gs_tac, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
curr_offset += 3;
- return(curr_offset - offset);
+ return curr_offset - offset;
}
/*
@@ -1586,10 +1760,10 @@ static const value_string nas_5gs_mm_tal_num_e[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_5gs_ta_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree *sub_tree;
proto_item *item;
@@ -1600,10 +1774,10 @@ de_nas_5gs_mm_5gs_ta_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
NULL
};
- guint num_par_tal = 1;
- guint32 curr_offset = offset;
- guint32 start_offset;
- guint8 tal_head, tal_t_li, tal_num_e;
+ unsigned num_par_tal = 1;
+ uint32_t curr_offset = offset;
+ uint32_t start_offset;
+ uint8_t tal_head, tal_t_li, tal_num_e;
/*Partial tracking area list*/
while ((curr_offset - offset) < len) {
@@ -1611,7 +1785,7 @@ de_nas_5gs_mm_5gs_ta_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
sub_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_part_tal, &item, "Partial tracking area list %u", num_par_tal);
/*Head of Partial tracking area list*/
/* Type of list Number of elements octet 1 */
- tal_head = tvb_get_guint8(tvb, curr_offset);
+ tal_head = tvb_get_uint8(tvb, curr_offset);
tal_t_li = (tal_head & 0x60) >> 5;
tal_num_e = (tal_head & 0x1f) + 1;
proto_tree_add_bitmask_list(sub_tree, tvb, curr_offset, 1, flags, ENC_BIG_ENDIAN);
@@ -1621,7 +1795,7 @@ de_nas_5gs_mm_5gs_ta_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
/*octet 2 MCC digit2 MCC digit1*/
/*octet 3 MNC digit3 MCC digit3*/
/*octet 4 MNC digit2 MNC digit1*/
- dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, true);
curr_offset += 3;
while (tal_num_e > 0) {
proto_tree_add_item(sub_tree, hf_nas_5gs_tac, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
@@ -1633,7 +1807,7 @@ de_nas_5gs_mm_5gs_ta_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
/*octet 2 MCC digit2 MCC digit1*/
/*octet 3 MNC digit3 MCC digit3*/
/*octet 4 MNC digit2 MNC digit1*/
- dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, true);
curr_offset += 3;
/*octet 5 TAC 1*/
@@ -1645,7 +1819,7 @@ de_nas_5gs_mm_5gs_ta_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
/*octet 2 MCC digit2 MCC digit1*/
/*octet 3 MNC digit3 MCC digit3*/
/*octet 4 MNC digit2 MNC digit1*/
- dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, true);
curr_offset += 3;
/*octet 5 TAC 1*/
@@ -1656,7 +1830,7 @@ de_nas_5gs_mm_5gs_ta_id_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
}
break;
case 3:
- dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, true);
curr_offset += 3;
break;
default:
@@ -1691,10 +1865,10 @@ static const value_string nas_5gs_mm_eps_pnb_ciot_values[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
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_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -1715,10 +1889,10 @@ de_nas_5gs_mm_update_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
/*
* 9.11.3.10 ABBA
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_abba(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_mm_abba, tvb, offset, len, ENC_NA);
@@ -1732,10 +1906,10 @@ de_nas_5gs_mm_abba(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/*
* 9.11.3.12 Additional 5G security information
*/
-static guint16
+static uint16_t
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_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -1757,10 +1931,10 @@ de_nas_5gs_mm_add_5g_sec_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
/*
* 9.11.3.12A Additional information requested
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_add_inf_req(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len _U_,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -1787,10 +1961,10 @@ static true_false_string tfs_nas_5gs_allow_pdu_ses_sts_psi = {
"user-plane resources of corresponding PDU session is not allowed to be re-established over 3GPP access"
};
-static guint16
+static uint16_t
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_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
int curr_offset;
@@ -1855,10 +2029,10 @@ de_nas_5gs_mm_allow_pdu_ses_sts(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
/*
* 9.11.3.18 Configuration update indication
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_conf_upd_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
@@ -1869,7 +2043,6 @@ de_nas_5gs_mm_conf_upd_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
NULL
};
-
proto_tree_add_bitmask_list(tree, tvb, offset, 1, flags, ENC_BIG_ENDIAN);
return 1;
@@ -1883,15 +2056,16 @@ static true_false_string tfs_5gs_mm_cag_info_entry_cag_only = {
"the UE is allowed to access 5GS via non-CAG cells"
};
-static guint16
+static uint16_t
dissect_nas_5gs_mm_cag_information_list(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len, gboolean is_ext)
+ uint32_t offset, unsigned len, bool is_ext)
{
proto_tree *sub_tree;
proto_item *item;
- guint num_entry = 1;
- guint32 curr_offset = offset;
- guint32 start_offset, entry_len;
+ unsigned num_entry = 1;
+ uint32_t curr_offset = offset;
+ uint32_t start_offset, entry_len;
+ bool caili, lci;
while ((curr_offset - offset) < len) {
start_offset = curr_offset;
@@ -1899,16 +2073,69 @@ dissect_nas_5gs_mm_cag_information_list(tvbuff_t* tvb, proto_tree* tree, packet_
&item, "%sCAG information entry %u",
is_ext ? "Extended " : "", num_entry);
proto_tree_add_item_ret_uint(sub_tree, hf_nas_5gs_mm_cag_info_entry_len, tvb, curr_offset, is_ext ? 2 : 1, ENC_BIG_ENDIAN, &entry_len);
- curr_offset++;
- dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, TRUE);
+ curr_offset += is_ext ? 2 : 1;
+ dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, true);
curr_offset += 3;
- proto_tree_add_bits_item(sub_tree, hf_nas_5gs_spare_bits, tvb, (curr_offset << 3), 7, ENC_BIG_ENDIAN);
+ if (is_ext) {
+ proto_tree_add_bits_item(sub_tree, hf_nas_5gs_spare_bits, tvb, (curr_offset << 3), 5, ENC_BIG_ENDIAN);
+ proto_tree_add_item_ret_boolean(sub_tree, hf_nas_5gs_mm_cag_info_entry_caili, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &caili);
+ proto_tree_add_item_ret_boolean(sub_tree, hf_nas_5gs_mm_cag_info_entry_lci, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &lci);
+ } else {
+ proto_tree_add_bits_item(sub_tree, hf_nas_5gs_spare_bits, tvb, (curr_offset << 3), 7, ENC_BIG_ENDIAN);
+ caili = false;
+ lci = false;
+ }
proto_tree_add_item(sub_tree, hf_nas_5gs_mm_cag_info_entry_cag_only, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
+ if (lci) {
+ proto_tree_add_item_ret_uint(sub_tree, hf_nas_5gs_mm_cag_info_entry_cag_without_add_info_list_len, tvb, curr_offset, 2, ENC_BIG_ENDIAN, &entry_len);
+ curr_offset += 2;
+ }
while ((curr_offset - start_offset) < entry_len) {
proto_tree_add_item(sub_tree, hf_nas_5gs_mm_cag_info_entry_cag_id, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
curr_offset += 4;
}
+ if (caili) {
+ uint32_t caili_start_offset = curr_offset;
+ unsigned num_entry2 = 1;
+
+ proto_tree_add_item_ret_uint(sub_tree, hf_nas_5gs_mm_cag_info_entry_cag_with_add_info_list_len, tvb, curr_offset, 2, ENC_BIG_ENDIAN, &entry_len);
+ curr_offset += 2;
+ while ((curr_offset - caili_start_offset) < entry_len) {
+ proto_tree *sub_tree2;
+ proto_item *item2;
+ bool tvii;
+ uint32_t start_offset2 = curr_offset;
+
+ sub_tree2 = proto_tree_add_subtree_format(sub_tree, tvb, curr_offset, -1, ett_nas_5gs_mm_cag_info_entry,
+ &item2, "CAG-ID with additional information entry %u", num_entry2);
+ proto_tree_add_item(sub_tree2, hf_nas_5gs_mm_cag_info_entry_cag_with_add_info_len, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ proto_tree_add_item(sub_tree2, hf_nas_5gs_mm_cag_info_entry_cag_id, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset += 4;
+ proto_tree_add_bits_item(sub_tree2, hf_nas_5gs_spare_bits, tvb, (curr_offset << 3), 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(sub_tree2, hf_nas_5gs_mm_cag_info_entry_svii, tvb, (curr_offset << 3) + 1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(sub_tree2, hf_nas_5gs_mm_cag_info_entry_svii, tvb, (curr_offset << 3) + 2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(sub_tree2, hf_nas_5gs_mm_cag_info_entry_svii, tvb, (curr_offset << 3) + 3, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(sub_tree2, hf_nas_5gs_mm_cag_info_entry_svii, tvb, (curr_offset << 3) + 4, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(sub_tree2, hf_nas_5gs_mm_cag_info_entry_svii, tvb, (curr_offset << 3) + 5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(sub_tree2, hf_nas_5gs_mm_cag_info_entry_svii, tvb, (curr_offset << 3) + 6, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item_ret_boolean(sub_tree2, hf_nas_5gs_mm_cag_info_entry_tvii, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &tvii);
+ curr_offset++;
+ if (tvii) {
+ uint32_t time_periods, i;
+
+ proto_tree_add_item_ret_uint(sub_tree2, hf_nas_5gs_mm_cag_info_entry_nb_time_periods, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &time_periods);
+ curr_offset++;
+ for (i = 0; i < time_periods; i++) {
+ proto_tree_add_item(sub_tree2, hf_nas_5gs_mm_cag_info_entry_time_period, tvb, curr_offset, 16, ENC_NA);
+ curr_offset += 16;
+ }
+ }
+ proto_item_set_len(item2, curr_offset - start_offset2);
+ num_entry2++;
+ }
+ }
proto_item_set_len(item, curr_offset - start_offset);
num_entry++;
}
@@ -1916,12 +2143,12 @@ dissect_nas_5gs_mm_cag_information_list(tvbuff_t* tvb, proto_tree* tree, packet_
return len;
}
-static guint16
+static uint16_t
de_nas_5gs_mm_cag_information_list(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- return dissect_nas_5gs_mm_cag_information_list(tvb, tree, pinfo, offset, len, FALSE);
+ return dissect_nas_5gs_mm_cag_information_list(tvb, tree, pinfo, offset, len, false);
}
/*
@@ -1929,7 +2156,7 @@ de_nas_5gs_mm_cag_information_list(tvbuff_t* tvb, proto_tree* tree, packet_info*
*/
static void
nas_5gs_decode_user_data_cont(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len, int hfindex)
+ uint32_t offset, unsigned len, int hfindex)
{
proto_item *item;
@@ -1940,7 +2167,7 @@ nas_5gs_decode_user_data_cont(tvbuff_t* tvb, proto_tree* tree, packet_info* pinf
user_data_cont_tvb = tvb_new_subset_length(tvb, offset, len);
if (g_nas_5gs_decode_user_data_container_as == DECODE_USER_DATA_AS_IP) {
- guint8 first_byte = tvb_get_guint8(user_data_cont_tvb, 0);
+ uint8_t first_byte = tvb_get_uint8(user_data_cont_tvb, 0);
if (first_byte >= 0x45 && first_byte <= 0x4f && len > 20)
handle = ipv4_handle;
else if ((first_byte & 0xf0) == 0x60 && len > 40)
@@ -1984,13 +2211,13 @@ static const value_string nas_5gs_mm_ciot_small_data_cont_ddx_values[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_ciot_small_data_cont(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
- guint32 data_type, add_info_len;
+ uint32_t curr_offset = offset;
+ uint32_t data_type, add_info_len;
proto_tree *sub_tree;
proto_item *item;
@@ -2046,13 +2273,13 @@ de_nas_5gs_mm_ciot_small_data_cont(tvbuff_t* tvb, proto_tree* tree, packet_info*
* 9.11.3.18C Ciphering key data
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_ciphering_key_data(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 saved_offset, curr_offset = offset, c0_len, pos_sib_len, tai_len, i = 1;
- guint8 oct;
+ uint32_t saved_offset, curr_offset = offset, c0_len, pos_sib_len, tai_len, i = 1;
+ uint8_t oct;
struct tm tm;
nstime_t tv;
proto_item *pi;
@@ -2108,8 +2335,8 @@ de_nas_5gs_mm_ciphering_key_data(tvbuff_t* tvb, proto_tree* tree, packet_info* p
&hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_3_1,
&hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_4_1,
&hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_5_1,
- &hf_nas_5gs_spare_b3,
- &hf_nas_5gs_spare_b2,
+ &hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_9,
+ &hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_10,
&hf_nas_5gs_spare_b1,
&hf_nas_5gs_spare_b0,
NULL
@@ -2164,6 +2391,17 @@ de_nas_5gs_mm_ciphering_key_data(tvbuff_t* tvb, proto_tree* tree, packet_info* p
&hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_1,
&hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_2,
&hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_3,
+ &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_4,
+ &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_5,
+ &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_6,
+ NULL
+ };
+ static int * const nr_flags6[] = {
+ &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_9,
+ &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_10,
+ &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_24,
+ &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_25,
+ &hf_nas_5gs_spare_b3,
&hf_nas_5gs_spare_b2,
&hf_nas_5gs_spare_b1,
&hf_nas_5gs_spare_b0,
@@ -2212,26 +2450,28 @@ de_nas_5gs_mm_ciphering_key_data(tvbuff_t* tvb, proto_tree* tree, packet_info* p
proto_tree_add_bitmask_list(sub_tree, tvb, curr_offset + 3, 1, nr_flags4, ENC_NA);
if (pos_sib_len >= 5)
proto_tree_add_bitmask_list(sub_tree, tvb, curr_offset + 4, 1, nr_flags5, ENC_NA);
+ if (pos_sib_len >= 6)
+ proto_tree_add_bitmask_list(sub_tree, tvb, curr_offset + 5, 1, nr_flags6, ENC_NA);
curr_offset += pos_sib_len;
}
tm.tm_wday = 0;
tm.tm_yday = 0;
tm.tm_isdst = -1;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_uint8(tvb, curr_offset);
tm.tm_year = (oct & 0x0f)*10 + ((oct & 0xf0) >> 4) + 100;
- oct = tvb_get_guint8(tvb, curr_offset+1);
+ oct = tvb_get_uint8(tvb, curr_offset+1);
tm.tm_mon = (oct & 0x0f)*10 + ((oct & 0xf0) >> 4) - 1;
- oct = tvb_get_guint8(tvb, curr_offset+2);
+ oct = tvb_get_uint8(tvb, curr_offset+2);
tm.tm_mday = (oct & 0x0f)*10 + ((oct & 0xf0) >> 4);
- oct = tvb_get_guint8(tvb, curr_offset+3);
+ oct = tvb_get_uint8(tvb, curr_offset+3);
tm.tm_hour = (oct & 0x0f)*10 + ((oct & 0xf0) >> 4);
- oct = tvb_get_guint8(tvb, curr_offset+4);
+ oct = tvb_get_uint8(tvb, curr_offset+4);
tm.tm_min = (oct & 0x0f)*10 + ((oct & 0xf0) >> 4);
tm.tm_sec = 0;
tv.secs = mktime(&tm);
tv.nsecs = 0;
proto_tree_add_time_format_value(sub_tree, hf_nas_5gs_mm_ciph_key_data_validity_start_time, tvb, curr_offset, 5, &tv,
- "%s", abs_time_to_str(pinfo->pool, &tv, ABSOLUTE_TIME_LOCAL, FALSE));
+ "%s", abs_time_to_str(pinfo->pool, &tv, ABSOLUTE_TIME_LOCAL, false));
curr_offset += 5;
proto_tree_add_item(sub_tree, hf_nas_5gs_mm_ciph_key_data_validity_duration, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
curr_offset += 2;
@@ -2258,10 +2498,10 @@ static const value_string nas_5gs_mm_ctrl_plane_serv_type_values[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_ctrl_plane_service_type(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -2299,10 +2539,10 @@ static const value_string nas_5gs_mm_acc_type_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_de_reg_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
/* Switch off Re-registration required Access type */
proto_tree_add_item(tree, hf_nas_5gs_mm_switch_off, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2323,10 +2563,10 @@ de_nas_5gs_mm_de_reg_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
/*
* 9.11.3.24 EPS NAS message container
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_eps_nas_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
/* an EPS NAS message as specified in 3GPP TS 24.301 */
if (nas_eps_handle) {
@@ -2364,16 +2604,16 @@ de_nas_5gs_mm_eps_nas_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
* 9.11.3.29 LADN indication
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_ladn_indic(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree *sub_tree;
proto_item *item;
int i = 1;
- guint32 length;
- guint32 curr_offset;
+ uint32_t length;
+ uint32_t curr_offset;
curr_offset = offset;
@@ -2396,16 +2636,16 @@ de_nas_5gs_mm_ladn_indic(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
* 9.11.3.30 LADN information
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_ladn_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree *sub_tree;
proto_item *item;
int i = 1;
- guint32 length;
- guint32 curr_offset;
+ uint32_t length;
+ uint32_t curr_offset;
curr_offset = offset;
@@ -2444,10 +2684,10 @@ static const true_false_string tfs_nas_5gs_raai = {
"all PLMN registration area not allocated"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_mico_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -2471,10 +2711,10 @@ static const value_string nas_5gs_mm_ma_pdu_session_info_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_ma_pdu_ses_inf(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_mm_ma_pdu_session_info_value, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2492,22 +2732,22 @@ static const value_string nas_5gs_mm_sst_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_mapped_nssai(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree* sub_tree;
proto_item* item;
- guint num_items = 1;
- guint32 curr_offset = offset;
- guint32 start_offset, nssai_len;
+ unsigned num_items = 1;
+ uint32_t curr_offset = offset;
+ uint32_t start_offset, nssai_len;
/* Rejected NSSAI */
while ((curr_offset - offset) < len) {
start_offset = curr_offset;
sub_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_mapped_nssai,
- &item, "Mapped S-NSSAI content %u", num_items);
+ &item, "Mapped S-NSSAI content %u", num_items++);
proto_tree_add_item_ret_uint(sub_tree, hf_nas_5gs_mm_len_of_mapped_s_nssai, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &nssai_len);
curr_offset++;
@@ -2536,10 +2776,10 @@ static const true_false_string nas_5gs_mm_tsc_tfs = {
"Native security context (for KSIAMF)"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_nas_key_set_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_mm_tsc,
@@ -2554,10 +2794,10 @@ de_nas_5gs_mm_nas_key_set_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
}
/* High nibble version (LEFT_NIBBLE) */
-static guint16
+static uint16_t
de_nas_5gs_mm_nas_key_set_id_h1(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len _U_,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags[] = {
&hf_nas_5gs_mm_tsc_h1,
@@ -2575,10 +2815,10 @@ de_nas_5gs_mm_nas_key_set_id_h1(tvbuff_t* tvb, proto_tree* tree, packet_info* pi
/*
* 9.11.3.33 NAS message container
*/
-static guint16
+static uint16_t
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_)
+ uint32_t offset, unsigned len,
+ char *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 header */
@@ -2621,10 +2861,10 @@ static const value_string nas_5gs_mm_type_of_enc_algo_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_nas_sec_algo(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
@@ -2654,10 +2894,10 @@ static const true_false_string nas_5gs_mm_dcni_tfs = {
"Requested NSSAI not created from default configured NSSAI"
};
-static guint16
+static uint16_t
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_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -2675,16 +2915,16 @@ de_nas_5gs_mm_nw_slicing_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
/*
* 9.11.3.37 NSSAI
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_nssai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree *sub_tree;
proto_item *item;
int i = 1;
- guint32 length;
- guint32 curr_offset;
+ uint32_t length;
+ uint32_t curr_offset;
curr_offset = offset;
@@ -2714,10 +2954,10 @@ static const value_string nas_5gs_mm_nssai_inc_mode_vals[] = {
{ 0x03, "D" },
{ 0, NULL } };
-static guint16
+static uint16_t
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_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -2736,13 +2976,13 @@ de_nas_5gs_mm_nssai_inc_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
*/
static void
-nas_5gs_mm_access_cat_number(gchar *s, guint32 val)
+nas_5gs_mm_access_cat_number(char *s, uint32_t val)
{
snprintf(s, ITEM_LABEL_LENGTH, "%u (%u)", 32+val, val);
}
static void
-nas_5gs_mm_access_standardized_cat_number(gchar *s, guint32 val)
+nas_5gs_mm_access_standardized_cat_number(char *s, uint32_t val)
{
if (val <= 7)
snprintf(s, ITEM_LABEL_LENGTH, "%u", val);
@@ -2757,17 +2997,17 @@ static const value_string nas_5gs_mm_op_def_access_cat_criteria_type_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_op_def_acc_cat_def(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree *sub_tree, *sub_tree2, *sub_tree3;
proto_item *item, *item2, *item3;
- guint32 i = 1, j, k;
- guint32 length, criteria_length, criteria_type, criteria_count;
- guint32 curr_offset, saved_offset, saved_offset2, saved_offset3, criteria_offset;
- gboolean psac;
+ uint32_t i = 1, j, k;
+ uint32_t length, criteria_length, criteria_type, criteria_count;
+ uint32_t curr_offset, saved_offset, saved_offset2, saved_offset3, criteria_offset;
+ bool psac;
curr_offset = offset;
@@ -2811,7 +3051,7 @@ de_nas_5gs_mm_op_def_acc_cat_def(tvbuff_t *tvb, proto_tree *tree, packet_info *p
tvb, curr_offset, 1, ENC_BIG_ENDIAN, &criteria_count);
curr_offset++;
for (k = 1; k <= criteria_count; k++) {
- guint32 dnn_len;
+ uint32_t dnn_len;
saved_offset3 = curr_offset;
sub_tree3 = proto_tree_add_subtree_format(sub_tree2, tvb, curr_offset, -1,
ett_nas_5gs_mm_op_def_acc_cat_criteria, &item3, "DNN %u", k);
@@ -2828,7 +3068,7 @@ de_nas_5gs_mm_op_def_acc_cat_def(tvbuff_t *tvb, proto_tree *tree, packet_info *p
tvb, curr_offset, 1, ENC_BIG_ENDIAN, &criteria_count);
curr_offset++;
for (k = 1; k <= criteria_count; k++) {
- guint32 os_app_id_len;
+ uint32_t os_app_id_len;
saved_offset3 = curr_offset;
sub_tree3 = proto_tree_add_subtree_format(sub_tree2, tvb, curr_offset, -1, ett_nas_5gs_mm_op_def_acc_cat_criteria,
&item3, "OS Id + Os App Id %u", k);
@@ -2849,7 +3089,7 @@ de_nas_5gs_mm_op_def_acc_cat_def(tvbuff_t *tvb, proto_tree *tree, packet_info *p
tvb, curr_offset, 1, ENC_BIG_ENDIAN, &criteria_count);
curr_offset++;
for (k = 1; k <= criteria_count; k++) {
- guint32 s_nssai_len;
+ uint32_t s_nssai_len;
saved_offset3 = curr_offset;
sub_tree3 = proto_tree_add_subtree_format(sub_tree2, tvb, curr_offset, -1,
ett_nas_5gs_mm_op_def_acc_cat_criteria, &item3, "S-NSSAI %u", k);
@@ -2902,11 +3142,11 @@ static const value_string nas_5gs_mm_pld_cont_opt_ie_type_vals[] = {
/*
* 9.11.3.39 Payload container
*/
-static guint16
+static uint16_t
// NOLINTNEXTLINE(misc-no-recursion)
de_nas_5gs_mm_pld_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
struct nas5gs_private_data *nas5gs_data = nas5gs_get_private_data(pinfo);
@@ -2930,7 +3170,7 @@ de_nas_5gs_mm_pld_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
}
break;
case 5: /* UE policy container */
- dissect_nas_5gs_updp(tvb_new_subset_length(tvb, offset, len), pinfo, tree, 0);
+ dissect_nas_5gs_updp(tvb_new_subset_length(tvb, offset, len), pinfo, tree);
break;
case 8: /* CIoT user data container */
nas_5gs_decode_user_data_cont(tvb, tree, pinfo, offset, len, hf_nas_5gs_mm_pld_cont);
@@ -2940,8 +3180,8 @@ de_nas_5gs_mm_pld_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
break;
case 10: /* event notification */
{
- guint32 curr_offset, events_count, event_len;
- guint i;
+ uint32_t curr_offset, events_count, event_len;
+ unsigned i;
curr_offset = offset;
proto_tree_add_item_ret_uint(tree, hf_nas_5gs_mm_pld_cont_event_notif_ind_nb, tvb, curr_offset, 1, ENC_NA, &events_count);
@@ -2965,9 +3205,9 @@ de_nas_5gs_mm_pld_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
break;
case 15: /* multiple payloads */
{
- guint32 curr_offset, entry_offset, payloads_count, payload_len, opt_ies_count, payload_type;
- guint32 opt_ie_type, opt_ie_len, type_backup;
- guint i, j;
+ uint32_t curr_offset, entry_offset, payloads_count, payload_len, opt_ies_count, payload_type;
+ uint32_t opt_ie_type, opt_ie_len, type_backup;
+ unsigned i, j;
curr_offset = offset;
proto_tree_add_item_ret_uint(tree, hf_nas_5gs_mm_pld_cont_nb_entries, tvb, curr_offset, 1, ENC_NA, &payloads_count);
@@ -3059,13 +3299,15 @@ static const value_string nas_5gs_mm_pld_cont_type_vals[] = {
{ 0x08, "CIoT user data container" },
{ 0x09, "Service-level-AA container" },
{ 0x0a, "Event notification" },
+ { 0x0b, "UPP-CMI container" },
+ { 0x0c, "SLPP message container" },
{ 0x0f, "Multiple payloads" },
{ 0, NULL } };
-static guint16
+static uint16_t
de_nas_5gs_mm_pld_cont_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
struct nas5gs_private_data *nas5gs_data = nas5gs_get_private_data(pinfo);
@@ -3077,10 +3319,10 @@ de_nas_5gs_mm_pld_cont_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/*
* 9.11.3.41 PDU session identity 2
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_pdu_ses_id_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_pdu_session_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3097,10 +3339,10 @@ static true_false_string tfs_nas_5gs_pdu_ses_rect_res_psi = {
"0"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_pdu_ses_react_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
int curr_offset;
@@ -3144,12 +3386,12 @@ 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
+static uint16_t
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_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
/*Partial service area list*/
while ((curr_offset - offset) < len) {
@@ -3171,10 +3413,10 @@ static true_false_string tfs_nas_5gs_pdu_ses_sts_psi = {
"PDU SESSION INACTIVE"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_pdu_ses_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
int curr_offset;
@@ -3230,21 +3472,21 @@ static const value_string nas_5gs_mm_rej_s_nssai_cause_vals[] = {
{ 0x02, "S-NSSAI not available due to the failed or revoked network slice-specific authentication and authorization" },
{ 0, NULL } };
-static guint16
+static uint16_t
de_nas_5gs_mm_rej_nssai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree* sub_tree;
proto_item* item;
- guint num_items = 1;
- guint32 curr_offset = offset;
- guint32 start_offset, nssai_len;
+ unsigned num_items = 1;
+ uint32_t curr_offset = offset;
+ uint32_t start_offset, nssai_len;
/* Rejected NSSAI */
while ((curr_offset - offset) < len) {
start_offset = curr_offset;
- sub_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_rej_nssai, &item, "Rejected S-NSSAI %u", num_items);
+ sub_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_rej_nssai, &item, "Rejected S-NSSAI %u", num_items++);
/* Length of rejected S-NSSAI Cause value */
proto_tree_add_item_ret_uint(sub_tree, hf_nas_5gs_mm_len_of_rej_s_nssai, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &nssai_len);
@@ -3282,10 +3524,10 @@ static const value_string nas_5gs_mm_req_type_vals[] = {
{ 0x07, "Reserved" },
{ 0, NULL } };
-static guint16
+static uint16_t
de_nas_5gs_mm_req_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_mm_req_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3340,10 +3582,10 @@ static const value_string nas_5gs_mm_sal_num_e_vals[] = {
-static guint16
+static uint16_t
de_nas_5gs_mm_sal(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree *sub_tree;
proto_item *item;
@@ -3355,10 +3597,10 @@ de_nas_5gs_mm_sal(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
NULL
};
- guint num_par_sal = 1;
- guint32 curr_offset = offset;
- guint32 start_offset;
- guint8 sal_head, sal_t_li, sal_num_e;
+ unsigned num_par_sal = 1;
+ uint32_t curr_offset = offset;
+ uint32_t start_offset;
+ uint8_t sal_head, sal_t_li, sal_num_e;
/*Partial service area list*/
while ((curr_offset - offset) < len) {
@@ -3366,7 +3608,7 @@ de_nas_5gs_mm_sal(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
sub_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_part_sal, &item, "Partial service area list %u", num_par_sal);
/*Head of Partial service area list*/
/* Allowed type Type of list Number of elements octet 1 */
- sal_head = tvb_get_guint8(tvb, curr_offset);
+ sal_head = tvb_get_uint8(tvb, curr_offset);
sal_t_li = (sal_head & 0x60) >> 5;
sal_num_e = (sal_head & 0x1f) + 1;
proto_tree_add_bitmask_list(sub_tree, tvb, curr_offset, 1, flags_sal, ENC_BIG_ENDIAN);
@@ -3376,7 +3618,7 @@ de_nas_5gs_mm_sal(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/*octet 2 MCC digit2 MCC digit1*/
/*octet 3 MNC digit3 MCC digit3*/
/*octet 4 MNC digit2 MNC digit1*/
- dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, true);
curr_offset += 3;
while (sal_num_e > 0) {
proto_tree_add_item(sub_tree, hf_nas_5gs_tac, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
@@ -3388,7 +3630,7 @@ de_nas_5gs_mm_sal(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/*octet 2 MCC digit2 MCC digit1*/
/*octet 3 MNC digit3 MCC digit3*/
/*octet 4 MNC digit2 MNC digit1*/
- dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, true);
curr_offset += 3;
/*octet 5 TAC 1*/
@@ -3400,7 +3642,7 @@ de_nas_5gs_mm_sal(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/*octet 2 MCC digit2 MCC digit1*/
/*octet 3 MNC digit3 MCC digit3*/
/*octet 4 MNC digit2 MNC digit1*/
- dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, true);
curr_offset += 3;
/*octet 5 TAC 1*/
@@ -3411,7 +3653,7 @@ de_nas_5gs_mm_sal(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
}
break;
case 3:
- dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_5GSTAI, true);
curr_offset += 3;
break;
default:
@@ -3446,10 +3688,10 @@ static const value_string nas_5gs_mm_serv_type_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_serv_type(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_mm_serv_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3460,10 +3702,10 @@ de_nas_5gs_mm_serv_type(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
/*
* 9.11.3.50A SMS indication
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_sms_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
@@ -3502,10 +3744,10 @@ static true_false_string tfs_nas_5gs_sor_sssi = {
"subscribed SNPN or HPLMN indication that 'no change of the SOR-SNPN-SI stored in the UE is needed and thus no SOR-SNPN-SI is provided'"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_sor_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
/* Layout differs depending on SOR data type*/
static int * const flags_dt0[] = {
@@ -3525,9 +3767,9 @@ de_nas_5gs_mm_sor_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
&hf_nas_5gs_spare_b6,
&hf_nas_5gs_spare_b5,
&hf_nas_5gs_spare_b4,
- &hf_nas_5gs_spare_b3,
+ &hf_nas_5gs_sor_msssnpnsils,
&hf_nas_5gs_sor_mssnpnsi,
- &hf_nas_5gs_sor_hdr0_mssi,
+ &hf_nas_5gs_sor_mssi,
&hf_nas_5gs_sor_hdr0_sor_data_type,
NULL
};
@@ -3558,11 +3800,11 @@ de_nas_5gs_mm_sor_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
proto_tree *sub_tree;
- guint8 oct, data_type, list_type, ap;
- guint32 curr_offset = offset;
+ uint8_t oct, data_type, list_type, ap;
+ uint32_t curr_offset = offset;
int i = 1;
- oct = tvb_get_guint8(tvb, offset);
+ oct = tvb_get_uint8(tvb, offset);
data_type = oct & 0x01;
if (data_type == 0) {
/* SOR header octet 4*/
@@ -3581,10 +3823,11 @@ de_nas_5gs_mm_sor_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
proto_tree_add_item(tree, hf_nas_5gs_sor_sec_pkt, tvb, curr_offset, len - 19, ENC_NA);
curr_offset = curr_offset + (len - 19);
} else if (ap == 1) {
- guint32 plmn_id_act_len, cont_len;
- guint64 oct_o_flags;
+ uint32_t plmn_id_act_len, cont_len;
+ uint64_t oct_o_flags;
static int * const flags_oct_o[] = {
+ &hf_nas_5gs_sor_sssli,
&hf_nas_5gs_sor_sssi,
&hf_nas_5gs_sor_sscmi,
&hf_nas_5gs_sor_si,
@@ -3595,7 +3838,7 @@ de_nas_5gs_mm_sor_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
curr_offset++;
while ((curr_offset - offset) < plmn_id_act_len) {
sub_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 5, ett_nas_5gs_mm_sor, NULL, "List item %u", i);
- curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, TRUE);
+ curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, true);
curr_offset += 3;
proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags_access_tech_1, ENC_BIG_ENDIAN);
curr_offset++;
@@ -3617,6 +3860,12 @@ de_nas_5gs_mm_sor_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
proto_tree_add_item(tree, hf_nas_5gs_sor_snpn_si_payload, tvb, curr_offset, len, ENC_NA);
curr_offset += len;
}
+ if (oct_o_flags & 0x08) {
+ proto_tree_add_item_ret_uint(tree, hf_nas_5gs_sor_snpn_si_ls_len, tvb, curr_offset, 2, ENC_BIG_ENDIAN, &cont_len);
+ curr_offset += 2;
+ proto_tree_add_item(tree, hf_nas_5gs_sor_snpn_si_ls_payload, tvb, curr_offset, len, ENC_NA);
+ curr_offset += len;
+ }
} else {
/* PLMN ID and access technology list octet 23*-102* */
while ((curr_offset - offset) < len) {
@@ -3630,7 +3879,7 @@ de_nas_5gs_mm_sor_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
* - according to TS 24.008 [9].
*/
/* PLMN ID 1 octet 23*- 25* */
- curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, TRUE);
+ curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, true);
/* access technology identifier 1 octet 26*- 27* */
proto_tree_add_bitmask_list(tree, tvb, curr_offset, 1, flags_access_tech_1, ENC_BIG_ENDIAN);
curr_offset++;
@@ -3668,10 +3917,10 @@ de_nas_5gs_mm_sor_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
/*
* 9.11.3.53A UE parameters update transparent container
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_ue_par_upd_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
@@ -3683,12 +3932,12 @@ de_nas_5gs_mm_ue_par_upd_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_inf
* 9.11.3.54 UE security capability
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_ue_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ uint32_t curr_offset;
static int * const oct3_flags[] = {
&hf_nas_5gs_mm_5g_ea0,
@@ -3772,10 +4021,10 @@ static true_false_string tfs_nas_5gs_mm_ue_usage_setting = {
"Voice centric"
};
-static guint16
+static uint16_t
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_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -3806,10 +4055,10 @@ static true_false_string tfs_nas_5gs_mm_s1_mod = {
-static guint16
+static uint16_t
de_nas_5gs_mm_ue_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -3838,10 +4087,10 @@ static true_false_string tfs_nas_5gs_ul_data_sts_psi = {
"no uplink data are pending"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_ul_data_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
int curr_offset;
@@ -3904,16 +4153,16 @@ de_nas_5gs_mm_ul_data_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
* an odd number of digits, bits 8 to 5 of the last octet (octet n) shall be coded as "1111".
*/
-guint16
+uint16_t
de_nas_5gs_mm_ue_radio_cap_id(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
int curr_offset;
curr_offset = offset;
- proto_tree_add_item(tree, hf_nas_5gs_mm_ue_radio_cap_id, tvb, curr_offset, len, ENC_BCD_DIGITS_0_9);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_ue_radio_cap_id, tvb, curr_offset, len, ENC_BCD_DIGITS_0_9|ENC_LITTLE_ENDIAN);
return len;
}
@@ -3927,10 +4176,10 @@ static const value_string nas_5gs_mm_ue_radio_cap_id_del_req_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_ue_radio_cap_id_del_ind(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -3972,10 +4221,10 @@ static const value_string nas_5gs_mm_amf_trunc_pointer_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_truncated_5g_s_tmsi_conf(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_mm_trunc_amf_set_id, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_nas_5gs_mm_trunc_amf_pointer, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -3991,10 +4240,10 @@ de_nas_5gs_mm_truncated_5g_s_tmsi_conf(tvbuff_t* tvb, proto_tree* tree, packet_i
/*
* 9.11.3.72 N5GC indication
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_n5gc_indication(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len _U_,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -4024,10 +4273,10 @@ static const value_string nas_5gs_mm_nb_n1_drx_params_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_nb_n1_mode_drx_pars(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len _U_,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_nas_5gs_mm_nb_n1_drx_value, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -4043,10 +4292,10 @@ static true_false_string tfs_nas_5gs_mm_scmr = {
"no additional information"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_additional_conf_ind(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len _U_,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -4064,42 +4313,62 @@ de_nas_5gs_mm_additional_conf_ind(tvbuff_t* tvb, proto_tree* tree, packet_info*
/*
* 9.11.3.75 Extended rejected NSSAI
*/
+static const value_string nas_5gs_mm_extended_rejected_s_nssai_type_of_list_vals[] = {
+ { 0x00, "list of S-NSSAIs without any associated back-off timer value" },
+ { 0x01, "list of S-NSSAIs with one associated back-off timer value that applies to all S-NSSAIs in the list" },
+ { 0, NULL }
+};
+
+static const value_string nas_5gs_mm_extended_rejected_s_nssai_number_of_element_vals[] = {
+ { 0x00, "1 element" },
+ { 0x01, "2 elements" },
+ { 0x02, "3 elements" },
+ { 0x03, "4 elements" },
+ { 0x04, "5 elements" },
+ { 0x05, "6 elements" },
+ { 0x06, "7 elements" },
+ { 0x07, "8 elements" },
+ { 0, NULL }
+};
+
static const value_string nas_5gs_mm_extended_rej_s_nssai_cause_vals[] = {
{ 0x00, "S-NSSAI not available in the current PLMN or SNPN" },
{ 0x01, "S-NSSAI not available in the current registration area" },
{ 0x02, "S-NSSAI not available due to the failed or revoked network slice-specific authentication and authorization" },
{ 0x03, "S-NSSAI not available due to maximum number of UEs reached" },
- { 0, NULL } };
+ { 0, NULL }
+};
-static guint16
+static uint16_t
de_nas_5gs_mm_extended_rejected_nssai(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree* sub_partial_tree;
proto_tree* sub_rejected_tree;
proto_item* item;
int i;
- guint num_partial_items = 1;
- guint32 curr_offset = offset;
- guint32 type_of_list, number_of_element, nssai_len;
+ unsigned num_partial_items = 1;
+ uint32_t curr_offset = offset;
+ uint32_t type_of_list, number_of_element, nssai_len;
/* Rejected NSSAI */
while ((curr_offset - offset) < len) {
sub_partial_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_partial_extended_rejected_nssai_list,
&item, "Partial extended rejected NSSAI list %u", num_partial_items);
- proto_tree_add_item(sub_partial_tree, hf_nas_5gs_mm_extended_rejected_s_nssai_spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item_ret_uint(sub_partial_tree, hf_nas_5gs_mm_extended_rejected_s_nssai_type_of_list, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &type_of_list);
- proto_tree_add_item_ret_uint(sub_partial_tree, hf_nas_5gs_mm_extended_rejected_s_nssai_number_of_element, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &number_of_element);
+ proto_tree_add_item(sub_partial_tree, hf_nas_5gs_mm_extended_rejected_nssai_spare, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item_ret_uint(sub_partial_tree, hf_nas_5gs_mm_extended_rejected_nssai_type_of_list, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &type_of_list);
+ proto_tree_add_item_ret_uint(sub_partial_tree, hf_nas_5gs_mm_extended_rejected_nssai_number_of_element, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &number_of_element);
curr_offset++;
if (type_of_list > 0) {
- proto_tree_add_item(sub_partial_tree, hf_nas_5gs_mm_extended_rejected_s_nssai_back_off_timer, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ item = proto_tree_add_item(sub_partial_tree, hf_nas_5gs_mm_extended_rejected_nssai_back_off_timer, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ de_gc_timer3(tvb, proto_item_add_subtree(item, ett_nas_5gs_mm_ext_rej_nssai_back_off_timer), pinfo, curr_offset, 1, NULL, 0);
curr_offset++;
}
- for (i = 0; i < (int)number_of_element; i++)
+ for (i = 0; i < ((int)number_of_element + 1); i++)
{
sub_rejected_tree = proto_tree_add_subtree_format(sub_partial_tree, tvb, curr_offset, -1, ett_nas_5gs_mm_ext_rej_nssai,
&item, "Rejected S-NSSAI %u", i+1);
@@ -4154,12 +4423,12 @@ static const value_string nas_5gs_mm_paging_restriction_type_vals[] = {
};
-static guint16
+static uint16_t
de_nas_5gs_mm_paging_restriction(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint64 type;
+ uint64_t type;
static int * const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -4213,15 +4482,15 @@ static const dgt_set_t dgt0_f_bcd = {
}
};
-static guint16
+static uint16_t
de_nas_5gs_mm_nid(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- gchar *nid;
+ char *nid;
proto_tree_add_item(tree, hf_nas_5gs_mm_nid_assign_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
- nid = tvb_get_bcd_string(pinfo->pool, tvb, offset, 6, &dgt0_f_bcd, TRUE, TRUE, FALSE);
+ nid = tvb_get_bcd_string(pinfo->pool, tvb, offset, 6, &dgt0_f_bcd, true, true, false);
proto_tree_add_string(tree, hf_nas_5gs_mm_nid_value, tvb, offset, 6, nid);
return len;
@@ -4257,18 +4526,18 @@ static const value_string nas_5gs_mm_peips_assist_info_ue_paging_probability_inf
static value_string_ext nas_5gs_mm_peips_assist_info_ue_paging_probability_info_vals_ext =
VALUE_STRING_EXT_INIT(nas_5gs_mm_peips_assist_info_ue_paging_probability_info_vals);
-static guint16
+static uint16_t
de_nas_5gs_mm_peips_assist_info(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset, i;
+ uint32_t curr_offset, i;
curr_offset = offset;
i = 1;
while ((curr_offset - offset) < len) {
proto_tree *subtree;
- guint32 type;
+ uint32_t type;
subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 1, ett_nas_5gs_mm_peips_assist_info, NULL, "PEIPS assistance information type %u", i);
proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_peips_assist_info_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &type);
@@ -4293,10 +4562,10 @@ static const value_string nas_5gs_mm_add_req_res_prd_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_mm_5gs_add_req_res(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -4317,17 +4586,17 @@ de_nas_5gs_mm_5gs_add_req_res(tvbuff_t* tvb, proto_tree* tree, packet_info* pinf
/*
* 9.11.3.82 NSSRG information
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_nssrg_info(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset, i = 1;
+ uint32_t curr_offset = offset, i = 1;
while ((curr_offset - offset) < len) {
proto_item *item;
proto_tree *subtree;
- guint32 start_offset, nssrg_len, s_nssai_len;
+ uint32_t start_offset, nssrg_len, s_nssai_len;
subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_nssrg_info, &item, "NSSRG values for S-NSSAI %u", i);
proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_nssrg_info_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &nssrg_len);
@@ -4350,18 +4619,18 @@ de_nas_5gs_mm_nssrg_info(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
/*
* 9.11.3.83 List of PLMNs to be used in disaster condition
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_plmns_list_disaster_cond(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset, i = 1;
+ uint32_t curr_offset = offset, i = 1;
while ((curr_offset - offset) < len) {
proto_tree *subtree;
- subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 3, ett_nas_5gs_mm_plmns_list_disaster_cond, NULL, "PLMN ID %u", i);
- dissect_e212_mcc_mnc(tvb, pinfo, subtree, curr_offset, E212_5GSTAI, TRUE);
+ subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 3, ett_nas_5gs_mm_plmns_list_disaster_cond, NULL, "PLMN ID %u", i++);
+ dissect_e212_mcc_mnc(tvb, pinfo, subtree, curr_offset, E212_5GSTAI, true);
curr_offset += 3;
}
@@ -4371,10 +4640,10 @@ de_nas_5gs_mm_plmns_list_disaster_cond(tvbuff_t* tvb, proto_tree* tree, packet_i
/*
* 9.11.3.84 Registration wait range
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_reg_wait_range(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree *subtree;
@@ -4389,12 +4658,12 @@ de_nas_5gs_mm_reg_wait_range(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo
/*
* 9.11.3.85 PLMN identity
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_plmn_id(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, E212_5GSTAI, TRUE);
+ dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, E212_5GSTAI, true);
return len;
}
@@ -4402,28 +4671,28 @@ de_nas_5gs_mm_plmn_id(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
/*
* 9.11.3.86 Extended CAG information list
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_ext_cag_info_list(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_ , int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_ , int string_len _U_)
{
- return dissect_nas_5gs_mm_cag_information_list(tvb, tree, pinfo, offset, len, TRUE);
+ return dissect_nas_5gs_mm_cag_information_list(tvb, tree, pinfo, offset, len, true);
}
/*
* 9.11.3.87 NSAG information
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_nsag_info(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pinfo _U_,
- guint32 offset _U_, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset _U_, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset, i = 1;
+ uint32_t curr_offset = offset, i = 1;
while ((curr_offset - offset) < len) {
proto_item *item;
proto_tree *subtree;
- guint32 nsag_len, s_nssai_len, tai_len;
+ uint32_t nsag_len, s_nssai_len, tai_len;
subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_nsag_info, &item, "NSSRG values for S-NSSAI %u", i);
proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_nsag_info_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &nsag_len);
@@ -4450,7 +4719,7 @@ de_nas_5gs_mm_nsag_info(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pi
* 9.11.3.88 ProSe relay transaction identity
*/
static void
-nas_5gs_mm_prose_relay_trans_id(gchar *s, guint32 val)
+nas_5gs_mm_prose_relay_trans_id(char *s, uint32_t val)
{
if (val == 0)
snprintf(s, ITEM_LABEL_LENGTH, "No ProSe relay transaction identity assigned (0)");
@@ -4460,10 +4729,10 @@ nas_5gs_mm_prose_relay_trans_id(gchar *s, guint32 val)
snprintf(s, ITEM_LABEL_LENGTH, "%u", val);
}
-static guint16
+static uint16_t
de_nas_5gs_mm_prose_relay_trans_id(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len _U_,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_mm_prose_relay_trans_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -4473,26 +4742,26 @@ de_nas_5gs_mm_prose_relay_trans_id(tvbuff_t* tvb, proto_tree* tree, packet_info*
/*
* 9.11.3.89 Relay key request parameters
*/
-static true_false_string tfs_nas_5gs_mm_relay_key_req_params_ruit = {
+static true_false_string tfs_nas_5gs_mm_relay_key_req_params_uit = {
"CP-PRUK ID",
"SUCI"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_relay_key_req_params(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pinfo _U_,
- guint32 offset _U_, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset _U_, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
proto_tree_add_item(tree, hf_nas_5gs_mm_relay_key_req_params_relay_service_code, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
curr_offset += 3;
proto_tree_add_item(tree, hf_nas_5gs_mm_relay_key_req_params_nonce_1, tvb, offset, 16, ENC_NA);
curr_offset += 16;
proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, (curr_offset << 3), 7, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_nas_5gs_mm_relay_key_req_params_ruit, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_relay_key_req_params_uit, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- proto_tree_add_item(tree, hf_nas_5gs_mm_relay_key_req_params_remote_ue_id, tvb, curr_offset, len - (curr_offset - offset), ENC_NA);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_relay_key_req_params_ue_id, tvb, curr_offset, len - (curr_offset - offset), ENC_NA);
return len;
}
@@ -4500,12 +4769,12 @@ de_nas_5gs_mm_relay_key_req_params(tvbuff_t* tvb _U_, proto_tree* tree _U_, pack
/*
* 9.11.3.90 Relay key response parameters
*/
-static guint16
+static uint16_t
de_nas_5gs_mm_relay_key_resp_params(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pinfo _U_,
- guint32 offset _U_, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset _U_, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
proto_tree_add_item(tree, hf_nas_5gs_mm_relay_key_resp_params_key_knr_prose, tvb, curr_offset, 32, ENC_NA);
curr_offset += 32;
@@ -4519,23 +4788,533 @@ de_nas_5gs_mm_relay_key_resp_params(tvbuff_t* tvb _U_, proto_tree* tree _U_, pac
/*
* 9.11.3.91 Priority indicator
*/
+static true_false_string tfs_nas_5gs_mm_prio_ind_mcsi = {
+ "Access identity 2 valid",
+ "Access identity 2 not valid"
+};
+
static true_false_string tfs_nas_5gs_mm_prio_ind_mpsi = {
"Access identity 1 valid",
"Access identity 1 not valid"
};
-static guint16
+static uint16_t
de_nas_5gs_mm_prio_ind(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pinfo _U_,
- guint32 offset _U_, guint len _U_,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset _U_, unsigned len _U_,
+ char* add_string _U_, int string_len _U_)
{
- proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, (offset << 3) + 4, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, (offset << 3) + 4, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_prio_ind_mcsi, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_nas_5gs_mm_prio_ind_mpsi, tvb, offset, 1, ENC_BIG_ENDIAN);
return 1;
}
/*
+ * 9.11.3.92 SNPN list
+ */
+static uint16_t
+de_nas_5gs_mm_snpn_list(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t curr_offset = offset, i = 1;
+
+ while ((curr_offset - offset) < len) {
+ proto_tree *subtree;
+ char *nid;
+
+ subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 9, ett_nas_5gs_mm_snpn_list, NULL, "SNPN identity %u", i++);
+ dissect_e212_mcc_mnc(tvb, pinfo, subtree, curr_offset, E212_NONE, true);
+ curr_offset += 3;
+ nid = tvb_get_bcd_string(pinfo->pool, tvb, curr_offset, 6, &dgt0_f_bcd, true, true, false);
+ proto_tree_add_string(subtree, hf_nas_5gs_mm_nid_value, tvb, curr_offset, 6, nid);
+ curr_offset += 6;
+ }
+
+ return len;
+}
+
+/*
+ * 9.11.3.93 N3IWF identifier
+ */
+static const value_string nas_5gs_mm_n3iwf_id_type_vals[] = {
+ { 1, "IPv4" },
+ { 2, "IPv6" },
+ { 3, "IPv4v6" },
+ { 4, "FQDN" },
+ { 0, NULL }
+};
+
+static uint16_t
+de_nas_5gs_mm_n3iwf_id(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t type;
+
+ proto_tree_add_item_ret_uint(tree, hf_nas_5gs_mm_n3iwf_id_type, tvb, offset, 1, ENC_BIG_ENDIAN, &type);
+ switch (type) {
+ case 1:
+ proto_tree_add_item(tree, hf_nas_5gs_mm_n3iwf_id_ipv4, tvb, offset+1, 4, ENC_BIG_ENDIAN);
+ break;
+ case 2:
+ proto_tree_add_item(tree, hf_nas_5gs_mm_n3iwf_id_ipv6, tvb, offset+1, 16, ENC_NA);
+ break;
+ case 3:
+ proto_tree_add_item(tree, hf_nas_5gs_mm_n3iwf_id_ipv4, tvb, offset+1, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_n3iwf_id_ipv6, tvb, offset+5, 16, ENC_NA);
+ break;
+ case 4:
+ proto_tree_add_item(tree, hf_nas_5gs_mm_n3iwf_id_fqdn, tvb, offset+1, len-1, ENC_APN_STR|ENC_NA);
+ break;
+ default:
+ break;
+ }
+
+ return len;
+}
+
+/*
+ * 9.11.3.94 TNAN information
+ */
+static uint16_t
+de_nas_5gs_mm_tnan_info(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_ ,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t curr_offset = offset, ret_len;
+ static int * const flags[] = {
+ &hf_nas_5gs_spare_b7,
+ &hf_nas_5gs_spare_b6,
+ &hf_nas_5gs_spare_b5,
+ &hf_nas_5gs_spare_b4,
+ &hf_nas_5gs_spare_b3,
+ &hf_nas_5gs_spare_b2,
+ &hf_nas_5gs_mm_tnan_info_ssid_ind,
+ &hf_nas_5gs_mm_tnan_info_tngf_id_ind,
+ NULL
+ };
+ uint64_t ret_flags;
+
+ proto_tree_add_bitmask_list_ret_uint64(tree, tvb, curr_offset, 1, flags, ENC_BIG_ENDIAN, &ret_flags);
+ curr_offset++;
+ if (ret_flags & 0x01) {
+ proto_tree_add_item_ret_uint(tree, hf_nas_5gs_mm_tnan_info_tngf_id_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_nas_5gs_mm_tnan_info_tngf_id, tvb, curr_offset, ret_len, ENC_NA);
+ curr_offset += ret_len;
+ }
+ if (ret_flags & 0x02) {
+ proto_tree_add_item_ret_uint(tree, hf_nas_5gs_mm_tnan_info_ssid_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_nas_5gs_mm_tnan_info_ssid, tvb, curr_offset, ret_len, ENC_NA);
+ curr_offset += ret_len;
+ }
+
+ return len;
+}
+
+/*
+ * 9.11.3.95 RAN timing synchronization
+ */
+static uint16_t
+de_nas_5gs_mm_ran_timing_sync(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 7, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_ran_timing_sync_recreq, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return len;
+}
+
+/*
+ * 9.11.3.96 Extended LADN information
+ */
+static uint16_t
+de_nas_5gs_mm_ext_ladn_info(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t curr_offset = offset;
+ unsigned i = 1;
+
+ while ((curr_offset - offset) < len) {
+ proto_tree *subtree;
+ proto_item *item;
+ uint32_t start_offset = curr_offset, ret_len;
+
+ subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_ext_ladn_info, &item, "LADN %u", i++);
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ curr_offset += de_nas_5gs_cmn_dnn(tvb, subtree, pinfo, curr_offset, len, NULL, 0);
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ curr_offset += de_nas_5gs_cmn_s_nssai(tvb, subtree, pinfo, curr_offset, ret_len, NULL, 0);
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ curr_offset += de_nas_5gs_mm_5gs_ta_id_list(tvb, subtree, pinfo, curr_offset, ret_len, NULL, 0);
+ proto_item_set_len(item, curr_offset - start_offset);
+ }
+
+ return len;
+}
+
+/*
+ * 9.11.3.97 Alternative NSSAI
+ */
+static uint16_t
+de_nas_5gs_mm_alt_nssai(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t curr_offset = offset;
+ unsigned i = 1;
+
+ while ((curr_offset - offset) < len) {
+ proto_tree *subtree, *subtree2;
+ proto_item *item, *item2;
+ uint32_t start_offset = curr_offset, start_offset2, ret_len;
+
+ subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_alt_nssai, &item, "Entry %u", i++);
+ subtree2 = proto_tree_add_subtree(subtree, tvb, curr_offset, -1, ett_nas_5gs_mm_alt_nssai_replaced, &item2, "S-NSSAI to be replaced");
+ start_offset2 = curr_offset;
+ proto_tree_add_item_ret_uint(subtree2, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ curr_offset += de_nas_5gs_cmn_s_nssai(tvb, subtree2, pinfo, curr_offset, ret_len, NULL, 0);
+ proto_item_set_len(item2, curr_offset - start_offset2);
+ subtree2 = proto_tree_add_subtree(subtree, tvb, curr_offset, -1, ett_nas_5gs_mm_alt_nssai_alternative, &item2, "Alternative S-NSSAI");
+ start_offset2 = curr_offset;
+ proto_tree_add_item_ret_uint(subtree2, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ curr_offset += de_nas_5gs_cmn_s_nssai(tvb, subtree2, pinfo, curr_offset, ret_len, NULL, 0);
+ proto_item_set_len(item2, curr_offset - start_offset2);
+ proto_item_set_len(item, curr_offset - start_offset);
+ }
+
+ return len;
+}
+
+/*
+ * 9.11.3.98 Type 6 IE container
+ */
+#define TYPE6_IE_TLV_E(EOT_iei, EOT_pdu_type, EOT_elem_idx, EOT_elem_name_addition) \
+{\
+ if ((signed)curr_len <= 0) return len; \
+ if ((consumed = elem_tlv_e(tvb, tree, pinfo, (uint8_t) EOT_iei, EOT_pdu_type, EOT_elem_idx, curr_offset, curr_len, EOT_elem_name_addition)) > 0) \
+ { \
+ curr_offset += consumed; \
+ curr_len -= consumed; \
+ } \
+}
+
+static uint16_t
+de_nas_5gs_mm_type_6_ie_cont(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Information elements and IEIs for the Registration accept type 6 IE container */
+ /* 01 Extended LADN information Extended LADN information 9.11.3.96 O TLV-E 15-1787 */
+ TYPE6_IE_TLV_E(0x01, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_EXT_LADN_INFO, NULL);
+ /* 02 S-NSSAI location validity information S-NSSAI location validity information 9.11.3.100 O TLV-E 17-38611 */
+ TYPE6_IE_TLV_E(0x02, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_S_NSSAI_LOC_VALID_INFO, NULL);
+ /* 03 Partially allowed NSSAI Partial NSSAI 9.11.3.103 O TLV-E 3-808 */
+ TYPE6_IE_TLV_E(0x03, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PARTIAL_NSSAI, " - Partially allowed NSSAI");
+ /* 04 Partially allowed NSSAI Partial NSSAI 9.11.3.103 O TLV-E 3-808 */
+ TYPE6_IE_TLV_E(0x04, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PARTIAL_NSSAI, " - Partially rejected NSSAI");
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
+
+ return len;
+}
+
+/*
+ * 9.11.9.99 Non-3GPP access path switching indication
+ */
+static uint16_t
+de_nas_5gs_mm_n3gpp_acc_path_switch_ind(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 7, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_n3gpp_acc_path_switch_ind_naps, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return len;
+}
+
+/*
+ * 9.11.3.100 S-NSSAI location validity information
+ */
+static uint16_t
+de_nas_5gs_mm_s_nssai_loc_valid_info(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t curr_offset = offset;
+ unsigned i = 1;
+
+ while ((curr_offset - offset) < len) {
+ proto_tree *subtree;
+ proto_item *item;
+ uint32_t start_offset = curr_offset, length, j;
+
+ subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_s_nssai_loc_valid_info, &item, "Per-S-NSSAI location validity information for S-NSSAI %u", i++);
+ proto_tree_add_item(subtree, hf_nas_5gs_mm_s_nssai_loc_valid_info_per_s_nssai_len, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &length);
+ curr_offset++;
+ curr_offset += de_nas_5gs_cmn_s_nssai(tvb, subtree, pinfo, curr_offset, length, NULL, 0);
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_s_nssai_loc_valid_info_per_s_nssai_nb_nr_cgi, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &length);
+ curr_offset++;
+ for (j = 0; j < length; j++) {
+ proto_tree_add_item(subtree, hf_nas_5gs_mm_s_nssai_loc_valid_info_per_s_nssai_nr_cell_id, tvb, curr_offset, 5, ENC_BIG_ENDIAN);
+ curr_offset += 5;
+ curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, curr_offset, E212_NONE, true);
+ }
+ proto_item_set_len(item, curr_offset - start_offset);
+ }
+
+ return len;
+}
+
+/*
+ * 9.11.3.101 S-NSSAI time validity information
+ */
+static const value_string nas_5gs_mm_s_nssai_time_valid_info_time_window_recurrence_pattern_vals[] = {
+ { 0, "Everyday" },
+ { 1, "Every weekday" },
+ { 2, "Every week" },
+ { 3, "Every 2 weeks" },
+ { 4, "Every month (absolute)" },
+ { 5, "Every month (relative)" },
+ { 6, "Every quarter (absolute)" },
+ { 7, "Every quarter (relative)" },
+ { 8, "Every 6 months (absolute)" },
+ { 9, "Every 6 months (relative)" },
+ { 0, NULL }
+};
+
+static uint16_t
+de_nas_5gs_mm_s_nssai_time_valid_info(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t curr_offset = offset;
+ unsigned i = 1;
+
+ while ((curr_offset - offset) < len) {
+ proto_tree *subtree;
+ proto_item *item;
+ uint32_t start_offset = curr_offset, length, start_offset2, time_window_len;
+
+ subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_s_nssai_time_valid_info, &item, "Per-S-NSSAI time validity information for S-NSSAI %u", i++);
+ proto_tree_add_item(subtree, hf_nas_5gs_mm_s_nssai_time_valid_info_per_s_nssai_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &length);
+ curr_offset++;
+ curr_offset += de_nas_5gs_cmn_s_nssai(tvb, subtree, pinfo, curr_offset, length, NULL, 0);
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_s_nssai_time_valid_info_per_s_nssai_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &length);
+ curr_offset++;
+ start_offset2 = curr_offset;
+ while ((curr_offset - start_offset2) < length) {
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &time_window_len);
+ curr_offset++;
+ proto_tree_add_item(subtree, hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_start_time, tvb, curr_offset, 8, ENC_NA);
+ curr_offset += 8;
+ proto_tree_add_item(subtree, hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_stop_time, tvb, curr_offset, 8, ENC_NA);
+ curr_offset += 8;
+ if (time_window_len >= 9) {
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_recurrence_pattern, tvb, offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ if (time_window_len >= 10) {
+ proto_tree_add_item(subtree, hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_recurrence_end_time, tvb, curr_offset, 8, ENC_NA);
+ curr_offset += 8;
+ }
+ }
+ }
+ proto_item_set_len(item, curr_offset - start_offset);
+ }
+
+ return len;
+}
+
+/*
+ * 9.11.3.102 Non-3GPP path switching information
+ */
+static uint16_t
+de_nas_5gs_mm_n3gpp_path_switch_info(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 7, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_n3gpp_path_switch_info_nsonr, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return len;
+}
+
+/*
+ * 9.11.3.103 Partial NSSAI
+ */
+static uint16_t
+de_nas_5gs_mm_partial_nssai(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t curr_offset = offset, ret_len;
+
+ while ((curr_offset - offset) < len) {
+ proto_tree_add_item_ret_uint(tree, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ if (ret_len > 0)
+ curr_offset += de_nas_5gs_cmn_s_nssai(tvb, tree, pinfo, curr_offset, ret_len, NULL, 0);
+ proto_tree_add_item_ret_uint(tree, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ if (ret_len > 0)
+ curr_offset += de_nas_5gs_mm_5gs_ta_id_list(tvb, tree, pinfo, curr_offset, ret_len, NULL, 0);
+ }
+
+ return len;
+}
+
+/*
+ * 9.11.3.104 AUN3 indication
+ */
+static uint16_t
+de_nas_5gs_mm_au3n_ind(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 7, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_au3n_ind_aun3reg, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return len;
+}
+
+/*
+ * 9.11.3.105 Feature authorization indication
+ */
+static const value_string nas_5gs_mm_feat_auth_ind_mbsrai_vals[] = {
+ { 0, "no information" },
+ { 1, "not authorized to operate as MBSR but allowed to operate as a UE" },
+ { 2, "authorized to operate as MBSR" },
+ { 0, NULL }
+};
+
+static uint16_t
+de_nas_5gs_mm_feat_auth_ind(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 6, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_feat_auth_ind_mbsrai, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return len;
+}
+
+/*
+ * 9.11.3.106 Payload container information
+ */
+static const true_false_string tfs_nas_5gs_mm_payload_cont_info_pru = {
+ "Payload container related to PRU",
+ "Payload container not related to PRU"
+};
+
+static uint16_t
+de_nas_5gs_mm_payload_cont_info(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 7, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_payload_cont_info_pru, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return len;
+}
+
+/*
+ * 9.11.3.107 AUN3 device security key
+ */
+static const value_string nas_5gs_mm_aun3_device_sec_key_askt_vals[] = {
+ { 0, "Master session key is included" },
+ { 1, "K_WAGF key is included" },
+ { 0, NULL }
+};
+
+static uint16_t
+de_nas_5gs_mm_aun3_device_sec_key(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t ret_len;
+
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 6, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_aun3_device_sec_key_askt, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item_ret_uint(tree, hf_nas_5gs_mm_aun3_device_sec_key_key_len, tvb, offset + 1, 1, ENC_BIG_ENDIAN, &ret_len);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_aun3_device_sec_key_key, tvb, offset + 2, ret_len, ENC_NA);
+
+ return len;
+}
+
+/*
+ * 9.11.3.108 On-demand NSSAI
+ */
+static uint16_t
+de_nas_5gs_mm_on_demand_nssai(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ uint32_t curr_offset = offset;
+ unsigned i = 1;
+
+ while ((curr_offset - offset) < len) {
+ proto_tree *subtree;
+ proto_item *item;
+ uint32_t start_offset = curr_offset, length, ret_len;
+
+ subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_mm_on_demand_nssai, &item, "Information of on-demand S-NSSAI %u", i++);
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_on_demand_nssai_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &length);
+ curr_offset++;
+ proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_mm_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &ret_len);
+ curr_offset++;
+ curr_offset += de_nas_5gs_cmn_s_nssai(tvb, subtree, pinfo, curr_offset, ret_len, NULL, 0);
+ if ((curr_offset < start_offset) < (length + 1)) {
+ proto_tree_add_item(subtree, hf_nas_5gs_mm_on_demand_nssai_slice_dereg_inactiv_timer, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+ }
+ proto_item_set_len(item, curr_offset - start_offset);
+ }
+
+ return len;
+}
+
+/*
+ * 9.11.3.109 Extended 5GMM cause
+ */
+static const true_false_string tfs_nas_5gs_mm_ext_5gmm_cause_sat_nr = {
+ "Satellite NG-RAN allowed in PLMN",
+ "Satellite NG-RAN not allowed in PLMN"
+};
+
+static uint16_t
+de_nas_5gs_mm_ext_5gmm_cause(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, offset << 3, 7, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_5gs_mm_ext_5gmm_cause_sat_nr, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ return len;
+}
+
+/*
* 9.11.4 5GS session management (5GSM) information elements
*/
@@ -4544,18 +5323,22 @@ de_nas_5gs_mm_prio_ind(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pin
*/
static const value_string nas_5gs_sm_atsss_st_b3_b6_vals[] = {
{ 0x0, "ATSSS not supported" },
- { 0x1, "ATSSS Low-Layer functionality with any steering mode supported" },
+ { 0x1, "ATSSS Low-Layer functionality with any steering mode allowed for ATSSS-LL supported" },
{ 0x2, "MPTCP functionality with any steering mode and ATSSS-LL functionality with only active-standby steering mode supported" },
- { 0x3, "MPTCP functionality with any steering mode and ATSSS-LL functionality with any steering mode supported" },
+ { 0x3, "MPTCP functionality with any steering mode and ATSSS-LL functionality with any steering mode allowed for ATSSS-LL supported" },
+ { 0x4, "MPQUIC functionality with any steering mode and ATSSS-LL functionality with only active-standby steering mode supported" },
+ { 0x5, "MPQUIC functionality with any steering mode and ATSSS-LL functionality with any steering mode allowed for ATSSS-LL supported" },
+ { 0x6, "MPTCP functionality with any steering mode, MPQUIC functionality with any steering mode and ATSSS-LL functionality with only active-standby steering mode supported" },
+ { 0x7, "MPTCP functionality with any steering mode, MPQUIC functionality with any steering mode and ATSSS-LL functionality with any steering mode allowed for ATSSS-LL supported" },
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_sm_5gsm_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
static int * const flags1[] = {
&hf_nas_5gs_sm_tpmic_b7,
@@ -4573,7 +5356,7 @@ de_nas_5gs_sm_5gsm_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
&hf_nas_5gs_spare_b4,
&hf_nas_5gs_spare_b3,
&hf_nas_5gs_spare_b2,
- &hf_nas_5gs_spare_b1,
+ &hf_nas_5gs_sm_sdnaepc_b1,
&hf_nas_5gs_sm_apmqf_b0,
NULL
};
@@ -4646,12 +5429,12 @@ const value_string nas_5gs_sm_cause_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_sm_5gsm_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
- guint32 cause;
+ uint32_t cause;
proto_tree_add_item_ret_uint(tree, hf_nas_5gs_sm_5gsm_cause, tvb, offset, 1, ENC_BIG_ENDIAN, &cause);
@@ -4670,10 +5453,10 @@ static true_false_string tfs_nas_5gs_sm_apsi = {
"not allowed"
};
-static guint16
+static uint16_t
de_nas_5gs_sm_always_on_pdu_ses_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -4691,10 +5474,10 @@ de_nas_5gs_sm_always_on_pdu_ses_ind(tvbuff_t *tvb, proto_tree *tree, packet_info
/*
* 9.11.4.4 Always-on PDU session requested
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_always_on_pdu_ses_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -4713,10 +5496,10 @@ de_nas_5gs_sm_always_on_pdu_ses_req(tvbuff_t *tvb, proto_tree *tree, packet_info
* 9.11.4.5 Allowed SSC mode
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_5gsm_allowed_ssc_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
@@ -4748,10 +5531,10 @@ static const value_string nas_5gs_sm_int_prot_max_data_rate_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_sm_int_prot_max_data_rte(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
/* Maximum data rate per UE for user-plane integrity protection for uplink */
proto_tree_add_item(tree, hf_nas_5gs_sm_int_prot_max_data_rate_ul, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -4794,17 +5577,17 @@ static const value_string nas_5gs_sm_mapd_eps_b_cont_param_id_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_sm_mapped_eps_b_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ uint32_t curr_offset;
proto_tree * sub_tree, *sub_tree1;
- guint32 num_cont, length, opt_code, num_eps_parms, param_id;
+ uint32_t num_cont, length, opt_code, num_eps_parms, param_id;
proto_item * item;
- guint i;
+ unsigned i;
curr_offset = offset;
num_cont = 1;
@@ -4843,7 +5626,7 @@ de_nas_5gs_sm_mapped_eps_b_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
/* operation code | spare | E | number of EPS params */
proto_item_set_len(item, length + 3);
- num_eps_parms = tvb_get_guint8(tvb, curr_offset);
+ num_eps_parms = tvb_get_uint8(tvb, curr_offset);
opt_code = (num_eps_parms & 0xc0) >> 6;
num_eps_parms = num_eps_parms & 0x0f;
@@ -4917,10 +5700,10 @@ de_nas_5gs_sm_mapped_eps_b_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
/*
* 9.11.4.9 Maximum number of supported packet filters
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_max_num_sup_pkt_flt(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_sm_max_nb_sup_pkt_flt_nb,
@@ -4945,15 +5728,15 @@ static const value_string nas_5gs_sm_pdu_ses_type_vals[] = {
};
-static guint16
+static uint16_t
de_nas_5gs_sm_pdu_address(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_item *ti;
- gboolean si6lla;
- guint32 pdu_addr;
- guint8 interface_id[8];
+ bool si6lla;
+ uint32_t pdu_addr;
+ uint8_t interface_id[8];
/* 0 Spare 0 Spare 0 Spare 0 Spare SI6LLA PDU session type value */
proto_tree_add_item_ret_boolean(tree, hf_nas_5gs_sm_si6lla, tvb, offset, 1, ENC_BIG_ENDIAN, &si6lla);
@@ -5016,10 +5799,10 @@ static const value_string nas_5gs_pdu_session_type_values[] = {
};
-static guint16
+static uint16_t
de_nas_5gs_sm_pdu_session_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_sm_pdu_session_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -5050,19 +5833,19 @@ static const value_string nas_5gs_sm_param_id_values[] = {
{ 0, NULL }
};
-guint16
+uint16_t
de_nas_5gs_sm_qos_flow_des(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree *sub_tree, *sub_tree2;
proto_item *item, *sub_item;
int i = 1, j;
- guint32 param_len, param_id;
- guint32 curr_offset, start_offset, start_offset2;
- guint8 num_param;
- guint32 unit, mult, val;
+ uint32_t param_len, param_id;
+ uint32_t curr_offset, start_offset, start_offset2;
+ uint8_t num_param;
+ uint32_t unit, mult, val;
const char *unit_str;
int hf_unit, hf_val;
@@ -5090,7 +5873,7 @@ de_nas_5gs_sm_qos_flow_des(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
/* 0 Spare E Number of parameters */
j = 1;
- num_param = tvb_get_guint8(tvb, curr_offset);
+ num_param = tvb_get_uint8(tvb, curr_offset);
num_param = num_param & 0x3f;
proto_tree_add_bitmask_list(sub_tree, tvb, curr_offset, 1, param_flags, ENC_BIG_ENDIAN);
curr_offset++;
@@ -5220,18 +6003,18 @@ static const value_string nas_5gs_sm_pkt_flt_dir_values[] = {
{ 0, NULL }
};
-guint16
+uint16_t
de_nas_5gs_sm_qos_rules(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree *sub_tree, *sub_tree2, *sub_tree3;
proto_item *item, *item2;
int i = 1, j, k = 1;
- guint32 qos_rule_id, pf_len, pf_type, pfc_len;
- guint32 length, curr_offset, saved_offset, start_offset;
- guint8 num_pkt_flt, rop;
+ uint32_t qos_rule_id, pf_len, pf_type, pfc_len;
+ uint32_t length, curr_offset, saved_offset, start_offset;
+ uint8_t num_pkt_flt, rop;
static int * const pkt_flt_flags[] = {
&hf_nas_5gs_sm_rop,
@@ -5258,7 +6041,7 @@ de_nas_5gs_sm_qos_rules(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
proto_item_set_len(item, length + 3);
/* Rule operation code DQR bit Number of packet filters */
- num_pkt_flt = tvb_get_guint8(tvb, curr_offset);
+ num_pkt_flt = tvb_get_uint8(tvb, curr_offset);
rop = num_pkt_flt >> 5;
num_pkt_flt = num_pkt_flt & 0x0f;
proto_tree_add_bitmask_list(sub_tree, tvb, curr_offset, 1, pkt_flt_flags, ENC_BIG_ENDIAN);
@@ -5501,12 +6284,12 @@ static const value_string nas_5gs_sm_unit_for_session_ambr_values[] = {
};
-guint16
+uint16_t
de_nas_5gs_sm_session_ambr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint32 unit, mult, ambr_val;
+ uint32_t unit, mult, ambr_val;
const char *unit_str;
/* Unit for Session-AMBR for downlink */
@@ -5534,10 +6317,10 @@ de_nas_5gs_sm_session_ambr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
* 9.11.4.15 SM PDU DN request container
*/
/* The SM PDU DN request container contains a DN-specific identity of the UE in the network access identifier (NAI) format */
-static guint16
+static uint16_t
de_nas_5gs_sm_pdu_dn_req_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_sm_dm_spec_id, tvb, offset, len, ENC_UTF_8|ENC_NA);
@@ -5556,10 +6339,10 @@ static const value_string nas_5gs_sc_mode_values[] = {
};
-static guint16
+static uint16_t
de_nas_5gs_sm_ssc_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len _U_,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_sm_sc_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -5580,10 +6363,10 @@ static true_false_string tfs_nas_5gs_sm_ratc = {
"UE is allowed to re-attempt the procedure in S1 mode"
};
-static guint16
+static uint16_t
de_nas_5gs_sm_re_attempt_ind(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -5604,12 +6387,12 @@ de_nas_5gs_sm_re_attempt_ind(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo
/*
* 9.11.4.18 5GSM network feature support
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_5gsm_nw_feature_sup(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
static int* const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -5618,7 +6401,7 @@ de_nas_5gs_sm_5gsm_nw_feature_sup(tvbuff_t* tvb, proto_tree* tree, packet_info*
&hf_nas_5gs_spare_b4,
&hf_nas_5gs_spare_b3,
&hf_nas_5gs_spare_b2,
- &hf_nas_5gs_spare_b1,
+ &hf_nas_5gs_sm_naps,
&hf_nas_5gs_sm_ept_s1,
NULL
};
@@ -5648,14 +6431,14 @@ static true_false_string tfs_5gs_sm_catbo = {
};
static true_false_string tfs_5gs_sm_abo = {
- "The back-off timer is applied in all PLMNs",
- "The back-off timer is applied in the registered PLMN"
+ "The back-off timer is applied in all PLMNs or all equivalent SNPNs",
+ "The back-off timer is applied in the registered PLMN or registered SNPN"
};
-static guint16
+static uint16_t
de_nas_5gs_sm_5gsm_cong_re_attempt_ind(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -5677,10 +6460,10 @@ de_nas_5gs_sm_5gsm_cong_re_attempt_ind(tvbuff_t* tvb, proto_tree* tree, packet_i
/*
* 9.11.4.22 ATSSS container
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_atsss_cont(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_sm_atsss_cont, tvb, offset, len, ENC_NA);
@@ -5695,10 +6478,10 @@ static true_false_string tfs_5gs_sm_cpoi = {
"reserved"
};
-static guint16
+static uint16_t
de_nas_5gs_sm_ctl_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_)
+ uint32_t offset, unsigned len _U_,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -5728,12 +6511,12 @@ static const value_string nas_5gs_sm_ip_hdr_comp_config_add_ip_hdr_compr_cxt_set
{ 0x0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_sm_ip_hdr_comp_conf(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
static int * const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -5765,10 +6548,10 @@ de_nas_5gs_sm_ip_hdr_comp_conf(tvbuff_t* tvb, proto_tree* tree, packet_info* pin
/*
* 9.11.4.25 DS-TT Ethernet port MAC address
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_ds_tt_eth_port_mac_addr(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_sm_ds_tt_eth_port_mac_addr, tvb, offset, 6, ENC_NA);
@@ -5778,10 +6561,10 @@ de_nas_5gs_sm_ds_tt_eth_port_mac_addr(tvbuff_t* tvb, proto_tree* tree, packet_in
/*
* 9.11.4.26 UE-DS-TT residence time
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_ue_ds_tt_residence_t(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_sm_ue_ds_tt_residence_time, tvb, offset, 8, ENC_NA);
@@ -5791,10 +6574,10 @@ de_nas_5gs_sm_ue_ds_tt_residence_t(tvbuff_t* tvb, proto_tree* tree, packet_info*
/*
* 9.11.4.27 Port management information container
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_port_mgnt_inf_cont(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_sm_port_mgmt_info_cont, tvb, offset, len, ENC_NA);
@@ -5811,10 +6594,10 @@ static const value_string nas_5gs_sm_eth_hdr_comp_config_cid_len_vals[] = {
{ 0x0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_sm_eth_hdr_comp_conf(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
static int * const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -5835,10 +6618,10 @@ de_nas_5gs_sm_eth_hdr_comp_conf(tvbuff_t* tvb, proto_tree* tree, packet_info* pi
/*
* 9.11.4.29 Remote UE context list
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_remote_ue_ctx_list(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
@@ -5848,10 +6631,10 @@ de_nas_5gs_sm_remote_ue_ctx_list(tvbuff_t* tvb, proto_tree* tree, packet_info* p
/*
* 9.11.4.30 Requested MBS container
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_req_mbs_cont(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pinfo _U_,
- guint32 offset _U_, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset _U_, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
@@ -5861,10 +6644,10 @@ de_nas_5gs_sm_req_mbs_cont(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info*
/*
* 9.11.4.31 Received MBS container
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_rec_mbs_cont(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pinfo _U_,
- guint32 offset _U_, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset _U_, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
@@ -5874,10 +6657,10 @@ de_nas_5gs_sm_rec_mbs_cont(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info*
/*
* 9.11.4.32 PDU session pair ID
*/
-static guint16
+static uint16_t
de_nas_5gs_sm_pdu_session_pair_id(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pinfo _U_,
- guint32 offset _U_, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset _U_, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_sm_pdu_session_pair_id, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -5893,10 +6676,10 @@ static const value_string nas_5gs_sm_pdu_session_rsn_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_sm_rsn(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_sm_pdu_session_rsn, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -5904,15 +6687,67 @@ de_nas_5gs_sm_rsn(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
}
/*
+ * 9.11.4.36 N3QAI
+ */
+static uint16_t
+de_nas_5gs_sm_n3qai(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+
+ return len;
+}
+
+/*
+ * 9.11.4.37 Non-3GPP delay budget
+ */
+static uint16_t
+de_nas_5gs_sm_n3gpp_delay_budget(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+
+ return len;
+}
+
+/*
+ * 9.11.4.38 URSP rule enforcement reports
+ */
+static uint16_t
+de_nas_5gs_sm_ursp_rule_enforce_reports(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+
+ return len;
+}
+
+/*
+ * 9.11.4.39 Protocol description
+ */
+static uint16_t
+de_nas_5gs_sm_prot_desc(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
+{
+ proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_ie_not_dis, tvb, offset, len);
+
+ return len;
+}
+
+/*
* 9.10.2 Common information elements
*/
/* 9.10.2.1 Additional information*/
-static guint16
+static uint16_t
de_nas_5gs_cmn_add_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_cmn_add_info, tvb, offset, len, ENC_NA);
@@ -5935,10 +6770,10 @@ static int* const nas_5gs_cmn_access_type_flags[] = {
NULL
};
-static guint16
+static uint16_t
de_nas_5gs_cmn_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_)
+ uint32_t offset, unsigned len _U_,
+ char *add_string _U_, int string_len _U_)
{
proto_tree_add_bitmask_list(tree, tvb, offset, 1, nas_5gs_cmn_access_type_flags, ENC_BIG_ENDIAN);
@@ -5951,13 +6786,13 @@ de_nas_5gs_cmn_access_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
* 9.11.2.1B DNN
*/
-guint16
+uint16_t
de_nas_5gs_cmn_dnn(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ uint32_t curr_offset;
proto_item *pi;
curr_offset = offset;
@@ -5978,10 +6813,10 @@ de_nas_5gs_cmn_dnn(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* 9.11.2.2 EAP message*/
-static guint16
+static uint16_t
de_nas_5gs_cmn_eap_msg(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
/* EAP message as specified in IETF RFC 3748 */
if (eap_handle) {
@@ -6005,10 +6840,10 @@ de_nas_5gs_cmn_eap_msg(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* See subclause 10.5.7.4a in 3GPP TS 24.008 */
/* 9.11.2.8 S-NSSAI */
-guint16
+uint16_t
de_nas_5gs_cmn_s_nssai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
/* SST
* This field contains the 8 bit SST value. The coding of the SST value part is defined in 3GPP TS 23.003
@@ -6103,22 +6938,22 @@ static true_false_string nas_5gs_enabled_not_enabled_value = {
"Not enabled"
};
-guint16
+uint16_t
de_nas_5gs_cmn_service_level_aa_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
- guint32 offset, guint len,
- gchar *add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char *add_string _U_, int string_len _U_)
{
- guint32 curr_offset, i;
+ uint32_t curr_offset, i;
curr_offset = offset;
i = 0;
while ((curr_offset - offset) < len) {
proto_item *item;
proto_tree *subtree;
- guint32 type, param_len, param_offset = curr_offset;
+ uint32_t type, param_len, param_offset = curr_offset;
subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_cmn_service_level_aa_cont_param, &item, "Service-level-AA parameter %d", i + 1);
- type = tvb_get_guint8(tvb, curr_offset);
+ type = tvb_get_uint8(tvb, curr_offset);
if ((type & NAS_5GS_TV_IE_MASK) == NAS_5GS_TV_IE_VAL) {
param_len = 0;
type &= 0xf0;
@@ -6139,7 +6974,7 @@ de_nas_5gs_cmn_service_level_aa_cont(tvbuff_t *tvb, proto_tree *tree, packet_inf
break;
case 0x20:
{
- guint32 addr_type;
+ uint32_t addr_type;
proto_tree_add_item_ret_uint(subtree, hf_nas_5gs_cmn_service_level_aa_param_addr_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &addr_type);
switch (addr_type) {
@@ -6194,7 +7029,7 @@ de_nas_5gs_cmn_service_level_aa_cont(tvbuff_t *tvb, proto_tree *tree, packet_inf
proto_tree_add_bitmask_list(subtree, tvb, curr_offset-1, 1, flags, ENC_BIG_ENDIAN);
}
break;
- case 0xb0:
+ case 0x50:
{
static int * const flags[] = {
&hf_nas_5gs_spare_b3,
@@ -6255,13 +7090,13 @@ static const value_string nas_5gs_common_elem_strings[] = {
};
value_string_ext nas_5gs_common_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_5gs_common_elem_strings);
-#define NUM_NAS_5GS_COMMON_ELEM (sizeof(nas_5gs_common_elem_strings)/sizeof(value_string))
-gint ett_nas_5gs_common_elem[NUM_NAS_5GS_COMMON_ELEM];
+#define NUM_NAS_5GS_COMMON_ELEM array_length(nas_5gs_common_elem_strings)
+int ett_nas_5gs_common_elem[NUM_NAS_5GS_COMMON_ELEM];
-guint16(*nas_5gs_common_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string, int string_len) = {
+uint16_t(*nas_5gs_common_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
+ uint32_t offset, unsigned len,
+ char *add_string, int string_len) = {
/* 9.10.2 Common information elements */
de_nas_5gs_cmn_add_inf, /* 9.11.2.1 Additional information*/
de_nas_5gs_cmn_access_type, /* 9.11.2.1A Access type */
@@ -6386,6 +7221,24 @@ typedef enum
DE_NAS_5GS_MM_RELAY_KEY_REQ_PARAMS, /* 9.11.3.89 Relay key request parameters */
DE_NAS_5GS_MM_RELAY_KEY_RESP_PARAMS, /* 9.11.3.90 Relay key response parameters */
DE_NAS_5GS_MM_PRIO_IND, /* 9.11.3.91 Priority indicator */
+ DE_NAS_5GS_MM_SNPN_LIST, /* 9.11.3.92 SNPN list */
+ DE_NAS_5GS_MM_N3IWF_ID, /* 9.11.3.93 N3IWF identifier */
+ DE_NAS_5GS_MM_TNAN_INFO, /* 9.11.3.94 TNAN information */
+ DE_NAS_5GS_MM_RAN_TIMING_SYNC, /* 9.11.3.95 RAN timing synchronization */
+ DE_NAS_5GS_MM_EXT_LADN_INFO, /* 9.11.3.96 Extended LADN information */
+ DE_NAS_5GS_MM_ALT_NSSAI, /* 9.11.3.97 Alternative NSSAI */
+ DE_NAS_5GS_MM_TYPE_6_IE_CONT, /* 9.11.3.98 Type 6 IE container */
+ DE_NAS_5GS_MM_N3GPP_ACC_PATH_SWITCH_IND, /* 9.11.9.99 Non-3GPP access path switching indication */
+ DE_NAS_5GS_MM_S_NSSAI_LOC_VALID_INFO, /* 9.11.3.100 S-NSSAI location validity information */
+ DE_NAS_5GS_MM_S_NSSAI_TIME_VALID_INFO, /* 9.11.3.101 S-NSSAI time validity information */
+ DE_NAS_5GS_MM_N3GPP_PATH_SWITCH_INFO, /* 9.11.3.102 Non-3GPP path switching information */
+ DE_NAS_5GS_MM_PARTIAL_NSSAI, /* 9.11.3.103 Partial NSSAI */
+ DE_NAS_5GS_MM_AU3N_IND, /* 9.11.3.104 AUN3 indication */
+ DE_NAS_5GS_MM_FEAT_AUTH_IND, /* 9.11.3.105 Feature authorization indication */
+ DE_NAS_5GS_MM_PAYLOAD_CONT_INFO, /* 9.11.3.106 Payload container information */
+ DE_NAS_5GS_MM_AUN3_DEVICE_SEC_KEY, /* 9.11.3.107 AUN3 device security key */
+ DE_NAS_5GS_MM_ON_DEMAND_NSSAI, /* 9.11.3.108 On-demand NSSAI */
+ DE_NAS_5GS_MM_EXT_5GMM_CAUSE, /* 9.11.3.109 Extended 5GMM cause */
DE_NAS_5GS_MM_NONE /* NONE */
}
@@ -6494,17 +7347,35 @@ static const value_string nas_5gs_mm_elem_strings[] = {
{ DE_NAS_5GS_MM_RELAY_KEY_REQ_PARAMS, "Relay key request parameters" }, /* 9.11.3.89 Relay key request parameters */
{ DE_NAS_5GS_MM_RELAY_KEY_RESP_PARAMS, "Relay key response parameters" }, /* 9.11.3.90 Relay key response parameters */
{ DE_NAS_5GS_MM_PRIO_IND, "Priority indicator" }, /* 9.11.3.91 Priority indicator */
+ { DE_NAS_5GS_MM_SNPN_LIST, "SNPN list" }, /* 9.11.3.92 SNPN list */
+ { DE_NAS_5GS_MM_N3IWF_ID, "N3IWF identifier" }, /* 9.11.3.93 N3IWF identifier */
+ { DE_NAS_5GS_MM_TNAN_INFO, "TNAN information" }, /* 9.11.3.94 TNAN information */
+ { DE_NAS_5GS_MM_RAN_TIMING_SYNC, "RAN timing synchronization" }, /* 9.11.3.95 RAN timing synchronization */
+ { DE_NAS_5GS_MM_EXT_LADN_INFO, "Extended LADN information" }, /* 9.11.3.96 Extended LADN information */
+ { DE_NAS_5GS_MM_ALT_NSSAI, "Alternative NSSAI" }, /* 9.11.3.97 Alternative NSSAI */
+ { DE_NAS_5GS_MM_TYPE_6_IE_CONT, "Type 6 IE container" }, /* 9.11.3.98 Type 6 IE container */
+ { DE_NAS_5GS_MM_N3GPP_ACC_PATH_SWITCH_IND, "Non-3GPP access path switching indication" },/* 9.11.9.99 Non-3GPP access path switching indication */
+ { DE_NAS_5GS_MM_S_NSSAI_LOC_VALID_INFO, "S-NSSAI location validity information" },/* 9.11.3.100 S-NSSAI location validity information */
+ { DE_NAS_5GS_MM_S_NSSAI_TIME_VALID_INFO, "S-NSSAI time validity information" }, /* 9.11.3.101 S-NSSAI time validity information */
+ { DE_NAS_5GS_MM_N3GPP_PATH_SWITCH_INFO, "Non-3GPP path switching information" },/* 9.11.3.102 Non-3GPP path switching information */
+ { DE_NAS_5GS_MM_PARTIAL_NSSAI, "Partial NSSAI" }, /* 9.11.3.103 Partial NSSAI */
+ { DE_NAS_5GS_MM_AU3N_IND, "AUN3 indication" }, /* 9.11.3.104 AUN3 indication */
+ { DE_NAS_5GS_MM_FEAT_AUTH_IND, "Feature authorization indication" }, /* 9.11.3.105 Feature authorization indication */
+ { DE_NAS_5GS_MM_PAYLOAD_CONT_INFO, "Payload container information" }, /* 9.11.3.106 Payload container information */
+ { DE_NAS_5GS_MM_AUN3_DEVICE_SEC_KEY, "AUN3 device security key" }, /* 9.11.3.107 AUN3 device security key */
+ { DE_NAS_5GS_MM_ON_DEMAND_NSSAI, "On-demand NSSAI" }, /* 9.11.3.108 On-demand NSSAI */
+ { DE_NAS_5GS_MM_EXT_5GMM_CAUSE, "Extended 5GMM cause" }, /* 9.11.3.109 Extended 5GMM cause */
{ 0, NULL }
};
value_string_ext nas_5gs_mm_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_5gs_mm_elem_strings);
-#define NUM_NAS_5GS_MM_ELEM (sizeof(nas_5gs_mm_elem_strings)/sizeof(value_string))
-gint ett_nas_5gs_mm_elem[NUM_NAS_5GS_MM_ELEM];
+#define NUM_NAS_5GS_MM_ELEM array_length(nas_5gs_mm_elem_strings)
+int ett_nas_5gs_mm_elem[NUM_NAS_5GS_MM_ELEM];
-guint16(*nas_5gs_mm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string, int string_len) = {
+uint16_t(*nas_5gs_mm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
+ uint32_t offset, unsigned len,
+ char *add_string, int string_len) = {
/* 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*/
@@ -6608,6 +7479,24 @@ guint16(*nas_5gs_mm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
de_nas_5gs_mm_relay_key_req_params, /* 9.11.3.89 Relay key request parameters */
de_nas_5gs_mm_relay_key_resp_params, /* 9.11.3.90 Relay key response parameters */
de_nas_5gs_mm_prio_ind, /* 9.11.3.91 Priority indicator */
+ de_nas_5gs_mm_snpn_list, /* 9.11.3.92 SNPN list */
+ de_nas_5gs_mm_n3iwf_id, /* 9.11.3.93 N3IWF identifier */
+ de_nas_5gs_mm_tnan_info, /* 9.11.3.94 TNAN information */
+ de_nas_5gs_mm_ran_timing_sync, /* 9.11.3.95 RAN timing synchronization */
+ de_nas_5gs_mm_ext_ladn_info, /* 9.11.3.96 Extended LADN information */
+ de_nas_5gs_mm_alt_nssai, /* 9.11.3.97 Alternative NSSAI */
+ de_nas_5gs_mm_type_6_ie_cont, /* 9.11.3.98 Type 6 IE container */
+ de_nas_5gs_mm_n3gpp_acc_path_switch_ind, /* 9.11.9.99 Non-3GPP access path switching indication */
+ de_nas_5gs_mm_s_nssai_loc_valid_info, /* 9.11.3.100 S-NSSAI location validity information */
+ de_nas_5gs_mm_s_nssai_time_valid_info, /* 9.11.3.101 S-NSSAI time validity information */
+ de_nas_5gs_mm_n3gpp_path_switch_info, /* 9.11.3.102 Non-3GPP path switching information */
+ de_nas_5gs_mm_partial_nssai, /* 9.11.3.103 Partial NSSAI */
+ de_nas_5gs_mm_au3n_ind, /* 9.11.3.104 AUN3 indication */
+ de_nas_5gs_mm_feat_auth_ind, /* 9.11.3.105 Feature authorization indication */
+ de_nas_5gs_mm_payload_cont_info, /* 9.11.3.106 Payload container information */
+ de_nas_5gs_mm_aun3_device_sec_key, /* 9.11.3.107 AUN3 device security key */
+ de_nas_5gs_mm_on_demand_nssai, /* 9.11.3.108 On-demand NSSAI */
+ de_nas_5gs_mm_ext_5gmm_cause, /* 9.11.3.109 Extended 5GMM cause */
NULL, /* NONE */
};
@@ -6653,6 +7542,10 @@ typedef enum
DE_NAS_5GS_SM_REC_MBS_CONT, /* 9.11.4.31 Received MBS container */
DE_NAS_5GS_SM_PDU_SESSION_PAIR_ID, /* 9.11.4.32 PDU session pair ID */
DE_NAS_5GS_SM_RSN, /* 9.11.4.33 RSN */
+ DE_NAS_5GS_SM_N3QAI, /* 9.11.4.36 N3QAI */
+ DE_NAS_5GS_SM_N3GPP_DELAY_BUDGET, /* 9.11.4.37 Non-3GPP delay budget */
+ DE_NAS_5GS_SM_URSP_RULE_ENFORCE_REPORTS,/* 9.11.4.38 URSP rule enforcement reports */
+ DE_NAS_5GS_SM_PROT_DESC, /* 9.11.4.39 Protocol description */
DE_NAS_5GS_SM_NONE /* NONE */
}
@@ -6693,23 +7586,27 @@ static const value_string nas_5gs_sm_elem_strings[] = {
{ DE_NAS_5GS_SM_REC_MBS_CONT, "Received MBS container" }, /* 9.11.4.30 Received MBS container */
{ DE_NAS_5GS_SM_PDU_SESSION_PAIR_ID, "PDU session pair ID" }, /* 9.11.4.32 PDU session pair ID */
{ DE_NAS_5GS_SM_RSN, "RSN" }, /* 9.11.4.33 RSN */
+ { DE_NAS_5GS_SM_N3QAI, "N3QAI" }, /* 9.11.4.36 N3QAI */
+ { DE_NAS_5GS_SM_N3GPP_DELAY_BUDGET, "Non-3GPP delay budget" }, /* 9.11.4.37 Non-3GPP delay budget */
+ { DE_NAS_5GS_SM_URSP_RULE_ENFORCE_REPORTS, "URSP rule enforcement reports" }, /* 9.11.4.38 URSP rule enforcement reports */
+ { DE_NAS_5GS_SM_PROT_DESC, "Protocol description" }, /* 9.11.4.39 Protocol description */
{ 0, NULL }
};
value_string_ext nas_5gs_sm_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_5gs_sm_elem_strings);
-#define NUM_NAS_5GS_SM_ELEM (sizeof(nas_5gs_sm_elem_strings)/sizeof(value_string))
-gint ett_nas_5gs_sm_elem[NUM_NAS_5GS_SM_ELEM];
+#define NUM_NAS_5GS_SM_ELEM array_length(nas_5gs_sm_elem_strings)
+int ett_nas_5gs_sm_elem[NUM_NAS_5GS_SM_ELEM];
-guint16(*nas_5gs_sm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
- guint32 offset, guint len,
- gchar *add_string, int string_len) = {
+uint16_t(*nas_5gs_sm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
+ uint32_t offset, unsigned len,
+ char *add_string, int string_len) = {
/* 5GS session management (5GSM) information elements */
de_nas_5gs_sm_5gsm_cap, /* 9.11.4.1 5GSM capability */
de_nas_5gs_sm_5gsm_cause, /* 9.11.4.2 5GSM cause */
de_nas_5gs_sm_always_on_pdu_ses_ind, /* 9.11.4.3 Always-on PDU session indication */
de_nas_5gs_sm_always_on_pdu_ses_req, /* 9.11.4.4 Always-on PDU session requested */
- de_nas_5gs_sm_5gsm_allowed_ssc_mode, /* 9.11.4.5 Allowed SSC mode */
+ de_nas_5gs_sm_5gsm_allowed_ssc_mode, /* 9.11.4.5 Allowed SSC mode */
NULL, /* 9.11.4.6 Extended protocol configuration options */
de_nas_5gs_sm_int_prot_max_data_rte, /* 9.11.4.7 Integrity protection maximum data rate */
de_nas_5gs_sm_mapped_eps_b_cont, /* 9.11.4.8 Mapped EPS bearer contexts */
@@ -6738,13 +7635,17 @@ guint16(*nas_5gs_sm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
de_nas_5gs_sm_rec_mbs_cont, /* 9.11.4.31 Received MBS container */
de_nas_5gs_sm_pdu_session_pair_id, /* 9.11.4.32 PDU session pair ID */
de_nas_5gs_sm_rsn, /* 9.11.4.33 RSN */
+ de_nas_5gs_sm_n3qai, /* 9.11.4.36 N3QAI */
+ de_nas_5gs_sm_n3gpp_delay_budget, /* 9.11.4.37 Non-3GPP delay budget */
+ de_nas_5gs_sm_ursp_rule_enforce_reports,/* 9.11.4.38 URSP rule enforcement reports */
+ de_nas_5gs_sm_prot_desc, /* 9.11.4.39 Protocol description */
NULL, /* NONE */
};
/* Gap fill msg decoding*/
static void
-nas_5gs_exp_not_dissected_yet(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_exp_not_dissected_yet(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
proto_tree_add_expert(tree, pinfo, &ei_nas_5gs_msg_not_dis, tvb, offset, len);
@@ -6754,11 +7655,11 @@ nas_5gs_exp_not_dissected_yet(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
* 8.2.1 Authentication request
*/
static void
-nas_5gs_mm_authentication_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_authentication_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -6784,11 +7685,11 @@ nas_5gs_mm_authentication_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
*8.2.2 Authentication response
*/
static void
-nas_5gs_mm_authentication_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_authentication_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -6806,11 +7707,11 @@ nas_5gs_mm_authentication_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
* 8.2.3 Authentication result
*/
static void
-nas_5gs_mm_authentication_result(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_authentication_result(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -6823,6 +7724,8 @@ nas_5gs_mm_authentication_result(tvbuff_t *tvb, proto_tree *tree, packet_info *p
ELEM_MAND_LV_E(NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_EAP_MESSAGE, NULL, ei_nas_5gs_missing_mandatory_element);
/* 38 ABBA ABBA 9.11.3.10 O TLV 4-n */
ELEM_OPT_TLV(0x38, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ABBA, NULL);
+ /* 55 AUN3 device security key AUN3 device security key 9.11.3.107 O TLV 36-n */
+ ELEM_OPT_TLV(0x55, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_AUN3_DEVICE_SEC_KEY, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -6831,11 +7734,11 @@ nas_5gs_mm_authentication_result(tvbuff_t *tvb, proto_tree *tree, packet_info *p
* 8.2.4 Authentication failure
*/
static void
-nas_5gs_mm_authentication_failure(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_authentication_failure(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -6853,11 +7756,11 @@ nas_5gs_mm_authentication_failure(tvbuff_t *tvb, proto_tree *tree, packet_info *
* 8.2.5 Authentication reject
*/
static void
-nas_5gs_mm_authentication_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_authentication_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -6875,11 +7778,11 @@ nas_5gs_mm_authentication_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
*/
static void
-nas_5gs_mm_registration_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
+nas_5gs_mm_registration_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -6887,7 +7790,7 @@ nas_5gs_mm_registration_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* Direction: UE to network */
pinfo->link_dir = P2P_DIR_UL;
- /* Initalize the private struct */
+ /* Initialize the private struct */
nas5gs_get_private_data(pinfo);
/* ngKSI NAS key set identifier 9.11.3.32 M V 1/2 H1*/
@@ -6989,16 +7892,22 @@ nas_5gs_mm_registration_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TLV(0x29, NAS_PDU_TYPE_EMM, DE_EMM_UE_REQUEST_TYPE, NULL);
/* 28 Paging restriction Paging restriction 9.11.3.77 O TLV 3-35 */
ELEM_OPT_TLV(0x28, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PAGING_RESTRICTION, NULL);
- /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 6-n */
+ /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x72, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_SERVICE_LEVEL_AA_CONT, NULL);
/* 32 NID NID 9.11.3.79 O TLV 8 */
ELEM_OPT_TLV(0x32, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NID, NULL);
- /* 16 MS determined PLMN with disaster condition PLMN identity 9.11.3.85 O TLV 5 */
- ELEM_OPT_TLV(0x16, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PLMN_ID, " - MS determined PLMN with disaster condition");
+ /* 16 UE determined PLMN with disaster condition PLMN identity 9.11.3.85 O TLV 5 */
+ ELEM_OPT_TLV(0x16, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PLMN_ID, " - UE determined PLMN with disaster condition");
/* 2A Requested PEIPS assistance information PEIPS assistance information 9.11.3.80 O TLV 3-n */
ELEM_OPT_TLV(0x2A, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PEIPS_ASSIST_INFO, " - Requested");
/* 3B Requested T3512 value GPRS timer 3 9.11.2.5 O TLV 3 */
ELEM_OPT_TLV(0x3B, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - Requested T3512 value");
+ /* 3C Unavailability information Unavailability information 9.11.2.20 O TLV 3-9 */
+ ELEM_OPT_TLV(0x3C, NAS_PDU_TYPE_EMM, DE_EMM_UNAVAIL_INFO, NULL);
+ /* 3F Non-3GPP path switching information Non-3GPP path switching information 9.11.3.102 O TLV 3 */
+ ELEM_OPT_TLV(0x3F, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_N3GPP_PATH_SWITCH_INFO, NULL);
+ /* 56 AUN3 indication AUN3 indication 9.11.3.104 O TLV 3 */
+ ELEM_OPT_TLV(0x56, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_AU3N_IND, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -7009,11 +7918,11 @@ nas_5gs_mm_registration_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
*/
static void
-nas_5gs_mm_registration_accept(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_registration_accept(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7098,7 +8007,7 @@ nas_5gs_mm_registration_accept(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
ELEM_OPT_TLV(0x29, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NB_N1_MODE_DRX_PARS, NULL);
/* 68 Extended rejected NSSAI Extended rejected NSSAI 9.11.3.75 O TLV 5-90 */
ELEM_OPT_TLV(0x68, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_EXTENDED_REJECTED_NSSAI, NULL);
- /* 7B Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 6-n */
+ /* 7B Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x7B, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_SERVICE_LEVEL_AA_CONT, NULL);
/* 33 Negotiated PEIPS assistance information PEIPS assistance information 9.11.3.80 O TLV 3-n */
ELEM_OPT_TLV(0x33, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PEIPS_ASSIST_INFO, " - Negotiated");
@@ -7120,6 +8029,26 @@ nas_5gs_mm_registration_accept(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
ELEM_OPT_TLV_E(0x71, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_EXT_CAG_INFO_LIST, NULL);
/* 7C NSAG information NSAG information 9.11.3.87 O TLV-E 9-3143 */
ELEM_OPT_TLV_E(0x7C, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NSAG_INFO, NULL);
+ /* 3D Equivalent SNPNs SNPN list 9.11.3.92 O TLV 11-137 */
+ ELEM_OPT_TLV(0x3D, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_SNPN_LIST, " - Equivalent SNPNs");
+ /* 32 NID NID 9.11.3.79 O TLV 8 */
+ ELEM_OPT_TLV(0x32, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NID, NULL);
+ /* 7D Registration accept type 6 IE container Type 6 IE container 9.11.3.98 O TLV-E 6-65538 */
+ ELEM_OPT_TLV_E(0x7D, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_TYPE_6_IE_CONT, " - Registration accept type 6 IE container");
+ /* 4B RAN timing synchronization RAN timing synchronization 9.11.3.95 O TLV 3 */
+ ELEM_OPT_TLV(0x4B, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_RAN_TIMING_SYNC, NULL);
+ /* 4C Alternative NSSAI Alternative NSSAI 9.11.3.97 O TLV 2-146 */
+ ELEM_OPT_TLV(0x4C, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ALT_NSSAI, NULL);
+ /* 4F Maximum time offset GPRS timer 3 9.11.2.5 O TLV 3 */
+ ELEM_OPT_TLV(0x4F, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - Maximum time offset");
+ /* 5B S-NSSAI time validity information S-NSSAI time validity information 9.11.3.101 O TLV 23-257 */
+ ELEM_OPT_TLV(0x5B, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_S_NSSAI_TIME_VALID_INFO, NULL);
+ /* 3C Unavailability configuration Unavailability configuration 9.11.2.21 O TLV 3-9 */
+ ELEM_OPT_TLV(0x3C, NAS_PDU_TYPE_EMM, DE_EMM_UNAVAIL_CONFIG, NULL);
+ /* 5C Feature authorization indication Feature authorization indication 9.11.3.105 O TLV 3-257 */
+ ELEM_OPT_TLV(0x5C, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_FEAT_AUTH_IND, NULL);
+ /* 61 On-demand NSSAI On-demand NSSAI 9.11.3.108 O TLV 5-210 */
+ ELEM_OPT_TLV(0x61, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ON_DEMAND_NSSAI, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -7129,11 +8058,11 @@ nas_5gs_mm_registration_accept(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
* 8.2.8 Registration complete
*/
static void
-nas_5gs_mm_registration_complete(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_registration_complete(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7149,27 +8078,23 @@ nas_5gs_mm_registration_complete(tvbuff_t *tvb, proto_tree *tree, packet_info *p
* 8.2.9 Registration reject
*/
static void
-nas_5gs_mm_registration_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_registration_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
/* 5GMM cause 5GMM cause 9.11.3.2 M V 1 */
ELEM_MAND_V(NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_5GMM_CAUSE, NULL, ei_nas_5gs_missing_mandatory_element);
-
/* 5F T3346 value GPRS timer 2 9.11.3.16 O TLV 3 */
ELEM_OPT_TLV(0x5F, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
-
/* 16 T3502 value GPRS timer 2 9.10.2.4 O TLV 3 */
ELEM_OPT_TLV(0x16, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3502 value");
-
/* 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);
-
/* 69 Rejected NSSAI Rejected NSSAI 9.11.3.46 O TLV 4-42 DE_NAS_5GS_MM_REJ_NSSAI*/
ELEM_OPT_TLV(0x69, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_REJ_NSSAI, NULL);
/* 75 CAG information list CAG information list 9.11.3.18A O TLV-E 3-n */
@@ -7186,6 +8111,12 @@ nas_5gs_mm_registration_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
ELEM_OPT_TLV(0x1D, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_5GS_TA_ID_LIST, " - Forbidden TAI(s) for the list of \"5GS forbidden tracking areas for roaming\"");
/* 1E Forbidden TAI(s) for the list of "5GS forbidden tracking areas for regional provision of service" 5GS tracking area identity list 9.11.3.9 O TLV 9-114 */
ELEM_OPT_TLV(0x1E, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_5GS_TA_ID_LIST, " - Forbidden TAI(s) for the list of \"5GS forbidden tracking areas for regional provision of service\"");
+ /* 3E N3IWF identifier N3IWF identifier 9.11.3.93 O TLV 7-n */
+ ELEM_OPT_TLV(0x3E, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_N3IWF_ID, NULL);
+ /* 4D TNAN information TNAN information 9.11.3.94 O TLV 3-n */
+ ELEM_OPT_TLV(0x4D, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_TNAN_INFO, NULL);
+ /* 62 Extended 5GMM cause Extended 5GMM cause 9.11.3.109 O TLV 3 */
+ ELEM_OPT_TLV(0x62, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_EXT_5GMM_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -7195,11 +8126,11 @@ nas_5gs_mm_registration_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
* 8.2.10 UL NAS transport
*/
static void
-nas_5gs_mm_ul_nas_transp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
+nas_5gs_mm_ul_nas_transp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
/* Direction: UE to network */
pinfo->link_dir = P2P_DIR_UL;
@@ -7207,7 +8138,7 @@ nas_5gs_mm_ul_nas_transp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
curr_offset = offset;
curr_len = len;
- /* Initalize the private struct */
+ /* Initialize the private struct */
nas5gs_get_private_data(pinfo);
/*Payload container type Payload container type 9.11.3.31 M V 1/2 */
@@ -7232,6 +8163,12 @@ nas_5gs_mm_ul_nas_transp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
ELEM_OPT_TV_SHORT(0xA0, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_MA_PDU_SES_INF, NULL);
/* F- Release assistance indication Release assistance indication 9.11.3.46A O TV 1 */
ELEM_OPT_TV_SHORT(0xF0, NAS_PDU_TYPE_ESM, DE_ESM_REL_ASSIST_IND, NULL);
+ /*4E Non-3GPP access path switching indication Non-3GPP access path switching indication 9.11.3.99 O TLV 3 */
+ ELEM_OPT_TLV(0x4E, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_N3GPP_ACC_PATH_SWITCH_IND, NULL);
+ /*5A Alternative S-NSSAI S-NSSAI 9.11.2.8 O TLV 3-10 */
+ ELEM_OPT_TLV(0x5A, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_S_NSSAI, " - Alternative S-NSSAI");
+ /* 9- Payload container information Payload container information 9.11.3.106 O TV 1 */
+ ELEM_OPT_TV_SHORT(0x90, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PAYLOAD_CONT_INFO, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -7241,11 +8178,11 @@ nas_5gs_mm_ul_nas_transp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
* 8.2.11 DL NAS transport
*/
static void
-nas_5gs_mm_dl_nas_transp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
+nas_5gs_mm_dl_nas_transp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
/* Direction: network to UE */
pinfo->link_dir = P2P_DIR_DL;
@@ -7253,7 +8190,7 @@ nas_5gs_mm_dl_nas_transp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
curr_offset = offset;
curr_len = len;
- /* Initalize the private struct */
+ /* Initialize the private struct */
nas5gs_get_private_data(pinfo);
/*Payload container type Payload container type 9.11.3.40 M V 1/2 H0*/
@@ -7281,11 +8218,11 @@ nas_5gs_mm_dl_nas_transp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
* 8.2.12 De-registration request (UE originating de-registration)
*/
static void
-nas_5gs_mm_de_reg_req_ue_orig(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_de_reg_req_ue_orig(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7293,9 +8230,12 @@ nas_5gs_mm_de_reg_req_ue_orig(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
/* De-registration type De-registration type 9.11.3.18 M V 1 */
/* ngKSI NAS key set identifier 9.11.3.32 M V 1/2 H1 */
ELEM_MAND_VV_SHORT(NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_DE_REG_TYPE, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NAS_KEY_SET_ID_H1, ei_nas_5gs_missing_mandatory_element);
-
/*5GS 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_element);
+ /* 3C Unavailability information Unavailability information 9.11.2.20 O TLV 3-9 */
+ ELEM_OPT_TLV(0x3C, NAS_PDU_TYPE_EMM, DE_EMM_UNAVAIL_INFO, 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);
@@ -7310,24 +8250,22 @@ nas_5gs_mm_de_reg_req_ue_orig(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
* 8.2.14 De-registration request (UE terminated de-registration)
*/
static void
-nas_5gs_mm_de_registration_req_ue_term(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_de_registration_req_ue_term(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
/* De-registration type De-registration type 9.11.3.20 M V 1 */
ELEM_MAND_V(NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_DE_REG_TYPE, NULL, ei_nas_5gs_missing_mandatory_element);
-
/* Spare half octet Spare half octet 9.5 M V 1/2 */
/* 58 5GMM cause 5GMM cause 9.11.3.2 O TV 2 */
ELEM_OPT_TV(0x58, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_5GMM_CAUSE, NULL);
/* 5F T3346 value GPRS timer 2 9.11.2.4 O TLV 3 */
ELEM_OPT_TLV(0x5F, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
-
/* 6D Rejected NSSAI Rejected NSSAI 9.11.3.46 O TLV 4-42 */
ELEM_OPT_TLV(0x6D, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_REJ_NSSAI, NULL);
/* 75 CAG information list CAG information list 9.11.3.18A O TLV-E 3-n */
@@ -7359,11 +8297,11 @@ nas_5gs_mm_de_registration_req_ue_term(tvbuff_t *tvb, proto_tree *tree, packet_i
* 8.2.16 Service request
*/
static void
-nas_5gs_mm_service_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_service_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7394,11 +8332,11 @@ nas_5gs_mm_service_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* 8.2.17 Service accept
*/
static void
-nas_5gs_mm_service_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_service_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7428,11 +8366,11 @@ nas_5gs_mm_service_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* 8.2.18 Service reject
*/
static void
-nas_5gs_mm_service_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_service_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7468,11 +8406,11 @@ nas_5gs_mm_service_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* 8.2.19 Configuration update command
*/
static void
-nas_5gs_mm_conf_upd_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_conf_upd_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7527,7 +8465,7 @@ nas_5gs_mm_conf_upd_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
ELEM_OPT_TV_SHORT(0xC0, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ADDITIONAL_CONF_IND, NULL);
/* 68 Extended rejected NSSAI Extended rejected NSSAI 9.11.3.75 O TLV 5-90 */
ELEM_OPT_TLV(0x68, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_EXTENDED_REJECTED_NSSAI, NULL);
- /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 6-n */
+ /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x72, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_SERVICE_LEVEL_AA_CONT, NULL);
/* 70 NSSRG information NSSRG information 9.11.3.82 O TLV-E 7-4099 */
ELEM_OPT_TLV_E(0x70, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NSSRG_INFO, NULL);
@@ -7545,6 +8483,26 @@ nas_5gs_mm_conf_upd_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
ELEM_OPT_TLV_E(0x73, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NSAG_INFO, NULL);
/* E- Priority indicator Priority indicator 9.11.3.91 O TV 1 */
ELEM_OPT_TV_SHORT(0xE0, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PRIO_IND, NULL);
+ /* 4B RAN timing synchronization RAN timing synchronization 9.11.3.95 O TLV 3 */
+ ELEM_OPT_TLV(0x4B, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_RAN_TIMING_SYNC, NULL);
+ /* 78 Extended LADN information Extended LADN information 9.11.3.96 O TLV-E 3-1787 */
+ ELEM_OPT_TLV_E(0x78, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_EXT_LADN_INFO, NULL);
+ /* 4C Alternative NSSAI Alternative NSSAI 9.11.3.97 O TLV 2-146 */
+ ELEM_OPT_TLV(0x4C, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ALT_NSSAI, NULL);
+ /* 7B S-NSSAI location validity information S-NSSAI location validity information 9.11.3.100 O TLV-E 17-38611 */
+ ELEM_OPT_TLV_E(0x7B, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ALT_NSSAI, NULL);
+ /* 5B S-NSSAI time validity information S-NSSAI time validity information 9.11.3.101 O TLV 23-257 */
+ ELEM_OPT_TLV(0x5B, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_S_NSSAI_TIME_VALID_INFO, NULL);
+ /* 4F Maximum time offset GPRS timer 3 9.11.2.5 O TLV 3 */
+ ELEM_OPT_TLV(0x4F, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - Maximum time offset");
+ /* 74 Partially allowed NSSAI Partial NSSAI 9.11.3.103 O TLV-E 3-808 */
+ ELEM_OPT_TLV_E(0x74, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PARTIAL_NSSAI, " - Partially allowed NSSAI");
+ /* 7A Partially rejected NSSAI Partial NSSAI 9.11.3.103 O TLV-E 3-808 */
+ ELEM_OPT_TLV_E(0x7A, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_PARTIAL_NSSAI, " - Partially rejected NSSAI");
+ /* 5C Feature authorization indication Feature authorization indication 9.11.3.105 O TLV 3-257 */
+ ELEM_OPT_TLV(0x5C, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_FEAT_AUTH_IND, NULL);
+ /* 61 On-demand NSSAI On-demand NSSAI 9.11.3.108 O TLV 5-210 */
+ ELEM_OPT_TLV(0x61, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ON_DEMAND_NSSAI, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -7554,10 +8512,10 @@ nas_5gs_mm_conf_upd_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* 8.2.20 Configuration update complete
*/
static void
-nas_5gs_mm_conf_update_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_conf_update_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint curr_len;
+ uint32_t curr_offset;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7569,11 +8527,11 @@ nas_5gs_mm_conf_update_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
* 8.2.21 Identity request
*/
static void
-nas_5gs_mm_id_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_id_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7592,11 +8550,11 @@ nas_5gs_mm_id_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
* 8.2.22 Identity response
*/
static void
-nas_5gs_mm_id_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_id_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7613,11 +8571,11 @@ nas_5gs_mm_id_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
* 8.2.23 Notification
*/
static void
-nas_5gs_mm_notification(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_notification(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7636,11 +8594,11 @@ nas_5gs_mm_notification(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* 8.2.24 Notification response
*/
static void
-nas_5gs_mm_notification_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_notification_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7656,11 +8614,11 @@ nas_5gs_mm_notification_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
* 8.2.25 Security mode command
*/
static void
-nas_5gs_mm_sec_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_sec_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7668,21 +8626,16 @@ nas_5gs_mm_sec_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
/* Direction: network to UE */
/*Selected NAS security algorithms NAS security algorithms 9.11.3.34 M V 1 */
ELEM_MAND_V(NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NAS_SEC_ALGO, NULL, ei_nas_5gs_missing_mandatory_element);
-
/*ngKSI NAS key set identifier 9.11.3.32 M V 1/2 */
/* Spare half octet Spare half octet 9.5 M V 1/2 */
proto_tree_add_item(tree, hf_nas_5gs_spare_half_octet, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
ELEM_MAND_V(NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_NAS_KEY_SET_ID, " - ngKSI", ei_nas_5gs_missing_mandatory_element);
-
/*Replayed UE security capabilities UE security capability 9.11.3.54 M LV 3-5*/
ELEM_MAND_LV(NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_UE_SEC_CAP, " - Replayed UE security capabilities", ei_nas_5gs_missing_mandatory_element);
-
/*E- IMEISV request IMEISV request 9.11.3.28 O TV 1*/
ELEM_OPT_TV_SHORT(0xE0, NAS_PDU_TYPE_EMM, DE_EMM_IMEISV_REQ, NULL);
-
/*57 Selected EPS NAS security algorithms EPS NAS security algorithms 9.11.3.25 O TV 2 */
ELEM_OPT_TV(0x57, NAS_PDU_TYPE_EMM, DE_EMM_NAS_SEC_ALGS, " - Selected EPS NAS security algorithms");
-
/*36 Additional 5G security information Additional 5G security information 9.11.3.12 O TLV 3 */
ELEM_OPT_TLV(0x36, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ADD_5G_SEC_INF, NULL);
/*78 EAP message EAP message 9.10.2.2 O TLV-E 7*/
@@ -7691,6 +8644,8 @@ nas_5gs_mm_sec_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
ELEM_OPT_TLV(0x38, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ABBA, NULL);
/*19 Replayed S1 UE security capabilities S1 UE security capability 9.11.3.48A O TLV 4-7 */
ELEM_OPT_TLV(0x19, NAS_PDU_TYPE_EMM, DE_EMM_UE_SEC_CAP, " - Replayed S1 UE security capabilities");
+ /* 55 AUN3 device security key AUN3 device security key 9.11.3.107 O TLV 36-257 */
+ ELEM_OPT_TLV(0x55, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_AUN3_DEVICE_SEC_KEY, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -7700,11 +8655,11 @@ nas_5gs_mm_sec_mode_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
* 8.2.26 Security mode complete
*/
static void
-nas_5gs_mm_sec_mode_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_sec_mode_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7725,11 +8680,11 @@ nas_5gs_mm_sec_mode_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
*/
static void
-nas_5gs_mm_sec_mode_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_sec_mode_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7750,11 +8705,11 @@ nas_5gs_mm_sec_mode_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
*/
static void
-nas_5gs_mm_5gmm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_5gmm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7772,11 +8727,11 @@ nas_5gs_mm_5gmm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
*/
static void
-nas_5gs_mm_control_plane_service_req(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_control_plane_service_req(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7820,11 +8775,11 @@ nas_5gs_mm_control_plane_service_req(tvbuff_t* tvb, proto_tree* tree, packet_inf
* 8.2.31 Network slice-specific authentication command
*/
static void
-nas_5gs_mm_nw_slice_spec_auth_cmd(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_nw_slice_spec_auth_cmd(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7843,11 +8798,11 @@ nas_5gs_mm_nw_slice_spec_auth_cmd(tvbuff_t* tvb, proto_tree* tree, packet_info*
* 8.2.32 Network slice-specific authentication complete
*/
static void
-nas_5gs_mm_nw_slice_spec_auth_comp(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_nw_slice_spec_auth_comp(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7866,11 +8821,11 @@ nas_5gs_mm_nw_slice_spec_auth_comp(tvbuff_t* tvb, proto_tree* tree, packet_info*
* 8.2.33 Network slice-specific authentication result
*/
static void
-nas_5gs_mm_nw_slice_spec_auth_res(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_nw_slice_spec_auth_res(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7889,11 +8844,11 @@ nas_5gs_mm_nw_slice_spec_auth_res(tvbuff_t* tvb, proto_tree* tree, packet_info*
* 8.2.34 Relay key request
*/
static void
-nas_5gs_mm_relay_key_request(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_relay_key_request(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7911,11 +8866,11 @@ nas_5gs_mm_relay_key_request(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo
* 8.2.35 Relay key accept
*/
static void
-nas_5gs_mm_relay_key_accept(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_relay_key_accept(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7935,11 +8890,11 @@ nas_5gs_mm_relay_key_accept(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo
* 8.2.36 Relay key reject
*/
static void
-nas_5gs_mm_relay_key_reject(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_relay_key_reject(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7957,11 +8912,11 @@ nas_5gs_mm_relay_key_reject(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo
* 8.2.37 Relay authentication request
*/
static void
-nas_5gs_mm_relay_authentication_request(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_relay_authentication_request(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -7979,11 +8934,11 @@ nas_5gs_mm_relay_authentication_request(tvbuff_t* tvb, proto_tree* tree, packet_
* 8.2.38 Relay authentication response
*/
static void
-nas_5gs_mm_relay_authentication_response(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, guint32 offset, guint len)
+nas_5gs_mm_relay_authentication_response(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8003,11 +8958,11 @@ nas_5gs_mm_relay_authentication_response(tvbuff_t* tvb, proto_tree* tree, packet
* 8.3.1 PDU session establishment request
*/
static void
-nas_5gs_sm_pdu_ses_est_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_est_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8017,31 +8972,22 @@ nas_5gs_sm_pdu_ses_est_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
/*Integrity protection maximum data rate Integrity protection maximum data rate 9.11.4.7 M V 2*/
ELEM_MAND_V(NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_INT_PROT_MAX_DATA_RTE, NULL, ei_nas_5gs_missing_mandatory_element);
-
/*9- PDU session type PDU session type 9.11.4.5 O TV 1*/
ELEM_OPT_TV_SHORT(0x90, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_PDU_SESSION_TYPE, NULL);
-
/*A- SSC mode SSC mode 9.11.4.9 O TV 1*/
ELEM_OPT_TV_SHORT(0xa0, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_SSC_MODE, NULL);
-
/*28 5GSM capability 5GSM capability 9.11.4.10 O TLV 3-15 */
ELEM_OPT_TLV(0x28, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_5GSM_CAP, NULL);
-
- /*55 Maximum number of supported packet filter Maximum number of suuported packet filter 9.11.4.9 O TV 3*/
+ /*55 Maximum number of supported packet filter Maximum number of supported packet filter 9.11.4.9 O TV 3*/
ELEM_OPT_TV(0x55, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_MAX_NUM_SUP_PKT_FLT, NULL);
-
/* B- Always-on PDU session requested Always-on PDU session requested 9.11.4.4 O TV 1 */
ELEM_OPT_TV_SHORT(0xB0, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_ALWAYS_ON_PDU_SES_REQ, NULL);
-
/*39 SM PDU DN request container SM PDU DN request container 9.11.4.15 O TLV 3-255 */
ELEM_OPT_TLV(0x39, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_PDU_DN_REQ_CONT, NULL);
-
/*7B Extended protocol configuration options Extended protocol configuration options 9.11.4.2 O TLV-E 4-65538*/
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
-
/* 66 Header compression configuration Header compression configuration 9.11.4.24 O TLV 5-257 */
ELEM_OPT_TLV(0x66, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_IP_HDR_COMP_CONF, NULL);
-
/* 6E DS-TT Ethernet port MAC address DS-TT Ethernet port MAC address 9.11.4.25 O TLV 8 */
ELEM_OPT_TLV(0x6E, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_DS_TT_ETH_PORT_MAC_ADDR, NULL);
/* 6F UE-DS-TT residence time UE-DS-TT residence time 9.11.4.26 O TLV 10 */
@@ -8052,7 +8998,7 @@ nas_5gs_sm_pdu_ses_est_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
ELEM_OPT_TLV(0x1F, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_ETH_HDR_COMP_CONF, NULL);
/* 29 Suggested interface identifier PDU address 9.11.4.10 O TLV 11 */
ELEM_OPT_TLV(0x29, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_PDU_ADDRESS, " - Suggested interface identifier");
- /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 6-n */
+ /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x72, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_SERVICE_LEVEL_AA_CONT, NULL);
/* 70 Requested MBS container Requested MBS container 9.11.4.30 O TLV-E 8-65538 */
ELEM_OPT_TLV_E(0x70, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_REQ_MBS_CONT, NULL);
@@ -8060,6 +9006,8 @@ nas_5gs_sm_pdu_ses_est_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
ELEM_OPT_TLV(0x34, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_PDU_SESSION_PAIR_ID, NULL);
/* 35 RSN RSN 9.11.4.33 O TLV 3 */
ELEM_OPT_TLV(0x35, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_RSN, NULL);
+ /* 36 URSP rule enforcement reports URSP rule enforcement reports 9.11.4.38 O TLV 4-n */
+ ELEM_OPT_TLV(0x36, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_URSP_RULE_ENFORCE_REPORTS, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -8069,11 +9017,11 @@ nas_5gs_sm_pdu_ses_est_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
* 8.3.2 PDU session establishment accept
*/
static void
-nas_5gs_sm_pdu_ses_est_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_est_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8081,11 +9029,10 @@ nas_5gs_sm_pdu_ses_est_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
/* Direction: network to UE */
pinfo->link_dir = P2P_DIR_DL;
+ /*Selected SSC mode SSC mode 9.11.4.9 M V 1/2 H1*/
proto_tree_add_item(tree, hf_nas_5gs_sm_sel_sc_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
/*Selected PDU session type PDU session type 9.11.4.5 M V 1/2 H0*/
ELEM_MAND_V(NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_PDU_SESSION_TYPE, " - Selected PDU session type", ei_nas_5gs_missing_mandatory_element);
- /*Selected SSC mode SSC mode 9.11.4.9 M V 1/2 H1*/
-
/*Authorized QoS rules QoS rules 9.11.4.6 M LV-E 2-65537 DE_NAS_5GS_SM_QOS_RULES*/
ELEM_MAND_LV_E(NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_QOS_RULES, " - Authorized QoS rules", ei_nas_5gs_missing_mandatory_element);
/*Session AMBR Session-AMBR 9.11.4.14 M LV 7 */
@@ -8098,7 +9045,6 @@ nas_5gs_sm_pdu_ses_est_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
ELEM_OPT_TV(0x56, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - RQ timer value");
/*22 S-NSSAI S-NSSAI 9.11.2.8 O TLV 3-6*/
ELEM_OPT_TLV(0x22, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_S_NSSAI, NULL);
-
/* 8- Always-on PDU session indication Always-on PDU session indication 9.11.4.3 O TV 1 */
ELEM_OPT_TV_SHORT(0x80, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_ALWAYS_ON_PDU_SES_IND, NULL);
/* 75 Mapped EPS bearer contexts Mapped EPS bearer contexts 9.11.4.9 O TLV-E 7-65538 */
@@ -8123,10 +9069,14 @@ nas_5gs_sm_pdu_ses_est_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
ELEM_OPT_TLV(0x66, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_IP_HDR_COMP_CONF, NULL);
/* 1F Ethernet header compression configuration Ethernet header compression configuration 9.11.4.28 O TLV 3 */
ELEM_OPT_TLV(0x1F, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_ETH_HDR_COMP_CONF, NULL);
- /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 6-n */
+ /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x72, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_SERVICE_LEVEL_AA_CONT, NULL);
/* 71 Received MBS container Received MBS container 9.11.4.31 O TLV-E 8-65538 */
ELEM_OPT_TLV_E(0x71, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_REC_MBS_CONT, NULL);
+ /* 70 N3QAI N3QAI 9.11.4.36 O TLV-E 9-n */
+ ELEM_OPT_TLV_E(0x70, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_N3QAI, NULL);
+ /* 36 Protocol description Protocol description 9.11.4.39 O TLV-E 6-n */
+ ELEM_OPT_TLV_E(0x36, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_PROT_DESC, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -8137,11 +9087,11 @@ nas_5gs_sm_pdu_ses_est_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
*/
static void
-nas_5gs_sm_pdu_ses_est_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_est_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8163,7 +9113,7 @@ nas_5gs_sm_pdu_ses_est_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
/* 1D Re-attempt indicator Re-attempt indicator 9.11.4.17 O TLV 3 */
ELEM_OPT_TLV(0x1D, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_RE_ATTEMPT_IND, NULL);
- /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 6-n */
+ /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x72, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_SERVICE_LEVEL_AA_CONT, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -8175,11 +9125,11 @@ nas_5gs_sm_pdu_ses_est_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
*/
static void
-nas_5gs_sm_pdu_ses_auth_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_auth_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8202,11 +9152,11 @@ nas_5gs_sm_pdu_ses_auth_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
*/
static void
-nas_5gs_sm_pdu_ses_auth_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_auth_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8229,11 +9179,11 @@ nas_5gs_sm_pdu_ses_auth_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
* 8.3.6 PDU session authentication result
*/
static void
-nas_5gs_sm_pdu_ses_auth_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_auth_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8256,11 +9206,11 @@ nas_5gs_sm_pdu_ses_auth_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
*/
static void
-nas_5gs_sm_pdu_ses_mod_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_mod_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8270,42 +9220,36 @@ nas_5gs_sm_pdu_ses_mod_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
/* 28 5GSM capability 5GSM capability 9.11.4.10 O TLV 3-15 */
ELEM_OPT_TLV(0x28, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_5GSM_CAP, NULL);
-
/* 59 5GSM cause 5GSM cause 9.11.4.2 O TV 2 */
ELEM_OPT_TV(0x59, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_5GSM_CAUSE, NULL);
-
- /*55 Maximum number of suuported packet filter Maximum number of suuported packet filter 9.11.4.6 O TV 3*/
+ /* 55 Maximum number of supported packet filter Maximum number of supported packet filter 9.11.4.6 O TV 3*/
ELEM_OPT_TV(0x55, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_MAX_NUM_SUP_PKT_FLT, NULL);
-
/* B- Always-on PDU session requested Always-on PDU session requested 9.11.4.4 O TV 1 */
ELEM_OPT_TV_SHORT(0xB0, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_ALWAYS_ON_PDU_SES_REQ, NULL);
-
/* 13 Integrity protection maximum data rate Integrity protection maximum data rate 9.11.4.7 O TV 3 */
ELEM_OPT_TV(0x13, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_INT_PROT_MAX_DATA_RTE, NULL);
-
/* 7A Requested QoS rules QoS rules 9.11.4.6 O TLV-E 3-65538 */
ELEM_OPT_TLV_E(0x7A, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_QOS_RULES, " - Requested QoS rules");
-
/* 79 Requested QoS flow descriptions QoS flow descriptions 9.11.4.12 O TLV-E 5-65538 */
ELEM_OPT_TLV_E(0x79, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_QOS_FLOW_DES, " - Authorized");
-
/* 75 Mapped EPS bearer contexts Mapped EPS bearer contexts 9.11.4.8 O TLV-E 7-65538 */
ELEM_OPT_TLV_E(0x75, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_MAPPED_EPS_B_CONT, NULL);
/* 7B Extended protocol configuration options Extended protocol configuration options 9.11.4.2 O TLV - E 4 - 65538*/
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
-
/* 74 Port management information container Port management information container 9.11.4.27 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x74, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_PORT_MGNT_INF_CONT, NULL);
-
/* 66 IP header compression configuration Header compression configuration 9.11.4.24 O TLV 5-257 */
ELEM_OPT_TLV(0x66, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_IP_HDR_COMP_CONF, NULL);
-
/* 1F Ethernet header compression configuration Ethernet header compression configuration 9.11.4.28 O TLV 3 */
ELEM_OPT_TLV(0x1F, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_ETH_HDR_COMP_CONF, NULL);
/* 70 Requested MBS container Requested MBS container 9.11.4.30 O TLV-E 8-65538 */
ELEM_OPT_TLV_E(0x70, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_REQ_MBS_CONT, NULL);
- /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 6-n */
+ /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x72, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_SERVICE_LEVEL_AA_CONT, NULL);
+ /* 73 Non-3GPP delay budget Non-3GPP delay budget 9.11.4.37 O TLV-E 6-n */
+ ELEM_OPT_TLV_E(0x73, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_N3GPP_DELAY_BUDGET, NULL);
+ /* 36 URSP rule enforcement reports URSP rule enforcement reports 9.11.4.38 O TLV 4-n */
+ ELEM_OPT_TLV(0x36, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_URSP_RULE_ENFORCE_REPORTS, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -8316,11 +9260,11 @@ nas_5gs_sm_pdu_ses_mod_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
*/
static void
-nas_5gs_sm_pdu_ses_mod_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_mod_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8352,11 +9296,11 @@ nas_5gs_sm_pdu_ses_mod_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
*/
static void
-nas_5gs_sm_pdu_ses_mod_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_mod_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8380,23 +9324,26 @@ nas_5gs_sm_pdu_ses_mod_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
ELEM_OPT_TLV_E(0x79, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_QOS_FLOW_DES, " - Authorized");
/*7B Extended protocol configuration options Extended protocol configuration options 9.11.4.2 O TLV-E 4-65538*/
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
-
/* 77 ATSSS container ATSSS container 9.11.4.22 O TLV-E 3-65538 */
ELEM_OPT_TLV_E(0x77, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_ATSSS_CONT, NULL);
/* 66 66 IP header compression configuration IP header compression configuration 9.11.4.24 O TLV 5-257 */
ELEM_OPT_TLV(0x66, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_IP_HDR_COMP_CONF, NULL);
-
/* 74 Port management information container Port management information container 9.11.4.27 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x74, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_PORT_MGNT_INF_CONT, NULL);
-
/* 1E Serving PLMN rate control Serving PLMN rate control 9.11.4.20 O TLV 4 */
ELEM_OPT_TLV(0x1E, NAS_PDU_TYPE_ESM, DE_ESM_SERV_PLMN_RATE_CTRL, NULL);
- /* 1F Ethernet header compression configuration Ethernet heaer compression configuration 9.11.4.28 O TLV 3 */
+ /* 1F Ethernet header compression configuration Ethernet header compression configuration 9.11.4.28 O TLV 3 */
ELEM_OPT_TLV(0x1F, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_ETH_HDR_COMP_CONF, NULL);
/* 71 Received MBS container Received MBS container 9.11.4.31 O TLV-E 8-65538 */
ELEM_OPT_TLV_E(0x71, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_REC_MBS_CONT, NULL);
- /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 6-n */
+ /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x72, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_SERVICE_LEVEL_AA_CONT, NULL);
+ /* 5A Alternative S-NSSAI S-NSSAI 9.11.2.8 O TLV 3-10 */
+ ELEM_OPT_TLV(0x5A, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_S_NSSAI, " - Alternative S-NSSAI");
+ /* 70 N3QAI N3QAI 9.11.4.36 O TLV-E 9-n */
+ ELEM_OPT_TLV_E(0x70, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_N3QAI, NULL);
+ /* 38 Protocol description Protocol description 9.11.4.39 O TLV-E 6-n */
+ ELEM_OPT_TLV_E(0x38, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_PROT_DESC, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -8407,11 +9354,11 @@ nas_5gs_sm_pdu_ses_mod_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
*/
static void
-nas_5gs_sm_pdu_ses_mod_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_mod_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8437,11 +9384,11 @@ nas_5gs_sm_pdu_ses_mod_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
*/
static void
-nas_5gs_sm_pdu_ses_mod_com_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_mod_com_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8463,11 +9410,11 @@ nas_5gs_sm_pdu_ses_mod_com_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
*/
static void
-nas_5gs_sm_pdu_ses_rel_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_rel_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8489,11 +9436,11 @@ nas_5gs_sm_pdu_ses_rel_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
*/
static void
-nas_5gs_sm_pdu_ses_rel_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_rel_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8503,7 +9450,6 @@ nas_5gs_sm_pdu_ses_rel_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
/* 5GSM cause 5GSM cause 9.11.4.2 M V 1 */
ELEM_MAND_V(NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_5GSM_CAUSE, NULL, ei_nas_5gs_missing_mandatory_element);
-
/*7B Extended protocol configuration options Extended protocol configuration options 9.11.4.2 O TLV - E 4 - 65538*/
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
@@ -8516,11 +9462,11 @@ nas_5gs_sm_pdu_ses_rel_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
*/
static void
-nas_5gs_sm_pdu_ses_rel_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_rel_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8530,22 +9476,20 @@ nas_5gs_sm_pdu_ses_rel_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
/* 5GSM cause 5GSM cause 9.11.4.2 M V 1 */
ELEM_MAND_V(NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_5GSM_CAUSE, NULL, ei_nas_5gs_missing_mandatory_element);
-
/*37 Back-off timer value GPRS timer 3 9.11.2.5 O TLV 3 */
ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - Back-off timer value");
-
/*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);
-
/* 61 5GSM congestion re-attempt indicator 5GSM congestion re-attempt indicator 9.11.4.21 O TLV 3 */
ELEM_OPT_TLV(0x61, NAS_5GS_PDU_TYPE_SM, DE_NAS_5GS_SM_5GSM_CONG_RE_ATTEMPT_IND, NULL);
-
/* 7B Extended protocol configuration options Extended protocol configuration options 9.11.4.2 O TLV - E 4 - 65538*/
ELEM_OPT_TLV_E(0x7B, NAS_PDU_TYPE_ESM, DE_ESM_EXT_PCO, NULL);
/* D- Access type Access type 9.11.2.1A O TV 1 */
ELEM_OPT_TV_SHORT(0xD0, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_ACCESS_TYPE, NULL);
- /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 6-n */
+ /* 72 Service-level-AA container Service-level-AA container 9.11.2.10 O TLV-E 4-65538 */
ELEM_OPT_TLV_E(0x72, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_SERVICE_LEVEL_AA_CONT, NULL);
+ /* 5A Alternative S-NSSAI S-NSSAI 9.11.2.8 O TLV 3-10 */
+ ELEM_OPT_TLV(0x5A, NAS_5GS_PDU_TYPE_COMMON, DE_NAS_5GS_CMN_S_NSSAI, " - Alternative S-NSSAI");
EXTRANEOUS_DATA_CHECK(curr_len, 0, pinfo, &ei_nas_5gs_extraneous_data);
@@ -8556,11 +9500,11 @@ nas_5gs_sm_pdu_ses_rel_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
*/
static void
-nas_5gs_sm_pdu_ses_rel_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_pdu_ses_rel_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8581,11 +9525,11 @@ nas_5gs_sm_pdu_ses_rel_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
*/
static void
-nas_5gs_sm_5gsm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_5gsm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8602,11 +9546,11 @@ nas_5gs_sm_5gsm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
*/
static void
-nas_5gs_sm_serv_level_auth_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_serv_level_auth_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8623,11 +9567,11 @@ nas_5gs_sm_serv_level_auth_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
*/
static void
-nas_5gs_sm_serv_level_auth_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_serv_level_auth_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8644,11 +9588,11 @@ nas_5gs_sm_serv_level_auth_comp(tvbuff_t *tvb, proto_tree *tree, packet_info *pi
*/
static void
-nas_5gs_sm_remote_ue_report(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_remote_ue_report(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8667,10 +9611,10 @@ nas_5gs_sm_remote_ue_report(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
*/
static void
-nas_5gs_sm_remote_ue_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_sm_remote_ue_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint curr_len;
+ uint32_t curr_offset;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8686,11 +9630,11 @@ nas_5gs_sm_remote_ue_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
* 6.1.6.4.4-1 n1SmInfoFromUE
*/
static void
-nas_5gs_n1_sm_info_from_ue(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_n1_sm_info_from_ue(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8741,11 +9685,11 @@ nas_5gs_n1_sm_info_from_ue(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
* 6.1.6.4.4-2 n1SmInfoToUE
*/
static void
-nas_5gs_n1_sm_info_to_ue(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_n1_sm_info_to_ue(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8781,10 +9725,10 @@ nas_5gs_n1_sm_info_to_ue(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
* 6.1.6.4.4 unknownN1SmInfo
*/
static void
-nas_5gs_unknown_n1_sm_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_5gs_unknown_n1_sm_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint curr_len;
+ uint32_t curr_offset;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -8836,9 +9780,9 @@ static void
de_nas_5gs_ursp_traff_desc(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree)
{
int len = tvb_reported_length(tvb);
- guint32 traff_desc;
+ uint32_t traff_desc;
int offset = 0;
- guint32 length, i;
+ uint32_t length, i;
/*
Traffic descriptor (octets v+5 to w)
@@ -9116,9 +10060,9 @@ static void
de_nas_5gs_ursp_r_sel_desc(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree)
{
int len = tvb_reported_length(tvb);
- guint32 type_id;
+ uint32_t type_id;
int offset = 0;
- guint32 length;
+ uint32_t length;
while (offset < len) {
@@ -9205,9 +10149,9 @@ de_nas_5gs_ue_policies_ursp(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree)
{
proto_tree* sub_tree, * traff_desc_sub_tree, *r_sel_list_tree, *r_sel_tree, *r_sel_desc_sub_tree;
proto_item* item, *r_sel_list;
- guint32 len = tvb_reported_length(tvb);
- guint32 curr_offset = 0, offset;
- guint32 list_len, traff_desc_len, r_sel_desc_lst_len, r_sel_desc_len, r_sel_desc_cont_len;
+ uint32_t len = tvb_reported_length(tvb);
+ uint32_t curr_offset = 0, offset;
+ uint32_t list_len, traff_desc_len, r_sel_desc_lst_len, r_sel_desc_len, r_sel_desc_cont_len;
int i = 0;
while ((curr_offset) < len) {
@@ -9274,15 +10218,15 @@ static const value_string nas_5gs_updp_ue_policy_part_type_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_updp_ue_policy_section_mgm_lst(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree *sub_tree, *sub_tree2, *sub_tree3;
proto_item* item;
- guint32 curr_offset = offset;
- guint32 sub_list_len, instr_len, policy_len;
+ uint32_t curr_offset = offset;
+ uint32_t sub_list_len, instr_len, policy_len;
/* UE policy section management list contents Octet 4 - Octet z*/
int i = 0;
@@ -9299,7 +10243,7 @@ de_nas_5gs_updp_ue_policy_section_mgm_lst(tvbuff_t* tvb, proto_tree* tree, packe
* MNC digit 3 MCC digit 3
* MNC digit 2 MNC digit 1
*/
- curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, TRUE);
+ curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, true);
/* UE policy section management sublist contents*/
/* Instruction X */
int j = 1;
@@ -9319,7 +10263,7 @@ de_nas_5gs_updp_ue_policy_section_mgm_lst(tvbuff_t* tvb, proto_tree* tree, packe
instr_len = instr_len - 2;
int k = 1;
while (instr_len > 0) {
- guint32 ue_policy_type;
+ uint32_t ue_policy_type;
sub_tree3 = proto_tree_add_subtree_format(sub_tree2, tvb, curr_offset, -1, ett_nas_5gs_updp_ue_policy_section_mgm_sublst, &item,
"UE policy part %u", k);
/* UE policy part contents length */
@@ -9350,15 +10294,15 @@ de_nas_5gs_updp_ue_policy_section_mgm_lst(tvbuff_t* tvb, proto_tree* tree, packe
}
/* D.6.3 UE policy section management result */
-static guint16
+static uint16_t
de_nas_5gs_updp_ue_policy_section_mgm_res(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree *sub_tree, *sub_tree2;
proto_item* item;
- guint32 curr_offset = offset;
- guint32 number_of_result;
+ uint32_t curr_offset = offset;
+ uint32_t number_of_result;
/* UE policy section management result contents Octet 4 - Octet z*/
int i = 0;
@@ -9374,7 +10318,7 @@ de_nas_5gs_updp_ue_policy_section_mgm_res(tvbuff_t* tvb, proto_tree* tree, packe
* MNC digit 3 MCC digit 3
* MNC digit 2 MNC digit 1
*/
- curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, TRUE);
+ curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, true);
/* UE policy section management subresult contents*/
/* Result X */
int j = 1;
@@ -9399,26 +10343,26 @@ de_nas_5gs_updp_ue_policy_section_mgm_res(tvbuff_t* tvb, proto_tree* tree, packe
}
/* D.6.4 UPSI list */
-static guint16
+static uint16_t
de_nas_5gs_updp_upsi_list(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree* sub_tree;
proto_item* item;
- guint32 curr_offset = offset;
- guint32 end_offset = offset + len;
- gint32 sublist_len;
+ uint32_t curr_offset = offset;
+ uint32_t end_offset = offset + len;
+ int32_t sublist_len;
/* UPSI sublist (PLMN 1) */
int i = 1;
while (curr_offset < end_offset ) {
sub_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, ett_nas_5gs_updp_upsi_list, &item,
- " UPSI sublist (PLMN %u)", i);
+ " UPSI sublist (PLMN %u)", i++);
proto_tree_add_item_ret_int(sub_tree, hf_nas_5gs_upsi_sublist_len, tvb, curr_offset, 2, ENC_BIG_ENDIAN, &sublist_len);
proto_item_set_len(item, sublist_len + 2);
curr_offset += 2;
- curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, TRUE);
+ curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, sub_tree, curr_offset, E212_NONE, true);
sublist_len -= 3;
while (sublist_len > 0) {
proto_tree_add_item(sub_tree, hf_nas_5gs_upsc, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
@@ -9432,10 +10376,10 @@ de_nas_5gs_updp_upsi_list(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U
}
/* D.6.5 UE policy classmark */
-static guint16
+static uint16_t
de_nas_5gs_updp_ue_policy_cm(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
static int* const flags_oct3[] = {
&hf_nas_5gs_spare_b7,
@@ -9455,12 +10399,12 @@ de_nas_5gs_updp_ue_policy_cm(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo
}
/* D.6.6 UE OS Id */
-static guint16
+static uint16_t
de_nas_5gs_updp_ue_os_id(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
/* OS Id:
* The OS Id is coded as a sequence of a sixteen octet OS Id value field.
* The OS Id value field is defined as Universally Unique IDentifier (UUID) as specified in IETF RFC 4122 [35A].
@@ -9476,12 +10420,12 @@ static true_false_string tfs_nas_5gs_nssui = {
"UE is allowed to accept URSP signalled by non-subscribed SNPNs"
};
-static guint16
+static uint16_t
de_nas_5gs_updp_ue_policy_nw_classmark(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
proto_tree_add_bits_item(tree, hf_nas_5gs_spare_bits, tvb, (curr_offset << 3), 7, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_nas_5gs_nssui, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
@@ -9511,10 +10455,10 @@ static const value_string nas_5gs_updp_upds_cause_vals[] = {
{ 0, NULL }
};
-static guint16
+static uint16_t
de_nas_5gs_updp_upds_cause(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
- guint32 offset, guint len,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len,
+ char* add_string _U_, int string_len _U_)
{
proto_tree_add_item(tree, hf_nas_5gs_upds_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -9522,12 +10466,12 @@ de_nas_5gs_updp_upds_cause(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _
}
/* 24.587 8.3.2 Requested UE policies */
-static guint16
+static uint16_t
de_nas_5gs_updp_req_ue_policies(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len _U_,
- gchar* add_string _U_, int string_len _U_)
+ uint32_t offset, unsigned len _U_,
+ char* add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ uint32_t curr_offset = offset;
static int* const flags[] = {
&hf_nas_5gs_spare_b7,
@@ -9581,12 +10525,12 @@ static const value_string nas_5gs_updp_elem_strings[] = {
};
value_string_ext nas_5gs_updp_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_5gs_updp_elem_strings);
-#define NUM_NAS_5GS_UPDP_ELEM (sizeof(nas_5gs_updp_elem_strings)/sizeof(value_string))
-gint ett_nas_5gs_updp_elem[NUM_NAS_5GS_UPDP_ELEM];
+#define NUM_NAS_5GS_UPDP_ELEM array_length(nas_5gs_updp_elem_strings)
+int ett_nas_5gs_updp_elem[NUM_NAS_5GS_UPDP_ELEM];
-guint16(*nas_5gs_updp_elem_fcn[])(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
- guint32 offset, guint len,
- gchar* add_string, int string_len) = {
+uint16_t(*nas_5gs_updp_elem_fcn[])(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo,
+ uint32_t offset, unsigned len,
+ char* add_string, int string_len) = {
/* 5GS session management (5GSM) information elements */
de_nas_5gs_updp_ue_policy_section_mgm_lst, /* D.6.2 UE policy section management list */
de_nas_5gs_updp_ue_policy_section_mgm_res, /* D.6.3 UE policy section management result */
@@ -9604,11 +10548,11 @@ guint16(*nas_5gs_updp_elem_fcn[])(tvbuff_t* tvb, proto_tree* tree, packet_info*
/* D.5.1 Manage UE policy command */
static void
-nas_5gs_updp_manage_ue_policy_cmd(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, guint32 offset, guint len)
+nas_5gs_updp_manage_ue_policy_cmd(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -9631,7 +10575,7 @@ Direction: UE to network
*/
static void
-nas_5gs_updp_manage_ue_policy_cmd_cmpl(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pinfo, guint32 offset _U_, guint len _U_)
+nas_5gs_updp_manage_ue_policy_cmd_cmpl(tvbuff_t* tvb _U_, proto_tree* tree _U_, packet_info* pinfo, uint32_t offset _U_, unsigned len _U_)
{
/* Direction: UE to network */
pinfo->link_dir = P2P_DIR_UL;
@@ -9641,11 +10585,11 @@ nas_5gs_updp_manage_ue_policy_cmd_cmpl(tvbuff_t* tvb _U_, proto_tree* tree _U_,
/* D.5.3 Manage UE policy command reject*/
static void
-nas_5gs_updp_manage_ue_policy_cmd_rej(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, guint32 offset, guint len)
+nas_5gs_updp_manage_ue_policy_cmd_rej(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -9661,11 +10605,11 @@ nas_5gs_updp_manage_ue_policy_cmd_rej(tvbuff_t* tvb, proto_tree* tree, packet_in
/* D.5.4 UE state indication */
static void
-nas_5gs_updp_ue_state_indication(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, guint32 offset, guint len)
+nas_5gs_updp_ue_state_indication(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -9687,11 +10631,11 @@ nas_5gs_updp_ue_state_indication(tvbuff_t* tvb, proto_tree* tree, packet_info* p
/* 24.587 7.2.1 UE policy provisioning request */
static void
-nas_5gs_updp_ue_policy_prov_req(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, guint32 offset, guint len)
+nas_5gs_updp_ue_policy_prov_req(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -9707,11 +10651,11 @@ nas_5gs_updp_ue_policy_prov_req(tvbuff_t* tvb, proto_tree* tree, packet_info* pi
/* 24.587 7.2.2 UE policy provisioning reject */
static void
-nas_5gs_updp_ue_policy_prov_rej(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, guint32 offset, guint len)
+nas_5gs_updp_ue_policy_prov_rej(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, uint32_t offset, unsigned len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ uint32_t curr_offset;
+ uint32_t consumed;
+ unsigned curr_len;
curr_offset = offset;
curr_len = len;
@@ -9785,9 +10729,9 @@ static const value_string nas_5gs_mm_message_type_vals[] = {
static value_string_ext nas_5gs_mm_msg_strings_ext = VALUE_STRING_EXT_INIT(nas_5gs_mm_message_type_vals);
-#define NUM_NAS_5GS_MM_MSG (sizeof(nas_5gs_mm_message_type_vals)/sizeof(value_string))
-static gint ett_nas_5gs_mm_msg[NUM_NAS_5GS_MM_MSG];
-static void(*nas_5gs_mm_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len) = {
+#define NUM_NAS_5GS_MM_MSG array_length(nas_5gs_mm_message_type_vals)
+static int ett_nas_5gs_mm_msg[NUM_NAS_5GS_MM_MSG];
+static void(*nas_5gs_mm_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len) = {
nas_5gs_mm_registration_req, /* 0x41 Registration request */
nas_5gs_mm_registration_accept, /* 0x42 Registration accept */
nas_5gs_mm_registration_complete, /* 0x43 Registration complete */
@@ -9889,10 +10833,10 @@ static void(*nas_5gs_mm_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info
};
static value_string_ext nas_5gs_sm_msg_strings_ext = VALUE_STRING_EXT_INIT(nas_5gs_sm_message_type_vals);
-#define NUM_NAS_5GS_SM_MSG (sizeof(nas_5gs_sm_message_type_vals)/sizeof(value_string))
-static gint ett_nas_5gs_sm_msg[NUM_NAS_5GS_SM_MSG];
+#define NUM_NAS_5GS_SM_MSG array_length(nas_5gs_sm_message_type_vals)
+static int ett_nas_5gs_sm_msg[NUM_NAS_5GS_SM_MSG];
-static void(*nas_5gs_sm_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len) = {
+static void(*nas_5gs_sm_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len) = {
nas_5gs_sm_pdu_ses_est_req, /* 0xc1 PDU session establishment request */
nas_5gs_sm_pdu_ses_est_acc, /* 0xc2 PDU session establishment accept */
nas_5gs_sm_pdu_ses_est_rej, /* 0xc3 PDU session establishment reject */
@@ -9949,10 +10893,10 @@ static const value_string nas_5gs_updp_msg_strings[] = {
};
static value_string_ext nas_5gs_updp_msg_strings_ext = VALUE_STRING_EXT_INIT(nas_5gs_updp_msg_strings);
-#define NUM_NAS_5GS_UPDP_MSG (sizeof(nas_5gs_updp_msg_strings)/sizeof(value_string))
-static gint ett_nas_5gs_updp_msg[NUM_NAS_5GS_UPDP_MSG];
+#define NUM_NAS_5GS_UPDP_MSG array_length(nas_5gs_updp_msg_strings)
+static int ett_nas_5gs_updp_msg[NUM_NAS_5GS_UPDP_MSG];
-static void(*nas_5gs_updp_msg_fcn[])(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, guint32 offset, guint len) = {
+static void(*nas_5gs_updp_msg_fcn[])(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, uint32_t offset, unsigned len) = {
nas_5gs_exp_not_dissected_yet, /* 0x0 Reserved */
nas_5gs_updp_manage_ue_policy_cmd, /* 0x1 MANAGE UE POLICY COMMAND */
nas_5gs_updp_manage_ue_policy_cmd_cmpl,/* 0x2 MANAGE UE POLICY COMPLETE */
@@ -9966,11 +10910,11 @@ static void(*nas_5gs_updp_msg_fcn[])(tvbuff_t* tvb, proto_tree* tree, packet_inf
};
static void
-get_nas_5gsmm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn_p)
+get_nas_5gsmm_msg_params(uint8_t oct, const char **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn_p)
{
- gint idx;
+ int idx;
- *msg_str = try_val_to_str_idx_ext((guint32)(oct & 0xff), &nas_5gs_mm_msg_strings_ext, &idx);
+ *msg_str = try_val_to_str_idx_ext((uint32_t)(oct & 0xff), &nas_5gs_mm_msg_strings_ext, &idx);
*hf_idx = hf_nas_5gs_mm_msg_type;
if (*msg_str != NULL) {
*ett_tree = ett_nas_5gs_mm_msg[idx];
@@ -9979,11 +10923,11 @@ get_nas_5gsmm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *
}
static void
-get_nas_5gssm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn_p)
+get_nas_5gssm_msg_params(uint8_t oct, const char **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn_p)
{
- gint idx;
+ int idx;
- *msg_str = try_val_to_str_idx_ext((guint32)(oct & 0xff), &nas_5gs_sm_msg_strings_ext, &idx);
+ *msg_str = try_val_to_str_idx_ext((uint32_t)(oct & 0xff), &nas_5gs_sm_msg_strings_ext, &idx);
*hf_idx = hf_nas_5gs_sm_msg_type;
if (*msg_str != NULL) {
*ett_tree = ett_nas_5gs_sm_msg[idx];
@@ -9992,11 +10936,11 @@ get_nas_5gssm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *
}
static void
-get_nas_5gs_updp_msg_params(guint8 oct, const gchar** msg_str, int* ett_tree, int* hf_idx, msg_fcn* msg_fcn_p)
+get_nas_5gs_updp_msg_params(uint8_t oct, const char** msg_str, int* ett_tree, int* hf_idx, msg_fcn* msg_fcn_p)
{
- gint idx;
+ int idx;
- *msg_str = try_val_to_str_idx_ext((guint32)(oct & 0xff), &nas_5gs_updp_msg_strings_ext, &idx);
+ *msg_str = try_val_to_str_idx_ext((uint32_t)(oct & 0xff), &nas_5gs_updp_msg_strings_ext, &idx);
*hf_idx = hf_nas_5gs_updp_msg_type;
if (*msg_str != NULL) {
*ett_tree = ett_nas_5gs_updp_msg[idx];
@@ -10007,17 +10951,17 @@ get_nas_5gs_updp_msg_params(guint8 oct, const gchar** msg_str, int* ett_tree, in
static void
dissect_nas_5gs_sm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- const gchar *msg_str;
- guint32 len;
- gint ett_tree;
+ const char *msg_str;
+ uint32_t len;
+ int ett_tree;
int hf_idx;
- void(*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
- guint8 oct;
+ void(*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
+ uint8_t oct;
len = tvb_reported_length(tvb);
/* Message type IE*/
- oct = tvb_get_guint8(tvb, offset);
+ oct = tvb_get_uint8(tvb, offset);
msg_fcn_p = NULL;
ett_tree = -1;
hf_idx = -1;
@@ -10059,17 +11003,17 @@ static void
dissect_nas_5gs_mm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
- const gchar *msg_str;
- guint32 len;
- gint ett_tree;
+ const char *msg_str;
+ uint32_t len;
+ int ett_tree;
int hf_idx;
- void(*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
- guint8 oct;
+ void(*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, uint32_t offset, unsigned len);
+ uint8_t oct;
len = tvb_reported_length(tvb);
/* Message type IE*/
- oct = tvb_get_guint8(tvb, offset);
+ oct = tvb_get_uint8(tvb, offset);
msg_fcn_p = NULL;
ett_tree = -1;
hf_idx = -1;
@@ -10111,8 +11055,8 @@ dissect_nas_5gs_mm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
static void
dissect_nas_5gs_sm_info(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, int offset, const char *n1_msg_class)
{
- guint32 len;
- void(*msg_fcn_p)(tvbuff_t * tvb, proto_tree * tree, packet_info * pinfo, guint32 offset, guint len);
+ uint32_t len;
+ void(*msg_fcn_p)(tvbuff_t * tvb, proto_tree * tree, packet_info * pinfo, uint32_t offset, unsigned len);
/* make entry in the Protocol column on summary display */
col_append_sep_str(pinfo->cinfo, COL_PROTOCOL, "/", "NAS-5GS");
@@ -10149,16 +11093,17 @@ dissect_nas_5gs_sm_info(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, int
/* UPDP */
/* D.6.1 UE policy delivery service message type */
-static void
-dissect_nas_5gs_updp(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, int offset)
+void
+dissect_nas_5gs_updp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- const gchar* msg_str;
- guint32 len;
- gint ett_tree;
+ const char* msg_str;
+ uint32_t len;
+ int ett_tree;
int hf_idx;
- void(*msg_fcn_p)(tvbuff_t * tvb, proto_tree * tree, packet_info * pinfo, guint32 offset, guint len);
- guint8 oct;
+ void(*msg_fcn_p)(tvbuff_t * tvb, proto_tree * tree, packet_info * pinfo, uint32_t offset, unsigned len);
+ uint8_t oct;
+ int offset = 0;
len = tvb_reported_length(tvb);
@@ -10171,7 +11116,7 @@ dissect_nas_5gs_updp(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, int of
offset++;
/* Message type IE*/
- oct = tvb_get_guint8(tvb, offset);
+ oct = tvb_get_uint8(tvb, offset);
msg_fcn_p = NULL;
ett_tree = -1;
hf_idx = -1;
@@ -10231,10 +11176,10 @@ const value_string nas_5gs_pdu_session_id_vals[] = {
};
static int
-dissect_nas_5gs_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, void* data _U_)
+dissect_nas_5gs_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, void* data)
{
proto_tree *sub_tree;
- guint32 epd;
+ uint32_t epd;
/* Plain NAS 5GS Message */
sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_nas_5gs_plain, NULL, "Plain NAS 5GS Message");
@@ -10268,6 +11213,10 @@ dissect_nas_5gs_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
proto_tree_add_item(sub_tree, hf_nas_5gs_proc_trans_id, tvb, offset, 1, ENC_BIG_ENDIAN);
break;
default:
+ if ((epd & 0xf) == 15 && gsm_a_dtap_handle) {
+ /* dissect Test Procedure messages */
+ return call_dissector_with_data(gsm_a_dtap_handle, tvb_new_subset_remaining(tvb, offset - 1), pinfo, sub_tree, data);
+ }
proto_tree_add_expert_format(sub_tree, pinfo, &ei_nas_5gs_unknown_pd, tvb, offset, -1, "Not a NAS 5GS PD %u (%s)",
epd, val_to_str_const(epd, nas_5gs_epd_vals, "Unknown"));
return 0;
@@ -10298,7 +11247,7 @@ dissect_nas_5gs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
proto_item *item;
proto_tree *nas_5gs_tree, *sub_tree;
int offset = 0;
- guint8 sec_hdr_type, ext_pd;
+ uint8_t sec_hdr_type, ext_pd;
struct nas5gs_private_data *nas5gs_data = nas5gs_get_private_data(pinfo);
/* make entry in the Protocol column on summary display */
@@ -10308,14 +11257,14 @@ dissect_nas_5gs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
nas_5gs_tree = proto_item_add_subtree(item, ett_nas_5gs);
/* Extended protocol discriminator octet 1 */
- ext_pd = tvb_get_guint8(tvb, offset);
+ ext_pd = tvb_get_uint8(tvb, offset);
if (ext_pd == TGPP_PD_5GSM) {
return dissect_nas_5gs_common(tvb, pinfo, nas_5gs_tree, offset, data);
}
/* Security header type associated with a spare half octet; or
* PDU session identity octet 2 */
/* Determine if it's a plain 5GS NAS Message or not */
- sec_hdr_type = tvb_get_guint8(tvb, offset + 1);
+ sec_hdr_type = tvb_get_uint8(tvb, offset + 1);
nas5gs_data->sec_hdr_type = sec_hdr_type;
if (sec_hdr_type == NAS_5GS_PLAIN_NAS_MSG) {
return dissect_nas_5gs_common(tvb, pinfo, nas_5gs_tree, offset, data);
@@ -10480,11 +11429,10 @@ dissect_nas_5gs_media_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
} else if (!strcmp(n1_msg_class, "LPP")) {
subdissector = lpp_handle;
} else if (!strcmp(n1_msg_class, "SMS")) {
- /* how to know the direction? */
- subdissector = NULL;
+ subdissector = gsm_a_dtap_handle;
} else if (!strcmp(n1_msg_class, "UPDP")) {
- /* UD policy delivery service */
- dissect_nas_5gs_updp(tvb, pinfo, tree, 0);
+ /* UE policy delivery service */
+ dissect_nas_5gs_updp(tvb, pinfo, tree);
return tvb_captured_length(tvb);
} else {
subdissector = NULL;
@@ -10498,7 +11446,7 @@ dissect_nas_5gs_media_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
}
-static guint
+static unsigned
get_nas_5gs_tcp_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _U_)
{
return tvb_get_ntohs(tvb, offset) + 2;
@@ -10514,30 +11462,30 @@ dissect_nas_5gs_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
static int
dissect_nas_5gs_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
- tcp_dissect_pdus(tvb, pinfo, tree, TRUE, 2, get_nas_5gs_tcp_len,
+ tcp_dissect_pdus(tvb, pinfo, tree, true, 2, get_nas_5gs_tcp_len,
dissect_nas_5gs_tcp_pdu, data);
return tvb_reported_length(tvb);
}
/* Heuristic dissector looks for "nas-5gs" string at packet start */
-static gboolean dissect_nas_5gs_heur(tvbuff_t *tvb, packet_info *pinfo,
+static bool dissect_nas_5gs_heur(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, void *data _U_)
{
- gint offset = 0;
+ int offset = 0;
tvbuff_t *nas_tvb;
/* Needs to be at least as long as:
- the signature string
- at least one byte of NAS PDU payload */
- if (tvb_captured_length_remaining(tvb, offset) < (gint)(strlen(PFNAME)+1)) {
- return FALSE;
+ if (tvb_captured_length_remaining(tvb, offset) < (int)(strlen(PFNAME)+1)) {
+ return false;
}
/* OK, compare with signature string */
if (tvb_strneql(tvb, offset, PFNAME, strlen(PFNAME)) != 0) {
- return FALSE;
+ return false;
}
- offset += (gint)strlen(PFNAME);
+ offset += (int)strlen(PFNAME);
/* Clear protocol name */
col_clear(pinfo->cinfo, COL_PROTOCOL);
@@ -10549,7 +11497,7 @@ static gboolean dissect_nas_5gs_heur(tvbuff_t *tvb, packet_info *pinfo,
nas_tvb = tvb_new_subset_remaining(tvb, offset);
dissect_nas_5gs(nas_tvb, pinfo, tree, NULL);
- return TRUE;
+ return true;
}
void
@@ -10687,7 +11635,7 @@ proto_register_nas_5gs(void)
},
{ &hf_nas_5gs_spare_octet,
{ "Spare", "nas-5gs.spare_octet",
- FT_UINT8, BASE_DEC, NULL, 0xff,
+ FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_nas_5gs_pdu_session_id,
@@ -10920,11 +11868,56 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_5gs_mm_cag_info_entry_cag_only), 0x01,
NULL, HFILL }
},
+ { &hf_nas_5gs_mm_cag_info_entry_lci,
+ { "Length of CAG-IDs indicator (LCI)", "nas-5gs.mm.cag_info.entry.lci",
+ FT_BOOLEAN, 8, TFS(&tfs_present_absent), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_cag_info_entry_caili,
+ { "CAG-ID with additional information list indicator (CAILI)", "nas-5gs.mm.cag_info.entry.caili",
+ FT_BOOLEAN, 8, TFS(&tfs_present_absent), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_cag_info_entry_cag_without_add_info_list_len,
+ { "Length of CAG-IDs without additional information list", "nas-5gs.mm.cag_info.entry.cag_without_add_info_list_len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_cag_info_entry_cag_with_add_info_list_len,
+ { "Length of CAG-IDs with additional information list contents", "nas-5gs.mm.cag_info.entry.cag_with_add_info_list_len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_cag_info_entry_cag_with_add_info_len,
+ { "Length of CAG-ID with additional information contents", "nas-5gs.mm.cag_info.entry.cag_with_add_info_len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_mm_cag_info_entry_cag_id,
{ "CAG-ID", "nas-5gs.mm.cag_info.entry.cag_id",
FT_UINT32, BASE_HEX, NULL, 0,
NULL, HFILL }
},
+ { &hf_nas_5gs_mm_cag_info_entry_svii,
+ { "Spare validity information indicator (SVII)", "nas-5gs.mm.cag_info.entry.svii",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_present_absent), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_cag_info_entry_tvii,
+ { "Time validity information indicator (TVII)", "nas-5gs.mm.cag_info.entry.tvii",
+ FT_BOOLEAN, 8, TFS(&tfs_present_absent), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_cag_info_entry_nb_time_periods,
+ { "Number of time periods", "nas-5gs.mm.cag_info.entry.nb_time_periods",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_cag_info_entry_time_period,
+ { "Number of time periods", "nas-5gs.mm.cag_info.entry.time_period",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_mm_ciot_small_data_cont_data_type,
{ "Data type", "nas-5gs.mm.ciot_small_data_cont.data_type",
FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_ciot_small_data_cont_data_type_values), 0xe0,
@@ -11135,6 +12128,16 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x10,
NULL, HFILL }
},
+ { &hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_9,
+ { "Ciphering data set for E-UTRA positioning SIB type 1-9","nas-5gs.mm.ciph_key_data.eutra_pos_sib_type_1_9",
+ FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ciph_key_data_eutra_pos_sib_type_1_10,
+ { "Ciphering data set for E-UTRA positioning SIB type 1-10","nas-5gs.mm.ciph_key_data.eutra_pos_sib_type_1_10",
+ FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x04,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_1,
{ "Ciphering data set for NR positioning SIB type 1-1","nas-5gs.mm.ciph_key_data.nr_pos_sib_type_1_1",
FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x80,
@@ -11320,6 +12323,41 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x08,
NULL, HFILL }
},
+ { &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_4,
+ { "Ciphering data set for NR positioning SIB type 6-4","nas-5gs.mm.ciph_key_data.nr_pos_sib_type_6_4",
+ FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_5,
+ { "Ciphering data set for NR positioning SIB type 6-5","nas-5gs.mm.ciph_key_data.nr_pos_sib_type_6_5",
+ FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_6_6,
+ { "Ciphering data set for NR positioning SIB type 6-6","nas-5gs.mm.ciph_key_data.nr_pos_sib_type_6_6",
+ FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_9,
+ { "Ciphering data set for NR positioning SIB type 1-9","nas-5gs.mm.ciph_key_data.nr_pos_sib_type_1_9",
+ FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_1_10,
+ { "Ciphering data set for NR positioning SIB type 1-10","nas-5gs.mm.ciph_key_data.nr_pos_sib_type_1_10",
+ FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_24,
+ { "Ciphering data set for NR positioning SIB type 2-24","nas-5gs.mm.ciph_key_data.nr_pos_sib_type_2_24",
+ FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ciph_key_data_nr_pos_sib_type_2_25,
+ { "Ciphering data set for NR positioning SIB type 2-25","nas-5gs.mm.ciph_key_data.nr_pos_sib_type_2_25",
+ FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x10,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_mm_ciph_key_data_ciphering_set_id,
{ "Ciphering set ID","nas-5gs.mm.ciph_key_data.ciphering_set_id",
FT_UINT16, BASE_DEC, NULL, 0x0,
@@ -11357,7 +12395,7 @@ proto_register_nas_5gs(void)
},
{ &hf_nas_5gs_mm_ciph_key_data_validity_duration,
{ "Validity duration", "nas-5gs.mm.ciph_key_data.validity_duration",
- FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &units_minute_minutes, 0x0,
+ FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_minute_minutes), 0x0,
NULL, HFILL }
},
{ &hf_nas_5gs_mm_ciph_key_data_tais_list_len,
@@ -11590,6 +12628,136 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
NULL, HFILL }
},
+ { &hf_nas_5gs_mm_esi_b2,
+ { "ESI", "nas-5gs.mm.esi_b2",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_eci_b3,
+ { "ECI", "nas-5gs.mm.eci_b3",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_rantiming_b4,
+ { "RANtiming", "nas-5gs.mm.rantiming_b4",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ladn_ds_b5,
+ { "LADN-DS", "nas-5gs.mm.ladn_ds_b5",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_nsr_b6,
+ { "NSR", "nas-5gs.mm.nsr_b6",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_sbts_b7,
+ { "SBTS", "nas-5gs.mm.sbts_b7",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_a2xepc5_b0,
+ { "A2XEPC5", "nas-5gs.mm.a2xepc5_b0",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_a2xnpc5_b1,
+ { "A2XNPC5", "nas-5gs.mm.a2xnpc5_b1",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_un_per_b2,
+ { "UN-PER", "nas-5gs.mm.un_per_b2",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_sbns_b3,
+ { "SBNS", "nas-5gs.mm.sbns_b3",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_rslps_b4,
+ { "RSLPS", "nas-5gs.mm.rslps_b4",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_5g_prose_l2u2u_relay_b5,
+ { "5G ProSe-l2U2U relay", "nas-5gs.mm.5g_prose_l2u2u_relay_b5",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_5g_prose_l3u2u_relay_b6,
+ { "5G ProSe-l3U2U relay", "nas-5gs.mm.5g_prose_l3u2u_relay_b6",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_5g_prose_l2end_b7,
+ { "5G ProSe-l2end", "nas-5gs.mm.5g_prose_l2end_b7",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_5g_prose_l3end_b0,
+ { "5G ProSe-l3end", "nas-5gs.mm.5g_prose_l3end_b0",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_rslp_b1,
+ { "RSLP", "nas-5gs.mm.rslp_b1",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_pns_b2,
+ { "PNS", "nas-5gs.mm.pns_b2",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_lcs_upp_b3,
+ { "LCS-UPP", "nas-5gs.mm.lcs_upp_b3",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_supl_b4,
+ { "SUPL", "nas-5gs.mm.supl_b4",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_tempns_b5,
+ { "TempNS", "nas-5gs.mm.tempns_b5",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_slvi_b6,
+ { "SLVI", "nas-5gs.mm.slvi_b6",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_a2x_uu_b7,
+ { "A2X-Uu", "nas-5gs.mm.a2x_uu_b7",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_mcsiu_b0,
+ { "MCSIU", "nas-5gs.mm.mcsiu_b0",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_nvl_satnr_b1,
+ { "NVL-SATNR", "nas-5gs.mm.nvl_satnr_b1",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_rslpl_b2,
+ { "RSLPL", "nas-5gs.mm.rslpl_b2",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_nsuc_b3,
+ { "NSUC", "nas-5gs.mm.nsuc_b3",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_mm_type_id,
{ "Type of identity", "nas-5gs.mm.type_id",
FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_type_id_vals), 0x07,
@@ -12205,6 +13373,11 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_sm_ratc), 0x01,
NULL, HFILL }
},
+ { &hf_nas_5gs_sm_naps,
+ { "Non-3GPP access path switching (NAPS)", "nas-5gs.sm.naps",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_sm_ept_s1,
{ "Ethernet PDN type in S1 mode (EPT-S1)", "nas-5gs.sm.ept_s1",
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
@@ -12340,6 +13513,11 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
NULL, HFILL }
},
+ { &hf_nas_5gs_sm_sdnaepc_b1,
+ { "Secondary DN authentication and authorization over EPC (SDNAEPC)", "nas-5gs.sm.sdnaepc",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_sm_apmqf_b0,
{ "Access performance measurements per QoS flow rule (APMQF)", "nas-5gs.sm.apmqf",
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
@@ -12542,7 +13720,7 @@ proto_register_nas_5gs(void)
},
{ &hf_nas_5gs_sm_averaging_window,
{ "Averaging window", "nas-5gs.sm.averaging_window",
- FT_UINT16, BASE_DEC | BASE_UNIT_STRING, &units_millisecond_milliseconds, 0x0,
+ FT_UINT16, BASE_DEC | BASE_UNIT_STRING, UNS(&units_millisecond_milliseconds), 0x0,
NULL, HFILL }
},
{ &hf_nas_5gs_sm_eps_bearer_id,
@@ -12850,6 +14028,31 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
NULL, HFILL }
},
+ { &hf_nas_5gs_nw_feat_sup_un_per,
+ { "Unavailability period (UN-PER)", "nas-5gs.nw_feat_sup.un_per",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_nw_feat_sup_naps,
+ { "Non-3GPP access path switching (NAPS)", "nas-5gs.nw_feat_sup.naps",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_nw_feat_sup_lcs_upp,
+ { "LCS-UPP user plane positioning (LCS-UPP)", "nas-5gs.nw_feat_sup.lcs_upp",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_nw_feat_sup_supl,
+ { "SUPL user plane positioning (SUPL)", "nas-5gs.nw_feat_sup.supl",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_nw_feat_sup_rslp,
+ { "Ranging and sidelink positioning support (RSLP)", "nas-5gs.nw_feat_sup.rslp",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_tac,
@@ -13037,7 +14240,7 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_sor_data_type), 0x01,
NULL, HFILL }
},
- { &hf_nas_5gs_sor_hdr0_mssi,
+ { &hf_nas_5gs_sor_mssi,
{ "ME support of SOR-CMCI indicator (MSSI)", "nas-5gs.sor.mssi",
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
NULL, HFILL }
@@ -13047,6 +14250,11 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
NULL, HFILL }
},
+ { &hf_nas_5gs_sor_msssnpnsils,
+ { "MS support of SOR-SNPN-SI-LS indicator (MSSNPNSILS)", "nas-5gs.sor.msssnpnsils",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_sor_mac_iue,
{ "SOR-MAC-IUE", "nas-5gs.mm.sor_mac_iue",
FT_BYTES, BASE_NONE, NULL, 0x0,
@@ -13067,6 +14275,11 @@ proto_register_nas_5gs(void)
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_nas_5gs_sor_sssli,
+ { "SOR-SNPN-SI-LS indicator", "nas-5gs.mm.sor_sssli",
+ FT_BOOLEAN, 8, TFS(&tfs_present_absent), 0x08,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_sor_sssi,
{ "SOR-SNPN-SI indicator", "nas-5gs.mm.sor_sssi",
FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_sor_sssi), 0x04,
@@ -13098,12 +14311,22 @@ proto_register_nas_5gs(void)
NULL, HFILL }
},
{ &hf_nas_5gs_sor_snpn_si_len,
- { "Length of SOR-CMCI rule contents", "nas-5gs.mm.snpn_si_len",
+ { "Length of SOR-SNPN-SI contents", "nas-5gs.mm.snpn_si_len",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_nas_5gs_sor_snpn_si_payload,
- { "SOR-CMCI rule contents payload", "nas-5gs.mm.snpn_si_payload",
+ { "SOR-SNPN-SI contents payload", "nas-5gs.mm.snpn_si_payload",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_sor_snpn_si_ls_len,
+ { "Length of SOR-SNPN-SI-LS contents", "nas-5gs.mm.snpn_si_ls_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_sor_snpn_si_ls_payload,
+ { "SOR-SNPN-SI-LS contents payload", "nas-5gs.mm.snpn_si_ls_payload",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
@@ -13238,7 +14461,7 @@ proto_register_nas_5gs(void)
NULL, HFILL }
},
{ &hf_nas_5gs_updp_ue_pol_sect_subresult_len,
- { "Number of results", "nas-5gs.updp.ue_pol_sect_sublst_len",
+ { "Number of results", "nas-5gs.updp.ue_pol_sect_subresult_len",
FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
@@ -13550,24 +14773,24 @@ proto_register_nas_5gs(void)
FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_mm_scmr), 0x01,
NULL, HFILL }
},
- { &hf_nas_5gs_mm_extended_rejected_s_nssai_number_of_element,
- { "Number of element", "nas-5gs.mm.extended_rejected_s_nssai.number_of_element",
- FT_UINT8, BASE_DEC, NULL, 0x0f,
+ { &hf_nas_5gs_mm_extended_rejected_nssai_number_of_element,
+ { "Number of element", "nas-5gs.mm.extended_rejected_nssai.number_of_element",
+ FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_extended_rejected_s_nssai_number_of_element_vals), 0x0f,
NULL, HFILL }
},
- { &hf_nas_5gs_mm_extended_rejected_s_nssai_type_of_list,
- { "Type of list", "nas-5gs.mm.extended_rejected_s_nssai.type_of_list",
- FT_UINT8, BASE_DEC, NULL, 0x70,
+ { &hf_nas_5gs_mm_extended_rejected_nssai_type_of_list,
+ { "Type of list", "nas-5gs.mm.extended_rejected_nssai.type_of_list",
+ FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_extended_rejected_s_nssai_type_of_list_vals), 0x70,
NULL, HFILL }
},
- { &hf_nas_5gs_mm_extended_rejected_s_nssai_spare,
- { "Spare", "nas-5gs.mm.extended_rejected_s_nssai.spare",
+ { &hf_nas_5gs_mm_extended_rejected_nssai_spare,
+ { "Spare", "nas-5gs.mm.extended_rejected_nssai.spare",
FT_UINT8, BASE_DEC, NULL, 0x80,
NULL, HFILL }
},
- { &hf_nas_5gs_mm_extended_rejected_s_nssai_back_off_timer,
- { "Back-off timer value", "nas-5gs.mm.extended_rejected_s_nssai.back_off_timer",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ { &hf_nas_5gs_mm_extended_rejected_nssai_back_off_timer,
+ { "Back-off timer value", "nas-5gs.mm.extended_rejected_nssai.back_off_timer",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_nas_5gs_mm_len_of_rejected_s_nssai,
@@ -13750,13 +14973,13 @@ proto_register_nas_5gs(void)
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }
},
- { &hf_nas_5gs_mm_relay_key_req_params_ruit,
- { "Remote UE ID type (RUIT)", "nas-5gs.mm.relay_key_req_params.ruit",
- FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_mm_relay_key_req_params_ruit), 0x01,
+ { &hf_nas_5gs_mm_relay_key_req_params_uit,
+ { "UE ID type (UIT)", "nas-5gs.mm.relay_key_req_params.uit",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_mm_relay_key_req_params_uit), 0x01,
NULL, HFILL }
},
- { &hf_nas_5gs_mm_relay_key_req_params_remote_ue_id,
- { "Remote UE identity", "nas-5gs.mm.relay_key_req_params.remote_ue_id",
+ { &hf_nas_5gs_mm_relay_key_req_params_ue_id,
+ { "UE identity", "nas-5gs.mm.relay_key_req_params.ue_id",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }
},
@@ -13775,11 +14998,171 @@ proto_register_nas_5gs(void)
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_nas_5gs_mm_prio_ind_mcsi,
+ { "MCS indicator (MCSI)", "nas-5gs.mm.priority_indicator.mcsi",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_mm_prio_ind_mcsi), 0x02,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_mm_prio_ind_mpsi,
{ "MPS indicator (MPSI)", "nas-5gs.mm.priority_indicator.mpsi",
FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_mm_prio_ind_mpsi), 0x01,
NULL, HFILL }
},
+ { &hf_nas_5gs_mm_n3iwf_id_type,
+ { "N3IWF identifier type", "nas-5gs.mm.n3iwf_id.type",
+ FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_n3iwf_id_type_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_n3iwf_id_ipv4,
+ { "N3IWF address IPv4", "nas-5gs.mm.n3iwf_id.ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_n3iwf_id_ipv6,
+ { "N3IWF address IPv6", "nas-5gs.mm.n3iwf_id.ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_n3iwf_id_fqdn,
+ { "N3IWF address FQDN", "nas-5gs.mm.n3iwf_id.fqdn",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_tnan_info_ssid_ind,
+ { "SSID indication", "nas-5gs.mm.tnan_info.ssid_ind",
+ FT_BOOLEAN, 8, TFS(&tfs_included_not_included), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_tnan_info_tngf_id_ind,
+ { "TNGF ID indication", "nas-5gs.mm.tnan_info.tngf_id_ind",
+ FT_BOOLEAN, 8, TFS(&tfs_included_not_included), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_tnan_info_tngf_id_len,
+ { "TNGF ID length", "nas-5gs.mm.tnan_info.tngf_id_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_tnan_info_tngf_id,
+ { "TNGF ID", "nas-5gs.mm.tnan_info.tngf_id",
+ FT_BYTES, BASE_SHOW_UTF_8_PRINTABLE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_tnan_info_ssid_len,
+ { "SSID length", "nas-5gs.mm.tnan_info.ssid_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_tnan_info_ssid,
+ { "SSID", "nas-5gs.mm.tnan_info.ssid",
+ FT_BYTES, BASE_SHOW_UTF_8_PRINTABLE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ran_timing_sync_recreq,
+ { "RecReq", "nas-5gs.mm.ran_timing_sync.recreq",
+ FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_n3gpp_acc_path_switch_ind_naps,
+ { "Non-3GPP access path switching (NAPS)", "nas-5gs.mm.n3gpp_acc_path_switch_ind.naps",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_s_nssai_loc_valid_info_per_s_nssai_len,
+ { "Length of Per-S-NSSAI location validity information for S-NSSAI", "nas-5gs.mm.s_nssai_loc_valid_info.per_s_nssai_len",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_s_nssai_loc_valid_info_per_s_nssai_nb_nr_cgi,
+ { "Number of NR CGIs", "nas-5gs.mm.s_nssai_loc_valid_info.nb_nr_cgi",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_s_nssai_loc_valid_info_per_s_nssai_nr_cell_id,
+ { "NR Cell ID", "nas-5gs.mm.s_nssai_loc_valid_info.nr_cell_id",
+ FT_UINT40, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_s_nssai_time_valid_info_per_s_nssai_len,
+ { "Length of Per-S-NSSAI time validity information for S-NSSAI", "nas-5gs.mm.s_nssai_time_valid_info.per_s_nssai_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_len,
+ { "Length of Time window", "nas-5gs.mm.s_nssai_time_valid_info.time_window_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_start_time,
+ { "Start time", "nas-5gs.mm.s_nssai_time_valid_info.time_window_start_time",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_stop_time,
+ { "Stop time", "nas-5gs.mm.s_nssai_time_valid_info.time_window_stop_time",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_recurrence_pattern,
+ { "Recurrence pattern", "nas-5gs.mm.s_nssai_time_valid_info.time_window_recurrence_pattern",
+ FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_s_nssai_time_valid_info_time_window_recurrence_pattern_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_s_nssai_time_valid_info_time_window_recurrence_end_time,
+ { "Recurrence end time", "nas-5gs.mm.s_nssai_time_valid_info.recurrence_end_time",
+ FT_UINT64, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_n3gpp_path_switch_info_nsonr,
+ { "Non-3GPP path switching while using old non-3GPP resources (NSONR)", "nas-5gs.mm.n3gpp_path_switch_info.nsonr",
+ FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_au3n_ind_aun3reg,
+ { "AUN3 device registration (AUN3REG)", "nas-5gs.mm.au3n_ind.aun3reg",
+ FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_feat_auth_ind_mbsrai,
+ { "MBSR authorization indication (MBSRAI)", "nas-5gs.mm.feat_auth_ind.mbsrai",
+ FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_feat_auth_ind_mbsrai_vals), 0x03,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_payload_cont_info_pru,
+ { "PRU related content (PRU)", "nas-5gs.mm.payload_cont_info.pru",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_mm_payload_cont_info_pru), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_aun3_device_sec_key_askt,
+ { "AUN3 device security key type (ASKT)", "nas-5gs.mm.aun3_device_sec_key.askt",
+ FT_UINT8, BASE_DEC, VALS(nas_5gs_mm_aun3_device_sec_key_askt_vals), 0x03,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_aun3_device_sec_key_key_len,
+ { "Length of key content", "nas-5gs.mm.aun3_device_sec_key.key_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_aun3_device_sec_key_key,
+ { "Key content", "nas-5gs.mm.aun3_device_sec_key.key",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_on_demand_nssai_len,
+ { "Length of Information of on-demand S-NSSAI", "nas-5gs.mm.on_demand_nssai.len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_on_demand_nssai_slice_dereg_inactiv_timer,
+ { "Slice deregistration inactivity timer", "nas-5gs.mm.on_demand_nssai.slice_dereg_inactiv_timer",
+ FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_nas_5gs_mm_ext_5gmm_cause_sat_nr,
+ { "PRU related content (PRU)", "nas-5gs.mm.ext_5gmm_cause.sat_nr",
+ FT_BOOLEAN, 8, TFS(&tfs_nas_5gs_mm_ext_5gmm_cause_sat_nr), 0x01,
+ NULL, HFILL }
+ },
{ &hf_nas_5gs_ue_os_id,
{ "UE OS ID UUID", "nas-5gs.ue_os_id",
FT_GUID, BASE_NONE, NULL, 0x0,
@@ -13787,12 +15170,12 @@ proto_register_nas_5gs(void)
},
};
- guint i;
- guint last_offset;
+ unsigned i;
+ unsigned last_offset;
/* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_ELEMS 44
- gint *ett[NUM_INDIVIDUAL_ELEMS +
+#define NUM_INDIVIDUAL_ELEMS 53
+ int *ett[NUM_INDIVIDUAL_ELEMS +
NUM_NAS_5GS_COMMON_ELEM +
NUM_NAS_5GS_MM_MSG + NUM_NAS_5GS_MM_ELEM +
NUM_NAS_5GS_SM_MSG + NUM_NAS_5GS_SM_ELEM +
@@ -13832,60 +15215,62 @@ proto_register_nas_5gs(void)
ett[30] = &ett_nas_5gs_ciph_data_set;
ett[31] = &ett_nas_5gs_mm_mapped_nssai;
ett[32] = &ett_nas_5gs_mm_partial_extended_rejected_nssai_list;
- ett[33] = &ett_nas_5gs_mm_ext_rej_nssai;
- ett[34] = &ett_nas_5gs_mm_op_def_acc_cat_def;
- ett[35] = &ett_nas_5gs_mm_op_def_acc_cat_criteria_component;
- ett[36] = &ett_nas_5gs_mm_op_def_acc_cat_criteria;
- ett[37] = &ett_nas_5gs_cmn_service_level_aa_cont_param;
- ett[38] = &ett_nas_5gs_mm_pld_cont_event_notif_ind;
- ett[39] = &ett_nas_5gs_mm_peips_assist_info;
- ett[40] = &ett_nas_5gs_mm_nssrg_info;
- ett[41] = &ett_nas_5gs_mm_plmns_list_disaster_cond;
- ett[42] = &ett_nas_5gs_mm_reg_wait_range;
- ett[43] = &ett_nas_5gs_mm_nsag_info;
+ ett[33] = &ett_nas_5gs_mm_ext_rej_nssai_back_off_timer;
+ ett[34] = &ett_nas_5gs_mm_ext_rej_nssai;
+ ett[35] = &ett_nas_5gs_mm_op_def_acc_cat_def;
+ ett[36] = &ett_nas_5gs_mm_op_def_acc_cat_criteria_component;
+ ett[37] = &ett_nas_5gs_mm_op_def_acc_cat_criteria;
+ ett[38] = &ett_nas_5gs_cmn_service_level_aa_cont_param;
+ ett[39] = &ett_nas_5gs_mm_pld_cont_event_notif_ind;
+ ett[40] = &ett_nas_5gs_mm_peips_assist_info;
+ ett[41] = &ett_nas_5gs_mm_nssrg_info;
+ ett[42] = &ett_nas_5gs_mm_plmns_list_disaster_cond;
+ ett[43] = &ett_nas_5gs_mm_reg_wait_range;
+ ett[44] = &ett_nas_5gs_mm_nsag_info;
+ ett[45] = &ett_nas_5gs_mm_snpn_list;
+ ett[46] = &ett_nas_5gs_mm_ext_ladn_info;
+ ett[47] = &ett_nas_5gs_mm_alt_nssai;
+ ett[48] = &ett_nas_5gs_mm_alt_nssai_replaced;
+ ett[49] = &ett_nas_5gs_mm_alt_nssai_alternative;
+ ett[50] = &ett_nas_5gs_mm_s_nssai_loc_valid_info;
+ ett[51] = &ett_nas_5gs_mm_s_nssai_time_valid_info;
+ ett[52] = &ett_nas_5gs_mm_on_demand_nssai;
last_offset = NUM_INDIVIDUAL_ELEMS;
for (i = 0; i < NUM_NAS_5GS_COMMON_ELEM; i++, last_offset++)
{
- ett_nas_5gs_common_elem[i] = -1;
ett[last_offset] = &ett_nas_5gs_common_elem[i];
}
/* MM */
for (i = 0; i < NUM_NAS_5GS_MM_MSG; i++, last_offset++)
{
- ett_nas_5gs_mm_msg[i] = -1;
ett[last_offset] = &ett_nas_5gs_mm_msg[i];
}
for (i = 0; i < NUM_NAS_5GS_MM_ELEM; i++, last_offset++)
{
- ett_nas_5gs_mm_elem[i] = -1;
ett[last_offset] = &ett_nas_5gs_mm_elem[i];
}
for (i = 0; i < NUM_NAS_5GS_SM_MSG; i++, last_offset++)
{
- ett_nas_5gs_sm_msg[i] = -1;
ett[last_offset] = &ett_nas_5gs_sm_msg[i];
}
for (i = 0; i < NUM_NAS_5GS_SM_ELEM; i++, last_offset++)
{
- ett_nas_5gs_sm_elem[i] = -1;
ett[last_offset] = &ett_nas_5gs_sm_elem[i];
}
for (i = 0; i < NUM_NAS_5GS_UPDP_MSG; i++, last_offset++)
{
- ett_nas_5gs_updp_msg[i] = -1;
ett[last_offset] = &ett_nas_5gs_updp_msg[i];
}
for (i = 0; i < NUM_NAS_5GS_UPDP_ELEM; i++, last_offset++)
{
- ett_nas_5gs_updp_elem[i] = -1;
ett[last_offset] = &ett_nas_5gs_updp_elem[i];
}
@@ -13933,23 +15318,22 @@ proto_register_nas_5gs(void)
"Try to decode User Data Container content as",
NULL,
&g_nas_5gs_decode_user_data_container_as,
- nas_5gs_user_data_container_as_vals, FALSE);
+ nas_5gs_user_data_container_as_vals, false);
- prefs_register_string_preference(nas_5GS_module, "non_ip_data_dissector",
- "Dissector name for non IP data", NULL,
- &g_nas_5gs_non_ip_data_dissector);
+ prefs_register_dissector_preference(nas_5GS_module, "non_ip_data_dissector",
+ "Dissector name for non IP data", NULL,
+ &g_nas_5gs_non_ip_data_dissector);
}
void
proto_reg_handoff_nas_5gs(void)
{
- static gint initialized = FALSE;
+ static bool initialized = false;
if (!initialized) {
heur_dissector_add("udp", dissect_nas_5gs_heur, "NAS-5GS over UDP", "nas_5gs_udp", proto_nas_5gs, HEURISTIC_DISABLE);
eap_handle = find_dissector("eap");
nas_eps_handle = find_dissector("nas-eps");
- nas_eps_plain_handle = find_dissector("nas-eps_plain");
lpp_handle = find_dissector("lpp");
gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
ipv4_handle = find_dissector("ip");
@@ -13958,7 +15342,7 @@ proto_reg_handoff_nas_5gs(void)
dissector_add_string("media_type", "application/vnd.3gpp.5gnas", create_dissector_handle(dissect_nas_5gs_media_type, proto_nas_5gs));
dissector_add_for_decode_as("tcp.port", create_dissector_handle(dissect_nas_5gs_tcp, proto_nas_5gs));
proto_json = proto_get_id_by_filter_name("json");
- initialized = TRUE;
+ initialized = true;
}
if (g_nas_5gs_non_ip_data_dissector[0] != '\0') {
non_ip_data_handle = find_dissector(g_nas_5gs_non_ip_data_dissector);