mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 18:11:28 +01:00
43b71de897
This is similar to the createinvoice API, except we don't need to save invoice requests in the database. We may, however, have to look up payment_key for recurring invoice requests, and sign the message with the payment_key. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
657 lines
17 KiB
C
Generated
657 lines
17 KiB
C
Generated
/* This file was generated by generate-wire.py */
|
|
/* Do not modify this file! Modify the .csv file it was generated from. */
|
|
|
|
#include "wire/onion_printgen.h"
|
|
#include <ccan/array_size/array_size.h>
|
|
#include <ccan/mem/mem.h>
|
|
#include <ccan/tal/str/str.h>
|
|
#include <common/utils.h>
|
|
#include <inttypes.h>
|
|
#include <stdio.h>
|
|
|
|
void printonion_wire_message(const u8 *msg)
|
|
{
|
|
switch ((enum onion_wire)fromwire_peektype(msg)) {
|
|
case WIRE_INVALID_REALM:
|
|
printf("WIRE_INVALID_REALM:\n");
|
|
printwire_invalid_realm("invalid_realm", msg);
|
|
return;
|
|
case WIRE_TEMPORARY_NODE_FAILURE:
|
|
printf("WIRE_TEMPORARY_NODE_FAILURE:\n");
|
|
printwire_temporary_node_failure("temporary_node_failure", msg);
|
|
return;
|
|
case WIRE_PERMANENT_NODE_FAILURE:
|
|
printf("WIRE_PERMANENT_NODE_FAILURE:\n");
|
|
printwire_permanent_node_failure("permanent_node_failure", msg);
|
|
return;
|
|
case WIRE_REQUIRED_NODE_FEATURE_MISSING:
|
|
printf("WIRE_REQUIRED_NODE_FEATURE_MISSING:\n");
|
|
printwire_required_node_feature_missing("required_node_feature_missing", msg);
|
|
return;
|
|
case WIRE_INVALID_ONION_VERSION:
|
|
printf("WIRE_INVALID_ONION_VERSION:\n");
|
|
printwire_invalid_onion_version("invalid_onion_version", msg);
|
|
return;
|
|
case WIRE_INVALID_ONION_HMAC:
|
|
printf("WIRE_INVALID_ONION_HMAC:\n");
|
|
printwire_invalid_onion_hmac("invalid_onion_hmac", msg);
|
|
return;
|
|
case WIRE_INVALID_ONION_KEY:
|
|
printf("WIRE_INVALID_ONION_KEY:\n");
|
|
printwire_invalid_onion_key("invalid_onion_key", msg);
|
|
return;
|
|
case WIRE_TEMPORARY_CHANNEL_FAILURE:
|
|
printf("WIRE_TEMPORARY_CHANNEL_FAILURE:\n");
|
|
printwire_temporary_channel_failure("temporary_channel_failure", msg);
|
|
return;
|
|
case WIRE_PERMANENT_CHANNEL_FAILURE:
|
|
printf("WIRE_PERMANENT_CHANNEL_FAILURE:\n");
|
|
printwire_permanent_channel_failure("permanent_channel_failure", msg);
|
|
return;
|
|
case WIRE_REQUIRED_CHANNEL_FEATURE_MISSING:
|
|
printf("WIRE_REQUIRED_CHANNEL_FEATURE_MISSING:\n");
|
|
printwire_required_channel_feature_missing("required_channel_feature_missing", msg);
|
|
return;
|
|
case WIRE_UNKNOWN_NEXT_PEER:
|
|
printf("WIRE_UNKNOWN_NEXT_PEER:\n");
|
|
printwire_unknown_next_peer("unknown_next_peer", msg);
|
|
return;
|
|
case WIRE_AMOUNT_BELOW_MINIMUM:
|
|
printf("WIRE_AMOUNT_BELOW_MINIMUM:\n");
|
|
printwire_amount_below_minimum("amount_below_minimum", msg);
|
|
return;
|
|
case WIRE_FEE_INSUFFICIENT:
|
|
printf("WIRE_FEE_INSUFFICIENT:\n");
|
|
printwire_fee_insufficient("fee_insufficient", msg);
|
|
return;
|
|
case WIRE_INCORRECT_CLTV_EXPIRY:
|
|
printf("WIRE_INCORRECT_CLTV_EXPIRY:\n");
|
|
printwire_incorrect_cltv_expiry("incorrect_cltv_expiry", msg);
|
|
return;
|
|
case WIRE_EXPIRY_TOO_SOON:
|
|
printf("WIRE_EXPIRY_TOO_SOON:\n");
|
|
printwire_expiry_too_soon("expiry_too_soon", msg);
|
|
return;
|
|
case WIRE_INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS:
|
|
printf("WIRE_INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS:\n");
|
|
printwire_incorrect_or_unknown_payment_details("incorrect_or_unknown_payment_details", msg);
|
|
return;
|
|
case WIRE_FINAL_INCORRECT_CLTV_EXPIRY:
|
|
printf("WIRE_FINAL_INCORRECT_CLTV_EXPIRY:\n");
|
|
printwire_final_incorrect_cltv_expiry("final_incorrect_cltv_expiry", msg);
|
|
return;
|
|
case WIRE_FINAL_INCORRECT_HTLC_AMOUNT:
|
|
printf("WIRE_FINAL_INCORRECT_HTLC_AMOUNT:\n");
|
|
printwire_final_incorrect_htlc_amount("final_incorrect_htlc_amount", msg);
|
|
return;
|
|
case WIRE_CHANNEL_DISABLED:
|
|
printf("WIRE_CHANNEL_DISABLED:\n");
|
|
printwire_channel_disabled("channel_disabled", msg);
|
|
return;
|
|
case WIRE_EXPIRY_TOO_FAR:
|
|
printf("WIRE_EXPIRY_TOO_FAR:\n");
|
|
printwire_expiry_too_far("expiry_too_far", msg);
|
|
return;
|
|
case WIRE_INVALID_ONION_PAYLOAD:
|
|
printf("WIRE_INVALID_ONION_PAYLOAD:\n");
|
|
printwire_invalid_onion_payload("invalid_onion_payload", msg);
|
|
return;
|
|
case WIRE_MPP_TIMEOUT:
|
|
printf("WIRE_MPP_TIMEOUT:\n");
|
|
printwire_mpp_timeout("mpp_timeout", msg);
|
|
return;
|
|
}
|
|
|
|
printf("UNKNOWN: %s\\n", tal_hex(msg, msg));
|
|
}
|
|
|
|
|
|
static void printwire_tlv_tlv_payload_amt_to_forward(const char *fieldname, const u8 **cursor, size_t *plen)
|
|
{
|
|
printf("(msg_name=%s)\n", "amt_to_forward");
|
|
|
|
printf("amt_to_forward=");
|
|
u64 amt_to_forward = fromwire_tu64(cursor, plen);
|
|
|
|
printwire_u64(tal_fmt(NULL, "%s.amt_to_forward", fieldname), &amt_to_forward);
|
|
if (!*cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
}
|
|
static void printwire_tlv_tlv_payload_outgoing_cltv_value(const char *fieldname, const u8 **cursor, size_t *plen)
|
|
{
|
|
printf("(msg_name=%s)\n", "outgoing_cltv_value");
|
|
|
|
printf("outgoing_cltv_value=");
|
|
u32 outgoing_cltv_value = fromwire_tu32(cursor, plen);
|
|
|
|
printwire_u32(tal_fmt(NULL, "%s.outgoing_cltv_value", fieldname), &outgoing_cltv_value);
|
|
if (!*cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
}
|
|
static void printwire_tlv_tlv_payload_short_channel_id(const char *fieldname, const u8 **cursor, size_t *plen)
|
|
{
|
|
printf("(msg_name=%s)\n", "short_channel_id");
|
|
|
|
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;
|
|
}
|
|
|
|
}
|
|
static void printwire_tlv_tlv_payload_payment_data(const char *fieldname, const u8 **cursor, size_t *plen)
|
|
{
|
|
printf("(msg_name=%s)\n", "payment_data");
|
|
|
|
printf("payment_secret=");
|
|
struct secret payment_secret;
|
|
fromwire_secret(cursor, plen, &payment_secret);
|
|
|
|
printwire_secret(tal_fmt(NULL, "%s.payment_secret", fieldname), &payment_secret);
|
|
if (!*cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
printf("total_msat=");
|
|
u64 total_msat = fromwire_tu64(cursor, plen);
|
|
|
|
printwire_u64(tal_fmt(NULL, "%s.total_msat", fieldname), &total_msat);
|
|
if (!*cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
}
|
|
|
|
static const struct tlv_print_record_type print_tlvs_tlv_payload[] = {
|
|
{ 2, printwire_tlv_tlv_payload_amt_to_forward },
|
|
{ 4, printwire_tlv_tlv_payload_outgoing_cltv_value },
|
|
{ 6, printwire_tlv_tlv_payload_short_channel_id },
|
|
{ 8, printwire_tlv_tlv_payload_payment_data },
|
|
};
|
|
void printwire_invalid_realm(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_INVALID_REALM) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_temporary_node_failure(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_TEMPORARY_NODE_FAILURE) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_permanent_node_failure(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_PERMANENT_NODE_FAILURE) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_required_node_feature_missing(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_REQUIRED_NODE_FEATURE_MISSING) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_invalid_onion_version(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_INVALID_ONION_VERSION) {
|
|
printf("WRONG TYPE?!\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;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_invalid_onion_hmac(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_INVALID_ONION_HMAC) {
|
|
printf("WRONG TYPE?!\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;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_invalid_onion_key(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_INVALID_ONION_KEY) {
|
|
printf("WRONG TYPE?!\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;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_temporary_channel_failure(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_TEMPORARY_CHANNEL_FAILURE) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
u16 len = fromwire_u16(&cursor, &plen);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
printf("channel_update=");
|
|
printwire_u8_array(tal_fmt(NULL, "%s.channel_update", fieldname), &cursor, &plen, len);
|
|
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_permanent_channel_failure(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_PERMANENT_CHANNEL_FAILURE) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_required_channel_feature_missing(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_REQUIRED_CHANNEL_FEATURE_MISSING) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_unknown_next_peer(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_UNKNOWN_NEXT_PEER) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_amount_below_minimum(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_AMOUNT_BELOW_MINIMUM) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
printf("htlc_msat=");
|
|
struct amount_msat htlc_msat = fromwire_amount_msat(&cursor, &plen);
|
|
|
|
printwire_amount_msat(tal_fmt(NULL, "%s.htlc_msat", fieldname), &htlc_msat);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
u16 len = fromwire_u16(&cursor, &plen);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
printf("channel_update=");
|
|
printwire_u8_array(tal_fmt(NULL, "%s.channel_update", fieldname), &cursor, &plen, len);
|
|
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_fee_insufficient(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_FEE_INSUFFICIENT) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
printf("htlc_msat=");
|
|
struct amount_msat htlc_msat = fromwire_amount_msat(&cursor, &plen);
|
|
|
|
printwire_amount_msat(tal_fmt(NULL, "%s.htlc_msat", fieldname), &htlc_msat);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
u16 len = fromwire_u16(&cursor, &plen);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
printf("channel_update=");
|
|
printwire_u8_array(tal_fmt(NULL, "%s.channel_update", fieldname), &cursor, &plen, len);
|
|
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_incorrect_cltv_expiry(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_INCORRECT_CLTV_EXPIRY) {
|
|
printf("WRONG TYPE?!\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;
|
|
}
|
|
u16 len = fromwire_u16(&cursor, &plen);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
printf("channel_update=");
|
|
printwire_u8_array(tal_fmt(NULL, "%s.channel_update", fieldname), &cursor, &plen, len);
|
|
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_expiry_too_soon(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_EXPIRY_TOO_SOON) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
u16 len = fromwire_u16(&cursor, &plen);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
printf("channel_update=");
|
|
printwire_u8_array(tal_fmt(NULL, "%s.channel_update", fieldname), &cursor, &plen, len);
|
|
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_incorrect_or_unknown_payment_details(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
printf("htlc_msat=");
|
|
struct amount_msat htlc_msat = fromwire_amount_msat(&cursor, &plen);
|
|
|
|
printwire_amount_msat(tal_fmt(NULL, "%s.htlc_msat", fieldname), &htlc_msat);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
printf("height=");
|
|
u32 height = fromwire_u32(&cursor, &plen);
|
|
|
|
printwire_u32(tal_fmt(NULL, "%s.height", fieldname), &height);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_final_incorrect_cltv_expiry(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_FINAL_INCORRECT_CLTV_EXPIRY) {
|
|
printf("WRONG TYPE?!\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;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_final_incorrect_htlc_amount(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_FINAL_INCORRECT_HTLC_AMOUNT) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
printf("incoming_htlc_amt=");
|
|
struct amount_msat incoming_htlc_amt = fromwire_amount_msat(&cursor, &plen);
|
|
|
|
printwire_amount_msat(tal_fmt(NULL, "%s.incoming_htlc_amt", fieldname), &incoming_htlc_amt);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_channel_disabled(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_CHANNEL_DISABLED) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_expiry_too_far(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_EXPIRY_TOO_FAR) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_invalid_onion_payload(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_INVALID_ONION_PAYLOAD) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
printf("type=");
|
|
bigsize type = fromwire_bigsize(&cursor, &plen);
|
|
|
|
printwire_bigsize(tal_fmt(NULL, "%s.type", fieldname), &type);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
printf("offset=");
|
|
u16 offset = fromwire_u16(&cursor, &plen);
|
|
|
|
printwire_u16(tal_fmt(NULL, "%s.offset", fieldname), &offset);
|
|
if (!cursor) {
|
|
printf("**TRUNCATED**\n");
|
|
return;
|
|
}
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
void printwire_mpp_timeout(const char *fieldname, const u8 *cursor)
|
|
{
|
|
|
|
size_t plen = tal_count(cursor);
|
|
if (fromwire_u16(&cursor, &plen) != WIRE_MPP_TIMEOUT) {
|
|
printf("WRONG TYPE?!\n");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (plen != 0)
|
|
printf("EXTRA: %s\n", tal_hexstr(NULL, cursor, plen));
|
|
}
|
|
|
|
void printonion_wire_tlv_message(const char *tlv_name, const u8 *msg) {
|
|
size_t plen = tal_count(msg);
|
|
if (strcmp(tlv_name, "tlv_payload") == 0) {
|
|
printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_tlv_payload, ARRAY_SIZE(print_tlvs_tlv_payload));
|
|
}
|
|
}
|
|
// SHA256STAMP:de983a18d6a298f6dc27229bc10eaaf846bc313e06450e23d122ea84de5c829a
|