diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-01-01 16:28:57 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-01-01 19:51:50 +0100 |
commit | 022c45a26345a54880e48e3bc30adc60643270e1 (patch) | |
tree | 1a28fb591d7eeab8dbd330e30000698976b7f9b8 | |
parent | 95fdb6e5844fa4499964272e6d842e685555552e (diff) |
register diag_msg via the diag_cmd dispatch table
-rw-r--r-- | src/diag_cmd.c | 4 | ||||
-rw-r--r-- | src/diag_msg.c | 13 | ||||
-rw-r--r-- | src/diag_msg.h | 2 |
3 files changed, 10 insertions, 9 deletions
diff --git a/src/diag_cmd.c b/src/diag_cmd.c index b1f4dc4..e540670 100644 --- a/src/diag_cmd.c +++ b/src/diag_cmd.c @@ -52,10 +52,6 @@ int diag_process_msg(struct diag_instance *di, struct msgb *msg) diag_log_handle(di, msg); msgb_free(msg); return 1; - case DIAG_EXT_MSG_F: - diag_rx_ext_msg_f(di, msg); - msgb_free(msg); - return 1; default: if (cmd_handlers[cmd]) { (cmd_handlers[cmd])(di, msg); diff --git a/src/diag_msg.c b/src/diag_msg.c index f3b9c5d..661d1d1 100644 --- a/src/diag_msg.c +++ b/src/diag_msg.c @@ -26,6 +26,7 @@ #include "protocol/protocol.h" #include "diag_msg.h" +#include "diag_cmd.h" #include "protocol/diagcmd.h" struct diag_set_rt_mask_req { @@ -78,7 +79,7 @@ int diag_msg_config_set_rt_mask(struct diag_instance *di, uint16_t ssid, uint32_ } /* handler for EXT MSG */ -int diag_rx_ext_msg_f(struct diag_instance *di, struct msgb *msgb) +static void diag_rx_ext_msg_f(struct diag_instance *di, struct msgb *msgb) { const uint8_t *data = msgb_data(msgb); const size_t len = msgb_length(msgb); @@ -88,7 +89,7 @@ int diag_rx_ext_msg_f(struct diag_instance *di, struct msgb *msgb) if (len < sizeof(struct ext_log_msg)) { printf("too short ext_log_msg.\n"); - return -1; + return; } msg = (struct ext_log_msg *) data; @@ -123,7 +124,13 @@ int diag_rx_ext_msg_f(struct diag_instance *di, struct msgb *msgb) break; } fputc('\n', stdout); - return 0; } +struct diag_cmd_dispatch_tbl cmd_tbl[] = { + { DIAG_EXT_MSG_F, diag_rx_ext_msg_f }, +}; +static __attribute__((constructor)) void on_dso_load_msg(void) +{ + diag_cmd_reg_dispatch(cmd_tbl, ARRAY_SIZE(cmd_tbl)); +} diff --git a/src/diag_msg.h b/src/diag_msg.h index f3240ce..88a505d 100644 --- a/src/diag_msg.h +++ b/src/diag_msg.h @@ -6,5 +6,3 @@ struct msgb *gen_msg_config_set_rt_mask(uint16_t ssid, uint32_t runtime_mask); int diag_msg_config_set_rt_mask(struct diag_instance *di, uint16_t ssid, uint32_t runtime_mask); - -int diag_rx_ext_msg_f(struct diag_instance *di, struct msgb *msg); |