From a165fbe384ed4851ea42d7fa2d2d74daa0c02f1c Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Mon, 14 Dec 2009 19:31:18 +0000 Subject: Support inet6 routes. --- init.d/network.in | 21 +++++++++++++++++++++ init.d/staticroute.in | 11 +++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) (limited to 'init.d') diff --git a/init.d/network.in b/init.d/network.in index 3beba1c..259fb31 100644 --- a/init.d/network.in +++ b/init.d/network.in @@ -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 } diff --git a/init.d/staticroute.in b/init.d/staticroute.in index 9f38b56..9995d37 100644 --- a/init.d/staticroute.in +++ b/init.d/staticroute.in @@ -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 $? -- cgit v1.2.3