/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "HNBAP-IEs"
 * 	found in "../../asn1/hnbap/HNBAP-IEs.asn"
 * 	`asn1c -gen-PER`
 */

#ifndef	_HNBConfigurationInformationMissing_H_
#define	_HNBConfigurationInformationMissing_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct IE_Extensions;

/* HNBConfigurationInformationMissing */
typedef struct HNBConfigurationInformationMissing {
	Cause_t	 cause;
	struct IE_Extensions	*iE_Extensions	/* OPTIONAL */;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HNBConfigurationInformationMissing_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_HNBConfigurationInformationMissing;

#ifdef __cplusplus
}
#endif

/* Referred external types */
#include "IE-Extensions.h"

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