Skip to content

Commit

Permalink
devtools/decodemsg: decode node_announcement.addresses
Browse files Browse the repository at this point in the history
$ ./devtools/decodemsg 01014bfa4585cb36194ce7c308e8d3d9032ff4e42ed4764a4c6d0a9a58da0a4e57e97fbd463577a5fd14347c60cc7bef2b40bd644337153564320b310b4d155cab1300005b3315de0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c035180266e4e3838ae383b3e382bbe383b3e382b92031e69daf000000000000000000000000004d010102030404d202000000000000000000000000000000002607039216a8b803f3acd758aa260704e00533f3e8f2aedaa8969b3d0fa03a96e857bbb28064dca5e147e934244b9ba50230032607

Before:
    WIRE_NODE_ANNOUNCEMENT:
    signature=304402204bfa4585cb36194ce7c308e8d3d9032ff4e42ed4764a4c6d0a9a58da0a4e57e902207fbd463577a5fd14347c60cc7bef2b40bd644337153564320b310b4d155cab13
    features=[]
    timestamp=1530074590
    node_id=0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c03518
    rgb_color=[0266e4]
    alias=[ナンセンス 1杯 e3838ae383b3e382bbe383b3e382b92031e69daf000000000000000000000000 ]
    addresses=[010102030404d202000000000000000000000000000000002607039216a8b803f3acd758aa260704e00533f3e8f2aedaa8969b3d0fa03a96e857bbb28064dca5e147e934244b9ba50230032607]

After:
    WIRE_NODE_ANNOUNCEMENT:
    signature=304402204bfa4585cb36194ce7c308e8d3d9032ff4e42ed4764a4c6d0a9a58da0a4e57e902207fbd463577a5fd14347c60cc7bef2b40bd644337153564320b310b4d155cab13
    features=[]
    timestamp=1530074590
    node_id=0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c03518
    rgb_color=[0266e4]
    alias=[ナンセンス 1杯 e3838ae383b3e382bbe383b3e382b92031e69daf000000000000000000000000 ]
    addresses=[ 1.2.3.4:1234 [::]:9735 silkroad6ownowfk.onion:9735 4acth47i6kxnvkewtm6q7ib2s3ufpo5sqbsnzjpbi7utijcltosqemad.onion:9735 ]

Signed-off-by: Rusty Russell <[email protected]>
  • Loading branch information
rustyrussell authored and cdecker committed Jul 1, 2018
1 parent bf4dc09 commit 0bd82a8
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 3 deletions.
4 changes: 3 additions & 1 deletion devtools/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
20 changes: 18 additions & 2 deletions devtools/decodemsg.c
Original file line number Diff line number Diff line change
@@ -1,11 +1,27 @@
#include <ccan/err/err.h>
#include <common/utils.h>
#include <devtools/gen_print_wire.h>
#include <stdio.h>

int main(int argc UNUSED, char *argv[])
static void usage(void)
{
fprintf(stderr, "Usage: decodemsg <msg-in-hex>\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;
}
22 changes: 22 additions & 0 deletions devtools/print_wire.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,34 @@ static void printwire_alias(const u8 **cursor, size_t *plen, size_t len)
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))
Expand Down
1 change: 1 addition & 0 deletions devtools/print_wire.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define LIGHTNING_DEVTOOLS_PRINT_WIRE_H
#include <bitcoin/preimage.h>
#include <bitcoin/tx.h>
#include <common/wireaddr.h>
#include <wire/gen_peer_wire.h>

void printwire_u8(const char *fieldname, const u8 *v);
Expand Down

0 comments on commit 0bd82a8

Please sign in to comment.