Cleanup PDU Session Handling in RRC/NGAP
Currently, NGAP and RRC share the same structures and responsibilities when handling PDU Session information: this creates tight coupling, redundancy, and makes the code harder to maintain.
- NGAP should be responsible only for: Protocol-specific encoding/decoding (3GPP TS 38.413)
- RRC should own: PDU Session handling and storage in the UE context
This MR is the first step in a broader refactoring of the PDU Session handling code across NGAP and RRC layers, with the goal of splitting responsibilities cleanly between both modules.
- Unified
gtpu_tunnel_t
for tunnel endpoint config (formerlyf1u_tunnel_t
) - Refactored and relocated PDU Session struct definitions for better separation between NGAP and RRC
- Moved
pdusession_t
for PDU Session handling out of NGAP, now defined and managed by RRC only - Defined 3GPP TS 38.413 message-specific structs in NGAP module
- NGAP now decodes NGAP PDU Session Resource Setup/Modify IEs and transfers decoded data to RRC via ITTI
- Add helper functions to copy from NGAP message to
pdusession_t
- Moved
- Introduced new encoders/decoders/helpers in NGAP for handling PDU Session Resource Setup/Modify procedures (e.g.
decode_pdusession_transfer
)- Migrated to NGAP and removed duplicated logic for QoS information decoding (
fill_qos
)
- Migrated to NGAP and removed duplicated logic for QoS information decoding (
- Improved logging of GTP tunnel info
- Merged redundant functions (
f1u_dl_gtp_update
andf1u_ul_gtp_update
) - Removed unused code and obsolete types
- do
free_func
inseq_arr_erase_it
on the provided range and updated unit test - Other fixes and simplifications (e.g. simplified and clarified naming of tunnel/session parameters and structs)
This cleanup improves code readability, has a high code churn (the deletions are ~159.7% of the insertions) and prepares for better modularity before the refactoring of PDU Session handling in RRC/NGAP.
Edited by Guido Casati