diff --git a/src/tests/dummy_cn_sua.c b/src/tests/dummy_cn_sua.c
index c9acd9f..c852505 100644
--- a/src/tests/dummy_cn_sua.c
+++ b/src/tests/dummy_cn_sua.c
@@ -135,7 +135,7 @@
 }
 
 /* Entry point for connection-oriented ANAP message */
-int cn_ranap_handle_co(void *ctx, ranap_message *message)
+static void cn_ranap_handle_co(void *ctx, ranap_message *message)
 {
 	int rc = 0;
 
@@ -172,11 +172,8 @@
 	case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
 	case RANAP_RANAP_PDU_PR_outcome:
 	default:
-		rc = -1;
 		break;
 	}
-
-	return rc;
 }
 
 static int ranap_handle_cl_reset_req(void *ctx, RANAP_ResetIEs_t *ies)
@@ -196,7 +193,7 @@
 }
 
 /* Entry point for connection-less RANAP message */
-int cn_ranap_handle_cl(void *ctx, ranap_message *message)
+static void cn_ranap_handle_cl(void *ctx, ranap_message *message)
 {
 	int rc = 0;
 
@@ -216,7 +213,6 @@
 	case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
 	case RANAP_RANAP_PDU_PR_outcome:
 	default:
-		rc = -1;
 		break;
 	}
 }
@@ -272,13 +268,13 @@
 		resp = make_conn_resp(&prim->u.connect);
 		osmo_sua_user_link_down(link, resp);
 		/* then handle the RANAP payload */
-		rc = cn_ranap_rx_co(ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+		rc = ranap_cn_rx_co(cn_ranap_handle_co, ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
 		break;
 	case OSMO_PRIM(OSMO_SCU_PRIM_N_DISCONNECT, PRIM_OP_INDICATION):
 		/* indication of disconnect */
 		printf("N-DISCONNECT.ind(%u)\n", prim->u.disconnect.conn_id);
 		ue = ue_conn_ctx_find(link, prim->u.disconnect.conn_id);
-		rc = cn_ranap_rx_co(ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+		rc = ranap_cn_rx_co(cn_ranap_handle_co, ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
 		break;
 	case OSMO_PRIM(OSMO_SCU_PRIM_N_DATA, PRIM_OP_INDICATION):
 		/* connection-oriented data received */
@@ -286,13 +282,13 @@
 			osmo_hexdump(msgb_l2(oph->msg), msgb_l2len(oph->msg)));
 		/* resolve UE context */
 		ue = ue_conn_ctx_find(link, prim->u.data.conn_id);
-		rc = cn_ranap_rx_co(ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+		rc = ranap_cn_rx_co(cn_ranap_handle_co, ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
 		break;
 	case OSMO_PRIM(OSMO_SCU_PRIM_N_UNITDATA, PRIM_OP_INDICATION):
 		/* connection-oriented data received */
 		printf("N-UNITDATA.ind(%s)\n", 
 			osmo_hexdump(msgb_l2(oph->msg), msgb_l2len(oph->msg)));
-		rc = cn_ranap_rx_cl(link, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+		rc = ranap_cn_rx_cl(cn_ranap_handle_cl, link, msgb_l2(oph->msg), msgb_l2len(oph->msg));
 		break;
 	}
 
diff --git a/src/tests/ranap_common_cn.c b/src/tests/ranap_common_cn.c
index 799629e..59186ff 100644
--- a/src/tests/ranap_common_cn.c
+++ b/src/tests/ranap_common_cn.c
@@ -170,7 +170,7 @@
 
 /* receive a connection-oriented RANAP message and call
  * cn_ranap_handle_co() with the resulting ranap_message struct */
-int cn_ranap_rx_co(void *ctx, uint8_t *data, size_t len)
+int ranap_cn_rx_co(ranap_handle_cb cb, void *ctx, uint8_t *data, size_t len)
 {
 	RANAP_RANAP_PDU_t *pdu = NULL;
 	ranap_message message;
@@ -191,7 +191,7 @@
 	rc = _cn_ranap_rx_co(ctx, pdu, &message);
 
 	if (rc == 0)
-		cn_ranap_handle_co(ctx, &message);
+		(*cb)(ctx, &message);
 	else
 		LOGP(DRANAP, LOGL_ERROR, "Not calling cn_ranap_handle_co() due to rc=%d\n", rc);
 
@@ -305,7 +305,7 @@
 
 /* receive a connection-oriented RANAP message and call
  * cn_ranap_handle_co() with the resulting ranap_message struct */
-int cn_ranap_rx_cl(void *ctx, uint8_t *data, size_t len)
+int ranap_cn_rx_cl(ranap_handle_cb cb, void *ctx, uint8_t *data, size_t len)
 {
 	RANAP_RANAP_PDU_t *pdu = NULL;
 	ranap_message message;
@@ -326,7 +326,7 @@
 	rc = _cn_ranap_rx_cl(ctx, pdu, &message);
 
 	if (rc == 0)
-		cn_ranap_handle_cl(ctx, &message);
+		(*cb)(ctx, &message);
 	else
 		LOGP(DRANAP, LOGL_ERROR, "Not calling cn_ranap_handle_cl() due to rc=%d\n", rc);
 
diff --git a/src/tests/ranap_common_cn.h b/src/tests/ranap_common_cn.h
index 6eb16c2..f0fd09e 100644
--- a/src/tests/ranap_common_cn.h
+++ b/src/tests/ranap_common_cn.h
@@ -5,13 +5,10 @@
 #include <osmocom/ranap/ranap_common.h>
 #include <osmocom/ranap/ranap_ies_defs.h>
 
-/* call-back functions to be provided by actual core network node */
-int cn_ranap_handle_co(void *ctx, ranap_message *message);
-int cn_ranap_handle_cl(void *ctx, ranap_message *message);
-
+typedef void (*ranap_handle_cb)(void *ctx, ranap_message *ranap_msg);
 
 /* receive a connections-liess RANAP message */
-int cn_ranap_rx_cl(void *ctx, uint8_t *data, size_t len);
+int ranap_cn_rx_cl(ranap_handle_cb cb, void *ctx, uint8_t *data, size_t len);
 
 /* receive a connection-oriented RANAP message */
-int cn_ranap_rx_co(void *ctx, uint8_t *data, size_t len);
+int ranap_cn_rx_co(ranap_handle_cb cb, void *ctx, uint8_t *data, size_t len);
