net/mwan3: add lock for mwan3 hotplug script
authorFlorian Eckert <fe@dev.tdt.de>
Thu, 22 Jun 2017 09:48:01 +0000 (11:48 +0200)
committerFlorian Eckert <fe@dev.tdt.de>
Thu, 17 Aug 2017 09:46:27 +0000 (11:46 +0200)
If more then one interface get up/down at once mwan3 could be in a
undefined state, because more then one mwan3 hotplug script are running
and editing the iptables.

Lock the critical section should solve this issue.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
(cherry picked from commit b6e9debc1b97f9e4be70fb51404831ed870d844a)

net/mwan3/files/etc/hotplug.d/iface/15-mwan3
net/mwan3/files/lib/mwan3/mwan3.sh

index 51bba594f2d8ecc6ca1eafae2080ae002eb9cd43..ae18f529f1db5b15b07bb4db7c902ef8abb84a96 100644 (file)
@@ -35,6 +35,7 @@ if [ "$ACTION" == "ifup" ]; then
        [ -n "$gateway" ] || exit 9
 fi
 
+mwan3_lock
 $LOG notice "$ACTION interface $INTERFACE (${DEVICE:-unknown})"
 
 case "$ACTION" in
@@ -58,4 +59,6 @@ case "$ACTION" in
        ;;
 esac
 
+mwan3_unlock
+
 exit 0
index 1e1de969fafb957dcec19f9342784cfdc6917a5d..eae69b729328a13f23cef1898d016de838832595 100644 (file)
@@ -7,6 +7,14 @@ IPT4="/usr/sbin/iptables -t mangle -w"
 IPT6="/usr/sbin/ip6tables -t mangle -w"
 LOG="/usr/bin/logger -t mwan3 -p"
 
+mwan3_lock() {
+       lock /var/run/mwan3.lock
+}
+
+mwan3_unlock() {
+       lock -u /var/run/mwan3.lock
+}
+
 mwan3_get_iface_id()
 {
        local _tmp _iface _iface_count