From aaef0b5e747b79c6967b6b12222056204789fb65 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 5 Oct 2023 14:21:54 +0200 Subject: [PATCH] F1 UE Ctxt Modif Req: forward Capabilities, ignore other CU2DU - forward capabilities to update CellGroupConfig - Do not require measConfig/cG_ConfigInfo to be NULL, but ignore them, as it is not implemented --- openair2/F1AP/f1ap_du_ue_context_management.c | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/openair2/F1AP/f1ap_du_ue_context_management.c b/openair2/F1AP/f1ap_du_ue_context_management.c index 851ced9176..91cb157c9d 100644 --- a/openair2/F1AP/f1ap_du_ue_context_management.c +++ b/openair2/F1AP/f1ap_du_ue_context_management.c @@ -935,6 +935,32 @@ int DU_handle_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance, sctp_assoc_t LOG_D(F1AP, "can't find RRCContainer in UEContextModificationRequestIEs by id %ld \n", F1AP_ProtocolIE_ID_id_RRCContainer); } + /* CU2DU Information */ + F1AP_UEContextModificationRequestIEs_t *ieCU2DU = NULL; + F1AP_FIND_PROTOCOLIE_BY_ID(F1AP_UEContextModificationRequestIEs_t, + ieCU2DU, + container, + F1AP_ProtocolIE_ID_id_CUtoDURRCInformation, + false); + if (ieCU2DU != NULL) { + f1ap_ue_context_modification_req->cu_to_du_rrc_information = + calloc(1, sizeof(*f1ap_ue_context_modification_req->cu_to_du_rrc_information)); + AssertFatal(f1ap_ue_context_modification_req->cu_to_du_rrc_information != NULL, "out of memory\n"); + cu_to_du_rrc_information_t *cu2du = f1ap_ue_context_modification_req->cu_to_du_rrc_information; + const F1AP_CUtoDURRCInformation_t *cu2duie = &ieCU2DU->value.choice.CUtoDURRCInformation; + if (cu2duie->cG_ConfigInfo != NULL) + LOG_W(F1AP, "UE RNTI %04x: ignoring cg_ConfigInfo, not implemented\n", f1ap_ue_context_modification_req->gNB_DU_ue_id); + if (cu2duie->measConfig != NULL) + LOG_W(F1AP, "UE RNTI %04x: ignoring measConfig, not implemented\n", f1ap_ue_context_modification_req->gNB_DU_ue_id); + if (cu2duie->uE_CapabilityRAT_ContainerList != NULL) { + F1AP_UE_CapabilityRAT_ContainerList_t *uecap = cu2duie->uE_CapabilityRAT_ContainerList; + cu2du->uE_CapabilityRAT_ContainerList = calloc(uecap->size, sizeof(*cu2du->uE_CapabilityRAT_ContainerList)); + AssertFatal(cu2du->uE_CapabilityRAT_ContainerList != NULL, "out of memory\n"); + cu2du->uE_CapabilityRAT_ContainerList_length = uecap->size; + memcpy(cu2du->uE_CapabilityRAT_ContainerList, uecap->buf, uecap->size); + } + } + ue_context_modification_request(f1ap_ue_context_modification_req); return 0; }