mwan3: optimize the process of copying routing tables
- The original copy process is to delete all routing tables first, then add new routing table. This process is too slow and very dirty. - We use grep to identify the changes and apply them. - ignore ipv6 unreachable routes - update version number Signed-off-by: Chen Minqiang <ptpt52@gmail.com>
This commit is contained in:
parent
428f65bee8
commit
6a5836db32
2 changed files with 22 additions and 22 deletions
|
@ -8,7 +8,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=mwan3
|
PKG_NAME:=mwan3
|
||||||
PKG_VERSION:=2.7.0
|
PKG_VERSION:=2.7.1
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>
|
PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>
|
||||||
PKG_LICENSE:=GPLv2
|
PKG_LICENSE:=GPLv2
|
||||||
|
|
|
@ -25,27 +25,27 @@ mwan3_rtmon_ipv4()
|
||||||
local tid=1
|
local tid=1
|
||||||
local idx=0
|
local idx=0
|
||||||
local ret=1
|
local ret=1
|
||||||
main_tbsum=$($IP4 route list table main | grep -v ^default | md5sum | head -c32)
|
mkdir -p /tmp/mwan3rtmon
|
||||||
|
($IP4 route list table main | grep -v ^default | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv4.main
|
||||||
while uci get mwan3.@interface[$idx] >/dev/null 2>&1 ; do
|
while uci get mwan3.@interface[$idx] >/dev/null 2>&1 ; do
|
||||||
idx=$((idx+1))
|
idx=$((idx+1))
|
||||||
tid=$idx
|
tid=$idx
|
||||||
[ "$(uci get mwan3.@interface[$((idx-1))].family)" = "ipv4" ] && {
|
[ "$(uci get mwan3.@interface[$((idx-1))].family)" = "ipv4" ] && {
|
||||||
if $IP4 route list table $tid | grep -q ^default; then
|
if $IP4 route list table $tid | grep -q ^default; then
|
||||||
tbsum=$($IP4 route list table $tid | grep -v ^default | md5sum | head -c32)
|
($IP4 route list table $tid | grep -v ^default | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv4.$tid
|
||||||
if [ "$tbsum" != "$main_tbsum" ]; then
|
cat /tmp/mwan3rtmon/ipv4.$tid | grep -v -x -F -f /tmp/mwan3rtmon/ipv4.main | while read line; do
|
||||||
$IP4 route list table $tid | grep -v ^default | while read line; do
|
|
||||||
$IP4 route del table $tid $line
|
$IP4 route del table $tid $line
|
||||||
done
|
done
|
||||||
$IP4 route list table main | grep -v ^default | while read line; do
|
cat /tmp/mwan3rtmon/ipv4.main | grep -v -x -F -f /tmp/mwan3rtmon/ipv4.$tid | while read line; do
|
||||||
$IP4 route add table $tid $line
|
$IP4 route add table $tid $line
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
if [ "$(uci get mwan3.@interface[$((idx-1))].enabled)" = "1" ]; then
|
if [ "$(uci get mwan3.@interface[$((idx-1))].enabled)" = "1" ]; then
|
||||||
ret=0
|
ret=0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
rm -f /tmp/mwan3rtmon/ipv4.*
|
||||||
return $ret
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,27 +54,27 @@ mwan3_rtmon_ipv6()
|
||||||
local tid=1
|
local tid=1
|
||||||
local idx=0
|
local idx=0
|
||||||
local ret=1
|
local ret=1
|
||||||
main_tbsum=$($IP6 route list table main | grep -v "^default\|^::/" | md5sum | head -c32)
|
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
|
while uci get mwan3.@interface[$idx] >/dev/null 2>&1 ; do
|
||||||
idx=$((idx+1))
|
idx=$((idx+1))
|
||||||
tid=$idx
|
tid=$idx
|
||||||
[ "$(uci get mwan3.@interface[$((idx-1))].family)" = "ipv6" ] && {
|
[ "$(uci get mwan3.@interface[$((idx-1))].family)" = "ipv6" ] && {
|
||||||
if $IP6 route list table $tid | grep -q ^::/0; then
|
if $IP6 route list table $tid | grep -q "^default\|^::/0"; then
|
||||||
tbsum=$($IP6 route list table $tid | grep -v "^default\|^::/" | md5sum | head -c32)
|
($IP6 route list table $tid | grep -v "^default\|^::/0\|^unreachable" | sort -n; echo empty fixup) >/tmp/mwan3rtmon/ipv6.$tid
|
||||||
if [ "$tbsum" != "$main_tbsum" ]; then
|
cat /tmp/mwan3rtmon/ipv6.$tid | grep -v -x -F -f /tmp/mwan3rtmon/ipv6.main | while read line; do
|
||||||
$IP6 route list table $tid | grep -v "^default\|^::/" | while read line; do
|
|
||||||
$IP6 route del table $tid $line
|
$IP6 route del table $tid $line
|
||||||
done
|
done
|
||||||
$IP6 route list table main | grep -v "^default\|^::/" | while read line; do
|
cat /tmp/mwan3rtmon/ipv6.main | grep -v -x -F -f /tmp/mwan3rtmon/ipv6.$tid | while read line; do
|
||||||
$IP6 route add table $tid $line
|
$IP6 route add table $tid $line
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
if [ "$(uci get mwan3.@interface[$((idx-1))].enabled)" = "1" ]; then
|
if [ "$(uci get mwan3.@interface[$((idx-1))].enabled)" = "1" ]; then
|
||||||
ret=0
|
ret=0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
rm -f /tmp/mwan3rtmon/ipv6.*
|
||||||
return $ret
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue