Changeset 35680


Ignore:
Timestamp:
2013-02-19T18:01:38+01:00 (5 years ago)
Author:
zioproto
Message:

[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@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • packages/net/olsrd/files/olsrd.init

    r35679 r35680  
    559559} 
    560560 
     561get_wan_ifnames() 
     562{ 
     563        local wanifnames word catch_next 
     564 
     565        which ip >/dev/null || return 1 
     566 
     567        set -- $( ip route list exact 0.0.0.0/0 table all ) 
     568        for word in $*; do 
     569                case "$word" in 
     570                        dev) 
     571                                catch_next="true" 
     572                        ;; 
     573                        *) 
     574                                [ -n "$catch_next" ] && { 
     575                                        case "$wanifnames" in 
     576                                                *" $word "*) 
     577                                                ;; 
     578                                                *) 
     579                                                        wanifnames="$wanifnames $word " 
     580                                                ;; 
     581                                        esac 
     582 
     583                                        catch_next= 
     584                                } 
     585                        ;; 
     586                esac 
     587        done 
     588 
     589        echo "$wanifnames" 
     590} 
     591 
    561592olsrd_setup_smartgw_rules() { 
    562593        local funcname="olsrd_setup_smartgw_rules" 
     
    567598        } 
    568599 
    569         wanifnames=$(ip r l e 0/0 t all | sed -e 's/^.* dev //' |cut -d " " -f 1 | sort | uniq) 
    570         nowan=0 
     600        local wanifnames="$( get_wan_ifnames )" 
     601 
    571602        if [ -z "$wanifnames" ]; then 
    572603                nowan=1 
     604        else 
     605                nowan=0 
    573606        fi 
    574607 
Note: See TracChangeset for help on using the changeset viewer.