diff --git a/library/ICMP_Templates.ttcn b/library/ICMP_Templates.ttcn
new file mode 100644
index 0000000..cf88e93
--- /dev/null
+++ b/library/ICMP_Templates.ttcn
@@ -0,0 +1,96 @@
+/* ICMP Templates in TTCN-3
+ * (C) 2024 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
+ * 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
+ */
+
+module ICMP_Templates {
+
+	import from General_Types all;
+	import from IP_Types all;
+	import from ICMP_Types all;
+
+	/* template for sending an ICMPv4 echo request */
+	template (value) PDU_ICMP ts_ICMPv4_ERQ(octetstring data := ''O) := {
+		echo := {
+			type_field := 8,
+			code := 0,
+			checksum := '0000'O,
+			identifier := '0345'O,
+			sequence_number := '0001'O,
+			data := data
+		}
+	}
+
+	/* template for receiving/matching an ICMPv4 echo request */
+	template (present) PDU_ICMP tr_ICMPv4_ERQ := {
+		echo := {
+			type_field := 8,
+			code := 0,
+			checksum := ?,
+			identifier := ?,
+			sequence_number := ?,
+			data := ?
+		}
+	}
+
+	/* template for receiving/matching an ICMPv4 echo reply */
+	template (present) PDU_ICMP tr_ICMPv4_ERP(template octetstring data := *) := {
+		echo_reply := {
+			type_field := 0,
+			code := 0,
+			checksum := ?,
+			identifier := ?,
+			sequence_number := ?,
+			data := data
+		}
+	}
+
+	/* template for receiving/matching an ICMPv6 Destination Unreachable  */
+	template (present) PDU_ICMP tr_ICMPv4_DU := {
+		destination_unreachable := {
+			type_field := 1,
+			code := ?,
+			checksum := ?,
+			unused := ?,
+			original_ip_msg  := ?
+		}
+	}
+
+	/* template to construct IPv4_packet from input arguments, ready for use in f_IPv4_enc() */
+	template (value) IPv4_packet ts_IP4(OCT4 srcaddr, OCT4 dstaddr, LIN1 proto, LIN2_BO_LAST tlen, octetstring payload) := {
+		header := {
+			ver := 4,
+			hlen := 5,
+			tos := 0,
+			tlen := tlen,
+			id := 35902,
+			res := '0'B,
+			dfrag := '1'B,
+			mfrag := '0'B,
+			foffset := 0,
+			ttl := 64,
+			proto := proto,
+			cksum := 0,
+			srcaddr := srcaddr,
+			dstaddr := dstaddr
+		},
+		ext_headers := omit,
+		payload := payload
+	}
+
+	/* Send an ICMPv4 echo msg through GTP given pdp ctx, and ip src and dst addr */
+	function f_gen_icmpv4_echo(OCT4 saddr, OCT4 daddr, octetstring pl := ''O) return octetstring {
+		var octetstring tmp := f_enc_PDU_ICMP(valueof(ts_ICMPv4_ERQ(pl)));
+		var IPv4_packet ip4 := valueof(ts_IP4(saddr, daddr, 1, 50, tmp));
+		var octetstring data := f_IPv4_enc(ip4);
+		var OCT2 cksum := f_IPv4_checksum(data);
+		data[10] := cksum[0];
+		data[11] := cksum[1];
+		return data;
+	}
+}
\ No newline at end of file
