Commit 69f0bb2b authored by Guido Casati's avatar Guido Casati

Fix PDU session counter overflow issues: max number of PDU Sessions is 256

- Upgrade PDU session counters from uint8_t to uint16_t in ngap_messages_types.h
Co-authored-by: default avatarAssistant <assistant@example.com>
parent 7083e081
...@@ -562,7 +562,7 @@ typedef struct { ...@@ -562,7 +562,7 @@ typedef struct {
// Target ID // Target ID
target_ran_node_id_t target_gnb_id; target_ran_node_id_t target_gnb_id;
// PDU Session Resource List // PDU Session Resource List
uint8_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
pdusession_resource_t pdusessions[NGAP_MAX_PDU_SESSION]; pdusession_resource_t pdusessions[NGAP_MAX_PDU_SESSION];
// Source to Target Transparent Container // Source to Target Transparent Container
source_to_target_transparent_container_t *source2target; source_to_target_transparent_container_t *source2target;
...@@ -610,7 +610,7 @@ typedef struct { ...@@ -610,7 +610,7 @@ typedef struct {
// Security Context // Security Context
ngap_security_context_t security_context; ngap_security_context_t security_context;
// PDU Session Resource Setup List // PDU Session Resource Setup List
uint8_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
ho_request_pdusession_t pduSessionResourceSetupList[NGAP_MAX_PDU_SESSION]; ho_request_pdusession_t pduSessionResourceSetupList[NGAP_MAX_PDU_SESSION];
// Allowed NSSAI // Allowed NSSAI
uint8_t nb_allowed_nssais; uint8_t nb_allowed_nssais;
...@@ -650,7 +650,7 @@ typedef struct { ...@@ -650,7 +650,7 @@ typedef struct {
uint64_t amf_ue_ngap_id; uint64_t amf_ue_ngap_id;
// PDU Session Resource Admitted List // PDU Session Resource Admitted List
pdu_session_resource_admitted_t pdusessions[NGAP_MAX_PDU_SESSION]; pdu_session_resource_admitted_t pdusessions[NGAP_MAX_PDU_SESSION];
uint8_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
// Target to Source Transparent Container // Target to Source Transparent Container
byte_array_t target2source; byte_array_t target2source;
} ngap_handover_request_ack_t; } ngap_handover_request_ack_t;
...@@ -680,7 +680,7 @@ typedef struct { ...@@ -680,7 +680,7 @@ typedef struct {
// Handover Type // Handover Type
ho_type_t handoverType; ho_type_t handoverType;
// PDU Session Resource Handover List // PDU Session Resource Handover List
uint8_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
pdusession_resource_handover_t pdu_sessions[NGAP_MAX_PDU_SESSION]; pdusession_resource_handover_t pdu_sessions[NGAP_MAX_PDU_SESSION];
// Target to Source Transparent Container // Target to Source Transparent Container
byte_array_t handoverCommand; byte_array_t handoverCommand;
...@@ -730,12 +730,12 @@ typedef struct ngap_initial_context_setup_resp_s { ...@@ -730,12 +730,12 @@ typedef struct ngap_initial_context_setup_resp_s {
uint32_t gNB_ue_ngap_id; uint32_t gNB_ue_ngap_id;
/* Number of pdusession setup-ed in the list */ /* Number of pdusession setup-ed in the list */
uint8_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
/* list of pdusession setup-ed by RRC layers */ /* list of pdusession setup-ed by RRC layers */
pdusession_setup_t pdusessions[NGAP_MAX_PDU_SESSION]; pdusession_setup_t pdusessions[NGAP_MAX_PDU_SESSION];
/* Number of pdusession failed to be setup in list */ /* Number of pdusession failed to be setup in list */
uint8_t nb_of_pdusessions_failed; uint16_t nb_of_pdusessions_failed;
/* list of pdusessions that failed to be setup */ /* list of pdusessions that failed to be setup */
pdusession_failed_t pdusessions_failed[NGAP_MAX_PDU_SESSION]; pdusession_failed_t pdusessions_failed[NGAP_MAX_PDU_SESSION];
} ngap_initial_context_setup_resp_t; } ngap_initial_context_setup_resp_t;
...@@ -823,7 +823,7 @@ typedef struct ngap_initial_context_setup_req_s { ...@@ -823,7 +823,7 @@ typedef struct ngap_initial_context_setup_req_s {
uint8_t security_key[SECURITY_KEY_LENGTH]; uint8_t security_key[SECURITY_KEY_LENGTH];
/* Number of pdusession to be setup in the list */ /* Number of pdusession to be setup in the list */
uint8_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
// PDU Session Resource Setup Request List // PDU Session Resource Setup Request List
pdusession_resource_item_t pdusession[NGAP_MAX_PDU_SESSION]; pdusession_resource_item_t pdusession[NGAP_MAX_PDU_SESSION];
...@@ -871,7 +871,7 @@ typedef struct ngap_pdusession_setup_req_s { ...@@ -871,7 +871,7 @@ typedef struct ngap_pdusession_setup_req_s {
nssai_t allowed_nssai[8]; nssai_t allowed_nssai[8];
/* Number of pdusession to be setup in the list */ /* Number of pdusession to be setup in the list */
uint8_t nb_pdusessions_tosetup; uint16_t nb_pdusessions_tosetup;
// PDU Session Resource Setup Request List // PDU Session Resource Setup Request List
pdusession_resource_item_t pdusession[NGAP_MAX_PDU_SESSION]; pdusession_resource_item_t pdusession[NGAP_MAX_PDU_SESSION];
...@@ -885,12 +885,12 @@ typedef struct ngap_pdusession_setup_req_s { ...@@ -885,12 +885,12 @@ typedef struct ngap_pdusession_setup_req_s {
typedef struct ngap_pdusession_setup_resp_s { typedef struct ngap_pdusession_setup_resp_s {
uint32_t gNB_ue_ngap_id; uint32_t gNB_ue_ngap_id;
/* Number of pdusession setup-ed in the list */ /* Number of pdusession setup-ed in the list */
uint8_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
/* list of pdusession setup-ed by RRC layers */ /* list of pdusession setup-ed by RRC layers */
pdusession_setup_t pdusessions[NGAP_MAX_PDU_SESSION]; pdusession_setup_t pdusessions[NGAP_MAX_PDU_SESSION];
/* Number of pdusession failed to be setup in list */ /* Number of pdusession failed to be setup in list */
uint8_t nb_of_pdusessions_failed; uint16_t nb_of_pdusessions_failed;
/* list of pdusessions that failed to be setup */ /* list of pdusessions that failed to be setup */
pdusession_failed_t pdusessions_failed[NGAP_MAX_PDU_SESSION]; pdusession_failed_t pdusessions_failed[NGAP_MAX_PDU_SESSION];
} ngap_pdusession_setup_resp_t; } ngap_pdusession_setup_resp_t;
...@@ -914,7 +914,7 @@ typedef struct pdusession_release_s { ...@@ -914,7 +914,7 @@ typedef struct pdusession_release_s {
typedef struct ngap_ue_release_req_s { typedef struct ngap_ue_release_req_s {
uint32_t gNB_ue_ngap_id; uint32_t gNB_ue_ngap_id;
/* Number of pdusession resource in the list */ /* Number of pdusession resource in the list */
uint8_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
/* list of pdusession resource by RRC layers */ /* list of pdusession resource by RRC layers */
pdusession_release_t pdusessions[NGAP_MAX_PDU_SESSION]; pdusession_release_t pdusessions[NGAP_MAX_PDU_SESSION];
ngap_cause_t cause; ngap_cause_t cause;
...@@ -928,7 +928,7 @@ typedef struct ngap_pdusession_modify_req_s { ...@@ -928,7 +928,7 @@ typedef struct ngap_pdusession_modify_req_s {
uint32_t gNB_ue_ngap_id; uint32_t gNB_ue_ngap_id;
/* Number of pdusession to be modify in the list */ /* Number of pdusession to be modify in the list */
uint8_t nb_pdusessions_tomodify; uint16_t nb_pdusessions_tomodify;
// PDU Session Resource Modify Request List // PDU Session Resource Modify Request List
pdusession_resource_item_t pdusession[NGAP_MAX_PDU_SESSION]; pdusession_resource_item_t pdusession[NGAP_MAX_PDU_SESSION];
...@@ -938,12 +938,12 @@ typedef struct ngap_pdusession_modify_resp_s { ...@@ -938,12 +938,12 @@ typedef struct ngap_pdusession_modify_resp_s {
uint32_t gNB_ue_ngap_id; uint32_t gNB_ue_ngap_id;
/* Number of pdusession modify-ed in the list */ /* Number of pdusession modify-ed in the list */
uint8_t nb_of_pdusessions; uint16_t nb_of_pdusessions;
/* list of pdusession modify-ed by RRC layers */ /* list of pdusession modify-ed by RRC layers */
pdusession_modify_t pdusessions[NGAP_MAX_PDU_SESSION]; pdusession_modify_t pdusessions[NGAP_MAX_PDU_SESSION];
/* Number of pdusession failed to be modify in list */ /* Number of pdusession failed to be modify in list */
uint8_t nb_of_pdusessions_failed; uint16_t nb_of_pdusessions_failed;
/* list of pdusessions that failed to be modify */ /* list of pdusessions that failed to be modify */
pdusession_failed_t pdusessions_failed[NGAP_MAX_PDU_SESSION]; pdusession_failed_t pdusessions_failed[NGAP_MAX_PDU_SESSION];
} ngap_pdusession_modify_resp_t; } ngap_pdusession_modify_resp_t;
...@@ -959,7 +959,7 @@ typedef struct ngap_pdusession_release_command_s { ...@@ -959,7 +959,7 @@ typedef struct ngap_pdusession_release_command_s {
byte_array_t nas_pdu; byte_array_t nas_pdu;
/* Number of pdusession to be released in the list */ /* Number of pdusession to be released in the list */
uint8_t nb_pdusessions_torelease; uint16_t nb_pdusessions_torelease;
/* PDUSession release command */ /* PDUSession release command */
pdusession_release_t pdusession_release_params[NGAP_MAX_PDU_SESSION]; pdusession_release_t pdusession_release_params[NGAP_MAX_PDU_SESSION];
...@@ -969,14 +969,10 @@ typedef struct ngap_pdusession_release_command_s { ...@@ -969,14 +969,10 @@ typedef struct ngap_pdusession_release_command_s {
typedef struct ngap_pdusession_release_resp_s { typedef struct ngap_pdusession_release_resp_s {
/* AMF UE id */ /* AMF UE id */
uint64_t amf_ue_ngap_id; uint64_t amf_ue_ngap_id;
// RAN UE NGAP ID
/* gNB ue ngap id as initialized by NGAP layer */ uint32_t gNB_ue_ngap_id;
uint32_t gNB_ue_ngap_id; // PDU Session Resource Released List
uint16_t nb_of_pdusessions_released;
/* Number of pdusession released in the list */
uint8_t nb_of_pdusessions_released;
/* list of pdusessions released */
pdusession_release_t pdusession_release[NGAP_MAX_PDU_SESSION]; pdusession_release_t pdusession_release[NGAP_MAX_PDU_SESSION];
/* Number of pdusession failed to be released in list */ /* Number of pdusession failed to be released in list */
......
...@@ -944,8 +944,8 @@ int rrc_gNB_process_NGAP_PDUSESSION_MODIFY_REQ(MessageDef *msg_p, instance_t ins ...@@ -944,8 +944,8 @@ int rrc_gNB_process_NGAP_PDUSESSION_MODIFY_REQ(MessageDef *msg_p, instance_t ins
int rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE, uint8_t xid) int rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE, uint8_t xid)
{ {
MessageDef *msg_p = NULL; MessageDef *msg_p = NULL;
uint8_t pdu_sessions_failed = 0; uint16_t pdu_sessions_failed = 0;
uint8_t pdu_sessions_done = 0; uint16_t pdu_sessions_done = 0;
msg_p = itti_alloc_new_message (TASK_RRC_GNB, rrc->module_id, NGAP_PDUSESSION_MODIFY_RESP); msg_p = itti_alloc_new_message (TASK_RRC_GNB, rrc->module_id, NGAP_PDUSESSION_MODIFY_RESP);
if (msg_p == NULL) { if (msg_p == NULL) {
......
...@@ -123,7 +123,7 @@ NGAP_NGAP_PDU_t *encode_ng_handover_required(const ngap_handover_required_t *msg ...@@ -123,7 +123,7 @@ NGAP_NGAP_PDU_t *encode_ng_handover_required(const ngap_handover_required_t *msg
// PDU Session Resource Information List (O) // PDU Session Resource Information List (O)
asn1cCalloc(source2target->pDUSessionResourceInformationList, pduSessionList); asn1cCalloc(source2target->pDUSessionResourceInformationList, pduSessionList);
for (uint8_t i = 0; i < msg->nb_of_pdusessions; ++i) { for (uint16_t i = 0; i < msg->nb_of_pdusessions; ++i) {
const pdusession_resource_t *pduSession = &msg->pdusessions[i]; const pdusession_resource_t *pduSession = &msg->pdusessions[i];
NGAP_DEBUG("Handover Required: preparing PDU Session Resource Information List for PDU Session ID %d\n", NGAP_DEBUG("Handover Required: preparing PDU Session Resource Information List for PDU Session ID %d\n",
pduSession->pdusession_id); pduSession->pdusession_id);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment