diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
index bcf4a46..1bf50d2 100644
--- a/src/tests/Makefile.am
+++ b/src/tests/Makefile.am
@@ -13,7 +13,7 @@
 test_hnbap_SOURCES = $(top_srcdir)/src/hnbap_common.c $(top_srcdir)/src/hnbap_decoder.c test-hnbap.c test_common.c
 test_hnbap_LDADD = $(COMMON_LIBS) $(top_builddir)/src/hnbap/libosmo-asn1-hnbap.a $(top_builddir)/src/libosmo-ranap.la
 
-hnb_test_SOURCES = $(HNBAP_FILES) $(RUA_FILES) hnb-test.c test_common.c
+hnb_test_SOURCES = $(HNBAP_FILES) $(RUA_FILES) hnb-test.c test_common.c hnb-test-ranap.c hnb-test-rua.c
 hnb_test_LDADD = $(COMMON_LIBS) $(top_builddir)/src/hnbap/libosmo-asn1-hnbap.a $(top_builddir)/src/rua/libosmo-asn1-rua.a $(top_builddir)/src/libosmo-ranap.la
 
 test_ranap_SOURCES = $(RANAP_FILES) test-ranap.c test_common.c
diff --git a/src/tests/hnb-test-ranap.c b/src/tests/hnb-test-ranap.c
new file mode 100644
index 0000000..eb90745
--- /dev/null
+++ b/src/tests/hnb-test-ranap.c
@@ -0,0 +1,48 @@
+#include <osmocom/core/msgb.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+
+static const char *printstr(OCTET_STRING_t *s)
+{
+	osmo_hexdump((char*)s->buf, s->size);
+}
+
+#define PP(octet_string_t) \
+	printf(#octet_string_t " = %s\n",\
+	       printstr(&octet_string_t))
+
+void ranap_msg_dt_print(void *ctx, ranap_message *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);
+	
+	// nas_pdu == '05 08 12' ==> IMEI Identity request
+	//            '05 04 0d' ==> LU reject
+/*
+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;
+*/
+}
+
+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 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;
+
+	memcpy(msgb_put(m, len), data, len);
+}
diff --git a/src/tests/hnb-test-rua.c b/src/tests/hnb-test-rua.c
new file mode 100644
index 0000000..41df4f2
--- /dev/null
+++ b/src/tests/hnb-test-rua.c
@@ -0,0 +1,37 @@
+
+#include <asn1c/ANY.h>
+#include "../rua_ies_defs.h"
+
+struct ranap_message_s;
+
+typedef void (*ranap_handle_cb)(void *ctx, struct ranap_message_s *ranap_msg);
+
+extern void ranap_msg_dt_print(void *ctx, struct ranap_message_s *ranap_msg);
+extern void ranap_msg_dt_get(void *ctx, struct ranap_message_s *ranap_msg);
+
+static void direct_transfer_nas_pdu_handle(ANY_t *in, ranap_handle_cb handler, void *ctx)
+{
+	RUA_DirectTransferIEs_t ies;
+	int rc;
+
+	rc = rua_decode_directtransferies(&ies, in);
+	if (rc < 0) {
+		printf("print_rua_init_dt(): failed to decode rua IEs\n");
+		return;
+	}
+
+	rc = ranap_cn_rx_co(handler, ctx, ies.ranaP_Message.buf, ies.ranaP_Message.size);
+
+	/* FIXME: what to do with the asn1c-allocated memory */
+	rua_free_directtransferies(&ies);
+}
+
+void direct_transfer_nas_pdu_print(ANY_t *in)
+{
+	direct_transfer_nas_pdu_handle(in, ranap_msg_dt_print, NULL);
+}
+
+void direct_transfer_nas_pdu_get(ANY_t *in, struct msgb *m)
+{
+	direct_transfer_nas_pdu_handle(in, ranap_msg_dt_get, m);
+}
diff --git a/src/tests/hnb-test.c b/src/tests/hnb-test.c
index 087e93f..048f3a9 100644
--- a/src/tests/hnb-test.c
+++ b/src/tests/hnb-test.c
@@ -208,6 +208,8 @@
 	return rc;
 }
 
+extern void direct_transfer_nas_pdu_print(ANY_t *in);
+
 int hnb_test_rua_rx(struct hnb_test *hnb, struct msgb *msg)
 {
 	RUA_RUA_PDU_t _pdu, *pdu = &_pdu;
@@ -249,6 +251,15 @@
 		break;
 	case RUA_ProcedureCode_id_DirectTransfer:
 		printf("RUA rx DirectTransfer\n");
+		{
+			struct msgb *m = msgb_alloc(1500, "direct_transfer_nas_pdu");
+			direct_transfer_nas_pdu_get(&pdu->choice.successfulOutcome.value, m);
+
+			// evaluate
+
+			printf("got %s\n", osmo_hexdump(m->data, m->len));
+			msgb_free(m);
+		}
 		break;
 	case RUA_ProcedureCode_id_Disconnect:
 		printf("RUA rx Disconnect\n");
