示例#1
0
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;
}
示例#2
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);
}
示例#3
0
文件: main.c 项目: osmocom/osmo-bts
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;
}