Merge remote-tracking branch 'origin/fix-sctp-f1' into integration_2024_w15
This commit is contained in:
@@ -78,7 +78,8 @@ typedef net_ip_address_t f1ap_net_ip_address_t;
|
||||
|
||||
typedef struct f1ap_net_config_t {
|
||||
f1ap_net_ip_address_t CU_f1_ip_address;
|
||||
f1ap_net_ip_address_t DU_f1_ip_address;
|
||||
f1ap_net_ip_address_t DU_f1c_ip_address;
|
||||
char *DU_f1u_ip_address;
|
||||
uint16_t CUport;
|
||||
uint16_t DUport;
|
||||
} f1ap_net_config_t;
|
||||
|
||||
@@ -128,14 +128,7 @@ typedef struct sctp_data_ind_s {
|
||||
} sctp_data_ind_t;
|
||||
|
||||
typedef struct sctp_init_s {
|
||||
/* Request usage of ipv4 */
|
||||
unsigned ipv4:1;
|
||||
/* Request usage of ipv6 */
|
||||
unsigned ipv6:1;
|
||||
uint8_t nb_ipv4_addr;
|
||||
uint32_t ipv4_address[10];
|
||||
uint8_t nb_ipv6_addr;
|
||||
char *ipv6_address[10];
|
||||
char *bind_address;
|
||||
uint16_t port;
|
||||
uint32_t ppid;
|
||||
} sctp_init_t;
|
||||
|
||||
+9
-15
@@ -1873,21 +1873,15 @@ void cuup_init_n3(instance_t instance)
|
||||
|
||||
void cucp_task_send_sctp_init_req(instance_t instance, char *my_addr)
|
||||
{
|
||||
LOG_I(E1AP, "E1AP_CUCP_SCTP_REQ(create socket)\n");
|
||||
MessageDef *message_p = NULL;
|
||||
message_p = itti_alloc_new_message (TASK_CUCP_E1, 0, SCTP_INIT_MSG);
|
||||
message_p->ittiMsg.sctp_init.port = E1AP_PORT_NUMBER;
|
||||
message_p->ittiMsg.sctp_init.ppid = E1AP_SCTP_PPID;
|
||||
message_p->ittiMsg.sctp_init.ipv4 = 1;
|
||||
message_p->ittiMsg.sctp_init.ipv6 = 0;
|
||||
message_p->ittiMsg.sctp_init.nb_ipv4_addr = 1;
|
||||
message_p->ittiMsg.sctp_init.ipv4_address[0] = inet_addr(my_addr);
|
||||
/*
|
||||
* SR WARNING: ipv6 multi-homing fails sometimes for localhost.
|
||||
* * * * Disable it for now.
|
||||
*/
|
||||
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";
|
||||
size_t addr_len = strlen(my_addr) + 1;
|
||||
LOG_I(E1AP, "E1AP_CUCP_SCTP_REQ(create socket) for %s len %ld\n", my_addr, addr_len);
|
||||
MessageDef *message_p = itti_alloc_new_message_sized(TASK_CUCP_E1, 0, SCTP_INIT_MSG, sizeof(sctp_init_t) + addr_len);
|
||||
sctp_init_t *init = &SCTP_INIT_MSG(message_p);
|
||||
init->port = E1AP_PORT_NUMBER;
|
||||
init->ppid = E1AP_SCTP_PPID;
|
||||
char *addr_buf = (char *) (init + 1); // address after sctp_init ITTI message end, allocated above
|
||||
init->bind_address = addr_buf;
|
||||
memcpy(addr_buf, my_addr, addr_len);
|
||||
itti_send_msg_to_task(TASK_SCTP, instance, message_p);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ static void get_NGU_S1U_addr(char **addr, uint16_t *port)
|
||||
sprintf(gtpupath, "%s.[%i].%s", GNB_CONFIG_STRING_GNB_LIST, 0, GNB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG);
|
||||
config_get(config_get_if(), NETParams, sizeofArray(NETParams), gtpupath);
|
||||
char *address;
|
||||
if (NETParams[1].strptr != NULL) {
|
||||
if (NETParams[GNB_IPV4_ADDRESS_FOR_NG_AMF_IDX].strptr != NULL) {
|
||||
LOG_I(GTPU, "SA mode \n");
|
||||
AssertFatal(gnb_ipv4_address_for_NGU != NULL, "NG-U IPv4 address is NULL: could not read IPv4 address\n");
|
||||
address = strdup(gnb_ipv4_address_for_NGU);
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
|
||||
/* L1 configuration parameters names */
|
||||
#define CONFIG_STRING_L1_CC "num_cc"
|
||||
#define CONFIG_STRING_L1_LOCAL_N_IF_NAME "local_n_if_name"
|
||||
#define CONFIG_STRING_L1_LOCAL_N_ADDRESS "local_n_address"
|
||||
#define CONFIG_STRING_L1_REMOTE_N_ADDRESS "remote_n_address"
|
||||
#define CONFIG_STRING_L1_LOCAL_N_PORTC "local_n_portc"
|
||||
@@ -70,7 +69,6 @@
|
||||
#define L1PARAMS_DESC { \
|
||||
{CONFIG_STRING_L1_CC, NULL, 0, .uptr=NULL, .defintval=1, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_L1_TRANSPORT_N_PREFERENCE, NULL, 0, .strptr=NULL, .defstrval="local_mac", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_L1_LOCAL_N_IF_NAME, NULL, 0, .strptr=NULL, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_L1_LOCAL_N_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_L1_REMOTE_N_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.2", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_L1_LOCAL_N_PORTC, NULL, 0, .uptr=NULL, .defintval=50030, TYPE_UINT, 0}, \
|
||||
@@ -98,29 +96,28 @@
|
||||
|
||||
#define L1_CC_IDX 0
|
||||
#define L1_TRANSPORT_N_PREFERENCE_IDX 1
|
||||
#define L1_LOCAL_N_IF_NAME_IDX 2
|
||||
#define L1_LOCAL_N_ADDRESS_IDX 3
|
||||
#define L1_REMOTE_N_ADDRESS_IDX 4
|
||||
#define L1_LOCAL_N_PORTC_IDX 5
|
||||
#define L1_REMOTE_N_PORTC_IDX 6
|
||||
#define L1_LOCAL_N_PORTD_IDX 7
|
||||
#define L1_REMOTE_N_PORTD_IDX 8
|
||||
#define L1_PRACH_DTX_THRESHOLD_IDX 9
|
||||
#define L1_PUCCH1_DTX_THRESHOLD_IDX 10
|
||||
#define L1_PUCCH1AB_DTX_THRESHOLD_IDX 11
|
||||
#define L1_PRACH_DTX_EMTC0_THRESHOLD_IDX 12
|
||||
#define L1_PUCCH1_DTX_EMTC0_THRESHOLD_IDX 13
|
||||
#define L1_PUCCH1AB_DTX_EMTC0_THRESHOLD_IDX 14
|
||||
#define L1_PRACH_DTX_EMTC1_THRESHOLD_IDX 15
|
||||
#define L1_PUCCH1_DTX_EMTC1_THRESHOLD_IDX 16
|
||||
#define L1_PUCCH1AB_DTX_EMTC1_THRESHOLD_IDX 17
|
||||
#define L1_PRACH_DTX_EMTC2_THRESHOLD_IDX 18
|
||||
#define L1_PUCCH1_DTX_EMTC2_THRESHOLD_IDX 19
|
||||
#define L1_PUCCH1AB_DTX_EMTC2_THRESHOLD_IDX 20
|
||||
#define L1_PRACH_DTX_EMTC3_THRESHOLD_IDX 21
|
||||
#define L1_PUCCH1_DTX_EMTC3_THRESHOLD_IDX 22
|
||||
#define L1_PUCCH1AB_DTX_EMTC3_THRESHOLD_IDX 23
|
||||
#define L1_PUSCH_SIGNAL_THRESHOLD_IDX 24
|
||||
#define L1_LOCAL_N_ADDRESS_IDX 2
|
||||
#define L1_REMOTE_N_ADDRESS_IDX 3
|
||||
#define L1_LOCAL_N_PORTC_IDX 4
|
||||
#define L1_REMOTE_N_PORTC_IDX 5
|
||||
#define L1_LOCAL_N_PORTD_IDX 6
|
||||
#define L1_REMOTE_N_PORTD_IDX 7
|
||||
#define L1_PRACH_DTX_THRESHOLD_IDX 8
|
||||
#define L1_PUCCH1_DTX_THRESHOLD_IDX 9
|
||||
#define L1_PUCCH1AB_DTX_THRESHOLD_IDX 10
|
||||
#define L1_PRACH_DTX_EMTC0_THRESHOLD_IDX 11
|
||||
#define L1_PUCCH1_DTX_EMTC0_THRESHOLD_IDX 12
|
||||
#define L1_PUCCH1AB_DTX_EMTC0_THRESHOLD_IDX 13
|
||||
#define L1_PRACH_DTX_EMTC1_THRESHOLD_IDX 14
|
||||
#define L1_PUCCH1_DTX_EMTC1_THRESHOLD_IDX 15
|
||||
#define L1_PUCCH1AB_DTX_EMTC1_THRESHOLD_IDX 16
|
||||
#define L1_PRACH_DTX_EMTC2_THRESHOLD_IDX 17
|
||||
#define L1_PUCCH1_DTX_EMTC2_THRESHOLD_IDX 18
|
||||
#define L1_PUCCH1AB_DTX_EMTC2_THRESHOLD_IDX 19
|
||||
#define L1_PRACH_DTX_EMTC3_THRESHOLD_IDX 20
|
||||
#define L1_PUCCH1_DTX_EMTC3_THRESHOLD_IDX 21
|
||||
#define L1_PUCCH1AB_DTX_EMTC3_THRESHOLD_IDX 22
|
||||
#define L1_PUSCH_SIGNAL_THRESHOLD_IDX 23
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
#endif
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
/* MACRLC configuration parameters names */
|
||||
#define CONFIG_STRING_MACRLC_CC "num_cc"
|
||||
#define CONFIG_STRING_MACRLC_TRANSPORT_N_PREFERENCE "tr_n_preference"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_IF_NAME "local_n_if_name"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_ADDRESS "local_n_address"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_N_ADDRESS "remote_n_address"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_PORTC "local_n_portc"
|
||||
@@ -47,7 +46,6 @@
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_PORTD "local_n_portd"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_N_PORTD "remote_n_portd"
|
||||
#define CONFIG_STRING_MACRLC_TRANSPORT_S_PREFERENCE "tr_s_preference"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_IF_NAME "local_s_if_name"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_ADDRESS "local_s_address"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_S_ADDRESS "remote_s_address"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_PORTC "local_s_portc"
|
||||
@@ -71,7 +69,6 @@
|
||||
#define MACRLCPARAMS_DESC { \
|
||||
{CONFIG_STRING_MACRLC_CC, NULL, 0, .uptr=NULL, .defintval=50011, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_TRANSPORT_N_PREFERENCE, NULL, 0, .strptr=NULL, .defstrval="local_L1", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_N_IF_NAME, NULL, 0, .strptr=NULL, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_N_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_REMOTE_N_ADDRESS, NULL, 0, .uptr=NULL, .defstrval="127.0.0.2", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_N_PORTC, NULL, 0, .uptr=NULL, .defintval=50010, TYPE_UINT, 0}, \
|
||||
@@ -79,7 +76,6 @@
|
||||
{CONFIG_STRING_MACRLC_LOCAL_N_PORTD, NULL, 0, .uptr=NULL, .defintval=50011, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_REMOTE_N_PORTD, NULL, 0, .uptr=NULL, .defintval=50011, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_TRANSPORT_S_PREFERENCE, NULL, 0, .strptr=NULL, .defstrval="local_RRC", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_S_IF_NAME, NULL, 0, .strptr=NULL, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_S_ADDRESS, NULL, 0, .uptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_REMOTE_S_ADDRESS, NULL, 0, .uptr=NULL, .defstrval="127.0.0.2", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_S_PORTC, NULL, 0, .uptr=NULL, .defintval=50020, TYPE_UINT, 0}, \
|
||||
@@ -100,30 +96,28 @@
|
||||
|
||||
#define MACRLC_CC_IDX 0
|
||||
#define MACRLC_TRANSPORT_N_PREFERENCE_IDX 1
|
||||
#define MACRLC_LOCAL_N_IF_NAME_IDX 2
|
||||
#define MACRLC_LOCAL_N_ADDRESS_IDX 3
|
||||
#define MACRLC_REMOTE_N_ADDRESS_IDX 4
|
||||
#define MACRLC_LOCAL_N_PORTC_IDX 5
|
||||
#define MACRLC_REMOTE_N_PORTC_IDX 6
|
||||
#define MACRLC_LOCAL_N_PORTD_IDX 7
|
||||
#define MACRLC_REMOTE_N_PORTD_IDX 8
|
||||
#define MACRLC_TRANSPORT_S_PREFERENCE_IDX 9
|
||||
#define MACRLC_LOCAL_S_IF_NAME_IDX 10
|
||||
#define MACRLC_LOCAL_S_ADDRESS_IDX 11
|
||||
#define MACRLC_REMOTE_S_ADDRESS_IDX 12
|
||||
#define MACRLC_LOCAL_S_PORTC_IDX 13
|
||||
#define MACRLC_REMOTE_S_PORTC_IDX 14
|
||||
#define MACRLC_LOCAL_S_PORTD_IDX 15
|
||||
#define MACRLC_REMOTE_S_PORTD_IDX 16
|
||||
#define MACRLC_SCHED_MODE_IDX 17
|
||||
#define MACRLC_PUSCH10xSNR_IDX 18
|
||||
#define MACRLC_PUCCH10xSNR_IDX 19
|
||||
#define MACRLC_DEFAULT_SCHED_DL_ALGO_IDX 20
|
||||
#define MACRLC_UE_MULTIPLE_MAX_IDX 21
|
||||
#define MACRLC_USE_MCS_OFFSET_IDX 22
|
||||
#define MACRLC_BLER_TARGET_LOWER_IDX 23
|
||||
#define MACRLC_BLER_TARGET_UPPER_IDX 24
|
||||
#define MACRLC_MAX_UL_RB_INDEX_IDX 25
|
||||
#define MACRLC_LOCAL_N_ADDRESS_IDX 2
|
||||
#define MACRLC_REMOTE_N_ADDRESS_IDX 3
|
||||
#define MACRLC_LOCAL_N_PORTC_IDX 4
|
||||
#define MACRLC_REMOTE_N_PORTC_IDX 5
|
||||
#define MACRLC_LOCAL_N_PORTD_IDX 6
|
||||
#define MACRLC_REMOTE_N_PORTD_IDX 7
|
||||
#define MACRLC_TRANSPORT_S_PREFERENCE_IDX 8
|
||||
#define MACRLC_LOCAL_S_ADDRESS_IDX 9
|
||||
#define MACRLC_REMOTE_S_ADDRESS_IDX 10
|
||||
#define MACRLC_LOCAL_S_PORTC_IDX 11
|
||||
#define MACRLC_REMOTE_S_PORTC_IDX 12
|
||||
#define MACRLC_LOCAL_S_PORTD_IDX 13
|
||||
#define MACRLC_REMOTE_S_PORTD_IDX 14
|
||||
#define MACRLC_SCHED_MODE_IDX 15
|
||||
#define MACRLC_PUSCH10xSNR_IDX 16
|
||||
#define MACRLC_PUCCH10xSNR_IDX 17
|
||||
#define MACRLC_DEFAULT_SCHED_DL_ALGO_IDX 18
|
||||
#define MACRLC_UE_MULTIPLE_MAX_IDX 19
|
||||
#define MACRLC_USE_MCS_OFFSET_IDX 20
|
||||
#define MACRLC_BLER_TARGET_LOWER_IDX 21
|
||||
#define MACRLC_BLER_TARGET_UPPER_IDX 22
|
||||
#define MACRLC_MAX_UL_RB_INDEX_IDX 23
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
#endif
|
||||
|
||||
@@ -101,7 +101,6 @@ void RCconfig_L1(void) {
|
||||
|
||||
if (strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "local_mac") == 0) {
|
||||
} else if (strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "nfapi") == 0) {
|
||||
RC.eNB[j][0]->eth_params_n.local_if_name = strdup(*(L1_ParamList.paramarray[j][L1_LOCAL_N_IF_NAME_IDX].strptr));
|
||||
RC.eNB[j][0]->eth_params_n.my_addr = strdup(*(L1_ParamList.paramarray[j][L1_LOCAL_N_ADDRESS_IDX].strptr));
|
||||
RC.eNB[j][0]->eth_params_n.remote_addr = strdup(*(L1_ParamList.paramarray[j][L1_REMOTE_N_ADDRESS_IDX].strptr));
|
||||
RC.eNB[j][0]->eth_params_n.my_portc = *(L1_ParamList.paramarray[j][L1_LOCAL_N_PORTC_IDX].iptr);
|
||||
@@ -206,7 +205,6 @@ void RCconfig_macrlc(void)
|
||||
|
||||
if (strcmp(*(MacRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_S_PREFERENCE_IDX].strptr), "local_L1") == 0) {
|
||||
} else if (strcmp(*(MacRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_S_PREFERENCE_IDX].strptr), "nfapi") == 0) {
|
||||
RC.mac[j]->eth_params_s.local_if_name = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_S_IF_NAME_IDX].strptr));
|
||||
RC.mac[j]->eth_params_s.my_addr = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_S_ADDRESS_IDX].strptr));
|
||||
RC.mac[j]->eth_params_s.remote_addr = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_REMOTE_S_ADDRESS_IDX].strptr));
|
||||
RC.mac[j]->eth_params_s.my_portc = *(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_S_PORTC_IDX].iptr);
|
||||
@@ -1822,7 +1820,6 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc) {
|
||||
|
||||
int RCconfig_gtpu(void ) {
|
||||
int num_enbs = 0;
|
||||
char *enb_interface_name_for_S1U = NULL;
|
||||
char *enb_ipv4_address_for_S1U = NULL;
|
||||
uint16_t enb_port_for_S1U = 0;
|
||||
char *address = NULL;
|
||||
@@ -2049,18 +2046,8 @@ int RCconfig_M2(MessageDef *msg_p, uint32_t i) {
|
||||
for (l = 0; l < M2ParamList.numelt; l++) {
|
||||
M2AP_REGISTER_ENB_REQ (msg_p).nb_m2 += 1;
|
||||
strcpy(M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv4_address,*(M2ParamList.paramarray[l][ENB_M2_IPV4_ADDRESS_IDX].strptr));
|
||||
strcpy(M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv6_address,*(M2ParamList.paramarray[l][ENB_M2_IPV6_ADDRESS_IDX].strptr));
|
||||
|
||||
if (strcmp(*(M2ParamList.paramarray[l][ENB_M2_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv4") == 0) {
|
||||
M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv4 = 1;
|
||||
M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv6 = 0;
|
||||
} else if (strcmp(*(M2ParamList.paramarray[l][ENB_M2_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv6") == 0) {
|
||||
M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv4 = 0;
|
||||
M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv6 = 1;
|
||||
} else if (strcmp(*(M2ParamList.paramarray[l][ENB_M2_IP_ADDRESS_PREFERENCE_IDX].strptr), "no") == 0) {
|
||||
M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv4 = 1;
|
||||
M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv6 = 1;
|
||||
}
|
||||
M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv4 = 1;
|
||||
M2AP_REGISTER_ENB_REQ (msg_p).target_mce_m2_ip_address[l].ipv6 = 0;
|
||||
}
|
||||
// timers
|
||||
//{
|
||||
@@ -2345,18 +2332,8 @@ int RCconfig_S1(
|
||||
for (int l = 0; l < S1ParamList.numelt; l++) {
|
||||
S1AP_REGISTER_ENB_REQ (msg_p).nb_mme += 1;
|
||||
strcpy(S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv4_address,*(S1ParamList.paramarray[l][ENB_MME_IPV4_ADDRESS_IDX].strptr));
|
||||
strcpy(S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv6_address,*(S1ParamList.paramarray[l][ENB_MME_IPV6_ADDRESS_IDX].strptr));
|
||||
|
||||
if (strcmp(*(S1ParamList.paramarray[l][ENB_MME_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv4") == 0) {
|
||||
S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv4 = 1;
|
||||
S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv6 = 0;
|
||||
} else if (strcmp(*(S1ParamList.paramarray[l][ENB_MME_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv6") == 0) {
|
||||
S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv4 = 0;
|
||||
S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv6 = 1;
|
||||
} else if (strcmp(*(S1ParamList.paramarray[l][ENB_MME_IP_ADDRESS_PREFERENCE_IDX].strptr), "no") == 0) {
|
||||
S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv4 = 1;
|
||||
S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv6 = 1;
|
||||
}
|
||||
S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv4 = 1;
|
||||
S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv6 = 0;
|
||||
|
||||
if (S1ParamList.paramarray[l][ENB_MME_BROADCAST_PLMN_INDEX].iptr) {
|
||||
S1AP_REGISTER_ENB_REQ(msg_p).broadcast_plmn_num[l] = S1ParamList.paramarray[l][ENB_MME_BROADCAST_PLMN_INDEX].numelt;
|
||||
@@ -2571,19 +2548,9 @@ int RCconfig_X2(MessageDef *msg_p, uint32_t i) {
|
||||
for (l = 0; l < X2ParamList.numelt; l++) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).nb_x2 += 1;
|
||||
strcpy(X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4_address,*(X2ParamList.paramarray[l][ENB_X2_IPV4_ADDRESS_IDX].strptr));
|
||||
strcpy(X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6_address,*(X2ParamList.paramarray[l][ENB_X2_IPV6_ADDRESS_IDX].strptr));
|
||||
|
||||
LOG_I(X2AP,"registering with ip : %s\n",*(X2ParamList.paramarray[l][ENB_X2_IPV4_ADDRESS_IDX].strptr));
|
||||
if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv4") == 0) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 1;
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 0;
|
||||
} else if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv6") == 0) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 0;
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 1;
|
||||
} else if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "no") == 0) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 1;
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 1;
|
||||
}
|
||||
LOG_I(X2AP, "registering with ip : %s\n", *(X2ParamList.paramarray[l][ENB_X2_IPV4_ADDRESS_IDX].strptr));
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 1;
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 0;
|
||||
}
|
||||
|
||||
// timers
|
||||
|
||||
+42
-136
@@ -262,7 +262,6 @@ typedef enum {
|
||||
#define ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE_OLD "mobile_country_code"
|
||||
#define ENB_CONFIG_STRING_MOBILE_NETWORK_CODE_OLD "mobile_network_code"
|
||||
#define ENB_CONFIG_STRING_TRANSPORT_S_PREFERENCE "tr_s_preference"
|
||||
#define ENB_CONFIG_STRING_LOCAL_S_IF_NAME "local_s_if_name"
|
||||
#define ENB_CONFIG_STRING_LOCAL_S_ADDRESS "local_s_address"
|
||||
#define ENB_CONFIG_STRING_REMOTE_S_ADDRESS "remote_s_address"
|
||||
#define ENB_CONFIG_STRING_LOCAL_S_PORTC "local_s_portc"
|
||||
@@ -293,7 +292,6 @@ typedef enum {
|
||||
{ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE_OLD, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_MOBILE_NETWORK_CODE_OLD, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_TRANSPORT_S_PREFERENCE, NULL, 0, .strptr=NULL, .defstrval="local_mac", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_LOCAL_S_IF_NAME, NULL, 0, .strptr=NULL, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_LOCAL_S_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_REMOTE_S_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.2", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_LOCAL_S_PORTC, NULL, 0, .uptr=NULL, .defuintval=50000, TYPE_UINT, 0}, \
|
||||
@@ -321,24 +319,23 @@ typedef enum {
|
||||
#define ENB_MOBILE_COUNTRY_CODE_IDX_OLD 4
|
||||
#define ENB_MOBILE_NETWORK_CODE_IDX_OLD 5
|
||||
#define ENB_TRANSPORT_S_PREFERENCE_IDX 6
|
||||
#define ENB_LOCAL_S_IF_NAME_IDX 7
|
||||
#define ENB_LOCAL_S_ADDRESS_IDX 8
|
||||
#define ENB_REMOTE_S_ADDRESS_IDX 9
|
||||
#define ENB_LOCAL_S_PORTC_IDX 10
|
||||
#define ENB_REMOTE_S_PORTC_IDX 11
|
||||
#define ENB_LOCAL_S_PORTD_IDX 12
|
||||
#define ENB_REMOTE_S_PORTD_IDX 13
|
||||
#define ENB_NRCELLID_IDX 14
|
||||
#define ENB_RRC_INACTIVITY_THRES_IDX 15
|
||||
#define ENB_ENABLE_MEASUREMENT_REPORTS 16
|
||||
#define ENB_ENABLE_X2 17
|
||||
#define ENB_ENABLE_ENB_M2 18
|
||||
#define ENB_ENABLE_MCE_M2 19
|
||||
#define ENB_S1SETUP_RSP_TIMER_IDX 20
|
||||
#define ENB_S1SETUP_REQ_TIMER_IDX 21
|
||||
#define ENB_S1SETUP_REQ_COUNT_IDX 22
|
||||
#define ENB_SCTP_REQ_TIMER_IDX 23
|
||||
#define ENB_SCTP_REQ_COUNT_IDX 24
|
||||
#define ENB_LOCAL_S_ADDRESS_IDX 7
|
||||
#define ENB_REMOTE_S_ADDRESS_IDX 8
|
||||
#define ENB_LOCAL_S_PORTC_IDX 9
|
||||
#define ENB_REMOTE_S_PORTC_IDX 10
|
||||
#define ENB_LOCAL_S_PORTD_IDX 11
|
||||
#define ENB_REMOTE_S_PORTD_IDX 12
|
||||
#define ENB_NRCELLID_IDX 13
|
||||
#define ENB_RRC_INACTIVITY_THRES_IDX 14
|
||||
#define ENB_ENABLE_MEASUREMENT_REPORTS 15
|
||||
#define ENB_ENABLE_X2 16
|
||||
#define ENB_ENABLE_ENB_M2 17
|
||||
#define ENB_ENABLE_MCE_M2 18
|
||||
#define ENB_S1SETUP_RSP_TIMER_IDX 19
|
||||
#define ENB_S1SETUP_REQ_TIMER_IDX 20
|
||||
#define ENB_S1SETUP_REQ_COUNT_IDX 21
|
||||
#define ENB_SCTP_REQ_TIMER_IDX 22
|
||||
#define ENB_SCTP_REQ_COUNT_IDX 23
|
||||
|
||||
#define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD}
|
||||
// clang-format off
|
||||
@@ -999,10 +996,7 @@ typedef struct srb1_params_s {
|
||||
|
||||
|
||||
#define ENB_CONFIG_STRING_MME_IPV4_ADDRESS "ipv4"
|
||||
#define ENB_CONFIG_STRING_MME_IPV6_ADDRESS "ipv6"
|
||||
#define ENB_CONFIG_STRING_MME_PORT "port"
|
||||
#define ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE "active"
|
||||
#define ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE "preference"
|
||||
#define ENB_CONFIG_STRING_MME_BROADCAST_PLMN_INDEX "broadcast_plmn_index"
|
||||
|
||||
|
||||
@@ -1013,9 +1007,6 @@ typedef struct srb1_params_s {
|
||||
// clang-format off
|
||||
#define S1PARAMS_DESC { \
|
||||
{ENB_CONFIG_STRING_MME_IPV4_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_MME_IPV6_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_MME_BROADCAST_PLMN_INDEX, NULL, 0, .uptr=NULL, .defintarrayval=NULL, TYPE_UINTARRAY, 6}, \
|
||||
{ENB_CONFIG_STRING_MME_PORT, NULL, 0, .u16ptr=NULL, .defuintval=S1AP_PORT_NUMBER, TYPE_UINT16, 0}, \
|
||||
}
|
||||
@@ -1025,11 +1016,8 @@ typedef struct srb1_params_s {
|
||||
|
||||
|
||||
#define ENB_MME_IPV4_ADDRESS_IDX 0
|
||||
#define ENB_MME_IPV6_ADDRESS_IDX 1
|
||||
#define ENB_MME_IP_ADDRESS_ACTIVE_IDX 2
|
||||
#define ENB_MME_IP_ADDRESS_PREFERENCE_IDX 3
|
||||
#define ENB_MME_BROADCAST_PLMN_INDEX 4
|
||||
#define ENB_MME_PORT_IDX 5
|
||||
#define ENB_MME_BROADCAST_PLMN_INDEX 1
|
||||
#define ENB_MME_PORT_IDX 2
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/* X2 configuration parameters section name */
|
||||
@@ -1039,9 +1027,6 @@ typedef struct srb1_params_s {
|
||||
|
||||
|
||||
#define ENB_CONFIG_STRING_TARGET_ENB_X2_IPV4_ADDRESS "ipv4"
|
||||
#define ENB_CONFIG_STRING_TARGET_ENB_X2_IPV6_ADDRESS "ipv6"
|
||||
#define ENB_CONFIG_STRING_TARGET_ENB_X2_IP_ADDRESS_PREFERENCE "preference"
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/* X2 configuration parameters */
|
||||
@@ -1050,14 +1035,10 @@ typedef struct srb1_params_s {
|
||||
// clang-format off
|
||||
#define X2PARAMS_DESC { \
|
||||
{ENB_CONFIG_STRING_TARGET_ENB_X2_IPV4_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_TARGET_ENB_X2_IPV6_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_TARGET_ENB_X2_IP_ADDRESS_PREFERENCE, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
#define ENB_X2_IPV4_ADDRESS_IDX 0
|
||||
#define ENB_X2_IPV6_ADDRESS_IDX 1
|
||||
#define ENB_X2_IP_ADDRESS_PREFERENCE_IDX 2
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
@@ -1069,8 +1050,6 @@ typedef struct srb1_params_s {
|
||||
|
||||
|
||||
#define ENB_CONFIG_STRING_TARGET_MCE_M2_IPV4_ADDRESS "ipv4"
|
||||
#define ENB_CONFIG_STRING_TARGET_MCE_M2_IPV6_ADDRESS "ipv6"
|
||||
#define ENB_CONFIG_STRING_TARGET_MCE_M2_IP_ADDRESS_PREFERENCE "preference"
|
||||
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
@@ -1083,14 +1062,10 @@ typedef struct srb1_params_s {
|
||||
// clang-format off
|
||||
#define M2PARAMS_DESC { \
|
||||
{ENB_CONFIG_STRING_TARGET_MCE_M2_IPV4_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_TARGET_MCE_M2_IPV6_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_TARGET_MCE_M2_IP_ADDRESS_PREFERENCE, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
#define ENB_M2_IPV4_ADDRESS_IDX 0
|
||||
#define ENB_M2_IPV6_ADDRESS_IDX 1
|
||||
#define ENB_M2_IP_ADDRESS_PREFERENCE_IDX 2
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
@@ -1121,22 +1096,18 @@ typedef struct srb1_params_s {
|
||||
/* S1 interface configuration parameters section name */
|
||||
#define ENB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG "NETWORK_INTERFACES"
|
||||
|
||||
#define ENB_INTERFACE_NAME_FOR_S1_MME_IDX 0
|
||||
#define ENB_IPV4_ADDRESS_FOR_S1_MME_IDX 1
|
||||
#define ENB_INTERFACE_NAME_FOR_S1U_IDX 2
|
||||
#define ENB_IPV4_ADDR_FOR_S1U_IDX 3
|
||||
#define ENB_PORT_FOR_S1U_IDX 4
|
||||
#define ENB_IPV4_ADDR_FOR_X2C_IDX 5
|
||||
#define ENB_PORT_FOR_X2C_IDX 6
|
||||
#define ENB_IPV4_ADDR_FOR_M2C_IDX 7
|
||||
#define ENB_PORT_FOR_M2C_IDX 8
|
||||
#define MCE_IPV4_ADDR_FOR_M2C_IDX 9
|
||||
#define MCE_PORT_FOR_M2C_IDX 10
|
||||
#define ENB_IPV4_ADDRESS_FOR_S1_MME_IDX 0
|
||||
#define ENB_IPV4_ADDR_FOR_S1U_IDX 1
|
||||
#define ENB_PORT_FOR_S1U_IDX 2
|
||||
#define ENB_IPV4_ADDR_FOR_X2C_IDX 3
|
||||
#define ENB_PORT_FOR_X2C_IDX 4
|
||||
#define ENB_IPV4_ADDR_FOR_M2C_IDX 5
|
||||
#define ENB_PORT_FOR_M2C_IDX 6
|
||||
#define MCE_IPV4_ADDR_FOR_M2C_IDX 7
|
||||
#define MCE_PORT_FOR_M2C_IDX 8
|
||||
|
||||
/* S1 interface configuration parameters names */
|
||||
#define ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1_MME "ENB_INTERFACE_NAME_FOR_S1_MME"
|
||||
#define ENB_CONFIG_STRING_ENB_IPV4_ADDRESS_FOR_S1_MME "ENB_IPV4_ADDRESS_FOR_S1_MME"
|
||||
#define ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1U "ENB_INTERFACE_NAME_FOR_S1U"
|
||||
#define ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U "ENB_IPV4_ADDRESS_FOR_S1U"
|
||||
#define ENB_CONFIG_STRING_ENB_PORT_FOR_S1U "ENB_PORT_FOR_S1U"
|
||||
|
||||
@@ -1157,9 +1128,7 @@ typedef struct srb1_params_s {
|
||||
/*--------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
// clang-format off
|
||||
#define NETPARAMS_DESC { \
|
||||
{ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1_MME, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_ENB_IPV4_ADDRESS_FOR_S1_MME, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1U, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_ENB_PORT_FOR_S1U, NULL, 0, .u16ptr=NULL, .defuintval=GTPV1_U_PORT_NUMBER, TYPE_UINT16, 0}, \
|
||||
{ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_X2C, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
@@ -1177,7 +1146,6 @@ typedef struct srb1_params_s {
|
||||
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
// clang-format off
|
||||
#define GTPUPARAMS_DESC { \
|
||||
{ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1U, NULL, 0, .strptr=&enb_interface_name_for_S1U, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U, NULL, 0, .strptr=&enb_ipv4_address_for_S1U, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_ENB_PORT_FOR_S1U, NULL, 0, .u16ptr=&enb_port_for_S1U, .defuintval=GTPV1_U_PORT_NUMBER, TYPE_UINT16, 0}, \
|
||||
}
|
||||
@@ -1190,64 +1158,6 @@ typedef struct srb1_params_s {
|
||||
#define CONFIG_STRING_L1_LIST "L1s"
|
||||
#define CONFIG_STRING_L1_CONFIG "l1_config"
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/* CU/DU configuration section names*/
|
||||
#define CONFIG_STRING_DU_LIST "DU"
|
||||
#define CONFIG_STRING_CU_LIST "CU"
|
||||
#define DU_TYPE_LTE 0
|
||||
#define DU_TYPE_WIFI 1
|
||||
#define ENB_CONFIG_STRING_CU_INTERFACES_CONFIG "CU_INTERFACES"
|
||||
#define ENB_CONFIG_STRING_CU_INTERFACE_NAME_FOR_F1U "CU_INTERFACE_NAME_FOR_F1U"
|
||||
#define ENB_CONFIG_STRING_CU_IPV4_ADDRESS_FOR_F1U "CU_IPV4_ADDRESS_FOR_F1U"
|
||||
#define ENB_CONFIG_STRING_CU_PORT_FOR_F1U "CU_PORT_FOR_F1U"
|
||||
#define ENB_CONFIG_STRING_DU_TYPE "DU_TYPE"
|
||||
#define ENB_CONFIG_STRING_F1_U_CU_TRANSPORT_TYPE "F1_U_CU_TRANSPORT_TYPE"
|
||||
#define ENB_CONFIG_STRING_DU_INTERFACES_CONFIG "DU_INTERFACES"
|
||||
#define ENB_CONFIG_STRING_DU_INTERFACE_NAME_FOR_F1U "DU_INTERFACE_NAME_FOR_F1U"
|
||||
#define ENB_CONFIG_STRING_DU_IPV4_ADDRESS_FOR_F1U "DU_IPV4_ADDRESS_FOR_F1U"
|
||||
#define ENB_CONFIG_STRING_DU_PORT_FOR_F1U "DU_PORT_FOR_F1U"
|
||||
#define ENB_CONFIG_STRING_F1_U_DU_TRANSPORT_TYPE "F1_U_DU_TRANSPORT_TYPE"
|
||||
|
||||
#define CONFIG_STRING_CU_BALANCING "CU_BALANCING"
|
||||
|
||||
// clang-format off
|
||||
#define CUPARAMS_DESC { \
|
||||
{ENB_CONFIG_STRING_CU_INTERFACE_NAME_FOR_F1U, NULL, 0, .strptr=NULL, .defstrval="eth0", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_CU_IPV4_ADDRESS_FOR_F1U, NULL, 0, .strptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_CU_PORT_FOR_F1U, NULL, 0, .uptr=NULL, .defintval=2210, TYPE_UINT, 0}, \
|
||||
{ENB_CONFIG_STRING_F1_U_CU_TRANSPORT_TYPE, NULL, 0, .strptr=NULL, .defstrval="TCP", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_DU_TYPE, NULL, 0, .strptr=NULL, .defstrval="LTE", TYPE_STRING, 0}, \
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
// clang-format off
|
||||
#define DUPARAMS_DESC { \
|
||||
{ENB_CONFIG_STRING_DU_INTERFACE_NAME_FOR_F1U, NULL, 0, .strptr=NULL, .defstrval="eth0", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_DU_IPV4_ADDRESS_FOR_F1U, NULL, 0, .strptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{ENB_CONFIG_STRING_DU_PORT_FOR_F1U, NULL, 0, .uptr=NULL, .defintval=2210, TYPE_UINT, 0}, \
|
||||
{ENB_CONFIG_STRING_F1_U_DU_TRANSPORT_TYPE, NULL, 0, .strptr=NULL, .defstrval="TCP", TYPE_STRING, 0}, \
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
// clang-format off
|
||||
#define CU_BAL_DESC { \
|
||||
{CONFIG_STRING_CU_BALANCING, NULL, 0, .strptr=NULL, .defstrval="ALL", TYPE_STRING, 0}, \
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
#define CU_INTERFACE_F1U 0
|
||||
#define CU_ADDRESS_F1U 1
|
||||
#define CU_PORT_F1U 2
|
||||
#define CU_TYPE_F1U 3
|
||||
|
||||
#define DU_INTERFACE_F1U 0
|
||||
#define DU_ADDRESS_F1U 1
|
||||
#define DU_PORT_F1U 2
|
||||
#define DU_TYPE_F1U 3
|
||||
#define DU_TECH 4
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/* MACRLC configuration section names */
|
||||
#define CONFIG_STRING_MACRLC_LIST "MACRLCs"
|
||||
@@ -1257,7 +1167,6 @@ typedef struct srb1_params_s {
|
||||
/* MACRLC configuration parameters names */
|
||||
#define CONFIG_STRING_MACRLC_CC "num_cc"
|
||||
#define CONFIG_STRING_MACRLC_TRANSPORT_N_PREFERENCE "tr_n_preference"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_IF_NAME "local_n_if_name"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_ADDRESS "local_n_address"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_N_ADDRESS "remote_n_address"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_PORTC "local_n_portc"
|
||||
@@ -1265,7 +1174,6 @@ typedef struct srb1_params_s {
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_PORTD "local_n_portd"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_N_PORTD "remote_n_portd"
|
||||
#define CONFIG_STRING_MACRLC_TRANSPORT_S_PREFERENCE "tr_s_preference"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_IF_NAME "local_s_if_name"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_ADDRESS "local_s_address"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_S_ADDRESS "remote_s_address"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_PORTC "local_s_portc"
|
||||
@@ -1276,22 +1184,20 @@ typedef struct srb1_params_s {
|
||||
|
||||
#define MACRLC_CC_IDX 0
|
||||
#define MACRLC_TRANSPORT_N_PREFERENCE_IDX 1
|
||||
#define MACRLC_LOCAL_N_IF_NAME_IDX 2
|
||||
#define MACRLC_LOCAL_N_ADDRESS_IDX 3
|
||||
#define MACRLC_REMOTE_N_ADDRESS_IDX 4
|
||||
#define MACRLC_LOCAL_N_PORTC_IDX 5
|
||||
#define MACRLC_REMOTE_N_PORTC_IDX 6
|
||||
#define MACRLC_LOCAL_N_PORTD_IDX 7
|
||||
#define MACRLC_REMOTE_N_PORTD_IDX 8
|
||||
#define MACRLC_TRANSPORT_S_PREFERENCE_IDX 9
|
||||
#define MACRLC_LOCAL_S_IF_NAME_IDX 10
|
||||
#define MACRLC_LOCAL_S_ADDRESS_IDX 11
|
||||
#define MACRLC_REMOTE_S_ADDRESS_IDX 12
|
||||
#define MACRLC_LOCAL_S_PORTC_IDX 13
|
||||
#define MACRLC_REMOTE_S_PORTC_IDX 14
|
||||
#define MACRLC_LOCAL_S_PORTD_IDX 15
|
||||
#define MACRLC_REMOTE_S_PORTD_IDX 16
|
||||
#define MACRLC_SCHED_MODE_IDX 17
|
||||
#define MACRLC_LOCAL_N_ADDRESS_IDX 2
|
||||
#define MACRLC_REMOTE_N_ADDRESS_IDX 3
|
||||
#define MACRLC_LOCAL_N_PORTC_IDX 4
|
||||
#define MACRLC_REMOTE_N_PORTC_IDX 5
|
||||
#define MACRLC_LOCAL_N_PORTD_IDX 6
|
||||
#define MACRLC_REMOTE_N_PORTD_IDX 7
|
||||
#define MACRLC_TRANSPORT_S_PREFERENCE_IDX 8
|
||||
#define MACRLC_LOCAL_S_ADDRESS_IDX 9
|
||||
#define MACRLC_REMOTE_S_ADDRESS_IDX 10
|
||||
#define MACRLC_LOCAL_S_PORTC_IDX 11
|
||||
#define MACRLC_REMOTE_S_PORTC_IDX 12
|
||||
#define MACRLC_LOCAL_S_PORTD_IDX 13
|
||||
#define MACRLC_REMOTE_S_PORTD_IDX 14
|
||||
#define MACRLC_SCHED_MODE_IDX 15
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/* thread configuration parameters section name */
|
||||
|
||||
@@ -67,30 +67,24 @@
|
||||
|
||||
#define MCE_CONFIG_STRING_NETWORK_INTERFACES_CONFIG "NETWORK_INTERFACES"
|
||||
|
||||
#define MCE2_INTERFACE_NAME_FOR_M2_ENB_IDX 0
|
||||
#define MCE2_IPV4_ADDR_FOR_M2C_IDX 1
|
||||
#define MCE2_PORT_FOR_M2C_IDX 2
|
||||
#define MCE2_INTERFACE_NAME_FOR_M3_MME_IDX 3
|
||||
#define MCE2_IPV4_ADDR_FOR_M3C_IDX 4
|
||||
#define MCE2_PORT_FOR_M3C_IDX 5
|
||||
#define MCE2_IPV4_ADDR_FOR_M2C_IDX 0
|
||||
#define MCE2_PORT_FOR_M2C_IDX 1
|
||||
#define MCE2_IPV4_ADDR_FOR_M3C_IDX 2
|
||||
#define MCE2_PORT_FOR_M3C_IDX 3
|
||||
|
||||
/* interface configuration parameters names */
|
||||
/* M2 interface configuration parameters names */
|
||||
#define MCE_CONFIG_STRING_MCE_INTERFACE_NAME_FOR_M2_ENB "ENB_INTERFACE_NAME_FOR_M2_ENB"
|
||||
#define MCE_CONFIG_STRING_MCE_IPV4_ADDRESS_FOR_M2C "MCE_IPV4_ADDRESS_FOR_M2C"
|
||||
#define MCE_CONFIG_STRING_MCE_PORT_FOR_M2C "MCE_PORT_FOR_M2C"
|
||||
|
||||
/* M3 interface configuration parameters names */
|
||||
#define MCE_CONFIG_STRING_MCE_INTERFACE_NAME_FOR_M3_MME "MCE_INTERFACE_NAME_FOR_M3_MME"
|
||||
#define MCE_CONFIG_STRING_MCE_IPV4_ADDRESS_FOR_M3C "MCE_IPV4_ADDRESS_FOR_M3C"
|
||||
#define MCE_CONFIG_STRING_MCE_PORT_FOR_M3C "MCE_PORT_FOR_M3C"
|
||||
|
||||
|
||||
#define MCE_NETPARAMS_DESC { \
|
||||
{MCE_CONFIG_STRING_MCE_INTERFACE_NAME_FOR_M2_ENB, NULL, 0, .strptr=&mce_interface_name_for_m2_enb, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{MCE_CONFIG_STRING_MCE_IPV4_ADDRESS_FOR_M2C, NULL, 0, .strptr=&mce_ipv4_address_for_m2c, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{MCE_CONFIG_STRING_MCE_PORT_FOR_M2C, NULL, 0, .uptr=&mce_port_for_m2c, .defintval=36443L, TYPE_UINT, 0}, \
|
||||
{MCE_CONFIG_STRING_MCE_INTERFACE_NAME_FOR_M3_MME, NULL, 0, .strptr=&mce_interface_name_for_m3_mme, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{MCE_CONFIG_STRING_MCE_IPV4_ADDRESS_FOR_M3C, NULL, 0, .strptr=&mce_ipv4_address_for_m3c, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{MCE_CONFIG_STRING_MCE_PORT_FOR_M3C, NULL, 0, .uptr=&mce_port_for_m3c, .defintval=36444L, TYPE_UINT, 0}, \
|
||||
}
|
||||
@@ -102,18 +96,12 @@
|
||||
#define MCE_CONFIG_STRING_TARGET_MME_M3_IP_ADDRESS "target_mme_m3_ip_address"
|
||||
/* M3 configuration parameters names */
|
||||
#define MCE_CONFIG_STRING_TARGET_MME_M3_IPV4_ADDRESS "ipv4"
|
||||
#define MCE_CONFIG_STRING_TARGET_MME_M3_IPV6_ADDRESS "ipv6"
|
||||
#define MCE_CONFIG_STRING_TARGET_MME_M3_IP_ADDRESS_PREFERENCE "preference"
|
||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||
#define M3PARAMS_DESC { \
|
||||
{MCE_CONFIG_STRING_TARGET_MME_M3_IPV4_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{MCE_CONFIG_STRING_TARGET_MME_M3_IPV6_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{MCE_CONFIG_STRING_TARGET_MME_M3_IP_ADDRESS_PREFERENCE, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{MCE_CONFIG_STRING_TARGET_MME_M3_IPV4_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
}
|
||||
|
||||
#define MCE2_M3_IPV4_ADDRESS_IDX 0
|
||||
#define MCE2_M3_IPV6_ADDRESS_IDX 1
|
||||
#define MCE2_M3_IP_ADDRESS_PREFERENCE_IDX 2
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
@@ -96,25 +96,20 @@ static void cu_task_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *s
|
||||
AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
|
||||
}
|
||||
|
||||
static void cu_task_send_sctp_init_req(instance_t instance, char *my_addr) {
|
||||
static void cu_task_send_sctp_init_req(instance_t instance, char *my_addr)
|
||||
{
|
||||
// 1. get the itti msg, and retrive the nb_id from the message
|
||||
// 2. use RC.rrc[nb_id] to fill the sctp_init_t with the ip, port
|
||||
// 3. creat an itti message to init
|
||||
LOG_I(F1AP, "F1AP_CU_SCTP_REQ(create socket)\n");
|
||||
MessageDef *message_p = NULL;
|
||||
message_p = itti_alloc_new_message (TASK_CU_F1, 0, SCTP_INIT_MSG);
|
||||
message_p->ittiMsg.sctp_init.port = F1AP_PORT_NUMBER;
|
||||
message_p->ittiMsg.sctp_init.ppid = F1AP_SCTP_PPID;
|
||||
message_p->ittiMsg.sctp_init.ipv4 = 1;
|
||||
message_p->ittiMsg.sctp_init.ipv6 = 0;
|
||||
message_p->ittiMsg.sctp_init.nb_ipv4_addr = 1;
|
||||
message_p->ittiMsg.sctp_init.ipv4_address[0] = inet_addr(my_addr);
|
||||
/*
|
||||
* SR WARNING: ipv6 multi-homing fails sometimes for localhost.
|
||||
* * * * Disable it for now.
|
||||
*/
|
||||
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";
|
||||
size_t addr_len = strlen(my_addr) + 1;
|
||||
LOG_I(F1AP, "F1AP_CU_SCTP_REQ(create socket) for %s len %ld\n", my_addr, addr_len);
|
||||
MessageDef *message_p = itti_alloc_new_message_sized(TASK_CU_F1, 0, SCTP_INIT_MSG, sizeof(sctp_init_t) + addr_len);
|
||||
sctp_init_t *init = &SCTP_INIT_MSG(message_p);
|
||||
init->port = F1AP_PORT_NUMBER;
|
||||
init->ppid = F1AP_SCTP_PPID;
|
||||
char *addr_buf = (char *) (init + 1); // address after ITTI message end, allocated above
|
||||
init->bind_address = addr_buf;
|
||||
memcpy(addr_buf, my_addr, addr_len);
|
||||
itti_send_msg_to_task(TASK_SCTP, instance, message_p);
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ instance_t DUuniqInstance=0;
|
||||
static instance_t du_create_gtpu_instance_to_cu(const f1ap_net_config_t *nc)
|
||||
{
|
||||
openAddr_t tmp = {0};
|
||||
strncpy(tmp.originHost, nc->DU_f1_ip_address.ipv4_address, sizeof(tmp.originHost) - 1);
|
||||
strncpy(tmp.originHost, nc->DU_f1u_ip_address, sizeof(tmp.originHost) - 1);
|
||||
strncpy(tmp.destinationHost, nc->CU_f1_ip_address.ipv4_address, sizeof(tmp.destinationHost) - 1);
|
||||
sprintf(tmp.originService, "%d", nc->DUport);
|
||||
sprintf(tmp.destinationService, "%d", nc->CUport);
|
||||
@@ -64,6 +64,8 @@ void du_task_send_sctp_association_req(instance_t instance, f1ap_net_config_t *n
|
||||
sctp_new_association_req_p->out_streams = 2; //du_inst->sctp_out_streams;
|
||||
// remote
|
||||
memcpy(&sctp_new_association_req_p->remote_address, &nc->CU_f1_ip_address, sizeof(nc->CU_f1_ip_address));
|
||||
// local
|
||||
memcpy(&sctp_new_association_req_p->local_address, &nc->DU_f1c_ip_address, sizeof(nc->DU_f1c_ip_address));
|
||||
// du_f1ap_register_to_sctp
|
||||
itti_send_msg_to_task(TASK_SCTP, instance, message_p);
|
||||
}
|
||||
|
||||
@@ -1189,7 +1189,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(sctp_assoc_t assoc_id, f1ap_ue_cont
|
||||
asn1cCalloc(dLUPTNLInformation_ToBeSetup_Item->dLUPTNLInformation.choice.gTPTunnel, gTPTunnel);
|
||||
/* transportLayerAddress */
|
||||
struct sockaddr_in addr= {0};
|
||||
inet_pton(AF_INET, getCxt(0)->net_config.DU_f1_ip_address.ipv4_address, &addr.sin_addr.s_addr);
|
||||
inet_pton(AF_INET, getCxt(0)->net_config.DU_f1u_ip_address, &addr.sin_addr.s_addr);
|
||||
TRANSPORT_LAYER_ADDRESS_IPv4_TO_BIT_STRING(addr.sin_addr.s_addr, &gTPTunnel->transportLayerAddress);
|
||||
/* gTP_TEID */
|
||||
INT32_TO_OCTET_STRING(resp->drbs_to_be_modified[i].up_dl_tnl[j].teid, &gTPTunnel->gTP_TEID);
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
|
||||
/* L1 configuration parameters names */
|
||||
#define CONFIG_STRING_L1_CC "num_cc"
|
||||
#define CONFIG_STRING_L1_LOCAL_N_IF_NAME "local_n_if_name"
|
||||
#define CONFIG_STRING_L1_LOCAL_N_ADDRESS "local_n_address"
|
||||
#define CONFIG_STRING_L1_REMOTE_N_ADDRESS "remote_n_address"
|
||||
#define CONFIG_STRING_L1_LOCAL_N_PORTC "local_n_portc"
|
||||
@@ -68,7 +67,6 @@
|
||||
#define L1PARAMS_DESC { \
|
||||
{CONFIG_STRING_L1_CC, NULL, 0, .uptr=NULL, .defintval=1, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_L1_TRANSPORT_N_PREFERENCE, NULL, 0, .strptr=NULL, .defstrval="local_mac", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_L1_LOCAL_N_IF_NAME, NULL, 0, .strptr=NULL, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_L1_LOCAL_N_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_L1_REMOTE_N_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.2", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_L1_LOCAL_N_PORTC, NULL, 0, .uptr=NULL, .defintval=50030, TYPE_UINT, 0}, \
|
||||
@@ -90,24 +88,23 @@
|
||||
// clang-format on
|
||||
#define L1_CC_IDX 0
|
||||
#define L1_TRANSPORT_N_PREFERENCE_IDX 1
|
||||
#define L1_LOCAL_N_IF_NAME_IDX 2
|
||||
#define L1_LOCAL_N_ADDRESS_IDX 3
|
||||
#define L1_REMOTE_N_ADDRESS_IDX 4
|
||||
#define L1_LOCAL_N_PORTC_IDX 5
|
||||
#define L1_REMOTE_N_PORTC_IDX 6
|
||||
#define L1_LOCAL_N_PORTD_IDX 7
|
||||
#define L1_REMOTE_N_PORTD_IDX 8
|
||||
#define L1_THREAD_POOL_SIZE 9
|
||||
#define L1_OFDM_OFFSET_DIVISOR 10
|
||||
#define L1_PUCCH0_DTX_THRESHOLD 11
|
||||
#define L1_PRACH_DTX_THRESHOLD 12
|
||||
#define L1_PUSCH_DTX_THRESHOLD 13
|
||||
#define L1_SRS_DTX_THRESHOLD 14
|
||||
#define L1_MAX_LDPC_ITERATIONS 15
|
||||
#define L1_RX_THREAD_CORE 16
|
||||
#define L1_TX_THREAD_CORE 17
|
||||
#define L1_TX_AMP_BACKOFF_dB 18
|
||||
#define L1_PHASE_COMP 19
|
||||
#define L1_LOCAL_N_ADDRESS_IDX 2
|
||||
#define L1_REMOTE_N_ADDRESS_IDX 3
|
||||
#define L1_LOCAL_N_PORTC_IDX 4
|
||||
#define L1_REMOTE_N_PORTC_IDX 5
|
||||
#define L1_LOCAL_N_PORTD_IDX 6
|
||||
#define L1_REMOTE_N_PORTD_IDX 7
|
||||
#define L1_THREAD_POOL_SIZE 8
|
||||
#define L1_OFDM_OFFSET_DIVISOR 9
|
||||
#define L1_PUCCH0_DTX_THRESHOLD 10
|
||||
#define L1_PRACH_DTX_THRESHOLD 11
|
||||
#define L1_PUSCH_DTX_THRESHOLD 12
|
||||
#define L1_SRS_DTX_THRESHOLD 13
|
||||
#define L1_MAX_LDPC_ITERATIONS 14
|
||||
#define L1_RX_THREAD_CORE 15
|
||||
#define L1_TX_THREAD_CORE 16
|
||||
#define L1_TX_AMP_BACKOFF_dB 17
|
||||
#define L1_PHASE_COMP 18
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
#endif
|
||||
|
||||
@@ -39,15 +39,14 @@
|
||||
/* MACRLC configuration parameters names */
|
||||
#define CONFIG_STRING_MACRLC_CC "num_cc"
|
||||
#define CONFIG_STRING_MACRLC_TRANSPORT_N_PREFERENCE "tr_n_preference"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_IF_NAME "local_n_if_name"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_ADDRESS "local_n_address"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_ADDRESS_F1U "local_n_address_f1u"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_N_ADDRESS "remote_n_address"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_PORTC "local_n_portc"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_N_PORTC "remote_n_portc"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_PORTD "local_n_portd"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_N_PORTD "remote_n_portd"
|
||||
#define CONFIG_STRING_MACRLC_TRANSPORT_S_PREFERENCE "tr_s_preference"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_IF_NAME "local_s_if_name"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_ADDRESS "local_s_address"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_S_ADDRESS "remote_s_address"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_PORTC "local_s_portc"
|
||||
@@ -93,7 +92,6 @@
|
||||
#define MACRLCPARAMS_DESC { \
|
||||
{CONFIG_STRING_MACRLC_CC, NULL, 0, .uptr=NULL, .defintval=50011, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_TRANSPORT_N_PREFERENCE, NULL, 0, .strptr=NULL, .defstrval="local_L1", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_N_IF_NAME, NULL, 0, .strptr=NULL, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_N_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_REMOTE_N_ADDRESS, NULL, 0, .uptr=NULL, .defstrval="127.0.0.2", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_N_PORTC, NULL, 0, .uptr=NULL, .defintval=50010, TYPE_UINT, 0}, \
|
||||
@@ -101,7 +99,6 @@
|
||||
{CONFIG_STRING_MACRLC_LOCAL_N_PORTD, NULL, 0, .uptr=NULL, .defintval=50011, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_REMOTE_N_PORTD, NULL, 0, .uptr=NULL, .defintval=50011, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_TRANSPORT_S_PREFERENCE, NULL, 0, .strptr=NULL, .defstrval="local_RRC", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_S_IF_NAME, NULL, 0, .strptr=NULL, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_S_ADDRESS, NULL, 0, .uptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_REMOTE_S_ADDRESS, NULL, 0, .uptr=NULL, .defstrval="127.0.0.2", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_S_PORTC, NULL, 0, .uptr=NULL, .defintval=50020, TYPE_UINT, 0}, \
|
||||
@@ -125,43 +122,43 @@
|
||||
{CONFIG_STRING_MACRLC_MIN_GRANT_PRB, HLP_MACRLC_MIN_GRANT_PRB, 0, .u8ptr=NULL, .defintval=5, TYPE_UINT8, 0}, \
|
||||
{CONFIG_STRING_MACRLC_MIN_GRANT_MCS, HLP_MACRLC_MIN_GRANT_MCS, 0, .u8ptr=NULL, .defintval=9, TYPE_UINT8, 0}, \
|
||||
{CONFIG_STRING_MACRLC_IDENTITY_PM, HLP_MACRLC_IDENTITY_PM, PARAMFLAG_BOOL, .u8ptr=NULL, .defintval=0, TYPE_UINT8, 0}, \
|
||||
{CONFIG_STRING_MACRLC_LOCAL_N_ADDRESS_F1U, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
}
|
||||
// clang-format off
|
||||
|
||||
#define MACRLC_CC_IDX 0
|
||||
#define MACRLC_TRANSPORT_N_PREFERENCE_IDX 1
|
||||
#define MACRLC_LOCAL_N_IF_NAME_IDX 2
|
||||
#define MACRLC_LOCAL_N_ADDRESS_IDX 3
|
||||
#define MACRLC_REMOTE_N_ADDRESS_IDX 4
|
||||
#define MACRLC_LOCAL_N_PORTC_IDX 5
|
||||
#define MACRLC_REMOTE_N_PORTC_IDX 6
|
||||
#define MACRLC_LOCAL_N_PORTD_IDX 7
|
||||
#define MACRLC_REMOTE_N_PORTD_IDX 8
|
||||
#define MACRLC_TRANSPORT_S_PREFERENCE_IDX 9
|
||||
#define MACRLC_LOCAL_S_IF_NAME_IDX 10
|
||||
#define MACRLC_LOCAL_S_ADDRESS_IDX 11
|
||||
#define MACRLC_REMOTE_S_ADDRESS_IDX 12
|
||||
#define MACRLC_LOCAL_S_PORTC_IDX 13
|
||||
#define MACRLC_REMOTE_S_PORTC_IDX 14
|
||||
#define MACRLC_LOCAL_S_PORTD_IDX 15
|
||||
#define MACRLC_REMOTE_S_PORTD_IDX 16
|
||||
#define MACRLC_ULSCH_MAX_FRAME_INACTIVITY 17
|
||||
#define MACRLC_PUSCHTARGETSNRX10_IDX 18
|
||||
#define MACRLC_PUCCHTARGETSNRX10_IDX 19
|
||||
#define MACRLC_UL_PRBBLACK_SNR_THRESHOLD_IDX 20
|
||||
#define MACRLC_PUCCHFAILURETHRES_IDX 21
|
||||
#define MACRLC_PUSCHFAILURETHRES_IDX 22
|
||||
#define MACRLC_DL_BLER_TARGET_UPPER_IDX 23
|
||||
#define MACRLC_DL_BLER_TARGET_LOWER_IDX 24
|
||||
#define MACRLC_DL_MAX_MCS_IDX 25
|
||||
#define MACRLC_UL_BLER_TARGET_UPPER_IDX 26
|
||||
#define MACRLC_UL_BLER_TARGET_LOWER_IDX 27
|
||||
#define MACRLC_UL_MAX_MCS_IDX 28
|
||||
#define MACRLC_DL_HARQ_ROUND_MAX_IDX 29
|
||||
#define MACRLC_UL_HARQ_ROUND_MAX_IDX 30
|
||||
#define MACRLC_MIN_GRANT_PRB_IDX 31
|
||||
#define MACRLC_MIN_GRANT_MCS_IDX 32
|
||||
#define MACRLC_IDENTITY_PM_IDX 33
|
||||
#define MACRLC_LOCAL_N_ADDRESS_IDX 2
|
||||
#define MACRLC_REMOTE_N_ADDRESS_IDX 3
|
||||
#define MACRLC_LOCAL_N_PORTC_IDX 4
|
||||
#define MACRLC_REMOTE_N_PORTC_IDX 5
|
||||
#define MACRLC_LOCAL_N_PORTD_IDX 6
|
||||
#define MACRLC_REMOTE_N_PORTD_IDX 7
|
||||
#define MACRLC_TRANSPORT_S_PREFERENCE_IDX 8
|
||||
#define MACRLC_LOCAL_S_ADDRESS_IDX 9
|
||||
#define MACRLC_REMOTE_S_ADDRESS_IDX 10
|
||||
#define MACRLC_LOCAL_S_PORTC_IDX 11
|
||||
#define MACRLC_REMOTE_S_PORTC_IDX 12
|
||||
#define MACRLC_LOCAL_S_PORTD_IDX 13
|
||||
#define MACRLC_REMOTE_S_PORTD_IDX 14
|
||||
#define MACRLC_ULSCH_MAX_FRAME_INACTIVITY 15
|
||||
#define MACRLC_PUSCHTARGETSNRX10_IDX 16
|
||||
#define MACRLC_PUCCHTARGETSNRX10_IDX 17
|
||||
#define MACRLC_UL_PRBBLACK_SNR_THRESHOLD_IDX 18
|
||||
#define MACRLC_PUCCHFAILURETHRES_IDX 19
|
||||
#define MACRLC_PUSCHFAILURETHRES_IDX 20
|
||||
#define MACRLC_DL_BLER_TARGET_UPPER_IDX 21
|
||||
#define MACRLC_DL_BLER_TARGET_LOWER_IDX 22
|
||||
#define MACRLC_DL_MAX_MCS_IDX 23
|
||||
#define MACRLC_UL_BLER_TARGET_UPPER_IDX 24
|
||||
#define MACRLC_UL_BLER_TARGET_LOWER_IDX 25
|
||||
#define MACRLC_UL_MAX_MCS_IDX 26
|
||||
#define MACRLC_DL_HARQ_ROUND_MAX_IDX 27
|
||||
#define MACRLC_UL_HARQ_ROUND_MAX_IDX 28
|
||||
#define MACRLC_MIN_GRANT_PRB_IDX 29
|
||||
#define MACRLC_MIN_GRANT_MCS_IDX 30
|
||||
#define MACRLC_IDENTITY_PM_IDX 31
|
||||
#define MACRLC_LOCAL_N_ADDRESS_F1U_IDX 32
|
||||
|
||||
#define MACRLCPARAMS_CHECK { \
|
||||
{ .s5 = { NULL } }, \
|
||||
@@ -191,13 +188,12 @@
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s2 = { config_check_intrange, {1, 8} } }, /* DL max HARQ rounds */ \
|
||||
{ .s2 = { config_check_intrange, {1, 8} } }, /* UL max HARQ rounds */ \
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
{ .s2 = { NULL } }, \
|
||||
{ .s5 = { NULL } }, \
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
@@ -892,7 +892,6 @@ void RCconfig_NR_L1(void)
|
||||
if (strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "local_mac") == 0) {
|
||||
// sf_ahead = 2; // Need 4 subframe gap between RX and TX
|
||||
} else if (strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "nfapi") == 0) {
|
||||
RC.gNB[j]->eth_params_n.local_if_name = strdup(*(L1_ParamList.paramarray[j][L1_LOCAL_N_IF_NAME_IDX].strptr));
|
||||
RC.gNB[j]->eth_params_n.my_addr = strdup(*(L1_ParamList.paramarray[j][L1_LOCAL_N_ADDRESS_IDX].strptr));
|
||||
RC.gNB[j]->eth_params_n.remote_addr = strdup(*(L1_ParamList.paramarray[j][L1_REMOTE_N_ADDRESS_IDX].strptr));
|
||||
RC.gNB[j]->eth_params_n.my_portc = *(L1_ParamList.paramarray[j][L1_LOCAL_N_PORTC_IDX].iptr);
|
||||
@@ -1278,8 +1277,10 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
|
||||
} else if (strcmp(*(MacRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_N_PREFERENCE_IDX].strptr), "f1") == 0
|
||||
|| strcmp(*(MacRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_N_PREFERENCE_IDX].strptr), "cudu") == 0) {
|
||||
printf("Configuring F1 interfaces for MACRLC\n");
|
||||
RC.nrmac[j]->eth_params_n.local_if_name = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_IF_NAME_IDX].strptr));
|
||||
RC.nrmac[j]->eth_params_n.my_addr = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_ADDRESS_IDX].strptr));
|
||||
char **f1caddr = MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_ADDRESS_IDX].strptr;
|
||||
RC.nrmac[j]->eth_params_n.my_addr = strdup(*f1caddr);
|
||||
char **f1uaddr = MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_ADDRESS_F1U_IDX].strptr;
|
||||
RC.nrmac[j]->f1u_addr = f1uaddr != NULL ? strdup(*f1uaddr) : strdup(*f1caddr);
|
||||
RC.nrmac[j]->eth_params_n.remote_addr = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_REMOTE_N_ADDRESS_IDX].strptr));
|
||||
RC.nrmac[j]->eth_params_n.my_portc = *(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_PORTC_IDX].iptr);
|
||||
RC.nrmac[j]->eth_params_n.remote_portc = *(MacRLC_ParamList.paramarray[j][MACRLC_REMOTE_N_PORTC_IDX].iptr);
|
||||
@@ -1292,7 +1293,6 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
|
||||
|
||||
if (strcmp(*(MacRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_S_PREFERENCE_IDX].strptr), "local_L1") == 0) {
|
||||
} else if (strcmp(*(MacRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_S_PREFERENCE_IDX].strptr), "nfapi") == 0) {
|
||||
RC.nrmac[j]->eth_params_s.local_if_name = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_S_IF_NAME_IDX].strptr));
|
||||
RC.nrmac[j]->eth_params_s.my_addr = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_S_ADDRESS_IDX].strptr));
|
||||
RC.nrmac[j]->eth_params_s.remote_addr = strdup(*(MacRLC_ParamList.paramarray[j][MACRLC_REMOTE_S_ADDRESS_IDX].strptr));
|
||||
RC.nrmac[j]->eth_params_s.my_portc = *(MacRLC_ParamList.paramarray[j][MACRLC_LOCAL_S_PORTC_IDX].iptr);
|
||||
@@ -1578,7 +1578,6 @@ void RCconfig_NRRRC(gNB_RRC_INST *rrc)
|
||||
LOG_I(GNB_APP,"F1AP: gNB_CU_id[%d] %d\n", k, rrc->node_id);
|
||||
rrc->node_name = strdup(*(GNBParamList.paramarray[0][GNB_GNB_NAME_IDX].strptr));
|
||||
LOG_I(GNB_APP,"F1AP: gNB_CU_name[%d] %s\n", k, rrc->node_name);
|
||||
rrc->eth_params_s.local_if_name = strdup(*(GNBParamList.paramarray[i][GNB_LOCAL_S_IF_NAME_IDX].strptr));
|
||||
rrc->eth_params_s.my_addr = strdup(*(GNBParamList.paramarray[i][GNB_LOCAL_S_ADDRESS_IDX].strptr));
|
||||
rrc->eth_params_s.remote_addr = strdup(*(GNBParamList.paramarray[i][GNB_REMOTE_S_ADDRESS_IDX].strptr));
|
||||
rrc->eth_params_s.my_portc = *(GNBParamList.paramarray[i][GNB_LOCAL_S_PORTC_IDX].uptr);
|
||||
@@ -1595,7 +1594,6 @@ void RCconfig_NRRRC(gNB_RRC_INST *rrc)
|
||||
if (strcmp(*(GNBParamList.paramarray[i][GNB_TRANSPORT_S_PREFERENCE_IDX].strptr), "local_mac") == 0) {
|
||||
|
||||
} else if (strcmp(*(GNBParamList.paramarray[i][GNB_TRANSPORT_S_PREFERENCE_IDX].strptr), "cudu") == 0) {
|
||||
rrc->eth_params_s.local_if_name = strdup(*(GNBParamList.paramarray[i][GNB_LOCAL_S_IF_NAME_IDX].strptr));
|
||||
rrc->eth_params_s.my_addr = strdup(*(GNBParamList.paramarray[i][GNB_LOCAL_S_ADDRESS_IDX].strptr));
|
||||
rrc->eth_params_s.remote_addr = strdup(*(GNBParamList.paramarray[i][GNB_REMOTE_S_ADDRESS_IDX].strptr));
|
||||
rrc->eth_params_s.my_portc = *(GNBParamList.paramarray[i][GNB_LOCAL_S_PORTC_IDX].uptr);
|
||||
@@ -1804,27 +1802,15 @@ int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i) {
|
||||
for (int l = 0; l < NGParamList.numelt; l++) {
|
||||
|
||||
NGAP_REGISTER_GNB_REQ (msg_p).nb_amf += 1;
|
||||
|
||||
strcpy(NGAP_REGISTER_GNB_REQ (msg_p).amf_ip_address[l].ipv4_address,*(NGParamList.paramarray[l][GNB_AMF_IPV4_ADDRESS_IDX].strptr));
|
||||
strcpy(NGAP_REGISTER_GNB_REQ (msg_p).amf_ip_address[l].ipv6_address,*(NGParamList.paramarray[l][GNB_AMF_IPV6_ADDRESS_IDX].strptr));
|
||||
|
||||
if (strcmp(*(NGParamList.paramarray[l][GNB_AMF_IP_ADDRESS_ACTIVE_IDX].strptr), "yes") == 0) {
|
||||
}
|
||||
if (strcmp(*(NGParamList.paramarray[l][GNB_AMF_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv4") == 0) {
|
||||
NGAP_REGISTER_GNB_REQ (msg_p).amf_ip_address[j].ipv4 = 1;
|
||||
} else if (strcmp(*(NGParamList.paramarray[l][GNB_AMF_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv6") == 0) {
|
||||
NGAP_REGISTER_GNB_REQ (msg_p).amf_ip_address[j].ipv6 = 1;
|
||||
} else if (strcmp(*(NGParamList.paramarray[l][GNB_AMF_IP_ADDRESS_PREFERENCE_IDX].strptr), "no") == 0) {
|
||||
NGAP_REGISTER_GNB_REQ (msg_p).amf_ip_address[j].ipv4 = 1;
|
||||
NGAP_REGISTER_GNB_REQ (msg_p).amf_ip_address[j].ipv6 = 1;
|
||||
}
|
||||
NGAP_REGISTER_GNB_REQ (msg_p).amf_ip_address[j].ipv4 = 1;
|
||||
NGAP_REGISTER_GNB_REQ (msg_p).amf_ip_address[j].ipv6 = 0;
|
||||
|
||||
/* not in configuration yet ...
|
||||
if (NGParamList.paramarray[l][GNB_AMF_BROADCAST_PLMN_INDEX].iptr)
|
||||
NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_num[l] = NGParamList.paramarray[l][GNB_AMF_BROADCAST_PLMN_INDEX].numelt;
|
||||
else
|
||||
NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_num[l] = 0;
|
||||
*/
|
||||
|
||||
AssertFatal(NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_num[l] <= NGAP_REGISTER_GNB_REQ(msg_p).num_plmn,
|
||||
"List of broadcast PLMN to be sent to AMF can not be longer than actual "
|
||||
@@ -1833,7 +1819,7 @@ int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i) {
|
||||
NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_num[l]);
|
||||
|
||||
for (int el = 0; el < NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_num[l]; ++el) {
|
||||
/* UINTARRAY gets mapped to int, see config_libconfig.c:223 */
|
||||
// UINTARRAY gets mapped to int, see config_libconfig.c:223
|
||||
NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_index[l][el] = NGParamList.paramarray[l][GNB_AMF_BROADCAST_PLMN_INDEX].iptr[el];
|
||||
AssertFatal(NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_index[l][el] >= 0
|
||||
&& NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_index[l][el] < NGAP_REGISTER_GNB_REQ(msg_p).num_plmn,
|
||||
@@ -1841,6 +1827,7 @@ int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i) {
|
||||
NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_index[l][el],
|
||||
NGAP_REGISTER_GNB_REQ(msg_p).num_plmn);
|
||||
}
|
||||
*/
|
||||
|
||||
/* if no broadcasst_plmn array is defined, fill default values */
|
||||
if (NGAP_REGISTER_GNB_REQ(msg_p).broadcast_plmn_num[l] == 0) {
|
||||
@@ -2080,18 +2067,8 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
|
||||
for (l = 0; l < X2ParamList.numelt; l++) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).nb_x2 += 1;
|
||||
strcpy(X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4_address,*(X2ParamList.paramarray[l][ENB_X2_IPV4_ADDRESS_IDX].strptr));
|
||||
strcpy(X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6_address,*(X2ParamList.paramarray[l][ENB_X2_IPV6_ADDRESS_IDX].strptr));
|
||||
|
||||
if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv4") == 0) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 1;
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 0;
|
||||
} else if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv6") == 0) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 0;
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 1;
|
||||
} else if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "no") == 0) {
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 1;
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 1;
|
||||
}
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 1;
|
||||
X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 0;
|
||||
}
|
||||
|
||||
// timers
|
||||
|
||||
@@ -107,7 +107,6 @@ typedef enum {
|
||||
#define GNB_CONFIG_STRING_MOBILE_COUNTRY_CODE_OLD "mobile_country_code"
|
||||
#define GNB_CONFIG_STRING_MOBILE_NETWORK_CODE_OLD "mobile_network_code"
|
||||
#define GNB_CONFIG_STRING_TRANSPORT_S_PREFERENCE "tr_s_preference"
|
||||
#define GNB_CONFIG_STRING_LOCAL_S_IF_NAME "local_s_if_name"
|
||||
#define GNB_CONFIG_STRING_LOCAL_S_ADDRESS "local_s_address"
|
||||
#define GNB_CONFIG_STRING_REMOTE_S_ADDRESS "remote_s_address"
|
||||
#define GNB_CONFIG_STRING_LOCAL_S_PORTC "local_s_portc"
|
||||
@@ -150,7 +149,6 @@ typedef enum {
|
||||
{GNB_CONFIG_STRING_MOBILE_COUNTRY_CODE_OLD, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_MOBILE_NETWORK_CODE_OLD, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_TRANSPORT_S_PREFERENCE, NULL, 0, .strptr=NULL, .defstrval="local_mac", TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_LOCAL_S_IF_NAME, NULL, 0, .strptr=NULL, .defstrval="lo", TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_LOCAL_S_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.1", TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_REMOTE_S_ADDRESS, NULL, 0, .strptr=NULL, .defstrval="127.0.0.2", TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_LOCAL_S_PORTC, NULL, 0, .uptr=NULL, .defuintval=50000, TYPE_UINT, 0}, \
|
||||
@@ -184,29 +182,28 @@ typedef enum {
|
||||
#define GNB_MOBILE_COUNTRY_CODE_IDX_OLD 4
|
||||
#define GNB_MOBILE_NETWORK_CODE_IDX_OLD 5
|
||||
#define GNB_TRANSPORT_S_PREFERENCE_IDX 6
|
||||
#define GNB_LOCAL_S_IF_NAME_IDX 7
|
||||
#define GNB_LOCAL_S_ADDRESS_IDX 8
|
||||
#define GNB_REMOTE_S_ADDRESS_IDX 9
|
||||
#define GNB_LOCAL_S_PORTC_IDX 10
|
||||
#define GNB_REMOTE_S_PORTC_IDX 11
|
||||
#define GNB_LOCAL_S_PORTD_IDX 12
|
||||
#define GNB_REMOTE_S_PORTD_IDX 13
|
||||
#define GNB_PDSCH_ANTENNAPORTS_N1_IDX 14
|
||||
#define GNB_PDSCH_ANTENNAPORTS_N2_IDX 15
|
||||
#define GNB_PDSCH_ANTENNAPORTS_XP_IDX 16
|
||||
#define GNB_PUSCH_ANTENNAPORTS_IDX 17
|
||||
#define GNB_SIB1_TDA_IDX 18
|
||||
#define GNB_DO_CSIRS_IDX 19
|
||||
#define GNB_DO_SRS_IDX 20
|
||||
#define GNB_NRCELLID_IDX 21
|
||||
#define GNB_MINRXTXTIME_IDX 22
|
||||
#define GNB_ULPRBBLACKLIST_IDX 23
|
||||
#define GNB_UMONDEFAULTDRB_IDX 24
|
||||
#define GNB_FORCE256QAMOFF_IDX 25
|
||||
#define GNB_ENABLE_SDAP_IDX 26
|
||||
#define GNB_DRBS 27
|
||||
#define GNB_GNB_DU_ID_IDX 28
|
||||
#define GNB_GNB_CU_UP_ID_IDX 29
|
||||
#define GNB_LOCAL_S_ADDRESS_IDX 7
|
||||
#define GNB_REMOTE_S_ADDRESS_IDX 8
|
||||
#define GNB_LOCAL_S_PORTC_IDX 9
|
||||
#define GNB_REMOTE_S_PORTC_IDX 10
|
||||
#define GNB_LOCAL_S_PORTD_IDX 11
|
||||
#define GNB_REMOTE_S_PORTD_IDX 12
|
||||
#define GNB_PDSCH_ANTENNAPORTS_N1_IDX 13
|
||||
#define GNB_PDSCH_ANTENNAPORTS_N2_IDX 14
|
||||
#define GNB_PDSCH_ANTENNAPORTS_XP_IDX 15
|
||||
#define GNB_PUSCH_ANTENNAPORTS_IDX 16
|
||||
#define GNB_SIB1_TDA_IDX 17
|
||||
#define GNB_DO_CSIRS_IDX 18
|
||||
#define GNB_DO_SRS_IDX 19
|
||||
#define GNB_NRCELLID_IDX 20
|
||||
#define GNB_MINRXTXTIME_IDX 21
|
||||
#define GNB_ULPRBBLACKLIST_IDX 22
|
||||
#define GNB_UMONDEFAULTDRB_IDX 23
|
||||
#define GNB_FORCE256QAMOFF_IDX 24
|
||||
#define GNB_ENABLE_SDAP_IDX 25
|
||||
#define GNB_DRBS 26
|
||||
#define GNB_GNB_DU_ID_IDX 27
|
||||
#define GNB_GNB_CU_UP_ID_IDX 28
|
||||
|
||||
#define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD}
|
||||
#define GNBPARAMS_CHECK { \
|
||||
@@ -289,28 +286,17 @@ typedef enum {
|
||||
|
||||
|
||||
#define GNB_CONFIG_STRING_AMF_IPV4_ADDRESS "ipv4"
|
||||
#define GNB_CONFIG_STRING_AMF_IPV6_ADDRESS "ipv6"
|
||||
#define GNB_CONFIG_STRING_AMF_IP_ADDRESS_ACTIVE "active"
|
||||
#define GNB_CONFIG_STRING_AMF_IP_ADDRESS_PREFERENCE "preference"
|
||||
#define GNB_CONFIG_STRING_AMF_BROADCAST_PLMN_INDEX "broadcast_plmn_index"
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/* MME configuration parameters */
|
||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||
/*-------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
#define GNBNGPARAMS_DESC { \
|
||||
{GNB_CONFIG_STRING_AMF_IPV4_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_AMF_IPV6_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_AMF_IP_ADDRESS_ACTIVE, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_AMF_IP_ADDRESS_PREFERENCE, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_AMF_IPV4_ADDRESS, NULL, 0, .uptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
}
|
||||
|
||||
#define GNB_AMF_IPV4_ADDRESS_IDX 0
|
||||
#define GNB_AMF_IPV6_ADDRESS_IDX 1
|
||||
#define GNB_AMF_IP_ADDRESS_ACTIVE_IDX 2
|
||||
#define GNB_AMF_IP_ADDRESS_PREFERENCE_IDX 3
|
||||
#define GNB_AMF_BROADCAST_PLMN_INDEX 4
|
||||
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/* SCTP configuration parameters section name */
|
||||
@@ -338,24 +324,18 @@ typedef enum {
|
||||
/* S1 interface configuration parameters section name */
|
||||
#define GNB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG "NETWORK_INTERFACES"
|
||||
|
||||
#define GNB_INTERFACE_NAME_FOR_NG_AMF_IDX 0
|
||||
#define GNB_IPV4_ADDRESS_FOR_NG_AMF_IDX 1
|
||||
#define GNB_INTERFACE_NAME_FOR_NGU_IDX 2
|
||||
#define GNB_IPV4_ADDR_FOR_NGU_IDX 3
|
||||
#define GNB_PORT_FOR_NGU_IDX 4
|
||||
#define GNB_IPV4_ADDR_FOR_X2C_IDX 5
|
||||
#define GNB_PORT_FOR_X2C_IDX 6
|
||||
#define GNB_IPV4_ADDRESS_FOR_NG_AMF_IDX 0
|
||||
#define GNB_IPV4_ADDR_FOR_NGU_IDX 1
|
||||
#define GNB_PORT_FOR_NGU_IDX 2
|
||||
#define GNB_IPV4_ADDR_FOR_X2C_IDX 3
|
||||
#define GNB_PORT_FOR_X2C_IDX 4
|
||||
|
||||
/* S1 interface configuration parameters names */
|
||||
#define GNB_CONFIG_STRING_GNB_INTERFACE_NAME_FOR_S1_MME "GNB_INTERFACE_NAME_FOR_S1_MME"
|
||||
#define GNB_CONFIG_STRING_GNB_IPV4_ADDRESS_FOR_S1_MME "GNB_IPV4_ADDRESS_FOR_S1_MME"
|
||||
#define GNB_CONFIG_STRING_GNB_INTERFACE_NAME_FOR_S1U "GNB_INTERFACE_NAME_FOR_S1U"
|
||||
#define GNB_CONFIG_STRING_GNB_IPV4_ADDRESS_FOR_S1U "GNB_IPV4_ADDRESS_FOR_S1U"
|
||||
#define GNB_CONFIG_STRING_GNB_PORT_FOR_S1U "GNB_PORT_FOR_S1U"
|
||||
|
||||
#define GNB_CONFIG_STRING_GNB_INTERFACE_NAME_FOR_NG_AMF "GNB_INTERFACE_NAME_FOR_NG_AMF"
|
||||
#define GNB_CONFIG_STRING_GNB_IPV4_ADDRESS_FOR_NG_AMF "GNB_IPV4_ADDRESS_FOR_NG_AMF"
|
||||
#define GNB_CONFIG_STRING_GNB_INTERFACE_NAME_FOR_NGU "GNB_INTERFACE_NAME_FOR_NGU"
|
||||
#define GNB_CONFIG_STRING_GNB_IPV4_ADDR_FOR_NGU "GNB_IPV4_ADDRESS_FOR_NGU"
|
||||
#define GNB_CONFIG_STRING_GNB_PORT_FOR_NGU "GNB_PORT_FOR_NGU"
|
||||
|
||||
@@ -368,14 +348,11 @@ typedef enum {
|
||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||
/*--------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
#define GNBNETPARAMS_DESC { \
|
||||
{GNB_CONFIG_STRING_GNB_INTERFACE_NAME_FOR_NG_AMF, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_GNB_IPV4_ADDRESS_FOR_NG_AMF, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_GNB_INTERFACE_NAME_FOR_NGU, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_GNB_IPV4_ADDR_FOR_NGU, NULL, 0, .strptr=&gnb_ipv4_address_for_NGU, .defstrval="127.0.0.1",TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_GNB_PORT_FOR_NGU, NULL, 0, .uptr=&gnb_port_for_NGU, .defintval=2152L, TYPE_UINT, 0}, \
|
||||
{GNB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_X2C, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_ENB_PORT_FOR_X2C, NULL, 0, .uptr=NULL, .defintval=0L, TYPE_UINT, 0}, \
|
||||
{GNB_CONFIG_STRING_GNB_INTERFACE_NAME_FOR_S1U, NULL, 0, .strptr=NULL, .defstrval=NULL, TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_GNB_IPV4_ADDRESS_FOR_S1U, NULL, 0, .strptr=&gnb_ipv4_address_for_S1U, .defstrval="127.0.0.1",TYPE_STRING, 0}, \
|
||||
{GNB_CONFIG_STRING_GNB_PORT_FOR_S1U, NULL, 0, .uptr=&gnb_port_for_S1U, .defintval=2152L, TYPE_UINT, 0} \
|
||||
}
|
||||
@@ -415,7 +392,6 @@ typedef enum {
|
||||
/* MACRLC configuration parameters names */
|
||||
#define CONFIG_STRING_MACRLC_CC "num_cc"
|
||||
#define CONFIG_STRING_MACRLC_TRANSPORT_N_PREFERENCE "tr_n_preference"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_IF_NAME "local_n_if_name"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_ADDRESS "local_n_address"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_N_ADDRESS "remote_n_address"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_PORTC "local_n_portc"
|
||||
@@ -423,7 +399,6 @@ typedef enum {
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_N_PORTD "local_n_portd"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_N_PORTD "remote_n_portd"
|
||||
#define CONFIG_STRING_MACRLC_TRANSPORT_S_PREFERENCE "tr_s_preference"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_IF_NAME "local_s_if_name"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_ADDRESS "local_s_address"
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_S_ADDRESS "remote_s_address"
|
||||
#define CONFIG_STRING_MACRLC_LOCAL_S_PORTC "local_s_portc"
|
||||
@@ -434,22 +409,20 @@ typedef enum {
|
||||
|
||||
#define MACRLC_CC_IDX 0
|
||||
#define MACRLC_TRANSPORT_N_PREFERENCE_IDX 1
|
||||
#define MACRLC_LOCAL_N_IF_NAME_IDX 2
|
||||
#define MACRLC_LOCAL_N_ADDRESS_IDX 3
|
||||
#define MACRLC_REMOTE_N_ADDRESS_IDX 4
|
||||
#define MACRLC_LOCAL_N_PORTC_IDX 5
|
||||
#define MACRLC_REMOTE_N_PORTC_IDX 6
|
||||
#define MACRLC_LOCAL_N_PORTD_IDX 7
|
||||
#define MACRLC_REMOTE_N_PORTD_IDX 8
|
||||
#define MACRLC_TRANSPORT_S_PREFERENCE_IDX 9
|
||||
#define MACRLC_LOCAL_S_IF_NAME_IDX 10
|
||||
#define MACRLC_LOCAL_S_ADDRESS_IDX 11
|
||||
#define MACRLC_REMOTE_S_ADDRESS_IDX 12
|
||||
#define MACRLC_LOCAL_S_PORTC_IDX 13
|
||||
#define MACRLC_REMOTE_S_PORTC_IDX 14
|
||||
#define MACRLC_LOCAL_S_PORTD_IDX 15
|
||||
#define MACRLC_REMOTE_S_PORTD_IDX 16
|
||||
#define MACRLC_SCHED_MODE_IDX 17
|
||||
#define MACRLC_LOCAL_N_ADDRESS_IDX 2
|
||||
#define MACRLC_REMOTE_N_ADDRESS_IDX 3
|
||||
#define MACRLC_LOCAL_N_PORTC_IDX 4
|
||||
#define MACRLC_REMOTE_N_PORTC_IDX 5
|
||||
#define MACRLC_LOCAL_N_PORTD_IDX 6
|
||||
#define MACRLC_REMOTE_N_PORTD_IDX 7
|
||||
#define MACRLC_TRANSPORT_S_PREFERENCE_IDX 8
|
||||
#define MACRLC_LOCAL_S_ADDRESS_IDX 9
|
||||
#define MACRLC_REMOTE_S_ADDRESS_IDX 10
|
||||
#define MACRLC_LOCAL_S_PORTC_IDX 11
|
||||
#define MACRLC_REMOTE_S_PORTC_IDX 12
|
||||
#define MACRLC_LOCAL_S_PORTD_IDX 13
|
||||
#define MACRLC_REMOTE_S_PORTD_IDX 14
|
||||
#define MACRLC_SCHED_MODE_IDX 15
|
||||
|
||||
|
||||
/* thread configuration parameters section name */
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
#include "mac_rrc_ul.h"
|
||||
|
||||
static f1ap_net_config_t read_DU_IP_config(const eth_params_t* f1_params)
|
||||
static f1ap_net_config_t read_DU_IP_config(const eth_params_t* f1_params, const char *f1u_ip_addr)
|
||||
{
|
||||
f1ap_net_config_t nc = {0};
|
||||
|
||||
@@ -37,19 +37,17 @@ static f1ap_net_config_t read_DU_IP_config(const eth_params_t* f1_params)
|
||||
nc.CU_f1_ip_address.ipv4 = 1;
|
||||
strcpy(nc.CU_f1_ip_address.ipv4_address, f1_params->remote_addr);
|
||||
nc.CUport = f1_params->remote_portd;
|
||||
LOG_I(GNB_APP,
|
||||
"FIAP: CU_ip4_address in DU %p, strlen %d\n",
|
||||
nc.CU_f1_ip_address.ipv4_address,
|
||||
(int)strlen(f1_params->remote_addr));
|
||||
|
||||
nc.DU_f1_ip_address.ipv6 = 0;
|
||||
nc.DU_f1_ip_address.ipv4 = 1;
|
||||
strcpy(nc.DU_f1_ip_address.ipv4_address, f1_params->my_addr);
|
||||
nc.DU_f1c_ip_address.ipv6 = 0;
|
||||
nc.DU_f1c_ip_address.ipv4 = 1;
|
||||
strcpy(nc.DU_f1c_ip_address.ipv4_address, f1_params->my_addr);
|
||||
nc.DU_f1u_ip_address = strdup(f1u_ip_addr);
|
||||
nc.DUport = f1_params->my_portd;
|
||||
LOG_I(GNB_APP,
|
||||
"FIAP: DU_ip4_address in DU %p, strlen %ld\n",
|
||||
nc.DU_f1_ip_address.ipv4_address,
|
||||
strlen(f1_params->my_addr));
|
||||
LOG_I(F1AP,
|
||||
"F1-C DU IPaddr %s, connect to F1-C CU %s, binding GTP to %s\n",
|
||||
nc.DU_f1c_ip_address.ipv4_address,
|
||||
nc.CU_f1_ip_address.ipv4_address,
|
||||
nc.DU_f1u_ip_address);
|
||||
|
||||
// sctp_in_streams/sctp_out_streams are given by SCTP layer
|
||||
return nc;
|
||||
@@ -95,7 +93,7 @@ static void f1_setup_request_f1ap(const f1ap_setup_req_t *req)
|
||||
}
|
||||
memcpy(f1ap_setup->rrc_ver, req->rrc_ver, sizeof(req->rrc_ver));
|
||||
|
||||
F1AP_DU_REGISTER_REQ(msg).net_config = read_DU_IP_config(&RC.nrmac[0]->eth_params_n);
|
||||
F1AP_DU_REGISTER_REQ(msg).net_config = read_DU_IP_config(&RC.nrmac[0]->eth_params_n, RC.nrmac[0]->f1u_addr);
|
||||
|
||||
itti_send_msg_to_task(TASK_DU_F1, 0, msg);
|
||||
}
|
||||
|
||||
@@ -723,6 +723,8 @@ typedef struct f1_config_t {
|
||||
typedef struct gNB_MAC_INST_s {
|
||||
/// Ethernet parameters for northbound midhaul interface
|
||||
eth_params_t eth_params_n;
|
||||
/// address for F1U to bind, ports in eth_params_n
|
||||
char *f1u_addr;
|
||||
/// Ethernet parameters for fronthaul interface
|
||||
eth_params_t eth_params_s;
|
||||
/// Module
|
||||
|
||||
+15
-53
@@ -227,29 +227,16 @@ int m2ap_MCE_init_sctp (m2ap_MCE_instance_t *instance_p,
|
||||
net_ip_address_t *local_ip_addr,
|
||||
uint32_t mce_port_for_M2C) {
|
||||
// Create and alloc new message
|
||||
MessageDef *message;
|
||||
sctp_init_t *sctp_init = NULL;
|
||||
DevAssert(instance_p != NULL);
|
||||
DevAssert(local_ip_addr != NULL);
|
||||
message = itti_alloc_new_message (TASK_M2AP_MCE, 0, SCTP_INIT_MSG_MULTI_REQ);
|
||||
sctp_init = &message->ittiMsg.sctp_init_multi;
|
||||
size_t addr_len = strlen(local_ip_addr->ipv4_address) + 1;
|
||||
MessageDef *message = itti_alloc_new_message_sized(TASK_M2AP_MCE, 0, SCTP_INIT_MSG_MULTI_REQ, sizeof(sctp_init_t) + addr_len);
|
||||
sctp_init_t *sctp_init = &message->ittiMsg.sctp_init_multi;
|
||||
sctp_init->port = mce_port_for_M2C;
|
||||
sctp_init->ppid = M2AP_SCTP_PPID;
|
||||
sctp_init->ipv4 = 1;
|
||||
sctp_init->ipv6 = 0;
|
||||
sctp_init->nb_ipv4_addr = 1;
|
||||
#if 0
|
||||
memcpy(&sctp_init->ipv4_address,
|
||||
local_ip_addr,
|
||||
sizeof(*local_ip_addr));
|
||||
#endif
|
||||
sctp_init->ipv4_address[0] = inet_addr(local_ip_addr->ipv4_address);
|
||||
/*
|
||||
* SR WARNING: ipv6 multi-homing fails sometimes for localhost.
|
||||
* * * * Disable it for now.
|
||||
*/
|
||||
sctp_init->nb_ipv6_addr = 0;
|
||||
sctp_init->ipv6_address[0] = "0:0:0:0:0:0:0:1";
|
||||
char *addr_buf = (char *) (sctp_init + 1);
|
||||
sctp_init->bind_address = addr_buf;
|
||||
memcpy(addr_buf, local_ip_addr->ipv4_address, addr_len);
|
||||
return itti_send_msg_to_task (TASK_SCTP, instance_p->instance, message);
|
||||
}
|
||||
|
||||
@@ -502,41 +489,16 @@ void MCE_task_send_sctp_init_req(instance_t enb_id, m2ap_mce_sctp_req_t * m2ap_m
|
||||
// 2. use RC.rrc[enb_id] to fill the sctp_init_t with the ip, port
|
||||
// 3. creat an itti message to init
|
||||
|
||||
LOG_I(M2AP, "M2AP_SCTP_REQ(create socket)\n");
|
||||
MessageDef *message_p = NULL;
|
||||
|
||||
message_p = itti_alloc_new_message (TASK_M2AP_MCE, 0, SCTP_INIT_MSG);
|
||||
|
||||
// if( m2ap_mce_sctp_req == NULL ){
|
||||
// message_p->ittiMsg.sctp_init.port = M2AP_PORT_NUMBER;
|
||||
// message_p->ittiMsg.sctp_init.ppid = M2AP_SCTP_PPID;
|
||||
// message_p->ittiMsg.sctp_init.ipv4 = 1;
|
||||
// message_p->ittiMsg.sctp_init.ipv6 = 0;
|
||||
// message_p->ittiMsg.sctp_init.nb_ipv4_addr = 1;
|
||||
// //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("127.0.0.7");
|
||||
// /*
|
||||
// * SR WARNING: ipv6 multi-homing fails sometimes for localhost.
|
||||
// * * * * Disable it for now.
|
||||
// */
|
||||
// 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";
|
||||
// }else{
|
||||
message_p->ittiMsg.sctp_init.port = m2ap_mce_sctp_req->mce_port_for_M2C;
|
||||
message_p->ittiMsg.sctp_init.ppid = M2AP_SCTP_PPID;
|
||||
message_p->ittiMsg.sctp_init.ipv4 = 1;
|
||||
message_p->ittiMsg.sctp_init.ipv6 = 0;
|
||||
message_p->ittiMsg.sctp_init.nb_ipv4_addr = 1;
|
||||
//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(m2ap_mce_sctp_req->mce_m2_ip_address.ipv4_address);
|
||||
/*
|
||||
* SR WARNING: ipv6 multi-homing fails sometimes for localhost.
|
||||
* * * * Disable it for now.
|
||||
*/
|
||||
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";
|
||||
// }
|
||||
size_t addr_len = strlen(m2ap_mce_sctp_req->mce_m2_ip_address.ipv4_address) + 1;
|
||||
LOG_I(M2AP, "M2AP_SCTP_REQ(create socket) for %s len %ld\n", m2ap_mce_sctp_req->mce_m2_ip_address.ipv4_address, addr_len);
|
||||
|
||||
MessageDef *message_p = itti_alloc_new_message_sized (TASK_M2AP_MCE, 0, SCTP_INIT_MSG, sizeof(sctp_init_t) + addr_len);
|
||||
sctp_init_t *init = &SCTP_INIT_MSG(message_p);
|
||||
init->port = m2ap_mce_sctp_req->mce_port_for_M2C;
|
||||
init->ppid = M2AP_SCTP_PPID;
|
||||
char *addr_buf = (char *) (init + 1); // address after ITTI message end, allocated above
|
||||
init->bind_address = addr_buf;
|
||||
memcpy(addr_buf, m2ap_mce_sctp_req->mce_m2_ip_address.ipv4_address, addr_len);
|
||||
itti_send_msg_to_task(TASK_SCTP, enb_id, message_p);
|
||||
}
|
||||
|
||||
|
||||
@@ -229,29 +229,16 @@ int m2ap_eNB_init_sctp (m2ap_eNB_instance_t *instance_p,
|
||||
net_ip_address_t *local_ip_addr,
|
||||
uint32_t enb_port_for_M2C) {
|
||||
// Create and alloc new message
|
||||
MessageDef *message;
|
||||
sctp_init_t *sctp_init = NULL;
|
||||
DevAssert(instance_p != NULL);
|
||||
DevAssert(local_ip_addr != NULL);
|
||||
message = itti_alloc_new_message (TASK_M2AP_ENB, 0, SCTP_INIT_MSG_MULTI_REQ);
|
||||
sctp_init = &message->ittiMsg.sctp_init_multi;
|
||||
size_t addr_len = strlen(local_ip_addr->ipv4_address) + 1;
|
||||
MessageDef *message = itti_alloc_new_message_sized(TASK_M2AP_ENB, 0, SCTP_INIT_MSG_MULTI_REQ, sizeof(sctp_init_t) + addr_len);
|
||||
sctp_init_t *sctp_init = &message->ittiMsg.sctp_init_multi;
|
||||
sctp_init->port = enb_port_for_M2C;
|
||||
sctp_init->ppid = M2AP_SCTP_PPID;
|
||||
sctp_init->ipv4 = 1;
|
||||
sctp_init->ipv6 = 0;
|
||||
sctp_init->nb_ipv4_addr = 1;
|
||||
#if 0
|
||||
memcpy(&sctp_init->ipv4_address,
|
||||
local_ip_addr,
|
||||
sizeof(*local_ip_addr));
|
||||
#endif
|
||||
sctp_init->ipv4_address[0] = inet_addr(local_ip_addr->ipv4_address);
|
||||
/*
|
||||
* SR WARNING: ipv6 multi-homing fails sometimes for localhost.
|
||||
* * * * Disable it for now.
|
||||
*/
|
||||
sctp_init->nb_ipv6_addr = 0;
|
||||
sctp_init->ipv6_address[0] = "0:0:0:0:0:0:0:1";
|
||||
char *addr_buf = (char *) (sctp_init + 1);
|
||||
sctp_init->bind_address = addr_buf;
|
||||
memcpy(addr_buf, local_ip_addr->ipv4_address, addr_len);
|
||||
return itti_send_msg_to_task (TASK_SCTP, instance_p->instance, message);
|
||||
}
|
||||
|
||||
|
||||
@@ -60,9 +60,6 @@
|
||||
|
||||
int RCconfig_MCE(void ) {
|
||||
//int num_enbs = 0;
|
||||
//char *enb_interface_name_for_S1U = NULL;
|
||||
char *mce_interface_name_for_m2_enb = NULL;
|
||||
char *mce_interface_name_for_m3_mme = NULL;
|
||||
//char *enb_ipv4_address_for_S1U = NULL;
|
||||
char *mce_ipv4_address_for_m2c = NULL;
|
||||
char *mce_ipv4_address_for_m3c = NULL;
|
||||
@@ -93,11 +90,9 @@ int RCconfig_MCE(void ) {
|
||||
|
||||
//LOG_W(MCE_APP,"cidr %s\n",cidr);
|
||||
//LOG_W(MCE_APP,"address %s\n",address);
|
||||
//LOG_W(MCE_APP,"mce_interface_name_for_m2_enb %s\n",mce_interface_name_for_m2_enb);
|
||||
//LOG_W(MCE_APP,"mce_ipv4_address_for_m2c %s\n",mce_ipv4_address_for_m2c);
|
||||
//LOG_W(MCE_APP,"mce_ipv4_address_for_m2c %s\n",*(MCEParams[1/*MCE_IPV4_ADDRESS_FOR_M2C_IDX*/].strptr));
|
||||
//LOG_W(MCE_APP,"mce_port_for_m2c %d\n",mce_port_for_m2c);
|
||||
//LOG_W(MCE_APP,"mce_interface_name_for_m3_mme %s\n",mce_interface_name_for_m3_mme);
|
||||
//LOG_W(MCE_APP,"mce_ipv4_address_for_m3c %s\n",mce_ipv4_address_for_m3c);
|
||||
//LOG_W(MCE_APP,"mce_port_for_m3c %d\n",mce_port_for_m3c);
|
||||
|
||||
@@ -124,9 +119,6 @@ int RCconfig_MCE(void ) {
|
||||
int RCconfig_M3(MessageDef *msg_p, uint32_t i) {
|
||||
int l;
|
||||
//int num_enbs = 0;
|
||||
//char *enb_interface_name_for_S1U = NULL;
|
||||
char *mce_interface_name_for_m2_enb = NULL;
|
||||
char *mce_interface_name_for_m3_mme = NULL;
|
||||
//char *enb_ipv4_address_for_S1U = NULL;
|
||||
char *mce_ipv4_address_for_m2c = NULL;
|
||||
char *mce_ipv4_address_for_m3c = NULL;
|
||||
@@ -138,12 +130,13 @@ int RCconfig_M3(MessageDef *msg_p, uint32_t i) {
|
||||
|
||||
|
||||
char mcepath[MAX_OPTNAME_SIZE*2 + 8];
|
||||
paramdef_t MCEParams[] = MCE_NETPARAMS_DESC;
|
||||
paramdef_t M3Params[] = M3PARAMS_DESC;
|
||||
paramdef_t MCCHParams[] = MCCH_PARAMS_DESC;
|
||||
paramdef_t MCENameParams[] = MCE_PARAMS_DESC;
|
||||
|
||||
sprintf(mcepath,"%s.[%i].%s","MCEs",0,MCE_CONFIG_STRING_NETWORK_INTERFACES_CONFIG);
|
||||
config_get(config_get_if(), MCEParams, sizeofArray(MCEParams), mcepath);
|
||||
config_get(config_get_if(), MCENameParams, sizeofArray(MCENameParams), mcepath);
|
||||
M3AP_REGISTER_MCE_REQ(msg_p).MCE_name = strdup(*(MCENameParams[MCE_MCE_NAME_IDX].strptr));
|
||||
|
||||
paramlist_def_t M3ParamList = {MCE_CONFIG_STRING_TARGET_MME_M3_IP_ADDRESS,NULL,0};
|
||||
paramlist_def_t MCCHParamList = {MCE_CONFIG_STRING_MCCH_CONFIG_PER_MBSFN_AREA,NULL,0};
|
||||
@@ -158,27 +151,17 @@ int RCconfig_M3(MessageDef *msg_p, uint32_t i) {
|
||||
//printf("M3ParamList.numelt %d\n",M3ParamList.numelt);
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).nb_m3 = 0;
|
||||
for (l = 0; l < M3ParamList.numelt; l++) {
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).nb_m3 += 1;
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).MCE_name = strdup(*(M3ParamList.paramarray[l][MCE_MCE_NAME_IDX].strptr));
|
||||
|
||||
strcpy(M3AP_REGISTER_MCE_REQ (msg_p).target_mme_m3_ip_address[l].ipv4_address,*(M3ParamList.paramarray[l][MCE2_M3_IPV4_ADDRESS_IDX].strptr));
|
||||
strcpy(M3AP_REGISTER_MCE_REQ (msg_p).target_mme_m3_ip_address[l].ipv6_address,*(M3ParamList.paramarray[l][MCE2_M3_IPV6_ADDRESS_IDX].strptr));
|
||||
|
||||
if (strcmp(*(M3ParamList.paramarray[l][MCE2_M3_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv4") == 0) {
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).target_mme_m3_ip_address[l].ipv4 = 1;
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).target_mme_m3_ip_address[l].ipv6 = 0;
|
||||
} else if (strcmp(*(M3ParamList.paramarray[l][MCE2_M3_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv6") == 0) {
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).target_mme_m3_ip_address[l].ipv4 = 0;
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).target_mme_m3_ip_address[l].ipv6 = 1;
|
||||
} else if (strcmp(*(M3ParamList.paramarray[l][MCE2_M3_IP_ADDRESS_PREFERENCE_IDX].strptr), "no") == 0) {
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).target_mme_m3_ip_address[l].ipv4 = 1;
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).target_mme_m3_ip_address[l].ipv6 = 1;
|
||||
}
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).sctp_out_streams = 2;
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).sctp_in_streams = 2;
|
||||
M3AP_REGISTER_MCE_REQ(msg_p).nb_m3 += 1;
|
||||
strcpy(M3AP_REGISTER_MCE_REQ(msg_p).target_mme_m3_ip_address[l].ipv4_address,
|
||||
*(M3ParamList.paramarray[l][MCE2_M3_IPV4_ADDRESS_IDX].strptr));
|
||||
M3AP_REGISTER_MCE_REQ(msg_p).target_mme_m3_ip_address[l].ipv4 = 1;
|
||||
M3AP_REGISTER_MCE_REQ(msg_p).target_mme_m3_ip_address[l].ipv6 = 0;
|
||||
M3AP_REGISTER_MCE_REQ(msg_p).sctp_out_streams = 2;
|
||||
M3AP_REGISTER_MCE_REQ(msg_p).sctp_in_streams = 2;
|
||||
}
|
||||
|
||||
sprintf(aprefix,"%s.[%i].%s","MCEs",0,MCE_CONFIG_STRING_NETWORK_INTERFACES_CONFIG);
|
||||
paramdef_t MCEParams[] = MCE_NETPARAMS_DESC;
|
||||
config_get(config_get_if(), MCEParams, sizeofArray(MCEParams), aprefix);
|
||||
M3AP_REGISTER_MCE_REQ (msg_p).mme_port_for_M3C = (uint32_t)*(MCEParams[MCE2_PORT_FOR_M3C_IDX].uptr);
|
||||
|
||||
|
||||
@@ -1303,8 +1303,6 @@ void RCconfig_nr_ue_macrlc(void) {
|
||||
if (MACRLC_ParamList.numelt > 0) {
|
||||
for (j = 0; j < MACRLC_ParamList.numelt; j++) {
|
||||
if (strcmp(*(MACRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_N_PREFERENCE_IDX].strptr), "nfapi") == 0) {
|
||||
stub_eth_params.local_if_name = strdup(
|
||||
*(MACRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_IF_NAME_IDX].strptr));
|
||||
stub_eth_params.my_addr = strdup(
|
||||
*(MACRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_ADDRESS_IDX].strptr));
|
||||
stub_eth_params.remote_addr = strdup(
|
||||
|
||||
@@ -1164,8 +1164,6 @@ void UE_config_stub_pnf(void) {
|
||||
// eth_params in the UE_mac_inst. Later I think we have to change that to
|
||||
// attribute eth_params to a global element for all the UEs.
|
||||
else if (strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "nfapi") == 0) {
|
||||
stub_eth_params.local_if_name = strdup(
|
||||
*(L1_ParamList.paramarray[j][L1_LOCAL_N_IF_NAME_IDX].strptr));
|
||||
stub_eth_params.my_addr = strdup(
|
||||
*(L1_ParamList.paramarray[j][L1_LOCAL_N_ADDRESS_IDX].strptr));
|
||||
stub_eth_params.remote_addr = strdup(
|
||||
|
||||
@@ -217,29 +217,16 @@ int x2ap_eNB_init_sctp (x2ap_eNB_instance_t *instance_p,
|
||||
net_ip_address_t *local_ip_addr,
|
||||
uint32_t enb_port_for_X2C) {
|
||||
// Create and alloc new message
|
||||
MessageDef *message;
|
||||
sctp_init_t *sctp_init = NULL;
|
||||
DevAssert(instance_p != NULL);
|
||||
DevAssert(local_ip_addr != NULL);
|
||||
message = itti_alloc_new_message (TASK_X2AP, 0, SCTP_INIT_MSG_MULTI_REQ);
|
||||
sctp_init = &message->ittiMsg.sctp_init_multi;
|
||||
size_t addr_len = strlen(local_ip_addr->ipv4_address) + 1;
|
||||
MessageDef *message = itti_alloc_new_message_sized(TASK_X2AP, 0, SCTP_INIT_MSG_MULTI_REQ, sizeof(sctp_init_t) + addr_len);
|
||||
sctp_init_t *sctp_init = &message->ittiMsg.sctp_init_multi;
|
||||
sctp_init->port = enb_port_for_X2C;
|
||||
sctp_init->ppid = X2AP_SCTP_PPID;
|
||||
sctp_init->ipv4 = 1;
|
||||
sctp_init->ipv6 = 0;
|
||||
sctp_init->nb_ipv4_addr = 1;
|
||||
#if 0
|
||||
memcpy(&sctp_init->ipv4_address,
|
||||
local_ip_addr,
|
||||
sizeof(*local_ip_addr));
|
||||
#endif
|
||||
sctp_init->ipv4_address[0] = inet_addr(local_ip_addr->ipv4_address);
|
||||
/*
|
||||
* SR WARNING: ipv6 multi-homing fails sometimes for localhost.
|
||||
* * * * Disable it for now.
|
||||
*/
|
||||
sctp_init->nb_ipv6_addr = 0;
|
||||
sctp_init->ipv6_address[0] = "0:0:0:0:0:0:0:1";
|
||||
char *addr_buf = (char *) (sctp_init + 1);
|
||||
sctp_init->bind_address = addr_buf;
|
||||
memcpy(addr_buf, local_ip_addr->ipv4_address, addr_len);
|
||||
return itti_send_msg_to_task (TASK_SCTP, instance_p->instance, message);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user