Commit Graph
100 Commits
Author SHA1 Message Date
Nils Andreas Svee 08e404b8bd chore: upgrade ctrlc to version 3.5 2026-05-10 17:56:36 +07:00
Nils Andreas Svee 325e412d95 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-08 18:27:39 +07:00
Nils Andreas Svee 445b64ad66 build: centralize internal dependencies using workspace inheritance 2026-05-08 14:56:30 +07:00
Nils Andreas Svee d190a710fa chore: add license 2026-05-08 14:22:15 +07:00
Nils Andreas Svee c456fa1f09 docs: add README with project overview and usage examples 2026-05-08 14:22:02 +07:00
Nils Andreas Svee 7e6617e506 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-08 13:52:54 +07:00
Nils Andreas Svee 0c1ee79afc feat(cli): quiet default human output 2026-05-08 13:16:07 +07:00
Nils Andreas Svee e971e95693 feat(cli): format human summary as aligned table 2026-05-08 13:02:11 +07:00
Nils Andreas Svee 8809ea04ab feat(cli): improve human event output 2026-05-08 13:02:01 +07:00
Nils Andreas Svee fd0048c761 feat(stats): expose per-event jitter updates 2026-05-08 13:01:44 +07:00
Nils Andreas Svee 8cba83e5d0 chore(workflow): add build workflow 2026-05-08 12:55:40 +07:00
Nils Andreas Svee 9818d10355 docs(proto): document HMAC-MD5 compatibility 2026-05-08 12:20:30 +07:00
Nils Andreas Svee b3c3970c53 fix(client): avoid lossy timing casts 2026-05-08 12:19:52 +07:00
Nils Andreas Svee 8c021f394d fix(client): handle close-flagged echo replies 2026-05-08 11:31:45 +07:00
Nils Andreas Svee e2a98f571b fix(proto): require exact echo reply packet length 2026-05-08 11:25:52 +07:00
Nils Andreas Svee 20e6286277 fix(client): report counter overflows clearly 2026-05-08 10:47:14 +07:00
Nils Andreas Svee 846c4bf3a5 test(client): cover timing validation boundaries 2026-05-08 10:23:49 +07:00
Nils Andreas Svee 2a780337f2 fix(client): reject invalid timing parameters earlier 2026-05-08 10:23:42 +07:00
Nils Andreas Svee b994fb9273 fix(client): reject runtime-invalid negotiated dscp 2026-05-08 10:06:00 +07:00
Nils Andreas Svee fbb345cdf6 fix(proto): reject invalid echo packet lengths 2026-05-08 09:58:31 +07:00
Nils Andreas Svee e4ebf1f11b fix(proto): reject oversized echo payloads 2026-05-08 00:48:59 +07:00
Nils Andreas Svee 8eb3d6c5fb perf(proto): compute HMAC without packet allocation 2026-05-08 00:46:31 +07:00
Nils Andreas Svee fedb478ad6 perf(client): reuse receive buffer 2026-05-07 23:40:12 +07:00
Nils Andreas Svee 3c0d4f35c4 chore(client): polish managed runner ergonomics 2026-05-07 23:01:55 +07:00
Nils Andreas Svee 4df9b295f9 docs(client): document optional real backend tests 2026-05-07 22:27:07 +07:00
Nils Andreas Svee 057fcecf7e fix(client): retry real backend startup on port races 2026-05-07 22:17:31 +07:00
Nils Andreas Svee cd6dacbb5c feat(cli): handle interrupt as graceful shutdown 2026-05-07 22:08:41 +07:00
Nils Andreas Svee ddf2b5426c docs(client): mark advanced networking cleanup complete 2026-05-07 21:25:51 +07:00
Nils Andreas Svee 7017071949 fix(client): report read-timeout restore failures 2026-05-07 21:25:51 +07:00
Nils Andreas Svee 658a4375ec fix(client): clarify duration negotiation rejection 2026-05-07 21:25:51 +07:00
Nils Andreas Svee 4f1f033c02 fix(proto): avoid mutating flags in HMAC helper 2026-05-07 21:25:51 +07:00
Nils Andreas Svee b5f1d8d438 fix(client): check probe scheduling arithmetic 2026-05-07 21:25:51 +07:00
Nils Andreas Svee 4cd0201c50 fix(client): handle sequence wrap in reply ordering 2026-05-07 21:25:51 +07:00
Nils Andreas Svee 1f167071fb fix(client): reject invalid negotiated packet length 2026-05-07 21:25:51 +07:00
Nils Andreas Svee e479d51dc3 fix(client): validate packet length configuration 2026-05-07 21:25:51 +07:00
Nils Andreas Svee 2ed0677286 fix(client): harden ancillary receive parsing 2026-05-07 20:34:34 +07:00
Nils Andreas Svee 49321ba8b7 fix(client): harden ancillary control message parsing 2026-05-07 19:02:38 +07:00
Nils Andreas Svee afb97da196 feat(cli): expose kernel receive timestamp in machine output 2026-05-07 18:51:41 +07:00
Nils Andreas Svee 1e706dfefd feat(client): add Linux kernel receive timestamp metadata 2026-05-07 18:51:06 +07:00
Nils Andreas Svee f35b8fea95 feat(cli): expose receive metadata in machine output 2026-05-07 18:40:38 +07:00
Nils Andreas Svee ec847bb1d4 test(client): cover receive metadata on reply events 2026-05-07 18:30:04 +07:00
Nils Andreas Svee fb1d7bc7a0 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-07 18:24:14 +07:00
Nils Andreas Svee 6eb7ff2920 feat(client): add Linux ancillary receive metadata 2026-05-07 17:58:40 +07:00
Nils Andreas Svee 97d61371cb feat(client): add receive datagram abstraction 2026-05-07 17:35:54 +07:00
Nils Andreas Svee 168beffec1 feat(client): add receive metadata scaffold 2026-05-07 17:15:08 +07:00
Nils Andreas Svee ae699c4ef2 test: refactor real backend support for reliable output capture 2026-05-05 00:58:22 +07:00
Nils Andreas Svee 8625672f85 test: make IPv6 socket option tests more robust 2026-05-05 00:58:22 +07:00
Nils Andreas Svee 4dd6c11936 feat(cli): improve cli help text and unit test naming 2026-05-05 00:58:22 +07:00
Nils Andreas Svee 88ab7ca3b6 chore: remove unused interop feature flag 2026-05-05 00:58:22 +07:00
Nils Andreas Svee 5139882c10 docs: update implementation plan regarding DSCP and testing strategy 2026-05-05 00:58:22 +07:00
Nils Andreas Svee 8c8a679533 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-05 00:45:56 +07:00
Nils Andreas Svee 5132e0e247 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-05 00:32:12 +07:00
Nils Andreas Svee 31e7066e81 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-05 00:18:34 +07:00
Nils Andreas Svee 36ca426ff5 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-05 00:04:12 +07:00
Nils Andreas Svee 0262a2af0c 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-04 17:16:23 +07:00
Nils Andreas Svee a715842e38 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-04 00:05:35 +07:00
Nils Andreas Svee 56b560418c 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-03 23:06:26 +07:00
Nils Andreas Svee 86f16b8656 test(client): split client tests into behavior-focused modules 2026-05-03 22:54:08 +07:00
Nils Andreas Svee 746ea3805b refactor(client): move internal client tests to a dedicated sub-module 2026-05-03 22:25:35 +07:00
Nils Andreas Svee bf5b3b2f55 refactor(cli): rename m8 compatibility terms to advanced protocol options 2026-05-03 22:25:35 +07:00
Nils Andreas Svee 8ee308a2b4 test(cli): consolidate invalid argument parsing tests 2026-05-03 22:25:25 +07:00
Nils Andreas Svee 49dbb0b536 test: verify RTT equality when no timestamping is present 2026-05-03 21:30:23 +07:00
Nils Andreas Svee dff201de89 refactor(test): extract RTT processing verification to helper function 2026-05-03 21:30:23 +07:00
Nils Andreas Svee c506d5a7f7 test: update mock timestamp simulation in test support 2026-05-03 21:30:23 +07:00
Nils Andreas Svee 7440e7d217 test(client): add integration tests for m8 compatibility 2026-05-03 21:26:55 +07:00
Nils Andreas Svee 18c6e2c1a9 test(cli): expand test coverage for new CLI parameters 2026-05-03 16:12:10 +07:00
Nils Andreas Svee 5af3f891fc feat(cli): add advanced negotiation and protocol options 2026-05-03 16:12:10 +07:00
Nils Andreas Svee 64df93dbb6 feat(cli): add support for midpoint timestamps and received stats 2026-05-03 16:12:10 +07:00
Nils Andreas Svee 8c9afce30f feat(client): implement protocol configuration validation 2026-05-03 16:12:10 +07:00
Nils Andreas Svee 474aefb723 feat(client): define constants and validation for DSCP and server fill 2026-05-03 16:12:10 +07:00
Nils Andreas Svee c2138fe356 test(client): validate parameter mapping from configuration 2026-05-03 15:34:04 +07:00
Nils Andreas Svee 70df9d63f1 test(proto): verify HMAC field placement in protocol packets 2026-05-03 15:34:04 +07:00
Nils Andreas Svee 3c4a77b9f6 test(proto): add unit tests for parameter encoding and decoding 2026-05-03 15:34:04 +07:00
Nils Andreas Svee 7b3deb1f3c refactor(client): modularize duration restriction validation 2026-05-03 15:34:04 +07:00
Nils Andreas Svee 59194b620a feat(cli): implement continuous statistics and summary suppression 2026-05-02 00:01:31 +07:00
Nils Andreas Svee d79c8716a0 refactor(cli): enhance main loop and reply draining logic 2026-05-02 00:01:31 +07:00
Nils Andreas Svee 36c36f3872 feat(cli): add support for continuous mode with zero duration 2026-05-02 00:01:31 +07:00
Nils Andreas Svee 851d143f86 refactor(client): improve session initialization and state access 2026-05-02 00:01:31 +07:00
Nils Andreas Svee e63b176265 style(cli): rename machine output keys for clarity 2026-05-02 00:01:31 +07:00
Nils Andreas Svee a26e1a6d59 feat(cli): integrate StatsCollector into main execution loop 2026-05-01 22:11:47 +07:00
Nils Andreas Svee 815dab077d feat(cli): implement summary formatting for statistics 2026-05-01 22:11:47 +07:00
Nils Andreas Svee 17d9ed9e3a build(cli): add irtt-stats dependency and feature flag 2026-05-01 22:11:47 +07:00
Nils Andreas Svee 07b3d2d822 feat(cli): add Human output mode and summary logic 2026-05-01 22:11:47 +07:00
Nils Andreas Svee 64e7117a12 feat(client): drain late replies before closing session 2026-05-01 18:24:54 +07:00
Nils Andreas Svee 4604dd8786 feat(stats): bound sequence tracking in continuous mode 2026-05-01 18:24:54 +07:00
Nils Andreas Svee a73a4ff341 fix(client): prune insertion order in TimedOutMap on removal 2026-05-01 18:24:54 +07:00
Nils Andreas Svee 96bd041680 build(stats): add irtt-client dependency to irtt-stats 2026-05-01 18:08:21 +07:00
Nils Andreas Svee 198a929ed6 feat(stats): implement core statistics collection and aggregation 2026-05-01 18:07:54 +07:00
Nils Andreas Svee cf519bd630 feat(client): emit EchoSent event with scheduling metadata 2026-05-01 10:05:52 +07:00
Nils Andreas Svee bcbc0ec164 feat(client): track and handle late replies after timeout 2026-05-01 10:05:52 +07:00
Nils Andreas Svee e2be6cadac feat(client): implement SignedDuration for precise RTT tracking 2026-05-01 10:05:52 +07:00
Nils Andreas Svee 18f15f16d5 feat(client): record and report packet size in client events 2026-05-01 10:05:43 +07:00
Nils Andreas Svee c23db87d7c docs: add IRTT statistics behavioral specification
Define a clean-room specification for IRTT client result semantics to ensure upstream compatibility for irtt-rs.
2026-04-30 00:30:14 +07:00
Nils Andreas Svee 63f01f65bf refactor(managed): ensure event hub disconnection on all exit paths
Wrap the client execution in a cleanup handler to guarantee that event hub subscriptions are disconnected regardless of whether the session completes successfully or returns an error.
2026-04-29 10:36:16 +07:00
Nils Andreas Svee ddb2fff7c8 test(managed): improve test reliability and coverage 2026-04-29 01:14:36 +07:00
Nils Andreas Svee bb7ba20906 feat(managed): implement automatic cancellation on session drop 2026-04-29 01:14:36 +07:00
Nils Andreas Svee a925dc61f0 feat(managed): automatically unregister dropped event subscriptions 2026-04-29 01:14:36 +07:00
Nils Andreas Svee e04caaca8d refactor(managed): rename malformed events to warning_events 2026-04-29 01:14:36 +07:00
Nils Andreas Svee 4cd6da01b6 feat(managed): export managed client modules 2026-04-28 23:34:34 +07:00
Nils Andreas Svee 1f6ce97c3a feat(managed): implement managed client runner 2026-04-28 23:34:34 +07:00