mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-08 14:50:26 +01:00
fca5a9ef30
This resolves the problem where both channeld and gossipd can generate updates, and they can have the same timestamp. gossipd is always able to generate them, so can ensure timestamp moves forward. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
9.1 KiB
9.1 KiB
1 | #include <common/cryptomsg.h> |
---|---|
2 | #include <common/wireaddr.h> |
3 | #include <wire/gen_onion_wire.h> |
4 | # Initialize the gossip daemon. |
5 | gossipctl_init,3000 |
6 | gossipctl_init,,broadcast_interval,u32 |
7 | gossipctl_init,,chain_hash,struct bitcoin_blkid |
8 | gossipctl_init,,id,struct pubkey |
9 | gossipctl_init,,gflen,u16 |
10 | gossipctl_init,,gfeatures,gflen*u8 |
11 | gossipctl_init,,lflen,u16 |
12 | gossipctl_init,,lfeatures,lflen*u8 |
13 | gossipctl_init,,num_wireaddrs,u16 |
14 | gossipctl_init,,wireaddrs,num_wireaddrs*struct wireaddr_internal |
15 | gossipctl_init,,listen_announce,num_wireaddrs*enum addr_listen_announce |
16 | gossipctl_init,,rgb,3*u8 |
17 | gossipctl_init,,alias,32*u8 |
18 | gossipctl_init,,update_channel_interval,u32 |
19 | gossipctl_init,,reconnect,bool |
20 | # This is 0 or 1. |
21 | gossipctl_init,,num_tor_proxyaddrs,u16 |
22 | gossipctl_init,,tor_proxyaddr,num_tor_proxyaddrs*struct wireaddr |
23 | gossipctl_init,,use_tor_proxy_always,bool |
24 | gossipctl_init,,dev_allow_localhost,bool |
25 | gossipctl_init,,tor_password,wirestring |
26 | # Activate the gossip daemon, so others can connect. |
27 | gossipctl_activate,3025 |
28 | # Do we listen? |
29 | gossipctl_activate,,listen,bool |
30 | # Gossipd->master, I am ready, here's the addresses I bound, can announce. |
31 | gossipctl_activate_reply,3125 |
32 | gossipctl_activate_reply,,num_bindings,u16 |
33 | gossipctl_activate_reply,,bindings,num_bindings*struct wireaddr_internal |
34 | gossipctl_activate_reply,,num_announcable,u16 |
35 | gossipctl_activate_reply,,announcable,num_announcable*struct wireaddr |
36 | # Master -> gossipd: Optional hint for where to find peer. |
37 | gossipctl_peer_addrhint,3014 |
38 | gossipctl_peer_addrhint,,id,struct pubkey |
39 | gossipctl_peer_addrhint,,addr,struct wireaddr_internal |
40 | # Master -> gossipd: connect to a peer. |
41 | gossipctl_connect_to_peer,3001 |
42 | gossipctl_connect_to_peer,,id,struct pubkey |
43 | # Gossipd->master: result (not a reply since it can be out-of-order, but |
44 | # you will get one reply for every request). |
45 | gossipctl_connect_to_peer_result,3020 |
46 | gossipctl_connect_to_peer_result,,id,struct pubkey |
47 | # True it connected. |
48 | gossipctl_connect_to_peer_result,,connected,bool |
49 | # Otherwise, why we can't reach them. |
50 | gossipctl_connect_to_peer_result,,failreason,wirestring |
51 | # Master -> gossipd: try to always maintain connection to this peer (or not) |
52 | gossipctl_peer_important,3010 |
53 | gossipctl_peer_important,,id,struct pubkey |
54 | gossipctl_peer_important,,important,bool |
55 | # Gossipd -> master: we got a peer. Two fds: peer and gossip |
56 | gossip_peer_connected,3002 |
57 | gossip_peer_connected,,id,struct pubkey |
58 | gossip_peer_connected,,addr,struct wireaddr_internal |
59 | gossip_peer_connected,,crypto_state,struct crypto_state |
60 | gossip_peer_connected,,gflen,u16 |
61 | gossip_peer_connected,,gfeatures,gflen*u8 |
62 | gossip_peer_connected,,lflen,u16 |
63 | gossip_peer_connected,,lfeatures,lflen*u8 |
64 | # Gossipd -> master: peer sent non-gossip packet. Two fds: peer and gossip |
65 | gossip_peer_nongossip,3003 |
66 | gossip_peer_nongossip,,id,struct pubkey |
67 | gossip_peer_nongossip,,addr,struct wireaddr_internal |
68 | gossip_peer_nongossip,,crypto_state,struct crypto_state |
69 | gossip_peer_nongossip,,gflen,u16 |
70 | gossip_peer_nongossip,,gfeatures,gflen*u8 |
71 | gossip_peer_nongossip,,lflen,u16 |
72 | gossip_peer_nongossip,,lfeatures,lflen*u8 |
73 | gossip_peer_nongossip,,len,u16 |
74 | gossip_peer_nongossip,,msg,len*u8 |
75 | # Master -> gossipd: release a peer (so we can open a channel) |
76 | gossipctl_release_peer,3004 |
77 | gossipctl_release_peer,,id,struct pubkey |
78 | # Gossipd -> master: reply to gossip_release_peer. Two fds: peer and gossip. |
79 | gossipctl_release_peer_reply,3104 |
80 | gossipctl_release_peer_reply,,addr,struct wireaddr_internal |
81 | gossipctl_release_peer_reply,,crypto_state,struct crypto_state |
82 | gossipctl_release_peer_reply,,gflen,u16 |
83 | gossipctl_release_peer_reply,,gfeatures,gflen*u8 |
84 | gossipctl_release_peer_reply,,lflen,u16 |
85 | gossipctl_release_peer_reply,,lfeatures,lflen*u8 |
86 | # Gossipd -> master: reply to gossip_release_peer if we couldn't find the peer. |
87 | gossipctl_release_peer_replyfail,3204 |
88 | # master -> gossipd: take back peer, with optional msg. (+peer fd, +gossip fd) |
89 | gossipctl_hand_back_peer,3013 |
90 | gossipctl_hand_back_peer,,id,struct pubkey |
91 | gossipctl_hand_back_peer,,crypto_state,struct crypto_state |
92 | gossipctl_hand_back_peer,,len,u16 |
93 | gossipctl_hand_back_peer,,msg,len*u8 |
94 | # master -> gossipd: peer has disconnected. |
95 | gossipctl_peer_disconnected,3015 |
96 | gossipctl_peer_disconnected,,id,struct pubkey |
97 | # Pass JSON-RPC getnodes call through |
98 | gossip_getnodes_request,3005 |
99 | # Can be 0 or 1 currently |
100 | gossip_getnodes_request,,num,u16 |
101 | gossip_getnodes_request,,id,num*struct pubkey |
102 | #include <lightningd/gossip_msg.h> |
103 | gossip_getnodes_reply,3105 |
104 | gossip_getnodes_reply,,num_nodes,u16 |
105 | gossip_getnodes_reply,,nodes,num_nodes*struct gossip_getnodes_entry |
106 | # Pass JSON-RPC getroute call through |
107 | gossip_getroute_request,3006 |
108 | gossip_getroute_request,,source,struct pubkey |
109 | gossip_getroute_request,,destination,struct pubkey |
110 | gossip_getroute_request,,msatoshi,u64 |
111 | gossip_getroute_request,,riskfactor,u16 |
112 | gossip_getroute_request,,final_cltv,u32 |
113 | gossip_getroute_request,,fuzz,double |
114 | gossip_getroute_request,,seed,struct siphash_seed |
115 | gossip_getroute_reply,3106 |
116 | gossip_getroute_reply,,num_hops,u16 |
117 | gossip_getroute_reply,,hops,num_hops*struct route_hop |
118 | gossip_getchannels_request,3007 |
119 | # In practice, 0 or 1. |
120 | gossip_getchannels_request,,num,u16 |
121 | gossip_getchannels_request,,short_channel_id,num*struct short_channel_id |
122 | gossip_getchannels_reply,3107 |
123 | gossip_getchannels_reply,,num_channels,u16 |
124 | gossip_getchannels_reply,,nodes,num_channels*struct gossip_getchannels_entry |
125 | # Ping/pong test. Waits for a reply if it expects one. |
126 | gossip_ping,3008 |
127 | gossip_ping,,id,struct pubkey |
128 | gossip_ping,,num_pong_bytes,u16 |
129 | gossip_ping,,len,u16 |
130 | gossip_ping_reply,3108 |
131 | # False if id in gossip_ping was unknown. |
132 | gossip_ping_reply,,sent,bool |
133 | # 0 == no pong expected |
134 | gossip_ping_reply,,totlen,u16 |
135 | # Given a short_channel_id, return the endpoints |
136 | gossip_resolve_channel_request,3009 |
137 | gossip_resolve_channel_request,,channel_id,struct short_channel_id |
138 | gossip_resolve_channel_reply,3109 |
139 | gossip_resolve_channel_reply,,num_keys,u16 |
140 | gossip_resolve_channel_reply,,keys,num_keys*struct pubkey |
141 | # The main daemon asks for peers |
142 | gossip_getpeers_request,3011 |
143 | # 0 or 1 |
144 | gossip_getpeers_request,,num,u16 |
145 | gossip_getpeers_request,,id,num*struct pubkey |
146 | gossip_getpeers_reply,3111 |
147 | gossip_getpeers_reply,,num,u16 |
148 | gossip_getpeers_reply,,id,num*struct pubkey |
149 | gossip_getpeers_reply,,addr,num*struct wireaddr_internal |
150 | gossip_getpeers_reply,,numnodes,u16 |
151 | gossip_getpeers_reply,,nodes,numnodes*struct gossip_getnodes_entry |
152 | # Channel daemon can ask for updates for a specific channel, for sending |
153 | # errors. Must be distinct from WIRE_CHANNEL_ANNOUNCEMENT etc. gossip msgs! |
154 | gossip_get_update,3012 |
155 | gossip_get_update,,short_channel_id,struct short_channel_id |
156 | # If channel isn't known, update will be empty. |
157 | gossip_get_update_reply,3112 |
158 | gossip_get_update_reply,,len,u16 |
159 | gossip_get_update_reply,,update,len*u8 |
160 | # Gossipd can tell channeld etc about gossip to fwd. |
161 | gossip_send_gossip,3016 |
162 | gossip_send_gossip,,len,u16 |
163 | gossip_send_gossip,,gossip,len*u8 |
164 | # Both sides have seen the funding tx being locked, but we have not |
165 | # yet reached the announcement depth. So we add the channel locally so |
166 | # we (and peer) can update it already. |
167 | gossip_local_add_channel,3017 |
168 | gossip_local_add_channel,,short_channel_id,struct short_channel_id |
169 | gossip_local_add_channel,,remote_node_id,struct pubkey |
170 | gossip_local_channel_update,3026 |
171 | gossip_local_channel_update,,short_channel_id,struct short_channel_id |
172 | gossip_local_channel_update,,disable,bool |
173 | gossip_local_channel_update,,cltv_expiry_delta,u16 |
174 | gossip_local_channel_update,,htlc_minimum_msat,u64 |
175 | gossip_local_channel_update,,fee_base_msat,u32 |
176 | gossip_local_channel_update,,fee_proportional_millionths,u32 |
177 | # Gossipd->master get this tx output please. |
178 | gossip_get_txout,3018 |
179 | gossip_get_txout,,short_channel_id,struct short_channel_id |
180 | # master->gossipd here is the output, or empty if none. |
181 | gossip_get_txout_reply,3118 |
182 | gossip_get_txout_reply,,short_channel_id,struct short_channel_id |
183 | gossip_get_txout_reply,,satoshis,u64 |
184 | gossip_get_txout_reply,,len,u16 |
185 | gossip_get_txout_reply,,outscript,len*u8 |
186 | # client->gossipd: Disable the channel matching the short_channel_id |
187 | gossip_disable_channel,3019 |
188 | gossip_disable_channel,,short_channel_id,struct short_channel_id |
189 | gossip_disable_channel,,direction,u8 |
190 | gossip_disable_channel,,active,bool |
191 | # master->gossipd a routing failure occurred |
192 | gossip_routing_failure,3021 |
193 | gossip_routing_failure,,erring_node,struct pubkey |
194 | gossip_routing_failure,,erring_channel,struct short_channel_id |
195 | gossip_routing_failure,,failcode,u16 |
196 | gossip_routing_failure,,len,u16 |
197 | gossip_routing_failure,,channel_update,len*u8 |
198 | # master->gossipd temporarily mark a channel unroutable |
199 | # (used in case of unparseable onion reply) |
200 | gossip_mark_channel_unroutable,3022 |
201 | gossip_mark_channel_unroutable,,channel,struct short_channel_id |
202 | # master->gossipd: Request to disconnect from a peer. |
203 | gossipctl_peer_disconnect,3023 |
204 | gossipctl_peer_disconnect,,id,struct pubkey |
205 | # Gossipd -> master: reply to gossip_peer_disconnect with peer id. |
206 | gossipctl_peer_disconnect_reply,3123 |
207 | # Gossipd -> master: reply to gossip_peer_disconnect if we couldn't find the peer. |
208 | gossipctl_peer_disconnect_replyfail,3223 |
209 | gossipctl_peer_disconnect_replyfail,,isconnected,bool |
210 | # master -> gossipd: a potential funding outpoint was spent, please forget the eventual channel |
211 | gossip_outpoint_spent,3024 |
212 | gossip_outpoint_spent,,short_channel_id,struct short_channel_id |