Compare commits

..
28 Commits
Author SHA1 Message Date
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
renovate[bot] e6a296baf4 chore(deps): pin dependencies 2026-05-10 20:56:43 +07:00
renovate[bot] 14be5cd836 chore(deps): update github actions to v2 2026-05-10 20:56:43 +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
renovate[bot] d4225f38fe chore(deps): update github actions to v6 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
renovate[bot] 80255f1fff fix(deps): update rust crate clap to 4.6.1 2026-05-10 20:56:43 +07:00
renovate[bot] 3eaaeee408 fix(deps): update socket dependencies 2026-05-10 20:56:43 +07:00
renovate[bot] f474632f4c fix(deps): update rust crate thiserror to 2.0.18 2026-05-10 20:56:43 +07:00
renovate[bot] ababa9d6b6 fix(deps): update rust crate subtle to 2.6.1 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
renovate[bot] 7e17f063ea chore: configure renovate 2026-05-10 20:56:43 +07:00
18 changed files with 635 additions and 157 deletions

No files matched your search

+52
View File
@@ -0,0 +1,52 @@
name: GitHub Actions Security
on:
push:
branches:
- main
pull_request:
branches:
- main
merge_group:
schedule:
- cron: "11 3 * * 1"
workflow_dispatch:
permissions:
contents: read
jobs:
actionlint:
name: actionlint
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Run actionlint
uses: raven-actions/actionlint@205b530c5d9fa8f44ae9ed59f341a0db994aa6f8 # v2
zizmor:
name: zizmor
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
actions: read
security-events: write
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Run zizmor
uses: zizmorcore/zizmor-action@b1d7e1fb5de872772f31590499237e7cce841e8e # v0.5.3
with:
persona: regular
-21
View File
@@ -1,21 +0,0 @@
name: Build and Test
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: cargo build --verbose
- name: Run tests
run: cargo test --verbose
+115
View File
@@ -0,0 +1,115 @@
name: Rust CI
on:
push:
branches:
- main
pull_request:
branches:
- main
merge_group:
workflow_dispatch:
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
fmt:
name: cargo fmt
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1
with:
components: rustfmt
cache-key: fmt
- name: Check formatting
uses: actions-rust-lang/rustfmt@4066006ec54a31931b9b1fddfd38f2fdf2d27143 # v1
clippy:
name: cargo clippy
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1
with:
components: clippy
cache-key: clippy
- name: Run clippy
run: |
cargo clippy \
--workspace \
--all-targets \
--all-features \
--locked \
-- -D warnings
test:
name: cargo test
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1
with:
cache-key: test
- name: Run tests
run: |
cargo test \
--workspace \
--all-targets \
--all-features \
--locked
docs:
name: cargo doc
runs-on: ubuntu-latest
timeout-minutes: 20
env:
RUSTDOCFLAGS: "-D warnings"
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1
with:
cache-key: docs
- name: Check docs
run: |
cargo doc \
--workspace \
--all-features \
--no-deps \
--locked
+48
View File
@@ -0,0 +1,48 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# A sample workflow which sets up periodic OSV-Scanner scanning for vulnerabilities,
# in addition to a PR check which fails if new vulnerabilities are introduced.
#
# For more examples and options, including how to ignore specific vulnerabilities,
# see https://google.github.io/osv-scanner/github-action/
name: OSV-Scanner
on:
pull_request:
branches: [ "main" ]
merge_group:
branches: [ "main" ]
schedule:
- cron: '45 8 * * 1'
push:
branches: [ "main" ]
permissions:
# Require writing security events to upload SARIF file to security tab
security-events: write
# Read commit contents
contents: read
jobs:
scan-scheduled:
if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }}
uses: "google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@c51854704019a247608d928f370c98740469d4b5" # v2.3.5
with:
# Example of specifying custom arguments
scan-args: |-
-r
--skip-git
./
scan-pr:
if: ${{ github.event_name == 'pull_request' || github.event_name == 'merge_group' }}
uses: "google/osv-scanner-action/.github/workflows/osv-scanner-reusable-pr.yml@c51854704019a247608d928f370c98740469d4b5" # v2.3.5
with:
# Example of specifying custom arguments
scan-args: |-
-r
--skip-git
./
+72
View File
@@ -0,0 +1,72 @@
name: Clippy SARIF
on:
push:
branches:
- main
schedule:
- cron: "17 12 * * 4"
workflow_dispatch:
permissions:
contents: read
security-events: write
actions: read
env:
CARGO_TERM_COLOR: always
jobs:
clippy-sarif:
name: Clippy SARIF
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1
with:
components: clippy
cache-key: clippy-sarif
- name: Install SARIF tools
run: |
cargo install --locked clippy-sarif sarif-fmt
- name: Run Clippy and generate SARIF
id: clippy
shell: bash
run: |
set +e
cargo clippy \
--workspace \
--all-targets \
--all-features \
--locked \
--message-format=json \
| clippy-sarif \
| tee rust-clippy-results.sarif \
| sarif-fmt
clippy_status=${PIPESTATUS[0]}
echo "exit_code=${clippy_status}" >> "$GITHUB_OUTPUT"
exit 0
- name: Upload Clippy SARIF
uses: github/codeql-action/upload-sarif@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4
if: always()
with:
sarif_file: rust-clippy-results.sarif
category: clippy
wait-for-processing: true
- name: Fail if Clippy failed
if: steps.clippy.outputs.exit_code != '0'
run: exit 1
+27
View File
@@ -0,0 +1,27 @@
name: Semver
on:
workflow_dispatch:
push:
tags:
- "v*.*.*"
permissions:
contents: read
jobs:
semver:
name: cargo-semver-checks
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Check semver compatibility
uses: obi1kenobi/cargo-semver-checks-action@6b69fcf40e9b5fb17adeb57e4b6ecd020649a239 # v2
with:
feature-group: all-features
+64
View File
@@ -0,0 +1,64 @@
name: Supply chain
on:
push:
branches:
- main
pull_request:
branches:
- main
merge_group:
schedule:
- cron: "41 2 * * 1"
workflow_dispatch:
permissions:
contents: read
jobs:
cargo-deny:
name: cargo-deny ${{ matrix.checks }}
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
include:
# Advisories can appear after code was merged. Keep this visible,
# but don't let a surprise upstream advisory nuke every unrelated PR.
- checks: advisories
continue-on-error: true
# These are policy choices in this repo. They should block PRs.
- checks: bans licenses sources
continue-on-error: false
continue-on-error: ${{ matrix.continue-on-error }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Run cargo-deny
uses: EmbarkStudios/cargo-deny-action@91bf2b620e09e18d6eb78b92e7861937469acedb # v2
with:
command: check
arguments: --all-features
command-arguments: ${{ matrix.checks }}
actionlint:
name: actionlint
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Run actionlint
uses: raven-actions/actionlint@205b530c5d9fa8f44ae9ed59f341a0db994aa6f8 # v2
Generated
+55 -114
View File
@@ -38,7 +38,7 @@ version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
dependencies = [
"windows-sys 0.61.2",
"windows-sys",
]
[[package]]
@@ -49,7 +49,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
dependencies = [
"anstyle",
"once_cell_polyfill",
"windows-sys 0.61.2",
"windows-sys",
]
[[package]]
@@ -60,11 +60,11 @@ checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
[[package]]
name = "block-buffer"
version = "0.10.4"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be"
dependencies = [
"generic-array",
"hybrid-array",
]
[[package]]
@@ -128,6 +128,12 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
[[package]]
name = "cmov"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746"
[[package]]
name = "colorchoice"
version = "1.0.5"
@@ -135,13 +141,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
[[package]]
name = "crypto-common"
version = "0.1.7"
name = "const-oid"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
[[package]]
name = "crypto-common"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710"
dependencies = [
"generic-array",
"typenum",
"hybrid-array",
]
[[package]]
@@ -152,18 +163,28 @@ checksum = "e0b1fab2ae45819af2d0731d60f2afe17227ebb1a1538a236da84c93e9a60162"
dependencies = [
"dispatch2",
"nix",
"windows-sys 0.61.2",
"windows-sys",
]
[[package]]
name = "ctutils"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e"
dependencies = [
"cmov",
]
[[package]]
name = "digest"
version = "0.10.7"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
dependencies = [
"block-buffer",
"const-oid",
"crypto-common",
"subtle",
"ctutils",
]
[[package]]
@@ -178,16 +199,6 @@ dependencies = [
"objc2",
]
[[package]]
name = "generic-array"
version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
dependencies = [
"typenum",
"version_check",
]
[[package]]
name = "heck"
version = "0.5.0"
@@ -196,16 +207,25 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hmac"
version = "0.12.1"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f"
dependencies = [
"digest",
]
[[package]]
name = "hybrid-array"
version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da"
dependencies = [
"typenum",
]
[[package]]
name = "irtt-cli"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"clap",
"ctrlc",
@@ -216,7 +236,7 @@ dependencies = [
[[package]]
name = "irtt-client"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"irtt-proto",
"libc",
@@ -226,7 +246,7 @@ dependencies = [
[[package]]
name = "irtt-proto"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"hmac",
"md-5",
@@ -236,7 +256,7 @@ dependencies = [
[[package]]
name = "irtt-stats"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"irtt-client",
]
@@ -255,9 +275,9 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "md-5"
version = "0.10.6"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98"
dependencies = [
"cfg-if",
"digest",
@@ -316,12 +336,12 @@ dependencies = [
[[package]]
name = "socket2"
version = "0.5.10"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
dependencies = [
"libc",
"windows-sys 0.52.0",
"windows-sys",
]
[[package]]
@@ -385,27 +405,12 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "version_check"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "windows-link"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
name = "windows-sys"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-sys"
version = "0.61.2"
@@ -414,67 +419,3 @@ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_gnullvm",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+3 -3
View File
@@ -16,6 +16,6 @@ homepage = "https://github.com/Lochnair/irtt-rs"
readme = "README.md"
[workspace.dependencies]
irtt-proto = { version = "0.1.0", path = "crates/irtt-proto" }
irtt-client = { version = "0.1.0", path = "crates/irtt-client" }
irtt-stats = { version = "0.1.0", path = "crates/irtt-stats" }
irtt-proto = { version = "0.1.1", path = "crates/irtt-proto" }
irtt-client = { version = "0.1.1", path = "crates/irtt-client" }
irtt-stats = { version = "0.1.1", path = "crates/irtt-stats" }
+3 -3
View File
@@ -1,6 +1,6 @@
[package]
name = "irtt-cli"
version = "0.1.0"
version = "0.1.1"
description = "Command-line IRTT-compatible client"
edition.workspace = true
license.workspace = true
@@ -16,8 +16,8 @@ default = ["stats"]
stats = ["dep:irtt-stats"]
[dependencies]
clap = { version = "4.5", features = ["derive"] }
ctrlc = "3.4"
clap = { version = "4.6.1", features = ["derive"] }
ctrlc = "3.5.2"
irtt-client.workspace = true
irtt-proto.workspace = true
irtt-stats = { workspace = true, optional = true }
+4 -4
View File
@@ -1,6 +1,6 @@
[package]
name = "irtt-client"
version = "0.1.0"
version = "0.1.1"
description = "IRTT-compatible Rust client library"
edition.workspace = true
license.workspace = true
@@ -13,9 +13,9 @@ categories = ["network-programming"]
[dependencies]
irtt-proto.workspace = true
libc = { version = "0.2", optional = true }
socket2 = { version = "0.5", features = ["all"] }
thiserror = "2"
libc = { version = "0.2.186", optional = true }
socket2 = { version = "0.6.3", features = ["all"] }
thiserror = "2.0.18"
[features]
default = []
+1 -1
View File
@@ -15,7 +15,7 @@ pub(crate) fn configure_receive_metadata(socket: &UdpSocket, remote: SocketAddr)
enable_kernel_rx_timestamps(socket)?;
let socket = socket2::SockRef::from(socket);
if remote.is_ipv4() {
socket.set_recv_tos(true)
socket.set_recv_tos_v4(true)
} else {
socket.set_recv_tclass_v6(true)
}
+4 -4
View File
@@ -78,7 +78,7 @@ pub(crate) fn socket_ttl(socket: &UdpSocket, remote: SocketAddr) -> Result<u32,
fn set_socket_ttl(socket: &UdpSocket, remote: SocketAddr, ttl: u32) -> io::Result<()> {
if remote.is_ipv4() {
socket2::SockRef::from(socket).set_ttl(ttl)
socket2::SockRef::from(socket).set_ttl_v4(ttl)
} else {
socket2::SockRef::from(socket).set_unicast_hops_v6(ttl)
}
@@ -87,7 +87,7 @@ fn set_socket_ttl(socket: &UdpSocket, remote: SocketAddr, ttl: u32) -> io::Resul
#[cfg(test)]
fn get_socket_ttl(socket: &UdpSocket, remote: SocketAddr) -> io::Result<u32> {
if remote.is_ipv4() {
socket2::SockRef::from(socket).ttl()
socket2::SockRef::from(socket).ttl_v4()
} else {
socket2::SockRef::from(socket).unicast_hops_v6()
}
@@ -128,7 +128,7 @@ fn set_socket_traffic_class_io(
target_os = "haiku",
)))]
fn set_ipv4_traffic_class(socket: &UdpSocket, traffic_class: u32) -> io::Result<()> {
socket2::SockRef::from(socket).set_tos(traffic_class)
socket2::SockRef::from(socket).set_tos_v4(traffic_class)
}
#[cfg(any(
@@ -212,7 +212,7 @@ fn unsupported_traffic_class(traffic_class: u32, feature: &'static str) -> io::R
))
))]
fn get_ipv4_traffic_class(socket: &UdpSocket) -> io::Result<u32> {
socket2::SockRef::from(socket).tos()
socket2::SockRef::from(socket).tos_v4()
}
#[cfg(all(
+5 -5
View File
@@ -1,6 +1,6 @@
[package]
name = "irtt-proto"
version = "0.1.0"
version = "0.1.1"
description = "IRTT protocol encoding and decoding primitives"
edition.workspace = true
license.workspace = true
@@ -12,7 +12,7 @@ keywords = ["irtt", "networking", "latency", "protocol"]
categories = ["network-programming"]
[dependencies]
hmac = "0.12"
md-5 = "0.10"
subtle = "2"
thiserror = "2"
hmac = "0.13"
md-5 = "0.11"
subtle = "2.6.1"
thiserror = "2.0.18"
+1 -1
View File
@@ -1,4 +1,4 @@
use hmac::{Hmac, Mac};
use hmac::{Hmac, KeyInit, Mac};
use md5::Md5;
use subtle::ConstantTimeEq;
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "irtt-stats"
version = "0.1.0"
version = "0.1.1"
description = "Statistics aggregation for irtt-client events"
edition.workspace = true
license.workspace = true
+110
View File
@@ -0,0 +1,110 @@
# cargo-deny policy for irtt-rs.
#
# Goals:
# - Check the full dependency graph with all features enabled.
# - Fail on known vulnerable/yanked crates.
# - Keep accepted licenses narrow and explicit.
# - Warn on duplicate crate versions for now.
# - Deny unexpected registries or git dependencies.
# - If git dependencies are ever allowed, require exact commit pins.
[graph]
all-features = true
no-default-features = false
targets = []
[output]
feature-depth = 1
[advisories]
# Yanked crates are usually not an immediate vuln, but they are almost never
# something we want to keep resolving in a public crate.
yanked = "deny"
# Unmaintained advisories are useful, but failing on every transitive
# unmaintained crate can become dependency-tree hostage negotiation.
# Direct/workspace dependencies should still be treated seriously.
unmaintained = "workspace"
# Keep this explicit. cargo-deny's current default is also workspace, but this
# makes the policy obvious.
unsound = "workspace"
ignore = [
# Example:
# { id = "RUSTSEC-0000-0000", reason = "Not reachable: explain why." },
# { crate = "some-yanked-crate@1.2.3", reason = "Temporary until upstream releases a replacement." },
]
[licenses]
confidence-threshold = 0.8
allow = [
"MIT",
"Apache-2.0",
"Unicode-3.0",
"BSD-3-Clause",
]
exceptions = [
# Example:
# { crate = "some-crate", allow = ["BSD-2-Clause"] },
]
[licenses.private]
ignore = false
registries = []
[bans]
# Keep as warn initially. Making this deny too early is how you end up doing
# dependency bonsai instead of actual work.
multiple-versions = "warn"
# Consider changing this to "deny" later once you've confirmed nothing relies
# on wildcard requirements.
wildcards = "allow"
highlight = "all"
workspace-default-features = "allow"
external-default-features = "allow"
allow = []
deny = [
# Example:
# { crate = "openssl", reason = "Prefer rustls where TLS is needed." },
]
skip = [
# Example:
# { crate = "windows-sys@0.52.0", reason = "Transitive duplicate; waiting on upstream." },
]
skip-tree = [
# Example:
# { crate = "some-large-transitive-root@1.2.3", reason = "Temporary duplicate tree exception." },
]
[sources]
# Unknown dependency sources should fail. If we need a git patch later,
# we add it explicitly and remove it again when upstream releases.
unknown-registry = "deny"
unknown-git = "deny"
# If git dependencies are ever allowed, require exact commit pins.
# cargo-deny's docs list "rev" as the most specific git source requirement.
required-git-spec = "rev"
# crates.io registry. cargo-deny's docs say this is also the default when
# allow-registry is omitted, but keeping it explicit is fine.
allow-registry = [
"https://github.com/rust-lang/crates.io-index",
]
allow-git = []
[sources.allow-org]
github = []
gitlab = []
bitbucket = []
+70
View File
@@ -0,0 +1,70 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended", "helpers:pinGitHubActionDigests"],
"timezone": "Asia/Jakarta",
"schedule": ["before 10am on monday"],
"dependencyDashboard": true,
"dependencyDashboardTitle": "Renovate Dashboard",
"semanticCommits": "enabled",
"semanticCommitType": "chore",
"semanticCommitScope": "deps",
"prConcurrentLimit": 4,
"prHourlyLimit": 1,
"rebaseWhen": "conflicted",
"rangeStrategy": "bump",
"labels": ["dependencies"],
"lockFileMaintenance": {
"enabled": true,
"schedule": ["before 10am on monday"],
"commitMessageAction": "maintain",
"commitMessageTopic": "Cargo lockfile"
},
"packageRules": [
{
"description": "Never automerge Cargo updates by default",
"matchManagers": ["cargo"],
"automerge": false
},
{
"description": "Group RustCrypto updates together",
"matchManagers": ["cargo"],
"matchPackageNames": ["hmac", "md-5"],
"groupName": "RustCrypto dependencies",
"commitMessageTopic": "RustCrypto dependencies"
},
{
"description": "Keep socket/platform dependencies together but reviewed",
"matchManagers": ["cargo"],
"matchPackageNames": ["socket2", "libc"],
"groupName": "socket dependencies",
"commitMessageTopic": "socket dependencies"
},
{
"description": "Group GitHub Actions updates",
"matchManagers": ["github-actions"],
"groupName": "GitHub Actions",
"commitMessageTopic": "GitHub Actions"
},
{
"description": "Automerge patch and minor GitHub Actions updates",
"matchManagers": ["github-actions"],
"matchUpdateTypes": ["patch", "minor"],
"automerge": true,
"platformAutomerge": true
},
{
"description": "Never automerge major updates",
"matchUpdateTypes": ["major"],
"automerge": false
}
]
}