X-Git-Url: http://www.project-moonshot.org/gitweb/?p=freeradius.git;a=blobdiff_plain;f=src%2Fmain%2Fcommand.c;h=1b6e9c3e2093143ddc3c0ba1c2165a1a7415afe4;hp=94ac3083ac2a40bbd8465b8e22f0f89454b47acd;hb=d8b47607f33382da1f753b7c7aea81c95d1be8a5;hpb=fcc5bc2e05f9d14d99a33dd44f3edfaaf0fe08d6 diff --git a/src/main/command.c b/src/main/command.c index 94ac308..1b6e9c3 100644 --- a/src/main/command.c +++ b/src/main/command.c @@ -1730,6 +1730,54 @@ static int command_add_client_file(rad_listen_t *listener, int argc, char *argv[ } +static int command_del_client(rad_listen_t *listener, int argc, char *argv[]) +{ +#ifdef WITH_DYNAMIC_CLIENTS + RADCLIENT *client; + + client = get_client(listener, argc - 1, argv + 1); + if (!client) return 0; + + if (!client->dynamic) { + cprintf(listener, "ERROR: Client %s was not dynamically defined.\n", argv[1]); + return 0; + } + + /* + * DON'T delete it. Instead, mark it as "dead now". The + * next time we receive a packet for the client, it will + * be deleted. + * + * If we don't receive a packet from it, the client + * structure will stick around for a while. Oh well... + */ + client->lifetime = 1; +#else + cprintf(listener, "ERROR: Dynamic clients are not supported.\n"); +#endif + + return 1; +} + + +static fr_command_table_t command_table_del_client[] = { + { "ipaddr", FR_WRITE, + "del client ipaddr - Delete a dynamically created client", + command_del_client, NULL }, + + { NULL, 0, NULL, NULL, NULL } +}; + + +static fr_command_table_t command_table_del[] = { + { "client", FR_WRITE, + "del client - Delete client configuration commands", + NULL, command_table_del_client }, + + { NULL, 0, NULL, NULL, NULL } +}; + + static fr_command_table_t command_table_add_client[] = { { "file", FR_WRITE, "add client file - Add new client definition from ", @@ -1813,6 +1861,7 @@ static fr_command_table_t command_table[] = { { "debug", FR_WRITE, "debug - debugging commands", NULL, command_table_debug }, + { "del", FR_WRITE, NULL, NULL, command_table_del }, { "hup", FR_WRITE, "hup [module] - sends a HUP signal to the server, or optionally to one module", command_hup, NULL },