/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "E2SM-gNB-X2-IEs"
 * 	found in "Spec/e2_and_x2-combined-and-minimized.asn1"
 * 	`asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example`
 */

#ifndef	_E2SM_gNB_X2_indicationMessage_H_
#define	_E2SM_gNB_X2_indicationMessage_H_


#include "asn_application.h"

/* Including external dependencies */
#include "InterfaceMessage.h"
#include "constr_SEQUENCE.h"

#ifdef __cplusplus
extern "C" {
#endif

/* E2SM-gNB-X2-indicationMessage */
typedef struct E2SM_gNB_X2_indicationMessage {
	InterfaceMessage_t	 interfaceMessage;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E2SM_gNB_X2_indicationMessage_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_indicationMessage;

#ifdef __cplusplus
}
#endif

#endif	/* _E2SM_gNB_X2_indicationMessage_H_ */
#include "asn_internal.h"
