# # spec file for package scamper # # Copyright (c) 2021 SUSE LLC # Copyright (c) 2016, Martin Hauke # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: scamper Version: 20230614b Release: 1.1 Summary: Parallel Internet measurement utility License: GPL-2.0-only Group: Productivity/Networking/Diagnostic URL: https://www.caida.org/tools/measurement/scamper/ Source: https://www.caida.org/tools/measurement/%{name}/code/%{name}-cvs-%{version}.tar.gz #BuildRequires: libopenssl-devel BuildRequires: openssl-devel BuildRequires: pkgconfig BuildRequires: gcc %description Scamper is a program that is able to conduct Internet measurement tasks to large numbers of IPv4 and IPv6 addresses, in parallel, to fill a specified packets-per-second rate. Currently, it supports the well-known ping and traceroute techniques, as well as MDA traceroute, alias resolution, some parts of tbit, sting, and neighbour discovery. Scamper can do ICMP-based Path MTU discovery. scamper starts with the outgoing interface's MTU and discovers the location of Path MTU bottlenecks. scamper performs a PMTUD search when an ICMP fragmentation required message is not returned to establish the PMTU to the next point in the network, followed by a TTL limited search to infer where the failure appears to occur. %package -n libscamperctrl Summary: Control library for scamper's binary dump format Group: System/Libraries %description -n libscamperctrl Scamper is a program that is able to conduct Internet measurement tasks to large numbers of IPv4 and IPv6 addresses, in parallel, to fill a specified packets-per-second rate. Currently, it supports the well-known ping and traceroute techniques, as well as MDA traceroute, alias resolution, some parts of tbit, sting, and neighbour discovery. This package contains the library that provides control over scamper. %package -n libscamperfile1 Summary: File access library for scamper's binary dump format Group: System/Libraries %description -n libscamperfile1 Scamper is a program that is able to conduct Internet measurement tasks to large numbers of IPv4 and IPv6 addresses, in parallel, to fill a specified packets-per-second rate. Currently, it supports the well-known ping and traceroute techniques, as well as MDA traceroute, alias resolution, some parts of tbit, sting, and neighbour discovery. This package contains the library that provides access to the binary output files that scamper can produce in certain modes. %package -n libscamperfile-devel Summary: Development headers for scamper's binary dump file access library Group: Development/Libraries/Other Requires: libscamperfile1 = %{version}-%{release} %description -n libscamperfile-devel Scamper is a program that is able to conduct Internet measurement tasks to large numbers of IPv4 and IPv6 addresses, in parallel, to fill a specified packets-per-second rate. Currently, it supports the well-known ping and traceroute techniques, as well as MDA traceroute, alias resolution, some parts of tbit, sting, and neighbour discovery. This package contains development headers and other ancillary files for the libscamperfile library. %prep %setup -q -n %{name}-cvs-%{version} %build %configure --disable-static make %{?_smp_mflags} %install %make_install find %{buildroot} -type f -name "*.la" -delete -print %post -n libscamperfile1 -p /sbin/ldconfig %postun -n libscamperfile1 -p /sbin/ldconfig %files %license COPYING %{_bindir}/sc_* %{_bindir}/scamper %{_mandir}/man1/* %{_mandir}/man5/* %files -n libscamperctrl %{_libdir}/libscamperctrl.so.* %files -n libscamperfile1 %{_libdir}/libscamperfile.so.* %files -n libscamperfile-devel %{_includedir}/scamper_* %{_includedir}/libscamperctrl.h %{_libdir}/libscamperfile.so %{_libdir}/libscamperctrl.so %{_mandir}/man3/* %changelog * Mon Apr 5 2021 Sebastian Wagner - update to version 20210324: sc_speedtrap: * speed up speedtrap's runtime * Wed Sep 23 2020 Sebastian Wagner - update to version 20200923: - scamper: * integrate some fixes for compiling scamper on windows - sc_erosprober: * allow larger probe intervals - sc_hoiho: * add support for learning regexes that extract ASNs in hostnames * Sat Jul 18 2020 Sebastian Wagner - update to version 20200717: - scamper: - update remote control protocol to support session resumption if the underlying TCP connection is interrupted. - if remote controller is specified with a domain name, use TLS. - fix -p pidfile when starting scamper as a daemon - expire entries in the ARP cache periodically - add -r support to ping and tracelb, and record router addresses in warts output. - autoconf work to build on linux without sys/socketvar.h or linux/netlink.h - allow scamper to do IPv4 ICMP echo and IPv6 UDP traceroute without requiring root on linux. - libscamperfile version 1.0.0 - sc_remoted: - update remote control protocol to support session resumption if the underlying TCP connection is interrupted. - use HUP signal to reload TLS certificate and private key chain - add -e pidfile to write PID to file, to make HUP easy - sc_pinger: - add utility to ping a set of addresses with ICMP echo, UDP, and TCP-ack probes - throughout: - reduce number of warnings when compiling with -Wextra - remove rcsid from all files * Sat Mar 14 2020 Sebastian Wagner - update to version 20191102b: - scamper: * do not dereference a null pointer when converting a tracelb node with no IP address to a string, when generating json output. - sc_bdrmap: * allow the source IP address to be specified when probing with the - S parameter. - sc_wartsfilter: * a new utility to select specific records from a warts file * Mon Jan 6 2020 Sebastian Wagner -update to version 20191102: * scamper * escape hostname in json output for tracelb * use length parameters when parsing hostname responses, from Marianne Fletcher * sc_bdrmap * add a -O noalias option to tell bdrmap to not do alias resolution. * update -C documentation in the sc_bdrmap.1 man page * fix a memory leak of trace objects in -d traces * print RTT in -d traces * add an -M option to help corner cases with private and IXP addresses * relax heuristics to allow VPs to claim routers with IP2AS when no other router assignments can take place * turn off analytical interface alias resolution heuristics by default * sc_hoiho * change -O verbose to -O debug to better reflect what it does. * change tpa to atp to be consistent with language in paper https://www.caida.org/~mjl/pubs/rnc.pdf * free a malloc, pointed out by clang static analysis * add support for reading -d 3 output, which is the format of regular expressions provided in the data supplement: http://data.caida.org/datasets/supplement/2019-imc-hoiho/ * sc_uptime * add a metadata table to be able to track metadata across sc_uptime invocations, from Marianne Fletcher * fix an error message when trying to create a database that already exists. * Wed Sep 18 2019 Sebastian Wagner - remove SIOCGSTAMP.patch - update to version 20190916: * scamper * add a host implementation for looking up DNS records. it uses the first nameserver it finds in /etc/resolv.conf by default. * add an -O ptr option to tracelb. * bugfix json output for tracelb. * integrate patricia trie implementation into scamper hotspot * use HAVE_SYSCTL macro to solve a compile issue on android * include to get SIOCGSTAMP in Linux kernel > 5.2 * add -A option to ping code to set the ack number to use in tcp probes (or sequence number in SYN packets). do not randomly generate sequence and ack values for each TCP ping. * rework options handling to allow for long long values. * set the window size in TCP probes to 65535, instead of advertising a zero receive window. * update configure scripts around the use of --with-privsep-dir-owner * sc_ally: * when outputting alias sets, conduct a canonical sort to allow for easy diffs * update man page because sc_ally can take more than two addresses per line * sc_erosprober: * new driver to periodically probe addresses and rotate output files. * sc_hoiho: * new utility for holistic orthography of Internet hostname observations. this utility is only built if --with-sc_hoiho is passed to configure. sc_hoiho requires pcre or pcre2, which can be controlled by passing --with-pcre or --with-pcre2 to configure. * sc_uptime: * add a last_tx column to state_dsts to allow for simple monitoring of when each destination address was last probed. * various drivers: * handle scamper disconnections gracefully in sc_ally, sc_filterpolicy, sc_prefixscan, sc_radargun, sc_speedtrap, sc_tbitblind, sc_tbitpmtud, and sc_uptime * Tue Aug 20 2019 Sebastian Wagner - add SIOCGSTAMP.patch for recent changes in socket.h/socketios.h * Sat Dec 22 2018 Sebastian Wagner - update to version 20181219: * scamper: * json output format for tracelb (MDA traceroute) * print an error message if an output file cannot be opened * document (in warts.5) the offset variable in a warts traceroute record, and scamper_trace_dtree_t * use autoconf to check if X509_VERIFY_PARAM_set1_host is available, rather than OpenSSL #defines that are not used consistently among OpenSSL-like libraries. * libscamperfile: * don't crash on a zero length file, or other conditions where sf->type is SCAMPER_FILE_NONE sc_ally: * fix example in manual page * dump 3: when merging routers in a transitive closure, remove the obsolete router from the dump list. * if an address is repeated in the input file then complain * sc_bdrmap: * document -C csum in sc_bdrmap.1 * allow duplicate prefixes in the IXP file * add initial support for UDP paris traceroute, as an alternative to the ICMP paris traceroute bdrmap uses by default. * document updates in sc_bdrmap.1 * sc_ttlexp: * add -O noreserved * bugfix reading from stdin, file handling * document updates in sc_ttlexp.1 * sc_uptime: * add an optional -I interval parameter which controls how frequently we want an address to be probed. add logic to exit early if we are probing on with -I and there is a list of low-priority probing that is not empty, so that sc_uptime can meet the probe interval. * add the ability to expire addresses out of the database after they have not been seen in traceroute for a while, and they do not respond with an incrementing IPID value, with optional -E expiry parameter. * loading addresses into the state database is now a separate step (-a) * add a -c option to create and initialise a database file * add do-not-probe support * replace import code that used a row for each sample with a blob that stores multiple samples per blob. * report some measure of progress on import * build monotonic sequences which allow patterns in responses to be more easily identified, so that reboots are not falsely inferred in the cases of multiple counters, 16 bit counters, and routers that start each sequence after a PTB with a new IPID. * add an -O verbose to dump IPID sequences * document updates in sc_uptime.1 * Sun May 6 2018 sebix+novell.com@sebix.at - update to version 20180504: * scamper: * increase the size of a buffer in scamper's traceroute json creation to reduce chance of truncation. * print the number of probes sent by traceroute in the json output. * enforce a minimum firsthop value of 1 when reading a warts traceroute object. * sc_bdrmap: * choose a static ICMP checksum value when using Paris traceroute to reduce churn in observed topology in bdrmap output. * add ability to pass list of ASes to -d traces to see traceroutes towards specific ASes, useful for understanding bdrmap inferences. * Thu Mar 8 2018 sebix+novell.com@sebix.at - update to version 20180309: * sc_*: * For the utilities (sc_*) that read input files, do not allocate memory to hold the entire input file in memory before parsing the file. This improvement affects sc_ally, sc_attach, sc_bdrmap, sc_filterpolicy, sc_radargun, sc_speedtrap, sc_tbitblind, sc_tbitpmtud, sc_uptime, sc_warts2text. * sc_tbitpmtud: * add scamper driver from IMC2010 paper to collect data on webserver responsiveness to ICMP packet too big messages, and perform rudimentary analysis of collected data. * sc_ttlexp: * new utility to dump source addresses from ICMP TTL expired messages in warts files. * sc_wartsfix: * add a manual page * sc_warts2csv: * add a manual page * Mon Dec 4 2017 sebix+novell.com@sebix.at - remove new-openssl.patch, included upstream - update to version 20171204: - scamper: * add a blind-fin tbit test, which tests receiver behavior to TCP FIN packets which could have come from an off-path attacker. - sc_radargun: * add -d 2 option, which dumps interface IP-ID behavior classifications. * Thu Nov 30 2017 sebix+novell.com@sebix.at - add patch new-openssl.patch to compile with new openssl versions * Thu Aug 24 2017 sebix+novell.com@sebix.at - update to version 20170822 scamper: * replace recursive versions of some functions with iterative versions. * add cycle-start and cycle-stop json record implementations. * fix traceroute json record: the hop transmit time value it reported was junk. * add support for sending json over the control socket. use "attach format json" to get this mode; "attach" by itself still returns uuencoded warts. Initial patch supplied by Young Hyun. * fix possible memory leaks detected with static analysis. * quality assurance on research paper cites in manual pages. * spelling errors noticed by Iain R. Learmonth. sc_ally: * add feature to dump inferred aliases from the collected data. sc_speedtrap: * add threaded implementation of pairwise comparison to form candidate alias sets, if pthreads are detected at compilation time and - -disable-threads configure option is not supplied. sc_uptime: * new scamper driver to infer IPv6 device reboot windows if the device returns an incrementing identifier field in the IPv6 fragmentation header. the driver is not built by default, as it expects sqlite3. use --with-sc_uptime configure option to build. https://www.caida.org/~mjl/pubs/spf.pdf * Thu Jun 22 2017 sebix+novell.com@sebix.at - update to 20161204a * More fixes to libscamperfile caught with fuzz testing. corrupt warts files provided by Greg Ward of Dyn * if targets or commands are specified in a file, and that file ends after all probing of commands in that file has completed, finish the source, allowing scamper to exit. this scenario is most likely when stdin is the input file. Reported by Alex Colvin of Dyn * use select/poll/epoll/kqueue to look for read events on stdin files * malloc enough memory for a prefix6_t in the prefixtree code. reported by Sebastian Wagner via gcc7. only sc_bdrmap uses that code * increase size of string buffers for some ping and trace fields for text output to silence gcc7 warning. * allow source IP address to be null when outputting a trace with json * update sc_tbitblind.1 man page to show correct use of scamper's IPFW firewall support, which changed in the 20161204 release * fix unlikely unaligned access when computing checksums with IPv6 addresses * Wed Jun 21 2017 sebix+novell.com@sebix.at - update to 20161204 * add remote control socket support to scamper. scamper can be configured to connect to a remote controller at run time to allow remote systems to control a scamper instance. the remote controller is handled by the sc_remoted utility, and is documented in the sc_remoted manual page (see below). * fixes to libscamperfile caught with fuzz testing. corrupt warts data files provided by Greg Ward of Dyn. * add a PATRICIA trie implementation based off Sedgewick's Algorithms in C++ book. this improves the performance of scamper compared to holding addresses in splaytrees. * improve speed of warts(5) code. * improve speed of scamper_writebuf by allocating pagesize blocks at a time. * begin to document ping warts records in warts(5). * fix debug printf implementation so that all features will be built in as long as --without-debugfile is not used. backported to 20141211g. * silence compiler warnings from Microsoft Visual Studio. backported to 20141211g. * sc_prefixscan: * add a utility, sc_prefixscan, that provides a convenient interface to scamper's prefixscan alias resolution method. https://www.caida.org/tools/measurement/scamper/man/sc_prefixscan.1.pdf * sc_radargun: * add a utility, sc_radargun, that provides a convenient interface to scamper's radargun implementation. https://www.caida.org/tools/measurement/scamper/man/sc_radargun.1.pdf * sc_remoted: * add a utility, sc_remoted, that provides an interface to a collection of remote scamper instances. https://www.caida.org/tools/measurement/scamper/man/sc_remoted.1.pdf * sc_ally: * use writebufs so sc_ally is event driven and will not block. * add code to probe candidate sets in pairs, with transitive closure to save probes. * allow inter-probe gaps of less than 1 second. * sc_attach: * add support for remote control sockets. * add an option to randomise the order tasks are run. * sc_speedtrap: * stricter default test for inferring if two IP addresses may share a single shared counter. backported to 20141211g. * code cleanup. * sc_warts2json * add support for printing ICMP extensions included in traceroute responses, prompted by Quirin Scheitle * Sat Oct 8 2016 mardnh@gmx.de - update to version 20141211e - upstream does not provide a changelog * Sun Aug 21 2016 mardnh@gmx.de - moved man3/* from lib- to -devel subpackage - removed useless provides from libscamperfile0 * Wed Aug 17 2016 mardnh@gmx.de - initial package, version 20141211e