mycelium: 0.4.5 -> 0.5.0

Changed
- Connection identifier is now included in the error log if we can't forward a
- seqno request.
- Garbage collection time for source entries has been increased from 5 to 30 minutes
- for now.
- The router implementation has been changed to use regular locks instead of an
- always readable concurrency primitive for all but the actual routing table. This
- should reduce the memory consumption a bit.
- Public key and shared secret for a destination are now saved on the router, instead
- of maintaining a separate mapping for them. This slightly reduces memory consumption
- of the router, and ensures stale data is properly cleaned up when all routes to
- a subnet are removed.
- Hello packets now set the interval in which the next Hello will be sent properly
- in centiseconds.
- IHU packets now set the interval properly in centiseconds.
- IHU packets now set an RX cost. For now this is the link cost, in the future
- this will be set properly.
- Route expiration time is now calculated from the interval received in updates.
- Ip address derivation from public keys now uses the blake3 hash algorithm.

Fixed
- Don't try to forward seqno requests to a peer if we know its connection is dead.

Changed files
+21 -46
nixos
tests
mycelium
pkgs
by-name
my
+2 -2
nixos/tests/mycelium/default.nix
···
import ../make-test-python.nix ({ lib, ... }: let
-
peer1-ip = "531:c350:28c1:dfde:ea6d:77d1:a60b:7209";
-
peer2-ip = "49f:3942:3a55:d100:4c78:c558:c4f:695b";
+
peer1-ip = "538:f40f:1c51:9bd9:9569:d3f6:d0a1:b2df";
+
peer2-ip = "5b6:6776:fee0:c1f3:db00:b6a8:d013:d38f";
in
{
name = "mycelium";
+17 -42
pkgs/by-name/my/mycelium/Cargo.lock
···
[[package]]
name = "axum"
-
version = "0.7.4"
+
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e"
+
checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
dependencies = [
"async-trait",
"axum-core",
···
"serde_json",
"serde_path_to_error",
"serde_urlencoded",
-
"sync_wrapper",
+
"sync_wrapper 1.0.0",
"tokio",
"tower",
"tower-layer",
···
"mime",
"pin-project-lite",
"rustversion",
-
"sync_wrapper",
+
"sync_wrapper 0.1.2",
"tower-layer",
"tower-service",
]
···
checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
[[package]]
-
name = "blake2"
-
version = "0.10.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
-
dependencies = [
-
"digest",
-
]
-
-
[[package]]
name = "blake3"
version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
···
"cc",
"cfg-if",
"constant_time_eq",
-
]
-
-
[[package]]
-
name = "block-buffer"
-
version = "0.10.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
-
dependencies = [
-
"generic-array",
]
[[package]]
···
]
[[package]]
-
name = "digest"
-
version = "0.10.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
-
dependencies = [
-
"block-buffer",
-
"crypto-common",
-
"subtle",
-
]
-
-
[[package]]
name = "encoding_rs"
version = "0.8.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
···
[[package]]
name = "etherparse"
-
version = "0.14.2"
+
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "24890603eb4b43aa788f02261ce21714449033e3e2ab93692f0ab18480c3c9b1"
+
checksum = "095ab548cf452be5813424558a18af88f0a620d0f4a3d8793aa09311a3b6fa5f"
dependencies = [
"arrayvec",
]
···
[[package]]
name = "mycelium"
-
version = "0.4.5"
+
version = "0.5.0"
dependencies = [
"aes-gcm",
"axum",
"base64 0.22.0",
-
"blake2",
"blake3",
"bytes",
"clap",
-
"digest",
"etherparse",
"faster-hex",
"futures",
···
[[package]]
name = "serde_json"
-
version = "1.0.114"
+
version = "1.0.115"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+
checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
dependencies = [
"itoa",
"ryu",
···
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
[[package]]
+
name = "sync_wrapper"
+
version = "1.0.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "384595c11a4e2969895cad5a8c4029115f5ab956a9e5ef4de79d11a426e5f20c"
+
+
[[package]]
name = "system-configuration"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
···
[[package]]
name = "tokio"
-
version = "1.36.0"
+
version = "1.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
+
checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
dependencies = [
"backtrace",
"bytes",
+2 -2
pkgs/by-name/my/mycelium/package.nix
···
rustPlatform.buildRustPackage rec {
pname = "mycelium";
-
version = "0.4.5";
+
version = "0.5.0";
src = fetchFromGitHub {
owner = "threefoldtech";
repo = "mycelium";
rev = "v${version}";
-
hash = "sha256-AJA1yd7P9zHOIdSOR2bAHgL5NyoyqzgNIEs8ObgD4Mo=";
+
hash = "sha256-K82LHVXbSMIJQlQ/qUpdCBVlAEZWyMMG2eUt2FzNwRE=";
};
cargoLock = {