mwan3: reduce calls to `ip route list'
authorAaron Goodman <redacted>
Wed, 20 May 2020 09:33:06 +0000 (05:33 -0400)
committerAaron Goodman <redacted>
Wed, 20 May 2020 09:37:39 +0000 (05:37 -0400)
Signed-off-by: Aaron Goodman <redacted>
net/mwan3/files/lib/mwan3/mwan3.sh

index 88159e8b95c829f660db38cd66151a479846774e..1b09da337a77b359ad95a85f327150bff9ab57e1 100644 (file)
@@ -39,14 +39,16 @@ mwan3_rtmon_ipv4()
        local tid=1
        local idx=0
        local ret=1
+       local tbl=""
        mkdir -p /tmp/mwan3rtmon
        ($IP4 route list table main  | grep -v "^default\|linkdown" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv4.main
        while uci get mwan3.@interface[$idx] >/dev/null 2>&1 ; do
                idx=$((idx+1))
                tid=$idx
                [ "$(uci get mwan3.@interface[$((idx-1))].family)" = "ipv4" ] && {
-                       if $IP4 route list table $tid | grep -q ^default; then
-                               ($IP4 route list table $tid  | grep -v "^default\|linkdown" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv4.$tid
+                       tbl=$($IP4 route list table $tid)
+                       if echo "$tbl" | grep -q ^default; then
+                               (echo "$tbl"  | grep -v "^default\|linkdown" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv4.$tid
                                cat /tmp/mwan3rtmon/ipv4.$tid | grep -v -x -F -f /tmp/mwan3rtmon/ipv4.main | while read line; do
                                        $IP4 route del table $tid $line
                                done
@@ -70,14 +72,16 @@ mwan3_rtmon_ipv6()
        local tid=1
        local idx=0
        local ret=1
+       local tbl=""
        mkdir -p /tmp/mwan3rtmon
        ($IP6 route list table main  | grep -v "^default\|^::/0\|^unreachable" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv6.main
        while uci get mwan3.@interface[$idx] >/dev/null 2>&1 ; do
                idx=$((idx+1))
                tid=$idx
                [ "$(uci get mwan3.@interface[$((idx-1))].family)" = "ipv6" ] && {
-                       if $IP6 route list table $tid | grep -q "^default\|^::/0"; then
-                               ($IP6 route list table $tid  | grep -v "^default\|^::/0\|^unreachable" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv6.$tid
+                       tbl=$($IP6 route list table $tid)
+                       if echo "$tbl" | grep -q "^default\|^::/0"; then
+                               (echo "$tbl"  | grep -v "^default\|^::/0\|^unreachable" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv6.$tid
                                cat /tmp/mwan3rtmon/ipv6.$tid | grep -v -x -F -f /tmp/mwan3rtmon/ipv6.main | while read line; do
                                        $IP6 route del table $tid $line
                                done
git clone https://git.99rst.org/PROJECT