diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2018-01-25 18:59:42 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-02-19 08:38:21 +0000 |
commit | bf1fea0928183f51e994c3f2b0e0f0ca831fd7b8 (patch) | |
tree | e52f155143772553ddd2006e00dc4e43072cab94 /tests | |
parent | efa55a454174da12a44c750377b3605d9bfbf7ef (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.c | 26 |
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; } |