Commit 19bfa12c authored by Lionel Gauthier's avatar Lionel Gauthier

branch LG_PRE_RELEASE_0.3 reintegration

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7108 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 8fbd1a22
This diff is collapsed.
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE # Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
# #
################################################################################ ################################################################################
# file build_cmake.bash # file build_helper
# brief # brief
# author Laurent Thomas # author Laurent Thomas
# #
...@@ -65,53 +65,7 @@ echo_warning() { cecho "$*" $yellow ;} ...@@ -65,53 +65,7 @@ echo_warning() { cecho "$*" $yellow ;}
echo_success() { cecho "$*" $green ;} echo_success() { cecho "$*" $green ;}
echo_info() { cecho "$*" $blue ;} 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 # Cleaners
...@@ -141,7 +95,7 @@ clean_kernel() { ...@@ -141,7 +95,7 @@ clean_kernel() {
clean_all_files() { clean_all_files() {
set_openair_env set_openair_env
dir=$OPENAIR_DIR/cmake_targets 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/lte_build_oai $dir/lte-simulators/build
rm -rf $dir/epc_build_oai/build $dir/epc_build_oai/CMakeLists.txt 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 rm -rf $dir/oaisim_build_oai/build $dir/oaisim_build_oai/CMakeLists.txt
...@@ -184,7 +138,7 @@ make_one_cert() { ...@@ -184,7 +138,7 @@ make_one_cert() {
make_certs(){ make_certs(){
fqdn=$1 fqdn=$1
certs_dir=/usr/local/etc/freeDiameter certs_dir=$FREEDIAMETER_PREFIX/freeDiameter
# certificates are stored in diameter config directory # certificates are stored in diameter config directory
if [ ! -d $certs_dir ]; then if [ ! -d $certs_dir ]; then
echo "Creating non existing directory: $certs_dir" echo "Creating non existing directory: $certs_dir"
...@@ -244,9 +198,9 @@ install_gnutls_from_source(){ ...@@ -244,9 +198,9 @@ install_gnutls_from_source(){
rm -rf /tmp/gnutls-3.1.23.tar.xz /tmp/gnutls-3.1.23 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 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 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 wget http://www.freediameter.net/hg/freeDiameter/archive/1.1.5.tar.gz
tar xzf 1.1.5.tar.gz tar xzf 1.1.5.tar.gz
...@@ -262,6 +216,24 @@ install_freediameter_from_source() { ...@@ -262,6 +216,24 @@ install_freediameter_from_source() {
rm -rf /tmp/1.1.5.tar.gz /tmp/freeDiameter-1.1.5 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(){ check_install_usrp_uhd_driver(){
v=$(lsb_release -cs) v=$(lsb_release -cs)
$SUDO apt-add-repository "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/$v $v main" $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() { ...@@ -339,6 +311,7 @@ check_install_oai_software() {
libxml2 \ libxml2 \
libxml2-dev \ libxml2-dev \
linux-headers-`uname -r` \ linux-headers-`uname -r` \
mscgen \
mysql-client \ mysql-client \
mysql-server \ mysql-server \
openssh-client \ openssh-client \
...@@ -456,7 +429,6 @@ set_openair_env(){ ...@@ -456,7 +429,6 @@ set_openair_env(){
openair_path=${openair_path%/openair-cn/*} openair_path=${openair_path%/openair-cn/*}
openair_path=${openair_path%/openair[123]/*} openair_path=${openair_path%/openair[123]/*}
export OPENAIR_DIR=$openair_path export OPENAIR_DIR=$openair_path
export OPENAIR_HOME=$openair_path
export OPENAIR1_DIR=$openair_path/openair1 export OPENAIR1_DIR=$openair_path/openair1
export OPENAIR2_DIR=$openair_path/openair2 export OPENAIR2_DIR=$openair_path/openair2
export OPENAIR3_DIR=$openair_path/openair3 export OPENAIR3_DIR=$openair_path/openair3
......
#!/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 "$@"
#!/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 "$@"
#!/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 "$@"
#!/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 "$@"
...@@ -26,7 +26,7 @@ MME : ...@@ -26,7 +26,7 @@ MME :
S6A : S6A :
{ {
S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/epc_s6a.conf"; S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/mme_fd.conf";
HSS_HOSTNAME = "@HSS_HOSTNAME@"; HSS_HOSTNAME = "@HSS_HOSTNAME@";
}; };
......
...@@ -26,7 +26,7 @@ MME : ...@@ -26,7 +26,7 @@ MME :
S6A : S6A :
{ {
S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/epc_s6a.conf"; S6A_CONF = "@FREEDIAMETER_PATH@/../etc/freeDiameter/mme_fd.conf";
HSS_HOSTNAME = "@HSS_HOSTNAME@"; HSS_HOSTNAME = "@HSS_HOSTNAME@";
}; };
...@@ -117,8 +117,8 @@ P-GW = ...@@ -117,8 +117,8 @@ P-GW =
PGW_INTERFACE_NAME_FOR_S5_S8 = "none"; PGW_INTERFACE_NAME_FOR_S5_S8 = "none";
PGW_IPV4_ADDRESS_FOR_S5_S8 = "0.0.0.0/24"; PGW_IPV4_ADDRESS_FOR_S5_S8 = "0.0.0.0/24";
PGW_INTERFACE_NAME_FOR_SGI = "eth1"; PGW_INTERFACE_NAME_FOR_SGI = "eth0";
PGW_IPV4_ADDRESS_FOR_SGI = "192.168.13.82/24"; PGW_IPV4_ADDRESS_FOR_SGI = "192.168.14.17/24";
# Option available only if GTPU in kernel configured # Option available only if GTPU in kernel configured
PGW_MASQUERADE_SGI = "yes"; PGW_MASQUERADE_SGI = "yes";
}; };
......
################################################################################
# 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.
# 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
#!/bin/bash
function main()
{
mkdir -p $1 mkdir -p $1
cd $1 cd $1
shift shift
...@@ -26,3 +29,6 @@ awk ' ...@@ -26,3 +29,6 @@ awk '
END { END {
print "#endif "; print "#endif ";
} ' $1 > asn1_constants.h } ' $1 > asn1_constants.h
}
main "$@"
#!/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 "$@"
#!/bin/bash #!/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` PCI=`lspci -m | grep Xilinx`
if [ -z "$PCI" ]; then if [ -z "$PCI" ]; then
echo "No card found. Stopping!" echo "No card found. Stopping!"
...@@ -12,17 +28,6 @@ SLOT_NUMBER=`echo $config_reg | awk -F\" '{print $1}'` ...@@ -12,17 +28,6 @@ SLOT_NUMBER=`echo $config_reg | awk -F\" '{print $1}'`
sudo setpci -s $SLOT_NUMBER 60.b=10 sudo setpci -s $SLOT_NUMBER 60.b=10
done 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 load_module $OPENAIR_DIR/targets/bin/openair_rf.ko
sleep 1 sleep 1
...@@ -41,3 +46,6 @@ else ...@@ -41,3 +46,6 @@ else
echo 'No corresponding firmware found' echo 'No corresponding firmware found'
return return
fi fi
}
main "$@"
...@@ -87,7 +87,7 @@ function main() ...@@ -87,7 +87,7 @@ function main()
echo_fatal "config file $CONFIG_FILE not found" echo_fatal "config file $CONFIG_FILE not found"
fi fi
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; shift 2;
;; ;;
-g | --gdb) -g | --gdb)
...@@ -105,10 +105,12 @@ function main() ...@@ -105,10 +105,12 @@ function main()
# can omit file name if last arg on the line # can omit file name if last arg on the line
if [ "x$ITTI_DUMP_FILE" = "x" ]; then if [ "x$ITTI_DUMP_FILE" = "x" ]; then
ITTI_DUMP_FILE="/tmp/enb_s1_exmimo_itti.log" ITTI_DUMP_FILE="/tmp/enb_s1_exmimo_itti.log"
shift 1;
else
shift 2;
fi fi
echo "setting ITTI dump file to: $ITTI_DUMP_FILE" echo "setting ITTI dump file to: $ITTI_DUMP_FILE"
exe_arguments="$exe_arguments -K $ITTI_DUMP_FILE" exe_arguments="$exe_arguments -K $ITTI_DUMP_FILE"
shift 2;
;; ;;
-M | --target-dl-mcs) -M | --target-dl-mcs)
echo "setting target dl MCS to $2" echo "setting target dl MCS to $2"
...@@ -143,25 +145,19 @@ function main() ...@@ -143,25 +145,19 @@ function main()
esac esac
done done
check_for_root_rights
set_openair_env 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
cecho "OPENAIRCN_DIR = $OPENAIRCN_DIR" $green
cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green
if [ ! -e $OPENAIR_TARGETS/bin/lte-softmodem ]; then if [ ! -e $OPENAIR_DIR/targets/bin/lte-softmodem ]; then
echo_fatal "Cannot find $OPENAIR_TARGETS/bin/lte-softmodem executable" echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/lte-softmodem executable"
fi fi
if [ ! -e $OPENAIR_TARGETS/bin/updatefw ]; then if [ ! -e $OPENAIR_DIR/targets/bin/updatefw ]; then
echo_fatal "Cannot find $OPENAIR_TARGETS/bin/updatefw executable" echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/updatefw executable"
fi fi
if [ ! -e $OPENAIR_TARGETS/bin/openair_rf.ko ]; then if [ ! -e $OPENAIR_DIR/targets/bin/openair_rf.ko ]; then
echo_fatal "Cannot find $OPENAIR_TARGETS/bin/openair_rf.ko kernel module" echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/openair_rf.ko kernel module"
fi fi
for i in `seq 0 64`; do for i in `seq 0 64`; do
...@@ -171,14 +167,14 @@ function main() ...@@ -171,14 +167,14 @@ function main()
fi; fi;
done done
$THIS_SCRIPT_PATH/init_exmimo2.sh $THIS_SCRIPT_PATH/init_exmimo2
if [ $run_gdb -eq 0 ]; then 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 else
touch ~/.gdb_lte_softmodem touch ~/.gdb_lte_softmodem
chmod 777 ~/.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 "set args $exe_arguments" >> ~/.gdb_lte_softmodem
echo "run" >> ~/.gdb_lte_softmodem echo "run" >> ~/.gdb_lte_softmodem
cat ~/.gdb_lte_softmodem cat ~/.gdb_lte_softmodem
......
...@@ -115,30 +115,25 @@ function main() ...@@ -115,30 +115,25 @@ function main()
check_for_root_rights check_for_root_rights
set_openair_env 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
cecho "OPENAIRCN_DIR = $OPENAIRCN_DIR" $green
cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green
if [ ! -e $OPENAIR_TARGETS/bin/mme_gw ]; then if [ ! -e $OPENAIR_DIR/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" echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/mme_gw executable, have a look at the output of build_epc executable"
fi fi
if [ $epc_local -eq 1 ]; then 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 fi
exe_arguments="-O $epc_config_file $exe_arguments" exe_arguments="-O $epc_config_file $exe_arguments"
if [ $run_gdb -eq 0 ]; then 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 else
touch ~/.gdb_mme_gw touch ~/.gdb_mme_gw
chmod 777 ~/.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 "set args $exe_arguments " >> ~/.gdb_mme_gw
echo "run" >> ~/.gdb_mme_gw echo "run" >> ~/.gdb_mme_gw
cat ~/.gdb_mme_gw cat ~/.gdb_mme_gw
......
...@@ -83,7 +83,7 @@ function main() ...@@ -83,7 +83,7 @@ function main()
check_for_root_rights check_for_root_rights
set_openair_env set_openair_env
cecho "OPENAIR_HOME = $OPENAIR_HOME" $green cecho "OPENAIR_DIR = $OPENAIR_DIR" $green
cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green
cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green
cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment