/*
 * 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_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_H_
#define	_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/ranap/RANAP_RAB-ID.h>
#include <osmocom/ranap/RANAP_Cause.h>
#include <osmocom/ranap/RANAP_GERAN-Classmark.h>
#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item */
typedef struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item {
	RANAP_RAB_ID_t	 rAB_ID;
	RANAP_Cause_t	 cause;
	RANAP_GERAN_Classmark_t	*gERAN_Classmark	/* 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_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item;

#ifdef __cplusplus
}
#endif

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