int bts_model_init(struct gsm_bts *bts) { struct gsm_bts_role_bts *btsb; struct stat st; static struct osmo_fd accept_fd, read_fd; int rc; btsb = bts_role_bts(bts); btsb->support.ciphers = CIPHER_A5(1) | CIPHER_A5(2) | CIPHER_A5(3); rc = oml_router_init(bts, OML_ROUTER_PATH, &accept_fd, &read_fd); if (rc < 0) { fprintf(stderr, "Error creating the OML router: %s rc=%d\n", OML_ROUTER_PATH, rc); exit(1); } if (stat(SYSMOBTS_RF_LOCK_PATH, &st) == 0) { LOGP(DL1C, LOGL_NOTICE, "Not starting BTS due to RF_LOCK file present\n"); exit(23); } bts_model_vty_init(bts); return 0; }
static void test_cipher_parsing(void) { int i; btsb->support.ciphers = 0; /* always support A5/0 */ ASSERT_TRUE(bts_supports_cipher(btsb, 0x0) == -ENOTSUP); ASSERT_TRUE(bts_supports_cipher(btsb, 0x1) == 1); /* A5/0 */ for (i = 2; i <= 8; ++i) { ASSERT_TRUE(bts_supports_cipher(btsb, i) == 0); } /* checking default A5/1 to A5/3 support */ btsb->support.ciphers = CIPHER_A5(1) | CIPHER_A5(2) | CIPHER_A5(3); ASSERT_TRUE(bts_supports_cipher(btsb, 0x0) == -ENOTSUP); ASSERT_TRUE(bts_supports_cipher(btsb, 0x1) == 1); /* A5/0 */ ASSERT_TRUE(bts_supports_cipher(btsb, 0x2) == 1); /* A5/1 */ ASSERT_TRUE(bts_supports_cipher(btsb, 0x3) == 1); /* A5/2 */ ASSERT_TRUE(bts_supports_cipher(btsb, 0x4) == 1); /* A5/3 */ ASSERT_TRUE(bts_supports_cipher(btsb, 0x5) == 0); /* A5/4 */ ASSERT_TRUE(bts_supports_cipher(btsb, 0x6) == 0); /* A5/5 */ ASSERT_TRUE(bts_supports_cipher(btsb, 0x7) == 0); /* A5/6 */ ASSERT_TRUE(bts_supports_cipher(btsb, 0x8) == 0); /* A5/7 */ ASSERT_TRUE(bts_supports_cipher(btsb, 0x9) == -ENOTSUP); }
int bts_model_init(struct gsm_bts *bts) { struct stat st; static struct osmo_fd accept_fd, read_fd; int rc; bts->variant = BTS_OSMO_SYSMO; bts->support.ciphers = CIPHER_A5(1) | CIPHER_A5(2) | CIPHER_A5(3); rc = oml_router_init(bts, OML_ROUTER_PATH, &accept_fd, &read_fd); if (rc < 0) { fprintf(stderr, "Error creating the OML router: %s rc=%d\n", OML_ROUTER_PATH, rc); exit(1); } if (stat(SYSMOBTS_RF_LOCK_PATH, &st) == 0) { LOGP(DL1C, LOGL_NOTICE, "Not starting BTS due to RF_LOCK file present\n"); exit(23); } gsm_bts_set_feature(bts, BTS_FEAT_CBCH); gsm_bts_set_feature(bts, BTS_FEAT_GPRS); gsm_bts_set_feature(bts, BTS_FEAT_EGPRS); gsm_bts_set_feature(bts, BTS_FEAT_OML_ALERTS); gsm_bts_set_feature(bts, BTS_FEAT_AGCH_PCH_PROP); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_F_V1); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_H_V1); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_F_EFR); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_F_AMR); gsm_bts_set_feature(bts, BTS_FEAT_SPEECH_H_AMR); bts_model_vty_init(bts); return 0; }