net/mwan3: fix mwan3track kill execution
authorFlorian Eckert <fe@dev.tdt.de>
Mon, 31 Jul 2017 09:46:21 +0000 (11:46 +0200)
committerFlorian Eckert <fe@dev.tdt.de>
Thu, 10 Aug 2017 08:48:18 +0000 (10:48 +0200)
If two interface have the same prefix "wan" for example "wan" and "wan1"
pgrep returns the PID for wan1 also "pgrep -f mwan3track wan".

Before this fix "wan1" was also killed! This is not what we want.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
net/mwan3/files/lib/mwan3/mwan3.sh
net/mwan3/files/usr/libexec/rpcd/mwan3
net/mwan3/files/usr/sbin/mwan3
net/mwan3/files/usr/sbin/mwan3track

index 27e0d0175227255472ec5501a3a306506f05ba6e..f08f899140ee3ae2c8832a2b2fea8a28784320f9 100644 (file)
@@ -449,7 +449,7 @@ mwan3_track()
        }
        config_list_foreach $1 track_ip mwan3_list_track_ips
 
-       kill $(pgrep -f "mwan3track $1") &> /dev/null
+       kill $(pgrep -f "mwan3track $1 $2") &> /dev/null
        if [ -n "$track_ips" ]; then
                [ -x /usr/sbin/mwan3track ] && /usr/sbin/mwan3track "$1" "$2" "$3" $track_ips &
        fi
@@ -459,7 +459,7 @@ mwan3_track_signal()
 {
        local pid
 
-       pid="$(pgrep -f "mwan3track $1")"
+       pid="$(pgrep -f "mwan3track $1 $2")"
        if [ "${pid}" != "" ]; then
                kill -USR1 "${pid}"
        else
@@ -789,7 +789,7 @@ mwan3_report_iface_status()
        config_list_foreach $1 track_ip mwan3_list_track_ips
 
        if [ -n "$track_ips" ]; then
-               if [ -n "$(pgrep -f "mwan3track $1")" ]; then
+               if [ -n "$(pgrep -f "mwan3track $1 $device")" ]; then
                        tracking="active"
                else
                        tracking="down"
index f4d59220b0cc53c3e86b55790d79876a5568a2c2..313ebdaf134f2b9d0fa08c0465611a5aff48d558 100755 (executable)
@@ -1,6 +1,7 @@
 #!/bin/sh
 
 . /lib/functions.sh
+. /lib/functions/network.sh
 . /usr/share/libubox/jshn.sh
 
 MWAN3_STATUS_DIR="/var/run/mwan3track"
@@ -34,10 +35,12 @@ get_mwan3_status() {
        local iface="${1}"
        local iface_select="${2}"
        local running="0"
-       local pid
+       local pid device
+
+       network_get_device device $1
 
        if [ "${iface}" = "${iface_select}" ] || [ "${iface_select}" = "" ]; then
-               pid="$(pgrep -f "mwan3track $iface")"
+               pid="$(pgrep -f "mwan3track $iface $device")"
                if [ "${pid}" != "" ]; then
                        running="1"
                fi
index f23d2e71b72c468c871feb454d6842b5e2e7b020..043f8ec4810f5fc7e9cc86219a386a99c0ed017d 100755 (executable)
@@ -36,7 +36,7 @@ ifdown()
 
        ACTION=ifdown INTERFACE=$1 /sbin/hotplug-call iface
 
-       kill $(pgrep -f "mwan3track $1") &> /dev/null
+       kill $(pgrep -f "mwan3track $1 $2") &> /dev/null
 }
 
 ifup()
index 718c2cb2736bdd47659499d68c2963930217dc6a..7e695ed77720466f8532188d2e8b618054ff8e75 100755 (executable)
@@ -10,7 +10,7 @@ IFDOWN_EVENT=0
 
 clean_up() {
        $LOG notice "Stopping mwan3track for interface \"${INTERFACE}\""
-       if [ "$(pgrep -f "mwan3track ${INTERFACE}")" = "" ]; then
+       if [ "$(pgrep -f "mwan3track ${INTERFACE} ${DEVICE}")" = "" ]; then
                rm -rf "/var/run/mwan3track/${INTERFACE}" &> /dev/null
        fi
        if [ -z "$(ls -A "/var/run/mwan3track")" ]; then