#!/bin/bash
#
# QEMU network configuration script to bring down tap devices. This
# utility needs to be run as root, and will use the ip utility
#
# If you find yourself calling this script a lot, you can add the
# the following to your /etc/sudoers file to be able to run this
# command without entering your password each time:
#
# <my-username> ALL=NOPASSWD: /path/to/runqemu-ifup
# <my-username> ALL=NOPASSWD: /path/to/runqemu-ifdown
#
# Copyright (c) 2006-2011 Linux Foundation
#
# SPDX-License-Identifier: GPL-2.0-only
#

usage() {
	echo "sudo $(basename $0) <tap-dev> <native-sysroot-basedir>"
}

if [ $EUID -ne 0 ]; then
	echo "Error: This script (runqemu-ifdown) must be run with root privileges"
	exit 1
fi

if [ $# -ne 2 ]; then
	usage
	exit 1
fi

TAP=$1
STAGING_BINDIR_NATIVE=$2

if !ip tuntap del $TAP mode tap 2>/dev/null; then
	echo "Error: Unable to run up tuntap del"
	exit 1
fi

IPTOOL=`which ip 2> /dev/null`
if [ "x$IPTOOL" = "x" ]; then
	# better than nothing...
	IPTOOL=/sbin/ip
fi
if [ -x "$IPTOOL" ]; then
	if `$IPTOOL link show $TAP > /dev/null 2>&1`; then
		$IPTOOL link del $TAP
	fi
fi
# cleanup the remaining iptables rules
IPTABLES=`which iptables 2> /dev/null`
if [ "x$IPTABLES" = "x" ]; then
	IPTABLES=/sbin/iptables
fi
if [ ! -x "$IPTABLES" ]; then
	echo "$IPTABLES cannot be executed"
	exit 1
fi
n=$[ (`echo $TAP | sed 's/tap//'` * 2) + 1 ]
dest=$[ (`echo $TAP | sed 's/tap//'` * 2) + 2 ]
$IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$n/32
$IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$dest/32
true
