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


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/ranap/RANAP_TrafficClass.h>
#include <osmocom/ranap/RANAP_RAB-AsymmetryIndicator.h>
#include <osmocom/ranap/RANAP_RAB-Parameter-MaxBitrateList.h>
#include <osmocom/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.h>
#include <osmocom/ranap/RANAP_DeliveryOrder.h>
#include <osmocom/ranap/RANAP_MaxSDU-Size.h>
#include <osmocom/ranap/RANAP_SDU-Parameters.h>
#include <osmocom/ranap/RANAP_TransferDelay.h>
#include <osmocom/ranap/RANAP_TrafficHandlingPriority.h>
#include <osmocom/ranap/RANAP_AllocationOrRetentionPriority.h>
#include <osmocom/ranap/RANAP_SourceStatisticsDescriptor.h>
#include <osmocom/ranap/RANAP_RelocationRequirement.h>
#include <osmocom/ranap/RANAP_IE-Extensions.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_RAB-Parameters */
typedef struct RANAP_RAB_Parameters {
	RANAP_TrafficClass_t	 trafficClass;
	RANAP_RAB_AsymmetryIndicator_t	 rAB_AsymmetryIndicator;
	RANAP_RAB_Parameter_MaxBitrateList_t	 maxBitrate;
	RANAP_RAB_Parameter_GuaranteedBitrateList_t	*guaranteedBitRate	/* OPTIONAL */;
	RANAP_DeliveryOrder_t	 deliveryOrder;
	RANAP_MaxSDU_Size_t	 maxSDU_Size;
	RANAP_SDU_Parameters_t	 sDU_Parameters;
	RANAP_TransferDelay_t	*transferDelay	/* OPTIONAL */;
	RANAP_TrafficHandlingPriority_t	*trafficHandlingPriority	/* OPTIONAL */;
	RANAP_AllocationOrRetentionPriority_t	*allocationOrRetentionPriority	/* OPTIONAL */;
	RANAP_SourceStatisticsDescriptor_t	*sourceStatisticsDescriptor	/* OPTIONAL */;
	RANAP_RelocationRequirement_t	*relocationRequirement	/* OPTIONAL */;
	RANAP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_RAB_Parameters_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameters;

#ifdef __cplusplus
}
#endif

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