[bsc] Store the cell_identity in gsm_bts and set it on the SI3 and SI6
Transfering the cell_identity from BSC to MSC is required for the on-waves.com support. Allow to set the cell_identity in the cfg file and patch the system information tables to set it.
This commit is contained in:
parent
98dd1c85ab
commit
c4a49e3e2d
|
@ -203,7 +203,7 @@ struct gsm48_system_information_type_6 {
|
|||
u_int8_t rr_protocol_discriminator :4,
|
||||
skip_indicator:4;
|
||||
u_int8_t system_information;
|
||||
u_int8_t cell_identity[2];
|
||||
u_int16_t cell_identity;
|
||||
struct gsm48_loc_area_id lai;
|
||||
u_int8_t cell_options;
|
||||
u_int8_t ncc_permitted;
|
||||
|
|
|
@ -298,6 +298,8 @@ struct gsm_bts {
|
|||
struct gsm_network *network;
|
||||
/* number of ths BTS in network */
|
||||
u_int8_t nr;
|
||||
/* Cell Identity */
|
||||
u_int16_t cell_identity;
|
||||
/* location area code of this BTS */
|
||||
u_int8_t location_area_code;
|
||||
/* Training Sequence Code */
|
||||
|
|
|
@ -916,6 +916,10 @@ static void patch_si_tables(struct gsm_bts *bts)
|
|||
type_4->lai = lai;
|
||||
type_6->lai = lai;
|
||||
|
||||
/* set the CI */
|
||||
type_3->cell_identity = htons(bts->cell_identity);
|
||||
type_6->cell_identity = htons(bts->cell_identity);
|
||||
|
||||
type_4->data[2] &= 0xf0;
|
||||
type_4->data[2] |= arfcn_high;
|
||||
type_4->data[3] = arfcn_low;
|
||||
|
|
|
@ -14,6 +14,7 @@ network
|
|||
bts 0
|
||||
type bs11
|
||||
band GSM900
|
||||
cell_identity 1
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
|
|
|
@ -14,6 +14,7 @@ network
|
|||
bts 0
|
||||
type bs11
|
||||
band GSM900
|
||||
cell_identity 1
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
|
|
|
@ -14,6 +14,7 @@ network
|
|||
bts 0
|
||||
type bs11
|
||||
band GSM900
|
||||
cell_identity 1
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
|
|
|
@ -118,9 +118,10 @@ static void e1isl_dump_vty(struct vty *vty, struct e1inp_sign_link *e1l)
|
|||
|
||||
static void bts_dump_vty(struct vty *vty, struct gsm_bts *bts)
|
||||
{
|
||||
vty_out(vty, "BTS %u is of %s type in band %s, has LAC %u, "
|
||||
vty_out(vty, "BTS %u is of %s type in band %s, has CI %u LAC %u, "
|
||||
"BSIC %u, TSC %u and %u TRX%s",
|
||||
bts->nr, btstype2str(bts->type), gsm_band_name(bts->band),
|
||||
bts->cell_identity,
|
||||
bts->location_area_code, bts->bsic, bts->tsc,
|
||||
bts->num_trx, VTY_NEWLINE);
|
||||
if (bts->cell_barred)
|
||||
|
@ -223,6 +224,7 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
|
|||
vty_out(vty, " bts %u%s", bts->nr, VTY_NEWLINE);
|
||||
vty_out(vty, " type %s%s", btstype2str(bts->type), VTY_NEWLINE);
|
||||
vty_out(vty, " band %s%s", gsm_band_name(bts->band), VTY_NEWLINE);
|
||||
vty_out(vty, " cell_identity %u%s", bts->cell_identity, VTY_NEWLINE);
|
||||
vty_out(vty, " location_area_code %u%s", bts->location_area_code,
|
||||
VTY_NEWLINE);
|
||||
vty_out(vty, " training_sequence_code %u%s", bts->tsc, VTY_NEWLINE);
|
||||
|
@ -839,6 +841,24 @@ DEFUN(cfg_bts_band,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_bts_ci,
|
||||
cfg_bts_ci_cmd,
|
||||
"cell_identity <0-65535>",
|
||||
"Set the Cell identity of this BTS\n")
|
||||
{
|
||||
struct gsm_bts *bts = vty->index;
|
||||
int ci = atoi(argv[0]);
|
||||
|
||||
if (ci < 0 || ci > 0xffff) {
|
||||
vty_out(vty, "%% CI %d is not in the valid range (0-65535)%s",
|
||||
ci, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
bts->cell_identity = ci;
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_bts_lac,
|
||||
cfg_bts_lac_cmd,
|
||||
"location_area_code <0-255>",
|
||||
|
@ -1175,6 +1195,7 @@ int bsc_vty_init(struct gsm_network *net)
|
|||
install_default(BTS_NODE);
|
||||
install_element(BTS_NODE, &cfg_bts_type_cmd);
|
||||
install_element(BTS_NODE, &cfg_bts_band_cmd);
|
||||
install_element(BTS_NODE, &cfg_bts_ci_cmd);
|
||||
install_element(BTS_NODE, &cfg_bts_lac_cmd);
|
||||
install_element(BTS_NODE, &cfg_bts_tsc_cmd);
|
||||
install_element(BTS_NODE, &cfg_bts_bsic_cmd);
|
||||
|
|
Loading…
Reference in New Issue