#!/bin/sh

if [ "z$1" = "z-h" -o "z$1" = "z--help" ]; then
    echo "usage: $0 [-d [-l]]"
    echo -n "    Clean up all CORE namespaces processes, bridges, interfaces, "
    echo "and session\n    directories. Options:"
    echo "        -h    show this help message and exit"
    echo "        -d    also kill the Python daemon"
    echo "        -l    remove the core-daemon.log file"
    exit 0
fi

if [ `id -u` != 0 ]; then
    echo "Permission denied. Re-run this script as root."
    exit 1
fi

PATH="/sbin:/bin:/usr/sbin:/usr/bin"
export PATH

if [ "z$1" = "z-d" ]; then
    pypids=`pidof python3 python`
    for p in $pypids; do
	grep -q core-daemon /proc/$p/cmdline
	if [ $? = 0 ]; then
            echo "cleaning up core-daemon process: $p"
	    kill -9 $p
	fi
    done
fi

if [ "z$2" = "z-l" ]; then
    rm -f /var/log/core-daemon.log
fi

kaopts="-v"
killall --help 2>&1 | grep -q namespace
if [ $? = 0 ]; then
    kaopts="$kaopts --ns 0"
fi

vnodedpids=`pidof vnoded`
if [ "z$vnodedpids" != "z" ]; then
    echo "cleaning up old vnoded processes: $vnodedpids"
    killall $kaopts -KILL vnoded
    # pause for 1 second for interfaces to disappear
    sleep 1
fi
killall -q emane
killall -q emanetransportd
killall -q emaneeventservice

if [ -d /sys/class/net ]; then
    ifcommand="ls -1 /sys/class/net"
else
    ifcommand="ip -o link show | sed -r -e 's/[0-9]+: ([^[:space:]]+): .*/\1/'"
fi

eval "$ifcommand" | awk '
    /^veth[0-9]+\./ {print "removing interface " $1; system("ip link del " $1);}
    /tmp\./    {print "removing interface " $1; system("ip link del " $1);}
    /gt\./     {print "removing interface " $1; system("ip link del " $1);}
    /b\./ {print "removing bridge " $1; system("ip link set " $1 " down; ip link del " $1);}
'

ebtables -L FORWARD | awk '
    /^-.*b\./ {print "removing ebtables " $0; system("ebtables -D FORWARD " $0); print "removing ebtables chain " $4; system("ebtables -X " $4);}
'

rm -rf /tmp/pycore*
