Paging (F1AP): add F1 paging library (9.2.6.1 3GPP TS 38.473)

Add F1AP Paging library and new message type to follow the existing F1AP
library pattern and to support multi-cell paging and both RAN UE (I-RNTI)
and CN UE (5G-S-TMSI) paging identities at the library level per TS 38.473.

* New library (f1ap_paging.c/h, f1ap_lib_includes.h, CMakeLists.txt)
  - Implement encode/decode/copy/eq/free for F1AP Paging (procedure 9.2.6).
  - Add ASN.1 includes for Paging, PagingIdentity, CN/RAN UE identities.
  - Enables unit testing of Paging enc/dec in f1ap_lib_test.c.

* New types in f1ap_messages_types.h (existing f1ap_paging_ind_t unchanged)
  - f1ap_paging_t: UE Identity Index, paging identity (union + type enum),
    optional paging_drx, paging_priority, paging_origin, and paging_cells[].
  - f1ap_paging_cell_item_t, f1ap_paging_identity_type_t, f1ap_paging_identity_t
    for multi-cell list and RAN/CN identity discrimination.
  - Paging Origin IE is optional per F1AP 8.7.1.2.

Tests: test_f1ap_paging() roundtrip and copy for CN UE (5G-S-TMSI) and
RAN UE (I-RNTI) cases, with optional IEs.
This commit is contained in:
Guido Casati
2026-02-17 12:25:58 +01:00
parent b026e6b4ee
commit 08f0f9369c
7 changed files with 541 additions and 0 deletions
+12
View File
@@ -548,6 +548,18 @@ do { \
(bITsTRING)->bits_unused = 0; \
} while(0)
#define IRNTI_TO_BIT_STRING(mACRO, bITsTRING) \
do { \
(bITsTRING)->buf = calloc(5, sizeof(uint8_t)); \
(bITsTRING)->buf[0] = ((mACRO) >> 32) & 0xff; \
(bITsTRING)->buf[1] = ((mACRO) >> 24) & 0xff; \
(bITsTRING)->buf[2] = ((mACRO) >> 16) & 0xff; \
(bITsTRING)->buf[3] = ((mACRO) >> 8) & 0xff; \
(bITsTRING)->buf[4] = ((mACRO) & 0xff); \
(bITsTRING)->size = 5; \
(bITsTRING)->bits_unused = 0; \
} while (0)
/* Used to format an uint32_t containing an ipv4 address */
#define IPV4_ADDR "%u.%u.%u.%u"
#define IPV4_ADDR_FORMAT(aDDRESS) \