Add configurable DNN in PDU session request encoding

This commit is contained in:
Robert Schmidt
2026-01-20 11:43:15 +01:00
parent cadd031c81
commit 542b2d017e
2 changed files with 9 additions and 6 deletions
+1
View File
@@ -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;
/*
+8 -6
View File
@@ -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);
}