/*
 * 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	_TargeteNBtoSource_eNBTransparentContainer_H_
#define	_TargeteNBtoSource_eNBTransparentContainer_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* TargeteNBtoSource-eNBTransparentContainer */
typedef OCTET_STRING_t	 TargeteNBtoSource_eNBTransparentContainer_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_TargeteNBtoSource_eNBTransparentContainer;
asn_struct_free_f TargeteNBtoSource_eNBTransparentContainer_free;
asn_struct_print_f TargeteNBtoSource_eNBTransparentContainer_print;
asn_constr_check_f TargeteNBtoSource_eNBTransparentContainer_constraint;
ber_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_ber;
der_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_der;
xer_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_xer;
xer_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_xer;
oer_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_oer;
oer_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_oer;
per_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_uper;
per_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_uper;
per_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_aper;
per_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_aper;

#ifdef __cplusplus
}
#endif

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