rb-wartslib: Ruby Warts Library


This is a Ruby extension for reading/writing warts files. Warts files are output by scamper, a tool for performing large-scale traceroute- and ping-based network measurements (see www.wand.net.nz/scamper/). This extension will be useful to network researchers, operators, and users who need to analyze or process warts files.

Please see the project home page at rb-wartslib.rubyforge.org/ for further documentation and sample code. A possibly older copy of the project page and documentation is available in the ‘docs’ subdirectory. Sample code is also available in the ‘bin’ subdirectory.


If rb-wartslib were a typical Ruby Gem, you would install it with

$ sudo gem install rb-wartslib

However, rb-wartslib must be compiled against the scamper source code so there are a few additional steps.

First, download and build scamper; for example:

$ wget http://www.wand.net.nz/scamper/scamper-cvs-20070523h.tar.gz
$ tar xvzf scamper-cvs-20070523h.tar.gz
$ cd scamper-cvs-20070523h
$ CFLAGS="" make -f Makefile.gnu     (if you're on Linux or MacOS X)
$ CFLAGS="" make                     (if you're on FreeBSD)
  (the CFLAGS="" portion prevents certain problems from happening)

That will build libscamperfile.a, which is what rb-wartslib links against.

Now build and install rb-wartslib:

$ SCAMPER=/Users/youngh/scamper-cvs-20070523h
   (set the above to the *absolute* directory where you built scamper)
$ sudo gem install rb-wartslib -- --with-scamper-include=$SCAMPER --with-scamper-lib=$SCAMPER

That’s it.


rb-wartslib is written and maintained by Young Hyun as a part of CAIDA’s work on the Archipelago Measurement Infrastructure [www.caida.org/projects/ark/]. You may contact him at youngh AT rubyforge.org, or use the tracker/forums at the RubyForge project page for getting help.

Please direct scamper questions, including problems building it, to Matthew Luckie:

mjl (squigglyatthingie) wand (period) net (period) nz


The rb-wartslib code proper is licensed under GPLv2 *or later*, but this binding must link with scamper, which is licensed under GPLv2 only (no later). Therefore, when your own Ruby program makes calls into rb-wartslib (that is, “links” to rb-wartslib), then rb-wartslib is effectively under GPLv2 only, so your client program must be GPLv2 compatible. However, if you merely re-use any of the rb-wartslib source code in your own programs (but none of the scamper source code), then the license is GPLv2 or later. For example, if you wish to use the rb-wartslib source code as a template for writing an extension of your own (that provides a binding to something else), then the code is licensed under GPLv2 or later.

If you don’t distribute your client program, then the terms of the GPL do not apply. In particular, if you write an internal tool used only in your organization, then it does NOT have to be released under the GPL to use rb-wartslib.