/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-PDU-Contents"
 * 	found in "X2AP-15-4-0.asn1"
 * 	`asn1c -D ./asn1_n1 -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example`
 */

#ifndef	_E_RABs_ToBeAdded_Item_SCG_Bearer_H_
#define	_E_RABs_ToBeAdded_Item_SCG_Bearer_H_


#include <asn_application.h>

/* Including external dependencies */
#include "E-RAB-ID.h"
#include "E-RAB-Level-QoS-Parameters.h"
#include "DL-Forwarding.h"
#include "GTPtunnelEndpoint.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct ProtocolExtensionContainer;

/* E-RABs-ToBeAdded-Item-SCG-Bearer */
typedef struct E_RABs_ToBeAdded_Item_SCG_Bearer {
	E_RAB_ID_t	 e_RAB_ID;
	E_RAB_Level_QoS_Parameters_t	 e_RAB_Level_QoS_Parameters;
	DL_Forwarding_t	*dL_Forwarding;	/* OPTIONAL */
	GTPtunnelEndpoint_t	 s1_UL_GTPtunnelEndpoint;
	struct ProtocolExtensionContainer	*iE_Extensions;	/* OPTIONAL */
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABs_ToBeAdded_Item_SCG_Bearer_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_SCG_Bearer_specs_1;
extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_SCG_Bearer_1[5];

#ifdef __cplusplus
}
#endif

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