From 5acfa47325e039c6f7c3a541a85a731f2b151516 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 22 Jul 2024 13:33:34 +0200 Subject: [PATCH] nas_config()/netlink_init_tun(): use entire interface name (prefix) Instead of implicitly using a hardcoded prefix "oaitun_" interface name, move that out to the callers of these functions to make it clear. The ID still remains outside. The "sister functions" nas_config_mbms()/netlink_init_tun_mbms() will do the same change in the next commit. --- openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c | 5 +++-- openair1/SIMULATION/ETH_TRANSPORT/proto.h | 2 +- openair2/LAYER2/PDCP_v10.1.0/pdcp.c | 8 ++++---- openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c | 12 ++++++------ openair2/RRC/LTE/rrc_UE.c | 8 ++++---- openair2/RRC/LTE/rrc_eNB.c | 8 ++++---- openair2/RRC/NAS/nas_config.c | 6 +++--- openair2/RRC/NAS/nas_config.h | 2 +- openair3/NAS/NR_UE/nr_nas_msg_sim.c | 2 +- 9 files changed, 27 insertions(+), 26 deletions(-) diff --git a/openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c b/openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c index a57c7a9090..919edbb834 100644 --- a/openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c +++ b/openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c @@ -126,14 +126,15 @@ int netlink_init_mbms_tun(char *ifprefix, int id) {//for UE, id = 1, 2, ..., return 1; } -int netlink_init_tun(char *ifprefix, int num_if, int id) {//for UE, id = 1, 2, ..., +int netlink_init_tun(const char *ifprefix, int num_if, int id) +{ int ret; char ifname[64]; int begx = (id == 0) ? 0 : id - 1; int endx = (id == 0) ? num_if : id; for (int i = begx; i < endx; i++) { - sprintf(ifname, "oaitun_%.3s%d",ifprefix,i+1); + sprintf(ifname, "%s%d", ifprefix, i + 1); nas_sock_fd[i] = tun_alloc(ifname); if (nas_sock_fd[i] == -1) { diff --git a/openair1/SIMULATION/ETH_TRANSPORT/proto.h b/openair1/SIMULATION/ETH_TRANSPORT/proto.h index 79e97f0e72..647824cf05 100644 --- a/openair1/SIMULATION/ETH_TRANSPORT/proto.h +++ b/openair1/SIMULATION/ETH_TRANSPORT/proto.h @@ -31,7 +31,7 @@ #ifndef EMU_PROTO_H_ #define EMU_PROTO_H_ -int netlink_init_tun(char *ifsuffix, int num_if, int id); +int netlink_init_tun(const char *ifprefix, int num_if, int id); int netlink_init_mbms_tun(char *ifsuffix, int id); #endif /* EMU_PROTO_H_ */ diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index 57a7a5a20f..33ecfe0c0c 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -2300,15 +2300,15 @@ uint64_t pdcp_module_init( uint64_t pdcp_optmask, int id) { if (UE_NAS_USE_TUN) { int num_if = (NFAPI_MODE == NFAPI_UE_STUB_PNF || IS_SOFTMODEM_SIML1 || NFAPI_MODE == NFAPI_MODE_STANDALONE_PNF) ? MAX_MOBILES_PER_ENB : 1; - netlink_init_tun("ue", num_if, id); + netlink_init_tun("oaitun_ue", num_if, id); if (IS_SOFTMODEM_NOS1) - nas_config(1, 1, 2, "ue"); + nas_config(1, 1, 2, "oaitun_ue"); netlink_init_mbms_tun("uem", id); nas_config_mbms(1, 2, 2, "uem"); LOG_I(PDCP, "UE pdcp will use tun interface\n"); } else if (ENB_NAS_USE_TUN) { - netlink_init_tun("enb", 1, 0); - nas_config(1, 1, 1, "enb"); + netlink_init_tun("oaitun_enb", 1, 0); + nas_config(1, 1, 1, "oaitun_enb"); if (pdcp_optmask & ENB_NAS_USE_TUN_W_MBMS_BIT) { netlink_init_mbms_tun("enm", 0); nas_config_mbms(1, 2, 1, "enm"); diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c index ceab4331ea..51feb0d955 100644 --- a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c @@ -613,21 +613,21 @@ uint64_t nr_pdcp_module_init(uint64_t _pdcp_optmask, int id) nas_getparams(); if (UE_NAS_USE_TUN) { - char *ifsuffix_ue = get_softmodem_params()->nsa ? "nrue" : "ue"; + char *ifprefix = get_softmodem_params()->nsa ? "oaitun_nrue" : "oaitun_ue"; int num_if = (NFAPI_MODE == NFAPI_UE_STUB_PNF || IS_SOFTMODEM_SIML1 || NFAPI_MODE == NFAPI_MODE_STANDALONE_PNF) ? MAX_MOBILES_PER_ENB : 1; - netlink_init_tun(ifsuffix_ue, num_if, id); + netlink_init_tun(ifprefix, num_if, id); if (IS_SOFTMODEM_NOS1) { - nas_config(1, 1, !get_softmodem_params()->nsa ? 2 : 3, ifsuffix_ue); + nas_config(1, 1, !get_softmodem_params()->nsa ? 2 : 3, ifprefix); set_qfi_pduid(7, 10); } LOG_I(PDCP, "UE pdcp will use tun interface\n"); start_pdcp_tun_ue(); } else if (ENB_NAS_USE_TUN) { - char *ifsuffix_base_s = get_softmodem_params()->nsa ? "gnb" : "enb"; - netlink_init_tun(ifsuffix_base_s, 1, id); - nas_config(1, 1, 1, ifsuffix_base_s); + char *ifprefix = get_softmodem_params()->nsa ? "oaitun_gnb" : "oaitun_enb"; + netlink_init_tun(ifprefix, 1, id); + nas_config(1, 1, 1, ifprefix); LOG_I(PDCP, "ENB pdcp will use tun interface\n"); start_pdcp_tun_enb(); } diff --git a/openair2/RRC/LTE/rrc_UE.c b/openair2/RRC/LTE/rrc_UE.c index a7a8bb8fb3..9de1e52527 100644 --- a/openair2/RRC/LTE/rrc_UE.c +++ b/openair2/RRC/LTE/rrc_UE.c @@ -765,10 +765,10 @@ rrc_ue_establish_drb( ip_addr_offset4 = 1; LOG_I(OIP,"[UE %d] trying to bring up the OAI interface %d, IP X.Y.%d.%d\n", ue_mod_idP, ip_addr_offset3+ue_mod_idP, ip_addr_offset3+ue_mod_idP+1,ip_addr_offset4+ue_mod_idP+1); - oip_ifup=nas_config(ip_addr_offset3+ue_mod_idP+1, // interface_id - UE_NAS_USE_TUN?1:(ip_addr_offset3+ue_mod_idP+1), // third_octet - ip_addr_offset4+ue_mod_idP+1, // fourth_octet - "oip"); // interface suffix (when using kernel module) + oip_ifup = nas_config(ip_addr_offset3 + ue_mod_idP + 1, // interface_id + UE_NAS_USE_TUN ? 1 : (ip_addr_offset3 + ue_mod_idP + 1), // third_octet + ip_addr_offset4 + ue_mod_idP + 1, // fourth_octet + "oaitun_oip"); if (oip_ifup == 0 && (!UE_NAS_USE_TUN)) { // interface is up --> send a config the DRB LOG_I(OIP,"[UE %d] Config the ue net interface %d to send/receive pkt on DRB %ld to/from the protocol stack\n", diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index 8b086b1387..3828df4cb7 100644 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -5255,10 +5255,10 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( LOG_I(OIP, "[eNB %d] trying to bring up the OAI interface oai%d\n", ctxt_pP->module_id, ctxt_pP->module_id); - oip_ifup = nas_config(ctxt_pP->module_id, // interface index - ctxt_pP->module_id + 1, // third octet - ctxt_pP->module_id + 1, // fourth octet - "oai"); + oip_ifup = nas_config(ctxt_pP->module_id, // interface index + ctxt_pP->module_id + 1, // third octet + ctxt_pP->module_id + 1, // fourth octet + "oaitun_oai"); if (oip_ifup == 0) { // interface is up --> send a config the DRB module_id_t ue_module_id; diff --git a/openair2/RRC/NAS/nas_config.c b/openair2/RRC/NAS/nas_config.c index 9df9e25014..d3618483ba 100644 --- a/openair2/RRC/NAS/nas_config.c +++ b/openair2/RRC/NAS/nas_config.c @@ -189,7 +189,8 @@ int nas_config_mbms(int interface_id, int thirdOctet, int fourthOctet, char *ifn } // non blocking full configuration of the interface (address, and the two lest octets of the address) -int nas_config(int interface_id, int thirdOctet, int fourthOctet, char *ifname) { +int nas_config(int interface_id, int thirdOctet, int fourthOctet, const char *ifpref) +{ //char buf[5]; char ipAddress[20]; char broadcastAddress[20]; @@ -197,8 +198,7 @@ int nas_config(int interface_id, int thirdOctet, int fourthOctet, char *ifname) int returnValue; sprintf(ipAddress, "%s.%d.%d", baseNetAddress,thirdOctet,fourthOctet); sprintf(broadcastAddress, "%s.%d.255",baseNetAddress, thirdOctet); - sprintf(interfaceName, "%s%s%d", (UE_NAS_USE_TUN || ENB_NAS_USE_TUN)?"oaitun_":ifname, - UE_NAS_USE_TUN?"ue": (ENB_NAS_USE_TUN?"enb":""),interface_id); + sprintf(interfaceName, "%s%d", ifpref, interface_id); bringInterfaceUp(interfaceName, 0); // sets the machine address returnValue= setInterfaceParameter(interfaceName, ipAddress,SIOCSIFADDR); diff --git a/openair2/RRC/NAS/nas_config.h b/openair2/RRC/NAS/nas_config.h index 3188a73beb..72a3bc6887 100644 --- a/openair2/RRC/NAS/nas_config.h +++ b/openair2/RRC/NAS/nas_config.h @@ -49,7 +49,7 @@ void nas_getparams(void); * \note * @ingroup _nas */ -int nas_config(int interface_id, int thirdOctet, int fourthOctet, char *ifsuffix); +int nas_config(int interface_id, int thirdOctet, int fourthOctet, const char *ifprefix); /*! \fn int nas_config_mbms(char*, int, int) * \brief This function initializes the nasmesh interface using the basic values, diff --git a/openair3/NAS/NR_UE/nr_nas_msg_sim.c b/openair3/NAS/NR_UE/nr_nas_msg_sim.c index 1d25258821..8f81684437 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg_sim.c +++ b/openair3/NAS/NR_UE/nr_nas_msg_sim.c @@ -846,7 +846,7 @@ void decodeDownlinkNASTransport(as_nas_info_t *initialNasMsg, uint8_t * pdu_buff int third_octet = *(pdu_buffer + 41); int fourth_octet = *(pdu_buffer + 42); LOG_A(NAS, "Received PDU Session Establishment Accept\n"); - nas_config(1,third_octet,fourth_octet,"ue"); + nas_config(1, third_octet, fourth_octet, "oaitun_ue"); } else { LOG_E(NAS, "Received unexpected message in DLinformationTransfer %d\n", msg_type); }