Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
spbro
OpenXG-RAN
Commits
b243f031
Commit
b243f031
authored
Jun 17, 2014
by
Lionel Gauthier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
git-svn-id:
http://svn.eurecom.fr/openair4G/trunk@5402
818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent
df0c2ed1
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
226 additions
and
596 deletions
+226
-596
targets/PROJECTS/GENERIC-LTE-EPC/utils.bash
targets/PROJECTS/GENERIC-LTE-EPC/utils.bash
+176
-582
targets/PROJECTS/GENERIC-LTE-EPC/virtual_box.bash
targets/PROJECTS/GENERIC-LTE-EPC/virtual_box.bash
+50
-14
No files found.
targets/PROJECTS/GENERIC-LTE-EPC/utils.bash
View file @
b243f031
...
...
@@ -35,55 +35,6 @@
# company Eurecom
# email: lionel.gauthier@eurecom.fr
#
cidr2mask
()
{
local
i
mask
=
""
local
full_octets
=
$((
$1
/
8
))
local
partial_octet
=
$((
$1
%
8
))
for
((
i
=
0
;
i<4
;
i+
=
1
))
;
do
if
[
$i
-lt
$full_octets
]
;
then
mask+
=
255
elif
[
$i
-eq
$full_octets
]
;
then
mask+
=
$((
256
-
2
**(
8
-
$partial_octet
))
)
else
mask+
=
0
fi
test
$i
-lt
3
&&
mask+
=
.
done
echo
$mask
}
# example: netcalc 192.168.12.100 255.255.255.0
netcalc
(){
local
IFS
=
'.'
ip i
local
-a
oct msk
read
-ra
oct
<<<
"
$1
"
read
-ra
msk
<<<
"
$2
"
for
i
in
${
!oct[@]
}
;
do
ip+
=(
"
$((
oct[i]
&
msk[i]
))
"
)
done
echo
"
${
ip
[*]
}
"
}
# example: s
bcastcalc
(){
local
IFS
=
'.'
ip i
local
-a
oct msk
read
-ra
oct
<<<
"
$1
"
read
-ra
msk
<<<
"
$2
"
for
i
in
${
!oct[@]
}
;
do
ip+
=(
"
$((
oct[i]
+
(
255
-
(
oct[i]
|
msk[i]
)
)
))
"
)
done
echo
"
${
ip
[*]
}
"
}
black
=
'\E[30m'
red
=
'\E[31m'
...
...
@@ -355,566 +306,164 @@ check_for_root_rights() {
}
is_real_interface
()
{
my_bool
=
1
for
var
in
"
$@
"
do
if
[
"a
$var
"
==
"a"
]
;
then
return
0
fi
if
[
"a
$var
"
==
"anone"
]
;
then
return
0
fi
IF
=
`
cat
/etc/udev/rules.d/70-persistent-net.rules |
grep
$var
|
sed
's/^.*NAME=//'
|
tr
-d
'"'
`
if
[
"
$IF
"
==
"
$var
"
]
;
then
if
[
"a
${
var
:0:3
}
"
!=
"aeth"
]
;
then
if
[
"a
${
var
:0:4
}
"
!=
"awlan"
]
;
then
if
[
"a
${
var
:0:4
}
"
!=
"awifi"
]
;
then
my_bool
=
0
;
fi
fi
fi
fi
done
return
$my_bool
}
is_vlan_interface
()
{
my_bool
=
1
for
var
in
"
$@
"
do
if
[
"a
$var
"
==
"a"
]
;
then
return
0
start_openswitch_daemon
()
{
rmmod
-s
bridge
if
[[
-e
"/lib/modules/
`
uname
-r
`
/extra/openvswitch.ko"
]]
;
then
bash_exec
"insmod /lib/modules/
`
uname
-r
`
/extra/openvswitch.ko"
>
/dev/null 2>&1
else
echo_error
"/lib/modules/
`
uname
-r
`
/extra/openvswitch.ko not found"
bash
$OPENAIRCN_DIR
/SCRIPTS/install_openvswitch1.9.0.bash
fi
if
[[
$var
==
*
.
*
]]
is_process_started
"ovsdb-server"
if
[
$?
-ne
0
]
then
interface_name
=
`
echo
$var
|
cut
-f1
-d
'.'
`
vlan
=
`
echo
$var
|
cut
-f2
-d
'.'
`
IF
=
`
cat
/etc/udev/rules.d/70-persistent-net.rules |
grep
$interface_name
|
sed
's/^.*NAME=//'
|
tr
-d
'"'
`
if
[
"
$IF
"
==
"
$interface_name
"
]
;
then
if
[
"a
${
interface_name
:0:3
}
"
!=
"aeth"
]
;
then
if
[
"a
${
interface_name
:0:4
}
"
!=
"awlan"
]
;
then
if
[
"a
${
interface_name
:0:4
}
"
!=
"awifi"
]
;
then
return
0
;
ovsdb-server
--remote
=
punix:/usr/local/var/run/openvswitch/db.sock
--remote
=
db:Open_vSwitch,manager_options
--pidfile
--detach
wait_process_started
"ovsdb-server"
fi
# To be done after installation
# ovs-vsctl --no-wait init
is_process_started
"ovs-vswitchd"
if
[
$?
-ne
0
]
then
ovs-vswitchd
--pidfile
--detach
wait_process_started
"ovs-vswitchd"
fi
fi
fi
else
return
0
;
fi
done
return
$my_bool
}
is_tun_interface
()
{
my_bool
=
1
for
var
in
"
$@
"
do
if
[
"a
$var
"
==
"a"
]
;
then
return
0
stop_openswitch_daemon
()
{
pkill ovs-vswitchd
pkill ovsdb-server
sync
if
!
is_process_started ovs-vswitchd
;
then
pkill
-9
ovs-vswitchd
fi
bus_info
=
`
ethtool
-i
$var
`
if
[[
"
$IF
"
!=
*
tun
*
]]
;
then
return
0
;
if
!
is_process_started ovsdb-server
;
then
pkill
-9
ovsdb-server
fi
done
return
$my_bool
rmmod
-f
openvswitch
}
delete_tun_interface
()
{
is_tun_interface
$1
if
[
$?
-eq
1
]
;
then
ip
link set
$1
down
>
/dev/null 2>&1
openvpn
--mktun
--dev
$1
>
/dev/null 2>&1
check_s6a_certificate
()
{
if
[
-d
/usr/local/etc/freeDiameter
]
then
if
[
-f
/usr/local/etc/freeDiameter/user.cert.pem
]
then
full_hostname
=
`
cat
/usr/local/etc/freeDiameter/user.cert.pem |
grep
"Subject"
|
grep
"CN"
|
cut
-d
'='
-f6
`
if
[
a
$full_hostname
==
a
`
hostname
`
.eur
]
then
echo_success
"S6A: Found valid certificate in /usr/local/etc/freeDiameter"
return
1
fi
fi
fi
echo_error
"S6A: Did not find valid certificate in /usr/local/etc/freeDiameter"
echo_warning
"S6A: generatting new certificate in /usr/local/etc/freeDiameter..."
cd
$OPENAIRCN_DIR
/S6A/freediameter
./make_certs.sh
check_s6a_certificate
return
1
}
create_tun_interface
()
{
openvpn
--mktun
--dev
$1
#ip link set $1 up
}
# arg1 = interface name
# arg2 = ipv4 addr cidr
# arg3 = netmask cidr
set_interface_up
()
{
interface
=
$1
address
=
$2
cidr_netmask
=
$3
bash_exec
"ifconfig
$interface
up"
sync
netmask
=
`
cidr2mask
$cidr_netmask
`
broadcast
=
`
bcastcalc
$address
$netmask
`
bash_exec
"ip -4 addr add
$address
/
$cidr_netmask
broadcast
$broadcast
dev
$interface
"
sync
}
build_enb_vlan_network
()
{
# create vlan interface
is_vlan_interface
$ENB_INTERFACE_NAME_FOR_S1_MME
if
[
$?
-eq
1
]
;
then
interface_name
=
`
echo
$ENB_INTERFACE_NAME_FOR_S1_MME
|
cut
-f1
-d
'.'
`
vlan
=
`
echo
$ENB_INTERFACE_NAME_FOR_S1_MME
|
cut
-f2
-d
'.'
`
ifconfig
$ENB_INTERFACE_NAME_FOR_S1_MME
down
>
/dev/null 2>&1
vconfig rem
$ENB_INTERFACE_NAME_FOR_S1_MME
>
/dev/null 2>&1
sync
bash_exec
"vconfig add
$interface_name
$vlan
"
sync
#bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1_MME up"
#sync
#bash_exec "ip -4 addr add $ENB_IPV4_ADDRESS_FOR_S1_MME/$ENB_IPV4_NETMASK_FOR_S1_MME dev $ENB_INTERFACE_NAME_FOR_S1_MME"
set_interface_up
$ENB_INTERFACE_NAME_FOR_S1_MME
$ENB_IPV4_ADDRESS_FOR_S1_MME
$ENB_IPV4_NETMASK_FOR_S1_MME
else
echo_fatal
"BAD INTERFACE NAME FOR ENB S1-MME
$ENB_INTERFACE_NAME_FOR_S1_MME
"
' (waiting for ethx.y, wlanx.y or wifix.y)'
fi
;
is_vlan_interface
$ENB_INTERFACE_NAME_FOR_S1U
if
[
$?
-eq
1
]
;
then
interface_name
=
`
echo
$ENB_INTERFACE_NAME_FOR_S1U
|
cut
-f1
-d
'.'
`
vlan
=
`
echo
$ENB_INTERFACE_NAME_FOR_S1U
|
cut
-f2
-d
'.'
`
ifconfig
$ENB_INTERFACE_NAME_FOR_S1U
down
>
/dev/null 2>&1
vconfig rem
$ENB_INTERFACE_NAME_FOR_S1U
>
/dev/null 2>&1
sync
bash_exec
"vconfig add
$interface_name
$vlan
"
sync
#bash_exec "ifconfig $ENB_INTERFACE_NAME_FOR_S1U up"
#sync
#bash_exec "ip -4 addr add $ENB_IPV4_ADDRESS_FOR_S1U/$ENB_IPV4_NETMASK_FOR_S1U dev $ENB_INTERFACE_NAME_FOR_S1U"
set_interface_up
$ENB_INTERFACE_NAME_FOR_S1U
$ENB_IPV4_ADDRESS_FOR_S1U
$ENB_IPV4_NETMASK_FOR_S1U
sync
else
echo_fatal
"BAD INTERFACE NAME FOR ENB S1U
$ENB_INTERFACE_NAME_FOR_S1U
"
' (waiting for ethx.y, wlanx.y or wifix.y)'
fi
;
}
clean_enb_vlan_network
()
{
is_vlan_interface
$ENB_INTERFACE_NAME_FOR_S1_MME
if
[
$?
-eq
1
]
;
then
echo_success
"Found VLAN interface
$ENB_INTERFACE_NAME_FOR_S1_MME
... deleting"
ifconfig
$ENB_INTERFACE_NAME_FOR_S1_MME
down
>
/dev/null 2>&1
vconfig rem
$ENB_INTERFACE_NAME_FOR_S1_MME
>
/dev/null 2>&1
fi
;
is_vlan_interface
$ENB_INTERFACE_NAME_FOR_S1U
if
[
$?
-eq
1
]
;
then
echo_success
"Found VLAN interface
$ENB_INTERFACE_NAME_FOR_S1U
... deleting"
ifconfig
$ENB_INTERFACE_NAME_FOR_S1U
down
>
/dev/null 2>&1
vconfig rem
$ENB_INTERFACE_NAME_FOR_S1U
>
/dev/null 2>&1
fi
;
sync
;
clean_network
generate_ssh_keys
()
{
ssh-keygen
-t
dsa
}
test_enb_vlan_network
()
{
# TEST INTERFACES
#ping -q -c 1 $MME_IPV4_ADDRESS_FOR_S1_MME > /dev/null 2>&1
#if [ $? -ne 0 ]; then echo_fatal "PING MME S1_MME ERROR, ADDRESS IS $MME_IPV4_ADDRESS_FOR_S1_MME"; fi;
#ping -q -c 1 $SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP > /dev/null 2>&1
#if [ $? -ne 0 ]; then echo_fatal "PING SGW S1U ERROR, ADDRESS IS $SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP"; fi;
return
0
# arg 1 is dest machine
copy_ssh_keys
()
{
ssh-copy-id
-i
~/.ssh/id_dsa.pub
$LOGNAME
@
$1
}
# arg 1 is mysql user (root)
# arg 2 is mysql password (linux)
create_hss_database
(){
EXPECTED_ARGS
=
2
E_BADARGS
=
65
MYSQL
=
`
which mysql
`
build_mme_spgw_vlan_network
()
{
# hss.eur
# |
# +-----------+ +-----------+ v +----------+
# | eNB +------+ VLAN 1+------+ MME +----+ +---+ HSS |
# | |ethx.1+------------------+ethy.1| | +------+ | |
# | +------+ +------+ +----+ +---+ |
# | |ethx.2+-------+ | | +----------+
# | +------+ | +-+-------+-+
# | | | | s11mme|
# | | | +---+---+
# | | | (optional)| VLAN 3
# +-----------+ | +---+---+
# | | s11sgw| router.eur
# | +-+-------+-+ | +--------------+
# | | S+P-GW | v | ROUTER |
# | VLAN2 +------+ +-------+ +----+ +----+
# +----------+ethy.2| |sgi +-...-+ | | +---...Internet
# +------+ +-------+ +----+ +----+
# | | 11 VLANS | |
# +-----------+ ids=[5..15] +--------------+
if
[
$#
-ne
$EXPECTED_ARGS
]
then
echo_fatal
"Usage:
$0
dbuser dbpass"
fi
bash_exec
"modprobe 8021q"
set_openair
# create vlan interface
is_vlan_interface
$MME_INTERFACE_NAME_FOR_S1_MME
if
[
$?
-eq
1
]
;
then
interface_name
=
`
echo
$MME_INTERFACE_NAME_FOR_S1_MME
|
cut
-f1
-d
'.'
`
vlan
=
`
echo
$MME_INTERFACE_NAME_FOR_S1_MME
|
cut
-f2
-d
'.'
`
ifconfig
$MME_INTERFACE_NAME_FOR_S1_MME
down
>
/dev/null 2>&1
vconfig rem
$MME_INTERFACE_NAME_FOR_S1_MME
>
/dev/null 2>&1
sync
bash_exec
"vconfig add
$interface_name
$vlan
"
sync
#bash_exec "ifconfig $MME_INTERFACE_NAME_FOR_S1_MME up"
#sync
#"bash_exec "ip -4 addr add $MME_IPV4_ADDRESS_FOR_S1_MME/$MME_IPV4_NETMASK_FOR_S1_MME dev $MME_INTERFACE_NAME_FOR_S1_MME"
set_interface_up
$MME_INTERFACE_NAME_FOR_S1_MME
$MME_IPV4_ADDRESS_FOR_S1_MME
$MME_IPV4_NETMASK_FOR_S1_MME
else
echo_fatal
"BAD INTERFACE NAME FOR SGW S1-MME
$MME_INTERFACE_NAME_FOR_S1_MME
"
' (waiting for ethx.y, wlanx.y or wifix.y)'
fi
;
is_vlan_interface
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
if
[
$?
-eq
1
]
;
then
interface_name
=
`
echo
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
|
cut
-f1
-d
'.'
`
vlan
=
`
echo
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
|
cut
-f2
-d
'.'
`
ifconfig
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
down
>
/dev/null 2>&1
vconfig rem
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
>
/dev/null 2>&1
sync
bash_exec
"vconfig add
$interface_name
$vlan
"
sync
#bash_exec "ifconfig $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP up"
#sync
#bash_exec "ip -4 addr add $SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP/$SGW_IPV4_NETMASK_FOR_S1U_S12_S4_UP dev $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP"
#sync
set_interface_up
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
$SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
$SGW_IPV4_NETMASK_FOR_S1U_S12_S4_UP
Q1
=
"CREATE DATABASE IF NOT EXISTS
${
BTICK
}
oai_db
${
BTICK
}
;"
SQL
=
"
${
Q1
}
"
$MYSQL
-u
$1
--password
=
$2
-e
"
$SQL
"
if
[
$?
-ne
0
]
;
then
echo_error
"oai_db creation failed"
else
echo_fatal
"BAD INTERFACE NAME FOR SGW S1U
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
"
' (waiting for ethx.y, wlanx.y or wifix.y)'
fi
;
#
is_real_interface
$PGW_INTERFACE_NAME_FOR_SGI
if
[
$?
-eq
1
]
;
then
ping
-c
1 router.eur
>
/dev/null
||
{
echo_fatal
"router.eur does not respond to ping"
>
&2
;
}
IP_ROUTER
=
`
python
-c
'import socket; print socket.gethostbyname("router.eur")'
`
export
MAC_ROUTER
=
`
ip neigh show |
grep
$IP_ROUTER
|
cut
-d
' '
-f5
|
tr
-d
':'
`
echo_success
"ROUTER MAC ADDRESS=
$MAC_ROUTER
"
# # get ipv4 address from PGW_INTERFACE_NAME_FOR_SGI
#IP_ADDR=`ifconfig $PGW_INTERFACE_NAME_FOR_SGI | awk '/inet addr/ {split ($2,A,":"); print A[2]}' | tr '\n' ' ' | sed -n '1h;1!H;${;g;s/^[ \t]*//g;s/[ \t]*$//g;p;}'`
#NETWORK=`echo $IP_ADDR | cut -d . -f 1,2,3`
bash_exec
"modprobe 8021q"
for
i
in
5 6 7 8 9 10 11 12 13 14 15
do
# create vlan interface
ifconfig
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
down
>
/dev/null 2>&1
vconfig rem
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
>
/dev/null 2>&1
sync
bash_exec
"vconfig add
$PGW_INTERFACE_NAME_FOR_SGI
$i
"
sync
bash_exec
"ifconfig
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
up"
sync
# configure vlan interface
#CIDR=$NETWORK'.'$i'/24'
base
=
200
NET
=
$((
$i
+
$base
))
CIDR
=
'10.0.'
$NET
'.2/8'
bash_exec
"ip -4 addr add
$CIDR
dev
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
"
done
echo_success
"oai_db creation succeeded"
fi
bash_exec
"ip link set
$PGW_INTERFACE_NAME_FOR_SGI
promisc on"
$MYSQL
-u
$1
--password
=
$2
oai_db <
$OPENAIRCN_DIR
/OPENAIRHSS/db/oai_db.sql
if
[
$?
-ne
0
]
;
then
echo_error
"oai_db tables creation failed"
else
echo_warning
"SGI interface disabled by config file
"
echo_success
"oai_db tables creation succeeded
"
fi
}
clean_epc_vlan_network
()
{
bash_exec
"modprobe tun"
bash_exec
"modprobe ip_tables"
bash_exec
"modprobe iptable_nat"
bash_exec
"modprobe x_tables"
bash_exec
"
$IPTABLES
-P INPUT ACCEPT"
bash_exec
"
$IPTABLES
-F INPUT"
bash_exec
"
$IPTABLES
-P OUTPUT ACCEPT"
bash_exec
"
$IPTABLES
-F OUTPUT"
bash_exec
"
$IPTABLES
-P FORWARD ACCEPT"
bash_exec
"
$IPTABLES
-F FORWARD"
bash_exec
"
$IPTABLES
-t raw -F"
bash_exec
"
$IPTABLES
-t nat -F"
bash_exec
"
$IPTABLES
-t mangle -F"
bash_exec
"
$IPTABLES
-t filter -F"
bash_exec
"ip route flush cache"
echo
" Disabling forwarding"
bash_exec
"sysctl -w net.ipv4.ip_forward=0"
assert
"
`
sysctl
-n
net.ipv4.ip_forward
`
-eq 0"
$LINENO
echo
" Enabling DynamicAddr.."
bash_exec
"sysctl -w net.ipv4.ip_dynaddr=1"
assert
"
`
sysctl
-n
net.ipv4.ip_dynaddr
`
-eq 1"
$LINENO
bash_exec
"sysctl -w net.ipv4.conf.all.log_martians=1"
assert
"
`
sysctl
-n
net.ipv4.conf.all.log_martians
`
-eq 1"
$LINENO
echo
" Disabling reverse path filtering"
bash_exec
"sysctl -w net.ipv4.conf.all.rp_filter=0"
assert
"
`
sysctl
-n
net.ipv4.conf.all.rp_filter
`
-eq 0"
$LINENO
bash_exec
"modprobe 8021q"
ifconfig
$MME_INTERFACE_NAME_FOR_S1_MME
down
>
/dev/null 2>&1
vconfig rem
$MME_INTERFACE_NAME_FOR_S1_MME
>
/dev/null 2>&1
ifconfig
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
down
>
/dev/null 2>&1
vconfig rem
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
>
/dev/null 2>&1
for
i
in
5 6 7 8 9 10 11 12 13 14 15
do
# delete vlan interface
ifconfig
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
down
>
/dev/null 2>&1
vconfig rem
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
>
/dev/null 2>&1
done
#ip link set $PGW_INTERFACE_NAME_FOR_SGI down > /dev/null 2>&1
clean_network
}
build_tun_network
()
{
# REMINDER:
# hss.eur
# |
# +-----------+ +-----------+ v +----------+
# | eNB +------+ +------+ MME +----+ +---+ HSS |
# | |cpenb0+------------------+cpmme0| |s6am+------+s6a| |
# | +------+ +------+ +----+ +---+ |
# | |upenb0+-------+ | | +----------+
# | +------+ | +-+-------+-+
# | | | | s11mme|
# | | | +---+---+
# | | | (optional)|
# +-----------+ | +---+---+
# | | s11sgw| router.eur
# | +-+-------+-+ | +--------------+
# | | S+P-GW | v | ROUTER |
# | +------+ +-------+ +----+ +----+
# +----------+upsgw0| |sgi +-...-+ | | +---...Internet
# +------+ +-------+ +----+ +----+
# | | 11 VLANS | |
# +-----------+ ids=[5..15] +--------------+
#
bash_exec
"modprobe tun"
##################################################
# build network between eNB and MME/SPGW and HSS
##################################################
echo_success
"ENB_INTERFACE_NAME_FOR_S1_MME is "
$ENB_INTERFACE_NAME_FOR_S1_MME
" addr is "
$ENB_IPV4_ADDRESS_FOR_S1_MME
echo_success
"ENB_INTERFACE_NAME_FOR_S1U is "
$ENB_INTERFACE_NAME_FOR_S1U
" addr is "
$ENB_IPV4_ADDRESS_FOR_S1U
echo_success
"MME_INTERFACE_NAME_FOR_S1_MME is "
$MME_INTERFACE_NAME_FOR_S1_MME
" addr is "
$MME_IPV4_ADDRESS_FOR_S1_MME
echo_success
"SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP is "
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
" addr is "
$SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
echo_success
"MME_INTERFACE_NAME_FOR_S11_MME is "
$MME_INTERFACE_NAME_FOR_S11_MME
" addr is "
$MME_IPV4_ADDRESS_FOR_S11_MME
echo_success
"SGW_INTERFACE_NAME_FOR_S11 is "
$SGW_INTERFACE_NAME_FOR_S11
" addr is "
$SGW_IPV4_ADDRESS_FOR_S11
echo_success
"MME_INTERFACE_NAME_FOR_S6A is "
$MME_INTERFACE_NAME_FOR_S6A
" addr is "
$MME_IPV4_ADDRESS_FOR_S6A
echo_success
"HSS_INTERFACE_NAME_FOR_S6A is "
$HSS_INTERFACE_NAME_FOR_S6A
" addr is "
$HSS_IPV4_ADDRESS_FOR_S6A
create_tun_interface
$ENB_INTERFACE_NAME_FOR_S1_MME
create_tun_interface
$ENB_INTERFACE_NAME_FOR_S1U
create_tun_interface
$MME_INTERFACE_NAME_FOR_S1_MME
create_tun_interface
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
create_tun_interface
$MME_INTERFACE_NAME_FOR_S11_MME
create_tun_interface
$SGW_INTERFACE_NAME_FOR_S11
create_tun_interface
$MME_INTERFACE_NAME_FOR_S6A
create_tun_interface
$HSS_INTERFACE_NAME_FOR_S6A
set_interface_up
$MME_INTERFACE_NAME_FOR_S1_MME
$MME_IPV4_ADDRESS_FOR_S1_MME
$MME_IPV4_NETMASK_FOR_S1_MME
set_interface_up
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
$SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
$SGW_IPV4_NETMASK_FOR_S1U_S12_S4_UP
set_interface_up
$ENB_INTERFACE_NAME_FOR_S1_MME
$ENB_IPV4_ADDRESS_FOR_S1_MME
$ENB_IPV4_NETMASK_FOR_S1_MME
set_interface_up
$ENB_INTERFACE_NAME_FOR_S1U
$ENB_IPV4_ADDRESS_FOR_S1U
$ENB_IPV4_NETMASK_FOR_S1U
set_interface_up
$MME_INTERFACE_NAME_FOR_S11_MME
$MME_IPV4_ADDRESS_FOR_S11_MME
$MME_IPV4_NETMASK_FOR_S11_MME
set_interface_up
$SGW_INTERFACE_NAME_FOR_S11
$SGW_IPV4_ADDRESS_FOR_S11
$SGW_IPV4_NETMASK_FOR_S11
set_interface_up
$MME_INTERFACE_NAME_FOR_S6A
$MME_IPV4_ADDRESS_FOR_S6A
$MME_IPV4_NETMASK_FOR_S6A
set_interface_up
$HSS_INTERFACE_NAME_FOR_S6A
$HSS_IPV4_ADDRESS_FOR_S6A
$HSS_IPV4_NETMASK_FOR_S6A
}
# arg1 is IF1 IP addr
# arg2 is IF2 IP addr
test_local_iperf
()
{
TRY_NO
=
3
until
[
$TRY_NO
-lt
1
]
;
do
iperf
--bind
$1
-u
-s
2>&1
>
/dev/null &
iperf
--bind
$2
-u
--num
1K
-c
$1
2>&1 |
grep
-i
WARNING
>
/dev/null
if
[
$?
-eq
0
]
;
then
pkill iperf 2>&1
>
/dev/null
echo_warning
"NETWORK TEST FAILED between
$1
and
$2
"
Q1
=
"GRANT ALL PRIVILEGES ON *.* TO 'hssadmin'@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;"
Q2
=
"FLUSH PRIVILEGES;"
SQL
=
"
${
Q1
}${
Q2
}
"
$MYSQL
-u
$1
--password
=
$2
-e
"
$SQL
"
if
[
$?
-ne
0
]
;
then
echo_error
"hssadmin permissions failed"
else
echo_success
"NETWORK TEST SUCCESS between
$1
and
$2
"
pkill iperf 2>&1
>
/dev/null
return
echo_success
"hssadmin permissions succeeded"
fi
let
TRY_NO-
=
1
pkill iperf 2>&1
>
/dev/null
done
echo_fatal
"FATAL: NETWORK TEST FAILED between
$1
and
$2
"
}
test_tun_network
()
{
# TEST INTERFACES
ping
-q
-c
1
$MME_IPV4_ADDRESS_FOR_S1_MME
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo_fatal
"PING INTERFACE
$MME_INTERFACE_NAME_FOR_S1_MME
ERROR, ADDRESS IS
$MME_IPV4_ADDRESS_FOR_S1_MME
"
;
fi
;
ping
-q
-c
1
$SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo_fatal
"PING INTERFACE
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
ERROR, ADDRESS IS
$SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
"
;
fi
;
ping
-q
-c
1
$ENB_IPV4_ADDRESS_FOR_S1_MME
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo_fatal
"PING INTERFACE
$ENB_INTERFACE_NAME_FOR_S1_MME
ADDR ERROR, ADDRESS IS
$ENB_IPV4_ADDRESS_FOR_S1_MME
"
;
fi
;
ping
-q
-c
1
$ENB_IPV4_ADDRESS_FOR_S1U
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo_fatal
"PING INTERFACE
$ENB_INTERFACE_NAME_FOR_S1U
ERROR, ADDRESS IS
$ENB_IPV4_ADDRESS_FOR_S1U
"
;
fi
;
ping
-q
-c
1
$MME_IPV4_ADDRESS_FOR_S11_MME
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo_fatal
"PING INTERFACE
$MME_INTERFACE_NAME_FOR_S11_MME
ERROR, ADDRESS IS
$MME_IPV4_ADDRESS_FOR_S11_MME
"
;
fi
;
ping
-q
-c
1
$SGW_IPV4_ADDRESS_FOR_S11
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo_fatal
"PING INTERFACE
$SGW_INTERFACE_NAME_FOR_S11
ERROR, ADDRESS IS
$SGW_IPV4_ADDRESS_FOR_S11
"
;
fi
;
ping
-q
-c
1
$MME_IPV4_ADDRESS_FOR_S6A
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo_fatal
"PING INTERFACE
$MME_INTERFACE_NAME_FOR_S6A
ERROR, ADDRESS IS
$MME_IPV4_ADDRESS_FOR_S6A
"
;
fi
;
ping
-q
-c
1
$HSS_IPV4_ADDRESS_FOR_S6A
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo_fatal
"PING INTERFACE
$HSS_INTERFACE_NAME_FOR_S6A
ERROR, ADDRESS IS
$HSS_IPV4_ADDRESS_FOR_S6A
"
;
fi
;
## TEST NETWORK BETWEEN ENB-MME-SP-GW
test_local_iperf
$ENB_IPV4_ADDRESS_FOR_S1_MME
$MME_IPV4_ADDRESS_FOR_S1_MME
test_local_iperf
$ENB_IPV4_ADDRESS_FOR_S1U
$SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
test_local_iperf
$MME_IPV4_ADDRESS_FOR_S11_MME
$SGW_IPV4_ADDRESS_FOR_S11
test_local_iperf
$MME_IPV4_ADDRESS_FOR_S6A
$HSS_IPV4_ADDRESS_FOR_S6A
# Get MAC address of router.eur
ping
-c
1 hss.eur
>
/dev/null
||
{
echo_fatal
"hss.eur does not respond to ping"
>
&2
;
}
ping
-c
1 router.eur
>
/dev/null
||
{
echo_fatal
"router.eur does not respond to ping"
>
&2
;
}
return
0
}
clean_tun_network
()
{
bash_exec
"modprobe tun"
##################################################
# del interfaces eNB and MME/SPGW and HSS
##################################################
delete_tun_interface
$ENB_INTERFACE_NAME_FOR_S1_MME
delete_tun_interface
$ENB_INTERFACE_NAME_FOR_S1U
delete_tun_interface
$MME_INTERFACE_NAME_FOR_S1_MME
delete_tun_interface
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
delete_tun_interface
$MME_INTERFACE_NAME_FOR_S11_MME
delete_tun_interface
$SGW_INTERFACE_NAME_FOR_S11
delete_tun_interface
$MME_INTERFACE_NAME_FOR_S6A
delete_tun_interface
$HSS_INTERFACE_NAME_FOR_S6A
}
build_epc_tun_network
()
{
build_tun_network
ping
-c
1 router.eur
>
/dev/null
||
{
echo_fatal
"router.eur does not respond to ping"
>
&2
;
}
IP_ROUTER
=
`
python
-c
'import socket; print socket.gethostbyname("router.eur")'
`
export
MAC_ROUTER
=
`
ip neigh show |
grep
$IP_ROUTER
|
cut
-d
' '
-f5
|
tr
-d
':'
`
echo_success
"ROUTER MAC ADDRESS=
$MAC_ROUTER
"
bash_exec
"modprobe 8021q"
for
i
in
5 6 7 8 9 10 11 12 13 14 15
do
# create vlan interface
ifconfig
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
down
>
/dev/null 2>&1
vconfig rem
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
>
/dev/null 2>&1
sync
bash_exec
"vconfig add
$PGW_INTERFACE_NAME_FOR_SGI
$i
"
sync
bash_exec
"ifconfig
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
up"
sync
# configure vlan interface
#CIDR=$NETWORK'.'$i'/24'
base
=
200
NET
=
$((
$i
+
$base
))
CIDR
=
'10.0.'
$NET
'.2/8'
bash_exec
"ip -4 addr add
$CIDR
dev
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
"
done
bash_exec
"ip link set
$PGW_INTERFACE_NAME_FOR_SGI
promisc on"
}
clean_epc_ovs_network
()
{
bash_exec
"modprobe tun"
bash_exec
"modprobe ip_tables"
bash_exec
"modprobe iptable_nat"
bash_exec
"modprobe x_tables"
bash_exec
"
$IPTABLES
-P INPUT ACCEPT"
bash_exec
"
$IPTABLES
-F INPUT"
bash_exec
"
$IPTABLES
-P OUTPUT ACCEPT"
bash_exec
"
$IPTABLES
-F OUTPUT"
bash_exec
"
$IPTABLES
-P FORWARD ACCEPT"
bash_exec
"
$IPTABLES
-F FORWARD"
bash_exec
"
$IPTABLES
-t raw -F"
bash_exec
"
$IPTABLES
-t nat -F"
bash_exec
"
$IPTABLES
-t mangle -F"
bash_exec
"
$IPTABLES
-t filter -F"
bash_exec
"ip route flush cache"
echo
" Disabling forwarding"
bash_exec
"sysctl -w net.ipv4.ip_forward=0"
assert
"
`
sysctl
-n
net.ipv4.ip_forward
`
-eq 0"
$LINENO
echo
" Enabling DynamicAddr.."
bash_exec
"sysctl -w net.ipv4.ip_dynaddr=1"
assert
"
`
sysctl
-n
net.ipv4.ip_dynaddr
`
-eq 1"
$LINENO
bash_exec
"sysctl -w net.ipv4.conf.all.log_martians=1"
assert
"
`
sysctl
-n
net.ipv4.conf.all.log_martians
`
-eq 1"
$LINENO
echo
" Disabling reverse path filtering"
bash_exec
"sysctl -w net.ipv4.conf.all.rp_filter=0"
assert
"
`
sysctl
-n
net.ipv4.conf.all.rp_filter
`
-eq 0"
$LINENO
for
i
in
5 6 7 8 9 10 11 12 13 14 15
do
ifconfig
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
down
>
/dev/null 2>&1
vconfig rem
$PGW_INTERFACE_NAME_FOR_SGI
.
$i
>
/dev/null 2>&1
done
clean_network
clean_tun_network
}
clean_network
()
{
interfaces
=
`
ifconfig |
grep
HWaddr |
cut
-d
" "
-f1-2
|
tr
-d
'\n'
`
for
interface
in
$interfaces
do
is_vlan_interface
$interface
if
[
$?
-eq
1
]
;
then
echo_success
"Found VLAN interface
$interface
... deleting"
ifconfig
$interface
down
>
/dev/null 2>&1
vconfig rem
$interface
>
/dev/null 2>&1
fi
done
check_install_hss_software
()
{
test_install_package autoconf
test_install_package automake
test_install_package bison
test_install_package build-essential
test_install_package cmake
test_install_package cmake-curses-gui
test_install_package dkms
test_install_package flex
test_install_package gawk
test_install_package gcc
test_install_package gdb
test_install_package guile-2.0-dev
test_install_package g++
test_install_package libgmp-dev
test_install_package libgcrypt11-dev
test_install_package libidn11-dev
test_install_package libidn2-0-dev
test_install_package libmysqlclient-dev
test_install_package libtasn1-3-dev
test_install_package libsctp1
test_install_package libsctp-dev
test_install_package libxml2-dev
test_install_package linux-headers-
`
uname
-r
`
test_install_package make
test_install_package mysql-client-core-5.5
test_install_package mysql-server-core-5.5
test_install_package mysql-server-5.5
test_install_package openssh-client
test_install_package openssh-server
test_install_package phpmyadmin
test_install_package python-dev
test_install_package sshfs
test_install_package swig
test_install_package unzip
test_install_package valgrind
}
check_s6a_certificate
()
{
if
[
-d
/usr/local/etc/freeDiameter
]
then
if
[
-f
/usr/local/etc/freeDiameter/user.cert.pem
]
then
full_hostname
=
`
cat
/usr/local/etc/freeDiameter/user.cert.pem |
grep
"Subject"
|
grep
"CN"
|
cut
-d
'='
-f6
`
if
[
a
$full_hostname
==
a
`
hostname
`
.eur
]
then
echo_success
"S6A: Found valid certificate in /usr/local/etc/freeDiameter"
return
1
fi
fi
fi
echo_error
"S6A: Did not find valid certificate in /usr/local/etc/freeDiameter"
echo_warning
"S6A: generatting new certificate in /usr/local/etc/freeDiameter..."
cd
$OPENAIRCN_DIR
/S6A/freediameter
./make_certs.sh
check_s6a_certificate
return
1
check_install_vbox_software
()
{
test_install_package dkms
test_install_package openssh-client
test_install_package openssh-server
test_install_package sshfs
test_install_package virtualbox
test_install_package virtualbox-dkms
test_install_package virtualbox-guest-additions-iso
test_install_package virtualbox-qt
test_install_package virtualbox-guest-utils
}
check_install_epc_software
()
{
...
...
@@ -960,9 +509,12 @@ check_install_epc_software() {
test_install_package libxml2-dev
test_install_package linux-headers-
`
uname
-r
`
test_install_package make
test_install_package openssh-client
test_install_package openssh-server
test_install_package openssl
test_install_package openvpn
test_install_package python-dev
test_install_package sshfs
test_install_package subversion
test_install_package swig
test_install_package tshark
...
...
@@ -1001,6 +553,45 @@ check_install_epc_software() {
fi
}
function
cgrp
()
{
OPTIND
=
1
local
case
=
""
local
usage
=
"cgrp: find string in files.
Usage: cgrp
\"
pattern
\"
"
set_openair
find
$OPENAIR2_DIR
-name
*
.c
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
find
$OPENAIR1_DIR
-name
*
.c
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
find
$OPENAIR3_DIR
-name
*
.c
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
find
$OPENAIRCN_DIR
-name
*
.c
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
find
$OPENAIR_TARGETS
-name
*
.c
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
}
function
hgrp
(
)
{
OPTIND
=
1
local
case
=
""
local
usage
=
"hgrp: find string in files.
Usage: hgrp
\"
pattern
\"
"
set_openair
find
$OPENAIR2_DIR
-name
*
.h
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
find
$OPENAIR1_DIR
-name
*
.h
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
find
$OPENAIR3_DIR
-name
*
.h
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
find
$OPENAIRCN_DIR
-name
*
.h
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
find
$OPENAIR_TARGETS
-name
*
.h
-exec
grep
--color
=
auto
-Hni
$1
{}
\;
}
function
svn_find_str_in_file_history
(
)
{
for
REV
in
`
svn log
$1
|
grep
^r[0-9] |
awk
'{print $1}'
`
;
do
svn
cat
$1
-r
$REV
|
grep
$2
if
[
$?
-eq
0
]
;
then
echo
"
$REV
"
fi
done
}
compile_epc
()
{
cd
$OPENAIRCN_DIR
OBJ_DIR
=
`
find
.
-maxdepth
1
-type
d
-iname
obj
*
`
...
...
@@ -1043,7 +634,10 @@ compile_epc() {
exit
1
fi
}
###########################################################
THIS_UTILS_SCRIPT_PATH
=
$(
dirname
$(
readlink
-f
$0
))
source
$THIS_UTILS_SCRIPT_PATH
/networks.bash
###########################################################
###########################################################
IPTABLES
=
/sbin/iptables
THIS_SCRIPT_PATH
=
$(
dirname
$(
readlink
-f
$0
))
...
...
targets/PROJECTS/GENERIC-LTE-EPC/virtual_box.bash
View file @
b243f031
...
...
@@ -7,16 +7,41 @@ export OS_TYPE="Ubuntu"
export
HOST_BRIDGED_IF_NAME
=
"eth1"
export
DEFAULT_VIRTUAL_BOX_VM_PATH
=
'/root/VirtualBox VMs'
export
TRUNK_SHARED_FOLDER_NAME
=
"shared_trunk"
###########################################################
THIS_SCRIPT_PATH
=
$(
dirname
$(
readlink
-f
$0
))
source
$THIS_SCRIPT_PATH
/utils.bash
###########################################################
# NETWORK SETTING AT EURECOM IN EXPERIMENTAL NETWORK (192.168.12.X)
#
# +-----------+----------------+------+---------------------------------------+
# | COMPUTER 1| | eth1 | Physical |
# +-----------+ (nic1) +-+--+-+ Interface |
#
# INTERNET GW 192.168.12.100
# |
# |
# 192.168.12.X/24 |
# +-----------+----------------+---+--+---------------------------------------+
# | COMPUTER 1| | eth0 | |
# +-----------+ +---+--+ |
# | | |
# | | |
# | +-----+------+ |
# | |MASQUERADING| |
# | +-----+------+ |
# | | |
# | | |
# | | |
# | | |
# | | |
# | +---+--+ |
# | | eth1 | |
# +----------------------------+---+--+---------------------------------------+
# |
# | INTERNET GW 192.168.12.100
# | |
# 192.168.13.X/24 | |
# +-----------+----------------+---+--+---------------------+---+--+----------+
# | COMPUTER 2| | eth1 | Physical | eth0 | |
# +-----------+ +-+--+-+ Interface +------+ |
# | | | 'HOST_BRIDGED_IF_NAME' |
# | | | |
# | | | +-----------+ |
...
...
@@ -91,6 +116,8 @@ build_vbox_vm_enb() {
--nic1 bridged --nic2 hostonly --nic3 hostonly --nic4 hostonly
\
--nictype1 82545EM --nictype2 82545EM --nictype3 82545EM --nictype4 82545EM
\
--cableconnected1 on --cableconnected2 on --cableconnected3 off --cableconnected4 off
\
--macaddress1 c8d3a3020301 --macaddress2 c8d3a3020302
\
--macaddress3 c8d3a3020303 --macaddress4 c8d3a3020304
\
--bridgeadapter1
$HOST_BRIDGED_IF_NAME
\
--hostonlyadapter2 vboxnet0
\
--audio none
\
...
...
@@ -121,11 +148,11 @@ build_vbox_vm_enb() {
build_vbox_vm_hss
()
{
UUID
=
`
VBoxManage clonevm
--mode
all
--name
$HSS_VM_NAME
--register
UUID
=
`
VBoxManage clonevm
$ENB_VM_NAME
--mode
all
--name
$HSS_VM_NAME
--register
`
HSS_UUID
=
`
VBoxManage showvminfo
$HSS_VM_NAME
|
grep
Hardware
\
UUID |
cut
-d
:
-f2
|
tr
-d
' '
`
echo
HSS_UUID
=
$HSS_UUID
...
...
@@ -136,6 +163,8 @@ build_vbox_vm_hss() {
--nic1 bridged --nic2 hostonly --nic3 none --nic4 none
\
--nictype1 82545EM --nictype2 virtio --nictype3 82545EM --nictype4 82545EM
\
--cableconnected1 on --cableconnected2 on --cableconnected3 off --cableconnected4 off
\
--macaddress1 c8d3a3020101 --macaddress2 c8d3a3020102
\
--macaddress3 c8d3a3020103 --macaddress4 c8d3a3020104
\
--bridgeadapter1
$HOST_BRIDGED_IF_NAME
\
--hostonlyadapter2 vboxnet1
\
--audio none
\
...
...
@@ -145,14 +174,21 @@ build_vbox_vm_hss() {
build_vms
()
{
build_vbox_vm_enb
build_vbox_vm_hss
}
echo_warning
"!!!!!!! once VM are created, you have to harmonize IP addresses and MAC addresses !!!!!!!"
echo_warning
"!!!!!!! /etc/network/interfaces and /etc/udev/rules.d/70-persistent-net.rules !!!!!!!"
echo_warning
"!!!!!!! !!!!!!!"
echo_warning
"!!!!!!! to share open air source code: use sshfs (you can use vbox shared folders,!!!!!!!"
echo_warning
"!!!!!!! in this case, help yourself...) !!!!!!!"
echo_warning
"!!!!!!! exchange ssh keys between host and guests !!!!!!!"
echo_warning
"!!!!!!! in /etc/fstab on guests: add following line: !!!!!!!"
echo_warning
"!!!!!!! sshfs#root@192.168.13.175:/root/trunk /mnt/sshfs/trunk fuse comment=sshfs!!!!!!!"
echo_warning
"!!!!!!! ,noauto,users,exec,uid=0,gid=0,allow_other,reconnect,transform_symlinks, !!!!!!!"
echo_warning
"!!!!!!! BatchMode=yes 0 0 !!!!!!!"
echo_warning
"!!!!!!! on guest: create a mount point: /mnt/sshfs/trunk for example, then mount: !!!!!!!"
echo_warning
"!!!!!!! mount /mnt/sshfs/trunk !!!!!!!"
}
create_shared_folder_openair_trunk
()
{
VBoxManage sharedfolder add
"
$ENB_VM_NAME
"
--transient
--name
"
$TRUNK_SHARED_FOLDER_NAME
"
--hostpath
"
$OPENAIR_HOME
"
#bash_exec "mount -t vboxsf $TRUNK_SHARED_FOLDER_NAME $OPENAIR_HOME"
}
build_vms
\ No newline at end of file
build_vbox_vm_enb
create_shared_folder_openair_trunk
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment