Commit Graph
100 Commits
Author SHA1 Message Date
Nils Andreas Svee 023e85741a refactor(client): remove redundant timestamp parameter from open method 2026-05-10 23:37:35 +07:00
Nils Andreas Svee 2258509021 chore: bump version to 0.1.1 across all crates
Update workspace members and dependencies to version 0.1.1 to prepare for a new release.
2026-05-10 21:17:22 +07:00
Nils Andreas Svee 6b373380f4 ci: pin GitHub Action digests in Renovate configuration
Add the pinGitHubActionDigests helper to improve CI security by using immutable commit SHA digests instead of mutable tags.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee fc8e6d10e8 ci: add cargo-semver-checks to verify API compatibility
Check for breaking changes against all features on tags and manual triggers to ensure semantic versioning compliance.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 1a314778ad ci: expand workflow security auditing with actionlint
Rename the zizmor workflow to actions-security and add actionlint to provide comprehensive static analysis and linting for GitHub Actions.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 2e9ad57d61 ci: remove redundant build and test workflow
Deletes the basic build_and_test.yml to avoid duplication with more specialized CI pipelines and security scanners.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee b00d3ef633 ci: add zizmor for GitHub Actions security scanning 2026-05-10 20:56:43 +07:00
Nils Andreas Svee ae5f939fb2 ci: implement supply chain security and workflow linting 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 385d531461 chore: refine cargo-deny policy for stricter dependency auditing
Replace the default template with a tailored configuration that enforces explicit license checks, denies unknown registries, and mandates exact commit pins for git dependencies.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 00aab3dd6b ci: modernize clippy sarif workflow 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8343bcbb54 ci: add primary rust continuous integration pipeline 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b8d60fcc23 chore: add cargo-deny configuration for dependency auditing 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 44ffb9557a fix(client): use correct socket option for IPv4 TOS reception on Linux 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 26fbe86e90 chore: add OSV-Scanner workflow for vulnerability scanning 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b3f4a2d9eb chore: add rust-clippy workflow for code analysis 2026-05-10 20:56:43 +07:00
Nils Andreas Svee c386f87a0e fix(deps): update rust crate ctrlc to 3.5.2 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 47a8143bce refactor(irtt-proto): update HMAC implementation for Digest 0.11 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 831fd0cc45 build(deps): update hmac and md-5 dependencies 2026-05-10 20:56:43 +07:00
Nils Andreas Svee fe418d650d refactor(client): upgrade socket2 to 0.6 and use version-specific API 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 13404297c4 build: update windows-sys dependencies and consolidate versions 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8d24d4811a chore: upgrade ctrlc to version 3.5 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 416e5b43ba build: add package metadata to member crates for publishing
Include descriptions, keywords, categories, and workspace-inherited fields (repository, homepage, readme) to prepare crates for distribution on crates.io.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 2368e0b3ee build: centralize internal dependencies using workspace inheritance 2026-05-10 20:56:43 +07:00
Nils Andreas Svee a1fb2b636b chore: add license 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 38416876aa docs: add README with project overview and usage examples 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 2061bb6ae7 feat(stats): track multiple IPDV pairs per event update
Expose multiple jitter updates when a single event fills a sequence gap, ensuring accurate IPDV reporting for out-of-order packets in human-readable output.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8cdd5c63e8 feat(cli): quiet default human output 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 1d6310ec22 feat(cli): format human summary as aligned table 2026-05-10 20:56:43 +07:00
Nils Andreas Svee f9c3685668 feat(cli): improve human event output 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8f35b1d229 feat(stats): expose per-event jitter updates 2026-05-10 20:56:43 +07:00
Nils Andreas Svee ce7e5ca235 chore(workflow): add build workflow 2026-05-10 20:56:43 +07:00
Nils Andreas Svee fa06177c60 docs(proto): document HMAC-MD5 compatibility 2026-05-10 20:56:43 +07:00
Nils Andreas Svee c3f2a524a3 fix(client): avoid lossy timing casts 2026-05-10 20:56:43 +07:00
Nils Andreas Svee a41a1e319d fix(client): handle close-flagged echo replies 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 48f6cb80ed fix(proto): require exact echo reply packet length 2026-05-10 20:56:43 +07:00
Nils Andreas Svee ef18bb549c fix(client): report counter overflows clearly 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b8d16f3d18 test(client): cover timing validation boundaries 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 2c75e08e30 fix(client): reject invalid timing parameters earlier 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8374a51054 fix(client): reject runtime-invalid negotiated dscp 2026-05-10 20:56:43 +07:00
Nils Andreas Svee dfdc43292a fix(proto): reject invalid echo packet lengths 2026-05-10 20:56:43 +07:00
Nils Andreas Svee d53dd7f406 fix(proto): reject oversized echo payloads 2026-05-10 20:56:43 +07:00
Nils Andreas Svee f5cdaf4b67 perf(proto): compute HMAC without packet allocation 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 9977d26a43 perf(client): reuse receive buffer 2026-05-10 20:56:43 +07:00
Nils Andreas Svee be2f43b07a chore(client): polish managed runner ergonomics 2026-05-10 20:56:43 +07:00
Nils Andreas Svee afb20b6625 fix(client): retry real backend startup on port races 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 995293676d feat(cli): handle interrupt as graceful shutdown 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 33e2b663b8 fix(client): report read-timeout restore failures 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 07d14328d3 fix(client): clarify duration negotiation rejection 2026-05-10 20:56:43 +07:00
Nils Andreas Svee f0823fa90b fix(proto): avoid mutating flags in HMAC helper 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 860594ebec fix(client): check probe scheduling arithmetic 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b53e650c53 fix(client): handle sequence wrap in reply ordering 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 294d97a13d fix(client): reject invalid negotiated packet length 2026-05-10 20:56:43 +07:00
Nils Andreas Svee e3bb28c559 fix(client): validate packet length configuration 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 1a98858b7a fix(client): harden ancillary receive parsing 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 56d3a905ed fix(client): harden ancillary control message parsing 2026-05-10 20:56:43 +07:00
Nils Andreas Svee f9a639d73d feat(cli): expose kernel receive timestamp in machine output 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 9b5bb46210 feat(client): add Linux kernel receive timestamp metadata 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 231021fd40 feat(cli): expose receive metadata in machine output 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 212a6e7b35 test(client): cover receive metadata on reply events 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 1c7f0ea22f chore(client): refine unsafe code restrictions for Linux ancillary features
Transition from a global forbid to a scoped deny for unsafe code to accommodate necessary low-level operations in the Linux receive implementation.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 3ff6a07225 feat(client): add Linux ancillary receive metadata 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 40dc41dc39 feat(client): add receive datagram abstraction 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 25d5c1db1c feat(client): add receive metadata scaffold 2026-05-10 20:56:43 +07:00
Nils Andreas Svee ed62a5c80c test: refactor real backend support for reliable output capture 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 706e3bd1e1 test: make IPv6 socket option tests more robust 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 9e9b2d641f feat(cli): improve cli help text and unit test naming 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 2a11e77cfd chore: remove unused interop feature flag 2026-05-10 20:56:43 +07:00
Nils Andreas Svee d93e10ba45 feat(cli): add support for configuring outgoing TTL and hop limit
Introduce a `--ttl` flag to allow users to set the IPv4 TTL or IPv6 hop limit, providing control over packet lifespan and helping diagnose network topology issues.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee a80a5e2b7b test(client): rename DSCP smoke test to reflect specific behavior
Update the test name to clarify that it verifies DSCP configuration during the session open and close lifecycle.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 063214b83b feat(client): implement DSCP negotiation and socket traffic class application
Apply the negotiated DSCP value to the UDP socket after a successful session open and clear it before closing to support network-level quality of service. This change adds platform-specific socket option handling for IPv4 TOS and IPv6 Traffic Class.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee ab95489f20 test(client): add integration tests for packet length and server fill
Verify that the client correctly handles custom packet lengths and server fill negotiation to ensure protocol compliance and support for larger MTUs. Add validation to reject empty server fill strings during configuration.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee a4e2f3aef4 test(client): unify fake and real backend testing via BackendPeer
Introduce a BackendPeer abstraction to transparently switch between fake and real IRTT backends. This simplifies test logic by removing manual skip checks and providing a consistent interface for server lifecycle management.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 3d49f725ae test(client): add integration tests for compatibility with real IRTT backends
Introduce a mechanism to run tests against a live irtt binary to verify real-world protocol interoperability, including HMAC authentication and various timestamp modes.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 797120056e test(client): add comprehensive integration tests for HMAC authentication
Verify HMAC negotiation, session closure, and error handling for authenticated probes to ensure protocol security and reliability.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 3f33f630b2 test(client): split client tests into behavior-focused modules 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 48891f8b5a refactor(client): move internal client tests to a dedicated sub-module 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8bd52f35fa refactor(cli): rename m8 compatibility terms to advanced protocol options 2026-05-10 20:56:43 +07:00
Nils Andreas Svee c80b108b6d test(cli): consolidate invalid argument parsing tests 2026-05-10 20:56:43 +07:00
Nils Andreas Svee e49e91c528 test: verify RTT equality when no timestamping is present 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b5b6ecc69e refactor(test): extract RTT processing verification to helper function 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 2052417b6b test: update mock timestamp simulation in test support 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 3de92749e9 test(client): add integration tests for m8 compatibility 2026-05-10 20:56:43 +07:00
Nils Andreas Svee aa5209dd0a test(cli): expand test coverage for new CLI parameters 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8aa8876dc5 feat(cli): add advanced negotiation and protocol options 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8ecd113f04 feat(cli): add support for midpoint timestamps and received stats 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 880653a98d feat(client): implement protocol configuration validation 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 1d7c9d70ec feat(client): define constants and validation for DSCP and server fill 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 0a795379a7 test(client): validate parameter mapping from configuration 2026-05-10 20:56:43 +07:00
Nils Andreas Svee ab855338af test(proto): verify HMAC field placement in protocol packets 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 5831f4a3b5 test(proto): add unit tests for parameter encoding and decoding 2026-05-10 20:56:43 +07:00
Nils Andreas Svee cf65e88fa3 refactor(client): modularize duration restriction validation 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b1451742b4 feat(cli): implement continuous statistics and summary suppression 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b35bc50ca4 refactor(cli): enhance main loop and reply draining logic 2026-05-10 20:56:43 +07:00
Nils Andreas Svee ba5dd8abb5 feat(cli): add support for continuous mode with zero duration 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 9fd9ee2c3a refactor(client): improve session initialization and state access 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 54bb17ffd9 style(cli): rename machine output keys for clarity 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 4770d0d476 feat(cli): integrate StatsCollector into main execution loop 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 181b796e8d feat(cli): implement summary formatting for statistics 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 91a3e6f383 build(cli): add irtt-stats dependency and feature flag 2026-05-10 20:56:43 +07:00
Nils Andreas Svee f0121fa0fe feat(cli): add Human output mode and summary logic 2026-05-10 20:56:43 +07:00