From 7ff62b4a00c71987841db6cc1f63f8533f522b08 Mon Sep 17 00:00:00 2001 From: Vincenzo Palazzo Date: Mon, 20 Jun 2022 22:38:18 +0100 Subject: [PATCH] lightnind: remove`DEFAULT_PORT` global definition Signed-off-by: Vincenzo Palazzo --- bitcoin/chainparams.c | 7 +++++++ bitcoin/chainparams.h | 5 +++++ common/test/run-wireaddr.c | 15 ++++++++++++++- common/wireaddr.c | 5 +++-- common/wireaddr.h | 8 -------- connectd/connectd.c | 5 +++-- connectd/test/run-netaddress.c | 2 ++ devtools/gossipwith.c | 11 ++++++++--- gossipd/gossipd.c | 4 ++-- gossipd/test/Makefile | 1 - lightningd/connect_control.c | 2 +- lightningd/lightningd.c | 2 +- tests/test_connection.py | 10 +++++----- wallet/wallet.c | 4 ++-- wire/test/run-tlvstream.c | 3 +++ 15 files changed, 56 insertions(+), 28 deletions(-) diff --git a/bitcoin/chainparams.c b/bitcoin/chainparams.c index a7539e65b..ac48ee5da 100644 --- a/bitcoin/chainparams.c +++ b/bitcoin/chainparams.c @@ -1,4 +1,5 @@ #include "config.h" +#include #include #include #include @@ -269,3 +270,9 @@ const char *chainparams_get_network_names(const tal_t *ctx) tal_append_fmt(&networks_string, ", %s", networks[i].network_name); return networks_string; } + +int chainparams_get_ln_port(const struct chainparams *params) +{ + assert(params); + return params->ln_port; +} diff --git a/bitcoin/chainparams.h b/bitcoin/chainparams.h index 8bf4ee29c..f4e493de6 100644 --- a/bitcoin/chainparams.h +++ b/bitcoin/chainparams.h @@ -74,4 +74,9 @@ const struct chainparams *chainparams_by_chainhash(const struct bitcoin_blkid *c */ const char *chainparams_get_network_names(const tal_t *ctx); +/** + * chainparams_get_ln_port - Return the lightning network default port by + * network if the chainparams is initialized, otherwise 9735 as mock port + */ +int chainparams_get_ln_port(const struct chainparams *params); #endif /* LIGHTNING_BITCOIN_CHAINPARAMS_H */ diff --git a/common/test/run-wireaddr.c b/common/test/run-wireaddr.c index 3fc66fa03..2eec576ba 100644 --- a/common/test/run-wireaddr.c +++ b/common/test/run-wireaddr.c @@ -1,9 +1,22 @@ #include "config.h" -#include "../wireaddr.c" +#include #include #include #include +int simple_get_ln_port(const struct chainparams *params); + +#define chainparams_get_ln_port simple_get_ln_port + +#include "../wireaddr.c" + +#define DEFAULT_PORT simple_get_ln_port(NULL) + +int simple_get_ln_port(const struct chainparams *params UNNEEDED) +{ + return 9735; +} + /* AUTOGENERATED MOCKS START */ /* Generated stub for amount_asset_is_main */ bool amount_asset_is_main(struct amount_asset *asset UNNEEDED) diff --git a/common/wireaddr.c b/common/wireaddr.c index b81d9bf3a..f43368400 100644 --- a/common/wireaddr.c +++ b/common/wireaddr.c @@ -1,6 +1,7 @@ #include "config.h" #include #include +#include #include #include #include @@ -612,7 +613,7 @@ bool parse_wireaddr_internal(const char *arg, struct wireaddr_internal *addr, * an onion address. */ if (strstarts(arg, "autotor:")) { addr->itype = ADDR_INTERNAL_AUTOTOR; - addr->u.torservice.port = DEFAULT_PORT; + addr->u.torservice.port = chainparams_get_ln_port(chainparams); /* Format is separated by slash. */ char **parts = tal_strsplit(tmpctx, arg, "/", STR_EMPTY_OK); @@ -644,7 +645,7 @@ bool parse_wireaddr_internal(const char *arg, struct wireaddr_internal *addr, if (strstarts(arg, "statictor:")) { bool use_magic_blob = true; addr->itype = ADDR_INTERNAL_STATICTOR; - addr->u.torservice.port = DEFAULT_PORT; + addr->u.torservice.port = chainparams_get_ln_port(chainparams); memset(addr->u.torservice.blob, 0, sizeof(addr->u.torservice.blob)); /* Format is separated by slash. */ diff --git a/common/wireaddr.h b/common/wireaddr.h index 6c1401e74..751cd8c8a 100644 --- a/common/wireaddr.h +++ b/common/wireaddr.h @@ -12,14 +12,6 @@ struct sockaddr_in6; struct sockaddr_in; struct sockaddr_un; -/* BOLT #1: - * - * The default TCP port is 9735. This corresponds to hexadecimal - * `0x2607`: the Unicode code point for LIGHTNING. - */ -#define DEFAULT_PORT 9735 - - /* BOLT #7: * * The following `address descriptor` types are defined: diff --git a/connectd/connectd.c b/connectd/connectd.c index 635f251b4..fc2b4de93 100644 --- a/connectd/connectd.c +++ b/connectd/connectd.c @@ -8,6 +8,7 @@ * it. */ #include "config.h" +#include #include #include #include @@ -1707,7 +1708,7 @@ static void add_seed_addrs(struct wireaddr_internal **addrs, for (size_t i = 0; i < tal_count(hostnames); i++) { status_peer_debug(id, "Resolving %s", hostnames[i]); - new_addrs = wireaddr_from_hostname(tmpctx, hostnames[i], DEFAULT_PORT, + new_addrs = wireaddr_from_hostname(tmpctx, hostnames[i], chainparams_get_ln_port(chainparams), NULL, broken_reply, NULL); if (new_addrs) { for (size_t j = 0; j < tal_count(new_addrs); j++) { @@ -1859,7 +1860,7 @@ static void try_connect_peer(struct daemon *daemon, for (size_t i = 0; i < tal_count(hostnames); i++) { wireaddr_from_unresolved(&unresolved, hostnames[i], - DEFAULT_PORT); + chainparams_get_ln_port(chainparams)); tal_arr_expand(&addrs, unresolved); } } else if (daemon->use_dns) { diff --git a/connectd/test/run-netaddress.c b/connectd/test/run-netaddress.c index 8f6482cb1..586ec1644 100644 --- a/connectd/test/run-netaddress.c +++ b/connectd/test/run-netaddress.c @@ -10,6 +10,8 @@ #include #include +#define DEFAULT_PORT 9735 + /* AUTOGENERATED MOCKS START */ /* Generated stub for amount_asset_is_main */ bool amount_asset_is_main(struct amount_asset *asset UNNEEDED) diff --git a/devtools/gossipwith.c b/devtools/gossipwith.c index 3e7f0481a..35f60b726 100644 --- a/devtools/gossipwith.c +++ b/devtools/gossipwith.c @@ -21,6 +21,7 @@ #include #include +#define chainparams_get_ln_port simple_get_ln_port #define io_write_ simple_write #define io_read_ simple_read #define io_close simple_close @@ -45,7 +46,12 @@ static struct io_plan *simple_close(struct io_conn *conn) return NULL; } - #include "../connectd/handshake.c" +static int simple_get_ln_port(const struct chainparams *params UNNEEDED) +{ + return 9735; +} + + #include "../connectd/handshake.c" /* This makes the handshake prototypes work. */ struct io_conn { @@ -322,7 +328,7 @@ int main(int argc, char *argv[]) opt_usage_exit_fail("Invalid id %.*s", (int)(at - argv[1]), argv[1]); - if (!parse_wireaddr_internal(at+1, &addr, DEFAULT_PORT, NULL, + if (!parse_wireaddr_internal(at+1, &addr, simple_get_ln_port(NULL), NULL, true, false, true, &err_msg)) opt_usage_exit_fail("%s '%s'", err_msg, argv[1]); @@ -376,4 +382,3 @@ int main(int argc, char *argv[]) handshake_success, argv+2); exit(0); } - diff --git a/gossipd/gossipd.c b/gossipd/gossipd.c index a776d294f..4a5f5b77d 100644 --- a/gossipd/gossipd.c +++ b/gossipd/gossipd.c @@ -350,8 +350,8 @@ static void handle_remote_addr(struct daemon *daemon, const u8 *msg) if (!fromwire_gossipd_remote_addr(msg, &remote_addr)) master_badmsg(WIRE_GOSSIPD_REMOTE_ADDR, msg); - /* current best guess is that we use DEFAULT_PORT on public internet */ - remote_addr.port = DEFAULT_PORT; + /* current best guess is that we use default port on public internet */ + remote_addr.port = chainparams_get_ln_port(chainparams); switch (remote_addr.type) { case ADDR_TYPE_IPV4: diff --git a/gossipd/test/Makefile b/gossipd/test/Makefile index 796e1a07e..fe39a0bbb 100644 --- a/gossipd/test/Makefile +++ b/gossipd/test/Makefile @@ -53,4 +53,3 @@ $(GOSSIPD_TEST_PROGRAMS): $(GOSSIPD_TEST_COMMON_OBJS) $(BITCOIN_OBJS) $(GOSSIPD_TEST_OBJS): $(GOSSIPD_HEADERS) $(GOSSIPD_SRC) gossipd-tests: $(GOSSIPD_TEST_PROGRAMS:%=unittest/%) - diff --git a/lightningd/connect_control.c b/lightningd/connect_control.c index 4439c3b41..620231a6b 100644 --- a/lightningd/connect_control.c +++ b/lightningd/connect_control.c @@ -141,7 +141,7 @@ static struct command_result *json_connect(struct command *cmd, /* Is there a port? */ if (!port) { port = tal(cmd, u32); - *port = chainparams->ln_port; + *port = chainparams_get_ln_port(chainparams); } addr = tal(cmd, struct wireaddr_internal); if (!parse_wireaddr_internal(name, addr, *port, false, diff --git a/lightningd/lightningd.c b/lightningd/lightningd.c index 3bff017fd..45e71ed14 100644 --- a/lightningd/lightningd.c +++ b/lightningd/lightningd.c @@ -970,7 +970,7 @@ int main(int argc, char *argv[]) /*~ Set the default portnum according to the used network * similarly to what Bitcoin Core does to ports by default. */ - ld->portnum = chainparams->ln_port; + ld->portnum = chainparams_get_ln_port(chainparams); /*~ Initialize all the plugins we just registered, so they can * do their thing and tell us about themselves (including diff --git a/tests/test_connection.py b/tests/test_connection.py index 89e7e1e6e..455b876e6 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -100,14 +100,14 @@ def test_remote_addr(node_factory, bitcoind): # must not yet be send as we need the same `remote_addr` confirmed from a # another peer we have a channel with. # Note: In this state l2 stores remote_addr as reported by l1 - assert not l2.daemon.is_in_log("Update our node_announcement for discovered address: 127.0.0.1:9735") + assert not l2.daemon.is_in_log("Update our node_announcement for discovered address: 127.0.0.1:19846") l1.restart() l2.rpc.connect(l1.info['id'], 'localhost', l1.port) l2.daemon.wait_for_log("Peer says it sees our address as: 127.0.0.1:[0-9]{5}") # Now l1 sees l2 but without announced addresses. assert(len(l1.rpc.listnodes(l2.info['id'])['nodes'][0]['addresses']) == 0) - assert not l2.daemon.is_in_log("Update our node_announcement for discovered address: 127.0.0.1:9735") + assert not l2.daemon.is_in_log("Update our node_announcement for discovered address: 127.0.0.1:19846") # connect second node. This will not yet trigger `node_annoucement` update, # as we again do not have a channel at the time we connected. @@ -117,20 +117,20 @@ def test_remote_addr(node_factory, bitcoind): # fund channel and check we didn't send Update earlier already l2.fundchannel(l3, wait_for_active=True) bitcoind.generate_block(5) - assert not l2.daemon.is_in_log("Update our node_announcement for discovered address: 127.0.0.1:9735") + assert not l2.daemon.is_in_log("Update our node_announcement for discovered address: 127.0.0.1:19846") # restart, reconnect and re-check for updated node_annoucement. This time # l2 sees that two different peers with channel reported the same `remote_addr`. l3.restart() l2.rpc.connect(l3.info['id'], 'localhost', l3.port) l2.daemon.wait_for_log("Peer says it sees our address as: 127.0.0.1:[0-9]{5}") - l2.daemon.wait_for_log("Update our node_announcement for discovered address: 127.0.0.1:9735") + l2.daemon.wait_for_log("Update our node_announcement for discovered address: 127.0.0.1:19846") l1.daemon.wait_for_log(f"Received node_announcement for node {l2.info['id']}") address = l1.rpc.listnodes(l2.info['id'])['nodes'][0]['addresses'][0] assert address['type'] == "ipv4" assert address['address'] == "127.0.0.1" - assert address['port'] == 9735 + assert address['port'] == 19846 @pytest.mark.developer("needs DEVELOPER=1 for fast gossip and --dev-allow-localhost for local remote_addr") diff --git a/wallet/wallet.c b/wallet/wallet.c index 346ae90b2..2c583f94b 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -838,11 +838,11 @@ static struct peer *wallet_peer_load(struct wallet *w, const u64 dbid) /* This can happen for peers last seen on Torv2! */ addrstr = db_col_strdup(tmpctx, stmt, "address"); - if (!parse_wireaddr_internal(addrstr, &addr, DEFAULT_PORT, + if (!parse_wireaddr_internal(addrstr, &addr, chainparams_get_ln_port(chainparams), false, false, true, true, NULL)) { log_unusual(w->log, "Unparsable peer address %s: replacing", addrstr); - parse_wireaddr_internal("127.0.0.1:1", &addr, DEFAULT_PORT, + parse_wireaddr_internal("127.0.0.1:1", &addr, chainparams_get_ln_port(chainparams), false, false, true, true, NULL); } diff --git a/wire/test/run-tlvstream.c b/wire/test/run-tlvstream.c index dacdb3d2e..c98909525 100644 --- a/wire/test/run-tlvstream.c +++ b/wire/test/run-tlvstream.c @@ -25,6 +25,9 @@ static const char *reason; /* Generated stub for chainparams_by_chainhash */ const struct chainparams *chainparams_by_chainhash(const struct bitcoin_blkid *chain_hash UNNEEDED) { fprintf(stderr, "chainparams_by_chainhash called!\n"); abort(); } +/* Generate std for chainparams_get_ln_port */ +int chainparams_get_ln_port(const struct chainparams *params UNNEEDED) +{ fprintf(stderr, "chainparams_get_ln_port called!\n"); abort(); } /* Generated stub for fromwire_channel_id */ bool fromwire_channel_id(const u8 **cursor UNNEEDED, size_t *max UNNEEDED, struct channel_id *channel_id UNNEEDED)