diff --git a/cmake_targets/tools/build_epc b/cmake_targets/tools/build_epc new file mode 100755 index 0000000000000000000000000000000000000000..45b6bbf0e3e78ff04556125ed394e7a0561e2cb9 --- /dev/null +++ b/cmake_targets/tools/build_epc @@ -0,0 +1,304 @@ +#!/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) anylater 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, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE +# +################################################################################ +# file build_epc +# brief +# author Lionel Gauthier +# company Eurecom +# email: lionel.gauthier@eurecom.fr +# +################################ +# include helper functions +################################ +THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) +source $THIS_SCRIPT_PATH/build_helper + +function help() +{ + echo_error " " + echo_error "Usage: build_epc [OPTION]..." + echo_error "Build the EPC executable." + echo_error " " + echo_error "Options:" + echo_error "Mandatory arguments to long options are mandatory for short options too." + echo_error " -c, --clean Clean the build generated files (build from scratch)" + echo_error " -d, --debug Compile with debug informations." + echo_error " -h, --help Print this help." + echo_error " -H, --hss hostname HSS hostname (with FQDN), default is this host (hostname)." + echo_error " -i, --check-installed-software Check installed software packages necessary to build and run EPC (support Ubuntu 14.04)." + echo_error " -r, --realm realm Realm of the MME (if not specified, is extracted from this host FQDN)." + echo_error " -s, --transport-sctp-only Diameter use SCTP only (TCP disabled)." + echo_error " -S, --s6a-server MME act as a server on s6a interface (useful when HSS and MME/EPC run on the same host)." + echo_error " -t, --transport-tcp-only Diameter use TCP only (SCTP disabled)." + echo_error " -T, --transport-prefer-tcp Diameter prefer TCP." + echo_error " -v, --verbose Build process verbose." +} + + + +function main() +{ + local -i clean=0 + local -i verbose=0 + local -i s6a_server=0 + local cmake_args=" " + local make_args="-j $NUM_CPU" + local realm="" + local hss_fqdn="" + local hss_hostname="" + local hss_ip="" + local REL="Rel10" + + + until [ -z "$1" ] + do + case "$1" in + -c | --clean) + clean=1 + echo "Clean the build generated files (build from scratch)" + shift; + ;; + -d | --debug) + cmake_args="$cmake_args -DDEBUG=1" + echo "Compile with debug informations" + shift; + ;; + -h | --help) + help + shift; + exit 0 + ;; + -H | --hss) + hss_fqdn=$2 + cmake_args="$cmake_args -DHSS_FQDN=$hss_fqdn" + shift 2; + ;; + -i | --check-installed-software) + echo "Check installed software packages necessary to build and run EPC (support Ubuntu 14.04):" + check_install_epc_software + exit 0 + ;; + -r | --realm) + echo "Realm: $2" + realm=$2 + cmake_args="$cmake_args -DREALM=$realm" + shift 2; + ;; + -s | --transport-sctp-only) + echo "Diameter use SCTP (TCP disabled), this is the default option." + cmake_args="$cmake_args -DTRANSPORT_option=No_TCP" + shift; + ;; + -S | --s6a-server) + echo "MME act as a server on s6a" + s6a_server=1 + cmake_args="$cmake_args -DMME_S6A_IS_SERVER=1" + shift 1; + ;; + -t | --transport-tcp-only) + echo "Diameter use TCP (SCTP disabled)." + cmake_args="$cmake_args -DTRANSPORT_option=No_SCTP" + shift; + ;; + -T | --transport-prefer-tcp) + echo "Diameter prefer TCP (TCP, SCTP enabled)." + cmake_args="$cmake_args -DTRANSPORT_PREFER_TCP_option=Prefer_TCP" + shift; + ;; + -v | --verbose) + echo "Make build process verbose" + cmake_args="$cmake_args -DCMAKE_VERBOSE_MAKEFILE=ON" + make_args="VERBOSE=1 $make_args" + verbose=1 + shift; + ;; + *) + echo "Unknown option $1" + help + exit 1 + ;; + esac + done + + # extra arguments processing + if [[ z$hss_fqdn = z ]]; then + hss_fqdn=`hostname --fqdn` + cmake_args="$cmake_args -DHSS_FQDN=$hss_fqdn" + if [[ z$realm = z ]]; then + realm=$hss_fqdn + realm=${realm#*.} + cmake_args="$cmake_args -DREALM=$realm" + fi + else + if [[ z$realm = z ]]; then + realm=${hss_fqdn#*.} + cmake_args="$cmake_args -DREALM=$realm" + fi + fi + hss_hostname=${hss_fqdn%%.*} + cmake_args="$cmake_args -DHSS_HOSTNAME=$hss_hostname" + + hss_ip=`resolveip --silent $hss_hostname` + if [[ z$hss_ip = z ]]; then + hss_ip=`resolveip --silent $hss_fqdn` + fi + if [[ z$hss_ip = z ]]; then + echo_abort "Unable to get HSS IP addr of $hss_fqdn" + fi + cmake_args="$cmake_args -DHSS_IP=$hss_ip" + + set_openair_env + if [[ $verbose -eq 1 ]]; then + cecho "OPENAIR_DIR = $OPENAIR_DIR" $green + fi + + # for conf files copy in this bash script + if [ -d /usr/lib/freeDiameter ]; then + export FREEDIAMETER_PREFIX=/usr + else + if [ -d /usr/local/lib/freeDiameter ]; then + export FREEDIAMETER_PREFIX=/usr/local + else + echo_fatal "FreeDiameter prefix not found, install freeDiameter if EPC, HSS" + fi + fi + + + + local dbin=$OPENAIR_DIR/targets/bin + local dlog=$OPENAIR_DIR/cmake_targets/log + local dconf=$OPENAIR_DIR/targets/bin + + mkdir -m 777 -p $dbin $dlog + + ############################################################################## + # Compile userspace executable + ############################################################################## + rm -f $OPENAIR_DIR/targets/bin/mme_gw + cd $OPENAIR_DIR/cmake_targets/epc_build_oai + if [ $clean -ne 0 ]; then + if [[ $verbose -eq 1 ]]; then + echo "Cleaning EPC" + fi + rm -Rf build 2>&1 + rm -Rf $OPENAIR_TARGETS/CMAKE/EPC/MME_GW/build 2>&1 + rm -f /usr/local/etc/freeDiameter/mme* 2>&1 + rm -f /usr/local/etc/freeDiameter/epc* 2>&1 + rm -f /usr/etc/freeDiameter/mme* 2>&1 + rm -f /usr/etc/freeDiameter/epc* 2>&1 + rm -f $OPENAIR_DIR/targets/bin/xt_GTPU*.ko 2>&1 + (cd $OPENAIRCN_DIR/GTPV1-U/GTPUAH && make clean) + (cd $OPENAIRCN_DIR/GTPV1-U/GTPURH && make clean) + rm -f $OPENAIRCN_DIR/GTPV1-U/GTPUAH/Bin/* 2>&1 + rm -f /lib/xtables/libxt_GTPU*.so 2>&1 + mkdir -m 777 -p -v build + fi + + ############################################################################## + # Compile kernel modules + ############################################################################## + # NO CMAKE FOR THAT, THIS CODE CAN DISAPEAR + #cd $OPENAIRCN_DIR/GTPV1-U/GTPUAH; + #make + #if [ $? -ne 0 ]; then + # echo_error "Build GTPUAH module failed, exiting" + # return 1 + #else + # $SUDO cp -pfv ./Bin/libxt_*.so /lib/xtables + # $SUDO cp -pfv ./Bin/*.ko $OPENAIR_TARGETS/bin + #fi + + #cd $OPENAIRCN_DIR/GTPV1-U/GTPURH; + #make + #if [ $? -ne 0 ]; then + # echo_error "Build GTPURH module failed, exiting" + # return 1 + #else + # $SUDO cp -pfv ./Bin/libxt_*.so /lib/xtables + # $SUDO cp -pfv ./Bin/*.ko $OPENAIR_TARGETS/bin + #fi + + + + ############################################################################## + # Compile EPC + ############################################################################## + cd $OPENAIR_DIR/cmake_targets/epc_build_oai + #cd $OPENAIR_TARGETS/CMAKE/EPC/MME_GW + if [ ! -d ./build ]; then + mkdir -m 777 -p -v build + fi + cmake_file=./CMakeLists.txt + cp $OPENAIR_DIR/cmake_targets/epc_build_oai/CMakeLists.template $cmake_file + echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file + cd ./build + cmake $cmake_args .. + #make $make_args -j $NUM_CPU + #make install + compilations \ + epc_build_oai mme_gw \ + mme_gw $dbin/mme_gw.$REL + # Only integrated mme+sgw+pgw is operational today + # compilations \ + # epc_build_oai oai_sgw \ + # oai_sgw $dbin/oai_sgw.$REL + compilations \ + epc_build_oai xt_GTPUAH_lib \ + libxt_GTPUAH_lib.so $dbin + compilations \ + epc_build_oai xt_GTPURH_lib \ + libxt_GTPURH_lib.so $dbin + compilations \ + epc_build_oai xt_GTPURH \ + CMakeFiles/xt_GTPURH/xt_GTPURH.ko $dbin + compilations \ + epc_build_oai xt_GTPUAH \ + CMakeFiles/xt_GTPUAH/xt_GTPUAH.ko $dbin + + echo_info "Copying iptables libraries into system directory: /lib/xtables" + if [ -f $dbin/libxt_GTPURH_lib.so ] ; then + $SUDO rm -f /lib/xtables/libxt_GTPURH.so /lib/xtables/libxt_GTPUAH.so + $SUDO ln -s $dbin/libxt_GTPURH_lib.so /lib/xtables/libxt_GTPURH.so + $SUDO ln -s $dbin/libxt_GTPUAH_lib.so /lib/xtables/libxt_GTPUAH.so + else + echo_fatal "not installed GTP-U iptables: binaries not found" + fi + # Do EPC + if [ -f $OPENAIR_DIR/cmake_targets/epc_build_oai/build/mme_fd.conf ] ; then + cp -uv $OPENAIR_DIR/cmake_targets/epc_build_oai/build/epc*.conf $dconf + $SUDO cp -uv $OPENAIR_DIR/cmake_targets/epc_build_oai/build/mme_fd.conf $FREEDIAMETER_PREFIX/etc/freeDiameter + else + echo_fatal "not installed EPC config files: not found" + fi + +} + + +main "$@" + diff --git a/cmake_targets/tools/build_helper.bash b/cmake_targets/tools/build_helper similarity index 86% rename from cmake_targets/tools/build_helper.bash rename to cmake_targets/tools/build_helper index 024894622d2b068439954d3c262c545dd9e274cb..dab36592e3221784bff2967d86e9c97c52714a7a 100755 --- a/cmake_targets/tools/build_helper.bash +++ b/cmake_targets/tools/build_helper @@ -26,7 +26,7 @@ # Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE # ################################################################################ -# file build_cmake.bash +# file build_helper # brief # author Laurent Thomas # @@ -65,53 +65,7 @@ echo_warning() { cecho "$*" $yellow ;} echo_success() { cecho "$*" $green ;} echo_info() { cecho "$*" $blue ;} -print_help() { -echo_info ' -This program installs OpenAirInterface Software -You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14 -Options --h - This help --c | --clean - Erase all files made by previous compilation, installation" ---clean-kernel - Erase previously installed features in kernel: iptables, drivers, ... --I | --install-external-packages - Installs required packages such as LibXML, asn1.1 compiler, freediameter, ... - This option will require root password ---install-optional-packages - Install useful but not mandatory packages such as valgrind --g | --run-with-gdb - Add debugging symbols to compilation directives ---eNB - Makes the eNB LTE softmodem ---UE - Makes the UE softmodem ---EPC - Makes the EPC --r | --3gpp-release - default is Rel10, - Rel8 limits the implementation to 3GPP Release 8 version --w | --hardware - EXMIMO (Default), USRP, None - Adds this RF board support (in external packages installation and in compilation) ---oaisim - Makes the oaisim simulator ---phy_simulators - Makes the unitary tests Layer 1 simulators ---core_simulators - Makes the core security features unitary simulators --s | --check - runs a set of auto-tests based on simulators and several compilation tests --V | --vcd - Adds a debgging facility to the binary files: GUI with major internal synchronization events --x | --xforms - Adds a software oscilloscope feature to the produced binaries ---install-system-files - Install OpenArInterface required files in Linux system - (will ask root password) -Typical Options for a quick startup with a COTS UE and Eurecom RF board: build_oai.bash -I -g -eNB -EPC -x --install-system-files' -} + ########################### # Cleaners @@ -141,7 +95,7 @@ clean_kernel() { clean_all_files() { set_openair_env dir=$OPENAIR_DIR/cmake_targets - rm -rf $dir/log $OPENAIR_DIR/targets/bin + rm -rf $dir/log $OPENAIR_DIR/targets/bin/* rm -rf $dir/lte_build_oai $dir/lte-simulators/build rm -rf $dir/epc_build_oai/build $dir/epc_build_oai/CMakeLists.txt rm -rf $dir/oaisim_build_oai/build $dir/oaisim_build_oai/CMakeLists.txt @@ -184,7 +138,7 @@ make_one_cert() { make_certs(){ fqdn=$1 - certs_dir=/usr/local/etc/freeDiameter + certs_dir=$FREEDIAMETER_PREFIX/freeDiameter # certificates are stored in diameter config directory if [ ! -d $certs_dir ]; then echo "Creating non existing directory: $certs_dir" @@ -244,9 +198,9 @@ install_gnutls_from_source(){ rm -rf /tmp/gnutls-3.1.23.tar.xz /tmp/gnutls-3.1.23 } -install_freediameter_from_source() { +install_1.1.5_freediameter_from_source() { cd /tmp - echo "Downloading freeDiameter archive" + echo "Downloading 1.1.5 freeDiameter archive" rm -rf /tmp/1.1.5.tar.gz* /tmp/freeDiameter-1.1.5 wget http://www.freediameter.net/hg/freeDiameter/archive/1.1.5.tar.gz tar xzf 1.1.5.tar.gz @@ -262,6 +216,24 @@ install_freediameter_from_source() { rm -rf /tmp/1.1.5.tar.gz /tmp/freeDiameter-1.1.5 } +install_freediameter_from_source() { + cd /tmp + echo "Downloading 1.2.0 freeDiameter archive" + rm -rf /tmp/1.2.0.tar.gz* /tmp/freeDiameter-1.2.0 + wget http://www.freediameter.net/hg/freeDiameter/archive/1.2.0.tar.gz + tar xzf 1.2.0.tar.gz + cd freeDiameter-1.2.0 + patch -p1 < $OPENAIRCN_DIR/S6A/freediameter/freediameter-1.2.0.patch + mkdir build + cd build + cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ../ + echo "Compiling freeDiameter" + make -j4 + #make test + $SUDO make install + rm -rf /tmp/1.2.0.tar.gz /tmp/freeDiameter-1.2.0 +} + check_install_usrp_uhd_driver(){ v=$(lsb_release -cs) $SUDO apt-add-repository "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/$v $v main" @@ -339,6 +311,7 @@ check_install_oai_software() { libxml2 \ libxml2-dev \ linux-headers-`uname -r` \ + mscgen \ mysql-client \ mysql-server \ openssh-client \ @@ -456,7 +429,6 @@ set_openair_env(){ 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 diff --git a/cmake_targets/tools/build_hss b/cmake_targets/tools/build_hss new file mode 100755 index 0000000000000000000000000000000000000000..68b61c9395e88eb5a2b8267662cb84269938795f --- /dev/null +++ b/cmake_targets/tools/build_hss @@ -0,0 +1,252 @@ +#!/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) anylater 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, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE +# +################################################################################ +# file build_hss +# brief +# author Lionel Gauthier +# company Eurecom +# email: lionel.gauthier@eurecom.fr +# +################################ +# include helper functions +################################ +THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) +source $THIS_SCRIPT_PATH/build_helper + + + +function help() +{ + echo_error " " + echo_error "Usage: build_hss [OPTION]..." + echo_error "Build the experimental HSS executable." + echo_error " " + echo_error "Options:" + echo_error "Mandatory arguments to long options are mandatory for short options too." + echo_error " -b, --s6a-bind-addr-list addr_list Optionaly, s6a server bind addresses can be specified here" + echo_error " -c, --clean Clean the build generated files (build from scratch)" + echo_error " -d, --debug Compile with debug informations." + echo_error " -f, --fqdn fqdn HSS Fully Qualified Domain Name (if not specified default is `hostname --fqdn`)." + echo_error " -h, --help Print this help." + echo_error " -i, --check-installed-software Check installed software packages necessary to build and run HSS (support Ubuntu 14.04)." + echo_error " -k, --operator-key key Operator key of the HSS (if not specified, default is 11111111111111111111111111111111, see CMakelists.txt)." + echo_error " -m, --connect-to-mme fqdn MME act as a S6A server, HSS as a client (reversed situation but allows MME and HSS be on the same host) ." + echo_error " -r, --realm realm Realm of the HSS (optional parameter)." + echo_error " -s, --transport-sctp-only Diameter use SCTP (TCP disabled)." + echo_error " -t, --transport-tcp-only Diameter use TCP (SCTP disabled)." + echo_error " -T, --transport-prefer-tcp Diameter prefer TCP." + echo_error " -v, --verbose Build process verbose." +} + + + +function main() +{ + local -i clean=0 + local -i verbose=0 + local cmake_args=" " + local make_args="-j $NUM_CPU" + local realm="" + local hss_hostname="" + local mme_hostname="" + local mme_ip="" + local mme_fqdn="" + + + until [ -z "$1" ]; do + case "$1" in + -b | --s6a-bind-addr-list) + echo "S6A server bind addresses: $2" + cmake_args="$cmake_args -DFD_SERVER_IP_BIND_LIST=$2" + shift 2; + ;; + -c | --clean) + clean=1 + echo "Clean the build generated files (build from scratch)" + shift; + ;; + -d | --debug) + cmake_args="$cmake_args -DDEBUG=1" + echo "Compile with debug informations" + shift; + ;; + -f | --fqdn) + echo "FQDN of the HSS: $2" + cmake_args="$cmake_args -DHSS_FQDN=$2" + shift 2; + ;; + -h | --help) + help + exit 0 + ;; + -i | --check-installed-software) + echo "Check installed software packages necessary to build and run HSS (support Ubuntu 14.04):" + check_install_hss_software + exit 0 + ;; + -I | --install-hss-files) + echo "Install HSS files: .conf files, database (if you want to reinstall database, drop it by hand before)." + cmake_args="$cmake_args -DINSTALL_HSS_FILES=1" + shift; + ;; + -k | --operator-key) + echo "Operator key of the HSS: $2" + cmake_args="$cmake_args -DOPERATOR_key=$2" + shift 2; + ;; + -m | --connect-to-mme) + mme_fqdn=$2 + shift 2; + ;; + -r | --realm) + echo "Realm of the HSS: $2" + cmake_args="$cmake_args -DREALM=$2" + shift 2; + ;; + -s | --transport-sctp-only) + echo "Diameter use SCTP (TCP disabled), this is the default option." + cmake_args="$cmake_args -DTRANSPORT_option=No_TCP" + shift; + ;; + -t | --transport-tcp-only) + echo "Diameter use TCP (SCTP disabled)." + cmake_args="$cmake_args -DTRANSPORT_option=No_SCTP" + shift; + ;; + -T | --transport-prefer-tcp) + echo "Diameter prefer TCP (TCP, SCTP enabled)." + cmake_args="$cmake_args -DTRANSPORT_PREFER_TCP_option=Prefer_TCP" + shift; + ;; + -v | --verbose) + echo "Make build process verbose" + cmake_args="$cmake_args -DCMAKE_VERBOSE_MAKEFILE=ON" + make_args="VERBOSE=1 $make_args" + verbose=1 + shift; + ;; + *) + echo "Unknown option $1" + help + exit 1 + ;; + esac + done + + # extra arguments processing + if [[ z$hss_fqdn = z ]]; then + hss_fqdn=`hostname --fqdn` + cmake_args="$cmake_args -DHSS_FQDN=$hss_fqdn" + if [[ z$realm = z ]]; then + realm=$hss_fqdn + realm=${realm#*.} + cmake_args="$cmake_args -DREALM=$realm" + fi + fi + + if [[ z$mme_fqdn != z ]]; then + cmake_args="$cmake_args -DMME_FQDN=$mme_fqdn" + mme_hostname=${mme_fqdn%%.*} + cmake_args="$cmake_args -DMME_HOSTNAME=$mme_hostname" + + mme_ip=`resolveip --silent $mme_hostname` + if [[ z$mme_ip = z ]]; then + mme_ip=`resolveip --silent $mme_fqdn` + fi + if [[ z$mme_ip = z ]]; then + echo_fatal "Unable to get MME IP addr of $mme_fqdn" + fi + cmake_args="$cmake_args -DHSS_CONNECT_TO_MME=1 -DMME_IP=$mme_ip" + fi + + set_openair_env + if [[ $verbose -eq 1 ]]; then + cecho "OPENAIR_DIR = $OPENAIR_DIR" $green + fi + + if [[ z$OPENAIR_DIR = z ]]; then + echo_fatal "OPENAIR_DIR env variable not set, exiting" + fi + + + local dbin=$OPENAIR_DIR/targets/bin + local dlog=$OPENAIR_DIR/cmake_targets/log + local dconf=OPENAIR_DIR/targets/bin + + mkdir -m 777 -p $dbin $dlog + + # for conf files copy in this bash script + if [ -d /usr/lib/freeDiameter ]; then + export FREEDIAMETER_PREFIX=/usr + else + if [ -d /usr/local/lib/freeDiameter ]; then + export FREEDIAMETER_PREFIX=/usr/local + else + echo_fatal "FreeDiameter prefix not found, install freeDiameter if EPC, HSS" + fi + fi + + + + cmake_args="$cmake_args -DOPENAIR_DIR=$OPENAIR_DIR" + + rm -f $OPENAIR_DIR/targets/bin/openair-hss + cd $OPENAIR_DIR/cmake_targets/hss_build + if [ $clean -ne 0 ]; then + if [[ $verbose -eq 1 ]]; then + echo "Cleaning HSS" + fi + $SUDO rm -Rf build 2>&1 + if [[ $verbose -eq 1 ]]; then + echo "Cleaning /usr/*/etc/freeDiameter" + fi + $SUDO rm -f /usr/local/etc/freeDiameter/hss* 2>&1 + $SUDO rm -f /usr/local/etc/freeDiameter/acl.conf 2>&1 + $SUDO rm -f /usr/etc/freeDiameter/hss* 2>&1 + $SUDO rm -f /usr/etc/freeDiameter/acl.conf 2>&1 + mkdir -m 777 -p -v build + fi + if [ ! -d ./build ]; then + mkdir -m 777 -p -v build + fi + cd ./build + cmake $cmake_args .. + make $make_args + make install + + + # bash doesn't like space char around = char + cp -uv $OPENAIR_DIR/cmake_targets/hss_build/build/hss.conf $dbin + $SUDO cp -uv $OPENAIR_DIR/cmake_targets/hss_build/build/hss_fd.conf $OPENAIR_DIR/cmake_targets/hss_build/build/acl.conf $FREEDIAMETER_PREFIX/etc/freeDiameter + +} + + +main "$@" + diff --git a/cmake_targets/tools/check_hss_s6a_certificate b/cmake_targets/tools/check_hss_s6a_certificate new file mode 100755 index 0000000000000000000000000000000000000000..e444c7f4c50a366e2f8e8b5e7917a65ec1716f41 --- /dev/null +++ b/cmake_targets/tools/check_hss_s6a_certificate @@ -0,0 +1,104 @@ +#!/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) anylater 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, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE +# +################################################################################ +# file check_hss_s6a_certificate +# brief +# author Lionel Gauthier +# company Eurecom +# email: lionel.gauthier@eurecom.fr +################################ +# include helper functions +################################ +THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) +source $THIS_SCRIPT_PATH/build_helper + + +function _create_hss_certs() +{ + local freediameter_path=$1 + local fqdn=$2 + + cd /tmp + rm -rf /tmp/demoCA + mkdir /tmp/demoCA + echo 01 > /tmp/demoCA/serial + touch /tmp/demoCA/index.txt + + echo "Creating HSS certificate for user '$fqdn'" + # Create a Root Certification Authority Certificate + openssl req -new -batch -x509 -days 3650 -nodes -newkey rsa:1024 -out hss.cacert.pem -keyout hss.cakey.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM + + # Generate a Private Key + openssl genrsa -out hss.key.pem 1024 + + # Generate a CSR (Certificate Signing Request) that will be self-signed + openssl req -new -batch -out hss.csr.pem -key hss.key.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM + + # Certification authority + openssl ca -cert hss.cacert.pem -keyfile hss.cakey.pem -in hss.csr.pem -out hss.cert.pem -outdir . -batch + + if [ ! -d $freediameter_path/etc/freeDiameter ]; then + echo "Creating non existing directory: $freediameter_path/etc/freeDiameter/" + sudo mkdir -p $freediameter_path/etc/freeDiameter/ + fi + + sudo mv hss.cakey.pem hss.cert.pem hss.cacert.pem hss.key.pem $freediameter_path/etc/freeDiameter/ + cd - +} + + +#$1 if freediameter path +#$2 is fqdn +function main() { + local freediameter_path=$1 + local fqdn=$2 + if [ -d $freediameter_path/etc/freeDiameter ]; then + if [ -f $freediameter_path/etc/freeDiameter/hss.cert.pem ]; then + full_hostname=`cat $freediameter_path/etc/freeDiameter/hss.cert.pem | grep "Subject" | grep "CN" | cut -d '=' -f6` + if [ a$full_hostname == a$fqdn ]; then + echo_success "HSS S6A: Found valid certificate in $freediameter_path/etc/freeDiameter" + return 0 + else + echo_error "Bad hss fqdn found in cert file: $full_hostname fqdn is $fqdn" + fi + fi + fi + echo_error "HSS S6A: Did not find valid certificate in $freediameter_path/etc/freeDiameter" + echo_warning "HSS S6A: generating new certificate in $freediameter_path/etc/freeDiameter..." + _create_hss_certs $freediameter_path $fqdn + if [ $# -lt 3 ] ; then + main $freediameter_path $fqdn 2 + return $? + else + echo_error "Could not access to freeDiameter path: $freediameter_path/etc/freeDiameter" + exit 1 + fi +} + +main "$@" diff --git a/cmake_targets/tools/check_mme_s6a_certificate b/cmake_targets/tools/check_mme_s6a_certificate new file mode 100755 index 0000000000000000000000000000000000000000..62d0c53468b546f1517b1e12bb366e3230352a71 --- /dev/null +++ b/cmake_targets/tools/check_mme_s6a_certificate @@ -0,0 +1,103 @@ +#!/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) anylater 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, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE +# +################################################################################ +# file check_mme_s6a_certificate +# brief +# author Lionel Gauthier +# company Eurecom +# email: lionel.gauthier@eurecom.fr +################################ +# include helper functions +################################ +THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) +. $THIS_SCRIPT_PATH/build_helper + + +function _create_mme_certs() +{ + local freediameter_path=$1 + local fqdn=$2 + + cd /tmp + rm -rf /tmp/demoCA + mkdir /tmp/demoCA + echo 01 > /tmp/demoCA/serial + touch /tmp/demoCA/index.txt + + echo "Creating MME certificate for user '$fqdn'" + # Create a Root Certification Authority Certificate + openssl req -new -batch -x509 -days 3650 -nodes -newkey rsa:1024 -out mme.cacert.pem -keyout mme.cakey.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM + + # Generate a Private Key + openssl genrsa -out mme.key.pem 1024 + + # Generate a CSR (Certificate Signing Request) that will be self-signed + openssl req -new -batch -out mme.csr.pem -key mme.key.pem -subj /CN=$fqdn/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM + + # Certification authority + openssl ca -cert mme.cacert.pem -keyfile mme.cakey.pem -in mme.csr.pem -out mme.cert.pem -outdir . -batch + + if [ ! -d $freediameter_path/etc/freeDiameter ]; then + echo "Creating non existing directory: $freediameter_path/etc/freeDiameter/" + sudo mkdir -p $freediameter_path/etc/freeDiameter/ + fi + + sudo mv mme.cakey.pem mme.cert.pem mme.cacert.pem mme.key.pem $freediameter_path/etc/freeDiameter/ + cd - +} + +#$1 if freediameter path +#$2 is fqdn +function main() { + local freediameter_path=$1 + local fqdn=$2 + if [ -d $freediameter_path/etc/freeDiameter ]; then + if [ -f $freediameter_path/etc/freeDiameter/mme.cert.pem ]; then + full_hostname=`cat $freediameter_path/etc/freeDiameter/mme.cert.pem | grep "Subject" | grep "CN" | cut -d '=' -f6` + if [ a$full_hostname == a$fqdn ]; then + echo_success "MME S6A: Found valid certificate in $freediameter_path/etc/freeDiameter" + return 0 + else + echo_error "Bad mme fqdn found in cert file: $full_hostname fqdn is $fqdn" + fi + fi + fi + echo_error "MME S6A: Did not find valid certificate in $freediameter_path/etc/freeDiameter" + echo_warning "MME S6A: generating new certificate in $freediameter_path/etc/freeDiameter..." + _create_mme_certs $freediameter_path $fqdn + if [ $# -lt 3 ] ; then + main $freediameter_path $fqdn 2 + return $? + else + echo_error "Could not access to freeDiameter path: $freediameter_path/etc/freeDiameter" + exit 1 + fi +} + +main "$@" diff --git a/cmake_targets/tools/create_hss_database b/cmake_targets/tools/create_hss_database new file mode 100755 index 0000000000000000000000000000000000000000..054be034d71cdd41fdad80a85d4e629b0d48f130 --- /dev/null +++ b/cmake_targets/tools/create_hss_database @@ -0,0 +1,103 @@ +#!/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) anylater 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, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE +# +################################################################################ +# file create_hss_database +# brief +# author Lionel Gauthier +# company Eurecom +# email: lionel.gauthier@eurecom.fr +################################ +# include helper functions +################################ +THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) +. $THIS_SCRIPT_PATH/build_helper + + +# arg 1 is mysql user (ex: root) +# arg 2 is mysql password (ex: linux) +# arg 3 is hss username (ex: hssadmin) +# arg 4 is hss password (ex: admin) +# arg 5 is database name (ex: oai_db) +function main() +{ + EXPECTED_ARGS=5 + E_BADARGS=65 + MYSQL=`which mysql` + rv=0 + if [ $# -ne $EXPECTED_ARGS ] + then + echo_fatal "Usage: $0 dbuser dbpass hssuser hsspass databasename" + rv=1 + fi + + set_openair_env + + # removed % + #Q1="GRANT ALL PRIVILEGES ON *.* TO '$3'@'%' IDENTIFIED BY '$4' WITH GRANT OPTION;" + Q1="GRANT ALL PRIVILEGES ON *.* TO '$3'@'localhost' IDENTIFIED BY '$4' WITH GRANT OPTION;" + Q2="FLUSH PRIVILEGES;" + SQL="${Q1}${Q2}" + $MYSQL -u $1 --password=$2 -e "$SQL" + if [ $? -ne 0 ]; then + echo_error "$3 permissions failed" + return 1 + else + echo_success "$3 permissions succeeded" + fi + + + Q1="CREATE DATABASE IF NOT EXISTS ${BTICK}$5${BTICK};" + SQL="${Q1}" + $MYSQL -u $3 --password=$4 -e "$SQL" + if [ $? -ne 0 ]; then + echo_error "$5 creation failed" + return 1 + else + echo_success "$5 creation succeeded" + fi + + + # test if tables have been created + mysql -u $3 --password=$4 -e "desc $5.users" > /dev/null 2>&1 + + if [ $? -eq 1 ]; then + $MYSQL -u $3 --password=$4 $5 < $OPENAIRCN_DIR/OPENAIRHSS/db/$5.sql + if [ $? -ne 0 ]; then + echo_error "$5 tables creation failed" + return 1 + else + echo_success "$5 tables creation succeeded" + fi + fi + + return 0 +} + +main "$@" + diff --git a/cmake_targets/tools/epc.conf.in b/cmake_targets/tools/epc.conf.in index f4ff73642851dfa28938265d49f46c030d7c768e..89d8a4dea4f550af38226148b066a9d0d7e41e7d 100755 --- a/cmake_targets/tools/epc.conf.in +++ b/cmake_targets/tools/epc.conf.in @@ -26,7 +26,7 @@ MME : S6A : { - S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/epc_s6a.conf"; + S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/mme_fd.conf"; HSS_HOSTNAME = "@HSS_HOSTNAME@"; }; diff --git a/cmake_targets/tools/epc.local.enb.conf.in b/cmake_targets/tools/epc.local.enb.conf.in index 3ff6ed743ca7dc6fd0a9e6fbe92f7a47558f8aa3..4afc5851d1889f46e7f2a0f70cd5912c064d5402 100755 --- a/cmake_targets/tools/epc.local.enb.conf.in +++ b/cmake_targets/tools/epc.local.enb.conf.in @@ -26,7 +26,7 @@ MME : S6A : { - S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/epc_s6a.conf"; + S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/mme_fd.conf"; HSS_HOSTNAME = "@HSS_HOSTNAME@"; }; @@ -117,8 +117,8 @@ P-GW = PGW_INTERFACE_NAME_FOR_S5_S8 = "none"; PGW_IPV4_ADDRESS_FOR_S5_S8 = "0.0.0.0/24"; - PGW_INTERFACE_NAME_FOR_SGI = "eth1"; - PGW_IPV4_ADDRESS_FOR_SGI = "192.168.13.82/24"; + PGW_INTERFACE_NAME_FOR_SGI = "eth0"; + PGW_IPV4_ADDRESS_FOR_SGI = "192.168.14.17/24"; # Option available only if GTPU in kernel configured PGW_MASQUERADE_SGI = "yes"; }; diff --git a/cmake_targets/tools/example_enb_exmimo_mme_hss.txt b/cmake_targets/tools/example_enb_exmimo_mme_hss.txt new file mode 100644 index 0000000000000000000000000000000000000000..bae66a357297c659304277ac2fa47fca29bbd992 --- /dev/null +++ b/cmake_targets/tools/example_enb_exmimo_mme_hss.txt @@ -0,0 +1,90 @@ +################################################################################ +# 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) anylater 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, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE +# +################################################################################ +# file example_enb_exmimo_mme_hss.txt +# brief +# author Lionel Gauthier + +This example shows how to generate and launch enb, mme_gw, hss executables on the same host: + +################ +Configuration +################ +freediameter 1.2.0 (not 1.1.5, 1.1.6,...) has to be installed and patched (done by check_install_oai_software() calling install_freediameter_from_source() in script build_helper) + +Config File: +/etc/hosts must contain the fqdn of the MME and HSS (same since both run on the same host): +(assuming the realm is openair4G.eur) +127.0.0.1 localhost +127.0.1.1 yang.openair4G.eur yang +... + +################ +BUILDING, RUNNING +################ + +Building HSS: +yang@yang:~/openair4G/branches/LG_PRE_RELEASE_0.3/cmake_targets$ tools/build_hss -c --connect-to-mme yang.openair4G.eur -t -T --realm openair4G.eur + +Running the HSS: +yang@yang:~/openair4G/branches/LG_PRE_RELEASE_0.3/cmake_targets$ sudo tools/run_hss -g + + + +Building the MME-GW: +yang@yang:~/openair4G/branches/LG_PRE_RELEASE_0.3/cmake_targets/tools$ sudo ./build_epc -c -d -t -T --s6a-server + +Running the MME-GW: +yang@yang:~/openair4G/branches/LG_PRE_RELEASE_0.3/cmake_targets/tools$ sudo ./run_epc -l -g -K + + + +Building eNB: +yang@yang:~/openair4G/branches/LG_PRE_RELEASE_0.3/cmake_targets$ ./build_oai --eNB + +Running eNB: +yang@yang:~/openair4G/branches/LG_PRE_RELEASE_0.3/cmake_targets$ sudo tools/run_enb_s1_exmimo -c /home/yang/openair4G/branches/LG_PRE_RELEASE_0.3/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.yang.epc.eurecom.conf -S -K + + +################ +Tool: +############### + +mscgen (http://www.mcternan.me.uk/mscgen/) +We use the software to generate sequence diagrams +with traces generated during the execution of the eNB. +After the enb execution: +yang@yang:...$ cd /tmp +yang@yang:/tmp$ /home/yang/openair4G/branches/LG_PRE_RELEASE_0.3/targets/SCRIPTS/msc_gen.py +The results are located in the current directory (/tmp in this example) in a folder. The name of the folder +is the current date (for example: 2015-04-08_20.34.10). +The results are input files for the mscgen tool containing events or messages and the +corresponding generated png files. + + + diff --git a/cmake_targets/tools/exmimo2_2brxg.lime b/cmake_targets/tools/exmimo2_2brxg.lime new file mode 100755 index 0000000000000000000000000000000000000000..e99c738cd0a512f4a67abe582df28ee08f163d5a --- /dev/null +++ b/cmake_targets/tools/exmimo2_2brxg.lime @@ -0,0 +1,10 @@ +# this file contains the calibration values to compute the RSSI +# we can use three different gain stages (high, low, med) as well as a gain factor for fine tuning +# the three lines in this file gives the total rx gain in dB for the three gain stages if the rx gain is set to 30dB +# this is for Express MIMO2 without any additional RF frontend +# high gain +128 128 128 126 +# med gain +122 123 123 120 +# low gain (byp) +116 117 116 116 diff --git a/cmake_targets/tools/generate_asn1.bash b/cmake_targets/tools/generate_asn1 similarity index 93% rename from cmake_targets/tools/generate_asn1.bash rename to cmake_targets/tools/generate_asn1 index 2b04ca591f7419b84163b83d32fed43c03724b48..97058384895ed142308289ee42dc2d71495f1e25 100755 --- a/cmake_targets/tools/generate_asn1.bash +++ b/cmake_targets/tools/generate_asn1 @@ -1,4 +1,7 @@ +#!/bin/bash +function main() +{ mkdir -p $1 cd $1 shift @@ -26,3 +29,6 @@ awk ' END { print "#endif "; } ' $1 > asn1_constants.h +} + +main "$@" diff --git a/cmake_targets/tools/indent_source_code b/cmake_targets/tools/indent_source_code new file mode 100755 index 0000000000000000000000000000000000000000..f666e656600d5cac41030d3b9048a0b216bd10a5 --- /dev/null +++ b/cmake_targets/tools/indent_source_code @@ -0,0 +1,75 @@ +#!/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) anylater 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, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE +# +################################################################################ +# file indent_source_code +# brief +# author Lionel Gauthier +# company Eurecom +# email: lionel.gauthier@eurecom.fr +# +################################ +# include helper functions +################################ +THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) +source $THIS_SCRIPT_PATH/build_helper + +function main() +{ + local MAX_CODE_LENGTH=200 + local INDENT_SPACES=2 +set_openair_env + + + # remove trailing white spaces + #find $OPENAIR_DIR/openair1 -type f \( -name '*.c' -o -name '*.h' \) -exec sed --in-place 's/[[:space:]]\+$//' {} \+ + #find $OPENAIR_DIR/openair2 -type f \( -name '*.c' -o -name '*.h' \) -exec sed --in-place 's/[[:space:]]\+$//' {} \+ + #find $OPENAIR_DIR/openair3 -type f \( -name '*.c' -o -name '*.h' \) -exec sed --in-place 's/[[:space:]]\+$//' {} \+ + #find $OPENAIR_DIR/openair-cn -type f \( -name '*.c' -o -name '*.h' \) -exec sed --in-place 's/[[:space:]]\+$//' {} \+ + #find $OPENAIR_DIR/targets -type f \( -name '*.c' -o -name '*.h' \) -exec sed --in-place 's/[[:space:]]\+$//' {} \+ + +# Style google not available on 14.04 + + exit 0 + # will use indent + command -v astyle >/dev/null 2>&1 || { echo >&2 "astyle required but it's not installed."; sudo apt-get install astyle; } + astyle --recursive --convert-tabs --indent=spaces=$INDENT_SPACES --style=kr --indent-col1-comments --max-code-length=$MAX_CODE_LENGTH \ + $OPENAIR_DIR/openair1/*.h \ + $OPENAIR_DIR/openair1/*.c \ + $OPENAIR_DIR/openair2/*.h \ + $OPENAIR_DIR/openair2/*.c \ + $OPENAIR_DIR/openair3/*.h \ + $OPENAIR_DIR/openair3/*.c \ + $OPENAIR_DIR/openair-cn/*.h \ + $OPENAIR_DIR/openair-cn/*.c \ + $OPENAIR_DIR/targets/*.h \ + $OPENAIR_DIR/targets/*.c +} + + +main "$@" diff --git a/cmake_targets/tools/init_exmimo2.sh b/cmake_targets/tools/init_exmimo2 similarity index 95% rename from cmake_targets/tools/init_exmimo2.sh rename to cmake_targets/tools/init_exmimo2 index b7b52b4b36839f1c3851cca447ae925b5a849b0f..421d458cbb30ad0c0410a4e80fcb63cc4705bfbd 100755 --- a/cmake_targets/tools/init_exmimo2.sh +++ b/cmake_targets/tools/init_exmimo2 @@ -1,5 +1,21 @@ #!/bin/bash +load_module() +{ + mod_name=${1##*/} + mod_name=${mod_name%.*} + if awk "/$mod_name/ {found=1 ;exit} END {if (found!=1) exit 1}" /proc/modules + then + echo "module $mod_name already loaded: I remove it first" + sudo rmmod $mod_name + fi + echo loading $mod_name + sudo insmod $1 +} + + +function main() +{ PCI=`lspci -m | grep Xilinx` if [ -z "$PCI" ]; then echo "No card found. Stopping!" @@ -12,17 +28,6 @@ SLOT_NUMBER=`echo $config_reg | awk -F\" '{print $1}'` sudo setpci -s $SLOT_NUMBER 60.b=10 done -load_module() { - mod_name=${1##*/} - mod_name=${mod_name%.*} - if awk "/$mod_name/ {found=1 ;exit} END {if (found!=1) exit 1}" /proc/modules - then - echo "module $mod_name already loaded: I remove it first" - sudo rmmod $mod_name - fi - echo loading $mod_name - sudo insmod $1 -} load_module $OPENAIR_DIR/targets/bin/openair_rf.ko sleep 1 @@ -41,3 +46,6 @@ else echo 'No corresponding firmware found' return fi +} + +main "$@" diff --git a/cmake_targets/tools/run_enb_s1_exmimo b/cmake_targets/tools/run_enb_s1_exmimo index b547b28250e2b771f191c5df1836c5daafbaa84a..89d1c5a8da4f19950f6ad9860adc03e927b15bf1 100755 --- a/cmake_targets/tools/run_enb_s1_exmimo +++ b/cmake_targets/tools/run_enb_s1_exmimo @@ -87,7 +87,7 @@ function main() echo_fatal "config file $CONFIG_FILE not found" fi fi - exe_arguments="$exe_arguments -O $CONFIG_FILE" + exe_arguments="$exe_arguments -O $CONFIG_FILE -F $THIS_SCRIPT_PATH/exmimo2_2arxg.lime" shift 2; ;; -g | --gdb) @@ -105,10 +105,12 @@ function main() # can omit file name if last arg on the line if [ "x$ITTI_DUMP_FILE" = "x" ]; then ITTI_DUMP_FILE="/tmp/enb_s1_exmimo_itti.log" + shift 1; + else + shift 2; fi echo "setting ITTI dump file to: $ITTI_DUMP_FILE" exe_arguments="$exe_arguments -K $ITTI_DUMP_FILE" - shift 2; ;; -M | --target-dl-mcs) echo "setting target dl MCS to $2" @@ -143,25 +145,19 @@ function main() esac done - check_for_root_rights set_openair_env - cecho "OPENAIR_HOME = $OPENAIR_HOME" $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 + cecho "OPENAIR_DIR = $OPENAIR_DIR" $green - if [ ! -e $OPENAIR_TARGETS/bin/lte-softmodem ]; then - echo_fatal "Cannot find $OPENAIR_TARGETS/bin/lte-softmodem executable" + if [ ! -e $OPENAIR_DIR/targets/bin/lte-softmodem ]; then + echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/lte-softmodem executable" fi - if [ ! -e $OPENAIR_TARGETS/bin/updatefw ]; then - echo_fatal "Cannot find $OPENAIR_TARGETS/bin/updatefw executable" + if [ ! -e $OPENAIR_DIR/targets/bin/updatefw ]; then + echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/updatefw executable" fi - if [ ! -e $OPENAIR_TARGETS/bin/openair_rf.ko ]; then - echo_fatal "Cannot find $OPENAIR_TARGETS/bin/openair_rf.ko kernel module" + if [ ! -e $OPENAIR_DIR/targets/bin/openair_rf.ko ]; then + echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/openair_rf.ko kernel module" fi for i in `seq 0 64`; do @@ -171,14 +167,14 @@ function main() fi; done - $THIS_SCRIPT_PATH/init_exmimo2.sh + $THIS_SCRIPT_PATH/init_exmimo2 if [ $run_gdb -eq 0 ]; then - exec $OPENAIR_TARGETS/bin/lte-softmodem `echo $exe_arguments` 2>&1 > /tmp/gdb_lte_softmodem.stdout.txt + exec $OPENAIR_DIR/targets/bin/lte-softmodem `echo $exe_arguments` 2>&1 > /tmp/lte_softmodem.stdout.txt else touch ~/.gdb_lte_softmodem chmod 777 ~/.gdb_lte_softmodem - echo "file $OPENAIR_TARGETS/bin/lte-softmodem" > ~/.gdb_lte_softmodem + echo "file $OPENAIR_DIR/targets/bin/lte-softmodem" > ~/.gdb_lte_softmodem echo "set args $exe_arguments" >> ~/.gdb_lte_softmodem echo "run" >> ~/.gdb_lte_softmodem cat ~/.gdb_lte_softmodem diff --git a/cmake_targets/tools/run_epc b/cmake_targets/tools/run_epc index bba6b9060c4548dbf5dc500268e2fb259f798243..720b57e920e5085babb4946ff7c6dc2e05a3602a 100755 --- a/cmake_targets/tools/run_epc +++ b/cmake_targets/tools/run_epc @@ -115,30 +115,25 @@ function main() check_for_root_rights set_openair_env - cecho "OPENAIR_HOME = $OPENAIR_HOME" $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 + cecho "OPENAIR_DIR = $OPENAIR_DIR" $green - if [ ! -e $OPENAIR_TARGETS/bin/mme_gw ]; then - echo_fatal "Cannot find $OPENAIR_TARGETS/bin/mme_gw executable, have a look at the output of build_epc executable" + if [ ! -e $OPENAIR_DIR/targets/bin/mme_gw ]; then + echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/mme_gw executable, have a look at the output of build_epc executable" fi if [ $epc_local -eq 1 ]; then - epc_config_file="$OPENAIR_TARGETS/bin/epc.local.enb.conf" + epc_config_file="$OPENAIR_DIR/targets/bin/epc.local.enb.conf" fi exe_arguments="-O $epc_config_file $exe_arguments" if [ $run_gdb -eq 0 ]; then - exec $OPENAIR_TARGETS/bin/mme_gw `echo $exe_arguments` 2>&1 + $OPENAIR_DIR/targets/bin/mme_gw `echo $exe_arguments` 2>&1 else touch ~/.gdb_mme_gw chmod 777 ~/.gdb_mme_gw - echo "file $OPENAIR_TARGETS/bin/mme_gw" > ~/.gdb_mme_gw + echo "file $OPENAIR_DIR/targets/bin/mme_gw" > ~/.gdb_mme_gw echo "set args $exe_arguments " >> ~/.gdb_mme_gw echo "run" >> ~/.gdb_mme_gw cat ~/.gdb_mme_gw diff --git a/cmake_targets/tools/run_hss b/cmake_targets/tools/run_hss index 6faa6870cf24c866a4f0065f2ee3f3aca99e213b..45025854b20b642bd173c68723d8d4e70a18c4a7 100755 --- a/cmake_targets/tools/run_hss +++ b/cmake_targets/tools/run_hss @@ -83,7 +83,7 @@ function main() check_for_root_rights set_openair_env - cecho "OPENAIR_HOME = $OPENAIR_HOME" $green + cecho "OPENAIR_DIR = $OPENAIR_DIR" $green cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green