Refactor DRB release handling to use actual DRB IDs

- Replace simple counter-based DRB ID assignment with actual DRB ID lookup
- Add nested loop to iterate through DRBs for each PDU session to be release
- Improve logic flow with early continue for non-matching PDU sessions

This ensures DRB release list contains correct DRB IDs that correspond to actual DRB entities
This commit is contained in:
Guido Casati
2025-09-24 16:58:17 +02:00
parent 9bf79cd2c9
commit c99f836ad4
+7 -4
View File
@@ -836,11 +836,14 @@ void rrc_gNB_generate_dedicatedRRCReconfiguration_release(gNB_RRC_INST *rrc,
nr_rrc_reconfig_param_t params = {.transaction_id = xid};
NR_DRB_ToReleaseList_t *to_release = CALLOC(sizeof(*to_release), 1);
int i = 0;
FOR_EACH_SEQ_ARR(rrc_pdu_session_param_t *, item, &ue_p->pduSessions) {
if ((item->status == PDU_SESSION_STATUS_TORELEASE) && item->xid == xid) {
asn1cSequenceAdd(to_release->list, NR_DRB_Identity_t, DRB_release);
*DRB_release = ++i; // DRB ID
if ((item->status != PDU_SESSION_STATUS_TORELEASE) && item->xid != xid)
continue;
FOR_EACH_SEQ_ARR(drb_t *, drb, &ue_p->drbs) {
if (drb->pdusession_id == item->param.pdusession_id) {
asn1cSequenceAdd(to_release->list, NR_DRB_Identity_t, DRB_release);
*DRB_release = drb->drb_id; // DRB ID
}
}
}
params.drb_release_list = to_release;