Branch: refs/heads/stable1-proposed Home: https://github.com/kronosnet/kronosnet Commit: 4494509ec3894e006807740b1f577fcd5053859f https://github.com/kronosnet/kronosnet/commit/4494509ec3894e006807740b1f577f... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/logging.c M libknet/threads_tx.c
Log Message: ----------- Suppress Coverity false positives for MISSING_LOCK and UNINIT
Fixed two Coverity false positive warnings:
1. MISSING_LOCK in threads_tx.c (_dispatch_to_local): - Access to knet_h->sockfd[channel].is_created flagged as unguarded - Lock is actually held by caller (_handle_send_to_links_thread) - Added local variable to read value once with suppression annotation
2. UNINIT in logging.c (log_msg): - va_list 'ap' flagged as uninitialized before va_start - va_start IS the initialization, but Coverity doesn't understand this - Restructured early returns and added suppression annotation
Both issues are false positives. The code is correct, but Coverity's dataflow analysis cannot detect the lock acquisition in the call chain or understand va_start semantics.
Coverity scan now reports 0 defects (down from 2).
Signed-off-by: Fabio M. Di Nitto fdinitto@redhat.com Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: e64ba14ea9ce3e9212c9522de66f98ca1dbcb668 https://github.com/kronosnet/kronosnet/commit/e64ba14ea9ce3e9212c9522de66f98... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/threads_rx.c
Log Message: ----------- Suppress Coverity INCONSISTENT_UNION_ACCESS false positive in threads_rx.c
The PMTUD reply handling in stable1-proposed accesses inbuf->khp_pmtud_size within a switch/case that ensures it's the correct union field (case KNET_HEADER_TYPE_PMTUD_REPLY). Coverity incorrectly flags this as inconsistent with an earlier khp_ping access from a different case.
On main branch, this code was refactored into separate process_pmtud_reply() function (commit c2520f61 from 2020), which breaks the dataflow path that confuses Coverity. Since stable1-proposed maintains the original inline structure, we add a suppression here.
This is a stable1-proposed specific false positive.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 96ab3af93a91dfec07d0dd3d59a2d86e2dcf8251 https://github.com/kronosnet/kronosnet/commit/96ab3af93a91dfec07d0dd3d59a2d8... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libnozzle/libnozzle.c
Log Message: ----------- libnozzle: use IFF_TUN_EXCL for exclusive TAP device creation
Add IFF_TUN_EXCL flag when creating named TAP devices to prevent race conditions where another process creates the same device name between check and creation. Available since Linux 3.4 with graceful fallback.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: ee42ef3d2a0c640a445bd0f66fcfc5228b55f033 https://github.com/kronosnet/kronosnet/commit/ee42ef3d2a0c640a445bd0f66fcfc5... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libnozzle/libnozzle.c
Log Message: ----------- libnozzle: improve libnl error code translation
Replace generic errno values with proper error code translation from libnl. Add nlerr_to_errno() helper that maps NLE_* codes to standard errno values for better diagnostics when netlink operations fail.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 27c21b1ff071c066860012343020c383df503e99 https://github.com/kronosnet/kronosnet/commit/27c21b1ff071c066860012343020c3... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libnozzle/internals.h M libnozzle/libnozzle.c
Log Message: ----------- libnozzle: implement FreeBSD native ioctl for IP address management
Replace shell command execution with native ioctl calls using struct in_aliasreq (IPv4) and struct in6_aliasreq (IPv6). Use separate AF_INET and AF_INET6 sockets for proper address family handling.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: a5d4543aa4cdcc5d3b0fc64fc909dcdaf8181a62 https://github.com/kronosnet/kronosnet/commit/a5d4543aa4cdcc5d3b0fc64fc909dc... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libnozzle/libnozzle.c
Log Message: ----------- libnozzle: implement Solaris native ioctl for IP address management
Replace shell command execution with native ioctl calls using struct lifreq. Use per-interface AF_INET and AF_INET6 sockets for IPv4/IPv6 operations. Set secondary=1 for IPv6 address deletion to match Solaris logical interface semantics.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: c098678dd0c425a01ef18b2e1d108fbdbffa909c https://github.com/kronosnet/kronosnet/commit/c098678dd0c425a01ef18b2e1d108f... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libnozzle/Makefile.am M libnozzle/internals.h M libnozzle/libnozzle.c A libnozzle/libnozzle_bsd.c A libnozzle/libnozzle_linux.c A libnozzle/libnozzle_solaris.c
Log Message: ----------- libnozzle: refactor platform-specific code into dedicated files
Split platform-specific implementation from libnozzle.c into dedicated files: libnozzle_linux.c, libnozzle_bsd.c, libnozzle_solaris.c.
Introduce platform abstraction layer with typedefs and macros in internals.h: - nozzle_ifreq: Platform-specific ifreq structure type - NOZZLE_SOCKET_DOMAIN: Socket domain for ioctl fd (AF_LOCAL on BSD) - NOZZLE_IOCTL_FD: File descriptor for ioctl operations - NOZZLE_SET_MTU: Platform-specific MTU ioctl command - NOZZLE_IPV6_IS_SECONDARY(domain): IPv6 secondary interface check
This eliminates all platform-specific #ifdef blocks from libnozzle.c, improving code organization and readability. Platform differences are now documented in a single location (internals.h and platform-specific files) rather than scattered throughout the main code.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 457c43187316eb8cdebafa2a134103b48504550e https://github.com/kronosnet/kronosnet/commit/457c43187316eb8cdebafa2a134103... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libnozzle/internals.c M libnozzle/internals.h M libnozzle/libnozzle_bsd.c M libnozzle/libnozzle_linux.c M libnozzle/libnozzle_solaris.c
Log Message: ----------- libnozzle: refactor IP address helpers to reduce code duplication
Extract common IP address calculation logic from platform-specific functions into shared helpers. Add _determine_family(), _validate_prefix(), _ipv4_prefix_to_netmask(), and _ipv6_prefix_to_mask() to internals.c/h. Include netinet/in.h in both files for struct in6_addr definition.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 31d81d36d28e98d01362a05195b1423de60ab670 https://github.com/kronosnet/kronosnet/commit/31d81d36d28e98d01362a05195b142... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libnozzle/libnozzle_bsd.c M libnozzle/libnozzle_linux.c M libnozzle/libnozzle_solaris.c
Log Message: ----------- libnozzle: consolidate platform-specific add_ip/del_ip implementations
Consolidate duplicate add/delete logic into platform-specific helpers: Linux uses _netlink_modify_addr() for netlink operations, BSD uses _bsd_modify_ipv4/6() for ioctl operations, Solaris uses _solaris_modify_ipv4/6() with secondary interface support. Eliminates ~80 lines of duplication.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: d71073bf934aace1b3b845feccd94077df941d16 https://github.com/kronosnet/kronosnet/commit/d71073bf934aace1b3b845feccd940... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libnozzle/tests/Makefile.am
Log Message: ----------- [tests] Disable parallel execution for libnozzle tests
Add .NOTPARALLEL to prevent tap device resource contention on systems that are slow to open/close tap devices.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 028a7899002c1f2a455dc73d57cc400f2998a7d2 https://github.com/kronosnet/kronosnet/commit/028a7899002c1f2a455dc73d57cc40... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libnozzle/libnozzle.c M libnozzle/tests/Makefile.am A libnozzle/tests/api_nozzle_prefix_validation.c
Log Message: ----------- libnozzle: add input validation for network prefixes
Replace atoi() with strtol() for network prefix validation to properly detect invalid input, overflow, and out-of-range values.
Add comprehensive test coverage for prefix validation scenarios.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 28ee22805edf3bf19d2f883f878d9cd55679e998 https://github.com/kronosnet/kronosnet/commit/28ee22805edf3bf19d2f883f878d9c... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/threads_pmtud.c
Log Message: ----------- libknet: force PMTUD rerun after reschedule interruption
When PMTUD is interrupted by a reschedule request (returns EDEADLK), some links may have been checked while others were skipped. The next iteration uses the interval timer to decide which links to check, which means recently-checked links are skipped even if they need a new PMTUD run (e.g., after reconnection following onwire protocol upgrade).
Fix by setting pmtud_forcerun=1 when the PMTUD thread detects it was interrupted (errno == EDEADLK). This ensures the next iteration force-runs PMTUD on all links regardless of the interval timer, completing discovery on interrupted and skipped links.
This approach respects the 2018 commit d2a6344f design by setting forcerun in the PMTUD thread itself (after the interrupted iteration completes) rather than in _pmtud_reschedule() or its callers, avoiding the lock fighting and scheduling issues that commit addressed.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: e3bea63a1d9c4960096587fff99da0b70822d1b2 https://github.com/kronosnet/kronosnet/commit/e3bea63a1d9c4960096587fff99da0... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/tests/Makefile.am M libknet/tests/api-check.mk M libknet/tests/api_knet_addrtostr.c M libknet/tests/api_knet_get_compress_list.c M libknet/tests/api_knet_get_crypto_list.c M libknet/tests/api_knet_get_transport_id_by_name.c M libknet/tests/api_knet_get_transport_list.c M libknet/tests/api_knet_get_transport_name_by_id.c M libknet/tests/api_knet_handle_add_datafd.c M libknet/tests/api_knet_handle_clear_stats.c M libknet/tests/api_knet_handle_compress.c M libknet/tests/api_knet_handle_crypto.c M libknet/tests/api_knet_handle_crypto_rx_clear_traffic.c M libknet/tests/api_knet_handle_crypto_set_config.c M libknet/tests/api_knet_handle_crypto_use_config.c M libknet/tests/api_knet_handle_enable_access_lists.c M libknet/tests/api_knet_handle_enable_filter.c M libknet/tests/api_knet_handle_enable_pmtud_notify.c M libknet/tests/api_knet_handle_enable_sock_notify.c M libknet/tests/api_knet_handle_free.c M libknet/tests/api_knet_handle_get_channel.c M libknet/tests/api_knet_handle_get_datafd.c M libknet/tests/api_knet_handle_get_stats.c M libknet/tests/api_knet_handle_get_transport_reconnect_interval.c M libknet/tests/api_knet_handle_new.c M libknet/tests/api_knet_handle_new_limit.c M libknet/tests/api_knet_handle_pmtud_get.c M libknet/tests/api_knet_handle_pmtud_getfreq.c M libknet/tests/api_knet_handle_pmtud_set.c M libknet/tests/api_knet_handle_pmtud_setfreq.c M libknet/tests/api_knet_handle_remove_datafd.c M libknet/tests/api_knet_handle_set_transport_reconnect_interval.c M libknet/tests/api_knet_handle_setfwd.c M libknet/tests/api_knet_handle_setprio_dscp.c M libknet/tests/api_knet_host_add.c M libknet/tests/api_knet_host_enable_status_change_notify.c M libknet/tests/api_knet_host_get_host_list.c M libknet/tests/api_knet_host_get_id_by_host_name.c M libknet/tests/api_knet_host_get_name_by_host_id.c M libknet/tests/api_knet_host_get_policy.c M libknet/tests/api_knet_host_get_status.c M libknet/tests/api_knet_host_remove.c M libknet/tests/api_knet_host_set_name.c M libknet/tests/api_knet_host_set_policy.c M libknet/tests/api_knet_link_add_acl.c M libknet/tests/api_knet_link_clear_acl.c M libknet/tests/api_knet_link_clear_config.c M libknet/tests/api_knet_link_get_config.c M libknet/tests/api_knet_link_get_enable.c M libknet/tests/api_knet_link_get_link_list.c M libknet/tests/api_knet_link_get_ping_timers.c M libknet/tests/api_knet_link_get_pong_count.c M libknet/tests/api_knet_link_get_priority.c M libknet/tests/api_knet_link_get_status.c M libknet/tests/api_knet_link_insert_acl.c M libknet/tests/api_knet_link_rm_acl.c M libknet/tests/api_knet_link_set_config.c M libknet/tests/api_knet_link_set_enable.c M libknet/tests/api_knet_link_set_ping_timers.c M libknet/tests/api_knet_link_set_pong_count.c M libknet/tests/api_knet_link_set_priority.c M libknet/tests/api_knet_log_get_loglevel.c M libknet/tests/api_knet_log_get_loglevel_id.c M libknet/tests/api_knet_log_get_loglevel_name.c M libknet/tests/api_knet_log_get_subsystem_id.c M libknet/tests/api_knet_log_get_subsystem_name.c M libknet/tests/api_knet_log_set_loglevel.c M libknet/tests/api_knet_recv.c M libknet/tests/api_knet_send.c M libknet/tests/api_knet_send_compress.c M libknet/tests/api_knet_send_crypto.c M libknet/tests/api_knet_send_loopback.c M libknet/tests/api_knet_send_sync.c M libknet/tests/api_knet_strtoaddr.c M libknet/tests/fun_acl_check.c M libknet/tests/fun_config_crypto.c M libknet/tests/fun_pmtud_crypto.c M libknet/tests/int_links_acl_ip.c M libknet/tests/int_timediff.c M libknet/tests/knet_bench.c M libknet/tests/test-common.c M libknet/tests/test-common.h
Log Message: ----------- tests: migrate to unified logging infrastructure
Convert all 86 tests to start_logging/stop_logging pattern with timestamped [testsuite] markers. Replace printf() in test functions with log_test(). Remove old logging infrastructure and rename macros to standard names.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: fe081432d8ac4bf82e216cc8cae6f5029e381dc6 https://github.com/kronosnet/kronosnet/commit/fe081432d8ac4bf82e216cc8cae6f5... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/tests/api_knet_addrtostr.c M libknet/tests/api_knet_get_compress_list.c M libknet/tests/api_knet_get_crypto_list.c M libknet/tests/api_knet_get_transport_id_by_name.c M libknet/tests/api_knet_get_transport_list.c M libknet/tests/api_knet_get_transport_name_by_id.c M libknet/tests/api_knet_handle_add_datafd.c M libknet/tests/api_knet_handle_clear_stats.c M libknet/tests/api_knet_handle_compress.c M libknet/tests/api_knet_handle_crypto.c M libknet/tests/api_knet_handle_crypto_rx_clear_traffic.c M libknet/tests/api_knet_handle_crypto_set_config.c M libknet/tests/api_knet_handle_crypto_use_config.c M libknet/tests/api_knet_handle_enable_access_lists.c M libknet/tests/api_knet_handle_enable_filter.c M libknet/tests/api_knet_handle_enable_pmtud_notify.c M libknet/tests/api_knet_handle_enable_sock_notify.c M libknet/tests/api_knet_handle_free.c M libknet/tests/api_knet_handle_get_channel.c M libknet/tests/api_knet_handle_get_datafd.c M libknet/tests/api_knet_handle_get_stats.c M libknet/tests/api_knet_handle_get_transport_reconnect_interval.c M libknet/tests/api_knet_handle_new.c M libknet/tests/api_knet_handle_new_limit.c M libknet/tests/api_knet_handle_pmtud_get.c M libknet/tests/api_knet_handle_pmtud_getfreq.c M libknet/tests/api_knet_handle_pmtud_set.c M libknet/tests/api_knet_handle_pmtud_setfreq.c M libknet/tests/api_knet_handle_remove_datafd.c M libknet/tests/api_knet_handle_set_transport_reconnect_interval.c M libknet/tests/api_knet_handle_setfwd.c M libknet/tests/api_knet_handle_setprio_dscp.c M libknet/tests/api_knet_host_add.c M libknet/tests/api_knet_host_enable_status_change_notify.c M libknet/tests/api_knet_host_get_host_list.c M libknet/tests/api_knet_host_get_id_by_host_name.c M libknet/tests/api_knet_host_get_name_by_host_id.c M libknet/tests/api_knet_host_get_policy.c M libknet/tests/api_knet_host_get_status.c M libknet/tests/api_knet_host_remove.c M libknet/tests/api_knet_host_set_name.c M libknet/tests/api_knet_host_set_policy.c M libknet/tests/api_knet_link_add_acl.c M libknet/tests/api_knet_link_clear_acl.c M libknet/tests/api_knet_link_clear_config.c M libknet/tests/api_knet_link_get_config.c M libknet/tests/api_knet_link_get_enable.c M libknet/tests/api_knet_link_get_link_list.c M libknet/tests/api_knet_link_get_ping_timers.c M libknet/tests/api_knet_link_get_pong_count.c M libknet/tests/api_knet_link_get_priority.c M libknet/tests/api_knet_link_get_status.c M libknet/tests/api_knet_link_insert_acl.c M libknet/tests/api_knet_link_rm_acl.c M libknet/tests/api_knet_link_set_config.c M libknet/tests/api_knet_link_set_enable.c M libknet/tests/api_knet_link_set_ping_timers.c M libknet/tests/api_knet_link_set_pong_count.c M libknet/tests/api_knet_link_set_priority.c M libknet/tests/api_knet_log_get_loglevel.c M libknet/tests/api_knet_log_get_loglevel_id.c M libknet/tests/api_knet_log_get_loglevel_name.c M libknet/tests/api_knet_log_get_subsystem_id.c M libknet/tests/api_knet_log_get_subsystem_name.c M libknet/tests/api_knet_log_set_loglevel.c M libknet/tests/api_knet_recv.c M libknet/tests/api_knet_send.c M libknet/tests/api_knet_send_compress.c M libknet/tests/api_knet_send_crypto.c M libknet/tests/api_knet_send_loopback.c M libknet/tests/api_knet_send_sync.c M libknet/tests/api_knet_strtoaddr.c M libknet/tests/fun_acl_check.c M libknet/tests/fun_config_crypto.c M libknet/tests/fun_pmtud_crypto.c M libknet/tests/int_links_acl_ip.c M libknet/tests/int_timediff.c M libknet/tests/test-common.c M libknet/tests/test-common.h
Log Message: ----------- tests: standardize test result output with TEST_EXIT macro
Add [PASS]/[FAIL]/[SKIP]/[ERROR] markers to all test output. Rename CLEAN_EXIT to TEST_EXIT_CLEAN for clarity.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 3455121ab5b08af91c75ec3ba8b522c35b16dd4e https://github.com/kronosnet/kronosnet/commit/3455121ab5b08af91c75ec3ba8b522... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/tests/api_knet_handle_add_datafd.c M libknet/tests/api_knet_handle_clear_stats.c M libknet/tests/api_knet_handle_compress.c M libknet/tests/api_knet_handle_crypto.c M libknet/tests/api_knet_handle_crypto_rx_clear_traffic.c M libknet/tests/api_knet_handle_crypto_set_config.c M libknet/tests/api_knet_handle_crypto_use_config.c M libknet/tests/api_knet_handle_enable_access_lists.c M libknet/tests/api_knet_handle_enable_filter.c M libknet/tests/api_knet_handle_enable_pmtud_notify.c M libknet/tests/api_knet_handle_enable_sock_notify.c M libknet/tests/api_knet_handle_free.c M libknet/tests/api_knet_handle_get_channel.c M libknet/tests/api_knet_handle_get_datafd.c M libknet/tests/api_knet_handle_get_stats.c M libknet/tests/api_knet_handle_get_transport_reconnect_interval.c M libknet/tests/api_knet_handle_new.c M libknet/tests/api_knet_handle_pmtud_get.c M libknet/tests/api_knet_handle_pmtud_getfreq.c M libknet/tests/api_knet_handle_pmtud_set.c M libknet/tests/api_knet_handle_pmtud_setfreq.c M libknet/tests/api_knet_handle_remove_datafd.c M libknet/tests/api_knet_handle_set_transport_reconnect_interval.c M libknet/tests/api_knet_handle_setfwd.c M libknet/tests/api_knet_handle_setprio_dscp.c M libknet/tests/api_knet_host_add.c M libknet/tests/api_knet_host_enable_status_change_notify.c M libknet/tests/api_knet_host_get_host_list.c M libknet/tests/api_knet_host_get_id_by_host_name.c M libknet/tests/api_knet_host_get_name_by_host_id.c M libknet/tests/api_knet_host_get_policy.c M libknet/tests/api_knet_host_get_status.c M libknet/tests/api_knet_host_remove.c M libknet/tests/api_knet_host_set_name.c M libknet/tests/api_knet_host_set_policy.c M libknet/tests/api_knet_link_add_acl.c M libknet/tests/api_knet_link_clear_acl.c M libknet/tests/api_knet_link_clear_config.c M libknet/tests/api_knet_link_get_config.c M libknet/tests/api_knet_link_get_enable.c M libknet/tests/api_knet_link_get_link_list.c M libknet/tests/api_knet_link_get_ping_timers.c M libknet/tests/api_knet_link_get_pong_count.c M libknet/tests/api_knet_link_get_priority.c M libknet/tests/api_knet_link_get_status.c M libknet/tests/api_knet_link_insert_acl.c M libknet/tests/api_knet_link_rm_acl.c M libknet/tests/api_knet_link_set_config.c M libknet/tests/api_knet_link_set_enable.c M libknet/tests/api_knet_link_set_ping_timers.c M libknet/tests/api_knet_link_set_pong_count.c M libknet/tests/api_knet_link_set_priority.c M libknet/tests/api_knet_log_get_loglevel.c M libknet/tests/api_knet_log_set_loglevel.c M libknet/tests/api_knet_recv.c M libknet/tests/api_knet_send.c M libknet/tests/api_knet_send_compress.c M libknet/tests/api_knet_send_crypto.c M libknet/tests/api_knet_send_loopback.c M libknet/tests/api_knet_send_sync.c M libknet/tests/fun_acl_check.c M libknet/tests/fun_config_crypto.c M libknet/tests/fun_pmtud_crypto.c M libknet/tests/knet_bench.c M libknet/tests/test-common.c M libknet/tests/test-common.h
Log Message: ----------- tests: rename knet_* test helpers to _ts_knet_* to avoid namespace collision
Rename test suite helpers that wrap libknet API to use _ts_ prefix (test suite) to clearly distinguish them from the public libknet API functions: - knet_handle_start → _ts_knet_handle_start - knet_handle_stop_everything → _ts_knet_handle_stop_everything - knet_handle_start_nodes → _ts_knet_handle_start_nodes - knet_handle_join_nodes → _ts_knet_handle_join_nodes - knet_handle_disconnect_links → _ts_knet_handle_disconnect_links - knet_handle_reconnect_links → _ts_knet_handle_reconnect_links - _knet_link_set_config → _ts_knet_link_set_config
This prevents confusion between test infrastructure and library API.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 0a8e4fbebee1aea882e0b17fb7f08cd130a2f542 https://github.com/kronosnet/kronosnet/commit/0a8e4fbebee1aea882e0b17fb7f08c... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/tests/api_knet_handle_free.c M libknet/tests/api_knet_handle_pmtud_set.c M libknet/tests/api_knet_link_set_enable.c M libknet/tests/api_knet_recv.c M libknet/tests/fun_config_crypto.c M libknet/tests/fun_pmtud_crypto.c M libknet/tests/knet_bench.c M libknet/tests/test-common.c M libknet/tests/test-common.h
Log Message: ----------- tests: improve test infrastructure and fix issues
Standardize test_sleep() to take logfd instead of knet_h. Fix knet_bench infrastructure. Remove redundant TESTNODES definitions.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 3487c2529cb2c628ce229ed6bf2cf3c86b37ac3e https://github.com/kronosnet/kronosnet/commit/3487c2529cb2c628ce229ed6bf2cf3... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/tests/api_knet_handle_add_datafd.c M libknet/tests/api_knet_handle_clear_stats.c M libknet/tests/api_knet_handle_compress.c M libknet/tests/api_knet_handle_crypto.c M libknet/tests/api_knet_handle_crypto_rx_clear_traffic.c M libknet/tests/api_knet_handle_crypto_set_config.c M libknet/tests/api_knet_handle_crypto_use_config.c M libknet/tests/api_knet_handle_enable_access_lists.c M libknet/tests/api_knet_handle_enable_filter.c M libknet/tests/api_knet_handle_enable_pmtud_notify.c M libknet/tests/api_knet_handle_enable_sock_notify.c M libknet/tests/api_knet_handle_free.c M libknet/tests/api_knet_handle_get_channel.c M libknet/tests/api_knet_handle_get_datafd.c M libknet/tests/api_knet_handle_get_stats.c M libknet/tests/api_knet_handle_get_transport_reconnect_interval.c M libknet/tests/api_knet_handle_pmtud_get.c M libknet/tests/api_knet_handle_pmtud_getfreq.c M libknet/tests/api_knet_handle_pmtud_set.c M libknet/tests/api_knet_handle_pmtud_setfreq.c M libknet/tests/api_knet_handle_remove_datafd.c M libknet/tests/api_knet_handle_set_transport_reconnect_interval.c M libknet/tests/api_knet_handle_setfwd.c M libknet/tests/api_knet_handle_setprio_dscp.c M libknet/tests/api_knet_host_add.c M libknet/tests/api_knet_host_enable_status_change_notify.c M libknet/tests/api_knet_host_get_host_list.c M libknet/tests/api_knet_host_get_id_by_host_name.c M libknet/tests/api_knet_host_get_name_by_host_id.c M libknet/tests/api_knet_host_get_policy.c M libknet/tests/api_knet_host_get_status.c M libknet/tests/api_knet_host_remove.c M libknet/tests/api_knet_host_set_name.c M libknet/tests/api_knet_host_set_policy.c M libknet/tests/api_knet_link_add_acl.c M libknet/tests/api_knet_link_clear_acl.c M libknet/tests/api_knet_link_clear_config.c M libknet/tests/api_knet_link_get_config.c M libknet/tests/api_knet_link_get_enable.c M libknet/tests/api_knet_link_get_link_list.c M libknet/tests/api_knet_link_get_ping_timers.c M libknet/tests/api_knet_link_get_pong_count.c M libknet/tests/api_knet_link_get_priority.c M libknet/tests/api_knet_link_get_status.c M libknet/tests/api_knet_link_insert_acl.c M libknet/tests/api_knet_link_rm_acl.c M libknet/tests/api_knet_link_set_config.c M libknet/tests/api_knet_link_set_enable.c M libknet/tests/api_knet_link_set_ping_timers.c M libknet/tests/api_knet_link_set_pong_count.c M libknet/tests/api_knet_link_set_priority.c M libknet/tests/api_knet_log_get_loglevel.c M libknet/tests/api_knet_log_set_loglevel.c M libknet/tests/api_knet_recv.c M libknet/tests/api_knet_send.c M libknet/tests/api_knet_send_compress.c M libknet/tests/api_knet_send_crypto.c M libknet/tests/api_knet_send_loopback.c M libknet/tests/api_knet_send_sync.c M libknet/tests/fun_acl_check.c M libknet/tests/fun_config_crypto.c M libknet/tests/fun_pmtud_crypto.c M libknet/tests/test-common.c M libknet/tests/test-common.h
Log Message: ----------- tests: improve error handling and use named constants
Add FAIL_ON_SUCCESS macro for consistent API error checking. Consolidate timeout handling with adjust_timeout_for_valgrind(). Replace magic numbers with TEST_TIMEOUT_* and TEST_PORT_* constants.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 4a835310cc3afb341b7ffd1d0fb67107196e536d https://github.com/kronosnet/kronosnet/commit/4a835310cc3afb341b7ffd1d0fb671... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/tests/api_knet_addrtostr.c M libknet/tests/api_knet_get_compress_list.c M libknet/tests/api_knet_get_crypto_list.c M libknet/tests/api_knet_get_transport_list.c M libknet/tests/api_knet_strtoaddr.c M libknet/tests/test-common.h
Log Message: ----------- tests: add NOCLEAN macro variants for tests without knet handles
Add FAIL_ON_ERR_NOCLEAN and FAIL_ON_SUCCESS_NOCLEAN macros for tests that don't create knet handles and don't need cleanup infrastructure.
Convert 5 API tests to use new macros (11 error checks total): - api_knet_addrtostr.c (4 checks) - api_knet_strtoaddr.c (4 checks) - api_knet_get_compress_list.c (1 check) - api_knet_get_crypto_list.c (1 check) - api_knet_get_transport_list.c (1 check)
Reduces test code by 37 lines and improves consistency with other tests.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: d5ee2666a17b2f9b28e760b2a36b3b1b985d34eb https://github.com/kronosnet/kronosnet/commit/d5ee2666a17b2f9b28e760b2a36b3b... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/Makefile.am M libknet/crypto.c M libknet/crypto_nss.c M libknet/libknet.h M libknet/libknet_exported_syms M libknet/tests/api-check.mk A libknet/tests/api_knet_get_crypto_cipher_list.c A libknet/tests/api_knet_get_crypto_hash_list.c M man/Makefile.am
Log Message: ----------- Add API to enumerate supported cipher modes and hash algorithms
Implements issue #478 by introducing two new API functions: - knet_get_crypto_cipher_list(): Returns AES cipher modes (CBC/CTR) supported across all crypto backends - knet_get_crypto_hash_list(): Returns hash algorithms supported across all crypto backends
Both functions return the intersection of capabilities across OpenSSL, NSS, and libgcrypt backends. Applications can reliably use any returned cipher/hash combination regardless of which crypto module is loaded.
The cipher list includes both OpenSSL-style hyphenated names (aes-128-cbc) and NSS/libgcrypt non-hyphenated names (aes128) as separate entries.
New structures: - knet_crypto_cipher_info: const char *name, const char *mode, int key_bits - knet_crypto_hash_info: const char *name, int hash_bits
Updated NSS parser to accept hyphenated CBC cipher names (aes-128-cbc, aes-192-cbc, aes-256-cbc) in addition to non-hyphenated variants.
Includes comprehensive tests verifying all returned ciphers and hashes work with all three crypto backends.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 509d714665fb103bab1de630cd82aa3609d83106 https://github.com/kronosnet/kronosnet/commit/509d714665fb103bab1de630cd82aa... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/tests/api_knet_get_crypto_cipher_list.c M libknet/tests/api_knet_get_crypto_hash_list.c M libknet/tests/api_knet_handle_clear_stats.c M libknet/tests/api_knet_handle_pmtud_set.c M libknet/tests/api_knet_recv.c M libknet/tests/api_knet_send.c M libknet/tests/api_knet_send_compress.c M libknet/tests/api_knet_send_crypto.c M libknet/tests/api_knet_send_loopback.c M libknet/tests/api_knet_send_sync.c M libknet/tests/fun_acl_check.c M libknet/tests/fun_config_crypto.c M libknet/tests/fun_pmtud_crypto.c M libknet/tests/test-common.c M libknet/tests/test-common.h
Log Message: ----------- tests: cleanup and add comprehensive documentation
Remove flush_logs(), dead code, and unused FILE parameters. Add detailed documentation to test-common.h for all macros and helpers. Port crypto enumeration API tests to new infrastructure.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: aadbe0ac467a376c57c6f23f0016fd8fa5cdadd9 https://github.com/kronosnet/kronosnet/commit/aadbe0ac467a376c57c6f23f0016fd... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths: M libknet/tests/test-common.c M libknet/tests/test-common.h
Log Message: ----------- tests: export find_plugins_path() for rust bindings
The find_plugins_path() function must be non-static because it is used by the rust test suite (libknet/bindings/rust/tests/src/bin/set_plugin_path.c).
Changes: - Remove static qualifier from find_plugins_path() in test-common.c - Add declaration to test-common.h with updated signature (int logfd) - Update rust test code to pass STDOUT_FILENO as logfd parameter
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 5fb0fa37832071414af48ab9480214db073cb45b https://github.com/kronosnet/kronosnet/commit/5fb0fa37832071414af48ab9480214... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths: M libknet/tests/test-common.c M libknet/tests/test-common.h
Log Message: ----------- [tests] Add runtime log filter callback infrastructure
Add thread-safe log filter callback mechanism for runtime pattern matching in test logs. The log thread invokes registered callbacks for each log line, allowing tests to detect specific messages without parsing log files.
Features: - install_log_filter() to register/unregister callbacks - check_log_pattern_found() to query if pattern was matched - Thread-safe via mutex protection - Callback receives logfd for use with log_test() facility
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 7e8c970f6c66a6dab1a262ef80ddc2bb40bd94c0 https://github.com/kronosnet/kronosnet/commit/7e8c970f6c66a6dab1a262ef80ddc2... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths: M libknet/tests/test-common.c M libknet/tests/test-common.h
Log Message: ----------- [tests] Add packet injection helper for RX validation testing
Add inject_packet() helper to construct and inject packets directly into link sockets for testing RX thread validation logic without requiring network-level packet manipulation.
Supports: - DATA packets with configurable fragmentation fields - PING packets with configurable link_id - Controlled sequence numbers to avoid deduplication - Tests can forge invalid packets to verify rejection logic
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: fbe5d705ca935a0c887a3763342acc5be782b645 https://github.com/kronosnet/kronosnet/commit/fbe5d705ca935a0c887a3763342acc... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths: M libknet/tests/api_knet_send_loopback.c
Log Message: ----------- [tests] Use FAIL_ON_* macros consistently in send tests
Replace manual if statement error checking with FAIL_ON_SUCCESS and FAIL_ON_ERR macros for consistency with the rest of the test suite.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Commit: 129995bc96485372b97747d70ef2542046a1bd6c https://github.com/kronosnet/kronosnet/commit/129995bc96485372b97747d70ef254... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths: M libknet/tests/test-common.c
Log Message: ----------- [tests] Fix parallel port allocation race in _ts_knet_handle_join_nodes
The existing port allocation used predictable node ID-based calculations, causing EADDRINUSE errors when tests run in parallel and multiple nodes try to bind the same port simultaneously.
Implement two-phase port allocation: - Phase 1: Each node allocates ports by configuring links to a temporary peer, letting _ts_knet_link_set_config find available ports with proper EADDRINUSE retry logic - Phase 2: Reconfigure each link to its actual destination peer, reusing the src_addr already bound in Phase 1
Requires clearing the configured flag between phases (protected by global_rwlock) to allow reconfiguring to a different host_id while keeping the socket bound.
Signed-off-by: Fabio M. Di Nitto fabbione@kronosnet.org Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Compare: https://github.com/kronosnet/kronosnet/compare/5c486b57dd8e...129995bc9648
To unsubscribe from these emails, change your notification settings at https://github.com/kronosnet/kronosnet/settings/notifications