Skip to content

Commit

Permalink
net-online: updates to make the service more usable
Browse files Browse the repository at this point in the history
- switch from attempting to ping the default gateway to a host outside
the local network, defaulting to google.com.
- along with this, change the name of the variable that requests a ping
test to include_ping_test so the meaning is more clear.
  • Loading branch information
williamh committed Feb 26, 2017
1 parent 1cb4409 commit d4d0f25
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 21 deletions.
11 changes: 7 additions & 4 deletions conf.d/net-online
Expand Up @@ -3,10 +3,13 @@
# default is all interfaces that support ethernet.
#interfaces=""

# This setting controls whether a ping to the default gateway is
# included in the test for network connectivity after all interfaces
# are active.
#ping_default_gateway=no
# This setting controls whether a ping test is included in the test for
# network connectivity after all interfaces are active.
#include_ping_test=no

# This setting is the host to attempt to ping if the above is yes.
# The default is google.com.
#ping_test_host=some.host.name

# The timeout setting controls how long the net-online service waits
# for the network to be configured.
Expand Down
27 changes: 10 additions & 17 deletions init.d/net-online.in
Expand Up @@ -15,6 +15,7 @@ depend()
{
after modules
need sysfs
provide network-online
keyword -docker -jail -lxc -openvz -prefix -systemd-nspawn -uml -vserver
}

Expand All @@ -27,19 +28,6 @@ get_interfaces()
done
}

get_default_gateway()
{
local cmd gateway
if command -v ip > /dev/null 2>&1; then
cmd="ip route show"
else
cmd=route
fi
set -- $($cmd | grep default)
[ "$2" != via ] && gateway="$2" || gateway="$3"
printf "%s" $gateway
}

start ()
{
local carriers configured dev gateway ifcount infinite
Expand All @@ -66,10 +54,15 @@ start ()
: $((timeout -= 1))
done
! $infinite && [ $timeout -eq 0 ] && rc=1
if [ $rc -eq 0 ] && yesno ${ping_default_gateway:-no}; then
gateway="$(get_default_gateway)"
if [ -n "$gateway" ] && ! ping -c 1 $gateway > /dev/null 2>&1; then
rc=1
include_ping_test=${include_ping_test:-${ping_default_gateway}}
if [ -n "${ping_default_gateway}" ]; then
ewarn "ping_default_gateway is deprecated, please use include_ping_test'
fi
if [ $rc -eq 0 ] && yesno ${include_ping_test:-no}; then
ping_test_host="${ping_test_host:-google.com}"
if [ -n "$ping_test_host" ]; then
ping -c 1 $ping_test_host > /dev/null 2>&1
rc=$?
fi
fi
eend $rc "The network is offline"
Expand Down

0 comments on commit d4d0f25

Please sign in to comment.