Merge pull request #1588 from TheBlueMatt/2022-06-ffs-dumb-ser

Do not execute the default_value expr until we need it in TLV deser
This commit is contained in:
Matt Corallo 2022-07-05 13:46:43 -07:00 committed by GitHub
commit e403999ffd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
41 changed files with 140 additions and 167 deletions

View file

@ -47,3 +47,5 @@ GEN_TEST msg_channel_update msg_targets::
GEN_TEST msg_onion_hop_data msg_targets::
GEN_TEST msg_ping msg_targets::
GEN_TEST msg_pong msg_targets::
GEN_TEST msg_channel_details msg_targets::

View file

@ -1,7 +1,7 @@
#!/bin/sh
GEN_TEST() {
tn=msg_$(echo $1 | sed 's/\([a-z0-9]\)\([A-Z]\)/\1_\2/g' | tr '[:upper:]' '[:lower:]')
tn=msg_$(echo $1 | sed s'/.*:://g' | sed 's/\([a-z0-9]\)\([A-Z]\)/\1_\2/g' | tr '[:upper:]' '[:lower:]')
fn=${tn}.rs
cat msg_target_template.txt | sed s/MSG_TARGET/$1/ | sed "s/TARGET_NAME/$tn/" | sed "s/TEST_MSG/$2/" | sed "s/EXTRA_ARGS/$3/" > $fn
echo "pub mod $tn;" >> mod.rs
@ -11,37 +11,39 @@ echo "mod utils;" > mod.rs
# Note when adding new targets here you should add a similar line in src/bin/gen_target.sh
GEN_TEST AcceptChannel test_msg_simple ""
GEN_TEST AnnouncementSignatures test_msg_simple ""
GEN_TEST ClosingSigned test_msg_simple ""
GEN_TEST CommitmentSigned test_msg_simple ""
GEN_TEST FundingCreated test_msg_simple ""
GEN_TEST ChannelReady test_msg_simple ""
GEN_TEST FundingSigned test_msg_simple ""
GEN_TEST GossipTimestampFilter test_msg_simple ""
GEN_TEST Init test_msg_simple ""
GEN_TEST OnionHopData test_msg_simple ""
GEN_TEST OpenChannel test_msg_simple ""
GEN_TEST Ping test_msg_simple ""
GEN_TEST Pong test_msg_simple ""
GEN_TEST QueryChannelRange test_msg_simple ""
GEN_TEST ReplyShortChannelIdsEnd test_msg_simple ""
GEN_TEST RevokeAndACK test_msg_simple ""
GEN_TEST Shutdown test_msg_simple ""
GEN_TEST UpdateAddHTLC test_msg_simple ""
GEN_TEST UpdateFailHTLC test_msg_simple ""
GEN_TEST UpdateFailMalformedHTLC test_msg_simple ""
GEN_TEST UpdateFee test_msg_simple ""
GEN_TEST UpdateFulfillHTLC test_msg_simple ""
GEN_TEST lightning::ln::msgs::AcceptChannel test_msg_simple ""
GEN_TEST lightning::ln::msgs::AnnouncementSignatures test_msg_simple ""
GEN_TEST lightning::ln::msgs::ClosingSigned test_msg_simple ""
GEN_TEST lightning::ln::msgs::CommitmentSigned test_msg_simple ""
GEN_TEST lightning::ln::msgs::FundingCreated test_msg_simple ""
GEN_TEST lightning::ln::msgs::ChannelReady test_msg_simple ""
GEN_TEST lightning::ln::msgs::FundingSigned test_msg_simple ""
GEN_TEST lightning::ln::msgs::GossipTimestampFilter test_msg_simple ""
GEN_TEST lightning::ln::msgs::Init test_msg_simple ""
GEN_TEST lightning::ln::msgs::OnionHopData test_msg_simple ""
GEN_TEST lightning::ln::msgs::OpenChannel test_msg_simple ""
GEN_TEST lightning::ln::msgs::Ping test_msg_simple ""
GEN_TEST lightning::ln::msgs::Pong test_msg_simple ""
GEN_TEST lightning::ln::msgs::QueryChannelRange test_msg_simple ""
GEN_TEST lightning::ln::msgs::ReplyShortChannelIdsEnd test_msg_simple ""
GEN_TEST lightning::ln::msgs::RevokeAndACK test_msg_simple ""
GEN_TEST lightning::ln::msgs::Shutdown test_msg_simple ""
GEN_TEST lightning::ln::msgs::UpdateAddHTLC test_msg_simple ""
GEN_TEST lightning::ln::msgs::UpdateFailHTLC test_msg_simple ""
GEN_TEST lightning::ln::msgs::UpdateFailMalformedHTLC test_msg_simple ""
GEN_TEST lightning::ln::msgs::UpdateFee test_msg_simple ""
GEN_TEST lightning::ln::msgs::UpdateFulfillHTLC test_msg_simple ""
GEN_TEST ChannelReestablish test_msg ""
GEN_TEST DecodedOnionErrorPacket test_msg ""
GEN_TEST lightning::ln::msgs::ChannelReestablish test_msg ""
GEN_TEST lightning::ln::msgs::DecodedOnionErrorPacket test_msg ""
GEN_TEST ChannelAnnouncement test_msg_exact ""
GEN_TEST NodeAnnouncement test_msg_exact ""
GEN_TEST QueryShortChannelIds test_msg ""
GEN_TEST ReplyChannelRange test_msg ""
GEN_TEST lightning::ln::msgs::ChannelAnnouncement test_msg_exact ""
GEN_TEST lightning::ln::msgs::NodeAnnouncement test_msg_exact ""
GEN_TEST lightning::ln::msgs::QueryShortChannelIds test_msg ""
GEN_TEST lightning::ln::msgs::ReplyChannelRange test_msg ""
GEN_TEST ErrorMessage test_msg_hole ", 32, 2"
GEN_TEST WarningMessage test_msg_hole ", 32, 2"
GEN_TEST ChannelUpdate test_msg_hole ", 108, 1"
GEN_TEST lightning::ln::msgs::ErrorMessage test_msg_hole ", 32, 2"
GEN_TEST lightning::ln::msgs::WarningMessage test_msg_hole ", 32, 2"
GEN_TEST lightning::ln::msgs::ChannelUpdate test_msg_hole ", 108, 1"
GEN_TEST lightning::ln::channelmanager::ChannelDetails test_msg_simple ""

View file

@ -30,3 +30,4 @@ pub mod msg_reply_channel_range;
pub mod msg_error_message;
pub mod msg_warning_message;
pub mod msg_channel_update;
pub mod msg_channel_details;

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_accept_channel_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::AcceptChannel, data);
test_msg_simple!(lightning::ln::msgs::AcceptChannel, data);
}
#[no_mangle]
pub extern "C" fn msg_accept_channel_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::AcceptChannel, data);
test_msg_simple!(lightning::ln::msgs::AcceptChannel, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_announcement_signatures_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::AnnouncementSignatures, data);
test_msg_simple!(lightning::ln::msgs::AnnouncementSignatures, data);
}
#[no_mangle]
pub extern "C" fn msg_announcement_signatures_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::AnnouncementSignatures, data);
test_msg_simple!(lightning::ln::msgs::AnnouncementSignatures, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_channel_announcement_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_exact!(msgs::ChannelAnnouncement, data);
test_msg_exact!(lightning::ln::msgs::ChannelAnnouncement, data);
}
#[no_mangle]
pub extern "C" fn msg_channel_announcement_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_exact!(msgs::ChannelAnnouncement, data);
test_msg_exact!(lightning::ln::msgs::ChannelAnnouncement, data);
}

