This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.
Holger Freyther holger at freyther.deFrom: Holger Hans Peter Freyther <holger at moiji-mobile.com> Certain attributes are read-only. Add a macro to make it more easy to define those. --- openbsc/include/openbsc/control_cmd.h | 20 ++++++++++++++++++ openbsc/src/osmo-bsc/osmo_bsc_ctrl.c | 38 +++-------------------------------- 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/openbsc/include/openbsc/control_cmd.h b/openbsc/include/openbsc/control_cmd.h index 8aede15..df5ae23 100644 --- a/openbsc/include/openbsc/control_cmd.h +++ b/openbsc/include/openbsc/control_cmd.h @@ -172,6 +172,26 @@ static struct ctrl_cmd_element cmd_##cmdname = { \ .verify = &verify_##cmdname, \ } +#define CTRL_CMD_DEFINE_RO(cmdname, cmdstr) \ +static int get_##cmdname(struct ctrl_cmd *cmd, void *data); \ +static inline int set_##cmdname(struct ctrl_cmd *cmd, void *data) \ +{ \ + cmd->reply = "Read Only attribute"; \ + return CTRL_CMD_ERROR; \ +} \ +static inline int verify_##cmdname(struct ctrl_cmd *cmd, const char *value, void *data) \ +{ \ + cmd->reply = "Read Only attribute"; \ + return 1; \ +} \ +static struct ctrl_cmd_element cmd_##cmdname = { \ + .name = cmdstr, \ + .param = NULL, \ + .get = &get_##cmdname, \ + .set = &set_##cmdname, \ + .verify = &verify_##cmdname, \ +} + struct gsm_network; #endif /* _CONTROL_CMD_H */ diff --git a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c index e32218d..d3593de 100644 --- a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c +++ b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c @@ -58,7 +58,7 @@ void osmo_bsc_send_trap(struct ctrl_cmd *cmd, struct bsc_msc_connection *msc_con talloc_free(trap); } -CTRL_CMD_DEFINE(msc_connection_status, "msc_connection_status"); +CTRL_CMD_DEFINE_RO(msc_connection_status, "msc_connection_status"); static int msc_connection_status = 0; static int get_msc_connection_status(struct ctrl_cmd *cmd, void *data) @@ -70,17 +70,6 @@ static int get_msc_connection_status(struct ctrl_cmd *cmd, void *data) return CTRL_CMD_REPLY; } -static int set_msc_connection_status(struct ctrl_cmd *cmd, void *data) -{ - return CTRL_CMD_ERROR; -} - -static int verify_msc_connection_status(struct ctrl_cmd *cmd, const char *value, void *data) -{ - cmd->reply = "Read-only property"; - return 1; -} - static int msc_connection_status_trap_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) { struct ctrl_cmd *cmd; @@ -114,7 +103,7 @@ static int msc_connection_status_trap_cb(unsigned int subsys, unsigned int signa return 0; } -CTRL_CMD_DEFINE(bts_connection_status, "bts_connection_status"); +CTRL_CMD_DEFINE_RO(bts_connection_status, "bts_connection_status"); static int bts_connection_status = 0; static int get_bts_connection_status(struct ctrl_cmd *cmd, void *data) @@ -126,17 +115,6 @@ static int get_bts_connection_status(struct ctrl_cmd *cmd, void *data) return CTRL_CMD_REPLY; } -static int set_bts_connection_status(struct ctrl_cmd *cmd, void *data) -{ - return CTRL_CMD_ERROR; -} - -static int verify_bts_connection_status(struct ctrl_cmd *cmd, const char *value, void *data) -{ - cmd->reply = "Read-only property"; - return 1; -} - static int bts_connection_status_trap_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) { struct ctrl_cmd *cmd; @@ -496,7 +474,7 @@ err: return 1; } -CTRL_CMD_DEFINE(bts_rf_state, "rf_state"); +CTRL_CMD_DEFINE_RO(bts_rf_state, "rf_state"); static int get_bts_rf_state(struct ctrl_cmd *cmd, void *data) { const char *oper, *admin, *policy; @@ -520,16 +498,6 @@ static int get_bts_rf_state(struct ctrl_cmd *cmd, void *data) return CTRL_CMD_REPLY; } -static int set_bts_rf_state(struct ctrl_cmd *cmd, void *data) -{ - cmd->reply = "set is unimplemented"; - return CTRL_CMD_ERROR; -} - -static int verify_bts_rf_state(struct ctrl_cmd *cmd, const char *value, void *data) -{ - return 0; -} CTRL_CMD_DEFINE(net_rf_lock, "rf_locked"); static int get_net_rf_lock(struct ctrl_cmd *cmd, void *data) -- 1.9.1