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