/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-IEs"
 * 	found in "X2AP-15-4-0.asn1"
 * 	`asn1c -D ./asn1_n1 -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example`
 */

#ifndef	_NewDRBIDrequest_H_
#define	_NewDRBIDrequest_H_


#include <asn_application.h>

/* Including external dependencies */
#include <NativeEnumerated.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum NewDRBIDrequest {
	NewDRBIDrequest_true	= 0
	/*
	 * Enumeration is extensible
	 */
} e_NewDRBIDrequest;

/* NewDRBIDrequest */
typedef long	 NewDRBIDrequest_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_NewDRBIDrequest;
asn_struct_free_f NewDRBIDrequest_free;
asn_struct_print_f NewDRBIDrequest_print;
asn_constr_check_f NewDRBIDrequest_constraint;
ber_type_decoder_f NewDRBIDrequest_decode_ber;
der_type_encoder_f NewDRBIDrequest_encode_der;
xer_type_decoder_f NewDRBIDrequest_decode_xer;
xer_type_encoder_f NewDRBIDrequest_encode_xer;
oer_type_decoder_f NewDRBIDrequest_decode_oer;
oer_type_encoder_f NewDRBIDrequest_encode_oer;
per_type_decoder_f NewDRBIDrequest_decode_uper;
per_type_encoder_f NewDRBIDrequest_encode_uper;
per_type_decoder_f NewDRBIDrequest_decode_aper;
per_type_encoder_f NewDRBIDrequest_encode_aper;

#ifdef __cplusplus
}
#endif

#endif	/* _NewDRBIDrequest_H_ */
#include <asn_internal.h>
