/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "RUA-IEs"
 * 	found in "../../asn1/rua/RUA-IEs.asn"
 */

#ifndef	_RUA_CauseTransport_H_
#define	_RUA_CauseTransport_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RUA_CauseTransport {
	RUA_CauseTransport_transport_resource_unavailable	= 0,
	RUA_CauseTransport_unspecified	= 1
	/*
	 * Enumeration is extensible
	 */
} e_RUA_CauseTransport;

/* RUA_CauseTransport */
typedef long	 RUA_CauseTransport_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RUA_CauseTransport;
asn_struct_free_f RUA_CauseTransport_free;
asn_struct_print_f RUA_CauseTransport_print;
asn_constr_check_f RUA_CauseTransport_constraint;
ber_type_decoder_f RUA_CauseTransport_decode_ber;
der_type_encoder_f RUA_CauseTransport_encode_der;
xer_type_decoder_f RUA_CauseTransport_decode_xer;
xer_type_encoder_f RUA_CauseTransport_encode_xer;
per_type_decoder_f RUA_CauseTransport_decode_uper;
per_type_encoder_f RUA_CauseTransport_encode_uper;
per_type_decoder_f RUA_CauseTransport_decode_aper;
per_type_encoder_f RUA_CauseTransport_encode_aper;

#ifdef __cplusplus
}
#endif

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