tools/generate-wire.py: make (and expose) individual TLV print functions.

When we actually put bolt12 fields (.e.g tlv_invoice) in onion messages,
that code will try to call printwire_tlv_invoice(), so expose it.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2022-03-23 10:01:14 +10:30
parent b3a2666a3e
commit 04a152fbcf
2 changed files with 13 additions and 3 deletions

View file

@ -18,6 +18,10 @@ bool printwire_${msg.name}(const char *fieldname, const u8 *cursor);
% endfor
% for tlv in tlvs.values():
bool printwire_${tlv.name}(const char *fieldname, const u8 **cursor, size_t *plen);
% endfor
% if options.expose_subtypes:
% for subtype in subtypes:
bool printwire_${subtype.name}(const char *fieldname, const u8 **cursor, size_t *plen);

View file

@ -119,13 +119,19 @@ ${print_fieldset(msg.fields.values())}
}
% endfor
% for tlv in tlvs.values():
bool printwire_${tlv.name}(const char *fieldname, const u8 **cursor, size_t *plen)
{
return printwire_tlvs(fieldname, cursor, plen, print_tlvs_${tlv.name}, ARRAY_SIZE(print_tlvs_${tlv.name}));
}
% endfor
% if bool(tlvs):
bool print${options.enum_name}_tlv_message(const char *tlv_name, const u8 *msg) {
size_t len = tal_count(msg);
% for tlv in tlvs.values():
if (strcmp(tlv_name, "${tlv.name}") == 0) {
return printwire_tlvs(tlv_name, &msg, &len, print_tlvs_${tlv.name}, ARRAY_SIZE(print_tlvs_${tlv.name}));
}
if (strcmp(tlv_name, "${tlv.name}") == 0)
return printwire_${tlv.name}(tlv_name, &msg, &len);
% endfor
return false;
}