Nils Andreas Svee
45da0c030e
feat: Add flexible boolean parsing for configuration
2026-04-22 16:55:05 +07:00
Nils Andreas Svee
33169182be
chore(deps): update rust-uci repository source
...
Switch the rust-uci dependency to the namib-project fork while maintaining the same revision to ensure availability and consistency with project requirements.
2026-04-22 15:11:16 +07:00
Nils Andreas Svee
2aea1bea86
chore(deps): switch rust-uci to git dependency
...
Update rust-uci to use a specific git revision from the upstream repository to incorporate latest changes not yet available in the published version.
2026-04-22 15:06:45 +07:00
Nils Andreas Svee
d0e3394f03
refactor: add ArcMutex/ArcRwLock type aliases
...
Replace repeated Arc> and Arc> with concise type aliases for readability.
2026-04-18 19:04:35 +02:00
Nils Andreas Svee
7c40990e93
chore(deps): switch netlink dependencies to upstream git and remove vendor patch
...
Replace the local vendored patch for netlink-socket2 with a direct reference to the upstream git repository to maintain the fix for musl targets.
This should be changed back to using a release once the fix has a published release
2026-04-18 15:41:02 +07:00
Nils Andreas Svee
11837195de
chore(deps): update rust dependencies
...
Update several crates including cc, cmake, fastrand, and quote to their latest versions to maintain up-to-date build tools and libraries.
2026-04-14 16:04:02 +07:00
Nils Andreas Svee
7b0eb942ea
fix(deps): patch netlink-socket2 to support musl targets
...
Vendor netlink-socket2 to resolve compilation failures caused by direct struct-literal initialization of libc types on musl.
2026-04-14 15:00:49 +07:00
Nils Andreas Svee
5daccecc1d
fix(deps): update rust crate netlink-bindings to 0.3
...
Adjust netlink and traffic control logic to accommodate breaking API changes, including shifts from method calls to direct field access.
2026-04-14 13:09:50 +07:00
Nils Andreas Svee
8739ed4419
fix(metrics): use AtomicU32 for drop counter to support MIPS targets
...
Also bumps version to 0.4.1.
2026-04-14 02:14:55 +07:00
Nils Andreas Svee
99e80c381d
build: bump package version to 0.4.0
2026-04-14 02:09:20 +07:00
Nils Andreas Svee
3c689b1d1e
feat(main): Orchestrate application shutdown and cleanup
2026-04-14 02:03:53 +07:00
Nils Andreas Svee
bda1a44b6e
feat(threads): Add graceful shutdown checks to worker loops
2026-04-14 02:03:53 +07:00
Nils Andreas Svee
6e4e6b85e9
feat(shutdown): Implement global shutdown signal handling
2026-04-14 02:03:53 +07:00
Nils Andreas Svee
f8976a78a2
feat(metrics): support arbitrary event tags and enhance monitoring coverage
...
Enable key-value metadata for events to track dry-run status and introduce new monitoring events for rate controller failure states.
2026-04-14 01:45:07 +07:00
Nils Andreas Svee
60e7ffc9e7
refactor(main): integrate MetricsSender across application entry point
2026-04-13 18:57:51 +07:00
Nils Andreas Svee
2db63e6159
refactor(reflector_selector): migrate to MetricsSender for event dispatch
2026-04-13 18:57:50 +07:00
Nils Andreas Svee
3095e32d41
refactor(ratecontroller): migrate to MetricsSender for metric dispatch
2026-04-13 18:57:50 +07:00
Nils Andreas Svee
57382465bf
refactor(pinger): migrate to MetricsSender for metric dispatch
2026-04-13 18:57:50 +07:00
Nils Andreas Svee
e9e233d98a
refactor(baseliner): migrate to MetricsSender for metric dispatch
2026-04-13 18:57:50 +07:00
Nils Andreas Svee
8036d27e6f
feat(metrics): track and report dropped metric counts
2026-04-13 18:57:50 +07:00
Nils Andreas Svee
451d42640b
refactor(metrics): encapsulate metric dispatch with MetricsSender
2026-04-13 18:57:50 +07:00
Nils Andreas Svee
b930a01fd6
feat(observability): emit a startup event metric to signal application initialization
...
Send a telemetry event when the process starts to provide better visibility into application lifecycle transitions.
2026-04-13 17:49:19 +07:00
Nils Andreas Svee
e7cbdbb265
docs(observability): document rationale for unbatched UDP metric flushing
...
Explain that individual metric delivery prevents data truncation caused by small UDP receive buffers on the remote host.
2026-04-13 17:36:30 +07:00
Nils Andreas Svee
1d7fd5800b
refactor(observability): initialize metrics collection earlier in the startup sequence
...
Move the metrics thread and error channel initialization before the settling period and peer setup to ensure early telemetry is captured.
2026-04-13 17:34:17 +07:00
Nils Andreas Svee
699c8782d9
fix(observability): send individual metrics over UDP to avoid packet size limits
...
Differentiate flushing logic between transport types to prevent UDP payload truncation while maintaining batched delivery for TCP.
2026-04-13 17:21:14 +07:00
Nils Andreas Svee
0f902e27a3
perf(observability): optimize metric flushing to reduce memory allocations
...
Use a pre-allocated buffer for metric serialization to improve efficiency when processing large batches.
2026-04-13 16:54:33 +07:00
Nils Andreas Svee
530a715bdf
fix(observability): refresh metric timestamps on each loop iteration
...
Move clock initialization inside processing loops to ensure exported metrics reflect the current time rather than a stale timestamp.
2026-04-13 16:32:30 +07:00
Nils Andreas Svee
dd8735f46e
chore(deps): update icmp-socket2 to 0.4.2
...
Update the icmp-socket2 dependency version in Cargo.toml and Cargo.lock to incorporate the latest upstream changes.
2026-04-13 16:23:20 +07:00
Nils Andreas Svee
72b4bc8dab
fix(observability): ensure all metric outputs are newline-terminated
...
Append trailing newlines to metric string formats to ensure consistent parsing and record separation by monitoring backends.
2026-04-13 15:43:09 +07:00
Nils Andreas Svee
757a715a54
chore: cleanup unused imports
2026-04-13 15:29:04 +07:00
Nils Andreas Svee
5af5b6597b
feat(observability): report reflector selection events and outcomes
...
Emit metrics detailing why a reflector reselection was triggered and which peers were selected to improve selection process visibility.
2026-04-13 15:28:56 +07:00
Nils Andreas Svee
d1ea0d0238
feat(observability): export rate and load metrics from rate controller
...
Send rates, load statistics, and delay deltas via the metrics channel to enable real-time monitoring of network performance.
2026-04-13 15:22:24 +07:00
Nils Andreas Svee
da3487e506
feat(observability): make metrics collection optional and granular
...
Wrap metrics senders in Option and conditionally initialize the monitoring thread to support granular configuration and reduced overhead.
2026-04-13 15:22:15 +07:00
Nils Andreas Svee
671e3f2671
refactor: standardize channel naming with tx and rx suffixes
...
Rename internal channel senders and receivers to follow standard Rust conventions for improved code consistency and readability.
2026-04-13 15:07:00 +07:00
Nils Andreas Svee
e5ba021a96
feat(observability): Pass metrics sender to rate controller and reflector selector
2026-04-13 15:01:46 +07:00
Nils Andreas Svee
2c1e7c0483
feat(observability): Export baseline statistics and events
2026-04-13 15:01:46 +07:00
Nils Andreas Svee
645ac08daa
feat(observability): Export ping related metrics
2026-04-13 15:01:46 +07:00
Nils Andreas Svee
1452409fe8
feat(observability): Integrate metrics exporter into main application flow
2026-04-13 15:01:46 +07:00
Nils Andreas Svee
44f551d38c
feat(observability): Add InfluxDB Line Protocol metrics module and config
2026-04-13 15:01:45 +07:00
Nils Andreas Svee
853f807e2c
feat: add metrics module for monitoring
...
Initialize the Metrics structure to receive and process ping statistics as part of the monitoring subsystem.
2026-04-13 12:11:05 +07:00
Nils Andreas Svee
f0fb3c9640
feat(monitoring): add dry-run mode to simulate qdisc rate changes
...
Enable a monitoring-only mode that logs intended bandwidth adjustments without applying them to the system via netlink.
2026-04-13 12:11:05 +07:00
Nils Andreas Svee
6d44556d63
style: reformat thread builder calls in main.rs
...
Standardize the formatting of thread spawning for the receiver and sender to improve code consistency and readability.
2026-04-13 12:06:50 +07:00
Nils Andreas Svee
8461d29788
build: bump version to 0.3.0
...
Update package version in Cargo.toml and Cargo.lock to reflect a new release.
2026-04-01 12:55:52 +07:00
Nils Andreas Svee
9c51853147
refactor: update imports to use icmp-socket2
2026-04-01 12:52:19 +07:00
Nils Andreas Svee
050291990a
build: migrate from icmp-socket to icmp-socket2
2026-04-01 12:52:19 +07:00
Nils Andreas Svee
cac3d75ccb
build: update dependencies and remove redundant windows targets
2026-04-01 12:52:18 +07:00
Nils Andreas Svee
c2a7c5dfdb
refactor(main): Optimize reflector list assignment
2026-02-22 17:05:06 +07:00
Nils Andreas Svee
a4a83222fe
refactor(ratectrl): Enhance stability and file handling
2026-02-22 17:05:01 +07:00
Nils Andreas Svee
c45351042e
fix(pinger): Improve robustness of pinger operations
2026-02-22 17:04:56 +07:00
Nils Andreas Svee
1a87372ffb
refactor(main): Centralize thread error handling
2026-02-22 16:58:01 +07:00
Nils Andreas Svee
c116dd3e74
refactor(sync): Replace unwrap with anyhow-based locking
2026-02-22 16:57:11 +07:00
Nils Andreas Svee
d4ad24ce4a
feat(util): Introduce Mutex/RwLock error handling traits
2026-02-22 16:57:02 +07:00
Nils Andreas Svee
8589a1c7dc
feat(ratecontrol): Fallback to min rates
2026-02-22 12:13:14 +07:00
Nils Andreas Svee
fa370b323b
feat(pinger): Configurable tick interval
2026-02-22 12:13:14 +07:00
Nils Andreas Svee
489e3f45f7
feat(config): Dynamic min rate calculation
2026-02-22 12:13:14 +07:00
Nils Andreas Svee
1357a23578
fix(reflector): Remove no-op 'len()' call
2026-02-22 12:13:14 +07:00
Nils Andreas Svee
5af42c4a22
refactor(ratecontrol): Rate calculation uses floor
2026-02-22 12:13:14 +07:00
Nils Andreas Svee
f2113fa11c
refactor(ratecontrol): Use custom Time for logging
2026-02-22 12:13:13 +07:00
Nils Andreas Svee
0990332f18
refactor(log): Use custom Time for timestamps
2026-02-22 12:13:13 +07:00
Nils Andreas Svee
eb88107bd0
chore(deps): Remove 'time' crate
2026-02-22 12:13:13 +07:00
Nils Andreas Svee
714a121113
feat(time): Add granular time getters
2026-02-22 12:13:01 +07:00
Nils Andreas Svee
830e21363a
refactor: replace rand crate with fastrand
...
Replaces the `rand` crate with `fastrand` for improved performance in rate control and reflector selection.
2026-02-22 00:33:57 +07:00
Nils Andreas Svee
616a3b1c70
fix(netlink): Improves error handling
...
Refactors error handling for interface and queue discipline operations to provide more informative error messages. This aids in debugging and user experience.
2026-02-21 23:21:32 +07:00
Nils Andreas Svee
986b649a37
feat(netlink): Refactors to use netlink-socket2
...
Migrates netlink implementation to use netlink-socket2 and netlink-bindings crates, replacing neli crate for improved socket handling. Removes unused dependencies.
2026-02-21 23:10:48 +07:00
Nils Andreas Svee
e2962222b7
fix: Improve error handling for reflector list loading
...
Improves error handling when the reflector list file is not found, providing more context about the failure.
2026-02-21 23:06:32 +07:00
Nils Andreas Svee
99a7928a66
style(reflector): Reorder imports and truncate vector
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
127ed692c3
refactor(reflector): Improve candidate selection loop
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
2aec477b89
refactor(ratecontroller): Simplify delta_stat logic
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
67bb185e28
refactor(main): Make reflector pool configurable
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
66a2834192
feat(reflector): Use configurable reselection time
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
a4b3e7406e
feat(config): Add peer reselection time
2026-02-21 22:42:20 +07:00
Nils Andreas Svee
2d21680f82
refactor(pinger): Simplifies imports
...
Simplifies imports by removing unused `IcmpPacketBuildError`.
2026-02-21 22:20:53 +07:00
Nils Andreas Svee
056288b0e8
fix(ratecontroller): correct generation of initial speeds
2026-02-21 22:20:30 +07:00
Nils Andreas Svee
6a49ad9112
Refactor(netlink): Replaces zerocopy with bytemuck
...
Migrates from `zerocopy` to `bytemuck` for improved data serialization and deserialization in netlink communication. This enhances maintainability.
2026-02-21 19:09:10 +07:00
Nils Andreas Svee
5838b0b9ee
refactor: replace bincode with zerocopy
...
Replaces bincode with zerocopy for deserialization of network data, improving performance and reducing dependencies.
2026-02-21 18:44:43 +07:00
Nils Andreas Svee
f3e7729f43
refactor: Removes redundant trait implementation
...
Removes the duplicate `WithTimestampRequest` trait implementation as it's now provided by the `icmp-socket` crate fork.
2026-02-21 17:25:25 +07:00
Nils Andreas Svee
f5d3776159
refactor: migrate ICMP handling to icmp-socket crate
2026-02-21 17:13:54 +07:00
Nils Andreas Svee
5f13511ee3
chore: removes Dockerfile
...
Removes the Dockerfile.
No longer needed for current build process.
2026-02-21 15:07:10 +07:00
Nils Andreas Svee
8a3dbcfd0b
ci: Archives target-specific binary
...
Ensures the pipeline archives the correct binary for each target architecture. Uses CARGO_BUILD_TARGET to locate and rename the binary before archiving.
2026-02-21 15:02:51 +07:00
Nils Andreas Svee
611998c5e9
fix(Jenkinsfile): Removes duplicate target
...
Removes a duplicate target from the Jenkinsfile. This ensures correct target specification during builds.
2026-02-21 15:02:43 +07:00
Nils Andreas Svee
83ee08052f
feat: Enables nightly toolchain support
...
Adds support for the nightly Rust toolchain, enabling the `build-std` feature when detected. This allows building with `panic=abort` for smaller binaries.
2026-02-21 14:45:32 +07:00
Nils Andreas Svee
9c11f2ed3f
ci: Configures cross-compilation for Rust
...
Configures the Rust build environment for cross-compilation within the CI pipeline by setting CARGO_HOME, adding local bin to PATH, and copying the linker configuration from the image. This ensures the build process uses the correct linker settings for the target architecture.
2026-02-21 14:08:24 +07:00
Nils Andreas Svee
cccd3a3966
ci: remove mold and debug statements
...
Removes mold integration and debug statements from the CI pipeline. This simplifies the build process and improves clarity by removing unnecessary tools and logs.
2026-02-21 13:57:47 +07:00
Nils Andreas Svee
d0ecf72566
ci: Adds compiler version checks
...
Adds compiler version checks to ensure correct toolchain setup for cross-compilation.
2026-02-21 13:42:25 +07:00
Nils Andreas Svee
07b74666ac
ci: Adds debug info to CI build
...
Adds `ls` command to inspect the contents of the musl toolchain directory for debugging purposes in the CI environment. This aids in diagnosing potential build issues related to toolchain availability.
2026-02-21 13:37:52 +07:00
Nils Andreas Svee
9d863b470f
chore: Configures mold linker for Linux
...
Configures the mold linker for Linux targets, excluding MIPS architectures due to incompatibility. This improves linking speed.
2026-02-21 13:30:05 +07:00
Nils Andreas Svee
684d137235
Move mold version check to after clang and gcc
2026-02-21 13:12:14 +07:00
Nils Andreas Svee
b3da435125
Add GCC version check to Jenkinsfile
2026-02-21 13:03:05 +07:00
Nils Andreas Svee
44ba412bd5
Update mold version in Jenkinsfile to 2.40.4
2026-02-21 12:46:34 +07:00
Nils Andreas Svee
c376880393
Update Jenkinsfile to always pull Docker image
2026-02-21 11:11:03 +07:00
Nils Andreas Svee
a427d4078b
chore(deps): Update rand and log imports
2026-02-21 00:22:57 +07:00
Nils Andreas Svee
ad84618b46
refactor(icmp): Remove ToNativeEndian usage
2026-02-21 00:22:57 +07:00
Nils Andreas Svee
55feeafc90
refactor(netlink): Migrate qdisc functions
2026-02-21 00:22:57 +07:00
Nils Andreas Svee
121e8cda40
refactor(netlink): Migrate interface functions
2026-02-21 00:22:57 +07:00
Nils Andreas Svee
ca1bc8f8b5
refactor(netlink): Migrate nl_interface_get
2026-02-21 00:22:57 +07:00
Nils Andreas Svee
200ec32201
refactor(deps): Update neli imports and error types
2026-02-21 00:22:57 +07:00
Nils Andreas Svee
40a84f5711
chore(deps): update dependencies to latest versions
2026-02-20 23:04:06 +07:00
Nils Andreas Svee
2b74caebcd
chore: remove dependabot configuration
...
Removes automated dependency update configuration
2026-02-20 22:59:29 +07:00
Nils Andreas Svee
9fb0e0cfe7
chore: update deps
2026-02-20 22:56:04 +07:00
Nils Andreas Svee
4670345caa
build: update rustix and dependencies
...
Update rustix to version 1.1 and refresh the Cargo lockfile to ensure compatibility with the latest transitive dependency versions.
2026-02-20 22:49:11 +07:00