/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "RANAP-IEs"
 * 	found in "../../asn1/ranap/RANAP-IEs.asn"
 */

#ifndef	_RANAP_RNSAPRelocationParameters_H_
#define	_RANAP_RNSAPRelocationParameters_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/ranap/RANAP_RABParametersList.h>
#include <osmocom/ranap/RANAP_LocationReportingTransferInformation.h>
#include <osmocom/ranap/RANAP_TraceInformation.h>
#include <osmocom/ranap/RANAP_SAI.h>
#include <osmocom/ranap/RANAP_IE-Extensions.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RANAP_RNSAPRelocationParameters */
typedef struct RANAP_RNSAPRelocationParameters {
	RANAP_RABParametersList_t	*rabParmetersList	/* OPTIONAL */;
	RANAP_LocationReportingTransferInformation_t	*locationReporting	/* OPTIONAL */;
	RANAP_TraceInformation_t	*traceInformation	/* OPTIONAL */;
	RANAP_SAI_t	*sourceSAI	/* OPTIONAL */;
	RANAP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_RNSAPRelocationParameters_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_RNSAPRelocationParameters;

#ifdef __cplusplus
}
#endif

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