bsc: Move away from ->bsc.msc to use the selected MSC
For multiple MSCs we should only have one place where the MSC
is selected and the rest will extract it from somewhere.
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_api.c b/openbsc/src/osmo-bsc/osmo_bsc_api.c
index eb7d38a..04305c2 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_api.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_api.c
@@ -45,18 +45,18 @@
} \
bsc_queue_for_msc(conn->sccp_con, resp);
-static uint16_t get_network_code_for_msc(struct gsm_network *net)
+static uint16_t get_network_code_for_msc(struct osmo_msc_data *msc)
{
- if (net->bsc_data->msc.core_ncc != -1)
- return net->bsc_data->msc.core_ncc;
- return net->network_code;
+ if (msc->core_ncc != -1)
+ return msc->core_ncc;
+ return msc->network->network_code;
}
-static uint16_t get_country_code_for_msc(struct gsm_network *net)
+static uint16_t get_country_code_for_msc(struct osmo_msc_data *msc)
{
- if (net->bsc_data->msc.core_mcc != -1)
- return net->bsc_data->msc.core_mcc;
- return net->country_code;
+ if (msc->core_mcc != -1)
+ return msc->core_mcc;
+ return msc->network->country_code;
}
static void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci)
@@ -89,8 +89,8 @@
uint16_t chosen_channel)
{
struct msgb *resp;
- uint16_t network_code = get_network_code_for_msc(conn->bts->network);
- uint16_t country_code = get_country_code_for_msc(conn->bts->network);
+ uint16_t network_code;
+ uint16_t country_code;
LOGP(DMSC, LOGL_INFO, "Tx MSC COMPL L3\n");
@@ -98,6 +98,9 @@
if (bsc_create_new_connection(conn) != 0)
return BSC_API_CONN_POL_REJECT;
+ network_code = get_network_code_for_msc(conn->sccp_con->msc);
+ country_code = get_country_code_for_msc(conn->sccp_con->msc);
+
bsc_scan_bts_msg(conn, msg);
resp = gsm0808_create_layer3(msg, network_code, country_code,
conn->bts->location_area_code,
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c
index 30dea0f..529b488 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c
@@ -182,13 +182,13 @@
int bsc_create_new_connection(struct gsm_subscriber_connection *conn)
{
struct gsm_network *net;
- struct bsc_msc_connection *msc;
+ struct osmo_msc_data *msc;
struct osmo_bsc_sccp_con *bsc_con;
struct sccp_connection *sccp;
net = conn->bts->network;
- msc = net->bsc_data->msc.msc_con;
- if (!msc->is_authenticated) {
+ msc = &net->bsc_data->msc;
+ if (!msc->msc_con->is_authenticated) {
LOGP(DMSC, LOGL_ERROR, "Not connected to a MSC. Not forwarding data.\n");
return -1;
}
@@ -225,7 +225,7 @@
INIT_LLIST_HEAD(&bsc_con->sccp_queue);
bsc_con->sccp = sccp;
- bsc_con->msc_con = msc;
+ bsc_con->msc = msc;
bsc_con->conn = conn;
llist_add_tail(&bsc_con->entry, &active_connections);
conn->sccp_con = bsc_con;