diff --git a/daemon/cli.c b/daemon/cli.c index 46c91dbf0..87f27fb1a 100644 --- a/daemon/cli.c +++ b/daemon/cli.c @@ -135,134 +135,138 @@ static void cli_incoming_media_evict_players(str *instr, struct cli_writer *cw, #endif -static const cli_handler_t cli_set_handlers[] = { - { "maxopenfiles", cli_incoming_set_maxopenfiles, NULL }, - { "maxsessions", cli_incoming_set_maxsessions, NULL }, - { "maxcpu", cli_incoming_set_maxcpu , NULL }, - { "maxload", cli_incoming_set_maxload, NULL }, - { "maxbw", cli_incoming_set_maxbw , NULL }, - { "timeout", cli_incoming_set_timeout, NULL }, - { "silenttimeout", cli_incoming_set_silenttimeout, NULL }, - { "offertimeout", cli_incoming_set_offertimeout, NULL }, - { "finaltimeout", cli_incoming_set_finaltimeout, NULL }, - { "loglevel", cli_incoming_set_loglevel, NULL }, - { "redisallowederrors", cli_incoming_set_redisallowederrors, NULL }, - { "redisdisabletime", cli_incoming_set_redisdisabletime, NULL }, - { "redisdisable", cli_incoming_set_redisdisable, NULL }, - { "redisconnecttimeout",cli_incoming_set_redisconnecttimeout, NULL }, - { "rediscmdtimeout", cli_incoming_set_rediscmdtimeout, NULL }, - { "controltos", cli_incoming_set_controltos, NULL }, - { "deletedelay", cli_incoming_set_deletedelay , NULL }, - { NULL, }, -}; -static const cli_handler_t cli_list_handlers[] = { - { "numsessions", cli_incoming_list_numsessions, NULL }, - { "sessions", cli_incoming_list_sessions, NULL }, - { "totals", cli_incoming_list_totals, NULL }, - { "counters", cli_incoming_list_counters, NULL }, - { "maxopenfiles", cli_incoming_list_maxopenfiles, NULL }, - { "maxsessions", cli_incoming_list_maxsessions, NULL }, - { "maxcpu", cli_incoming_list_maxcpu, NULL }, - { "maxload", cli_incoming_list_maxload, NULL }, - { "maxbw", cli_incoming_list_maxbw , NULL }, - { "timeout", cli_incoming_list_timeout, NULL }, - { "silenttimeout", cli_incoming_list_silenttimeout, NULL }, - { "offertimeout", cli_incoming_list_offertimeout, NULL }, - { "finaltimeout", cli_incoming_list_finaltimeout, NULL }, - { "loglevels", cli_incoming_list_loglevels, NULL }, - { "loglevel", cli_incoming_list_loglevel, NULL }, - { "redisallowederrors", cli_incoming_list_redisallowederrors, NULL }, - { "redisdisabletime", cli_incoming_list_redisdisabletime, NULL }, - { "redisconnecttimeout",cli_incoming_list_redisconnecttimeout, NULL }, - { "rediscmdtimeout", cli_incoming_list_rediscmdtimeout, NULL }, - { "controltos", cli_incoming_list_controltos, NULL }, - { "deletedelay", cli_incoming_list_deletedelay, NULL }, - { "interfaces", cli_incoming_list_interfaces, NULL }, - { "jsonstats", cli_incoming_list_jsonstats, NULL }, - { "transcoders", cli_incoming_list_transcoders, NULL }, - { NULL, }, -}; -static const cli_handler_t cli_call_handlers[] = { - { "info", cli_incoming_call_info, NULL }, - { "terminate", cli_incoming_call_terminate, NULL }, - { "debug", cli_incoming_call_debug, NULL }, - { "tag", cli_incoming_call_tag, NULL }, - { NULL, }, -}; -static const cli_handler_t cli_tag_handlers[] = { - { "info", cli_incoming_tag_info, NULL }, +#define HANDLER_START(n) static const cli_handler_t n[] = { +#define HANDLER_CMD(c, f) { .cmd = c, .handler = f, }, +#define HANDLER_GENERIC(c, h) { .cmd = c, .handler = cli_generic_handler, .next = h, }, +#define HANDLER_END { NULL, } }; + +HANDLER_START(cli_set_handlers) + HANDLER_CMD("maxopenfiles", cli_incoming_set_maxopenfiles) + HANDLER_CMD("maxsessions", cli_incoming_set_maxsessions) + HANDLER_CMD("maxcpu", cli_incoming_set_maxcpu) + HANDLER_CMD("maxload", cli_incoming_set_maxload) + HANDLER_CMD("maxbw", cli_incoming_set_maxbw) + HANDLER_CMD("timeout", cli_incoming_set_timeout) + HANDLER_CMD("silenttimeout", cli_incoming_set_silenttimeout) + HANDLER_CMD("offertimeout", cli_incoming_set_offertimeout) + HANDLER_CMD("finaltimeout", cli_incoming_set_finaltimeout) + HANDLER_CMD("loglevel", cli_incoming_set_loglevel) + HANDLER_CMD("redisallowederrors", cli_incoming_set_redisallowederrors) + HANDLER_CMD("redisdisabletime", cli_incoming_set_redisdisabletime) + HANDLER_CMD("redisdisable", cli_incoming_set_redisdisable) + HANDLER_CMD("redisconnecttimeout", cli_incoming_set_redisconnecttimeout) + HANDLER_CMD("rediscmdtimeout", cli_incoming_set_rediscmdtimeout) + HANDLER_CMD("controltos", cli_incoming_set_controltos) + HANDLER_CMD("deletedelay", cli_incoming_set_deletedelay) +HANDLER_END + +HANDLER_START(cli_list_handlers) + HANDLER_CMD("numsessions", cli_incoming_list_numsessions) + HANDLER_CMD("sessions", cli_incoming_list_sessions) + HANDLER_CMD("totals", cli_incoming_list_totals) + HANDLER_CMD("counters", cli_incoming_list_counters) + HANDLER_CMD("maxopenfiles", cli_incoming_list_maxopenfiles) + HANDLER_CMD("maxsessions", cli_incoming_list_maxsessions) + HANDLER_CMD("maxcpu", cli_incoming_list_maxcpu) + HANDLER_CMD("maxload", cli_incoming_list_maxload) + HANDLER_CMD("maxbw", cli_incoming_list_maxbw ) + HANDLER_CMD("timeout", cli_incoming_list_timeout) + HANDLER_CMD("silenttimeout", cli_incoming_list_silenttimeout) + HANDLER_CMD("offertimeout", cli_incoming_list_offertimeout) + HANDLER_CMD("finaltimeout", cli_incoming_list_finaltimeout) + HANDLER_CMD("loglevels", cli_incoming_list_loglevels) + HANDLER_CMD("loglevel", cli_incoming_list_loglevel) + HANDLER_CMD("redisallowederrors", cli_incoming_list_redisallowederrors) + HANDLER_CMD("redisdisabletime", cli_incoming_list_redisdisabletime) + HANDLER_CMD("redisconnecttimeout", cli_incoming_list_redisconnecttimeout) + HANDLER_CMD("rediscmdtimeout", cli_incoming_list_rediscmdtimeout) + HANDLER_CMD("controltos", cli_incoming_list_controltos) + HANDLER_CMD("deletedelay", cli_incoming_list_deletedelay) + HANDLER_CMD("interfaces", cli_incoming_list_interfaces) + HANDLER_CMD("jsonstats", cli_incoming_list_jsonstats) + HANDLER_CMD("transcoders", cli_incoming_list_transcoders) +HANDLER_END + +HANDLER_START(cli_call_handlers) + HANDLER_CMD("info", cli_incoming_call_info) + HANDLER_CMD("terminate", cli_incoming_call_terminate) + HANDLER_CMD("debug", cli_incoming_call_debug) + HANDLER_CMD("tag", cli_incoming_call_tag) +HANDLER_END + +HANDLER_START(cli_tag_handlers) + HANDLER_CMD("info", cli_incoming_tag_info) #ifdef WITH_TRANSCODING - { "delay", cli_incoming_tag_delay, NULL }, - { "detect-dtmf", cli_incoming_tag_detdtmf, NULL }, + HANDLER_CMD("delay", cli_incoming_tag_delay) + HANDLER_CMD("detect-dtmf", cli_incoming_tag_detdtmf) #endif - { NULL, }, -}; -static const cli_handler_t cli_params_handlers[] = { - { "start", cli_incoming_params_start, NULL }, - { "current", cli_incoming_params_current, NULL }, - { "diff", cli_incoming_params_diff, NULL }, - { "revert", cli_incoming_params_revert, NULL }, - { NULL, }, -}; +HANDLER_END + +HANDLER_START(cli_params_handlers) + HANDLER_CMD("start", cli_incoming_params_start) + HANDLER_CMD("current", cli_incoming_params_current) + HANDLER_CMD("diff", cli_incoming_params_diff) + HANDLER_CMD("revert", cli_incoming_params_revert) +HANDLER_END + #ifdef WITH_TRANSCODING -static const cli_handler_t cli_media_list_handlers[] = { - { "files", cli_incoming_media_list_files, NULL }, - { "dbs", cli_incoming_media_list_dbs, NULL }, - { "caches", cli_incoming_media_list_caches, NULL }, - { "players", cli_incoming_media_list_players, NULL }, - { NULL, }, -}; -static const cli_handler_t cli_media_add_handlers[] = { - { "file", cli_incoming_media_add_file, NULL }, - { "db", cli_incoming_media_add_db, NULL }, - { "cache", cli_incoming_media_add_cache, NULL }, - { NULL, }, -}; -static const cli_handler_t cli_media_reload_handlers[] = { - { "file", cli_incoming_media_reload_file, NULL }, - { "files", cli_incoming_media_reload_files, NULL }, - { "db", cli_incoming_media_reload_db, NULL }, - { "dbs", cli_incoming_media_reload_dbs, NULL }, - { "cache", cli_incoming_media_reload_cache, NULL }, - { "caches", cli_incoming_media_reload_caches, NULL }, - { NULL, }, -}; -static const cli_handler_t cli_media_evict_handlers[] = { - { "file", cli_incoming_media_evict_file, NULL }, - { "files", cli_incoming_media_evict_files, NULL }, - { "db", cli_incoming_media_evict_db, NULL }, - { "dbs", cli_incoming_media_evict_dbs, NULL }, - { "cache", cli_incoming_media_evict_cache, NULL }, - { "caches", cli_incoming_media_evict_caches, NULL }, - { "players", cli_incoming_media_evict_players, NULL }, - { NULL, }, -}; -static const cli_handler_t cli_media_handlers[] = { - { "list", cli_generic_handler, cli_media_list_handlers }, - { "add", cli_generic_handler, cli_media_add_handlers }, - { "reload", cli_generic_handler, cli_media_reload_handlers }, - { "evict", cli_generic_handler, cli_media_evict_handlers }, - { NULL, }, -}; +HANDLER_START(cli_media_list_handlers) + HANDLER_CMD("files", cli_incoming_media_list_files) + HANDLER_CMD("dbs", cli_incoming_media_list_dbs) + HANDLER_CMD("caches", cli_incoming_media_list_caches) + HANDLER_CMD("players", cli_incoming_media_list_players) +HANDLER_END + +HANDLER_START(cli_media_add_handlers) + HANDLER_CMD("file", cli_incoming_media_add_file) + HANDLER_CMD("db", cli_incoming_media_add_db) + HANDLER_CMD("cache", cli_incoming_media_add_cache) +HANDLER_END + +HANDLER_START(cli_media_reload_handlers) + HANDLER_CMD("file", cli_incoming_media_reload_file) + HANDLER_CMD("files", cli_incoming_media_reload_files) + HANDLER_CMD("db", cli_incoming_media_reload_db) + HANDLER_CMD("dbs", cli_incoming_media_reload_dbs) + HANDLER_CMD("cache", cli_incoming_media_reload_cache) + HANDLER_CMD("caches", cli_incoming_media_reload_caches) +HANDLER_END + +HANDLER_START(cli_media_evict_handlers) + HANDLER_CMD("file", cli_incoming_media_evict_file) + HANDLER_CMD("files", cli_incoming_media_evict_files) + HANDLER_CMD("db", cli_incoming_media_evict_db) + HANDLER_CMD("dbs", cli_incoming_media_evict_dbs) + HANDLER_CMD("cache", cli_incoming_media_evict_cache) + HANDLER_CMD("caches", cli_incoming_media_evict_caches) + HANDLER_CMD("players", cli_incoming_media_evict_players) +HANDLER_END + +HANDLER_START(cli_media_handlers) + HANDLER_GENERIC("list", cli_media_list_handlers) + HANDLER_GENERIC("add", cli_media_add_handlers) + HANDLER_GENERIC("reload", cli_media_reload_handlers) + HANDLER_GENERIC("evict", cli_media_evict_handlers) +HANDLER_END + #endif -static const cli_handler_t cli_top_handlers[] = { - { "list", cli_generic_handler, cli_list_handlers }, - { "terminate", cli_incoming_terminate, NULL }, - { "set", cli_generic_handler, cli_set_handlers }, - { "get", cli_generic_handler, cli_list_handlers }, - { "params", cli_generic_handler, cli_params_handlers }, - { "ksadd", cli_incoming_ksadd, NULL }, - { "ksrm", cli_incoming_ksrm, NULL }, - { "kslist", cli_incoming_kslist, NULL }, - { "active", cli_incoming_active, NULL }, - { "standby", cli_incoming_standby, NULL }, - { "debug", cli_incoming_debug, NULL }, - { "call", cli_incoming_call, NULL }, +HANDLER_START(cli_top_handlers) + HANDLER_GENERIC("list", cli_list_handlers) + HANDLER_CMD("terminate", cli_incoming_terminate) + HANDLER_GENERIC("set", cli_set_handlers) + HANDLER_GENERIC("get", cli_list_handlers) + HANDLER_GENERIC("params", cli_params_handlers) + HANDLER_CMD("ksadd", cli_incoming_ksadd) + HANDLER_CMD("ksrm", cli_incoming_ksrm) + HANDLER_CMD("kslist", cli_incoming_kslist) + HANDLER_CMD("active", cli_incoming_active) + HANDLER_CMD("standby", cli_incoming_standby) + HANDLER_CMD("debug", cli_incoming_debug) + HANDLER_CMD("call", cli_incoming_call) #ifdef WITH_TRANSCODING - { "media", cli_generic_handler, cli_media_handlers }, + HANDLER_GENERIC("media", cli_media_handlers) #endif - { NULL, }, -}; +HANDLER_END static void cli_list_call_info(struct cli_writer *cw, call_t *c);