| 426 | } |
| 427 | |
| 428 | static void json_add_node(struct json_stream *js, |
| 429 | const struct gossmap *gossmap, |
| 430 | const struct gossmap_node *n) |
| 431 | { |
| 432 | struct node_id node_id; |
| 433 | u8 *nannounce; |
| 434 | |
| 435 | json_object_start(js, NULL); |
| 436 | gossmap_node_get_id(gossmap, n, &node_id); |
| 437 | json_add_node_id(js, "nodeid", &node_id); |
| 438 | nannounce = gossmap_node_get_announce(tmpctx, gossmap, n); |
| 439 | if (nannounce) { |
| 440 | secp256k1_ecdsa_signature signature; |
| 441 | u8 *features; |
| 442 | u32 timestamp; |
| 443 | u8 rgb_color[3], alias[32]; |
| 444 | u8 *addresses; |
| 445 | struct node_id nid; |
| 446 | struct wireaddr *addrs; |
| 447 | struct json_escape *esc; |
| 448 | struct tlv_node_ann_tlvs *na_tlvs; |
| 449 | |
| 450 | if (!fromwire_node_announcement(nannounce, nannounce, |
| 451 | &signature, |
| 452 | &features, |
| 453 | ×tamp, |
| 454 | &nid, |
| 455 | rgb_color, |
| 456 | alias, |
| 457 | &addresses, |
| 458 | &na_tlvs)) { |
| 459 | plugin_log(plugin, LOG_BROKEN, |
| 460 | "Cannot parse stored node_announcement" |
| 461 | " for %s at %u: %s", |
| 462 | type_to_string(tmpctx, struct node_id, |
| 463 | &node_id), |
| 464 | n->nann_off, |
| 465 | tal_hex(tmpctx, nannounce)); |
| 466 | goto out; |
| 467 | } |
| 468 | |
| 469 | esc = json_escape(NULL, |
| 470 | take(tal_strndup(NULL, |
| 471 | (const char *)alias, |
| 472 | ARRAY_SIZE(alias)))); |
| 473 | json_add_escaped_string(js, "alias", take(esc)); |
| 474 | json_add_hex(js, "color", rgb_color, ARRAY_SIZE(rgb_color)); |
| 475 | json_add_u64(js, "last_timestamp", timestamp); |
| 476 | json_add_hex_talarr(js, "features", features); |
| 477 | |
| 478 | json_array_start(js, "addresses"); |
| 479 | addrs = fromwire_wireaddr_array(nannounce, addresses); |
| 480 | for (size_t i = 0; i < tal_count(addrs); i++) |
| 481 | json_add_address(js, NULL, &addrs[i]); |
| 482 | json_array_end(js); |
| 483 | |
| 484 | if (na_tlvs->option_will_fund) { |
| 485 | json_object_start(js, "option_will_fund"); |
no test coverage detected