summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2009-12-14 19:31:18 +0000
committerRoy Marples <roy@marples.name>2009-12-14 19:31:18 +0000
commita165fbe384ed4851ea42d7fa2d2d74daa0c02f1c (patch)
tree3162c8fff3cd0978e317e0032bb6ff44b797ed06
parent02c12c1caced4c2393e2ca15efdaca56d5f0d452 (diff)
downloadopenrc-a165fbe384ed4851ea42d7fa2d2d74daa0c02f1c.tar.gz
openrc-a165fbe384ed4851ea42d7fa2d2d74daa0c02f1c.tar.bz2
openrc-a165fbe384ed4851ea42d7fa2d2d74daa0c02f1c.tar.xz
Support inet6 routes.
-rw-r--r--conf.d/network.in2
-rw-r--r--init.d/network.in21
-rw-r--r--init.d/staticroute.in11
3 files changed, 32 insertions, 2 deletions
diff --git a/conf.d/network.in b/conf.d/network.in
index 7201925..68141a7 100644
--- a/conf.d/network.in
+++ b/conf.d/network.in
@@ -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"
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 $?