Support inet6 routes.

This commit is contained in:
Roy Marples 2009-12-14 19:31:18 +00:00
parent 02c12c1cac
commit a165fbe384
3 changed files with 32 additions and 2 deletions

View File

@ -11,6 +11,8 @@
# You can assign a default route
#defaultroute="192.168.0.1"
#defaultroute6="2001:a:b:c"
# Lastly, the interfaces variable pulls in virtual interfaces that cannot
# be automatically detected.
#interfaces="br0 bond0 vlan0"

View File

@ -137,6 +137,7 @@ routeflush()
if [ "$RC_UNAME" = Linux ]; then
if [ -x /sbin/ip ]; then
ip route flush scope global
ip route delete default 2>/dev/null
else
# Sadly we also delete some link routes, but
# this cannot be helped
@ -156,6 +157,8 @@ routeflush()
esac
route del $flags $dest $netmask $xtra
done
# Erase any default dev eth0 routes
route del default 2>/dev/null
fi
else
route -qn flush
@ -263,6 +266,24 @@ start()
eend $?
fi
if [ -n "$defaultroute6" ]; then
ebegin "Setting default route $defaultroute6"
if [ "$RC_UNAME" = Linux ]; then
routecmd="route -A inet6 add"
if [ "${defaultroute6#dev }" = "$defaultroute6" ]; then
routecmd="$routecmd gw"
fi
else
routecmd="route -inet6 add"
fi
$routecmd default $defaultroute6
eend $?
elif [ -n "$defaultiproute6" ]; then
ebegin "Setting default route $defaultiproute6"
ip route add default via $defaultiproute6
eend $?
fi
return 0
}

View File

@ -50,7 +50,7 @@ dump_args()
do_routes()
{
local xtra=
local xtra= family=
[ "$RC_UNAME" != Linux ] && xtra=-q
ebegin "$1 static routes"
@ -74,7 +74,14 @@ do_routes()
ip route $2 $args
;;
*)
route $xtra $2 -$args
# Linux route does cannot work it out ...
if [ "$RC_UNAME" = Linux ]; then
case "$args" in
*:*) family="-A inet6";;
*) family=;;
esac
fi
route $famly $xtra $2 -$args
;;
esac
veend $?