#!/usr/bin/bash

set -e -o pipefail
shopt -s extglob
export LC_ALL=C

PROGRAM="${0##*/}"
FWMARK=1024

cmd() {
	echo "[#] $*" >&2
	"$@"
}

cmd_usage() {
	cat >&2 <<-_EOF
	Usage: $PROGRAM [ up | down ] 

	See iprose-quick(8) for more info and examples.
	_EOF
}

do_cleanup() {
    cmd ip ru del pref $FWMARK not fwmark $FWMARK lookup $FWMARK
}

cmd_up() {
	local table
  table=1024
  while [[ -n $(ip -4 route show table $table 2>/dev/null) || -n $(ip -6 route show table $table 2>/dev/null) ]]; do
    ((table++))
  done
  FWMARK=$table

  cmd ip ru add pref $table not fwmark $table lookup $table
  trap do_cleanup EXIT

  shift
  cmd iprose -fwmark $table -rtable $table $@
}

cmd_down() {
  pkill iprose
}


if [[ $# -eq 1 && ( $1 == --help || $1 == -h || $1 == help ) ]]; then
	cmd_usage
elif [[ $1 == up ]]; then
	cmd_up $@
elif [[ $1 == down ]]; then
	cmd_down $@
else
	cmd_usage
	exit 1
fi

exit 0
