@@ -260,6 +260,8 @@ pub struct ReceiveTlvs {
260260 pub payment_constraints : PaymentConstraints ,
261261 /// Context for the receiver of this payment.
262262 pub payment_context : PaymentContext ,
263+ /// Custom Tlvs
264+ pub custom_tlvs : Vec < u8 > ,
263265}
264266
265267/// Data to construct a [`BlindedHop`] for sending a payment over.
@@ -404,7 +406,8 @@ impl Writeable for ReceiveTlvs {
404406 encode_tlv_stream ! ( w, {
405407 ( 12 , self . payment_constraints, required) ,
406408 ( 65536 , self . payment_secret, required) ,
407- ( 65537 , self . payment_context, required)
409+ ( 65537 , self . payment_context, required) ,
410+ ( 65539 , self . custom_tlvs, ( default_value, Vec :: new( ) ) ) ,
408411 } ) ;
409412 Ok ( ( ) )
410413 }
@@ -432,6 +435,7 @@ impl Readable for BlindedPaymentTlvs {
432435 ( 14 , features, ( option, encoding: ( BlindedHopFeatures , WithoutLength ) ) ) ,
433436 ( 65536 , payment_secret, option) ,
434437 ( 65537 , payment_context, ( default_value, PaymentContext :: unknown( ) ) ) ,
438+ ( 65539 , custom_tlvs, ( default_value, Vec :: new( ) ) )
435439 } ) ;
436440 let _padding: Option < utils:: Padding > = _padding;
437441
@@ -452,6 +456,7 @@ impl Readable for BlindedPaymentTlvs {
452456 payment_secret : payment_secret. ok_or ( DecodeError :: InvalidValue ) ?,
453457 payment_constraints : payment_constraints. 0 . unwrap ( ) ,
454458 payment_context : payment_context. 0 . unwrap ( ) ,
459+ custom_tlvs : custom_tlvs. 0 . unwrap ( ) ,
455460 } ) )
456461 }
457462 }
@@ -683,6 +688,7 @@ mod tests {
683688 htlc_minimum_msat : 1 ,
684689 } ,
685690 payment_context : PaymentContext :: unknown ( ) ,
691+ custom_tlvs : Vec :: new ( ) ,
686692 } ;
687693 let htlc_maximum_msat = 100_000 ;
688694 let blinded_payinfo = super :: compute_payinfo ( & intermediate_nodes[ ..] , & recv_tlvs, htlc_maximum_msat, 12 ) . unwrap ( ) ;
@@ -702,6 +708,7 @@ mod tests {
702708 htlc_minimum_msat : 1 ,
703709 } ,
704710 payment_context : PaymentContext :: unknown ( ) ,
711+ custom_tlvs : Vec :: new ( ) ,
705712 } ;
706713 let blinded_payinfo = super :: compute_payinfo ( & [ ] , & recv_tlvs, 4242 , TEST_FINAL_CLTV as u16 ) . unwrap ( ) ;
707714 assert_eq ! ( blinded_payinfo. fee_base_msat, 0 ) ;
@@ -758,6 +765,7 @@ mod tests {
758765 htlc_minimum_msat : 3 ,
759766 } ,
760767 payment_context : PaymentContext :: unknown ( ) ,
768+ custom_tlvs : Vec :: new ( ) ,
761769 } ;
762770 let htlc_maximum_msat = 100_000 ;
763771 let blinded_payinfo = super :: compute_payinfo ( & intermediate_nodes[ ..] , & recv_tlvs, htlc_maximum_msat, TEST_FINAL_CLTV as u16 ) . unwrap ( ) ;
@@ -811,6 +819,7 @@ mod tests {
811819 htlc_minimum_msat : 1 ,
812820 } ,
813821 payment_context : PaymentContext :: unknown ( ) ,
822+ custom_tlvs : Vec :: new ( ) ,
814823 } ;
815824 let htlc_minimum_msat = 3798 ;
816825 assert ! ( super :: compute_payinfo( & intermediate_nodes[ ..] , & recv_tlvs, htlc_minimum_msat - 1 , TEST_FINAL_CLTV as u16 ) . is_err( ) ) ;
@@ -868,6 +877,7 @@ mod tests {
868877 htlc_minimum_msat : 1 ,
869878 } ,
870879 payment_context : PaymentContext :: unknown ( ) ,
880+ custom_tlvs : Vec :: new ( )
871881 } ;
872882
873883 let blinded_payinfo = super :: compute_payinfo ( & intermediate_nodes[ ..] , & recv_tlvs, 10_000 , TEST_FINAL_CLTV as u16 ) . unwrap ( ) ;
0 commit comments