Commit Graph

1797 Commits

Author SHA1 Message Date
Lee Smet b56e37e0f9 Rename master branch to main
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-05-08 10:31:21 +02:00
Lee Smet 72882b7519 Replace release mapfile call with manual loop
This fails on macos runners which use bash 3.2, where this is not
available

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
v0.7.7
2026-05-06 20:14:43 +02:00
Lee Smet d454932913 Use nix ioctl macro for TUNSETOFF in mycelium-tun
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-05-06 17:16:47 +02:00
Lee Smet d349f7026f Bump version to v0.7.7
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-05-06 16:36:23 +02:00
Lee Smet 27ed13dc7a Update binary lockfiles
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-05-06 12:12:35 +02:00
dependabot[bot] d6ba7b607d Bump openssl from 0.10.78 to 0.10.79 in /mobile
Bumps [openssl](https://github.com/rust-openssl/rust-openssl) from 0.10.78 to 0.10.79.
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.78...openssl-v0.10.79)

---
updated-dependencies:
- dependency-name: openssl
  dependency-version: 0.10.79
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 12:04:08 +02:00
dependabot[bot] 37d5348609 Bump openssl from 0.10.78 to 0.10.79 in /myceliumd-private
Bumps [openssl](https://github.com/rust-openssl/rust-openssl) from 0.10.78 to 0.10.79.
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.78...openssl-v0.10.79)

---
updated-dependencies:
- dependency-name: openssl
  dependency-version: 0.10.79
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 12:03:47 +02:00
dependabot[bot] 61283fc2e4 Bump tokio in /myceliumd-private in the myceliumd-private group
Bumps the myceliumd-private group in /myceliumd-private with 1 update: [tokio](https://github.com/tokio-rs/tokio).


Updates `tokio` from 1.52.1 to 1.52.2
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.52.1...tokio-1.52.2)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.52.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: myceliumd-private
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 12:03:23 +02:00
dependabot[bot] 7a419c16e3 Bump tokio from 1.52.1 to 1.52.2 in /myceliumd in the myceliumd group
Bumps the myceliumd group in /myceliumd with 1 update: [tokio](https://github.com/tokio-rs/tokio).


Updates `tokio` from 1.52.1 to 1.52.2
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.52.1...tokio-1.52.2)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.52.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: myceliumd
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 12:03:02 +02:00
dependabot[bot] 1ff325664c Bump the mycelium group with 9 updates
Bumps the mycelium group with 9 updates:

