/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "E2AP-IEs"
 * 	found in "Spec/e2_and_x2-combined-and-minimized.asn1"
 * 	`asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example`
 */

#include "RANfunctionDefinition.h"

/*
 * This type is implemented using OCTET_STRING,
 * so here we adjust the DEF accordingly.
 */
static const ber_tlv_tag_t asn_DEF_RANfunctionDefinition_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
};
asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition = {
	"RANfunctionDefinition",
	"RANfunctionDefinition",
	&asn_OP_OCTET_STRING,
	asn_DEF_RANfunctionDefinition_tags_1,
	sizeof(asn_DEF_RANfunctionDefinition_tags_1)
		/sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */
	asn_DEF_RANfunctionDefinition_tags_1,	/* Same as above */
	sizeof(asn_DEF_RANfunctionDefinition_tags_1)
		/sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */
	{ 0, 0, OCTET_STRING_constraint },
	0, 0,	/* No members */
	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
};

