core-lightning/connectd/connectd_wire.csv
Rusty Russell d31420211a connectd: add counters to each peer connection.
This allows us to detect when lightningd hasn't seen our latest
disconnect/reconnect; in particular, we would hit the following pattern:

1. lightningd says to connect a subd.
2. connectd disconnects and reconnects.
3. connectd reads message, connects subd.
4. lightningd reads disconnect and reconnect, sends msg to connect to subd again.
5. connectd asserts because subd is alreacy connected.

This way connectd can tell if lightningd is talking about the previous
connection, and ignoere it.

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

6.0 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,counter,u64,
60msgdata,connectd_peer_connected,addr,wireaddr_internal,
61msgdata,connectd_peer_connected,remote_addr,?wireaddr,
62msgdata,connectd_peer_connected,incoming,bool,
63msgdata,connectd_peer_connected,flen,u16,
64msgdata,connectd_peer_connected,features,u8,flen
65# connectd -> master: peer disconnected.
66msgtype,connectd_peer_disconnect_done,2006
67msgdata,connectd_peer_disconnect_done,id,node_id,
68msgdata,connectd_peer_disconnect_done,counter,u64,
69# Master -> connectd: make peer active immediately (we want to talk) (+ fd to subd).
70msgtype,connectd_peer_connect_subd,2004
71msgdata,connectd_peer_connect_subd,id,node_id,
72msgdata,connectd_peer_connect_subd,counter,u64,
73msgdata,connectd_peer_connect_subd,channel_id,channel_id,
74# Connectd -> master: peer said something interesting
75msgtype,connectd_peer_spoke,2005
76msgdata,connectd_peer_spoke,id,node_id,
77msgdata,connectd_peer_spoke,counter,u64,
78msgdata,connectd_peer_spoke,msgtype,u16,
79msgdata,connectd_peer_spoke,channel_id,channel_id,
80# master -> connectd: peer no longer wanted, you can disconnect.
81msgtype,connectd_discard_peer,2015
82msgdata,connectd_discard_peer,id,node_id,
83msgdata,connectd_discard_peer,counter,u64,
84# master -> connectd: give message to peer and disconnect.
85msgtype,connectd_peer_final_msg,2003
86msgdata,connectd_peer_final_msg,id,node_id,
87msgdata,connectd_peer_final_msg,counter,u64,
88msgdata,connectd_peer_final_msg,len,u16,
89msgdata,connectd_peer_final_msg,msg,u8,len
90# master -> connectd: do you have a memleak?
91msgtype,connectd_dev_memleak,2033
92msgtype,connectd_dev_memleak_reply,2133
93msgdata,connectd_dev_memleak_reply,leak,bool,
94# Ping/pong test. Waits for a reply if it expects one.
95msgtype,connectd_ping,2030
96msgdata,connectd_ping,id,node_id,
97msgdata,connectd_ping,num_pong_bytes,u16,
98msgdata,connectd_ping,len,u16,
99msgtype,connectd_ping_reply,2130
100# False if we there was already a ping in progress.
101msgdata,connectd_ping_reply,sent,bool,
102# 0 == no pong expected, otherwise length of pong.
103msgdata,connectd_ping_reply,totlen,u16,
104# We tell lightningd we got an onionmsg
105msgtype,connectd_got_onionmsg_to_us,2145
106msgdata,connectd_got_onionmsg_to_us,obs2,bool,
107msgdata,connectd_got_onionmsg_to_us,node_alias,pubkey,
108msgdata,connectd_got_onionmsg_to_us,self_id,?secret,
109msgdata,connectd_got_onionmsg_to_us,reply_blinding,?pubkey,
110msgdata,connectd_got_onionmsg_to_us,reply_first_node,?pubkey,
111msgdata,connectd_got_onionmsg_to_us,reply_path_len,u16,
112msgdata,connectd_got_onionmsg_to_us,reply_path,onionmsg_path,reply_path_len
113msgdata,connectd_got_onionmsg_to_us,rawmsg_len,u16,
114msgdata,connectd_got_onionmsg_to_us,rawmsg,u8,rawmsg_len
115# Lightningd tells us to send an onion message.
116msgtype,connectd_send_onionmsg,2041
117msgdata,connectd_send_onionmsg,obs2,bool,
118msgdata,connectd_send_onionmsg,id,node_id,
119msgdata,connectd_send_onionmsg,onion_len,u16,
120msgdata,connectd_send_onionmsg,onion,u8,onion_len
121msgdata,connectd_send_onionmsg,blinding,pubkey,
122# A custom message that we got from a peer and don't know how to handle, so we
123# forward it to the master for further handling.
124msgtype,connectd_custommsg_in,2110
125msgdata,connectd_custommsg_in,id,node_id,
126msgdata,connectd_custommsg_in,msg_len,u16,
127msgdata,connectd_custommsg_in,msg,u8,msg_len
128# A custom message that the lightningd tells us to send to the peer.
129msgtype,connectd_custommsg_out,2011
130msgdata,connectd_custommsg_out,id,node_id,
131msgdata,connectd_custommsg_out,msg_len,u16,
132msgdata,connectd_custommsg_out,msg,u8,msg_len
133# master -> connect: stop sending gossip.
134msgtype,connectd_dev_suppress_gossip,2032