Skip to content

Commit 7a1888a

Browse files
committed
Add trampoline packet field to OutboundOnionPayload::Receive.
1 parent 91c6588 commit 7a1888a

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lightning/src/ln/msgs.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,6 +1670,7 @@ mod fuzzy_internal_msgs {
16701670
use crate::prelude::*;
16711671
use crate::ln::{PaymentPreimage, PaymentSecret};
16721672
use crate::ln::features::BlindedHopFeatures;
1673+
use crate::ln::msgs::OnionPacket;
16731674

16741675
// These types aren't intended to be pub, but are exposed for direct fuzzing (as we deserialize
16751676
// them from untrusted input):
@@ -1727,6 +1728,7 @@ mod fuzzy_internal_msgs {
17271728
custom_tlvs: Vec<(u64, Vec<u8>)>,
17281729
amt_msat: u64,
17291730
outgoing_cltv_value: u32,
1731+
trampoline_packet: Option<OnionPacket>
17301732
},
17311733
BlindedForward {
17321734
encrypted_tlvs: Vec<u8>,
@@ -2277,13 +2279,17 @@ impl Writeable for OutboundOnionPayload {
22772279
},
22782280
Self::Receive {
22792281
ref payment_data, ref payment_metadata, ref keysend_preimage, amt_msat,
2280-
outgoing_cltv_value, ref custom_tlvs,
2282+
outgoing_cltv_value, ref trampoline_packet, ref custom_tlvs
22812283
} => {
22822284
// We need to update [`ln::outbound_payment::RecipientOnionFields::with_custom_tlvs`]
22832285
// to reject any reserved types in the experimental range if new ones are ever
22842286
// standardized.
22852287
let keysend_tlv = keysend_preimage.map(|preimage| (5482373484, preimage.encode()));
2286-
let mut custom_tlvs: Vec<&(u64, Vec<u8>)> = custom_tlvs.iter().chain(keysend_tlv.iter()).collect();
2288+
let trampoline_tlv = trampoline_packet.as_ref().map(|trampoline| (66100, trampoline.encode()));
2289+
let mut custom_tlvs: Vec<&(u64, Vec<u8>)> = custom_tlvs.iter()
2290+
.chain(keysend_tlv.iter())
2291+
.chain(trampoline_tlv.iter())
2292+
.collect();
22872293
custom_tlvs.sort_unstable_by_key(|(typ, _)| *typ);
22882294
_encode_varint_length_prefixed_tlv!(w, {
22892295
(2, HighZeroBytesDroppedBigSize(*amt_msat), required),
@@ -4002,6 +4008,7 @@ mod tests {
40024008
amt_msat: 0x0badf00d01020304,
40034009
outgoing_cltv_value: 0xffffffff,
40044010
custom_tlvs: vec![],
4011+
trampoline_packet: None
40054012
};
40064013
let encoded_value = outbound_msg.encode();
40074014
let target_value = <Vec<u8>>::from_hex("1002080badf00d010203040404ffffffff").unwrap();
@@ -4030,6 +4037,7 @@ mod tests {
40304037
amt_msat: 0x0badf00d01020304,
40314038
outgoing_cltv_value: 0xffffffff,
40324039
custom_tlvs: vec![],
4040+
trampoline_packet: None
40334041
};
40344042
let encoded_value = outbound_msg.encode();
40354043
let target_value = <Vec<u8>>::from_hex("3602080badf00d010203040404ffffffff082442424242424242424242424242424242424242424242424242424242424242421badca1f").unwrap();
@@ -4069,6 +4077,7 @@ mod tests {
40694077
custom_tlvs: bad_type_range_tlvs,
40704078
amt_msat: 0x0badf00d01020304,
40714079
outgoing_cltv_value: 0xffffffff,
4080+
trampoline_packet: None
40724081
};
40734082
let encoded_value = msg.encode();
40744083
let node_signer = test_utils::TestKeysInterface::new(&[42; 32], Network::Testnet);
@@ -4101,6 +4110,7 @@ mod tests {
41014110
custom_tlvs: expected_custom_tlvs.clone(),
41024111
amt_msat: 0x0badf00d01020304,
41034112
outgoing_cltv_value: 0xffffffff,
4113+
trampoline_packet: None
41044114
};
41054115
let encoded_value = msg.encode();
41064116
let target_value = <Vec<u8>>::from_hex("2e02080badf00d010203040404ffffffffff0000000146c6616b021234ff0000000146c6616f084242424242424242").unwrap();

lightning/src/ln/onion_utils.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ pub(super) fn build_onion_payloads(path: &Path, total_msat: u64, mut recipient_o
216216
custom_tlvs: recipient_onion.custom_tlvs.clone(),
217217
amt_msat: value_msat,
218218
outgoing_cltv_value: cltv,
219+
trampoline_packet: None
219220
});
220221
}
221222
} else {

0 commit comments

Comments
 (0)