Skip to content

Commit b64b015

Browse files
authored
feat: implement autonat server behaviour (#8)
1 parent 02a2f56 commit b64b015

File tree

3 files changed

+37
-7
lines changed

3 files changed

+37
-7
lines changed

Cargo.lock

+23-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ members = [".", "examples/dcutr", "examples/chat"]
33

44
[package]
55
name = "boot-node"
6-
version = "0.4.0"
6+
version = "0.5.0"
77
authors = ["Calimero Limited <info@calimero.network>"]
88
edition = "2021"
99
repository = "https://github.com/calimero-network/boot-node"
@@ -15,6 +15,7 @@ clap = { version = "4.5.4", features = ["derive", "env"] }
1515
eyre = "0.6.12"
1616
futures-util = "0.3.30"
1717
libp2p = { version = "0.53.2", features = [
18+
"autonat",
1819
"identify",
1920
"kad",
2021
"macros",

src/main.rs

+12-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ use std::net::Ipv4Addr;
33
use clap::Parser;
44
use libp2p::futures::prelude::*;
55
use libp2p::swarm::{NetworkBehaviour, SwarmEvent};
6-
use libp2p::{identify, identity, kad, ping, relay, rendezvous, Multiaddr, StreamProtocol, Swarm};
6+
use libp2p::{
7+
autonat, identify, identity, kad, ping, relay, rendezvous, Multiaddr, StreamProtocol, Swarm,
8+
};
79
use tracing::info;
810
use tracing_subscriber::prelude::*;
911
use tracing_subscriber::EnvFilter;
@@ -13,11 +15,12 @@ const CALIMERO_KAD_PROTO_NAME: StreamProtocol = StreamProtocol::new("/calimero/k
1315

1416
#[derive(NetworkBehaviour)]
1517
struct Behaviour {
18+
autonat: autonat::Behaviour,
1619
identify: identify::Behaviour,
1720
kad: kad::Behaviour<kad::store::MemoryStore>,
1821
ping: ping::Behaviour,
19-
rendezvous: rendezvous::server::Behaviour,
2022
relay: relay::Behaviour,
23+
rendezvous: rendezvous::server::Behaviour,
2124
}
2225

2326
#[derive(Debug, Parser)]
@@ -61,6 +64,7 @@ async fn main() -> eyre::Result<()> {
6164
)?
6265
.with_quic()
6366
.with_behaviour(|keypair| Behaviour {
67+
autonat: autonat::Behaviour::new(peer_id.clone(), Default::default()),
6468
identify: identify::Behaviour::new(identify::Config::new(
6569
PROTOCOL_VERSION.to_owned(),
6670
keypair.public(),
@@ -127,6 +131,9 @@ async fn handle_swarm_event(swarm: &mut Swarm<Behaviour>, event: SwarmEvent<Beha
127131

128132
async fn handle_swarm_behaviour_event(swarm: &mut Swarm<Behaviour>, event: BehaviourEvent) {
129133
match event {
134+
BehaviourEvent::Autonat(event) => {
135+
info!("AutoNat event: {event:?}");
136+
}
130137
BehaviourEvent::Identify(event) => {
131138
info!("Identify event: {event:?}");
132139
match event {
@@ -143,12 +150,12 @@ async fn handle_swarm_behaviour_event(swarm: &mut Swarm<Behaviour>, event: Behav
143150
BehaviourEvent::Kad(event) => {
144151
info!("Kad event: {event:?}");
145152
}
146-
BehaviourEvent::Rendezvous(event) => {
147-
info!("Rendezvous event: {event:?}");
148-
}
149153
BehaviourEvent::Relay(event) => {
150154
info!("Relay event: {event:?}");
151155
}
156+
BehaviourEvent::Rendezvous(event) => {
157+
info!("Rendezvous event: {event:?}");
158+
}
152159
_ => {}
153160
}
154161
}

0 commit comments

Comments
 (0)