aboutsummaryrefslogtreecommitdiffstats
path: root/src/tests/hnb-test-ranap.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-04-19 00:13:53 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-04-19 01:32:25 +0200
commit4470f93074d2281b87ebbf53e0205b1b390bf21a (patch)
tree79a996d939eaa5aab1e46f788dc754bd63cae12b /src/tests/hnb-test-ranap.c
parent26779f8573262fe80a2079e2e9a5956ec0c79f17 (diff)
hnb-test: simplify crossing message layers
Adding the Security Mode Control command would break the current scheme of callbacks across layers. This brought to my attention that the scheme is indeed unnecessarily complex, so simplify it. Instead of passing callbacks, call functions directly. Add hnb-test-layers.h to declare those functions that cross from main to rua, to ranap and back to main and remove the callback type definitions. Instead of copying the NAS PDU to a newly allocated msgb, pass the data and len directly to hnb_test_nas_rx_dtap(). Instead of repeatedly checking the gsm48_hdr length, just pass the struct gsm48_hdr* and len around and assume the basic header length has been checked. In some places, rename 'length' to 'len' for cosmetic consistency.
Diffstat (limited to 'src/tests/hnb-test-ranap.c')
-rw-r--r--src/tests/hnb-test-ranap.c47
1 files changed, 18 insertions, 29 deletions
diff --git a/src/tests/hnb-test-ranap.c b/src/tests/hnb-test-ranap.c
index 7412d83..63e3d92 100644
--- a/src/tests/hnb-test-ranap.c
+++ b/src/tests/hnb-test-ranap.c
@@ -1,6 +1,8 @@
#include <osmocom/core/msgb.h>
#include <osmocom/ranap/ranap_ies_defs.h>
+#include "hnb-test-layers.h"
+
static const char *printstr(OCTET_STRING_t *s)
{
return osmo_hexdump((char*)s->buf, s->size);
@@ -10,38 +12,25 @@ static const char *printstr(OCTET_STRING_t *s)
printf(#octet_string_t " = %s\n",\
printstr(&octet_string_t))
-void ranap_msg_dt_print(void *ctx, ranap_message *ranap_msg)
+void hnb_test_rua_dt_handle_ranap(struct hnb_test *hnb,
+ struct ranap_message_s *ranap_msg)
{
- OSMO_ASSERT(ranap_msg->procedureCode ==
- RANAP_ProcedureCode_id_DirectTransfer);
-
- printf("rx DirectTransfer: presence = %hx\n", ranap_msg->msg.directTransferIEs.presenceMask);
- PP(ranap_msg->msg.directTransferIEs.nas_pdu);
-
-/*
-typedef struct RANAP_DirectTransferIEs_s {
- uint16_t presenceMask;
- RANAP_NAS_PDU_t nas_pdu;
- RANAP_LAI_t lai; ///< Optional field
- RANAP_RAC_t rac; ///< Optional field
- RANAP_SAI_t sai; ///< Optional field
- RANAP_SAPI_t sapi; ///< Optional field
-} RANAP_DirectTransferIEs_t;
-*/
-}
+ int len;
+ char *data;
-void ranap_msg_dt_get(void *ctx, ranap_message *ranap_msg)
-{
- struct msgb *m = ctx;
- OSMO_ASSERT(ranap_msg->procedureCode ==
- RANAP_ProcedureCode_id_DirectTransfer);
+ printf("rx ranap_msg->procedureCode %d\n",
+ ranap_msg->procedureCode);
- printf("rx DirectTransfer: presence = %hx\n", ranap_msg->msg.directTransferIEs.presenceMask);
- PP(ranap_msg->msg.directTransferIEs.nas_pdu);
+ switch (ranap_msg->procedureCode) {
+ case RANAP_ProcedureCode_id_DirectTransfer:
+ printf("rx DirectTransfer: presence = %hx\n",
+ ranap_msg->msg.directTransferIEs.presenceMask);
+ PP(ranap_msg->msg.directTransferIEs.nas_pdu);
- int len = ranap_msg->msg.directTransferIEs.nas_pdu.size;
- char *data = ranap_msg->msg.directTransferIEs.nas_pdu.buf;
+ len = ranap_msg->msg.directTransferIEs.nas_pdu.size;
+ data = ranap_msg->msg.directTransferIEs.nas_pdu.buf;
- m->l3h = m->data;
- memcpy(msgb_put(m, len), data, len);
+ hnb_test_nas_rx_dtap(hnb, data, len);
+ return;
+ }
}