View Source VintageNet.Connectivity.TCPPing (vintage_net v0.13.5)
Test connectivity by making a connection using TCP
Connectivity with a remote host can be checked by making a TCP connection to it. The connection either works, the connection is refused, or it times out. The first two cases indicate connectivity.
Normally ICMP is used for testing connectivity, but that requires the new
socket API and a Linux kernel with net.ipv4.ping_group_range
enabled. This
way usually works unless a device is behind a strict firewall, but there's
usually at least one IP address/port on the Internet that they allow.
Summary
Functions
Check connectivity with another device
Types
@type ping_error_reason() :: :if_not_found | :no_ipv4_address | :inet.posix()
Functions
@spec ping( VintageNet.ifname(), {VintageNet.any_ip_address(), non_neg_integer()} ) :: :ok | {:error, ping_error_reason()}
Check connectivity with another device
The "ping" is really a TCP connection attempt from the specified interface to an IP address and port. Failures to connect don't necessarily mean that the Internet is down, but it's likely especially if the server that's specified in the configuration is highly available.
Source IP-based routing is required for the TCP connect to go out the right network interface. This is configured by default when using VintageNet.