/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "E2AP-IEs"
 * 	found in "e2ap-oran-wg3-v01.00.asn"
 * 	`asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER`
 */

#include "RICactionDefinition.h"

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

