Change in libosmocore[master]: bssgp: introduce flush queue functions

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

lynxis lazus gerrit-no-reply at lists.osmocom.org
Tue Aug 7 16:25:06 UTC 2018


lynxis lazus has uploaded this change for review. ( https://gerrit.osmocom.org/10371


Change subject: bssgp: introduce flush queue functions
......................................................................

bssgp: introduce flush queue functions

To reset the state of BSSGP allow to flush the BSSGP queues.
Introduce the functions:
bssgp_fc_flush_queue()
bssgp_flush_all_queues()

Change-Id: I29b6ad6742ddf9b0b58b4af37d9a1cf18e019325
---
M include/osmocom/gprs/gprs_bssgp.h
M src/gb/gprs_bssgp.c
M src/gb/libosmogb.map
3 files changed, 25 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/71/10371/1

diff --git a/include/osmocom/gprs/gprs_bssgp.h b/include/osmocom/gprs/gprs_bssgp.h
index 2dead69..400c3e0 100644
--- a/include/osmocom/gprs/gprs_bssgp.h
+++ b/include/osmocom/gprs/gprs_bssgp.h
@@ -207,6 +207,9 @@
 int bssgp_fc_ms_init(struct bssgp_flow_control *fc_ms, uint16_t bvci,
 		     uint16_t nsei, uint32_t max_queue_depth);
 
+void bssgp_flush_all_queues();
+void bssgp_fc_flush_queue(struct bssgp_flow_control *fc);
+
 /* gprs_bssgp_vty.c */
 int bssgp_vty_init(void);
 void bssgp_set_log_ss(int ss);
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index 5dfce16..fb79cf8 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -1263,3 +1263,23 @@
 {
 	DBSSGP = ss;
 }
+
+void bssgp_fc_flush_queue(struct bssgp_flow_control *fc)
+{
+	struct bssgp_fc_queue_element *element, *tmp;
+	llist_for_each_entry_safe(element, tmp, &fc->queue, list) {
+		msgb_free(element->msg);
+		llist_del(element);
+		talloc_free(element);
+	}
+}
+
+void bssgp_flush_all_queues()
+{
+	struct bssgp_bvc_ctx *bctx;
+
+	llist_for_each_entry(bctx, &bssgp_bvc_ctxts, list) {
+		if (bctx->fc)
+			bssgp_fc_flush_queue(bctx->fc);
+	}
+}
diff --git a/src/gb/libosmogb.map b/src/gb/libosmogb.map
index d56e651..ec69670 100644
--- a/src/gb/libosmogb.map
+++ b/src/gb/libosmogb.map
@@ -6,6 +6,8 @@
 bssgp_fc_in;
 bssgp_fc_init;
 bssgp_fc_ms_init;
+bssgp_fc_flush_queue;
+bssgp_flush_all_queues;
 bssgp_msgb_alloc;
 bssgp_msgb_copy;
 bssgp_msgb_tlli_put;

-- 
To view, visit https://gerrit.osmocom.org/10371
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I29b6ad6742ddf9b0b58b4af37d9a1cf18e019325
Gerrit-Change-Number: 10371
Gerrit-PatchSet: 1
Gerrit-Owner: lynxis lazus <lynxis at fe80.eu>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180807/ab21459e/attachment.htm>


More information about the gerrit-log mailing list