/*
 * Automatically generated by asn1_compiler.  Do not edit
 *
 * ASN.1 parser for nf_nat_snmp_basic
 */
#include <linux/asn1_ber_bytecode.h>
#include "nf_nat_snmp_basic.asn1.h"

enum nf_nat_snmp_basic_actions {
	ACT_snmp_helper = 0,
	ACT_snmp_version = 1,
	NR__nf_nat_snmp_basic_actions = 2
};

static const asn1_action_t nf_nat_snmp_basic_action_table[NR__nf_nat_snmp_basic_actions] = {
	[   0] = snmp_helper,
	[   1] = snmp_version,
};

static const unsigned char nf_nat_snmp_basic_machine[] = {
	// Message
	[   0] = ASN1_OP_MATCH,
	[   1] = _tag(UNIV, CONS, SEQ),
	[   2] =  ASN1_OP_MATCH_ACT,		// version
	[   3] =  _tag(UNIV, PRIM, INT),
	[   4] =  _action(ACT_snmp_version),
	[   5] =  ASN1_OP_MATCH,		// community
	[   6] =  _tag(UNIV, PRIM, OTS),
	// PDUs
	// GetRequest-PDU
	// PDU
	[   7] =  ASN1_OP_MATCH_JUMP_OR_SKIP,
	[   8] =  _tagn(CONT, CONS,  0),
	[   9] =  _jump_target(34),		// --> PDU
	// GetNextRequest-PDU
	// PDU
	[  10] =  ASN1_OP_MATCH_JUMP_OR_SKIP,
	[  11] =  _tagn(CONT, CONS,  1),
	[  12] =  _jump_target(34),		// --> PDU
	// GetBulkRequest-PDU
	// PDU
	[  13] =  ASN1_OP_MATCH_JUMP_OR_SKIP,
	[  14] =  _tagn(CONT, CONS,  5),
	[  15] =  _jump_target(34),		// --> PDU
	// Response-PDU
	// PDU
	[  16] =  ASN1_OP_MATCH_JUMP_OR_SKIP,
	[  17] =  _tagn(CONT, CONS,  2),
	[  18] =  _jump_target(34),		// --> PDU
	// SetRequest-PDU
	// PDU
	[  19] =  ASN1_OP_MATCH_JUMP_OR_SKIP,
	[  20] =  _tagn(CONT, CONS,  3),
	[  21] =  _jump_target(34),		// --> PDU
	// InformRequest-PDU
	// PDU
	[  22] =  ASN1_OP_MATCH_JUMP_OR_SKIP,
	[  23] =  _tagn(CONT, CONS,  6),
	[  24] =  _jump_target(34),		// --> PDU
	// SNMPv2-Trap-PDU
	// PDU
	[  25] =  ASN1_OP_MATCH_JUMP_OR_SKIP,
	[  26] =  _tagn(CONT, CONS,  7),
	[  27] =  _jump_target(34),		// --> PDU
	// Report-PDU
	// PDU
	[  28] =  ASN1_OP_MATCH_JUMP_OR_SKIP,
	[  29] =  _tagn(CONT, CONS,  8),
	[  30] =  _jump_target(34),		// --> PDU
	[  31] =  ASN1_OP_COND_FAIL,
	[  32] = ASN1_OP_END_SEQ,
	[  33] = ASN1_OP_COMPLETE,

	[  34] =  ASN1_OP_MATCH,		// request-id
	[  35] =  _tag(UNIV, PRIM, INT),
	[  36] =  ASN1_OP_MATCH,		// error-status
	[  37] =  _tag(UNIV, PRIM, INT),
	[  38] =  ASN1_OP_MATCH,		// error-index
	[  39] =  _tag(UNIV, PRIM, INT),
	// VarBindList
	[  40] =  ASN1_OP_MATCH,
	[  41] =  _tag(UNIV, CONS, SEQ),
	// VarBind
	[  42] =   ASN1_OP_MATCH,
	[  43] =   _tag(UNIV, CONS, SEQ),
	// ObjectName
	[  44] =    ASN1_OP_MATCH,
	[  45] =    _tag(UNIV, PRIM, OID),
	// ObjectSyntax
	// SimpleSyntax
	[  46] =    ASN1_OP_MATCH_OR_SKIP,		// integer-value
	[  47] =    _tag(UNIV, PRIM, INT),
	[  48] =    ASN1_OP_COND_MATCH_OR_SKIP,		// string-value
	[  49] =    _tag(UNIV, PRIM, OTS),
	[  50] =    ASN1_OP_COND_MATCH_OR_SKIP,		// objectID-value
	[  51] =    _tag(UNIV, PRIM, OID),
	// ApplicationSyntax
	// IpAddress
	[  52] =    ASN1_OP_MATCH_ACT_OR_SKIP,
	[  53] =    _tagn(APPL, PRIM,  0),
	[  54] =    _action(ACT_snmp_helper),
	// Counter32
	[  55] =    ASN1_OP_MATCH_OR_SKIP,
	[  56] =    _tagn(APPL, PRIM,  1),
	// TimeTicks
	[  57] =    ASN1_OP_MATCH_OR_SKIP,
	[  58] =    _tagn(APPL, PRIM,  3),
	// Opaque
	[  59] =    ASN1_OP_MATCH_OR_SKIP,
	[  60] =    _tagn(APPL, PRIM,  4),
	// Counter64
	[  61] =    ASN1_OP_MATCH_OR_SKIP,
	[  62] =    _tagn(APPL, PRIM,  6),
	// Unsigned32
	[  63] =    ASN1_OP_MATCH_OR_SKIP,
	[  64] =    _tagn(APPL, PRIM,  2),
	[  65] =    ASN1_OP_COND_MATCH_OR_SKIP,		// unSpecified
	[  66] =    _tag(UNIV, PRIM, NULL),
	[  67] =    ASN1_OP_COND_MATCH_OR_SKIP,		// noSuchObject
	[  68] =    _tagn(CONT, PRIM,  0),
	[  69] =    ASN1_OP_COND_MATCH_OR_SKIP,		// noSuchInstance
	[  70] =    _tagn(CONT, PRIM,  1),
	[  71] =    ASN1_OP_COND_MATCH_OR_SKIP,		// endOfMibView
	[  72] =    _tagn(CONT, PRIM,  2),
	[  73] =    ASN1_OP_COND_FAIL,
	[  74] =   ASN1_OP_END_SEQ,
	[  75] =  ASN1_OP_END_SEQ_OF,
	[  76] =  _jump_target(42),
	[  77] = ASN1_OP_END_SEQ,
	[  78] = ASN1_OP_RETURN,
};

const struct asn1_decoder nf_nat_snmp_basic_decoder = {
	.machine = nf_nat_snmp_basic_machine,
	.machlen = sizeof(nf_nat_snmp_basic_machine),
	.actions = nf_nat_snmp_basic_action_table,
};
