diff options
author | Dirk Brenken <dev@brenken.org> | 2018-05-11 20:26:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-11 20:26:11 +0200 |
commit | 1e39fef1474b9f80f1a774b4faca1c0c8a9c34f3 (patch) | |
tree | 5cb7e2f992fbb9e1a2c05c1c3fe9e4b8d5cc0a2c | |
parent | e951a4dd90e6de067bdfdac97793ffe9ac6dd573 (diff) | |
parent | ee54a9542f7685ffa7c41ceaacedc0af9004d1a0 (diff) |
Merge pull request #1787 from TDT-AG/pr/20180509-net-mwan3-fixes
luci-app-mwan3: fixes
-rw-r--r-- | applications/luci-app-mwan3/luasrc/controller/mwan3.lua | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua index d5fc4a3ed..18c2135e4 100644 --- a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua +++ b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua @@ -97,9 +97,9 @@ function diagnosticsData(interface, task) return interfaceNumber end - function diag_command(cmd, addr) + function diag_command(cmd, device, addr) if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then - local util = io.popen(cmd % ut.shellquote(addr)) + local util = io.popen(cmd %{ut.shellquote(device), ut.shellquote(addr)}) if util then while true do local ln = util:read("*l") @@ -114,8 +114,14 @@ function diagnosticsData(interface, task) end function get_gateway(inteface) - local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) - local gateway + local gateway = nil + local dump = nil + + dump = require("luci.util").ubus("network.interface.%s_4" % interface, "status", {}) + if not dump then + dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) + end + if dump and dump.route then local _, route for _, route in ipairs(dump.route) do @@ -139,7 +145,7 @@ function diagnosticsData(interface, task) if task == "ping_gateway" then local gateway = get_gateway(interface) if gateway ~= nil then - diag_command("ping -c 5 -W 1 %s 2>&1", gateway) + diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, gateway) else luci.http.prepare_content("text/plain") luci.http.write(string.format("No gateway for interface %s found.", interface)) @@ -148,7 +154,7 @@ function diagnosticsData(interface, task) local trackips = uci:get("mwan3", interface, "track_ip") if #trackips > 0 then for i in pairs(trackips) do - diag_command("ping -c 5 -W 1 %s 2>&1", trackips[i]) + diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, trackips[i]) end else luci.http.write(string.format("No tracking Hosts for interface %s defined.", interface)) |