Commit Graph
73 Commits
Author SHA1 Message Date
Nils Andreas Svee a6478c9bd4 feat(uci): derive UCI schema from settings
Add uci-derive proc-macro crate with UciConfig and UciSection derive
macros that generate UCI schema metadata from Settings structs. The
schema maps UCI section types and option names to config-rs field
paths. UciSource::from_schema() creates a source from the derived
schema, mapping known UCI options to their Settings fields while
preserving unknown options under raw UCI-derived paths.
2026-08-07 16:04:59 +07:00
Nils Andreas Svee f51d90bff6 feat(settings): parse reflector lists with CSV
Add CSV-based reflector list parsing with Serde reflector records.
The load_reflectors method reads a CSV file with reflector_ip,
ip_version, and description columns, validating IP version
consistency for each entry.
2026-08-07 16:04:59 +07:00
Nils Andreas Svee af07915441 build(uci): enable vendored UCI builds and Unix development support
Switch rust-uci dependency to the Lochnair fork with vendored UCI
feature for self-contained builds without system libuci. Add
uci-vendored feature flag (enabled by default) that pulls in the
vendored C library. UCI support on non-Linux Unix is intended for
development and testing.
2026-08-07 16:04:59 +07:00
Nils Andreas Svee 39add2b2e0 feat(uci): add generalized UCI configuration source
Introduce the UciSource abstraction as a config-rs Source that reads
UCI packages and maps them into the configuration tree. Supports
package selection, required/optional behavior, and custom config/save
directories. Move rust-uci dependency to cfg(unix) to enable UCI
support on all Unix systems for development and testing, while
Linux/OpenWrt remains the production-supported platform.
2026-08-07 16:04:59 +07:00
Nils Andreas Svee c0a50c68f9 feat(config): add config-rs settings support
Introduce config-rs and Serde support with a nested Settings model.
Add config and serde dependencies with toml feature for file-based
configuration loading. The Settings struct provides typed configuration
with sensible defaults for network, output, observability, and advanced
settings sections. Environment variable override via SQMA__ prefix is
supported. The legacy Config remains in use; migration follows later.
2026-08-07 16:04:58 +07:00
renovate[bot] bc86a2cd53 fix(deps): update rust crate icmp-socket2 to 0.6.0 2026-07-29 10:04:32 +00:00
renovate[bot] c6338b596e chore(deps): update rust crate libc to v0.2.189 2026-07-24 00:05:41 +07:00
Nils Andreas Svee dc4ce1159f chore(deps): update rust crate dependencies 2026-07-24 00:05:41 +07:00
Nils Andreas Svee 288d1afdb9 chore(deps): switch netlink dependencies from git to crates.io 2026-07-24 00:05:41 +07:00
renovate[bot] bf0027a0b3 chore(deps): update rust crate thiserror to v2.0.19 2026-07-24 00:05:40 +07:00
renovate[bot] 49b700d4b2 chore(deps): update rust crate libc to v0.2.187 2026-07-24 00:05:40 +07:00
renovate[bot] f6fa7b8814 fix(deps): update netlink-socket2 digest to 928e9ca 2026-07-24 00:05:40 +07:00
renovate[bot] cd160e67fe fix(deps): update netlink-bindings digest to 928e9ca 2026-07-24 00:05:40 +07:00
renovate[bot] bab8278bdd chore(deps): update rust crate fastrand to v2.5.0 2026-07-24 00:05:40 +07:00
renovate[bot] c9cecb6945 chore(deps): update rust crate anyhow to v1.0.104 2026-07-24 00:05:40 +07:00
Nils Andreas Svee b07dc99bf5 fix(deps): update rust crate icmp-socket2 to 0.5.1 2026-07-17 13:07:30 +07:00
Nils Andreas Svee 694cad1fac chore(deps): update wasm and web-related dependencies 2026-07-03 00:50:00 +07:00
Nils Andreas Svee 908fbfdf04 refactor(deps): cleanup netlink-bindings and shlex dependencies 2026-07-03 00:50:00 +07:00
Nils Andreas Svee 2dacde8a3f chore(deps): update cargo dependencies 2026-07-03 00:50:00 +07:00
renovate[bot] 371b3efcdc chore(deps): update rust crate anyhow to v1.0.103 2026-07-03 00:47:45 +07:00
renovate[bot] 81d6ebe3a8 chore(deps): update rust crate log to v0.4.33 2026-07-03 00:47:45 +07:00
renovate[bot] ae3cd96313 fix(deps): update netlink-socket2 digest to 0b609e9 2026-07-03 00:47:45 +07:00
renovate[bot] 3d1c14d312 fix(deps): update netlink-bindings digest to 0b609e9 2026-07-03 00:46:39 +07:00
renovate[bot] 7955046426 fix(deps): update rust-uci digest to 3e7b615 2026-07-03 00:46:39 +07:00
renovate[bot] f3f033cf0f chore(deps): update rust crate libc to v0.2.186 2026-07-03 00:46:39 +07:00
Nils Andreas Svee 58d536bb22 refactor(pinger): replace hashlru with standard HashMap and manual TTL cleanup
Remove the hashlru dependency to reduce bloat, replacing it with a Mutex-wrapped HashMap and manual entry expiration logic.
2026-04-23 00:33:07 +07:00
Nils Andreas Svee 6f16f3a93c build(deps): disable default features for hashlru to reduce dependency bloat
Remove unused dependencies including ahash, hashbrown, and zerocopy by disabling default features for hashlru.
2026-04-23 00:19:00 +07:00
Nils Andreas Svee 7250050f63 feat(deps): Add hashlru for in-flight probe caching 2026-04-23 00:16:19 +07:00
Nils Andreas Svee 3322e82b6c refactor: replace std::sync::mpsc with flume for improved channel performance
Migrate internal message passing to flume to leverage better performance and additional features like eventual fairness and selection.
2026-04-22 22:39:06 +07:00
Nils Andreas Svee 6690402a34 chore(deps): update dependencies and switch rust-uci to git revision
Update bindgen, nom, and other core dependencies while switching rust-uci and libuci-sys to a specific git revision to ensure compatibility with recent project changes.
2026-04-22 16:55:46 +07: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
renovate[bot] 706d93f146 chore(deps): update rust crate libc to v0.2.185 2026-04-14 16:00:57 +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
renovate[bot] 2c336799b8 fix(deps): update rust crate netlink-socket2 to 0.3 2026-04-14 12:07:32 +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 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 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 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
renovate[bot] 7d833ecff8 chore(deps): update rust crate rustix to v1.1.4 2026-02-22 17:37:16 +00:00
Nils Andreas Svee eb88107bd0 chore(deps): Remove 'time' crate 2026-02-22 12:13:13 +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 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 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 f5d3776159 refactor: migrate ICMP handling to icmp-socket crate 2026-02-21 17:13:54 +07:00
Nils Andreas Svee 40a84f5711 chore(deps): update dependencies to latest versions 2026-02-20 23:04:06 +07:00