diff --git a/library/M3UA_CodecPort.ttcn b/library/M3UA_CodecPort.ttcn
new file mode 100644
index 0000000..94d16d6
--- /dev/null
+++ b/library/M3UA_CodecPort.ttcn
@@ -0,0 +1,84 @@
+module M3UA_CodecPort {
+
+/* Simple M3UA Codec Port, translating between raw SCTP primitives with
+ * octetstring payload towards the IPL4asp provider, and M3UA primitives
+ * which carry the decoded M3UA data types as payload.
+ *
+ * (C) 2019 by Harald Welte <laforge@gnumonks.org>
+ * All rights reserved.
+ *
+ * Released under the terms of GNU General Public License, Version 2 or
+ * (at your option) any later version.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+	import from IPL4asp_PortType all;
+	import from IPL4asp_Types all;
+	import from M3UA_Types all;
+
+	type record M3UA_RecvFrom {
+		ConnectionId	connId,
+		HostName	remName,
+		PortNumber	remPort,
+		HostName	locName,
+		PortNumber	locPort,
+		PDU_M3UA	msg
+	};
+
+	template M3UA_RecvFrom t_M3UA_RecvFrom(template PDU_M3UA msg) := {
+		connId := ?,
+		remName := ?,
+		remPort := ?,
+		locName := ?,
+		locPort := ?,
+		msg := msg
+	}
+
+	type record M3UA_Send {
+		ConnectionId	connId,
+		integer		stream,
+		PDU_M3UA	msg
+	}
+
+	template M3UA_Send t_M3UA_Send(template ConnectionId connId, template PDU_M3UA msg,
+					template (omit) integer stream := omit) := {
+		connId := connId,
+		stream := stream,
+		msg := msg
+	}
+
+	private function IPL4_to_M3UA_RecvFrom(in ASP_RecvFrom pin, out M3UA_RecvFrom pout) {
+		pout.connId := pin.connId;
+		pout.remName := pin.remName;
+		pout.remPort := pin.remPort;
+		pout.locName := pin.locName;
+		pout.locPort := pin.locPort;
+		pout.msg := dec_PDU_M3UA(pin.msg);
+	} with { extension "prototype(fast)" };
+
+	private function M3UA_to_IPL4_Send(in M3UA_Send pin, out ASP_Send pout) {
+		pout.connId := pin.connId;
+		pout.proto := {
+			sctp := {
+				sinfo_stream := pin.stream,
+				sinfo_ppid := 3,
+				remSocks := omit,
+				assocId := omit
+			}
+		};
+		pout.msg := enc_PDU_M3UA(pin.msg);
+	} with { extension "prototype(fast)" };
+
+	type port M3UA_CODEC_PT message {
+		out	M3UA_Send;
+		in	M3UA_RecvFrom,
+			ASP_ConnId_ReadyToRelease,
+			ASP_Event;
+	} with { extension "user IPL4asp_PT
+		out(M3UA_Send -> ASP_Send:function(M3UA_to_IPL4_Send))
+		in(ASP_RecvFrom -> M3UA_RecvFrom: function(IPL4_to_M3UA_RecvFrom);
+		   ASP_ConnId_ReadyToRelease -> ASP_ConnId_ReadyToRelease: simple;
+		   ASP_Event -> ASP_Event: simple)"
+	}
+}
