/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "RUA-IEs"
 * 	found in "../../asn1/rua/RUA-IEs.asn"
 */

#ifndef	_RUA_CriticalityDiagnostics_IE_List_H_
#define	_RUA_CriticalityDiagnostics_IE_List_H_


#include <asn_application.h>

/* Including external dependencies */
#include <asn_SEQUENCE_OF.h>
#include <osmocom/rua/RUA_Criticality.h>
#include <osmocom/rua/RUA_ProtocolIE-ID.h>
#include <osmocom/rua/RUA_TypeOfError.h>
#include <osmocom/rua/RUA_IE-Extensions.h>
#include <constr_SEQUENCE.h>
#include <constr_SEQUENCE_OF.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RUA_CriticalityDiagnostics-IE-List */
typedef struct RUA_CriticalityDiagnostics_IE_List {
	A_SEQUENCE_OF(struct Member {
		RUA_Criticality_t	 iECriticality;
		RUA_ProtocolIE_ID_t	 iE_ID;
		RUA_TypeOfError_t	 typeOfError;
		RUA_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} ) list;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RUA_CriticalityDiagnostics_IE_List_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RUA_CriticalityDiagnostics_IE_List;

#ifdef __cplusplus
}
#endif

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