#!/bin/bash

# env > env-$script_type.txt

# This interface has precedence over most interaces
# in openresolv/resolvconf:
rdev=lo

# ##### Routing

keep_routes() {
   local ip
   for ip in "$@"; do
       ip route add $(ip route get "$ip" | head -n1)
   done
}

drop_routes() {
   local ip
   for ip in "$@"; do
       ip route del $(ip route get "$ip" | head -n1)
   done
}

# ##### DHCP

# Write foreign options to stdout:
foreign_options() {
   local i=1
   while true; do
       local varname=foreign_option_$i
       local value="$(eval echo \$$varname)"
       if [ -z "$value" ]; then
           return
       fi
       echo $value
       ((++i))
   done
}

# Get resolvconf configuration:
create_resolvconf() {
   foreign_options | grep "^dhcp-option DNS " | sed "s/^dhcp-option DNS /nameserver /"
}

# ##### Events

route_up() {
   # Append nameservers to resolvconf (it would be better to override them):
   create_resolvconf | resolvconf -m0 -a $rdev
   # keep_routes $trusted_ip6
}

route_pre_down() {
   resolvconf -d $rdev
   # drop_routes $trusted_ip6
}

# TODO, support for http-proxy

case "$script_type" in
   route-up) route_up "$@" ;;
   route-pre-down) route_pre_down "$@" ;;
esac
