summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-nas_5gs.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-05 09:15:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-05 09:15:59 +0000
commit489b73a4c69e01167e693d7153f973105c613c30 (patch)
tree5d72d5ab3cf7dd8efa4e1733579d216d79c8ad66 /epan/dissectors/packet-nas_5gs.c
parentReleasing progress-linux version 4.2.5-2~progress7.99u1. (diff)
downloadwireshark-489b73a4c69e01167e693d7153f973105c613c30.tar.xz
wireshark-489b73a4c69e01167e693d7153f973105c613c30.zip
Merging upstream version 4.2.6.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/packet-nas_5gs.c')
-rw-r--r--epan/dissectors/packet-nas_5gs.c91
1 files changed, 56 insertions, 35 deletions
diff --git a/epan/dissectors/packet-nas_5gs.c b/epan/dissectors/packet-nas_5gs.c
index 26bb927f..31dd9d9d 100644
--- a/epan/dissectors/packet-nas_5gs.c
+++ b/epan/dissectors/packet-nas_5gs.c
@@ -547,6 +547,7 @@ 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_back_off_timer = -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;
@@ -741,10 +742,10 @@ 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_extended_rejected_nssai_number_of_element = -1;
+static int hf_nas_5gs_mm_extended_rejected_nssai_type_of_list = -1;
+static int hf_nas_5gs_mm_extended_rejected_nssai_spare = -1;
+static int hf_nas_5gs_mm_extended_rejected_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;
@@ -4064,12 +4065,31 @@ 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
de_nas_5gs_mm_extended_rejected_nssai(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo _U_,
@@ -4089,17 +4109,18 @@ de_nas_5gs_mm_extended_rejected_nssai(tvbuff_t* tvb, proto_tree* tree, packet_in
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);
@@ -10480,8 +10501,7 @@ 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);
@@ -13550,24 +13570,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,
@@ -13791,7 +13811,7 @@ proto_register_nas_5gs(void)
guint last_offset;
/* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_ELEMS 44
+#define NUM_INDIVIDUAL_ELEMS 45
gint *ett[NUM_INDIVIDUAL_ELEMS +
NUM_NAS_5GS_COMMON_ELEM +
NUM_NAS_5GS_MM_MSG + NUM_NAS_5GS_MM_ELEM +
@@ -13832,17 +13852,18 @@ 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;
last_offset = NUM_INDIVIDUAL_ELEMS;