Compare commits
18 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| 7516c37085 | |||
| ac85c166c0 | |||
| d231d291da | |||
| d6c0505d03 | |||
| 1c176b1cd0 | |||
| 3171926d2c | |||
| 5bd5182cdd | |||
| 4af2346f3d | |||
| eaf507a142 | |||
| 0a4f7207fc | |||
| 879668e9ed | |||
| 2aa23a1a44 | |||
| 1615dd5767 | |||
| 8912dce0b1 | |||
| c50be2a2d0 | |||
| 268cadef6d | |||
| a888c5bfe5 | |||
| 5a5f02a14e |
3
convert-changelog.sh
Normal file
3
convert-changelog.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed 's/^/ * /' | sed 's/\* \*/ /' | sed 's/\* / /' | sed '/^ \* $/d'
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:26b641e0b3c9c45d5189136f469cbbf017e5d559790e375a50f08d7e8cb7713c
|
||||
size 3216225
|
||||
3
scamper-cvs-20260105.tar.gz
Normal file
3
scamper-cvs-20260105.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:31aeb84f82019052d12d85ebbf275ff1a1d465c0a80d1283e973445cbbbb75d7
|
||||
size 3380234
|
||||
360
scamper.changes
360
scamper.changes
@@ -1,3 +1,363 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Jan 6 12:40:50 UTC 2026 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
- Update to version 20260105:
|
||||
* scamper:
|
||||
* add initial implementation of RFC 4656 OWAMP. the implementation is
|
||||
functional but incomplete, and all owamp interfaces (e.g., warts,
|
||||
json, command line interface, python interface, and the
|
||||
implementation itself) are subject to change.
|
||||
* document current owamp command line interface in scamper man page.
|
||||
* remove unused scamper_privsep_open_udp and scamper_privsep_open_tcp.
|
||||
* sc_remoted:
|
||||
* use unveil(2) and pledge(2) where present (OpenBSD) to restrict
|
||||
the files sc_remoted has access to after initialization, and restrict
|
||||
system calls available to sc_remoted.
|
||||
* add optional-at-runtime chroot support to sc_remoted, to restrict
|
||||
the files sc_remoted has access to after initalization on operating
|
||||
systems without unveil(2), and add "security considerations" section
|
||||
to sc_remoted man page on chroot support.
|
||||
* refactor debug messages: most were errors that should have been
|
||||
emitted to stderr even without using -O debug.
|
||||
* add -O notimes option to remove timestamps, useful when the system
|
||||
independently prefaces debug output with a timestamp.
|
||||
* emit names and magic values associated with remote scamper instances in
|
||||
debug messages.
|
||||
* Python module:
|
||||
* bindings for ScamperOwamp.
|
||||
* drop GIL when calling clibscamperctrl.scamper_mux_add which can be
|
||||
IO bound.
|
||||
* add hash / cmp to ScamperVp, allowing ScamperVp objects to be stored
|
||||
in sets.
|
||||
* allow do_ inst variables to be a set as well as a list, use set
|
||||
internally.
|
||||
* libscamperctrl:
|
||||
* fix possible crash in scamper_mux_add().
|
||||
* add scamper_mux_add_inet().
|
||||
* ensure scamper_ctrl_strerror() will report something if
|
||||
scamper_mux_add() or scamper_mux_add_inet() fails.
|
||||
* bump version.
|
||||
* libscamperfile:
|
||||
* add owamp interfaces, scamper/scamper_owamp.h
|
||||
* bump version to account for owamp interfaces.
|
||||
* tests:
|
||||
* add additional tests for radargun data structures.
|
||||
* add unit_cmd_owamp tests to check owamp command parsing.
|
||||
* add glue to check warts and json code paths for owamp.
|
||||
* sc_wartsdump:
|
||||
* consistently preface any hex output with 0x.
|
||||
* dump owamp structures.
|
||||
* configure.ac
|
||||
* use quoted form for all test statements.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Oct 20 11:15:58 UTC 2025 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
- update to version 20251020:
|
||||
* rework most internal use of printerror/scamper_debug, tagging
|
||||
measurement results with errmsg strings if an error occurs affecting
|
||||
a measurement.
|
||||
* emit errmsg strings in json and warts output. errmsg strings will
|
||||
also be emitted to debugfile / stderr as before. these strings
|
||||
are not emitted in text output of measurements.
|
||||
* add error result code (stop reason) to dealias measurements.
|
||||
* silently ignore unlikely PTR lookup error conditions for trace and
|
||||
tracelb -- PTR lookups are not essential components of these
|
||||
- measurements.
|
||||
* fix memory leaks when encountering unlikely error conditions in
|
||||
sting, tbit, tracelb, udpprobe.
|
||||
- libscamperfile:
|
||||
* add scamper_*_errmsg_get functions.
|
||||
* let neighbourdisc src_mac and dst_ip be null when reading warts
|
||||
files, rather than reject the object.
|
||||
* bump version.
|
||||
- Python library:
|
||||
* release GIL when waiting for measurement results so that module is
|
||||
asyncio friendly.
|
||||
* add errmsg attribute to measurement objects, interface file, and
|
||||
document.
|
||||
- sc_wartsdump:
|
||||
* use scamper_*_[stop|result]_tostr functions rather than duplicate code.
|
||||
* emit errmsg.
|
||||
- tests:
|
||||
* check that errmsg is read-from and written-to warts files correctly.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Oct 6 11:11:39 UTC 2025 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
- Update to version 20251002:
|
||||
* scamper:
|
||||
* add tls_errstr, use it in printerror_ssl.
|
||||
* minify ping and trace json output by removing spaces in output.
|
||||
* host: if qname contains a trailing dot, remove the trailing dot, so that
|
||||
example.com. and example.com are equivalent.
|
||||
* host: if do-not-probe file contains a prefix covering a nameserver
|
||||
in /etc/resolv.conf, still allow the host command to use it.
|
||||
* libscamperfile:
|
||||
* provide API access to udpprobe stop_reason and its string rendering.
|
||||
* add scamper_dealias_reply_is_icmp_echo_reply().
|
||||
* silence spurious uninitialized use warning in scamper_http_lib.c.
|
||||
* add scamper_tbit_totext().
|
||||
* fix regression from 20241112 when reading tbit warts, which rejected
|
||||
valid tbit measurements.
|
||||
* libscamperctrl:
|
||||
* add iata attribute to scamper_vp_t.
|
||||
* Python module:
|
||||
* use #defines from scamper C header files in more places.
|
||||
* support pickling of ScamperAddr.
|
||||
* add .iata attribute to ScamperVP, ScamperInst.
|
||||
* add .stop_reason and .stop_reason_str attributes to ScamperHost,
|
||||
ScamperHttp, ScamperPing and ScamperUdpprobe.
|
||||
* add ScamperDealias.is_icmp_echo_reply().
|
||||
* add to_text() method to ScamperDealias, ScamperPing, ScamperTbit,
|
||||
ScamperTrace, ScamperTracelb.
|
||||
* update pyi to match API changes, fix enums with latest mypy.
|
||||
* sc_remoted:
|
||||
* add iata to list of supported metadata items per VP, document in
|
||||
man page.
|
||||
* sc_minrtt:
|
||||
* add -a anycast-file option, to specify a file containing apparent
|
||||
anycast prefixes. sc_minrtt will not consider samples for a covered
|
||||
IP address if any of the samples collected by sc_pinger for the
|
||||
address imply the address could not be in a single location.
|
||||
document in man page.
|
||||
* sc_wartsdump:
|
||||
* print error code for udpprobe.
|
||||
* tests:
|
||||
* add more qname tests in unit_cmd_host.c.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 26 07:34:15 UTC 2025 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
- Update to 20250804:
|
||||
* scamper:
|
||||
* fix regression from 20250106 where scamper might not write the final
|
||||
measurement result and hang indefinitely, if you are unlucky.
|
||||
* add do-not-probe file support, with -O dnp=file option, documented
|
||||
in man page. do-not-probe file support can be disabled with
|
||||
--disable-scamper-dnp configure option.
|
||||
* let traceroute with PMTUD use ICMP-echo probes, document in man page.
|
||||
* document existence of ping -O mss=val option in man page.
|
||||
* throughout:
|
||||
* remove string_concaf from more places.
|
||||
* Python module:
|
||||
* no change to the module.
|
||||
* in python interface file (scamper.pyi), fix types of
|
||||
ScamperDealiasMidardiscRound.start and ScamperCtrl.do_midarest(addrs),
|
||||
and make ScamperCtrl generic in parameter type to help with static
|
||||
type checking.
|
||||
* sc_remoted:
|
||||
* catch TERM signal (in addition to INT and HUP)
|
||||
* write pidfile after becoming daemon, when -D is used
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 29 15:29:39 UTC 2025 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
- update to version 20250729:
|
||||
* scamper:
|
||||
remove unused msec parameter from scamper_task_queue_done, remove
|
||||
scamper_task_queue and scamper_task_queue_wait, removing unnecessary
|
||||
gettimeofday calls.
|
||||
rename time-based variables in event loop after their use to
|
||||
make it more obvious what is going on
|
||||
fix json rendering of pmtud traceroutes with a host-connected MTU
|
||||
mismatch
|
||||
* throughout:
|
||||
switch to mostly timeval-based math to avoid division operations,
|
||||
remove some timeval functions, add others (mul, div)
|
||||
implement branchless comparison functions for address and time
|
||||
comparison
|
||||
speed up ipv4_prefix, ipv4_prefixhosts scamper_addr implementations
|
||||
simplify string_nullterm and string_nullterm_char according to how
|
||||
they are used in practice
|
||||
add slist_node_iter and dlist_node_iter functions to optimise a
|
||||
common code pattern
|
||||
add slist_to_dlist, dlist_to_slist, splaytree_to_slist, and
|
||||
splaytree_to_dlist to reduce repeated code
|
||||
silence warnings and errors when compiling with gcc 2.95
|
||||
* tests:
|
||||
add unit tests for string_nullterm and string_nullterm_char
|
||||
expand timeval math tests by adding add, diff, inrange, mul, div
|
||||
tests, and more sub tests
|
||||
expand scamper_addr tests to include cmp, human_cmp,
|
||||
prefix, first-bit-diff, and prefixhosts
|
||||
expand trace tests to include a pmtud traceroute with a
|
||||
host-connected MTU mismatch
|
||||
* Python module:
|
||||
make ScamperIcmpExts.ext_count be an attribute, consistent with
|
||||
documentation
|
||||
make ScamperTracelbNode near, far, length be attributes rather than
|
||||
methods, consistent with documentation
|
||||
fix sync=True do_* code paths
|
||||
install scamper.pyi file alongside the compiled python module to
|
||||
allow for static type checking analysis with mypy, and for code
|
||||
completion in vscode
|
||||
* hoiho:
|
||||
learn ASN regexes where the operator controlling the PTR record uses
|
||||
a prefix on the hostname (e.g., ^ipv4.de-cix.)
|
||||
* documentation:
|
||||
complete trace and ping warts(5) format descriptions
|
||||
* libscamperfile:
|
||||
bump revision because implementation (but not API) changed
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 29 15:28:52 UTC 2025 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
- Add script convert-changelog.sh to convert upstream changelog style to RPM style
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 1 08:47:20 UTC 2025 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
- update to version 20250630:
|
||||
* scamper:
|
||||
* support tx/rx on ARPHRD_NONE linux packet sockets
|
||||
* make route socket code work on solaris
|
||||
* disable epoll on solaris, which doesn't seem to work
|
||||
* let host -s take an IPv6 address
|
||||
* add sniff.enable and neighbourdisc.enable config options
|
||||
* add neighbourdisc json output
|
||||
* abandon a remote source and its current tasks when sc_remoted sends
|
||||
an application-level fin
|
||||
* trace, tracelb: do not do ptr lookups if host command has been
|
||||
disabled by configuration
|
||||
* libscamperfile:
|
||||
* add scamper_neighbourdisc_tojson, bump version
|
||||
* clean up mtu / stop_hop checks in trace text output
|
||||
* Python module:
|
||||
* add ScamperNeighbourdisc.to_json(), to convert a neighbourdisc object
|
||||
to JSON.
|
||||
* add ScamperInst.resultc attribute, to find out the number of result
|
||||
objects queued in the parent ScamperCtrl for the instance.
|
||||
* signal eof when the instance has no objects queued in parent ctrl
|
||||
* sc_remoted:
|
||||
* disconnect mux clients if associated scamper process disconnects
|
||||
* sc_pinger:
|
||||
* add -Z zombie-time option, which will cause sc_pinger to exit if a
|
||||
remote scamper instance goes silent for a user-defined length of
|
||||
time
|
||||
* add -B bad-spec option to detect bad probe methods at run time,
|
||||
which look for unlikely sequences of reply TTL values
|
||||
* update documentation
|
||||
* tests:
|
||||
* further config unit tests
|
||||
* add neighbourdisc test case
|
||||
* misc:
|
||||
* benign changes to allow compilation on solaris
|
||||
* Update to version 20250603:
|
||||
* scamper:
|
||||
* add initial streaming implementation of trace and ping, document
|
||||
existence in man page
|
||||
* reload scamper config file with SIGHUP, document signal handling
|
||||
in man page
|
||||
* fix scamper_trace_reply_dup
|
||||
* restructure recording of probes in do_trace_probe
|
||||
* tbit: dl_* -> tbit_* so that we don't have a function named dl_data,
|
||||
which causes a compiler error on solaris
|
||||
* HEADS UP: it is my intention to remove the following command line
|
||||
options from scamper in a future release, probably making them
|
||||
available some other way:
|
||||
-l listname (name to assign to default list)
|
||||
-L listid (list id for default list)
|
||||
-C cycleid (cycle id)
|
||||
* libscamperfile:
|
||||
* add scamper_[trace|ping|tracelb|dealias]_totext, which provide an
|
||||
interface to get the same text rendering supplied by scamper
|
||||
* add scamper_trace_pmtud_noteiter functions
|
||||
* ensure pointers are not null before dereferencing them when rendering
|
||||
path MTU text output
|
||||
* fix json rendering of traceroute probes with no response after
|
||||
stop_hop
|
||||
* remove potential memory leak rendering MTU information in trace text
|
||||
* bump libscamperfile version
|
||||
* Python module:
|
||||
* implement str() for ScamperPing, ScamperTrace, and ScamperTracelb,
|
||||
which provides the same text rendering that would have been supplied
|
||||
by scamper
|
||||
* add ScamperTracePmtudNote and ScamperTracePmtud.notes()
|
||||
* update docs: https://www.caida.org/catalog/software/scamper/python/
|
||||
* tests:
|
||||
* add unit_text to check text rendering
|
||||
* add unit_json to check json rendering
|
||||
* add fuzz_warts2text to find bugs in text rendering with malformed
|
||||
warts
|
||||
* add trace unit test case: traceroute probes with no response
|
||||
* replace fuzz-tmux.sh with fuzz-tmux.pl, which better aligns with
|
||||
my workflow
|
||||
* misc:
|
||||
* silence clang dead initialization warnings
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 6 06:49:32 UTC 2025 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
- update to version 20250505:
|
||||
* scamper:
|
||||
* trace: separate probes from replies
|
||||
* trace: support -P tcp-ack Path MTU probing
|
||||
* trace: support -N squeries with Path MTU probing
|
||||
* trace: embed path MTU probing data in JSON output
|
||||
* ping: add -O dltx option to force datalink tx, capture nhmtu in ICMP PTB messages
|
||||
* add basic sysctl-like configuration file support, which currently only allows for disabling measurement primitives, e.g.: # disable udpprobe measurement primitive udpprobe.enable=0
|
||||
* hopefully fix build on solaris
|
||||
* libscamperfile:
|
||||
* chase separation of traceroute probes from replies, add scamper_trace_hopiter_* to simplify required user code modifications.
|
||||
* fix 20250227 regression that did not read ipid32 in ping replies correctly, which lead to speedtrap not working.
|
||||
* fix udpprobe warts storage when no packets are sent.
|
||||
* be defensive allocating memory in warts read path.
|
||||
* be defensive with possible null pointers when generating json from malformed warts.
|
||||
* bump libscamperfile version.
|
||||
* Python module:
|
||||
* include setup.py in source code distribution.
|
||||
* transparently handle separation of traceroute probes from replies.
|
||||
* extend do_ping to support MTU probing, and capture embedded nhmtu.
|
||||
* tests:
|
||||
* replace unit_host_warts, unit_http_warts, unit_ping_warts, unit_trace_warts, unit_udpprobe_warts, with unit_warts.
|
||||
* expand ping warts unit tests to check ipid values.
|
||||
* expand trace warts unit tests to include last ditch probing, and path mtu discovery.
|
||||
* add udpprobe and dealias warts unit tests.
|
||||
* add fuzz_warts2json.
|
||||
* add simple unit tests for parsing scamper configuration file.
|
||||
* throughout:
|
||||
* chase libscamperfile modifications throughout bundled utilities.
|
||||
* use string_concatc in all obvious places, reduce use of string_concaf further, speeding up string rendering.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Apr 5 11:22:07 UTC 2025 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
- update to version 20250401:
|
||||
- scamper:
|
||||
* move items that require privilege (opening files, unlinking files,
|
||||
opening raw sockets, datalink interfaces) into scamper_priv.c and
|
||||
have each follow a consistent pattern. previously these were
|
||||
distributed throughout many source code files.
|
||||
* add build option that allows scamper to decide if it will do
|
||||
privilege separation at run time.
|
||||
the --enable-scamper-privsep=rootonly configure option enables this
|
||||
behavior. if run with root privileges, scamper will do privilege
|
||||
separation. if not run with root privileges, scamper will not.
|
||||
--enable-scamper-privsep=yes (the default) does privilege separation
|
||||
regardless of root privilege status.
|
||||
note: the previous --disable-privsep configure option has become
|
||||
--disable-scamper-privsep
|
||||
* restructure the way that blocked tasks (tasks that share a probe
|
||||
signature) are handled
|
||||
* add -O mss=foo option to ping, which will include mss option to
|
||||
TCP syn probe methods.
|
||||
* ignore packets on the datalink interface associated with a probe
|
||||
that has a timestamp after the datalink packet's timestamp.
|
||||
* increase scamper -H holdtime limit from 10s to 60s.
|
||||
- python module:
|
||||
* add ScamperCtrl.outfile setter
|
||||
* fix ScamperFile filter_types
|
||||
- libscamperfile:
|
||||
* handle termination HTTP chunk correctly (noticed running unit tests
|
||||
on MacOS, which has a stricter strtol)
|
||||
* be more accepting when processing HTTP headers
|
||||
- libscamperctrl:
|
||||
* fix bug when reading partial control messages from mux
|
||||
- tests:
|
||||
* add unit test for prefixtree implementation
|
||||
* add tests for parsing HTTP headers
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Mar 1 11:50:34 UTC 2025 - Sebastian Wagner <sebix@sebix.at>
|
||||
|
||||
|
||||
21
scamper.spec
21
scamper.spec
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package scamper
|
||||
#
|
||||
# Copyright (c) 2025 SUSE LLC
|
||||
# Copyright (c) 2026 SUSE LLC and contributors
|
||||
# Copyright (c) 2016, Martin Hauke <mardnh@gmx.de>
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
@@ -18,16 +18,18 @@
|
||||
|
||||
|
||||
Name: scamper
|
||||
Version: 20250227
|
||||
Version: 20260105
|
||||
Release: 0
|
||||
Summary: Parallel Internet measurement utility
|
||||
License: GPL-2.0-only
|
||||
Group: Productivity/Networking/Diagnostic
|
||||
URL: https://www.caida.org/catalog/software/scamper/
|
||||
Source: https://www.caida.org/tools/measurement/%{name}/code/%{name}-cvs-%{version}.tar.gz
|
||||
# packaging utility to convert upstream changelog to RPM style
|
||||
Source1: convert-changelog.sh
|
||||
BuildRequires: libopenssl-devel
|
||||
# for the Python module
|
||||
BuildRequires: python3
|
||||
BuildRequires: python3 >= 3.8
|
||||
BuildRequires: python3-Cython
|
||||
# for sc_uptime
|
||||
BuildRequires: pkgconfig(sqlite3)
|
||||
@@ -51,11 +53,11 @@ infer where the failure appears to occur.
|
||||
|
||||
This also contains the Python module.
|
||||
|
||||
%package -n libscamperfile12
|
||||
%package -n libscamperfile13
|
||||
Summary: File access library for scamper's binary dump format
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n libscamperfile12
|
||||
%description -n libscamperfile13
|
||||
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
|
||||
@@ -68,7 +70,7 @@ 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: libscamperfile12 = %{version}-%{release}
|
||||
Requires: libscamperfile13 = %{version}-%{release}
|
||||
|
||||
%description -n libscamperfile-devel
|
||||
Scamper is a program that is able to conduct Internet measurement
|
||||
@@ -127,9 +129,9 @@ pushd tests
|
||||
make %{?_smp_mflags}
|
||||
popd
|
||||
|
||||
%post -n libscamperfile12 -p /sbin/ldconfig
|
||||
%post -n libscamperfile13 -p /sbin/ldconfig
|
||||
%post -n libscamperctrl4 -p /sbin/ldconfig
|
||||
%postun -n libscamperfile12 -p /sbin/ldconfig
|
||||
%postun -n libscamperfile13 -p /sbin/ldconfig
|
||||
%postun -n libscamperctrl4 -p /sbin/ldconfig
|
||||
|
||||
%files
|
||||
@@ -139,8 +141,9 @@ popd
|
||||
%{_mandir}/man1/*
|
||||
%{_mandir}/man5/*
|
||||
%{python3_sitelib}/scamper.so
|
||||
%{python3_sitelib}/scamper.pyi
|
||||
|
||||
%files -n libscamperfile12
|
||||
%files -n libscamperfile13
|
||||
%{_libdir}/libscamperfile.so.*
|
||||
|
||||
%files -n libscamperfile-devel
|
||||
|
||||
Reference in New Issue
Block a user