first dispatch of RUA into RANAP
This is becoming more and more of a hack, as asn1c + asn1tostruct.py
don't really deal well with the RANAP syntax :(
diff --git a/src/hnbgw_rua.c b/src/hnbgw_rua.c
index a5e46f0..3af564b 100644
--- a/src/hnbgw_rua.c
+++ b/src/hnbgw_rua.c
@@ -8,6 +8,7 @@
#include "asn1helpers.h"
#include "hnbgw.h"
+#include "hnbgw_ranap.h"
#include "rua_common.h"
#include "rua_ies_defs.h"
@@ -87,7 +88,7 @@
}
-static int rua_rx_init_connect(struct hnb_context *hnb, ANY_t *in)
+static int rua_rx_init_connect(struct msgb *msg, ANY_t *in)
{
RUA_ConnectIEs_t ies;
uint32_t context_id;
@@ -102,9 +103,10 @@
DEBUGP(DMAIN, "Connect.req(ctx=0x%x, %s)\n", context_id,
ies.establishment_Cause == RUA_Establishment_Cause_emergency_call
? "emergency" : "normal");
+ /* FIXME */
}
-static int rua_rx_init_disconnect(struct hnb_context *hnb, ANY_t *in)
+static int rua_rx_init_disconnect(struct msgb *msg, ANY_t *in)
{
RUA_DisconnectIEs_t ies;
uint32_t context_id;
@@ -118,9 +120,10 @@
DEBUGP(DMAIN, "Disconnect.req(ctx=0x%x,cause=%s)\n", context_id,
rua_cause_str(&ies.cause));
+ /* FIXME */
}
-static int rua_rx_init_dt(struct hnb_context *hnb, ANY_t *in)
+static int rua_rx_init_dt(struct msgb *msg, ANY_t *in)
{
RUA_DirectTransferIEs_t ies;
uint32_t context_id;
@@ -133,10 +136,11 @@
context_id = asn1bitstr_to_u32(&ies.context_ID);
DEBUGP(DMAIN, "Data.req(ctx=0x%x)\n", context_id);
+ /* FIXME */
}
-static int rua_rx_init_udt(struct hnb_context *hnb, ANY_t *in)
+static int rua_rx_init_udt(struct msgb *msg, ANY_t *in)
{
RUA_ConnectionlessTransferIEs_t ies;
int rc;
@@ -147,9 +151,15 @@
DEBUGP(DMAIN, "UData.req()\n");
+ /* FIXME: pass on to RANAP */
+ rc = hnbgw_ranap_rx(msg, ies.ranaP_Message.buf, ies.ranaP_Message.size);
+ /* FIXME: what to do with the asn1c-allocated memory */
+
+ return rc;
}
-static int rua_rx_init_err_ind(struct hnb_context *hnb, ANY_t *in)
+
+static int rua_rx_init_err_ind(struct msgb *msg, ANY_t *in)
{
RUA_ErrorIndicationIEs_t ies;
int rc;
@@ -160,25 +170,25 @@
}
-static int rua_rx_initiating_msg(struct hnb_context *hnb, RUA_InitiatingMessage_t *imsg)
+static int rua_rx_initiating_msg(struct msgb *msg, RUA_InitiatingMessage_t *imsg)
{
int rc;
switch (imsg->procedureCode) {
case RUA_ProcedureCode_id_Connect:
- rc = rua_rx_init_connect(hnb, &imsg->value);
+ rc = rua_rx_init_connect(msg, &imsg->value);
break;
case RUA_ProcedureCode_id_DirectTransfer:
- rc = rua_rx_init_dt(hnb, &imsg->value);
+ rc = rua_rx_init_dt(msg, &imsg->value);
break;
case RUA_ProcedureCode_id_Disconnect:
- rc = rua_rx_init_disconnect(hnb, &imsg->value);
+ rc = rua_rx_init_disconnect(msg, &imsg->value);
break;
case RUA_ProcedureCode_id_ConnectionlessTransfer:
- rc = rua_rx_init_udt(hnb, &imsg->value);
+ rc = rua_rx_init_udt(msg, &imsg->value);
break;
case RUA_ProcedureCode_id_ErrorIndication:
- rc = rua_rx_init_err_ind(hnb, &imsg->value);
+ rc = rua_rx_init_err_ind(msg, &imsg->value);
break;
case RUA_ProcedureCode_id_privateMessage:
break;
@@ -187,18 +197,18 @@
}
}
-static int rua_rx_successful_outcome_msg(struct hnb_context *hnb, RUA_SuccessfulOutcome_t *msg)
+static int rua_rx_successful_outcome_msg(struct msgb *msg, RUA_SuccessfulOutcome_t *in)
{
}
-static int rua_rx_unsuccessful_outcome_msg(struct hnb_context *hnb, RUA_UnsuccessfulOutcome_t *msg)
+static int rua_rx_unsuccessful_outcome_msg(struct msgb *msg, RUA_UnsuccessfulOutcome_t *in)
{
}
-static int _hnbgw_rua_rx(struct hnb_context *hnb, RUA_RUA_PDU_t *pdu)
+static int _hnbgw_rua_rx(struct msgb *msg, RUA_RUA_PDU_t *pdu)
{
int rc;
@@ -206,13 +216,13 @@
* that's not possible */
switch (pdu->present) {
case RUA_RUA_PDU_PR_initiatingMessage:
- rc = rua_rx_initiating_msg(hnb, &pdu->choice.initiatingMessage);
+ rc = rua_rx_initiating_msg(msg, &pdu->choice.initiatingMessage);
break;
case RUA_RUA_PDU_PR_successfulOutcome:
- rc = rua_rx_successful_outcome_msg(hnb, &pdu->choice.successfulOutcome);
+ rc = rua_rx_successful_outcome_msg(msg, &pdu->choice.successfulOutcome);
break;
case RUA_RUA_PDU_PR_unsuccessfulOutcome:
- rc = rua_rx_unsuccessful_outcome_msg(hnb, &pdu->choice.unsuccessfulOutcome);
+ rc = rua_rx_unsuccessful_outcome_msg(msg, &pdu->choice.unsuccessfulOutcome);
break;
default:
return -1;
@@ -235,7 +245,7 @@
return rc;
}
- rc = _hnbgw_rua_rx(hnb, pdu);
+ rc = _hnbgw_rua_rx(msg, pdu);
return rc;
}