From 79ebe1b7bdb913321c4326970afd2fbe8246741d Mon Sep 17 00:00:00 2001 From: kdeme <7857583+kdeme@users.noreply.github.com> Date: Tue, 9 Dec 2025 09:46:54 +0100 Subject: [PATCH 1/3] Portal: use new eth/nat setupAddress This avoids doing an unneeded portmap for TCP --- portal/client/nimbus_portal_client.nim | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/portal/client/nimbus_portal_client.nim b/portal/client/nimbus_portal_client.nim index fd12d60343..c21ea7caa5 100644 --- a/portal/client/nimbus_portal_client.nim +++ b/portal/client/nimbus_portal_client.nim @@ -105,10 +105,14 @@ proc run(portalClient: PortalClient, config: PortalConf) {.raises: [CatchableErr let bindIp = config.listenAddress udpPort = Port(config.udpPort) - # TODO: allow for no TCP port mapping! - (extIp, _, extUdpPort) = setupAddress( - config.nat, config.listenAddress, udpPort, udpPort, "nimbus_portal_client" + (extIp, extPorts) = setupAddress( + config.nat, config.listenAddress, @[(port: udpPort, protocol: PortProtocol.UDP)], "nimbus_portal_client" ) + extUdpPort = + if isSome(extPorts[0]): + Opt.some(extPorts[0].value().port) + else: + Opt.none(Port) (netkey, newNetKey) = if config.networkKey.isSome(): (config.networkKey.get(), true) From 9f722e5dda306b44abbfda660b17901426115f16 Mon Sep 17 00:00:00 2001 From: kdeme <7857583+kdeme@users.noreply.github.com> Date: Tue, 9 Dec 2025 10:00:38 +0100 Subject: [PATCH 2/3] Use toPort helper + nph --- portal/client/nimbus_portal_client.nim | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/portal/client/nimbus_portal_client.nim b/portal/client/nimbus_portal_client.nim index c21ea7caa5..3e730ce01a 100644 --- a/portal/client/nimbus_portal_client.nim +++ b/portal/client/nimbus_portal_client.nim @@ -106,13 +106,12 @@ proc run(portalClient: PortalClient, config: PortalConf) {.raises: [CatchableErr bindIp = config.listenAddress udpPort = Port(config.udpPort) (extIp, extPorts) = setupAddress( - config.nat, config.listenAddress, @[(port: udpPort, protocol: PortProtocol.UDP)], "nimbus_portal_client" + config.nat, + config.listenAddress, + @[(port: udpPort, protocol: PortProtocol.UDP)], + "nimbus_portal_client", ) - extUdpPort = - if isSome(extPorts[0]): - Opt.some(extPorts[0].value().port) - else: - Opt.none(Port) + extUdpPort = extPorts[0].toPort() (netkey, newNetKey) = if config.networkKey.isSome(): (config.networkKey.get(), true) From adda044395b94b523ced2cb62d65348265652f11 Mon Sep 17 00:00:00 2001 From: kdeme <7857583+kdeme@users.noreply.github.com> Date: Thu, 11 Dec 2025 12:07:57 +0100 Subject: [PATCH 3/3] Use the non-deprecated version also for nec and portalcli --- execution_chain/nimbus_execution_client.nim | 13 +++++++++++-- portal/tools/portalcli.nim | 10 +++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/execution_chain/nimbus_execution_client.nim b/execution_chain/nimbus_execution_client.nim index 5f564424a1..51aa16faf1 100644 --- a/execution_chain/nimbus_execution_client.nim +++ b/execution_chain/nimbus_execution_client.nim @@ -98,8 +98,17 @@ proc setupP2P(nimbus: NimbusNode, config: ExecutionClientConf, com: CommonRef) = fatal "Get network keys error", msg = error quit(QuitFailure) natId = NimbusName & " " & NimbusVersion - (extIp, extTcpPort, extUdpPort) = - setupAddress(config.nat, config.listenAddress, config.tcpPort, config.udpPort, natId) + (extIp, extPorts) = setupAddress( + config.nat, + config.listenAddress, + @[ + (port: config.tcpPort, protocol: PortProtocol.TCP), + (port: config.udpPort, protocol: PortProtocol.UDP), + ], + natId, + ) + extTcpPort = extPorts[0].toPort() + extUdpPort = extPorts[1].toPort() bootstrapNodes = config.getBootstrapNodes() fc = nimbus.fc diff --git a/portal/tools/portalcli.nim b/portal/tools/portalcli.nim index 781cc73538..2b57a49a63 100644 --- a/portal/tools/portalcli.nim +++ b/portal/tools/portalcli.nim @@ -220,9 +220,13 @@ proc run(config: PortalCliConf) = rng = newRng() bindIp = config.listenAddress udpPort = Port(config.udpPort) - # TODO: allow for no TCP port mapping! - (extIp, _, extUdpPort) = - setupAddress(config.nat, config.listenAddress, udpPort, udpPort, "portalcli") + (extIp, extPorts) = setupAddress( + config.nat, + config.listenAddress, + @[(port: udpPort, protocol: PortProtocol.UDP)], + "portalcli", + ) + extUdpPort = extPorts[0].toPort() var bootstrapRecords: seq[Record] loadBootstrapFile(string config.bootstrapNodesFile, bootstrapRecords)