| Package | From | To |
| --- | --- | --- |
| [tokio](https://github.com/tokio-rs/tokio) | `1.52.1` | `1.52.2` |
| [blake3](https://github.com/BLAKE3-team/BLAKE3) | `1.8.4` | `1.8.5` |
| [rustls](https://github.com/rustls/rustls) | `0.23.38` | `0.23.40` |
| [netdev](https://github.com/shellrow/netdev) | `0.42.0` | `0.43.0` |
| [openssl](https://github.com/rust-openssl/rust-openssl) | `0.10.78` | `0.10.79` |
| [redis](https://github.com/redis-rs/redis-rs) | `1.2.0` | `1.2.1` |
| [hickory-server](https://github.com/hickory-dns/hickory-dns) | `0.26.0` | `0.26.1` |
| [hickory-resolver](https://github.com/hickory-dns/hickory-dns) | `0.26.0` | `0.26.1` |
| [libc](https://github.com/rust-lang/libc) | `0.2.185` | `0.2.186` |


Updates `tokio` from 1.52.1 to 1.52.2
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.52.1...tokio-1.52.2)

Updates `blake3` from 1.8.4 to 1.8.5
- [Release notes](https://github.com/BLAKE3-team/BLAKE3/releases)
- [Commits](https://github.com/BLAKE3-team/BLAKE3/compare/1.8.4...1.8.5)

Updates `rustls` from 0.23.38 to 0.23.40
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.38...v/0.23.40)

Updates `netdev` from 0.42.0 to 0.43.0
- [Release notes](https://github.com/shellrow/netdev/releases)
- [Commits](https://github.com/shellrow/netdev/compare/v0.42.0...v0.43.0)

Updates `openssl` from 0.10.78 to 0.10.79
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.78...openssl-v0.10.79)

Updates `redis` from 1.2.0 to 1.2.1
- [Release notes](https://github.com/redis-rs/redis-rs/releases)
- [Commits](https://github.com/redis-rs/redis-rs/compare/redis-1.2.0...redis-1.2.1)

Updates `hickory-server` from 0.26.0 to 0.26.1
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.26.0...v0.26.1)

Updates `hickory-resolver` from 0.26.0 to 0.26.1
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.26.0...v0.26.1)

Updates `libc` from 0.2.185 to 0.2.186
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.186/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.185...0.2.186)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.52.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mycelium
- dependency-name: blake3
  dependency-version: 1.8.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mycelium
- dependency-name: rustls
  dependency-version: 0.23.40
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mycelium
- dependency-name: netdev
  dependency-version: 0.43.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: mycelium
- dependency-name: openssl
  dependency-version: 0.10.79
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mycelium
- dependency-name: redis
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mycelium
- dependency-name: hickory-server
  dependency-version: 0.26.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mycelium
- dependency-name: hickory-resolver
  dependency-version: 0.26.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mycelium
- dependency-name: libc
  dependency-version: 0.2.186
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mycelium
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 12:02:37 +02:00
Lee Smet 6df2d0049b Add release artifacts of mycelium shared library and archive
Also make sure the library soname is set on linux and macos

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-05-06 11:52:20 +02:00
Lee Smet b525c69387 Update CHANGELOG.md
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 6574ee8574 Don't include FFI generated header in-tree
Header is generated at every build, so it's better to just keep it as a
build-output

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 672c6b6b4f Add safety functions to exported FFI methods
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 9466a61c4a Add tun_fd to ffi Config
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 16d3e0afb3 Refactor FFI to work on node pointer
Instead of using a singleton in the interface

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet a14a7df72a Remove AIDL generation/binder, and expose a C FFI interface instead
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 3b6d337748 Switch rsbinder to libbinder_rs
rsbinder required patching to work against android15. Instead switch to
libbinder_rs for building in an aosp/SOONG environment.

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 23015b88cf Setup aidl from mycelium lib
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 4608ded1ae Merge Aidl into main mycelium lib
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 3b856d94f9 Basic arg parsing and node auto start
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 8294d0de69 Correct arguments on android
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 84e2fb6233 Use custom service manager bindings for android 15
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet 6fd858e60d Don't remove async binder impls
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
Lee Smet bc4b5c592e Add experimental AIDL implementation
Adds an AIDL file which exposes an interface similar to the HTTP API. It
is largely based on the mobile crate.

This implementation uses rs-binder. The advantage is that it "just works"
for experimenting. This will likely need to be changed later for the
OASP environment (something like binder_ndk perhaps).

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 15:49:56 +02:00
dependabot[bot] 0d14db1104 Bump rustls-webpki from 0.103.7 to 0.103.13 in /mobile
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.103.7 to 0.103.13.
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.103.7...v/0.103.13)

---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-version: 0.103.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 15:49:56 +02:00
dependabot[bot] 6b35c8eb2c Bump rustls-webpki from 0.103.6 to 0.103.13 in /myceliumd-private
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.103.6 to 0.103.13.
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.103.6...v/0.103.13)

---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-version: 0.103.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 15:49:56 +02:00
dependabot[bot] a7ad716c1c Bump rustls-webpki from 0.103.6 to 0.103.13
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.103.6 to 0.103.13.
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.103.6...v/0.103.13)

---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-version: 0.103.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 15:49:56 +02:00
dependabot[bot] dc88ac0e23 Bump rustls-webpki from 0.103.6 to 0.103.13 in /myceliumd
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.103.6 to 0.103.13.
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.103.6...v/0.103.13)

---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-version: 0.103.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 15:49:56 +02:00
Lee Smet 38803788c8 Update CHANGELOG.md
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 257967e401 Allow reordering of packets in TUN GRO
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 21bf72d3d1 Only attempt UDP coalescing in tun interface if USO is enabled
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 5aec6112bb Remove legacy darwin nix flake inputs
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 4c1b926bec Use larger Frame buffers for peer connections
This should slightly reduce the amount of syscalls needed when sending
packets to/receiving packets from peers under heavy load.

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 6414db380b Add batch processing of received packets in data plane
Improves GRO performance by doing a batch of decryptions instead of
decrypting individual packets to then send them to the TUN interface

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 74981040f5 Rework linux TUN GRO to coalesce as much as possible
Rather than doing an all or nothing coallesce on the received packets

This also fixes an issue with GRO'd packet csum computation, especially
on UDP

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 9beab18ca4 Use bounded channel from linux TUN to dataplane
Adds backpressure compared to the unbounded channel. Prevents the TUN
reads from outpacing the Dataplane operation, which would lead to
increased latency and potential OOM. Now the data will be accumulated in
kernel buffers, and eventually get dropped.

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet b657d9fe82 Implement GRO/GSO (TSO/USO 4/6) in linux tun crate
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 17fd8115c5 Update lock files
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 7a21088849 Swap mycelium tun on linux from tokio-tun to mycelium-tun
Throughput increased from 1.30Gbit/s to 1.60Gbit/s average on my dev
laptop, though this is likely because we now use a dedicated task for
reading and writing, which allows parallel reads and writes.

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet b63ca2c427 Update mycelium-tun Cargo.toml
edition 2024, reference license file

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet cab1451c04 Allow setting the TUN interface UP
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 4110a378ee Make sure O_NONBLOCK is set on TUN fd
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 71bd9b6745 Add option to set txqueue length on linux tun interface
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 5d9abae629 Add a read and write half implementation for linux TUN
This allows proper simultaneous reading and writing to the interface, in
parallel

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
Lee Smet 0243feaa3d Add custom tun implementation on linux
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
2026-04-28 14:38:19 +02:00
dependabot[bot] 518f287c40 Bump rand from 0.8.5 to 0.8.6 in /myceliumd-private
Bumps [rand](https://github.com/rust-random/rand) from 0.8.5 to 0.8.6.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/0.8.6/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.5...0.8.6)

---
updated-dependencies:
- dependency-name: rand
  dependency-version: 0.8.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 14:38:19 +02:00
dependabot[bot] 7b9cb3edfa Bump rand from 0.8.5 to 0.8.6 in /mobile
Bumps [rand](https://github.com/rust-random/rand) from 0.8.5 to 0.8.6.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/0.8.6/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.5...0.8.6)

---
updated-dependencies:
- dependency-name: rand
  dependency-version: 0.8.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 14:38:19 +02:00
dependabot[bot] 9ef966c6e3 Bump rand from 0.8.5 to 0.8.6 in /myceliumd
Bumps [rand](https://github.com/rust-random/rand) from 0.8.5 to 0.8.6.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/0.8.6/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.5...0.8.6)

---
updated-dependencies:
- dependency-name: rand
  dependency-version: 0.8.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 14:38:19 +02:00
Lee Smet d620b476ef Update Dockerfile to use rust base image
Since debian doesn't ship rustc >= 1.85 yet

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
v0.7.6
2026-04-21 15:36:06 +02:00