2

I am working on a Rust project using the libp2p library to create a peer-to-peer network. I have configured my swarm to listen on all interfaces using the following code:

let listen_address_udp = format!("/ip4/0.0.0.0/udp/{}/quic-v1", port);
swarm.listen_on(listen_address_udp.parse()?)?;
let listen_address_tcp = format!("/ip4/0.0.0.0/tcp/{}", port);
swarm.listen_on(listen_address_tcp.parse()?)?;

However, when reading swarm events, I am unable to retrieve the external public address that my node is listening on. The code for reading swarm events is as follows:

loop {
    select! {
        _ = sig_term_handler.recv() => {
            trigger_message = !trigger_message;
        },
        event = swarm.select_next_some() => match event {
            SwarmEvent::Behaviour(MyBehaviourEvent::Gossipsub(gossipsub::Event::Message {
                propagation_source: peer_id,
                message_id: id,
                message,
            })) => {
                println!(
                    "Received'{}' with id: {id} from peer: {peer_id}, Size :{}",
                    String::from_utf8_lossy(&message.data), message.data.len()
                )
            },
            SwarmEvent::NewListenAddr { address, .. } => {
                println!("Local node is listening on {address}");
            }
            _ => {}
        }
    }
}

The output I receive only shows the local addresses where my node is listening, such as:

Local node is listening on /ip4/127.0.0.1/tcp/8082
Local node is listening on /ip4/172.24.181.240/tcp/8082

I have tried pinging and opening port 8082 for TCP on all nodes, but I still cannot determine if my local node is publicly listening or not. What should be the external public address I expect to see in the SwarmEvent::NewListenAddr event? Any suggestions or insights into resolving this issue would be greatly appreciated.

3

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.