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

#ifndef	_RANAP_IuSignallingConnectionIdentifier_H_
#define	_RANAP_IuSignallingConnectionIdentifier_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_IuSignallingConnectionIdentifier */
typedef BIT_STRING_t	 RANAP_IuSignallingConnectionIdentifier_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_IuSignallingConnectionIdentifier;
asn_struct_free_f RANAP_IuSignallingConnectionIdentifier_free;
asn_struct_print_f RANAP_IuSignallingConnectionIdentifier_print;
asn_constr_check_f RANAP_IuSignallingConnectionIdentifier_constraint;
ber_type_decoder_f RANAP_IuSignallingConnectionIdentifier_decode_ber;
der_type_encoder_f RANAP_IuSignallingConnectionIdentifier_encode_der;
xer_type_decoder_f RANAP_IuSignallingConnectionIdentifier_decode_xer;
xer_type_encoder_f RANAP_IuSignallingConnectionIdentifier_encode_xer;
per_type_decoder_f RANAP_IuSignallingConnectionIdentifier_decode_uper;
per_type_encoder_f RANAP_IuSignallingConnectionIdentifier_encode_uper;
per_type_decoder_f RANAP_IuSignallingConnectionIdentifier_decode_aper;
per_type_encoder_f RANAP_IuSignallingConnectionIdentifier_encode_aper;

#ifdef __cplusplus
}
#endif

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