/*
 * 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_FailedItem_EnhRelocInfoRes_H_
#define	_RANAP_RAB_FailedItem_EnhRelocInfoRes_H_


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_CN-DomainIndicator.h"
#include "RANAP_RAB-ID.h"
#include "RANAP_Cause.h"
#include "RANAP_ProtocolExtensionContainer.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_RAB-FailedItem-EnhRelocInfoRes */
typedef struct RANAP_RAB_FailedItem_EnhRelocInfoRes {
	RANAP_CN_DomainIndicator_t	 cN_DomainIndicator;
	RANAP_RAB_ID_t	 rAB_ID;
	RANAP_Cause_t	 cause;
	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_FailedItem_EnhRelocInfoRes_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes;

#ifdef __cplusplus
}
#endif

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