Skip to content

Commit

Permalink
Merge pull request #4 from stormshield-ebzh/transport-redesign-addres…
Browse files Browse the repository at this point in the history
…s-translation
  • Loading branch information
umgefahren authored Jun 1, 2024
2 parents dd39a16 + 0f538f3 commit 7bea1c2
Show file tree
Hide file tree
Showing 31 changed files with 136 additions and 337 deletions.
7 changes: 0 additions & 7 deletions core/src/either.rs
Original file line number Diff line number Diff line change
Expand Up @@ -192,11 +192,4 @@ where
},
}
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
match self {
Either::Left(a) => a.address_translation(server, observed),
Either::Right(b) => b.address_translation(server, observed),
}
}
}
3 changes: 0 additions & 3 deletions core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ mod proto {
pub use multiaddr;
pub type Negotiated<T> = multistream_select::Negotiated<T>;

mod translation;

pub mod connection;
pub mod either;
pub mod muxing;
Expand All @@ -61,7 +59,6 @@ pub use multihash;
pub use muxing::StreamMuxer;
pub use peer_record::PeerRecord;
pub use signed_envelope::SignedEnvelope;
pub use translation::address_translation;
pub use transport::Transport;
pub use upgrade::{InboundUpgrade, OutboundUpgrade, UpgradeInfo};

Expand Down
18 changes: 0 additions & 18 deletions core/src/transport.rs
Original file line number Diff line number Diff line change
Expand Up @@ -175,24 +175,6 @@ pub trait Transport {
cx: &mut Context<'_>,
) -> Poll<TransportEvent<Self::ListenerUpgrade, Self::Error>>;

/// Performs a transport-specific mapping of an address `observed` by a remote onto a
/// local `listen` address to yield an address for the local node that may be reachable
/// for other peers.
///
/// This is relevant for transports where Network Address Translation (NAT) can occur
/// so that e.g. the peer is observed at a different IP than the IP of the local
/// listening address. See also [`address_translation`][crate::address_translation].
///
/// Within [`libp2p::Swarm`](<https://docs.rs/libp2p/latest/libp2p/struct.Swarm.html>) this is
/// used when extending the listening addresses of the local peer with external addresses
/// observed by remote peers.
/// On transports where this is not relevant (i.e. no NATs are present) `None` should be
/// returned for the sake of de-duplication.
///
/// Note: if the listen or observed address is not a valid address of this transport,
/// `None` should be returned as well.
fn address_translation(&self, listen: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr>;

/// Boxes the transport, including custom transport errors.
fn boxed(self) -> boxed::Boxed<Self::Output>
where
Expand Down
4 changes: 0 additions & 4 deletions core/src/transport/and_then.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,6 @@ where
Ok(future)
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
self.transport.address_translation(server, observed)
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
9 changes: 0 additions & 9 deletions core/src/transport/boxed.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ trait Abstract<O> {
addr: Multiaddr,
opts: DialOpts,
) -> Result<Dial<O>, TransportError<io::Error>>;
fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr>;
fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down Expand Up @@ -100,10 +99,6 @@ where
Ok(Box::pin(fut) as Dial<_>)
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
Transport::address_translation(self, server, observed)
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down Expand Up @@ -151,10 +146,6 @@ impl<O> Transport for Boxed<O> {
self.inner.dial(addr, opts)
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
self.inner.address_translation(server, observed)
}

fn poll(
mut self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
8 changes: 0 additions & 8 deletions core/src/transport/choice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,14 +140,6 @@ where
Err(TransportError::MultiaddrNotSupported(addr))
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
if let Some(addr) = self.0.address_translation(server, observed) {
Some(addr)
} else {
self.1.address_translation(server, observed)
}
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
4 changes: 0 additions & 4 deletions core/src/transport/dummy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@ impl<TOut> Transport for DummyTransport<TOut> {
Err(TransportError::MultiaddrNotSupported(addr))
}

fn address_translation(&self, _server: &Multiaddr, _observed: &Multiaddr) -> Option<Multiaddr> {
None
}

fn poll(
self: Pin<&mut Self>,
_: &mut Context<'_>,
Expand Down
4 changes: 0 additions & 4 deletions core/src/transport/global_only.rs
Original file line number Diff line number Diff line change
Expand Up @@ -314,10 +314,6 @@ impl<T: crate::Transport + Unpin> crate::Transport for Transport<T> {
}
}

fn address_translation(&self, listen: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
self.inner.address_translation(listen, observed)
}

fn poll(
mut self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
4 changes: 0 additions & 4 deletions core/src/transport/map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,6 @@ where
})
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
self.transport.address_translation(server, observed)
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
4 changes: 0 additions & 4 deletions core/src/transport/map_err.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,6 @@ where
}
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
self.transport.address_translation(server, observed)
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
4 changes: 0 additions & 4 deletions core/src/transport/memory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -226,10 +226,6 @@ impl Transport for MemoryTransport {
DialFuture::new(port).ok_or(TransportError::Other(MemoryTransportError::Unreachable))
}

fn address_translation(&self, _server: &Multiaddr, _observed: &Multiaddr) -> Option<Multiaddr> {
None
}

fn poll(
mut self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
8 changes: 0 additions & 8 deletions core/src/transport/optional.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,6 @@ where
}
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
if let Some(inner) = &self.0 {
inner.address_translation(server, observed)
} else {
None
}
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
4 changes: 0 additions & 4 deletions core/src/transport/timeout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,6 @@ where
})
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
self.inner.address_translation(server, observed)
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
8 changes: 0 additions & 8 deletions core/src/transport/upgrade.rs
Original file line number Diff line number Diff line change
Expand Up @@ -356,10 +356,6 @@ where
self.0.listen_on(id, addr)
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
self.0.address_translation(server, observed)
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down Expand Up @@ -431,10 +427,6 @@ where
.map_err(|err| err.map(TransportUpgradeError::Transport))
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
self.inner.address_translation(server, observed)
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
4 changes: 0 additions & 4 deletions misc/metrics/src/bandwidth.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,6 @@ where
})))
}

fn address_translation(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {
self.transport.address_translation(server, observed)
}

fn poll(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
Expand Down
Loading

0 comments on commit 7bea1c2

Please sign in to comment.