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