/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "HNBAP-IEs"
 * 	found in "../../asn1/hnbap/HNBAP-IEs.asn"
 * 	`asn1c -gen-PER`
 */

#ifndef	_MuxPortNumber_H_
#define	_MuxPortNumber_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* MuxPortNumber */
typedef long	 MuxPortNumber_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_MuxPortNumber;
asn_struct_free_f MuxPortNumber_free;
asn_struct_print_f MuxPortNumber_print;
asn_constr_check_f MuxPortNumber_constraint;
ber_type_decoder_f MuxPortNumber_decode_ber;
der_type_encoder_f MuxPortNumber_encode_der;
xer_type_decoder_f MuxPortNumber_decode_xer;
xer_type_encoder_f MuxPortNumber_encode_xer;
per_type_decoder_f MuxPortNumber_decode_uper;
per_type_encoder_f MuxPortNumber_encode_uper;
per_type_decoder_f MuxPortNumber_decode_aper;
per_type_encoder_f MuxPortNumber_encode_aper;

#ifdef __cplusplus
}
#endif

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