From 1bfb1a66cd3b5a09ac4abc7da5e3508a772318ac Mon Sep 17 00:00:00 2001 From: Aaron Goodman Date: Sun, 15 Nov 2020 11:35:28 -0500 Subject: [PATCH] mwan3: support latest iputils ping iputils upstream changed build params with version s20200821 Latest OpenWRT iputils ping now appears to report the openwrt version tag, rather than iputils date tag This commit sends a test ping to localhost to evaluate the capabilities of iputils ping. Signed-off-by: Aaron Goodman --- net/mwan3/files/usr/sbin/mwan3track | 36 +++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/net/mwan3/files/usr/sbin/mwan3track b/net/mwan3/files/usr/sbin/mwan3track index d4a5f44ab..bd8954c07 100755 --- a/net/mwan3/files/usr/sbin/mwan3track +++ b/net/mwan3/files/usr/sbin/mwan3track @@ -40,19 +40,35 @@ if_up() { stop_subprocs } +ping_test_host() { + if [ "$FAMILY" = "ipv6" ]; then + echo "::1" + else + echo "127.0.0.1" + fi +} + +get_ping_command() { + if [ -x "/usr/bin/ping" ] && /usr/bin/ping -${FAMILY#ipv} -c1 -q $(ping_test_host) &>/dev/null; then + # -4 option added in iputils c3e68ac6 so need to check if we can use it + # or if we must use ping and ping6 + echo "/usr/bin/ping -${FAMILY#ipv}" + elif [ "$FAMILY" = "ipv6" ] && [ -x "/usr/bin/ping6" ]; then + echo "/usr/bin/ping6" + elif [ "$FAMILY" = "ipv4" ] && [ -x "/usr/bin/ping" ]; then + echo "/usr/bin/ping" + elif [ -x "/bin/ping" ]; then + echo "/bin/ping -${FAMILY#ipv}" + else + return 1 + fi +} + validate_track_method() { case "$1" in ping) - if [ -x "/usr/bin/ping" ] && [ "$(/usr/bin/ping -V | grep -o '[0-9]*$')" -gt 20150519 ]; then - # -4 option added in iputils c3e68ac6 - PING="/usr/bin/ping -${FAMILY#ipv}" - elif [ "$FAMILY" = "ipv6" ] && [ -x "/usr/bin/ping6" ]; then - PING="/usr/bin/ping6" - elif [ "$FAMILY" = "ipv4" ] && [ -x "/usr/bin/ping" ]; then - PING="/usr/bin/ping" - elif [ -x "/bin/ping" ]; then - PING="/bin/ping -${FAMILY#ipv}" - else + PING=$(get_ping_command) + if [ $? -ne 0 ]; then LOG warn "Missing ping. Please enable BUSYBOX_DEFAULT_PING and recompile busybox or install iputils-ping package." return 1 fi