blob: 97592ebded94216adee1c758e239670a4da327e8 [file] [log] [blame]
Neels Hofmeyr697a6172018-08-22 17:32:21 +02001#!/usr/bin/env bash
Oliver Smith24ddf9c2019-01-30 16:48:18 +01002
3if ! ../fill_config.py --check-stale; then
4 echo
5 echo "WARNING: STALE CONFIGS - your net configs are older than the templates they should be based on!"
6 echo " * Hit enter to continue, and use the stale config files"
7 echo " * Hit ^C and run 'make regen' to regenerate your configs"
8 read enter_to_continue
9fi
Neels Hofmeyr697a6172018-08-22 17:32:21 +020010
11dev="${ETH_DEV}"
Neels Hofmeyr697a6172018-08-22 17:32:21 +020012apn="${APN_DEV}"
13
14sudo true || exit 1
15
16if [ -z "$(sudo iptables -L -t nat | grep MASQUERADE)" ]; then
17 sudo iptables -t nat -A POSTROUTING -s ${GGSN_NET} -o $dev -j MASQUERADE
18fi
19
20if [ "$(sudo cat /proc/sys/net/ipv4/ip_forward)" = "0" ]; then
21 sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
22fi
23
24if [ -z "$(ip tuntap show | grep $apn)" ]; then
25 sudo ip tuntap add dev $apn mode tun user $USER group $USER
26 sudo ip addr add ${GGSN_NET} dev $apn
27 sudo ip link set $apn up
28fi
29
Oliver Smith2490f692019-03-13 15:16:16 +010030if [ -z "$(ip addr show | grep "${TO_RAN_IP}")" ]; then
31 echo "No interface has IP address ${TO_RAN_IP}! Hit enter to continue anyway."
Neels Hofmeyrede80162018-09-16 13:49:13 +020032 read enter_to_continue
33fi
Oliver Smith2490f692019-03-13 15:16:16 +010034if [ -z "$(ip addr show | grep "${TO_RAN_IU_IP}")" ]; then
35 echo "No interface has IP address ${TO_RAN_IU_IP}! Hit enter to 'ip addr add ${TO_RAN_IU_IP}/32 dev $dev'"
Neels Hofmeyrede80162018-09-16 13:49:13 +020036 read enter_to_continue
Oliver Smith2490f692019-03-13 15:16:16 +010037 sudo ip addr add ${TO_RAN_IU_IP}/32 dev $dev
Neels Hofmeyr697a6172018-08-22 17:32:21 +020038fi
39
40logdir="current_log"
41mkdir -p "$logdir"
42
Oliver Smith4d7072c2018-09-28 11:30:46 +020043find_term() {
44 # Find a terminal program and write to the global "terminal" variable
45 local programs="urxvt xterm"
46 local program
47 for program in $programs; do
48 terminal="$(which $program)"
49 [ -n "$terminal" ] && return
50 done
51
52 # No terminal found
53 echo "ERROR: Couldn't find terminal program! Looked for: $programs"
54 exit 1
55}
56
Neels Hofmeyr697a6172018-08-22 17:32:21 +020057term() {
58 title="$2"
59 if [ -z "$title" ]; then
60 title="$(basename $@)"
61 fi
Neels Hofmeyr697a6172018-08-22 17:32:21 +020062 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"
63}
64
Oliver Smith4d7072c2018-09-28 11:30:46 +020065find_term
66
Neels Hofmeyr697a6172018-08-22 17:32:21 +020067hnbgw="osmo-hnbgw"
68msc="gdb -ex run --args $(which osmo-msc)"
Neels Hofmeyr8e494842019-08-07 01:35:06 +020069# To enable udtrace on osmo-msc MNCC socket, use this with adjusted /path/to/udtrace:
70# - LD_LIBRARY_PATH allows linking to titan if udtrace was compiled with titan support.
71# - LD_PRELOAD of libasan allows building osmo-msc with the sanitize.opts.
72# - the tee saves the stderr logging as well as the udtrace output to new file current_log/osmo-msc.out, since udtrace
73# will not show in osmo-msc.log
74#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"
Neels Hofmeyr697a6172018-08-22 17:32:21 +020075gbproxy="osmo-gbproxy"
76sgsn="osmo-sgsn"
77ggsn="osmo-ggsn"
78mgw4msc="osmo-mgw -c osmo-mgw-for-msc.cfg"
79#mgw4bsc="gdb -ex run --args osmo-mgw -c osmo-mgw-for-bsc.cfg"
80#mgw4bsc="strace osmo-mgw -c osmo-mgw-for-bsc.cfg"
81mgw4bsc="osmo-mgw -c osmo-mgw-for-bsc.cfg"
Oliver Smith5467ef92018-12-13 13:27:37 +010082hlr="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-hlr --db-upgrade"
Neels Hofmeyr697a6172018-08-22 17:32:21 +020083stp="osmo-stp"
84bsc="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-bsc -c osmo-bsc.cfg"
85
Neels Hofmeyrcbdd7182019-03-04 00:39:32 +010086if [ "x${MSC_MNCC}" != "xinternal" ]; then
Oliver Smithd9f3d342018-09-26 16:29:00 +020087 sipcon="osmo-sip-connector -c osmo-sip-connector.cfg"
88 msc="$msc -M ${MSC_MNCC_SOCKET}"
89
90 # Require kamailio (PATH hack is needed for Debian)
91 kamailio="$(PATH="$PATH:/usr/sbin:/sbin" which kamailio)"
92 if [ -z "$kamailio" ]; then
Neels Hofmeyrcbdd7182019-03-04 00:39:32 +010093 echo "ERROR: kamailio is not installed, but it's required for external MNCC."
Oliver Smithd9f3d342018-09-26 16:29:00 +020094 echo "After installing it, make sure that it does *not* run as daemon."
95 exit 1
96 fi
97 kamailio="$kamailio -f kamailio.cfg -D -e -E"
98fi
99
100sudo tcpdump -i $dev -n -w current_log/$dev.single.pcap -U not port 22 &
101sudo tcpdump -i lo -n -w current_log/lo.single.pcap -U not port 22 &
102
Neels Hofmeyr697a6172018-08-22 17:32:21 +0200103term "$ggsn" GGSN &
104sleep .2
105term "$stp" STP &
106sleep .2
107term "$hlr" HLR &
108sleep .2
109term "$sgsn" SGSN &
110sleep .2
111term "$gbproxy" GBPROXY &
112sleep .2
113term "$mgw4msc" MGW4MSC &
114sleep .2
115term "$mgw4bsc" MGW4BSC &
116sleep .2
117term "$msc" MSC &
118sleep 2
119term "$hnbgw" HNBGW &
120sleep .2
121term "$bsc" BSC &
122
Neels Hofmeyrcbdd7182019-03-04 00:39:32 +0100123if [ "x${MSC_MNCC}" != "xinternal" ]; then
Oliver Smithd9f3d342018-09-26 16:29:00 +0200124 sleep .2
125 term "$sipcon" SIPCON &
126 sleep .2
127 term "$kamailio" KAMAILIO &
128fi
129
Neels Hofmeyr697a6172018-08-22 17:32:21 +0200130#ssh bts rm /tmp/bts.log /tmp/pcu.log
131#ssh bts neels/run_remote.sh &
132
133echo enter to close
134read enter_to_close
135echo Closing...
136
Neels Hofmeyrcbdd7182019-03-04 00:39:32 +0100137if [ "x${MSC_MNCC}" != "xinternal" ]; then
Oliver Smithd9f3d342018-09-26 16:29:00 +0200138 kill %13 %14
139 killall osmo-sip-connector
140 killall kamailio
141fi
142
Neels Hofmeyr697a6172018-08-22 17:32:21 +0200143#ssh bts neels/stop_remote.sh
144
145kill %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12
146killall osmo-msc
147killall osmo-bsc
148killall osmo-gbproxy
149killall osmo-sgsn
150#killall osmo-hnbgw
151killall osmo-mgw
152killall osmo-hlr
153killall -9 osmo-stp
154sudo killall tcpdump
155killall osmo-ggsn
156
157set +e
158cp *.cfg "$logdir"/
159
160echo
161echo enter name to save log
162read log_name
163if [ -n "$log_name" ]; then
164 newlogdir="log/$log_name"
165 #scp "bts:/tmp/{bts,pcu}.log" "bts:neels/osmo-{bts,pcu}.cfg" "$logdir"
166else
167 newlogdir="autolog/log_$(date +%Y-%m-%d_%H-%M-%S)"
168fi
169mkdir -p "$(dirname "$newlogdir")"
170
171mergecap -w "$logdir/trace.pcap" "$logdir/"*.single.pcap && rm -f "$logdir/"*.single.pcap
172
173if [ -x "$newlogdir" ]; then
174 echo "already exists, move it manually: $newlogdir"
175else
176 echo mv "$logdir" "$newlogdir"
177 mv "$logdir" "$newlogdir"
178 mkdir -p "$logdir"
179 logdir="$newlogdir"
180fi
181rm lastlog
182ln -s "$logdir" lastlog