#!/bin/sh
# Copyright 2019 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Virtual ethernet interface control script
# Sometimes, we need a virtual interface of arbitrary name and configuration
# that we can do dhcp on. This script is for those times.

# Basically,
# $ veth setup foo 127.0.1
# $ dhclient foo
# ...
# $ veth teardown foo
# Would set up an ethernet interface called 'foo' whose dhcpd is at 127.0.1.1
# and which will allocate addresses from 127.0.1.0/24. Note that using anything
# inside 127.0.0.0/8 is a bad idea here, since lo already handles those.

usage () {
	echo "Usage: $0 <command> [args...]"
	echo "  setup <iface> <base>     Sets up <iface> for <base>.0/24"
	echo "  teardown <iface>         Tears down <iface>"
}

setup () {
	iface="$1"
	base="$2"
	peer_iface="${iface}p"
	lease_file="/tmp/dnsmasq.${iface}.leases"
	pid_file="/tmp/dnsmasq.${iface}.pid"
	ip link add name "$iface" type veth peer name "$peer_iface"
	ifconfig "$peer_iface" "${base}.0/32"
	ifconfig "$peer_iface" up
	ifconfig "$iface" up
	route add -host 255.255.255.255 dev "$peer_iface"
	truncate -s 0 "$lease_file"
	dnsmasq --pid-file="$pid_file" \
		--dhcp-leasefile="$lease_file" \
		--dhcp-range="${base}.2,${base}.254" \
		--port=0 \
		--interface="$peer_iface" \
		--bind-interfaces
}

teardown () {
	iface="$1"
	pid_file="/tmp/dnsmasq.${iface}.pid"
	[ -f "$pid_file" ] && kill -TERM $(cat "$pid_file")
	route del -host 255.255.255.255
	ip link del "$iface"
}

if [ -z "$1" ]; then
	usage
	exit 1
fi

command="$1" ; shift
case "$command" in
	setup)
		setup "$@"
		;;
	teardown)
		teardown "$@"
		;;
	*)
		usage
		;;
esac
