Commit a12460e8 authored by Robert Schmidt's avatar Robert Schmidt

nas_config_mbms/netlink_init_mbms_tun(): use entire interface prefix

Does the same change in the _mbms() functions as in the previous commit.

Also, simplify logic in netlink_init_mbms_tun(): directly use the id in
the interface. This requires a slight ID change in the users, which is
also done in this commit.
parent 5acfa473
...@@ -93,24 +93,19 @@ int netlink_init_mbms_tun(char *ifprefix, int id) {//for UE, id = 1, 2, ..., ...@@ -93,24 +93,19 @@ int netlink_init_mbms_tun(char *ifprefix, int id) {//for UE, id = 1, 2, ...,
int ret; int ret;
char ifname[64]; char ifname[64];
if (id > 0) { sprintf(ifname, "%s%d", ifprefix, id);
sprintf(ifname, "oaitun_%.3s%d", ifprefix, id-1); nas_sock_mbms_fd = tun_alloc(ifname);
}
else {
sprintf(ifname, "oaitun_%.3s1", ifprefix); // added "1": for historical reasons
}
nas_sock_mbms_fd = tun_alloc(ifname);
if (nas_sock_mbms_fd == -1) { if (nas_sock_mbms_fd == -1) {
printf("[NETLINK] Error opening mbms socket %s (%d:%s)\n",ifname,errno, strerror(errno)); LOG_E(PDCP, "[NETLINK] Error opening mbms socket %s (%d:%s)\n", ifname, errno, strerror(errno));
exit(1); exit(1);
} }
printf("[NETLINK]Opened socket %s with fd %d\n",ifname,nas_sock_mbms_fd); printf("[NETLINK]Opened socket %s with fd %d\n",ifname,nas_sock_mbms_fd);
ret = fcntl(nas_sock_mbms_fd,F_SETFL,O_NONBLOCK); ret = fcntl(nas_sock_mbms_fd,F_SETFL,O_NONBLOCK);
if (ret == -1) { if (ret == -1) {
printf("[NETLINK] Error fcntl (%d:%s)\n",errno, strerror(errno)); LOG_E(PDCP, "[NETLINK] Error fcntl (%d:%s)\n",errno, strerror(errno));
if (LINK_ENB_PDCP_TO_IP_DRIVER) { if (LINK_ENB_PDCP_TO_IP_DRIVER) {
exit(1); exit(1);
......
...@@ -2303,21 +2303,21 @@ uint64_t pdcp_module_init( uint64_t pdcp_optmask, int id) { ...@@ -2303,21 +2303,21 @@ uint64_t pdcp_module_init( uint64_t pdcp_optmask, int id) {
netlink_init_tun("oaitun_ue", num_if, id); netlink_init_tun("oaitun_ue", num_if, id);
if (IS_SOFTMODEM_NOS1) if (IS_SOFTMODEM_NOS1)
nas_config(1, 1, 2, "oaitun_ue"); nas_config(1, 1, 2, "oaitun_ue");
netlink_init_mbms_tun("uem", id); netlink_init_mbms_tun("oaitun_uem", id + 1);
nas_config_mbms(1, 2, 2, "uem"); nas_config_mbms(1, 2, 2, "oaitun_uem");
LOG_I(PDCP, "UE pdcp will use tun interface\n"); LOG_I(PDCP, "UE pdcp will use tun interface\n");
} else if (ENB_NAS_USE_TUN) { } else if (ENB_NAS_USE_TUN) {
netlink_init_tun("oaitun_enb", 1, 0); netlink_init_tun("oaitun_enb", 1, 0);
nas_config(1, 1, 1, "oaitun_enb"); nas_config(1, 1, 1, "oaitun_enb");
if (pdcp_optmask & ENB_NAS_USE_TUN_W_MBMS_BIT) { if (pdcp_optmask & ENB_NAS_USE_TUN_W_MBMS_BIT) {
netlink_init_mbms_tun("enm", 0); netlink_init_mbms_tun("oaitun_enm", 1);
nas_config_mbms(1, 2, 1, "enm"); nas_config_mbms(1, 2, 1, "oaitun_enm");
LOG_I(PDCP, "ENB pdcp will use mbms tun interface\n"); LOG_I(PDCP, "ENB pdcp will use mbms tun interface\n");
} }
LOG_I(PDCP, "ENB pdcp will use tun interface\n"); LOG_I(PDCP, "ENB pdcp will use tun interface\n");
} else if (pdcp_optmask & ENB_NAS_USE_TUN_W_MBMS_BIT) { } else if (pdcp_optmask & ENB_NAS_USE_TUN_W_MBMS_BIT) {
netlink_init_mbms_tun("enm", 0); netlink_init_mbms_tun("oaitun_enm", 0);
nas_config_mbms(1, 2, 1, "enm"); nas_config_mbms(1, 2, 1, "oaitun_enm");
LOG_I(PDCP, "ENB pdcp will use mbms tun interface\n"); LOG_I(PDCP, "ENB pdcp will use mbms tun interface\n");
} }
......
...@@ -149,7 +149,8 @@ static int bringInterfaceUp(char *interfaceName, int up) ...@@ -149,7 +149,8 @@ static int bringInterfaceUp(char *interfaceName, int up)
return 0; return 0;
} }
int nas_config_mbms(int interface_id, int thirdOctet, int fourthOctet, char *ifname) { int nas_config_mbms(int interface_id, int thirdOctet, int fourthOctet, const char *ifname)
{
//char buf[5]; //char buf[5];
char ipAddress[20]; char ipAddress[20];
char broadcastAddress[20]; char broadcastAddress[20];
...@@ -161,8 +162,7 @@ int nas_config_mbms(int interface_id, int thirdOctet, int fourthOctet, char *ifn ...@@ -161,8 +162,7 @@ int nas_config_mbms(int interface_id, int thirdOctet, int fourthOctet, char *ifn
sprintf(ipAddress, "%s.%d.%d",baseNetAddress,thirdOctet,fourthOctet); sprintf(ipAddress, "%s.%d.%d",baseNetAddress,thirdOctet,fourthOctet);
sprintf(broadcastAddress, "%s.%d.255",baseNetAddress, thirdOctet); sprintf(broadcastAddress, "%s.%d.255",baseNetAddress, thirdOctet);
sprintf(interfaceName, "%s%s%d", (UE_NAS_USE_TUN || ENB_NAS_USE_TUN)?"oaitun_":ifname, sprintf(interfaceName, "%s%d", ifname, interface_id);
UE_NAS_USE_TUN?ifname/*"ue"*/: (ENB_NAS_USE_TUN?ifname/*"enb"*/:""),interface_id);
bringInterfaceUp(interfaceName, 0); bringInterfaceUp(interfaceName, 0);
// sets the machine address // sets the machine address
returnValue= setInterfaceParameter(interfaceName, ipAddress,SIOCSIFADDR); returnValue= setInterfaceParameter(interfaceName, ipAddress,SIOCSIFADDR);
......
...@@ -62,7 +62,7 @@ int nas_config(int interface_id, int thirdOctet, int fourthOctet, const char *if ...@@ -62,7 +62,7 @@ int nas_config(int interface_id, int thirdOctet, int fourthOctet, const char *if
* \note * \note
* @ingroup _nas * @ingroup _nas
*/ */
int nas_config_mbms(int interface_id, int thirdOctet, int fourthOctet, char *ifsuffix); int nas_config_mbms(int interface_id, int thirdOctet, int fourthOctet, const char *ifname);
/*! \fn void setBaseNetAddress(char*) /*! \fn void setBaseNetAddress(char*)
* \brief This function sets the basic network address used * \brief This function sets the basic network address used
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment