/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "E2AP-PDU-Contents"
 * 	found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn"
 * 	`asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER`
 */

#ifndef	_RICaction_ToBeSetup_Item_H_
#define	_RICaction_ToBeSetup_Item_H_


#include <asn_application.h>

/* Including external dependencies */
#include "RICactionID.h"
#include "RICactionType.h"
#include "RICactionDefinition.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct RICsubsequentAction;

/* RICaction-ToBeSetup-Item */
typedef struct RICaction_ToBeSetup_Item {
	RICactionID_t	 ricActionID;
	RICactionType_t	 ricActionType;
	RICactionDefinition_t	*ricActionDefinition;	/* OPTIONAL */
	struct RICsubsequentAction	*ricSubsequentAction;	/* OPTIONAL */
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICaction_ToBeSetup_Item_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item;

#ifdef __cplusplus
}
#endif

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