/* This file was generated by generate-wire.py */ /* Do not modify this file! Modify the .csv file it was generated from. */ #include "wire/peer_printgen.h" #include #include #include #include #include #include void printpeer_wire_message(const u8 *msg) { switch ((enum peer_wire)fromwire_peektype(msg)) { case WIRE_INIT: printf("WIRE_INIT:\n"); printwire_init("init", msg); return; case WIRE_ERROR: printf("WIRE_ERROR:\n"); printwire_error("error", msg); return; case WIRE_PING: printf("WIRE_PING:\n"); printwire_ping("ping", msg); return; case WIRE_PONG: printf("WIRE_PONG:\n"); printwire_pong("pong", msg); return; case WIRE_OPEN_CHANNEL: printf("WIRE_OPEN_CHANNEL:\n"); printwire_open_channel("open_channel", msg); return; case WIRE_ACCEPT_CHANNEL: printf("WIRE_ACCEPT_CHANNEL:\n"); printwire_accept_channel("accept_channel", msg); return; case WIRE_FUNDING_CREATED: printf("WIRE_FUNDING_CREATED:\n"); printwire_funding_created("funding_created", msg); return; case WIRE_FUNDING_SIGNED: printf("WIRE_FUNDING_SIGNED:\n"); printwire_funding_signed("funding_signed", msg); return; case WIRE_FUNDING_LOCKED: printf("WIRE_FUNDING_LOCKED:\n"); printwire_funding_locked("funding_locked", msg); return; case WIRE_SHUTDOWN: printf("WIRE_SHUTDOWN:\n"); printwire_shutdown("shutdown", msg); return; case WIRE_CLOSING_SIGNED: printf("WIRE_CLOSING_SIGNED:\n"); printwire_closing_signed("closing_signed", msg); return; case WIRE_UPDATE_ADD_HTLC: printf("WIRE_UPDATE_ADD_HTLC:\n"); printwire_update_add_htlc("update_add_htlc", msg); return; case WIRE_UPDATE_FULFILL_HTLC: printf("WIRE_UPDATE_FULFILL_HTLC:\n"); printwire_update_fulfill_htlc("update_fulfill_htlc", msg); return; case WIRE_UPDATE_FAIL_HTLC: printf("WIRE_UPDATE_FAIL_HTLC:\n"); printwire_update_fail_htlc("update_fail_htlc", msg); return; case WIRE_UPDATE_FAIL_MALFORMED_HTLC: printf("WIRE_UPDATE_FAIL_MALFORMED_HTLC:\n"); printwire_update_fail_malformed_htlc("update_fail_malformed_htlc", msg); return; case WIRE_COMMITMENT_SIGNED: printf("WIRE_COMMITMENT_SIGNED:\n"); printwire_commitment_signed("commitment_signed", msg); return; case WIRE_REVOKE_AND_ACK: printf("WIRE_REVOKE_AND_ACK:\n"); printwire_revoke_and_ack("revoke_and_ack", msg); return; case WIRE_UPDATE_FEE: printf("WIRE_UPDATE_FEE:\n"); printwire_update_fee("update_fee", msg); return; case WIRE_CHANNEL_REESTABLISH: printf("WIRE_CHANNEL_REESTABLISH:\n"); printwire_channel_reestablish("channel_reestablish", msg); return; case WIRE_ANNOUNCEMENT_SIGNATURES: printf("WIRE_ANNOUNCEMENT_SIGNATURES:\n"); printwire_announcement_signatures("announcement_signatures", msg); return; case WIRE_CHANNEL_ANNOUNCEMENT: printf("WIRE_CHANNEL_ANNOUNCEMENT:\n"); printwire_channel_announcement("channel_announcement", msg); return; case WIRE_NODE_ANNOUNCEMENT: printf("WIRE_NODE_ANNOUNCEMENT:\n"); printwire_node_announcement("node_announcement", msg); return; case WIRE_CHANNEL_UPDATE: printf("WIRE_CHANNEL_UPDATE:\n"); printwire_channel_update("channel_update", msg); return; case WIRE_QUERY_SHORT_CHANNEL_IDS: printf("WIRE_QUERY_SHORT_CHANNEL_IDS:\n"); printwire_query_short_channel_ids("query_short_channel_ids", msg); return; case WIRE_REPLY_SHORT_CHANNEL_IDS_END: printf("WIRE_REPLY_SHORT_CHANNEL_IDS_END:\n"); printwire_reply_short_channel_ids_end("reply_short_channel_ids_end", msg); return; case WIRE_QUERY_CHANNEL_RANGE: printf("WIRE_QUERY_CHANNEL_RANGE:\n"); printwire_query_channel_range("query_channel_range", msg); return; case WIRE_REPLY_CHANNEL_RANGE: printf("WIRE_REPLY_CHANNEL_RANGE:\n"); printwire_reply_channel_range("reply_channel_range", msg); return; case WIRE_GOSSIP_TIMESTAMP_FILTER: printf("WIRE_GOSSIP_TIMESTAMP_FILTER:\n"); printwire_gossip_timestamp_filter("gossip_timestamp_filter", msg); return; } printf("UNKNOWN: %s\\n", tal_hex(msg, msg)); } void printwire_channel_update_checksums(const char *fieldname, const u8 **cursor, size_t *plen) { printf("checksum_node_id_1="); u32 checksum_node_id_1 = fromwire_u32(cursor, plen); printwire_u32(tal_fmt(NULL, "%s.checksum_node_id_1", fieldname), &checksum_node_id_1); if (!*cursor) { printf("**TRUNCATED**\n"); return; } printf("checksum_node_id_2="); u32 checksum_node_id_2 = fromwire_u32(cursor, plen); printwire_u32(tal_fmt(NULL, "%s.checksum_node_id_2", fieldname), &checksum_node_id_2); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } void printwire_channel_update_timestamps(const char *fieldname, const u8 **cursor, size_t *plen) { printf("timestamp_node_id_1="); u32 timestamp_node_id_1 = fromwire_u32(cursor, plen); printwire_u32(tal_fmt(NULL, "%s.timestamp_node_id_1", fieldname), ×tamp_node_id_1); if (!*cursor) { printf("**TRUNCATED**\n"); return; } printf("timestamp_node_id_2="); u32 timestamp_node_id_2 = fromwire_u32(cursor, plen); printwire_u32(tal_fmt(NULL, "%s.timestamp_node_id_2", fieldname), ×tamp_node_id_2); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static void printwire_tlv_init_tlvs_networks(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "networks"); printf("chains="); printf("["); for (size_t i = 0; i < *plen; i++) { struct bitcoin_blkid v; fromwire_bitcoin_blkid(cursor, plen, &v); if (!*cursor) { printf("**TRUNCATED**\n"); return; } printwire_bitcoin_blkid(tal_fmt(NULL, "%s.chains", fieldname), &v); } printf("]"); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static const struct tlv_print_record_type print_tlvs_init_tlvs[] = { { 1, printwire_tlv_init_tlvs_networks }, }; static void printwire_tlv_n1_tlv1(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "tlv1"); printf("amount_msat="); u64 amount_msat = fromwire_tu64(cursor, plen); printwire_u64(tal_fmt(NULL, "%s.amount_msat", fieldname), &amount_msat); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static void printwire_tlv_n1_tlv2(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "tlv2"); printf("scid="); struct short_channel_id scid; fromwire_short_channel_id(cursor, plen, &scid); printwire_short_channel_id(tal_fmt(NULL, "%s.scid", fieldname), &scid); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static void printwire_tlv_n1_tlv3(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "tlv3"); printf("node_id="); struct pubkey node_id; fromwire_pubkey(cursor, plen, &node_id); printwire_pubkey(tal_fmt(NULL, "%s.node_id", fieldname), &node_id); if (!*cursor) { printf("**TRUNCATED**\n"); return; } printf("amount_msat_1="); struct amount_msat amount_msat_1 = fromwire_amount_msat(cursor, plen); printwire_amount_msat(tal_fmt(NULL, "%s.amount_msat_1", fieldname), &amount_msat_1); if (!*cursor) { printf("**TRUNCATED**\n"); return; } printf("amount_msat_2="); struct amount_msat amount_msat_2 = fromwire_amount_msat(cursor, plen); printwire_amount_msat(tal_fmt(NULL, "%s.amount_msat_2", fieldname), &amount_msat_2); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static void printwire_tlv_n1_tlv4(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "tlv4"); printf("cltv_delta="); u16 cltv_delta = fromwire_u16(cursor, plen); printwire_u16(tal_fmt(NULL, "%s.cltv_delta", fieldname), &cltv_delta); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static const struct tlv_print_record_type print_tlvs_n1[] = { { 1, printwire_tlv_n1_tlv1 }, { 2, printwire_tlv_n1_tlv2 }, { 3, printwire_tlv_n1_tlv3 }, { 254, printwire_tlv_n1_tlv4 }, }; static void printwire_tlv_n2_tlv1(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "tlv1"); printf("amount_msat="); u64 amount_msat = fromwire_tu64(cursor, plen); printwire_u64(tal_fmt(NULL, "%s.amount_msat", fieldname), &amount_msat); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static void printwire_tlv_n2_tlv2(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "tlv2"); printf("cltv_expiry="); u32 cltv_expiry = fromwire_tu32(cursor, plen); printwire_u32(tal_fmt(NULL, "%s.cltv_expiry", fieldname), &cltv_expiry); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static const struct tlv_print_record_type print_tlvs_n2[] = { { 0, printwire_tlv_n2_tlv1 }, { 11, printwire_tlv_n2_tlv2 }, }; static void printwire_tlv_open_channel_tlvs_upfront_shutdown_script(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "upfront_shutdown_script"); printf("shutdown_scriptpubkey="); printwire_u8_array(tal_fmt(NULL, "%s.shutdown_scriptpubkey", fieldname), cursor, plen, *plen); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static const struct tlv_print_record_type print_tlvs_open_channel_tlvs[] = { { 0, printwire_tlv_open_channel_tlvs_upfront_shutdown_script }, }; static void printwire_tlv_accept_channel_tlvs_upfront_shutdown_script(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "upfront_shutdown_script"); printf("shutdown_scriptpubkey="); printwire_u8_array(tal_fmt(NULL, "%s.shutdown_scriptpubkey", fieldname), cursor, plen, *plen); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static const struct tlv_print_record_type print_tlvs_accept_channel_tlvs[] = { { 0, printwire_tlv_accept_channel_tlvs_upfront_shutdown_script }, }; static void printwire_tlv_query_short_channel_ids_tlvs_query_flags(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "query_flags"); printf("encoding_type="); u8 encoding_type = fromwire_u8(cursor, plen); printwire_u8(tal_fmt(NULL, "%s.encoding_type", fieldname), &encoding_type); if (!*cursor) { printf("**TRUNCATED**\n"); return; } printf("encoded_query_flags="); printwire_u8_array(tal_fmt(NULL, "%s.encoded_query_flags", fieldname), cursor, plen, *plen); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static const struct tlv_print_record_type print_tlvs_query_short_channel_ids_tlvs[] = { { 1, printwire_tlv_query_short_channel_ids_tlvs_query_flags }, }; static void printwire_tlv_query_channel_range_tlvs_query_option(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "query_option"); printf("query_option_flags="); bigsize query_option_flags = fromwire_bigsize(cursor, plen); printwire_bigsize(tal_fmt(NULL, "%s.query_option_flags", fieldname), &query_option_flags); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static const struct tlv_print_record_type print_tlvs_query_channel_range_tlvs[] = { { 1, printwire_tlv_query_channel_range_tlvs_query_option }, }; static void printwire_tlv_reply_channel_range_tlvs_timestamps_tlv(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "timestamps_tlv"); printf("encoding_type="); u8 encoding_type = fromwire_u8(cursor, plen); printwire_u8(tal_fmt(NULL, "%s.encoding_type", fieldname), &encoding_type); if (!*cursor) { printf("**TRUNCATED**\n"); return; } printf("encoded_timestamps="); printwire_u8_array(tal_fmt(NULL, "%s.encoded_timestamps", fieldname), cursor, plen, *plen); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static void printwire_tlv_reply_channel_range_tlvs_checksums_tlv(const char *fieldname, const u8 **cursor, size_t *plen) { printf("(msg_name=%s)\n", "checksums_tlv"); printf("checksums="); printf("["); for (size_t i = 0; i < *plen; i++) { printf("{\n"); printwire_channel_update_checksums(tal_fmt(NULL, "%s.checksums", fieldname), cursor, plen); printf("}\n"); } printf("]"); if (!*cursor) { printf("**TRUNCATED**\n"); return; } } static const struct tlv_print_record_type print_tlvs_reply_channel_range_tlvs[] = { { 1, printwire_tlv_reply_channel_range_tlvs_timestamps_tlv }, { 3, printwire_tlv_reply_channel_range_tlvs_checksums_tlv }, }; void printwire_init(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_INIT) { printf("WRONG TYPE?!\n"); return; } u16 gflen = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("globalfeatures="); printwire_u8_array(tal_fmt(NULL, "%s.globalfeatures", fieldname), &cursor, &plen, gflen); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 flen = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("features="); printwire_u8_array(tal_fmt(NULL, "%s.features", fieldname), &cursor, &plen, flen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("tlvs="); printwire_tlvs(tal_fmt(NULL, "%s.tlvs", fieldname), &cursor, &plen, print_tlvs_init_tlvs, ARRAY_SIZE(print_tlvs_init_tlvs)); if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_error(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_ERROR) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 len = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("data="); printwire_u8_array(tal_fmt(NULL, "%s.data", fieldname), &cursor, &plen, len); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_ping(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_PING) { printf("WRONG TYPE?!\n"); return; } printf("num_pong_bytes="); u16 num_pong_bytes = fromwire_u16(&cursor, &plen); printwire_u16(tal_fmt(NULL, "%s.num_pong_bytes", fieldname), &num_pong_bytes); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 byteslen = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("ignored="); printwire_u8_array(tal_fmt(NULL, "%s.ignored", fieldname), &cursor, &plen, byteslen); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_pong(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_PONG) { printf("WRONG TYPE?!\n"); return; } u16 byteslen = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("ignored="); printwire_u8_array(tal_fmt(NULL, "%s.ignored", fieldname), &cursor, &plen, byteslen); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_open_channel(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_OPEN_CHANNEL) { printf("WRONG TYPE?!\n"); return; } printf("chain_hash="); struct bitcoin_blkid chain_hash; fromwire_bitcoin_blkid(&cursor, &plen, &chain_hash); printwire_bitcoin_blkid(tal_fmt(NULL, "%s.chain_hash", fieldname), &chain_hash); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("temporary_channel_id="); struct channel_id temporary_channel_id; fromwire_channel_id(&cursor, &plen, &temporary_channel_id); printwire_channel_id(tal_fmt(NULL, "%s.temporary_channel_id", fieldname), &temporary_channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("funding_satoshis="); struct amount_sat funding_satoshis = fromwire_amount_sat(&cursor, &plen); printwire_amount_sat(tal_fmt(NULL, "%s.funding_satoshis", fieldname), &funding_satoshis); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("push_msat="); struct amount_msat push_msat = fromwire_amount_msat(&cursor, &plen); printwire_amount_msat(tal_fmt(NULL, "%s.push_msat", fieldname), &push_msat); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("dust_limit_satoshis="); struct amount_sat dust_limit_satoshis = fromwire_amount_sat(&cursor, &plen); printwire_amount_sat(tal_fmt(NULL, "%s.dust_limit_satoshis", fieldname), &dust_limit_satoshis); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("max_htlc_value_in_flight_msat="); struct amount_msat max_htlc_value_in_flight_msat = fromwire_amount_msat(&cursor, &plen); printwire_amount_msat(tal_fmt(NULL, "%s.max_htlc_value_in_flight_msat", fieldname), &max_htlc_value_in_flight_msat); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("channel_reserve_satoshis="); struct amount_sat channel_reserve_satoshis = fromwire_amount_sat(&cursor, &plen); printwire_amount_sat(tal_fmt(NULL, "%s.channel_reserve_satoshis", fieldname), &channel_reserve_satoshis); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("htlc_minimum_msat="); struct amount_msat htlc_minimum_msat = fromwire_amount_msat(&cursor, &plen); printwire_amount_msat(tal_fmt(NULL, "%s.htlc_minimum_msat", fieldname), &htlc_minimum_msat); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("feerate_per_kw="); u32 feerate_per_kw = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.feerate_per_kw", fieldname), &feerate_per_kw); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("to_self_delay="); u16 to_self_delay = fromwire_u16(&cursor, &plen); printwire_u16(tal_fmt(NULL, "%s.to_self_delay", fieldname), &to_self_delay); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("max_accepted_htlcs="); u16 max_accepted_htlcs = fromwire_u16(&cursor, &plen); printwire_u16(tal_fmt(NULL, "%s.max_accepted_htlcs", fieldname), &max_accepted_htlcs); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("funding_pubkey="); struct pubkey funding_pubkey; fromwire_pubkey(&cursor, &plen, &funding_pubkey); printwire_pubkey(tal_fmt(NULL, "%s.funding_pubkey", fieldname), &funding_pubkey); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("revocation_basepoint="); struct pubkey revocation_basepoint; fromwire_pubkey(&cursor, &plen, &revocation_basepoint); printwire_pubkey(tal_fmt(NULL, "%s.revocation_basepoint", fieldname), &revocation_basepoint); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("payment_basepoint="); struct pubkey payment_basepoint; fromwire_pubkey(&cursor, &plen, &payment_basepoint); printwire_pubkey(tal_fmt(NULL, "%s.payment_basepoint", fieldname), &payment_basepoint); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("delayed_payment_basepoint="); struct pubkey delayed_payment_basepoint; fromwire_pubkey(&cursor, &plen, &delayed_payment_basepoint); printwire_pubkey(tal_fmt(NULL, "%s.delayed_payment_basepoint", fieldname), &delayed_payment_basepoint); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("htlc_basepoint="); struct pubkey htlc_basepoint; fromwire_pubkey(&cursor, &plen, &htlc_basepoint); printwire_pubkey(tal_fmt(NULL, "%s.htlc_basepoint", fieldname), &htlc_basepoint); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("first_per_commitment_point="); struct pubkey first_per_commitment_point; fromwire_pubkey(&cursor, &plen, &first_per_commitment_point); printwire_pubkey(tal_fmt(NULL, "%s.first_per_commitment_point", fieldname), &first_per_commitment_point); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("channel_flags="); u8 channel_flags = fromwire_u8(&cursor, &plen); printwire_u8(tal_fmt(NULL, "%s.channel_flags", fieldname), &channel_flags); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("tlvs="); printwire_tlvs(tal_fmt(NULL, "%s.tlvs", fieldname), &cursor, &plen, print_tlvs_open_channel_tlvs, ARRAY_SIZE(print_tlvs_open_channel_tlvs)); if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_accept_channel(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_ACCEPT_CHANNEL) { printf("WRONG TYPE?!\n"); return; } printf("temporary_channel_id="); struct channel_id temporary_channel_id; fromwire_channel_id(&cursor, &plen, &temporary_channel_id); printwire_channel_id(tal_fmt(NULL, "%s.temporary_channel_id", fieldname), &temporary_channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("dust_limit_satoshis="); struct amount_sat dust_limit_satoshis = fromwire_amount_sat(&cursor, &plen); printwire_amount_sat(tal_fmt(NULL, "%s.dust_limit_satoshis", fieldname), &dust_limit_satoshis); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("max_htlc_value_in_flight_msat="); struct amount_msat max_htlc_value_in_flight_msat = fromwire_amount_msat(&cursor, &plen); printwire_amount_msat(tal_fmt(NULL, "%s.max_htlc_value_in_flight_msat", fieldname), &max_htlc_value_in_flight_msat); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("channel_reserve_satoshis="); struct amount_sat channel_reserve_satoshis = fromwire_amount_sat(&cursor, &plen); printwire_amount_sat(tal_fmt(NULL, "%s.channel_reserve_satoshis", fieldname), &channel_reserve_satoshis); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("htlc_minimum_msat="); struct amount_msat htlc_minimum_msat = fromwire_amount_msat(&cursor, &plen); printwire_amount_msat(tal_fmt(NULL, "%s.htlc_minimum_msat", fieldname), &htlc_minimum_msat); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("minimum_depth="); u32 minimum_depth = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.minimum_depth", fieldname), &minimum_depth); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("to_self_delay="); u16 to_self_delay = fromwire_u16(&cursor, &plen); printwire_u16(tal_fmt(NULL, "%s.to_self_delay", fieldname), &to_self_delay); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("max_accepted_htlcs="); u16 max_accepted_htlcs = fromwire_u16(&cursor, &plen); printwire_u16(tal_fmt(NULL, "%s.max_accepted_htlcs", fieldname), &max_accepted_htlcs); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("funding_pubkey="); struct pubkey funding_pubkey; fromwire_pubkey(&cursor, &plen, &funding_pubkey); printwire_pubkey(tal_fmt(NULL, "%s.funding_pubkey", fieldname), &funding_pubkey); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("revocation_basepoint="); struct pubkey revocation_basepoint; fromwire_pubkey(&cursor, &plen, &revocation_basepoint); printwire_pubkey(tal_fmt(NULL, "%s.revocation_basepoint", fieldname), &revocation_basepoint); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("payment_basepoint="); struct pubkey payment_basepoint; fromwire_pubkey(&cursor, &plen, &payment_basepoint); printwire_pubkey(tal_fmt(NULL, "%s.payment_basepoint", fieldname), &payment_basepoint); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("delayed_payment_basepoint="); struct pubkey delayed_payment_basepoint; fromwire_pubkey(&cursor, &plen, &delayed_payment_basepoint); printwire_pubkey(tal_fmt(NULL, "%s.delayed_payment_basepoint", fieldname), &delayed_payment_basepoint); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("htlc_basepoint="); struct pubkey htlc_basepoint; fromwire_pubkey(&cursor, &plen, &htlc_basepoint); printwire_pubkey(tal_fmt(NULL, "%s.htlc_basepoint", fieldname), &htlc_basepoint); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("first_per_commitment_point="); struct pubkey first_per_commitment_point; fromwire_pubkey(&cursor, &plen, &first_per_commitment_point); printwire_pubkey(tal_fmt(NULL, "%s.first_per_commitment_point", fieldname), &first_per_commitment_point); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("tlvs="); printwire_tlvs(tal_fmt(NULL, "%s.tlvs", fieldname), &cursor, &plen, print_tlvs_accept_channel_tlvs, ARRAY_SIZE(print_tlvs_accept_channel_tlvs)); if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_funding_created(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_FUNDING_CREATED) { printf("WRONG TYPE?!\n"); return; } printf("temporary_channel_id="); struct channel_id temporary_channel_id; fromwire_channel_id(&cursor, &plen, &temporary_channel_id); printwire_channel_id(tal_fmt(NULL, "%s.temporary_channel_id", fieldname), &temporary_channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("funding_txid="); struct bitcoin_txid funding_txid; fromwire_bitcoin_txid(&cursor, &plen, &funding_txid); printwire_bitcoin_txid(tal_fmt(NULL, "%s.funding_txid", fieldname), &funding_txid); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("funding_output_index="); u16 funding_output_index = fromwire_u16(&cursor, &plen); printwire_u16(tal_fmt(NULL, "%s.funding_output_index", fieldname), &funding_output_index); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("signature="); secp256k1_ecdsa_signature signature; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &signature); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.signature", fieldname), &signature); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_funding_signed(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_FUNDING_SIGNED) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("signature="); secp256k1_ecdsa_signature signature; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &signature); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.signature", fieldname), &signature); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_funding_locked(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_FUNDING_LOCKED) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("next_per_commitment_point="); struct pubkey next_per_commitment_point; fromwire_pubkey(&cursor, &plen, &next_per_commitment_point); printwire_pubkey(tal_fmt(NULL, "%s.next_per_commitment_point", fieldname), &next_per_commitment_point); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_shutdown(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_SHUTDOWN) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 len = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("scriptpubkey="); printwire_u8_array(tal_fmt(NULL, "%s.scriptpubkey", fieldname), &cursor, &plen, len); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_closing_signed(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_CLOSING_SIGNED) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("fee_satoshis="); struct amount_sat fee_satoshis = fromwire_amount_sat(&cursor, &plen); printwire_amount_sat(tal_fmt(NULL, "%s.fee_satoshis", fieldname), &fee_satoshis); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("signature="); secp256k1_ecdsa_signature signature; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &signature); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.signature", fieldname), &signature); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_update_add_htlc(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_UPDATE_ADD_HTLC) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("id="); u64 id = fromwire_u64(&cursor, &plen); printwire_u64(tal_fmt(NULL, "%s.id", fieldname), &id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("amount_msat="); struct amount_msat amount_msat = fromwire_amount_msat(&cursor, &plen); printwire_amount_msat(tal_fmt(NULL, "%s.amount_msat", fieldname), &amount_msat); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("payment_hash="); struct sha256 payment_hash; fromwire_sha256(&cursor, &plen, &payment_hash); printwire_sha256(tal_fmt(NULL, "%s.payment_hash", fieldname), &payment_hash); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("cltv_expiry="); u32 cltv_expiry = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.cltv_expiry", fieldname), &cltv_expiry); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("onion_routing_packet="); printwire_u8_array(tal_fmt(NULL, "%s.onion_routing_packet", fieldname), &cursor, &plen, 1366); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_update_fulfill_htlc(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_UPDATE_FULFILL_HTLC) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("id="); u64 id = fromwire_u64(&cursor, &plen); printwire_u64(tal_fmt(NULL, "%s.id", fieldname), &id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("payment_preimage="); struct preimage payment_preimage; fromwire_preimage(&cursor, &plen, &payment_preimage); printwire_preimage(tal_fmt(NULL, "%s.payment_preimage", fieldname), &payment_preimage); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_update_fail_htlc(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_UPDATE_FAIL_HTLC) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("id="); u64 id = fromwire_u64(&cursor, &plen); printwire_u64(tal_fmt(NULL, "%s.id", fieldname), &id); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 len = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("reason="); printwire_u8_array(tal_fmt(NULL, "%s.reason", fieldname), &cursor, &plen, len); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_update_fail_malformed_htlc(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_UPDATE_FAIL_MALFORMED_HTLC) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("id="); u64 id = fromwire_u64(&cursor, &plen); printwire_u64(tal_fmt(NULL, "%s.id", fieldname), &id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("sha256_of_onion="); struct sha256 sha256_of_onion; fromwire_sha256(&cursor, &plen, &sha256_of_onion); printwire_sha256(tal_fmt(NULL, "%s.sha256_of_onion", fieldname), &sha256_of_onion); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("failure_code="); u16 failure_code = fromwire_u16(&cursor, &plen); printwire_u16(tal_fmt(NULL, "%s.failure_code", fieldname), &failure_code); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_commitment_signed(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_COMMITMENT_SIGNED) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("signature="); secp256k1_ecdsa_signature signature; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &signature); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.signature", fieldname), &signature); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 num_htlcs = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("htlc_signature="); printf("["); for (size_t i = 0; i < num_htlcs; i++) { secp256k1_ecdsa_signature v; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &v); if (!*cursor) { printf("**TRUNCATED**\n"); return; } printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.htlc_signature", fieldname), &v); } printf("]"); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_revoke_and_ack(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_REVOKE_AND_ACK) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("per_commitment_secret="); struct secret per_commitment_secret; fromwire_secret(&cursor, &plen, &per_commitment_secret); printwire_secret(tal_fmt(NULL, "%s.per_commitment_secret", fieldname), &per_commitment_secret); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("next_per_commitment_point="); struct pubkey next_per_commitment_point; fromwire_pubkey(&cursor, &plen, &next_per_commitment_point); printwire_pubkey(tal_fmt(NULL, "%s.next_per_commitment_point", fieldname), &next_per_commitment_point); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_update_fee(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_UPDATE_FEE) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("feerate_per_kw="); u32 feerate_per_kw = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.feerate_per_kw", fieldname), &feerate_per_kw); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_channel_reestablish(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_CHANNEL_REESTABLISH) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("next_commitment_number="); u64 next_commitment_number = fromwire_u64(&cursor, &plen); printwire_u64(tal_fmt(NULL, "%s.next_commitment_number", fieldname), &next_commitment_number); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("next_revocation_number="); u64 next_revocation_number = fromwire_u64(&cursor, &plen); printwire_u64(tal_fmt(NULL, "%s.next_revocation_number", fieldname), &next_revocation_number); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("your_last_per_commitment_secret="); struct secret your_last_per_commitment_secret; fromwire_secret(&cursor, &plen, &your_last_per_commitment_secret); printwire_secret(tal_fmt(NULL, "%s.your_last_per_commitment_secret", fieldname), &your_last_per_commitment_secret); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("my_current_per_commitment_point="); struct pubkey my_current_per_commitment_point; fromwire_pubkey(&cursor, &plen, &my_current_per_commitment_point); printwire_pubkey(tal_fmt(NULL, "%s.my_current_per_commitment_point", fieldname), &my_current_per_commitment_point); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_announcement_signatures(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_ANNOUNCEMENT_SIGNATURES) { printf("WRONG TYPE?!\n"); return; } printf("channel_id="); struct channel_id channel_id; fromwire_channel_id(&cursor, &plen, &channel_id); printwire_channel_id(tal_fmt(NULL, "%s.channel_id", fieldname), &channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("short_channel_id="); struct short_channel_id short_channel_id; fromwire_short_channel_id(&cursor, &plen, &short_channel_id); printwire_short_channel_id(tal_fmt(NULL, "%s.short_channel_id", fieldname), &short_channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("node_signature="); secp256k1_ecdsa_signature node_signature; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &node_signature); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.node_signature", fieldname), &node_signature); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("bitcoin_signature="); secp256k1_ecdsa_signature bitcoin_signature; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &bitcoin_signature); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.bitcoin_signature", fieldname), &bitcoin_signature); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_channel_announcement(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_CHANNEL_ANNOUNCEMENT) { printf("WRONG TYPE?!\n"); return; } printf("node_signature_1="); secp256k1_ecdsa_signature node_signature_1; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &node_signature_1); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.node_signature_1", fieldname), &node_signature_1); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("node_signature_2="); secp256k1_ecdsa_signature node_signature_2; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &node_signature_2); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.node_signature_2", fieldname), &node_signature_2); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("bitcoin_signature_1="); secp256k1_ecdsa_signature bitcoin_signature_1; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &bitcoin_signature_1); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.bitcoin_signature_1", fieldname), &bitcoin_signature_1); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("bitcoin_signature_2="); secp256k1_ecdsa_signature bitcoin_signature_2; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &bitcoin_signature_2); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.bitcoin_signature_2", fieldname), &bitcoin_signature_2); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 len = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("features="); printwire_u8_array(tal_fmt(NULL, "%s.features", fieldname), &cursor, &plen, len); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("chain_hash="); struct bitcoin_blkid chain_hash; fromwire_bitcoin_blkid(&cursor, &plen, &chain_hash); printwire_bitcoin_blkid(tal_fmt(NULL, "%s.chain_hash", fieldname), &chain_hash); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("short_channel_id="); struct short_channel_id short_channel_id; fromwire_short_channel_id(&cursor, &plen, &short_channel_id); printwire_short_channel_id(tal_fmt(NULL, "%s.short_channel_id", fieldname), &short_channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("node_id_1="); struct node_id node_id_1; fromwire_node_id(&cursor, &plen, &node_id_1); printwire_node_id(tal_fmt(NULL, "%s.node_id_1", fieldname), &node_id_1); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("node_id_2="); struct node_id node_id_2; fromwire_node_id(&cursor, &plen, &node_id_2); printwire_node_id(tal_fmt(NULL, "%s.node_id_2", fieldname), &node_id_2); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("bitcoin_key_1="); struct pubkey bitcoin_key_1; fromwire_pubkey(&cursor, &plen, &bitcoin_key_1); printwire_pubkey(tal_fmt(NULL, "%s.bitcoin_key_1", fieldname), &bitcoin_key_1); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("bitcoin_key_2="); struct pubkey bitcoin_key_2; fromwire_pubkey(&cursor, &plen, &bitcoin_key_2); printwire_pubkey(tal_fmt(NULL, "%s.bitcoin_key_2", fieldname), &bitcoin_key_2); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_node_announcement(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_NODE_ANNOUNCEMENT) { printf("WRONG TYPE?!\n"); return; } printf("signature="); secp256k1_ecdsa_signature signature; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &signature); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.signature", fieldname), &signature); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 flen = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("features="); printwire_u8_array(tal_fmt(NULL, "%s.features", fieldname), &cursor, &plen, flen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("timestamp="); u32 timestamp = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.timestamp", fieldname), ×tamp); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("node_id="); struct node_id node_id; fromwire_node_id(&cursor, &plen, &node_id); printwire_node_id(tal_fmt(NULL, "%s.node_id", fieldname), &node_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("rgb_color="); printwire_u8_array(tal_fmt(NULL, "%s.rgb_color", fieldname), &cursor, &plen, 3); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("alias="); printwire_u8_array(tal_fmt(NULL, "%s.alias", fieldname), &cursor, &plen, 32); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 addrlen = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("addresses="); printwire_u8_array(tal_fmt(NULL, "%s.addresses", fieldname), &cursor, &plen, addrlen); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_channel_update(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_CHANNEL_UPDATE) { printf("WRONG TYPE?!\n"); return; } printf("signature="); secp256k1_ecdsa_signature signature; fromwire_secp256k1_ecdsa_signature(&cursor, &plen, &signature); printwire_secp256k1_ecdsa_signature(tal_fmt(NULL, "%s.signature", fieldname), &signature); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("chain_hash="); struct bitcoin_blkid chain_hash; fromwire_bitcoin_blkid(&cursor, &plen, &chain_hash); printwire_bitcoin_blkid(tal_fmt(NULL, "%s.chain_hash", fieldname), &chain_hash); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("short_channel_id="); struct short_channel_id short_channel_id; fromwire_short_channel_id(&cursor, &plen, &short_channel_id); printwire_short_channel_id(tal_fmt(NULL, "%s.short_channel_id", fieldname), &short_channel_id); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("timestamp="); u32 timestamp = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.timestamp", fieldname), ×tamp); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("message_flags="); u8 message_flags = fromwire_u8(&cursor, &plen); printwire_u8(tal_fmt(NULL, "%s.message_flags", fieldname), &message_flags); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("channel_flags="); u8 channel_flags = fromwire_u8(&cursor, &plen); printwire_u8(tal_fmt(NULL, "%s.channel_flags", fieldname), &channel_flags); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("cltv_expiry_delta="); u16 cltv_expiry_delta = fromwire_u16(&cursor, &plen); printwire_u16(tal_fmt(NULL, "%s.cltv_expiry_delta", fieldname), &cltv_expiry_delta); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("htlc_minimum_msat="); struct amount_msat htlc_minimum_msat = fromwire_amount_msat(&cursor, &plen); printwire_amount_msat(tal_fmt(NULL, "%s.htlc_minimum_msat", fieldname), &htlc_minimum_msat); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("fee_base_msat="); u32 fee_base_msat = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.fee_base_msat", fieldname), &fee_base_msat); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("fee_proportional_millionths="); u32 fee_proportional_millionths = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.fee_proportional_millionths", fieldname), &fee_proportional_millionths); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen <= 0) return; printf("(option_channel_htlc_max):"); printf("htlc_maximum_msat="); struct amount_msat htlc_maximum_msat = fromwire_amount_msat(&cursor, &plen); printwire_amount_msat(tal_fmt(NULL, "%s.htlc_maximum_msat", fieldname), &htlc_maximum_msat); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_query_short_channel_ids(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_QUERY_SHORT_CHANNEL_IDS) { printf("WRONG TYPE?!\n"); return; } printf("chain_hash="); struct bitcoin_blkid chain_hash; fromwire_bitcoin_blkid(&cursor, &plen, &chain_hash); printwire_bitcoin_blkid(tal_fmt(NULL, "%s.chain_hash", fieldname), &chain_hash); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 len = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("encoded_short_ids="); printwire_u8_array(tal_fmt(NULL, "%s.encoded_short_ids", fieldname), &cursor, &plen, len); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("tlvs="); printwire_tlvs(tal_fmt(NULL, "%s.tlvs", fieldname), &cursor, &plen, print_tlvs_query_short_channel_ids_tlvs, ARRAY_SIZE(print_tlvs_query_short_channel_ids_tlvs)); if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_reply_short_channel_ids_end(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_REPLY_SHORT_CHANNEL_IDS_END) { printf("WRONG TYPE?!\n"); return; } printf("chain_hash="); struct bitcoin_blkid chain_hash; fromwire_bitcoin_blkid(&cursor, &plen, &chain_hash); printwire_bitcoin_blkid(tal_fmt(NULL, "%s.chain_hash", fieldname), &chain_hash); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("full_information="); u8 full_information = fromwire_u8(&cursor, &plen); printwire_u8(tal_fmt(NULL, "%s.full_information", fieldname), &full_information); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_query_channel_range(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_QUERY_CHANNEL_RANGE) { printf("WRONG TYPE?!\n"); return; } printf("chain_hash="); struct bitcoin_blkid chain_hash; fromwire_bitcoin_blkid(&cursor, &plen, &chain_hash); printwire_bitcoin_blkid(tal_fmt(NULL, "%s.chain_hash", fieldname), &chain_hash); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("first_blocknum="); u32 first_blocknum = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.first_blocknum", fieldname), &first_blocknum); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("number_of_blocks="); u32 number_of_blocks = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.number_of_blocks", fieldname), &number_of_blocks); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("tlvs="); printwire_tlvs(tal_fmt(NULL, "%s.tlvs", fieldname), &cursor, &plen, print_tlvs_query_channel_range_tlvs, ARRAY_SIZE(print_tlvs_query_channel_range_tlvs)); if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_reply_channel_range(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_REPLY_CHANNEL_RANGE) { printf("WRONG TYPE?!\n"); return; } printf("chain_hash="); struct bitcoin_blkid chain_hash; fromwire_bitcoin_blkid(&cursor, &plen, &chain_hash); printwire_bitcoin_blkid(tal_fmt(NULL, "%s.chain_hash", fieldname), &chain_hash); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("first_blocknum="); u32 first_blocknum = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.first_blocknum", fieldname), &first_blocknum); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("number_of_blocks="); u32 number_of_blocks = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.number_of_blocks", fieldname), &number_of_blocks); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("full_information="); u8 full_information = fromwire_u8(&cursor, &plen); printwire_u8(tal_fmt(NULL, "%s.full_information", fieldname), &full_information); if (!cursor) { printf("**TRUNCATED**\n"); return; } u16 len = fromwire_u16(&cursor, &plen); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("encoded_short_ids="); printwire_u8_array(tal_fmt(NULL, "%s.encoded_short_ids", fieldname), &cursor, &plen, len); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("tlvs="); printwire_tlvs(tal_fmt(NULL, "%s.tlvs", fieldname), &cursor, &plen, print_tlvs_reply_channel_range_tlvs, ARRAY_SIZE(print_tlvs_reply_channel_range_tlvs)); if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printwire_gossip_timestamp_filter(const char *fieldname, const u8 *cursor) { size_t plen = tal_count(cursor); if (fromwire_u16(&cursor, &plen) != WIRE_GOSSIP_TIMESTAMP_FILTER) { printf("WRONG TYPE?!\n"); return; } printf("chain_hash="); struct bitcoin_blkid chain_hash; fromwire_bitcoin_blkid(&cursor, &plen, &chain_hash); printwire_bitcoin_blkid(tal_fmt(NULL, "%s.chain_hash", fieldname), &chain_hash); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("first_timestamp="); u32 first_timestamp = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.first_timestamp", fieldname), &first_timestamp); if (!cursor) { printf("**TRUNCATED**\n"); return; } printf("timestamp_range="); u32 timestamp_range = fromwire_u32(&cursor, &plen); printwire_u32(tal_fmt(NULL, "%s.timestamp_range", fieldname), ×tamp_range); if (!cursor) { printf("**TRUNCATED**\n"); return; } if (plen != 0) printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen)); } void printpeer_wire_tlv_message(const char *tlv_name, const u8 *msg) { size_t plen = tal_count(msg); if (strcmp(tlv_name, "init_tlvs") == 0) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_init_tlvs, ARRAY_SIZE(print_tlvs_init_tlvs)); } if (strcmp(tlv_name, "n1") == 0) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_n1, ARRAY_SIZE(print_tlvs_n1)); } if (strcmp(tlv_name, "n2") == 0) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_n2, ARRAY_SIZE(print_tlvs_n2)); } if (strcmp(tlv_name, "open_channel_tlvs") == 0) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_open_channel_tlvs, ARRAY_SIZE(print_tlvs_open_channel_tlvs)); } if (strcmp(tlv_name, "accept_channel_tlvs") == 0) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_accept_channel_tlvs, ARRAY_SIZE(print_tlvs_accept_channel_tlvs)); } if (strcmp(tlv_name, "query_short_channel_ids_tlvs") == 0) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_query_short_channel_ids_tlvs, ARRAY_SIZE(print_tlvs_query_short_channel_ids_tlvs)); } if (strcmp(tlv_name, "query_channel_range_tlvs") == 0) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_query_channel_range_tlvs, ARRAY_SIZE(print_tlvs_query_channel_range_tlvs)); } if (strcmp(tlv_name, "reply_channel_range_tlvs") == 0) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_reply_channel_range_tlvs, ARRAY_SIZE(print_tlvs_reply_channel_range_tlvs)); } } // SHA256STAMP:433cf5b6bd1df5f251b4be28aa38e2e6aa4c15432f3ae103f69591fd970188bd