/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-IEs"
 * 	found in "Spec/e2ap-v031ex.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -gen-PER`
 */

#ifndef	_ULandDLSharing_H_
#define	_ULandDLSharing_H_


#include <asn_application.h>

/* Including external dependencies */
#include "ULResourcesULandDLSharing.h"
#include "DLResourcesULandDLSharing.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct ProtocolExtensionContainer;

/* ULandDLSharing */
typedef struct ULandDLSharing {
	ULResourcesULandDLSharing_t	 uLResourcesULandDLSharing;
	DLResourcesULandDLSharing_t	 dLResourcesULandDLSharing;
	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;
} ULandDLSharing_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ULandDLSharing;
extern asn_SEQUENCE_specifics_t asn_SPC_ULandDLSharing_specs_1;
extern asn_TYPE_member_t asn_MBR_ULandDLSharing_1[3];

#ifdef __cplusplus
}
#endif

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