aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openbsc/include/openbsc/bsc_api.h2
-rw-r--r--openbsc/include/openbsc/gsm_data.h3
-rw-r--r--openbsc/src/libbsc/bsc_api.c9
-rw-r--r--openbsc/src/libbsc/net_init.c1
-rw-r--r--openbsc/src/osmo-bsc/osmo_bsc_ctrl.c2
5 files changed, 8 insertions, 9 deletions
diff --git a/openbsc/include/openbsc/bsc_api.h b/openbsc/include/openbsc/bsc_api.h
index a3d12f23b..3a9311991 100644
--- a/openbsc/include/openbsc/bsc_api.h
+++ b/openbsc/include/openbsc/bsc_api.h
@@ -52,6 +52,4 @@ int gsm0808_page(struct gsm_bts *bts, unsigned int page_group,
unsigned int mi_len, uint8_t *mi, int chan_type);
int gsm0808_clear(struct gsm_subscriber_connection *conn);
-struct llist_head *bsc_api_sub_connections(struct gsm_network *net);
-
#endif
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 6d7aba358..e1f344b2b 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -291,6 +291,9 @@ struct gsm_network {
/* control interface */
struct ctrl_handle *ctrl;
+
+ /* all active subscriber connections. */
+ struct llist_head subscr_conns;
};
struct osmo_esme;
diff --git a/openbsc/src/libbsc/bsc_api.c b/openbsc/src/libbsc/bsc_api.c
index 504f044fb..f3f7b777a 100644
--- a/openbsc/src/libbsc/bsc_api.c
+++ b/openbsc/src/libbsc/bsc_api.c
@@ -242,8 +242,9 @@ static int handle_new_assignment(struct gsm_subscriber_connection *conn, int cha
struct gsm_subscriber_connection *subscr_con_allocate(struct gsm_lchan *lchan)
{
struct gsm_subscriber_connection *conn;
+ struct gsm_network *network = lchan->ts->trx->bts->network;
- conn = talloc_zero(lchan->ts->trx->bts->network, struct gsm_subscriber_connection);
+ conn = talloc_zero(network, struct gsm_subscriber_connection);
if (!conn)
return NULL;
@@ -251,7 +252,7 @@ struct gsm_subscriber_connection *subscr_con_allocate(struct gsm_lchan *lchan)
conn->lchan = lchan;
conn->bts = lchan->ts->trx->bts;
lchan->conn = conn;
- llist_add_tail(&conn->entry, &sub_connections);
+ llist_add_tail(&conn->entry, &network->subscr_conns);
return conn;
}
@@ -873,7 +874,3 @@ static __attribute__((constructor)) void on_dso_load_bsc(void)
osmo_signal_register_handler(SS_LCHAN, bsc_handle_lchan_signal, NULL);
}
-struct llist_head *bsc_api_sub_connections(struct gsm_network *net)
-{
- return &sub_connections;
-}
diff --git a/openbsc/src/libbsc/net_init.c b/openbsc/src/libbsc/net_init.c
index 568a0b85e..3b033c7b6 100644
--- a/openbsc/src/libbsc/net_init.c
+++ b/openbsc/src/libbsc/net_init.c
@@ -71,6 +71,7 @@ struct gsm_network *gsm_network_init(uint16_t country_code, uint16_t network_cod
INIT_LLIST_HEAD(&net->trans_list);
INIT_LLIST_HEAD(&net->upqueue);
INIT_LLIST_HEAD(&net->bts_list);
+ INIT_LLIST_HEAD(&net->subscr_conns);
net->stats.chreq.total = osmo_counter_alloc("net.chreq.total");
net->stats.chreq.no_channel = osmo_counter_alloc("net.chreq.no_channel");
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
index 72f80edb7..3010b5591 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
@@ -583,7 +583,7 @@ static int set_net_ussd_notify(struct ctrl_cmd *cmd, void *data)
alert = atoi(alert_str);
net = cmd->node;
- llist_for_each_entry(conn, bsc_api_sub_connections(net), entry) {
+ llist_for_each_entry(conn, &net->subscr_conns, entry) {
if (!conn->sccp_con)
continue;