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 <aaronjg@stanford.edu>
This commit is contained in:
Aaron Goodman 2020-11-15 11:35:28 -05:00
parent f014a7f542
commit 1bfb1a66cd

View file

@ -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