add asn1c generated RUA c+header files
diff --git a/src/rua/Makefile.local b/src/rua/Makefile
similarity index 86%
rename from src/rua/Makefile.local
rename to src/rua/Makefile
index 8ae65f4..c8e3471 100644
--- a/src/rua/Makefile.local
+++ b/src/rua/Makefile
@@ -78,7 +78,7 @@
 
 # Remove the lines below to convert it into a pure .am file
 CFLAGS += -I. `pkg-config --cflags libasn1c`
-OBJS=${ASN_MODULE_SOURCES:.c=.o} ${ASN_CONVERTER_SOURCES:.c=.o}
+OBJS=${ASN_MODULE_SOURCES:.c=.o}
 
 all: libosmo-asn1-rua.a
 
@@ -95,8 +95,13 @@
 	rm -f libosmo-asn1-rua.a
 	rm -f $(OBJS)
 
+clean-srcs:
+	@rm -f *.c *.h Makefile.am.sample
+
 regen: regenerate-from-asn1-source
 
-regenerate-from-asn1-source:
+regenerate-from-asn1-source: clean clean-srcs
 	ASN1C_PREFIX="RUA_" asn1c -gen-PER ../../asn1/rua/RUA-CommonDataTypes.asn ../../asn1/rua/RUA-Constants.asn ../../asn1/rua/RUA-IEs.asn ../../asn1/rua/RUA-PDU.asn
+	# remove the local copy of the runtime code
+	@rm ANY.* BOOLEAN.* INTEGER.* NativeEnumerated.* NativeInteger.* OBJECT_IDENTIFIER.* asn_* OCTET_STRING.* converter-sample.c per_* xer_* constr* der_* ber_* BIT_STRING.*
 
