#!/bin/sh
# stop dhcp6c and radvd, and delete all non-128bit dynamic prefixes on LAN

# $0 (/etc_ro/ppp/ipv6-down)
# $1 ifname  (ppp0)
# $2 devname (eth2.2)
# $4 local  LL addr
# $5 remote LL addr

. /etc/functions.sh      # common functions
include /lib/network     # include /lib/network/*.sh
scan_interfaces          # read and parse the network config

LAN=br-lan
DHCP6C="/sbin/dhcp6.sh client"
IP_FIXED=`uci -q get ipv6.lan.global_addr`
gw=$4
dev=$1
cfg=$6

get_lan_prefix()
{
  ifconfig $LAN | grep "inet6 addr" | grep -v -E "fe80::|/128" | sed -e "s/^.*inet6 addr: //" -e "s/ Scope.*\$//"
}

# program entry

config_get_bool defaultroute "$cfg" defaultroute 1

if [ ${defaultroute} -eq 1 ]
then
	#route -A inet6 del default gw ${gw} dev ${dev}
	route -A inet6 add 2000::/3 gw $5 $1          # add remote LL address as default gateway
fi

$DHCP6C stop

PREFIXES=`[ $IP_FIXED ] && get_lan_prefix|grep -v $IP_FIXED || get_lan_prefix`
if [ ! -z "$PREFIXES" ]; then
  for PREFIX in $PREFIXES; do
    ifconfig $LAN del $PREFIX
  done
fi
