mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 09:54:16 +01:00
plugin/offers: add inject_onionmessage helper.
This will obsolete the existing calls to RPC "sendonionmessage", but we transition by introducing it separately. It's designed to work with the common/onion_message routines and "injectonionmessage". Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
eee7344bf2
commit
8c81d6a0b9
@ -208,7 +208,7 @@ $(PLUGIN_KEYSEND_OBJS): $(PLUGIN_PAY_LIB_HEADER)
|
|||||||
|
|
||||||
plugins/spenderp: bitcoin/block.o bitcoin/preimage.o bitcoin/psbt.o common/psbt_open.o common/json_channel_type.o common/channel_type.o common/features.o wire/peer_wiregen.o $(PLUGIN_SPENDER_OBJS) $(PLUGIN_LIB_OBJS) $(PLUGIN_COMMON_OBJS) $(JSMN_OBJS)
|
plugins/spenderp: bitcoin/block.o bitcoin/preimage.o bitcoin/psbt.o common/psbt_open.o common/json_channel_type.o common/channel_type.o common/features.o wire/peer_wiregen.o $(PLUGIN_SPENDER_OBJS) $(PLUGIN_LIB_OBJS) $(PLUGIN_COMMON_OBJS) $(JSMN_OBJS)
|
||||||
|
|
||||||
plugins/offers: $(PLUGIN_OFFERS_OBJS) $(PLUGIN_LIB_OBJS) $(PLUGIN_COMMON_OBJS) common/addr.o common/bolt12.o common/bolt12_merkle.o common/bolt11_json.o common/iso4217.o $(WIRE_OBJS) $(WIRE_BOLT12_OBJS) bitcoin/block.o common/channel_id.o bitcoin/preimage.o common/blindedpath.o common/invoice_path_id.o common/blinding.o common/hmac.o common/json_blinded_path.o common/gossmap.o common/fp16.o $(JSMN_OBJS) common/dijkstra.o common/route.o common/gossmods_listpeerchannels.o
|
plugins/offers: $(PLUGIN_OFFERS_OBJS) $(PLUGIN_LIB_OBJS) $(PLUGIN_COMMON_OBJS) common/addr.o common/bolt12.o common/bolt12_merkle.o common/bolt11_json.o common/iso4217.o $(WIRE_OBJS) $(WIRE_BOLT12_OBJS) bitcoin/block.o common/channel_id.o bitcoin/preimage.o common/blindedpath.o common/invoice_path_id.o common/blinding.o common/hmac.o common/json_blinded_path.o common/gossmap.o common/fp16.o $(JSMN_OBJS) common/dijkstra.o common/route.o common/gossmods_listpeerchannels.o common/onion_message.o
|
||||||
|
|
||||||
plugins/funder: bitcoin/psbt.o common/psbt_open.o $(PLUGIN_FUNDER_OBJS) $(PLUGIN_LIB_OBJS) $(PLUGIN_COMMON_OBJS) $(JSMN_OBJS)
|
plugins/funder: bitcoin/psbt.o common/psbt_open.o $(PLUGIN_FUNDER_OBJS) $(PLUGIN_LIB_OBJS) $(PLUGIN_COMMON_OBJS) $(JSMN_OBJS)
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <common/json_param.h>
|
#include <common/json_param.h>
|
||||||
#include <common/json_stream.h>
|
#include <common/json_stream.h>
|
||||||
#include <common/memleak.h>
|
#include <common/memleak.h>
|
||||||
|
#include <common/onion_message.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <plugins/fetchinvoice.h>
|
#include <plugins/fetchinvoice.h>
|
||||||
#include <plugins/offers.h>
|
#include <plugins/offers.h>
|
||||||
@ -109,6 +110,35 @@ bool convert_to_scidd(struct command *cmd,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct command_result *
|
||||||
|
inject_onionmessage_(struct command *cmd,
|
||||||
|
const struct onion_message *omsg,
|
||||||
|
struct command_result *(*cb)(struct command *command,
|
||||||
|
const char *buf,
|
||||||
|
const jsmntok_t *result,
|
||||||
|
void *arg),
|
||||||
|
struct command_result *(*errcb)(struct command *command,
|
||||||
|
const char *buf,
|
||||||
|
const jsmntok_t *result,
|
||||||
|
void *arg),
|
||||||
|
void *arg)
|
||||||
|
{
|
||||||
|
struct out_req *req;
|
||||||
|
|
||||||
|
req = jsonrpc_request_start(cmd->plugin, cmd, "injectonionmessage",
|
||||||
|
cb, errcb, arg);
|
||||||
|
json_add_pubkey(req->js, "blinding", &omsg->first_blinding);
|
||||||
|
json_array_start(req->js, "hops");
|
||||||
|
for (size_t i = 0; i < tal_count(omsg->hops); i++) {
|
||||||
|
json_object_start(req->js, NULL);
|
||||||
|
json_add_pubkey(req->js, "id", &omsg->hops[i]->pubkey);
|
||||||
|
json_add_hex_talarr(req->js, "tlv", omsg->hops[i]->raw_payload);
|
||||||
|
json_object_end(req->js);
|
||||||
|
}
|
||||||
|
json_array_end(req->js);
|
||||||
|
return send_outreq(cmd->plugin, req);
|
||||||
|
}
|
||||||
|
|
||||||
struct command_result *
|
struct command_result *
|
||||||
send_onion_reply(struct command *cmd,
|
send_onion_reply(struct command *cmd,
|
||||||
struct blinded_path *reply_path,
|
struct blinded_path *reply_path,
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
struct command_result;
|
struct command_result;
|
||||||
struct command;
|
struct command;
|
||||||
|
struct onion_message;
|
||||||
struct plugin;
|
struct plugin;
|
||||||
|
|
||||||
/* This is me. */
|
/* This is me. */
|
||||||
@ -29,6 +30,34 @@ send_onion_reply(struct command *cmd,
|
|||||||
struct blinded_path *reply_path,
|
struct blinded_path *reply_path,
|
||||||
struct tlv_onionmsg_tlv *payload);
|
struct tlv_onionmsg_tlv *payload);
|
||||||
|
|
||||||
|
/* Helper to send an onion message */
|
||||||
|
#define inject_onionmessage(cmd, omsg, success, fail, arg) \
|
||||||
|
inject_onionmessage_((cmd), (omsg), \
|
||||||
|
typesafe_cb_preargs(struct command_result *, void *, \
|
||||||
|
(success), (arg), \
|
||||||
|
struct command *, \
|
||||||
|
const char *, \
|
||||||
|
const jsmntok_t *), \
|
||||||
|
typesafe_cb_preargs(struct command_result *, void *, \
|
||||||
|
(fail), (arg), \
|
||||||
|
struct command *, \
|
||||||
|
const char *, \
|
||||||
|
const jsmntok_t *), \
|
||||||
|
(arg))
|
||||||
|
|
||||||
|
struct command_result *
|
||||||
|
inject_onionmessage_(struct command *cmd,
|
||||||
|
const struct onion_message *omsg,
|
||||||
|
struct command_result *(*cb)(struct command *command,
|
||||||
|
const char *buf,
|
||||||
|
const jsmntok_t *result,
|
||||||
|
void *arg),
|
||||||
|
struct command_result *(*errcb)(struct command *command,
|
||||||
|
const char *buf,
|
||||||
|
const jsmntok_t *result,
|
||||||
|
void *arg),
|
||||||
|
void *arg);
|
||||||
|
|
||||||
/* Get the (latest) gossmap */
|
/* Get the (latest) gossmap */
|
||||||
struct gossmap *get_gossmap(struct plugin *plugin);
|
struct gossmap *get_gossmap(struct plugin *plugin);
|
||||||
#endif /* LIGHTNING_PLUGINS_OFFERS_H */
|
#endif /* LIGHTNING_PLUGINS_OFFERS_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user