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: Assistant <assistant@example.com>
This commit is contained in:
co-authored by
Assistant
parent
7083e08175
commit
69f0bb2b96
@@ -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 {
|
|||||||
// 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 {
|
|||||||
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 {
|
|||||||
// 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 {
|
|||||||
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 {
|
|||||||
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 {
|
|||||||
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 {
|
|||||||
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 {
|
|||||||
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 {
|
|||||||
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 {
|
|||||||
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 {
|
|||||||
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 {
|
|||||||
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
|
|||||||
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
|
|||||||
|
|
||||||
// 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);
|
||||||
|
|||||||
Reference in New Issue
Block a user