@@ -496,10 +496,32 @@ static char *opt_node(const char *optarg, const struct pubkey ***node_ids)
496496 return NULL ;
497497}
498498
499+ static const char * get_alias (const tal_t * ctx ,
500+ const struct gossmap * gossmap ,
501+ const struct gossmap_node * n )
502+ {
503+ const u8 * ann = gossmap_node_get_announce (tmpctx , gossmap , n );
504+ secp256k1_ecdsa_signature signature ;
505+ u8 * features ;
506+ u32 timestamp ;
507+ struct node_id node_id ;
508+ u8 rgb_color [3 ];
509+ u8 alias [32 ];
510+ u8 * addresses ;
511+ struct tlv_node_ann_tlvs * tlvs ;
512+
513+ if (!fromwire_node_announcement (tmpctx , ann , & signature , & features , & timestamp ,
514+ & node_id , rgb_color , alias , & addresses ,
515+ & tlvs ))
516+ return "" ;
517+ return tal_strndup (ctx , (const char * )alias , 32 );
518+ }
519+
499520int main (int argc , char * argv [])
500521{
501522 int infd , outfd ;
502523 const struct pubkey * * node_ids ;
524+ bool print_nodes = false;
503525
504526 common_setup (argv [0 ]);
505527 setup_locale ();
@@ -508,7 +530,9 @@ int main(int argc, char *argv[])
508530 opt_register_noarg ("--verbose|-v" , opt_add_one , & verbose ,
509531 "Print details (each additional gives more!)." );
510532 opt_register_arg ("--node-map=num=<nodeid>" , opt_node , NULL , & node_ids ,
511- "Map node num to <nodeid>" );
533+ "Map node num to <nodeid> (decompress only)" );
534+ opt_register_noarg ("--output-node-map" , opt_set_bool , & print_nodes ,
535+ "Output nodenumber:nodeid:alias for each node (compress only)" );
512536 opt_register_noarg ("--help|-h" , opt_usage_and_exit ,
513537 "[decompress|compress] infile outfile\n"
514538 "Compress or decompress a gossmap file" ,
@@ -554,8 +578,18 @@ int main(int argc, char *argv[])
554578
555579 /* Create map of gossmap index to compression index */
556580 node_to_compr_idx = tal_arr (nodes , size_t , gossmap_max_node_idx (gossmap ));
557- for (size_t i = 0 ; i < tal_count (nodes ); i ++ )
581+ for (size_t i = 0 ; i < tal_count (nodes ); i ++ ) {
558582 node_to_compr_idx [gossmap_node_idx (gossmap , nodes [i ])] = i ;
583+ if (print_nodes ) {
584+ struct node_id node_id ;
585+ gossmap_node_get_id (gossmap , nodes [i ], & node_id );
586+
587+ printf ("%zu:%s:%s\n" ,
588+ i ,
589+ fmt_node_id (tmpctx , & node_id ),
590+ get_alias (tmpctx , gossmap , nodes [i ]));
591+ }
592+ }
559593
560594 if (gzwrite (outf , GC_HEADER , GC_HEADERLEN ) == 0 )
561595 err (1 , "Writing header" );
0 commit comments