diff --git a/openair-cn/SCRIPTS/install_openvswitch1.9.0.bash b/openair-cn/SCRIPTS/install_openvswitch1.9.0.bash index cf9fb8bf2279b2d93700278a5e695a40c98b31e3..cb32561d8d5a407be73d1cd53a11b5d925dd4744 100755 --- a/openair-cn/SCRIPTS/install_openvswitch1.9.0.bash +++ b/openair-cn/SCRIPTS/install_openvswitch1.9.0.bash @@ -1,5 +1,5 @@ #!/bin/bash -# Tested on ubuntu 12.04 with updates on 05 april 2013 +# Tested on ubuntu 12.04 with updates on 05 april 2013, 07 november 2013 # Make sure only root can run our script if [[ $EUID -ne 0 ]]; then diff --git a/openair-cn/SCRIPTS/start_lte-epc-ovs.bash b/openair-cn/SCRIPTS/start_lte-epc-ovs.bash index cd069b060ff7ea368fee28116de486fd758926ef..e4e6e4d8603d33a3c3f56ff94e34a958c310dc48 100755 --- a/openair-cn/SCRIPTS/start_lte-epc-ovs.bash +++ b/openair-cn/SCRIPTS/start_lte-epc-ovs.bash @@ -1,7 +1,8 @@ #!/bin/bash # start MME+S/P-GW with openvswitch setting - hss.eur +# hss.eur +# | # +-----------+ +------+ +-----------+ v +----------+ # | eNB +------+ | ovs | VLAN 1+------+ MME +----+ +---+ HSS | # | |cpenb0+------------------+cpmme0| | +------+ | | @@ -17,28 +18,89 @@ # | | 11 VLANS | | # +-----------+ ids=[5..15] +--------------+ # - - 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="" +source $THIS_SCRIPT_PATH/utils.bash ########################################################### -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 +test_command_install_package "gccxml" "gccxml" "--force-yes" +test_command_install_package "vconfig" "vlan" +test_command_install_package "iptables" "iptables" +test_command_install_package "ip" "iproute" +test_command_install_script "ovs-vsctl" "$OPENAIRCN_DIR/SCRIPTS/install_openvswitch1.9.0.bash" +test_command_install_script "tunctl" "uml-utilities" +if [ ! -d /usr/local/etc/freeDiameter ] + then + cd $OPENAIRCN_DIR/S6A/freediameter && ./install_freediameter.sh + else + echo_success "freediameter is installed" +fi + +test_command_install_script "asn1c" "$OPENAIRCN_DIR/SCRIPTS/install_asn1c_0.9.24.modified.bash" + +# One mor check about version of asn1c +ASN1C_COMPILER_REQUIRED_VERSION_MESSAGE="ASN.1 Compiler, v0.9.24" +ASN1C_COMPILER_VERSION_MESSAGE=`asn1c -h 2>&1 | grep -i ASN\.1\ Compiler` +##ASN1C_COMPILER_VERSION_MESSAGE=`trim $ASN1C_COMPILER_VERSION_MESSAGE` +if [ "$ASN1C_COMPILER_VERSION_MESSAGE" != "$ASN1C_COMPILER_REQUIRED_VERSION_MESSAGE" ] +then + diff <(echo -n "$ASN1C_COMPILER_VERSION_MESSAGE") <(echo -n "$ASN1C_COMPILER_REQUIRED_VERSION_MESSAGE") + echo_error "Version of asn1c is not the required one, do you want to install the required one (overwrite installation) ? (Y/n)" + echo_error "$ASN1C_COMPILER_VERSION_MESSAGE" + while read -r -n 1 -s answer; do + if [[ $answer = [YyNn] ]]; then + [[ $answer = [Yy] ]] && $OPENAIRCN_DIR/SCRIPTS/install_asn1c_0.9.24.modified.bash + [[ $answer = [Nn] ]] && echo_error "Version of asn1c is not the required one, exiting." && exit 1 + break + fi + done +fi + + +IPTABLES=`which iptables` + +cd $OPENAIRCN_DIR +################################## +# Get or set OBJ DIR and compile # +################################## +# TEST IF EXIST +OBJ_DIR=`find . -maxdepth 1 -type d -iname obj*` +if [ -n "$OBJ_DIR" ] +then + OBJ_DIR=`basename $OBJ_DIR` + if [ ! -f $OBJ_DIR/Makefile ] + then + cd ./$OBJ_DIR + echo_success "Invoking configure" + rm -f Makefile + ../configure --enable-standalone-epc --disable-nas LDFLAGS=-L/usr/local/lib + else + cd ./$OBJ_DIR + fi +else + OBJ_DIR="OBJS" + bash_exec "mkdir -m 777 ./$OBJ_DIR" + echo_success "Created $OBJ_DIR directory" + echo_success "Invoking autogen" + bash_exec "./autogen.sh" + cd ./$OBJ_DIR + echo_success "Invoking configure" + ../configure --enable-standalone-epc --disable-nas LDFLAGS=-L/usr/local/lib +fi +if [ -f Makefile ] +then + echo_success "Compiling..." + bash_exec "make" +else + echo_error "Configure failed, exiting" + exit 1 +fi +cd $OPENAIRCN_DIR + -cat $OPENAIR3_DIR/OPENAIRMME/objs/Makefile | grep CFLAGS\ \=\ | grep DENABLE_USE_NETFILTER_FOR_SGI +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 @@ -46,7 +108,7 @@ else export ENABLE_USE_NETFILTER_FOR_SGI=1 fi -cat $OPENAIR3_DIR/OPENAIRMME/objs/Makefile | grep CFLAGS\ \=\ | grep DENABLE_USE_RAW_FOR_SGI +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 @@ -54,16 +116,34 @@ else export ENABLE_USE_RAW_FOR_SGI=1 fi -pkill oaisim_mme - +pkill oai_epc +####################################################### +# SOURCE $OPENAIRCN_DIR/UTILS/CONF/epc_$HOSTNAME.conf +####################################################### rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/epc_$HOSTNAME.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt +if [ -f $OPENAIRCN_DIR/UTILS/CONF/epc_$HOSTNAME.conf ] +then + cat $OPENAIRCN_DIR/UTILS/CONF/epc_$HOSTNAME.conf | tr -d " " > /tmp/source.txt + source /tmp/source.txt +else + echo_error "Missing config file $OPENAIRCN_DIR/UTILS/CONF/epc_$HOSTNAME.conf (Please write your own config file), exiting" + exit 1 +fi +####################################################### +# SOURCE $OPENAIRCN_DIR/UTILS/CONF/epc_$HOSTNAME.conf +####################################################### rm -f /tmp/source.txt -cat $OPENAIR3_DIR/OPENAIRMME/UTILS/CONF/enb_$HOSTNAME.conf | tr -d " " > /tmp/source.txt -source /tmp/source.txt +if [ -f $OPENAIRCN_DIR/UTILS/CONF/enb_$HOSTNAME.conf ] +then + cat $OPENAIRCN_DIR/UTILS/CONF/enb_$HOSTNAME.conf | tr -d " " > /tmp/source.txt + source /tmp/source.txt +else + echo_error "Missing config file $OPENAIRCN_DIR/UTILS/CONF/enb_$HOSTNAME.conf (Please write your own config file), exiting" + exit 1 +fi + 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 ; } @@ -105,6 +185,8 @@ 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 +echo_warning "LG FORCED EXIT" +exit start_openswitch_daemon # REMINDER: diff --git a/openair-cn/SCRIPTS/utils.bash b/openair-cn/SCRIPTS/utils.bash index b84bc64d87e2ba3512171e80725c4fbc311aa735..536a04dd3db1987e15e34e0cac2562c3636ad1ae 100755 --- a/openair-cn/SCRIPTS/utils.bash +++ b/openair-cn/SCRIPTS/utils.bash @@ -38,6 +38,13 @@ 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 @@ -92,6 +99,30 @@ bash_exec() { 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 +} + + set_openair() { path=`pwd` declare -i length_path @@ -113,6 +144,7 @@ set_openair() { 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 return 0 fi @@ -172,9 +204,24 @@ assert() { fi } -test_command_install() { - # usage: test_command_install searched_binary package_to_be_installed_if_binary_not_found - 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; };} +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" } @@ -261,6 +308,7 @@ declare -x OPENAIR_DIR="" declare -x OPENAIR1_DIR="" declare -x OPENAIR2_DIR="" declare -x OPENAIR3_DIR="" +declare -x OPENAIRCN_DIR="" declare -x OPENAIR_TARGETS="" ########################################################### @@ -269,4 +317,5 @@ 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