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

#ifndef	_RANAP_RAB_ReleasedItem_H_
#define	_RANAP_RAB_ReleasedItem_H_


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_RAB-ID.h"
#include "RANAP_DataVolumeList.h"
#include "RANAP_DL-GTP-PDU-SequenceNumber.h"
#include "RANAP_UL-GTP-PDU-SequenceNumber.h"
#include "RANAP_ProtocolExtensionContainer.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_RAB-ReleasedItem */
typedef struct RANAP_RAB_ReleasedItem {
	RANAP_RAB_ID_t	 rAB_ID;
	RANAP_DataVolumeList_t	*dl_dataVolumes	/* OPTIONAL */;
	RANAP_DL_GTP_PDU_SequenceNumber_t	*dL_GTP_PDU_SequenceNumber	/* OPTIONAL */;
	RANAP_UL_GTP_PDU_SequenceNumber_t	*uL_GTP_PDU_SequenceNumber	/* OPTIONAL */;
	RANAP_ProtocolExtensionContainer_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_ReleasedItem_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleasedItem;

#ifdef __cplusplus
}
#endif

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