Compare commits
2 commits
main
...
udp-garbag
| Author | SHA1 | Date | |
|---|---|---|---|
| 229797ce1b | |||
| b399777024 |
5 changed files with 52 additions and 35 deletions
31
Cargo.lock
generated
31
Cargo.lock
generated
|
|
@ -227,6 +227,12 @@ version = "1.0.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg_aliases"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cipher"
|
name = "cipher"
|
||||||
version = "0.4.4"
|
version = "0.4.4"
|
||||||
|
|
@ -768,6 +774,15 @@ version = "2.7.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memoffset"
|
||||||
|
version = "0.9.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mime"
|
name = "mime"
|
||||||
version = "0.3.17"
|
version = "0.3.17"
|
||||||
|
|
@ -791,6 +806,19 @@ version = "0.10.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084"
|
checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nix"
|
||||||
|
version = "0.30.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"cfg-if",
|
||||||
|
"cfg_aliases",
|
||||||
|
"libc",
|
||||||
|
"memoffset",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-traits"
|
name = "num-traits"
|
||||||
version = "0.2.19"
|
version = "0.2.19"
|
||||||
|
|
@ -1035,7 +1063,7 @@ checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reticulum"
|
name = "reticulum"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/BeechatNetworkSystemsLtd/Reticulum-rs.git#5012cf2c48044034775207ab7ee2c67d285276bb"
|
source = "git+http://github.com/SebKuzminsky/Reticulum-rs?branch=multicast#4db323aebd2cb4d11c24f7270b5cfd46a7b483d6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes",
|
"aes",
|
||||||
"cbc",
|
"cbc",
|
||||||
|
|
@ -1045,6 +1073,7 @@ dependencies = [
|
||||||
"hkdf",
|
"hkdf",
|
||||||
"hmac",
|
"hmac",
|
||||||
"log",
|
"log",
|
||||||
|
"nix",
|
||||||
"prost",
|
"prost",
|
||||||
"rand_core",
|
"rand_core",
|
||||||
"rmp",
|
"rmp",
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,11 @@ tokio-util = "0.7.15"
|
||||||
# Logging
|
# Logging
|
||||||
log = "0.4.27"
|
log = "0.4.27"
|
||||||
env_logger = "0.10"
|
env_logger = "0.10"
|
||||||
reticulum = { git = "https://github.com/BeechatNetworkSystemsLtd/Reticulum-rs.git" }
|
|
||||||
# reticulum = "0.1.0"
|
reticulum = { git="http://github.com/SebKuzminsky/Reticulum-rs", branch="multicast" }
|
||||||
|
#reticulum = { path = "../Reticulum-rs" }
|
||||||
|
#reticulum = { version="0.1.0" }
|
||||||
|
|
||||||
clap = { version = "4.5.53", features = ["derive"] }
|
clap = { version = "4.5.53", features = ["derive"] }
|
||||||
serde = { version = "1.0.228", features = ["derive"] }
|
serde = { version = "1.0.228", features = ["derive"] }
|
||||||
bincode = { version = "2.0.1", features = ["serde"] }
|
bincode = { version = "2.0.1", features = ["serde"] }
|
||||||
|
|
|
||||||
39
src/main.rs
39
src/main.rs
|
|
@ -1,6 +1,3 @@
|
||||||
use rand_core::OsRng;
|
|
||||||
use reticulum::destination::DestinationName;
|
|
||||||
use reticulum::identity::PrivateIdentity;
|
|
||||||
use tokio::fs;
|
use tokio::fs;
|
||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
|
@ -11,7 +8,6 @@ use reticulum::iface::tcp_client::TcpClient;
|
||||||
use reticulum::iface::tcp_server::TcpServer;
|
use reticulum::iface::tcp_server::TcpServer;
|
||||||
use reticulum::iface::udp::UdpInterface;
|
use reticulum::iface::udp::UdpInterface;
|
||||||
use reticulum::transport::{Transport, TransportConfig};
|
use reticulum::transport::{Transport, TransportConfig};
|
||||||
use tokio::time::{Duration, interval};
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||||
struct TcpServerConfig {
|
struct TcpServerConfig {
|
||||||
|
|
@ -39,8 +35,6 @@ enum InterfaceConfig {
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||||
struct Config {
|
struct Config {
|
||||||
interfaces: Vec<InterfaceConfig>,
|
interfaces: Vec<InterfaceConfig>,
|
||||||
broadcast: bool,
|
|
||||||
retransmit: bool,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
|
|
@ -51,7 +45,7 @@ struct Cli {
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
|
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("trace")).init();
|
||||||
|
|
||||||
log::info!(">>> TRANSPORT NODE <<<");
|
log::info!(">>> TRANSPORT NODE <<<");
|
||||||
|
|
||||||
|
|
@ -63,18 +57,10 @@ async fn main() {
|
||||||
println!("{config:?}");
|
println!("{config:?}");
|
||||||
|
|
||||||
let mut transport_config = TransportConfig::default();
|
let mut transport_config = TransportConfig::default();
|
||||||
transport_config.set_retransmit(config.retransmit);
|
transport_config.set_retransmit(false);
|
||||||
transport_config.set_broadcast(config.broadcast);
|
transport_config.set_broadcast(true);
|
||||||
// set up the reticulum transport
|
// set up the reticulum transport
|
||||||
let mut transport = Transport::new(transport_config);
|
let transport = Transport::new(transport_config);
|
||||||
|
|
||||||
// set up destination
|
|
||||||
let id = PrivateIdentity::new_from_rand(OsRng);
|
|
||||||
|
|
||||||
let hb_destination = transport
|
|
||||||
.add_destination(id, DestinationName::new("transport node", "heartbeat"))
|
|
||||||
.await;
|
|
||||||
log::info!("dest ID: {}", hb_destination.lock().await.desc.address_hash);
|
|
||||||
|
|
||||||
// set up interfaces
|
// set up interfaces
|
||||||
for iface_config in config.interfaces {
|
for iface_config in config.interfaces {
|
||||||
|
|
@ -101,19 +87,8 @@ async fn main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut heartbeat_interval = interval(Duration::from_secs(5));
|
// run until exit
|
||||||
|
let _ = tokio::signal::ctrl_c().await;
|
||||||
|
|
||||||
loop {
|
log::info!("exit");
|
||||||
tokio::select! {
|
|
||||||
_ = tokio::signal::ctrl_c() => {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
_ = heartbeat_interval.tick() => {
|
|
||||||
log::trace!("send heartbeat");
|
|
||||||
transport.send_announce(&hb_destination, None).await;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
log::info!("exit!");
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
udp-other.toml
Normal file
5
udp-other.toml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
[[interfaces]]
|
||||||
|
TcpServer = { bind_addr="0.0.0.0:4243" }
|
||||||
|
|
||||||
|
[[interfaces]]
|
||||||
|
Udp = { bind_addr="0.0.0.0:4242", forward_addr="239.0.0.69:4242" }
|
||||||
5
udp.toml
Normal file
5
udp.toml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
[[interfaces]]
|
||||||
|
TcpServer = { bind_addr="0.0.0.0:4242" }
|
||||||
|
|
||||||
|
[[interfaces]]
|
||||||
|
Udp = { bind_addr="0.0.0.0:4242", forward_addr="239.0.0.69:4242" }
|
||||||
Loading…
Add table
Add a link
Reference in a new issue