core-lightning/connectd/connectd_wire.csv
Rusty Russell 41b379ed89 lightningd: hand fds to connectd, not receive them from connectd.
Before this patch:
1. connectd says it's connected (peer_connected)
2. we tell connectd we want to talk about each channel (peer_make_active)
3. connectd gives us an fd for each channel, and we connect it to a subd (peer_active)
4. OR, connectd says it sent something about a channel we didn't tell it about, with an fd (peer_active)

Now:
1. connectd says it's connected (peer_connected)
2. we start all appropriate subds and tell connectd to what channels/fds (peer_connect_subd).
3. if connectd says it sent something about a channel we didn't tell it about, we either tell
   it to hang up (peer_final_msg), or connect a new opening daemon (peer_connect_subd).

This is the minimal-size patch, which is why we create socket pairs in
so many places to use the existing functions.  Many cleanups are
possible, since the new flow is so simple.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-07-18 20:50:04 -05:00

5.7 KiB

1#include <bitcoin/block.h>
2#include <common/channel_id.h>
3#include <common/cryptomsg.h>
4#include <common/features.h>
5#include <common/node_id.h>
6#include <common/wireaddr.h>
7#include <wire/onion_wire.h>
8msgtype,connectd_init,2000
9msgdata,connectd_init,chainparams,chainparams,
10msgdata,connectd_init,our_features,feature_set,
11msgdata,connectd_init,id,node_id,
12msgdata,connectd_init,num_wireaddrs,u16,
13msgdata,connectd_init,wireaddrs,wireaddr_internal,num_wireaddrs
14msgdata,connectd_init,listen_announce,enum addr_listen_announce,num_wireaddrs
15msgdata,connectd_init,tor_proxyaddr,?wireaddr,
16msgdata,connectd_init,use_tor_proxy_always,bool,
17msgdata,connectd_init,dev_allow_localhost,bool,
18msgdata,connectd_init,use_dns,bool,
19msgdata,connectd_init,tor_password,wirestring,
20msgdata,connectd_init,timeout_secs,u32,
21msgdata,connectd_init,websocket_helper,wirestring,
22msgdata,connectd_init,websocket_port,u16,
23msgdata,connectd_init,announce_websocket,bool,
24msgdata,connectd_init,dev_fast_gossip,bool,
25# If this is set, then fd 5 is dev_disconnect_fd.
26msgdata,connectd_init,dev_disconnect,bool,
27msgdata,connectd_init,dev_no_ping_timer,bool,
28# Connectd->master, here are the addresses I bound, can announce.
29msgtype,connectd_init_reply,2100
30msgdata,connectd_init_reply,num_bindings,u16,
31msgdata,connectd_init_reply,bindings,wireaddr_internal,num_bindings
32msgdata,connectd_init_reply,num_announceable,u16,
33msgdata,connectd_init_reply,announceable,wireaddr,num_announceable
34msgdata,connectd_init_reply,failmsg,?wirestring,
35# Activate the connect daemon, so others can connect.
36msgtype,connectd_activate,2025
37# Do we listen?
38msgdata,connectd_activate,listen,bool,
39# Connectd->master, I am ready.
40msgtype,connectd_activate_reply,2125
41msgdata,connectd_activate_reply,failmsg,?wirestring,
42# Master -> connectd: connect to a peer.
43msgtype,connectd_connect_to_peer,2001
44msgdata,connectd_connect_to_peer,id,node_id,
45msgdata,connectd_connect_to_peer,seconds_waited,u32,
46msgdata,connectd_connect_to_peer,len,u32,
47msgdata,connectd_connect_to_peer,addrs,wireaddr,len
48msgdata,connectd_connect_to_peer,addrhint,?wireaddr_internal,
49# Connectd->master: connect failed.
50msgtype,connectd_connect_failed,2020
51msgdata,connectd_connect_failed,id,node_id,
52msgdata,connectd_connect_failed,failcode,errcode_t,
53msgdata,connectd_connect_failed,failreason,wirestring,
54msgdata,connectd_connect_failed,seconds_to_delay,u32,
55msgdata,connectd_connect_failed,addrhint,?wireaddr_internal,
56# Connectd -> master: we got a peer.
57msgtype,connectd_peer_connected,2002
58msgdata,connectd_peer_connected,id,node_id,
59msgdata,connectd_peer_connected,addr,wireaddr_internal,
60msgdata,connectd_peer_connected,remote_addr,?wireaddr,
61msgdata,connectd_peer_connected,incoming,bool,
62msgdata,connectd_peer_connected,flen,u16,
63msgdata,connectd_peer_connected,features,u8,flen
64# connectd -> master: peer disconnected.
65msgtype,connectd_peer_disconnect_done,2006
66msgdata,connectd_peer_disconnect_done,id,node_id,
67# Master -> connectd: make peer active immediately (we want to talk) (+ fd to subd).
68msgtype,connectd_peer_connect_subd,2004
69msgdata,connectd_peer_connect_subd,id,node_id,
70msgdata,connectd_peer_connect_subd,channel_id,channel_id,
71# Connectd -> master: peer said something interesting
72msgtype,connectd_peer_spoke,2005
73msgdata,connectd_peer_spoke,id,node_id,
74msgdata,connectd_peer_spoke,msgtype,u16,
75msgdata,connectd_peer_spoke,channel_id,channel_id,
76# master -> connectd: peer no longer wanted, you can disconnect.
77msgtype,connectd_discard_peer,2015
78msgdata,connectd_discard_peer,id,node_id,
79# master -> connectd: give message to peer and disconnect.
80msgtype,connectd_peer_final_msg,2003
81msgdata,connectd_peer_final_msg,id,node_id,
82msgdata,connectd_peer_final_msg,len,u16,
83msgdata,connectd_peer_final_msg,msg,u8,len
84# master -> connectd: do you have a memleak?
85msgtype,connectd_dev_memleak,2033
86msgtype,connectd_dev_memleak_reply,2133
87msgdata,connectd_dev_memleak_reply,leak,bool,
88# Ping/pong test. Waits for a reply if it expects one.
89msgtype,connectd_ping,2030
90msgdata,connectd_ping,id,node_id,
91msgdata,connectd_ping,num_pong_bytes,u16,
92msgdata,connectd_ping,len,u16,
93msgtype,connectd_ping_reply,2130
94# False if we there was already a ping in progress.
95msgdata,connectd_ping_reply,sent,bool,
96# 0 == no pong expected, otherwise length of pong.
97msgdata,connectd_ping_reply,totlen,u16,
98# We tell lightningd we got an onionmsg
99msgtype,connectd_got_onionmsg_to_us,2145
100msgdata,connectd_got_onionmsg_to_us,obs2,bool,
101msgdata,connectd_got_onionmsg_to_us,node_alias,pubkey,
102msgdata,connectd_got_onionmsg_to_us,self_id,?secret,
103msgdata,connectd_got_onionmsg_to_us,reply_blinding,?pubkey,
104msgdata,connectd_got_onionmsg_to_us,reply_first_node,?pubkey,
105msgdata,connectd_got_onionmsg_to_us,reply_path_len,u16,
106msgdata,connectd_got_onionmsg_to_us,reply_path,onionmsg_path,reply_path_len
107msgdata,connectd_got_onionmsg_to_us,rawmsg_len,u16,
108msgdata,connectd_got_onionmsg_to_us,rawmsg,u8,rawmsg_len
109# Lightningd tells us to send an onion message.
110msgtype,connectd_send_onionmsg,2041
111msgdata,connectd_send_onionmsg,obs2,bool,
112msgdata,connectd_send_onionmsg,id,node_id,
113msgdata,connectd_send_onionmsg,onion_len,u16,
114msgdata,connectd_send_onionmsg,onion,u8,onion_len
115msgdata,connectd_send_onionmsg,blinding,pubkey,
116# A custom message that we got from a peer and don't know how to handle, so we
117# forward it to the master for further handling.
118msgtype,connectd_custommsg_in,2110
119msgdata,connectd_custommsg_in,id,node_id,
120msgdata,connectd_custommsg_in,msg_len,u16,
121msgdata,connectd_custommsg_in,msg,u8,msg_len
122# A custom message that the lightningd tells us to send to the peer.
123msgtype,connectd_custommsg_out,2011
124msgdata,connectd_custommsg_out,id,node_id,
125msgdata,connectd_custommsg_out,msg_len,u16,
126msgdata,connectd_custommsg_out,msg,u8,msg_len
127# master -> connect: stop sending gossip.
128msgtype,connectd_dev_suppress_gossip,2032