A terminal based, adhoc, multi target icmp-echo tool.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
test test: check memory leak on newer libevent only Oct 24, 2018
.travis.yml test: unsubscribe from travis emails Mar 20, 2017
Controlflow.md main: move unmarking responsibility Mar 1, 2016
configure test: add empty configure and travis configuration Mar 6, 2017
dnstask.c dnstask: avoid redefinition of dnstask_cb_type Dec 23, 2016
icmp.c main: effort to clean up mem and fd resources Oct 24, 2018
report.c main: error checking and adjustments for -w flag Oct 9, 2014
termio.c ui: fix ncurses errors Dec 23, 2016
tricks.h icmp-unpriv: fix for early replies Dec 27, 2016
uthash.h main: update uthash and switch to utlist Feb 4, 2013
utlist.h main: update uthash and switch to utlist Feb 4, 2013
xping.c main: effort to clean up mem and fd resources Oct 24, 2018
xping.h main: effort to clean up mem and fd resources Oct 24, 2018



xping is a simple PING program continiously probing multiple hosts using ICMP-ECHO. As packets are received dots are printed on the screen. Hosts not responding before next packet is due will get a questionmark in the display: ..................................... ????.????????????.???.?.?............ ..................................... .....................................

It is similar to the second visual display in "my traceroute's" (aka mtr) and provide a way to spot subtle availability changes.

Binary packages

Prebuilt amd64 binary packages for Debian and Arch Linux are available from http://martin.topholm.eu/pub/xping .

Previously APT and pacman repositories were maintained as well, but these are now deprecated.


xping hasn't surrendered to autoconf yet, but it should build on Linux, FreeBSD and OSX. There are a few options in the Makefile that can be enabled by uncommenting them. OSX users with Terminal.app may wish to use ncurses.

xping depends on libevent, if you don't have it you can uncomment the "static linking" option in the Makefile to have it downloaded and linked static into xping. OSX doesn't use -lrt, but may need -Wno-deprecated-declarations in order to build WITH_SSL.

vi Makefile
make install

N.B. xping will be installed set-uid because most platforms requires superuser privileges to open RAW sockets. xping drops the privileges when it has opened the sockets.



  • fix resource leaks in http module
  • fix stalled http transfers


  • add openssl support (see -DWITH_SSL in Makefile)
  • add colorsupport for results
  • fixed missed packet checking before -c count limit
  • fix startup bell for -aa


  • fix icmp sequence number wrap
  • fix for http, treat code 200-399 as successful


  • http client probe
  • label width adjustment
  • marking of replys arriving after timeout
  • only open raw socket when needed


  • unprivileged icmp-unpriv module
  • split out icmp function in seperate module
  • ui improvements (selective updates, disable local-echo)
  • probe count (to limit execution)
  • report generation (when stdout is a file)


  • replaced BSD queue.h with utlist.h by Troy D. Hanson
  • improved dns lookup
  • dynamic linking
  • target list from stdin
  • edge detection
  • raw ansi as alternative to ncurses


  • hash table lookup
  • ipv6


xping was written by Martin Topholm.

xping uses libevent2 by Niels Provos and Nick Mathewson, and uthash and utlist by Troy D. Hanson.