Skip to content

Commit f755313

Browse files
Lagrang3rustyrussell
authored andcommitted
askrene-unreserve: add dev_remove_all option
Changelog-None Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
1 parent b8bc77c commit f755313

11 files changed

Lines changed: 265 additions & 197 deletions

File tree

.msggen.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,7 @@
851851
"AskRene-Unreserve.path[].short_channel_id_dir": 4
852852
},
853853
"Askrene-unreserveRequest": {
854+
"AskRene-Unreserve.dev_remove_all": 2,
854855
"AskRene-Unreserve.path[]": 1
855856
},
856857
"Askrene-update-channelRequest": {
@@ -4746,6 +4747,10 @@
47464747
"added": "v24.11",
47474748
"deprecated": null
47484749
},
4750+
"AskRene-Unreserve.dev_remove_all": {
4751+
"added": "v26.04",
4752+
"deprecated": null
4753+
},
47494754
"AskRene-Unreserve.path[]": {
47504755
"added": "v24.11",
47514756
"deprecated": null

cln-grpc/proto/node.proto

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cln-grpc/src/convert.rs

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cln-rpc/src/model.rs

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contrib/msggen/msggen/schema.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1997,6 +1997,11 @@
19971997
}
19981998
}
19991999
}
2000+
},
2001+
"dev_remove_all": {
2002+
"hidden": true,
2003+
"type": "boolean",
2004+
"added": "v26.04"
20002005
}
20012006
}
20022007
},

contrib/pyln-grpc-proto/pyln/grpc/node_pb2.py

Lines changed: 188 additions & 188 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

doc/schemas/askrene-unreserve.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@
4646
}
4747
}
4848
}
49+
},
50+
"dev_remove_all": {
51+
"hidden": true,
52+
"type": "boolean",
53+
"added": "v26.04"
4954
}
5055
}
5156
},

plugins/askrene/askrene.c

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -946,24 +946,30 @@ static struct command_result *json_askrene_unreserve(struct command *cmd,
946946
struct reserve_hop *path;
947947
struct json_stream *response;
948948
struct askrene *askrene = get_askrene(cmd->plugin);
949+
bool *remove_all;
949950

950951
if (!param(cmd, buffer, params,
951952
p_req("path", param_reserve_path, &path),
953+
p_opt_dev("dev_remove_all", param_bool, &remove_all, false),
952954
NULL))
953955
return command_param_failed();
954956
plugin_log(cmd->plugin, LOG_TRACE, "%s called: %.*s", __func__,
955957
json_tok_full_len(params), json_tok_full(buffer, params));
956958

957-
for (size_t i = 0; i < tal_count(path); i++) {
958-
if (!reserve_remove(askrene->reserved, &path[i])) {
959-
return command_fail(cmd, JSONRPC2_INVALID_PARAMS,
960-
"Unknown reservation for %s%s%s",
961-
fmt_short_channel_id_dir(tmpctx,
962-
&path[i].scidd),
963-
path[i].layer ? " on layer " : "",
964-
path[i].layer ? layer_name(path[i].layer) : "");
959+
if (*remove_all) {
960+
reserve_remove_all(askrene->reserved);
961+
} else {
962+
for (size_t i = 0; i < tal_count(path); i++) {
963+
if (!reserve_remove(askrene->reserved, &path[i])) {
964+
return command_fail(cmd, JSONRPC2_INVALID_PARAMS,
965+
"Unknown reservation for %s%s%s",
966+
fmt_short_channel_id_dir(tmpctx,
967+
&path[i].scidd),
968+
path[i].layer ? " on layer " : "",
969+
path[i].layer ? layer_name(path[i].layer) : "");
970+
}
965971
}
966-
}
972+
}
967973

968974
response = jsonrpc_stream_success(cmd);
969975
return command_finished(cmd, response);

plugins/askrene/reserve.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,18 @@ bool reserve_remove(struct reserve_htable *reserved,
8888
return false;
8989
}
9090

91+
void reserve_remove_all(struct reserve_htable *reserved)
92+
{
93+
struct reserve *r;
94+
struct reserve_htable_iter rit;
95+
96+
for (r = reserve_htable_first(reserved, &rit); r;
97+
r = reserve_htable_next(reserved, &rit)) {
98+
tal_free(r);
99+
}
100+
reserve_htable_clear(reserved);
101+
}
102+
91103
void reserves_clear_capacities(struct reserve_htable *reserved,
92104
const struct gossmap *gossmap,
93105
fp16_t *capacities)

plugins/askrene/reserve.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ void reserve_add(struct reserve_htable *reserved,
2929
bool reserve_remove(struct reserve_htable *reserved,
3030
const struct reserve_hop *rhop);
3131

32+
/* Remove all reservations. */
33+
void reserve_remove_all(struct reserve_htable *reserved);
34+
3235
/* Clear capacities array where we have reserves */
3336
void reserves_clear_capacities(struct reserve_htable *reserved,
3437
const struct gossmap *gossmap,

0 commit comments

Comments
 (0)