/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "S1AP-IEs"
 * 	found in "./asn1c/S1AP-IEs.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -gen-PER -findirect-choice -pdu=S1AP-PDU`
 */

#ifndef	_TrafficLoadReductionIndication_H_
#define	_TrafficLoadReductionIndication_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* TrafficLoadReductionIndication */
typedef long	 TrafficLoadReductionIndication_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_TrafficLoadReductionIndication_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_TrafficLoadReductionIndication;
asn_struct_free_f TrafficLoadReductionIndication_free;
asn_struct_print_f TrafficLoadReductionIndication_print;
asn_constr_check_f TrafficLoadReductionIndication_constraint;
ber_type_decoder_f TrafficLoadReductionIndication_decode_ber;
der_type_encoder_f TrafficLoadReductionIndication_encode_der;
xer_type_decoder_f TrafficLoadReductionIndication_decode_xer;
xer_type_encoder_f TrafficLoadReductionIndication_encode_xer;
oer_type_decoder_f TrafficLoadReductionIndication_decode_oer;
oer_type_encoder_f TrafficLoadReductionIndication_encode_oer;
per_type_decoder_f TrafficLoadReductionIndication_decode_uper;
per_type_encoder_f TrafficLoadReductionIndication_encode_uper;
per_type_decoder_f TrafficLoadReductionIndication_decode_aper;
per_type_encoder_f TrafficLoadReductionIndication_encode_aper;

#ifdef __cplusplus
}
#endif

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