Change in osmo-remsim[master]: bankd: Implement new ResetStateReq

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/.

laforge gerrit-no-reply at lists.osmocom.org
Wed Dec 4 20:53:14 UTC 2019


laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-remsim/+/16492 )


Change subject: bankd: Implement new ResetStateReq
......................................................................

bankd: Implement new ResetStateReq

Change-Id: Ib794e605162903a2b2c4f4516887ec91fc8d139a
---
M src/bankd/bankd_main.c
M src/slotmap.c
M src/slotmap.h
3 files changed, 30 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-remsim refs/changes/92/16492/1

diff --git a/src/bankd/bankd_main.c b/src/bankd/bankd_main.c
index 09a9e1d..5137635 100644
--- a/src/bankd/bankd_main.c
+++ b/src/bankd/bankd_main.c
@@ -150,6 +150,7 @@
 {
 	const CreateMappingReq_t *creq = NULL;
 	const RemoveMappingReq_t *rreq = NULL;
+	struct bankd_worker *worker;
 	struct slot_mapping *map;
 	struct bank_slot bs;
 	struct client_slot cs;
@@ -230,6 +231,19 @@
 		}
 		server_conn_send_rspro(srvc, resp);
 		break;
+	case RsproPDUchoice_PR_resetStateReq:
+		/* delete all slotmaps */
+		slotmap_del_all(g_bankd->slotmaps);
+		/* notify all workers about maps having disappeared */
+		pthread_mutex_lock(&g_bankd->workers_mutex);
+		llist_for_each_entry(worker, &g_bankd->workers, list) {
+			pthread_kill(worker->thread, SIGMAPDEL);
+		}
+		pthread_mutex_unlock(&g_bankd->workers_mutex);
+		/* send response to server */
+		resp = rspro_gen_ResetStateRes(ResultCode_ok);
+		server_conn_send_rspro(srvc, resp);
+		break;
 	default:
 		LOGPFSML(srvc->fi, LOGL_ERROR, "Unknown/Unsupported RSPRO PDU type: %u\n",
 			 pdu->msg.present);
diff --git a/src/slotmap.c b/src/slotmap.c
index b4a8e6f..b837f01 100644
--- a/src/slotmap.c
+++ b/src/slotmap.c
@@ -159,6 +159,19 @@
 	slotmaps_unlock(maps);
 }
 
+
+/* thread-safe removal of all bank<->client maps */
+void slotmap_del_all(struct slotmaps *maps)
+{
+	struct slot_mapping *map, *map2;
+
+	slotmaps_wrlock(maps);
+	llist_for_each_entry_safe(map, map2, &maps->mappings, list) {
+		_slotmap_del(maps, map);
+	}
+	slotmaps_unlock(maps);
+}
+
 struct slotmaps *slotmap_init(void *ctx)
 {
 	struct slotmaps *sm = talloc_zero(ctx, struct slotmaps);
diff --git a/src/slotmap.h b/src/slotmap.h
index bf18e04..3d07c8d 100644
--- a/src/slotmap.h
+++ b/src/slotmap.h
@@ -83,6 +83,9 @@
 void slotmap_del(struct slotmaps *maps, struct slot_mapping *map);
 void _slotmap_del(struct slotmaps *maps, struct slot_mapping *map);
 
+/* thread-safe removal of all bank<->client maps */
+void slotmap_del_all(struct slotmaps *maps);
+
 /* initialize the entire map collection */
 struct slotmaps *slotmap_init(void *ctx);
 

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-remsim/+/16492
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-remsim
Gerrit-Branch: master
Gerrit-Change-Id: Ib794e605162903a2b2c4f4516887ec91fc8d139a
Gerrit-Change-Number: 16492
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191204/f8bcd37a/attachment.htm>


More information about the gerrit-log mailing list