@@ -1811,6 +1811,15 @@ mod fuzzy_internal_msgs {
1811
1811
pub outgoing_cltv_value : u32 ,
1812
1812
}
1813
1813
1814
+ #[ allow( unused) ]
1815
+ pub struct InboundTrampolineEntrypointPayload {
1816
+ pub amt_to_forward : u64 ,
1817
+ pub outgoing_cltv_value : u32 ,
1818
+ pub multipath_trampoline_data : Option < FinalOnionHopData > ,
1819
+ pub trampoline_packet : TrampolineOnionPacket ,
1820
+ pub current_path_key : Option < PublicKey >
1821
+ }
1822
+
1814
1823
pub struct InboundOnionReceivePayload {
1815
1824
pub payment_data : Option < FinalOnionHopData > ,
1816
1825
pub payment_metadata : Option < Vec < u8 > > ,
@@ -1842,6 +1851,8 @@ mod fuzzy_internal_msgs {
1842
1851
1843
1852
pub enum InboundOnionPayload {
1844
1853
Forward ( InboundOnionForwardPayload ) ,
1854
+ #[ allow( unused) ]
1855
+ TrampolineEntrypoint ( InboundTrampolineEntrypointPayload ) ,
1845
1856
Receive ( InboundOnionReceivePayload ) ,
1846
1857
BlindedForward ( InboundOnionBlindedForwardPayload ) ,
1847
1858
BlindedReceive ( InboundOnionBlindedReceivePayload ) ,
@@ -2932,6 +2943,7 @@ impl<NS: Deref> ReadableArgs<(Option<PublicKey>, NS)> for InboundOnionPayload wh
2932
2943
let mut payment_metadata: Option < WithoutLength < Vec < u8 > > > = None ;
2933
2944
let mut total_msat = None ;
2934
2945
let mut keysend_preimage: Option < PaymentPreimage > = None ;
2946
+ let mut trampoline_onion_packet: Option < TrampolineOnionPacket > = None ;
2935
2947
let mut invoice_request: Option < InvoiceRequest > = None ;
2936
2948
let mut custom_tlvs = Vec :: new ( ) ;
2937
2949
@@ -2946,6 +2958,7 @@ impl<NS: Deref> ReadableArgs<(Option<PublicKey>, NS)> for InboundOnionPayload wh
2946
2958
( 12 , intro_node_blinding_point, option) ,
2947
2959
( 16 , payment_metadata, option) ,
2948
2960
( 18 , total_msat, ( option, encoding: ( u64 , HighZeroBytesDroppedBigSize ) ) ) ,
2961
+ ( 20 , trampoline_onion_packet, option) ,
2949
2962
( 77_777 , invoice_request, option) ,
2950
2963
// See https://github.com/lightning/blips/blob/master/blip-0003.md
2951
2964
( 5482373484 , keysend_preimage, option)
@@ -2962,7 +2975,18 @@ impl<NS: Deref> ReadableArgs<(Option<PublicKey>, NS)> for InboundOnionPayload wh
2962
2975
return Err ( DecodeError :: InvalidValue )
2963
2976
}
2964
2977
2965
- if let Some ( blinding_point) = intro_node_blinding_point. or ( update_add_blinding_point) {
2978
+ if let Some ( trampoline_onion_packet) = trampoline_onion_packet {
2979
+ if payment_metadata. is_some ( ) || encrypted_tlvs_opt. is_some ( ) ||
2980
+ total_msat. is_some ( )
2981
+ { return Err ( DecodeError :: InvalidValue ) }
2982
+ Ok ( Self :: TrampolineEntrypoint ( InboundTrampolineEntrypointPayload {
2983
+ amt_to_forward : amt. ok_or ( DecodeError :: InvalidValue ) ?,
2984
+ outgoing_cltv_value : cltv_value. ok_or ( DecodeError :: InvalidValue ) ?,
2985
+ multipath_trampoline_data : payment_data,
2986
+ trampoline_packet : trampoline_onion_packet,
2987
+ current_path_key : intro_node_blinding_point
2988
+ } ) )
2989
+ } else if let Some ( blinding_point) = intro_node_blinding_point. or ( update_add_blinding_point) {
2966
2990
if short_id. is_some ( ) || payment_data. is_some ( ) || payment_metadata. is_some ( ) {
2967
2991
return Err ( DecodeError :: InvalidValue )
2968
2992
}
0 commit comments