summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorhrs <hrs@FreeBSD.org>2014-08-29 08:02:35 +0000
committerhrs <hrs@FreeBSD.org>2014-08-29 08:02:35 +0000
commitc7aafdef00f69f8a6c776d3f404422e0045f0a38 (patch)
tree87ea34df9a3c011518dd9b81df6219ee0f2c3ecc /etc
parent1937276d51048d9c8860de1841030471d0abce1b (diff)
downloadFreeBSD-src-c7aafdef00f69f8a6c776d3f404422e0045f0a38.zip
FreeBSD-src-c7aafdef00f69f8a6c776d3f404422e0045f0a38.tar.gz
Return false status only when adding a route is failed. It could
erroneously return false due to an afexists() check loop in routing_start().
Diffstat (limited to 'etc')
-rwxr-xr-xetc/rc.d/routing50
1 files changed, 24 insertions, 26 deletions
diff --git a/etc/rc.d/routing b/etc/rc.d/routing
index c37c706..9cb07e5 100755
--- a/etc/rc.d/routing
+++ b/etc/rc.d/routing
@@ -23,32 +23,33 @@ ROUTE_CMD="/sbin/route"
routing_start()
{
- local _cmd _af _if _a
+ local _cmd _af _if _a _ret
_cmd=$1
_af=$2
_if=$3
+ _ret=0
case $_if in
""|[Aa][Ll][Ll]|[Aa][Nn][Yy]) _if="" ;;
esac
case $_af in
- inet|inet6|atm)
- if afexists $_af; then
- setroutes $_cmd $_af $_if
- else
- err 1 "Unsupported address family: $_af."
- fi
- ;;
""|[Aa][Ll][Ll]|[Aa][Nn][Yy])
for _a in inet inet6 atm; do
- afexists $_a && setroutes $_cmd $_a $_if
+ afexists $_a || continue
+ setroutes $_cmd $_a $_if || _ret=1
done
- ;;
+ ;;
*)
- err 1 "Unsupported address family: $_af."
- ;;
+ if afexists $_af; then
+ setroutes $_cmd $_af $_if || _ret=1
+ else
+ err 1 "Unsupported address family: $_af."
+ fi
+ ;;
esac
+
+ return $_ret
}
routing_stop()
@@ -62,17 +63,6 @@ routing_stop()
esac
case $_af in
- inet|inet6|atm)
- if afexists $_af; then
- eval static_${_af} delete $_if
- # When $_if is specified, do not flush routes.
- if ! [ -n "$_if" ]; then
- eval routing_stop_${_af}
- fi
- else
- err 1 "Unsupported address family: $_af."
- fi
- ;;
""|[Aa][Ll][Ll]|[Aa][Nn][Yy])
for _a in inet inet6 atm; do
afexists $_a || continue
@@ -82,10 +72,18 @@ routing_stop()
eval routing_stop_${_a}
fi
done
- ;;
+ ;;
*)
- err 1 "Unsupported address family: $_af."
- ;;
+ if afexists $_af; then
+ eval static_${_af} delete $_if
+ # When $_if is specified, do not flush routes.
+ if ! [ -n "$_if" ]; then
+ eval routing_stop_${_af}
+ fi
+ else
+ err 1 "Unsupported address family: $_af."
+ fi
+ ;;
esac
}
OpenPOWER on IntegriCloud