X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/78e45b53a3904ce832e8a7e4654bc2efe9fb2c2c..98b9b13628a7613868e0fda618e6303961932550:/server/admin.c diff --git a/server/admin.c b/server/admin.c index 05cd168b..78188f54 100644 --- a/server/admin.c +++ b/server/admin.c @@ -553,23 +553,6 @@ void a_notify(const char *fmt, ...) va_end(ap); } -/* --- @a_quit@ --- * - * - * Arguments: --- - * - * Returns: --- - * - * Use: Shuts things down nicely. - */ - -void a_quit(void) -{ - a_unlisten(); - p_destroyall(); - ps_quit(); - exit(0); -} - /* --- @a_sigdie@ --- * * * Arguments: @int sig@ = signal number @@ -594,7 +577,7 @@ static void a_sigdie(int sig, void *v) break; } a_warn("SERVER", "quit", "signal", "%s", p, A_END); - a_quit(); + lp_end(); } /* --- @a_sighup@ --- * @@ -1445,6 +1428,7 @@ static void acmd_add(admin *a, unsigned ac, char *av[]) { const char *tag = 0; admin_addop *add; + const tunnel_ops *tops; /* --- Set stuff up --- */ @@ -1454,7 +1438,7 @@ static void acmd_add(admin *a, unsigned ac, char *av[]) add->peer.privtag = 0; add->peer.knock = 0; add->peer.t_ka = 0; - add->peer.tops = tun_default; + add->peer.tops = p_dflttun(); add->peer.f = 0; /* --- Parse options --- */ @@ -1462,17 +1446,9 @@ static void acmd_add(admin *a, unsigned ac, char *av[]) OPTIONS(ac, av, { OPTARG("-background", arg, { tag = arg; }) OPTARG("-tunnel", arg, { - unsigned i; - for (i = 0;; i++) { - if (!tunnels[i]) { - a_fail(a, "unknown-tunnel", "%s", arg, A_END); - goto fail; - } - if (mystrieq(arg, tunnels[i]->name)) { - add->peer.tops = tunnels[i]; - break; - } - } + if ((tops = p_findtun(arg)) == 0) + { a_fail(a, "unknown-tunnel", "%s", arg, A_END); goto fail; } + add->peer.tops = tops; }) OPTTIME("-keepalive", t, { add->peer.t_ka = t; }) OPT("-cork", { add->peer.f |= KXF_CORK; }) @@ -2150,7 +2126,7 @@ static void acmd_quit(admin *a, unsigned ac, char *av[]) { a_warn("SERVER", "quit", "admin-request", A_END); a_ok(a); - a_quit(); + lp_end(); } static void acmd_version(admin *a, unsigned ac, char *av[]) @@ -2161,10 +2137,7 @@ static void acmd_version(admin *a, unsigned ac, char *av[]) static void acmd_tunnels(admin *a, unsigned ac, char *av[]) { - int i; - - for (i = 0; tunnels[i]; i++) - a_info(a, "%s", tunnels[i]->name, A_END); + FOREACH_TUN(tops, { a_info(a, "%s", tops->name, A_END); }); a_ok(a); } @@ -2278,7 +2251,7 @@ static void a_destroypending(void) if (a->f & AF_FOREGROUND) { T( trace(T_ADMIN, "admin: foreground client quit: shutting down"); ) a_warn("SERVER", "quit", "foreground-eof", A_END); - a_quit(); + lp_end(); } /* --- Abort any background jobs in progress --- */