aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2018-01-25 18:59:42 +0100
committerHarald Welte <laforge@gnumonks.org>2018-02-19 08:38:21 +0000
commitbf1fea0928183f51e994c3f2b0e0f0ca831fd7b8 (patch)
treee52f155143772553ddd2006e00dc4e43072cab94 /tests
parentefa55a454174da12a44c750377b3605d9bfbf7ef (diff)
rsl: do not allow MODE MODIFY request with unsupp. codec/rate
When the BSC sends a MODE MODIFY request with an unsupported codec, the BTS must respond with a negative acknowledge. Currently the codec parameter is not checked at all, which may lead into malfunction or crash of the BTS. - Introduce a mechanism to check the codec/rate against a table that is set up in the phy specific code. - Add tables with supported codec/rate combinations for octphy, sysmobts, and trx. Change-Id: Id9b222b7ab19ece90591718bc562b3a8c5e02023 Related: SYS#3212
Diffstat (limited to 'tests')
-rw-r--r--tests/misc/misc_test.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/misc/misc_test.c b/tests/misc/misc_test.c
index c2918fb4..00744a6b 100644
--- a/tests/misc/misc_test.c
+++ b/tests/misc/misc_test.c
@@ -157,6 +157,31 @@ static void test_sacch_get(void)
}
}
+static const struct bts_cm bts_model_supported_cm[] = {
+ {GSM_PCHAN_TCH_F, GSM48_CMODE_SPEECH_V1},
+ {GSM_PCHAN_TCH_H, GSM48_CMODE_SPEECH_V1},
+ {GSM_PCHAN_TCH_F, GSM48_CMODE_SPEECH_AMR},
+ {GSM_PCHAN_TCH_H, GSM48_CMODE_SPEECH_AMR},
+ {_GSM_PCHAN_MAX, 0}
+};
+
+static void test_bts_supports_cm(void)
+{
+ struct gsm_bts_role_bts bts;
+ bts.support.cm = bts_model_supported_cm;
+
+ OSMO_ASSERT(bts_supports_cm
+ (&bts, GSM_PCHAN_TCH_F, GSM48_CMODE_SPEECH_V1) == 1);
+ OSMO_ASSERT(bts_supports_cm
+ (&bts, GSM_PCHAN_TCH_H, GSM48_CMODE_SPEECH_V1) == 1);
+ OSMO_ASSERT(bts_supports_cm
+ (&bts, GSM_PCHAN_TCH_F, GSM48_CMODE_SPEECH_EFR) == 0);
+ OSMO_ASSERT(bts_supports_cm
+ (&bts, GSM_PCHAN_TCH_F, GSM48_CMODE_SPEECH_AMR) == 1);
+ OSMO_ASSERT(bts_supports_cm
+ (&bts, GSM_PCHAN_TCH_H, GSM48_CMODE_SPEECH_AMR) == 1);
+}
+
int main(int argc, char **argv)
{
bts_log_init(NULL);
@@ -164,5 +189,6 @@ int main(int argc, char **argv)
test_sacch_get();
test_msg_utils_ipa();
test_msg_utils_oml();
+ test_bts_supports_cm();
return EXIT_SUCCESS;
}