Introduce {server,bankd}_conn_send_rspro()

Change-Id: I8cae6f67567dcbf4b6d62fb5a76f5b7134b16f5d
diff --git a/src/bankd_client_fsm.c b/src/bankd_client_fsm.c
index 425bf38..ce7d20e 100644
--- a/src/bankd_client_fsm.c
+++ b/src/bankd_client_fsm.c
@@ -47,6 +47,11 @@
 	osmo_fsm_inst_dispatch(bc->bankd_fi, up ? BDC_E_TCP_UP: BDC_E_TCP_DOWN, 0);
 }
 
+int bankd_conn_send_rspro(struct bankd_client *bc, RsproPDU_t *rspro)
+{
+	return ipa_client_conn_send_rspro(bc->bankd_conn, rspro);
+}
+
 /***********************************************************************
  * bankd connection FSM: Remsim Client connection to Bankd
  ***********************************************************************/
@@ -92,7 +97,7 @@
 
 	/* FIXME: Send ClientConnReq */
 	pdu = rspro_gen_ConnectClientReq(&bc->srv_conn.own_comp_id, bc->srv_conn.clslot);
-	ipa_client_conn_send_rspro(bc->bankd_conn, pdu);
+	bankd_conn_send_rspro(bc, pdu);
 }
 
 static void bdc_st_established(struct osmo_fsm_inst *fi, uint32_t event, void *data)
diff --git a/src/client.h b/src/client.h
index 5756190..dae53a2 100644
--- a/src/client.h
+++ b/src/client.h
@@ -36,6 +36,6 @@
 	struct osmo_fsm_inst *bankd_fi;
 };
 
-void ipa_client_conn_send_rspro(struct ipa_client_conn *ipa, RsproPDU_t *rspro);
+int bankd_conn_send_rspro(struct bankd_client *bc, RsproPDU_t *pdu);
 int bankd_read_cb(struct ipa_client_conn *conn, struct msgb *msg);
 int bankd_conn_fsm_alloc(struct bankd_client *bc);
diff --git a/src/remsim_client.c b/src/remsim_client.c
index 3bbf638..bf549c5 100644
--- a/src/remsim_client.c
+++ b/src/remsim_client.c
@@ -140,7 +140,7 @@
 		osmo_fsm_inst_dispatch(g_client->bankd_fi, BDC_E_ESTABLISH, NULL);
 		/* send response to server */
 		resp = rspro_gen_ConfigClientRes(ResultCode_ok);
-		ipa_client_conn_send_rspro(srvc->conn, resp);
+		server_conn_send_rspro(srvc, resp);
 		break;
 	default:
 		fprintf(stderr, "Unknown/Unsupported RSPRO PDU type: %u\n", pdu->msg.present);
diff --git a/src/rspro_client_fsm.c b/src/rspro_client_fsm.c
index 894b98a..8ad79d4 100644
--- a/src/rspro_client_fsm.c
+++ b/src/rspro_client_fsm.c
@@ -55,11 +55,18 @@
 	/* msg_tx is now queued and will be freed. */
 }
 
-void ipa_client_conn_send_rspro(struct ipa_client_conn *ipa, RsproPDU_t *rspro)
+int ipa_client_conn_send_rspro(struct ipa_client_conn *ipa, RsproPDU_t *rspro)
 {
 	struct msgb *msg = rspro_enc_msg(rspro);
-	OSMO_ASSERT(msg);
+	if (!msg)
+		return -1;
 	push_and_send(ipa, msg);
+	return 0;
+}
+
+int server_conn_send_rspro(struct rspro_server_conn *srvc, RsproPDU_t *rspro)
+{
+	return ipa_client_conn_send_rspro(srvc->conn, rspro);
 }
 
 enum server_conn_fsm_state {
@@ -210,7 +217,7 @@
 		pdu = rspro_gen_ConnectClientReq(&srvc->own_comp_id, srvc->clslot);
 	else
 		pdu = rspro_gen_ConnectBankReq(&srvc->own_comp_id, 1, 8 /* FIXME */);
-	ipa_client_conn_send_rspro(srvc->conn, pdu);
+	server_conn_send_rspro(srvc, pdu);
 }
 
 static void srvc_st_established(struct osmo_fsm_inst *fi, uint32_t event, void *data)
diff --git a/src/rspro_client_fsm.h b/src/rspro_client_fsm.h
index 03f7ad6..ea88333 100644
--- a/src/rspro_client_fsm.h
+++ b/src/rspro_client_fsm.h
@@ -36,4 +36,6 @@
 	uint16_t server_port;
 };
 
+int ipa_client_conn_send_rspro(struct ipa_client_conn *ipa, RsproPDU_t *rspro);
+int server_conn_send_rspro(struct rspro_server_conn *srvc, RsproPDU_t *rspro);
 int server_conn_fsm_alloc(void *ctx, struct rspro_server_conn *srvc);
diff --git a/src/simtrace2-remsim_client.c b/src/simtrace2-remsim_client.c
index f46b7e6..e9568fa 100644
--- a/src/simtrace2-remsim_client.c
+++ b/src/simtrace2-remsim_client.c
@@ -632,7 +632,7 @@
 		osmo_fsm_inst_dispatch(g_client->bankd_fi, BDC_E_ESTABLISH, NULL);
 		/* send response to server */
 		resp = rspro_gen_ConfigClientRes(ResultCode_ok);
-		ipa_client_conn_send_rspro(srvc->conn, resp);
+		server_conn_send_rspro(srvc, resp);
 		break;
 	default:
 		fprintf(stderr, "Unknown/Unsupported RSPRO PDU type: %u\n", pdu->msg.present);