/*
 * 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_SetupItem_EnhRelocInfoRes_H_
#define	_RANAP_RAB_SetupItem_EnhRelocInfoRes_H_


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_CN-DomainIndicator.h"
#include "RANAP_RAB-ID.h"
#include "RANAP_TNLInformationEnhRelInfoRes.h"
#include "RANAP_Ass-RAB-Parameters.h"
#include "RANAP_ProtocolExtensionContainer.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_RAB-SetupItem-EnhRelocInfoRes */
typedef struct RANAP_RAB_SetupItem_EnhRelocInfoRes {
	RANAP_CN_DomainIndicator_t	 cN_DomainIndicator;
	RANAP_RAB_ID_t	 rAB_ID;
	RANAP_TNLInformationEnhRelInfoRes_t	*dataForwardingInformation	/* OPTIONAL */;
	RANAP_Ass_RAB_Parameters_t	*ass_RAB_Parameters	/* 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_SetupItem_EnhRelocInfoRes_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes;

#ifdef __cplusplus
}
#endif

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