From 542b2d017e8dedf872488950bc03bf8bdb1d120d Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Sun, 16 Nov 2025 13:28:25 +0100 Subject: [PATCH] Add configurable DNN in PDU session request encoding --- openair2/COMMON/as_message.h | 1 + openair3/NAS/NR_UE/nr_nas_msg.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/openair2/COMMON/as_message.h b/openair2/COMMON/as_message.h index a134c1b47c..d82d1ce53f 100644 --- a/openair2/COMMON/as_message.h +++ b/openair2/COMMON/as_message.h @@ -474,6 +474,7 @@ typedef struct nas_pdu_session_req_s { int pdusession_type; int sst; int sd; + char dnn[103]; /* 24.501 ยง9.11.2.1A: max length 102 + 0-byte */ } nas_pdu_session_req_t; /* diff --git a/openair3/NAS/NR_UE/nr_nas_msg.c b/openair3/NAS/NR_UE/nr_nas_msg.c index 06b75477b6..da8d70f0e2 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg.c +++ b/openair3/NAS/NR_UE/nr_nas_msg.c @@ -1697,11 +1697,11 @@ static void generatePduSessionEstablishRequest(nr_ue_nas_t *nas, as_nas_info_t * if (has_nssai_sd) INT24_TO_BUFFER(pdu_req->sd, &mm_msg->snssai.value[1]); size += 1 + 1 + nssai_len; - int dnnSize = strlen(nas->uicc->dnnStr); + int dnnSize = strlen(pdu_req->dnn); mm_msg->dnn.value = calloc(1, dnnSize + 1); mm_msg->dnn.length = dnnSize + 1; mm_msg->dnn.value[0] = dnnSize; - memcpy(mm_msg->dnn.value + 1, nas->uicc->dnnStr, dnnSize); + memcpy(mm_msg->dnn.value + 1, pdu_req->dnn, dnnSize); size += (1 + 1 + dnnSize + 1); // encode the message @@ -1776,10 +1776,12 @@ static void send_nas_5gmm_ind(instance_t instance, const Guti5GSMobileIdentity_t 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 = 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; + nas_pdu_session_req_t *pdu_req = &NAS_PDU_SESSION_REQ(message_p); + pdu_req->pdusession_id = pdusession_id; + pdu_req->pdusession_type = 0x91; // 0x91 = IPv4, 0x92 = IPv6, 0x93 = IPv4v6 + pdu_req->sst = nas->uicc->nssai_sst; + pdu_req->sd = nas->uicc->nssai_sd; + snprintf(pdu_req->dnn, sizeof(pdu_req->dnn), "%s", nas->uicc->dnnStr); itti_send_msg_to_task(TASK_NAS_NRUE, nas->UE_id, message_p); }