/*
 * 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_ContextItem_RANAP_RelocInf_H_
#define	_RANAP_RAB_ContextItem_RANAP_RelocInf_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/ranap/RANAP_RAB-ID.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-ContextItem-RANAP-RelocInf */
typedef struct RANAP_RAB_ContextItem_RANAP_RelocInf {
	RANAP_RAB_ID_t	 rAB_ID;
	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_ContextItem_RANAP_RelocInf_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf;

#ifdef __cplusplus
}
#endif

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