From c45fb431106ecb52dab09e53547c2bc30a032a67 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Sat, 23 Mar 2024 10:18:14 +0100 Subject: [PATCH] Fix: handle CU-to-DU info in UE Ctxt setup Req --- openair2/RRC/NR/mac_rrc_dl_f1ap.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/openair2/RRC/NR/mac_rrc_dl_f1ap.c b/openair2/RRC/NR/mac_rrc_dl_f1ap.c index e501dde45b..b440f1818a 100644 --- a/openair2/RRC/NR/mac_rrc_dl_f1ap.c +++ b/openair2/RRC/NR/mac_rrc_dl_f1ap.c @@ -50,7 +50,21 @@ static void ue_context_setup_request_f1ap(sctp_assoc_t assoc_id, const f1ap_ue_c msg->ittiMsgHeader.originInstance = assoc_id; f1ap_ue_context_setup_t *f1ap_msg = &F1AP_UE_CONTEXT_SETUP_REQ(msg); *f1ap_msg = *req; - AssertFatal(req->cu_to_du_rrc_information == NULL, "cu_to_du_rrc_information not supported yet\n"); + if (req->cu_to_du_rrc_information != NULL) { + f1ap_msg->cu_to_du_rrc_information = calloc(1, sizeof(*f1ap_msg->cu_to_du_rrc_information)); + AssertFatal(f1ap_msg->cu_to_du_rrc_information != NULL, "out of memory\n"); + AssertFatal(req->cu_to_du_rrc_information->cG_ConfigInfo == NULL && req->cu_to_du_rrc_information->cG_ConfigInfo_length == 0, "cg_ConfigInfo not implemented\n"); + AssertFatal(req->cu_to_du_rrc_information->measConfig == NULL && req->cu_to_du_rrc_information->measConfig_length == 0, "cg_ConfigInfo not implemented\n"); + if (req->cu_to_du_rrc_information->uE_CapabilityRAT_ContainerList != NULL) { + const cu_to_du_rrc_information_t *du2cu_req = req->cu_to_du_rrc_information; + cu_to_du_rrc_information_t* du2cu_new = f1ap_msg->cu_to_du_rrc_information; + DevAssert(du2cu_req->uE_CapabilityRAT_ContainerList_length > 0); + du2cu_new->uE_CapabilityRAT_ContainerList_length = du2cu_req->uE_CapabilityRAT_ContainerList_length; + du2cu_new->uE_CapabilityRAT_ContainerList = malloc(du2cu_new->uE_CapabilityRAT_ContainerList_length); + AssertFatal(du2cu_new->uE_CapabilityRAT_ContainerList != NULL, "out of memory\n"); + memcpy(du2cu_new->uE_CapabilityRAT_ContainerList, du2cu_req->uE_CapabilityRAT_ContainerList, du2cu_new->uE_CapabilityRAT_ContainerList_length); + } + } if (req->drbs_to_be_setup_length > 0) { int n = req->drbs_to_be_setup_length; f1ap_msg->drbs_to_be_setup_length = n;