diff options
author | Harald Welte <laforge@gnumonks.org> | 2009-02-06 12:52:14 +0000 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2009-02-06 12:52:14 +0000 |
commit | 763da00e97035f8ff4addebb4d30e756d6f39077 (patch) | |
tree | ff58a7436ccfdfd1c789fd84a9a99047da7b741a | |
parent | 91b5b0d41d5361e7340f674a9e9a1ebac7c8c5b4 (diff) |
add new routine to stop paging
-rw-r--r-- | include/openbsc/paging.h | 3 | ||||
-rw-r--r-- | src/paging.c | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/include/openbsc/paging.h b/include/openbsc/paging.h index a04a906a8..884d16396 100644 --- a/include/openbsc/paging.h +++ b/include/openbsc/paging.h @@ -66,4 +66,7 @@ struct paging_bts* page_allocate(struct gsm_bts *bts); /* schedule paging request */ void page_request(struct gsm_bts *bts, struct gsm_subscriber *subscr, int type); +/* stop paging requests */ +void page_request_stop(struct gsm_bts *bts, struct gsm_subscriber *subscr); + #endif diff --git a/src/paging.c b/src/paging.c index 29e97e588..40fe7893b 100644 --- a/src/paging.c +++ b/src/paging.c @@ -174,3 +174,23 @@ void page_request(struct gsm_bts *bts, struct gsm_subscriber *subscr, int type) free(req); return; } + +/* we consciously ignore the type of the request here */ +void page_request_stop(struct gsm_bts *bts, struct gsm_subscriber *subscr) +{ + struct paging_bts *bts_entry; + struct paging_request *req, *req2; + + llist_for_each_entry(bts_entry, &managed_bts, bts_list) { + if (bts == bts_entry->bts) + break; + } + if (!bts_entry) + return; + + llist_for_each_entry_safe(req, req2, &bts_entry->pending_requests, + entry) { + if (req->subscr == subscr) + llist_del(&req->entry); + } +} |