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

#ifndef	_RUA_RUA_PDU_H_
#define	_RUA_RUA_PDU_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/rua/RUA_InitiatingMessage.h>
#include <osmocom/rua/RUA_SuccessfulOutcome.h>
#include <osmocom/rua/RUA_UnsuccessfulOutcome.h>
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RUA_RUA_PDU_PR {
	RUA_RUA_PDU_PR_NOTHING,	/* No components present */
	RUA_RUA_PDU_PR_initiatingMessage,
	RUA_RUA_PDU_PR_successfulOutcome,
	RUA_RUA_PDU_PR_unsuccessfulOutcome,
	/* Extensions may appear below */
	
} RUA_RUA_PDU_PR;

/* RUA_RUA-PDU */
typedef struct RUA_RUA_PDU {
	RUA_RUA_PDU_PR present;
	union RUA_RUA_PDU_u {
		RUA_InitiatingMessage_t	 initiatingMessage;
		RUA_SuccessfulOutcome_t	 successfulOutcome;
		RUA_UnsuccessfulOutcome_t	 unsuccessfulOutcome;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RUA_RUA_PDU_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RUA_RUA_PDU;

#ifdef __cplusplus
}
#endif

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