Skip to content

Commit 95eebc2

Browse files
committed
Add trampoline packet field to OutboundOnionPayload::Receive.
1 parent 60af9c5 commit 95eebc2

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
@@ -1690,6 +1690,7 @@ mod fuzzy_internal_msgs {
16901690
use crate::ln::{PaymentPreimage, PaymentSecret};
16911691
use crate::ln::features::BlindedHopFeatures;
16921692
use super::FinalOnionHopData;
1693+
use crate::ln::msgs::OnionPacket;
16931694

16941695
// These types aren't intended to be pub, but are exposed for direct fuzzing (as we deserialize
16951696
// them from untrusted input):
@@ -1740,6 +1741,7 @@ mod fuzzy_internal_msgs {
17401741
custom_tlvs: Vec<(u64, Vec<u8>)>,
17411742
sender_intended_htlc_amt_msat: u64,
17421743
cltv_expiry_height: u32,
1744+
trampoline_packet: Option<OnionPacket>
17431745
},
17441746
BlindedForward {
17451747
encrypted_tlvs: Vec<u8>,
@@ -2291,13 +2293,17 @@ impl Writeable for OutboundOnionPayload {
22912293
},
22922294
Self::Receive {
22932295
ref payment_data, ref payment_metadata, ref keysend_preimage, sender_intended_htlc_amt_msat,
2294-
cltv_expiry_height, ref custom_tlvs,
2296+
cltv_expiry_height, ref trampoline_packet, ref custom_tlvs,
22952297
} => {
22962298
// We need to update [`ln::outbound_payment::RecipientOnionFields::with_custom_tlvs`]
22972299
// to reject any reserved types in the experimental range if new ones are ever
22982300
// standardized.
22992301
let keysend_tlv = keysend_preimage.map(|preimage| (5482373484, preimage.encode()));
2300-
let mut custom_tlvs: Vec<&(u64, Vec<u8>)> = custom_tlvs.iter().chain(keysend_tlv.iter()).collect();
2302+
let trampoline_tlv = trampoline_packet.as_ref().map(|trampoline| (66100, trampoline.encode()));
2303+
let mut custom_tlvs: Vec<&(u64, Vec<u8>)> = custom_tlvs.iter()
2304+
.chain(keysend_tlv.iter())
2305+
.chain(trampoline_tlv.iter())
2306+
.collect();
23012307
custom_tlvs.sort_unstable_by_key(|(typ, _)| *typ);
23022308
_encode_varint_length_prefixed_tlv!(w, {
23032309
(2, HighZeroBytesDroppedBigSize(*sender_intended_htlc_amt_msat), required),
@@ -4023,6 +4029,7 @@ mod tests {
40234029
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
40244030
cltv_expiry_height: 0xffffffff,
40254031
custom_tlvs: vec![],
4032+
trampoline_packet: None
40264033
};
40274034
let encoded_value = outbound_msg.encode();
40284035
let target_value = <Vec<u8>>::from_hex("1002080badf00d010203040404ffffffff").unwrap();
@@ -4051,6 +4058,7 @@ mod tests {
40514058
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
40524059
cltv_expiry_height: 0xffffffff,
40534060
custom_tlvs: vec![],
4061+
trampoline_packet: None
40544062
};
40554063
let encoded_value = outbound_msg.encode();
40564064
let target_value = <Vec<u8>>::from_hex("3602080badf00d010203040404ffffffff082442424242424242424242424242424242424242424242424242424242424242421badca1f").unwrap();
@@ -4090,6 +4098,7 @@ mod tests {
40904098
custom_tlvs: bad_type_range_tlvs,
40914099
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
40924100
cltv_expiry_height: 0xffffffff,
4101+
trampoline_packet: None
40934102
};
40944103
let encoded_value = msg.encode();
40954104
let node_signer = test_utils::TestKeysInterface::new(&[42; 32], Network::Testnet);
@@ -4122,6 +4131,7 @@ mod tests {
41224131
custom_tlvs: expected_custom_tlvs.clone(),
41234132
sender_intended_htlc_amt_msat: 0x0badf00d01020304,
41244133
cltv_expiry_height: 0xffffffff,
4134+
trampoline_packet: None
41254135
};
41264136
let encoded_value = msg.encode();
41274137
let target_value = <Vec<u8>>::from_hex("2e02080badf00d010203040404ffffffffff0000000146c6616b021234ff0000000146c6616f084242424242424242").unwrap();

lightning/src/ln/onion_utils.rs

+1
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
sender_intended_htlc_amt_msat: value_msat,
218218
cltv_expiry_height: cltv,
219+
trampoline_packet: None
219220
});
220221
}
221222
} else {

0 commit comments

Comments
 (0)