From 2d9dfa3b1b16ab3b4c83b24550757931656053d2 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Fri, 4 May 2018 15:28:54 +0200 Subject: [PATCH] net/mwan3: add/remove src_ip from routing table Add or remove local_source ip also if mwan3 is stopped or started Signed-off-by: Florian Eckert --- net/mwan3/files/usr/sbin/mwan3 | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/net/mwan3/files/usr/sbin/mwan3 b/net/mwan3/files/usr/sbin/mwan3 index 5089630ed..681f82de3 100755 --- a/net/mwan3/files/usr/sbin/mwan3 +++ b/net/mwan3/files/usr/sbin/mwan3 @@ -118,7 +118,7 @@ status() start() { - local enabled + local enabled src_ip local_source config_load mwan3 config_get_bool enabled globals 'enabled' 0 @@ -127,12 +127,30 @@ start() exit 0 } + config_get local_source globals local_source 'none' + [ "${local_source}" = "none" ] || { + src_ip=$(uci_get_state mwan3 globals src_ip) + [ "${src_ip}" != "" ] && { + ip route del default via "${src_ip}" dev lo 1>/dev/null 2>&1 + ip addr del "${src_ip}/32" dev lo 1>/dev/null 2>&1 + } + + network_get_ipaddr src_ip "${local_source}" + if [ "${src_ip}" = "" ]; then + $LOG warn "Unable to set source ip for own initiated traffic (${local_source})" + else + ip addr add "${src_ip}/32" dev lo + ip route add default via "${src_ip}" dev lo + uci_toggle_state mwan3 globals src_ip "${src_ip}" + fi + } + config_foreach ifup interface } stop() { - local ipset route rule table IP IPT pid + local ipset route rule table IP IPT pid src_ip for pid in $(pgrep -f "mwan3track"); do kill -TERM "$pid" > /dev/null 2>&1 @@ -178,6 +196,12 @@ stop() mwan3_lock_clean rm -rf $MWAN3_STATUS_DIR $MWAN3TRACK_STATUS_DIR + + src_ip=$(uci_get_state mwan3 globals src_ip) + [ "${src_ip}" = "" ] || { + ip route del default via "${src_ip}" dev lo 1>/dev/null 2>&1 + ip addr del "${src_ip}/32" dev lo 1>/dev/null 2>&1 + } } restart() {