luci-app-mwan3: pin diag ping command to interface device
If the physical device is not set in the diag_command then the ping will always use the route with the lowest metric from the default routing table. To fix this add the physical device of the logical interface to the ping command. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
This commit is contained in:
parent
f50de41959
commit
ee54a9542f
1 changed files with 4 additions and 4 deletions
|
@ -97,9 +97,9 @@ function diagnosticsData(interface, task)
|
||||||
return interfaceNumber
|
return interfaceNumber
|
||||||
end
|
end
|
||||||
|
|
||||||
function diag_command(cmd, addr)
|
function diag_command(cmd, device, addr)
|
||||||
if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then
|
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
|
if util then
|
||||||
while true do
|
while true do
|
||||||
local ln = util:read("*l")
|
local ln = util:read("*l")
|
||||||
|
@ -145,7 +145,7 @@ function diagnosticsData(interface, task)
|
||||||
if task == "ping_gateway" then
|
if task == "ping_gateway" then
|
||||||
local gateway = get_gateway(interface)
|
local gateway = get_gateway(interface)
|
||||||
if gateway ~= nil then
|
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
|
else
|
||||||
luci.http.prepare_content("text/plain")
|
luci.http.prepare_content("text/plain")
|
||||||
luci.http.write(string.format("No gateway for interface %s found.", interface))
|
luci.http.write(string.format("No gateway for interface %s found.", interface))
|
||||||
|
@ -154,7 +154,7 @@ function diagnosticsData(interface, task)
|
||||||
local trackips = uci:get("mwan3", interface, "track_ip")
|
local trackips = uci:get("mwan3", interface, "track_ip")
|
||||||
if #trackips > 0 then
|
if #trackips > 0 then
|
||||||
for i in pairs(trackips) do
|
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
|
end
|
||||||
else
|
else
|
||||||
luci.http.write(string.format("No tracking Hosts for interface %s defined.", interface))
|
luci.http.write(string.format("No tracking Hosts for interface %s defined.", interface))
|
||||||
|
|
Loading…
Reference in a new issue