From c580225c38570cfd89c41a1c39945774a81c439d Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sat, 27 Jul 2019 19:50:25 +0930 Subject: [PATCH] wire: handle bigsize/varint fields. They're currently called varint, but there's a proposal to call them all bigsize. Allow both for now. Signed-off-by: Rusty Russell --- devtools/print_wire.h | 7 +++++++ tools/generate-wire.py | 4 ++++ wire/wire.h | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/devtools/print_wire.h b/devtools/print_wire.h index 004632aac..ce3a7a3b5 100644 --- a/devtools/print_wire.h +++ b/devtools/print_wire.h @@ -10,6 +10,13 @@ struct tlv_print_record_type { void (*print)(const char *tlv_name, const u8 **cursor, size_t *plen); }; +typedef u64 bigsize; +#define printwire_bigsize printwire_u64 + +/* FIXME: Some versions of spec using 'varint' for bigsize' */ +typedef bigsize varint; +#define printwire_varint printwire_bigsize + void printwire_u8(const char *fieldname, const u8 *v); void printwire_u16(const char *fieldname, const u16 *v); void printwire_u32(const char *fieldname, const u32 *v); diff --git a/tools/generate-wire.py b/tools/generate-wire.py index 1b6354744..f96aad419 100755 --- a/tools/generate-wire.py +++ b/tools/generate-wire.py @@ -160,6 +160,8 @@ class Type(FieldSet): 'bool', 'amount_sat', 'amount_msat', + 'bigsize', + 'varint' ] typedefs = [ @@ -172,6 +174,8 @@ class Type(FieldSet): 'secp256k1_ecdsa_recoverable_signature', 'wirestring', 'double', + 'bigsize', + 'varint', ] truncated_typedefs = [ diff --git a/wire/wire.h b/wire/wire.h index 26a102396..8bc248c05 100644 --- a/wire/wire.h +++ b/wire/wire.h @@ -31,6 +31,12 @@ struct siphash_seed; /* Makes generate-wire.py work */ typedef char wirestring; +typedef u64 bigsize; + +/* FIXME: Some versions of spec using 'varint' for bigsize' */ +typedef bigsize varint; +#define fromwire_varint fromwire_bigsize +#define towire_varint towire_bigsize void derive_channel_id(struct channel_id *channel_id, const struct bitcoin_txid *txid, u16 txout);