mirror of
https://github.com/openwrt/packages.git
synced 2026-01-10 11:44:48 +00:00
mwan3: fix race condition on mwan3 restart
This adjustment of the locks fixes the race condition when a mwan3 hotplug script and a mwan3 command are running at the same time. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
This commit is contained in:
@@ -45,30 +45,39 @@ ifup()
|
||||
{
|
||||
local device enabled up l3_device status
|
||||
|
||||
mwan3_lock "command" "mwan3"
|
||||
|
||||
config_load mwan3
|
||||
config_get_bool enabled globals 'enabled' 0
|
||||
|
||||
[ ${enabled} -gt 0 ] || {
|
||||
echo "The service mwan3 is global disabled."
|
||||
echo "Please execute \"/etc/init.d/mwan3 start\" first."
|
||||
mwan3_unlock "command" "mwan3"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Expecting interface. Usage: mwan3 ifup <interface>" && exit 0
|
||||
echo "Expecting interface. Usage: mwan3 ifup <interface>"
|
||||
mwan3_unlock "command" "mwan3"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -n "$2" ]; then
|
||||
echo "Too many arguments. Usage: mwan3 ifup <interface>" && exit 0
|
||||
echo "Too many arguments. Usage: mwan3 ifup <interface>"
|
||||
mwan3_unlock "command" "mwan3"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
config_get enabled "$1" enabled 0
|
||||
mwan3_unlock "command" "mwan3"
|
||||
|
||||
status=$(ubus -S call network.interface.$1 status)
|
||||
[ -n "$status" ] && {
|
||||
json_load "$status"
|
||||
json_get_vars up l3_device
|
||||
}
|
||||
|
||||
config_get enabled "$1" enabled 0
|
||||
|
||||
if [ "$up" = "1" ] \
|
||||
&& [ -n "$l3_device" ] \
|
||||
&& [ "$enabled" = "1" ]; then
|
||||
@@ -130,7 +139,9 @@ start()
|
||||
{
|
||||
local enabled
|
||||
|
||||
mwan3_lock "command" "mwan3"
|
||||
uci_toggle_state mwan3 globals enabled "1"
|
||||
mwan3_unlock "command" "mwan3"
|
||||
|
||||
config_load mwan3
|
||||
config_foreach ifup interface
|
||||
@@ -141,6 +152,7 @@ stop()
|
||||
local ipset route rule table IP IPT pid
|
||||
|
||||
mwan3_lock "command" "mwan3"
|
||||
uci_toggle_state mwan3 globals enabled "0"
|
||||
|
||||
for pid in $(pgrep -f "mwan3rtmon"); do
|
||||
kill -TERM "$pid" > /dev/null 2>&1
|
||||
@@ -200,8 +212,6 @@ stop()
|
||||
|
||||
mwan3_lock_clean
|
||||
rm -rf $MWAN3_STATUS_DIR $MWAN3TRACK_STATUS_DIR
|
||||
|
||||
uci_toggle_state mwan3 globals enabled "0"
|
||||
}
|
||||
|
||||
restart() {
|
||||
|
||||
Reference in New Issue
Block a user