diff options
author | Roy Marples <roy@marples.name> | 2009-12-05 20:05:43 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2009-12-05 20:05:43 +0000 |
commit | 22e2a4f0a156c566f0c460c2229a19dbff4e0553 (patch) | |
tree | b84fa2396e6b422028c76ee807e76e07544e443e /init.d | |
parent | ca752a5a2dcd097410e8d5e8df05545751b2c989 (diff) |
Add support for iproute2 in staticroute.
Fixes #208.
Diffstat (limited to 'init.d')
-rw-r--r-- | init.d/staticroute.in | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/init.d/staticroute.in b/init.d/staticroute.in index 0b49ca9a..8aea55c2 100644 --- a/init.d/staticroute.in +++ b/init.d/staticroute.in @@ -15,24 +15,36 @@ depend() keyword -jail -prefix -vserver } +pre_flight_checks() +{ + route=route + [ -s /etc/route.conf ] && return 0 + + if [ -n "$staticiproute" ]; then + route="ip route" + staticroute="$staticiproute" + fi +} + dump_args() { if [ -s /etc/route.conf ]; then cat /etc/route.conf - else - case "$staticroute" in - *"$__nl"*) - echo "$staticroute" - ;; - *) - ( - set -o noglob - IFS=';'; set -- $staticroute - IFS="$__nl"; echo "$*" - ) - ;; - esac + return $? fi + + case "$staticroute" in + *"$__nl"*) + echo "$staticroute" + ;; + *) + ( + set -o noglob + IFS=';'; set -- $staticroute + IFS="$__nl"; echo "$*" + ) + ;; + esac } do_routes() @@ -41,6 +53,8 @@ do_routes() [ "$RC_UNAME" != Linux ] && xtra=-q ebegin "$1 static routes" + eindent + pre_flight_checks dump_args | while read args; do [ -z "$args" ] && continue case "$args" in @@ -53,10 +67,19 @@ do_routes() [ $2 = "del" -o $2 = "delete" ] && eval ${args#*-} ;; *) - route $xtra $2 -$args - ;; + veinfo "$args" + case "$route" in + "ip route") + ip route $2 $args + ;; + *) + route $xtra $2 -$args + ;; + esac + veend $? esac done + eoutdent eend 0 } |