diff options
author | Holger Freyther <zecke@selfish.org> | 2009-01-04 03:48:30 +0000 |
---|---|---|
committer | Holger Freyther <zecke@selfish.org> | 2009-01-04 03:48:30 +0000 |
commit | d0e38c3cadc8f13e85aef184a1155d34bf99a1f5 (patch) | |
tree | 6351871a1e36ae01412af02325e19f2a08113b4b /src | |
parent | a471a416807ee772b6d4c3437b8c306a35a6e89b (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.c | 16 |
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; +} |