bankd: Implement new ResetStateReq

Change-Id: Ib794e605162903a2b2c4f4516887ec91fc8d139a
diff --git a/src/bankd/bankd_main.c b/src/bankd/bankd_main.c
index 82ed8c0..d6e643b 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);