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;
}