[packages] olsrd: init: cleanup an expensive/forky call
for determining all gateways in all routing tables 1) write out the ip-call, never ever abbreviate in scripts 2) avoid forks: sorting/uniq is not needed, if we only append yet unappended words 3) use an extra function() for this, better readable 4) check for installed ip-command Signed-off-by: Bastian Bittorf <bittorf@bluebottle.com> git-svn-id: svn://svn.openwrt.org/openwrt/packages@35680 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
37a9b36d0b
commit
ff88c81664
@ -558,6 +558,37 @@ olsrd_write_config() {
|
||||
return 0
|
||||
}
|
||||
|
||||
get_wan_ifnames()
|
||||
{
|
||||
local wanifnames word catch_next
|
||||
|
||||
which ip >/dev/null || return 1
|
||||
|
||||
set -- $( ip route list exact 0.0.0.0/0 table all )
|
||||
for word in $*; do
|
||||
case "$word" in
|
||||
dev)
|
||||
catch_next="true"
|
||||
;;
|
||||
*)
|
||||
[ -n "$catch_next" ] && {
|
||||
case "$wanifnames" in
|
||||
*" $word "*)
|
||||
;;
|
||||
*)
|
||||
wanifnames="$wanifnames $word "
|
||||
;;
|
||||
esac
|
||||
|
||||
catch_next=
|
||||
}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "$wanifnames"
|
||||
}
|
||||
|
||||
olsrd_setup_smartgw_rules() {
|
||||
local funcname="olsrd_setup_smartgw_rules"
|
||||
# Check if ipip is installed
|
||||
@ -566,10 +597,12 @@ olsrd_setup_smartgw_rules() {
|
||||
return 1
|
||||
}
|
||||
|
||||
wanifnames=$(ip r l e 0/0 t all | sed -e 's/^.* dev //' |cut -d " " -f 1 | sort | uniq)
|
||||
nowan=0
|
||||
local wanifnames="$( get_wan_ifnames )"
|
||||
|
||||
if [ -z "$wanifnames" ]; then
|
||||
nowan=1
|
||||
else
|
||||
nowan=0
|
||||
fi
|
||||
|
||||
IP4T=$(which iptables)
|
||||
|
Loading…
x
Reference in New Issue
Block a user