lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

commit 358a374a3ac2653c019905041f28205eb477dc26
parent 34541abfb38643ab7ec36d51975ee31023a36910
Author: champtar <champetier.etienne@gmail.com>
Date:   Thu, 16 Mar 2017 06:40:52 -0700

Merge pull request #3050 from feckert/mwan3_flush_conntrack

mwan3: enhancement add ping size and flush conntrack table
Diffstat:
Mnet/mwan3/Makefile | 2+-
Mnet/mwan3/files/etc/hotplug.d/iface/15-mwan3 | 2++
Mnet/mwan3/files/lib/mwan3/mwan3.sh | 39+++++++++++++++++++++++++++++++++++++--
Mnet/mwan3/files/usr/sbin/mwan3track | 4++--
4 files changed, 42 insertions(+), 5 deletions(-)

diff --git a/net/mwan3/Makefile b/net/mwan3/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mwan3 -PKG_VERSION:=2.0 +PKG_VERSION:=2.1 PKG_RELEASE:=4 PKG_MAINTAINER:=Jeroen Louwes <jeroen.louwes@gmail.com>, \ Florian Eckert <fe@dev.tdt.de> diff --git a/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 b/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 @@ -46,6 +46,7 @@ case "$ACTION" in mwan3_track $INTERFACE $DEVICE mwan3_set_policies_iptables mwan3_set_user_rules + mwan3_flush_conntrack $INTERFACE $DEVICE "ifup" ;; ifdown) mwan3_delete_iface_rules $INTERFACE @@ -54,6 +55,7 @@ case "$ACTION" in mwan3_delete_iface_ipset_entries $INTERFACE mwan3_set_policies_iptables mwan3_set_user_rules + mwan3_flush_conntrack $INTERFACE $DEVICE "ifdown" ;; esac diff --git a/net/mwan3/files/lib/mwan3/mwan3.sh b/net/mwan3/files/lib/mwan3/mwan3.sh @@ -6,6 +6,7 @@ IPS="/usr/sbin/ipset" IPT4="/usr/sbin/iptables -t mangle -w" IPT6="/usr/sbin/ip6tables -t mangle -w" LOG="/usr/bin/logger -t mwan3 -p" +CONNTRACK_FILE="/proc/net/nf_conntrack" mwan3_get_iface_id() { @@ -360,7 +361,7 @@ mwan3_delete_iface_ipset_entries() mwan3_track() { - local track_ip track_ips reliability count timeout interval down up + local track_ip track_ips reliability count timeout interval down up size mwan3_list_track_ips() { @@ -380,8 +381,9 @@ mwan3_track() config_get interval $1 interval 10 config_get down $1 down 5 config_get up $1 up 5 + config_get size $1 size 56 - [ -x /usr/sbin/mwan3track ] && /usr/sbin/mwan3track $1 $2 $reliability $count $timeout $interval $down $up $track_ips & + [ -x /usr/sbin/mwan3track ] && /usr/sbin/mwan3track $1 $2 $reliability $count $timeout $interval $down $up $size $track_ips & fi } @@ -804,3 +806,36 @@ mwan3_report_rules_v6() $IPT6 -L mwan3_rules -n -v 2> /dev/null | tail -n+3 | sed 's/mark.*//' | sed 's/mwan3_policy_/- /' | sed 's/mwan3_rule_/S /' fi } + +mwan3_flush_conntrack() +{ + local flush_conntrack + + config_get flush_conntrack $1 flush_conntrack never + + if [ -e "$CONNTRACK_FILE" ]; then + case $flush_conntrack in + ifup) + [ "$3" = "ifup" ] && { + echo f > ${CONNTRACK_FILE} + $LOG info "connection tracking flushed on interface $1 ($2) $3" + } + ;; + ifdown) + [ "$3" = "ifdown" ] && { + echo f > ${CONNTRACK_FILE} + $LOG info "connection tracking flushed on interface $1 ($2) $3" + } + ;; + always) + echo f > ${CONNTRACK_FILE} + $LOG info "connection tracking flushed on interface $1 ($2) $3" + ;; + never) + $LOG info "connection tracking not flushed on interface $1 ($2) $3" + ;; + esac + else + $LOG warning "connection tracking not enabled" + fi +} diff --git a/net/mwan3/files/usr/sbin/mwan3track b/net/mwan3/files/usr/sbin/mwan3track @@ -1,6 +1,6 @@ #!/bin/sh -[ -z "$9" ] && echo "Error: should not be started manually" && exit 0 +[ -z "$10" ] && echo "Error: should not be started manually" && exit 0 if [ -e /var/run/mwan3track-$1.pid ] ; then kill $(cat /var/run/mwan3track-$1.pid) &> /dev/null @@ -17,7 +17,7 @@ lost=0 while true; do for track_ip in $track_ips; do - ping -I $2 -c $4 -W $5 -q $track_ip &> /dev/null + ping -I $2 -c $4 -W $5 -s $9 -q $track_ip &> /dev/null if [ $? -eq 0 ]; then let host_up_count++ else