X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/ab6f1b0d12478b8fe266e3dacc3de7121df29066..18969e42a11e11ef8a3ea81eaf0038e8e74e004d:/server/admin.c?ds=sidebyside diff --git a/server/admin.c b/server/admin.c index b661e62e..4bab4404 100644 --- a/server/admin.c +++ b/server/admin.c @@ -1593,7 +1593,7 @@ static void a_ping(admin *a, unsigned ac, char *av[], return; bad_syntax: - a_fail(a, "bad-syntax", "%s", cmd, "[OPTIONS] PEER", cmd, A_END); + a_fail(a, "bad-syntax", "%s", cmd, "[OPTIONS] PEER", A_END); fail: if (pg) xfree(pg); return; @@ -2101,21 +2101,40 @@ static void acmd_stats(admin *a, unsigned ac, char *av[]) static void acmd_kill(admin *a, unsigned ac, char *av[]) { peer *p; + int bye = 1; + OPTIONS(ac, av, { + OPT("-quiet", { bye = 0; }) + }); + if (!*av || av[1]) goto bad_syntax; if ((p = a_findpeer(a, av[0])) != 0) { - p_destroy(p, 1); + p_destroy(p, bye); a_ok(a); } + return; + +bad_syntax: + a_fail(a, "bad-syntax", "kill", "[OPTIONS] PEER", A_END); } static void acmd_forcekx(admin *a, unsigned ac, char *av[]) { peer *p; + int quiet = 0; + OPTIONS(ac, av, { + OPT("-quiet", { quiet = 1; }) + }); + if (!*av || av[1]) goto bad_syntax; if ((p = a_findpeer(a, av[0])) != 0) { - kx_start(&p->kx, 1); + if (!quiet) kx_start(&p->kx, 1); + else { p->kx.t_valid = time(0) - T_VALID - 1; } a_ok(a); } + return; + +bad_syntax: + a_fail(a, "bad-syntax", "forcekx", "[OPTIONS] PEER", A_END); } static void acmd_reload(admin *a, unsigned ac, char *av[]) @@ -2159,13 +2178,13 @@ static const acmd acmdtab[] = { { "checkchal", "CHAL", 1, 1, acmd_checkchal }, { "daemon", 0, 0, 0, acmd_daemon }, { "eping", "[OPTIONS] PEER", 1, 0xffff, acmd_eping }, - { "forcekx", "PEER", 1, 1, acmd_forcekx }, + { "forcekx", "[OPTIONS] PEER", 1, 0xffff, acmd_forcekx }, { "getchal", 0, 0, 0, acmd_getchal }, { "greet", "PEER CHAL", 2, 2, acmd_greet }, { "help", 0, 0, 0, acmd_help }, { "ifname", "PEER", 1, 1, acmd_ifname }, { "jobs", 0, 0, 0, acmd_jobs }, - { "kill", "PEER", 1, 1, acmd_kill }, + { "kill", "[OPTIONS] PEER", 1, 0xffff, acmd_kill }, { "list", 0, 0, 0, acmd_list }, { "notify", "MESSAGE ...", 1, 0xffff, acmd_notify }, { "peerinfo", "PEER", 1, 1, acmd_peerinfo },