diff --git a/src/ranap/RANAP_TracePropagationParameters.c b/src/ranap/RANAP_TracePropagationParameters.c
new file mode 100644
index 0000000..a09f7d0
--- /dev/null
+++ b/src/ranap/RANAP_TracePropagationParameters.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * 	found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include "RANAP_TracePropagationParameters.h"
+
+static asn_TYPE_member_t asn_MBR_RANAP_TracePropagationParameters_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_TracePropagationParameters, traceRecordingSessionReference),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_TraceRecordingSessionReference,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"traceRecordingSessionReference"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_TracePropagationParameters, traceDepth),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_TraceDepth,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"traceDepth"
+		},
+	{ ATF_POINTER, 2, offsetof(struct RANAP_TracePropagationParameters, listOfInterfacesToTrace),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_ListOfInterfacesToTrace,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"listOfInterfacesToTrace"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANAP_TracePropagationParameters, iE_Extensions),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_IE_Extensions,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iE-Extensions"
+		},
+};
+static const int asn_MAP_RANAP_TracePropagationParameters_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TracePropagationParameters_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TracePropagationParameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* traceRecordingSessionReference */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* traceDepth */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* listOfInterfacesToTrace */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TracePropagationParameters_specs_1 = {
+	sizeof(struct RANAP_TracePropagationParameters),
+	offsetof(struct RANAP_TracePropagationParameters, _asn_ctx),
+	asn_MAP_RANAP_TracePropagationParameters_tag2el_1,
+	4,	/* Count of tags in the map */
+	asn_MAP_RANAP_TracePropagationParameters_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	3,	/* Start extensions */
+	5	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TracePropagationParameters = {
+	"RANAP_TracePropagationParameters",
+	"RANAP_TracePropagationParameters",
+	SEQUENCE_free,
+	SEQUENCE_print,
+	SEQUENCE_constraint,
+	SEQUENCE_decode_ber,
+	SEQUENCE_encode_der,
+	SEQUENCE_decode_xer,
+	SEQUENCE_encode_xer,
+	SEQUENCE_decode_uper,
+	SEQUENCE_encode_uper,
+	SEQUENCE_decode_aper,
+	SEQUENCE_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RANAP_TracePropagationParameters_tags_1,
+	sizeof(asn_DEF_RANAP_TracePropagationParameters_tags_1)
+		/sizeof(asn_DEF_RANAP_TracePropagationParameters_tags_1[0]), /* 1 */
+	asn_DEF_RANAP_TracePropagationParameters_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANAP_TracePropagationParameters_tags_1)
+		/sizeof(asn_DEF_RANAP_TracePropagationParameters_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RANAP_TracePropagationParameters_1,
+	4,	/* Elements count */
+	&asn_SPC_RANAP_TracePropagationParameters_specs_1	/* Additional specs */
+};
+
