Skip to content

Commit f7ae9d5

Browse files
committed
Add trampoline packet field to OutboundOnionPayload::Receive.
1 parent e54e8e5 commit f7ae9d5

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lightning/src/ln/msgs.rs

+12-2
Original file line numberDiff line numberDiff line change
@@ -1655,6 +1655,7 @@ mod fuzzy_internal_msgs {
16551655
use crate::ln::{PaymentPreimage, PaymentSecret};
16561656
use crate::ln::features::BlindedHopFeatures;
16571657
use super::FinalOnionHopData;
1658+
use crate::ln::msgs::OnionPacket;
16581659

16591660
// These types aren't intended to be pub, but are exposed for direct fuzzing (as we deserialize
16601661
// them from untrusted input):
@@ -1705,6 +1706,7 @@ mod fuzzy_internal_msgs {
17051706
custom_tlvs: Vec<(u64, Vec<u8>)>,
17061707
sender_intended_htlc_amt_msat: u64,
17071708
cltv_expiry_height: u32,
1709+
trampoline_packet: Option<OnionPacket>
17081710
},
17091711
BlindedForward {
17101712
encrypted_tlvs: Vec<u8>,
@@ -2480,13 +2482,17 @@ impl Writeable for OutboundOnionPayload {
24802482
},
24812483
Self::Receive {
24822484
ref payment_data, ref payment_metadata, ref keysend_preimage, sender_intended_htlc_amt_msat,
2483-
cltv_expiry_height, ref custom_tlvs,
2485+
cltv_expiry_height, ref trampoline_packet, ref custom_tlvs,
24842486
} => {
24852487
// We need to update [`ln::outbound_payment::RecipientOnionFields::with_custom_tlvs`]
24862488
// to reject any reserved types in the experimental range if new ones are ever
24872489
// standardized.
24882490
let keysend_tlv = keysend_preimage.map(|preimage| (5482373484, preimage.encode()));
2489-
let mut custom_tlvs: Vec<&(u64, Vec<u8>)> = custom_tlvs.iter().chain(keysend_tlv.iter()).collect();
2491+
let trampoline_tlv = trampoline_packet.as_ref().map(|trampoline| (66100, trampoline.encode()));
2492+
let mut custom_tlvs: Vec<&(u64, Vec<u8>)> = custom_tlvs.iter()
2493+
.chain(keysend_tlv.iter())
2494+
.chain(trampoline_tlv.iter())
2495+
.collect();
24902496
custom_tlvs.sort_unstable_by_key(|(typ, _)| *typ);
24912497
_encode_varint_length_prefixed_tlv!(w, {
24922498
(2, HighZeroBytesDroppedBigSize(*sender_intended_htlc_amt_msat), required),
@@ -4218,6 +4224,7 @@ mod tests {
42184224
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
42194225
cltv_expiry_height: 0xffffffff,
42204226
custom_tlvs: vec![],
4227+
trampoline_packet: None
42214228
};
42224229
let encoded_value = outbound_msg.encode();
42234230
let target_value = <Vec<u8>>::from_hex("1002080badf00d010203040404ffffffff").unwrap();
@@ -4246,6 +4253,7 @@ mod tests {
42464253
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
42474254
cltv_expiry_height: 0xffffffff,
42484255
custom_tlvs: vec![],
4256+
trampoline_packet: None
42494257
};
42504258
let encoded_value = outbound_msg.encode();
42514259
let target_value = <Vec<u8>>::from_hex("3602080badf00d010203040404ffffffff082442424242424242424242424242424242424242424242424242424242424242421badca1f").unwrap();
@@ -4285,6 +4293,7 @@ mod tests {
42854293
custom_tlvs: bad_type_range_tlvs,
42864294
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
42874295
cltv_expiry_height: 0xffffffff,
4296+
trampoline_packet: None
42884297
};
42894298
let encoded_value = msg.encode();
42904299
let node_signer = test_utils::TestKeysInterface::new(&[42; 32], Network::Testnet);
@@ -4317,6 +4326,7 @@ mod tests {
43174326
custom_tlvs: expected_custom_tlvs.clone(),
43184327
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
43194328
cltv_expiry_height: 0xffffffff,
4329+
trampoline_packet: None
43204330
};
43214331
let encoded_value = msg.encode();
43224332
let target_value = <Vec<u8>>::from_hex("2e02080badf00d010203040404ffffffffff0000000146c6616b021234ff0000000146c6616f084242424242424242").unwrap();

lightning/src/ln/onion_utils.rs

+1
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ pub(super) fn build_onion_payloads(
233233
custom_tlvs: recipient_onion.custom_tlvs.clone(),
234234
sender_intended_htlc_amt_msat: value_msat,
235235
cltv_expiry_height: cltv,
236+
trampoline_packet: None
236237
});
237238
}
238239
} else {

0 commit comments

Comments
 (0)