18 Commits

Author SHA256 Message Date
7516c37085 Accepting request 1327017 from network:utilities
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1327017
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=42
2026-01-13 20:36:06 +00:00
ac85c166c0 - 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.

OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=97
2026-01-06 13:18:03 +00:00
d231d291da Accepting request 1313832 from network:utilities
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1313832
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=41
2025-10-28 13:45:56 +00:00
d6c0505d03 - 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.

OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=95
2025-10-20 11:28:53 +00:00
1c176b1cd0 Accepting request 1311101 from network:utilities
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1311101
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=40
2025-10-13 13:36:37 +00:00
3171926d2c - 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.

OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=93
2025-10-06 11:23:01 +00:00
5bd5182cdd Accepting request 1308815 from network:utilities
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1308815
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=39
2025-10-04 16:51:05 +00:00
4af2346f3d - 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
* 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

OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=91
2025-09-26 07:36:20 +00:00
eaf507a142 Accepting request 1297783 from network:utilities
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1297783
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=38
2025-08-06 12:33:49 +00:00
0a4f7207fc - 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

OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=89
2025-07-29 15:30:51 +00:00
879668e9ed - Add script convert-changelog.sh to convert upstream changelog style to RPM style
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=88
2025-07-29 15:29:19 +00:00
2aa23a1a44 Accepting request 1291199 from network:utilities
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1291199
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=37
2025-07-09 15:26:55 +00:00
1615dd5767 require python >= 3,8
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=86
2025-07-01 08:59:11 +00:00
8912dce0b1 - 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

OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=85
2025-07-01 08:54:17 +00:00
c50be2a2d0 Accepting request 1277048 from network:utilities
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1277048
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=36
2025-05-13 18:07:15 +00:00
268cadef6d - 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.

OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=83
2025-05-06 07:11:56 +00:00
a888c5bfe5 Accepting request 1268790 from network:utilities
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1268790
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=35
2025-04-14 10:57:45 +00:00
5a5f02a14e - 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:

OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=81
2025-04-05 11:23:27 +00:00
5 changed files with 378 additions and 12 deletions

3
convert-changelog.sh Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
sed 's/^/ * /' | sed 's/\* \*/ /' | sed 's/\* / /' | sed '/^ \* $/d'

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:26b641e0b3c9c45d5189136f469cbbf017e5d559790e375a50f08d7e8cb7713c
size 3216225

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:31aeb84f82019052d12d85ebbf275ff1a1d465c0a80d1283e973445cbbbb75d7
size 3380234

View File

@@ -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>

View File

@@ -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