mscsplit: move subscriber conns list into struct gsm_network
Replace the global sub_connections llist with gsm_network.subscr_conns. Initialize and apply where applicable. Remove bsc_api_sub_connections(), callers now access gsm_network->subscr_conns directly. This allows using the subscr_conns from libmsc without having to link libbsc. Change-Id: Ice2a7ca04910bcfaaff22539abe68a6349e8631c
This commit is contained in:
parent
0ce98c749a
commit
d90fa42dc9
|
@ -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);
|
unsigned int mi_len, uint8_t *mi, int chan_type);
|
||||||
int gsm0808_clear(struct gsm_subscriber_connection *conn);
|
int gsm0808_clear(struct gsm_subscriber_connection *conn);
|
||||||
|
|
||||||
struct llist_head *bsc_api_sub_connections(struct gsm_network *net);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -345,6 +345,9 @@ struct gsm_network {
|
||||||
/* Allow or disallow TCH/F on dynamic TCH/F_TCH/H_PDCH; OS#1778 */
|
/* Allow or disallow TCH/F on dynamic TCH/F_TCH/H_PDCH; OS#1778 */
|
||||||
bool dyn_ts_allow_tch_f;
|
bool dyn_ts_allow_tch_f;
|
||||||
/* TODO: vty for this; related: OS#1781 */
|
/* TODO: vty for this; related: OS#1781 */
|
||||||
|
|
||||||
|
/* all active subscriber connections. */
|
||||||
|
struct llist_head subscr_conns;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct osmo_esme;
|
struct osmo_esme;
|
||||||
|
|
|
@ -39,7 +39,6 @@
|
||||||
|
|
||||||
#define GSM0808_T10_VALUE 6, 0
|
#define GSM0808_T10_VALUE 6, 0
|
||||||
|
|
||||||
static LLIST_HEAD(sub_connections);
|
|
||||||
|
|
||||||
static void rll_ind_cb(struct gsm_lchan *, uint8_t, void *, enum bsc_rllr_ind);
|
static void rll_ind_cb(struct gsm_lchan *, uint8_t, void *, enum bsc_rllr_ind);
|
||||||
static void send_sapi_reject(struct gsm_subscriber_connection *conn, int link_id);
|
static void send_sapi_reject(struct gsm_subscriber_connection *conn, int link_id);
|
||||||
|
@ -242,15 +241,16 @@ 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 *subscr_con_allocate(struct gsm_lchan *lchan)
|
||||||
{
|
{
|
||||||
struct gsm_subscriber_connection *conn;
|
struct gsm_subscriber_connection *conn;
|
||||||
|
struct gsm_network *net = lchan->ts->trx->bts->network;
|
||||||
|
|
||||||
conn = talloc_zero(lchan->ts->trx->bts->network, struct gsm_subscriber_connection);
|
conn = talloc_zero(net, struct gsm_subscriber_connection);
|
||||||
if (!conn)
|
if (!conn)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
conn->lchan = lchan;
|
conn->lchan = lchan;
|
||||||
conn->bts = lchan->ts->trx->bts;
|
conn->bts = lchan->ts->trx->bts;
|
||||||
lchan->conn = conn;
|
lchan->conn = conn;
|
||||||
llist_add_tail(&conn->entry, &sub_connections);
|
llist_add_tail(&conn->entry, &net->subscr_conns);
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -876,7 +876,3 @@ static __attribute__((constructor)) void on_dso_load_bsc(void)
|
||||||
osmo_signal_register_handler(SS_LCHAN, bsc_handle_lchan_signal, NULL);
|
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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -79,6 +79,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->trans_list);
|
||||||
INIT_LLIST_HEAD(&net->upqueue);
|
INIT_LLIST_HEAD(&net->upqueue);
|
||||||
INIT_LLIST_HEAD(&net->bts_list);
|
INIT_LLIST_HEAD(&net->bts_list);
|
||||||
|
INIT_LLIST_HEAD(&net->subscr_conns);
|
||||||
|
|
||||||
/* init statistics */
|
/* init statistics */
|
||||||
net->bsc_ctrs = rate_ctr_group_alloc(net, &bsc_ctrg_desc, 0);
|
net->bsc_ctrs = rate_ctr_group_alloc(net, &bsc_ctrg_desc, 0);
|
||||||
|
|
|
@ -583,7 +583,7 @@ static int set_net_ussd_notify(struct ctrl_cmd *cmd, void *data)
|
||||||
alert = atoi(alert_str);
|
alert = atoi(alert_str);
|
||||||
|
|
||||||
net = cmd->node;
|
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)
|
if (!conn->sccp_con)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue