mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 15:20:24 +01:00
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:
commit
e403999ffd
41 changed files with 140 additions and 167 deletions
|
@ -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::
|
||||
|
|
|
@ -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 ""
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
25
fuzz/src/msg_targets/msg_channel_details.rs
Normal file
25
fuzz/src/msg_targets/msg_channel_details.rs
Normal 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);
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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>);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue