Skip to content
Snippets Groups Projects
Forked from oai / asn1c
1113 commits behind the upstream repository.
42-real-life-OK.asn1.-PR 19.53 KiB

/*** <<< INCLUDES [LogLine] >>> ***/

#include <IA5String.h>
#include <VariablePartSet.h>
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#include <constr_SEQUENCE.h>

/*** <<< DEPS [LogLine] >>> ***/

extern asn1_TYPE_descriptor_t asn1_DEF_LogLine;

/*** <<< TYPE-DECLS [LogLine] >>> ***/


typedef struct LogLine {
	IA5String_t	 line_digest;
	struct varsets {
		A_SEQUENCE_OF(VariablePartSet_t) list;
		
		/* Context for parsing across buffer boundaries */
		ber_dec_ctx_t _ber_dec_ctx;
	} varsets;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	ber_dec_ctx_t _ber_dec_ctx;
} LogLine_t;

/*** <<< CODE [LogLine] >>> ***/

static int
memb_varsets_1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
			asn_app_consume_bytes_f *app_errlog, void *app_key) {
	size_t size;
	
	if(!sptr) {
		_ASN_ERRLOG(app_errlog, app_key,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	{ /* Determine the number of elements */
		const A_SEQUENCE_OF(void) *list;
		(const void *)list = sptr;
		size = list->count;
	}
	
	if((size >= 1)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		_ASN_ERRLOG(app_errlog, app_key,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}


/*** <<< STAT-DEFS [LogLine] >>> ***/

static asn1_TYPE_member_t asn1_MBR_varsets[] = {
	{ ATF_NOFLAGS, 0, 0,
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_VariablePartSet,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = ""
		},
};
static ber_tlv_tag_t asn1_DEF_varsets_tags[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn1_SET_OF_specifics_t asn1_DEF_varsets_specs = {
	sizeof(struct varsets),
	offsetof(struct varsets, _ber_dec_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
static /* Use -fall-defs-global to expose */
asn1_TYPE_descriptor_t asn1_DEF_varsets = {
	"varsets",
	SEQUENCE_OF_free,
	SEQUENCE_OF_print,
	SEQUENCE_OF_constraint,
	SEQUENCE_OF_decode_ber,
	SEQUENCE_OF_encode_der,
	0,				/* Not implemented yet */
	SEQUENCE_OF_encode_xer,
	0,	/* Use generic outmost tag fetcher */
	asn1_DEF_varsets_tags,
	sizeof(asn1_DEF_varsets_tags)
		/sizeof(asn1_DEF_varsets_tags[0]), /* 1 */
	asn1_DEF_varsets_tags,	/* Same as above */
	sizeof(asn1_DEF_varsets_tags)
		/sizeof(asn1_DEF_varsets_tags[0]), /* 1 */
	asn1_MBR_varsets,
	1,	/* Single element */
	&asn1_DEF_varsets_specs	/* Additional specs */
};

static asn1_TYPE_member_t asn1_MBR_LogLine[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct LogLine, line_digest),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_IA5String,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = "line-digest"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct LogLine, varsets),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_varsets,
		.memb_constraints = memb_varsets_1_constraint,
		.name = "varsets"
		},
};
static ber_tlv_tag_t asn1_DEF_LogLine_tags[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn1_TYPE_tag2member_t asn1_DEF_LogLine_tag2el[] = {
    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* varsets at 25 */
    { (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)), 0, 0, 0 }, /* line-digest at 23 */
};
static asn1_SEQUENCE_specifics_t asn1_DEF_LogLine_specs = {
	sizeof(struct LogLine),
	offsetof(struct LogLine, _ber_dec_ctx),
	asn1_DEF_LogLine_tag2el,
	2,	/* Count of tags in the map */
	1,	/* Start extensions */
	3	/* Stop extensions */
};
asn1_TYPE_descriptor_t asn1_DEF_LogLine = {
	"LogLine",
	SEQUENCE_free,
	SEQUENCE_print,
	SEQUENCE_constraint,
	SEQUENCE_decode_ber,
	SEQUENCE_encode_der,
	0,				/* Not implemented yet */
	SEQUENCE_encode_xer,
	0,	/* Use generic outmost tag fetcher */
	asn1_DEF_LogLine_tags,
	sizeof(asn1_DEF_LogLine_tags)
		/sizeof(asn1_DEF_LogLine_tags[0]), /* 1 */
	asn1_DEF_LogLine_tags,	/* Same as above */
	sizeof(asn1_DEF_LogLine_tags)
		/sizeof(asn1_DEF_LogLine_tags[0]), /* 1 */
	asn1_MBR_LogLine,
	2,	/* Elements count */
	&asn1_DEF_LogLine_specs	/* Additional specs */
};


/*** <<< INCLUDES [VariablePartSet] >>> ***/

#include <ActionItem.h>
#include <VariablePart.h>
#include <asn_SEQUENCE_OF.h>
#include <constr_SEQUENCE_OF.h>
#include <constr_SEQUENCE.h>

/*** <<< DEPS [VariablePartSet] >>> ***/

extern asn1_TYPE_descriptor_t asn1_DEF_VariablePartSet;

/*** <<< TYPE-DECLS [VariablePartSet] >>> ***/


typedef struct VariablePartSet {
	struct vparts {
		A_SEQUENCE_OF(VariablePart_t) list;
		
		/* Context for parsing across buffer boundaries */
		ber_dec_ctx_t _ber_dec_ctx;
	} vparts;
	ActionItem_t	 resolution;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	ber_dec_ctx_t _ber_dec_ctx;
} VariablePartSet_t;

/*** <<< CODE [VariablePartSet] >>> ***/

static int
memb_vparts_2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
			asn_app_consume_bytes_f *app_errlog, void *app_key) {
	
	if(!sptr) {
		_ASN_ERRLOG(app_errlog, app_key,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	
	if(1 /* No applicable constraints whatsoever */) {
		/* Nothing is here. See below */
	}
	
	return td->check_constraints(td, sptr, app_errlog, app_key);
}


/*** <<< STAT-DEFS [VariablePartSet] >>> ***/

static asn1_TYPE_member_t asn1_MBR_vparts[] = {
	{ ATF_NOFLAGS, 0, 0,
		.tag = -1 /* Ambiguous tag (CHOICE?) */,
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_VariablePart,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = ""
		},
};
static ber_tlv_tag_t asn1_DEF_vparts_tags[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn1_SET_OF_specifics_t asn1_DEF_vparts_specs = {
	sizeof(struct vparts),
	offsetof(struct vparts, _ber_dec_ctx),
	1,	/* XER encoding is XMLValueList */
};
static /* Use -fall-defs-global to expose */
asn1_TYPE_descriptor_t asn1_DEF_vparts = {
	"vparts",
	SEQUENCE_OF_free,
	SEQUENCE_OF_print,
	SEQUENCE_OF_constraint,
	SEQUENCE_OF_decode_ber,
	SEQUENCE_OF_encode_der,
	0,				/* Not implemented yet */
	SEQUENCE_OF_encode_xer,
	0,	/* Use generic outmost tag fetcher */
	asn1_DEF_vparts_tags,
	sizeof(asn1_DEF_vparts_tags)
		/sizeof(asn1_DEF_vparts_tags[0]), /* 1 */
	asn1_DEF_vparts_tags,	/* Same as above */
	sizeof(asn1_DEF_vparts_tags)
		/sizeof(asn1_DEF_vparts_tags[0]), /* 1 */
	asn1_MBR_vparts,
	1,	/* Single element */
	&asn1_DEF_vparts_specs	/* Additional specs */
};

static asn1_TYPE_member_t asn1_MBR_VariablePartSet[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct VariablePartSet, vparts),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_vparts,
		.memb_constraints = memb_vparts_2_constraint,
		.name = "vparts"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct VariablePartSet, resolution),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_ActionItem,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = "resolution"
		},
};
static ber_tlv_tag_t asn1_DEF_VariablePartSet_tags[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn1_TYPE_tag2member_t asn1_DEF_VariablePartSet_tag2el[] = {
    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* vparts at 33 */
    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 }, /* resolution at 35 */
};
static asn1_SEQUENCE_specifics_t asn1_DEF_VariablePartSet_specs = {
	sizeof(struct VariablePartSet),
	offsetof(struct VariablePartSet, _ber_dec_ctx),
	asn1_DEF_VariablePartSet_tag2el,
	2,	/* Count of tags in the map */
	1,	/* Start extensions */
	3	/* Stop extensions */
};
asn1_TYPE_descriptor_t asn1_DEF_VariablePartSet = {
	"VariablePartSet",
	SEQUENCE_free,
	SEQUENCE_print,
	SEQUENCE_constraint,
	SEQUENCE_decode_ber,
	SEQUENCE_encode_der,
	0,				/* Not implemented yet */
	SEQUENCE_encode_xer,
	0,	/* Use generic outmost tag fetcher */
	asn1_DEF_VariablePartSet_tags,
	sizeof(asn1_DEF_VariablePartSet_tags)
		/sizeof(asn1_DEF_VariablePartSet_tags[0]), /* 1 */
	asn1_DEF_VariablePartSet_tags,	/* Same as above */
	sizeof(asn1_DEF_VariablePartSet_tags)
		/sizeof(asn1_DEF_VariablePartSet_tags[0]), /* 1 */
	asn1_MBR_VariablePartSet,
	2,	/* Elements count */
	&asn1_DEF_VariablePartSet_specs	/* Additional specs */
};


/*** <<< INCLUDES [VariablePart] >>> ***/

#include <VisibleString.h>
#include <asn_SET_OF.h>
#include <constr_SET_OF.h>
#include <constr_SEQUENCE.h>
#include <constr_CHOICE.h>

/*** <<< DEPS [VariablePart] >>> ***/

typedef enum VariablePart_PR {
	VariablePart_PR_NOTHING,	/* No components present */
	VariablePart_PR_vset,
	VariablePart_PR_vrange,
	/* Extensions may appear below */
} VariablePart_PR;
extern asn1_TYPE_descriptor_t asn1_DEF_VariablePart;

/*** <<< TYPE-DECLS [VariablePart] >>> ***/


typedef struct VariablePart {
	VariablePart_PR present;
	union {
		struct vset {
			A_SET_OF(VisibleString_t) list;
			
			/* Context for parsing across buffer boundaries */
			ber_dec_ctx_t _ber_dec_ctx;
		} vset;
		struct vrange {
			VisibleString_t	 from;
			VisibleString_t	 to;
			/*
			 * This type is extensible,
			 * possible extensions are below.
			 */
			
			/* Context for parsing across buffer boundaries */
			ber_dec_ctx_t _ber_dec_ctx;
		} vrange;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	ber_dec_ctx_t _ber_dec_ctx;
} VariablePart_t;

/*** <<< CODE [VariablePart] >>> ***/

static int
memb_vset_3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
			asn_app_consume_bytes_f *app_errlog, void *app_key) {
	size_t size;
	
	if(!sptr) {
		_ASN_ERRLOG(app_errlog, app_key,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	{ /* Determine the number of elements */
		const A_SET_OF(void) *list;
		(const void *)list = sptr;
		size = list->count;
	}
	
	if((size >= 1)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		_ASN_ERRLOG(app_errlog, app_key,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}


/*** <<< STAT-DEFS [VariablePart] >>> ***/

static asn1_TYPE_member_t asn1_MBR_vset[] = {
	{ ATF_NOFLAGS, 0, 0,
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_VisibleString,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = ""
		},
};
static ber_tlv_tag_t asn1_DEF_vset_tags[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
};
static asn1_SET_OF_specifics_t asn1_DEF_vset_specs = {
	sizeof(struct vset),
	offsetof(struct vset, _ber_dec_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
static /* Use -fall-defs-global to expose */
asn1_TYPE_descriptor_t asn1_DEF_vset = {
	"vset",
	SET_OF_free,
	SET_OF_print,
	SET_OF_constraint,
	SET_OF_decode_ber,
	SET_OF_encode_der,
	0,				/* Not implemented yet */
	SET_OF_encode_xer,
	0,	/* Use generic outmost tag fetcher */
	asn1_DEF_vset_tags,
	sizeof(asn1_DEF_vset_tags)
		/sizeof(asn1_DEF_vset_tags[0]), /* 1 */
	asn1_DEF_vset_tags,	/* Same as above */
	sizeof(asn1_DEF_vset_tags)
		/sizeof(asn1_DEF_vset_tags[0]), /* 1 */
	asn1_MBR_vset,
	1,	/* Single element */
	&asn1_DEF_vset_specs	/* Additional specs */
};

static asn1_TYPE_member_t asn1_MBR_vrange[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct vrange, from),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_VisibleString,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = "from"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct vrange, to),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_VisibleString,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = "to"
		},
};
static ber_tlv_tag_t asn1_DEF_vrange_tags[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn1_TYPE_tag2member_t asn1_DEF_vrange_tag2el[] = {
    { (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)), 0, 0, 1 }, /* from at 45 */
    { (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)), 1, -1, 0 }, /* to at 46 */
};
static asn1_SEQUENCE_specifics_t asn1_DEF_vrange_specs = {
	sizeof(struct vrange),
	offsetof(struct vrange, _ber_dec_ctx),
	asn1_DEF_vrange_tag2el,
	2,	/* Count of tags in the map */
	1,	/* Start extensions */
	3	/* Stop extensions */
};
static /* Use -fall-defs-global to expose */
asn1_TYPE_descriptor_t asn1_DEF_vrange = {
	"vrange",
	SEQUENCE_free,
	SEQUENCE_print,
	SEQUENCE_constraint,
	SEQUENCE_decode_ber,
	SEQUENCE_encode_der,
	0,				/* Not implemented yet */
	SEQUENCE_encode_xer,
	0,	/* Use generic outmost tag fetcher */
	asn1_DEF_vrange_tags,
	sizeof(asn1_DEF_vrange_tags)
		/sizeof(asn1_DEF_vrange_tags[0]), /* 1 */
	asn1_DEF_vrange_tags,	/* Same as above */
	sizeof(asn1_DEF_vrange_tags)
		/sizeof(asn1_DEF_vrange_tags[0]), /* 1 */
	asn1_MBR_vrange,
	2,	/* Elements count */
	&asn1_DEF_vrange_specs	/* Additional specs */
};

static asn1_TYPE_member_t asn1_MBR_VariablePart[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct VariablePart, choice.vset),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_vset,
		.memb_constraints = memb_vset_3_constraint,
		.name = "vset"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct VariablePart, choice.vrange),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_vrange,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = "vrange"
		},
};
static asn1_TYPE_tag2member_t asn1_DEF_VariablePart_tag2el[] = {
    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* vrange at 45 */
    { (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)), 0, 0, 0 }, /* vset at 42 */
};
static asn1_CHOICE_specifics_t asn1_DEF_VariablePart_specs = {
	sizeof(struct VariablePart),
	offsetof(struct VariablePart, _ber_dec_ctx),
	offsetof(struct VariablePart, present),
	sizeof(((struct VariablePart *)0)->present),
	asn1_DEF_VariablePart_tag2el,
	2,	/* Count of tags in the map */
	1	/* Whether extensible */
};
asn1_TYPE_descriptor_t asn1_DEF_VariablePart = {
	"VariablePart",
	CHOICE_free,
	CHOICE_print,
	CHOICE_constraint,
	CHOICE_decode_ber,
	CHOICE_encode_der,
	0,				/* Not implemented yet */
	CHOICE_encode_xer,
	CHOICE_outmost_tag,
	0,	/* No effective tags (pointer) */
	0,	/* No effective tags (count) */
	0,	/* No tags (pointer) */
	0,	/* No tags (count) */
	asn1_MBR_VariablePart,
	2,	/* Elements count */
	&asn1_DEF_VariablePart_specs	/* Additional specs */
};


/*** <<< INCLUDES [ActionItem] >>> ***/

#include <ENUMERATED.h>
#include <BOOLEAN.h>
#include <VisibleString.h>
#include <asn_SET_OF.h>
#include <constr_SET_OF.h>
#include <constr_SEQUENCE.h>

/*** <<< DEPS [ActionItem] >>> ***/

typedef enum accept_as {
	accept_as_unknown	= 0,
	accept_as_safe	= 1,
	accept_as_unsafe	= 2,
	/*
	 * Enumeration is extensible
	 */
} accept_as_e;
extern asn1_TYPE_descriptor_t asn1_DEF_ActionItem;

/*** <<< TYPE-DECLS [ActionItem] >>> ***/


typedef struct ActionItem {
	ENUMERATED_t	 accept_as;
	struct notify {
		BOOLEAN_t	 critical;
		struct email {
			A_SET_OF(VisibleString_t) list;
			
			/* Context for parsing across buffer boundaries */
			ber_dec_ctx_t _ber_dec_ctx;
		} email;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
		
		/* Context for parsing across buffer boundaries */
		ber_dec_ctx_t _ber_dec_ctx;
	} *notify;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	ber_dec_ctx_t _ber_dec_ctx;
} ActionItem_t;

/*** <<< STAT-DEFS [ActionItem] >>> ***/

static asn1_TYPE_member_t asn1_MBR_email[] = {
	{ ATF_NOFLAGS, 0, 0,
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_VisibleString,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = ""
		},
};
static ber_tlv_tag_t asn1_DEF_email_tags[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
};
static asn1_SET_OF_specifics_t asn1_DEF_email_specs = {
	sizeof(struct email),
	offsetof(struct email, _ber_dec_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
static /* Use -fall-defs-global to expose */
asn1_TYPE_descriptor_t asn1_DEF_email = {
	"email",
	SET_OF_free,
	SET_OF_print,
	SET_OF_constraint,
	SET_OF_decode_ber,
	SET_OF_encode_der,
	0,				/* Not implemented yet */
	SET_OF_encode_xer,
	0,	/* Use generic outmost tag fetcher */
	asn1_DEF_email_tags,
	sizeof(asn1_DEF_email_tags)
		/sizeof(asn1_DEF_email_tags[0]), /* 1 */
	asn1_DEF_email_tags,	/* Same as above */
	sizeof(asn1_DEF_email_tags)
		/sizeof(asn1_DEF_email_tags[0]), /* 1 */
	asn1_MBR_email,
	1,	/* Single element */
	&asn1_DEF_email_specs	/* Additional specs */
};

static asn1_TYPE_member_t asn1_MBR_notify[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct notify, critical),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_BOOLEAN,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = "critical"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct notify, email),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_email,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = "email"
		},
};
static ber_tlv_tag_t asn1_DEF_notify_tags[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn1_TYPE_tag2member_t asn1_DEF_notify_tag2el[] = {
    { (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)), 0, 0, 0 }, /* critical at 61 */
    { (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)), 1, 0, 0 }, /* email at 62 */
};
static asn1_SEQUENCE_specifics_t asn1_DEF_notify_specs = {
	sizeof(struct notify),
	offsetof(struct notify, _ber_dec_ctx),
	asn1_DEF_notify_tag2el,
	2,	/* Count of tags in the map */
	1,	/* Start extensions */
	3	/* Stop extensions */
};
static /* Use -fall-defs-global to expose */
asn1_TYPE_descriptor_t asn1_DEF_notify = {
	"notify",
	SEQUENCE_free,
	SEQUENCE_print,
	SEQUENCE_constraint,
	SEQUENCE_decode_ber,
	SEQUENCE_encode_der,
	0,				/* Not implemented yet */
	SEQUENCE_encode_xer,
	0,	/* Use generic outmost tag fetcher */
	asn1_DEF_notify_tags,
	sizeof(asn1_DEF_notify_tags)
		/sizeof(asn1_DEF_notify_tags[0]), /* 1 */
	asn1_DEF_notify_tags,	/* Same as above */
	sizeof(asn1_DEF_notify_tags)
		/sizeof(asn1_DEF_notify_tags[0]), /* 1 */
	asn1_MBR_notify,
	2,	/* Elements count */
	&asn1_DEF_notify_specs	/* Additional specs */
};

