/*
 * 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_SetupOrModifyItemSecond_H_
#define	_RANAP_RAB_SetupOrModifyItemSecond_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/ranap/RANAP_PDP-TypeInformation.h>
#include <osmocom/ranap/RANAP_DataVolumeReportingIndication.h>
#include <osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h>
#include <osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h>
#include <osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h>
#include <osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h>
#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_RAB-SetupOrModifyItemSecond */
typedef struct RANAP_RAB_SetupOrModifyItemSecond {
	RANAP_PDP_TypeInformation_t	*pDP_TypeInformation	/* OPTIONAL */;
	RANAP_DataVolumeReportingIndication_t	*dataVolumeReportingIndication	/* OPTIONAL */;
	RANAP_DL_GTP_PDU_SequenceNumber_t	*dl_GTP_PDU_SequenceNumber	/* OPTIONAL */;
	RANAP_UL_GTP_PDU_SequenceNumber_t	*ul_GTP_PDU_SequenceNumber	/* OPTIONAL */;
	RANAP_DL_N_PDU_SequenceNumber_t	*dl_N_PDU_SequenceNumber	/* OPTIONAL */;
	RANAP_UL_N_PDU_SequenceNumber_t	*ul_N_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_SetupOrModifyItemSecond_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifyItemSecond;

#ifdef __cplusplus
}
#endif

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