diff --git a/openair-cn/SCRIPTS/install_asn1c_0.9.24.modified.bash b/openair-cn/SCRIPTS/install_asn1c_0.9.24.modified.bash deleted file mode 100755 index 3821d656c9e3cfca005788c51bcd699d6f9f150f..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/install_asn1c_0.9.24.modified.bash +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# Tested on ubuntu 12.04 with updates 07 november 2013 - -$1 rm -Rf /usr/local/src/asn1c-r1516 -$1 svn co https://github.com/vlm/asn1c/trunk /usr/local/src/asn1c-r1516 -r 1516 > /tmp/install_log.txt -cd /usr/local/src/asn1c-r1516 -$1 patch -p0 < $OPENAIRCN_DIR/S1AP/MESSAGES/ASN1/asn1cpatch.p0 > /tmp/install_log.txt -$1 ./configure > /tmp/install_log.txt -$1 make > /tmp/install_log.txt -$1 make install > /tmp/install_log.txt \ No newline at end of file diff --git a/openair-cn/SCRIPTS/install_openvswitch1.9.0.bash b/openair-cn/SCRIPTS/install_openvswitch1.9.0.bash deleted file mode 100755 index 4704c2342fdb9323def1afa9c70afcee6fba409a..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/install_openvswitch1.9.0.bash +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# Tested on ubuntu 12.04 with updates on 05 april 2013, 07 november 2013, 20 january 2014 - -# Make sure only root can run our script -if [[ $EUID -ne 0 ]]; then - echo "This script must be run as root" 1>&2 - exit 1 -fi - -apt-get install iproute pkg-config python-twisted-conch python-anyjson \ -python-pyside python3-pyside python-zope python-qt4 libssl-dev uml-utilities \ -linux-headers-`uname -r` vlan -y - -rmmod bridge -cd /usr/local/src/ -if [ ! -f /usr/local/src/openvswitch-1.9.0.tar.gz ]; then - wget http://openvswitch.org/releases/openvswitch-1.9.0.tar.gz -fi -tar -xzf openvswitch-1.9.0.tar.gz -cd openvswitch-1.9.0 -./boot.sh -./configure --with-linux=/lib/modules/`uname -r`/build --disable-ssl -make -make install -make modules_install - -if [ -f /lib/modules/`uname -r`/kernel/net/openvswitch/openvswitch.ko ] ; then - insmod /lib/modules/`uname -r`/kernel/net/openvswitch/openvswitch.ko -else - if [ -f /lib/modules//`uname -r`/extra/openvswitch.ko ] ; then - insmod /lib/modules//`uname -r`/extra/openvswitch.ko - else - echo_error "Could not find openvswitch.ko, exiting" - exit 1 - fi -fi -# Initialize the configuration database using ovsdb-tool, e.g.: - -mkdir -p /usr/local/etc/openvswitch -ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema - -#======= -# Startup -#======= -# Before starting ovs-vswitchd itself, you need to start its -# configuration database, ovsdb-server. Each machine on which Open -# vSwitch is installed should run its own copy of ovsdb-server. -# Configure it to use the database you created during step 7 of -# installation, above, to listen on a Unix domain socket, to connect to -# any managers specified in the database itself, and to use the SSL -# configuration in the database: - -ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --pidfile --detach - -# Then initialize the database using ovs-vsctl. This is only -# necessary the first time after you create the database with -# ovsdb-tool (but running it at any time is harmless): - -ovs-vsctl --no-wait init - -# Then start the main Open vSwitch daemon, telling it to -# connect to the same Unix domain socket: - -ovs-vswitchd --pidfile --detach - diff --git a/openair-cn/SCRIPTS/start_enb.bash b/openair-cn/SCRIPTS/start_enb.bash deleted file mode 100755 index 7b57becf17d8add67afa881b6a96c2cf819374a4..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/start_enb.bash +++ /dev/null @@ -1,326 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# start MME+S/P-GW with openvswitch setting - - -# +-----------+ +------+ +-----------+ -# | eNB +------+ | ovs | VLAN 1+------+ MME | -# | |cpenb0+------------------+cpmme0| | -# | +------+ |bridge| +------+ | -# | |upenb0+-------+ | | | -# +-----------+------+ | | | +-----------+ -# +---|--+ | -# | +-----------+ -# | | S+P-GW | -# | VLAN2 +------+ +-------+ -# +----------+upsgw0| |eth0 +---Internet access -# +------+ +-------+ -# | | -# +-----------+ -# - - -BRIDGE="vswitch" - -########################################################### -IPTABLES=/sbin/iptables -THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -declare -x OPENAIR_DIR="" -declare -x OPENAIR1_DIR="" -declare -x OPENAIR2_DIR="" -declare -x OPENAIR3_DIR="" -declare -x OPENAIR_TARGETS="" -########################################################### -cidr2mask() { - local i mask="" - local full_octets=$(($1/8)) - local partial_octet=$(($1%8)) - - for ((i=0;i<4;i+=1)); do - if [ $i -lt $full_octets ]; then - mask+=255 - elif [ $i -eq $full_octets ]; then - mask+=$((256 - 2**(8-$partial_octet))) - else - mask+=0 - fi - test $i -lt 3 && mask+=. - done - - echo $mask -} - - -black='\E[30m' -red='\E[31m' -green='\E[32m' -yellow='\E[33m' -blue='\E[34m' -magenta='\E[35m' -cyan='\E[36m' -white='\E[37m' - -ROOT_UID=0 -E_NOTROOT=67 - -trim () -{ - echo "$1" | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}' -} - - -cecho() # Color-echo -# arg1 = message -# arg2 = color -{ - local default_msg="No Message." - message=${1:-$default_msg} - color=${2:-$black} - echo -e "$color" - echo -n "$message" - tput sgr0 - echo - return -} - -echo_error() { - local my_string="" - until [ -z "$1" ] - do - my_string="$my_string$1" - shift - done - cecho "$my_string" $red -} - -echo_warning() { - local my_string="" - until [ -z "$1" ] - do - my_string="$my_string$1" - shift - done - cecho "$my_string" $yellow -} - -echo_success() { - local my_string="" - until [ -z "$1" ] - do - my_string="$my_string$1" - shift - done - cecho "$my_string" $green -} - -bash_exec() { - output=$($1 2>&1) - result=$? - if [ $result -eq 0 ] - then - echo_success "$1" - else - echo_error "$1: $output" - fi -} - -set_openair() { - fullpath=`readlink -f $BASH_SOURCE` - [ -f "/.$fullpath" ] || fullpath=`readlink -f $PWD/$fullpath` - openair_path=${fullpath%/targets/*} - openair_path=${openair_path%/openair-cn/*} - openair_path=${openair_path%/openair[123]/*} - - export OPENAIR_DIR=$openair_path - export OPENAIR_HOME=$openair_path - export OPENAIR1_DIR=$openair_path/openair1 - export OPENAIR2_DIR=$openair_path/openair2 - export OPENAIR3_DIR=$openair_path/openair3 - export OPENAIRCN_DIR=$openair_path/openair-cn - export OPENAIR_TARGETS=$openair_path/targets -} - -wait_process_started () { - if [ -z "$1" ] - then - echo_error "WAITING FOR PROCESS START: NO PROCESS" - return 1 - fi - ps -C $1 > /dev/null 2>&1 - while [ $? -ne 0 ]; do - echo_warning "WAITING FOR $1 START" - sleep 2 - ps -C $1 > /dev/null 2>&1 - done - echo_success "PROCESS $1 STARTED" - return 0 -} - -is_process_started () { - if [ -z "$1" ] - then - echo_error "WAITING FOR PROCESS START: NO PROCESS" - return 1 - fi - ps -C $1 > /dev/null 2>&1 - if [ $? -ne 0 ] - then - echo_success "PROCESS $1 NOT STARTED" - return 1 - fi - echo_success "PROCESS $1 STARTED" - return 0 -} - -assert() { - # If condition false - # exit from script with error message - E_PARAM_ERR=98 - E_PARAM_FAILED=99 - - if [ -z "$2" ] # Not enought parameters passed. - then - return $E_PARAM_ERR - fi - - lineno=$2 - if [ ! $1 ] - then - echo "Assertion failed: \"$1\"" - echo "File \"$0\", line $lineno" - exit $E_ASSERT_FAILED - fi -} - -start_openswitch_daemon() { - rmmod -s bridge - is_process_started "ovsdb-server" - if [ $? -ne 0 ] - then - ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --pidfile --detach - wait_process_started "ovsdb-server" - fi - # To be done after installation - # ovs-vsctl --no-wait init - is_process_started "ovs-vswitchd" - if [ $? -ne 0 ] - then - ovs-vswitchd --pidfile --detach - wait_process_started "ovs-vswitchd" - fi -} - -set_openair -cecho "OPENAIR_DIR = $OPENAIR_DIR" $green -cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green -cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green -cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green -cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green - - - - -rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/mme_default.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt - -rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/enb_default.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt - - -################################################## -# LAUNCH eNB + UE executable -################################################## -# ONLY oai interface for UE -declare MAKE_IP_DRIVER_TARGET="ue_ip.ko" -declare MAKE_LTE_ACCESS_STRATUM_TARGET="oaisim USE_MME=R10" -declare IP_DRIVER_NAME="ue_ip" -declare LTEIF="oip1" -UE_IPv4="10.0.0.8" -UE_IPv6="2001:1::8" -UE_IPv6_CIDR=$UE_IPv6"/64" -UE_IPv4_CIDR=$UE_IPv4"/24" -#------------------------------------------------ -declare -a NAS_IMEI=( 3 9 1 8 3 6 6 2 0 0 0 0 0 0 ) - - - -echo "Bringup UE interface" -bash_exec "rmmod $IP_DRIVER_NAME" -cecho "make $MAKE_IP_DRIVER_TARGET $MAKE_LTE_ACCESS_STRATUM_TARGET ....." $green -# bash_exec "make --directory=$OPENAIR_TARGETS/SIMU/EXAMPLES/VIRT_EMUL_1eNB $MAKE_LTE_ACCESS_STRATUM_TARGET " -bash_exec "make --directory=$OPENAIR2_DIR $MAKE_IP_DRIVER_TARGET " -#bash_exec "make --directory=$OPENAIR2_DIR/NAS/DRIVER/LITE/RB_TOOL " - -#bash_exec "insmod $OPENAIR2_DIR/NAS/DRIVER/LITE/$IP_DRIVER_NAME.ko oai_nw_drv_IMEI=${NAS_IMEI[0]},${NAS_IMEI[1]},${NAS_IMEI[2]},${NAS_IMEI[3]},${NAS_IMEI[4]},${NAS_IMEI[5]},${NAS_IMEI[6]},${NAS_IMEI[7]},${NAS_IMEI[8]},${NAS_IMEI[9]},${NAS_IMEI[10]},${NAS_IMEI[11]},${NAS_IMEI[12]},${NAS_IMEI[13]}" -bash_exec "insmod $OPENAIR2_DIR/NAS/DRIVER/UE_LTE/$IP_DRIVER_NAME.ko" - -bash_exec "ip route flush cache" - -#bash_exec "ip link set $LTEIF broadcast ff:ff:ff:ff:ff:ff" -bash_exec "ip link set $LTEIF up" -sleep 1 -bash_exec "ip addr add dev $LTEIF $UE_IPv4_CIDR" -bash_exec "ip addr add dev $LTEIF $UE_IPv6_CIDR" - -# -a -> Add RB -# -d -> Delete RB -# -cxx -> lcr -# -ixx -> instance -# -zxx -> dscp -# -fxxx -> classref (uid of a classifier entry) if fn is used , fn is used for send classifier and n+1 for receive classifier -# -sxxx -> source ipv4 address -# -txxx -> destination ipv4 address -# -x -> source ipv6 address -# -y -> destination ipv6 address -# -r -> radio bearer id -#bash_exec "$OPENAIR2_DIR/NAS/DRIVER/LITE/RB_TOOL/rb_tool -a -c0 -f0 -i1 -z0 -x 0::0/128 -y 0::0/128 -r 5" -#bash_exec "$OPENAIR2_DIR/NAS/DRIVER/LITE/RB_TOOL/rb_tool -a -c0 -f2 -i1 -z64 -s 0.0.0.0/32 -t 0.0.0.0/32 -r 5" -sleep 1 - -bash_exec "sysctl -w net.ipv4.conf.all.log_martians=1" -assert " `sysctl -n net.ipv4.conf.all.log_martians` -eq 1" $LINENO - -echo " Disabling reverse path filtering" -bash_exec "sysctl -w net.ipv4.conf.all.rp_filter=0" -assert " `sysctl -n net.ipv4.conf.all.rp_filter` -eq 0" $LINENO - - -bash_exec "ip route flush cache" - -# please add table 200 lte in/etc/iproute2/rt_tables -ip rule add fwmark 5 table lte -ip route add default dev $LTEIF table lte - -#gdb --args $OPENAIR_TARGETS/SIMU/USER/oaisim -a -u1 -l7 --mme_ip_address $MME_IP_ADDRESS_FOR_S1_MME --s1c_ip_address $ENB_IP_ADDRESS_FOR_S1_MME --s1u_ip_address $ENB_IP_ADDRESS_FOR_S1U -echo $OPENAIR_TARGETS/SIMU/USER/oaisim -a -u1 -l7 --mme_ip_address $MME_IP_ADDRESS_FOR_S1_MME --s1c_ip_address $ENB_IP_ADDRESS_FOR_S1_MME --s1u_ip_address $ENB_IP_ADDRESS_FOR_S1U - - diff --git a/openair-cn/SCRIPTS/start_lte-enb-ovs.bash b/openair-cn/SCRIPTS/start_lte-enb-ovs.bash deleted file mode 100755 index e5e4f87f97e5ac5cd76b3d6d7cdad088a3acfa01..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/start_lte-enb-ovs.bash +++ /dev/null @@ -1,190 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# Author Lionel GAUTHIER 01/20/2014 -# -# This script start ENB+UE (all in one executable, on one host) with openvswitch setting -# MME+SP-GW executable have to be launched on the same host by your own (start_lte-epc-ovs.bash). -# -# hss.eur -# | -# +-----------+ +------+ +-----------+ v +----------+ -# | eNB +------+ | ovs | VLAN 1+------+ MME +----+ +---+ HSS | -# | |cpenb0+------------------+cpmme0| | +------+ | | -# | +------+ |bridge| +------+ +----+ +---+ | -# | |upenb0+-------+ | | | +----------+ -# +-----------+------+ | | | +-----------+ -# +---|--+ | router.eur -# | +-----------+ | +--------------+ -# | | S+P-GW | v | ROUTER | -# | VLAN2 +------+ +-------+ +----+ +----+ -# +----------+upsgw0| |sgi +-...-+ | | +---...Internet -# +------+ +-------+ +----+ +----+ -# | | 11 VLANS | | -# +-----------+ ids=[5..15] +--------------+ -# -########################################################### -# Parameters -########################################################### -declare MAKE_LTE_ACCESS_STRATUM_TARGET="oaisim ENABLE_ITTI=1 USE_MME=R10 NAS=1 Rel10=1" -declare MAKE_IP_DRIVER_TARGET="ue_ip.ko" -declare IP_DRIVER_NAME="ue_ip" -declare LTEIF="oip1" -declare UE_IPv4="10.0.0.8" -declare UE_IPv6="2001:1::8" -declare UE_IPv6_CIDR=$UE_IPv6"/64" -declare UE_IPv4_CIDR=$UE_IPv4"/24" -declare BRIDGE="vswitch" - - -########################################################### -THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -source $THIS_SCRIPT_PATH/utils.bash -########################################################### -test_command_install_package "gccxml" "gccxml" "--force-yes" -test_command_install_package "vconfig" "vlan" -test_command_install_package "iptables" "iptables" -test_command_install_package "iperf" "iperf" -test_command_install_package "ip" "iproute" -test_command_install_script "ovs-vsctl" "$OPENAIRCN_DIR/SCRIPTS/install_openvswitch1.9.0.bash" -test_command_install_package "tunctl" "uml-utilities" -test_command_install_lib "/usr/lib/libconfig.so" "libconfig-dev" - - -####################################################### -# SOURCE $OPENAIRCN_DIR/UTILS/CONF/mme_$HOSTNAME.conf -####################################################### -rm -f /tmp/source.txt -if [ -f $OPENAIRCN_DIR/UTILS/CONF/mme_$HOSTNAME.conf ] -then - echo_warning "Using config file $OPENAIRCN_DIR/UTILS/CONF/mme_$HOSTNAME.conf" - cat $OPENAIRCN_DIR/UTILS/CONF/mme_$HOSTNAME.conf | tr -d " " > /tmp/source.txt - source /tmp/source.txt -else - echo_warning "MME config file not found for host $HOSTNAME, using default: $OPENAIRCN_DIR/UTILS/CONF/mme_default.conf" - if [ -f $OPENAIRCN_DIR/UTILS/CONF/mme_default.conf ] - then - cat $OPENAIRCN_DIR/UTILS/CONF/mme_default.conf | tr -d " " > /tmp/source.txt - source /tmp/source.txt - else - echo_error "Default MME config file not found, exiting" - fi -fi - -####################################################### -# SOURCE $OPENAIRCN_DIR/UTILS/CONF/enb_$HOSTNAME.conf -####################################################### -rm -f /tmp/source.txt -if [ -f $OPENAIRCN_DIR/UTILS/CONF/enb_$HOSTNAME.conf ] -then - echo_warning "Using config file $OPENAIRCN_DIR/UTILS/CONF/enb_$HOSTNAME.conf" - cat $OPENAIRCN_DIR/UTILS/CONF/enb_$HOSTNAME.conf | tr -d " " > /tmp/source.txt - source /tmp/source.txt -else - echo_warning "eNB config file not found for host $HOSTNAME, using default: $OPENAIRCN_DIR/UTILS/CONF/enb_default.conf" - if [ -f $OPENAIRCN_DIR/UTILS/CONF/enb_default.conf ] - then - cat $OPENAIRCN_DIR/UTILS/CONF/enb_default.conf | tr -d " " > /tmp/source.txt - source /tmp/source.txt - else - echo_error "Default eNB config file not found, exiting" - fi -fi - -####################################################### -# USIM, NVRAM files -####################################################### -if [ ! -f $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/ue_data ]; then - make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS veryveryclean - make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS PROCESS=UE -fi -if [ ! -f $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/usim_data ]; then - make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS veryveryclean - make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS PROCESS=UE -fi -if [ ! -f .ue.nvram ]; then - # generate .ue_emm.nvram .ue.nvram - $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/ue_data -g -fi - -if [ ! -f .usim.nvram ]; then - # generate .usim.nvram - $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/usim_data -g -fi - -################################################## -# LAUNCH eNB + UE executable -################################################## -echo "Bringup UE interface" -pkill oaisim -bash_exec "rmmod $IP_DRIVER_NAME" > /dev/null 2>&1 - -cecho "make $MAKE_IP_DRIVER_TARGET $MAKE_LTE_ACCESS_STRATUM_TARGET ....." $green -#bash_exec "make --directory=$OPENAIR2_DIR $MAKE_IP_DRIVER_TARGET " -make --directory=$OPENAIR2_DIR $MAKE_IP_DRIVER_TARGET || exit 1 -#bash_exec "make --directory=$OPENAIR_TARGETS/SIMU/USER $MAKE_LTE_ACCESS_STRATUM_TARGET " -make --directory=$OPENAIR_TARGETS/SIMU/USER $MAKE_LTE_ACCESS_STRATUM_TARGET || exit 1 - -bash_exec "insmod $OPENAIR2_DIR/NETWORK_DRIVER/UE_IP/$IP_DRIVER_NAME.ko" - -bash_exec "ip route flush cache" - -bash_exec "ip link set $LTEIF up" -sleep 1 -bash_exec "ip addr add dev $LTEIF $UE_IPv4_CIDR" -bash_exec "ip addr add dev $LTEIF $UE_IPv6_CIDR" - -sleep 1 - -bash_exec "sysctl -w net.ipv4.conf.all.log_martians=1" -assert " `sysctl -n net.ipv4.conf.all.log_martians` -eq 1" $LINENO - -echo " Disabling reverse path filtering" -bash_exec "sysctl -w net.ipv4.conf.all.rp_filter=0" -assert " `sysctl -n net.ipv4.conf.all.rp_filter` -eq 0" $LINENO - - -bash_exec "ip route flush cache" - -# Check table 200 lte in /etc/iproute2/rt_tables -fgrep lte /etc/iproute2/rt_tables -if [ $? -ne 0 ]; then - echo "200 lte " >> /etc/iproute2/rt_tables -fi -ip rule add fwmark 5 table lte -ip route add default dev $LTEIF table lte - -ITTI_LOG_FILE=/tmp/itti_enb.log -rotate_log_file $ITTI_LOG_FILE - - -#gdb --args -$OPENAIR_TARGETS/SIMU/USER/oaisim -a -u1 -l7 -K $ITTI_LOG_FILE -O $MME_IP_ADDRESS_FOR_S1_MME - - diff --git a/openair-cn/SCRIPTS/start_lte-epc.bash b/openair-cn/SCRIPTS/start_lte-epc.bash deleted file mode 100755 index 7f5edbdc3404a3e7c51602ac32111750a53650e5..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/start_lte-epc.bash +++ /dev/null @@ -1,352 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# start MME+S/P-GW with openvswitch setting - -# hss.eur -# +-----------+ +------+ +-----------+ v +----------+ -# | eNB +------+ | ovs | VLAN 1+------+ MME +----+ +---+ HSS | -# | |cpenb0+------------------+cpmme0| | +------+ | | -# | +------+ |bridge| +------+ +----+ +---+ | -# | |upenb0+-------+ | | | +----------+ -# +-----------+------+ | | | +-----------+ -# +---|--+ | router.eur -# | +-----------+ | +--------------+ -# | | S+P-GW | v | ROUTER | -# | VLAN2 +------+ +-------+ +----+ +----+ -# +----------+upsgw0| |sgi +-...-+ | | +---...Internet -# +------+ +-------+ +----+ +----+ -# | | 11 VLANS | | -# +-----------+ ids=[5..15] +--------------+ -# - - -BRIDGE="vswitch" -IPTABLES=/sbin/iptables - -THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -source $THIS_SCRIPT_PATH/utils.bash - -cleanvlan() { - echo "Caught a signal -> Exiting" - - bash_exec "ovs-vsctl del-br $BRIDGE" - for i in 5 6 7 8 9 10 11 12 13 14 15 - do - # create vlan interface - bash_exec "vconfig rem $PGW_INTERFACE_NAME_FOR_SGI.$i" - sync - done - - pkill oai_epc - exit 0 -} - -########################################################### - -declare -x OPENAIR_DIR="" -declare -x OPENAIR1_DIR="" -declare -x OPENAIR2_DIR="" -declare -x OPENAIR3_DIR="" -declare -x OPENAIR_TARGETS="" -########################################################### - -set_openair -cecho "OPENAIR_DIR = $OPENAIR_DIR" $green -cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green -cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green -cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green -cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green - -check_for_root_rights -check_for_epc_executable -check_enb_config -check_epc_config - -cat $OPENAIR3_DIR/OPENAIRMME/objs/Makefile | grep CFLAGS\ \=\ | grep DENABLE_USE_NETFILTER_FOR_SGI -if [ $? -ne 0 ] -then - export ENABLE_USE_NETFILTER_FOR_SGI=0 -else - export ENABLE_USE_NETFILTER_FOR_SGI=1 -fi - -cat $OPENAIR3_DIR/OPENAIRMME/objs/Makefile | grep CFLAGS\ \=\ | grep DENABLE_USE_RAW_FOR_SGI -if [ $? -ne 0 ] -then - export ENABLE_USE_RAW_FOR_SGI=0 -else - export ENABLE_USE_RAW_FOR_SGI=1 -fi - -pkill oaisim_mme -pkill oai_epc -pkill oai_sgw - -rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/epc_$HOSTNAME.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt - -rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/enb_$HOSTNAME.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt - -ping -c 1 hss.eur || { echo "hss.eur does not respond to ping" >&2 ; exit ; } -ping -c 1 router.eur || { echo "router.eur does not respond to ping" >&2 ; exit ; } - -IP_ROUTER=`python -c 'import socket; print socket.gethostbyname("router.eur")'` -export MAC_ROUTER=`ip neigh show | grep $IP_ROUTER | cut -d ' ' -f5 | tr -d ':'` - -trap cleanvlan SIGINT SIGKILL SIGTERM - -echo_success "ROUTER MAC ADDRESS= $MAC_ROUTER" -bash_exec "modprobe tun" -bash_exec "modprobe ip_tables" -bash_exec "modprobe iptable_nat" -bash_exec "modprobe x_tables" - -bash_exec "$IPTABLES -P INPUT ACCEPT" -bash_exec "$IPTABLES -F INPUT" -bash_exec "$IPTABLES -P OUTPUT ACCEPT" -bash_exec "$IPTABLES -F OUTPUT" -bash_exec "$IPTABLES -P FORWARD ACCEPT" -bash_exec "$IPTABLES -F FORWARD" -bash_exec "$IPTABLES -t raw -F" -bash_exec "$IPTABLES -t nat -F" -bash_exec "$IPTABLES -t mangle -F" -bash_exec "$IPTABLES -t filter -F" - -bash_exec "ip route flush cache" - - -echo " Disabling forwarding" -bash_exec "sysctl -w net.ipv4.ip_forward=0" -assert " `sysctl -n net.ipv4.ip_forward` -eq 0" $LINENO - -echo " Enabling DynamicAddr.." -bash_exec "sysctl -w net.ipv4.ip_dynaddr=1" -assert " `sysctl -n net.ipv4.ip_dynaddr` -eq 1" $LINENO - -bash_exec "sysctl -w net.ipv4.conf.all.log_martians=1" -assert " `sysctl -n net.ipv4.conf.all.log_martians` -eq 1" $LINENO - - -echo " Disabling reverse path filtering" -bash_exec "sysctl -w net.ipv4.conf.all.rp_filter=0" -assert " `sysctl -n net.ipv4.conf.all.rp_filter` -eq 0" $LINENO - - -start_openswitch_daemon -# REMINDER: -# +-----------+ +------+ +-----------+ -# | eNB +------+ | ovs | VLAN 1+------+ MME | -# | |cpenb0+------------------+cpmme0| | -# | +------+ |bridge| +------+ | -# | |upenb0+-------+ | | | -# +-----------+------+ | | | +-----------+ -# +---|--+ | -# | +-----------+ -# | | S+P-GW | -# | VLAN2 +------+ +-------+ +----+ +----+ -# +----------+upsgw0| |pgwsgi0+---+br2 +----+eth0| -# +------+ +-------+ +----+ +----+ -# | | -# +-----------+ -# -################################################## -# del bridge between eNB and MME/SPGW -################################################## -bash_exec "tunctl -d $ENB_INTERFACE_NAME_FOR_S1_MME" -bash_exec "tunctl -d $ENB_INTERFACE_NAME_FOR_S1U" -bash_exec "tunctl -d $MME_INTERFACE_NAME_FOR_S1_MME" -bash_exec "tunctl -d $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP" -bash_exec "ovs-vsctl del-br $BRIDGE" - -################################################## -# build bridge between eNB and MME/SPGW -################################################## -bash_exec "tunctl -t $ENB_INTERFACE_NAME_FOR_S1_MME" -bash_exec "tunctl -t $ENB_INTERFACE_NAME_FOR_S1U" -bash_exec "tunctl -t $MME_INTERFACE_NAME_FOR_S1_MME" -bash_exec "tunctl -t $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP" - -bash_exec "ovs-vsctl add-br $BRIDGE" -bash_exec "ovs-vsctl add-port $BRIDGE $ENB_INTERFACE_NAME_FOR_S1_MME tag=1" -bash_exec "ovs-vsctl add-port $BRIDGE $MME_INTERFACE_NAME_FOR_S1_MME tag=1" -bash_exec "ovs-vsctl add-port $BRIDGE $ENB_INTERFACE_NAME_FOR_S1U tag=2" -bash_exec "ovs-vsctl add-port $BRIDGE $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP tag=2" - -bash_exec "ifconfig $MME_INTERFACE_NAME_FOR_S1_MME promisc up" -bash_exec "ifconfig $MME_INTERFACE_NAME_FOR_S1_MME $MME_IP_ADDRESS_FOR_S1_MME netmask `cidr2mask $MME_IP_NETMASK_FOR_S1_MME` promisc up" -bash_exec "ifconfig $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP promisc up" -bash_exec "ifconfig $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP $SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP netmask `cidr2mask $SGW_IP_NETMASK_FOR_S1U_S12_S4_UP` promisc up" - -bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1_MME promisc up" -bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1_MME $ENB_IP_ADDRESS_FOR_S1_MME netmask `cidr2mask $ENB_IP_NETMASK_FOR_S1_MME` promisc up" -bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1U promisc up" -bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1U $ENB_IP_ADDRESS_FOR_S1U netmask `cidr2mask $ENB_IP_NETMASK_FOR_S1U` promisc up" - -################################################## -# del bridge between SPGW and Internet -################################################## -#bash_exec "tunctl -d $PGW_INTERFACE_NAME_FOR_SGI" -#bash_exec "ovs-vsctl del-br $SGI_BRIDGE" - -################################################## -# build bridge between SPGW and Internet -################################################## - -# # get ipv4 address from PGW_INTERFACE_NAME_FOR_SGI -# IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | awk '/inet addr/ {split ($2,A,":"); print A[2]}' | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}'` -# if [ $IP_ADDR ]; then -# bash_exec "ip -4 addr del $IP_ADDR dev $PGW_INTERFACE_NAME_FOR_SGI" -# fi -# -# # remove all ipv6 address from PGW_INTERFACE_NAME_FOR_SGI -# IP_ADDR="not empty" -# until [ "$IP_ADDR"x == "x" ]; do -# IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | grep 'inet6' | head -1 | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}' | cut -d ' ' -f3` -# if [ $IP_ADDR ]; then -# bash_exec "ip -6 addr del $IP_ADDR dev $PGW_INTERFACE_NAME_FOR_SGI" -# fi -# done - -if [ $ENABLE_USE_NETFILTER_FOR_SGI -eq 1 ]; then - - bash_exec "modprobe nf_conntrack" - bash_exec "modprobe nf_conntrack_ftp" - - ###################################################### - # PREROUTING - ###################################################### - # We restore the mark following the CONNMARK mark. In fact, it does a simple MARK=CONNMARK - # where MARK is the standard mark (usable by tc) - # In French: Cette option de cible restaure le paquet marqué dans la marque de connexion - # comme défini par CONNMARK. Un masque peut aussi être défini par l'option --mask. - # Si une option mask est placée, seules les options masquées seront placées. - # Notez que cette option de cible n'est valide que dans la table mangle. - bash_exec "$IPTABLES -t mangle -A PREROUTING -j CONNMARK --restore-mark" - - # TEST bash_exec "$IPTABLES -t mangle -A PREROUTING -m mark --mark 0 -i $PGW_INTERFACE_NAME_FOR_SGI -j MARK --set-mark 15" - # We set the mark of the initial packet as value of the conntrack mark for all the packets of the connection. - # This mark will be restore for the other packets by the first rule of POSTROUTING --restore-mark). - bash_exec "$IPTABLES -t mangle -A PREROUTING -j CONNMARK --save-mark" - - - ###################################################### - # POSTROUTING - ###################################################### - - # MARK=CONNMARK - bash_exec "iptables -A POSTROUTING -t mangle -o tap0 -j CONNMARK --restore-mark" - # If we’ve got a mark no need to get further[ - bash_exec "iptables -A POSTROUTING -t mangle -o tap0 -m mark ! --mark 0 -j ACCEPT" - - #bash_exec "iptables -A POSTROUTING -p tcp --dport 21 -t mangle -j MARK --set-mark 1" - #bash_exec "iptables -A POSTROUTING -p tcp --dport 80 -t mangle -j MARK --set-mark 2" - - # We set the mark of the initial packet as value of the conntrack mark for all the packets - # of the connection. This mark will be restore for the other packets by the first rule - # of POSTROUTING (–restore-mark). - bash_exec "iptables -A POSTROUTING -t mangle -j CONNMARK --save-mark" - - bash_exec "iptables -A PREROUTING -t mangle -j CONNMARK --restore-mark" - - # We restore the mark following the CONNMARK mark. - # In fact, it does a simple MARK=CONNMARK where MARK is the standard mark (usable by tc) - #bash_exec "$IPTABLES -A OUTPUT -t mangle -m mark ! --mark 0 -j CONNMARK --restore-mark" - - # If we’ve got a mark no need to get further[1] - #TEST bash_exec "$IPTABLES -A OUTPUT -t mangle -p icmp -j MARK --set-mark 14" - #bash_exec "$IPTABLES -A OUTPUT -t mangle -m mark ! --mark 0 -j ACCEPT" - - - # We set the mark of the initial packet as value of the conntrack mark for all the packets of the connection. - # This mark will be restore for the other packets by the first rule of OUTPUT (–restore-mark). - #bash_exec "$IPTABLES -A OUTPUT -t mangle -j CONNMARK --save-mark" - - ###################################################### - # NETFILTER QUEUE - ###################################################### - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 5 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 6 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 7 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 8 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 9 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 10 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 11 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 12 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 13 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 14 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 15 -j NFQUEUE --queue-num 1" - - #echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables #To disable Iptables in the bridge. - #Raw table: Some years ago appeared a new tables in Iptables. - #This table can be used to avoid packets (connection really) to enter the NAT table: - # iptables -t raw -I PREROUTING -i BRIDGE -s x.x.x.x -j NOTRACK. - - #bash_exec "$IPTABLES -t nat -A POSTROUTING -o $PGW_INTERFACE_NAME_FOR_SGI -j SNAT --to-source $PGW_IP_ADDR_FOR_SGI" -else - # # get ipv4 address from PGW_INTERFACE_NAME_FOR_SGI - #IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | awk '/inet addr/ {split ($2,A,":"); print A[2]}' | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}'` - - #NETWORK=`echo $IP_ADDR | cut -d . -f 1,2,3` - - bash_exec "modprobe 8021q" - - for i in 5 6 7 8 9 10 11 12 13 14 15 - do - # create vlan interface - bash_exec "vconfig rem $PGW_INTERFACE_NAME_FOR_SGI.$i" - sync - bash_exec "vconfig add $PGW_INTERFACE_NAME_FOR_SGI $i" - sync - # configure vlan interface - #CIDR=$NETWORK'.'$i'/24' - base=200 - NET=$(( $i + $base )) - CIDR='10.0.'$NET'.2/8' - bash_exec "ip -4 addr add $CIDR dev $PGW_INTERFACE_NAME_FOR_SGI.$i" - done -fi - - -bash_exec "ip link set $PGW_INTERFACE_NAME_FOR_SGI promisc on" -##################################################.. - -# LAUNCH MME + S+P-GW executable -################################################## -#$OPENAIR3_DIR/OPENAIRMME/objs/OAISIM_MME/oaisim_mme -c $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/mme_default.conf -#wait_process_started "oaisim_mme" - -gdb --args $OPENAIR3_DIR/OPENAIRMME/objs/OAI_EPC/oai_epc -c $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/epc_$HOSTNAME.conf -wait_process_started "oai_epc" - -#gdb --args $OPENAIR3_DIR/OPENAIRMME/objs/OAI_EPC/oai_epc -c $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/mme_default.conf - diff --git a/openair-cn/SCRIPTS/start_lte-sgw.bash b/openair-cn/SCRIPTS/start_lte-sgw.bash deleted file mode 100644 index 073d9624e8dab3970b1a794c1c486662388f2c7a..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/start_lte-sgw.bash +++ /dev/null @@ -1,338 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# start MME+S/P-GW with openvswitch setting - - hss.eur -# +-----------+ +------+ +-----------+ v +----------+ -# | eNB +------+ | ovs | VLAN 1+------+ MME +----+ +---+ HSS | -# | |cpenb0+------------------+cpmme0| | +------+ | | -# | +------+ |bridge| +------+ +----+ +---+ | -# | |upenb0+-------+ | | | +----------+ -# +-----------+------+ | | | +-----------+ -# +---|--+ | router.eur -# | +-----------+ | +--------------+ -# | | S+P-GW | v | ROUTER | -# | VLAN2 +------+ +-------+ +----+ +----+ -# +----------+upsgw0| |sgi +-...-+ | | +---...Internet -# +------+ +-------+ +----+ +----+ -# | | 11 VLANS | | -# +-----------+ ids=[5..15] +--------------+ -# - - -BRIDGE="vswitch" - -########################################################### -IPTABLES=/sbin/iptables - -########################################################### - -THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -source $THIS_SCRIPT_PATH/utils.bash - -########################################################### -declare -x OPENAIR_DIR="" -declare -x OPENAIR1_DIR="" -declare -x OPENAIR2_DIR="" -declare -x OPENAIR3_DIR="" -declare -x OPENAIR_TARGETS="" -########################################################### - -set_openair -cecho "OPENAIR_DIR = $OPENAIR_DIR" $green -cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green -cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green -cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green -cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green - -cat ./objs/Makefile | grep CFLAGS\ \=\ | grep DENABLE_USE_NETFILTER_FOR_SGI -if [ $? -ne 0 ] -then - export ENABLE_USE_NETFILTER_FOR_SGI=0 -else - export ENABLE_USE_NETFILTER_FOR_SGI=1 -fi - -cat ./objs/Makefile | grep CFLAGS\ \=\ | grep DENABLE_USE_RAW_FOR_SGI -if [ $? -ne 0 ] -then - export ENABLE_USE_RAW_FOR_SGI=0 -else - export ENABLE_USE_RAW_FOR_SGI=1 -fi - -pkill oaisim_mme - - -rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/mme_default.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt - -rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/enb_default.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt - -ping -c 1 hss.eur || { echo "hss.eur does not respond to ping" >&2 ; exit ; } -ping -c 1 router.eur || { echo "router.eur does not respond to ping" >&2 ; exit ; } -export IP_ROUTER=`python -c 'import socket; print socket.gethostbyname("router.eur")'` -export MAC_ROUTER=`ip neigh show | grep $IP_ROUTER | cut -d ' ' -f5 | tr -d ':'` -echo_success "ROUTER MAC ADDRESS= $MAC_ROUTER" -bash_exec "modprobe tun" -bash_exec "modprobe ip_tables" -bash_exec "modprobe iptable_nat" -bash_exec "modprobe x_tables" - -bash_exec "$IPTABLES -P INPUT ACCEPT" -bash_exec "$IPTABLES -F INPUT" -bash_exec "$IPTABLES -P OUTPUT ACCEPT" -bash_exec "$IPTABLES -F OUTPUT" -bash_exec "$IPTABLES -P FORWARD ACCEPT" -bash_exec "$IPTABLES -F FORWARD" -bash_exec "$IPTABLES -t raw -F" -bash_exec "$IPTABLES -t nat -F" -bash_exec "$IPTABLES -t mangle -F" -bash_exec "$IPTABLES -t filter -F" - - - -bash_exec "ip route flush cache" - - -echo " Disabling forwarding" -bash_exec "sysctl -w net.ipv4.ip_forward=0" -assert " `sysctl -n net.ipv4.ip_forward` -eq 0" $LINENO - -echo " Enabling DynamicAddr.." -bash_exec "sysctl -w net.ipv4.ip_dynaddr=1" -assert " `sysctl -n net.ipv4.ip_dynaddr` -eq 1" $LINENO - -bash_exec "sysctl -w net.ipv4.conf.all.log_martians=1" -assert " `sysctl -n net.ipv4.conf.all.log_martians` -eq 1" $LINENO - - -echo " Disabling reverse path filtering" -bash_exec "sysctl -w net.ipv4.conf.all.rp_filter=0" -assert " `sysctl -n net.ipv4.conf.all.rp_filter` -eq 0" $LINENO - - -start_openswitch_daemon -# REMINDER: -# +-----------+ +------+ +-----------+ -# | eNB +------+ | ovs | VLAN 1+------+ MME | -# | |cpenb0+------------------+cpmme0| | -# | +------+ |bridge| +------+ | -# | |upenb0+-------+ | | | -# +-----------+------+ | | | +-----------+ -# +---|--+ | -# | +-----------+ -# | | S+P-GW | -# | VLAN2 +------+ +-------+ +----+ +----+ -# +----------+upsgw0| |pgwsgi0+---+br2 +----+eth0| -# +------+ +-------+ +----+ +----+ -# | | -# +-----------+ -# -################################################## -# del bridge between eNB and MME/SPGW -################################################## -bash_exec "tunctl -d $ENB_INTERFACE_NAME_FOR_S1_MME" -bash_exec "tunctl -d $ENB_INTERFACE_NAME_FOR_S1U" -bash_exec "tunctl -d $MME_INTERFACE_NAME_FOR_S1_MME" -bash_exec "tunctl -d $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP" -bash_exec "ovs-vsctl del-br $BRIDGE" - -################################################## -# build bridge between eNB and MME/SPGW -################################################## -bash_exec "tunctl -t $ENB_INTERFACE_NAME_FOR_S1_MME" -bash_exec "tunctl -t $ENB_INTERFACE_NAME_FOR_S1U" -bash_exec "tunctl -t $MME_INTERFACE_NAME_FOR_S1_MME" -bash_exec "tunctl -t $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP" - -bash_exec "ovs-vsctl add-br $BRIDGE" -bash_exec "ovs-vsctl add-port $BRIDGE $ENB_INTERFACE_NAME_FOR_S1_MME tag=1" -bash_exec "ovs-vsctl add-port $BRIDGE $MME_INTERFACE_NAME_FOR_S1_MME tag=1" -bash_exec "ovs-vsctl add-port $BRIDGE $ENB_INTERFACE_NAME_FOR_S1U tag=2" -bash_exec "ovs-vsctl add-port $BRIDGE $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP tag=2" - -bash_exec "ifconfig $MME_INTERFACE_NAME_FOR_S1_MME promisc up" -bash_exec "ifconfig $MME_INTERFACE_NAME_FOR_S1_MME $MME_IP_ADDRESS_FOR_S1_MME netmask `cidr2mask $MME_IP_NETMASK_FOR_S1_MME` promisc up" -bash_exec "ifconfig $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP promisc up" -bash_exec "ifconfig $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP $SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP netmask `cidr2mask $SGW_IP_NETMASK_FOR_S1U_S12_S4_UP` promisc up" - -bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1_MME promisc up" -bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1_MME $ENB_IP_ADDRESS_FOR_S1_MME netmask `cidr2mask $ENB_IP_NETMASK_FOR_S1_MME` promisc up" -bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1U promisc up" -bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1U $ENB_IP_ADDRESS_FOR_S1U netmask `cidr2mask $ENB_IP_NETMASK_FOR_S1U` promisc up" - -################################################## -# del bridge between SPGW and Internet -################################################## -#bash_exec "tunctl -d $PGW_INTERFACE_NAME_FOR_SGI" -#bash_exec "ovs-vsctl del-br $SGI_BRIDGE" - -################################################## -# build bridge between SPGW and Internet -################################################## - -# # get ipv4 address from PGW_INTERFACE_NAME_FOR_SGI -# IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | awk '/inet addr/ {split ($2,A,":"); print A[2]}' | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}'` -# if [ $IP_ADDR ]; then -# bash_exec "ip -4 addr del $IP_ADDR dev $PGW_INTERFACE_NAME_FOR_SGI" -# fi -# -# # remove all ipv6 address from PGW_INTERFACE_NAME_FOR_SGI -# IP_ADDR="not empty" -# until [ "$IP_ADDR"x == "x" ]; do -# IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | grep 'inet6' | head -1 | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}' | cut -d ' ' -f3` -# if [ $IP_ADDR ]; then -# bash_exec "ip -6 addr del $IP_ADDR dev $PGW_INTERFACE_NAME_FOR_SGI" -# fi -# done - -if [ $ENABLE_USE_NETFILTER_FOR_SGI -eq 1 ]; then - - bash_exec "modprobe nf_conntrack" - bash_exec "modprobe nf_conntrack_ftp" - - ###################################################### - # PREROUTING - ###################################################### - # We restore the mark following the CONNMARK mark. In fact, it does a simple MARK=CONNMARK - # where MARK is the standard mark (usable by tc) - # In French: Cette option de cible restaure le paquet marqué dans la marque de connexion - # comme défini par CONNMARK. Un masque peut aussi être défini par l'option --mask. - # Si une option mask est placée, seules les options masquées seront placées. - # Notez que cette option de cible n'est valide que dans la table mangle. - bash_exec "$IPTABLES -t mangle -A PREROUTING -j CONNMARK --restore-mark" - - # TEST bash_exec "$IPTABLES -t mangle -A PREROUTING -m mark --mark 0 -i $PGW_INTERFACE_NAME_FOR_SGI -j MARK --set-mark 15" - # We set the mark of the initial packet as value of the conntrack mark for all the packets of the connection. - # This mark will be restore for the other packets by the first rule of POSTROUTING --restore-mark). - bash_exec "$IPTABLES -t mangle -A PREROUTING -j CONNMARK --save-mark" - - - ###################################################### - # POSTROUTING - ###################################################### - - # MARK=CONNMARK - bash_exec "iptables -A POSTROUTING -t mangle -o tap0 -j CONNMARK --restore-mark" - # If we’ve got a mark no need to get further[ - bash_exec "iptables -A POSTROUTING -t mangle -o tap0 -m mark ! --mark 0 -j ACCEPT" - - #bash_exec "iptables -A POSTROUTING -p tcp --dport 21 -t mangle -j MARK --set-mark 1" - #bash_exec "iptables -A POSTROUTING -p tcp --dport 80 -t mangle -j MARK --set-mark 2" - - # We set the mark of the initial packet as value of the conntrack mark for all the packets - # of the connection. This mark will be restore for the other packets by the first rule - # of POSTROUTING (–restore-mark). - bash_exec "iptables -A POSTROUTING -t mangle -j CONNMARK --save-mark" - - bash_exec "iptables -A PREROUTING -t mangle -j CONNMARK --restore-mark" - - # We restore the mark following the CONNMARK mark. - # In fact, it does a simple MARK=CONNMARK where MARK is the standard mark (usable by tc) - #bash_exec "$IPTABLES -A OUTPUT -t mangle -m mark ! --mark 0 -j CONNMARK --restore-mark" - - # If we’ve got a mark no need to get further[1] - #TEST bash_exec "$IPTABLES -A OUTPUT -t mangle -p icmp -j MARK --set-mark 14" - #bash_exec "$IPTABLES -A OUTPUT -t mangle -m mark ! --mark 0 -j ACCEPT" - - - # We set the mark of the initial packet as value of the conntrack mark for all the packets of the connection. - # This mark will be restore for the other packets by the first rule of OUTPUT (–restore-mark). - #bash_exec "$IPTABLES -A OUTPUT -t mangle -j CONNMARK --save-mark" - - - - - ###################################################### - # NETFILTER QUEUE - ###################################################### - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 5 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 6 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 7 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 8 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 9 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 10 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 11 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 12 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 13 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 14 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 15 -j NFQUEUE --queue-num 1" - - #echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables #To disable Iptables in the bridge. - #Raw table: Some years ago appeared a new tables in Iptables. - #This table can be used to avoid packets (connection really) to enter the NAT table: - # iptables -t raw -I PREROUTING -i BRIDGE -s x.x.x.x -j NOTRACK. - - - - - #bash_exec "$IPTABLES -t nat -A POSTROUTING -o $PGW_INTERFACE_NAME_FOR_SGI -j SNAT --to-source $PGW_IP_ADDR_FOR_SGI" -else - # # get ipv4 address from PGW_INTERFACE_NAME_FOR_SGI - #IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | awk '/inet addr/ {split ($2,A,":"); print A[2]}' | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}'` - - #NETWORK=`echo $IP_ADDR | cut -d . -f 1,2,3` - - bash_exec "modprobe 8021q" - - for i in 5 6 7 8 9 10 11 12 13 14 15 - do - # create vlan interface - bash_exec "vconfig rem $PGW_INTERFACE_NAME_FOR_SGI.$i" - sync - bash_exec "vconfig add $PGW_INTERFACE_NAME_FOR_SGI $i" - sync - # configure vlan interface - #CIDR=$NETWORK'.'$i'/24' - base=200 - NET=$(( $i + $base )) - CIDR='10.0.'$NET'.2/8' - bash_exec "ip -4 addr add $CIDR dev $PGW_INTERFACE_NAME_FOR_SGI.$i" - done -fi - - -bash_exec "ip link set $PGW_INTERFACE_NAME_FOR_SGI promisc on" -##################################################.. - -# LAUNCH MME + S+P-GW executable -################################################## -#$OPENAIR3_DIR/OPENAIRMME/objs/OAISIM_MME/oaisim_mme -c $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/mme_default.conf -#wait_process_started "oaisim_mme" - -gdb --args $OPENAIR3_DIR/OPENAIRMME/objs/OAI_EPC/oai_epc -c $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/mme_default.conf -wait_process_started "oai_epc" - -#gdb --args $OPENAIR3_DIR/OPENAIRMME/objs/OAI_EPC/oai_epc -c $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/mme_default.conf - diff --git a/openair-cn/SCRIPTS/start_mme.bash b/openair-cn/SCRIPTS/start_mme.bash deleted file mode 100755 index 099daeb727672350b043b2951ed9e2a697e07e25..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/start_mme.bash +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# start MME without configuring anything in networking - -############################### -# Include misc functions -############################### -THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -source $THIS_SCRIPT_PATH/utils.bash - -# check_for_root_rights -check_for_mme_executable -check_epc_config - -############################### -# Test reachability of HSS -############################### -ping -c 1 hss.eur || { echo "hss.eur does not respond to ping" >&2 ; exit ; } - -############################### -# Test reachability of MME -############################### -rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/epc_$HOSTNAME.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt - -ping -c 1 $MME_IP_ADDRESS_FOR_S1_MME || { echo "MME_IP_ADDRESS_FOR_S1_MME=$MME_IP_ADDRESS_FOR_S1_MME does not respond to ping" >&2 ; exit ; } -ping -c 1 $SGW_IP_ADDRESS_FOR_S11 || { echo "SGW_IP_ADDRESS_FOR_S11=$SGW_IP_ADDRESS_FOR_S11 does not respond to ping" >&2 ; exit ; } - - -############################### -cecho "Starting MME on host $HOSTNAME" $blue -############################### -$OPENAIR3_DIR/OPENAIRMME/objs/OAISIM_MME/oaisim_mme -c $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/epc_$HOSTNAME.conf - - diff --git a/openair-cn/SCRIPTS/start_router.eur.bash b/openair-cn/SCRIPTS/start_router.eur.bash deleted file mode 100755 index e71ba6dae73e83a336f0f298e2cb4e1645b1be0c..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/start_router.eur.bash +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# -# The location of the iptables and kernel module programs -# -# If your Linux distribution came with a copy of iptables, -# most likely all the programs will be located in /sbin. If -# you manually compiled iptables, the default location will -# be in /usr/local/sbin -# -# ** Please use the "whereis iptables" command to figure out -# ** where your copy is and change the path below to reflect -# ** your setup -# -IPTABLES=/sbin/iptables -DEPMOD=/sbin/depmod -MODPROBE=/sbin/modprobe - -########################################################### -THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -source $THIS_SCRIPT_PATH/utils.bash -########################################################### - -#Setting the EXTERNAL and INTERNAL interfaces for the network -# - -EXTIF="eth0" -INTIF="eth2" -echo " External Interface: $EXTIF" -echo " Internal Interface: $INTIF" - -echo -en " loading modules: " - -# Need to verify that all modules have all required dependencies -# -echo " - Verifying that all kernel modules are ok" -$DEPMOD -a - -echo "----------------------------------------------------------------------" - -#Load the main body of the IPTABLES module - "iptable" -# - Loaded automatically when the "iptables" command is invoked -# -# - Loaded manually to clean up kernel auto-loading timing issues -# -echo -en "ip_tables, " -$MODPROBE ip_tables - - -#Load the IPTABLES filtering module - "iptable_filter" -# - Loaded automatically when filter policies are activated - - -#Load the stateful connection tracking framework - "ip_conntrack" -# -# The conntrack module in itself does nothing without other specific -# conntrack modules being loaded afterwards such as the "ip_conntrack_ftp" -# module -# -# - This module is loaded automatically when MASQ functionality is -# enabled -# -# - Loaded manually to clean up kernel auto-loading timing issues -# -echo -en "ip_conntrack, " -$MODPROBE ip_conntrack - - -#Load the FTP tracking mechanism for full FTP tracking -# -# Enabled by default -- insert a "#" on the next line to deactivate -# -echo -en "ip_conntrack_ftp, " -$MODPROBE ip_conntrack_ftp - - -#Load the IRC tracking mechanism for full IRC tracking -# -# Enabled by default -- insert a "#" on the next line to deactivate -# -echo -en "ip_conntrack_irc, " -$MODPROBE ip_conntrack_irc - - -#Load the general IPTABLES NAT code - "iptable_nat" -# - Loaded automatically when MASQ functionality is turned on -# -# - Loaded manually to clean up kernel auto-loading timing issues -# -echo -en "iptable_nat, " -$MODPROBE iptable_nat - - -#Loads the FTP NAT functionality into the core IPTABLES code -# Required to support non-PASV FTP. -# -# Enabled by default -- insert a "#" on the next line to deactivate -# -echo -en "ip_nat_ftp, " -$MODPROBE ip_nat_ftp - -#Clearing any previous configuration -# -# Unless specified, the defaults for INPUT and OUTPUT is ACCEPT -# The default for FORWARD is DROP (REJECT is not a valid policy) -# -# Isn't ACCEPT insecure? To some degree, YES, but this is our testing -# phase. Once we know that IPMASQ is working well, I recommend you run -# the rc.firewall-*-stronger rulesets which set the defaults to DROP but -# also include the critical additional rulesets to still let you connect to -# the IPMASQ server, etc. -# -echo " Clearing any existing rules and setting default policy.." -bash_exec "iptables -P INPUT ACCEPT" -bash_exec "iptables -F INPUT" -bash_exec "iptables -P OUTPUT ACCEPT" -bash_exec "iptables -F OUTPUT" -bash_exec "iptables -P FORWARD ACCEPT" -bash_exec "iptables -F FORWARD" -bash_exec "iptables -t nat -F" -bash_exec "iptables -t mangle -F" -bash_exec "iptables -t filter -F" -bash_exec "iptables -t raw -F" - -bash_exec "ip route flush cache" - - -echo " Enabling forwarding" -bash_exec "sysctl -w net.ipv4.ip_forward=1" -assert " `sysctl -n net.ipv4.ip_forward` -eq 1" $LINENO - -# Dynamic IP users: -# -# If you get your IP address dynamically from SLIP, PPP, or DHCP, -# enable this following option. This enables dynamic-address hacking -# which makes the life with Diald and similar programs much easier. -# -echo " Enabling DynamicAddr.." -bash_exec "sysctl -w net.ipv4.ip_dynaddr=1" -assert " `sysctl -n net.ipv4.ip_dynaddr` -eq 1" $LINENO - -bash_exec "sysctl -w net.ipv4.conf.all.log_martians=1" -assert " `sysctl -n net.ipv4.conf.all.log_martians` -eq 1" $LINENO - - -echo " Disabling reverse path filtering" -bash_exec "sysctl -w net.ipv4.conf.all.rp_filter=0" -bash_exec "sysctl -w net.ipv4.conf.all.rp_forward=0" -assert " `sysctl -n net.ipv4.conf.all.rp_filter` -eq 0" $LINENO -bash_exec "sysctl -w net.ipv4.conf.$EXTIF.rp_filter=0" -assert " `sysctl -n net.ipv4.conf.$EXTIF.rp_filter` -eq 0" $LINENO -bash_exec "sysctl -w net.ipv4.conf.$INTIF.rp_filter=0" -assert " `sysctl -n net.ipv4.conf.$INTIF.rp_filter` -eq 0" $LINENO -bash_exec "sysctl -w net.ipv4.conf.$EXTIF.rp_forward=0" -assert " `sysctl -n net.ipv4.conf.$EXTIF.rp_forward` -eq 0" $LINENO -bash_exec "sysctl -w net.ipv4.conf.$INTIF.rp_forward=0" -assert " `sysctl -n net.ipv4.conf.$INTIF.rp_forward` -eq 0" $LINENO - - -echo "0" > /proc/sys/net/ipv4/conf/all/proxy_arp -echo "1" > /proc/sys/net/ipv4/conf/$EXTIF/proxy_arp -echo "1" > /proc/sys/net/ipv4/conf/$INTIF/proxy_arp - -echo " FWD: Allow all connections OUT and only existing and related ones IN" -bash_exec "iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT" -bash_exec "iptables -A FORWARD -i $INTIF -o $EXTIF -m state --state NEW,ESTABLISHED,RELATED,INVALID -j ACCEPT" - -bash_exec "modprobe 8021q" - -for i in 5 6 7 8 9 10 11 12 13 14 15 -do - bash_exec "vconfig rem $INTIF.$i" - sync - bash_exec "vconfig add $INTIF $i" - sync - NET=$(( $i + 200 )) - CIDR='10.0.'$NET'.1/8' - bash_exec "ip -4 addr add $CIDR broadcast 192.174.$NET.255 dev $INTIF.$i" - bash_exec "iptables -A FORWARD -i $EXTIF -o $INTIF.$i -m state --state ESTABLISHED,RELATED -j ACCEPT" - bash_exec "iptables -A FORWARD -i $INTIF.$i -o $EXTIF -m state --state NEW,ESTABLISHED,RELATED,INVALID -j ACCEPT" - bash_exec "echo 1 > /proc/sys/net/ipv4/conf/$INTIF.$i/proxy_arp" - bash_exec "echo 0 > /proc/sys/net/ipv4/conf/$INTIF.$i/rp_forward" - bash_exec "echo 0 > /proc/sys/net/ipv4/conf/$INTIF.$i/rp_filter" - assert " `sysctl -n net.ipv4.conf.$INTIF.$i.proxy_arp` -eq 1" $LINENO - assert " `sysctl -n net.ipv4.conf.$INTIF.$i.rp_forward` -eq 0" $LINENO - assert " `sysctl -n net.ipv4.conf.$INTIF.$i.rp_filter` -eq 0" $LINENO -done -for i in 5 6 7 8 9 10 11 12 13 14 15 -do - bash_exec "iptables -t mangle -A PREROUTING -i $INTIF.$i -j CONNMARK --restore-mark" - bash_exec "iptables -t mangle -A PREROUTING -i $INTIF.$i -m mark --mark 0 -j MARK --set-mark $i" - bash_exec "iptables -t mangle -A PREROUTING -i $INTIF.$i -j CONNMARK --save-mark" - - - fgrep vlan$i /etc/iproute2/rt_tables - if [ $? -ne 0 ] - then - base=200 - num=$(( $i + $base )) - echo "$num vlan$i" >> /etc/iproute2/rt_tables - echo "Updating /etc/iproute2/rt_tables with table vlan$i id $num" - fi - ip rule del from all iif $EXTIF fwmark $i table vlan$i > /dev/null - bash_exec "ip rule add iif $EXTIF fwmark $i table vlan$i" - bash_exec "ip route add default dev $INTIF.$i table vlan$i" -done -#bash_exec "iptables -t mangle -A OUTPUT -m mark ! --mark 0 -j CONNMARK --save-mark" -#iptables -I INPUT -i $INTIF.5 -j LOG --log-ip-options --log-prefix "INPUT CHAIN:" -#iptables -I FORWARD -t mangle -i $INTIF.5 -j LOG --log-ip-options --log-prefix "FORWARD CHAIN(mangle):" -#iptables -I FORWARD -t filter -i $INTIF.5 -j LOG --log-ip-options --log-prefix "FORWARD CHAIN(filter):" -#iptables -I PREROUTING -t raw -i $INTIF.5 -j LOG --log-ip-options --log-prefix "PREROUTING (raw):" -#iptables -I PREROUTING -t mangle -i $INTIF.5 -j LOG --log-ip-options --log-prefix "PREROUTING (mangle):" -#iptables -I PREROUTING -t nat -i $INTIF.5 -j LOG --log-ip-options --log-prefix "PREROUTING (nat):" - - -echo " Enabling SNAT (MASQUERADE) functionality on $EXTIF" -bash_exec "iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE" - -echo -e "\nrc.firewall-iptables v$FWVER done.\n" -iptables -t mangle -nvL -iptables -t filter -nvL - diff --git a/openair-cn/SCRIPTS/start_router.nord.eur.bash b/openair-cn/SCRIPTS/start_router.nord.eur.bash deleted file mode 100644 index e71ba6dae73e83a336f0f298e2cb4e1645b1be0c..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/start_router.nord.eur.bash +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# -# The location of the iptables and kernel module programs -# -# If your Linux distribution came with a copy of iptables, -# most likely all the programs will be located in /sbin. If -# you manually compiled iptables, the default location will -# be in /usr/local/sbin -# -# ** Please use the "whereis iptables" command to figure out -# ** where your copy is and change the path below to reflect -# ** your setup -# -IPTABLES=/sbin/iptables -DEPMOD=/sbin/depmod -MODPROBE=/sbin/modprobe - -########################################################### -THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -source $THIS_SCRIPT_PATH/utils.bash -########################################################### - -#Setting the EXTERNAL and INTERNAL interfaces for the network -# - -EXTIF="eth0" -INTIF="eth2" -echo " External Interface: $EXTIF" -echo " Internal Interface: $INTIF" - -echo -en " loading modules: " - -# Need to verify that all modules have all required dependencies -# -echo " - Verifying that all kernel modules are ok" -$DEPMOD -a - -echo "----------------------------------------------------------------------" - -#Load the main body of the IPTABLES module - "iptable" -# - Loaded automatically when the "iptables" command is invoked -# -# - Loaded manually to clean up kernel auto-loading timing issues -# -echo -en "ip_tables, " -$MODPROBE ip_tables - - -#Load the IPTABLES filtering module - "iptable_filter" -# - Loaded automatically when filter policies are activated - - -#Load the stateful connection tracking framework - "ip_conntrack" -# -# The conntrack module in itself does nothing without other specific -# conntrack modules being loaded afterwards such as the "ip_conntrack_ftp" -# module -# -# - This module is loaded automatically when MASQ functionality is -# enabled -# -# - Loaded manually to clean up kernel auto-loading timing issues -# -echo -en "ip_conntrack, " -$MODPROBE ip_conntrack - - -#Load the FTP tracking mechanism for full FTP tracking -# -# Enabled by default -- insert a "#" on the next line to deactivate -# -echo -en "ip_conntrack_ftp, " -$MODPROBE ip_conntrack_ftp - - -#Load the IRC tracking mechanism for full IRC tracking -# -# Enabled by default -- insert a "#" on the next line to deactivate -# -echo -en "ip_conntrack_irc, " -$MODPROBE ip_conntrack_irc - - -#Load the general IPTABLES NAT code - "iptable_nat" -# - Loaded automatically when MASQ functionality is turned on -# -# - Loaded manually to clean up kernel auto-loading timing issues -# -echo -en "iptable_nat, " -$MODPROBE iptable_nat - - -#Loads the FTP NAT functionality into the core IPTABLES code -# Required to support non-PASV FTP. -# -# Enabled by default -- insert a "#" on the next line to deactivate -# -echo -en "ip_nat_ftp, " -$MODPROBE ip_nat_ftp - -#Clearing any previous configuration -# -# Unless specified, the defaults for INPUT and OUTPUT is ACCEPT -# The default for FORWARD is DROP (REJECT is not a valid policy) -# -# Isn't ACCEPT insecure? To some degree, YES, but this is our testing -# phase. Once we know that IPMASQ is working well, I recommend you run -# the rc.firewall-*-stronger rulesets which set the defaults to DROP but -# also include the critical additional rulesets to still let you connect to -# the IPMASQ server, etc. -# -echo " Clearing any existing rules and setting default policy.." -bash_exec "iptables -P INPUT ACCEPT" -bash_exec "iptables -F INPUT" -bash_exec "iptables -P OUTPUT ACCEPT" -bash_exec "iptables -F OUTPUT" -bash_exec "iptables -P FORWARD ACCEPT" -bash_exec "iptables -F FORWARD" -bash_exec "iptables -t nat -F" -bash_exec "iptables -t mangle -F" -bash_exec "iptables -t filter -F" -bash_exec "iptables -t raw -F" - -bash_exec "ip route flush cache" - - -echo " Enabling forwarding" -bash_exec "sysctl -w net.ipv4.ip_forward=1" -assert " `sysctl -n net.ipv4.ip_forward` -eq 1" $LINENO - -# Dynamic IP users: -# -# If you get your IP address dynamically from SLIP, PPP, or DHCP, -# enable this following option. This enables dynamic-address hacking -# which makes the life with Diald and similar programs much easier. -# -echo " Enabling DynamicAddr.." -bash_exec "sysctl -w net.ipv4.ip_dynaddr=1" -assert " `sysctl -n net.ipv4.ip_dynaddr` -eq 1" $LINENO - -bash_exec "sysctl -w net.ipv4.conf.all.log_martians=1" -assert " `sysctl -n net.ipv4.conf.all.log_martians` -eq 1" $LINENO - - -echo " Disabling reverse path filtering" -bash_exec "sysctl -w net.ipv4.conf.all.rp_filter=0" -bash_exec "sysctl -w net.ipv4.conf.all.rp_forward=0" -assert " `sysctl -n net.ipv4.conf.all.rp_filter` -eq 0" $LINENO -bash_exec "sysctl -w net.ipv4.conf.$EXTIF.rp_filter=0" -assert " `sysctl -n net.ipv4.conf.$EXTIF.rp_filter` -eq 0" $LINENO -bash_exec "sysctl -w net.ipv4.conf.$INTIF.rp_filter=0" -assert " `sysctl -n net.ipv4.conf.$INTIF.rp_filter` -eq 0" $LINENO -bash_exec "sysctl -w net.ipv4.conf.$EXTIF.rp_forward=0" -assert " `sysctl -n net.ipv4.conf.$EXTIF.rp_forward` -eq 0" $LINENO -bash_exec "sysctl -w net.ipv4.conf.$INTIF.rp_forward=0" -assert " `sysctl -n net.ipv4.conf.$INTIF.rp_forward` -eq 0" $LINENO - - -echo "0" > /proc/sys/net/ipv4/conf/all/proxy_arp -echo "1" > /proc/sys/net/ipv4/conf/$EXTIF/proxy_arp -echo "1" > /proc/sys/net/ipv4/conf/$INTIF/proxy_arp - -echo " FWD: Allow all connections OUT and only existing and related ones IN" -bash_exec "iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT" -bash_exec "iptables -A FORWARD -i $INTIF -o $EXTIF -m state --state NEW,ESTABLISHED,RELATED,INVALID -j ACCEPT" - -bash_exec "modprobe 8021q" - -for i in 5 6 7 8 9 10 11 12 13 14 15 -do - bash_exec "vconfig rem $INTIF.$i" - sync - bash_exec "vconfig add $INTIF $i" - sync - NET=$(( $i + 200 )) - CIDR='10.0.'$NET'.1/8' - bash_exec "ip -4 addr add $CIDR broadcast 192.174.$NET.255 dev $INTIF.$i" - bash_exec "iptables -A FORWARD -i $EXTIF -o $INTIF.$i -m state --state ESTABLISHED,RELATED -j ACCEPT" - bash_exec "iptables -A FORWARD -i $INTIF.$i -o $EXTIF -m state --state NEW,ESTABLISHED,RELATED,INVALID -j ACCEPT" - bash_exec "echo 1 > /proc/sys/net/ipv4/conf/$INTIF.$i/proxy_arp" - bash_exec "echo 0 > /proc/sys/net/ipv4/conf/$INTIF.$i/rp_forward" - bash_exec "echo 0 > /proc/sys/net/ipv4/conf/$INTIF.$i/rp_filter" - assert " `sysctl -n net.ipv4.conf.$INTIF.$i.proxy_arp` -eq 1" $LINENO - assert " `sysctl -n net.ipv4.conf.$INTIF.$i.rp_forward` -eq 0" $LINENO - assert " `sysctl -n net.ipv4.conf.$INTIF.$i.rp_filter` -eq 0" $LINENO -done -for i in 5 6 7 8 9 10 11 12 13 14 15 -do - bash_exec "iptables -t mangle -A PREROUTING -i $INTIF.$i -j CONNMARK --restore-mark" - bash_exec "iptables -t mangle -A PREROUTING -i $INTIF.$i -m mark --mark 0 -j MARK --set-mark $i" - bash_exec "iptables -t mangle -A PREROUTING -i $INTIF.$i -j CONNMARK --save-mark" - - - fgrep vlan$i /etc/iproute2/rt_tables - if [ $? -ne 0 ] - then - base=200 - num=$(( $i + $base )) - echo "$num vlan$i" >> /etc/iproute2/rt_tables - echo "Updating /etc/iproute2/rt_tables with table vlan$i id $num" - fi - ip rule del from all iif $EXTIF fwmark $i table vlan$i > /dev/null - bash_exec "ip rule add iif $EXTIF fwmark $i table vlan$i" - bash_exec "ip route add default dev $INTIF.$i table vlan$i" -done -#bash_exec "iptables -t mangle -A OUTPUT -m mark ! --mark 0 -j CONNMARK --save-mark" -#iptables -I INPUT -i $INTIF.5 -j LOG --log-ip-options --log-prefix "INPUT CHAIN:" -#iptables -I FORWARD -t mangle -i $INTIF.5 -j LOG --log-ip-options --log-prefix "FORWARD CHAIN(mangle):" -#iptables -I FORWARD -t filter -i $INTIF.5 -j LOG --log-ip-options --log-prefix "FORWARD CHAIN(filter):" -#iptables -I PREROUTING -t raw -i $INTIF.5 -j LOG --log-ip-options --log-prefix "PREROUTING (raw):" -#iptables -I PREROUTING -t mangle -i $INTIF.5 -j LOG --log-ip-options --log-prefix "PREROUTING (mangle):" -#iptables -I PREROUTING -t nat -i $INTIF.5 -j LOG --log-ip-options --log-prefix "PREROUTING (nat):" - - -echo " Enabling SNAT (MASQUERADE) functionality on $EXTIF" -bash_exec "iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE" - -echo -e "\nrc.firewall-iptables v$FWVER done.\n" -iptables -t mangle -nvL -iptables -t filter -nvL - diff --git a/openair-cn/SCRIPTS/start_spgw.bash b/openair-cn/SCRIPTS/start_spgw.bash deleted file mode 100755 index ff6747864825b811013b6105c16439cf5d54257c..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/start_spgw.bash +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/bash -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -# start S+P-GW without configuring anything in networking - -############################### -# Include misc functions -############################### -THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -source $THIS_SCRIPT_PATH/utils.bash - -echo "Starting S+P-GW on host $HOSTNAME" - -# Some file and executable checks -check_for_root_rights -check_epc_config -check_for_sgw_executable - -############################### -# Test reachability of MME -############################### -rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/epc_$HOSTNAME.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt - -# echo 'Testing reachability of S11 MME' -# ping -c 1 $MME_IP_ADDRESS_FOR_S11_MME || { echo "MME_IP_ADDRESS_FOR_S11_MME=$MME_IP_ADDRESS_FOR_S11_MME does not respond to ping" >&2 ; exit ; } - -############################### -# Test reachability of MME -############################### - -#IP_ROUTER=`python -c 'import socket; print socket.gethostbyname("router.eur")'` -#export MAC_ROUTER=`ip neigh show | grep $IP_ROUTER | cut -d ' ' -f5 | tr -d ':'` -#echo_success "ROUTER MAC ADDRESS= $MAC_ROUTER" - -export MAC_ROUTER="000000000000" - - -############################### -# CREATE SGI VLANs -############################### -bash_exec "modprobe 8021q" - -for i in 5 6 7 8 9 10 11 12 13 14 15 -do - # create vlan interface - bash_exec "vconfig rem $PGW_INTERFACE_NAME_FOR_SGI.$i" - sync - bash_exec "vconfig add $PGW_INTERFACE_NAME_FOR_SGI $i" - sync - # configure vlan interface - #CIDR=$NETWORK'.'$i'/24' - base=200 - NET=$(( $i + $base )) - CIDR='10.0.'$NET'.2/8' - bash_exec "ip -4 addr add $CIDR dev $PGW_INTERFACE_NAME_FOR_SGI.$i" - bash_exec "ip link set dev $PGW_INTERFACE_NAME_FOR_SGI.$i up" -done - -bash_exec "ip link set $PGW_INTERFACE_NAME_FOR_SGI promisc on" - -# custom for hades -ip r d default via 192.168.21.1 dev wlan0 -ip r d default via 192.168.21.1 dev wlan0 -pkill synergyc -synergyc 192.168.12.17 - -############################### -echo 'starting SGW' -############################### -gdb --args $OPENAIR3_DIR/OPENAIRMME/objs/OAI_SGW/oai_sgw -c $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/epc_$HOSTNAME.conf diff --git a/openair-cn/SCRIPTS/utils.bash b/openair-cn/SCRIPTS/utils.bash deleted file mode 100755 index 049daf9206260565b0c0fd79752065117070625b..0000000000000000000000000000000000000000 --- a/openair-cn/SCRIPTS/utils.bash +++ /dev/null @@ -1,681 +0,0 @@ -################################################################################ -# OpenAirInterface -# Copyright(c) 1999 - 2014 Eurecom -# -# OpenAirInterface is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# -# OpenAirInterface is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenAirInterface.The full GNU General Public License is -# included in this distribution in the file called "COPYING". If not, -# see <http://www.gnu.org/licenses/>. -# -# Contact Information -# OpenAirInterface Admin: openair_admin@eurecom.fr -# OpenAirInterface Tech : openair_tech@eurecom.fr -# OpenAirInterface Dev : openair4g-devel@eurecom.fr -# -# Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France. -# -################################################################################ -cidr2mask() { - local i mask="" - local full_octets=$(($1/8)) - local partial_octet=$(($1%8)) - - for ((i=0;i<4;i+=1)); do - if [ $i -lt $full_octets ]; then - mask+=255 - elif [ $i -eq $full_octets ]; then - mask+=$((256 - 2**(8-$partial_octet))) - else - mask+=0 - fi - test $i -lt 3 && mask+=. - done - - echo $mask -} - - -black='\E[30m' -red='\E[31m' -green='\E[32m' -yellow='\E[33m' -blue='\E[34m' -magenta='\E[35m' -cyan='\E[36m' -white='\E[37m' -reset_color='\E[00m' - -ROOT_UID=0 -E_NOTROOT=67 - -HOSTNAME=$(hostname -f) - -trim () -{ - echo "$1" | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}' -} - -trim2() -{ - local var=$@ - var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters - var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters - echo -n "$var" -} - -cecho() # Color-echo -# arg1 = message -# arg2 = color -{ - local default_msg="No Message." - message=${1:-$default_msg} - color=${2:-$green} - echo -e -n "$color$message$reset_color" - echo - return -} - -echo_error() { - local my_string="" - until [ -z "$1" ] - do - my_string="$my_string$1" - shift - done - cecho "$my_string" $red -} - -echo_warning() { - local my_string="" - until [ -z "$1" ] - do - my_string="$my_string$1" - shift - done - cecho "$my_string" $yellow -} - -echo_success() { - local my_string="" - until [ -z "$1" ] - do - my_string="$my_string$1" - shift - done - cecho "$my_string" $green -} - -bash_exec() { - output=$($1 2>&1) - result=$? - if [ $result -eq 0 ] - then - echo_success "$1" - else - echo_error "$1: $output" - fi -} - -extract() { - if [ -f $1 ] ; then - case $1 in - *.tar.bz2) tar xvjf $1 ;; - *.tar.gz) tar xvzf $1 ;; - *.bz2) bunzip2 $1 ;; - *.rar) unrar $1 ;; - *.gz) gunzip $1 ;; - *.tar) tar xvf $1 ;; - *.tbz2) tar xvjf $1 ;; - *.tgz) tar xvzf $1 ;; - *.zip) unzip $1 ;; - *.Z) uncompress $1 ;; - *.7z) 7z x $1 ;; - *) echo_error "'$1' cannot be extracted via >extract<" ; return 1;; - esac - else - echo_error "'$1' is not a valid file" - return 1 - fi - return 0 -} - -rotate_log_file () { - if [ -f $1 ]; then - TIMESTAMP=`date +%Y-%m-%d.%Hh_%Mm_%Ss` - NEWLOGFILE=$1.$TIMESTAMP - mv $1 $NEWLOGFILE - cat /dev/null > $1 - nohup gzip -f -9 $NEWLOGFILE & - fi -} - -set_openair() { - fullpath=`readlink -f $BASH_SOURCE` - [ -f "/.$fullpath" ] || fullpath=`readlink -f $PWD/$fullpath` - openair_path=${fullpath%/targets/*} - openair_path=${openair_path%/openair-cn/*} - openair_path=${openair_path%/openair[123]/*} - - export OPENAIR_DIR=$openair_path - export OPENAIR_HOME=$openair_path - export OPENAIR1_DIR=$openair_path/openair1 - export OPENAIR2_DIR=$openair_path/openair2 - export OPENAIR3_DIR=$openair_path/openair3 - export OPENAIRCN_DIR=$openair_path/openair-cn - export OPENAIR_TARGETS=$openair_path/targets -} - -wait_process_started () { - if [ -z "$1" ] - then - echo_error "WAITING FOR PROCESS START: NO PROCESS" - return 1 - fi - ps -C $1 > /dev/null 2>&1 - while [ $? -ne 0 ]; do - echo_warning "WAITING FOR $1 START" - sleep 2 - ps -C $1 > /dev/null 2>&1 - done - echo_success "PROCESS $1 STARTED" - return 0 -} - -is_process_started () { - if [ -z "$1" ] - then - echo_error "WAITING FOR PROCESS START: NO PROCESS" - return 1 - fi - ps -C $1 > /dev/null 2>&1 - if [ $? -ne 0 ] - then - echo_success "PROCESS $1 NOT STARTED" - return 1 - fi - echo_success "PROCESS $1 STARTED" - return 0 -} - -assert() { - # If condition false - # exit from script with error message - E_PARAM_ERR=98 - E_PARAM_FAILED=99 - - if [ -z "$2" ] # Not enought parameters passed. - then - return $E_PARAM_ERR - fi - - lineno=$2 - if [ ! $1 ] - then - echo "Assertion failed: \"$1\"" - echo "File \"$0\", line $lineno" - exit $E_ASSERT_FAILED - fi -} - -test_command_install_lib() { - # usage: test_command_install_package searched_binary package_to_be_installed_if_binary_not_found optional_option_to_apt_get_install - if [ ! -f $1 ]; then - echo_warning "$2 seems to be not installed, trying..." - apt-get install $2 -y - if [ ! -f $1 ]; then - echo_error "$2 unavailable" - exit 1 - fi - fi - echo_success "$1 available" -} - - -test_command_install_package() { - # usage: test_command_install_package searched_binary package_to_be_installed_if_binary_not_found optional_option_to_apt_get_install - if [ $# -eq 2 ]; then - command -v $1 >/dev/null 2>&1 || { echo_warning "Program $1 is not installed. Trying installing it." >&2; apt-get install $2 -y; command -v $1 >/dev/null 2>&1 || { echo_error "Program $1 is not installed. Aborting." >&2; exit 1; };} - else - if [ $# -eq 3 ]; then - command -v $1 >/dev/null 2>&1 || { echo_warning "Program $1 is not installed. Trying installing it (apt-get install $3 $2)." >&2; apt-get install $3 $2 -y; command -v $1 >/dev/null 2>&1 || { echo_error "Program $1 is not installed. Aborting." >&2; exit 1; };} - else - echo_success "test_command_install_package: BAD PARAMETER" - exit 1 - fi - fi - echo_success "$1 available" -} - -test_command_install_script() { - # usage: test_command_install_script searched_binary script_to_be_invoked_if_binary_not_found - command -v $1 >/dev/null 2>&1 || { echo_warning "Program $1 is not installed. Trying installing it." >&2; bash $2; command -v $1 >/dev/null 2>&1 || { echo_error "Program $1 is not installed. Aborting." >&2; exit 1; };} - echo_success "$1 available" -} - -start_openswitch_daemon() { - rmmod -s bridge - if [[ -e "/lib/modules/`uname -r`/extra/openvswitch.ko" ]] ; then - bash_exec "insmod /lib/modules/`uname -r`/extra/openvswitch.ko" > /dev/null 2>&1 - else - echo_error "/lib/modules/`uname -r`/extra/openvswitch.ko not found, exiting" - exit -1 - fi - is_process_started "ovsdb-server" - if [ $? -ne 0 ] - then - ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --pidfile --detach - wait_process_started "ovsdb-server" - fi - # To be done after installation - # ovs-vsctl --no-wait init - is_process_started "ovs-vswitchd" - if [ $? -ne 0 ] - then - ovs-vswitchd --pidfile --detach - wait_process_started "ovs-vswitchd" - fi -} - -stop_openswitch_daemon() { - pkill ovs-vswitchd - pkill ovsdb-server - sync - if ! is_process_started ovs-vswitchd ; then - pkill -9 ovs-vswitchd - fi - if ! is_process_started ovsdb-server ; then - pkill -9 ovsdb-server - fi - rmmod -f openvswitch -} - -check_epc_config() { - if [ ! -f $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/epc_$HOSTNAME.conf ] - then - echo "Cannot find file $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/epc_$HOSTNAME.conf" - echo "Please make sure to create one that fits your use (you can use mme_default.conf file as template)" - exit -1 - fi -} - -check_enb_config() { - if [ ! -f $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/enb_$HOSTNAME.conf ] - then - echo "Cannot find file $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/enb_$HOSTNAME.conf" - echo "Please make sure to create one that fits your use (you can use mme_default.conf file as template)" - exit -1 - fi -} - -check_for_epc_executable() { - if [ ! -f $OPENAIR3_DIR/OPENAIRMME/objs/OAI_EPC/oai_epc ] - then - echo "Cannot find oai_epc executable object in directory $OPENAIR3_DIR/OPENAIRMME/objs/OAI_EPC/" - echo "Please make sure you have compiled OAI EPC with --enable-standalone-epc option" - exit -1 - fi -} - -check_for_sgw_executable() { - if [ ! -f $OPENAIR3_DIR/OPENAIRMME/objs/OAI_SGW/oai_sgw ] - then - echo "Cannot find oai_sgw executable object in directory $OPENAIR3_DIR/OPENAIRMME/objs/OAI_SGW/" - echo "Please make sure you have compiled OAI EPC without --enable-standalone-epc option" - exit -1 - fi -} - -check_for_mme_executable() { - if [ ! -f $OPENAIR3_DIR/OPENAIRMME/objs/OAISIM_MME/oaisim_mme ] - then - echo "Cannot find oai_sgw executable object in directory $OPENAIR3_DIR/OPENAIRMME/objs/OAISIM_MME/" - echo "Please make sure you have compiled OAI EPC without --enable-standalone-epc option" - exit -1 - fi -} - -check_for_root_rights() { - if [[ $EUID -ne 0 ]]; then - echo "This script must be run as root" 1>&2 - exit -1 - fi -} - -clean_openvswitch_network(){ - ################################################## - # del bridge between eNB and MME/SPGW - ################################################## - bash_exec "tunctl -d $ENB_INTERFACE_NAME_FOR_S1_MME" - bash_exec "tunctl -d $ENB_INTERFACE_NAME_FOR_S1U" - bash_exec "tunctl -d $MME_INTERFACE_NAME_FOR_S1_MME" - bash_exec "tunctl -d $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP" - bash_exec "tunctl -d $MME_INTERFACE_NAME_FOR_S11_MME" - bash_exec "tunctl -d $SGW_INTERFACE_NAME_FOR_S11" - bash_exec "ovs-vsctl del-br $BRIDGE" - - stop_openswitch_daemon -} - -build_openvswitch_network() { - start_openswitch_daemon - # REMINDER: - # hss.eur - # | - # +-----------+ +------+ +-----------+ v +----------+ - # | eNB +------+ | ovs | VLAN 1+------+ MME +----+ +---+ HSS | - # | |cpenb0+------------------+cpmme0| | +------+ | | - # | +------+ |bridge| +------+ +----+ +---+ | - # | |upenb0+-------+ | | | +----------+ - # | +------+ | | | +-+-------+-+ - # | | | | +----------------| s11mme|---+ - # | | | | +---+---+ | - # | | | | (optional)| | - # +-----------+ | | +---+---+ | - # +---|------------------ | s11sgw|---+ router.eur - # | +-+-------+-+ | +--------------+ - # | | S+P-GW | v | ROUTER | - # | VLAN2 +------+ +-------+ +----+ +----+ - # +----------+upsgw0| |sgi +-...-+ | | +---...Internet - # +------+ +-------+ +----+ +----+ - # | | 11 VLANS | | - # +-----------+ ids=[5..15] +--------------+ - # - ################################################## - # build bridge between eNB and MME/SPGW - ################################################## - bash_exec "tunctl -t $ENB_INTERFACE_NAME_FOR_S1_MME" - bash_exec "tunctl -t $ENB_INTERFACE_NAME_FOR_S1U" - bash_exec "tunctl -t $MME_INTERFACE_NAME_FOR_S1_MME" - bash_exec "tunctl -t $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP" - bash_exec "tunctl -t $MME_INTERFACE_NAME_FOR_S11_MME" - bash_exec "tunctl -t $SGW_INTERFACE_NAME_FOR_S11" - - bash_exec "ovs-vsctl add-br $BRIDGE" - bash_exec "ovs-vsctl add-port $BRIDGE $ENB_INTERFACE_NAME_FOR_S1_MME tag=1" - bash_exec "ovs-vsctl add-port $BRIDGE $MME_INTERFACE_NAME_FOR_S1_MME tag=1" - bash_exec "ovs-vsctl add-port $BRIDGE $ENB_INTERFACE_NAME_FOR_S1U tag=2" - bash_exec "ovs-vsctl add-port $BRIDGE $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP tag=2" - bash_exec "ovs-vsctl add-port $BRIDGE $MME_INTERFACE_NAME_FOR_S11_MME tag=3" - bash_exec "ovs-vsctl add-port $BRIDGE $SGW_INTERFACE_NAME_FOR_S11 tag=3" - - bash_exec "ifconfig $MME_INTERFACE_NAME_FOR_S1_MME promisc up" - bash_exec "ifconfig $MME_INTERFACE_NAME_FOR_S1_MME $MME_IP_ADDRESS_FOR_S1_MME netmask `cidr2mask $MME_IP_NETMASK_FOR_S1_MME` promisc up" - bash_exec "ifconfig $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP promisc up" - bash_exec "ifconfig $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP $SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP netmask `cidr2mask $SGW_IP_NETMASK_FOR_S1U_S12_S4_UP` promisc up" - - bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1_MME promisc up" - bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1_MME $ENB_IP_ADDRESS_FOR_S1_MME netmask `cidr2mask $ENB_IP_NETMASK_FOR_S1_MME` promisc up" - bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1U promisc up" - bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1U $ENB_IP_ADDRESS_FOR_S1U netmask `cidr2mask $ENB_IP_NETMASK_FOR_S1U` promisc up" - - bash_exec "ifconfig $MME_INTERFACE_NAME_FOR_S11_MME promisc up" - bash_exec "ifconfig $MME_INTERFACE_NAME_FOR_S11_MME $MME_IP_ADDRESS_FOR_S11_MME netmask `cidr2mask $MME_IP_NETMASK_FOR_S11_MME` promisc up" - bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1U promisc up" - bash_exec "ifconfig $SGW_INTERFACE_NAME_FOR_S11 $SGW_IP_ADDRESS_FOR_S11 netmask `cidr2mask $SGW_IP_NETMASK_FOR_S11` promisc up" -} - -test_openvswitch_network() { - - ## TEST NETWORK BETWEEN ENB-MME-SP-GW - iperf --bind $MME_IP_ADDRESS_FOR_S1_MME -u -s 2>&1 > /dev/null & - iperf --bind $ENB_IP_ADDRESS_FOR_S1_MME -u --num 1K -c $MME_IP_ADDRESS_FOR_S1_MME 2>&1 | grep -i WARNING > /dev/null - if [ $? -eq 0 ]; then - echo_error "NETWORK ERROR CONFIGURATION (openvswitch) between ENB and MME S1" - pkill iperf 2>&1 > /dev/null - exit 1 - else - echo_success "NETWORK TEST SUCCESS (openvswitch) between ENB and MME S1" - - fi - pkill iperf 2>&1 > /dev/null - - iperf --bind $SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP -u -s 2>&1 > /dev/null & - iperf --bind $ENB_IP_ADDRESS_FOR_S1U -u --num 1K -c $SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP 2>&1 | grep -i WARNING > /dev/null - if [ $? -eq 0 ]; then - echo_error "NETWORK ERROR CONFIGURATION (openvswitch) between ENB and S-GW S1-U" - pkill iperf 2>&1 > /dev/null - exit 1 - else - echo_success "NETWORK TEST SUCCESS (openvswitch) between ENB and S-GW S1-U" - fi - pkill iperf 2>&1 > /dev/null - - iperf --bind $SGW_IP_ADDRESS_FOR_S11 -u -s 2>&1 > /dev/null & - iperf --bind $MME_IP_ADDRESS_FOR_S11_MME -u --num 1K -c $SGW_IP_ADDRESS_FOR_S11 2>&1 | grep -i WARNING > /dev/null - if [ $? -eq 0 ]; then - echo_error "NETWORK ERROR CONFIGURATION (openvswitch) between MME and S-GW S11" - pkill iperf 2>&1 > /dev/null - exit 1 - else - echo_success "NETWORK TEST SUCCESS (openvswitch) between MME and S-GW S11" - fi - pkill iperf 2>&1 > /dev/null - return 0 -} - -build_epc_network() { - - cat $OPENAIRCN_DIR/$OBJ_DIR/Makefile | grep CFLAGS\ \=\ | grep DENABLE_USE_NETFILTER_FOR_SGI - if [ $? -ne 0 ] - then - export ENABLE_USE_NETFILTER_FOR_SGI=0 - else - export ENABLE_USE_NETFILTER_FOR_SGI=1 - fi - - cat $OPENAIRCN_DIR/$OBJ_DIR/Makefile | grep CFLAGS\ \=\ | grep DENABLE_USE_RAW_FOR_SGI - if [ $? -ne 0 ] - then - export ENABLE_USE_RAW_FOR_SGI=0 - else - export ENABLE_USE_RAW_FOR_SGI=1 - fi - - build_openvswitch_network - - ping -c 1 router.eur > /dev/null || { echo "router.eur does not respond to ping" >&2 ; exit ; } - IP_ROUTER=`python -c 'import socket; print socket.gethostbyname("router.eur")'` - export MAC_ROUTER=`ip neigh show | grep $IP_ROUTER | cut -d ' ' -f5 | tr -d ':'` - echo_success "ROUTER MAC ADDRESS= $MAC_ROUTER" - - if [ $ENABLE_USE_NETFILTER_FOR_SGI -eq 1 ]; then - - bash_exec "modprobe nf_conntrack" - bash_exec "modprobe nf_conntrack_ftp" - - ###################################################### - # PREROUTING - ###################################################### - # We restore the mark following the CONNMARK mark. In fact, it does a simple MARK=CONNMARK - # where MARK is the standard mark (usable by tc) - # In French: Cette option de cible restaure le paquet marqué dans la marque de connexion - # comme défini par CONNMARK. Un masque peut aussi être défini par l'option --mask. - # Si une option mask est placée, seules les options masquées seront placées. - # Notez que cette option de cible n'est valide que dans la table mangle. - bash_exec "$IPTABLES -t mangle -A PREROUTING -j CONNMARK --restore-mark" - - # TEST bash_exec "$IPTABLES -t mangle -A PREROUTING -m mark --mark 0 -i $PGW_INTERFACE_NAME_FOR_SGI -j MARK --set-mark 15" - # We set the mark of the initial packet as value of the conntrack mark for all the packets of the connection. - # This mark will be restore for the other packets by the first rule of POSTROUTING --restore-mark). - bash_exec "$IPTABLES -t mangle -A PREROUTING -j CONNMARK --save-mark" - - - ###################################################### - # POSTROUTING - ###################################################### - - # MARK=CONNMARK - bash_exec "iptables -A POSTROUTING -t mangle -o tap0 -j CONNMARK --restore-mark" - # If we’ve got a mark no need to get further[ - bash_exec "iptables -A POSTROUTING -t mangle -o tap0 -m mark ! --mark 0 -j ACCEPT" - - #bash_exec "iptables -A POSTROUTING -p tcp --dport 21 -t mangle -j MARK --set-mark 1" - #bash_exec "iptables -A POSTROUTING -p tcp --dport 80 -t mangle -j MARK --set-mark 2" - - # We set the mark of the initial packet as value of the conntrack mark for all the packets - # of the connection. This mark will be restore for the other packets by the first rule - # of POSTROUTING (–restore-mark). - bash_exec "iptables -A POSTROUTING -t mangle -j CONNMARK --save-mark" - - bash_exec "iptables -A PREROUTING -t mangle -j CONNMARK --restore-mark" - - # We restore the mark following the CONNMARK mark. - # In fact, it does a simple MARK=CONNMARK where MARK is the standard mark (usable by tc) - #bash_exec "$IPTABLES -A OUTPUT -t mangle -m mark ! --mark 0 -j CONNMARK --restore-mark" - - # If we’ve got a mark no need to get further[1] - #TEST bash_exec "$IPTABLES -A OUTPUT -t mangle -p icmp -j MARK --set-mark 14" - #bash_exec "$IPTABLES -A OUTPUT -t mangle -m mark ! --mark 0 -j ACCEPT" - - - # We set the mark of the initial packet as value of the conntrack mark for all the packets of the connection. - # This mark will be restore for the other packets by the first rule of OUTPUT (–restore-mark). - #bash_exec "$IPTABLES -A OUTPUT -t mangle -j CONNMARK --save-mark" - - - - - ###################################################### - # NETFILTER QUEUE - ###################################################### - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 5 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 6 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 7 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 8 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 9 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 10 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 11 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 12 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 13 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 14 -j NFQUEUE --queue-num 1" - bash_exec "$IPTABLES -t mangle -A PREROUTING -i $PGW_INTERFACE_NAME_FOR_SGI -m connmark --mark 15 -j NFQUEUE --queue-num 1" - - #echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables #To disable Iptables in the bridge. - #Raw table: Some years ago appeared a new tables in Iptables. - #This table can be used to avoid packets (connection really) to enter the NAT table: - # iptables -t raw -I PREROUTING -i BRIDGE -s x.x.x.x -j NOTRACK. - - - - - #bash_exec "$IPTABLES -t nat -A POSTROUTING -o $PGW_INTERFACE_NAME_FOR_SGI -j SNAT --to-source $PGW_IP_ADDR_FOR_SGI" - else - # # get ipv4 address from PGW_INTERFACE_NAME_FOR_SGI - #IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | awk '/inet addr/ {split ($2,A,":"); print A[2]}' | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}'` - - #NETWORK=`echo $IP_ADDR | cut -d . -f 1,2,3` - - bash_exec "modprobe 8021q" - - for i in 5 6 7 8 9 10 11 12 13 14 15 - do - # create vlan interface - bash_exec "vconfig rem $PGW_INTERFACE_NAME_FOR_SGI.$i" > /dev/null 2>&1 - sync - bash_exec "vconfig add $PGW_INTERFACE_NAME_FOR_SGI $i" - sync - # configure vlan interface - #CIDR=$NETWORK'.'$i'/24' - base=200 - NET=$(( $i + $base )) - CIDR='10.0.'$NET'.2/8' - bash_exec "ip -4 addr add $CIDR dev $PGW_INTERFACE_NAME_FOR_SGI.$i" - done - fi - - - bash_exec "ip link set $PGW_INTERFACE_NAME_FOR_SGI promisc on" - - ################################################## - # build bridge between SPGW and Internet - ################################################## - - # # get ipv4 address from PGW_INTERFACE_NAME_FOR_SGI - # IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | awk '/inet addr/ {split ($2,A,":"); print A[2]}' | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}'` - # if [ $IP_ADDR ]; then - # bash_exec "ip -4 addr del $IP_ADDR dev $PGW_INTERFACE_NAME_FOR_SGI" - # fi - # - # # remove all ipv6 address from PGW_INTERFACE_NAME_FOR_SGI - # IP_ADDR="not empty" - # until [ "$IP_ADDR"x == "x" ]; do - # IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | grep 'inet6' | head -1 | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}' | cut -d ' ' -f3` - # if [ $IP_ADDR ]; then - # bash_exec "ip -6 addr del $IP_ADDR dev $PGW_INTERFACE_NAME_FOR_SGI" - # fi - # done -} - -test_epc_network() { - # Get MAC address of router.eur - ping -c 1 hss.eur > /dev/null || { echo "hss.eur does not respond to ping" >&2 ; exit ; } - ping -c 1 router.eur > /dev/null || { echo "router.eur does not respond to ping" >&2 ; exit ; } - test_openvswitch_network -} - -clean_epc_network() { - bash_exec "modprobe tun" - bash_exec "modprobe ip_tables" - bash_exec "modprobe iptable_nat" - bash_exec "modprobe x_tables" - - bash_exec "$IPTABLES -P INPUT ACCEPT" - bash_exec "$IPTABLES -F INPUT" - bash_exec "$IPTABLES -P OUTPUT ACCEPT" - bash_exec "$IPTABLES -F OUTPUT" - bash_exec "$IPTABLES -P FORWARD ACCEPT" - bash_exec "$IPTABLES -F FORWARD" - bash_exec "$IPTABLES -t raw -F" - bash_exec "$IPTABLES -t nat -F" - bash_exec "$IPTABLES -t mangle -F" - bash_exec "$IPTABLES -t filter -F" - - bash_exec "ip route flush cache" - - echo " Disabling forwarding" - bash_exec "sysctl -w net.ipv4.ip_forward=0" - assert " `sysctl -n net.ipv4.ip_forward` -eq 0" $LINENO - - echo " Enabling DynamicAddr.." - bash_exec "sysctl -w net.ipv4.ip_dynaddr=1" - assert " `sysctl -n net.ipv4.ip_dynaddr` -eq 1" $LINENO - - bash_exec "sysctl -w net.ipv4.conf.all.log_martians=1" - assert " `sysctl -n net.ipv4.conf.all.log_martians` -eq 1" $LINENO - - - echo " Disabling reverse path filtering" - bash_exec "sysctl -w net.ipv4.conf.all.rp_filter=0" - assert " `sysctl -n net.ipv4.conf.all.rp_filter` -eq 0" $LINENO - clean_openvswitch_network -} - -########################################################### -IPTABLES=/sbin/iptables -THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) -declare -x OPENAIR_DIR="" -declare -x OPENAIR1_DIR="" -declare -x OPENAIR2_DIR="" -declare -x OPENAIR3_DIR="" -declare -x OPENAIRCN_DIR="" -declare -x OPENAIR_TARGETS="" -########################################################### - -set_openair -cecho "OPENAIR_DIR = $OPENAIR_DIR" $green -cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green -cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green -cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green -cecho "OPENAIRCN_DIR = $OPENAIRCN_DIR" $green -cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green