aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-06-16 13:23:55 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-06-16 15:42:38 +0800
commitb2be195b501d8327a493f93bc9fba41f8a699ba4 (patch)
treefb27e7bf7c080946cfbc38b3beea7e90c50e2fcb
parentea01ca764fcf0912ac2ccd1a8818640518911a51 (diff)
bsc_api: Rename lchan_for_subscr to connection_for_subscr and update code
With handover and late/early assignment there might be two channels for one subscriber and only the BSC knows which one to use, so use the gsm_subscriber_connection everywhere...
-rw-r--r--openbsc/include/openbsc/chan_alloc.h4
-rw-r--r--openbsc/src/chan_alloc.c4
-rw-r--r--openbsc/src/gsm_04_08.c14
-rw-r--r--openbsc/src/gsm_04_11.c20
-rw-r--r--openbsc/src/rrlp.c8
-rw-r--r--openbsc/src/silent_call.c6
-rw-r--r--openbsc/src/token_auth.c18
7 files changed, 37 insertions, 37 deletions
diff --git a/openbsc/include/openbsc/chan_alloc.h b/openbsc/include/openbsc/chan_alloc.h
index fff0ea3f6..bbbe5362a 100644
--- a/openbsc/include/openbsc/chan_alloc.h
+++ b/openbsc/include/openbsc/chan_alloc.h
@@ -23,6 +23,8 @@
#include "gsm_subscriber.h"
+struct gsm_subscriber_connection;
+
/* Special allocator for C0 of BTS */
struct gsm_bts_trx_ts *ts_c0_alloc(struct gsm_bts *bts,
enum gsm_phys_chan_config pchan);
@@ -35,7 +37,7 @@ struct gsm_bts_trx_ts *ts_alloc(struct gsm_bts *bts,
void ts_free(struct gsm_bts_trx_ts *ts);
/* Find an allocated channel for a specified subscriber */
-struct gsm_lchan *lchan_for_subscr(struct gsm_subscriber *subscr);
+struct gsm_subscriber_connection *connection_for_subscr(struct gsm_subscriber *subscr);
/* Allocate a logical channel (SDCCH, TCH, ...) */
struct gsm_lchan *lchan_alloc(struct gsm_bts *bts, enum gsm_chan_t type);
diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/chan_alloc.c
index 480949698..d6e4ff172 100644
--- a/openbsc/src/chan_alloc.c
+++ b/openbsc/src/chan_alloc.c
@@ -396,7 +396,7 @@ static struct gsm_lchan* lchan_find(struct gsm_bts *bts, struct gsm_subscriber *
return NULL;
}
-struct gsm_lchan *lchan_for_subscr(struct gsm_subscriber *subscr)
+struct gsm_subscriber_connection *connection_for_subscr(struct gsm_subscriber *subscr)
{
struct gsm_bts *bts;
struct gsm_network *net = subscr->net;
@@ -405,7 +405,7 @@ struct gsm_lchan *lchan_for_subscr(struct gsm_subscriber *subscr)
llist_for_each_entry(bts, &net->bts_list, list) {
lchan = lchan_find(bts, subscr);
if (lchan)
- return lchan;
+ return &lchan->conn;
}
return NULL;
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index b9249f295..0de10cc76 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -2798,7 +2798,7 @@ int mncc_send(struct gsm_network *net, int msg_type, void *arg)
{
int i, rc = 0;
struct gsm_trans *trans = NULL, *transt;
- struct gsm_lchan *lchan = NULL;
+ struct gsm_subscriber_connection *conn = NULL;
struct gsm_bts *bts = NULL;
struct gsm_mncc *data = arg, rel;
@@ -2903,10 +2903,10 @@ int mncc_send(struct gsm_network *net, int msg_type, void *arg)
return -ENOMEM;
}
/* Find lchan */
- lchan = lchan_for_subscr(subscr);
+ conn = connection_for_subscr(subscr);
/* If subscriber has no lchan */
- if (!lchan) {
+ if (!conn) {
/* find transaction with this subscriber already paging */
llist_for_each_entry(transt, &net->trans_list, entry) {
/* Transaction of our lchan? */
@@ -2932,16 +2932,16 @@ int mncc_send(struct gsm_network *net, int msg_type, void *arg)
return 0;
}
/* Assign lchan */
- trans->conn = &lchan->conn;
+ trans->conn = conn;
use_subscr_con(trans->conn);
subscr_put(subscr);
}
if (trans->conn)
- lchan = trans->conn->lchan;
+ conn = trans->conn;
/* if paging did not respond yet */
- if (!lchan) {
+ if (!conn) {
DEBUGP(DCC, "(bts - trx - ts - ti -- sub %s) "
"Received '%s' from MNCC in paging state\n",
(trans->subscr)?(trans->subscr->extension):"-",
@@ -2959,7 +2959,7 @@ int mncc_send(struct gsm_network *net, int msg_type, void *arg)
DEBUGP(DCC, "(bts %d trx %d ts %d ti %02x sub %s) "
"Received '%s' from MNCC in state %d (%s)\n",
- lchan->ts->trx->bts->nr, lchan->ts->trx->nr, lchan->ts->nr,
+ conn->bts->nr, conn->lchan->ts->trx->nr, conn->lchan->ts->nr,
trans->transaction_id,
(trans->conn->subscr)?(trans->conn->subscr->extension):"-",
get_mncc_name(msg_type), trans->cc.state,
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c
index 4488f8d6c..9d6533383 100644
--- a/openbsc/src/gsm_04_11.c
+++ b/openbsc/src/gsm_04_11.c
@@ -1143,14 +1143,14 @@ static int paging_cb_send_sms(unsigned int hooknum, unsigned int event,
int gsm411_send_sms_subscr(struct gsm_subscriber *subscr,
struct gsm_sms *sms)
{
- struct gsm_lchan *lchan;
+ struct gsm_subscriber_connection *conn;
/* check if we already have an open lchan to the subscriber.
* if yes, send the SMS this way */
- lchan = lchan_for_subscr(subscr);
- if (lchan) {
- use_subscr_con(&lchan->conn);
- return gsm411_send_sms_lchan(&lchan->conn, sms);
+ conn = connection_for_subscr(subscr);
+ if (conn) {
+ use_subscr_con(conn);
+ return gsm411_send_sms_lchan(conn, sms);
}
/* if not, we have to start paging */
@@ -1162,7 +1162,7 @@ static int subscr_sig_cb(unsigned int subsys, unsigned int signal,
void *handler_data, void *signal_data)
{
struct gsm_subscriber *subscr;
- struct gsm_lchan *lchan;
+ struct gsm_subscriber_connection *conn;
struct gsm_sms *sms;
switch (signal) {
@@ -1170,14 +1170,14 @@ static int subscr_sig_cb(unsigned int subsys, unsigned int signal,
/* A subscriber has attached. Check if there are
* any pending SMS for him to be delivered */
subscr = signal_data;
- lchan = lchan_for_subscr(subscr);
- if (!lchan)
+ conn = connection_for_subscr(subscr);
+ if (!conn)
break;
sms = db_sms_get_unsent_for_subscr(subscr);
if (!sms)
break;
- use_subscr_con(&lchan->conn);
- gsm411_send_sms_lchan(&lchan->conn, sms);
+ use_subscr_con(conn);
+ gsm411_send_sms_lchan(conn, sms);
break;
default:
break;
diff --git a/openbsc/src/rrlp.c b/openbsc/src/rrlp.c
index 35044518c..c3b1dbcf4 100644
--- a/openbsc/src/rrlp.c
+++ b/openbsc/src/rrlp.c
@@ -68,16 +68,16 @@ static int subscr_sig_cb(unsigned int subsys, unsigned int signal,
void *handler_data, void *signal_data)
{
struct gsm_subscriber *subscr;
- struct gsm_lchan *lchan;
+ struct gsm_subscriber_connection *conn;
switch (signal) {
case S_SUBSCR_ATTACHED:
/* A subscriber has attached. */
subscr = signal_data;
- lchan = lchan_for_subscr(subscr);
- if (!lchan)
+ conn = connection_for_subscr(subscr);
+ if (!conn)
break;
- send_rrlp_req(lchan);
+ send_rrlp_req(&conn->lchan);
break;
}
return 0;
diff --git a/openbsc/src/silent_call.c b/openbsc/src/silent_call.c
index 8bd5341ec..00acc1dc4 100644
--- a/openbsc/src/silent_call.c
+++ b/openbsc/src/silent_call.c
@@ -128,15 +128,13 @@ int gsm_silent_call_start(struct gsm_subscriber *subscr, void *data, int type)
/* end a silent call with a given subscriber */
int gsm_silent_call_stop(struct gsm_subscriber *subscr)
{
- struct gsm_lchan *lchan;
struct gsm_subscriber_connection *conn;
- lchan = lchan_for_subscr(subscr);
- if (!lchan)
+ conn = connection_for_subscr(subscr);
+ if (!conn)
return -EINVAL;
/* did we actually establish a silent call for this guy? */
- conn = &lchan->conn;
if (!conn->silent_call)
return -EINVAL;
diff --git a/openbsc/src/token_auth.c b/openbsc/src/token_auth.c
index 2608c6668..dc8cce251 100644
--- a/openbsc/src/token_auth.c
+++ b/openbsc/src/token_auth.c
@@ -99,12 +99,12 @@ unauth:
subscr->authorized = 0;
db_sync_subscriber(subscr);
if (rc) {
- struct gsm_lchan *lchan = lchan_for_subscr(subscr);
- if (lchan) {
+ struct gsm_subscriber_connection *conn = connection_for_subscr(subscr);
+ if (conn) {
u_int8_t auth_rand[16];
/* kick the subscriber off the network */
- gsm48_tx_mm_auth_req(&lchan->conn, auth_rand, 0);
- gsm48_tx_mm_auth_rej(&lchan->conn);
+ gsm48_tx_mm_auth_req(conn, auth_rand, 0);
+ gsm48_tx_mm_auth_rej(conn);
/* FIXME: close the channel early ?*/
//gsm48_send_rr_Release(lchan);
}
@@ -118,7 +118,7 @@ static int token_sms_cb(unsigned int subsys, unsigned int signal,
void *handler_data, void *signal_data)
{
struct gsm_sms *sms = signal_data;
- struct gsm_lchan *lchan;
+ struct gsm_subscriber_connection *conn;
u_int8_t auth_rand[16];
@@ -136,11 +136,11 @@ static int token_sms_cb(unsigned int subsys, unsigned int signal,
return 0;
- lchan = lchan_for_subscr(sms->receiver);
- if (lchan) {
+ conn = connection_for_subscr(sms->receiver);
+ if (conn) {
/* kick the subscriber off the network */
- gsm48_tx_mm_auth_req(&lchan->conn, auth_rand, 0);
- gsm48_tx_mm_auth_rej(&lchan->conn);
+ gsm48_tx_mm_auth_req(conn, auth_rand, 0);
+ gsm48_tx_mm_auth_rej(conn);
/* FIXME: close the channel early ?*/
//gsm48_send_rr_Release(lchan);
}