diff --git a/src/rua/RUA_Ansi-41-IDNNS.c b/src/rua/RUA_Ansi-41-IDNNS.c
new file mode 100644
index 0000000..07388ef
--- /dev/null
+++ b/src/rua/RUA_Ansi-41-IDNNS.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_Ansi-41-IDNNS.h"
+
+int
+RUA_Ansi_41_IDNNS_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 14l)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_BIT_STRING.free_struct;
+	td->print_struct   = asn_DEF_BIT_STRING.print_struct;
+	td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+	td->ber_decoder    = asn_DEF_BIT_STRING.ber_decoder;
+	td->der_encoder    = asn_DEF_BIT_STRING.der_encoder;
+	td->xer_decoder    = asn_DEF_BIT_STRING.xer_decoder;
+	td->xer_encoder    = asn_DEF_BIT_STRING.xer_encoder;
+	td->uper_decoder   = asn_DEF_BIT_STRING.uper_decoder;
+	td->uper_encoder   = asn_DEF_BIT_STRING.uper_encoder;
+	td->aper_decoder   = asn_DEF_BIT_STRING.aper_decoder;
+	td->aper_encoder   = asn_DEF_BIT_STRING.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+	td->elements       = asn_DEF_BIT_STRING.elements;
+	td->elements_count = asn_DEF_BIT_STRING.elements_count;
+	td->specifics      = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RUA_Ansi_41_IDNNS_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Ansi_41_IDNNS_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Ansi_41_IDNNS_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Ansi_41_IDNNS_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Ansi_41_IDNNS_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Ansi_41_IDNNS_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Ansi_41_IDNNS_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Ansi_41_IDNNS_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Ansi_41_IDNNS_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Ansi_41_IDNNS_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Ansi_41_IDNNS_constr_1 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  14l,  14l }	/* (SIZE(14..14)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Ansi_41_IDNNS_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Ansi_41_IDNNS = {
+	"RUA_Ansi-41-IDNNS",
+	"RUA_Ansi-41-IDNNS",
+	RUA_Ansi_41_IDNNS_free,
+	RUA_Ansi_41_IDNNS_print,
+	RUA_Ansi_41_IDNNS_constraint,
+	RUA_Ansi_41_IDNNS_decode_ber,
+	RUA_Ansi_41_IDNNS_encode_der,
+	RUA_Ansi_41_IDNNS_decode_xer,
+	RUA_Ansi_41_IDNNS_encode_xer,
+	RUA_Ansi_41_IDNNS_decode_uper,
+	RUA_Ansi_41_IDNNS_encode_uper,
+	RUA_Ansi_41_IDNNS_decode_aper,
+	RUA_Ansi_41_IDNNS_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_Ansi_41_IDNNS_tags_1,
+	sizeof(asn_DEF_RUA_Ansi_41_IDNNS_tags_1)
+		/sizeof(asn_DEF_RUA_Ansi_41_IDNNS_tags_1[0]), /* 1 */
+	asn_DEF_RUA_Ansi_41_IDNNS_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_Ansi_41_IDNNS_tags_1)
+		/sizeof(asn_DEF_RUA_Ansi_41_IDNNS_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_Ansi_41_IDNNS_constr_1,
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/src/rua/RUA_Ansi-41-IDNNS.h b/src/rua/RUA_Ansi-41-IDNNS.h
new file mode 100644
index 0000000..eb0dd6b
--- /dev/null
+++ b/src/rua/RUA_Ansi-41-IDNNS.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_Ansi_41_IDNNS_H_
+#define	_RUA_Ansi_41_IDNNS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_Ansi-41-IDNNS */
+typedef BIT_STRING_t	 RUA_Ansi_41_IDNNS_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Ansi_41_IDNNS;
+asn_struct_free_f RUA_Ansi_41_IDNNS_free;
+asn_struct_print_f RUA_Ansi_41_IDNNS_print;
+asn_constr_check_f RUA_Ansi_41_IDNNS_constraint;
+ber_type_decoder_f RUA_Ansi_41_IDNNS_decode_ber;
+der_type_encoder_f RUA_Ansi_41_IDNNS_encode_der;
+xer_type_decoder_f RUA_Ansi_41_IDNNS_decode_xer;
+xer_type_encoder_f RUA_Ansi_41_IDNNS_encode_xer;
+per_type_decoder_f RUA_Ansi_41_IDNNS_decode_uper;
+per_type_encoder_f RUA_Ansi_41_IDNNS_encode_uper;
+per_type_decoder_f RUA_Ansi_41_IDNNS_decode_aper;
+per_type_encoder_f RUA_Ansi_41_IDNNS_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_Ansi_41_IDNNS_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_CN-DomainIndicator.c b/src/rua/RUA_CN-DomainIndicator.c
new file mode 100644
index 0000000..d166460
--- /dev/null
+++ b/src/rua/RUA_CN-DomainIndicator.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_CN-DomainIndicator.h"
+
+int
+RUA_CN_DomainIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_CN_DomainIndicator_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CN_DomainIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CN_DomainIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CN_DomainIndicator_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CN_DomainIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CN_DomainIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CN_DomainIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CN_DomainIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CN_DomainIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CN_DomainIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CN_DomainIndicator_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 1,  1,  0l,  1l }	/* (0..1) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CN_DomainIndicator_value2enum_1[] = {
+	{ 0,	9,	"cs-domain" },
+	{ 1,	9,	"ps-domain" }
+};
+static const unsigned int asn_MAP_RUA_CN_DomainIndicator_enum2value_1[] = {
+	0,	/* cs-domain(0) */
+	1	/* ps-domain(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CN_DomainIndicator_specs_1 = {
+	asn_MAP_RUA_CN_DomainIndicator_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_CN_DomainIndicator_enum2value_1,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	0,	/* Enumeration is not extensible */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CN_DomainIndicator_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CN_DomainIndicator = {
+	"RUA_CN-DomainIndicator",
+	"RUA_CN-DomainIndicator",
+	RUA_CN_DomainIndicator_free,
+	RUA_CN_DomainIndicator_print,
+	RUA_CN_DomainIndicator_constraint,
+	RUA_CN_DomainIndicator_decode_ber,
+	RUA_CN_DomainIndicator_encode_der,
+	RUA_CN_DomainIndicator_decode_xer,
+	RUA_CN_DomainIndicator_encode_xer,
+	RUA_CN_DomainIndicator_decode_uper,
+	RUA_CN_DomainIndicator_encode_uper,
+	RUA_CN_DomainIndicator_decode_aper,
+	RUA_CN_DomainIndicator_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_CN_DomainIndicator_tags_1,
+	sizeof(asn_DEF_RUA_CN_DomainIndicator_tags_1)
+		/sizeof(asn_DEF_RUA_CN_DomainIndicator_tags_1[0]), /* 1 */
+	asn_DEF_RUA_CN_DomainIndicator_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_CN_DomainIndicator_tags_1)
+		/sizeof(asn_DEF_RUA_CN_DomainIndicator_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_CN_DomainIndicator_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_CN_DomainIndicator_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_CN-DomainIndicator.h b/src/rua/RUA_CN-DomainIndicator.h
new file mode 100644
index 0000000..171a049
--- /dev/null
+++ b/src/rua/RUA_CN-DomainIndicator.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_CN_DomainIndicator_H_
+#define	_RUA_CN_DomainIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CN_DomainIndicator {
+	RUA_CN_DomainIndicator_cs_domain	= 0,
+	RUA_CN_DomainIndicator_ps_domain	= 1
+} e_RUA_CN_DomainIndicator;
+
+/* RUA_CN-DomainIndicator */
+typedef long	 RUA_CN_DomainIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CN_DomainIndicator;
+asn_struct_free_f RUA_CN_DomainIndicator_free;
+asn_struct_print_f RUA_CN_DomainIndicator_print;
+asn_constr_check_f RUA_CN_DomainIndicator_constraint;
+ber_type_decoder_f RUA_CN_DomainIndicator_decode_ber;
+der_type_encoder_f RUA_CN_DomainIndicator_encode_der;
+xer_type_decoder_f RUA_CN_DomainIndicator_decode_xer;
+xer_type_encoder_f RUA_CN_DomainIndicator_encode_xer;
+per_type_decoder_f RUA_CN_DomainIndicator_decode_uper;
+per_type_encoder_f RUA_CN_DomainIndicator_encode_uper;
+per_type_decoder_f RUA_CN_DomainIndicator_decode_aper;
+per_type_encoder_f RUA_CN_DomainIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_CN_DomainIndicator_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_CSGMembershipStatus.c b/src/rua/RUA_CSGMembershipStatus.c
new file mode 100644
index 0000000..85c30bf
--- /dev/null
+++ b/src/rua/RUA_CSGMembershipStatus.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_CSGMembershipStatus.h"
+
+int
+RUA_CSGMembershipStatus_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_CSGMembershipStatus_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CSGMembershipStatus_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CSGMembershipStatus_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CSGMembershipStatus_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CSGMembershipStatus_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CSGMembershipStatus_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CSGMembershipStatus_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CSGMembershipStatus_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CSGMembershipStatus_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CSGMembershipStatus_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CSGMembershipStatus_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0l,  1l }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CSGMembershipStatus_value2enum_1[] = {
+	{ 0,	6,	"member" },
+	{ 1,	10,	"non-member" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CSGMembershipStatus_enum2value_1[] = {
+	0,	/* member(0) */
+	1	/* non-member(1) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CSGMembershipStatus_specs_1 = {
+	asn_MAP_RUA_CSGMembershipStatus_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_CSGMembershipStatus_enum2value_1,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CSGMembershipStatus_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CSGMembershipStatus = {
+	"RUA_CSGMembershipStatus",
+	"RUA_CSGMembershipStatus",
+	RUA_CSGMembershipStatus_free,
+	RUA_CSGMembershipStatus_print,
+	RUA_CSGMembershipStatus_constraint,
+	RUA_CSGMembershipStatus_decode_ber,
+	RUA_CSGMembershipStatus_encode_der,
+	RUA_CSGMembershipStatus_decode_xer,
+	RUA_CSGMembershipStatus_encode_xer,
+	RUA_CSGMembershipStatus_decode_uper,
+	RUA_CSGMembershipStatus_encode_uper,
+	RUA_CSGMembershipStatus_decode_aper,
+	RUA_CSGMembershipStatus_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_CSGMembershipStatus_tags_1,
+	sizeof(asn_DEF_RUA_CSGMembershipStatus_tags_1)
+		/sizeof(asn_DEF_RUA_CSGMembershipStatus_tags_1[0]), /* 1 */
+	asn_DEF_RUA_CSGMembershipStatus_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_CSGMembershipStatus_tags_1)
+		/sizeof(asn_DEF_RUA_CSGMembershipStatus_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_CSGMembershipStatus_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_CSGMembershipStatus_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_CSGMembershipStatus.h b/src/rua/RUA_CSGMembershipStatus.h
new file mode 100644
index 0000000..2c27609
--- /dev/null
+++ b/src/rua/RUA_CSGMembershipStatus.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_CSGMembershipStatus_H_
+#define	_RUA_CSGMembershipStatus_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CSGMembershipStatus {
+	RUA_CSGMembershipStatus_member	= 0,
+	RUA_CSGMembershipStatus_non_member	= 1
+	/*
+	 * Enumeration is extensible
+	 */
+} e_RUA_CSGMembershipStatus;
+
+/* RUA_CSGMembershipStatus */
+typedef long	 RUA_CSGMembershipStatus_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CSGMembershipStatus;
+asn_struct_free_f RUA_CSGMembershipStatus_free;
+asn_struct_print_f RUA_CSGMembershipStatus_print;
+asn_constr_check_f RUA_CSGMembershipStatus_constraint;
+ber_type_decoder_f RUA_CSGMembershipStatus_decode_ber;
+der_type_encoder_f RUA_CSGMembershipStatus_encode_der;
+xer_type_decoder_f RUA_CSGMembershipStatus_decode_xer;
+xer_type_encoder_f RUA_CSGMembershipStatus_encode_xer;
+per_type_decoder_f RUA_CSGMembershipStatus_decode_uper;
+per_type_encoder_f RUA_CSGMembershipStatus_encode_uper;
+per_type_decoder_f RUA_CSGMembershipStatus_decode_aper;
+per_type_encoder_f RUA_CSGMembershipStatus_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_CSGMembershipStatus_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_Cause.c b/src/rua/RUA_Cause.c
new file mode 100644
index 0000000..644762a
--- /dev/null
+++ b/src/rua/RUA_Cause.c
@@ -0,0 +1,92 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_Cause.h"
+
+static asn_per_constraints_t asn_PER_type_RUA_Cause_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0l,  3l }	/* (0..3,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RUA_Cause_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_Cause, choice.radioNetwork),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_CauseRadioNetwork,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"radioNetwork"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_Cause, choice.transport),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_CauseTransport,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"transport"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_Cause, choice.protocol),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_CauseProtocol,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"protocol"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_Cause, choice.misc),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_CauseMisc,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"misc"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_Cause_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* misc */
+};
+static asn_CHOICE_specifics_t asn_SPC_RUA_Cause_specs_1 = {
+	sizeof(struct RUA_Cause),
+	offsetof(struct RUA_Cause, _asn_ctx),
+	offsetof(struct RUA_Cause, present),
+	sizeof(((struct RUA_Cause *)0)->present),
+	asn_MAP_RUA_Cause_tag2el_1,
+	4,	/* Count of tags in the map */
+	0,
+	4	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Cause = {
+	"RUA_Cause",
+	"RUA_Cause",
+	CHOICE_free,
+	CHOICE_print,
+	CHOICE_constraint,
+	CHOICE_decode_ber,
+	CHOICE_encode_der,
+	CHOICE_decode_xer,
+	CHOICE_encode_xer,
+	CHOICE_decode_uper,
+	CHOICE_encode_uper,
+	CHOICE_decode_aper,
+	CHOICE_encode_aper,
+	CHOICE_outmost_tag,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	&asn_PER_type_RUA_Cause_constr_1,
+	asn_MBR_RUA_Cause_1,
+	4,	/* Elements count */
+	&asn_SPC_RUA_Cause_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_Cause.h b/src/rua/RUA_Cause.h
new file mode 100644
index 0000000..3240023
--- /dev/null
+++ b/src/rua/RUA_Cause.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_Cause_H_
+#define	_RUA_Cause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_CauseRadioNetwork.h"
+#include "RUA_CauseTransport.h"
+#include "RUA_CauseProtocol.h"
+#include "RUA_CauseMisc.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_Cause_PR {
+	RUA_Cause_PR_NOTHING,	/* No components present */
+	RUA_Cause_PR_radioNetwork,
+	RUA_Cause_PR_transport,
+	RUA_Cause_PR_protocol,
+	RUA_Cause_PR_misc,
+	/* Extensions may appear below */
+	
+} RUA_Cause_PR;
+
+/* RUA_Cause */
+typedef struct RUA_Cause {
+	RUA_Cause_PR present;
+	union RUA_Cause_u {
+		RUA_CauseRadioNetwork_t	 radioNetwork;
+		RUA_CauseTransport_t	 transport;
+		RUA_CauseProtocol_t	 protocol;
+		RUA_CauseMisc_t	 misc;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_Cause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Cause;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_Cause_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_CauseMisc.c b/src/rua/RUA_CauseMisc.c
new file mode 100644
index 0000000..9b29b95
--- /dev/null
+++ b/src/rua/RUA_CauseMisc.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_CauseMisc.h"
+
+int
+RUA_CauseMisc_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CauseMisc_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_CauseMisc_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CauseMisc_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseMisc_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CauseMisc_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseMisc_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CauseMisc_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseMisc_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CauseMisc_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CauseMisc_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CauseMisc_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CauseMisc_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0l,  3l }	/* (0..3,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CauseMisc_value2enum_1[] = {
+	{ 0,	19,	"processing-overload" },
+	{ 1,	16,	"hardware-failure" },
+	{ 2,	20,	"o-and-m-intervention" },
+	{ 3,	11,	"unspecified" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CauseMisc_enum2value_1[] = {
+	1,	/* hardware-failure(1) */
+	2,	/* o-and-m-intervention(2) */
+	0,	/* processing-overload(0) */
+	3	/* unspecified(3) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CauseMisc_specs_1 = {
+	asn_MAP_RUA_CauseMisc_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_CauseMisc_enum2value_1,	/* N => "tag"; sorted by N */
+	4,	/* Number of elements in the maps */
+	5,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CauseMisc_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CauseMisc = {
+	"RUA_CauseMisc",
+	"RUA_CauseMisc",
+	RUA_CauseMisc_free,
+	RUA_CauseMisc_print,
+	RUA_CauseMisc_constraint,
+	RUA_CauseMisc_decode_ber,
+	RUA_CauseMisc_encode_der,
+	RUA_CauseMisc_decode_xer,
+	RUA_CauseMisc_encode_xer,
+	RUA_CauseMisc_decode_uper,
+	RUA_CauseMisc_encode_uper,
+	RUA_CauseMisc_decode_aper,
+	RUA_CauseMisc_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_CauseMisc_tags_1,
+	sizeof(asn_DEF_RUA_CauseMisc_tags_1)
+		/sizeof(asn_DEF_RUA_CauseMisc_tags_1[0]), /* 1 */
+	asn_DEF_RUA_CauseMisc_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_CauseMisc_tags_1)
+		/sizeof(asn_DEF_RUA_CauseMisc_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_CauseMisc_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_CauseMisc_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_CauseMisc.h b/src/rua/RUA_CauseMisc.h
new file mode 100644
index 0000000..d21dc99
--- /dev/null
+++ b/src/rua/RUA_CauseMisc.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_CauseMisc_H_
+#define	_RUA_CauseMisc_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CauseMisc {
+	RUA_CauseMisc_processing_overload	= 0,
+	RUA_CauseMisc_hardware_failure	= 1,
+	RUA_CauseMisc_o_and_m_intervention	= 2,
+	RUA_CauseMisc_unspecified	= 3
+	/*
+	 * Enumeration is extensible
+	 */
+} e_RUA_CauseMisc;
+
+/* RUA_CauseMisc */
+typedef long	 RUA_CauseMisc_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CauseMisc;
+asn_struct_free_f RUA_CauseMisc_free;
+asn_struct_print_f RUA_CauseMisc_print;
+asn_constr_check_f RUA_CauseMisc_constraint;
+ber_type_decoder_f RUA_CauseMisc_decode_ber;
+der_type_encoder_f RUA_CauseMisc_encode_der;
+xer_type_decoder_f RUA_CauseMisc_decode_xer;
+xer_type_encoder_f RUA_CauseMisc_encode_xer;
+per_type_decoder_f RUA_CauseMisc_decode_uper;
+per_type_encoder_f RUA_CauseMisc_encode_uper;
+per_type_decoder_f RUA_CauseMisc_decode_aper;
+per_type_encoder_f RUA_CauseMisc_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_CauseMisc_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_CauseProtocol.c b/src/rua/RUA_CauseProtocol.c
new file mode 100644
index 0000000..53f60fe
--- /dev/null
+++ b/src/rua/RUA_CauseProtocol.c
@@ -0,0 +1,177 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_CauseProtocol.h"
+
+int
+RUA_CauseProtocol_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CauseProtocol_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_CauseProtocol_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CauseProtocol_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseProtocol_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CauseProtocol_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseProtocol_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CauseProtocol_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseProtocol_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CauseProtocol_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CauseProtocol_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CauseProtocol_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CauseProtocol_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0l,  6l }	/* (0..6,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CauseProtocol_value2enum_1[] = {
+	{ 0,	21,	"transfer-syntax-error" },
+	{ 1,	28,	"abstract-syntax-error-reject" },
+	{ 2,	39,	"abstract-syntax-error-ignore-and-notify" },
+	{ 3,	42,	"message-not-compatible-with-receiver-state" },
+	{ 4,	14,	"semantic-error" },
+	{ 5,	11,	"unspecified" },
+	{ 6,	49,	"abstract-syntax-error-falsely-constructed-message" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CauseProtocol_enum2value_1[] = {
+	6,	/* abstract-syntax-error-falsely-constructed-message(6) */
+	2,	/* abstract-syntax-error-ignore-and-notify(2) */
+	1,	/* abstract-syntax-error-reject(1) */
+	3,	/* message-not-compatible-with-receiver-state(3) */
+	4,	/* semantic-error(4) */
+	0,	/* transfer-syntax-error(0) */
+	5	/* unspecified(5) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CauseProtocol_specs_1 = {
+	asn_MAP_RUA_CauseProtocol_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_CauseProtocol_enum2value_1,	/* N => "tag"; sorted by N */
+	7,	/* Number of elements in the maps */
+	8,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CauseProtocol_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CauseProtocol = {
+	"RUA_CauseProtocol",
+	"RUA_CauseProtocol",
+	RUA_CauseProtocol_free,
+	RUA_CauseProtocol_print,
+	RUA_CauseProtocol_constraint,
+	RUA_CauseProtocol_decode_ber,
+	RUA_CauseProtocol_encode_der,
+	RUA_CauseProtocol_decode_xer,
+	RUA_CauseProtocol_encode_xer,
+	RUA_CauseProtocol_decode_uper,
+	RUA_CauseProtocol_encode_uper,
+	RUA_CauseProtocol_decode_aper,
+	RUA_CauseProtocol_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_CauseProtocol_tags_1,
+	sizeof(asn_DEF_RUA_CauseProtocol_tags_1)
+		/sizeof(asn_DEF_RUA_CauseProtocol_tags_1[0]), /* 1 */
+	asn_DEF_RUA_CauseProtocol_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_CauseProtocol_tags_1)
+		/sizeof(asn_DEF_RUA_CauseProtocol_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_CauseProtocol_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_CauseProtocol_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_CauseProtocol.h b/src/rua/RUA_CauseProtocol.h
new file mode 100644
index 0000000..a1d8f11
--- /dev/null
+++ b/src/rua/RUA_CauseProtocol.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_CauseProtocol_H_
+#define	_RUA_CauseProtocol_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CauseProtocol {
+	RUA_CauseProtocol_transfer_syntax_error	= 0,
+	RUA_CauseProtocol_abstract_syntax_error_reject	= 1,
+	RUA_CauseProtocol_abstract_syntax_error_ignore_and_notify	= 2,
+	RUA_CauseProtocol_message_not_compatible_with_receiver_state	= 3,
+	RUA_CauseProtocol_semantic_error	= 4,
+	RUA_CauseProtocol_unspecified	= 5,
+	RUA_CauseProtocol_abstract_syntax_error_falsely_constructed_message	= 6
+	/*
+	 * Enumeration is extensible
+	 */
+} e_RUA_CauseProtocol;
+
+/* RUA_CauseProtocol */
+typedef long	 RUA_CauseProtocol_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CauseProtocol;
+asn_struct_free_f RUA_CauseProtocol_free;
+asn_struct_print_f RUA_CauseProtocol_print;
+asn_constr_check_f RUA_CauseProtocol_constraint;
+ber_type_decoder_f RUA_CauseProtocol_decode_ber;
+der_type_encoder_f RUA_CauseProtocol_encode_der;
+xer_type_decoder_f RUA_CauseProtocol_decode_xer;
+xer_type_encoder_f RUA_CauseProtocol_encode_xer;
+per_type_decoder_f RUA_CauseProtocol_decode_uper;
+per_type_encoder_f RUA_CauseProtocol_encode_uper;
+per_type_decoder_f RUA_CauseProtocol_decode_aper;
+per_type_encoder_f RUA_CauseProtocol_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_CauseProtocol_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_CauseRadioNetwork.c b/src/rua/RUA_CauseRadioNetwork.c
new file mode 100644
index 0000000..4655cde
--- /dev/null
+++ b/src/rua/RUA_CauseRadioNetwork.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_CauseRadioNetwork.h"
+
+int
+RUA_CauseRadioNetwork_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_CauseRadioNetwork_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CauseRadioNetwork_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseRadioNetwork_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CauseRadioNetwork_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseRadioNetwork_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CauseRadioNetwork_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseRadioNetwork_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CauseRadioNetwork_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CauseRadioNetwork_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CauseRadioNetwork_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CauseRadioNetwork_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0l,  3l }	/* (0..3,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CauseRadioNetwork_value2enum_1[] = {
+	{ 0,	6,	"normal" },
+	{ 1,	14,	"connect-failed" },
+	{ 2,	15,	"network-release" },
+	{ 3,	11,	"unspecified" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CauseRadioNetwork_enum2value_1[] = {
+	1,	/* connect-failed(1) */
+	2,	/* network-release(2) */
+	0,	/* normal(0) */
+	3	/* unspecified(3) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CauseRadioNetwork_specs_1 = {
+	asn_MAP_RUA_CauseRadioNetwork_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_CauseRadioNetwork_enum2value_1,	/* N => "tag"; sorted by N */
+	4,	/* Number of elements in the maps */
+	5,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CauseRadioNetwork_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CauseRadioNetwork = {
+	"RUA_CauseRadioNetwork",
+	"RUA_CauseRadioNetwork",
+	RUA_CauseRadioNetwork_free,
+	RUA_CauseRadioNetwork_print,
+	RUA_CauseRadioNetwork_constraint,
+	RUA_CauseRadioNetwork_decode_ber,
+	RUA_CauseRadioNetwork_encode_der,
+	RUA_CauseRadioNetwork_decode_xer,
+	RUA_CauseRadioNetwork_encode_xer,
+	RUA_CauseRadioNetwork_decode_uper,
+	RUA_CauseRadioNetwork_encode_uper,
+	RUA_CauseRadioNetwork_decode_aper,
+	RUA_CauseRadioNetwork_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_CauseRadioNetwork_tags_1,
+	sizeof(asn_DEF_RUA_CauseRadioNetwork_tags_1)
+		/sizeof(asn_DEF_RUA_CauseRadioNetwork_tags_1[0]), /* 1 */
+	asn_DEF_RUA_CauseRadioNetwork_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_CauseRadioNetwork_tags_1)
+		/sizeof(asn_DEF_RUA_CauseRadioNetwork_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_CauseRadioNetwork_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_CauseRadioNetwork_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_CauseRadioNetwork.h b/src/rua/RUA_CauseRadioNetwork.h
new file mode 100644
index 0000000..d267b69
--- /dev/null
+++ b/src/rua/RUA_CauseRadioNetwork.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_CauseRadioNetwork_H_
+#define	_RUA_CauseRadioNetwork_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CauseRadioNetwork {
+	RUA_CauseRadioNetwork_normal	= 0,
+	RUA_CauseRadioNetwork_connect_failed	= 1,
+	RUA_CauseRadioNetwork_network_release	= 2,
+	RUA_CauseRadioNetwork_unspecified	= 3
+	/*
+	 * Enumeration is extensible
+	 */
+} e_RUA_CauseRadioNetwork;
+
+/* RUA_CauseRadioNetwork */
+typedef long	 RUA_CauseRadioNetwork_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CauseRadioNetwork;
+asn_struct_free_f RUA_CauseRadioNetwork_free;
+asn_struct_print_f RUA_CauseRadioNetwork_print;
+asn_constr_check_f RUA_CauseRadioNetwork_constraint;
+ber_type_decoder_f RUA_CauseRadioNetwork_decode_ber;
+der_type_encoder_f RUA_CauseRadioNetwork_encode_der;
+xer_type_decoder_f RUA_CauseRadioNetwork_decode_xer;
+xer_type_encoder_f RUA_CauseRadioNetwork_encode_xer;
+per_type_decoder_f RUA_CauseRadioNetwork_decode_uper;
+per_type_encoder_f RUA_CauseRadioNetwork_encode_uper;
+per_type_decoder_f RUA_CauseRadioNetwork_decode_aper;
+per_type_encoder_f RUA_CauseRadioNetwork_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_CauseRadioNetwork_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_CauseTransport.c b/src/rua/RUA_CauseTransport.c
new file mode 100644
index 0000000..2765461
--- /dev/null
+++ b/src/rua/RUA_CauseTransport.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_CauseTransport.h"
+
+int
+RUA_CauseTransport_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CauseTransport_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_CauseTransport_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CauseTransport_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseTransport_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CauseTransport_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseTransport_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CauseTransport_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseTransport_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CauseTransport_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CauseTransport_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CauseTransport_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CauseTransport_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0l,  1l }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CauseTransport_value2enum_1[] = {
+	{ 0,	30,	"transport-resource-unavailable" },
+	{ 1,	11,	"unspecified" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CauseTransport_enum2value_1[] = {
+	0,	/* transport-resource-unavailable(0) */
+	1	/* unspecified(1) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CauseTransport_specs_1 = {
+	asn_MAP_RUA_CauseTransport_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_CauseTransport_enum2value_1,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CauseTransport_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CauseTransport = {
+	"RUA_CauseTransport",
+	"RUA_CauseTransport",
+	RUA_CauseTransport_free,
+	RUA_CauseTransport_print,
+	RUA_CauseTransport_constraint,
+	RUA_CauseTransport_decode_ber,
+	RUA_CauseTransport_encode_der,
+	RUA_CauseTransport_decode_xer,
+	RUA_CauseTransport_encode_xer,
+	RUA_CauseTransport_decode_uper,
+	RUA_CauseTransport_encode_uper,
+	RUA_CauseTransport_decode_aper,
+	RUA_CauseTransport_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_CauseTransport_tags_1,
+	sizeof(asn_DEF_RUA_CauseTransport_tags_1)
+		/sizeof(asn_DEF_RUA_CauseTransport_tags_1[0]), /* 1 */
+	asn_DEF_RUA_CauseTransport_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_CauseTransport_tags_1)
+		/sizeof(asn_DEF_RUA_CauseTransport_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_CauseTransport_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_CauseTransport_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_CauseTransport.h b/src/rua/RUA_CauseTransport.h
new file mode 100644
index 0000000..62597a7
--- /dev/null
+++ b/src/rua/RUA_CauseTransport.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_CauseTransport_H_
+#define	_RUA_CauseTransport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CauseTransport {
+	RUA_CauseTransport_transport_resource_unavailable	= 0,
+	RUA_CauseTransport_unspecified	= 1
+	/*
+	 * Enumeration is extensible
+	 */
+} e_RUA_CauseTransport;
+
+/* RUA_CauseTransport */
+typedef long	 RUA_CauseTransport_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CauseTransport;
+asn_struct_free_f RUA_CauseTransport_free;
+asn_struct_print_f RUA_CauseTransport_print;
+asn_constr_check_f RUA_CauseTransport_constraint;
+ber_type_decoder_f RUA_CauseTransport_decode_ber;
+der_type_encoder_f RUA_CauseTransport_encode_der;
+xer_type_decoder_f RUA_CauseTransport_decode_xer;
+xer_type_encoder_f RUA_CauseTransport_encode_xer;
+per_type_decoder_f RUA_CauseTransport_decode_uper;
+per_type_encoder_f RUA_CauseTransport_encode_uper;
+per_type_decoder_f RUA_CauseTransport_decode_aper;
+per_type_encoder_f RUA_CauseTransport_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_CauseTransport_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_Connect.c b/src/rua/RUA_Connect.c
new file mode 100644
index 0000000..b80a86f
--- /dev/null
+++ b/src/rua/RUA_Connect.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_Connect.h"
+
+static int
+memb_connect_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 65535l)) {
+		/* Perform validation of the inner elements */
+		return td->check_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_per_constraints_t asn_PER_type_connect_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_connect_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_connect_ies_2[] = {
+	{ ATF_POINTER, 0, 0,
+		-1 /* Ambiguous tag (CHOICE?) */,
+		0,
+		&asn_DEF_RUA_IE,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_connect_ies_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_connect_ies_specs_2 = {
+	sizeof(struct connect_ies),
+	offsetof(struct connect_ies, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_connect_ies_2 = {
+	"connect-ies",
+	"connect-ies",
+	SEQUENCE_OF_free,
+	SEQUENCE_OF_print,
+	SEQUENCE_OF_constraint,
+	SEQUENCE_OF_decode_ber,
+	SEQUENCE_OF_encode_der,
+	SEQUENCE_OF_decode_xer,
+	SEQUENCE_OF_encode_xer,
+	SEQUENCE_OF_decode_uper,
+	SEQUENCE_OF_encode_uper,
+	SEQUENCE_OF_decode_aper,
+	SEQUENCE_OF_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_connect_ies_tags_2,
+	sizeof(asn_DEF_connect_ies_tags_2)
+		/sizeof(asn_DEF_connect_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_connect_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_connect_ies_tags_2)
+		/sizeof(asn_DEF_connect_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_connect_ies_constr_2,
+	asn_MBR_connect_ies_2,
+	1,	/* Single element */
+	&asn_SPC_connect_ies_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_Connect_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_Connect, connect_ies),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_connect_ies_2,
+		memb_connect_ies_constraint_1,
+		&asn_PER_memb_connect_ies_constr_2,
+		0,
+		"connect-ies"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Connect_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_Connect_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* connect-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_Connect_specs_1 = {
+	sizeof(struct RUA_Connect),
+	offsetof(struct RUA_Connect, _asn_ctx),
+	asn_MAP_RUA_Connect_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	0,	/* Start extensions */
+	2	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Connect = {
+	"RUA_Connect",
+	"RUA_Connect",
+	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_RUA_Connect_tags_1,
+	sizeof(asn_DEF_RUA_Connect_tags_1)
+		/sizeof(asn_DEF_RUA_Connect_tags_1[0]), /* 1 */
+	asn_DEF_RUA_Connect_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_Connect_tags_1)
+		/sizeof(asn_DEF_RUA_Connect_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_Connect_1,
+	1,	/* Elements count */
+	&asn_SPC_RUA_Connect_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_Connect.h b/src/rua/RUA_Connect.h
new file mode 100644
index 0000000..54197ff
--- /dev/null
+++ b/src/rua/RUA_Connect.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_Connect_H_
+#define	_RUA_Connect_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_IE.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_Connect */
+typedef struct RUA_Connect {
+	struct connect_ies {
+		A_SEQUENCE_OF(RUA_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} connect_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_Connect_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Connect;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_Connect_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_ConnectionlessTransfer.c b/src/rua/RUA_ConnectionlessTransfer.c
new file mode 100644
index 0000000..1e8b6ea
--- /dev/null
+++ b/src/rua/RUA_ConnectionlessTransfer.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_ConnectionlessTransfer.h"
+
+static int
+memb_connectionlessTransfer_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 65535l)) {
+		/* Perform validation of the inner elements */
+		return td->check_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_per_constraints_t asn_PER_type_connectionlessTransfer_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_connectionlessTransfer_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_connectionlessTransfer_ies_2[] = {
+	{ ATF_POINTER, 0, 0,
+		-1 /* Ambiguous tag (CHOICE?) */,
+		0,
+		&asn_DEF_RUA_IE,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_connectionlessTransfer_ies_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_connectionlessTransfer_ies_specs_2 = {
+	sizeof(struct connectionlessTransfer_ies),
+	offsetof(struct connectionlessTransfer_ies, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_connectionlessTransfer_ies_2 = {
+	"connectionlessTransfer-ies",
+	"connectionlessTransfer-ies",
+	SEQUENCE_OF_free,
+	SEQUENCE_OF_print,
+	SEQUENCE_OF_constraint,
+	SEQUENCE_OF_decode_ber,
+	SEQUENCE_OF_encode_der,
+	SEQUENCE_OF_decode_xer,
+	SEQUENCE_OF_encode_xer,
+	SEQUENCE_OF_decode_uper,
+	SEQUENCE_OF_encode_uper,
+	SEQUENCE_OF_decode_aper,
+	SEQUENCE_OF_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_connectionlessTransfer_ies_tags_2,
+	sizeof(asn_DEF_connectionlessTransfer_ies_tags_2)
+		/sizeof(asn_DEF_connectionlessTransfer_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_connectionlessTransfer_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_connectionlessTransfer_ies_tags_2)
+		/sizeof(asn_DEF_connectionlessTransfer_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_connectionlessTransfer_ies_constr_2,
+	asn_MBR_connectionlessTransfer_ies_2,
+	1,	/* Single element */
+	&asn_SPC_connectionlessTransfer_ies_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_ConnectionlessTransfer_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_ConnectionlessTransfer, connectionlessTransfer_ies),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_connectionlessTransfer_ies_2,
+		memb_connectionlessTransfer_ies_constraint_1,
+		&asn_PER_memb_connectionlessTransfer_ies_constr_2,
+		0,
+		"connectionlessTransfer-ies"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_ConnectionlessTransfer_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_ConnectionlessTransfer_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* connectionlessTransfer-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_ConnectionlessTransfer_specs_1 = {
+	sizeof(struct RUA_ConnectionlessTransfer),
+	offsetof(struct RUA_ConnectionlessTransfer, _asn_ctx),
+	asn_MAP_RUA_ConnectionlessTransfer_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	0,	/* Start extensions */
+	2	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_ConnectionlessTransfer = {
+	"RUA_ConnectionlessTransfer",
+	"RUA_ConnectionlessTransfer",
+	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_RUA_ConnectionlessTransfer_tags_1,
+	sizeof(asn_DEF_RUA_ConnectionlessTransfer_tags_1)
+		/sizeof(asn_DEF_RUA_ConnectionlessTransfer_tags_1[0]), /* 1 */
+	asn_DEF_RUA_ConnectionlessTransfer_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_ConnectionlessTransfer_tags_1)
+		/sizeof(asn_DEF_RUA_ConnectionlessTransfer_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_ConnectionlessTransfer_1,
+	1,	/* Elements count */
+	&asn_SPC_RUA_ConnectionlessTransfer_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_ConnectionlessTransfer.h b/src/rua/RUA_ConnectionlessTransfer.h
new file mode 100644
index 0000000..41f8aca
--- /dev/null
+++ b/src/rua/RUA_ConnectionlessTransfer.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_ConnectionlessTransfer_H_
+#define	_RUA_ConnectionlessTransfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_IE.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_ConnectionlessTransfer */
+typedef struct RUA_ConnectionlessTransfer {
+	struct connectionlessTransfer_ies {
+		A_SEQUENCE_OF(RUA_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} connectionlessTransfer_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_ConnectionlessTransfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_ConnectionlessTransfer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_ConnectionlessTransfer_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_Context-ID.c b/src/rua/RUA_Context-ID.c
new file mode 100644
index 0000000..fdaec9c
--- /dev/null
+++ b/src/rua/RUA_Context-ID.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_Context-ID.h"
+
+int
+RUA_Context_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 24l)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Context_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_BIT_STRING.free_struct;
+	td->print_struct   = asn_DEF_BIT_STRING.print_struct;
+	td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+	td->ber_decoder    = asn_DEF_BIT_STRING.ber_decoder;
+	td->der_encoder    = asn_DEF_BIT_STRING.der_encoder;
+	td->xer_decoder    = asn_DEF_BIT_STRING.xer_decoder;
+	td->xer_encoder    = asn_DEF_BIT_STRING.xer_encoder;
+	td->uper_decoder   = asn_DEF_BIT_STRING.uper_decoder;
+	td->uper_encoder   = asn_DEF_BIT_STRING.uper_encoder;
+	td->aper_decoder   = asn_DEF_BIT_STRING.aper_decoder;
+	td->aper_encoder   = asn_DEF_BIT_STRING.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+	td->elements       = asn_DEF_BIT_STRING.elements;
+	td->elements_count = asn_DEF_BIT_STRING.elements_count;
+	td->specifics      = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RUA_Context_ID_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Context_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Context_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Context_ID_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Context_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Context_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Context_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Context_ID_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Context_ID_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Context_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Context_ID_constr_1 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  24l,  24l }	/* (SIZE(24..24)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Context_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Context_ID = {
+	"RUA_Context-ID",
+	"RUA_Context-ID",
+	RUA_Context_ID_free,
+	RUA_Context_ID_print,
+	RUA_Context_ID_constraint,
+	RUA_Context_ID_decode_ber,
+	RUA_Context_ID_encode_der,
+	RUA_Context_ID_decode_xer,
+	RUA_Context_ID_encode_xer,
+	RUA_Context_ID_decode_uper,
+	RUA_Context_ID_encode_uper,
+	RUA_Context_ID_decode_aper,
+	RUA_Context_ID_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_Context_ID_tags_1,
+	sizeof(asn_DEF_RUA_Context_ID_tags_1)
+		/sizeof(asn_DEF_RUA_Context_ID_tags_1[0]), /* 1 */
+	asn_DEF_RUA_Context_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_Context_ID_tags_1)
+		/sizeof(asn_DEF_RUA_Context_ID_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_Context_ID_constr_1,
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/src/rua/RUA_Context-ID.h b/src/rua/RUA_Context-ID.h
new file mode 100644
index 0000000..f4f354c
--- /dev/null
+++ b/src/rua/RUA_Context-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_Context_ID_H_
+#define	_RUA_Context_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_Context-ID */
+typedef BIT_STRING_t	 RUA_Context_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Context_ID;
+asn_struct_free_f RUA_Context_ID_free;
+asn_struct_print_f RUA_Context_ID_print;
+asn_constr_check_f RUA_Context_ID_constraint;
+ber_type_decoder_f RUA_Context_ID_decode_ber;
+der_type_encoder_f RUA_Context_ID_encode_der;
+xer_type_decoder_f RUA_Context_ID_decode_xer;
+xer_type_encoder_f RUA_Context_ID_encode_xer;
+per_type_decoder_f RUA_Context_ID_decode_uper;
+per_type_encoder_f RUA_Context_ID_encode_uper;
+per_type_decoder_f RUA_Context_ID_decode_aper;
+per_type_encoder_f RUA_Context_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_Context_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_Criticality.c b/src/rua/RUA_Criticality.c
new file mode 100644
index 0000000..a81695c
--- /dev/null
+++ b/src/rua/RUA_Criticality.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include "RUA_Criticality.h"
+
+int
+RUA_Criticality_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Criticality_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_Criticality_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Criticality_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Criticality_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Criticality_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Criticality_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Criticality_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Criticality_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Criticality_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Criticality_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Criticality_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Criticality_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Criticality_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 2,  2,  0l,  2l }	/* (0..2) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_Criticality_value2enum_1[] = {
+	{ 0,	6,	"reject" },
+	{ 1,	6,	"ignore" },
+	{ 2,	6,	"notify" }
+};
+static const unsigned int asn_MAP_RUA_Criticality_enum2value_1[] = {
+	1,	/* ignore(1) */
+	2,	/* notify(2) */
+	0	/* reject(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_Criticality_specs_1 = {
+	asn_MAP_RUA_Criticality_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_Criticality_enum2value_1,	/* N => "tag"; sorted by N */
+	3,	/* Number of elements in the maps */
+	0,	/* Enumeration is not extensible */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Criticality_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Criticality = {
+	"RUA_Criticality",
+	"RUA_Criticality",
+	RUA_Criticality_free,
+	RUA_Criticality_print,
+	RUA_Criticality_constraint,
+	RUA_Criticality_decode_ber,
+	RUA_Criticality_encode_der,
+	RUA_Criticality_decode_xer,
+	RUA_Criticality_encode_xer,
+	RUA_Criticality_decode_uper,
+	RUA_Criticality_encode_uper,
+	RUA_Criticality_decode_aper,
+	RUA_Criticality_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_Criticality_tags_1,
+	sizeof(asn_DEF_RUA_Criticality_tags_1)
+		/sizeof(asn_DEF_RUA_Criticality_tags_1[0]), /* 1 */
+	asn_DEF_RUA_Criticality_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_Criticality_tags_1)
+		/sizeof(asn_DEF_RUA_Criticality_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_Criticality_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_Criticality_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_Criticality.h b/src/rua/RUA_Criticality.h
new file mode 100644
index 0000000..efd11bc
--- /dev/null
+++ b/src/rua/RUA_Criticality.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef	_RUA_Criticality_H_
+#define	_RUA_Criticality_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_Criticality {
+	RUA_Criticality_reject	= 0,
+	RUA_Criticality_ignore	= 1,
+	RUA_Criticality_notify	= 2
+} e_RUA_Criticality;
+
+/* RUA_Criticality */
+typedef long	 RUA_Criticality_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Criticality;
+asn_struct_free_f RUA_Criticality_free;
+asn_struct_print_f RUA_Criticality_print;
+asn_constr_check_f RUA_Criticality_constraint;
+ber_type_decoder_f RUA_Criticality_decode_ber;
+der_type_encoder_f RUA_Criticality_encode_der;
+xer_type_decoder_f RUA_Criticality_decode_xer;
+xer_type_encoder_f RUA_Criticality_encode_xer;
+per_type_decoder_f RUA_Criticality_decode_uper;
+per_type_encoder_f RUA_Criticality_encode_uper;
+per_type_decoder_f RUA_Criticality_decode_aper;
+per_type_encoder_f RUA_Criticality_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_Criticality_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_CriticalityDiagnostics-IE-List.c b/src/rua/RUA_CriticalityDiagnostics-IE-List.c
new file mode 100644
index 0000000..e1f1bee
--- /dev/null
+++ b/src/rua/RUA_CriticalityDiagnostics-IE-List.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_CriticalityDiagnostics-IE-List.h"
+
+static asn_per_constraints_t asn_PER_type_RUA_CriticalityDiagnostics_IE_List_constr_1 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 8,  8,  1l,  256l }	/* (SIZE(1..256)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Member_2[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct Member, iECriticality),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_Criticality,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iECriticality"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Member, iE_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_ProtocolIE_ID,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iE-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Member, typeOfError),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_TypeOfError,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"typeOfError"
+		},
+	{ ATF_POINTER, 1, offsetof(struct Member, iE_Extensions),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_IE_Extensions,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iE-Extensions"
+		},
+};
+static const int asn_MAP_Member_oms_2[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* typeOfError */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = {
+	sizeof(struct Member),
+	offsetof(struct Member, _asn_ctx),
+	asn_MAP_Member_tag2el_2,
+	4,	/* Count of tags in the map */
+	asn_MAP_Member_oms_2,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* Start extensions */
+	5	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_Member_2 = {
+	"SEQUENCE",
+	"SEQUENCE",
+	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_Member_tags_2,
+	sizeof(asn_DEF_Member_tags_2)
+		/sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+	asn_DEF_Member_tags_2,	/* Same as above */
+	sizeof(asn_DEF_Member_tags_2)
+		/sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_Member_2,
+	4,	/* Elements count */
+	&asn_SPC_Member_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_CriticalityDiagnostics_IE_List_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_Member_2,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RUA_CriticalityDiagnostics_IE_List_specs_1 = {
+	sizeof(struct RUA_CriticalityDiagnostics_IE_List),
+	offsetof(struct RUA_CriticalityDiagnostics_IE_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CriticalityDiagnostics_IE_List = {
+	"RUA_CriticalityDiagnostics-IE-List",
+	"RUA_CriticalityDiagnostics-IE-List",
+	SEQUENCE_OF_free,
+	SEQUENCE_OF_print,
+	SEQUENCE_OF_constraint,
+	SEQUENCE_OF_decode_ber,
+	SEQUENCE_OF_encode_der,
+	SEQUENCE_OF_decode_xer,
+	SEQUENCE_OF_encode_xer,
+	SEQUENCE_OF_decode_uper,
+	SEQUENCE_OF_encode_uper,
+	SEQUENCE_OF_decode_aper,
+	SEQUENCE_OF_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1,
+	sizeof(asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1)
+		/sizeof(asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */
+	asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1)
+		/sizeof(asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_CriticalityDiagnostics_IE_List_constr_1,
+	asn_MBR_RUA_CriticalityDiagnostics_IE_List_1,
+	1,	/* Single element */
+	&asn_SPC_RUA_CriticalityDiagnostics_IE_List_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_CriticalityDiagnostics-IE-List.h b/src/rua/RUA_CriticalityDiagnostics-IE-List.h
new file mode 100644
index 0000000..b7f35c3
--- /dev/null
+++ b/src/rua/RUA_CriticalityDiagnostics-IE-List.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_CriticalityDiagnostics_IE_List_H_
+#define	_RUA_CriticalityDiagnostics_IE_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include "RUA_Criticality.h"
+#include "RUA_ProtocolIE-ID.h"
+#include "RUA_TypeOfError.h"
+#include "RUA_IE-Extensions.h"
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_CriticalityDiagnostics-IE-List */
+typedef struct RUA_CriticalityDiagnostics_IE_List {
+	A_SEQUENCE_OF(struct Member {
+		RUA_Criticality_t	 iECriticality;
+		RUA_ProtocolIE_ID_t	 iE_ID;
+		RUA_TypeOfError_t	 typeOfError;
+		RUA_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} ) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_CriticalityDiagnostics_IE_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CriticalityDiagnostics_IE_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_CriticalityDiagnostics_IE_List_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_CriticalityDiagnostics.c b/src/rua/RUA_CriticalityDiagnostics.c
new file mode 100644
index 0000000..1ac3bcc
--- /dev/null
+++ b/src/rua/RUA_CriticalityDiagnostics.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_CriticalityDiagnostics.h"
+
+static asn_TYPE_member_t asn_MBR_RUA_CriticalityDiagnostics_1[] = {
+	{ ATF_POINTER, 5, offsetof(struct RUA_CriticalityDiagnostics, procedureCode),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_ProcedureCode,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"procedureCode"
+		},
+	{ ATF_POINTER, 4, offsetof(struct RUA_CriticalityDiagnostics, triggeringMessage),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_TriggeringMessage,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"triggeringMessage"
+		},
+	{ ATF_POINTER, 3, offsetof(struct RUA_CriticalityDiagnostics, procedureCriticality),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_Criticality,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"procedureCriticality"
+		},
+	{ ATF_POINTER, 2, offsetof(struct RUA_CriticalityDiagnostics, iEsCriticalityDiagnostics),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_CriticalityDiagnostics_IE_List,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iEsCriticalityDiagnostics"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RUA_CriticalityDiagnostics, iE_Extensions),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_IE_Extensions,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iE-Extensions"
+		},
+};
+static const int asn_MAP_RUA_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RUA_CriticalityDiagnostics_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_CriticalityDiagnostics_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iEsCriticalityDiagnostics */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_CriticalityDiagnostics_specs_1 = {
+	sizeof(struct RUA_CriticalityDiagnostics),
+	offsetof(struct RUA_CriticalityDiagnostics, _asn_ctx),
+	asn_MAP_RUA_CriticalityDiagnostics_tag2el_1,
+	5,	/* Count of tags in the map */
+	asn_MAP_RUA_CriticalityDiagnostics_oms_1,	/* Optional members */
+	5, 0,	/* Root/Additions */
+	4,	/* Start extensions */
+	6	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CriticalityDiagnostics = {
+	"RUA_CriticalityDiagnostics",
+	"RUA_CriticalityDiagnostics",
+	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_RUA_CriticalityDiagnostics_tags_1,
+	sizeof(asn_DEF_RUA_CriticalityDiagnostics_tags_1)
+		/sizeof(asn_DEF_RUA_CriticalityDiagnostics_tags_1[0]), /* 1 */
+	asn_DEF_RUA_CriticalityDiagnostics_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_CriticalityDiagnostics_tags_1)
+		/sizeof(asn_DEF_RUA_CriticalityDiagnostics_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_CriticalityDiagnostics_1,
+	5,	/* Elements count */
+	&asn_SPC_RUA_CriticalityDiagnostics_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_CriticalityDiagnostics.h b/src/rua/RUA_CriticalityDiagnostics.h
new file mode 100644
index 0000000..160da8f
--- /dev/null
+++ b/src/rua/RUA_CriticalityDiagnostics.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_CriticalityDiagnostics_H_
+#define	_RUA_CriticalityDiagnostics_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_ProcedureCode.h"
+#include "RUA_TriggeringMessage.h"
+#include "RUA_Criticality.h"
+#include "RUA_CriticalityDiagnostics-IE-List.h"
+#include "RUA_IE-Extensions.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_CriticalityDiagnostics */
+typedef struct RUA_CriticalityDiagnostics {
+	RUA_ProcedureCode_t	*procedureCode	/* OPTIONAL */;
+	RUA_TriggeringMessage_t	*triggeringMessage	/* OPTIONAL */;
+	RUA_Criticality_t	*procedureCriticality	/* OPTIONAL */;
+	RUA_CriticalityDiagnostics_IE_List_t	*iEsCriticalityDiagnostics	/* OPTIONAL */;
+	RUA_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_CriticalityDiagnostics_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CriticalityDiagnostics;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_CriticalityDiagnostics_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_DirectTransfer.c b/src/rua/RUA_DirectTransfer.c
new file mode 100644
index 0000000..54ed4a5
--- /dev/null
+++ b/src/rua/RUA_DirectTransfer.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_DirectTransfer.h"
+
+static int
+memb_directTransfer_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 65535l)) {
+		/* Perform validation of the inner elements */
+		return td->check_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_per_constraints_t asn_PER_type_directTransfer_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_directTransfer_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_directTransfer_ies_2[] = {
+	{ ATF_POINTER, 0, 0,
+		-1 /* Ambiguous tag (CHOICE?) */,
+		0,
+		&asn_DEF_RUA_IE,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_directTransfer_ies_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_directTransfer_ies_specs_2 = {
+	sizeof(struct directTransfer_ies),
+	offsetof(struct directTransfer_ies, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_directTransfer_ies_2 = {
+	"directTransfer-ies",
+	"directTransfer-ies",
+	SEQUENCE_OF_free,
+	SEQUENCE_OF_print,
+	SEQUENCE_OF_constraint,
+	SEQUENCE_OF_decode_ber,
+	SEQUENCE_OF_encode_der,
+	SEQUENCE_OF_decode_xer,
+	SEQUENCE_OF_encode_xer,
+	SEQUENCE_OF_decode_uper,
+	SEQUENCE_OF_encode_uper,
+	SEQUENCE_OF_decode_aper,
+	SEQUENCE_OF_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_directTransfer_ies_tags_2,
+	sizeof(asn_DEF_directTransfer_ies_tags_2)
+		/sizeof(asn_DEF_directTransfer_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_directTransfer_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_directTransfer_ies_tags_2)
+		/sizeof(asn_DEF_directTransfer_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_directTransfer_ies_constr_2,
+	asn_MBR_directTransfer_ies_2,
+	1,	/* Single element */
+	&asn_SPC_directTransfer_ies_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_DirectTransfer_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_DirectTransfer, directTransfer_ies),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_directTransfer_ies_2,
+		memb_directTransfer_ies_constraint_1,
+		&asn_PER_memb_directTransfer_ies_constr_2,
+		0,
+		"directTransfer-ies"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_DirectTransfer_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_DirectTransfer_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* directTransfer-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_DirectTransfer_specs_1 = {
+	sizeof(struct RUA_DirectTransfer),
+	offsetof(struct RUA_DirectTransfer, _asn_ctx),
+	asn_MAP_RUA_DirectTransfer_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	0,	/* Start extensions */
+	2	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_DirectTransfer = {
+	"RUA_DirectTransfer",
+	"RUA_DirectTransfer",
+	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_RUA_DirectTransfer_tags_1,
+	sizeof(asn_DEF_RUA_DirectTransfer_tags_1)
+		/sizeof(asn_DEF_RUA_DirectTransfer_tags_1[0]), /* 1 */
+	asn_DEF_RUA_DirectTransfer_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_DirectTransfer_tags_1)
+		/sizeof(asn_DEF_RUA_DirectTransfer_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_DirectTransfer_1,
+	1,	/* Elements count */
+	&asn_SPC_RUA_DirectTransfer_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_DirectTransfer.h b/src/rua/RUA_DirectTransfer.h
new file mode 100644
index 0000000..2e985fa
--- /dev/null
+++ b/src/rua/RUA_DirectTransfer.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_DirectTransfer_H_
+#define	_RUA_DirectTransfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_IE.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_DirectTransfer */
+typedef struct RUA_DirectTransfer {
+	struct directTransfer_ies {
+		A_SEQUENCE_OF(RUA_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} directTransfer_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_DirectTransfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_DirectTransfer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_DirectTransfer_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_Disconnect.c b/src/rua/RUA_Disconnect.c
new file mode 100644
index 0000000..d4048a4
--- /dev/null
+++ b/src/rua/RUA_Disconnect.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_Disconnect.h"
+
+static int
+memb_disconnect_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 65535l)) {
+		/* Perform validation of the inner elements */
+		return td->check_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_per_constraints_t asn_PER_type_disconnect_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_disconnect_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_disconnect_ies_2[] = {
+	{ ATF_POINTER, 0, 0,
+		-1 /* Ambiguous tag (CHOICE?) */,
+		0,
+		&asn_DEF_RUA_IE,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_disconnect_ies_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_disconnect_ies_specs_2 = {
+	sizeof(struct disconnect_ies),
+	offsetof(struct disconnect_ies, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_disconnect_ies_2 = {
+	"disconnect-ies",
+	"disconnect-ies",
+	SEQUENCE_OF_free,
+	SEQUENCE_OF_print,
+	SEQUENCE_OF_constraint,
+	SEQUENCE_OF_decode_ber,
+	SEQUENCE_OF_encode_der,
+	SEQUENCE_OF_decode_xer,
+	SEQUENCE_OF_encode_xer,
+	SEQUENCE_OF_decode_uper,
+	SEQUENCE_OF_encode_uper,
+	SEQUENCE_OF_decode_aper,
+	SEQUENCE_OF_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_disconnect_ies_tags_2,
+	sizeof(asn_DEF_disconnect_ies_tags_2)
+		/sizeof(asn_DEF_disconnect_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_disconnect_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_disconnect_ies_tags_2)
+		/sizeof(asn_DEF_disconnect_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_disconnect_ies_constr_2,
+	asn_MBR_disconnect_ies_2,
+	1,	/* Single element */
+	&asn_SPC_disconnect_ies_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_Disconnect_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_Disconnect, disconnect_ies),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_disconnect_ies_2,
+		memb_disconnect_ies_constraint_1,
+		&asn_PER_memb_disconnect_ies_constr_2,
+		0,
+		"disconnect-ies"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Disconnect_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_Disconnect_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* disconnect-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_Disconnect_specs_1 = {
+	sizeof(struct RUA_Disconnect),
+	offsetof(struct RUA_Disconnect, _asn_ctx),
+	asn_MAP_RUA_Disconnect_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	0,	/* Start extensions */
+	2	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Disconnect = {
+	"RUA_Disconnect",
+	"RUA_Disconnect",
+	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_RUA_Disconnect_tags_1,
+	sizeof(asn_DEF_RUA_Disconnect_tags_1)
+		/sizeof(asn_DEF_RUA_Disconnect_tags_1[0]), /* 1 */
+	asn_DEF_RUA_Disconnect_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_Disconnect_tags_1)
+		/sizeof(asn_DEF_RUA_Disconnect_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_Disconnect_1,
+	1,	/* Elements count */
+	&asn_SPC_RUA_Disconnect_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_Disconnect.h b/src/rua/RUA_Disconnect.h
new file mode 100644
index 0000000..b7a6983
--- /dev/null
+++ b/src/rua/RUA_Disconnect.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_Disconnect_H_
+#define	_RUA_Disconnect_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_IE.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_Disconnect */
+typedef struct RUA_Disconnect {
+	struct disconnect_ies {
+		A_SEQUENCE_OF(RUA_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} disconnect_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_Disconnect_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Disconnect;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_Disconnect_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_ErrorIndication.c b/src/rua/RUA_ErrorIndication.c
new file mode 100644
index 0000000..02cac89
--- /dev/null
+++ b/src/rua/RUA_ErrorIndication.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_ErrorIndication.h"
+
+static int
+memb_errorIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 65535l)) {
+		/* Perform validation of the inner elements */
+		return td->check_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_per_constraints_t asn_PER_type_errorIndication_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_errorIndication_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_errorIndication_ies_2[] = {
+	{ ATF_POINTER, 0, 0,
+		-1 /* Ambiguous tag (CHOICE?) */,
+		0,
+		&asn_DEF_RUA_IE,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_errorIndication_ies_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_errorIndication_ies_specs_2 = {
+	sizeof(struct errorIndication_ies),
+	offsetof(struct errorIndication_ies, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_errorIndication_ies_2 = {
+	"errorIndication-ies",
+	"errorIndication-ies",
+	SEQUENCE_OF_free,
+	SEQUENCE_OF_print,
+	SEQUENCE_OF_constraint,
+	SEQUENCE_OF_decode_ber,
+	SEQUENCE_OF_encode_der,
+	SEQUENCE_OF_decode_xer,
+	SEQUENCE_OF_encode_xer,
+	SEQUENCE_OF_decode_uper,
+	SEQUENCE_OF_encode_uper,
+	SEQUENCE_OF_decode_aper,
+	SEQUENCE_OF_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_errorIndication_ies_tags_2,
+	sizeof(asn_DEF_errorIndication_ies_tags_2)
+		/sizeof(asn_DEF_errorIndication_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_errorIndication_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_errorIndication_ies_tags_2)
+		/sizeof(asn_DEF_errorIndication_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_errorIndication_ies_constr_2,
+	asn_MBR_errorIndication_ies_2,
+	1,	/* Single element */
+	&asn_SPC_errorIndication_ies_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_ErrorIndication_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_ErrorIndication, errorIndication_ies),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_errorIndication_ies_2,
+		memb_errorIndication_ies_constraint_1,
+		&asn_PER_memb_errorIndication_ies_constr_2,
+		0,
+		"errorIndication-ies"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_ErrorIndication_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_ErrorIndication_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* errorIndication-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_ErrorIndication_specs_1 = {
+	sizeof(struct RUA_ErrorIndication),
+	offsetof(struct RUA_ErrorIndication, _asn_ctx),
+	asn_MAP_RUA_ErrorIndication_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	0,	/* Start extensions */
+	2	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_ErrorIndication = {
+	"RUA_ErrorIndication",
+	"RUA_ErrorIndication",
+	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_RUA_ErrorIndication_tags_1,
+	sizeof(asn_DEF_RUA_ErrorIndication_tags_1)
+		/sizeof(asn_DEF_RUA_ErrorIndication_tags_1[0]), /* 1 */
+	asn_DEF_RUA_ErrorIndication_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_ErrorIndication_tags_1)
+		/sizeof(asn_DEF_RUA_ErrorIndication_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_ErrorIndication_1,
+	1,	/* Elements count */
+	&asn_SPC_RUA_ErrorIndication_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_ErrorIndication.h b/src/rua/RUA_ErrorIndication.h
new file mode 100644
index 0000000..f48e9f7
--- /dev/null
+++ b/src/rua/RUA_ErrorIndication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_ErrorIndication_H_
+#define	_RUA_ErrorIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_IE.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_ErrorIndication */
+typedef struct RUA_ErrorIndication {
+	struct errorIndication_ies {
+		A_SEQUENCE_OF(RUA_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} errorIndication_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_ErrorIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_ErrorIndication;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_ErrorIndication_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_Establishment-Cause.c b/src/rua/RUA_Establishment-Cause.c
new file mode 100644
index 0000000..fd92e4b
--- /dev/null
+++ b/src/rua/RUA_Establishment-Cause.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_Establishment-Cause.h"
+
+int
+RUA_Establishment_Cause_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Establishment_Cause_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_Establishment_Cause_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Establishment_Cause_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Establishment_Cause_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Establishment_Cause_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Establishment_Cause_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Establishment_Cause_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Establishment_Cause_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Establishment_Cause_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Establishment_Cause_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Establishment_Cause_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Establishment_Cause_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0l,  1l }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_Establishment_Cause_value2enum_1[] = {
+	{ 0,	14,	"emergency-call" },
+	{ 1,	11,	"normal-call" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_Establishment_Cause_enum2value_1[] = {
+	0,	/* emergency-call(0) */
+	1	/* normal-call(1) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_Establishment_Cause_specs_1 = {
+	asn_MAP_RUA_Establishment_Cause_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_Establishment_Cause_enum2value_1,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Establishment_Cause_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Establishment_Cause = {
+	"RUA_Establishment-Cause",
+	"RUA_Establishment-Cause",
+	RUA_Establishment_Cause_free,
+	RUA_Establishment_Cause_print,
+	RUA_Establishment_Cause_constraint,
+	RUA_Establishment_Cause_decode_ber,
+	RUA_Establishment_Cause_encode_der,
+	RUA_Establishment_Cause_decode_xer,
+	RUA_Establishment_Cause_encode_xer,
+	RUA_Establishment_Cause_decode_uper,
+	RUA_Establishment_Cause_encode_uper,
+	RUA_Establishment_Cause_decode_aper,
+	RUA_Establishment_Cause_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_Establishment_Cause_tags_1,
+	sizeof(asn_DEF_RUA_Establishment_Cause_tags_1)
+		/sizeof(asn_DEF_RUA_Establishment_Cause_tags_1[0]), /* 1 */
+	asn_DEF_RUA_Establishment_Cause_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_Establishment_Cause_tags_1)
+		/sizeof(asn_DEF_RUA_Establishment_Cause_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_Establishment_Cause_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_Establishment_Cause_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_Establishment-Cause.h b/src/rua/RUA_Establishment-Cause.h
new file mode 100644
index 0000000..0ab1a01
--- /dev/null
+++ b/src/rua/RUA_Establishment-Cause.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_Establishment_Cause_H_
+#define	_RUA_Establishment_Cause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_Establishment_Cause {
+	RUA_Establishment_Cause_emergency_call	= 0,
+	RUA_Establishment_Cause_normal_call	= 1
+	/*
+	 * Enumeration is extensible
+	 */
+} e_RUA_Establishment_Cause;
+
+/* RUA_Establishment-Cause */
+typedef long	 RUA_Establishment_Cause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Establishment_Cause;
+asn_struct_free_f RUA_Establishment_Cause_free;
+asn_struct_print_f RUA_Establishment_Cause_print;
+asn_constr_check_f RUA_Establishment_Cause_constraint;
+ber_type_decoder_f RUA_Establishment_Cause_decode_ber;
+der_type_encoder_f RUA_Establishment_Cause_encode_der;
+xer_type_decoder_f RUA_Establishment_Cause_decode_xer;
+xer_type_encoder_f RUA_Establishment_Cause_encode_xer;
+per_type_decoder_f RUA_Establishment_Cause_decode_uper;
+per_type_encoder_f RUA_Establishment_Cause_encode_uper;
+per_type_decoder_f RUA_Establishment_Cause_decode_aper;
+per_type_encoder_f RUA_Establishment_Cause_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_Establishment_Cause_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_Gsm-map-IDNNS.c b/src/rua/RUA_Gsm-map-IDNNS.c
new file mode 100644
index 0000000..fc018f5
--- /dev/null
+++ b/src/rua/RUA_Gsm-map-IDNNS.c
@@ -0,0 +1,636 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_Gsm-map-IDNNS.h"
+
+static asn_per_constraints_t asn_PER_type_routingbasis_constr_2 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 3,  3,  0l,  7l }	/* (0..7) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_localPTMSI_3[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct localPTMSI, routingparameter),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_RoutingParameter,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"routingparameter"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_localPTMSI_tags_3[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_localPTMSI_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_localPTMSI_specs_3 = {
+	sizeof(struct localPTMSI),
+	offsetof(struct localPTMSI, _asn_ctx),
+	asn_MAP_localPTMSI_tag2el_3,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_localPTMSI_3 = {
+	"localPTMSI",
+	"localPTMSI",
+	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_localPTMSI_tags_3,
+	sizeof(asn_DEF_localPTMSI_tags_3)
+		/sizeof(asn_DEF_localPTMSI_tags_3[0]) - 1, /* 1 */
+	asn_DEF_localPTMSI_tags_3,	/* Same as above */
+	sizeof(asn_DEF_localPTMSI_tags_3)
+		/sizeof(asn_DEF_localPTMSI_tags_3[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_localPTMSI_3,
+	1,	/* Elements count */
+	&asn_SPC_localPTMSI_specs_3	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tMSIofsamePLMN_5[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct tMSIofsamePLMN, routingparameter),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_RoutingParameter,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"routingparameter"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_tMSIofsamePLMN_tags_5[] = {
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_tMSIofsamePLMN_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_tMSIofsamePLMN_specs_5 = {
+	sizeof(struct tMSIofsamePLMN),
+	offsetof(struct tMSIofsamePLMN, _asn_ctx),
+	asn_MAP_tMSIofsamePLMN_tag2el_5,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tMSIofsamePLMN_5 = {
+	"tMSIofsamePLMN",
+	"tMSIofsamePLMN",
+	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_tMSIofsamePLMN_tags_5,
+	sizeof(asn_DEF_tMSIofsamePLMN_tags_5)
+		/sizeof(asn_DEF_tMSIofsamePLMN_tags_5[0]) - 1, /* 1 */
+	asn_DEF_tMSIofsamePLMN_tags_5,	/* Same as above */
+	sizeof(asn_DEF_tMSIofsamePLMN_tags_5)
+		/sizeof(asn_DEF_tMSIofsamePLMN_tags_5[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_tMSIofsamePLMN_5,
+	1,	/* Elements count */
+	&asn_SPC_tMSIofsamePLMN_specs_5	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tMSIofdifferentPLMN_7[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct tMSIofdifferentPLMN, routingparameter),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_RoutingParameter,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"routingparameter"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_tMSIofdifferentPLMN_tags_7[] = {
+	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_tMSIofdifferentPLMN_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_tMSIofdifferentPLMN_specs_7 = {
+	sizeof(struct tMSIofdifferentPLMN),
+	offsetof(struct tMSIofdifferentPLMN, _asn_ctx),
+	asn_MAP_tMSIofdifferentPLMN_tag2el_7,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tMSIofdifferentPLMN_7 = {
+	"tMSIofdifferentPLMN",
+	"tMSIofdifferentPLMN",
+	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_tMSIofdifferentPLMN_tags_7,
+	sizeof(asn_DEF_tMSIofdifferentPLMN_tags_7)
+		/sizeof(asn_DEF_tMSIofdifferentPLMN_tags_7[0]) - 1, /* 1 */
+	asn_DEF_tMSIofdifferentPLMN_tags_7,	/* Same as above */
+	sizeof(asn_DEF_tMSIofdifferentPLMN_tags_7)
+		/sizeof(asn_DEF_tMSIofdifferentPLMN_tags_7[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_tMSIofdifferentPLMN_7,
+	1,	/* Elements count */
+	&asn_SPC_tMSIofdifferentPLMN_specs_7	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_iMSIresponsetopaging_9[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct iMSIresponsetopaging, routingparameter),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_RoutingParameter,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"routingparameter"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_iMSIresponsetopaging_tags_9[] = {
+	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_iMSIresponsetopaging_tag2el_9[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_iMSIresponsetopaging_specs_9 = {
+	sizeof(struct iMSIresponsetopaging),
+	offsetof(struct iMSIresponsetopaging, _asn_ctx),
+	asn_MAP_iMSIresponsetopaging_tag2el_9,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_iMSIresponsetopaging_9 = {
+	"iMSIresponsetopaging",
+	"iMSIresponsetopaging",
+	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_iMSIresponsetopaging_tags_9,
+	sizeof(asn_DEF_iMSIresponsetopaging_tags_9)
+		/sizeof(asn_DEF_iMSIresponsetopaging_tags_9[0]) - 1, /* 1 */
+	asn_DEF_iMSIresponsetopaging_tags_9,	/* Same as above */
+	sizeof(asn_DEF_iMSIresponsetopaging_tags_9)
+		/sizeof(asn_DEF_iMSIresponsetopaging_tags_9[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_iMSIresponsetopaging_9,
+	1,	/* Elements count */
+	&asn_SPC_iMSIresponsetopaging_specs_9	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_iMSIcauseUEinitiatedEvent_11[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct iMSIcauseUEinitiatedEvent, routingparameter),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_RoutingParameter,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"routingparameter"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_iMSIcauseUEinitiatedEvent_tags_11[] = {
+	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_iMSIcauseUEinitiatedEvent_tag2el_11[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_iMSIcauseUEinitiatedEvent_specs_11 = {
+	sizeof(struct iMSIcauseUEinitiatedEvent),
+	offsetof(struct iMSIcauseUEinitiatedEvent, _asn_ctx),
+	asn_MAP_iMSIcauseUEinitiatedEvent_tag2el_11,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_iMSIcauseUEinitiatedEvent_11 = {
+	"iMSIcauseUEinitiatedEvent",
+	"iMSIcauseUEinitiatedEvent",
+	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_iMSIcauseUEinitiatedEvent_tags_11,
+	sizeof(asn_DEF_iMSIcauseUEinitiatedEvent_tags_11)
+		/sizeof(asn_DEF_iMSIcauseUEinitiatedEvent_tags_11[0]) - 1, /* 1 */
+	asn_DEF_iMSIcauseUEinitiatedEvent_tags_11,	/* Same as above */
+	sizeof(asn_DEF_iMSIcauseUEinitiatedEvent_tags_11)
+		/sizeof(asn_DEF_iMSIcauseUEinitiatedEvent_tags_11[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_iMSIcauseUEinitiatedEvent_11,
+	1,	/* Elements count */
+	&asn_SPC_iMSIcauseUEinitiatedEvent_specs_11	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_iMEI_13[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct iMEI, routingparameter),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_RoutingParameter,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"routingparameter"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_iMEI_tags_13[] = {
+	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_iMEI_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_iMEI_specs_13 = {
+	sizeof(struct iMEI),
+	offsetof(struct iMEI, _asn_ctx),
+	asn_MAP_iMEI_tag2el_13,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_iMEI_13 = {
+	"iMEI",
+	"iMEI",
+	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_iMEI_tags_13,
+	sizeof(asn_DEF_iMEI_tags_13)
+		/sizeof(asn_DEF_iMEI_tags_13[0]) - 1, /* 1 */
+	asn_DEF_iMEI_tags_13,	/* Same as above */
+	sizeof(asn_DEF_iMEI_tags_13)
+		/sizeof(asn_DEF_iMEI_tags_13[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_iMEI_13,
+	1,	/* Elements count */
+	&asn_SPC_iMEI_specs_13	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_spare2_15[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct spare2, routingparameter),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_RoutingParameter,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"routingparameter"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_spare2_tags_15[] = {
+	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_spare2_tag2el_15[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_spare2_specs_15 = {
+	sizeof(struct spare2),
+	offsetof(struct spare2, _asn_ctx),
+	asn_MAP_spare2_tag2el_15,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_spare2_15 = {
+	"spare2",
+	"spare2",
+	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_spare2_tags_15,
+	sizeof(asn_DEF_spare2_tags_15)
+		/sizeof(asn_DEF_spare2_tags_15[0]) - 1, /* 1 */
+	asn_DEF_spare2_tags_15,	/* Same as above */
+	sizeof(asn_DEF_spare2_tags_15)
+		/sizeof(asn_DEF_spare2_tags_15[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_spare2_15,
+	1,	/* Elements count */
+	&asn_SPC_spare2_specs_15	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_spare1_17[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct spare1, routingparameter),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_RoutingParameter,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"routingparameter"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_spare1_tags_17[] = {
+	(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_spare1_tag2el_17[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_spare1_specs_17 = {
+	sizeof(struct spare1),
+	offsetof(struct spare1, _asn_ctx),
+	asn_MAP_spare1_tag2el_17,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_spare1_17 = {
+	"spare1",
+	"spare1",
+	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_spare1_tags_17,
+	sizeof(asn_DEF_spare1_tags_17)
+		/sizeof(asn_DEF_spare1_tags_17[0]) - 1, /* 1 */
+	asn_DEF_spare1_tags_17,	/* Same as above */
+	sizeof(asn_DEF_spare1_tags_17)
+		/sizeof(asn_DEF_spare1_tags_17[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_spare1_17,
+	1,	/* Elements count */
+	&asn_SPC_spare1_specs_17	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_routingbasis_2[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.localPTMSI),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_localPTMSI_3,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"localPTMSI"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.tMSIofsamePLMN),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		0,
+		&asn_DEF_tMSIofsamePLMN_5,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"tMSIofsamePLMN"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.tMSIofdifferentPLMN),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		0,
+		&asn_DEF_tMSIofdifferentPLMN_7,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"tMSIofdifferentPLMN"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.iMSIresponsetopaging),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		0,
+		&asn_DEF_iMSIresponsetopaging_9,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iMSIresponsetopaging"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.iMSIcauseUEinitiatedEvent),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		0,
+		&asn_DEF_iMSIcauseUEinitiatedEvent_11,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iMSIcauseUEinitiatedEvent"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.iMEI),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		0,
+		&asn_DEF_iMEI_13,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iMEI"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.spare2),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		0,
+		&asn_DEF_spare2_15,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"spare2"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.spare1),
+		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+		0,
+		&asn_DEF_spare1_17,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"spare1"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_routingbasis_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* localPTMSI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tMSIofsamePLMN */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* tMSIofdifferentPLMN */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iMSIresponsetopaging */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* iMSIcauseUEinitiatedEvent */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* iMEI */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_routingbasis_specs_2 = {
+	sizeof(struct routingbasis),
+	offsetof(struct routingbasis, _asn_ctx),
+	offsetof(struct routingbasis, present),
+	sizeof(((struct routingbasis *)0)->present),
+	asn_MAP_routingbasis_tag2el_2,
+	8,	/* Count of tags in the map */
+	0,
+	-1	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_routingbasis_2 = {
+	"routingbasis",
+	"routingbasis",
+	CHOICE_free,
+	CHOICE_print,
+	CHOICE_constraint,
+	CHOICE_decode_ber,
+	CHOICE_encode_der,
+	CHOICE_decode_xer,
+	CHOICE_encode_xer,
+	CHOICE_decode_uper,
+	CHOICE_encode_uper,
+	CHOICE_decode_aper,
+	CHOICE_encode_aper,
+	CHOICE_outmost_tag,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	&asn_PER_type_routingbasis_constr_2,
+	asn_MBR_routingbasis_2,
+	8,	/* Elements count */
+	&asn_SPC_routingbasis_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_Gsm_map_IDNNS_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_Gsm_map_IDNNS, routingbasis),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_routingbasis_2,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"routingbasis"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_Gsm_map_IDNNS, dummy),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_BOOLEAN,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"dummy"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Gsm_map_IDNNS_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_Gsm_map_IDNNS_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* routingbasis */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* dummy */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_Gsm_map_IDNNS_specs_1 = {
+	sizeof(struct RUA_Gsm_map_IDNNS),
+	offsetof(struct RUA_Gsm_map_IDNNS, _asn_ctx),
+	asn_MAP_RUA_Gsm_map_IDNNS_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Gsm_map_IDNNS = {
+	"RUA_Gsm-map-IDNNS",
+	"RUA_Gsm-map-IDNNS",
+	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_RUA_Gsm_map_IDNNS_tags_1,
+	sizeof(asn_DEF_RUA_Gsm_map_IDNNS_tags_1)
+		/sizeof(asn_DEF_RUA_Gsm_map_IDNNS_tags_1[0]), /* 1 */
+	asn_DEF_RUA_Gsm_map_IDNNS_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_Gsm_map_IDNNS_tags_1)
+		/sizeof(asn_DEF_RUA_Gsm_map_IDNNS_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_Gsm_map_IDNNS_1,
+	2,	/* Elements count */
+	&asn_SPC_RUA_Gsm_map_IDNNS_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_Gsm-map-IDNNS.h b/src/rua/RUA_Gsm-map-IDNNS.h
new file mode 100644
index 0000000..4b00995
--- /dev/null
+++ b/src/rua/RUA_Gsm-map-IDNNS.h
@@ -0,0 +1,108 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_Gsm_map_IDNNS_H_
+#define	_RUA_Gsm_map_IDNNS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include "RUA_RoutingParameter.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum routingbasis_PR {
+	routingbasis_PR_NOTHING,	/* No components present */
+	routingbasis_PR_localPTMSI,
+	routingbasis_PR_tMSIofsamePLMN,
+	routingbasis_PR_tMSIofdifferentPLMN,
+	routingbasis_PR_iMSIresponsetopaging,
+	routingbasis_PR_iMSIcauseUEinitiatedEvent,
+	routingbasis_PR_iMEI,
+	routingbasis_PR_spare2,
+	routingbasis_PR_spare1
+} routingbasis_PR;
+
+/* RUA_Gsm-map-IDNNS */
+typedef struct RUA_Gsm_map_IDNNS {
+	struct routingbasis {
+		routingbasis_PR present;
+		union RUA_Gsm_map_IDNNS__routingbasis_u {
+			struct localPTMSI {
+				RUA_RoutingParameter_t	 routingparameter;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} localPTMSI;
+			struct tMSIofsamePLMN {
+				RUA_RoutingParameter_t	 routingparameter;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} tMSIofsamePLMN;
+			struct tMSIofdifferentPLMN {
+				RUA_RoutingParameter_t	 routingparameter;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} tMSIofdifferentPLMN;
+			struct iMSIresponsetopaging {
+				RUA_RoutingParameter_t	 routingparameter;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} iMSIresponsetopaging;
+			struct iMSIcauseUEinitiatedEvent {
+				RUA_RoutingParameter_t	 routingparameter;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} iMSIcauseUEinitiatedEvent;
+			struct iMEI {
+				RUA_RoutingParameter_t	 routingparameter;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} iMEI;
+			struct spare2 {
+				RUA_RoutingParameter_t	 routingparameter;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} spare2;
+			struct spare1 {
+				RUA_RoutingParameter_t	 routingparameter;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} spare1;
+		} choice;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} routingbasis;
+	BOOLEAN_t	 dummy;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_Gsm_map_IDNNS_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Gsm_map_IDNNS;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_Gsm_map_IDNNS_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_IE-Extensions.c b/src/rua/RUA_IE-Extensions.c
new file mode 100644
index 0000000..36e72aa
--- /dev/null
+++ b/src/rua/RUA_IE-Extensions.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_IE-Extensions.h"
+
+static asn_per_constraints_t asn_PER_type_RUA_IE_Extensions_constr_1 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1l,  65535l }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RUA_IE_Extensions_1[] = {
+	{ ATF_POINTER, 0, 0,
+		-1 /* Ambiguous tag (CHOICE?) */,
+		0,
+		&asn_DEF_RUA_IE,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_IE_Extensions_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RUA_IE_Extensions_specs_1 = {
+	sizeof(struct RUA_IE_Extensions),
+	offsetof(struct RUA_IE_Extensions, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_IE_Extensions = {
+	"RUA_IE-Extensions",
+	"RUA_IE-Extensions",
+	SEQUENCE_OF_free,
+	SEQUENCE_OF_print,
+	SEQUENCE_OF_constraint,
+	SEQUENCE_OF_decode_ber,
+	SEQUENCE_OF_encode_der,
+	SEQUENCE_OF_decode_xer,
+	SEQUENCE_OF_encode_xer,
+	SEQUENCE_OF_decode_uper,
+	SEQUENCE_OF_encode_uper,
+	SEQUENCE_OF_decode_aper,
+	SEQUENCE_OF_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_IE_Extensions_tags_1,
+	sizeof(asn_DEF_RUA_IE_Extensions_tags_1)
+		/sizeof(asn_DEF_RUA_IE_Extensions_tags_1[0]), /* 1 */
+	asn_DEF_RUA_IE_Extensions_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_IE_Extensions_tags_1)
+		/sizeof(asn_DEF_RUA_IE_Extensions_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_IE_Extensions_constr_1,
+	asn_MBR_RUA_IE_Extensions_1,
+	1,	/* Single element */
+	&asn_SPC_RUA_IE_Extensions_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_IE-Extensions.h b/src/rua/RUA_IE-Extensions.h
new file mode 100644
index 0000000..5223f97
--- /dev/null
+++ b/src/rua/RUA_IE-Extensions.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_IE_Extensions_H_
+#define	_RUA_IE_Extensions_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_IE.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_IE-Extensions */
+typedef struct RUA_IE_Extensions {
+	A_SEQUENCE_OF(RUA_IE_t) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_IE_Extensions_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_IE_Extensions;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_IE_Extensions_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_IE.c b/src/rua/RUA_IE.c
new file mode 100644
index 0000000..3bca72e
--- /dev/null
+++ b/src/rua/RUA_IE.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_IE.h"
+
+static asn_TYPE_member_t asn_MBR_RUA_IE_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_IE, id),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_ProtocolIE_ID,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"id"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_IE, criticality),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_Criticality,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"criticality"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_IE, value),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ANY,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"value"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_IE_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_IE_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_IE_specs_1 = {
+	sizeof(struct RUA_IE),
+	offsetof(struct RUA_IE, _asn_ctx),
+	asn_MAP_RUA_IE_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_IE = {
+	"RUA_IE",
+	"RUA_IE",
+	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_RUA_IE_tags_1,
+	sizeof(asn_DEF_RUA_IE_tags_1)
+		/sizeof(asn_DEF_RUA_IE_tags_1[0]), /* 1 */
+	asn_DEF_RUA_IE_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_IE_tags_1)
+		/sizeof(asn_DEF_RUA_IE_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_IE_1,
+	3,	/* Elements count */
+	&asn_SPC_RUA_IE_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_IE.h b/src/rua/RUA_IE.h
new file mode 100644
index 0000000..5ab991c
--- /dev/null
+++ b/src/rua/RUA_IE.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_IE_H_
+#define	_RUA_IE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_ProtocolIE-ID.h"
+#include "RUA_Criticality.h"
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_IE */
+typedef struct RUA_IE {
+	RUA_ProtocolIE_ID_t	 id;
+	RUA_Criticality_t	 criticality;
+	ANY_t	 value;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_IE_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_IE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_IE_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_InitiatingMessage.c b/src/rua/RUA_InitiatingMessage.c
new file mode 100644
index 0000000..a8c8425
--- /dev/null
+++ b/src/rua/RUA_InitiatingMessage.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_InitiatingMessage.h"
+
+static asn_TYPE_member_t asn_MBR_RUA_InitiatingMessage_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_InitiatingMessage, procedureCode),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_ProcedureCode,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"procedureCode"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_InitiatingMessage, criticality),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_Criticality,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"criticality"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_InitiatingMessage, value),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ANY,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"value"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_InitiatingMessage_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_InitiatingMessage_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_InitiatingMessage_specs_1 = {
+	sizeof(struct RUA_InitiatingMessage),
+	offsetof(struct RUA_InitiatingMessage, _asn_ctx),
+	asn_MAP_RUA_InitiatingMessage_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_InitiatingMessage = {
+	"RUA_InitiatingMessage",
+	"RUA_InitiatingMessage",
+	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_RUA_InitiatingMessage_tags_1,
+	sizeof(asn_DEF_RUA_InitiatingMessage_tags_1)
+		/sizeof(asn_DEF_RUA_InitiatingMessage_tags_1[0]), /* 1 */
+	asn_DEF_RUA_InitiatingMessage_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_InitiatingMessage_tags_1)
+		/sizeof(asn_DEF_RUA_InitiatingMessage_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_InitiatingMessage_1,
+	3,	/* Elements count */
+	&asn_SPC_RUA_InitiatingMessage_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_InitiatingMessage.h b/src/rua/RUA_InitiatingMessage.h
new file mode 100644
index 0000000..d432ee4
--- /dev/null
+++ b/src/rua/RUA_InitiatingMessage.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_InitiatingMessage_H_
+#define	_RUA_InitiatingMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_ProcedureCode.h"
+#include "RUA_Criticality.h"
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_InitiatingMessage */
+typedef struct RUA_InitiatingMessage {
+	RUA_ProcedureCode_t	 procedureCode;
+	RUA_Criticality_t	 criticality;
+	ANY_t	 value;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_InitiatingMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_InitiatingMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_InitiatingMessage_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_IntraDomainNasNodeSelector.c b/src/rua/RUA_IntraDomainNasNodeSelector.c
new file mode 100644
index 0000000..066e4e1
--- /dev/null
+++ b/src/rua/RUA_IntraDomainNasNodeSelector.c
@@ -0,0 +1,337 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_IntraDomainNasNodeSelector.h"
+
+static int
+memb_futurecoding_constraint_7(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 15l)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_per_constraints_t asn_PER_type_cn_Type_constr_4 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 1,  1,  0l,  1l }	/* (0..1) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_futurecoding_constr_8 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  15l,  15l }	/* (SIZE(15..15)) */,
+	0, 0	/* No PER value map */
+};
+static asn_per_constraints_t asn_PER_type_version_constr_2 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 1,  1,  0l,  1l }	/* (0..1) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cn_Type_4[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct cn_Type, choice.gsm_Map_IDNNS),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_Gsm_map_IDNNS,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"gsm-Map-IDNNS"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct cn_Type, choice.ansi_41_IDNNS),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_Ansi_41_IDNNS,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"ansi-41-IDNNS"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_cn_Type_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gsm-Map-IDNNS */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ansi-41-IDNNS */
+};
+static asn_CHOICE_specifics_t asn_SPC_cn_Type_specs_4 = {
+	sizeof(struct cn_Type),
+	offsetof(struct cn_Type, _asn_ctx),
+	offsetof(struct cn_Type, present),
+	sizeof(((struct cn_Type *)0)->present),
+	asn_MAP_cn_Type_tag2el_4,
+	2,	/* Count of tags in the map */
+	0,
+	-1	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cn_Type_4 = {
+	"cn-Type",
+	"cn-Type",
+	CHOICE_free,
+	CHOICE_print,
+	CHOICE_constraint,
+	CHOICE_decode_ber,
+	CHOICE_encode_der,
+	CHOICE_decode_xer,
+	CHOICE_encode_xer,
+	CHOICE_decode_uper,
+	CHOICE_encode_uper,
+	CHOICE_decode_aper,
+	CHOICE_encode_aper,
+	CHOICE_outmost_tag,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	&asn_PER_type_cn_Type_constr_4,
+	asn_MBR_cn_Type_4,
+	2,	/* Elements count */
+	&asn_SPC_cn_Type_specs_4	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_release99_3[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct release99, cn_Type),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_cn_Type_4,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"cn-Type"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_release99_tags_3[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_release99_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cn-Type */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_release99_specs_3 = {
+	sizeof(struct release99),
+	offsetof(struct release99, _asn_ctx),
+	asn_MAP_release99_tag2el_3,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_release99_3 = {
+	"release99",
+	"release99",
+	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_release99_tags_3,
+	sizeof(asn_DEF_release99_tags_3)
+		/sizeof(asn_DEF_release99_tags_3[0]) - 1, /* 1 */
+	asn_DEF_release99_tags_3,	/* Same as above */
+	sizeof(asn_DEF_release99_tags_3)
+		/sizeof(asn_DEF_release99_tags_3[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_release99_3,
+	1,	/* Elements count */
+	&asn_SPC_release99_specs_3	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_later_7[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct later, futurecoding),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_BIT_STRING,
+		memb_futurecoding_constraint_7,
+		&asn_PER_memb_futurecoding_constr_8,
+		0,
+		"futurecoding"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_later_tags_7[] = {
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_later_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* futurecoding */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_later_specs_7 = {
+	sizeof(struct later),
+	offsetof(struct later, _asn_ctx),
+	asn_MAP_later_tag2el_7,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_later_7 = {
+	"later",
+	"later",
+	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_later_tags_7,
+	sizeof(asn_DEF_later_tags_7)
+		/sizeof(asn_DEF_later_tags_7[0]) - 1, /* 1 */
+	asn_DEF_later_tags_7,	/* Same as above */
+	sizeof(asn_DEF_later_tags_7)
+		/sizeof(asn_DEF_later_tags_7[0]), /* 2 */
+	0,	/* No PER visible constraints */
+	asn_MBR_later_7,
+	1,	/* Elements count */
+	&asn_SPC_later_specs_7	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_version_2[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct version, choice.release99),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_release99_3,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"release99"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct version, choice.later),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		0,
+		&asn_DEF_later_7,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"later"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_version_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release99 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* later */
+};
+static asn_CHOICE_specifics_t asn_SPC_version_specs_2 = {
+	sizeof(struct version),
+	offsetof(struct version, _asn_ctx),
+	offsetof(struct version, present),
+	sizeof(((struct version *)0)->present),
+	asn_MAP_version_tag2el_2,
+	2,	/* Count of tags in the map */
+	0,
+	-1	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_version_2 = {
+	"version",
+	"version",
+	CHOICE_free,
+	CHOICE_print,
+	CHOICE_constraint,
+	CHOICE_decode_ber,
+	CHOICE_encode_der,
+	CHOICE_decode_xer,
+	CHOICE_encode_xer,
+	CHOICE_decode_uper,
+	CHOICE_encode_uper,
+	CHOICE_decode_aper,
+	CHOICE_encode_aper,
+	CHOICE_outmost_tag,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	&asn_PER_type_version_constr_2,
+	asn_MBR_version_2,
+	2,	/* Elements count */
+	&asn_SPC_version_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_IntraDomainNasNodeSelector_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_IntraDomainNasNodeSelector, version),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_version_2,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"version"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_IntraDomainNasNodeSelector_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* version */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_IntraDomainNasNodeSelector_specs_1 = {
+	sizeof(struct RUA_IntraDomainNasNodeSelector),
+	offsetof(struct RUA_IntraDomainNasNodeSelector, _asn_ctx),
+	asn_MAP_RUA_IntraDomainNasNodeSelector_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_IntraDomainNasNodeSelector = {
+	"RUA_IntraDomainNasNodeSelector",
+	"RUA_IntraDomainNasNodeSelector",
+	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_RUA_IntraDomainNasNodeSelector_tags_1,
+	sizeof(asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1)
+		/sizeof(asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1[0]), /* 1 */
+	asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1)
+		/sizeof(asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_IntraDomainNasNodeSelector_1,
+	1,	/* Elements count */
+	&asn_SPC_RUA_IntraDomainNasNodeSelector_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_IntraDomainNasNodeSelector.h b/src/rua/RUA_IntraDomainNasNodeSelector.h
new file mode 100644
index 0000000..61e708b
--- /dev/null
+++ b/src/rua/RUA_IntraDomainNasNodeSelector.h
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_IntraDomainNasNodeSelector_H_
+#define	_RUA_IntraDomainNasNodeSelector_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_Gsm-map-IDNNS.h"
+#include "RUA_Ansi-41-IDNNS.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum version_PR {
+	version_PR_NOTHING,	/* No components present */
+	version_PR_release99,
+	version_PR_later
+} version_PR;
+typedef enum cn_Type_PR {
+	cn_Type_PR_NOTHING,	/* No components present */
+	cn_Type_PR_gsm_Map_IDNNS,
+	cn_Type_PR_ansi_41_IDNNS
+} cn_Type_PR;
+
+/* RUA_IntraDomainNasNodeSelector */
+typedef struct RUA_IntraDomainNasNodeSelector {
+	struct version {
+		version_PR present;
+		union RUA_IntraDomainNasNodeSelector__version_u {
+			struct release99 {
+				struct cn_Type {
+					cn_Type_PR present;
+					union RUA_IntraDomainNasNodeSelector__version__release99__cn_Type_u {
+						RUA_Gsm_map_IDNNS_t	 gsm_Map_IDNNS;
+						RUA_Ansi_41_IDNNS_t	 ansi_41_IDNNS;
+					} choice;
+					
+					/* Context for parsing across buffer boundaries */
+					asn_struct_ctx_t _asn_ctx;
+				} cn_Type;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} release99;
+			struct later {
+				BIT_STRING_t	 futurecoding;
+				
+				/* Context for parsing across buffer boundaries */
+				asn_struct_ctx_t _asn_ctx;
+			} later;
+		} choice;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} version;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_IntraDomainNasNodeSelector_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_IntraDomainNasNodeSelector;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_IntraDomainNasNodeSelector_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_Presence.c b/src/rua/RUA_Presence.c
new file mode 100644
index 0000000..0a5d563
--- /dev/null
+++ b/src/rua/RUA_Presence.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include "RUA_Presence.h"
+
+int
+RUA_Presence_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Presence_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_Presence_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Presence_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Presence_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Presence_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Presence_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Presence_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Presence_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Presence_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Presence_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Presence_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_Presence_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Presence_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 2,  2,  0l,  2l }	/* (0..2) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_Presence_value2enum_1[] = {
+	{ 0,	8,	"optional" },
+	{ 1,	11,	"conditional" },
+	{ 2,	9,	"mandatory" }
+};
+static const unsigned int asn_MAP_RUA_Presence_enum2value_1[] = {
+	1,	/* conditional(1) */
+	2,	/* mandatory(2) */
+	0	/* optional(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_Presence_specs_1 = {
+	asn_MAP_RUA_Presence_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_Presence_enum2value_1,	/* N => "tag"; sorted by N */
+	3,	/* Number of elements in the maps */
+	0,	/* Enumeration is not extensible */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Presence_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Presence = {
+	"RUA_Presence",
+	"RUA_Presence",
+	RUA_Presence_free,
+	RUA_Presence_print,
+	RUA_Presence_constraint,
+	RUA_Presence_decode_ber,
+	RUA_Presence_encode_der,
+	RUA_Presence_decode_xer,
+	RUA_Presence_encode_xer,
+	RUA_Presence_decode_uper,
+	RUA_Presence_encode_uper,
+	RUA_Presence_decode_aper,
+	RUA_Presence_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_Presence_tags_1,
+	sizeof(asn_DEF_RUA_Presence_tags_1)
+		/sizeof(asn_DEF_RUA_Presence_tags_1[0]), /* 1 */
+	asn_DEF_RUA_Presence_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_Presence_tags_1)
+		/sizeof(asn_DEF_RUA_Presence_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_Presence_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_Presence_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_Presence.h b/src/rua/RUA_Presence.h
new file mode 100644
index 0000000..90faf88
--- /dev/null
+++ b/src/rua/RUA_Presence.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef	_RUA_Presence_H_
+#define	_RUA_Presence_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_Presence {
+	RUA_Presence_optional	= 0,
+	RUA_Presence_conditional	= 1,
+	RUA_Presence_mandatory	= 2
+} e_RUA_Presence;
+
+/* RUA_Presence */
+typedef long	 RUA_Presence_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Presence;
+asn_struct_free_f RUA_Presence_free;
+asn_struct_print_f RUA_Presence_print;
+asn_constr_check_f RUA_Presence_constraint;
+ber_type_decoder_f RUA_Presence_decode_ber;
+der_type_encoder_f RUA_Presence_encode_der;
+xer_type_decoder_f RUA_Presence_decode_xer;
+xer_type_encoder_f RUA_Presence_encode_xer;
+per_type_decoder_f RUA_Presence_decode_uper;
+per_type_encoder_f RUA_Presence_encode_uper;
+per_type_decoder_f RUA_Presence_decode_aper;
+per_type_encoder_f RUA_Presence_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_Presence_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_PrivateIE-ID.c b/src/rua/RUA_PrivateIE-ID.c
new file mode 100644
index 0000000..33c258b
--- /dev/null
+++ b/src/rua/RUA_PrivateIE-ID.c
@@ -0,0 +1,102 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include "RUA_PrivateIE-ID.h"
+
+static int
+memb_local_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0l && value <= 65535l)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_per_constraints_t asn_PER_memb_local_constr_2 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (0..65535) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_per_constraints_t asn_PER_type_RUA_PrivateIE_ID_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 1,  1,  0l,  1l }	/* (0..1) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RUA_PrivateIE_ID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_PrivateIE_ID, choice.local),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		memb_local_constraint_1,
+		&asn_PER_memb_local_constr_2,
+		0,
+		"local"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_PrivateIE_ID, choice.global),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_OBJECT_IDENTIFIER,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"global"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_PrivateIE_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* local */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global */
+};
+static asn_CHOICE_specifics_t asn_SPC_RUA_PrivateIE_ID_specs_1 = {
+	sizeof(struct RUA_PrivateIE_ID),
+	offsetof(struct RUA_PrivateIE_ID, _asn_ctx),
+	offsetof(struct RUA_PrivateIE_ID, present),
+	sizeof(((struct RUA_PrivateIE_ID *)0)->present),
+	asn_MAP_RUA_PrivateIE_ID_tag2el_1,
+	2,	/* Count of tags in the map */
+	0,
+	-1	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_PrivateIE_ID = {
+	"RUA_PrivateIE-ID",
+	"RUA_PrivateIE-ID",
+	CHOICE_free,
+	CHOICE_print,
+	CHOICE_constraint,
+	CHOICE_decode_ber,
+	CHOICE_encode_der,
+	CHOICE_decode_xer,
+	CHOICE_encode_xer,
+	CHOICE_decode_uper,
+	CHOICE_encode_uper,
+	CHOICE_decode_aper,
+	CHOICE_encode_aper,
+	CHOICE_outmost_tag,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	&asn_PER_type_RUA_PrivateIE_ID_constr_1,
+	asn_MBR_RUA_PrivateIE_ID_1,
+	2,	/* Elements count */
+	&asn_SPC_RUA_PrivateIE_ID_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_PrivateIE-ID.h b/src/rua/RUA_PrivateIE-ID.h
new file mode 100644
index 0000000..cc7c310
--- /dev/null
+++ b/src/rua/RUA_PrivateIE-ID.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef	_RUA_PrivateIE_ID_H_
+#define	_RUA_PrivateIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <OBJECT_IDENTIFIER.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_PrivateIE_ID_PR {
+	RUA_PrivateIE_ID_PR_NOTHING,	/* No components present */
+	RUA_PrivateIE_ID_PR_local,
+	RUA_PrivateIE_ID_PR_global
+} RUA_PrivateIE_ID_PR;
+
+/* RUA_PrivateIE-ID */
+typedef struct RUA_PrivateIE_ID {
+	RUA_PrivateIE_ID_PR present;
+	union RUA_PrivateIE_ID_u {
+		long	 local;
+		OBJECT_IDENTIFIER_t	 global;
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_PrivateIE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_PrivateIE_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_PrivateIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_PrivateMessage.c b/src/rua/RUA_PrivateMessage.c
new file mode 100644
index 0000000..a968cf1
--- /dev/null
+++ b/src/rua/RUA_PrivateMessage.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_PrivateMessage.h"
+
+static int
+memb_privateMessage_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 65535l)) {
+		/* Perform validation of the inner elements */
+		return td->check_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_per_constraints_t asn_PER_type_privateMessage_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_privateMessage_ies_constr_2 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_privateMessage_ies_2[] = {
+	{ ATF_POINTER, 0, 0,
+		-1 /* Ambiguous tag (CHOICE?) */,
+		0,
+		&asn_DEF_RUA_IE,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_privateMessage_ies_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_privateMessage_ies_specs_2 = {
+	sizeof(struct privateMessage_ies),
+	offsetof(struct privateMessage_ies, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_privateMessage_ies_2 = {
+	"privateMessage-ies",
+	"privateMessage-ies",
+	SEQUENCE_OF_free,
+	SEQUENCE_OF_print,
+	SEQUENCE_OF_constraint,
+	SEQUENCE_OF_decode_ber,
+	SEQUENCE_OF_encode_der,
+	SEQUENCE_OF_decode_xer,
+	SEQUENCE_OF_encode_xer,
+	SEQUENCE_OF_decode_uper,
+	SEQUENCE_OF_encode_uper,
+	SEQUENCE_OF_decode_aper,
+	SEQUENCE_OF_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_privateMessage_ies_tags_2,
+	sizeof(asn_DEF_privateMessage_ies_tags_2)
+		/sizeof(asn_DEF_privateMessage_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_privateMessage_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_privateMessage_ies_tags_2)
+		/sizeof(asn_DEF_privateMessage_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_privateMessage_ies_constr_2,
+	asn_MBR_privateMessage_ies_2,
+	1,	/* Single element */
+	&asn_SPC_privateMessage_ies_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_PrivateMessage_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_PrivateMessage, privateMessage_ies),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_privateMessage_ies_2,
+		memb_privateMessage_ies_constraint_1,
+		&asn_PER_memb_privateMessage_ies_constr_2,
+		0,
+		"privateMessage-ies"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_PrivateMessage_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_PrivateMessage_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* privateMessage-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_PrivateMessage_specs_1 = {
+	sizeof(struct RUA_PrivateMessage),
+	offsetof(struct RUA_PrivateMessage, _asn_ctx),
+	asn_MAP_RUA_PrivateMessage_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	0,	/* Start extensions */
+	2	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_PrivateMessage = {
+	"RUA_PrivateMessage",
+	"RUA_PrivateMessage",
+	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_RUA_PrivateMessage_tags_1,
+	sizeof(asn_DEF_RUA_PrivateMessage_tags_1)
+		/sizeof(asn_DEF_RUA_PrivateMessage_tags_1[0]), /* 1 */
+	asn_DEF_RUA_PrivateMessage_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_PrivateMessage_tags_1)
+		/sizeof(asn_DEF_RUA_PrivateMessage_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_PrivateMessage_1,
+	1,	/* Elements count */
+	&asn_SPC_RUA_PrivateMessage_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_PrivateMessage.h b/src/rua/RUA_PrivateMessage.h
new file mode 100644
index 0000000..4b4ce73
--- /dev/null
+++ b/src/rua/RUA_PrivateMessage.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_PrivateMessage_H_
+#define	_RUA_PrivateMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_IE.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_PrivateMessage */
+typedef struct RUA_PrivateMessage {
+	struct privateMessage_ies {
+		A_SEQUENCE_OF(RUA_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} privateMessage_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_PrivateMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_PrivateMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_PrivateMessage_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_ProcedureCode.c b/src/rua/RUA_ProcedureCode.c
new file mode 100644
index 0000000..70e9751
--- /dev/null
+++ b/src/rua/RUA_ProcedureCode.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include "RUA_ProcedureCode.h"
+
+int
+RUA_ProcedureCode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0l && value <= 255l)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_ProcedureCode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeInteger.free_struct;
+	td->print_struct   = asn_DEF_NativeInteger.print_struct;
+	td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeInteger.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeInteger.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeInteger.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeInteger.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeInteger.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeInteger.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeInteger.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeInteger.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+	td->elements       = asn_DEF_NativeInteger.elements;
+	td->elements_count = asn_DEF_NativeInteger.elements_count;
+	td->specifics      = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RUA_ProcedureCode_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_ProcedureCode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProcedureCode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_ProcedureCode_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProcedureCode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_ProcedureCode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProcedureCode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_ProcedureCode_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_ProcedureCode_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_ProcedureCode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_ProcedureCode_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 8,  8,  0l,  255l }	/* (0..255) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_ProcedureCode_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_ProcedureCode = {
+	"RUA_ProcedureCode",
+	"RUA_ProcedureCode",
+	RUA_ProcedureCode_free,
+	RUA_ProcedureCode_print,
+	RUA_ProcedureCode_constraint,
+	RUA_ProcedureCode_decode_ber,
+	RUA_ProcedureCode_encode_der,
+	RUA_ProcedureCode_decode_xer,
+	RUA_ProcedureCode_encode_xer,
+	RUA_ProcedureCode_decode_uper,
+	RUA_ProcedureCode_encode_uper,
+	RUA_ProcedureCode_decode_aper,
+	RUA_ProcedureCode_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_ProcedureCode_tags_1,
+	sizeof(asn_DEF_RUA_ProcedureCode_tags_1)
+		/sizeof(asn_DEF_RUA_ProcedureCode_tags_1[0]), /* 1 */
+	asn_DEF_RUA_ProcedureCode_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_ProcedureCode_tags_1)
+		/sizeof(asn_DEF_RUA_ProcedureCode_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_ProcedureCode_constr_1,
+	0, 0,	/* Defined elsewhere */
+	0	/* No specifics */
+};
+
diff --git a/src/rua/RUA_ProcedureCode.h b/src/rua/RUA_ProcedureCode.h
new file mode 100644
index 0000000..959ccd1
--- /dev/null
+++ b/src/rua/RUA_ProcedureCode.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef	_RUA_ProcedureCode_H_
+#define	_RUA_ProcedureCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_ProcedureCode {
+	RUA_ProcedureCode_id_Connect	= 1,
+	RUA_ProcedureCode_id_DirectTransfer	= 2,
+	RUA_ProcedureCode_id_Disconnect	= 3,
+	RUA_ProcedureCode_id_ConnectionlessTransfer	= 4,
+	RUA_ProcedureCode_id_ErrorIndication	= 5,
+	RUA_ProcedureCode_id_privateMessage	= 6
+} e_RUA_ProcedureCode;
+
+/* RUA_ProcedureCode */
+typedef long	 RUA_ProcedureCode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_ProcedureCode;
+asn_struct_free_f RUA_ProcedureCode_free;
+asn_struct_print_f RUA_ProcedureCode_print;
+asn_constr_check_f RUA_ProcedureCode_constraint;
+ber_type_decoder_f RUA_ProcedureCode_decode_ber;
+der_type_encoder_f RUA_ProcedureCode_encode_der;
+xer_type_decoder_f RUA_ProcedureCode_decode_xer;
+xer_type_encoder_f RUA_ProcedureCode_encode_xer;
+per_type_decoder_f RUA_ProcedureCode_decode_uper;
+per_type_encoder_f RUA_ProcedureCode_encode_uper;
+per_type_decoder_f RUA_ProcedureCode_decode_aper;
+per_type_encoder_f RUA_ProcedureCode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_ProcedureCode_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_ProtocolIE-ID.c b/src/rua/RUA_ProtocolIE-ID.c
new file mode 100644
index 0000000..59aff0b
--- /dev/null
+++ b/src/rua/RUA_ProtocolIE-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include "RUA_ProtocolIE-ID.h"
+
+int
+RUA_ProtocolIE_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0l && value <= 65535l)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeInteger.free_struct;
+	td->print_struct   = asn_DEF_NativeInteger.print_struct;
+	td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeInteger.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeInteger.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeInteger.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeInteger.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeInteger.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeInteger.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeInteger.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeInteger.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+	td->elements       = asn_DEF_NativeInteger.elements;
+	td->elements_count = asn_DEF_NativeInteger.elements_count;
+	td->specifics      = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RUA_ProtocolIE_ID_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_ProtocolIE_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProtocolIE_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_ProtocolIE_ID_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProtocolIE_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_ProtocolIE_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProtocolIE_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_ProtocolIE_ID_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_ProtocolIE_ID_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_ProtocolIE_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_ProtocolIE_ID_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (0..65535) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_ProtocolIE_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_ProtocolIE_ID = {
+	"RUA_ProtocolIE-ID",
+	"RUA_ProtocolIE-ID",
+	RUA_ProtocolIE_ID_free,
+	RUA_ProtocolIE_ID_print,
+	RUA_ProtocolIE_ID_constraint,
+	RUA_ProtocolIE_ID_decode_ber,
+	RUA_ProtocolIE_ID_encode_der,
+	RUA_ProtocolIE_ID_decode_xer,
+	RUA_ProtocolIE_ID_encode_xer,
+	RUA_ProtocolIE_ID_decode_uper,
+	RUA_ProtocolIE_ID_encode_uper,
+	RUA_ProtocolIE_ID_decode_aper,
+	RUA_ProtocolIE_ID_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_ProtocolIE_ID_tags_1,
+	sizeof(asn_DEF_RUA_ProtocolIE_ID_tags_1)
+		/sizeof(asn_DEF_RUA_ProtocolIE_ID_tags_1[0]), /* 1 */
+	asn_DEF_RUA_ProtocolIE_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_ProtocolIE_ID_tags_1)
+		/sizeof(asn_DEF_RUA_ProtocolIE_ID_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_ProtocolIE_ID_constr_1,
+	0, 0,	/* Defined elsewhere */
+	0	/* No specifics */
+};
+
diff --git a/src/rua/RUA_ProtocolIE-ID.h b/src/rua/RUA_ProtocolIE-ID.h
new file mode 100644
index 0000000..1eecdc4
--- /dev/null
+++ b/src/rua/RUA_ProtocolIE-ID.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef	_RUA_ProtocolIE_ID_H_
+#define	_RUA_ProtocolIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_ProtocolIE_ID {
+	RUA_ProtocolIE_ID_id_Cause	= 1,
+	RUA_ProtocolIE_ID_id_CriticalityDiagnostics	= 2,
+	RUA_ProtocolIE_ID_id_Context_ID	= 3,
+	RUA_ProtocolIE_ID_id_RANAP_Message	= 4,
+	RUA_ProtocolIE_ID_id_IntraDomainNasNodeSelector	= 5,
+	RUA_ProtocolIE_ID_id_Establishment_Cause	= 6,
+	RUA_ProtocolIE_ID_id_CN_DomainIndicator	= 7,
+	RUA_ProtocolIE_ID_id_CSGMembershipStatus	= 9
+} e_RUA_ProtocolIE_ID;
+
+/* RUA_ProtocolIE-ID */
+typedef long	 RUA_ProtocolIE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_ProtocolIE_ID;
+asn_struct_free_f RUA_ProtocolIE_ID_free;
+asn_struct_print_f RUA_ProtocolIE_ID_print;
+asn_constr_check_f RUA_ProtocolIE_ID_constraint;
+ber_type_decoder_f RUA_ProtocolIE_ID_decode_ber;
+der_type_encoder_f RUA_ProtocolIE_ID_encode_der;
+xer_type_decoder_f RUA_ProtocolIE_ID_decode_xer;
+xer_type_encoder_f RUA_ProtocolIE_ID_encode_xer;
+per_type_decoder_f RUA_ProtocolIE_ID_decode_uper;
+per_type_encoder_f RUA_ProtocolIE_ID_encode_uper;
+per_type_decoder_f RUA_ProtocolIE_ID_decode_aper;
+per_type_encoder_f RUA_ProtocolIE_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_ProtocolIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_RANAP-Message.c b/src/rua/RUA_RANAP-Message.c
new file mode 100644
index 0000000..44e211e
--- /dev/null
+++ b/src/rua/RUA_RANAP-Message.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_RANAP-Message.h"
+
+int
+RUA_RANAP_Message_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_RANAP_Message_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_OCTET_STRING.free_struct;
+	td->print_struct   = asn_DEF_OCTET_STRING.print_struct;
+	td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+	td->ber_decoder    = asn_DEF_OCTET_STRING.ber_decoder;
+	td->der_encoder    = asn_DEF_OCTET_STRING.der_encoder;
+	td->xer_decoder    = asn_DEF_OCTET_STRING.xer_decoder;
+	td->xer_encoder    = asn_DEF_OCTET_STRING.xer_encoder;
+	td->uper_decoder   = asn_DEF_OCTET_STRING.uper_decoder;
+	td->uper_encoder   = asn_DEF_OCTET_STRING.uper_encoder;
+	td->aper_decoder   = asn_DEF_OCTET_STRING.aper_decoder;
+	td->aper_encoder   = asn_DEF_OCTET_STRING.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+	td->elements       = asn_DEF_OCTET_STRING.elements;
+	td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+	td->specifics      = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RUA_RANAP_Message_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_RANAP_Message_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RANAP_Message_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_RANAP_Message_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RANAP_Message_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_RANAP_Message_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RANAP_Message_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_RANAP_Message_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_RANAP_Message_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_RANAP_Message_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RUA_RANAP_Message_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_RANAP_Message = {
+	"RUA_RANAP-Message",
+	"RUA_RANAP-Message",
+	RUA_RANAP_Message_free,
+	RUA_RANAP_Message_print,
+	RUA_RANAP_Message_constraint,
+	RUA_RANAP_Message_decode_ber,
+	RUA_RANAP_Message_encode_der,
+	RUA_RANAP_Message_decode_xer,
+	RUA_RANAP_Message_encode_xer,
+	RUA_RANAP_Message_decode_uper,
+	RUA_RANAP_Message_encode_uper,
+	RUA_RANAP_Message_decode_aper,
+	RUA_RANAP_Message_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_RANAP_Message_tags_1,
+	sizeof(asn_DEF_RUA_RANAP_Message_tags_1)
+		/sizeof(asn_DEF_RUA_RANAP_Message_tags_1[0]), /* 1 */
+	asn_DEF_RUA_RANAP_Message_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_RANAP_Message_tags_1)
+		/sizeof(asn_DEF_RUA_RANAP_Message_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/src/rua/RUA_RANAP-Message.h b/src/rua/RUA_RANAP-Message.h
new file mode 100644
index 0000000..0dc755a
--- /dev/null
+++ b/src/rua/RUA_RANAP-Message.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_RANAP_Message_H_
+#define	_RUA_RANAP_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_RANAP-Message */
+typedef OCTET_STRING_t	 RUA_RANAP_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_RANAP_Message;
+asn_struct_free_f RUA_RANAP_Message_free;
+asn_struct_print_f RUA_RANAP_Message_print;
+asn_constr_check_f RUA_RANAP_Message_constraint;
+ber_type_decoder_f RUA_RANAP_Message_decode_ber;
+der_type_encoder_f RUA_RANAP_Message_encode_der;
+xer_type_decoder_f RUA_RANAP_Message_decode_xer;
+xer_type_encoder_f RUA_RANAP_Message_encode_xer;
+per_type_decoder_f RUA_RANAP_Message_decode_uper;
+per_type_encoder_f RUA_RANAP_Message_encode_uper;
+per_type_decoder_f RUA_RANAP_Message_decode_aper;
+per_type_encoder_f RUA_RANAP_Message_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_RANAP_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_RUA-PDU.c b/src/rua/RUA_RUA-PDU.c
new file mode 100644
index 0000000..29533ac
--- /dev/null
+++ b/src/rua/RUA_RUA-PDU.c
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_RUA-PDU.h"
+
+static asn_per_constraints_t asn_PER_type_RUA_RUA_PDU_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0l,  2l }	/* (0..2,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RUA_RUA_PDU_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_RUA_PDU, choice.initiatingMessage),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_InitiatingMessage,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"initiatingMessage"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_RUA_PDU, choice.successfulOutcome),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_SuccessfulOutcome,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"successfulOutcome"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_RUA_PDU, choice.unsuccessfulOutcome),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_UnsuccessfulOutcome,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"unsuccessfulOutcome"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_RUA_PDU_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */
+};
+static asn_CHOICE_specifics_t asn_SPC_RUA_RUA_PDU_specs_1 = {
+	sizeof(struct RUA_RUA_PDU),
+	offsetof(struct RUA_RUA_PDU, _asn_ctx),
+	offsetof(struct RUA_RUA_PDU, present),
+	sizeof(((struct RUA_RUA_PDU *)0)->present),
+	asn_MAP_RUA_RUA_PDU_tag2el_1,
+	3,	/* Count of tags in the map */
+	0,
+	3	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_RUA_PDU = {
+	"RUA_RUA-PDU",
+	"RUA_RUA-PDU",
+	CHOICE_free,
+	CHOICE_print,
+	CHOICE_constraint,
+	CHOICE_decode_ber,
+	CHOICE_encode_der,
+	CHOICE_decode_xer,
+	CHOICE_encode_xer,
+	CHOICE_decode_uper,
+	CHOICE_encode_uper,
+	CHOICE_decode_aper,
+	CHOICE_encode_aper,
+	CHOICE_outmost_tag,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	&asn_PER_type_RUA_RUA_PDU_constr_1,
+	asn_MBR_RUA_RUA_PDU_1,
+	3,	/* Elements count */
+	&asn_SPC_RUA_RUA_PDU_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_RUA-PDU.h b/src/rua/RUA_RUA-PDU.h
new file mode 100644
index 0000000..2ff8f95
--- /dev/null
+++ b/src/rua/RUA_RUA-PDU.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_RUA_PDU_H_
+#define	_RUA_RUA_PDU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_InitiatingMessage.h"
+#include "RUA_SuccessfulOutcome.h"
+#include "RUA_UnsuccessfulOutcome.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_RUA_PDU_PR {
+	RUA_RUA_PDU_PR_NOTHING,	/* No components present */
+	RUA_RUA_PDU_PR_initiatingMessage,
+	RUA_RUA_PDU_PR_successfulOutcome,
+	RUA_RUA_PDU_PR_unsuccessfulOutcome,
+	/* Extensions may appear below */
+	
+} RUA_RUA_PDU_PR;
+
+/* RUA_RUA-PDU */
+typedef struct RUA_RUA_PDU {
+	RUA_RUA_PDU_PR present;
+	union RUA_RUA_PDU_u {
+		RUA_InitiatingMessage_t	 initiatingMessage;
+		RUA_SuccessfulOutcome_t	 successfulOutcome;
+		RUA_UnsuccessfulOutcome_t	 unsuccessfulOutcome;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_RUA_PDU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_RUA_PDU;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_RUA_PDU_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_RoutingParameter.c b/src/rua/RUA_RoutingParameter.c
new file mode 100644
index 0000000..d1685b0
--- /dev/null
+++ b/src/rua/RUA_RoutingParameter.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_RoutingParameter.h"
+
+int
+RUA_RoutingParameter_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 10l)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_RoutingParameter_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_BIT_STRING.free_struct;
+	td->print_struct   = asn_DEF_BIT_STRING.print_struct;
+	td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+	td->ber_decoder    = asn_DEF_BIT_STRING.ber_decoder;
+	td->der_encoder    = asn_DEF_BIT_STRING.der_encoder;
+	td->xer_decoder    = asn_DEF_BIT_STRING.xer_decoder;
+	td->xer_encoder    = asn_DEF_BIT_STRING.xer_encoder;
+	td->uper_decoder   = asn_DEF_BIT_STRING.uper_decoder;
+	td->uper_encoder   = asn_DEF_BIT_STRING.uper_encoder;
+	td->aper_decoder   = asn_DEF_BIT_STRING.aper_decoder;
+	td->aper_encoder   = asn_DEF_BIT_STRING.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+	td->elements       = asn_DEF_BIT_STRING.elements;
+	td->elements_count = asn_DEF_BIT_STRING.elements_count;
+	td->specifics      = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RUA_RoutingParameter_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_RoutingParameter_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RoutingParameter_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_RoutingParameter_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RoutingParameter_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_RoutingParameter_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RoutingParameter_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_RoutingParameter_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_RoutingParameter_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_RoutingParameter_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_RoutingParameter_constr_1 GCC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  10l,  10l }	/* (SIZE(10..10)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_RoutingParameter_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_RoutingParameter = {
+	"RUA_RoutingParameter",
+	"RUA_RoutingParameter",
+	RUA_RoutingParameter_free,
+	RUA_RoutingParameter_print,
+	RUA_RoutingParameter_constraint,
+	RUA_RoutingParameter_decode_ber,
+	RUA_RoutingParameter_encode_der,
+	RUA_RoutingParameter_decode_xer,
+	RUA_RoutingParameter_encode_xer,
+	RUA_RoutingParameter_decode_uper,
+	RUA_RoutingParameter_encode_uper,
+	RUA_RoutingParameter_decode_aper,
+	RUA_RoutingParameter_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_RoutingParameter_tags_1,
+	sizeof(asn_DEF_RUA_RoutingParameter_tags_1)
+		/sizeof(asn_DEF_RUA_RoutingParameter_tags_1[0]), /* 1 */
+	asn_DEF_RUA_RoutingParameter_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_RoutingParameter_tags_1)
+		/sizeof(asn_DEF_RUA_RoutingParameter_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_RoutingParameter_constr_1,
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/src/rua/RUA_RoutingParameter.h b/src/rua/RUA_RoutingParameter.h
new file mode 100644
index 0000000..2373f72
--- /dev/null
+++ b/src/rua/RUA_RoutingParameter.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_RoutingParameter_H_
+#define	_RUA_RoutingParameter_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_RoutingParameter */
+typedef BIT_STRING_t	 RUA_RoutingParameter_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_RoutingParameter;
+asn_struct_free_f RUA_RoutingParameter_free;
+asn_struct_print_f RUA_RoutingParameter_print;
+asn_constr_check_f RUA_RoutingParameter_constraint;
+ber_type_decoder_f RUA_RoutingParameter_decode_ber;
+der_type_encoder_f RUA_RoutingParameter_encode_der;
+xer_type_decoder_f RUA_RoutingParameter_decode_xer;
+xer_type_encoder_f RUA_RoutingParameter_encode_xer;
+per_type_decoder_f RUA_RoutingParameter_decode_uper;
+per_type_encoder_f RUA_RoutingParameter_encode_uper;
+per_type_decoder_f RUA_RoutingParameter_decode_aper;
+per_type_encoder_f RUA_RoutingParameter_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_RoutingParameter_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_SuccessfulOutcome.c b/src/rua/RUA_SuccessfulOutcome.c
new file mode 100644
index 0000000..d6c2fb5
--- /dev/null
+++ b/src/rua/RUA_SuccessfulOutcome.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_SuccessfulOutcome.h"
+
+static asn_TYPE_member_t asn_MBR_RUA_SuccessfulOutcome_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_SuccessfulOutcome, procedureCode),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_ProcedureCode,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"procedureCode"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_SuccessfulOutcome, criticality),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_Criticality,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"criticality"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_SuccessfulOutcome, value),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ANY,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"value"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_SuccessfulOutcome_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_SuccessfulOutcome_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_SuccessfulOutcome_specs_1 = {
+	sizeof(struct RUA_SuccessfulOutcome),
+	offsetof(struct RUA_SuccessfulOutcome, _asn_ctx),
+	asn_MAP_RUA_SuccessfulOutcome_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_SuccessfulOutcome = {
+	"RUA_SuccessfulOutcome",
+	"RUA_SuccessfulOutcome",
+	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_RUA_SuccessfulOutcome_tags_1,
+	sizeof(asn_DEF_RUA_SuccessfulOutcome_tags_1)
+		/sizeof(asn_DEF_RUA_SuccessfulOutcome_tags_1[0]), /* 1 */
+	asn_DEF_RUA_SuccessfulOutcome_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_SuccessfulOutcome_tags_1)
+		/sizeof(asn_DEF_RUA_SuccessfulOutcome_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_SuccessfulOutcome_1,
+	3,	/* Elements count */
+	&asn_SPC_RUA_SuccessfulOutcome_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_SuccessfulOutcome.h b/src/rua/RUA_SuccessfulOutcome.h
new file mode 100644
index 0000000..3d144ba
--- /dev/null
+++ b/src/rua/RUA_SuccessfulOutcome.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_SuccessfulOutcome_H_
+#define	_RUA_SuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_ProcedureCode.h"
+#include "RUA_Criticality.h"
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_SuccessfulOutcome */
+typedef struct RUA_SuccessfulOutcome {
+	RUA_ProcedureCode_t	 procedureCode;
+	RUA_Criticality_t	 criticality;
+	ANY_t	 value;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_SuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_SuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_SuccessfulOutcome_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_TriggeringMessage.c b/src/rua/RUA_TriggeringMessage.c
new file mode 100644
index 0000000..10dbb5e
--- /dev/null
+++ b/src/rua/RUA_TriggeringMessage.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include "RUA_TriggeringMessage.h"
+
+int
+RUA_TriggeringMessage_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_TriggeringMessage_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_TriggeringMessage_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_TriggeringMessage_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TriggeringMessage_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_TriggeringMessage_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TriggeringMessage_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_TriggeringMessage_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TriggeringMessage_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_TriggeringMessage_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_TriggeringMessage_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_TriggeringMessage_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_TriggeringMessage_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED,	 2,  2,  0l,  2l }	/* (0..2) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_TriggeringMessage_value2enum_1[] = {
+	{ 0,	18,	"initiating-message" },
+	{ 1,	18,	"successful-outcome" },
+	{ 2,	20,	"unsuccessful-outcome" }
+};
+static const unsigned int asn_MAP_RUA_TriggeringMessage_enum2value_1[] = {
+	0,	/* initiating-message(0) */
+	1,	/* successful-outcome(1) */
+	2	/* unsuccessful-outcome(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_TriggeringMessage_specs_1 = {
+	asn_MAP_RUA_TriggeringMessage_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_TriggeringMessage_enum2value_1,	/* N => "tag"; sorted by N */
+	3,	/* Number of elements in the maps */
+	0,	/* Enumeration is not extensible */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_TriggeringMessage_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_TriggeringMessage = {
+	"RUA_TriggeringMessage",
+	"RUA_TriggeringMessage",
+	RUA_TriggeringMessage_free,
+	RUA_TriggeringMessage_print,
+	RUA_TriggeringMessage_constraint,
+	RUA_TriggeringMessage_decode_ber,
+	RUA_TriggeringMessage_encode_der,
+	RUA_TriggeringMessage_decode_xer,
+	RUA_TriggeringMessage_encode_xer,
+	RUA_TriggeringMessage_decode_uper,
+	RUA_TriggeringMessage_encode_uper,
+	RUA_TriggeringMessage_decode_aper,
+	RUA_TriggeringMessage_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_TriggeringMessage_tags_1,
+	sizeof(asn_DEF_RUA_TriggeringMessage_tags_1)
+		/sizeof(asn_DEF_RUA_TriggeringMessage_tags_1[0]), /* 1 */
+	asn_DEF_RUA_TriggeringMessage_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_TriggeringMessage_tags_1)
+		/sizeof(asn_DEF_RUA_TriggeringMessage_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_TriggeringMessage_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_TriggeringMessage_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_TriggeringMessage.h b/src/rua/RUA_TriggeringMessage.h
new file mode 100644
index 0000000..b094da6
--- /dev/null
+++ b/src/rua/RUA_TriggeringMessage.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * 	found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef	_RUA_TriggeringMessage_H_
+#define	_RUA_TriggeringMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_TriggeringMessage {
+	RUA_TriggeringMessage_initiating_message	= 0,
+	RUA_TriggeringMessage_successful_outcome	= 1,
+	RUA_TriggeringMessage_unsuccessful_outcome	= 2
+} e_RUA_TriggeringMessage;
+
+/* RUA_TriggeringMessage */
+typedef long	 RUA_TriggeringMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_TriggeringMessage;
+asn_struct_free_f RUA_TriggeringMessage_free;
+asn_struct_print_f RUA_TriggeringMessage_print;
+asn_constr_check_f RUA_TriggeringMessage_constraint;
+ber_type_decoder_f RUA_TriggeringMessage_decode_ber;
+der_type_encoder_f RUA_TriggeringMessage_encode_der;
+xer_type_decoder_f RUA_TriggeringMessage_decode_xer;
+xer_type_encoder_f RUA_TriggeringMessage_encode_xer;
+per_type_decoder_f RUA_TriggeringMessage_decode_uper;
+per_type_encoder_f RUA_TriggeringMessage_encode_uper;
+per_type_decoder_f RUA_TriggeringMessage_decode_aper;
+per_type_encoder_f RUA_TriggeringMessage_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_TriggeringMessage_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_TypeOfError.c b/src/rua/RUA_TypeOfError.c
new file mode 100644
index 0000000..0dd2f2e
--- /dev/null
+++ b/src/rua/RUA_TypeOfError.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include "RUA_TypeOfError.h"
+
+int
+RUA_TypeOfError_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	/* Replace with underlying type checker */
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_TypeOfError_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_NativeEnumerated.free_struct;
+	td->print_struct   = asn_DEF_NativeEnumerated.print_struct;
+	td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+	td->ber_decoder    = asn_DEF_NativeEnumerated.ber_decoder;
+	td->der_encoder    = asn_DEF_NativeEnumerated.der_encoder;
+	td->xer_decoder    = asn_DEF_NativeEnumerated.xer_decoder;
+	td->xer_encoder    = asn_DEF_NativeEnumerated.xer_encoder;
+	td->uper_decoder   = asn_DEF_NativeEnumerated.uper_decoder;
+	td->uper_encoder   = asn_DEF_NativeEnumerated.uper_encoder;
+	td->aper_decoder   = asn_DEF_NativeEnumerated.aper_decoder;
+	td->aper_encoder   = asn_DEF_NativeEnumerated.aper_encoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+	td->elements       = asn_DEF_NativeEnumerated.elements;
+	td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+     /* td->specifics      = asn_DEF_NativeEnumerated.specifics;	// Defined explicitly */
+}
+
+void
+RUA_TypeOfError_free(asn_TYPE_descriptor_t *td,
+		void *struct_ptr, int contents_only) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_TypeOfError_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TypeOfError_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const void *bufptr, size_t size, int tag_mode) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_TypeOfError_encode_der(asn_TYPE_descriptor_t *td,
+		void *structure, int tag_mode, ber_tlv_tag_t tag,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TypeOfError_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_TypeOfError_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+		int ilevel, enum xer_encoder_flags_e flags,
+		asn_app_consume_bytes_f *cb, void *app_key) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TypeOfError_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_TypeOfError_encode_uper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_TypeOfError_encode_aper(asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints,
+		void *structure, asn_per_outp_t *per_out) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_TypeOfError_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+		asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+	RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+	return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_TypeOfError_constr_1 GCC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0l,  1l }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_TypeOfError_value2enum_1[] = {
+	{ 0,	14,	"not-understood" },
+	{ 1,	7,	"missing" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_TypeOfError_enum2value_1[] = {
+	1,	/* missing(1) */
+	0	/* not-understood(0) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_TypeOfError_specs_1 = {
+	asn_MAP_RUA_TypeOfError_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RUA_TypeOfError_enum2value_1,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_TypeOfError_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_TypeOfError = {
+	"RUA_TypeOfError",
+	"RUA_TypeOfError",
+	RUA_TypeOfError_free,
+	RUA_TypeOfError_print,
+	RUA_TypeOfError_constraint,
+	RUA_TypeOfError_decode_ber,
+	RUA_TypeOfError_encode_der,
+	RUA_TypeOfError_decode_xer,
+	RUA_TypeOfError_encode_xer,
+	RUA_TypeOfError_decode_uper,
+	RUA_TypeOfError_encode_uper,
+	RUA_TypeOfError_decode_aper,
+	RUA_TypeOfError_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RUA_TypeOfError_tags_1,
+	sizeof(asn_DEF_RUA_TypeOfError_tags_1)
+		/sizeof(asn_DEF_RUA_TypeOfError_tags_1[0]), /* 1 */
+	asn_DEF_RUA_TypeOfError_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_TypeOfError_tags_1)
+		/sizeof(asn_DEF_RUA_TypeOfError_tags_1[0]), /* 1 */
+	&asn_PER_type_RUA_TypeOfError_constr_1,
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RUA_TypeOfError_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_TypeOfError.h b/src/rua/RUA_TypeOfError.h
new file mode 100644
index 0000000..4a45bff
--- /dev/null
+++ b/src/rua/RUA_TypeOfError.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * 	found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef	_RUA_TypeOfError_H_
+#define	_RUA_TypeOfError_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_TypeOfError {
+	RUA_TypeOfError_not_understood	= 0,
+	RUA_TypeOfError_missing	= 1
+	/*
+	 * Enumeration is extensible
+	 */
+} e_RUA_TypeOfError;
+
+/* RUA_TypeOfError */
+typedef long	 RUA_TypeOfError_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_TypeOfError;
+asn_struct_free_f RUA_TypeOfError_free;
+asn_struct_print_f RUA_TypeOfError_print;
+asn_constr_check_f RUA_TypeOfError_constraint;
+ber_type_decoder_f RUA_TypeOfError_decode_ber;
+der_type_encoder_f RUA_TypeOfError_encode_der;
+xer_type_decoder_f RUA_TypeOfError_decode_xer;
+xer_type_encoder_f RUA_TypeOfError_encode_xer;
+per_type_decoder_f RUA_TypeOfError_decode_uper;
+per_type_encoder_f RUA_TypeOfError_encode_uper;
+per_type_decoder_f RUA_TypeOfError_decode_aper;
+per_type_encoder_f RUA_TypeOfError_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_TypeOfError_H_ */
+#include <asn_internal.h>
diff --git a/src/rua/RUA_UnsuccessfulOutcome.c b/src/rua/RUA_UnsuccessfulOutcome.c
new file mode 100644
index 0000000..9aa1c81
--- /dev/null
+++ b/src/rua/RUA_UnsuccessfulOutcome.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include "RUA_UnsuccessfulOutcome.h"
+
+static asn_TYPE_member_t asn_MBR_RUA_UnsuccessfulOutcome_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_UnsuccessfulOutcome, procedureCode),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_ProcedureCode,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"procedureCode"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_UnsuccessfulOutcome, criticality),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RUA_Criticality,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"criticality"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RUA_UnsuccessfulOutcome, value),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ANY,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"value"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RUA_UnsuccessfulOutcome_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_UnsuccessfulOutcome_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_UnsuccessfulOutcome_specs_1 = {
+	sizeof(struct RUA_UnsuccessfulOutcome),
+	offsetof(struct RUA_UnsuccessfulOutcome, _asn_ctx),
+	asn_MAP_RUA_UnsuccessfulOutcome_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_UnsuccessfulOutcome = {
+	"RUA_UnsuccessfulOutcome",
+	"RUA_UnsuccessfulOutcome",
+	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_RUA_UnsuccessfulOutcome_tags_1,
+	sizeof(asn_DEF_RUA_UnsuccessfulOutcome_tags_1)
+		/sizeof(asn_DEF_RUA_UnsuccessfulOutcome_tags_1[0]), /* 1 */
+	asn_DEF_RUA_UnsuccessfulOutcome_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RUA_UnsuccessfulOutcome_tags_1)
+		/sizeof(asn_DEF_RUA_UnsuccessfulOutcome_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RUA_UnsuccessfulOutcome_1,
+	3,	/* Elements count */
+	&asn_SPC_RUA_UnsuccessfulOutcome_specs_1	/* Additional specs */
+};
+
diff --git a/src/rua/RUA_UnsuccessfulOutcome.h b/src/rua/RUA_UnsuccessfulOutcome.h
new file mode 100644
index 0000000..90fc7c0
--- /dev/null
+++ b/src/rua/RUA_UnsuccessfulOutcome.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * 	found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef	_RUA_UnsuccessfulOutcome_H_
+#define	_RUA_UnsuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RUA_ProcedureCode.h"
+#include "RUA_Criticality.h"
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_UnsuccessfulOutcome */
+typedef struct RUA_UnsuccessfulOutcome {
+	RUA_ProcedureCode_t	 procedureCode;
+	RUA_Criticality_t	 criticality;
+	ANY_t	 value;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RUA_UnsuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_UnsuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RUA_UnsuccessfulOutcome_H_ */
+#include <asn_internal.h>