Change in osmo-remsim[master]: rspro_client_fsm: Add SRVC_E_DISCONNECT to disconnect from RSPRO server

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
Fri Feb 21 20:07:58 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-remsim/+/17184 )

Change subject: rspro_client_fsm: Add SRVC_E_DISCONNECT to disconnect from RSPRO server
......................................................................

rspro_client_fsm: Add SRVC_E_DISCONNECT to disconnect from RSPRO server

This is in preparation of other patches which will actually issue the
SRVC_E_DISCONNET event towards this FSM.

Related: OS#4399
Change-Id: I080f9e85987bbbe7aef84c32ce84b69d949ff561
---
M src/rspro_client_fsm.c
M src/rspro_client_fsm.h
2 files changed, 22 insertions(+), 4 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/rspro_client_fsm.c b/src/rspro_client_fsm.c
index d5cf04b..b006809 100644
--- a/src/rspro_client_fsm.c
+++ b/src/rspro_client_fsm.c
@@ -110,6 +110,7 @@
 
 static const struct value_string server_conn_fsm_event_names[] = {
 	OSMO_VALUE_STRING(SRVC_E_ESTABLISH),
+	OSMO_VALUE_STRING(SRVC_E_DISCONNECT),
 	OSMO_VALUE_STRING(SRVC_E_TCP_UP),
 	OSMO_VALUE_STRING(SRVC_E_TCP_DOWN),
 	OSMO_VALUE_STRING(SRVC_E_KA_TIMEOUT),
@@ -330,10 +331,26 @@
 
 static void srvc_allstate_action(struct osmo_fsm_inst *fi, uint32_t event, void *data)
 {
+	struct rspro_server_conn *srvc = (struct rspro_server_conn *) fi->priv;
+
 	switch (event) {
 	case SRVC_E_ESTABLISH:
 		osmo_fsm_inst_state_chg(fi, SRVC_ST_REESTABLISH, T2_RECONNECT, 2);
 		break;
+	case SRVC_E_DISCONNECT:
+		if (srvc->keepalive_fi) {
+			ipa_keepalive_fsm_stop(srvc->keepalive_fi);
+			osmo_fsm_inst_term(srvc->keepalive_fi, OSMO_FSM_TERM_REGULAR, NULL);
+			srvc->keepalive_fi = NULL;
+		}
+		if (srvc->conn) {
+			LOGPFSML(fi, LOGL_INFO, "Destroying existing connection to server\n");
+			ipa_client_conn_close(srvc->conn);
+			ipa_client_conn_destroy(srvc->conn);
+			srvc->conn = NULL;
+		}
+		osmo_fsm_inst_state_chg(fi, SRVC_ST_INIT, 0, 0);
+		break;
 	default:
 		OSMO_ASSERT(0);
 	}
@@ -370,20 +387,20 @@
 	[SRVC_ST_ESTABLISHED] = {
 		.name = "ESTABLISHED",
 		.in_event_mask = S(SRVC_E_TCP_DOWN) | S(SRVC_E_KA_TIMEOUT) | S(SRVC_E_CLIENT_CONN_RES),
-		.out_state_mask = S(SRVC_ST_CONNECTED) | S(SRVC_ST_REESTABLISH),
+		.out_state_mask = S(SRVC_ST_CONNECTED) | S(SRVC_ST_REESTABLISH) | S(SRVC_ST_INIT),
 		.action = srvc_st_established,
 		.onenter = srvc_st_established_onenter,
 	},
 	[SRVC_ST_CONNECTED] = {
 		.name = "CONNECTED",
 		.in_event_mask = S(SRVC_E_TCP_DOWN) | S(SRVC_E_KA_TIMEOUT) | S(SRVC_E_RSPRO_TX),
-		.out_state_mask = S(SRVC_ST_REESTABLISH),
+		.out_state_mask = S(SRVC_ST_REESTABLISH) | S(SRVC_ST_INIT),
 		.action = srvc_st_connected,
 	},
 	[SRVC_ST_REESTABLISH] = {
 		.name = "REESTABLISH",
 		.in_event_mask = S(SRVC_E_TCP_UP) | S(SRVC_E_TCP_DOWN),
-		.out_state_mask = S(SRVC_ST_ESTABLISHED) | S(SRVC_ST_REESTABLISH),
+		.out_state_mask = S(SRVC_ST_ESTABLISHED) | S(SRVC_ST_REESTABLISH) | S(SRVC_ST_INIT),
 		.action = srvc_st_reestablish,
 		.onenter = srvc_st_reestablish_onenter,
 	},
@@ -393,7 +410,7 @@
 	.name = "RSPRO_CLIENT",
 	.states = server_conn_fsm_states,
 	.num_states = ARRAY_SIZE(server_conn_fsm_states),
-	.allstate_event_mask = S(SRVC_E_ESTABLISH),
+	.allstate_event_mask = S(SRVC_E_ESTABLISH) | S(SRVC_E_DISCONNECT),
 	.allstate_action = srvc_allstate_action,
 	.timer_cb = server_conn_fsm_timer_cb,
 	.log_subsys = DMAIN,
diff --git a/src/rspro_client_fsm.h b/src/rspro_client_fsm.h
index 2f3f7fc..c1ae764 100644
--- a/src/rspro_client_fsm.h
+++ b/src/rspro_client_fsm.h
@@ -8,6 +8,7 @@
 
 enum server_conn_fsm_event {
 	SRVC_E_ESTABLISH,	/* instruct SRVC to (re)etablish TCP connection to bankd */
+	SRVC_E_DISCONNECT,	/* instruct SRVC to disconnect TCP connection to bankd */
 	SRVC_E_TCP_UP,
 	SRVC_E_TCP_DOWN,
 	SRVC_E_KA_TIMEOUT,

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

Gerrit-Project: osmo-remsim
Gerrit-Branch: master
Gerrit-Change-Id: I080f9e85987bbbe7aef84c32ce84b69d949ff561
Gerrit-Change-Number: 17184
Gerrit-PatchSet: 4
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200221/f6c9db15/attachment.htm>


More information about the gerrit-log mailing list