aboutsummaryrefslogtreecommitdiffstats
path: root/src/libbsc/paging.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libbsc/paging.c')
-rw-r--r--src/libbsc/paging.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/libbsc/paging.c b/src/libbsc/paging.c
index f4679de5a..8d54d0a5e 100644
--- a/src/libbsc/paging.c
+++ b/src/libbsc/paging.c
@@ -467,3 +467,26 @@ struct bsc_msc_data *paging_get_msc(struct gsm_bts *bts, struct bsc_subscr *bsub
return NULL;
}
+
+/*! Flush all paging requests at a given BTS for a given MSC*/
+void paging_flush_bts(struct gsm_bts *bts, struct bsc_msc_data *msc)
+{
+ struct gsm_paging_request *req, *req2;
+
+ llist_for_each_entry_safe(req, req2, &bts->paging.pending_requests, entry) {
+ if (msc && req->msc != msc)
+ continue;
+ /* now give up the data structure */
+ LOGP(DPAG, LOGL_DEBUG, "Stop paging %s on bts %d (flush).\n", req->bsub->imsi, bts->nr);
+ paging_remove_request(&bts->paging, req);
+ }
+}
+
+/*! Flush all paging requests issued by \a msc on any BTS in \a net */
+void paging_flush_network(struct gsm_network *net, struct bsc_msc_data *msc)
+{
+ struct gsm_bts *bts;
+
+ llist_for_each_entry(bts, &net->bts_list, list)
+ paging_flush_bts(bts, msc);
+}