static asn1_TYPE_member_t asn1_MBR_ActionItem[] = {
	{ ATF_NOFLAGS, 0, offsetof(struct ActionItem, accept_as),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_ENUMERATED,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = "accept-as"
		},
	{ ATF_POINTER, 1, offsetof(struct ActionItem, notify),
		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		.tag_mode = 0,
		.type = (void *)&asn1_DEF_notify,
		.memb_constraints = 0,	/* Defer to actual type */
		.name = "notify"
		},
};
static ber_tlv_tag_t asn1_DEF_ActionItem_tags[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn1_TYPE_tag2member_t asn1_DEF_ActionItem_tag2el[] = {
    { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 }, /* accept-as at 55 */
    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* notify at 61 */
};
static asn1_SEQUENCE_specifics_t asn1_DEF_ActionItem_specs = {
	sizeof(struct ActionItem),
	offsetof(struct ActionItem, _ber_dec_ctx),
	asn1_DEF_ActionItem_tag2el,
	2,	/* Count of tags in the map */
	1,	/* Start extensions */
	3	/* Stop extensions */
};
asn1_TYPE_descriptor_t asn1_DEF_ActionItem = {
	"ActionItem",
	SEQUENCE_free,
	SEQUENCE_print,
	SEQUENCE_constraint,
	SEQUENCE_decode_ber,
	SEQUENCE_encode_der,
	0,				/* Not implemented yet */
	SEQUENCE_encode_xer,
	0,	/* Use generic outmost tag fetcher */
	asn1_DEF_ActionItem_tags,
	sizeof(asn1_DEF_ActionItem_tags)
		/sizeof(asn1_DEF_ActionItem_tags[0]), /* 1 */
	asn1_DEF_ActionItem_tags,	/* Same as above */
	sizeof(asn1_DEF_ActionItem_tags)
		/sizeof(asn1_DEF_ActionItem_tags[0]), /* 1 */
	asn1_MBR_ActionItem,
	2,	/* Elements count */
	&asn1_DEF_ActionItem_specs	/* Additional specs */
};