@@ -1811,6 +1811,13 @@ mod fuzzy_internal_msgs {
1811
1811
pub outgoing_cltv_value : u32 ,
1812
1812
}
1813
1813
1814
+ pub struct InboundTrampolineEntrypointPayload {
1815
+ pub amt_to_forward : u64 ,
1816
+ pub outgoing_cltv_value : u32 ,
1817
+ pub multipath_trampoline_data : Option < FinalOnionHopData > ,
1818
+ pub trampoline_packet : TrampolineOnionPacket ,
1819
+ }
1820
+
1814
1821
pub struct InboundOnionReceivePayload {
1815
1822
pub payment_data : Option < FinalOnionHopData > ,
1816
1823
pub payment_metadata : Option < Vec < u8 > > ,
@@ -1842,6 +1849,8 @@ mod fuzzy_internal_msgs {
1842
1849
1843
1850
pub enum InboundOnionPayload {
1844
1851
Forward ( InboundOnionForwardPayload ) ,
1852
+ #[ allow( unused) ]
1853
+ TrampolineEntrypoint ( InboundTrampolineEntrypointPayload ) ,
1845
1854
Receive ( InboundOnionReceivePayload ) ,
1846
1855
BlindedForward ( InboundOnionBlindedForwardPayload ) ,
1847
1856
BlindedReceive ( InboundOnionBlindedReceivePayload ) ,
@@ -2908,6 +2917,7 @@ impl<NS: Deref> ReadableArgs<(Option<PublicKey>, NS)> for InboundOnionPayload wh
2908
2917
let mut payment_metadata: Option < WithoutLength < Vec < u8 > > > = None ;
2909
2918
let mut total_msat = None ;
2910
2919
let mut keysend_preimage: Option < PaymentPreimage > = None ;
2920
+ let mut trampoline_onion_packet: Option < TrampolineOnionPacket > = None ;
2911
2921
let mut invoice_request: Option < InvoiceRequest > = None ;
2912
2922
let mut custom_tlvs = Vec :: new ( ) ;
2913
2923
@@ -2922,6 +2932,7 @@ impl<NS: Deref> ReadableArgs<(Option<PublicKey>, NS)> for InboundOnionPayload wh
2922
2932
( 12 , intro_node_blinding_point, option) ,
2923
2933
( 16 , payment_metadata, option) ,
2924
2934
( 18 , total_msat, ( option, encoding: ( u64 , HighZeroBytesDroppedBigSize ) ) ) ,
2935
+ ( 20 , trampoline_onion_packet, option) ,
2925
2936
( 77_777 , invoice_request, option) ,
2926
2937
// See https://github.com/lightning/blips/blob/master/blip-0003.md
2927
2938
( 5482373484 , keysend_preimage, option)
@@ -3000,6 +3011,16 @@ impl<NS: Deref> ReadableArgs<(Option<PublicKey>, NS)> for InboundOnionPayload wh
3000
3011
amt_to_forward : amt. ok_or ( DecodeError :: InvalidValue ) ?,
3001
3012
outgoing_cltv_value : cltv_value. ok_or ( DecodeError :: InvalidValue ) ?,
3002
3013
} ) )
3014
+ } else if let Some ( trampoline_onion_packet) = trampoline_onion_packet {
3015
+ if payment_metadata. is_some ( ) || encrypted_tlvs_opt. is_some ( ) ||
3016
+ total_msat. is_some ( )
3017
+ { return Err ( DecodeError :: InvalidValue ) }
3018
+ Ok ( Self :: TrampolineEntrypoint ( InboundTrampolineEntrypointPayload {
3019
+ amt_to_forward : amt. ok_or ( DecodeError :: InvalidValue ) ?,
3020
+ outgoing_cltv_value : cltv_value. ok_or ( DecodeError :: InvalidValue ) ?,
3021
+ multipath_trampoline_data : payment_data,
3022
+ trampoline_packet : trampoline_onion_packet,
3023
+ } ) )
3003
3024
} else {
3004
3025
if encrypted_tlvs_opt. is_some ( ) || total_msat. is_some ( ) || invoice_request. is_some ( ) {
3005
3026
return Err ( DecodeError :: InvalidValue )
0 commit comments