2018-08-22 15:32:21 +00:00
#!/usr/bin/env bash
2019-01-30 15:48:18 +00:00
if ! ../fill_config.py --check-stale; then
echo
echo "WARNING: STALE CONFIGS - your net configs are older than the templates they should be based on!"
echo " * Hit enter to continue, and use the stale config files"
echo " * Hit ^C and run 'make regen' to regenerate your configs"
read enter_to_continue
fi
2018-08-22 15:32:21 +00:00
dev = " ${ ETH_DEV } "
apn = " ${ APN_DEV } "
sudo true || exit 1
2021-07-07 14:40:36 +00:00
if ! sudo iptables -t nat -C POSTROUTING -s ${ GGSN_NET } -o $dev -j MASQUERADE 2>/dev/null; then
echo "Adding iptables rule for masquerade"
sudo iptables -t nat -I POSTROUTING -s ${ GGSN_NET } -o $dev -j MASQUERADE
2018-08-22 15:32:21 +00:00
fi
if [ " $( sudo cat /proc/sys/net/ipv4/ip_forward) " = "0" ] ; then
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
fi
if [ -z " $( ip tuntap show | grep $apn ) " ] ; then
sudo ip tuntap add dev $apn mode tun user $USER group $USER
sudo ip addr add ${ GGSN_NET } dev $apn
sudo ip link set $apn up
fi
2019-03-13 14:16:16 +00:00
if [ -z " $( ip addr show | grep " ${ TO_RAN_IP } " ) " ] ; then
echo " No interface has IP address ${ TO_RAN_IP } ! Hit enter to continue anyway. "
2018-09-16 11:49:13 +00:00
read enter_to_continue
fi
2019-03-13 14:16:16 +00:00
if [ -z " $( ip addr show | grep " ${ TO_RAN_IU_IP } " ) " ] ; then
echo " No interface has IP address ${ TO_RAN_IU_IP } ! Hit enter to 'ip addr add ${ TO_RAN_IU_IP } /32 dev $dev ' "
2018-09-16 11:49:13 +00:00
read enter_to_continue
2019-03-13 14:16:16 +00:00
sudo ip addr add ${ TO_RAN_IU_IP } /32 dev $dev
2018-08-22 15:32:21 +00:00
fi
logdir = "current_log"
mkdir -p " $logdir "
2018-09-28 09:30:46 +00:00
find_term( ) {
# Find a terminal program and write to the global "terminal" variable
local programs = "urxvt xterm"
2022-01-17 14:59:02 +00:00
if [ -n " ${ TERMINAL } " ] && [ " ${ TERMINAL } " != "auto" ] ; then
case " $programs " in
*" ${ TERMINAL } " *)
echo " Terminal: ${ TERMINAL } (from config) "
terminal = " ${ TERMINAL } "
return
; ;
esac
echo " ERROR: Terminal ' ${ TERMINAL } ' is not in list of supported terminals ( $programs ) "
exit 1
fi
2018-09-28 09:30:46 +00:00
local program
for program in $programs ; do
terminal = " $( which $program ) "
2022-01-17 14:59:02 +00:00
if [ -n " $terminal " ] ; then
echo " Terminal: $program (auto) "
return
fi
2018-09-28 09:30:46 +00:00
done
# No terminal found
echo " ERROR: Couldn't find terminal program! Looked for: $programs "
exit 1
}
2018-08-22 15:32:21 +00:00
term( ) {
title = " $2 "
if [ -z " $title " ] ; then
title = " $( basename $@ ) "
fi
exec $terminal -title " CN: $title " -e sh -c " export LD_LIBRARY_PATH='/usr/local/lib'; $1 ; echo; while true; do echo 'q Enter to close'; read q_to_close; if [ \"x\$q_to_close\" = xq ]; then break; fi; done "
}
2018-09-28 09:30:46 +00:00
find_term
2018-08-22 15:32:21 +00:00
hnbgw = "osmo-hnbgw"
msc = " gdb -ex run --args $( which osmo-msc) "
2019-08-06 23:35:06 +00:00
# To enable udtrace on osmo-msc MNCC socket, use this with adjusted /path/to/udtrace:
# - LD_LIBRARY_PATH allows linking to titan if udtrace was compiled with titan support.
# - LD_PRELOAD of libasan allows building osmo-msc with the sanitize.opts.
# - the tee saves the stderr logging as well as the udtrace output to new file current_log/osmo-msc.out, since udtrace
# will not show in osmo-msc.log
#msc="LD_LIBRARY_PATH=/usr/lib/titan LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.5:/path/to/udtrace/libudtrace.so osmo-msc 2>&1 | tee -a current_log/osmo-msc.out"
2018-08-22 15:32:21 +00:00
gbproxy = "osmo-gbproxy"
sgsn = "osmo-sgsn"
ggsn = "osmo-ggsn"
mgw4msc = "osmo-mgw -c osmo-mgw-for-msc.cfg"
#mgw4bsc="gdb -ex run --args osmo-mgw -c osmo-mgw-for-bsc.cfg"
#mgw4bsc="strace osmo-mgw -c osmo-mgw-for-bsc.cfg"
mgw4bsc = "osmo-mgw -c osmo-mgw-for-bsc.cfg"
2018-12-13 12:27:37 +00:00
hlr = "LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-hlr --db-upgrade"
2021-12-14 15:27:10 +00:00
stp4cn = "osmo-stp -c osmo-stp-cn.cfg"
stp4ran = "osmo-stp -c osmo-stp-ran.cfg"
2018-08-22 15:32:21 +00:00
bsc = "LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-bsc -c osmo-bsc.cfg"
2021-12-14 15:27:10 +00:00
bscnat = "osmo-bsc-nat"
2018-08-22 15:32:21 +00:00
2019-03-03 23:39:32 +00:00
if [ " x ${ MSC_MNCC } " != "xinternal" ] ; then
2018-09-26 14:29:00 +00:00
sipcon = "osmo-sip-connector -c osmo-sip-connector.cfg"
2019-12-04 02:57:56 +00:00
case " ${ PBX_SERVER } " in
2019-11-08 17:16:30 +00:00
"kamailio" )
# Require kamailio (PATH hack is needed for Debian)
kamailio = " $( PATH = " $PATH :/usr/sbin:/sbin " which kamailio) "
if [ -z " $kamailio " ] ; then
echo "ERROR: kamailio is not installed."
echo "After installing it, make sure that it does *not* run as daemon."
exit 1
fi
kamailio = " $kamailio -f kamailio.cfg -D -e -E "
; ;
"freeswitch" )
if [ -z " $( which freeswitch) " ] ; then
echo "ERROR: freeswitch is not installed."
echo "Guide: https://freeswitch.org/confluence/display/FREESWITCH/Debian+10+Buster"
echo "After installing it, make sure that it does *not* run as daemon."
exit 1
fi
; ;
"none" )
; ;
*)
2019-12-04 02:57:56 +00:00
echo " ERROR: unknown value ${ PBX_SERVER } for SIPCON_SERVER! "
2019-11-08 17:16:30 +00:00
exit 1
; ;
esac
2018-09-26 14:29:00 +00:00
fi
sudo tcpdump -i $dev -n -w current_log/$dev .single.pcap -U not port 22 &
sudo tcpdump -i lo -n -w current_log/lo.single.pcap -U not port 22 &
2021-12-14 17:12:54 +00:00
PIDS = ""
2018-08-22 15:32:21 +00:00
term " $ggsn " GGSN &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2021-12-14 15:27:10 +00:00
if [ " ${ STP_CN_IP } " = " ${ STP_RAN_IP } " ] ; then
sleep .2
term " $stp4cn " STP &
PIDS = " $PIDS $! "
else
sleep .2
term " $stp4cn " STP4CN &
PIDS = " $PIDS $! "
sleep .2
term " $stp4ran " STP4RAN &
PIDS = " $PIDS $! "
sleep .2
term " $bscnat " BSCNAT &
PIDS = " $PIDS $! "
fi
2021-12-14 17:12:54 +00:00
2018-08-22 15:32:21 +00:00
sleep .2
term " $hlr " HLR &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2018-08-22 15:32:21 +00:00
sleep .2
term " $sgsn " SGSN &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2018-08-22 15:32:21 +00:00
sleep .2
term " $gbproxy " GBPROXY &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2018-08-22 15:32:21 +00:00
sleep .2
term " $mgw4msc " MGW4MSC &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2018-08-22 15:32:21 +00:00
sleep .2
term " $mgw4bsc " MGW4BSC &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2018-08-22 15:32:21 +00:00
sleep .2
term " $msc " MSC &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2018-08-22 15:32:21 +00:00
sleep 2
term " $hnbgw " HNBGW &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2018-08-22 15:32:21 +00:00
sleep .2
term " $bsc " BSC &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2018-08-22 15:32:21 +00:00
2019-03-03 23:39:32 +00:00
if [ " x ${ MSC_MNCC } " != "xinternal" ] ; then
2018-09-26 14:29:00 +00:00
sleep .2
term " $sipcon " SIPCON &
2021-12-14 17:12:54 +00:00
PIDS = " $PIDS $! "
2018-09-26 14:29:00 +00:00
sleep .2
2019-12-04 02:57:56 +00:00
case " ${ PBX_SERVER } " in
2021-12-14 17:12:54 +00:00
"kamailio" )
term " $kamailio " KAMAILIO &
PIDS = " $PIDS $! "
; ;
"freeswitch" )
term "./freeswitch/freeswitch.sh" FREESWITCH &
PIDS = " $PIDS $! "
; ;
2019-11-08 17:16:30 +00:00
esac
2018-09-26 14:29:00 +00:00
fi
2018-08-22 15:32:21 +00:00
#ssh bts rm /tmp/bts.log /tmp/pcu.log
#ssh bts neels/run_remote.sh &
echo enter to close
read enter_to_close
echo Closing...
#ssh bts neels/stop_remote.sh
2021-12-14 17:12:54 +00:00
for i in $PIDS ; do
kill " $i "
done
2018-08-22 15:32:21 +00:00
killall osmo-msc
killall osmo-bsc
killall osmo-gbproxy
killall osmo-sgsn
#killall osmo-hnbgw
killall osmo-mgw
killall osmo-hlr
killall -9 osmo-stp
sudo killall tcpdump
killall osmo-ggsn
2021-12-14 15:27:10 +00:00
killall osmo-bsc-nat
2018-08-22 15:32:21 +00:00
2019-08-06 23:34:12 +00:00
if [ " x ${ MSC_MNCC } " != "xinternal" ] ; then
# 'killall' seems to work only with the shortened name
killall osmo-sip-connec
2019-12-04 02:57:56 +00:00
killall " ${ PBX_SERVER } "
2019-08-06 23:34:12 +00:00
fi
2018-08-22 15:32:21 +00:00
set +e
cp *.cfg " $logdir " /
echo
echo enter name to save log
read log_name
if [ -n " $log_name " ] ; then
newlogdir = " log/ $log_name "
#scp "bts:/tmp/{bts,pcu}.log" "bts:neels/osmo-{bts,pcu}.cfg" "$logdir"
else
newlogdir = " autolog/log_ $( date +%Y-%m-%d_%H-%M-%S) "
fi
mkdir -p " $( dirname " $newlogdir " ) "
mergecap -w " $logdir /trace.pcap " " $logdir / " *.single.pcap && rm -f " $logdir / " *.single.pcap
if [ -x " $newlogdir " ] ; then
echo " already exists, move it manually: $newlogdir "
else
echo mv " $logdir " " $newlogdir "
mv " $logdir " " $newlogdir "
mkdir -p " $logdir "
logdir = " $newlogdir "
fi
rm lastlog
ln -s " $logdir " lastlog