change instance id to 3GPP length
This commit is contained in:
@@ -36,8 +36,9 @@
|
||||
#include "f1ap_cu_ue_context_management.h"
|
||||
#include "f1ap_cu_task.h"
|
||||
#include "proto_agent.h"
|
||||
#include <openair3/ocp-gtpu/gtp_itf.h>
|
||||
|
||||
void cu_task_handle_sctp_association_ind(instance_t instance, sctp_new_association_ind_t *sctp_new_association_ind) {
|
||||
static void cu_task_handle_sctp_association_ind(instance_t instance,instance_t gtpuInstance, sctp_new_association_ind_t *sctp_new_association_ind) {
|
||||
createF1inst(true, instance, NULL);
|
||||
// save the assoc id
|
||||
f1ap_setup_req_t *f1ap_cu_data=f1ap_req(true, instance);
|
||||
@@ -48,7 +49,7 @@ void cu_task_handle_sctp_association_ind(instance_t instance, sctp_new_associati
|
||||
// Nothing
|
||||
}
|
||||
|
||||
void cu_task_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp) {
|
||||
static void cu_task_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp) {
|
||||
DevAssert(sctp_new_association_resp != NULL);
|
||||
|
||||
if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
|
||||
@@ -63,7 +64,7 @@ void cu_task_handle_sctp_association_resp(instance_t instance, sctp_new_associat
|
||||
}
|
||||
}
|
||||
|
||||
void cu_task_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *sctp_data_ind) {
|
||||
static void cu_task_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *sctp_data_ind) {
|
||||
int result;
|
||||
DevAssert(sctp_data_ind != NULL);
|
||||
f1ap_handle_message(instance, sctp_data_ind->assoc_id, sctp_data_ind->stream,
|
||||
@@ -72,7 +73,7 @@ void cu_task_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *sctp_dat
|
||||
AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
|
||||
}
|
||||
|
||||
void cu_task_send_sctp_init_req(instance_t enb_id) {
|
||||
static void cu_task_send_sctp_init_req(instance_t instance, char * my_addr) {
|
||||
// 1. get the itti msg, and retrive the enb_id from the message
|
||||
// 2. use RC.rrc[enb_id] to fill the sctp_init_t with the ip, port
|
||||
// 3. creat an itti message to init
|
||||
@@ -84,12 +85,7 @@ void cu_task_send_sctp_init_req(instance_t enb_id) {
|
||||
message_p->ittiMsg.sctp_init.ipv4 = 1;
|
||||
message_p->ittiMsg.sctp_init.ipv6 = 0;
|
||||
message_p->ittiMsg.sctp_init.nb_ipv4_addr = 1;
|
||||
|
||||
if (RC.nrrrc[0]->node_type == ngran_gNB_CU) {
|
||||
message_p->ittiMsg.sctp_init.ipv4_address[0] = inet_addr(RC.nrrrc[enb_id]->eth_params_s.my_addr);
|
||||
} else {
|
||||
message_p->ittiMsg.sctp_init.ipv4_address[0] = inet_addr(RC.rrc[enb_id]->eth_params_s.my_addr);
|
||||
}
|
||||
message_p->ittiMsg.sctp_init.ipv4_address[0] = inet_addr(my_addr);
|
||||
|
||||
/*
|
||||
* SR WARNING: ipv6 multi-homing fails sometimes for localhost.
|
||||
@@ -97,19 +93,35 @@ void cu_task_send_sctp_init_req(instance_t enb_id) {
|
||||
*/
|
||||
message_p->ittiMsg.sctp_init.nb_ipv6_addr = 0;
|
||||
message_p->ittiMsg.sctp_init.ipv6_address[0] = "0:0:0:0:0:0:0:1";
|
||||
itti_send_msg_to_task(TASK_SCTP, enb_id, message_p);
|
||||
itti_send_msg_to_task(TASK_SCTP, instance, message_p);
|
||||
}
|
||||
|
||||
void *
|
||||
F1AP_CU_task(void *arg) {
|
||||
instance_t cu_task_create_gtpu_instance_to_du(eth_params_t *IPaddrs) {
|
||||
openAddr_t tmp={0};
|
||||
strncpy(tmp.originHost, IPaddrs->my_addr, sizeof(tmp.originHost)-1);
|
||||
strncpy(tmp.destinationHost, IPaddrs->remote_addr, sizeof(tmp.destinationHost)-1);
|
||||
sprintf(tmp.originService, "%d", GTPV1U_UDP_PORT);
|
||||
sprintf(tmp.destinationService, "%d", GTPV1U_UDP_PORT);
|
||||
return ocp_gtpv1Init(tmp);
|
||||
}
|
||||
|
||||
void * F1AP_CU_task(void *arg) {
|
||||
MessageDef *received_msg = NULL;
|
||||
int result;
|
||||
LOG_I(F1AP, "Starting F1AP at CU\n");
|
||||
// no RLC in CU, initialize mem pool for PDCP
|
||||
pool_buffer_init();
|
||||
itti_mark_task_ready(TASK_CU_F1);
|
||||
cu_task_send_sctp_init_req(0);
|
||||
|
||||
eth_params_t *IPaddrs;
|
||||
// Hardcoded instance id!
|
||||
if (RC.nrrrc[0]->node_type == ngran_gNB_CU)
|
||||
IPaddrs=&RC.nrrrc[0]->eth_params_s;
|
||||
else
|
||||
IPaddrs=&RC.rrc[0]->eth_params_s;
|
||||
cu_task_send_sctp_init_req(0, IPaddrs->my_addr);
|
||||
instance_t gtpInstance=cu_task_create_gtpu_instance_to_du(IPaddrs);
|
||||
AssertFatal(gtpInstance>0,"Failed to create CU F1-U UDP listener");
|
||||
|
||||
while (1) {
|
||||
itti_receive_msg(TASK_CU_F1, &received_msg);
|
||||
|
||||
@@ -118,6 +130,7 @@ F1AP_CU_task(void *arg) {
|
||||
LOG_I(F1AP, "CU Task Received SCTP_NEW_ASSOCIATION_IND for instance %ld\n",
|
||||
ITTI_MSG_DESTINATION_INSTANCE(received_msg));
|
||||
cu_task_handle_sctp_association_ind(ITTI_MSG_ORIGIN_INSTANCE(received_msg),
|
||||
gtpInstance,
|
||||
&received_msg->ittiMsg.sctp_new_association_ind);
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user