diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index b9332a4a3..b81564ec0 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -720,6 +720,12 @@ out: return errstr; } +const char *call_ping_ng(ng_command_ctx_t *ctx) +{ + /* consider ping as always unconditionally ok */ + return NULL; +} + const char *call_offer_ng(ng_command_ctx_t *ctx, const char *addr) { diff --git a/daemon/control_ng.c b/daemon/control_ng.c index 7e3c2c2ab..a28975515 100644 --- a/daemon/control_ng.c +++ b/daemon/control_ng.c @@ -31,6 +31,30 @@ const char magic_load_limit_strings[__LOAD_LIMIT_MAX][64] = { [LOAD_LIMIT_BW] = "Bandwidth limit exceeded", }; +typedef const char *(*ng_command_handler_t)(ng_command_ctx_t *ctx); +typedef const char *(*ng_command_addr_handler_t)(ng_command_ctx_t *ctx, + const char *addr); + +struct ng_command_def { + enum ng_opmode opmode; + const char *name; + const char *escaped_name; + const char *short_name; + /* Only one of handler/addr_handler should be set at a time */ + ng_command_handler_t handler; + ng_command_addr_handler_t addr_handler; +}; + +static const struct ng_command_def ng_command_defs[OP_COUNT] = { +#define X(op, name, esc, short_name, handler) \ + [op] = { op, name, esc, short_name, handler, NULL }, +#define XA(op, name, esc, short_name, handler) \ + [op] = { op, name, esc, short_name, NULL, handler }, + NG_COMMANDS(X, XA) +#undef XA +#undef X +}; + const char *ng_command_strings[OP_COUNT] = { #define X(op, name, esc, short_name, handler) [op] = name, #define XA(op, name, esc, short_name, handler) [op] = name, diff --git a/include/call_interfaces.h b/include/call_interfaces.h index 33233f444..732b806c9 100644 --- a/include/call_interfaces.h +++ b/include/call_interfaces.h @@ -28,6 +28,7 @@ str call_lookup_udp(char **); str call_delete_udp(char **); str call_query_udp(char **); +const char *call_ping_ng(ng_command_ctx_t *ctx); const char *call_offer_ng(ng_command_ctx_t *, const char *); const char *call_answer_ng(ng_command_ctx_t *); const char *call_delete_ng(ng_command_ctx_t *);