blob: 829c23641f4404ed7da24646edcf95111add984a [file] [log] [blame]
Neels Hofmeyr697a6172018-08-22 17:32:21 +02001#!/usr/bin/env bash
Neels Hofmeyr57e42882018-08-23 15:19:35 +02002../fill_config.py --check-stale || ( echo "STALE CONFIGS. Hit enter to continue anyway."; read enter_to_continue )
Neels Hofmeyr697a6172018-08-22 17:32:21 +02003
4dev="${ETH_DEV}"
5ip2="${PUBLIC_IP2}"
6apn="${APN_DEV}"
7
8sudo true || exit 1
9
10if [ -z "$(sudo iptables -L -t nat | grep MASQUERADE)" ]; then
11 sudo iptables -t nat -A POSTROUTING -s ${GGSN_NET} -o $dev -j MASQUERADE
12fi
13
14if [ "$(sudo cat /proc/sys/net/ipv4/ip_forward)" = "0" ]; then
15 sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
16fi
17
18if [ -z "$(ip tuntap show | grep $apn)" ]; then
19 sudo ip tuntap add dev $apn mode tun user $USER group $USER
20 sudo ip addr add ${GGSN_NET} dev $apn
21 sudo ip link set $apn up
22fi
23
Neels Hofmeyrede80162018-09-16 13:49:13 +020024if [ -z "$(ip addr show | grep "$PUBLIC_IP")" ]; then
25 echo "No interface has IP address $PUBLIC_IP! Hit enter to continue anyway."
26 read enter_to_continue
27fi
28if [ -z "$(ip addr show | grep "$ip2")" ]; then
29 echo "No interface has IP address $ip2! Hit enter to 'ip addr add $ip2/32 dev $dev'"
30 read enter_to_continue
31 sudo ip addr add $ip2/32 dev $dev
Neels Hofmeyr697a6172018-08-22 17:32:21 +020032fi
33
34logdir="current_log"
35mkdir -p "$logdir"
36
Oliver Smith4d7072c2018-09-28 11:30:46 +020037find_term() {
38 # Find a terminal program and write to the global "terminal" variable
39 local programs="urxvt xterm"
40 local program
41 for program in $programs; do
42 terminal="$(which $program)"
43 [ -n "$terminal" ] && return
44 done
45
46 # No terminal found
47 echo "ERROR: Couldn't find terminal program! Looked for: $programs"
48 exit 1
49}
50
Neels Hofmeyr697a6172018-08-22 17:32:21 +020051term() {
52 title="$2"
53 if [ -z "$title" ]; then
54 title="$(basename $@)"
55 fi
Neels Hofmeyr697a6172018-08-22 17:32:21 +020056 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"
57}
58
Oliver Smith4d7072c2018-09-28 11:30:46 +020059find_term
60
Neels Hofmeyr697a6172018-08-22 17:32:21 +020061hnbgw="osmo-hnbgw"
62msc="gdb -ex run --args $(which osmo-msc)"
63gbproxy="osmo-gbproxy"
64sgsn="osmo-sgsn"
65ggsn="osmo-ggsn"
66mgw4msc="osmo-mgw -c osmo-mgw-for-msc.cfg"
67#mgw4bsc="gdb -ex run --args osmo-mgw -c osmo-mgw-for-bsc.cfg"
68#mgw4bsc="strace osmo-mgw -c osmo-mgw-for-bsc.cfg"
69mgw4bsc="osmo-mgw -c osmo-mgw-for-bsc.cfg"
70hlr="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-hlr"
71stp="osmo-stp"
72bsc="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-bsc -c osmo-bsc.cfg"
73
Oliver Smithd9f3d342018-09-26 16:29:00 +020074if [ "${SIPCON_ENABLE}" == "true" ]; then
75 sipcon="osmo-sip-connector -c osmo-sip-connector.cfg"
76 msc="$msc -M ${MSC_MNCC_SOCKET}"
77
78 # Require kamailio (PATH hack is needed for Debian)
79 kamailio="$(PATH="$PATH:/usr/sbin:/sbin" which kamailio)"
80 if [ -z "$kamailio" ]; then
81 echo "ERROR: kamailio is not installed, but it's required for SIPCON_ENABLE."
82 echo "After installing it, make sure that it does *not* run as daemon."
83 exit 1
84 fi
85 kamailio="$kamailio -f kamailio.cfg -D -e -E"
86fi
87
88sudo tcpdump -i $dev -n -w current_log/$dev.single.pcap -U not port 22 &
89sudo tcpdump -i lo -n -w current_log/lo.single.pcap -U not port 22 &
90
Neels Hofmeyr697a6172018-08-22 17:32:21 +020091term "$ggsn" GGSN &
92sleep .2
93term "$stp" STP &
94sleep .2
95term "$hlr" HLR &
96sleep .2
97term "$sgsn" SGSN &
98sleep .2
99term "$gbproxy" GBPROXY &
100sleep .2
101term "$mgw4msc" MGW4MSC &
102sleep .2
103term "$mgw4bsc" MGW4BSC &
104sleep .2
105term "$msc" MSC &
106sleep 2
107term "$hnbgw" HNBGW &
108sleep .2
109term "$bsc" BSC &
110
Oliver Smithd9f3d342018-09-26 16:29:00 +0200111if [ "${SIPCON_ENABLE}" == "true" ]; then
112 sleep .2
113 term "$sipcon" SIPCON &
114 sleep .2
115 term "$kamailio" KAMAILIO &
116fi
117
Neels Hofmeyr697a6172018-08-22 17:32:21 +0200118#ssh bts rm /tmp/bts.log /tmp/pcu.log
119#ssh bts neels/run_remote.sh &
120
121echo enter to close
122read enter_to_close
123echo Closing...
124
Oliver Smithd9f3d342018-09-26 16:29:00 +0200125if [ "${SIPCON_ENABLE}" == "true" ]; then
126 kill %13 %14
127 killall osmo-sip-connector
128 killall kamailio
129fi
130
Neels Hofmeyr697a6172018-08-22 17:32:21 +0200131#ssh bts neels/stop_remote.sh
132
133kill %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12
134killall osmo-msc
135killall osmo-bsc
136killall osmo-gbproxy
137killall osmo-sgsn
138#killall osmo-hnbgw
139killall osmo-mgw
140killall osmo-hlr
141killall -9 osmo-stp
142sudo killall tcpdump
143killall osmo-ggsn
144
145set +e
146cp *.cfg "$logdir"/
147
148echo
149echo enter name to save log
150read log_name
151if [ -n "$log_name" ]; then
152 newlogdir="log/$log_name"
153 #scp "bts:/tmp/{bts,pcu}.log" "bts:neels/osmo-{bts,pcu}.cfg" "$logdir"
154else
155 newlogdir="autolog/log_$(date +%Y-%m-%d_%H-%M-%S)"
156fi
157mkdir -p "$(dirname "$newlogdir")"
158
159mergecap -w "$logdir/trace.pcap" "$logdir/"*.single.pcap && rm -f "$logdir/"*.single.pcap
160
161if [ -x "$newlogdir" ]; then
162 echo "already exists, move it manually: $newlogdir"
163else
164 echo mv "$logdir" "$newlogdir"
165 mv "$logdir" "$newlogdir"
166 mkdir -p "$logdir"
167 logdir="$newlogdir"
168fi
169rm lastlog
170ln -s "$logdir" lastlog