diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2013-09-11 10:46:56 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-09-11 20:20:33 +0200 |
commit | 733bec862627d6ecc934fd928eb5b3a2e22771b8 (patch) | |
tree | df624fb2f348c2cde01078ed264379a67553e3f5 | |
parent | 56595f8647d6ee5de1c74077e83ca438102b5ff4 (diff) |
vty: Hide unconfigured BTS on 'write'
This prevents the application from crashing when there is a half
configured BTS (e.g. by using the command 'bts 1' when there isn't
a BTS 1) and the 'write' command is used.
-rw-r--r-- | openbsc/src/libbsc/bsc_vty.c | 10 | ||||
-rw-r--r-- | openbsc/tests/vty_test_runner.py | 11 |
2 files changed, 17 insertions, 4 deletions
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c index 57489450b..55564b689 100644 --- a/openbsc/src/libbsc/bsc_vty.c +++ b/openbsc/src/libbsc/bsc_vty.c @@ -598,11 +598,13 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts) if (bts->excl_from_rf_lock) vty_out(vty, " rf-lock-exclude%s", VTY_NEWLINE); - if (bts->model->config_write_bts) - bts->model->config_write_bts(vty, bts); + if (bts->model) { + if (bts->model->config_write_bts) + bts->model->config_write_bts(vty, bts); - llist_for_each_entry(trx, &bts->trx_list, list) - config_write_trx_single(vty, trx); + llist_for_each_entry(trx, &bts->trx_list, list) + config_write_trx_single(vty, trx); + } } static int config_write_bts(struct vty *v) diff --git a/openbsc/tests/vty_test_runner.py b/openbsc/tests/vty_test_runner.py index 460b70e77..7f71288ff 100644 --- a/openbsc/tests/vty_test_runner.py +++ b/openbsc/tests/vty_test_runner.py @@ -88,6 +88,17 @@ class TestVTYGenericBSC(TestVTYBase): self.assertTrue(self.vty.verify("trx 0",[''])) self.assertEquals(self.vty.node(), 'config-net-bts-trx') self.checkForEndAndExit() + self.vty.command("write terminal") + self.assertTrue(self.vty.verify("exit",[''])) + self.assertEquals(self.vty.node(), 'config-net-bts') + self.assertTrue(self.vty.verify("exit",[''])) + self.assertTrue(self.vty.verify("bts 1",[''])) + self.assertEquals(self.vty.node(), 'config-net-bts') + self.checkForEndAndExit() + self.assertTrue(self.vty.verify("trx 1",[''])) + self.assertEquals(self.vty.node(), 'config-net-bts-trx') + self.checkForEndAndExit() + self.vty.command("write terminal") self.assertTrue(self.vty.verify("exit",[''])) self.assertEquals(self.vty.node(), 'config-net-bts') self.assertTrue(self.vty.verify("exit",[''])) |