/*
 * 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_AllocationOrRetentionPriority_H_
#define	_RANAP_AllocationOrRetentionPriority_H_


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_PriorityLevel.h"
#include "RANAP_Pre-emptionCapability.h"
#include "RANAP_Pre-emptionVulnerability.h"
#include "RANAP_QueuingAllowed.h"
#include "RANAP_IE-Extensions.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_AllocationOrRetentionPriority */
typedef struct RANAP_AllocationOrRetentionPriority {
	RANAP_PriorityLevel_t	 priorityLevel;
	RANAP_Pre_emptionCapability_t	 pre_emptionCapability;
	RANAP_Pre_emptionVulnerability_t	 pre_emptionVulnerability;
	RANAP_QueuingAllowed_t	 queuingAllowed;
	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_AllocationOrRetentionPriority_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_AllocationOrRetentionPriority;

#ifdef __cplusplus
}
#endif

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