matanp has submitted this change. (
https://gerrit.osmocom.org/c/osmo-bsc/+/32520 )
(
4 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: ctrl: Add setting access control class
......................................................................
ctrl: Add setting access control class
Change-Id: I7abbf0adc3798e9224834a68d7cdce4bbe03c9a3
---
M src/osmo-bsc/bts_ctrl.c
1 file changed, 88 insertions(+), 0 deletions(-)
Approvals:
fixeria: Looks good to me, approved
matanp: Verified
Jenkins Builder: Verified
diff --git a/src/osmo-bsc/bts_ctrl.c b/src/osmo-bsc/bts_ctrl.c
index 2d714a8..7f4413f 100644
--- a/src/osmo-bsc/bts_ctrl.c
+++ b/src/osmo-bsc/bts_ctrl.c
@@ -882,6 +882,83 @@
CTRL_CMD_DEFINE_RO(bts_rach_access_control_class,
"rach-access-control-classes");
+static int verify_access_control_class(struct ctrl_cmd *cmd, const char *value)
+{
+ int acc;
+
+ if (strcmp(value, "emergency") == 0)
+ return 0;
+
+ acc = atoi(value);
+
+ if (acc < 0 || acc > 15) {
+ cmd->reply = "Value is out of range";
+ return 1;
+ } else if (acc == 10) {
+ cmd->reply = "Access control class 10 does not exist, consider using
\"emergency\" instead";
+ return 1;
+ }
+
+ return 0;
+}
+
+static int set_access_control_class(struct ctrl_cmd *cmd, bool allow)
+{
+ int acc;
+ struct gsm_bts *bts = cmd->node;
+
+ if (strcmp(cmd->value, "emergency") == 0) {
+ if (allow)
+ bts->si_common.rach_control.t2 &= ~0x4;
+ else
+ bts->si_common.rach_control.t2 |= 0x4;
+ cmd->reply = "OK";
+ return CTRL_CMD_REPLY;
+ }
+
+ acc = atoi(cmd->value);
+ if (acc < 8)
+ if (allow)
+ bts->si_common.rach_control.t3 &= ~(0x1 << acc);
+ else
+ bts->si_common.rach_control.t3 |= (0x1 << acc);
+ else
+ if (allow)
+ bts->si_common.rach_control.t2 &= ~(0x1 << (acc - 8));
+ else
+ bts->si_common.rach_control.t2 |= (0x1 << (acc - 8));
+
+ if (acc < 10)
+ acc_mgr_perm_subset_changed(&bts->acc_mgr,
&bts->si_common.rach_control);
+
+ cmd->reply = "OK";
+ return CTRL_CMD_REPLY;
+}
+
+static int verify_bts_rach_access_control_class_bar(struct ctrl_cmd *cmd, const char
*value, void *_data)
+{
+ return verify_access_control_class(cmd, value);
+}
+
+static int set_bts_rach_access_control_class_bar(struct ctrl_cmd *cmd, void *data)
+{
+ return set_access_control_class(cmd, false);
+}
+
+CTRL_CMD_DEFINE_WO(bts_rach_access_control_class_bar, "rach-access-control-class
bar");
+
+static int verify_bts_rach_access_control_class_allow(struct ctrl_cmd *cmd, const char
*value, void *_data)
+{
+ return verify_access_control_class(cmd, value);
+}
+
+static int set_bts_rach_access_control_class_allow(struct ctrl_cmd *cmd, void *data)
+{
+ return set_access_control_class(cmd, true);
+}
+
+CTRL_CMD_DEFINE_WO(bts_rach_access_control_class_allow, "rach-access-control-class
allow");
+
int bsc_bts_ctrl_cmds_install(void)
{
int rc = 0;
@@ -908,6 +985,8 @@
rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_cell_reselection_penalty_time);
rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_cell_reselection_hysteresis);
rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_rach_access_control_class);
+ rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_rach_access_control_class_bar);
+ rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_rach_access_control_class_allow);
rc |= neighbor_ident_ctrl_init();
--
To view, visit
https://gerrit.osmocom.org/c/osmo-bsc/+/32520
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I7abbf0adc3798e9224834a68d7cdce4bbe03c9a3
Gerrit-Change-Number: 32520
Gerrit-PatchSet: 5
Gerrit-Owner: matanp <matan1008(a)gmail.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: matanp <matan1008(a)gmail.com>
Gerrit-MessageType: merged