aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2009-01-04 03:48:30 +0000
committerHolger Freyther <zecke@selfish.org>2009-01-04 03:48:30 +0000
commitd0e38c3cadc8f13e85aef184a1155d34bf99a1f5 (patch)
tree6351871a1e36ae01412af02325e19f2a08113b4b /src
parenta471a416807ee772b6d4c3437b8c306a35a6e89b (diff)
Add implementation to find a lchan by the struct gsm_subscriber
Really compare pointers to check if the one gsm_subscriber is equal to the other... gsm_subscriber should be unique for a given IMSI so comparing the pointers should be fine.
Diffstat (limited to 'src')
-rw-r--r--src/chan_alloc.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/chan_alloc.c b/src/chan_alloc.c
index 439a8da56..b50b19fc8 100644
--- a/src/chan_alloc.c
+++ b/src/chan_alloc.c
@@ -226,3 +226,19 @@ static void auto_release_channel(void *_lchan)
schedule_timer(&lchan->release_timer, LCHAN_RELEASE_TIMEOUT);
}
+struct gsm_lchan* lchan_find(struct gsm_bts *bts, struct gsm_subscriber *subscr) {
+ int trx, ts_no, lchan_no;
+
+ for (trx = 0; trx < bts->num_trx; ++trx) {
+ for (ts_no = 0; ts_no < 8; ++ts_no) {
+ for (lchan_no = 0; lchan_no < TS_MAX_LCHAN; ++lchan_no) {
+ struct gsm_lchan *lchan =
+ &bts->trx[trx].ts[ts_no].lchan[lchan_no];
+ if (subscr == lchan->subscr)
+ return lchan;
+ }
+ }
+ }
+
+ return NULL;
+}