#!/bin/sh -u

PATH="$PATH:/sbin"

DATADIR="$1"; shift

[ -n "$DATADIR" -a -f "$DATADIR"/routes.list ] || \
	fatal "Couldn't find routes.list file in $DATADIR"

. alterator-net-functions

_routes_exit_handler()
{
	local rc=$?
	trap - EXIT
	[ -z "$TMP_IFACES_DIR" ] ||
		rm -rf -- "$TMP_IFACES_DIR"
	exit $rc
}

trap _routes_exit_handler HUP INT QUIT TERM EXIT
TMP_IFACES_DIR="$(mktemp -d --tmpdir amm-routes-tmp-ifaces-dirXXXXXXXX)"
while read line; do
	tmp_iface_path="$TMP_IFACES_DIR/${line%% *}"
	mkdir -p "$tmp_iface_path"
	# don't lost default route
	if [ ! -e "$tmp_iface_path"/ipv4route -a -s /etc/net/ifaces/"${tmp_iface_path##*/}"/ipv4route ]; then
		grep '^default ' /etc/net/ifaces/"${tmp_iface_path##*/}"/ipv4route >"$tmp_iface_path"/ipv4route
	fi
	echo "${line#* }" >>"$tmp_iface_path"/ipv4route
done <"$DATADIR"/routes.list

for i in $(find "$TMP_IFACES_DIR/" -mindepth 1 -maxdepth 1 -type d -printf '%f\n'); do
	mkdir -p /etc/net/ifaces/"$i"
	mv -f -- "$TMP_IFACES_DIR/$i/ipv4route"  /etc/net/ifaces/"$i"/
	if [ "$(read_iface_option "$i" BOOTPROTO)" = static ]; then
		alterator-net-routing "$i" del
		alterator-net-routing "$i" add
	fi
done

rm -rf -- "$TMP_IFACES_DIR"
trap - HUP INT QUIT TERM EXIT

# Check

exit 0
