diff --git a/src/ranap/RANAP_RAB-SetupOrModifiedItem.c b/src/ranap/RANAP_RAB-SetupOrModifiedItem.c
new file mode 100644
index 0000000..8904ab9
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupOrModifiedItem.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * 	found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include "RANAP_RAB-SetupOrModifiedItem.h"
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupOrModifiedItem_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupOrModifiedItem, rAB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_RAB_ID,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"rAB-ID"
+		},
+	{ ATF_POINTER, 4, offsetof(struct RANAP_RAB_SetupOrModifiedItem, transportLayerAddress),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_TransportLayerAddress,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"transportLayerAddress"
+		},
+	{ ATF_POINTER, 3, offsetof(struct RANAP_RAB_SetupOrModifiedItem, iuTransportAssociation),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANAP_IuTransportAssociation,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iuTransportAssociation"
+		},
+	{ ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupOrModifiedItem, dl_dataVolumes),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_DataVolumeList,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"dl-dataVolumes"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupOrModifiedItem, iE_Extensions),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_ProtocolExtensionContainer,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iE-Extensions"
+		},
+};
+static const int asn_MAP_RANAP_RAB_SetupOrModifiedItem_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupOrModifiedItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* iuTransportAssociation */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dl-dataVolumes */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupOrModifiedItem_specs_1 = {
+	sizeof(struct RANAP_RAB_SetupOrModifiedItem),
+	offsetof(struct RANAP_RAB_SetupOrModifiedItem, _asn_ctx),
+	asn_MAP_RANAP_RAB_SetupOrModifiedItem_tag2el_1,
+	5,	/* Count of tags in the map */
+	asn_MAP_RANAP_RAB_SetupOrModifiedItem_oms_1,	/* Optional members */
+	4, 0,	/* Root/Additions */
+	4,	/* Start extensions */
+	6	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifiedItem = {
+	"RANAP_RAB-SetupOrModifiedItem",
+	"RANAP_RAB-SetupOrModifiedItem",
+	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_SetupOrModifiedItem_tags_1,
+	sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1)
+		/sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1[0]), /* 1 */
+	asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1)
+		/sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RANAP_RAB_SetupOrModifiedItem_1,
+	5,	/* Elements count */
+	&asn_SPC_RANAP_RAB_SetupOrModifiedItem_specs_1	/* Additional specs */
+};
+
