Commit c99f836a authored by Guido Casati's avatar Guido Casati

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
parent 9bf79cd2
...@@ -836,11 +836,14 @@ void rrc_gNB_generate_dedicatedRRCReconfiguration_release(gNB_RRC_INST *rrc, ...@@ -836,11 +836,14 @@ void rrc_gNB_generate_dedicatedRRCReconfiguration_release(gNB_RRC_INST *rrc,
nr_rrc_reconfig_param_t params = {.transaction_id = xid}; nr_rrc_reconfig_param_t params = {.transaction_id = xid};
NR_DRB_ToReleaseList_t *to_release = CALLOC(sizeof(*to_release), 1); 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) { FOR_EACH_SEQ_ARR(rrc_pdu_session_param_t *, item, &ue_p->pduSessions) {
if ((item->status == PDU_SESSION_STATUS_TORELEASE) && item->xid == xid) { if ((item->status != PDU_SESSION_STATUS_TORELEASE) && item->xid != xid)
asn1cSequenceAdd(to_release->list, NR_DRB_Identity_t, DRB_release); continue;
*DRB_release = ++i; // DRB ID 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; params.drb_release_list = to_release;
......
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