hnb-test: decode NAS pdu when receiving RUA from CN
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);
+}