mirror of https://gerrit.osmocom.org/libosmocore
control_if: Add helper function for 'local execution' of control command
Sometimes (particularly when testing), we may want to parse+execute an arbitrary control command simply form a string buffer, rather than from a msgb. Let's add a helper for that. Change-Id: Iaca748e0d942bb2a1ee7c2776b37485e1439eb0c
This commit is contained in:
parent
79c137c654
commit
f85861d6eb
|
@ -30,5 +30,6 @@ struct ctrl_handle *ctrl_interface_setup_dynip(void *data,
|
|||
ctrl_cmd_lookup lookup);
|
||||
struct ctrl_connection *osmo_ctrl_conn_alloc(void *ctx, void *data);
|
||||
int ctrl_cmd_handle(struct ctrl_handle *ctrl, struct ctrl_cmd *cmd, void *data);
|
||||
struct ctrl_cmd *ctrl_cmd_exec_from_string(struct ctrl_handle *ch, const char *cmdstr);
|
||||
|
||||
int ctrl_lookup_register(ctrl_cmd_lookup lookup);
|
||||
|
|
|
@ -810,3 +810,31 @@ int ctrl_lookup_register(ctrl_cmd_lookup lookup)
|
|||
llist_add_tail(&lh->list, &ctrl_lookup_helpers);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*! \brief Helper for "local execution" of a CTRL command from a string
|
||||
* The function will parse + execute the given control command string
|
||||
* and return a corresponding ctrl_cmd. Caller is responsible to
|
||||
* talloc_free() the return value.
|
||||
* \param[in] Control Interface Command String
|
||||
* \returns parsed command, including reply; NULL on error */
|
||||
struct ctrl_cmd *ctrl_cmd_exec_from_string(struct ctrl_handle *ch, const char *cmdstr)
|
||||
{
|
||||
struct msgb *msg = msgb_alloc(1024, "ctrl-cmd");
|
||||
struct ctrl_cmd *cmd;
|
||||
|
||||
if (!msg)
|
||||
return NULL;
|
||||
msg->l2h = msg->data;
|
||||
osmo_strlcpy((char *)msg->data, cmdstr, msgb_tailroom(msg));
|
||||
msgb_put(msg, strlen(cmdstr));
|
||||
|
||||
cmd = ctrl_cmd_parse(ch, msg);
|
||||
msgb_free(msg);
|
||||
if (!cmd)
|
||||
return NULL;
|
||||
if (ctrl_cmd_handle(ch, cmd, NULL) < 0) {
|
||||
talloc_free(cmd);
|
||||
return NULL;
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
|
|
@ -139,7 +139,7 @@ oap_oap_test_SOURCES = oap/oap_test.c
|
|||
oap_oap_test_LDADD = $(top_builddir)/src/gsm/libosmogsm.la $(top_builddir)/src/libosmocore.la
|
||||
|
||||
fsm_fsm_test_SOURCES = fsm/fsm_test.c
|
||||
fsm_fsm_test_LDADD = $(top_builddir)/src/libosmocore.la
|
||||
fsm_fsm_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/ctrl/libosmoctrl.la
|
||||
|
||||
write_queue_wqueue_test_SOURCES = write_queue/wqueue_test.c
|
||||
write_queue_wqueue_test_LDADD = $(top_builddir)/src/libosmocore.la
|
||||
|
|
Loading…
Reference in New Issue