ranap_common_cn.c: Use call-backs rather than function calls

When we use call-back function pointers with ranap_cn_rx_c{o,l}()
functions, we can (soon) migrate it into libosmo-ranap without an
application having to provide 'magic symbols' that the library expects
to be able to call.
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);