Unverified Commit 0ad68c28 authored by kharade's avatar kharade

Features added and build scripts updated

parent ffd8794a
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
# author Laurent Thomas, Lionel GAUTHIER, Rohan KHARADE # author Laurent Thomas, Lionel GAUTHIER, Rohan KHARADE
# #
####################################### #######################################
SUPPORTED_DISTRO="Ubuntu 18.04, Ubuntu 20.04, CentOS 7, RHEL 7" SUPPORTED_DISTRO="Ubuntu 18.04, Ubuntu 20.04"
#SUPPORTED_DISTRO="Ubuntu 18.04, Ubuntu 20.04, CentOS 7, RHEL 7" #SUPPORTED_DISTRO="Ubuntu 18.04, Ubuntu 20.04, CentOS 7, RHEL 7"
#SUPPORTED_DISTRO="Ubuntu 18.04" #SUPPORTED_DISTRO="Ubuntu 18.04"
if [ ! -f /etc/os-release ]; then if [ ! -f /etc/os-release ]; then
...@@ -137,43 +137,6 @@ check_supported_distribution() { ...@@ -137,43 +137,6 @@ check_supported_distribution() {
return 1 return 1
} }
###########################
# Cleaners
###########################
#-------------------------------------------------------------------------------
clean_kernel() {
$SUDO modprobe ip_tables
$SUDO modprobe x_tables
$SUDO iptables -P INPUT ACCEPT
$SUDO iptables -F INPUT
$SUDO iptables -P OUTPUT ACCEPT
$SUDO iptables -F OUTPUT
$SUDO iptables -P FORWARD ACCEPT
$SUDO iptables -F FORWARD
$SUDO iptables -t nat -F
$SUDO iptables -t mangle -F
$SUDO iptables -t filter -F
$SUDO iptables -t raw -F
echo_info "Flushed iptables"
}
#-------------------------------------------------------------------------------
disable_ipv6() {
$SUDO sysctl -w net.ipv6.conf.all.disable_ipv6=1
}
#-------------------------------------------------------------------------------
# Compare two versions of software. Returns true if $version is greater than $req_version
# arg1 = version
# arg2 = req_version
#
function version_gt() {
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1";
}
################################### ###################################
# Compilers # Compilers
...@@ -202,99 +165,16 @@ function list_include_item { ...@@ -202,99 +165,16 @@ function list_include_item {
compilations() { compilations() {
echo_info "Compilation log for $1 is here: $dlog/$2.txt" echo_info "Compilation log for $1 is here: $dlog/$2.txt"
cd $OPENAIRCN_DIR/$1/ cd $OPENAIRCN_DIR/$1/
if [ "a$4" == "a1" ]; then
set -o pipefail
{
rm -f $1
make $make_args build $4
} | tee $dlog/$2.txt
else
{
rm -f $1
make $make_args build $4
} > $dlog/$2.txt 2>&1
fi
if [ $? == 0 -a -s $1 ] ; then
echo_success "$2 compiled"
return 0
else
echo_error "$2 compilation failed"
return 1
fi
}
###################################
# make test
###################################
# arg 1 Build directory OPENAIRCN_DIR/build/?/build
# arg 2 Executable target name
# arg 3 Executable name (no path)
# arg 4 Verbose (1 or 0)
make_test() {
echo_success "unit tests start"
cd $OPENAIRCN_DIR/build/$1/build
if [ "a$4" == "a1" ]; then
{ {
make test ARGS="-V" make build
} | tee $dlog/$2_test.txt if grep -q "@@ Installing vpp @@" "/home/rohan/gitrepo/oai-cn5g-upf-vpp/build/log/vpp.txt" ; then
else echo_success "##### VPP Compiled Successfully #####"
{ else
make test echo_error "##### VPP not compiled #####"
} > $dlog/$2_test.txt 2>&1 fi
fi
echo_success "unit tests end"
}
#-------------------------------------------------------------------------------
# arg1 is package name
test_install_package() {
# usage: test_install_package package_name
if [ $# -eq 1 ]; then
dpkg -s "$1" > /dev/null 2>&1 && {
echo "$1 is installed."
} || {
echo "$1 is not installed."
$SUDO apt-get install --force-yes $1
} }
fi
}
#-------------------------------------------------------------------------------
update_package_db() {
if [ ! -f /tmp/no_more_update_package_db ]; then
$SUDO $INSTALLER update
[[ $? -ne 0 ]] && return $?
touch /tmp/no_more_update_package_db
[[ $? -ne 0 ]] && return $?
else
let elapsed_time=$(expr `date +%s` - `stat -c %Y /tmp/no_more_update_package_db`)
if [ $elapsed_time -gt 3600 ]; then
$SUDO $INSTALLER update
[[ $? -ne 0 ]] && return $?
touch /tmp/no_more_update_package_db
[[ $? -ne 0 ]] && return $?
fi
fi
return 0
}
#-------------------------------------------------------------------------------
check_enable_epel_repos() {
# on Enterprise Linuxes, ensure EPEL repos are installed
# (provides: libidn2-devel, vconfig, iperf, phpMyAdmin, dkms, ...)
if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
if rpm -q epel-release > /dev/null; then
echo "EPEL repos already present. Good."
else
echo "EPEL repos not present. Installing them."
$SUDO $INSTALLER install $OPTION https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
fi
fi
} }
################################ ################################
# set_openair_env # set_openair_env
############################### ###############################
......
...@@ -106,9 +106,9 @@ install_dep(){ ...@@ -106,9 +106,9 @@ install_dep(){
GIT_BRANCH=stable/2101 GIT_BRANCH=stable/2101
pushd $OPENAIRCN_DIR/ pushd $OPENAIRCN_DIR/
git clone -b $GIT_BRANCH $GIT_URL git clone -b $GIT_BRANCH $GIT_URL
echo "APT::Get::Assume-Yes "true";" >> /etc/apt/apt.conf.d/90forceyes # echo "APT::Get::Assume-Yes "true";" >> /etc/apt/apt.conf.d/90forceyes
echo "APT::Get::force-yes "true";" >> /etc/apt/apt.conf.d/90forceyes # echo "APT::Get::force-yes "true";" >> /etc/apt/apt.conf.d/90forceyes
cd vpp && git checkout -b downstream && make install-ext-dep cd vpp && make install-ext-dep
return 0 return 0
} }
...@@ -134,7 +134,7 @@ add_Travelping_upf_plugin(){ ...@@ -134,7 +134,7 @@ add_Travelping_upf_plugin(){
apply_patches(){ apply_patches(){
echo_info "Applying patches to VPP UPG" echo_info "Applying patches to VPP UPG"
cp -r $OPENAIRCN_DIR/docker/patches/* $OPENAIRCN_DIR/vpp/patches cp -r $OPENAIRCN_DIR/scripts/patches/* $OPENAIRCN_DIR/vpp/patches
cd $OPENAIRCN_DIR/vpp/patches cd $OPENAIRCN_DIR/vpp/patches
find . -iname '*.patch' -execdir sh -c 'patch -p1 -N -d $OPENAIRCN_DIR/vpp/ < $0' {} \; find . -iname '*.patch' -execdir sh -c 'patch -p1 -N -d $OPENAIRCN_DIR/vpp/ < $0' {} \;
} }
...@@ -142,7 +142,8 @@ apply_patches(){ ...@@ -142,7 +142,8 @@ apply_patches(){
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
vpp_upf_init(){ vpp_upf_init(){
echo_info "VPP UPG initializing" echo_info "VPP UPG initializing"
cp $OPENAIRCN_DIR/docker/configs/startup_debug.conf $OPENAIRCN_DIR/vpp cp $OPENAIRCN_DIR/scripts/upf_conf/* $OPENAIRCN_DIR/vpp
cp $OPENAIRCN_DIR/docker/configs/run.sh $OPENAIRCN_DIR/vpp cp $OPENAIRCN_DIR/scripts/run.sh $OPENAIRCN_DIR/vpp
cp $OPENAIRCN_DIR/vpp/build-root/install-vpp_debug-native/vpp/lib/ /usr/lib/x86_64-linux-gnu/vpp_plugins/ echo_info "Installing VPP"
sudo cp -rf $OPENAIRCN_DIR/vpp/build-root/install-vpp_debug-native/vpp/lib/ /usr/lib/x86_64-linux-gnu/vpp_plugins/
} }
...@@ -44,7 +44,7 @@ function help() ...@@ -44,7 +44,7 @@ function help()
echo_error " " echo_error " "
echo_error "Options:" echo_error "Options:"
echo_error "Mandatory arguments to long options are mandatory for short options too." echo_error "Mandatory arguments to long options are mandatory for short options too."
echo_error " -b, --build-type Build type as defined in Makefile, allowed values are: Debug Release RelWithDebInfo MinSizeRel" # echo_error " -b, --build-type Build type as defined in Makefile, allowed values are: Debug Release"
echo_error " -c, --clean Clean the build generated files: config, object, executable files (build from scratch)" echo_error " -c, --clean Clean the build generated files: config, object, executable files (build from scratch)"
echo_error " -f, --force No interactive script for installation of software packages." echo_error " -f, --force No interactive script for installation of software packages."
echo_error " -h, --help Print this help." echo_error " -h, --help Print this help."
...@@ -183,7 +183,6 @@ function main() ...@@ -183,7 +183,6 @@ function main()
cd ./vpp cd ./vpp
add_Travelping_upf_plugin add_Travelping_upf_plugin
vpp_upf_init
compilations vpp vpp $OPENAIRCN_DIR/vpp $verbose compilations vpp vpp $OPENAIRCN_DIR/vpp $verbose
vpp_upf_init vpp_upf_init
ret=$?;[[ $ret -ne 0 ]] && return $ret ret=$?;[[ $ret -ne 0 ]] && return $ret
......
#!/bin/bash
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
function usage {
echo "OAI Coding / Formatting Guideline Check script"
echo " Original Author: Raphael Defosseux"
echo ""
echo " Requirement: clang-format / git shall be installed"
echo ""
echo " By default (no options) the complete repository will be checked"
echo " In case of merge/pull request, provided source and target branch,"
echo " the script will check only the modified files"
echo ""
echo "Usage:"
echo "------"
echo " checkCodingFormattingRules.sh [OPTIONS]"
echo ""
echo "Options:"
echo "--------"
echo " --src-branch #### OR -sb ####"
echo " Specify the source branch of the merge request."
echo ""
echo " --target-branch #### OR -tb ####"
echo " Specify the target branch of the merge request (usually develop)."
echo ""
echo " --help OR -h"
echo " Print this help message."
echo ""
}
if [ $# -ne 4 ] && [ $# -ne 1 ] && [ $# -ne 0 ]
then
echo "Syntax Error: not the correct number of arguments"
echo ""
usage
exit 1
fi
cd src
if [ $# -eq 0 ]
then
echo " ---- Checking the whole repository ----"
echo ""
if [ -f oai_rules_result.txt ]
then
rm -f oai_rules_result.txt
fi
if [ -f oai_rules_result_list.txt ]
then
rm -f oai_rules_result_list.txt
fi
EXTENSION_LIST=("h" "hpp" "c" "cpp")
NB_TO_FORMAT=0
NB_TOTAL=0
for EXTENSION in ${EXTENSION_LIST[@]}
do
echo "Checking for all files with .${EXTENSION} extension"
FILE_LIST=`tree -n --noreport -i -f -P *.${EXTENSION} | sed -e 's#^\./##' | grep "\.${EXTENSION}"`
for FILE_TO_CHECK in ${FILE_LIST[@]}
do
TO_FORMAT=`clang-format -output-replacements-xml ${FILE_TO_CHECK} 2>&1 | grep -v replacements | grep -c replacement`
NB_TOTAL=$((NB_TOTAL + 1))
if [ $TO_FORMAT -ne 0 ]
then
NB_TO_FORMAT=$((NB_TO_FORMAT + 1))
# In case of full repo, being silent
#echo "src/$FILE_TO_CHECK"
echo "src/$FILE_TO_CHECK" >> ./oai_rules_result_list.txt
fi
done
done
echo "Nb Files that do NOT follow OAI rules: $NB_TO_FORMAT over $NB_TOTAL checked!"
echo "NB_FILES_FAILING_CHECK=$NB_TO_FORMAT" > ./oai_rules_result.txt
echo "NB_FILES_CHECKED=$NB_TOTAL" >> ./oai_rules_result.txt
exit 0
fi
checker=0
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-h|--help)
shift
usage
exit 0
;;
-sb|--src-branch)
SOURCE_BRANCH="$2"
let "checker|=0x1"
shift
shift
;;
-tb|--target-branch)
TARGET_BRANCH="$2"
let "checker|=0x2"
shift
shift
;;
*)
echo "Syntax Error: unknown option: $key"
echo ""
usage
exit 1
esac
done
if [ $checker -ne 3 ]
then
echo "Source Branch is : $SOURCE_BRANCH"
echo "Target Branch is : $TARGET_BRANCH"
echo ""
echo "Syntax Error: missing option"
echo ""
usage
exit 1
fi
# Merge request scenario
MERGE_COMMMIT=`git log -n1 --pretty=format:%H`
if [ -f .git/refs/remotes/origin/$TARGET_BRANCH ]
then
TARGET_INIT_COMMIT=`cat .git/refs/remotes/origin/$TARGET_BRANCH`
else
TARGET_INIT_COMMIT=`git log -n1 --pretty=format:%H origin/$TARGET_BRANCH`
fi
echo " ---- Checking the modified files by the merge request ----"
echo ""
echo "Source Branch is : $SOURCE_BRANCH"
echo "Target Branch is : $TARGET_BRANCH"
echo "Merged Commit is : $MERGE_COMMMIT"
echo "Target Init is : $TARGET_INIT_COMMIT"
echo ""
echo " ----------------------------------------------------------"
echo ""
# Retrieve the list of modified files since the latest develop commit
MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | egrep "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq`
NB_TO_FORMAT=0
NB_TOTAL=0
if [ -f oai_rules_result.txt ]
then
rm -f oai_rules_result.txt
fi
if [ -f oai_rules_result_list.txt ]
then
rm -f oai_rules_result_list.txt
fi
for FULLFILE in $MODIFIED_FILES
do
filename=$(basename -- "$FULLFILE")
EXT="${filename##*.}"
if [ $EXT = "c" ] || [ $EXT = "h" ] || [ $EXT = "cpp" ] || [ $EXT = "hpp" ]
then
SRC_FILE=`echo $FULLFILE | sed -e "s#src/##"`
TO_FORMAT=`clang-format -output-replacements-xml ${SRC_FILE} 2>&1 | grep -v replacements | grep -c replacement`
NB_TOTAL=$((NB_TOTAL + 1))
if [ $TO_FORMAT -ne 0 ]
then
NB_TO_FORMAT=$((NB_TO_FORMAT + 1))
echo $FULLFILE
echo $FULLFILE >> ./oai_rules_result_list.txt
fi
fi
done
echo ""
echo " ----------------------------------------------------------"
echo "Nb Files that do NOT follow OAI rules: $NB_TO_FORMAT over $NB_TOTAL checked!"
echo "NB_FILES_FAILING_CHECK=$NB_TO_FORMAT" > ./oai_rules_result.txt
echo "NB_FILES_CHECKED=$NB_TOTAL" >> ./oai_rules_result.txt
exit 0
#!/bin/bash
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
exit -1
User Plane Gateway (UPG) based on VPP
=====================================
UPG implements a GTP-U user plane based on [3GPP TS 23.214][TS23214]
and [3GPP TS 29.244][TS29244] Release 15 & 16. It is implemented as an
out-of-tree plugin for [FD.io VPP][VPP].
UPG is project by Travelping GmbH and more official information please visit [UPG github page](https://github.com/travelping/upg-vpp)
* VPP_BRANCH = stable/2101
* VPP_RELEASE = v21.01
#### Supported Features
* PFCP protocol
* en/decoding of most IEs
* heartbeat
* node related messages
* session related messages
* Uplink and Downlink Packet Detection Rules (PDR) and
Forward Action Rules (FAR) -- (some parts)
* IPv4 -- inner and outer
* IPv6 -- inner and outer
* Usage Reporting Rules (URR)
* PFCP Session Reports
* Linked Usage Reports
* GTP Extension Header (partial)
No yet working
--------------
* Buffer Action Rules (BAR)
* QoS Enforcement Rule (QER)
Limitations
-----------
* FAR action with destination LI are not implemented
* Ethernet bearer support
...@@ -18,13 +18,18 @@ $ git checkout vpp-upf ...@@ -18,13 +18,18 @@ $ git checkout vpp-upf
### Install VPP-UPF software dependencies ### Install VPP-UPF software dependencies
```bash ```bash
ubuntu@test-upf:~$ cd oai-cn5g-upf-vpp/ $ cd oai-cn5g-upf-vpp/
ubuntu@test-upf:~/oai-cn5g-upf-vpp$ cd ./build/scripts /oai-cn5g-upf-vpp$ cd ./build/scripts
ubuntu@test-upf:~/oai-cn5g-upf-vpp/build/scripts$ ./build_vpp_upf -I -f /oai-cn5g-upf-vpp/build/scripts$ ./build_vpp_upf -I -f
``` ```
### Build VPP-UPF ### Build VPP-UPF
```bash ```bash
ubuntu@test-upf:~/oai-cn5g-upf-vpp/build/scripts$ ./build_vpp_upf -c -V -b Debug /oai-cn5g-upf-vpp/build/scripts$ ./build_vpp_upf -c -V
```
### Wipe VPP source
```bash
/oai-cn5g-upf-vpp/build/scripts$ ./build_vpp_upf -w
``` ```
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