NR UE: Enable additional PDU session

Add new command line / config parameter --extra-pdu-id which when
configured creates an extra PDU session.

Rename --default_pdu_id to --default-pdu-id
This commit is contained in:
Bartosz Podrygajlo
2025-06-18 11:21:29 +02:00
parent 7682c407e1
commit 5d7c4fe14d
5 changed files with 18 additions and 5 deletions

View File

@@ -11,6 +11,7 @@ target_link_libraries(nr_nas PUBLIC
nas_common_ies_lib
nas_utils
ds
UTIL
)
target_include_directories(nr_nas PUBLIC . 5GS/)

View File

@@ -74,6 +74,7 @@
#include "fgmm_authentication_reject.h"
#include "ds/byte_array.h"
#include "key_nas_deriver.h"
#include "nr-uesoftmodem.h"
#define MAX_NAS_UE 4
@@ -1773,10 +1774,10 @@ static void send_nas_5gmm_ind(instance_t instance, const Guti5GSMobileIdentity_t
itti_send_msg_to_task(TASK_RRC_NRUE, instance, msg);
}
static void request_default_pdusession(nr_ue_nas_t *nas)
static void request_pdusession(nr_ue_nas_t *nas, int pdusession_id)
{
MessageDef *message_p = itti_alloc_new_message(TASK_NAS_NRUE, nas->UE_id, NAS_PDU_SESSION_REQ);
NAS_PDU_SESSION_REQ(message_p).pdusession_id = get_softmodem_params()->default_pdu_session_id;
NAS_PDU_SESSION_REQ(message_p).pdusession_id = pdusession_id;
NAS_PDU_SESSION_REQ(message_p).pdusession_type = 0x91; // 0x91 = IPv4, 0x92 = IPv6, 0x93 = IPv4v6
NAS_PDU_SESSION_REQ(message_p).sst = nas->uicc->nssai_sst;
NAS_PDU_SESSION_REQ(message_p).sd = nas->uicc->nssai_sd;
@@ -1868,7 +1869,10 @@ static void handle_registration_accept(nr_ue_nas_t *nas, const uint8_t *pdu_buff
if (get_user_nssai_idx(msg.nas_allowed_nssai, nas) < 0) {
LOG_E(NAS, "NSSAI parameters not match with allowed NSSAI. Couldn't request PDU session.\n");
} else {
request_default_pdusession(nas);
request_pdusession(nas, get_softmodem_params()->default_pdu_session_id);
if (get_nrUE_params()->extra_pdu_id != -1) {
request_pdusession(nas, get_nrUE_params()->extra_pdu_id);
}
}
// Free local message after processing
free_fgmm_registration_accept(&msg);