42 lines
919 B
Bash
Executable File
42 lines
919 B
Bash
Executable File
#!/bin/bash
|
|
netns="$1"
|
|
shift
|
|
|
|
child_ps=0
|
|
forward_kill() {
|
|
sig="$1"
|
|
echo "Caught signal SIG$sig!"
|
|
if [ "$child_ps" != "0" ]; then
|
|
echo "Killing $child_ps with SIG$sig!"
|
|
kill -SIG${sig} $child_ps
|
|
else
|
|
exit 0
|
|
fi
|
|
}
|
|
forward_kill_int() {
|
|
forward_kill "INT"
|
|
}
|
|
forward_kill_term() {
|
|
forward_kill "TERM"
|
|
}
|
|
forward_kill_usr1() {
|
|
# Special signal received from osmo-gsm-tester to tell child to SIGKILL
|
|
echo "Converting SIGUSR1->SIGKILL"
|
|
forward_kill "KILL"
|
|
}
|
|
# Don't use 'set -e', otherwise traps are not triggered!
|
|
trap forward_kill_int INT
|
|
trap forward_kill_term TERM
|
|
trap forward_kill_usr1 USR1
|
|
|
|
#TODO: Later on I may want to call myself with specific ENV and calling sudo in order to run inside the netns but with dropped privileges
|
|
ip netns exec $netns "$@" &
|
|
child_ps=$!
|
|
|
|
echo "$$: waiting for $child_ps"
|
|
wait "$child_ps"
|
|
child_exit_code="$?"
|
|
echo "child exited with $child_exit_code"
|
|
|
|
exit $child_exit_code
|