Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion cmd/ethrex/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -204,11 +204,19 @@ pub struct Options {
pub authrpc_jwtsecret: String,
#[arg(long = "p2p.disabled", default_value = "false", value_name = "P2P_DISABLED", action = ArgAction::SetFalse, help_heading = "P2P options")]
pub p2p_disabled: bool,
#[arg(
long = "p2p.addr",
default_value = None,
value_name = "ADDRESS",
help = "Listening address for the P2P protocol.",
help_heading = "P2P options"
)]
pub p2p_addr: Option<String>,
#[arg(
long = "p2p.port",
default_value = "30303",
value_name = "PORT",
help = "TCP port for P2P protocol.",
help = "TCP port for the P2P protocol.",
help_heading = "P2P options"
)]
pub p2p_port: String,
Expand Down Expand Up @@ -308,6 +316,7 @@ impl Default for Options {
authrpc_port: Default::default(),
authrpc_jwtsecret: Default::default(),
p2p_disabled: Default::default(),
p2p_addr: None,
p2p_port: Default::default(),
discovery_port: Default::default(),
network: Default::default(),
Expand Down
28 changes: 14 additions & 14 deletions cmd/ethrex/initializers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ use std::env;
use std::{
fs,
io::IsTerminal,
net::SocketAddr,
net::{IpAddr, SocketAddr},
path::{Path, PathBuf},
sync::Arc,
time::{SystemTime, UNIX_EPOCH},
Expand Down Expand Up @@ -299,22 +299,22 @@ pub fn get_signer(datadir: &Path) -> SecretKey {
}

pub fn get_local_p2p_node(opts: &Options, signer: &SecretKey) -> Node {
let udp_socket_addr = parse_socket_addr("::", &opts.discovery_port)
.expect("Failed to parse discovery address and port");
let tcp_socket_addr =
parse_socket_addr("::", &opts.p2p_port).expect("Failed to parse addr and port");

let p2p_node_ip = local_ip()
.unwrap_or_else(|_| local_ipv6().expect("Neither ipv4 nor ipv6 local address found"));
let tcp_port = opts.p2p_port.parse().expect("Failed to parse p2p port");
let udp_port = opts
.discovery_port
.parse()
.expect("Failed to parse discovery port");

let p2p_node_ip: IpAddr = if let Some(addr) = &opts.p2p_addr {
addr.parse().expect("Failed to parse p2p address")
} else {
local_ip()
.unwrap_or_else(|_| local_ipv6().expect("Neither ipv4 nor ipv6 local address found"))
};

let local_public_key = public_key_from_signing_key(signer);

let node = Node::new(
p2p_node_ip,
udp_socket_addr.port(),
tcp_socket_addr.port(),
local_public_key,
);
let node = Node::new(p2p_node_ip, udp_port, tcp_port, local_public_key);

// TODO Find a proper place to show node information
// https://github.com/lambdaclass/ethrex/issues/836
Expand Down
2 changes: 2 additions & 0 deletions docs/CLI.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ P2P options:

--p2p.disabled

--p2p.addr <ADDRESS>
Listening address for the P2P protocol.

--p2p.port <PORT>
TCP port for P2P protocol.
Expand Down
Loading