core-lightning/channeld/channel_wire.csv
Rusty Russell dd690553b8 channeld: handle onion messages.
We do most of the decoding here, and just hand the results to lightningd.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2020-04-02 14:32:38 +10:30

9.5 KiB

1#include <common/cryptomsg.h>
2#include <common/channel_config.h>
3#include <common/derive_basepoints.h>
4#include <common/features.h>
5#include <common/fee_states.h>
6#include <common/per_peer_state.h>
7# Begin! (passes gossipd-client fd)
8msgtype,channel_init,1000
9msgdata,channel_init,chainparams,chainparams,
10msgdata,channel_init,feature_set,feature_set,
11msgdata,channel_init,funding_txid,bitcoin_txid,
12msgdata,channel_init,funding_txout,u16,
13msgdata,channel_init,funding_satoshi,amount_sat,
14msgdata,channel_init,minimum_depth,u32,
15msgdata,channel_init,our_config,channel_config,
16msgdata,channel_init,their_config,channel_config,
17msgdata,channel_init,fee_states,fee_states,
18msgdata,channel_init,feerate_min,u32,
19msgdata,channel_init,feerate_max,u32,
20msgdata,channel_init,first_commit_sig,bitcoin_signature,
21msgdata,channel_init,per_peer_state,per_peer_state,
22msgdata,channel_init,remote_fundingkey,pubkey,
23msgdata,channel_init,remote_basepoints,basepoints,
24msgdata,channel_init,remote_per_commit,pubkey,
25msgdata,channel_init,old_remote_per_commit,pubkey,
26msgdata,channel_init,funder,enum side,
27msgdata,channel_init,fee_base,u32,
28msgdata,channel_init,fee_proportional,u32,
29msgdata,channel_init,local_msatoshi,amount_msat,
30msgdata,channel_init,our_basepoints,basepoints,
31msgdata,channel_init,our_funding_pubkey,pubkey,
32msgdata,channel_init,local_node_id,node_id,
33msgdata,channel_init,remote_node_id,node_id,
34msgdata,channel_init,commit_msec,u32,
35msgdata,channel_init,cltv_delta,u16,
36msgdata,channel_init,last_was_revoke,bool,
37msgdata,channel_init,num_last_sent_commit,u16,
38msgdata,channel_init,last_sent_commit,changed_htlc,num_last_sent_commit
39msgdata,channel_init,next_index_local,u64,
40msgdata,channel_init,next_index_remote,u64,
41msgdata,channel_init,revocations_received,u64,
42msgdata,channel_init,next_htlc_id,u64,
43msgdata,channel_init,num_htlcs,u16,
44msgdata,channel_init,htlcs,added_htlc,num_htlcs
45msgdata,channel_init,htlc_states,enum htlc_state,num_htlcs
46msgdata,channel_init,num_fulfilled,u16,
47msgdata,channel_init,fulfilled,fulfilled_htlc,num_fulfilled
48msgdata,channel_init,fulfilled_sides,enum side,num_fulfilled
49msgdata,channel_init,num_failed_in,u16,
50msgdata,channel_init,failed_in,failed_htlc,num_failed_in
51msgdata,channel_init,num_failed_out,u16,
52msgdata,channel_init,failed_out,u64,num_failed_out
53msgdata,channel_init,local_funding_locked,bool,
54msgdata,channel_init,remote_funding_locked,bool,
55msgdata,channel_init,funding_short_id,short_channel_id,
56msgdata,channel_init,reestablish,bool,
57msgdata,channel_init,send_shutdown,bool,
58msgdata,channel_init,remote_shutdown_received,bool,
59msgdata,channel_init,final_scriptpubkey_len,u16,
60msgdata,channel_init,final_scriptpubkey,u8,final_scriptpubkey_len
61msgdata,channel_init,flags,u8,
62msgdata,channel_init,init_peer_pkt_len,u16,
63msgdata,channel_init,init_peer_pkt,u8,init_peer_pkt_len
64msgdata,channel_init,reached_announce_depth,bool,
65msgdata,channel_init,last_remote_secret,secret,
66msgdata,channel_init,lflen,u16,
67msgdata,channel_init,localfeatures,u8,lflen
68msgdata,channel_init,upfront_shutdown_script_len,u16,
69msgdata,channel_init,upfront_shutdown_script,u8,upfront_shutdown_script_len
70msgdata,channel_init,remote_ann_node_sig,?secp256k1_ecdsa_signature,
71msgdata,channel_init,remote_ann_bitcoin_sig,?secp256k1_ecdsa_signature,
72msgdata,channel_init,option_static_remotekey,bool,
73msgdata,channel_init,dev_fast_gossip,bool,
74msgdata,channel_init,dev_fail_process_onionpacket,bool,
75# master->channeld funding hit new depth(funding locked if >= lock depth)
76msgtype,channel_funding_depth,1002
77msgdata,channel_funding_depth,short_channel_id,?short_channel_id,
78msgdata,channel_funding_depth,depth,u32,
79# Tell channel to offer this htlc
80msgtype,channel_offer_htlc,1004
81msgdata,channel_offer_htlc,amount_msat,amount_msat,
82msgdata,channel_offer_htlc,cltv_expiry,u32,
83msgdata,channel_offer_htlc,payment_hash,sha256,
84msgdata,channel_offer_htlc,onion_routing_packet,u8,1366
85# Reply; synchronous since IDs have to increment.
86msgtype,channel_offer_htlc_reply,1104
87msgdata,channel_offer_htlc_reply,id,u64,
88# Empty failure message means success.
89msgdata,channel_offer_htlc_reply,len,u16,
90msgdata,channel_offer_htlc_reply,failuremsg,u8,len
91msgdata,channel_offer_htlc_reply,failurestr,wirestring,
92# Main daemon found out the preimage for an HTLC
93#include <bitcoin/preimage.h>
94msgtype,channel_fulfill_htlc,1005
95msgdata,channel_fulfill_htlc,fulfilled_htlc,fulfilled_htlc,
96# Main daemon says HTLC failed
97msgtype,channel_fail_htlc,1006
98msgdata,channel_fail_htlc,failed_htlc,failed_htlc,
99# When we receive funding_locked.
100msgtype,channel_got_funding_locked,1019
101msgdata,channel_got_funding_locked,next_per_commit_point,pubkey,
102# When we send a commitment_signed message, tell master.
103msgtype,channel_sending_commitsig,1020
104msgdata,channel_sending_commitsig,commitnum,u64,
105msgdata,channel_sending_commitsig,fee_states,fee_states,
106# SENT_ADD_COMMIT, SENT_REMOVE_ACK_COMMIT, SENT_ADD_ACK_COMMIT, SENT_REMOVE_COMMIT
107msgdata,channel_sending_commitsig,num_changed,u16,
108msgdata,channel_sending_commitsig,changed,changed_htlc,num_changed
109msgdata,channel_sending_commitsig,commit_sig,bitcoin_signature,
110msgdata,channel_sending_commitsig,num_htlc_sigs,u16,
111msgdata,channel_sending_commitsig,htlc_sigs,secp256k1_ecdsa_signature,num_htlc_sigs
112# Wait for reply, to make sure it's on disk before we send commit.
113msgtype,channel_sending_commitsig_reply,1120
114# When we have a commitment_signed message, tell master to remember.
115msgtype,channel_got_commitsig,1021
116msgdata,channel_got_commitsig,commitnum,u64,
117msgdata,channel_got_commitsig,fee_states,fee_states,
118msgdata,channel_got_commitsig,signature,bitcoin_signature,
119msgdata,channel_got_commitsig,num_htlcs,u16,
120msgdata,channel_got_commitsig,htlc_signature,secp256k1_ecdsa_signature,num_htlcs
121# RCVD_ADD_COMMIT: we're now committed to their new offered HTLCs.
122msgdata,channel_got_commitsig,num_added,u16,
123msgdata,channel_got_commitsig,added,added_htlc,num_added
124# RCVD_REMOVE_COMMIT: we're now no longer committed to these HTLCs.
125msgdata,channel_got_commitsig,num_fulfilled,u16,
126msgdata,channel_got_commitsig,fulfilled,fulfilled_htlc,num_fulfilled
127msgdata,channel_got_commitsig,num_failed,u16,
128msgdata,channel_got_commitsig,failed,failed_htlc,num_failed
129# RCVD_ADD_ACK_COMMIT, RCVD_REMOVE_ACK_COMMIT
130msgdata,channel_got_commitsig,num_changed,u16,
131msgdata,channel_got_commitsig,changed,changed_htlc,num_changed
132msgdata,channel_got_commitsig,tx,bitcoin_tx,
133# Wait for reply, to make sure it's on disk before we send revocation.
134msgtype,channel_got_commitsig_reply,1121
135#include <common/htlc_wire.h>
136msgtype,channel_got_revoke,1022
137msgdata,channel_got_revoke,revokenum,u64,
138msgdata,channel_got_revoke,per_commitment_secret,secret,
139msgdata,channel_got_revoke,next_per_commit_point,pubkey,
140# RCVD_ADD_ACK_REVOCATION, RCVD_REMOVE_ACK_REVOCATION, RCVD_ADD_REVOCATION, RCVD_REMOVE_REVOCATION
141msgdata,channel_got_revoke,fee_states,fee_states,
142msgdata,channel_got_revoke,num_changed,u16,
143msgdata,channel_got_revoke,changed,changed_htlc,num_changed
144# Wait for reply, to make sure it's on disk before we continue
145# (eg. if we sent another commitment_signed, that would implicitly ack).
146msgtype,channel_got_revoke_reply,1122
147# Tell peer to shut down channel.
148msgtype,channel_send_shutdown,1023
149msgdata,channel_send_shutdown,shutdown_len,u16,
150msgdata,channel_send_shutdown,shutdown_scriptpubkey,u8,shutdown_len
151# Peer told us that channel is shutting down
152msgtype,channel_got_shutdown,1024
153msgdata,channel_got_shutdown,scriptpubkey_len,u16,
154msgdata,channel_got_shutdown,scriptpubkey,u8,scriptpubkey_len
155# Shutdown is complete, ready for closing negotiation. + peer_fd & gossip_fd.
156msgtype,channel_shutdown_complete,1025
157msgdata,channel_shutdown_complete,per_peer_state,per_peer_state,
158# Re-enable commit timer.
159msgtype,channel_dev_reenable_commit,1026
160msgtype,channel_dev_reenable_commit_reply,1126,
161msgtype,channel_feerates,1027
162msgdata,channel_feerates,feerate,u32,
163msgdata,channel_feerates,min_feerate,u32,
164msgdata,channel_feerates,max_feerate,u32,
165# master -> channeld: do you have a memleak?
166msgtype,channel_dev_memleak,1033
167msgtype,channel_dev_memleak_reply,1133
168msgdata,channel_dev_memleak_reply,leak,bool,
169# Peer presented proof it was from the future.
170msgtype,channel_fail_fallen_behind,1028
171# This is NULL if option_static_remotekey.
172msgdata,channel_fail_fallen_behind,remote_per_commitment_point,?pubkey,
173# Handle a channel specific feerate base ppm configuration
174msgtype,channel_specific_feerates,1029
175msgdata,channel_specific_feerates,feerate_base,u32,
176msgdata,channel_specific_feerates,feerate_ppm,u32,
177# When we receive announcement_signatures for channel announce
178msgtype,channel_got_announcement,1017
179msgdata,channel_got_announcement,remote_ann_node_sig,secp256k1_ecdsa_signature,
180msgdata,channel_got_announcement,remote_ann_bitcoin_sig,secp256k1_ecdsa_signature,
181# Ask channeld to send a error message. Used in forgetting channel case.
182msgtype,channel_send_error,1008
183msgdata,channel_send_error,reason,wirestring,
184# Tell master channeld has sent the error message.
185msgtype,channel_send_error_reply,1108
186# Tell lightningd we got a onion message (for us, or to fwd)
187msgtype,got_onionmsg_to_us,1142
188msgdata,got_onionmsg_to_us,reply_blinding,?pubkey,
189msgdata,got_onionmsg_to_us,reply_path_len,u16,
190msgdata,got_onionmsg_to_us,reply_path,onionmsg_path,reply_path_len
191msgtype,got_onionmsg_forward,1143
192msgdata,got_onionmsg_forward,next_scid,?short_channel_id,
193msgdata,got_onionmsg_forward,next_node_id,?node_id,
194msgdata,got_onionmsg_forward,next_blinding,?pubkey,
195msgdata,got_onionmsg_forward,next_onion,u8,1366
196# Lightningd tells us to send a onion message.
197msgtype,send_onionmsg,1040
198msgdata,send_onionmsg,onion,u8,1366
199msgdata,send_onionmsg,blinding,?pubkey,