From 7a7adaf964c6bf3b91f44ffb3d3ec69609ea0a1f Mon Sep 17 00:00:00 2001 From: Michael Schmoock Date: Tue, 20 Dec 2022 20:18:55 +0100 Subject: [PATCH] gossip: pass ip_discovery as enum --- gossipd/gossip_generation.c | 4 +++- gossipd/gossipd.c | 4 ++-- gossipd/gossipd.h | 3 ++- gossipd/gossipd_wire.csv | 2 +- tests/test_connection.py | 3 ++- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/gossipd/gossip_generation.c b/gossipd/gossip_generation.c index 5c29de06c025..755a887d2c37 100644 --- a/gossipd/gossip_generation.c +++ b/gossipd/gossip_generation.c @@ -3,6 +3,7 @@ #include "config.h" #include #include +#include #include #include #include @@ -46,7 +47,8 @@ static u8 *create_node_announcement(const tal_t *ctx, struct daemon *daemon, /* Add discovered IPs v4/v6 verified by peer `remote_addr` feature. */ /* Only do that if we don't have any addresses announced or * `config.ip_discovery` is explicitly enabled. */ - if (count_announceable == 0 || daemon->ip_discovery) { + if ((daemon->ip_discovery == OPT_AUTOBOOL_AUTO && count_announceable == 0) || + daemon->ip_discovery == OPT_AUTOBOOL_TRUE) { if (daemon->discovered_ip_v4 != NULL && !wireaddr_arr_contains(was, daemon->discovered_ip_v4)) tal_arr_expand(&was, *daemon->discovered_ip_v4); diff --git a/gossipd/gossipd.c b/gossipd/gossipd.c index 54545231af08..8d1f002f6eae 100644 --- a/gossipd/gossipd.c +++ b/gossipd/gossipd.c @@ -380,7 +380,7 @@ static void handle_discovered_ip(struct daemon *daemon, const u8 *msg) return; update_node_annoucement: - if (daemon->ip_discovery) + if (daemon->ip_discovery == OPT_AUTOBOOL_TRUE) status_debug("Update our node_announcement for discovered address: %s", fmt_wireaddr(tmpctx, &discovered_ip)); maybe_send_own_node_announce(daemon, false); @@ -1098,7 +1098,7 @@ int main(int argc, char *argv[]) daemon->rates = NULL; daemon->discovered_ip_v4 = NULL; daemon->discovered_ip_v6 = NULL; - daemon->ip_discovery = false; + daemon->ip_discovery = OPT_AUTOBOOL_AUTO; list_head_init(&daemon->deferred_updates); /* Tell the ecdh() function how to talk to hsmd */ diff --git a/gossipd/gossipd.h b/gossipd/gossipd.h index 3294eb48eae8..8dbb4ee6a312 100644 --- a/gossipd/gossipd.h +++ b/gossipd/gossipd.h @@ -1,6 +1,7 @@ #ifndef LIGHTNING_GOSSIPD_GOSSIPD_H #define LIGHTNING_GOSSIPD_GOSSIPD_H #include "config.h" +#include #include #include #include @@ -51,7 +52,7 @@ struct daemon { /* verified remote_addr as reported by recent peers */ struct wireaddr *discovered_ip_v4; struct wireaddr *discovered_ip_v6; - bool ip_discovery; + enum opt_autobool ip_discovery; /* Timer until we can send an updated node_announcement */ struct oneshot *node_announce_timer; diff --git a/gossipd/gossipd_wire.csv b/gossipd/gossipd_wire.csv index cc02141a418d..2e0b47c1fdc9 100644 --- a/gossipd/gossipd_wire.csv +++ b/gossipd/gossipd_wire.csv @@ -16,7 +16,7 @@ msgdata,gossipd_init,announceable,wireaddr,num_announceable msgdata,gossipd_init,dev_gossip_time,?u32, msgdata,gossipd_init,dev_fast_gossip,bool, msgdata,gossipd_init,dev_fast_gossip_prune,bool, -msgdata,gossipd_init,ip_discovery,bool, +msgdata,gossipd_init,ip_discovery,u32, msgtype,gossipd_init_reply,3100 diff --git a/tests/test_connection.py b/tests/test_connection.py index 133bec142305..ff020e3c373d 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -73,7 +73,8 @@ def test_remote_addr(node_factory, bitcoind): # don't announce anything per se opts = {'may_reconnect': True, 'dev-allow-localhost': None, - 'dev-no-reconnect': None} + 'dev-no-reconnect': None, + 'ip-discovery': True} l1, l2, l3 = node_factory.get_nodes(3, opts) # Disable announcing local autobind addresses with dev-allow-localhost.