Merge pull request #5777 from TDT-AG/pr/20181316-net-wan3-update

net/wan3: add some enhancements
This commit is contained in:
Hannu Nyman 2018-03-18 19:42:34 +02:00 committed by GitHub
commit 8e7d633b73
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 19 additions and 5 deletions

View file

@ -8,8 +8,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=mwan3 PKG_NAME:=mwan3
PKG_VERSION:=2.6.10 PKG_VERSION:=2.6.11
PKG_RELEASE:=2 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

View file

@ -7,6 +7,10 @@
# #
# There are three main environment variables that are passed to this script. # There are three main environment variables that are passed to this script.
# #
# $ACTION Either "ifup" or "ifdown" # $ACTION
# <ifup> Is called by netifd and mwan3track
# <ifdown> Is called by netifd and mwan3track
# <connected> Is only called by mwan3track if tracking was successful
# <disconnected> Is only called by mwan3track if tracking has failed
# $INTERFACE Name of the interface which went up or down (e.g. "wan" or "wwan") # $INTERFACE Name of the interface which went up or down (e.g. "wan" or "wwan")
# $DEVICE Physical device name which interface went up or down (e.g. "eth0" or "wwan0") # $DEVICE Physical device name which interface went up or down (e.g. "eth0" or "wwan0")

View file

@ -10,6 +10,7 @@ CONNTRACK_FILE="/proc/net/nf_conntrack"
MWAN3_STATUS_DIR="/var/run/mwan3" MWAN3_STATUS_DIR="/var/run/mwan3"
MWAN3TRACK_STATUS_DIR="/var/run/mwan3track" MWAN3TRACK_STATUS_DIR="/var/run/mwan3track"
MWAN3_INTERFACE_MAX=""
DEFAULT_LOWEST_METRIC=256 DEFAULT_LOWEST_METRIC=256
MMX_MASK="" MMX_MASK=""
MMX_DEFAULT="" MMX_DEFAULT=""
@ -58,18 +59,25 @@ mwan3_id2mask()
mwan3_init() mwan3_init()
{ {
local bitcnt local bitcnt
local mmdefault mmblackhole mmunreachable local mmdefault
[ -d $MWAN3_STATUS_DIR ] || mkdir -p $MWAN3_STATUS_DIR/iface_state [ -d $MWAN3_STATUS_DIR ] || mkdir -p $MWAN3_STATUS_DIR/iface_state
# mwan3's MARKing mask (at least 3 bits should be set) # mwan3's MARKing mask (at least 3 bits should be set)
if [ -e "${MWAN3_STATUS_DIR}/mmx_mask" ]; then if [ -e "${MWAN3_STATUS_DIR}/mmx_mask" ]; then
MMX_MASK=$(cat "${MWAN3_STATUS_DIR}/mmx_mask") MMX_MASK=$(cat "${MWAN3_STATUS_DIR}/mmx_mask")
MWAN3_INTERFACE_MAX=$(uci_get_state mwan3 globals iface_max)
else else
config_load mwan3 config_load mwan3
config_get MMX_MASK globals mmx_mask '0xff00' config_get MMX_MASK globals mmx_mask '0xff00'
echo "$MMX_MASK" > "${MWAN3_STATUS_DIR}/mmx_mask" echo "$MMX_MASK" > "${MWAN3_STATUS_DIR}/mmx_mask"
$LOG notice "Using firewall mask ${MMX_MASK}" $LOG notice "Using firewall mask ${MMX_MASK}"
bitcnt=$(mwan3_count_one_bits MMX_MASK)
mmdefault=$(((1<<bitcnt)-1))
MWAN3_INTERFACE_MAX=$(($mmdefault-3))
uci_toggle_state mwan3 globals iface_max "$MWAN3_INTERFACE_MAX"
$LOG notice "Max interface count is ${MWAN3_INTERFACE_MAX}"
fi fi
# mark mask constants # mark mask constants

View file

@ -145,7 +145,7 @@ stop()
for IP in "$IP4" "$IP6"; do for IP in "$IP4" "$IP6"; do
for route in $($IP route list table all | sed 's/.*table \([^ ]*\) .*/\1/' | awk '{print $1}' | awk '{for(i=1;i<=NF;i++) if($i+0>0) if($i+0<255) {print;break}}'); do for route in $(seq 1 $MWAN3_INTERFACE_MAX); do
$IP route flush table $route &> /dev/null $IP route flush table $route &> /dev/null
done done

View file

@ -142,6 +142,7 @@ main() {
echo "offline" > /var/run/mwan3track/$1/STATUS echo "offline" > /var/run/mwan3track/$1/STATUS
$LOG notice "Interface $1 ($2) is offline" $LOG notice "Interface $1 ($2) is offline"
env -i ACTION=ifdown INTERFACE=$1 DEVICE=$2 /sbin/hotplug-call iface env -i ACTION=ifdown INTERFACE=$1 DEVICE=$2 /sbin/hotplug-call iface
env -i ACTION="disconnected" INTERFACE="$1" DEVICE="$2" /sbin/hotplug-call iface
score=0 score=0
fi fi
else else
@ -162,6 +163,7 @@ main() {
if [ $score -eq $up ]; then if [ $score -eq $up ]; then
$LOG notice "Interface $1 ($2) is online" $LOG notice "Interface $1 ($2) is online"
echo "online" > /var/run/mwan3track/$1/STATUS echo "online" > /var/run/mwan3track/$1/STATUS
env -i ACTION="connected" INTERFACE="$1" DEVICE="$2" /sbin/hotplug-call iface
env -i ACTION=ifup INTERFACE=$1 DEVICE=$2 /sbin/hotplug-call iface env -i ACTION=ifup INTERFACE=$1 DEVICE=$2 /sbin/hotplug-call iface
exit 0 exit 0
fi fi