send-echo-request sends one ICMP (IPv4) or ICMPv6 (IPv6) echo request
each to a list of addresses without waiting for the echo reply packets.
A packet is sent every 0.5 seconds. Optionally, sending the packets is
repeated in an infinite loop.
send-echo-request does not wait for or evaluate any echo reply
packets, processing the received reply packets must be done in another
place if necessary. One such example is my
someone else is using the internet LED (YUP LED)
setup which uses
iptables to have the kernel trigger a LED on arrival
of certain packets.
send-echo-request has been designed and developed on and for use on
GNU/Linux (Fedora) and uClibc/Linux (OpenWRT). On other systems, YMMV.
send-echo-request should be easy enough:
# send-echo-request --help # send-echo-request -vv --loop ::1 127.0.0.1 # send-echo-request -q --loop 192.168.1.23 192.168.1.42
send-echo-request is licensed under GPLv2+, i.e. GNU GPL version 2
or (at your option) any later version. Read the LICENSE
file for details.
Building and installing, generic Linux edition
This requires GNU
gcc and possibly a few more things I
forgot to list here.
send-echo-request should be easy:
This builds both
host-build/send-echo-request.stripped versions of the executable to be run
on the build host. You can choose to
ln -s one of them to
send-echo-request for convenience:
$ ln -s host-build/send-echo-request.exe send-echo-request
If you want to run
send-echo-request as a non-root user, the root
user must give the executable the required set of capabilities:
# setcap "cap_net_raw=ep" host-build/send-echo-request.exe
cap_net_raw=ep cap_net_admin=ep capability set often
used for the
ping6 executables appears not to be
required for the more limited feature set of
For installation using GNU
make, you can optionally define
bindir, and then run
make install make uninstall
Building and installing, embedded/OpenWRT hack edition
setting up an OpenWRT buildroot
and building at least the toolchain part of it, you can build a
cross-compile version of
send-echo-request like so:
$ make STAGING_DIR="\$(HOME)/src/openwrt-build/12.09/staging_dir" crossprefix="\$(STAGING_DIR)/toolchain-i386_gcc-4.6-linaro_uClibc-0.9.33.2/bin/i486-openwrt-linux-uclibc-"
This builds both
versions of the executable to be run on the embedded OpenWRT system.
Stripping the symbols reduces the file size from ~20K to ~8K, so the
executable is probably the better candidate for installing to the
-rwxrwxr-x. 1 USER GROUP 21838 Aug 23 21:57 send-echo-request.exe -rwxrwxr-x. 1 USER GROUP 8432 Aug 23 21:57 send-echo-request.stripped
After copying the
executable over to the OpenWRT host, it should be available for use:
$ scp cross-i486-openwrt-linux-uclibc-build/send-echo-request.stripped openwrt_host:/bin/send-echo-request
(Yes, this a hack: No IPKG software package. No proper build process
for the OpenWRT buildchain and
send-echo-request. However, it works
for me. YMMV.)
- YUP LED With send-echo-request
- Someone Else Is Using the Internet LED (YUP LED)
- RFC 792 - Internet Control Message Protocol
- RFC 1071 - Computing the Internet Checksum
- RFC 4443 - Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification
- Man pages (in addition to those of the functions we run): ip(7), ipv6(7), ...
- Some local header files for the detailed struct and constant definitions