From f6d23422aadfa138829e8b58ea547c4c0b03e3ce Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Wed, 14 Jan 2026 16:12:49 +0100 Subject: [PATCH] NGAP: enable Handover Cancel encoding This commit adds support for the Handover Cancel initiating message procedure code (NGAP_ProcedureCode_id_HandoverCancel). Changes: - ngap_gNB_decoder.c: Added case handler for Handover Cancel in ngap_gNB_decode_initiating_message() to properly decode and log incoming Handover Cancel messages from the AMF. - ngap_gNB_encoder.c: Added Handover Cancel to the list of supported initiating message procedure codes in ngap_gNB_encode_initiating(), allowing the gNB to encode and send Handover Cancel messages. The Handover Cancel procedure is already implemented in other parts of the NGAP stack, these changes were missing to complete the support by ensuring the procedure code is properly recognized in both the encoder and decoder switch statements, following the same pattern as other procedure codes. --- openair3/NGAP/ngap_gNB_decoder.c | 6 ++++++ openair3/NGAP/ngap_gNB_encoder.c | 1 + 2 files changed, 7 insertions(+) diff --git a/openair3/NGAP/ngap_gNB_decoder.c b/openair3/NGAP/ngap_gNB_decoder.c index 481cccf876..43110e9037 100644 --- a/openair3/NGAP/ngap_gNB_decoder.c +++ b/openair3/NGAP/ngap_gNB_decoder.c @@ -76,6 +76,12 @@ static int ngap_gNB_decode_initiating_message(NGAP_NGAP_PDU_t *pdu) { NGAP_INFO("Handover Preparation initiating message\n"); break; + case NGAP_ProcedureCode_id_HandoverCancel: + res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_NGAP_NGAP_PDU, pdu); + free(res.buffer); + NGAP_INFO("Handover Cancel initiating message\n"); + break; + case NGAP_ProcedureCode_id_PDUSessionResourceModify: res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_NGAP_NGAP_PDU, pdu); free(res.buffer); diff --git a/openair3/NGAP/ngap_gNB_encoder.c b/openair3/NGAP/ngap_gNB_encoder.c index be3945c2f0..ff318ed184 100644 --- a/openair3/NGAP/ngap_gNB_encoder.c +++ b/openair3/NGAP/ngap_gNB_encoder.c @@ -55,6 +55,7 @@ static inline int ngap_gNB_encode_initiating(NGAP_NGAP_PDU_t *pdu, uint8_t **buf NGAP_ProcedureCode_id_PDUSessionResourceModifyIndication, NGAP_ProcedureCode_id_UplinkRANStatusTransfer, NGAP_ProcedureCode_id_HandoverPreparation, + NGAP_ProcedureCode_id_HandoverCancel, NGAP_ProcedureCode_id_HandoverNotification}; int i; for (i = 0; i < sizeofArray(tmp); i++)