diff --git a/src/Makefile b/src/Makefile
index e81eb5c..e78b5f9 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -4,7 +4,7 @@
 
 MODS_LOG = gprs_rlc.o gprs_mac.o diag_gsm.o diag_log.o diag_log_gsm.o diag_log_gprs.o diag_log_umts.o diag_log_qmi.o
 
-qxdm-log: diagchar_hdlc.o diag_io.o qxdm-log.o protocol.o $(MODS_LOG)
+qxdm-log: diagchar_hdlc.o diag_io.o qxdm-log.o diag_msg.o protocol.o $(MODS_LOG)
 	$(CC) $(CPPFLAGS) -o $@ $^ $(LIBS)
 
 clean:
diff --git a/src/diag_msg.c b/src/diag_msg.c
new file mode 100644
index 0000000..71ec9ea
--- /dev/null
+++ b/src/diag_msg.c
@@ -0,0 +1,54 @@
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <osmocom/core/msgb.h>
+
+#include "protocol.h"
+#include "diag_msg.h"
+#include "diagcmd.h"
+
+
+/* handler for EXT MSG */
+int diag_rx_ext_msg_f(struct diag_instance *di, struct msgb *msgb)
+{
+	const uint8_t *data = msgb_data(msgb);
+	const size_t len = msgb_length(msgb);
+	const struct ext_log_msg *msg;
+	const char *file = NULL, *fmt;
+	unsigned int num_args;
+
+	if (len < sizeof(struct ext_log_msg)) {
+		printf("too short ext_log_msg.\n");
+		return -1;
+	}
+
+	msg = (struct ext_log_msg *) data;
+	num_args = msg->num_args;
+	fmt = (const char *) msg->params + num_args*sizeof(msg->params[0]);
+	file = fmt + strlen(fmt) + 1;
+
+	printf("MSG(%u|%s:%u): ", diag_ts_to_epoch(msg->timestamp), file, msg->line_nr);
+	switch (num_args) {
+	case 0:
+		fputs(fmt, stdout);
+		break;
+	case 1:
+		printf(fmt, msg->params[0]);
+		break;
+	case 2:
+		printf(fmt, msg->params[0], msg->params[1]);
+		break;
+	case 3:
+		printf(fmt, msg->params[0], msg->params[1], msg->params[2]);
+		break;
+	case 4:
+		printf(fmt, msg->params[0], msg->params[1], msg->params[2], msg->params[3]);
+		break;
+	}
+	fputc('\n', stdout);
+	return 0;
+}
+
+
diff --git a/src/diag_msg.h b/src/diag_msg.h
new file mode 100644
index 0000000..917afc2
--- /dev/null
+++ b/src/diag_msg.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#include <osmocom/core/msgb.h>
+#include "diag_io.h"
+
+
+int diag_rx_ext_msg_f(struct diag_instance *di, struct msgb *msg);
diff --git a/src/qxdm-log.c b/src/qxdm-log.c
index 14f494a..c432d54 100644
--- a/src/qxdm-log.c
+++ b/src/qxdm-log.c
@@ -17,47 +17,9 @@
 #include "diag_io.h"
 #include "protocol.h"
 #include "diag_log.h"
+#include "diag_msg.h"
 #include "diagcmd.h"
 
-/* handler for EXT MSG */
-static int diag_rx_ext_msg_f(const uint8_t *data, const size_t len)
-{
-	const struct ext_log_msg *msg;
-	const char *file = NULL, *fmt;
-	unsigned int num_args;
-
-	if (len < sizeof(struct ext_log_msg)) {
-		printf("too short ext_log_msg.\n");
-		return -1;
-	}
-
-	msg = (struct ext_log_msg *) data;
-	num_args = msg->num_args;
-	fmt = (const char *) msg->params + num_args*sizeof(msg->params[0]);
-	file = fmt + strlen(fmt) + 1;
-
-	printf("MSG(%u|%s:%u): ", diag_ts_to_epoch(msg->timestamp), file, msg->line_nr);
-	switch (num_args) {
-	case 0:
-		fputs(fmt, stdout);
-		break;
-	case 1:
-		printf(fmt, msg->params[0]);
-		break;
-	case 2:
-		printf(fmt, msg->params[0], msg->params[1]);
-		break;
-	case 3:
-		printf(fmt, msg->params[0], msg->params[1], msg->params[2]);
-		break;
-	case 4:
-		printf(fmt, msg->params[0], msg->params[1], msg->params[2], msg->params[3]);
-		break;
-	}
-	fputc('\n', stdout);
-	return 0;
-}
-
 /*********/
 
 static void diag_process_msg(struct diag_instance *di, struct msgb *msg)
@@ -67,7 +29,7 @@
 		diag_log_handle(di, msg);
 		break;
 	case DIAG_EXT_MSG_F:
-		diag_rx_ext_msg_f(msgb_data(msg), msgb_length(msg));
+		diag_rx_ext_msg_f(di, msg);
 		break;
 	default:
 		printf("Got %d bytes data of unknown payload type 0x%02x: %s\n",
