mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 07:04:22 +01:00
Clean up network options.
It's become clear that our network options are insufficient, with the coming addition of Tor and unix domain support. Currently: 1. We always bind to local IPv4 and IPv6 sockets, unless --port=0, --offline, or any address is specified explicitly. If they're routable, we announce. 2. --addr is used to announce, but not to control binding. After this change: 1. --port is deprecated. 2. --addr controls what we bind to and announce. 3. --bind-addr/--announce-addr can be used to control one and not the other. 4. Unless --autolisten=0, we add local IPv4 & IPv6 port 9735 (and announce if they are routable). 5. --offline still overrides listening (though announcing is still the same). This means we can bind to as many ports/interfaces as we want, and for special effects we can announce different things (eg. we're sitting behind a port forward or a proxy). What remains to implement is semi-automatic binding: we should be able to say '--addr=0.0.0.0:9999' and have the address resolve at bind time, or even '--addr=0.0.0.0:0' and have the port autoresolve too (you could determine what it was from 'lightning-cli getinfo'. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
00537fde43
commit
fe96fe10c7
@@ -37,10 +37,22 @@ struct wireaddr {
|
||||
u16 port;
|
||||
};
|
||||
|
||||
/* We use wireaddr to tell gossipd both what to listen on, and what to
|
||||
* announce */
|
||||
enum addr_listen_announce {
|
||||
ADDR_LISTEN = (1 << 0),
|
||||
ADDR_ANNOUNCE = (1 << 1),
|
||||
ADDR_LISTEN_AND_ANNOUNCE = ADDR_LISTEN|ADDR_ANNOUNCE
|
||||
};
|
||||
|
||||
/* Inserts a single ADDR_TYPE_PADDING if addr is NULL */
|
||||
void towire_wireaddr(u8 **pptr, const struct wireaddr *addr);
|
||||
bool fromwire_wireaddr(const u8 **cursor, size_t *max, struct wireaddr *addr);
|
||||
|
||||
enum addr_listen_announce fromwire_addr_listen_announce(const u8 **cursor,
|
||||
size_t *max);
|
||||
void towire_addr_listen_announce(u8 **pptr, enum addr_listen_announce ala);
|
||||
|
||||
bool parse_wireaddr(const char *arg, struct wireaddr *addr, u16 port, const char **err_msg);
|
||||
|
||||
char *fmt_wireaddr(const tal_t *ctx, const struct wireaddr *a);
|
||||
|
||||
Reference in New Issue
Block a user