mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-18 05:12:45 +01:00
gossip_control: Add fuzz and seed parameters.
In preparation for improved route randomization.
This commit is contained in:
parent
cfcdcf3993
commit
2b782ee436
@ -299,9 +299,13 @@ static void json_getroute(struct command *cmd, const char *buffer, const jsmntok
|
|||||||
struct lightningd *ld = cmd->ld;
|
struct lightningd *ld = cmd->ld;
|
||||||
struct pubkey source = ld->id, destination;
|
struct pubkey source = ld->id, destination;
|
||||||
jsmntok_t *idtok, *msatoshitok, *riskfactortok, *cltvtok, *fromidtok;
|
jsmntok_t *idtok, *msatoshitok, *riskfactortok, *cltvtok, *fromidtok;
|
||||||
|
jsmntok_t *fuzztok;
|
||||||
|
jsmntok_t *seedtok;
|
||||||
u64 msatoshi;
|
u64 msatoshi;
|
||||||
unsigned cltv = 9;
|
unsigned cltv = 9;
|
||||||
double riskfactor;
|
double riskfactor;
|
||||||
|
double fuzz = 5.0;
|
||||||
|
const char *seed = "default";
|
||||||
|
|
||||||
if (!json_get_params(cmd, buffer, params,
|
if (!json_get_params(cmd, buffer, params,
|
||||||
"id", &idtok,
|
"id", &idtok,
|
||||||
@ -309,6 +313,8 @@ static void json_getroute(struct command *cmd, const char *buffer, const jsmntok
|
|||||||
"riskfactor", &riskfactortok,
|
"riskfactor", &riskfactortok,
|
||||||
"?cltv", &cltvtok,
|
"?cltv", &cltvtok,
|
||||||
"?fromid", &fromidtok,
|
"?fromid", &fromidtok,
|
||||||
|
"?fuzzpercent", &fuzztok,
|
||||||
|
"?seed", &seedtok,
|
||||||
NULL)) {
|
NULL)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -342,6 +348,30 @@ static void json_getroute(struct command *cmd, const char *buffer, const jsmntok
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fuzztok &&
|
||||||
|
!json_tok_double(buffer, fuzztok, &fuzz)) {
|
||||||
|
command_fail(cmd, "'%.*s' is not a valid double",
|
||||||
|
(int)(fuzztok->end - fuzztok->start),
|
||||||
|
buffer + fuzztok->start);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!(0.0 <= fuzz && fuzz <= 100.0)) {
|
||||||
|
command_fail(cmd,
|
||||||
|
"fuzz must be in range 0.0 <= %f <= 100.0",
|
||||||
|
fuzz);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/* Convert from percentage */
|
||||||
|
fuzz = fuzz / 100.0;
|
||||||
|
|
||||||
|
if (seedtok)
|
||||||
|
seed = tal_strndup(cmd, buffer + seedtok->start,
|
||||||
|
seedtok->end - seedtok->start);
|
||||||
|
|
||||||
|
/* TODO: include in getroute request */
|
||||||
|
(void) fuzz;
|
||||||
|
(void) seed;
|
||||||
|
|
||||||
u8 *req = towire_gossip_getroute_request(cmd, &source, &destination, msatoshi, riskfactor*1000, cltv);
|
u8 *req = towire_gossip_getroute_request(cmd, &source, &destination, msatoshi, riskfactor*1000, cltv);
|
||||||
subd_req(ld->gossip, ld->gossip, req, -1, 0, json_getroute_reply, cmd);
|
subd_req(ld->gossip, ld->gossip, req, -1, 0, json_getroute_reply, cmd);
|
||||||
command_still_pending(cmd);
|
command_still_pending(cmd);
|
||||||
@ -350,7 +380,10 @@ static void json_getroute(struct command *cmd, const char *buffer, const jsmntok
|
|||||||
static const struct json_command getroute_command = {
|
static const struct json_command getroute_command = {
|
||||||
"getroute",
|
"getroute",
|
||||||
json_getroute,
|
json_getroute,
|
||||||
"Show route to {id} for {msatoshi}, using {riskfactor} and optional {cltv} (default 9), if specified search from {source} otherwise use this node as source."
|
"Show route to {id} for {msatoshi}, using {riskfactor} and optional {cltv} (default 9). "
|
||||||
|
"If specified search from {fromid} otherwise use this node as source. "
|
||||||
|
"Randomize the route with up to {fuzzpercent} (0.0 -> 100.0, default 5.0) "
|
||||||
|
"using {seed} as an arbitrary-size string seed."
|
||||||
};
|
};
|
||||||
AUTODATA(json_command, &getroute_command);
|
AUTODATA(json_command, &getroute_command);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user