mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-27 16:51:34 +00:00
Make TcpConfig::nat_traversal work with IPv6 (#956)
This commit is contained in:
@ -188,8 +188,10 @@ impl Transport for TcpConfig {
|
|||||||
|
|
||||||
// Use the observed IP address.
|
// Use the observed IP address.
|
||||||
match server.iter().zip(observed.iter()).next() {
|
match server.iter().zip(observed.iter()).next() {
|
||||||
Some((Protocol::Ip4(_), x@Protocol::Ip4(_))) => address.append(x),
|
Some((Protocol::Ip4(_), x @ Protocol::Ip4(_))) => address.append(x),
|
||||||
Some((Protocol::Ip6(_), x@Protocol::Ip6(_))) => address.append(x),
|
Some((Protocol::Ip6(_), x @ Protocol::Ip4(_))) => address.append(x),
|
||||||
|
Some((Protocol::Ip4(_), x @ Protocol::Ip6(_))) => address.append(x),
|
||||||
|
Some((Protocol::Ip6(_), x @ Protocol::Ip6(_))) => address.append(x),
|
||||||
_ => return None
|
_ => return None
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -533,4 +535,32 @@ mod tests {
|
|||||||
"/ip4/80.81.82.83/tcp/10000".parse::<Multiaddr>().unwrap()
|
"/ip4/80.81.82.83/tcp/10000".parse::<Multiaddr>().unwrap()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn nat_traversal_ipv6_to_ipv4() {
|
||||||
|
let tcp = TcpConfig::new();
|
||||||
|
|
||||||
|
let server = "/ip6/::1/tcp/10000".parse::<Multiaddr>().unwrap();
|
||||||
|
let observed = "/ip4/80.81.82.83/tcp/25000".parse::<Multiaddr>().unwrap();
|
||||||
|
|
||||||
|
let out = tcp.nat_traversal(&server, &observed);
|
||||||
|
assert_eq!(
|
||||||
|
out.unwrap(),
|
||||||
|
"/ip4/80.81.82.83/tcp/10000".parse::<Multiaddr>().unwrap()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn nat_traversal_ipv4_to_ipv6() {
|
||||||
|
let tcp = TcpConfig::new();
|
||||||
|
|
||||||
|
let server = "/ip4/127.0.0.1/tcp/10000".parse::<Multiaddr>().unwrap();
|
||||||
|
let observed = "/ip6/2001:db8::1/tcp/25000".parse::<Multiaddr>().unwrap();
|
||||||
|
|
||||||
|
let out = tcp.nat_traversal(&server, &observed);
|
||||||
|
assert_eq!(
|
||||||
|
out.unwrap(),
|
||||||
|
"/ip6/2001:db8::1/tcp/10000".parse::<Multiaddr>().unwrap()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user