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

#include <osmocom/sabp/SABP_IE-Extensions.h>

static asn_per_constraints_t asn_PER_type_SABP_IE_Extensions_constr_1 GCC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1l,  65535l }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_TYPE_member_t asn_MBR_SABP_IE_Extensions_1[] = {
	{ ATF_POINTER, 0, 0,
		-1 /* Ambiguous tag (CHOICE?) */,
		0,
		&asn_DEF_SABP_IE,
		0,	/* Defer constraints checking to the member type */
		0,	/* No PER visible constraints */
		0,
		""
		},
};
static const ber_tlv_tag_t asn_DEF_SABP_IE_Extensions_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn_SET_OF_specifics_t asn_SPC_SABP_IE_Extensions_specs_1 = {
	sizeof(struct SABP_IE_Extensions),
	offsetof(struct SABP_IE_Extensions, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_SABP_IE_Extensions = {
	"SABP_IE-Extensions",
	"SABP_IE-Extensions",
	SEQUENCE_OF_free,
	SEQUENCE_OF_print,
	SEQUENCE_OF_constraint,
	SEQUENCE_OF_decode_ber,
	SEQUENCE_OF_encode_der,
	SEQUENCE_OF_decode_xer,
	SEQUENCE_OF_encode_xer,
	SEQUENCE_OF_decode_uper,
	SEQUENCE_OF_encode_uper,
	SEQUENCE_OF_decode_aper,
	SEQUENCE_OF_encode_aper,
	0,	/* Use generic outmost tag fetcher */
	asn_DEF_SABP_IE_Extensions_tags_1,
	sizeof(asn_DEF_SABP_IE_Extensions_tags_1)
		/sizeof(asn_DEF_SABP_IE_Extensions_tags_1[0]), /* 1 */
	asn_DEF_SABP_IE_Extensions_tags_1,	/* Same as above */
	sizeof(asn_DEF_SABP_IE_Extensions_tags_1)
		/sizeof(asn_DEF_SABP_IE_Extensions_tags_1[0]), /* 1 */
	&asn_PER_type_SABP_IE_Extensions_constr_1,
	asn_MBR_SABP_IE_Extensions_1,
	1,	/* Single element */
	&asn_SPC_SABP_IE_Extensions_specs_1	/* Additional specs */
};

