diff --git a/devtools/Makefile b/devtools/Makefile index b2b052fff..6ef29c40f 100644 --- a/devtools/Makefile +++ b/devtools/Makefile @@ -4,13 +4,15 @@ DEVTOOLS_TOOL_SRC := devtools/bolt11-cli.c devtools/decodemsg.c devtools/onion.c DEVTOOLS_TOOL_OBJS := $(DEVTOOLS_TOOL_SRC:.c=.o) DEVTOOLS_COMMON_OBJS := \ + common/base32.o \ common/bech32.o \ common/bech32_util.o \ common/bolt11.o \ common/hash_u5.o \ common/type_to_string.o \ common/utils.o \ - common/version.o + common/version.o \ + common/wireaddr.o devtools-all: devtools/bolt11-cli devtools/decodemsg devtools/onion diff --git a/devtools/decodemsg.c b/devtools/decodemsg.c index 0524f18de..551fad93d 100644 --- a/devtools/decodemsg.c +++ b/devtools/decodemsg.c @@ -1,11 +1,27 @@ +#include #include #include +#include -int main(int argc UNUSED, char *argv[]) +static void usage(void) { + fprintf(stderr, "Usage: decodemsg \n"); + exit(1); +} + +int main(int argc, char *argv[]) +{ + const u8 *m; setup_locale(); - u8 *m = tal_hexdata(NULL, argv[1], strlen(argv[1])); + if (argc != 2) + usage(); + + /* Last arg is hex string */ + m = tal_hexdata(NULL, argv[1], strlen(argv[1])); + if (!m) + errx(1, "'%s' is not valid hex", argv[1]); + print_message(m); return 0; } diff --git a/devtools/print_wire.c b/devtools/print_wire.c index a13164614..a57081b8b 100644 --- a/devtools/print_wire.c +++ b/devtools/print_wire.c @@ -82,12 +82,34 @@ hexdump: return; } +static void printwire_addresses(const u8 **cursor, size_t *plen, size_t len) +{ + struct wireaddr addr; + + printf("["); + while (*plen && fromwire_wireaddr(cursor, plen, &addr)) + printf(" %s", fmt_wireaddr(NULL, &addr)); + if (!*cursor) + return; + + if (*plen != 0) { + printf(" UNKNOWN:"); + if (!print_hexstring(cursor, plen, len)) + return; + } + printf(" ]\n"); +} + void printwire_u8_array(const char *fieldname, const u8 **cursor, size_t *plen, size_t len) { if (streq(fieldname, "node_announcement.alias")) { printwire_alias(cursor, plen, len); return; } + if (streq(fieldname, "node_announcement.addresses")) { + printwire_addresses(cursor, plen, len); + return; + } printf("["); if (!print_hexstring(cursor, plen, len)) diff --git a/devtools/print_wire.h b/devtools/print_wire.h index eb268a339..d23d7a60f 100644 --- a/devtools/print_wire.h +++ b/devtools/print_wire.h @@ -2,6 +2,7 @@ #define LIGHTNING_DEVTOOLS_PRINT_WIRE_H #include #include +#include #include void printwire_u8(const char *fieldname, const u8 *v);