Nils Andreas Svee
05f9732760
refactor(irtt-stats): rename median mode to sample mode
2026-05-13 12:58:13 +07:00
Nils Andreas Svee
ce4b3c37ab
fix(irtt-stats): keep RTT IPDV independent from directional timing
2026-05-13 12:57:10 +07:00
Nils Andreas Svee
f05b7cceb2
refactor(irtt-stats): improve duration safety by handling negative time offsets
2026-05-13 12:44:35 +07:00
Nils Andreas Svee
0a66f6fb49
refactor(irtt-stats): remove unused push_duration helper
2026-05-13 12:36:51 +07:00
Nils Andreas Svee
5138dee29f
refactor(irtt-stats): unify duration statistics into a single TimeStats type
...
Simplify the statistics model by merging signed and unsigned duration types into a single structure that uses i128 to consistently handle both positive and negative time offsets.
2026-05-13 12:32:47 +07:00
Nils Andreas Svee
542e67bf74
refactor(irtt-stats): consolidate snapshot types and rename summary to snapshot
2026-05-13 12:21:51 +07:00
Nils Andreas Svee
197903fb8e
test(irtt-stats): rename internal date-time helper and update test case name
...
Rename system_time_ns to unix_time_ns_after_epoch for better clarity on output behavior and update a continuous mode test case name to more accurately reflect its purpose.
2026-05-13 12:07:51 +07:00
Nils Andreas Svee
adfe8e7a6b
test(irtt-stats): move integration tests to dedicated test module
2026-05-13 11:59:06 +07:00
Nils Andreas Svee
72470bd196
test(client): update and expand DSCP negotiation test coverage
2026-05-13 00:37:54 +07:00
Nils Andreas Svee
fec14b2c7c
feat(session): restrict DSCP negotiation to allow only disabling (reset to 0)
2026-05-13 00:37:53 +07:00
Nils Andreas Svee
3dfca1ab5e
refactor(session): implement Display and add documentation for NegotiationRestriction
2026-05-13 00:37:45 +07:00
Nils Andreas Svee
cbe91f2fe0
feat(client): track and report specific negotiation restrictions
...
Replace basic validation with a detailed negotiation process that records specific parameter changes. This allows the client to provide better feedback when a server restricts requested session parameters like duration or DSCP.
2026-05-12 15:18:02 +07:00
Nils Andreas Svee
a7e10358fd
test(client): use fallible packet length helpers in integration tests
2026-05-12 13:05:45 +07:00
Nils Andreas Svee
4549d95d0a
test(client): update test helpers to handle fallible packet length calculations
2026-05-12 13:05:45 +07:00
Nils Andreas Svee
1b79c864d4
refactor(client): propagate ProtoError from recv_buffer_size calculation
2026-05-12 13:05:45 +07:00
Nils Andreas Svee
20a1d9dc8e
refactor(proto): make echo_packet_len return Result to handle negative lengths
2026-05-12 13:05:45 +07:00
Nils Andreas Svee
b508a94198
build: bump version to 0.2.0
2026-05-11 15:11:58 +07:00
Nils Andreas Svee
4ed09e2209
ci: add cargo-dist for automated release management
...
Introduce cargo-dist workflows and configuration to automate binary building and GitHub Release creation across multiple platforms.
2026-05-11 15:10:15 +07:00
Nils Andreas Svee
e2a9d68843
ci: add actions read permission to OSV-Scanner workflow
...
Grant necessary read access to actions to ensure the vulnerability scanner can evaluate the execution environment.
2026-05-11 15:01:05 +07:00
Nils Andreas Svee
7ad83ca1f6
refactor: remove logical_seq from client events, session tracking and stats usage
...
It was an attempt at handling integer wraparound more cleanly keeping in mind that we have a continuous mode,
and so we can more easily reach seq > u32::MAX
However after running the numbers, if we run with a interval of 10ms, it's still gonna take ~497 days before we hit integer overflow, so for now it doesn't seem worth to have this extra logic to handle something that'll in 99.9% of cases be purely an edge case
Keeping in mind autorate usage, in sqm-autorate-rust each send loop is 500 ms by default, and the sleep is then 500 ms / 5 reflectors, so our interval is 100 ms. that means it'll take 4970 days or ~13.6 years to reach the limit. Not worth dealing with IMO
2026-05-11 14:56:07 +07:00
Nils Andreas Svee
8ef53c999a
build: optimize release profile for binary size and performance
...
Enable LTO, single codegen units, and symbol stripping to reduce binary footprint and improve execution efficiency.
2026-05-11 13:27:50 +07:00
Nils Andreas Svee
21bc7805f7
refactor: mark public enums as non-exhaustive to improve API stability
...
Apply the #[non-exhaustive] attribute to ClientError and WarningKind to prevent breaking changes when adding new variants. Handle the catch-all case in the CLI formatter.
2026-05-11 12:33:40 +07:00
Nils Andreas Svee
8d1d0f50de
style(client): reformat imports in test files
...
Collapse multi-line import statements into single lines to improve code legibility and maintain consistent formatting across test suites.
2026-05-11 10:13:06 +07:00
Nils Andreas Svee
d6c6e60742
refactor(client): expose len methods for map structures
2026-05-11 10:10:24 +07:00
Nils Andreas Svee
1cdd100473
refactor(irtt-stats): remove redundant process_with_update method
...
Simplify the StatsCollector API by removing an unnecessary indirection that performed the same logic as the main process method.
2026-05-11 10:09:13 +07:00
Nils Andreas Svee
80fda92231
fix(irtt-stats): use event timestamp for warnings instead of current time
...
Ensure warning statistics reflect the actual time the event occurred rather than the moment the event was processed.
2026-05-11 09:55:11 +07:00
Nils Andreas Svee
5f6bff5dcb
feat(client): add timestamp to ClientEvent::Warning
...
Include a timestamp when reporting warnings to allow consumers like the machine-readable formatter to provide temporal context for troubleshooting.
2026-05-11 09:50:16 +07:00
Nils Andreas Svee
1a04f44bb5
refactor(client): remove redundant timestamp parameter from poll_timeouts
...
Use internal monotonic time by default and introduce poll_timeouts_at for callers requiring a specific sampled Instant. This simplifies the API for standard usage while maintaining flexibility for external event loops.
2026-05-11 09:33:55 +07:00
Nils Andreas Svee
d8b580a19c
refactor(client): remove redundant timestamp parameter from close method
2026-05-10 23:47:46 +07:00
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