View file

@ -0,0 +1,25 @@
// This file is Copyright its original authors, visible in version control
// history.
//
// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// You may not use this file except in accordance with one or both of these
// licenses.
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_channel_details_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(lightning::ln::channelmanager::ChannelDetails, data);
}
#[no_mangle]
pub extern "C" fn msg_channel_details_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(lightning::ln::channelmanager::ChannelDetails, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_channel_ready_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::ChannelReady, data);
test_msg_simple!(lightning::ln::msgs::ChannelReady, data);
}
#[no_mangle]
pub extern "C" fn msg_channel_ready_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::ChannelReady, data);
test_msg_simple!(lightning::ln::msgs::ChannelReady, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_channel_reestablish_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg!(msgs::ChannelReestablish, data);
test_msg!(lightning::ln::msgs::ChannelReestablish, data);
}
#[no_mangle]
pub extern "C" fn msg_channel_reestablish_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg!(msgs::ChannelReestablish, data);
test_msg!(lightning::ln::msgs::ChannelReestablish, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_channel_update_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_hole!(msgs::ChannelUpdate, data, 108, 1);
test_msg_hole!(lightning::ln::msgs::ChannelUpdate, data, 108, 1);
}
#[no_mangle]
pub extern "C" fn msg_channel_update_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_hole!(msgs::ChannelUpdate, data, 108, 1);
test_msg_hole!(lightning::ln::msgs::ChannelUpdate, data, 108, 1);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_closing_signed_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::ClosingSigned, data);
test_msg_simple!(lightning::ln::msgs::ClosingSigned, data);
}
#[no_mangle]
pub extern "C" fn msg_closing_signed_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::ClosingSigned, data);
test_msg_simple!(lightning::ln::msgs::ClosingSigned, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_commitment_signed_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::CommitmentSigned, data);
test_msg_simple!(lightning::ln::msgs::CommitmentSigned, data);
}
#[no_mangle]
pub extern "C" fn msg_commitment_signed_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::CommitmentSigned, data);
test_msg_simple!(lightning::ln::msgs::CommitmentSigned, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_decoded_onion_error_packet_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg!(msgs::DecodedOnionErrorPacket, data);
test_msg!(lightning::ln::msgs::DecodedOnionErrorPacket, data);
}
#[no_mangle]
pub extern "C" fn msg_decoded_onion_error_packet_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg!(msgs::DecodedOnionErrorPacket, data);
test_msg!(lightning::ln::msgs::DecodedOnionErrorPacket, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_error_message_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_hole!(msgs::ErrorMessage, data, 32, 2);
test_msg_hole!(lightning::ln::msgs::ErrorMessage, data, 32, 2);
}
#[no_mangle]
pub extern "C" fn msg_error_message_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_hole!(msgs::ErrorMessage, data, 32, 2);
test_msg_hole!(lightning::ln::msgs::ErrorMessage, data, 32, 2);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_funding_created_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::FundingCreated, data);
test_msg_simple!(lightning::ln::msgs::FundingCreated, data);
}
#[no_mangle]
pub extern "C" fn msg_funding_created_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::FundingCreated, data);
test_msg_simple!(lightning::ln::msgs::FundingCreated, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_funding_signed_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::FundingSigned, data);
test_msg_simple!(lightning::ln::msgs::FundingSigned, data);
}
#[no_mangle]
pub extern "C" fn msg_funding_signed_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::FundingSigned, data);
test_msg_simple!(lightning::ln::msgs::FundingSigned, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_gossip_timestamp_filter_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::GossipTimestampFilter, data);
test_msg_simple!(lightning::ln::msgs::GossipTimestampFilter, data);
}
#[no_mangle]
pub extern "C" fn msg_gossip_timestamp_filter_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::GossipTimestampFilter, data);
test_msg_simple!(lightning::ln::msgs::GossipTimestampFilter, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_init_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::Init, data);
test_msg_simple!(lightning::ln::msgs::Init, data);
}
#[no_mangle]
pub extern "C" fn msg_init_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::Init, data);
test_msg_simple!(lightning::ln::msgs::Init, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_node_announcement_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_exact!(msgs::NodeAnnouncement, data);
test_msg_exact!(lightning::ln::msgs::NodeAnnouncement, data);
}
#[no_mangle]
pub extern "C" fn msg_node_announcement_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_exact!(msgs::NodeAnnouncement, data);
test_msg_exact!(lightning::ln::msgs::NodeAnnouncement, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_onion_hop_data_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::OnionHopData, data);
test_msg_simple!(lightning::ln::msgs::OnionHopData, data);
}
#[no_mangle]
pub extern "C" fn msg_onion_hop_data_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::OnionHopData, data);
test_msg_simple!(lightning::ln::msgs::OnionHopData, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_open_channel_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::OpenChannel, data);
test_msg_simple!(lightning::ln::msgs::OpenChannel, data);
}
#[no_mangle]
pub extern "C" fn msg_open_channel_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::OpenChannel, data);
test_msg_simple!(lightning::ln::msgs::OpenChannel, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_ping_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::Ping, data);
test_msg_simple!(lightning::ln::msgs::Ping, data);
}
#[no_mangle]
pub extern "C" fn msg_ping_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::Ping, data);
test_msg_simple!(lightning::ln::msgs::Ping, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_pong_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::Pong, data);
test_msg_simple!(lightning::ln::msgs::Pong, data);
}
#[no_mangle]
pub extern "C" fn msg_pong_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::Pong, data);
test_msg_simple!(lightning::ln::msgs::Pong, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_query_channel_range_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::QueryChannelRange, data);
test_msg_simple!(lightning::ln::msgs::QueryChannelRange, data);
}
#[no_mangle]
pub extern "C" fn msg_query_channel_range_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::QueryChannelRange, data);
test_msg_simple!(lightning::ln::msgs::QueryChannelRange, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_query_short_channel_ids_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg!(msgs::QueryShortChannelIds, data);
test_msg!(lightning::ln::msgs::QueryShortChannelIds, data);
}
#[no_mangle]
pub extern "C" fn msg_query_short_channel_ids_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg!(msgs::QueryShortChannelIds, data);
test_msg!(lightning::ln::msgs::QueryShortChannelIds, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_reply_channel_range_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg!(msgs::ReplyChannelRange, data);
test_msg!(lightning::ln::msgs::ReplyChannelRange, data);
}
#[no_mangle]
pub extern "C" fn msg_reply_channel_range_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg!(msgs::ReplyChannelRange, data);
test_msg!(lightning::ln::msgs::ReplyChannelRange, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_reply_short_channel_ids_end_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::ReplyShortChannelIdsEnd, data);
test_msg_simple!(lightning::ln::msgs::ReplyShortChannelIdsEnd, data);
}
#[no_mangle]
pub extern "C" fn msg_reply_short_channel_ids_end_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::ReplyShortChannelIdsEnd, data);
test_msg_simple!(lightning::ln::msgs::ReplyShortChannelIdsEnd, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_revoke_and_ack_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::RevokeAndACK, data);
test_msg_simple!(lightning::ln::msgs::RevokeAndACK, data);
}
#[no_mangle]
pub extern "C" fn msg_revoke_and_ack_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::RevokeAndACK, data);
test_msg_simple!(lightning::ln::msgs::RevokeAndACK, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_shutdown_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::Shutdown, data);
test_msg_simple!(lightning::ln::msgs::Shutdown, data);
}
#[no_mangle]
pub extern "C" fn msg_shutdown_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::Shutdown, data);
test_msg_simple!(lightning::ln::msgs::Shutdown, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn TARGET_NAME_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
TEST_MSG!(msgs::MSG_TARGET, dataEXTRA_ARGS);
TEST_MSG!(MSG_TARGET, dataEXTRA_ARGS);
}
#[no_mangle]
pub extern "C" fn TARGET_NAME_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
TEST_MSG!(msgs::MSG_TARGET, dataEXTRA_ARGS);
TEST_MSG!(MSG_TARGET, dataEXTRA_ARGS);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_update_add_htlc_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::UpdateAddHTLC, data);
test_msg_simple!(lightning::ln::msgs::UpdateAddHTLC, data);
}
#[no_mangle]
pub extern "C" fn msg_update_add_htlc_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::UpdateAddHTLC, data);
test_msg_simple!(lightning::ln::msgs::UpdateAddHTLC, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_update_fail_htlc_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::UpdateFailHTLC, data);
test_msg_simple!(lightning::ln::msgs::UpdateFailHTLC, data);
}
#[no_mangle]
pub extern "C" fn msg_update_fail_htlc_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::UpdateFailHTLC, data);
test_msg_simple!(lightning::ln::msgs::UpdateFailHTLC, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_update_fail_malformed_htlc_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::UpdateFailMalformedHTLC, data);
test_msg_simple!(lightning::ln::msgs::UpdateFailMalformedHTLC, data);
}
#[no_mangle]
pub extern "C" fn msg_update_fail_malformed_htlc_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::UpdateFailMalformedHTLC, data);
test_msg_simple!(lightning::ln::msgs::UpdateFailMalformedHTLC, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_update_fee_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::UpdateFee, data);
test_msg_simple!(lightning::ln::msgs::UpdateFee, data);
}
#[no_mangle]
pub extern "C" fn msg_update_fee_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::UpdateFee, data);
test_msg_simple!(lightning::ln::msgs::UpdateFee, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_update_fulfill_htlc_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_simple!(msgs::UpdateFulfillHTLC, data);
test_msg_simple!(lightning::ln::msgs::UpdateFulfillHTLC, data);
}
#[no_mangle]
pub extern "C" fn msg_update_fulfill_htlc_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_simple!(msgs::UpdateFulfillHTLC, data);
test_msg_simple!(lightning::ln::msgs::UpdateFulfillHTLC, data);
}

