[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
|
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() {
|
olsrd_setup_smartgw_rules() {
|
||||||
local funcname="olsrd_setup_smartgw_rules"
|
local funcname="olsrd_setup_smartgw_rules"
|
||||||
# Check if ipip is installed
|
# Check if ipip is installed
|
||||||
@ -566,10 +597,12 @@ olsrd_setup_smartgw_rules() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
wanifnames=$(ip r l e 0/0 t all | sed -e 's/^.* dev //' |cut -d " " -f 1 | sort | uniq)
|
local wanifnames="$( get_wan_ifnames )"
|
||||||
nowan=0
|
|
||||||
if [ -z "$wanifnames" ]; then
|
if [ -z "$wanifnames" ]; then
|
||||||
nowan=1
|
nowan=1
|
||||||
|
else
|
||||||
|
nowan=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
IP4T=$(which iptables)
|
IP4T=$(which iptables)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user