diff --git a/src/ranap/RANAP_RAB-Parameters.c b/src/ranap/RANAP_RAB-Parameters.c
new file mode 100644
index 0000000..1739ce2
--- /dev/null
+++ b/src/ranap/RANAP_RAB-Parameters.c
@@ -0,0 +1,183 @@
+/*
+ * 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_RAB-Parameters.h"
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_Parameters_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, trafficClass),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_TrafficClass,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"trafficClass"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, rAB_AsymmetryIndicator),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_RAB_AsymmetryIndicator,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"rAB-AsymmetryIndicator"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, maxBitrate),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_RAB_Parameter_MaxBitrateList,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"maxBitrate"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANAP_RAB_Parameters, guaranteedBitRate),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"guaranteedBitRate"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, deliveryOrder),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_DeliveryOrder,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"deliveryOrder"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, maxSDU_Size),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_MaxSDU_Size,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"maxSDU-Size"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, sDU_Parameters),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_SDU_Parameters,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"sDU-Parameters"
+		},
+	{ ATF_POINTER, 6, offsetof(struct RANAP_RAB_Parameters, transferDelay),
+		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_TransferDelay,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"transferDelay"
+		},
+	{ ATF_POINTER, 5, offsetof(struct RANAP_RAB_Parameters, trafficHandlingPriority),
+		(ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_TrafficHandlingPriority,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"trafficHandlingPriority"
+		},
+	{ ATF_POINTER, 4, offsetof(struct RANAP_RAB_Parameters, allocationOrRetentionPriority),
+		(ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_AllocationOrRetentionPriority,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"allocationOrRetentionPriority"
+		},
+	{ ATF_POINTER, 3, offsetof(struct RANAP_RAB_Parameters, sourceStatisticsDescriptor),
+		(ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_SourceStatisticsDescriptor,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"sourceStatisticsDescriptor"
+		},
+	{ ATF_POINTER, 2, offsetof(struct RANAP_RAB_Parameters, relocationRequirement),
+		(ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_RelocationRequirement,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"relocationRequirement"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANAP_RAB_Parameters, iE_Extensions),
+		(ASN_TAG_CLASS_CONTEXT | (12 << 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_RAB_Parameters_oms_1[] = { 3, 7, 8, 9, 10, 11, 12 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_Parameters_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_Parameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* trafficClass */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAB-AsymmetryIndicator */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxBitrate */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* guaranteedBitRate */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* deliveryOrder */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* maxSDU-Size */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sDU-Parameters */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* transferDelay */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* trafficHandlingPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* allocationOrRetentionPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* sourceStatisticsDescriptor */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* relocationRequirement */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_Parameters_specs_1 = {
+	sizeof(struct RANAP_RAB_Parameters),
+	offsetof(struct RANAP_RAB_Parameters, _asn_ctx),
+	asn_MAP_RANAP_RAB_Parameters_tag2el_1,
+	13,	/* Count of tags in the map */
+	asn_MAP_RANAP_RAB_Parameters_oms_1,	/* Optional members */
+	7, 0,	/* Root/Additions */
+	12,	/* Start extensions */
+	14	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameters = {
+	"RANAP_RAB-Parameters",
+	"RANAP_RAB-Parameters",
+	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_RAB_Parameters_tags_1,
+	sizeof(asn_DEF_RANAP_RAB_Parameters_tags_1)
+		/sizeof(asn_DEF_RANAP_RAB_Parameters_tags_1[0]), /* 1 */
+	asn_DEF_RANAP_RAB_Parameters_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANAP_RAB_Parameters_tags_1)
+		/sizeof(asn_DEF_RANAP_RAB_Parameters_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RANAP_RAB_Parameters_1,
+	13,	/* Elements count */
+	&asn_SPC_RANAP_RAB_Parameters_specs_1	/* Additional specs */
+};
+
