Lines 227-239
_add_route()
Link Here
|
227 |
set -- "${one}" "${two}" via "$@" |
227 |
set -- "${one}" "${two}" via "$@" |
228 |
fi |
228 |
fi |
229 |
|
229 |
|
230 |
local cmd= cmd_nometric= have_metric=false |
230 |
local cmd_add= cmd_show= have_metric=false |
231 |
while [ -n "$1" ]; do |
231 |
while [ -n "$1" ]; do |
232 |
case "$1" in |
232 |
case "$1" in |
233 |
metric) metric=$2 ; cmd="${cmd} metric $2" ; shift ; have_metric=true ;; |
233 |
metric) metric=$2 ; cmd_add="${cmd_add} metric $2" ; shift ; have_metric=true ;; |
234 |
netmask) x="/$(_netmask2cidr "$2")" ; cmd="${cmd}${x}" ; cmd_nometric="${cmd}${x}" ; shift;; |
234 |
netmask) x="/$(_netmask2cidr "$2")" ; cmd_add="${cmd_add}${x}" ; cmd_show="${cmd_show}${x}" ; shift;; |
235 |
-host|-net);; |
235 |
-host|-net);; |
236 |
*) cmd="${cmd} ${1}" ; cmd_nometric="${cmd_nometric} ${1}" ;; |
236 |
*) cmd_add="${cmd_add} ${1}" ; cmd_show="${cmd_show} ${1}" ;; |
237 |
esac |
237 |
esac |
238 |
shift |
238 |
shift |
239 |
done |
239 |
done |
Lines 241-258
_add_route()
Link Here
|
241 |
# We cannot use a metric if we're using a nexthop |
241 |
# We cannot use a metric if we're using a nexthop |
242 |
if ! ${have_metric} && \ |
242 |
if ! ${have_metric} && \ |
243 |
[ -n "${metric}" -a \ |
243 |
[ -n "${metric}" -a \ |
244 |
"${cmd##* nexthop }" = "$cmd" ] |
244 |
"${cmd_add##* nexthop }" = "${cmd_add}" ] |
245 |
then |
245 |
then |
246 |
cmd="${cmd} metric ${metric}" |
246 |
cmd_add="${cmd_add} metric ${metric}" |
247 |
fi |
247 |
fi |
248 |
|
248 |
|
249 |
# Check for route already existing: |
249 |
# Check for route already existing: |
250 |
ip ${family} route show ${cmd_nometric} dev "${IFACE}" 2>/dev/null | \ |
250 |
ip ${family} route show ${cmd_show} dev "${IFACE}" 2>/dev/null | \ |
251 |
fgrep -sq "${cmd%% *}" |
251 |
fgrep -sq "${cmd_add%% *}" |
252 |
route_already_exists=$? |
252 |
route_already_exists=$? |
253 |
|
253 |
|
254 |
veinfo ip ${family} route append ${cmd} dev "${IFACE}" |
254 |
veinfo ip ${family} route append ${cmd_add} dev "${IFACE}" |
255 |
ip ${family} route append ${cmd} dev "${IFACE}" |
255 |
ip ${family} route append ${cmd_add} dev "${IFACE}" |
256 |
rc=$? |
256 |
rc=$? |
257 |
# Check return code in some cases |
257 |
# Check return code in some cases |
258 |
if [ $rc -ne 0 ]; then |
258 |
if [ $rc -ne 0 ]; then |
Lines 267-274
_add_route()
Link Here
|
267 |
error|fatal) msgfunc=eerror rc=1;; |
267 |
error|fatal) msgfunc=eerror rc=1;; |
268 |
*) msgfunc=eerror rc=1 ; eerror "Unknown error behavior: $eh_behavior" ;; |
268 |
*) msgfunc=eerror rc=1 ; eerror "Unknown error behavior: $eh_behavior" ;; |
269 |
esac |
269 |
esac |
270 |
eval $msgfunc "Route '$cmd_nometric' already existed:" |
270 |
eval $msgfunc "Route '$cmd_show' already existed:" |
271 |
eval $msgfunc \"$(ip $family route show ${cmd_nometric} dev "${IFACE}" 2>&1)\" |
271 |
eval $msgfunc \"$(ip $family route show ${cmd_show} dev "${IFACE}" 2>&1)\" |
272 |
else |
272 |
else |
273 |
: # TODO: Handle other errors |
273 |
: # TODO: Handle other errors |
274 |
fi |
274 |
fi |