Skip to content

Commit 2b42227

Browse files
committed
wire: generate printwire_ routines for bolt12 CSV.
Good exercise, and we need it when bolt12 messages appear in onion messages anyway. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
1 parent d15d629 commit 2b42227

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

devtools/print_wire.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ static bool print_hexstring(const u8 **cursor, size_t *plen, size_t len)
108108
return true;
109109
}
110110

111-
static bool printwire_alias(const u8 **cursor, size_t *plen, size_t len)
111+
bool printwire_utf8_array(const char *fieldname, const u8 **cursor, size_t *plen, size_t len)
112112
{
113113
struct utf8_state utf8 = UTF8_STATE_INIT;
114114
const char *p = (const char *)*cursor;
@@ -217,7 +217,7 @@ static bool printwire_encoded_short_ids(const u8 **cursor, size_t *plen, size_t
217217
bool printwire_u8_array(const char *fieldname, const u8 **cursor, size_t *plen, size_t len)
218218
{
219219
if (streq(fieldname, "node_announcement.alias"))
220-
return printwire_alias(cursor, plen, len);
220+
return printwire_utf8_array(fieldname, cursor, plen, len);
221221

222222
if (streq(fieldname, "node_announcement.addresses"))
223223
return printwire_addresses(cursor, plen, len);
@@ -316,10 +316,12 @@ bool printwire_tlvs(const char *fieldname, const u8 **cursor, size_t *plen,
316316
#define PRINTWIRE_STRUCT_TYPE_TO_STRING(T) \
317317
PRINTWIRE_TYPE_TO_STRING(struct T, T)
318318

319+
PRINTWIRE_STRUCT_TYPE_TO_STRING(bip340sig)
319320
PRINTWIRE_STRUCT_TYPE_TO_STRING(bitcoin_blkid)
320321
PRINTWIRE_STRUCT_TYPE_TO_STRING(bitcoin_txid)
321322
PRINTWIRE_STRUCT_TYPE_TO_STRING(channel_id)
322323
PRINTWIRE_STRUCT_TYPE_TO_STRING(node_id)
324+
PRINTWIRE_STRUCT_TYPE_TO_STRING(point32)
323325
PRINTWIRE_STRUCT_TYPE_TO_STRING(preimage)
324326
PRINTWIRE_STRUCT_TYPE_TO_STRING(pubkey)
325327
PRINTWIRE_STRUCT_TYPE_TO_STRING(sha256)

devtools/print_wire.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,18 @@ bool printwire_tu16(const char *fieldname, const u8 **cursor, size_t *plen);
2424
bool printwire_tu32(const char *fieldname, const u8 **cursor, size_t *plen);
2525
bool printwire_tu64(const char *fieldname, const u8 **cursor, size_t *plen);
2626
bool printwire_u8_array(const char *fieldname, const u8 **cursor, size_t *plen, size_t len);
27+
bool printwire_utf8_array(const char *fieldname, const u8 **cursor, size_t *plen, size_t len);
2728
bool printwire_tlvs(const char *tlv_name, const u8 **cursor, size_t *plen,
2829
const struct tlv_print_record_type types[], size_t num_types);
2930

31+
bool printwire_bip340sig(const char *fieldname, const u8 **cursor, size_t *plen);
3032
bool printwire_bitcoin_blkid(const char *fieldname, const u8 **cursor, size_t *plen);
3133
bool printwire_wireaddr(const char *fieldname, const u8 **cursor, size_t *plen);
3234
bool printwire_bitcoin_txid(const char *fieldname, const u8 **cursor, size_t *plen);
3335
bool printwire_channel_id(const char *fieldname, const u8 **cursor, size_t *plen);
3436
bool printwire_amount_sat(const char *fieldname, const u8 **cursor, size_t *plen);
3537
bool printwire_amount_msat(const char *fieldname, const u8 **cursor, size_t *plen);
38+
bool printwire_point32(const char *fieldname, const u8 **cursor, size_t *plen);
3639
bool printwire_preimage(const char *fieldname, const u8 **cursor, size_t *plen);
3740
bool printwire_pubkey(const char *fieldname, const u8 **cursor, size_t *plen);
3841
bool printwire_node_id(const char *fieldname, const u8 **cursor, size_t *plen);

wire/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ WIRE_HEADERS := wire/onion_defs.h \
1111
wire/onion$(EXP)_wiregen.h \
1212
wire/bolt12$(EXP)_wiregen.h \
1313
wire/channel_type_wiregen.h \
14+
wire/bolt12$(EXP)_printgen.h \
1415
wire/peer$(EXP)_printgen.h \
1516
wire/onion$(EXP)_printgen.h
1617

@@ -29,6 +30,7 @@ WIRE_SRC := wire/wire_sync.c \
2930
WIRE_PRINT_SRC := \
3031
wire/onion$(EXP)_printgen.c \
3132
wire/peer$(EXP)_printgen.c \
33+
wire/bolt12$(EXP)_printgen.c \
3234
wire/channel_type_printgen.c
3335

3436
WIRE_OBJS := $(WIRE_SRC:.c=.o)
@@ -135,9 +137,15 @@ wire/onion_exp_wiregen.c_args := $(wire/onion_wiregen.c_args)
135137

136138
wire/bolt12_wiregen.c_args := -s --expose-tlv-type=tlv_blinded_path --expose-tlv-type=tlv_invoice_request
137139
wire/bolt12_wiregen.h_args := --include='bitcoin/short_channel_id.h' --include='bitcoin/signature.h' --include='bitcoin/privkey.h' --include='common/bigsize.h' --include='common/amount.h' --include='common/node_id.h' --include='bitcoin/block.h' --include='wire/onion_wire.h' $(wire/bolt12_wiregen.c_args)
140+
141+
wire/bolt12_printgen.c_args := --expose-tlv-type=tlv_blinded_path --expose-tlv-type=tlv_invoice_request --include='wire/onion$(EXP)_wiregen.h' --include='wire/onion$(EXP)_printgen.h'
142+
wire/bolt12_printgen.h_args := --include='wire/bolt12$(EXP)_wiregen.h' --expose-tlv-type=tlv_blinded_path --expose-tlv-type=tlv_invoice_request
143+
138144
# Same for _exp versions
139145
wire/bolt12_exp_wiregen.h_args := $(wire/bolt12_wiregen.h_args)
140146
wire/bolt12_exp_wiregen.c_args := $(wire/bolt12_wiregen.c_args)
147+
wire/bolt12_exp_printgen.h_args := $(wire/bolt12_printgen.h_args)
148+
wire/bolt12_exp_printgen.c_args := $(wire/bolt12_printgen.c_args)
141149

142150
wire/peer_wiregen.h_args := --include='common/channel_id.h' --include='bitcoin/tx.h' --include='bitcoin/preimage.h' --include='bitcoin/short_channel_id.h' --include='common/node_id.h' --include='common/bigsize.h' --include='bitcoin/block.h' --include='bitcoin/privkey.h' -s --expose-tlv-type=tlv_n1 --expose-tlv-type=tlv_n2
143151

0 commit comments

Comments
 (0)