View file

@ -10,18 +10,16 @@
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
use lightning::ln::msgs;
use msg_targets::utils::VecWriter;
use utils::test_logger;
#[inline]
pub fn msg_warning_message_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
test_msg_hole!(msgs::WarningMessage, data, 32, 2);
test_msg_hole!(lightning::ln::msgs::WarningMessage, data, 32, 2);
}
#[no_mangle]
pub extern "C" fn msg_warning_message_run(data: *const u8, datalen: usize) {
let data = unsafe { std::slice::from_raw_parts(data, datalen) };
test_msg_hole!(msgs::WarningMessage, data, 32, 2);
test_msg_hole!(lightning::ln::msgs::WarningMessage, data, 32, 2);
}

View file

@ -36,3 +36,4 @@ void msg_channel_update_run(const unsigned char* data, size_t data_len);
void msg_onion_hop_data_run(const unsigned char* data, size_t data_len);
void msg_ping_run(const unsigned char* data, size_t data_len);
void msg_pong_run(const unsigned char* data, size_t data_len);
void msg_channel_details_run(const unsigned char* data, size_t data_len);

View file

@ -6198,7 +6198,7 @@ impl_writeable_tlv_based!(ChannelDetails, {
(18, outbound_capacity_msat, required),
// Note that by the time we get past the required read above, outbound_capacity_msat will be
// filled in, so we can safely unwrap it here.
(19, next_outbound_htlc_limit_msat, (default_value, outbound_capacity_msat.0.unwrap())),
(19, next_outbound_htlc_limit_msat, (default_value, outbound_capacity_msat.0.unwrap() as u64)),
(20, inbound_capacity_msat, required),
(22, confirmations_required, option),
(24, force_close_spend_delay, option),

View file

@ -407,9 +407,9 @@ impl ::util::ser::Readable for LegacyChannelConfig {
let mut forwarding_fee_base_msat = 0;
read_tlv_fields!(reader, {
(0, forwarding_fee_proportional_millionths, required),
(1, max_dust_htlc_exposure_msat, (default_value, 5_000_000)),
(1, max_dust_htlc_exposure_msat, (default_value, 5_000_000u64)),
(2, cltv_expiry_delta, required),
(3, force_close_avoidance_max_fee_satoshis, (default_value, 1000)),
(3, force_close_avoidance_max_fee_satoshis, (default_value, 1000u64)),
(4, announced_channel, required),
(6, commit_upfront_shutdown_pubkey, required),
(8, forwarding_fee_base_msat, required),

View file

@ -268,6 +268,12 @@ impl<T: Readable> Readable for OptionDeserWrapper<T> {
Ok(Self(Some(Readable::read(reader)?)))
}
}
/// When handling default_values, we want to map the default-value T directly
/// to a OptionDeserWrapper<T> in a way that works for `field: T = t;` as
/// well. Thus, we assume `Into<T> for T` does nothing and use that.
impl<T: Readable> From<T> for OptionDeserWrapper<T> {
fn from(t: T) -> OptionDeserWrapper<T> { OptionDeserWrapper(Some(t)) }
}
/// Wrapper to write each element of a Vec with no length prefix
pub(crate) struct VecWriteWrapper<'a, T: Writeable>(pub &'a Vec<T>);

View file

@ -99,7 +99,7 @@ macro_rules! check_tlv_order {
#[allow(unused_comparisons)] // Note that $type may be 0 making the second comparison always true
let invalid_order = ($last_seen_type.is_none() || $last_seen_type.unwrap() < $type) && $typ.0 > $type;
if invalid_order {
$field = $default;
$field = $default.into();
}
}};
($last_seen_type: expr, $typ: expr, $type: expr, $field: ident, required) => {{
@ -128,7 +128,7 @@ macro_rules! check_missing_tlv {
#[allow(unused_comparisons)] // Note that $type may be 0 making the second comparison always true
let missing_req_type = $last_seen_type.is_none() || $last_seen_type.unwrap() < $type;
if missing_req_type {
$field = $default;
$field = $default.into();
}
}};
($last_seen_type: expr, $type: expr, $field: ident, required) => {{
@ -349,7 +349,7 @@ macro_rules! read_tlv_fields {
macro_rules! init_tlv_based_struct_field {
($field: ident, (default_value, $default: expr)) => {
$field
$field.0.unwrap()
};
($field: ident, option) => {
$field
@ -364,7 +364,7 @@ macro_rules! init_tlv_based_struct_field {
macro_rules! init_tlv_field_var {
($field: ident, (default_value, $default: expr)) => {
let mut $field = $default;
let mut $field = ::util::ser::OptionDeserWrapper(None);
};
($field: ident, required) => {
let mut $field = ::util::ser::OptionDeserWrapper(None);