// Code generated by protoc-gen-go.
// source: openflow_13.proto
// DO NOT EDIT!

/*
Package openflow_13 is a generated protocol buffer package.

It is generated from these files:
	openflow_13.proto

It has these top-level messages:
	OfpHeader
	OfpHelloElemHeader
	OfpHelloElemVersionbitmap
	OfpHello
	OfpSwitchConfig
	OfpTableMod
	OfpPort
	OfpSwitchFeatures
	OfpPortStatus
	OfpPortMod
	OfpMatch
	OfpOxmField
	OfpOxmOfbField
	OfpOxmExperimenterField
	OfpAction
	OfpActionOutput
	OfpActionMplsTtl
	OfpActionPush
	OfpActionPopMpls
	OfpActionGroup
	OfpActionNwTtl
	OfpActionSetField
	OfpActionExperimenter
	OfpInstruction
	OfpInstructionGotoTable
	OfpInstructionWriteMetadata
	OfpInstructionActions
	OfpInstructionMeter
	OfpInstructionExperimenter
	OfpFlowMod
	OfpBucket
	OfpGroupMod
	OfpPacketOut
	OfpPacketIn
	OfpFlowRemoved
	OfpMeterBandHeader
	OfpMeterBandDrop
	OfpMeterBandDscpRemark
	OfpMeterBandExperimenter
	OfpMeterMod
	OfpErrorMsg
	OfpErrorExperimenterMsg
	OfpMultipartRequest
	OfpMultipartReply
	OfpDesc
	OfpFlowStatsRequest
	OfpFlowStats
	OfpAggregateStatsRequest
	OfpAggregateStatsReply
	OfpTableFeatureProperty
	OfpTableFeaturePropInstructions
	OfpTableFeaturePropNextTables
	OfpTableFeaturePropActions
	OfpTableFeaturePropOxm
	OfpTableFeaturePropExperimenter
	OfpTableFeatures
	OfpTableStats
	OfpPortStatsRequest
	OfpPortStats
	OfpGroupStatsRequest
	OfpBucketCounter
	OfpGroupStats
	OfpGroupDesc
	OfpGroupEntry
	OfpGroupFeatures
	OfpMeterMultipartRequest
	OfpMeterBandStats
	OfpMeterStats
	OfpMeterConfig
	OfpMeterFeatures
	OfpExperimenterMultipartHeader
	OfpExperimenterHeader
	OfpQueuePropHeader
	OfpQueuePropMinRate
	OfpQueuePropMaxRate
	OfpQueuePropExperimenter
	OfpPacketQueue
	OfpQueueGetConfigRequest
	OfpQueueGetConfigReply
	OfpActionSetQueue
	OfpQueueStatsRequest
	OfpQueueStats
	OfpRoleRequest
	OfpAsyncConfig
	FlowTableUpdate
	FlowGroupTableUpdate
	Flows
	FlowGroups
	PacketIn
	PacketOut
	ChangeEvent
*/
package openflow_13

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import voltha "github.com/opencord/voltha/netconf/translator/voltha/yang_options"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

// InlineNode from public import yang_options.proto
type InlineNode voltha.InlineNode

func (m *InlineNode) Reset()          { (*voltha.InlineNode)(m).Reset() }
func (m *InlineNode) String() string  { return (*voltha.InlineNode)(m).String() }
func (*InlineNode) ProtoMessage()     {}
func (m *InlineNode) GetId() string   { return (*voltha.InlineNode)(m).GetId() }
func (m *InlineNode) GetType() string { return (*voltha.InlineNode)(m).GetType() }

// RpcReturnDef from public import yang_options.proto
type RpcReturnDef voltha.RpcReturnDef

func (m *RpcReturnDef) Reset()                   { (*voltha.RpcReturnDef)(m).Reset() }
func (m *RpcReturnDef) String() string           { return (*voltha.RpcReturnDef)(m).String() }
func (*RpcReturnDef) ProtoMessage()              {}
func (m *RpcReturnDef) GetXmlTag() string        { return (*voltha.RpcReturnDef)(m).GetXmlTag() }
func (m *RpcReturnDef) GetListItemsName() string { return (*voltha.RpcReturnDef)(m).GetListItemsName() }

// MessageParserOption from public import yang_options.proto
type MessageParserOption voltha.MessageParserOption

var MessageParserOption_name = voltha.MessageParserOption_name
var MessageParserOption_value = voltha.MessageParserOption_value

func (x MessageParserOption) String() string { return (voltha.MessageParserOption)(x).String() }

const MessageParserOption_MOVE_TO_PARENT_LEVEL = MessageParserOption(voltha.MessageParserOption_MOVE_TO_PARENT_LEVEL)
const MessageParserOption_CREATE_BOTH_GROUPING_AND_CONTAINER = MessageParserOption(voltha.MessageParserOption_CREATE_BOTH_GROUPING_AND_CONTAINER)

// yang_child_rule from public import yang_options.proto
var E_YangChildRule = voltha.E_YangChildRule

// yang_message_rule from public import yang_options.proto
var E_YangMessageRule = voltha.E_YangMessageRule

// yang_inline_node from public import yang_options.proto
var E_YangInlineNode = voltha.E_YangInlineNode

// yang_xml_tag from public import yang_options.proto
var E_YangXmlTag = voltha.E_YangXmlTag

// Port numbering. Ports are numbered starting from 1.
type OfpPortNo int32

const (
	OfpPortNo_OFPP_INVALID OfpPortNo = 0
	// Maximum number of physical and logical switch ports.
	OfpPortNo_OFPP_MAX OfpPortNo = 2147483392
	// Reserved OpenFlow Port (fake output "ports").
	OfpPortNo_OFPP_IN_PORT    OfpPortNo = 2147483640
	OfpPortNo_OFPP_TABLE      OfpPortNo = 2147483641
	OfpPortNo_OFPP_NORMAL     OfpPortNo = 2147483642
	OfpPortNo_OFPP_FLOOD      OfpPortNo = 2147483643
	OfpPortNo_OFPP_ALL        OfpPortNo = 2147483644
	OfpPortNo_OFPP_CONTROLLER OfpPortNo = 2147483645
	OfpPortNo_OFPP_LOCAL      OfpPortNo = 2147483646
	OfpPortNo_OFPP_ANY        OfpPortNo = 2147483647
)

var OfpPortNo_name = map[int32]string{
	0:          "OFPP_INVALID",
	2147483392: "OFPP_MAX",
	2147483640: "OFPP_IN_PORT",
	2147483641: "OFPP_TABLE",
	2147483642: "OFPP_NORMAL",
	2147483643: "OFPP_FLOOD",
	2147483644: "OFPP_ALL",
	2147483645: "OFPP_CONTROLLER",
	2147483646: "OFPP_LOCAL",
	2147483647: "OFPP_ANY",
}
var OfpPortNo_value = map[string]int32{
	"OFPP_INVALID":    0,
	"OFPP_MAX":        2147483392,
	"OFPP_IN_PORT":    2147483640,
	"OFPP_TABLE":      2147483641,
	"OFPP_NORMAL":     2147483642,
	"OFPP_FLOOD":      2147483643,
	"OFPP_ALL":        2147483644,
	"OFPP_CONTROLLER": 2147483645,
	"OFPP_LOCAL":      2147483646,
	"OFPP_ANY":        2147483647,
}

func (x OfpPortNo) String() string {
	return proto.EnumName(OfpPortNo_name, int32(x))
}
func (OfpPortNo) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

type OfpType int32

const (
	// Immutable messages.
	OfpType_OFPT_HELLO        OfpType = 0
	OfpType_OFPT_ERROR        OfpType = 1
	OfpType_OFPT_ECHO_REQUEST OfpType = 2
	OfpType_OFPT_ECHO_REPLY   OfpType = 3
	OfpType_OFPT_EXPERIMENTER OfpType = 4
	// Switch configuration messages.
	OfpType_OFPT_FEATURES_REQUEST   OfpType = 5
	OfpType_OFPT_FEATURES_REPLY     OfpType = 6
	OfpType_OFPT_GET_CONFIG_REQUEST OfpType = 7
	OfpType_OFPT_GET_CONFIG_REPLY   OfpType = 8
	OfpType_OFPT_SET_CONFIG         OfpType = 9
	// Asynchronous messages.
	OfpType_OFPT_PACKET_IN    OfpType = 10
	OfpType_OFPT_FLOW_REMOVED OfpType = 11
	OfpType_OFPT_PORT_STATUS  OfpType = 12
	// Controller command messages.
	OfpType_OFPT_PACKET_OUT OfpType = 13
	OfpType_OFPT_FLOW_MOD   OfpType = 14
	OfpType_OFPT_GROUP_MOD  OfpType = 15
	OfpType_OFPT_PORT_MOD   OfpType = 16
	OfpType_OFPT_TABLE_MOD  OfpType = 17
	// Multipart messages.
	OfpType_OFPT_MULTIPART_REQUEST OfpType = 18
	OfpType_OFPT_MULTIPART_REPLY   OfpType = 19
	// Barrier messages.
	OfpType_OFPT_BARRIER_REQUEST OfpType = 20
	OfpType_OFPT_BARRIER_REPLY   OfpType = 21
	// Queue Configuration messages.
	OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST OfpType = 22
	OfpType_OFPT_QUEUE_GET_CONFIG_REPLY   OfpType = 23
	// Controller role change request messages.
	OfpType_OFPT_ROLE_REQUEST OfpType = 24
	OfpType_OFPT_ROLE_REPLY   OfpType = 25
	// Asynchronous message configuration.
	OfpType_OFPT_GET_ASYNC_REQUEST OfpType = 26
	OfpType_OFPT_GET_ASYNC_REPLY   OfpType = 27
	OfpType_OFPT_SET_ASYNC         OfpType = 28
	// Meters and rate limiters configuration messages.
	OfpType_OFPT_METER_MOD OfpType = 29
)

var OfpType_name = map[int32]string{
	0:  "OFPT_HELLO",
	1:  "OFPT_ERROR",
	2:  "OFPT_ECHO_REQUEST",
	3:  "OFPT_ECHO_REPLY",
	4:  "OFPT_EXPERIMENTER",
	5:  "OFPT_FEATURES_REQUEST",
	6:  "OFPT_FEATURES_REPLY",
	7:  "OFPT_GET_CONFIG_REQUEST",
	8:  "OFPT_GET_CONFIG_REPLY",
	9:  "OFPT_SET_CONFIG",
	10: "OFPT_PACKET_IN",
	11: "OFPT_FLOW_REMOVED",
	12: "OFPT_PORT_STATUS",
	13: "OFPT_PACKET_OUT",
	14: "OFPT_FLOW_MOD",
	15: "OFPT_GROUP_MOD",
	16: "OFPT_PORT_MOD",
	17: "OFPT_TABLE_MOD",
	18: "OFPT_MULTIPART_REQUEST",
	19: "OFPT_MULTIPART_REPLY",
	20: "OFPT_BARRIER_REQUEST",
	21: "OFPT_BARRIER_REPLY",
	22: "OFPT_QUEUE_GET_CONFIG_REQUEST",
	23: "OFPT_QUEUE_GET_CONFIG_REPLY",
	24: "OFPT_ROLE_REQUEST",
	25: "OFPT_ROLE_REPLY",
	26: "OFPT_GET_ASYNC_REQUEST",
	27: "OFPT_GET_ASYNC_REPLY",
	28: "OFPT_SET_ASYNC",
	29: "OFPT_METER_MOD",
}
var OfpType_value = map[string]int32{
	"OFPT_HELLO":                    0,
	"OFPT_ERROR":                    1,
	"OFPT_ECHO_REQUEST":             2,
	"OFPT_ECHO_REPLY":               3,
	"OFPT_EXPERIMENTER":             4,
	"OFPT_FEATURES_REQUEST":         5,
	"OFPT_FEATURES_REPLY":           6,
	"OFPT_GET_CONFIG_REQUEST":       7,
	"OFPT_GET_CONFIG_REPLY":         8,
	"OFPT_SET_CONFIG":               9,
	"OFPT_PACKET_IN":                10,
	"OFPT_FLOW_REMOVED":             11,
	"OFPT_PORT_STATUS":              12,
	"OFPT_PACKET_OUT":               13,
	"OFPT_FLOW_MOD":                 14,
	"OFPT_GROUP_MOD":                15,
	"OFPT_PORT_MOD":                 16,
	"OFPT_TABLE_MOD":                17,
	"OFPT_MULTIPART_REQUEST":        18,
	"OFPT_MULTIPART_REPLY":          19,
	"OFPT_BARRIER_REQUEST":          20,
	"OFPT_BARRIER_REPLY":            21,
	"OFPT_QUEUE_GET_CONFIG_REQUEST": 22,
	"OFPT_QUEUE_GET_CONFIG_REPLY":   23,
	"OFPT_ROLE_REQUEST":             24,
	"OFPT_ROLE_REPLY":               25,
	"OFPT_GET_ASYNC_REQUEST":        26,
	"OFPT_GET_ASYNC_REPLY":          27,
	"OFPT_SET_ASYNC":                28,
	"OFPT_METER_MOD":                29,
}

func (x OfpType) String() string {
	return proto.EnumName(OfpType_name, int32(x))
}
func (OfpType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

// Hello elements types.
type OfpHelloElemType int32

const (
	OfpHelloElemType_OFPHET_INVALID       OfpHelloElemType = 0
	OfpHelloElemType_OFPHET_VERSIONBITMAP OfpHelloElemType = 1
)

var OfpHelloElemType_name = map[int32]string{
	0: "OFPHET_INVALID",
	1: "OFPHET_VERSIONBITMAP",
}
var OfpHelloElemType_value = map[string]int32{
	"OFPHET_INVALID":       0,
	"OFPHET_VERSIONBITMAP": 1,
}

func (x OfpHelloElemType) String() string {
	return proto.EnumName(OfpHelloElemType_name, int32(x))
}
func (OfpHelloElemType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }

type OfpConfigFlags int32

const (
	// Handling of IP fragments.
	OfpConfigFlags_OFPC_FRAG_NORMAL OfpConfigFlags = 0
	OfpConfigFlags_OFPC_FRAG_DROP   OfpConfigFlags = 1
	OfpConfigFlags_OFPC_FRAG_REASM  OfpConfigFlags = 2
	OfpConfigFlags_OFPC_FRAG_MASK   OfpConfigFlags = 3
)

var OfpConfigFlags_name = map[int32]string{
	0: "OFPC_FRAG_NORMAL",
	1: "OFPC_FRAG_DROP",
	2: "OFPC_FRAG_REASM",
	3: "OFPC_FRAG_MASK",
}
var OfpConfigFlags_value = map[string]int32{
	"OFPC_FRAG_NORMAL": 0,
	"OFPC_FRAG_DROP":   1,
	"OFPC_FRAG_REASM":  2,
	"OFPC_FRAG_MASK":   3,
}

func (x OfpConfigFlags) String() string {
	return proto.EnumName(OfpConfigFlags_name, int32(x))
}
func (OfpConfigFlags) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }

// Flags to configure the table. Reserved for future use.
type OfpTableConfig int32

const (
	OfpTableConfig_OFPTC_INVALID         OfpTableConfig = 0
	OfpTableConfig_OFPTC_DEPRECATED_MASK OfpTableConfig = 3
)

var OfpTableConfig_name = map[int32]string{
	0: "OFPTC_INVALID",
	3: "OFPTC_DEPRECATED_MASK",
}
var OfpTableConfig_value = map[string]int32{
	"OFPTC_INVALID":         0,
	"OFPTC_DEPRECATED_MASK": 3,
}

func (x OfpTableConfig) String() string {
	return proto.EnumName(OfpTableConfig_name, int32(x))
}
func (OfpTableConfig) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }

// Table numbering. Tables can use any number up to OFPT_MAX.
type OfpTable int32

const (
	OfpTable_OFPTT_INVALID OfpTable = 0
	// Last usable table number.
	OfpTable_OFPTT_MAX OfpTable = 254
	// Fake tables.
	OfpTable_OFPTT_ALL OfpTable = 255
)

var OfpTable_name = map[int32]string{
	0:   "OFPTT_INVALID",
	254: "OFPTT_MAX",
	255: "OFPTT_ALL",
}
var OfpTable_value = map[string]int32{
	"OFPTT_INVALID": 0,
	"OFPTT_MAX":     254,
	"OFPTT_ALL":     255,
}

func (x OfpTable) String() string {
	return proto.EnumName(OfpTable_name, int32(x))
}
func (OfpTable) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }

// Capabilities supported by the datapath.
type OfpCapabilities int32

const (
	OfpCapabilities_OFPC_INVALID      OfpCapabilities = 0
	OfpCapabilities_OFPC_FLOW_STATS   OfpCapabilities = 1
	OfpCapabilities_OFPC_TABLE_STATS  OfpCapabilities = 2
	OfpCapabilities_OFPC_PORT_STATS   OfpCapabilities = 4
	OfpCapabilities_OFPC_GROUP_STATS  OfpCapabilities = 8
	OfpCapabilities_OFPC_IP_REASM     OfpCapabilities = 32
	OfpCapabilities_OFPC_QUEUE_STATS  OfpCapabilities = 64
	OfpCapabilities_OFPC_PORT_BLOCKED OfpCapabilities = 256
)

var OfpCapabilities_name = map[int32]string{
	0:   "OFPC_INVALID",
	1:   "OFPC_FLOW_STATS",
	2:   "OFPC_TABLE_STATS",
	4:   "OFPC_PORT_STATS",
	8:   "OFPC_GROUP_STATS",
	32:  "OFPC_IP_REASM",
	64:  "OFPC_QUEUE_STATS",
	256: "OFPC_PORT_BLOCKED",
}
var OfpCapabilities_value = map[string]int32{
	"OFPC_INVALID":      0,
	"OFPC_FLOW_STATS":   1,
	"OFPC_TABLE_STATS":  2,
	"OFPC_PORT_STATS":   4,
	"OFPC_GROUP_STATS":  8,
	"OFPC_IP_REASM":     32,
	"OFPC_QUEUE_STATS":  64,
	"OFPC_PORT_BLOCKED": 256,
}

func (x OfpCapabilities) String() string {
	return proto.EnumName(OfpCapabilities_name, int32(x))
}
func (OfpCapabilities) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }

// Flags to indicate behavior of the physical port.  These flags are
// used in ofp_port to describe the current configuration.  They are
// used in the ofp_port_mod message to configure the port's behavior.
type OfpPortConfig int32

const (
	OfpPortConfig_OFPPC_INVALID      OfpPortConfig = 0
	OfpPortConfig_OFPPC_PORT_DOWN    OfpPortConfig = 1
	OfpPortConfig_OFPPC_NO_RECV      OfpPortConfig = 4
	OfpPortConfig_OFPPC_NO_FWD       OfpPortConfig = 32
	OfpPortConfig_OFPPC_NO_PACKET_IN OfpPortConfig = 64
)

var OfpPortConfig_name = map[int32]string{
	0:  "OFPPC_INVALID",
	1:  "OFPPC_PORT_DOWN",
	4:  "OFPPC_NO_RECV",
	32: "OFPPC_NO_FWD",
	64: "OFPPC_NO_PACKET_IN",
}
var OfpPortConfig_value = map[string]int32{
	"OFPPC_INVALID":      0,
	"OFPPC_PORT_DOWN":    1,
	"OFPPC_NO_RECV":      4,
	"OFPPC_NO_FWD":       32,
	"OFPPC_NO_PACKET_IN": 64,
}

func (x OfpPortConfig) String() string {
	return proto.EnumName(OfpPortConfig_name, int32(x))
}
func (OfpPortConfig) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }

// Current state of the physical port.  These are not configurable from
// the controller.
type OfpPortState int32

const (
	OfpPortState_OFPPS_INVALID   OfpPortState = 0
	OfpPortState_OFPPS_LINK_DOWN OfpPortState = 1
	OfpPortState_OFPPS_BLOCKED   OfpPortState = 2
	OfpPortState_OFPPS_LIVE      OfpPortState = 4
)

var OfpPortState_name = map[int32]string{
	0: "OFPPS_INVALID",
	1: "OFPPS_LINK_DOWN",
	2: "OFPPS_BLOCKED",
	4: "OFPPS_LIVE",
}
var OfpPortState_value = map[string]int32{
	"OFPPS_INVALID":   0,
	"OFPPS_LINK_DOWN": 1,
	"OFPPS_BLOCKED":   2,
	"OFPPS_LIVE":      4,
}

func (x OfpPortState) String() string {
	return proto.EnumName(OfpPortState_name, int32(x))
}
func (OfpPortState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }

// Features of ports available in a datapath.
type OfpPortFeatures int32

const (
	OfpPortFeatures_OFPPF_INVALID    OfpPortFeatures = 0
	OfpPortFeatures_OFPPF_10MB_HD    OfpPortFeatures = 1
	OfpPortFeatures_OFPPF_10MB_FD    OfpPortFeatures = 2
	OfpPortFeatures_OFPPF_100MB_HD   OfpPortFeatures = 4
	OfpPortFeatures_OFPPF_100MB_FD   OfpPortFeatures = 8
	OfpPortFeatures_OFPPF_1GB_HD     OfpPortFeatures = 16
	OfpPortFeatures_OFPPF_1GB_FD     OfpPortFeatures = 32
	OfpPortFeatures_OFPPF_10GB_FD    OfpPortFeatures = 64
	OfpPortFeatures_OFPPF_40GB_FD    OfpPortFeatures = 128
	OfpPortFeatures_OFPPF_100GB_FD   OfpPortFeatures = 256
	OfpPortFeatures_OFPPF_1TB_FD     OfpPortFeatures = 512
	OfpPortFeatures_OFPPF_OTHER      OfpPortFeatures = 1024
	OfpPortFeatures_OFPPF_COPPER     OfpPortFeatures = 2048
	OfpPortFeatures_OFPPF_FIBER      OfpPortFeatures = 4096
	OfpPortFeatures_OFPPF_AUTONEG    OfpPortFeatures = 8192
	OfpPortFeatures_OFPPF_PAUSE      OfpPortFeatures = 16384
	OfpPortFeatures_OFPPF_PAUSE_ASYM OfpPortFeatures = 32768
)

var OfpPortFeatures_name = map[int32]string{
	0:     "OFPPF_INVALID",
	1:     "OFPPF_10MB_HD",
	2:     "OFPPF_10MB_FD",
	4:     "OFPPF_100MB_HD",
	8:     "OFPPF_100MB_FD",
	16:    "OFPPF_1GB_HD",
	32:    "OFPPF_1GB_FD",
	64:    "OFPPF_10GB_FD",
	128:   "OFPPF_40GB_FD",
	256:   "OFPPF_100GB_FD",
	512:   "OFPPF_1TB_FD",
	1024:  "OFPPF_OTHER",
	2048:  "OFPPF_COPPER",
	4096:  "OFPPF_FIBER",
	8192:  "OFPPF_AUTONEG",
	16384: "OFPPF_PAUSE",
	32768: "OFPPF_PAUSE_ASYM",
}
var OfpPortFeatures_value = map[string]int32{
	"OFPPF_INVALID":    0,
	"OFPPF_10MB_HD":    1,
	"OFPPF_10MB_FD":    2,
	"OFPPF_100MB_HD":   4,
	"OFPPF_100MB_FD":   8,
	"OFPPF_1GB_HD":     16,
	"OFPPF_1GB_FD":     32,
	"OFPPF_10GB_FD":    64,
	"OFPPF_40GB_FD":    128,
	"OFPPF_100GB_FD":   256,
	"OFPPF_1TB_FD":     512,
	"OFPPF_OTHER":      1024,
	"OFPPF_COPPER":     2048,
	"OFPPF_FIBER":      4096,
	"OFPPF_AUTONEG":    8192,
	"OFPPF_PAUSE":      16384,
	"OFPPF_PAUSE_ASYM": 32768,
}

func (x OfpPortFeatures) String() string {
	return proto.EnumName(OfpPortFeatures_name, int32(x))
}
func (OfpPortFeatures) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }

// What changed about the physical port
type OfpPortReason int32

const (
	OfpPortReason_OFPPR_ADD    OfpPortReason = 0
	OfpPortReason_OFPPR_DELETE OfpPortReason = 1
	OfpPortReason_OFPPR_MODIFY OfpPortReason = 2
)

var OfpPortReason_name = map[int32]string{
	0: "OFPPR_ADD",
	1: "OFPPR_DELETE",
	2: "OFPPR_MODIFY",
}
var OfpPortReason_value = map[string]int32{
	"OFPPR_ADD":    0,
	"OFPPR_DELETE": 1,
	"OFPPR_MODIFY": 2,
}

func (x OfpPortReason) String() string {
	return proto.EnumName(OfpPortReason_name, int32(x))
}
func (OfpPortReason) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }

// The match type indicates the match structure (set of fields that compose the
// match) in use. The match type is placed in the type field at the beginning
// of all match structures. The "OpenFlow Extensible Match" type corresponds
// to OXM TLV format described below and must be supported by all OpenFlow
// switches. Extensions that define other match types may be published on the
// ONF wiki. Support for extensions is optional.
type OfpMatchType int32

const (
	OfpMatchType_OFPMT_STANDARD OfpMatchType = 0
	OfpMatchType_OFPMT_OXM      OfpMatchType = 1
)

var OfpMatchType_name = map[int32]string{
	0: "OFPMT_STANDARD",
	1: "OFPMT_OXM",
}
var OfpMatchType_value = map[string]int32{
	"OFPMT_STANDARD": 0,
	"OFPMT_OXM":      1,
}

func (x OfpMatchType) String() string {
	return proto.EnumName(OfpMatchType_name, int32(x))
}
func (OfpMatchType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }

// OXM Class IDs.
// The high order bit differentiate reserved classes from member classes.
// Classes 0x0000 to 0x7FFF are member classes, allocated by ONF.
// Classes 0x8000 to 0xFFFE are reserved classes, reserved for standardisation.
type OfpOxmClass int32

const (
	OfpOxmClass_OFPXMC_NXM_0          OfpOxmClass = 0
	OfpOxmClass_OFPXMC_NXM_1          OfpOxmClass = 1
	OfpOxmClass_OFPXMC_OPENFLOW_BASIC OfpOxmClass = 32768
	OfpOxmClass_OFPXMC_EXPERIMENTER   OfpOxmClass = 65535
)

var OfpOxmClass_name = map[int32]string{
	0:     "OFPXMC_NXM_0",
	1:     "OFPXMC_NXM_1",
	32768: "OFPXMC_OPENFLOW_BASIC",
	65535: "OFPXMC_EXPERIMENTER",
}
var OfpOxmClass_value = map[string]int32{
	"OFPXMC_NXM_0":          0,
	"OFPXMC_NXM_1":          1,
	"OFPXMC_OPENFLOW_BASIC": 32768,
	"OFPXMC_EXPERIMENTER":   65535,
}

func (x OfpOxmClass) String() string {
	return proto.EnumName(OfpOxmClass_name, int32(x))
}
func (OfpOxmClass) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }

// OXM Flow field types for OpenFlow basic class.
type OxmOfbFieldTypes int32

const (
	OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT        OxmOfbFieldTypes = 0
	OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT    OxmOfbFieldTypes = 1
	OxmOfbFieldTypes_OFPXMT_OFB_METADATA       OxmOfbFieldTypes = 2
	OxmOfbFieldTypes_OFPXMT_OFB_ETH_DST        OxmOfbFieldTypes = 3
	OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC        OxmOfbFieldTypes = 4
	OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE       OxmOfbFieldTypes = 5
	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID       OxmOfbFieldTypes = 6
	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_PCP       OxmOfbFieldTypes = 7
	OxmOfbFieldTypes_OFPXMT_OFB_IP_DSCP        OxmOfbFieldTypes = 8
	OxmOfbFieldTypes_OFPXMT_OFB_IP_ECN         OxmOfbFieldTypes = 9
	OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO       OxmOfbFieldTypes = 10
	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_SRC       OxmOfbFieldTypes = 11
	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_DST       OxmOfbFieldTypes = 12
	OxmOfbFieldTypes_OFPXMT_OFB_TCP_SRC        OxmOfbFieldTypes = 13
	OxmOfbFieldTypes_OFPXMT_OFB_TCP_DST        OxmOfbFieldTypes = 14
	OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC        OxmOfbFieldTypes = 15
	OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST        OxmOfbFieldTypes = 16
	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_SRC       OxmOfbFieldTypes = 17
	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_DST       OxmOfbFieldTypes = 18
	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_TYPE    OxmOfbFieldTypes = 19
	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_CODE    OxmOfbFieldTypes = 20
	OxmOfbFieldTypes_OFPXMT_OFB_ARP_OP         OxmOfbFieldTypes = 21
	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SPA        OxmOfbFieldTypes = 22
	OxmOfbFieldTypes_OFPXMT_OFB_ARP_TPA        OxmOfbFieldTypes = 23
	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SHA        OxmOfbFieldTypes = 24
	OxmOfbFieldTypes_OFPXMT_OFB_ARP_THA        OxmOfbFieldTypes = 25
	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_SRC       OxmOfbFieldTypes = 26
	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_DST       OxmOfbFieldTypes = 27
	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_FLABEL    OxmOfbFieldTypes = 28
	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_TYPE    OxmOfbFieldTypes = 29
	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_CODE    OxmOfbFieldTypes = 30
	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TARGET OxmOfbFieldTypes = 31
	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_SLL    OxmOfbFieldTypes = 32
	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TLL    OxmOfbFieldTypes = 33
	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL     OxmOfbFieldTypes = 34
	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC        OxmOfbFieldTypes = 35
	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS       OxmOfbFieldTypes = 36
	OxmOfbFieldTypes_OFPXMT_OFB_PBB_ISID       OxmOfbFieldTypes = 37
	OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID      OxmOfbFieldTypes = 38
	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR    OxmOfbFieldTypes = 39
)

var OxmOfbFieldTypes_name = map[int32]string{
	0:  "OFPXMT_OFB_IN_PORT",
	1:  "OFPXMT_OFB_IN_PHY_PORT",
	2:  "OFPXMT_OFB_METADATA",
	3:  "OFPXMT_OFB_ETH_DST",
	4:  "OFPXMT_OFB_ETH_SRC",
	5:  "OFPXMT_OFB_ETH_TYPE",
	6:  "OFPXMT_OFB_VLAN_VID",
	7:  "OFPXMT_OFB_VLAN_PCP",
	8:  "OFPXMT_OFB_IP_DSCP",
	9:  "OFPXMT_OFB_IP_ECN",
	10: "OFPXMT_OFB_IP_PROTO",
	11: "OFPXMT_OFB_IPV4_SRC",
	12: "OFPXMT_OFB_IPV4_DST",
	13: "OFPXMT_OFB_TCP_SRC",
	14: "OFPXMT_OFB_TCP_DST",
	15: "OFPXMT_OFB_UDP_SRC",
	16: "OFPXMT_OFB_UDP_DST",
	17: "OFPXMT_OFB_SCTP_SRC",
	18: "OFPXMT_OFB_SCTP_DST",
	19: "OFPXMT_OFB_ICMPV4_TYPE",
	20: "OFPXMT_OFB_ICMPV4_CODE",
	21: "OFPXMT_OFB_ARP_OP",
	22: "OFPXMT_OFB_ARP_SPA",
	23: "OFPXMT_OFB_ARP_TPA",
	24: "OFPXMT_OFB_ARP_SHA",
	25: "OFPXMT_OFB_ARP_THA",
	26: "OFPXMT_OFB_IPV6_SRC",
	27: "OFPXMT_OFB_IPV6_DST",
	28: "OFPXMT_OFB_IPV6_FLABEL",
	29: "OFPXMT_OFB_ICMPV6_TYPE",
	30: "OFPXMT_OFB_ICMPV6_CODE",
	31: "OFPXMT_OFB_IPV6_ND_TARGET",
	32: "OFPXMT_OFB_IPV6_ND_SLL",
	33: "OFPXMT_OFB_IPV6_ND_TLL",
	34: "OFPXMT_OFB_MPLS_LABEL",
	35: "OFPXMT_OFB_MPLS_TC",
	36: "OFPXMT_OFB_MPLS_BOS",
	37: "OFPXMT_OFB_PBB_ISID",
	38: "OFPXMT_OFB_TUNNEL_ID",
	39: "OFPXMT_OFB_IPV6_EXTHDR",
}
var OxmOfbFieldTypes_value = map[string]int32{
	"OFPXMT_OFB_IN_PORT":        0,
	"OFPXMT_OFB_IN_PHY_PORT":    1,
	"OFPXMT_OFB_METADATA":       2,
	"OFPXMT_OFB_ETH_DST":        3,
	"OFPXMT_OFB_ETH_SRC":        4,
	"OFPXMT_OFB_ETH_TYPE":       5,
	"OFPXMT_OFB_VLAN_VID":       6,
	"OFPXMT_OFB_VLAN_PCP":       7,
	"OFPXMT_OFB_IP_DSCP":        8,
	"OFPXMT_OFB_IP_ECN":         9,
	"OFPXMT_OFB_IP_PROTO":       10,
	"OFPXMT_OFB_IPV4_SRC":       11,
	"OFPXMT_OFB_IPV4_DST":       12,
	"OFPXMT_OFB_TCP_SRC":        13,
	"OFPXMT_OFB_TCP_DST":        14,
	"OFPXMT_OFB_UDP_SRC":        15,
	"OFPXMT_OFB_UDP_DST":        16,
	"OFPXMT_OFB_SCTP_SRC":       17,
	"OFPXMT_OFB_SCTP_DST":       18,
	"OFPXMT_OFB_ICMPV4_TYPE":    19,
	"OFPXMT_OFB_ICMPV4_CODE":    20,
	"OFPXMT_OFB_ARP_OP":         21,
	"OFPXMT_OFB_ARP_SPA":        22,
	"OFPXMT_OFB_ARP_TPA":        23,
	"OFPXMT_OFB_ARP_SHA":        24,
	"OFPXMT_OFB_ARP_THA":        25,
	"OFPXMT_OFB_IPV6_SRC":       26,
	"OFPXMT_OFB_IPV6_DST":       27,
	"OFPXMT_OFB_IPV6_FLABEL":    28,
	"OFPXMT_OFB_ICMPV6_TYPE":    29,
	"OFPXMT_OFB_ICMPV6_CODE":    30,
	"OFPXMT_OFB_IPV6_ND_TARGET": 31,
	"OFPXMT_OFB_IPV6_ND_SLL":    32,
	"OFPXMT_OFB_IPV6_ND_TLL":    33,
	"OFPXMT_OFB_MPLS_LABEL":     34,
	"OFPXMT_OFB_MPLS_TC":        35,
	"OFPXMT_OFB_MPLS_BOS":       36,
	"OFPXMT_OFB_PBB_ISID":       37,
	"OFPXMT_OFB_TUNNEL_ID":      38,
	"OFPXMT_OFB_IPV6_EXTHDR":    39,
}

func (x OxmOfbFieldTypes) String() string {
	return proto.EnumName(OxmOfbFieldTypes_name, int32(x))
}
func (OxmOfbFieldTypes) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }

// The VLAN id is 12-bits, so we can use the entire 16 bits to indicate
// special conditions.
type OfpVlanId int32

const (
	OfpVlanId_OFPVID_NONE    OfpVlanId = 0
	OfpVlanId_OFPVID_PRESENT OfpVlanId = 4096
)

var OfpVlanId_name = map[int32]string{
	0:    "OFPVID_NONE",
	4096: "OFPVID_PRESENT",
}
var OfpVlanId_value = map[string]int32{
	"OFPVID_NONE":    0,
	"OFPVID_PRESENT": 4096,
}

func (x OfpVlanId) String() string {
	return proto.EnumName(OfpVlanId_name, int32(x))
}
func (OfpVlanId) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }

// Bit definitions for IPv6 Extension Header pseudo-field.
type OfpIpv6ExthdrFlags int32

const (
	OfpIpv6ExthdrFlags_OFPIEH_INVALID OfpIpv6ExthdrFlags = 0
	OfpIpv6ExthdrFlags_OFPIEH_NONEXT  OfpIpv6ExthdrFlags = 1
	OfpIpv6ExthdrFlags_OFPIEH_ESP     OfpIpv6ExthdrFlags = 2
	OfpIpv6ExthdrFlags_OFPIEH_AUTH    OfpIpv6ExthdrFlags = 4
	OfpIpv6ExthdrFlags_OFPIEH_DEST    OfpIpv6ExthdrFlags = 8
	OfpIpv6ExthdrFlags_OFPIEH_FRAG    OfpIpv6ExthdrFlags = 16
	OfpIpv6ExthdrFlags_OFPIEH_ROUTER  OfpIpv6ExthdrFlags = 32
	OfpIpv6ExthdrFlags_OFPIEH_HOP     OfpIpv6ExthdrFlags = 64
	OfpIpv6ExthdrFlags_OFPIEH_UNREP   OfpIpv6ExthdrFlags = 128
	OfpIpv6ExthdrFlags_OFPIEH_UNSEQ   OfpIpv6ExthdrFlags = 256
)

var OfpIpv6ExthdrFlags_name = map[int32]string{
	0:   "OFPIEH_INVALID",
	1:   "OFPIEH_NONEXT",
	2:   "OFPIEH_ESP",
	4:   "OFPIEH_AUTH",
	8:   "OFPIEH_DEST",
	16:  "OFPIEH_FRAG",
	32:  "OFPIEH_ROUTER",
	64:  "OFPIEH_HOP",
	128: "OFPIEH_UNREP",
	256: "OFPIEH_UNSEQ",
}
var OfpIpv6ExthdrFlags_value = map[string]int32{
	"OFPIEH_INVALID": 0,
	"OFPIEH_NONEXT":  1,
	"OFPIEH_ESP":     2,
	"OFPIEH_AUTH":    4,
	"OFPIEH_DEST":    8,
	"OFPIEH_FRAG":    16,
	"OFPIEH_ROUTER":  32,
	"OFPIEH_HOP":     64,
	"OFPIEH_UNREP":   128,
	"OFPIEH_UNSEQ":   256,
}

func (x OfpIpv6ExthdrFlags) String() string {
	return proto.EnumName(OfpIpv6ExthdrFlags_name, int32(x))
}
func (OfpIpv6ExthdrFlags) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }

type OfpActionType int32

const (
	OfpActionType_OFPAT_OUTPUT       OfpActionType = 0
	OfpActionType_OFPAT_COPY_TTL_OUT OfpActionType = 11
	OfpActionType_OFPAT_COPY_TTL_IN  OfpActionType = 12
	OfpActionType_OFPAT_SET_MPLS_TTL OfpActionType = 15
	OfpActionType_OFPAT_DEC_MPLS_TTL OfpActionType = 16
	OfpActionType_OFPAT_PUSH_VLAN    OfpActionType = 17
	OfpActionType_OFPAT_POP_VLAN     OfpActionType = 18
	OfpActionType_OFPAT_PUSH_MPLS    OfpActionType = 19
	OfpActionType_OFPAT_POP_MPLS     OfpActionType = 20
	OfpActionType_OFPAT_SET_QUEUE    OfpActionType = 21
	OfpActionType_OFPAT_GROUP        OfpActionType = 22
	OfpActionType_OFPAT_SET_NW_TTL   OfpActionType = 23
	OfpActionType_OFPAT_DEC_NW_TTL   OfpActionType = 24
	OfpActionType_OFPAT_SET_FIELD    OfpActionType = 25
	OfpActionType_OFPAT_PUSH_PBB     OfpActionType = 26
	OfpActionType_OFPAT_POP_PBB      OfpActionType = 27
	OfpActionType_OFPAT_EXPERIMENTER OfpActionType = 65535
)

var OfpActionType_name = map[int32]string{
	0:     "OFPAT_OUTPUT",
	11:    "OFPAT_COPY_TTL_OUT",
	12:    "OFPAT_COPY_TTL_IN",
	15:    "OFPAT_SET_MPLS_TTL",
	16:    "OFPAT_DEC_MPLS_TTL",
	17:    "OFPAT_PUSH_VLAN",
	18:    "OFPAT_POP_VLAN",
	19:    "OFPAT_PUSH_MPLS",
	20:    "OFPAT_POP_MPLS",
	21:    "OFPAT_SET_QUEUE",
	22:    "OFPAT_GROUP",
	23:    "OFPAT_SET_NW_TTL",
	24:    "OFPAT_DEC_NW_TTL",
	25:    "OFPAT_SET_FIELD",
	26:    "OFPAT_PUSH_PBB",
	27:    "OFPAT_POP_PBB",
	65535: "OFPAT_EXPERIMENTER",
}
var OfpActionType_value = map[string]int32{
	"OFPAT_OUTPUT":       0,
	"OFPAT_COPY_TTL_OUT": 11,
	"OFPAT_COPY_TTL_IN":  12,
	"OFPAT_SET_MPLS_TTL": 15,
	"OFPAT_DEC_MPLS_TTL": 16,
	"OFPAT_PUSH_VLAN":    17,
	"OFPAT_POP_VLAN":     18,
	"OFPAT_PUSH_MPLS":    19,
	"OFPAT_POP_MPLS":     20,
	"OFPAT_SET_QUEUE":    21,
	"OFPAT_GROUP":        22,
	"OFPAT_SET_NW_TTL":   23,
	"OFPAT_DEC_NW_TTL":   24,
	"OFPAT_SET_FIELD":    25,
	"OFPAT_PUSH_PBB":     26,
	"OFPAT_POP_PBB":      27,
	"OFPAT_EXPERIMENTER": 65535,
}

func (x OfpActionType) String() string {
	return proto.EnumName(OfpActionType_name, int32(x))
}
func (OfpActionType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }

type OfpControllerMaxLen int32

const (
	OfpControllerMaxLen_OFPCML_INVALID   OfpControllerMaxLen = 0
	OfpControllerMaxLen_OFPCML_MAX       OfpControllerMaxLen = 65509
	OfpControllerMaxLen_OFPCML_NO_BUFFER OfpControllerMaxLen = 65535
)

var OfpControllerMaxLen_name = map[int32]string{
	0:     "OFPCML_INVALID",
	65509: "OFPCML_MAX",
	65535: "OFPCML_NO_BUFFER",
}
var OfpControllerMaxLen_value = map[string]int32{
	"OFPCML_INVALID":   0,
	"OFPCML_MAX":       65509,
	"OFPCML_NO_BUFFER": 65535,
}

func (x OfpControllerMaxLen) String() string {
	return proto.EnumName(OfpControllerMaxLen_name, int32(x))
}
func (OfpControllerMaxLen) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }

type OfpInstructionType int32

const (
	OfpInstructionType_OFPIT_INVALID        OfpInstructionType = 0
	OfpInstructionType_OFPIT_GOTO_TABLE     OfpInstructionType = 1
	OfpInstructionType_OFPIT_WRITE_METADATA OfpInstructionType = 2
	OfpInstructionType_OFPIT_WRITE_ACTIONS  OfpInstructionType = 3
	OfpInstructionType_OFPIT_APPLY_ACTIONS  OfpInstructionType = 4
	OfpInstructionType_OFPIT_CLEAR_ACTIONS  OfpInstructionType = 5
	OfpInstructionType_OFPIT_METER          OfpInstructionType = 6
	OfpInstructionType_OFPIT_EXPERIMENTER   OfpInstructionType = 65535
)

var OfpInstructionType_name = map[int32]string{
	0:     "OFPIT_INVALID",
	1:     "OFPIT_GOTO_TABLE",
	2:     "OFPIT_WRITE_METADATA",
	3:     "OFPIT_WRITE_ACTIONS",
	4:     "OFPIT_APPLY_ACTIONS",
	5:     "OFPIT_CLEAR_ACTIONS",
	6:     "OFPIT_METER",
	65535: "OFPIT_EXPERIMENTER",
}
var OfpInstructionType_value = map[string]int32{
	"OFPIT_INVALID":        0,
	"OFPIT_GOTO_TABLE":     1,
	"OFPIT_WRITE_METADATA": 2,
	"OFPIT_WRITE_ACTIONS":  3,
	"OFPIT_APPLY_ACTIONS":  4,
	"OFPIT_CLEAR_ACTIONS":  5,
	"OFPIT_METER":          6,
	"OFPIT_EXPERIMENTER":   65535,
}

func (x OfpInstructionType) String() string {
	return proto.EnumName(OfpInstructionType_name, int32(x))
}
func (OfpInstructionType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }

type OfpFlowModCommand int32

const (
	OfpFlowModCommand_OFPFC_ADD           OfpFlowModCommand = 0
	OfpFlowModCommand_OFPFC_MODIFY        OfpFlowModCommand = 1
	OfpFlowModCommand_OFPFC_MODIFY_STRICT OfpFlowModCommand = 2
	OfpFlowModCommand_OFPFC_DELETE        OfpFlowModCommand = 3
	OfpFlowModCommand_OFPFC_DELETE_STRICT OfpFlowModCommand = 4
)

var OfpFlowModCommand_name = map[int32]string{
	0: "OFPFC_ADD",
	1: "OFPFC_MODIFY",
	2: "OFPFC_MODIFY_STRICT",
	3: "OFPFC_DELETE",
	4: "OFPFC_DELETE_STRICT",
}
var OfpFlowModCommand_value = map[string]int32{
	"OFPFC_ADD":           0,
	"OFPFC_MODIFY":        1,
	"OFPFC_MODIFY_STRICT": 2,
	"OFPFC_DELETE":        3,
	"OFPFC_DELETE_STRICT": 4,
}

func (x OfpFlowModCommand) String() string {
	return proto.EnumName(OfpFlowModCommand_name, int32(x))
}
func (OfpFlowModCommand) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }

type OfpFlowModFlags int32

const (
	OfpFlowModFlags_OFPFF_INVALID       OfpFlowModFlags = 0
	OfpFlowModFlags_OFPFF_SEND_FLOW_REM OfpFlowModFlags = 1
	OfpFlowModFlags_OFPFF_CHECK_OVERLAP OfpFlowModFlags = 2
	OfpFlowModFlags_OFPFF_RESET_COUNTS  OfpFlowModFlags = 4
	OfpFlowModFlags_OFPFF_NO_PKT_COUNTS OfpFlowModFlags = 8
	OfpFlowModFlags_OFPFF_NO_BYT_COUNTS OfpFlowModFlags = 16
)

var OfpFlowModFlags_name = map[int32]string{
	0:  "OFPFF_INVALID",
	1:  "OFPFF_SEND_FLOW_REM",
	2:  "OFPFF_CHECK_OVERLAP",
	4:  "OFPFF_RESET_COUNTS",
	8:  "OFPFF_NO_PKT_COUNTS",
	16: "OFPFF_NO_BYT_COUNTS",
}
var OfpFlowModFlags_value = map[string]int32{
	"OFPFF_INVALID":       0,
	"OFPFF_SEND_FLOW_REM": 1,
	"OFPFF_CHECK_OVERLAP": 2,
	"OFPFF_RESET_COUNTS":  4,
	"OFPFF_NO_PKT_COUNTS": 8,
	"OFPFF_NO_BYT_COUNTS": 16,
}

func (x OfpFlowModFlags) String() string {
	return proto.EnumName(OfpFlowModFlags_name, int32(x))
}
func (OfpFlowModFlags) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }

// Group numbering. Groups can use any number up to OFPG_MAX.
type OfpGroup int32

const (
	OfpGroup_OFPG_INVALID OfpGroup = 0
	// Last usable group number.
	OfpGroup_OFPG_MAX OfpGroup = 2147483392
	// Fake groups.
	OfpGroup_OFPG_ALL OfpGroup = 2147483644
	OfpGroup_OFPG_ANY OfpGroup = 2147483647
)

var OfpGroup_name = map[int32]string{
	0:          "OFPG_INVALID",
	2147483392: "OFPG_MAX",
	2147483644: "OFPG_ALL",
	2147483647: "OFPG_ANY",
}
var OfpGroup_value = map[string]int32{
	"OFPG_INVALID": 0,
	"OFPG_MAX":     2147483392,
	"OFPG_ALL":     2147483644,
	"OFPG_ANY":     2147483647,
}

func (x OfpGroup) String() string {
	return proto.EnumName(OfpGroup_name, int32(x))
}
func (OfpGroup) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }

// Group commands
type OfpGroupModCommand int32

const (
	OfpGroupModCommand_OFPGC_ADD    OfpGroupModCommand = 0
	OfpGroupModCommand_OFPGC_MODIFY OfpGroupModCommand = 1
	OfpGroupModCommand_OFPGC_DELETE OfpGroupModCommand = 2
)

var OfpGroupModCommand_name = map[int32]string{
	0: "OFPGC_ADD",
	1: "OFPGC_MODIFY",
	2: "OFPGC_DELETE",
}
var OfpGroupModCommand_value = map[string]int32{
	"OFPGC_ADD":    0,
	"OFPGC_MODIFY": 1,
	"OFPGC_DELETE": 2,
}

func (x OfpGroupModCommand) String() string {
	return proto.EnumName(OfpGroupModCommand_name, int32(x))
}
func (OfpGroupModCommand) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }

// Group types.  Values in the range [128; 255] are reserved for experimental
// use.
type OfpGroupType int32

const (
	OfpGroupType_OFPGT_ALL      OfpGroupType = 0
	OfpGroupType_OFPGT_SELECT   OfpGroupType = 1
	OfpGroupType_OFPGT_INDIRECT OfpGroupType = 2
	OfpGroupType_OFPGT_FF       OfpGroupType = 3
)

var OfpGroupType_name = map[int32]string{
	0: "OFPGT_ALL",
	1: "OFPGT_SELECT",
	2: "OFPGT_INDIRECT",
	3: "OFPGT_FF",
}
var OfpGroupType_value = map[string]int32{
	"OFPGT_ALL":      0,
	"OFPGT_SELECT":   1,
	"OFPGT_INDIRECT": 2,
	"OFPGT_FF":       3,
}

func (x OfpGroupType) String() string {
	return proto.EnumName(OfpGroupType_name, int32(x))
}
func (OfpGroupType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }

// Why is this packet being sent to the controller?
type OfpPacketInReason int32

const (
	OfpPacketInReason_OFPR_NO_MATCH    OfpPacketInReason = 0
	OfpPacketInReason_OFPR_ACTION      OfpPacketInReason = 1
	OfpPacketInReason_OFPR_INVALID_TTL OfpPacketInReason = 2
)

var OfpPacketInReason_name = map[int32]string{
	0: "OFPR_NO_MATCH",
	1: "OFPR_ACTION",
	2: "OFPR_INVALID_TTL",
}
var OfpPacketInReason_value = map[string]int32{
	"OFPR_NO_MATCH":    0,
	"OFPR_ACTION":      1,
	"OFPR_INVALID_TTL": 2,
}

func (x OfpPacketInReason) String() string {
	return proto.EnumName(OfpPacketInReason_name, int32(x))
}
func (OfpPacketInReason) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }

// Why was this flow removed?
type OfpFlowRemovedReason int32

const (
	OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT OfpFlowRemovedReason = 0
	OfpFlowRemovedReason_OFPRR_HARD_TIMEOUT OfpFlowRemovedReason = 1
	OfpFlowRemovedReason_OFPRR_DELETE       OfpFlowRemovedReason = 2
	OfpFlowRemovedReason_OFPRR_GROUP_DELETE OfpFlowRemovedReason = 3
	OfpFlowRemovedReason_OFPRR_METER_DELETE OfpFlowRemovedReason = 4
)

var OfpFlowRemovedReason_name = map[int32]string{
	0: "OFPRR_IDLE_TIMEOUT",
	1: "OFPRR_HARD_TIMEOUT",
	2: "OFPRR_DELETE",
	3: "OFPRR_GROUP_DELETE",
	4: "OFPRR_METER_DELETE",
}
var OfpFlowRemovedReason_value = map[string]int32{
	"OFPRR_IDLE_TIMEOUT": 0,
	"OFPRR_HARD_TIMEOUT": 1,
	"OFPRR_DELETE":       2,
	"OFPRR_GROUP_DELETE": 3,
	"OFPRR_METER_DELETE": 4,
}

func (x OfpFlowRemovedReason) String() string {
	return proto.EnumName(OfpFlowRemovedReason_name, int32(x))
}
func (OfpFlowRemovedReason) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }

// Meter numbering. Flow meters can use any number up to OFPM_MAX.
type OfpMeter int32

const (
	OfpMeter_OFPM_ZERO OfpMeter = 0
	// Last usable meter.
	OfpMeter_OFPM_MAX OfpMeter = 2147418112
	// Virtual meters.
	OfpMeter_OFPM_SLOWPATH   OfpMeter = 2147483645
	OfpMeter_OFPM_CONTROLLER OfpMeter = 2147483646
	OfpMeter_OFPM_ALL        OfpMeter = 2147483647
)

var OfpMeter_name = map[int32]string{
	0:          "OFPM_ZERO",
	2147418112: "OFPM_MAX",
	2147483645: "OFPM_SLOWPATH",
	2147483646: "OFPM_CONTROLLER",
	2147483647: "OFPM_ALL",
}
var OfpMeter_value = map[string]int32{
	"OFPM_ZERO":       0,
	"OFPM_MAX":        2147418112,
	"OFPM_SLOWPATH":   2147483645,
	"OFPM_CONTROLLER": 2147483646,
	"OFPM_ALL":        2147483647,
}

func (x OfpMeter) String() string {
	return proto.EnumName(OfpMeter_name, int32(x))
}
func (OfpMeter) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }

// Meter band types
type OfpMeterBandType int32

const (
	OfpMeterBandType_OFPMBT_INVALID      OfpMeterBandType = 0
	OfpMeterBandType_OFPMBT_DROP         OfpMeterBandType = 1
	OfpMeterBandType_OFPMBT_DSCP_REMARK  OfpMeterBandType = 2
	OfpMeterBandType_OFPMBT_EXPERIMENTER OfpMeterBandType = 65535
)

var OfpMeterBandType_name = map[int32]string{
	0:     "OFPMBT_INVALID",
	1:     "OFPMBT_DROP",
	2:     "OFPMBT_DSCP_REMARK",
	65535: "OFPMBT_EXPERIMENTER",
}
var OfpMeterBandType_value = map[string]int32{
	"OFPMBT_INVALID":      0,
	"OFPMBT_DROP":         1,
	"OFPMBT_DSCP_REMARK":  2,
	"OFPMBT_EXPERIMENTER": 65535,
}

func (x OfpMeterBandType) String() string {
	return proto.EnumName(OfpMeterBandType_name, int32(x))
}
func (OfpMeterBandType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }

// Meter commands
type OfpMeterModCommand int32

const (
	OfpMeterModCommand_OFPMC_ADD    OfpMeterModCommand = 0
	OfpMeterModCommand_OFPMC_MODIFY OfpMeterModCommand = 1
	OfpMeterModCommand_OFPMC_DELETE OfpMeterModCommand = 2
)

var OfpMeterModCommand_name = map[int32]string{
	0: "OFPMC_ADD",
	1: "OFPMC_MODIFY",
	2: "OFPMC_DELETE",
}
var OfpMeterModCommand_value = map[string]int32{
	"OFPMC_ADD":    0,
	"OFPMC_MODIFY": 1,
	"OFPMC_DELETE": 2,
}

func (x OfpMeterModCommand) String() string {
	return proto.EnumName(OfpMeterModCommand_name, int32(x))
}
func (OfpMeterModCommand) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }

// Meter configuration flags
type OfpMeterFlags int32

const (
	OfpMeterFlags_OFPMF_INVALID OfpMeterFlags = 0
	OfpMeterFlags_OFPMF_KBPS    OfpMeterFlags = 1
	OfpMeterFlags_OFPMF_PKTPS   OfpMeterFlags = 2
	OfpMeterFlags_OFPMF_BURST   OfpMeterFlags = 4
	OfpMeterFlags_OFPMF_STATS   OfpMeterFlags = 8
)

var OfpMeterFlags_name = map[int32]string{
	0: "OFPMF_INVALID",
	1: "OFPMF_KBPS",
	2: "OFPMF_PKTPS",
	4: "OFPMF_BURST",
	8: "OFPMF_STATS",
}
var OfpMeterFlags_value = map[string]int32{
	"OFPMF_INVALID": 0,
	"OFPMF_KBPS":    1,
	"OFPMF_PKTPS":   2,
	"OFPMF_BURST":   4,
	"OFPMF_STATS":   8,
}

func (x OfpMeterFlags) String() string {
	return proto.EnumName(OfpMeterFlags_name, int32(x))
}
func (OfpMeterFlags) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }

// Values for 'type' in ofp_error_message.  These values are immutable: they
// will not change in future versions of the protocol (although new values may
// be added).
type OfpErrorType int32

const (
	OfpErrorType_OFPET_HELLO_FAILED          OfpErrorType = 0
	OfpErrorType_OFPET_BAD_REQUEST           OfpErrorType = 1
	OfpErrorType_OFPET_BAD_ACTION            OfpErrorType = 2
	OfpErrorType_OFPET_BAD_INSTRUCTION       OfpErrorType = 3
	OfpErrorType_OFPET_BAD_MATCH             OfpErrorType = 4
	OfpErrorType_OFPET_FLOW_MOD_FAILED       OfpErrorType = 5
	OfpErrorType_OFPET_GROUP_MOD_FAILED      OfpErrorType = 6
	OfpErrorType_OFPET_PORT_MOD_FAILED       OfpErrorType = 7
	OfpErrorType_OFPET_TABLE_MOD_FAILED      OfpErrorType = 8
	OfpErrorType_OFPET_QUEUE_OP_FAILED       OfpErrorType = 9
	OfpErrorType_OFPET_SWITCH_CONFIG_FAILED  OfpErrorType = 10
	OfpErrorType_OFPET_ROLE_REQUEST_FAILED   OfpErrorType = 11
	OfpErrorType_OFPET_METER_MOD_FAILED      OfpErrorType = 12
	OfpErrorType_OFPET_TABLE_FEATURES_FAILED OfpErrorType = 13
	OfpErrorType_OFPET_EXPERIMENTER          OfpErrorType = 65535
)

var OfpErrorType_name = map[int32]string{
	0:     "OFPET_HELLO_FAILED",
	1:     "OFPET_BAD_REQUEST",
	2:     "OFPET_BAD_ACTION",
	3:     "OFPET_BAD_INSTRUCTION",
	4:     "OFPET_BAD_MATCH",
	5:     "OFPET_FLOW_MOD_FAILED",
	6:     "OFPET_GROUP_MOD_FAILED",
	7:     "OFPET_PORT_MOD_FAILED",
	8:     "OFPET_TABLE_MOD_FAILED",
	9:     "OFPET_QUEUE_OP_FAILED",
	10:    "OFPET_SWITCH_CONFIG_FAILED",
	11:    "OFPET_ROLE_REQUEST_FAILED",
	12:    "OFPET_METER_MOD_FAILED",
	13:    "OFPET_TABLE_FEATURES_FAILED",
	65535: "OFPET_EXPERIMENTER",
}
var OfpErrorType_value = map[string]int32{
	"OFPET_HELLO_FAILED":          0,
	"OFPET_BAD_REQUEST":           1,
	"OFPET_BAD_ACTION":            2,
	"OFPET_BAD_INSTRUCTION":       3,
	"OFPET_BAD_MATCH":             4,
	"OFPET_FLOW_MOD_FAILED":       5,
	"OFPET_GROUP_MOD_FAILED":      6,
	"OFPET_PORT_MOD_FAILED":       7,
	"OFPET_TABLE_MOD_FAILED":      8,
	"OFPET_QUEUE_OP_FAILED":       9,
	"OFPET_SWITCH_CONFIG_FAILED":  10,
	"OFPET_ROLE_REQUEST_FAILED":   11,
	"OFPET_METER_MOD_FAILED":      12,
	"OFPET_TABLE_FEATURES_FAILED": 13,
	"OFPET_EXPERIMENTER":          65535,
}

func (x OfpErrorType) String() string {
	return proto.EnumName(OfpErrorType_name, int32(x))
}
func (OfpErrorType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }

// ofp_error_msg 'code' values for OFPET_HELLO_FAILED.  'data' contains an
// ASCII text string that may give failure details.
type OfpHelloFailedCode int32

const (
	OfpHelloFailedCode_OFPHFC_INCOMPATIBLE OfpHelloFailedCode = 0
	OfpHelloFailedCode_OFPHFC_EPERM        OfpHelloFailedCode = 1
)

var OfpHelloFailedCode_name = map[int32]string{
	0: "OFPHFC_INCOMPATIBLE",
	1: "OFPHFC_EPERM",
}
var OfpHelloFailedCode_value = map[string]int32{
	"OFPHFC_INCOMPATIBLE": 0,
	"OFPHFC_EPERM":        1,
}

func (x OfpHelloFailedCode) String() string {
	return proto.EnumName(OfpHelloFailedCode_name, int32(x))
}
func (OfpHelloFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }

// ofp_error_msg 'code' values for OFPET_BAD_REQUEST.  'data' contains at least
// the first 64 bytes of the failed request.
type OfpBadRequestCode int32

const (
	OfpBadRequestCode_OFPBRC_BAD_VERSION               OfpBadRequestCode = 0
	OfpBadRequestCode_OFPBRC_BAD_TYPE                  OfpBadRequestCode = 1
	OfpBadRequestCode_OFPBRC_BAD_MULTIPART             OfpBadRequestCode = 2
	OfpBadRequestCode_OFPBRC_BAD_EXPERIMENTER          OfpBadRequestCode = 3
	OfpBadRequestCode_OFPBRC_BAD_EXP_TYPE              OfpBadRequestCode = 4
	OfpBadRequestCode_OFPBRC_EPERM                     OfpBadRequestCode = 5
	OfpBadRequestCode_OFPBRC_BAD_LEN                   OfpBadRequestCode = 6
	OfpBadRequestCode_OFPBRC_BUFFER_EMPTY              OfpBadRequestCode = 7
	OfpBadRequestCode_OFPBRC_BUFFER_UNKNOWN            OfpBadRequestCode = 8
	OfpBadRequestCode_OFPBRC_BAD_TABLE_ID              OfpBadRequestCode = 9
	OfpBadRequestCode_OFPBRC_IS_SLAVE                  OfpBadRequestCode = 10
	OfpBadRequestCode_OFPBRC_BAD_PORT                  OfpBadRequestCode = 11
	OfpBadRequestCode_OFPBRC_BAD_PACKET                OfpBadRequestCode = 12
	OfpBadRequestCode_OFPBRC_MULTIPART_BUFFER_OVERFLOW OfpBadRequestCode = 13
)

var OfpBadRequestCode_name = map[int32]string{
	0:  "OFPBRC_BAD_VERSION",
	1:  "OFPBRC_BAD_TYPE",
	2:  "OFPBRC_BAD_MULTIPART",
	3:  "OFPBRC_BAD_EXPERIMENTER",
	4:  "OFPBRC_BAD_EXP_TYPE",
	5:  "OFPBRC_EPERM",
	6:  "OFPBRC_BAD_LEN",
	7:  "OFPBRC_BUFFER_EMPTY",
	8:  "OFPBRC_BUFFER_UNKNOWN",
	9:  "OFPBRC_BAD_TABLE_ID",
	10: "OFPBRC_IS_SLAVE",
	11: "OFPBRC_BAD_PORT",
	12: "OFPBRC_BAD_PACKET",
	13: "OFPBRC_MULTIPART_BUFFER_OVERFLOW",
}
var OfpBadRequestCode_value = map[string]int32{
	"OFPBRC_BAD_VERSION":               0,
	"OFPBRC_BAD_TYPE":                  1,
	"OFPBRC_BAD_MULTIPART":             2,
	"OFPBRC_BAD_EXPERIMENTER":          3,
	"OFPBRC_BAD_EXP_TYPE":              4,
	"OFPBRC_EPERM":                     5,
	"OFPBRC_BAD_LEN":                   6,
	"OFPBRC_BUFFER_EMPTY":              7,
	"OFPBRC_BUFFER_UNKNOWN":            8,
	"OFPBRC_BAD_TABLE_ID":              9,
	"OFPBRC_IS_SLAVE":                  10,
	"OFPBRC_BAD_PORT":                  11,
	"OFPBRC_BAD_PACKET":                12,
	"OFPBRC_MULTIPART_BUFFER_OVERFLOW": 13,
}

func (x OfpBadRequestCode) String() string {
	return proto.EnumName(OfpBadRequestCode_name, int32(x))
}
func (OfpBadRequestCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }

// ofp_error_msg 'code' values for OFPET_BAD_ACTION.  'data' contains at least
// the first 64 bytes of the failed request.
type OfpBadActionCode int32

const (
	OfpBadActionCode_OFPBAC_BAD_TYPE           OfpBadActionCode = 0
	OfpBadActionCode_OFPBAC_BAD_LEN            OfpBadActionCode = 1
	OfpBadActionCode_OFPBAC_BAD_EXPERIMENTER   OfpBadActionCode = 2
	OfpBadActionCode_OFPBAC_BAD_EXP_TYPE       OfpBadActionCode = 3
	OfpBadActionCode_OFPBAC_BAD_OUT_PORT       OfpBadActionCode = 4
	OfpBadActionCode_OFPBAC_BAD_ARGUMENT       OfpBadActionCode = 5
	OfpBadActionCode_OFPBAC_EPERM              OfpBadActionCode = 6
	OfpBadActionCode_OFPBAC_TOO_MANY           OfpBadActionCode = 7
	OfpBadActionCode_OFPBAC_BAD_QUEUE          OfpBadActionCode = 8
	OfpBadActionCode_OFPBAC_BAD_OUT_GROUP      OfpBadActionCode = 9
	OfpBadActionCode_OFPBAC_MATCH_INCONSISTENT OfpBadActionCode = 10
	OfpBadActionCode_OFPBAC_UNSUPPORTED_ORDER  OfpBadActionCode = 11
	OfpBadActionCode_OFPBAC_BAD_TAG            OfpBadActionCode = 12
	OfpBadActionCode_OFPBAC_BAD_SET_TYPE       OfpBadActionCode = 13
	OfpBadActionCode_OFPBAC_BAD_SET_LEN        OfpBadActionCode = 14
	OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT   OfpBadActionCode = 15
)

var OfpBadActionCode_name = map[int32]string{
	0:  "OFPBAC_BAD_TYPE",
	1:  "OFPBAC_BAD_LEN",
	2:  "OFPBAC_BAD_EXPERIMENTER",
	3:  "OFPBAC_BAD_EXP_TYPE",
	4:  "OFPBAC_BAD_OUT_PORT",
	5:  "OFPBAC_BAD_ARGUMENT",
	6:  "OFPBAC_EPERM",
	7:  "OFPBAC_TOO_MANY",
	8:  "OFPBAC_BAD_QUEUE",
	9:  "OFPBAC_BAD_OUT_GROUP",
	10: "OFPBAC_MATCH_INCONSISTENT",
	11: "OFPBAC_UNSUPPORTED_ORDER",
	12: "OFPBAC_BAD_TAG",
	13: "OFPBAC_BAD_SET_TYPE",
	14: "OFPBAC_BAD_SET_LEN",
	15: "OFPBAC_BAD_SET_ARGUMENT",
}
var OfpBadActionCode_value = map[string]int32{
	"OFPBAC_BAD_TYPE":           0,
	"OFPBAC_BAD_LEN":            1,
	"OFPBAC_BAD_EXPERIMENTER":   2,
	"OFPBAC_BAD_EXP_TYPE":       3,
	"OFPBAC_BAD_OUT_PORT":       4,
	"OFPBAC_BAD_ARGUMENT":       5,
	"OFPBAC_EPERM":              6,
	"OFPBAC_TOO_MANY":           7,
	"OFPBAC_BAD_QUEUE":          8,
	"OFPBAC_BAD_OUT_GROUP":      9,
	"OFPBAC_MATCH_INCONSISTENT": 10,
	"OFPBAC_UNSUPPORTED_ORDER":  11,
	"OFPBAC_BAD_TAG":            12,
	"OFPBAC_BAD_SET_TYPE":       13,
	"OFPBAC_BAD_SET_LEN":        14,
	"OFPBAC_BAD_SET_ARGUMENT":   15,
}

func (x OfpBadActionCode) String() string {
	return proto.EnumName(OfpBadActionCode_name, int32(x))
}
func (OfpBadActionCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }

// ofp_error_msg 'code' values for OFPET_BAD_INSTRUCTION.  'data' contains at
// least the first 64 bytes of the failed request.
type OfpBadInstructionCode int32

const (
	OfpBadInstructionCode_OFPBIC_UNKNOWN_INST        OfpBadInstructionCode = 0
	OfpBadInstructionCode_OFPBIC_UNSUP_INST          OfpBadInstructionCode = 1
	OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID        OfpBadInstructionCode = 2
	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA      OfpBadInstructionCode = 3
	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA_MASK OfpBadInstructionCode = 4
	OfpBadInstructionCode_OFPBIC_BAD_EXPERIMENTER    OfpBadInstructionCode = 5
	OfpBadInstructionCode_OFPBIC_BAD_EXP_TYPE        OfpBadInstructionCode = 6
	OfpBadInstructionCode_OFPBIC_BAD_LEN             OfpBadInstructionCode = 7
	OfpBadInstructionCode_OFPBIC_EPERM               OfpBadInstructionCode = 8
)

var OfpBadInstructionCode_name = map[int32]string{
	0: "OFPBIC_UNKNOWN_INST",
	1: "OFPBIC_UNSUP_INST",
	2: "OFPBIC_BAD_TABLE_ID",
	3: "OFPBIC_UNSUP_METADATA",
	4: "OFPBIC_UNSUP_METADATA_MASK",
	5: "OFPBIC_BAD_EXPERIMENTER",
	6: "OFPBIC_BAD_EXP_TYPE",
	7: "OFPBIC_BAD_LEN",
	8: "OFPBIC_EPERM",
}
var OfpBadInstructionCode_value = map[string]int32{
	"OFPBIC_UNKNOWN_INST":        0,
	"OFPBIC_UNSUP_INST":          1,
	"OFPBIC_BAD_TABLE_ID":        2,
	"OFPBIC_UNSUP_METADATA":      3,
	"OFPBIC_UNSUP_METADATA_MASK": 4,
	"OFPBIC_BAD_EXPERIMENTER":    5,
	"OFPBIC_BAD_EXP_TYPE":        6,
	"OFPBIC_BAD_LEN":             7,
	"OFPBIC_EPERM":               8,
}

func (x OfpBadInstructionCode) String() string {
	return proto.EnumName(OfpBadInstructionCode_name, int32(x))
}
func (OfpBadInstructionCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }

// ofp_error_msg 'code' values for OFPET_BAD_MATCH.  'data' contains at least
// the first 64 bytes of the failed request.
type OfpBadMatchCode int32

const (
	OfpBadMatchCode_OFPBMC_BAD_TYPE         OfpBadMatchCode = 0
	OfpBadMatchCode_OFPBMC_BAD_LEN          OfpBadMatchCode = 1
	OfpBadMatchCode_OFPBMC_BAD_TAG          OfpBadMatchCode = 2
	OfpBadMatchCode_OFPBMC_BAD_DL_ADDR_MASK OfpBadMatchCode = 3
	OfpBadMatchCode_OFPBMC_BAD_NW_ADDR_MASK OfpBadMatchCode = 4
	OfpBadMatchCode_OFPBMC_BAD_WILDCARDS    OfpBadMatchCode = 5
	OfpBadMatchCode_OFPBMC_BAD_FIELD        OfpBadMatchCode = 6
	OfpBadMatchCode_OFPBMC_BAD_VALUE        OfpBadMatchCode = 7
	OfpBadMatchCode_OFPBMC_BAD_MASK         OfpBadMatchCode = 8
	OfpBadMatchCode_OFPBMC_BAD_PREREQ       OfpBadMatchCode = 9
	OfpBadMatchCode_OFPBMC_DUP_FIELD        OfpBadMatchCode = 10
	OfpBadMatchCode_OFPBMC_EPERM            OfpBadMatchCode = 11
)

var OfpBadMatchCode_name = map[int32]string{
	0:  "OFPBMC_BAD_TYPE",
	1:  "OFPBMC_BAD_LEN",
	2:  "OFPBMC_BAD_TAG",
	3:  "OFPBMC_BAD_DL_ADDR_MASK",
	4:  "OFPBMC_BAD_NW_ADDR_MASK",
	5:  "OFPBMC_BAD_WILDCARDS",
	6:  "OFPBMC_BAD_FIELD",
	7:  "OFPBMC_BAD_VALUE",
	8:  "OFPBMC_BAD_MASK",
	9:  "OFPBMC_BAD_PREREQ",
	10: "OFPBMC_DUP_FIELD",
	11: "OFPBMC_EPERM",
}
var OfpBadMatchCode_value = map[string]int32{
	"OFPBMC_BAD_TYPE":         0,
	"OFPBMC_BAD_LEN":          1,
	"OFPBMC_BAD_TAG":          2,
	"OFPBMC_BAD_DL_ADDR_MASK": 3,
	"OFPBMC_BAD_NW_ADDR_MASK": 4,
	"OFPBMC_BAD_WILDCARDS":    5,
	"OFPBMC_BAD_FIELD":        6,
	"OFPBMC_BAD_VALUE":        7,
	"OFPBMC_BAD_MASK":         8,
	"OFPBMC_BAD_PREREQ":       9,
	"OFPBMC_DUP_FIELD":        10,
	"OFPBMC_EPERM":            11,
}

func (x OfpBadMatchCode) String() string {
	return proto.EnumName(OfpBadMatchCode_name, int32(x))
}
func (OfpBadMatchCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }

// ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED.  'data' contains
// at least the first 64 bytes of the failed request.
type OfpFlowModFailedCode int32

const (
	OfpFlowModFailedCode_OFPFMFC_UNKNOWN      OfpFlowModFailedCode = 0
	OfpFlowModFailedCode_OFPFMFC_TABLE_FULL   OfpFlowModFailedCode = 1
	OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID OfpFlowModFailedCode = 2
	OfpFlowModFailedCode_OFPFMFC_OVERLAP      OfpFlowModFailedCode = 3
	OfpFlowModFailedCode_OFPFMFC_EPERM        OfpFlowModFailedCode = 4
	OfpFlowModFailedCode_OFPFMFC_BAD_TIMEOUT  OfpFlowModFailedCode = 5
	OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND  OfpFlowModFailedCode = 6
	OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS    OfpFlowModFailedCode = 7
)

var OfpFlowModFailedCode_name = map[int32]string{
	0: "OFPFMFC_UNKNOWN",
	1: "OFPFMFC_TABLE_FULL",
	2: "OFPFMFC_BAD_TABLE_ID",
	3: "OFPFMFC_OVERLAP",
	4: "OFPFMFC_EPERM",
	5: "OFPFMFC_BAD_TIMEOUT",
	6: "OFPFMFC_BAD_COMMAND",
	7: "OFPFMFC_BAD_FLAGS",
}
var OfpFlowModFailedCode_value = map[string]int32{
	"OFPFMFC_UNKNOWN":      0,
	"OFPFMFC_TABLE_FULL":   1,
	"OFPFMFC_BAD_TABLE_ID": 2,
	"OFPFMFC_OVERLAP":      3,
	"OFPFMFC_EPERM":        4,
	"OFPFMFC_BAD_TIMEOUT":  5,
	"OFPFMFC_BAD_COMMAND":  6,
	"OFPFMFC_BAD_FLAGS":    7,
}

func (x OfpFlowModFailedCode) String() string {
	return proto.EnumName(OfpFlowModFailedCode_name, int32(x))
}
func (OfpFlowModFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }

// ofp_error_msg 'code' values for OFPET_GROUP_MOD_FAILED.  'data' contains
// at least the first 64 bytes of the failed request.
type OfpGroupModFailedCode int32

const (
	OfpGroupModFailedCode_OFPGMFC_GROUP_EXISTS         OfpGroupModFailedCode = 0
	OfpGroupModFailedCode_OFPGMFC_INVALID_GROUP        OfpGroupModFailedCode = 1
	OfpGroupModFailedCode_OFPGMFC_WEIGHT_UNSUPPORTED   OfpGroupModFailedCode = 2
	OfpGroupModFailedCode_OFPGMFC_OUT_OF_GROUPS        OfpGroupModFailedCode = 3
	OfpGroupModFailedCode_OFPGMFC_OUT_OF_BUCKETS       OfpGroupModFailedCode = 4
	OfpGroupModFailedCode_OFPGMFC_CHAINING_UNSUPPORTED OfpGroupModFailedCode = 5
	OfpGroupModFailedCode_OFPGMFC_WATCH_UNSUPPORTED    OfpGroupModFailedCode = 6
	OfpGroupModFailedCode_OFPGMFC_LOOP                 OfpGroupModFailedCode = 7
	OfpGroupModFailedCode_OFPGMFC_UNKNOWN_GROUP        OfpGroupModFailedCode = 8
	OfpGroupModFailedCode_OFPGMFC_CHAINED_GROUP        OfpGroupModFailedCode = 9
	OfpGroupModFailedCode_OFPGMFC_BAD_TYPE             OfpGroupModFailedCode = 10
	OfpGroupModFailedCode_OFPGMFC_BAD_COMMAND          OfpGroupModFailedCode = 11
	OfpGroupModFailedCode_OFPGMFC_BAD_BUCKET           OfpGroupModFailedCode = 12
	OfpGroupModFailedCode_OFPGMFC_BAD_WATCH            OfpGroupModFailedCode = 13
	OfpGroupModFailedCode_OFPGMFC_EPERM                OfpGroupModFailedCode = 14
)

var OfpGroupModFailedCode_name = map[int32]string{
	0:  "OFPGMFC_GROUP_EXISTS",
	1:  "OFPGMFC_INVALID_GROUP",
	2:  "OFPGMFC_WEIGHT_UNSUPPORTED",
	3:  "OFPGMFC_OUT_OF_GROUPS",
	4:  "OFPGMFC_OUT_OF_BUCKETS",
	5:  "OFPGMFC_CHAINING_UNSUPPORTED",
	6:  "OFPGMFC_WATCH_UNSUPPORTED",
	7:  "OFPGMFC_LOOP",
	8:  "OFPGMFC_UNKNOWN_GROUP",
	9:  "OFPGMFC_CHAINED_GROUP",
	10: "OFPGMFC_BAD_TYPE",
	11: "OFPGMFC_BAD_COMMAND",
	12: "OFPGMFC_BAD_BUCKET",
	13: "OFPGMFC_BAD_WATCH",
	14: "OFPGMFC_EPERM",
}
var OfpGroupModFailedCode_value = map[string]int32{
	"OFPGMFC_GROUP_EXISTS":         0,
	"OFPGMFC_INVALID_GROUP":        1,
	"OFPGMFC_WEIGHT_UNSUPPORTED":   2,
	"OFPGMFC_OUT_OF_GROUPS":        3,
	"OFPGMFC_OUT_OF_BUCKETS":       4,
	"OFPGMFC_CHAINING_UNSUPPORTED": 5,
	"OFPGMFC_WATCH_UNSUPPORTED":    6,
	"OFPGMFC_LOOP":                 7,
	"OFPGMFC_UNKNOWN_GROUP":        8,
	"OFPGMFC_CHAINED_GROUP":        9,
	"OFPGMFC_BAD_TYPE":             10,
	"OFPGMFC_BAD_COMMAND":          11,
	"OFPGMFC_BAD_BUCKET":           12,
	"OFPGMFC_BAD_WATCH":            13,
	"OFPGMFC_EPERM":                14,
}

func (x OfpGroupModFailedCode) String() string {
	return proto.EnumName(OfpGroupModFailedCode_name, int32(x))
}
func (OfpGroupModFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }

// ofp_error_msg 'code' values for OFPET_PORT_MOD_FAILED.  'data' contains
// at least the first 64 bytes of the failed request.
type OfpPortModFailedCode int32

const (
	OfpPortModFailedCode_OFPPMFC_BAD_PORT      OfpPortModFailedCode = 0
	OfpPortModFailedCode_OFPPMFC_BAD_HW_ADDR   OfpPortModFailedCode = 1
	OfpPortModFailedCode_OFPPMFC_BAD_CONFIG    OfpPortModFailedCode = 2
	OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE OfpPortModFailedCode = 3
	OfpPortModFailedCode_OFPPMFC_EPERM         OfpPortModFailedCode = 4
)

var OfpPortModFailedCode_name = map[int32]string{
	0: "OFPPMFC_BAD_PORT",
	1: "OFPPMFC_BAD_HW_ADDR",
	2: "OFPPMFC_BAD_CONFIG",
	3: "OFPPMFC_BAD_ADVERTISE",
	4: "OFPPMFC_EPERM",
}
var OfpPortModFailedCode_value = map[string]int32{
	"OFPPMFC_BAD_PORT":      0,
	"OFPPMFC_BAD_HW_ADDR":   1,
	"OFPPMFC_BAD_CONFIG":    2,
	"OFPPMFC_BAD_ADVERTISE": 3,
	"OFPPMFC_EPERM":         4,
}

func (x OfpPortModFailedCode) String() string {
	return proto.EnumName(OfpPortModFailedCode_name, int32(x))
}
func (OfpPortModFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }

// ofp_error_msg 'code' values for OFPET_TABLE_MOD_FAILED.  'data' contains
// at least the first 64 bytes of the failed request.
type OfpTableModFailedCode int32

const (
	OfpTableModFailedCode_OFPTMFC_BAD_TABLE  OfpTableModFailedCode = 0
	OfpTableModFailedCode_OFPTMFC_BAD_CONFIG OfpTableModFailedCode = 1
	OfpTableModFailedCode_OFPTMFC_EPERM      OfpTableModFailedCode = 2
)

var OfpTableModFailedCode_name = map[int32]string{
	0: "OFPTMFC_BAD_TABLE",
	1: "OFPTMFC_BAD_CONFIG",
	2: "OFPTMFC_EPERM",
}
var OfpTableModFailedCode_value = map[string]int32{
	"OFPTMFC_BAD_TABLE":  0,
	"OFPTMFC_BAD_CONFIG": 1,
	"OFPTMFC_EPERM":      2,
}

func (x OfpTableModFailedCode) String() string {
	return proto.EnumName(OfpTableModFailedCode_name, int32(x))
}
func (OfpTableModFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }

// ofp_error msg 'code' values for OFPET_QUEUE_OP_FAILED. 'data' contains
// at least the first 64 bytes of the failed request
type OfpQueueOpFailedCode int32

const (
	OfpQueueOpFailedCode_OFPQOFC_BAD_PORT  OfpQueueOpFailedCode = 0
	OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE OfpQueueOpFailedCode = 1
	OfpQueueOpFailedCode_OFPQOFC_EPERM     OfpQueueOpFailedCode = 2
)

var OfpQueueOpFailedCode_name = map[int32]string{
	0: "OFPQOFC_BAD_PORT",
	1: "OFPQOFC_BAD_QUEUE",
	2: "OFPQOFC_EPERM",
}
var OfpQueueOpFailedCode_value = map[string]int32{
	"OFPQOFC_BAD_PORT":  0,
	"OFPQOFC_BAD_QUEUE": 1,
	"OFPQOFC_EPERM":     2,
}

func (x OfpQueueOpFailedCode) String() string {
	return proto.EnumName(OfpQueueOpFailedCode_name, int32(x))
}
func (OfpQueueOpFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }

// ofp_error_msg 'code' values for OFPET_SWITCH_CONFIG_FAILED. 'data' contains
// at least the first 64 bytes of the failed request.
type OfpSwitchConfigFailedCode int32

const (
	OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS OfpSwitchConfigFailedCode = 0
	OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN   OfpSwitchConfigFailedCode = 1
	OfpSwitchConfigFailedCode_OFPSCFC_EPERM     OfpSwitchConfigFailedCode = 2
)

var OfpSwitchConfigFailedCode_name = map[int32]string{
	0: "OFPSCFC_BAD_FLAGS",
	1: "OFPSCFC_BAD_LEN",
	2: "OFPSCFC_EPERM",
}
var OfpSwitchConfigFailedCode_value = map[string]int32{
	"OFPSCFC_BAD_FLAGS": 0,
	"OFPSCFC_BAD_LEN":   1,
	"OFPSCFC_EPERM":     2,
}

func (x OfpSwitchConfigFailedCode) String() string {
	return proto.EnumName(OfpSwitchConfigFailedCode_name, int32(x))
}
func (OfpSwitchConfigFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }

// ofp_error_msg 'code' values for OFPET_ROLE_REQUEST_FAILED. 'data' contains
// at least the first 64 bytes of the failed request.
type OfpRoleRequestFailedCode int32

const (
	OfpRoleRequestFailedCode_OFPRRFC_STALE    OfpRoleRequestFailedCode = 0
	OfpRoleRequestFailedCode_OFPRRFC_UNSUP    OfpRoleRequestFailedCode = 1
	OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE OfpRoleRequestFailedCode = 2
)

var OfpRoleRequestFailedCode_name = map[int32]string{
	0: "OFPRRFC_STALE",
	1: "OFPRRFC_UNSUP",
	2: "OFPRRFC_BAD_ROLE",
}
var OfpRoleRequestFailedCode_value = map[string]int32{
	"OFPRRFC_STALE":    0,
	"OFPRRFC_UNSUP":    1,
	"OFPRRFC_BAD_ROLE": 2,
}

func (x OfpRoleRequestFailedCode) String() string {
	return proto.EnumName(OfpRoleRequestFailedCode_name, int32(x))
}
func (OfpRoleRequestFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }

// ofp_error_msg 'code' values for OFPET_METER_MOD_FAILED.  'data' contains
// at least the first 64 bytes of the failed request.
type OfpMeterModFailedCode int32

const (
	OfpMeterModFailedCode_OFPMMFC_UNKNOWN        OfpMeterModFailedCode = 0
	OfpMeterModFailedCode_OFPMMFC_METER_EXISTS   OfpMeterModFailedCode = 1
	OfpMeterModFailedCode_OFPMMFC_INVALID_METER  OfpMeterModFailedCode = 2
	OfpMeterModFailedCode_OFPMMFC_UNKNOWN_METER  OfpMeterModFailedCode = 3
	OfpMeterModFailedCode_OFPMMFC_BAD_COMMAND    OfpMeterModFailedCode = 4
	OfpMeterModFailedCode_OFPMMFC_BAD_FLAGS      OfpMeterModFailedCode = 5
	OfpMeterModFailedCode_OFPMMFC_BAD_RATE       OfpMeterModFailedCode = 6
	OfpMeterModFailedCode_OFPMMFC_BAD_BURST      OfpMeterModFailedCode = 7
	OfpMeterModFailedCode_OFPMMFC_BAD_BAND       OfpMeterModFailedCode = 8
	OfpMeterModFailedCode_OFPMMFC_BAD_BAND_VALUE OfpMeterModFailedCode = 9
	OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS  OfpMeterModFailedCode = 10
	OfpMeterModFailedCode_OFPMMFC_OUT_OF_BANDS   OfpMeterModFailedCode = 11
)

var OfpMeterModFailedCode_name = map[int32]string{
	0:  "OFPMMFC_UNKNOWN",
	1:  "OFPMMFC_METER_EXISTS",
	2:  "OFPMMFC_INVALID_METER",
	3:  "OFPMMFC_UNKNOWN_METER",
	4:  "OFPMMFC_BAD_COMMAND",
	5:  "OFPMMFC_BAD_FLAGS",
	6:  "OFPMMFC_BAD_RATE",
	7:  "OFPMMFC_BAD_BURST",
	8:  "OFPMMFC_BAD_BAND",
	9:  "OFPMMFC_BAD_BAND_VALUE",
	10: "OFPMMFC_OUT_OF_METERS",
	11: "OFPMMFC_OUT_OF_BANDS",
}
var OfpMeterModFailedCode_value = map[string]int32{
	"OFPMMFC_UNKNOWN":        0,
	"OFPMMFC_METER_EXISTS":   1,
	"OFPMMFC_INVALID_METER":  2,
	"OFPMMFC_UNKNOWN_METER":  3,
	"OFPMMFC_BAD_COMMAND":    4,
	"OFPMMFC_BAD_FLAGS":      5,
	"OFPMMFC_BAD_RATE":       6,
	"OFPMMFC_BAD_BURST":      7,
	"OFPMMFC_BAD_BAND":       8,
	"OFPMMFC_BAD_BAND_VALUE": 9,
	"OFPMMFC_OUT_OF_METERS":  10,
	"OFPMMFC_OUT_OF_BANDS":   11,
}

func (x OfpMeterModFailedCode) String() string {
	return proto.EnumName(OfpMeterModFailedCode_name, int32(x))
}
func (OfpMeterModFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }

// ofp_error_msg 'code' values for OFPET_TABLE_FEATURES_FAILED. 'data' contains
// at least the first 64 bytes of the failed request.
type OfpTableFeaturesFailedCode int32

const (
	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TABLE    OfpTableFeaturesFailedCode = 0
	OfpTableFeaturesFailedCode_OFPTFFC_BAD_METADATA OfpTableFeaturesFailedCode = 1
	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TYPE     OfpTableFeaturesFailedCode = 2
	OfpTableFeaturesFailedCode_OFPTFFC_BAD_LEN      OfpTableFeaturesFailedCode = 3
	OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT OfpTableFeaturesFailedCode = 4
	OfpTableFeaturesFailedCode_OFPTFFC_EPERM        OfpTableFeaturesFailedCode = 5
)

var OfpTableFeaturesFailedCode_name = map[int32]string{
	0: "OFPTFFC_BAD_TABLE",
	1: "OFPTFFC_BAD_METADATA",
	2: "OFPTFFC_BAD_TYPE",
	3: "OFPTFFC_BAD_LEN",
	4: "OFPTFFC_BAD_ARGUMENT",
	5: "OFPTFFC_EPERM",
}
var OfpTableFeaturesFailedCode_value = map[string]int32{
	"OFPTFFC_BAD_TABLE":    0,
	"OFPTFFC_BAD_METADATA": 1,
	"OFPTFFC_BAD_TYPE":     2,
	"OFPTFFC_BAD_LEN":      3,
	"OFPTFFC_BAD_ARGUMENT": 4,
	"OFPTFFC_EPERM":        5,
}

func (x OfpTableFeaturesFailedCode) String() string {
	return proto.EnumName(OfpTableFeaturesFailedCode_name, int32(x))
}
func (OfpTableFeaturesFailedCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }

type OfpMultipartType int32

const (
	// Description of this OpenFlow switch.
	// The request body is empty.
	// The reply body is struct ofp_desc.
	OfpMultipartType_OFPMP_DESC OfpMultipartType = 0
	// Individual flow statistics.
	// The request body is struct ofp_flow_stats_request.
	// The reply body is an array of struct ofp_flow_stats.
	OfpMultipartType_OFPMP_FLOW OfpMultipartType = 1
	// Aggregate flow statistics.
	// The request body is struct ofp_aggregate_stats_request.
	// The reply body is struct ofp_aggregate_stats_reply.
	OfpMultipartType_OFPMP_AGGREGATE OfpMultipartType = 2
	// Flow table statistics.
	// The request body is empty.
	// The reply body is an array of struct ofp_table_stats.
	OfpMultipartType_OFPMP_TABLE OfpMultipartType = 3
	// Port statistics.
	// The request body is struct ofp_port_stats_request.
	// The reply body is an array of struct ofp_port_stats.
	OfpMultipartType_OFPMP_PORT_STATS OfpMultipartType = 4
	// Queue statistics for a port
	// The request body is struct ofp_queue_stats_request.
	// The reply body is an array of struct ofp_queue_stats
	OfpMultipartType_OFPMP_QUEUE OfpMultipartType = 5
	// Group counter statistics.
	// The request body is struct ofp_group_stats_request.
	// The reply is an array of struct ofp_group_stats.
	OfpMultipartType_OFPMP_GROUP OfpMultipartType = 6
	// Group description.
	// The request body is empty.
	// The reply body is an array of struct ofp_group_desc.
	OfpMultipartType_OFPMP_GROUP_DESC OfpMultipartType = 7
	// Group features.
	// The request body is empty.
	// The reply body is struct ofp_group_features.
	OfpMultipartType_OFPMP_GROUP_FEATURES OfpMultipartType = 8
	// Meter statistics.
	// The request body is struct ofp_meter_multipart_requests.
	// The reply body is an array of struct ofp_meter_stats.
	OfpMultipartType_OFPMP_METER OfpMultipartType = 9
	// Meter configuration.
	// The request body is struct ofp_meter_multipart_requests.
	// The reply body is an array of struct ofp_meter_config.
	OfpMultipartType_OFPMP_METER_CONFIG OfpMultipartType = 10
	// Meter features.
	// The request body is empty.
	// The reply body is struct ofp_meter_features.
	OfpMultipartType_OFPMP_METER_FEATURES OfpMultipartType = 11
	// Table features.
	// The request body is either empty or contains an array of
	// struct ofp_table_features containing the controller's
	// desired view of the switch. If the switch is unable to
	// set the specified view an error is returned.
	// The reply body is an array of struct ofp_table_features.
	OfpMultipartType_OFPMP_TABLE_FEATURES OfpMultipartType = 12
	// Port description.
	// The request body is empty.
	// The reply body is an array of struct ofp_port.
	OfpMultipartType_OFPMP_PORT_DESC OfpMultipartType = 13
	// Experimenter extension.
	// The request and reply bodies begin with
	// struct ofp_experimenter_multipart_header.
	// The request and reply bodies are otherwise experimenter-defined.
	OfpMultipartType_OFPMP_EXPERIMENTER OfpMultipartType = 65535
)

var OfpMultipartType_name = map[int32]string{
	0:     "OFPMP_DESC",
	1:     "OFPMP_FLOW",
	2:     "OFPMP_AGGREGATE",
	3:     "OFPMP_TABLE",
	4:     "OFPMP_PORT_STATS",
	5:     "OFPMP_QUEUE",
	6:     "OFPMP_GROUP",
	7:     "OFPMP_GROUP_DESC",
	8:     "OFPMP_GROUP_FEATURES",
	9:     "OFPMP_METER",
	10:    "OFPMP_METER_CONFIG",
	11:    "OFPMP_METER_FEATURES",
	12:    "OFPMP_TABLE_FEATURES",
	13:    "OFPMP_PORT_DESC",
	65535: "OFPMP_EXPERIMENTER",
}
var OfpMultipartType_value = map[string]int32{
	"OFPMP_DESC":           0,
	"OFPMP_FLOW":           1,
	"OFPMP_AGGREGATE":      2,
	"OFPMP_TABLE":          3,
	"OFPMP_PORT_STATS":     4,
	"OFPMP_QUEUE":          5,
	"OFPMP_GROUP":          6,
	"OFPMP_GROUP_DESC":     7,
	"OFPMP_GROUP_FEATURES": 8,
	"OFPMP_METER":          9,
	"OFPMP_METER_CONFIG":   10,
	"OFPMP_METER_FEATURES": 11,
	"OFPMP_TABLE_FEATURES": 12,
	"OFPMP_PORT_DESC":      13,
	"OFPMP_EXPERIMENTER":   65535,
}

func (x OfpMultipartType) String() string {
	return proto.EnumName(OfpMultipartType_name, int32(x))
}
func (OfpMultipartType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }

type OfpMultipartRequestFlags int32

const (
	OfpMultipartRequestFlags_OFPMPF_REQ_INVALID OfpMultipartRequestFlags = 0
	OfpMultipartRequestFlags_OFPMPF_REQ_MORE    OfpMultipartRequestFlags = 1
)

var OfpMultipartRequestFlags_name = map[int32]string{
	0: "OFPMPF_REQ_INVALID",
	1: "OFPMPF_REQ_MORE",
}
var OfpMultipartRequestFlags_value = map[string]int32{
	"OFPMPF_REQ_INVALID": 0,
	"OFPMPF_REQ_MORE":    1,
}

func (x OfpMultipartRequestFlags) String() string {
	return proto.EnumName(OfpMultipartRequestFlags_name, int32(x))
}
func (OfpMultipartRequestFlags) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }

type OfpMultipartReplyFlags int32

const (
	OfpMultipartReplyFlags_OFPMPF_REPLY_INVALID OfpMultipartReplyFlags = 0
	OfpMultipartReplyFlags_OFPMPF_REPLY_MORE    OfpMultipartReplyFlags = 1
)

var OfpMultipartReplyFlags_name = map[int32]string{
	0: "OFPMPF_REPLY_INVALID",
	1: "OFPMPF_REPLY_MORE",
}
var OfpMultipartReplyFlags_value = map[string]int32{
	"OFPMPF_REPLY_INVALID": 0,
	"OFPMPF_REPLY_MORE":    1,
}

func (x OfpMultipartReplyFlags) String() string {
	return proto.EnumName(OfpMultipartReplyFlags_name, int32(x))
}
func (OfpMultipartReplyFlags) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }

// Table Feature property types.
// Low order bit cleared indicates a property for a regular Flow Entry.
// Low order bit set indicates a property for the Table-Miss Flow Entry.
type OfpTableFeaturePropType int32

const (
	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS        OfpTableFeaturePropType = 0
	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS_MISS   OfpTableFeaturePropType = 1
	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES         OfpTableFeaturePropType = 2
	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES_MISS    OfpTableFeaturePropType = 3
	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS       OfpTableFeaturePropType = 4
	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS_MISS  OfpTableFeaturePropType = 5
	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS       OfpTableFeaturePropType = 6
	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS_MISS  OfpTableFeaturePropType = 7
	OfpTableFeaturePropType_OFPTFPT_MATCH               OfpTableFeaturePropType = 8
	OfpTableFeaturePropType_OFPTFPT_WILDCARDS           OfpTableFeaturePropType = 10
	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD      OfpTableFeaturePropType = 12
	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD_MISS OfpTableFeaturePropType = 13
	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD      OfpTableFeaturePropType = 14
	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD_MISS OfpTableFeaturePropType = 15
	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER        OfpTableFeaturePropType = 65534
	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS   OfpTableFeaturePropType = 65535
)

var OfpTableFeaturePropType_name = map[int32]string{
	0:     "OFPTFPT_INSTRUCTIONS",
	1:     "OFPTFPT_INSTRUCTIONS_MISS",
	2:     "OFPTFPT_NEXT_TABLES",
	3:     "OFPTFPT_NEXT_TABLES_MISS",
	4:     "OFPTFPT_WRITE_ACTIONS",
	5:     "OFPTFPT_WRITE_ACTIONS_MISS",
	6:     "OFPTFPT_APPLY_ACTIONS",
	7:     "OFPTFPT_APPLY_ACTIONS_MISS",
	8:     "OFPTFPT_MATCH",
	10:    "OFPTFPT_WILDCARDS",
	12:    "OFPTFPT_WRITE_SETFIELD",
	13:    "OFPTFPT_WRITE_SETFIELD_MISS",
	14:    "OFPTFPT_APPLY_SETFIELD",
	15:    "OFPTFPT_APPLY_SETFIELD_MISS",
	65534: "OFPTFPT_EXPERIMENTER",
	65535: "OFPTFPT_EXPERIMENTER_MISS",
}
var OfpTableFeaturePropType_value = map[string]int32{
	"OFPTFPT_INSTRUCTIONS":        0,
	"OFPTFPT_INSTRUCTIONS_MISS":   1,
	"OFPTFPT_NEXT_TABLES":         2,
	"OFPTFPT_NEXT_TABLES_MISS":    3,
	"OFPTFPT_WRITE_ACTIONS":       4,
	"OFPTFPT_WRITE_ACTIONS_MISS":  5,
	"OFPTFPT_APPLY_ACTIONS":       6,
	"OFPTFPT_APPLY_ACTIONS_MISS":  7,
	"OFPTFPT_MATCH":               8,
	"OFPTFPT_WILDCARDS":           10,
	"OFPTFPT_WRITE_SETFIELD":      12,
	"OFPTFPT_WRITE_SETFIELD_MISS": 13,
	"OFPTFPT_APPLY_SETFIELD":      14,
	"OFPTFPT_APPLY_SETFIELD_MISS": 15,
	"OFPTFPT_EXPERIMENTER":        65534,
	"OFPTFPT_EXPERIMENTER_MISS":   65535,
}

func (x OfpTableFeaturePropType) String() string {
	return proto.EnumName(OfpTableFeaturePropType_name, int32(x))
}
func (OfpTableFeaturePropType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }

// Group configuration flags
type OfpGroupCapabilities int32

const (
	OfpGroupCapabilities_OFPGFC_INVALID         OfpGroupCapabilities = 0
	OfpGroupCapabilities_OFPGFC_SELECT_WEIGHT   OfpGroupCapabilities = 1
	OfpGroupCapabilities_OFPGFC_SELECT_LIVENESS OfpGroupCapabilities = 2
	OfpGroupCapabilities_OFPGFC_CHAINING        OfpGroupCapabilities = 4
	OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS OfpGroupCapabilities = 8
)

var OfpGroupCapabilities_name = map[int32]string{
	0: "OFPGFC_INVALID",
	1: "OFPGFC_SELECT_WEIGHT",
	2: "OFPGFC_SELECT_LIVENESS",
	4: "OFPGFC_CHAINING",
	8: "OFPGFC_CHAINING_CHECKS",
}
var OfpGroupCapabilities_value = map[string]int32{
	"OFPGFC_INVALID":         0,
	"OFPGFC_SELECT_WEIGHT":   1,
	"OFPGFC_SELECT_LIVENESS": 2,
	"OFPGFC_CHAINING":        4,
	"OFPGFC_CHAINING_CHECKS": 8,
}

func (x OfpGroupCapabilities) String() string {
	return proto.EnumName(OfpGroupCapabilities_name, int32(x))
}
func (OfpGroupCapabilities) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }

type OfpQueueProperties int32

const (
	OfpQueueProperties_OFPQT_INVALID      OfpQueueProperties = 0
	OfpQueueProperties_OFPQT_MIN_RATE     OfpQueueProperties = 1
	OfpQueueProperties_OFPQT_MAX_RATE     OfpQueueProperties = 2
	OfpQueueProperties_OFPQT_EXPERIMENTER OfpQueueProperties = 65535
)

var OfpQueueProperties_name = map[int32]string{
	0:     "OFPQT_INVALID",
	1:     "OFPQT_MIN_RATE",
	2:     "OFPQT_MAX_RATE",
	65535: "OFPQT_EXPERIMENTER",
}
var OfpQueueProperties_value = map[string]int32{
	"OFPQT_INVALID":      0,
	"OFPQT_MIN_RATE":     1,
	"OFPQT_MAX_RATE":     2,
	"OFPQT_EXPERIMENTER": 65535,
}

func (x OfpQueueProperties) String() string {
	return proto.EnumName(OfpQueueProperties_name, int32(x))
}
func (OfpQueueProperties) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }

// Controller roles.
type OfpControllerRole int32

const (
	OfpControllerRole_OFPCR_ROLE_NOCHANGE OfpControllerRole = 0
	OfpControllerRole_OFPCR_ROLE_EQUAL    OfpControllerRole = 1
	OfpControllerRole_OFPCR_ROLE_MASTER   OfpControllerRole = 2
	OfpControllerRole_OFPCR_ROLE_SLAVE    OfpControllerRole = 3
)

var OfpControllerRole_name = map[int32]string{
	0: "OFPCR_ROLE_NOCHANGE",
	1: "OFPCR_ROLE_EQUAL",
	2: "OFPCR_ROLE_MASTER",
	3: "OFPCR_ROLE_SLAVE",
}
var OfpControllerRole_value = map[string]int32{
	"OFPCR_ROLE_NOCHANGE": 0,
	"OFPCR_ROLE_EQUAL":    1,
	"OFPCR_ROLE_MASTER":   2,
	"OFPCR_ROLE_SLAVE":    3,
}

func (x OfpControllerRole) String() string {
	return proto.EnumName(OfpControllerRole_name, int32(x))
}
func (OfpControllerRole) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }

// Header on all OpenFlow packets.
type OfpHeader struct {
	Version uint32  `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
	Type    OfpType `protobuf:"varint,2,opt,name=type,enum=openflow_13.OfpType" json:"type,omitempty"`
	Xid     uint32  `protobuf:"varint,3,opt,name=xid" json:"xid,omitempty"`
}

func (m *OfpHeader) Reset()                    { *m = OfpHeader{} }
func (m *OfpHeader) String() string            { return proto.CompactTextString(m) }
func (*OfpHeader) ProtoMessage()               {}
func (*OfpHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

func (m *OfpHeader) GetVersion() uint32 {
	if m != nil {
		return m.Version
	}
	return 0
}

func (m *OfpHeader) GetType() OfpType {
	if m != nil {
		return m.Type
	}
	return OfpType_OFPT_HELLO
}

func (m *OfpHeader) GetXid() uint32 {
	if m != nil {
		return m.Xid
	}
	return 0
}

// Common header for all Hello Elements
type OfpHelloElemHeader struct {
	Type OfpHelloElemType `protobuf:"varint,1,opt,name=type,enum=openflow_13.OfpHelloElemType" json:"type,omitempty"`
	// Types that are valid to be assigned to Element:
	//	*OfpHelloElemHeader_Versionbitmap
	Element isOfpHelloElemHeader_Element `protobuf_oneof:"element"`
}

func (m *OfpHelloElemHeader) Reset()                    { *m = OfpHelloElemHeader{} }
func (m *OfpHelloElemHeader) String() string            { return proto.CompactTextString(m) }
func (*OfpHelloElemHeader) ProtoMessage()               {}
func (*OfpHelloElemHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

type isOfpHelloElemHeader_Element interface {
	isOfpHelloElemHeader_Element()
}

type OfpHelloElemHeader_Versionbitmap struct {
	Versionbitmap *OfpHelloElemVersionbitmap `protobuf:"bytes,2,opt,name=versionbitmap,oneof"`
}

func (*OfpHelloElemHeader_Versionbitmap) isOfpHelloElemHeader_Element() {}

func (m *OfpHelloElemHeader) GetElement() isOfpHelloElemHeader_Element {
	if m != nil {
		return m.Element
	}
	return nil
}

func (m *OfpHelloElemHeader) GetType() OfpHelloElemType {
	if m != nil {
		return m.Type
	}
	return OfpHelloElemType_OFPHET_INVALID
}

func (m *OfpHelloElemHeader) GetVersionbitmap() *OfpHelloElemVersionbitmap {
	if x, ok := m.GetElement().(*OfpHelloElemHeader_Versionbitmap); ok {
		return x.Versionbitmap
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*OfpHelloElemHeader) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _OfpHelloElemHeader_OneofMarshaler, _OfpHelloElemHeader_OneofUnmarshaler, _OfpHelloElemHeader_OneofSizer, []interface{}{
		(*OfpHelloElemHeader_Versionbitmap)(nil),
	}
}

func _OfpHelloElemHeader_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*OfpHelloElemHeader)
	// element
	switch x := m.Element.(type) {
	case *OfpHelloElemHeader_Versionbitmap:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Versionbitmap); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("OfpHelloElemHeader.Element has unexpected type %T", x)
	}
	return nil
}

func _OfpHelloElemHeader_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*OfpHelloElemHeader)
	switch tag {
	case 2: // element.versionbitmap
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpHelloElemVersionbitmap)
		err := b.DecodeMessage(msg)
		m.Element = &OfpHelloElemHeader_Versionbitmap{msg}
		return true, err
	default:
		return false, nil
	}
}

func _OfpHelloElemHeader_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*OfpHelloElemHeader)
	// element
	switch x := m.Element.(type) {
	case *OfpHelloElemHeader_Versionbitmap:
		s := proto.Size(x.Versionbitmap)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// Version bitmap Hello Element
type OfpHelloElemVersionbitmap struct {
	Bitmaps []uint32 `protobuf:"varint,2,rep,packed,name=bitmaps" json:"bitmaps,omitempty"`
}

func (m *OfpHelloElemVersionbitmap) Reset()                    { *m = OfpHelloElemVersionbitmap{} }
func (m *OfpHelloElemVersionbitmap) String() string            { return proto.CompactTextString(m) }
func (*OfpHelloElemVersionbitmap) ProtoMessage()               {}
func (*OfpHelloElemVersionbitmap) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }

func (m *OfpHelloElemVersionbitmap) GetBitmaps() []uint32 {
	if m != nil {
		return m.Bitmaps
	}
	return nil
}

// OFPT_HELLO.  This message includes zero or more hello elements having
// variable size. Unknown elements types must be ignored/skipped, to allow
// for future extensions.
type OfpHello struct {
	// Hello element list
	Elements []*OfpHelloElemHeader `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"`
}

func (m *OfpHello) Reset()                    { *m = OfpHello{} }
func (m *OfpHello) String() string            { return proto.CompactTextString(m) }
func (*OfpHello) ProtoMessage()               {}
func (*OfpHello) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }

func (m *OfpHello) GetElements() []*OfpHelloElemHeader {
	if m != nil {
		return m.Elements
	}
	return nil
}

// Switch configuration.
type OfpSwitchConfig struct {
	// ofp_header header;
	Flags       uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"`
	MissSendLen uint32 `protobuf:"varint,2,opt,name=miss_send_len,json=missSendLen" json:"miss_send_len,omitempty"`
}

func (m *OfpSwitchConfig) Reset()                    { *m = OfpSwitchConfig{} }
func (m *OfpSwitchConfig) String() string            { return proto.CompactTextString(m) }
func (*OfpSwitchConfig) ProtoMessage()               {}
func (*OfpSwitchConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }

func (m *OfpSwitchConfig) GetFlags() uint32 {
	if m != nil {
		return m.Flags
	}
	return 0
}

func (m *OfpSwitchConfig) GetMissSendLen() uint32 {
	if m != nil {
		return m.MissSendLen
	}
	return 0
}

// Configure/Modify behavior of a flow table
type OfpTableMod struct {
	// ofp_header header;
	TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
	Config  uint32 `protobuf:"varint,2,opt,name=config" json:"config,omitempty"`
}

func (m *OfpTableMod) Reset()                    { *m = OfpTableMod{} }
func (m *OfpTableMod) String() string            { return proto.CompactTextString(m) }
func (*OfpTableMod) ProtoMessage()               {}
func (*OfpTableMod) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }

func (m *OfpTableMod) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

func (m *OfpTableMod) GetConfig() uint32 {
	if m != nil {
		return m.Config
	}
	return 0
}

// Description of a port
type OfpPort struct {
	PortNo uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo" json:"port_no,omitempty"`
	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr" json:"hw_addr,omitempty"`
	Name   string   `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
	Config uint32   `protobuf:"varint,4,opt,name=config" json:"config,omitempty"`
	State  uint32   `protobuf:"varint,5,opt,name=state" json:"state,omitempty"`
	// Bitmaps of OFPPF_* that describe features.  All bits zeroed if
	// unsupported or unavailable.
	Curr       uint32 `protobuf:"varint,6,opt,name=curr" json:"curr,omitempty"`
	Advertised uint32 `protobuf:"varint,7,opt,name=advertised" json:"advertised,omitempty"`
	Supported  uint32 `protobuf:"varint,8,opt,name=supported" json:"supported,omitempty"`
	Peer       uint32 `protobuf:"varint,9,opt,name=peer" json:"peer,omitempty"`
	CurrSpeed  uint32 `protobuf:"varint,10,opt,name=curr_speed,json=currSpeed" json:"curr_speed,omitempty"`
	MaxSpeed   uint32 `protobuf:"varint,11,opt,name=max_speed,json=maxSpeed" json:"max_speed,omitempty"`
}

func (m *OfpPort) Reset()                    { *m = OfpPort{} }
func (m *OfpPort) String() string            { return proto.CompactTextString(m) }
func (*OfpPort) ProtoMessage()               {}
func (*OfpPort) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }

func (m *OfpPort) GetPortNo() uint32 {
	if m != nil {
		return m.PortNo
	}
	return 0
}

func (m *OfpPort) GetHwAddr() []uint32 {
	if m != nil {
		return m.HwAddr
	}
	return nil
}

func (m *OfpPort) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *OfpPort) GetConfig() uint32 {
	if m != nil {
		return m.Config
	}
	return 0
}

func (m *OfpPort) GetState() uint32 {
	if m != nil {
		return m.State
	}
	return 0
}

func (m *OfpPort) GetCurr() uint32 {
	if m != nil {
		return m.Curr
	}
	return 0
}

func (m *OfpPort) GetAdvertised() uint32 {
	if m != nil {
		return m.Advertised
	}
	return 0
}

func (m *OfpPort) GetSupported() uint32 {
	if m != nil {
		return m.Supported
	}
	return 0
}

func (m *OfpPort) GetPeer() uint32 {
	if m != nil {
		return m.Peer
	}
	return 0
}

func (m *OfpPort) GetCurrSpeed() uint32 {
	if m != nil {
		return m.CurrSpeed
	}
	return 0
}

func (m *OfpPort) GetMaxSpeed() uint32 {
	if m != nil {
		return m.MaxSpeed
	}
	return 0
}

// Switch features.
type OfpSwitchFeatures struct {
	// ofp_header header;
	DatapathId  uint64 `protobuf:"varint,1,opt,name=datapath_id,json=datapathId" json:"datapath_id,omitempty"`
	NBuffers    uint32 `protobuf:"varint,2,opt,name=n_buffers,json=nBuffers" json:"n_buffers,omitempty"`
	NTables     uint32 `protobuf:"varint,3,opt,name=n_tables,json=nTables" json:"n_tables,omitempty"`
	AuxiliaryId uint32 `protobuf:"varint,4,opt,name=auxiliary_id,json=auxiliaryId" json:"auxiliary_id,omitempty"`
	// Features.
	Capabilities uint32 `protobuf:"varint,5,opt,name=capabilities" json:"capabilities,omitempty"`
}

func (m *OfpSwitchFeatures) Reset()                    { *m = OfpSwitchFeatures{} }
func (m *OfpSwitchFeatures) String() string            { return proto.CompactTextString(m) }
func (*OfpSwitchFeatures) ProtoMessage()               {}
func (*OfpSwitchFeatures) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }

func (m *OfpSwitchFeatures) GetDatapathId() uint64 {
	if m != nil {
		return m.DatapathId
	}
	return 0
}

func (m *OfpSwitchFeatures) GetNBuffers() uint32 {
	if m != nil {
		return m.NBuffers
	}
	return 0
}

func (m *OfpSwitchFeatures) GetNTables() uint32 {
	if m != nil {
		return m.NTables
	}
	return 0
}

func (m *OfpSwitchFeatures) GetAuxiliaryId() uint32 {
	if m != nil {
		return m.AuxiliaryId
	}
	return 0
}

func (m *OfpSwitchFeatures) GetCapabilities() uint32 {
	if m != nil {
		return m.Capabilities
	}
	return 0
}

// A physical port has changed in the datapath
type OfpPortStatus struct {
	// ofp_header header;
	Reason OfpPortReason `protobuf:"varint,1,opt,name=reason,enum=openflow_13.OfpPortReason" json:"reason,omitempty"`
	Desc   *OfpPort      `protobuf:"bytes,2,opt,name=desc" json:"desc,omitempty"`
}

func (m *OfpPortStatus) Reset()                    { *m = OfpPortStatus{} }
func (m *OfpPortStatus) String() string            { return proto.CompactTextString(m) }
func (*OfpPortStatus) ProtoMessage()               {}
func (*OfpPortStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }

func (m *OfpPortStatus) GetReason() OfpPortReason {
	if m != nil {
		return m.Reason
	}
	return OfpPortReason_OFPPR_ADD
}

func (m *OfpPortStatus) GetDesc() *OfpPort {
	if m != nil {
		return m.Desc
	}
	return nil
}

// Modify behavior of the physical port
type OfpPortMod struct {
	// ofp_header header;
	PortNo uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo" json:"port_no,omitempty"`
	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr" json:"hw_addr,omitempty"`
	// The hardware address is not
	// configurable.  This is used to
	// sanity-check the request, so it must
	// be the same as returned in an
	// ofp_port struct.
	Config    uint32 `protobuf:"varint,3,opt,name=config" json:"config,omitempty"`
	Mask      uint32 `protobuf:"varint,4,opt,name=mask" json:"mask,omitempty"`
	Advertise uint32 `protobuf:"varint,5,opt,name=advertise" json:"advertise,omitempty"`
}

func (m *OfpPortMod) Reset()                    { *m = OfpPortMod{} }
func (m *OfpPortMod) String() string            { return proto.CompactTextString(m) }
func (*OfpPortMod) ProtoMessage()               {}
func (*OfpPortMod) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }

func (m *OfpPortMod) GetPortNo() uint32 {
	if m != nil {
		return m.PortNo
	}
	return 0
}

func (m *OfpPortMod) GetHwAddr() []uint32 {
	if m != nil {
		return m.HwAddr
	}
	return nil
}

func (m *OfpPortMod) GetConfig() uint32 {
	if m != nil {
		return m.Config
	}
	return 0
}

func (m *OfpPortMod) GetMask() uint32 {
	if m != nil {
		return m.Mask
	}
	return 0
}

func (m *OfpPortMod) GetAdvertise() uint32 {
	if m != nil {
		return m.Advertise
	}
	return 0
}

// Fields to match against flows
type OfpMatch struct {
	Type      OfpMatchType   `protobuf:"varint,1,opt,name=type,enum=openflow_13.OfpMatchType" json:"type,omitempty"`
	OxmFields []*OfpOxmField `protobuf:"bytes,2,rep,name=oxm_fields,json=oxmFields" json:"oxm_fields,omitempty"`
}

func (m *OfpMatch) Reset()                    { *m = OfpMatch{} }
func (m *OfpMatch) String() string            { return proto.CompactTextString(m) }
func (*OfpMatch) ProtoMessage()               {}
func (*OfpMatch) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }

func (m *OfpMatch) GetType() OfpMatchType {
	if m != nil {
		return m.Type
	}
	return OfpMatchType_OFPMT_STANDARD
}

func (m *OfpMatch) GetOxmFields() []*OfpOxmField {
	if m != nil {
		return m.OxmFields
	}
	return nil
}

// OXM Flow match fields
type OfpOxmField struct {
	OxmClass OfpOxmClass `protobuf:"varint,1,opt,name=oxm_class,json=oxmClass,enum=openflow_13.OfpOxmClass" json:"oxm_class,omitempty"`
	// Types that are valid to be assigned to Field:
	//	*OfpOxmField_OfbField
	//	*OfpOxmField_ExperimenterField
	Field isOfpOxmField_Field `protobuf_oneof:"field"`
}

func (m *OfpOxmField) Reset()                    { *m = OfpOxmField{} }
func (m *OfpOxmField) String() string            { return proto.CompactTextString(m) }
func (*OfpOxmField) ProtoMessage()               {}
func (*OfpOxmField) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }

type isOfpOxmField_Field interface {
	isOfpOxmField_Field()
}

type OfpOxmField_OfbField struct {
	OfbField *OfpOxmOfbField `protobuf:"bytes,4,opt,name=ofb_field,json=ofbField,oneof"`
}
type OfpOxmField_ExperimenterField struct {
	ExperimenterField *OfpOxmExperimenterField `protobuf:"bytes,5,opt,name=experimenter_field,json=experimenterField,oneof"`
}

func (*OfpOxmField_OfbField) isOfpOxmField_Field()          {}
func (*OfpOxmField_ExperimenterField) isOfpOxmField_Field() {}

func (m *OfpOxmField) GetField() isOfpOxmField_Field {
	if m != nil {
		return m.Field
	}
	return nil
}

func (m *OfpOxmField) GetOxmClass() OfpOxmClass {
	if m != nil {
		return m.OxmClass
	}
	return OfpOxmClass_OFPXMC_NXM_0
}

func (m *OfpOxmField) GetOfbField() *OfpOxmOfbField {
	if x, ok := m.GetField().(*OfpOxmField_OfbField); ok {
		return x.OfbField
	}
	return nil
}

func (m *OfpOxmField) GetExperimenterField() *OfpOxmExperimenterField {
	if x, ok := m.GetField().(*OfpOxmField_ExperimenterField); ok {
		return x.ExperimenterField
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*OfpOxmField) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _OfpOxmField_OneofMarshaler, _OfpOxmField_OneofUnmarshaler, _OfpOxmField_OneofSizer, []interface{}{
		(*OfpOxmField_OfbField)(nil),
		(*OfpOxmField_ExperimenterField)(nil),
	}
}

func _OfpOxmField_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*OfpOxmField)
	// field
	switch x := m.Field.(type) {
	case *OfpOxmField_OfbField:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.OfbField); err != nil {
			return err
		}
	case *OfpOxmField_ExperimenterField:
		b.EncodeVarint(5<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ExperimenterField); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("OfpOxmField.Field has unexpected type %T", x)
	}
	return nil
}

func _OfpOxmField_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*OfpOxmField)
	switch tag {
	case 4: // field.ofb_field
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpOxmOfbField)
		err := b.DecodeMessage(msg)
		m.Field = &OfpOxmField_OfbField{msg}
		return true, err
	case 5: // field.experimenter_field
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpOxmExperimenterField)
		err := b.DecodeMessage(msg)
		m.Field = &OfpOxmField_ExperimenterField{msg}
		return true, err
	default:
		return false, nil
	}
}

func _OfpOxmField_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*OfpOxmField)
	// field
	switch x := m.Field.(type) {
	case *OfpOxmField_OfbField:
		s := proto.Size(x.OfbField)
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpOxmField_ExperimenterField:
		s := proto.Size(x.ExperimenterField)
		n += proto.SizeVarint(5<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// OXM OpenFlow Basic Match Field
type OfpOxmOfbField struct {
	Type    OxmOfbFieldTypes `protobuf:"varint,1,opt,name=type,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
	HasMask bool             `protobuf:"varint,2,opt,name=has_mask,json=hasMask" json:"has_mask,omitempty"`
	// Types that are valid to be assigned to Value:
	//	*OfpOxmOfbField_Port
	//	*OfpOxmOfbField_PhysicalPort
	//	*OfpOxmOfbField_TableMetadata
	//	*OfpOxmOfbField_EthDst
	//	*OfpOxmOfbField_EthSrc
	//	*OfpOxmOfbField_EthType
	//	*OfpOxmOfbField_VlanVid
	//	*OfpOxmOfbField_VlanPcp
	//	*OfpOxmOfbField_IpDscp
	//	*OfpOxmOfbField_IpEcn
	//	*OfpOxmOfbField_IpProto
	//	*OfpOxmOfbField_Ipv4Src
	//	*OfpOxmOfbField_Ipv4Dst
	//	*OfpOxmOfbField_TcpSrc
	//	*OfpOxmOfbField_TcpDst
	//	*OfpOxmOfbField_UdpSrc
	//	*OfpOxmOfbField_UdpDst
	//	*OfpOxmOfbField_SctpSrc
	//	*OfpOxmOfbField_SctpDst
	//	*OfpOxmOfbField_Icmpv4Type
	//	*OfpOxmOfbField_Icmpv4Code
	//	*OfpOxmOfbField_ArpOp
	//	*OfpOxmOfbField_ArpSpa
	//	*OfpOxmOfbField_ArpTpa
	//	*OfpOxmOfbField_ArpSha
	//	*OfpOxmOfbField_ArpTha
	//	*OfpOxmOfbField_Ipv6Src
	//	*OfpOxmOfbField_Ipv6Dst
	//	*OfpOxmOfbField_Ipv6Flabel
	//	*OfpOxmOfbField_Icmpv6Type
	//	*OfpOxmOfbField_Icmpv6Code
	//	*OfpOxmOfbField_Ipv6NdTarget
	//	*OfpOxmOfbField_Ipv6NdSsl
	//	*OfpOxmOfbField_Ipv6NdTll
	//	*OfpOxmOfbField_MplsLabel
	//	*OfpOxmOfbField_MplsTc
	//	*OfpOxmOfbField_MplsBos
	//	*OfpOxmOfbField_PbbIsid
	//	*OfpOxmOfbField_TunnelId
	//	*OfpOxmOfbField_Ipv6Exthdr
	Value isOfpOxmOfbField_Value `protobuf_oneof:"value"`
	// Optional mask values (must be present when has_mask is true
	//
	// Types that are valid to be assigned to Mask:
	//	*OfpOxmOfbField_TableMetadataMask
	//	*OfpOxmOfbField_EthDstMask
	//	*OfpOxmOfbField_EthSrcMask
	//	*OfpOxmOfbField_VlanVidMask
	//	*OfpOxmOfbField_Ipv4SrcMask
	//	*OfpOxmOfbField_Ipv4DstMask
	//	*OfpOxmOfbField_ArpSpaMask
	//	*OfpOxmOfbField_ArpTpaMask
	//	*OfpOxmOfbField_Ipv6SrcMask
	//	*OfpOxmOfbField_Ipv6DstMask
	//	*OfpOxmOfbField_Ipv6FlabelMask
	//	*OfpOxmOfbField_PbbIsidMask
	//	*OfpOxmOfbField_TunnelIdMask
	//	*OfpOxmOfbField_Ipv6ExthdrMask
	Mask isOfpOxmOfbField_Mask `protobuf_oneof:"mask"`
}

func (m *OfpOxmOfbField) Reset()                    { *m = OfpOxmOfbField{} }
func (m *OfpOxmOfbField) String() string            { return proto.CompactTextString(m) }
func (*OfpOxmOfbField) ProtoMessage()               {}
func (*OfpOxmOfbField) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }

type isOfpOxmOfbField_Value interface {
	isOfpOxmOfbField_Value()
}
type isOfpOxmOfbField_Mask interface {
	isOfpOxmOfbField_Mask()
}

type OfpOxmOfbField_Port struct {
	Port uint32 `protobuf:"varint,3,opt,name=port,oneof"`
}
type OfpOxmOfbField_PhysicalPort struct {
	PhysicalPort uint32 `protobuf:"varint,4,opt,name=physical_port,json=physicalPort,oneof"`
}
type OfpOxmOfbField_TableMetadata struct {
	TableMetadata uint64 `protobuf:"varint,5,opt,name=table_metadata,json=tableMetadata,oneof"`
}
type OfpOxmOfbField_EthDst struct {
	EthDst []byte `protobuf:"bytes,6,opt,name=eth_dst,json=ethDst,proto3,oneof"`
}
type OfpOxmOfbField_EthSrc struct {
	EthSrc []byte `protobuf:"bytes,7,opt,name=eth_src,json=ethSrc,proto3,oneof"`
}
type OfpOxmOfbField_EthType struct {
	EthType uint32 `protobuf:"varint,8,opt,name=eth_type,json=ethType,oneof"`
}
type OfpOxmOfbField_VlanVid struct {
	VlanVid uint32 `protobuf:"varint,9,opt,name=vlan_vid,json=vlanVid,oneof"`
}
type OfpOxmOfbField_VlanPcp struct {
	VlanPcp uint32 `protobuf:"varint,10,opt,name=vlan_pcp,json=vlanPcp,oneof"`
}
type OfpOxmOfbField_IpDscp struct {
	IpDscp uint32 `protobuf:"varint,11,opt,name=ip_dscp,json=ipDscp,oneof"`
}
type OfpOxmOfbField_IpEcn struct {
	IpEcn uint32 `protobuf:"varint,12,opt,name=ip_ecn,json=ipEcn,oneof"`
}
type OfpOxmOfbField_IpProto struct {
	IpProto uint32 `protobuf:"varint,13,opt,name=ip_proto,json=ipProto,oneof"`
}
type OfpOxmOfbField_Ipv4Src struct {
	Ipv4Src uint32 `protobuf:"varint,14,opt,name=ipv4_src,json=ipv4Src,oneof"`
}
type OfpOxmOfbField_Ipv4Dst struct {
	Ipv4Dst uint32 `protobuf:"varint,15,opt,name=ipv4_dst,json=ipv4Dst,oneof"`
}
type OfpOxmOfbField_TcpSrc struct {
	TcpSrc uint32 `protobuf:"varint,16,opt,name=tcp_src,json=tcpSrc,oneof"`
}
type OfpOxmOfbField_TcpDst struct {
	TcpDst uint32 `protobuf:"varint,17,opt,name=tcp_dst,json=tcpDst,oneof"`
}
type OfpOxmOfbField_UdpSrc struct {
	UdpSrc uint32 `protobuf:"varint,18,opt,name=udp_src,json=udpSrc,oneof"`
}
type OfpOxmOfbField_UdpDst struct {
	UdpDst uint32 `protobuf:"varint,19,opt,name=udp_dst,json=udpDst,oneof"`
}
type OfpOxmOfbField_SctpSrc struct {
	SctpSrc uint32 `protobuf:"varint,20,opt,name=sctp_src,json=sctpSrc,oneof"`
}
type OfpOxmOfbField_SctpDst struct {
	SctpDst uint32 `protobuf:"varint,21,opt,name=sctp_dst,json=sctpDst,oneof"`
}
type OfpOxmOfbField_Icmpv4Type struct {
	Icmpv4Type uint32 `protobuf:"varint,22,opt,name=icmpv4_type,json=icmpv4Type,oneof"`
}
type OfpOxmOfbField_Icmpv4Code struct {
	Icmpv4Code uint32 `protobuf:"varint,23,opt,name=icmpv4_code,json=icmpv4Code,oneof"`
}
type OfpOxmOfbField_ArpOp struct {
	ArpOp uint32 `protobuf:"varint,24,opt,name=arp_op,json=arpOp,oneof"`
}
type OfpOxmOfbField_ArpSpa struct {
	ArpSpa uint32 `protobuf:"varint,25,opt,name=arp_spa,json=arpSpa,oneof"`
}
type OfpOxmOfbField_ArpTpa struct {
	ArpTpa uint32 `protobuf:"varint,26,opt,name=arp_tpa,json=arpTpa,oneof"`
}
type OfpOxmOfbField_ArpSha struct {
	ArpSha []byte `protobuf:"bytes,27,opt,name=arp_sha,json=arpSha,proto3,oneof"`
}
type OfpOxmOfbField_ArpTha struct {
	ArpTha []byte `protobuf:"bytes,28,opt,name=arp_tha,json=arpTha,proto3,oneof"`
}
type OfpOxmOfbField_Ipv6Src struct {
	Ipv6Src []byte `protobuf:"bytes,29,opt,name=ipv6_src,json=ipv6Src,proto3,oneof"`
}
type OfpOxmOfbField_Ipv6Dst struct {
	Ipv6Dst []byte `protobuf:"bytes,30,opt,name=ipv6_dst,json=ipv6Dst,proto3,oneof"`
}
type OfpOxmOfbField_Ipv6Flabel struct {
	Ipv6Flabel uint32 `protobuf:"varint,31,opt,name=ipv6_flabel,json=ipv6Flabel,oneof"`
}
type OfpOxmOfbField_Icmpv6Type struct {
	Icmpv6Type uint32 `protobuf:"varint,32,opt,name=icmpv6_type,json=icmpv6Type,oneof"`
}
type OfpOxmOfbField_Icmpv6Code struct {
	Icmpv6Code uint32 `protobuf:"varint,33,opt,name=icmpv6_code,json=icmpv6Code,oneof"`
}
type OfpOxmOfbField_Ipv6NdTarget struct {
	Ipv6NdTarget []byte `protobuf:"bytes,34,opt,name=ipv6_nd_target,json=ipv6NdTarget,proto3,oneof"`
}
type OfpOxmOfbField_Ipv6NdSsl struct {
	Ipv6NdSsl []byte `protobuf:"bytes,35,opt,name=ipv6_nd_ssl,json=ipv6NdSsl,proto3,oneof"`
}
type OfpOxmOfbField_Ipv6NdTll struct {
	Ipv6NdTll []byte `protobuf:"bytes,36,opt,name=ipv6_nd_tll,json=ipv6NdTll,proto3,oneof"`
}
type OfpOxmOfbField_MplsLabel struct {
	MplsLabel uint32 `protobuf:"varint,37,opt,name=mpls_label,json=mplsLabel,oneof"`
}
type OfpOxmOfbField_MplsTc struct {
	MplsTc uint32 `protobuf:"varint,38,opt,name=mpls_tc,json=mplsTc,oneof"`
}
type OfpOxmOfbField_MplsBos struct {
	MplsBos uint32 `protobuf:"varint,39,opt,name=mpls_bos,json=mplsBos,oneof"`
}
type OfpOxmOfbField_PbbIsid struct {
	PbbIsid uint32 `protobuf:"varint,40,opt,name=pbb_isid,json=pbbIsid,oneof"`
}
type OfpOxmOfbField_TunnelId struct {
	TunnelId uint64 `protobuf:"varint,41,opt,name=tunnel_id,json=tunnelId,oneof"`
}
type OfpOxmOfbField_Ipv6Exthdr struct {
	Ipv6Exthdr uint32 `protobuf:"varint,42,opt,name=ipv6_exthdr,json=ipv6Exthdr,oneof"`
}
type OfpOxmOfbField_TableMetadataMask struct {
	TableMetadataMask uint64 `protobuf:"varint,105,opt,name=table_metadata_mask,json=tableMetadataMask,oneof"`
}
type OfpOxmOfbField_EthDstMask struct {
	EthDstMask []byte `protobuf:"bytes,106,opt,name=eth_dst_mask,json=ethDstMask,proto3,oneof"`
}
type OfpOxmOfbField_EthSrcMask struct {
	EthSrcMask []byte `protobuf:"bytes,107,opt,name=eth_src_mask,json=ethSrcMask,proto3,oneof"`
}
type OfpOxmOfbField_VlanVidMask struct {
	VlanVidMask uint32 `protobuf:"varint,109,opt,name=vlan_vid_mask,json=vlanVidMask,oneof"`
}
type OfpOxmOfbField_Ipv4SrcMask struct {
	Ipv4SrcMask uint32 `protobuf:"varint,114,opt,name=ipv4_src_mask,json=ipv4SrcMask,oneof"`
}
type OfpOxmOfbField_Ipv4DstMask struct {
	Ipv4DstMask uint32 `protobuf:"varint,115,opt,name=ipv4_dst_mask,json=ipv4DstMask,oneof"`
}
type OfpOxmOfbField_ArpSpaMask struct {
	ArpSpaMask uint32 `protobuf:"varint,125,opt,name=arp_spa_mask,json=arpSpaMask,oneof"`
}
type OfpOxmOfbField_ArpTpaMask struct {
	ArpTpaMask uint32 `protobuf:"varint,126,opt,name=arp_tpa_mask,json=arpTpaMask,oneof"`
}
type OfpOxmOfbField_Ipv6SrcMask struct {
	Ipv6SrcMask []byte `protobuf:"bytes,129,opt,name=ipv6_src_mask,json=ipv6SrcMask,proto3,oneof"`
}
type OfpOxmOfbField_Ipv6DstMask struct {
	Ipv6DstMask []byte `protobuf:"bytes,130,opt,name=ipv6_dst_mask,json=ipv6DstMask,proto3,oneof"`
}
type OfpOxmOfbField_Ipv6FlabelMask struct {
	Ipv6FlabelMask uint32 `protobuf:"varint,131,opt,name=ipv6_flabel_mask,json=ipv6FlabelMask,oneof"`
}
type OfpOxmOfbField_PbbIsidMask struct {
	PbbIsidMask uint32 `protobuf:"varint,140,opt,name=pbb_isid_mask,json=pbbIsidMask,oneof"`
}
type OfpOxmOfbField_TunnelIdMask struct {
	TunnelIdMask uint64 `protobuf:"varint,141,opt,name=tunnel_id_mask,json=tunnelIdMask,oneof"`
}
type OfpOxmOfbField_Ipv6ExthdrMask struct {
	Ipv6ExthdrMask uint32 `protobuf:"varint,142,opt,name=ipv6_exthdr_mask,json=ipv6ExthdrMask,oneof"`
}

func (*OfpOxmOfbField_Port) isOfpOxmOfbField_Value()             {}
func (*OfpOxmOfbField_PhysicalPort) isOfpOxmOfbField_Value()     {}
func (*OfpOxmOfbField_TableMetadata) isOfpOxmOfbField_Value()    {}
func (*OfpOxmOfbField_EthDst) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_EthSrc) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_EthType) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_VlanVid) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_VlanPcp) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_IpDscp) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_IpEcn) isOfpOxmOfbField_Value()            {}
func (*OfpOxmOfbField_IpProto) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_Ipv4Src) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_Ipv4Dst) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_TcpSrc) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_TcpDst) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_UdpSrc) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_UdpDst) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_SctpSrc) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_SctpDst) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_Icmpv4Type) isOfpOxmOfbField_Value()       {}
func (*OfpOxmOfbField_Icmpv4Code) isOfpOxmOfbField_Value()       {}
func (*OfpOxmOfbField_ArpOp) isOfpOxmOfbField_Value()            {}
func (*OfpOxmOfbField_ArpSpa) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_ArpTpa) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_ArpSha) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_ArpTha) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_Ipv6Src) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_Ipv6Dst) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_Ipv6Flabel) isOfpOxmOfbField_Value()       {}
func (*OfpOxmOfbField_Icmpv6Type) isOfpOxmOfbField_Value()       {}
func (*OfpOxmOfbField_Icmpv6Code) isOfpOxmOfbField_Value()       {}
func (*OfpOxmOfbField_Ipv6NdTarget) isOfpOxmOfbField_Value()     {}
func (*OfpOxmOfbField_Ipv6NdSsl) isOfpOxmOfbField_Value()        {}
func (*OfpOxmOfbField_Ipv6NdTll) isOfpOxmOfbField_Value()        {}
func (*OfpOxmOfbField_MplsLabel) isOfpOxmOfbField_Value()        {}
func (*OfpOxmOfbField_MplsTc) isOfpOxmOfbField_Value()           {}
func (*OfpOxmOfbField_MplsBos) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_PbbIsid) isOfpOxmOfbField_Value()          {}
func (*OfpOxmOfbField_TunnelId) isOfpOxmOfbField_Value()         {}
func (*OfpOxmOfbField_Ipv6Exthdr) isOfpOxmOfbField_Value()       {}
func (*OfpOxmOfbField_TableMetadataMask) isOfpOxmOfbField_Mask() {}
func (*OfpOxmOfbField_EthDstMask) isOfpOxmOfbField_Mask()        {}
func (*OfpOxmOfbField_EthSrcMask) isOfpOxmOfbField_Mask()        {}
func (*OfpOxmOfbField_VlanVidMask) isOfpOxmOfbField_Mask()       {}
func (*OfpOxmOfbField_Ipv4SrcMask) isOfpOxmOfbField_Mask()       {}
func (*OfpOxmOfbField_Ipv4DstMask) isOfpOxmOfbField_Mask()       {}
func (*OfpOxmOfbField_ArpSpaMask) isOfpOxmOfbField_Mask()        {}
func (*OfpOxmOfbField_ArpTpaMask) isOfpOxmOfbField_Mask()        {}
func (*OfpOxmOfbField_Ipv6SrcMask) isOfpOxmOfbField_Mask()       {}
func (*OfpOxmOfbField_Ipv6DstMask) isOfpOxmOfbField_Mask()       {}
func (*OfpOxmOfbField_Ipv6FlabelMask) isOfpOxmOfbField_Mask()    {}
func (*OfpOxmOfbField_PbbIsidMask) isOfpOxmOfbField_Mask()       {}
func (*OfpOxmOfbField_TunnelIdMask) isOfpOxmOfbField_Mask()      {}
func (*OfpOxmOfbField_Ipv6ExthdrMask) isOfpOxmOfbField_Mask()    {}

func (m *OfpOxmOfbField) GetValue() isOfpOxmOfbField_Value {
	if m != nil {
		return m.Value
	}
	return nil
}
func (m *OfpOxmOfbField) GetMask() isOfpOxmOfbField_Mask {
	if m != nil {
		return m.Mask
	}
	return nil
}

func (m *OfpOxmOfbField) GetType() OxmOfbFieldTypes {
	if m != nil {
		return m.Type
	}
	return OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT
}

func (m *OfpOxmOfbField) GetHasMask() bool {
	if m != nil {
		return m.HasMask
	}
	return false
}

func (m *OfpOxmOfbField) GetPort() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Port); ok {
		return x.Port
	}
	return 0
}

func (m *OfpOxmOfbField) GetPhysicalPort() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_PhysicalPort); ok {
		return x.PhysicalPort
	}
	return 0
}

func (m *OfpOxmOfbField) GetTableMetadata() uint64 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_TableMetadata); ok {
		return x.TableMetadata
	}
	return 0
}

func (m *OfpOxmOfbField) GetEthDst() []byte {
	if x, ok := m.GetValue().(*OfpOxmOfbField_EthDst); ok {
		return x.EthDst
	}
	return nil
}

func (m *OfpOxmOfbField) GetEthSrc() []byte {
	if x, ok := m.GetValue().(*OfpOxmOfbField_EthSrc); ok {
		return x.EthSrc
	}
	return nil
}

func (m *OfpOxmOfbField) GetEthType() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_EthType); ok {
		return x.EthType
	}
	return 0
}

func (m *OfpOxmOfbField) GetVlanVid() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_VlanVid); ok {
		return x.VlanVid
	}
	return 0
}

func (m *OfpOxmOfbField) GetVlanPcp() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_VlanPcp); ok {
		return x.VlanPcp
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpDscp() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_IpDscp); ok {
		return x.IpDscp
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpEcn() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_IpEcn); ok {
		return x.IpEcn
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpProto() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_IpProto); ok {
		return x.IpProto
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpv4Src() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv4Src); ok {
		return x.Ipv4Src
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpv4Dst() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv4Dst); ok {
		return x.Ipv4Dst
	}
	return 0
}

func (m *OfpOxmOfbField) GetTcpSrc() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_TcpSrc); ok {
		return x.TcpSrc
	}
	return 0
}

func (m *OfpOxmOfbField) GetTcpDst() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_TcpDst); ok {
		return x.TcpDst
	}
	return 0
}

func (m *OfpOxmOfbField) GetUdpSrc() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_UdpSrc); ok {
		return x.UdpSrc
	}
	return 0
}

func (m *OfpOxmOfbField) GetUdpDst() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_UdpDst); ok {
		return x.UdpDst
	}
	return 0
}

func (m *OfpOxmOfbField) GetSctpSrc() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_SctpSrc); ok {
		return x.SctpSrc
	}
	return 0
}

func (m *OfpOxmOfbField) GetSctpDst() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_SctpDst); ok {
		return x.SctpDst
	}
	return 0
}

func (m *OfpOxmOfbField) GetIcmpv4Type() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv4Type); ok {
		return x.Icmpv4Type
	}
	return 0
}

func (m *OfpOxmOfbField) GetIcmpv4Code() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv4Code); ok {
		return x.Icmpv4Code
	}
	return 0
}

func (m *OfpOxmOfbField) GetArpOp() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpOp); ok {
		return x.ArpOp
	}
	return 0
}

func (m *OfpOxmOfbField) GetArpSpa() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpSpa); ok {
		return x.ArpSpa
	}
	return 0
}

func (m *OfpOxmOfbField) GetArpTpa() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpTpa); ok {
		return x.ArpTpa
	}
	return 0
}

func (m *OfpOxmOfbField) GetArpSha() []byte {
	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpSha); ok {
		return x.ArpSha
	}
	return nil
}

func (m *OfpOxmOfbField) GetArpTha() []byte {
	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpTha); ok {
		return x.ArpTha
	}
	return nil
}

func (m *OfpOxmOfbField) GetIpv6Src() []byte {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Src); ok {
		return x.Ipv6Src
	}
	return nil
}

func (m *OfpOxmOfbField) GetIpv6Dst() []byte {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Dst); ok {
		return x.Ipv6Dst
	}
	return nil
}

func (m *OfpOxmOfbField) GetIpv6Flabel() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Flabel); ok {
		return x.Ipv6Flabel
	}
	return 0
}

func (m *OfpOxmOfbField) GetIcmpv6Type() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv6Type); ok {
		return x.Icmpv6Type
	}
	return 0
}

func (m *OfpOxmOfbField) GetIcmpv6Code() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv6Code); ok {
		return x.Icmpv6Code
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpv6NdTarget() []byte {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdTarget); ok {
		return x.Ipv6NdTarget
	}
	return nil
}

func (m *OfpOxmOfbField) GetIpv6NdSsl() []byte {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdSsl); ok {
		return x.Ipv6NdSsl
	}
	return nil
}

func (m *OfpOxmOfbField) GetIpv6NdTll() []byte {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdTll); ok {
		return x.Ipv6NdTll
	}
	return nil
}

func (m *OfpOxmOfbField) GetMplsLabel() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_MplsLabel); ok {
		return x.MplsLabel
	}
	return 0
}

func (m *OfpOxmOfbField) GetMplsTc() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_MplsTc); ok {
		return x.MplsTc
	}
	return 0
}

func (m *OfpOxmOfbField) GetMplsBos() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_MplsBos); ok {
		return x.MplsBos
	}
	return 0
}

func (m *OfpOxmOfbField) GetPbbIsid() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_PbbIsid); ok {
		return x.PbbIsid
	}
	return 0
}

func (m *OfpOxmOfbField) GetTunnelId() uint64 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_TunnelId); ok {
		return x.TunnelId
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpv6Exthdr() uint32 {
	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Exthdr); ok {
		return x.Ipv6Exthdr
	}
	return 0
}

func (m *OfpOxmOfbField) GetTableMetadataMask() uint64 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_TableMetadataMask); ok {
		return x.TableMetadataMask
	}
	return 0
}

func (m *OfpOxmOfbField) GetEthDstMask() []byte {
	if x, ok := m.GetMask().(*OfpOxmOfbField_EthDstMask); ok {
		return x.EthDstMask
	}
	return nil
}

func (m *OfpOxmOfbField) GetEthSrcMask() []byte {
	if x, ok := m.GetMask().(*OfpOxmOfbField_EthSrcMask); ok {
		return x.EthSrcMask
	}
	return nil
}

func (m *OfpOxmOfbField) GetVlanVidMask() uint32 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_VlanVidMask); ok {
		return x.VlanVidMask
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpv4SrcMask() uint32 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv4SrcMask); ok {
		return x.Ipv4SrcMask
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpv4DstMask() uint32 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv4DstMask); ok {
		return x.Ipv4DstMask
	}
	return 0
}

func (m *OfpOxmOfbField) GetArpSpaMask() uint32 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_ArpSpaMask); ok {
		return x.ArpSpaMask
	}
	return 0
}

func (m *OfpOxmOfbField) GetArpTpaMask() uint32 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_ArpTpaMask); ok {
		return x.ArpTpaMask
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpv6SrcMask() []byte {
	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6SrcMask); ok {
		return x.Ipv6SrcMask
	}
	return nil
}

func (m *OfpOxmOfbField) GetIpv6DstMask() []byte {
	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6DstMask); ok {
		return x.Ipv6DstMask
	}
	return nil
}

func (m *OfpOxmOfbField) GetIpv6FlabelMask() uint32 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6FlabelMask); ok {
		return x.Ipv6FlabelMask
	}
	return 0
}

func (m *OfpOxmOfbField) GetPbbIsidMask() uint32 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_PbbIsidMask); ok {
		return x.PbbIsidMask
	}
	return 0
}

func (m *OfpOxmOfbField) GetTunnelIdMask() uint64 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_TunnelIdMask); ok {
		return x.TunnelIdMask
	}
	return 0
}

func (m *OfpOxmOfbField) GetIpv6ExthdrMask() uint32 {
	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6ExthdrMask); ok {
		return x.Ipv6ExthdrMask
	}
	return 0
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*OfpOxmOfbField) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _OfpOxmOfbField_OneofMarshaler, _OfpOxmOfbField_OneofUnmarshaler, _OfpOxmOfbField_OneofSizer, []interface{}{
		(*OfpOxmOfbField_Port)(nil),
		(*OfpOxmOfbField_PhysicalPort)(nil),
		(*OfpOxmOfbField_TableMetadata)(nil),
		(*OfpOxmOfbField_EthDst)(nil),
		(*OfpOxmOfbField_EthSrc)(nil),
		(*OfpOxmOfbField_EthType)(nil),
		(*OfpOxmOfbField_VlanVid)(nil),
		(*OfpOxmOfbField_VlanPcp)(nil),
		(*OfpOxmOfbField_IpDscp)(nil),
		(*OfpOxmOfbField_IpEcn)(nil),
		(*OfpOxmOfbField_IpProto)(nil),
		(*OfpOxmOfbField_Ipv4Src)(nil),
		(*OfpOxmOfbField_Ipv4Dst)(nil),
		(*OfpOxmOfbField_TcpSrc)(nil),
		(*OfpOxmOfbField_TcpDst)(nil),
		(*OfpOxmOfbField_UdpSrc)(nil),
		(*OfpOxmOfbField_UdpDst)(nil),
		(*OfpOxmOfbField_SctpSrc)(nil),
		(*OfpOxmOfbField_SctpDst)(nil),
		(*OfpOxmOfbField_Icmpv4Type)(nil),
		(*OfpOxmOfbField_Icmpv4Code)(nil),
		(*OfpOxmOfbField_ArpOp)(nil),
		(*OfpOxmOfbField_ArpSpa)(nil),
		(*OfpOxmOfbField_ArpTpa)(nil),
		(*OfpOxmOfbField_ArpSha)(nil),
		(*OfpOxmOfbField_ArpTha)(nil),
		(*OfpOxmOfbField_Ipv6Src)(nil),
		(*OfpOxmOfbField_Ipv6Dst)(nil),
		(*OfpOxmOfbField_Ipv6Flabel)(nil),
		(*OfpOxmOfbField_Icmpv6Type)(nil),
		(*OfpOxmOfbField_Icmpv6Code)(nil),
		(*OfpOxmOfbField_Ipv6NdTarget)(nil),
		(*OfpOxmOfbField_Ipv6NdSsl)(nil),
		(*OfpOxmOfbField_Ipv6NdTll)(nil),
		(*OfpOxmOfbField_MplsLabel)(nil),
		(*OfpOxmOfbField_MplsTc)(nil),
		(*OfpOxmOfbField_MplsBos)(nil),
		(*OfpOxmOfbField_PbbIsid)(nil),
		(*OfpOxmOfbField_TunnelId)(nil),
		(*OfpOxmOfbField_Ipv6Exthdr)(nil),
		(*OfpOxmOfbField_TableMetadataMask)(nil),
		(*OfpOxmOfbField_EthDstMask)(nil),
		(*OfpOxmOfbField_EthSrcMask)(nil),
		(*OfpOxmOfbField_VlanVidMask)(nil),
		(*OfpOxmOfbField_Ipv4SrcMask)(nil),
		(*OfpOxmOfbField_Ipv4DstMask)(nil),
		(*OfpOxmOfbField_ArpSpaMask)(nil),
		(*OfpOxmOfbField_ArpTpaMask)(nil),
		(*OfpOxmOfbField_Ipv6SrcMask)(nil),
		(*OfpOxmOfbField_Ipv6DstMask)(nil),
		(*OfpOxmOfbField_Ipv6FlabelMask)(nil),
		(*OfpOxmOfbField_PbbIsidMask)(nil),
		(*OfpOxmOfbField_TunnelIdMask)(nil),
		(*OfpOxmOfbField_Ipv6ExthdrMask)(nil),
	}
}

func _OfpOxmOfbField_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*OfpOxmOfbField)
	// value
	switch x := m.Value.(type) {
	case *OfpOxmOfbField_Port:
		b.EncodeVarint(3<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Port))
	case *OfpOxmOfbField_PhysicalPort:
		b.EncodeVarint(4<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.PhysicalPort))
	case *OfpOxmOfbField_TableMetadata:
		b.EncodeVarint(5<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.TableMetadata))
	case *OfpOxmOfbField_EthDst:
		b.EncodeVarint(6<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.EthDst)
	case *OfpOxmOfbField_EthSrc:
		b.EncodeVarint(7<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.EthSrc)
	case *OfpOxmOfbField_EthType:
		b.EncodeVarint(8<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.EthType))
	case *OfpOxmOfbField_VlanVid:
		b.EncodeVarint(9<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.VlanVid))
	case *OfpOxmOfbField_VlanPcp:
		b.EncodeVarint(10<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.VlanPcp))
	case *OfpOxmOfbField_IpDscp:
		b.EncodeVarint(11<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.IpDscp))
	case *OfpOxmOfbField_IpEcn:
		b.EncodeVarint(12<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.IpEcn))
	case *OfpOxmOfbField_IpProto:
		b.EncodeVarint(13<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.IpProto))
	case *OfpOxmOfbField_Ipv4Src:
		b.EncodeVarint(14<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Ipv4Src))
	case *OfpOxmOfbField_Ipv4Dst:
		b.EncodeVarint(15<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Ipv4Dst))
	case *OfpOxmOfbField_TcpSrc:
		b.EncodeVarint(16<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.TcpSrc))
	case *OfpOxmOfbField_TcpDst:
		b.EncodeVarint(17<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.TcpDst))
	case *OfpOxmOfbField_UdpSrc:
		b.EncodeVarint(18<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.UdpSrc))
	case *OfpOxmOfbField_UdpDst:
		b.EncodeVarint(19<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.UdpDst))
	case *OfpOxmOfbField_SctpSrc:
		b.EncodeVarint(20<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.SctpSrc))
	case *OfpOxmOfbField_SctpDst:
		b.EncodeVarint(21<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.SctpDst))
	case *OfpOxmOfbField_Icmpv4Type:
		b.EncodeVarint(22<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Icmpv4Type))
	case *OfpOxmOfbField_Icmpv4Code:
		b.EncodeVarint(23<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Icmpv4Code))
	case *OfpOxmOfbField_ArpOp:
		b.EncodeVarint(24<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ArpOp))
	case *OfpOxmOfbField_ArpSpa:
		b.EncodeVarint(25<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ArpSpa))
	case *OfpOxmOfbField_ArpTpa:
		b.EncodeVarint(26<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ArpTpa))
	case *OfpOxmOfbField_ArpSha:
		b.EncodeVarint(27<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.ArpSha)
	case *OfpOxmOfbField_ArpTha:
		b.EncodeVarint(28<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.ArpTha)
	case *OfpOxmOfbField_Ipv6Src:
		b.EncodeVarint(29<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.Ipv6Src)
	case *OfpOxmOfbField_Ipv6Dst:
		b.EncodeVarint(30<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.Ipv6Dst)
	case *OfpOxmOfbField_Ipv6Flabel:
		b.EncodeVarint(31<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Ipv6Flabel))
	case *OfpOxmOfbField_Icmpv6Type:
		b.EncodeVarint(32<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Icmpv6Type))
	case *OfpOxmOfbField_Icmpv6Code:
		b.EncodeVarint(33<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Icmpv6Code))
	case *OfpOxmOfbField_Ipv6NdTarget:
		b.EncodeVarint(34<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.Ipv6NdTarget)
	case *OfpOxmOfbField_Ipv6NdSsl:
		b.EncodeVarint(35<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.Ipv6NdSsl)
	case *OfpOxmOfbField_Ipv6NdTll:
		b.EncodeVarint(36<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.Ipv6NdTll)
	case *OfpOxmOfbField_MplsLabel:
		b.EncodeVarint(37<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.MplsLabel))
	case *OfpOxmOfbField_MplsTc:
		b.EncodeVarint(38<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.MplsTc))
	case *OfpOxmOfbField_MplsBos:
		b.EncodeVarint(39<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.MplsBos))
	case *OfpOxmOfbField_PbbIsid:
		b.EncodeVarint(40<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.PbbIsid))
	case *OfpOxmOfbField_TunnelId:
		b.EncodeVarint(41<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.TunnelId))
	case *OfpOxmOfbField_Ipv6Exthdr:
		b.EncodeVarint(42<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Ipv6Exthdr))
	case nil:
	default:
		return fmt.Errorf("OfpOxmOfbField.Value has unexpected type %T", x)
	}
	// mask
	switch x := m.Mask.(type) {
	case *OfpOxmOfbField_TableMetadataMask:
		b.EncodeVarint(105<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.TableMetadataMask))
	case *OfpOxmOfbField_EthDstMask:
		b.EncodeVarint(106<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.EthDstMask)
	case *OfpOxmOfbField_EthSrcMask:
		b.EncodeVarint(107<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.EthSrcMask)
	case *OfpOxmOfbField_VlanVidMask:
		b.EncodeVarint(109<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.VlanVidMask))
	case *OfpOxmOfbField_Ipv4SrcMask:
		b.EncodeVarint(114<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Ipv4SrcMask))
	case *OfpOxmOfbField_Ipv4DstMask:
		b.EncodeVarint(115<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Ipv4DstMask))
	case *OfpOxmOfbField_ArpSpaMask:
		b.EncodeVarint(125<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ArpSpaMask))
	case *OfpOxmOfbField_ArpTpaMask:
		b.EncodeVarint(126<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ArpTpaMask))
	case *OfpOxmOfbField_Ipv6SrcMask:
		b.EncodeVarint(129<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.Ipv6SrcMask)
	case *OfpOxmOfbField_Ipv6DstMask:
		b.EncodeVarint(130<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.Ipv6DstMask)
	case *OfpOxmOfbField_Ipv6FlabelMask:
		b.EncodeVarint(131<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Ipv6FlabelMask))
	case *OfpOxmOfbField_PbbIsidMask:
		b.EncodeVarint(140<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.PbbIsidMask))
	case *OfpOxmOfbField_TunnelIdMask:
		b.EncodeVarint(141<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.TunnelIdMask))
	case *OfpOxmOfbField_Ipv6ExthdrMask:
		b.EncodeVarint(142<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.Ipv6ExthdrMask))
	case nil:
	default:
		return fmt.Errorf("OfpOxmOfbField.Mask has unexpected type %T", x)
	}
	return nil
}

func _OfpOxmOfbField_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*OfpOxmOfbField)
	switch tag {
	case 3: // value.port
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_Port{uint32(x)}
		return true, err
	case 4: // value.physical_port
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_PhysicalPort{uint32(x)}
		return true, err
	case 5: // value.table_metadata
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_TableMetadata{x}
		return true, err
	case 6: // value.eth_dst
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Value = &OfpOxmOfbField_EthDst{x}
		return true, err
	case 7: // value.eth_src
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Value = &OfpOxmOfbField_EthSrc{x}
		return true, err
	case 8: // value.eth_type
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_EthType{uint32(x)}
		return true, err
	case 9: // value.vlan_vid
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_VlanVid{uint32(x)}
		return true, err
	case 10: // value.vlan_pcp
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_VlanPcp{uint32(x)}
		return true, err
	case 11: // value.ip_dscp
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_IpDscp{uint32(x)}
		return true, err
	case 12: // value.ip_ecn
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_IpEcn{uint32(x)}
		return true, err
	case 13: // value.ip_proto
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_IpProto{uint32(x)}
		return true, err
	case 14: // value.ipv4_src
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_Ipv4Src{uint32(x)}
		return true, err
	case 15: // value.ipv4_dst
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_Ipv4Dst{uint32(x)}
		return true, err
	case 16: // value.tcp_src
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_TcpSrc{uint32(x)}
		return true, err
	case 17: // value.tcp_dst
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_TcpDst{uint32(x)}
		return true, err
	case 18: // value.udp_src
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_UdpSrc{uint32(x)}
		return true, err
	case 19: // value.udp_dst
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_UdpDst{uint32(x)}
		return true, err
	case 20: // value.sctp_src
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_SctpSrc{uint32(x)}
		return true, err
	case 21: // value.sctp_dst
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_SctpDst{uint32(x)}
		return true, err
	case 22: // value.icmpv4_type
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_Icmpv4Type{uint32(x)}
		return true, err
	case 23: // value.icmpv4_code
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_Icmpv4Code{uint32(x)}
		return true, err
	case 24: // value.arp_op
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_ArpOp{uint32(x)}
		return true, err
	case 25: // value.arp_spa
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_ArpSpa{uint32(x)}
		return true, err
	case 26: // value.arp_tpa
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_ArpTpa{uint32(x)}
		return true, err
	case 27: // value.arp_sha
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Value = &OfpOxmOfbField_ArpSha{x}
		return true, err
	case 28: // value.arp_tha
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Value = &OfpOxmOfbField_ArpTha{x}
		return true, err
	case 29: // value.ipv6_src
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Value = &OfpOxmOfbField_Ipv6Src{x}
		return true, err
	case 30: // value.ipv6_dst
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Value = &OfpOxmOfbField_Ipv6Dst{x}
		return true, err
	case 31: // value.ipv6_flabel
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_Ipv6Flabel{uint32(x)}
		return true, err
	case 32: // value.icmpv6_type
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_Icmpv6Type{uint32(x)}
		return true, err
	case 33: // value.icmpv6_code
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_Icmpv6Code{uint32(x)}
		return true, err
	case 34: // value.ipv6_nd_target
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Value = &OfpOxmOfbField_Ipv6NdTarget{x}
		return true, err
	case 35: // value.ipv6_nd_ssl
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Value = &OfpOxmOfbField_Ipv6NdSsl{x}
		return true, err
	case 36: // value.ipv6_nd_tll
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Value = &OfpOxmOfbField_Ipv6NdTll{x}
		return true, err
	case 37: // value.mpls_label
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_MplsLabel{uint32(x)}
		return true, err
	case 38: // value.mpls_tc
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_MplsTc{uint32(x)}
		return true, err
	case 39: // value.mpls_bos
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_MplsBos{uint32(x)}
		return true, err
	case 40: // value.pbb_isid
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_PbbIsid{uint32(x)}
		return true, err
	case 41: // value.tunnel_id
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_TunnelId{x}
		return true, err
	case 42: // value.ipv6_exthdr
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &OfpOxmOfbField_Ipv6Exthdr{uint32(x)}
		return true, err
	case 105: // mask.table_metadata_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_TableMetadataMask{x}
		return true, err
	case 106: // mask.eth_dst_mask
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Mask = &OfpOxmOfbField_EthDstMask{x}
		return true, err
	case 107: // mask.eth_src_mask
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Mask = &OfpOxmOfbField_EthSrcMask{x}
		return true, err
	case 109: // mask.vlan_vid_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_VlanVidMask{uint32(x)}
		return true, err
	case 114: // mask.ipv4_src_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_Ipv4SrcMask{uint32(x)}
		return true, err
	case 115: // mask.ipv4_dst_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_Ipv4DstMask{uint32(x)}
		return true, err
	case 125: // mask.arp_spa_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_ArpSpaMask{uint32(x)}
		return true, err
	case 126: // mask.arp_tpa_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_ArpTpaMask{uint32(x)}
		return true, err
	case 129: // mask.ipv6_src_mask
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Mask = &OfpOxmOfbField_Ipv6SrcMask{x}
		return true, err
	case 130: // mask.ipv6_dst_mask
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.Mask = &OfpOxmOfbField_Ipv6DstMask{x}
		return true, err
	case 131: // mask.ipv6_flabel_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_Ipv6FlabelMask{uint32(x)}
		return true, err
	case 140: // mask.pbb_isid_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_PbbIsidMask{uint32(x)}
		return true, err
	case 141: // mask.tunnel_id_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_TunnelIdMask{x}
		return true, err
	case 142: // mask.ipv6_exthdr_mask
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Mask = &OfpOxmOfbField_Ipv6ExthdrMask{uint32(x)}
		return true, err
	default:
		return false, nil
	}
}

func _OfpOxmOfbField_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*OfpOxmOfbField)
	// value
	switch x := m.Value.(type) {
	case *OfpOxmOfbField_Port:
		n += proto.SizeVarint(3<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Port))
	case *OfpOxmOfbField_PhysicalPort:
		n += proto.SizeVarint(4<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.PhysicalPort))
	case *OfpOxmOfbField_TableMetadata:
		n += proto.SizeVarint(5<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.TableMetadata))
	case *OfpOxmOfbField_EthDst:
		n += proto.SizeVarint(6<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.EthDst)))
		n += len(x.EthDst)
	case *OfpOxmOfbField_EthSrc:
		n += proto.SizeVarint(7<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.EthSrc)))
		n += len(x.EthSrc)
	case *OfpOxmOfbField_EthType:
		n += proto.SizeVarint(8<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.EthType))
	case *OfpOxmOfbField_VlanVid:
		n += proto.SizeVarint(9<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.VlanVid))
	case *OfpOxmOfbField_VlanPcp:
		n += proto.SizeVarint(10<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.VlanPcp))
	case *OfpOxmOfbField_IpDscp:
		n += proto.SizeVarint(11<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.IpDscp))
	case *OfpOxmOfbField_IpEcn:
		n += proto.SizeVarint(12<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.IpEcn))
	case *OfpOxmOfbField_IpProto:
		n += proto.SizeVarint(13<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.IpProto))
	case *OfpOxmOfbField_Ipv4Src:
		n += proto.SizeVarint(14<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Ipv4Src))
	case *OfpOxmOfbField_Ipv4Dst:
		n += proto.SizeVarint(15<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Ipv4Dst))
	case *OfpOxmOfbField_TcpSrc:
		n += proto.SizeVarint(16<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.TcpSrc))
	case *OfpOxmOfbField_TcpDst:
		n += proto.SizeVarint(17<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.TcpDst))
	case *OfpOxmOfbField_UdpSrc:
		n += proto.SizeVarint(18<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.UdpSrc))
	case *OfpOxmOfbField_UdpDst:
		n += proto.SizeVarint(19<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.UdpDst))
	case *OfpOxmOfbField_SctpSrc:
		n += proto.SizeVarint(20<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.SctpSrc))
	case *OfpOxmOfbField_SctpDst:
		n += proto.SizeVarint(21<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.SctpDst))
	case *OfpOxmOfbField_Icmpv4Type:
		n += proto.SizeVarint(22<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Icmpv4Type))
	case *OfpOxmOfbField_Icmpv4Code:
		n += proto.SizeVarint(23<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Icmpv4Code))
	case *OfpOxmOfbField_ArpOp:
		n += proto.SizeVarint(24<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.ArpOp))
	case *OfpOxmOfbField_ArpSpa:
		n += proto.SizeVarint(25<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.ArpSpa))
	case *OfpOxmOfbField_ArpTpa:
		n += proto.SizeVarint(26<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.ArpTpa))
	case *OfpOxmOfbField_ArpSha:
		n += proto.SizeVarint(27<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.ArpSha)))
		n += len(x.ArpSha)
	case *OfpOxmOfbField_ArpTha:
		n += proto.SizeVarint(28<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.ArpTha)))
		n += len(x.ArpTha)
	case *OfpOxmOfbField_Ipv6Src:
		n += proto.SizeVarint(29<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Ipv6Src)))
		n += len(x.Ipv6Src)
	case *OfpOxmOfbField_Ipv6Dst:
		n += proto.SizeVarint(30<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Ipv6Dst)))
		n += len(x.Ipv6Dst)
	case *OfpOxmOfbField_Ipv6Flabel:
		n += proto.SizeVarint(31<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Ipv6Flabel))
	case *OfpOxmOfbField_Icmpv6Type:
		n += proto.SizeVarint(32<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Icmpv6Type))
	case *OfpOxmOfbField_Icmpv6Code:
		n += proto.SizeVarint(33<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Icmpv6Code))
	case *OfpOxmOfbField_Ipv6NdTarget:
		n += proto.SizeVarint(34<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Ipv6NdTarget)))
		n += len(x.Ipv6NdTarget)
	case *OfpOxmOfbField_Ipv6NdSsl:
		n += proto.SizeVarint(35<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Ipv6NdSsl)))
		n += len(x.Ipv6NdSsl)
	case *OfpOxmOfbField_Ipv6NdTll:
		n += proto.SizeVarint(36<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Ipv6NdTll)))
		n += len(x.Ipv6NdTll)
	case *OfpOxmOfbField_MplsLabel:
		n += proto.SizeVarint(37<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.MplsLabel))
	case *OfpOxmOfbField_MplsTc:
		n += proto.SizeVarint(38<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.MplsTc))
	case *OfpOxmOfbField_MplsBos:
		n += proto.SizeVarint(39<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.MplsBos))
	case *OfpOxmOfbField_PbbIsid:
		n += proto.SizeVarint(40<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.PbbIsid))
	case *OfpOxmOfbField_TunnelId:
		n += proto.SizeVarint(41<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.TunnelId))
	case *OfpOxmOfbField_Ipv6Exthdr:
		n += proto.SizeVarint(42<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Ipv6Exthdr))
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	// mask
	switch x := m.Mask.(type) {
	case *OfpOxmOfbField_TableMetadataMask:
		n += proto.SizeVarint(105<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.TableMetadataMask))
	case *OfpOxmOfbField_EthDstMask:
		n += proto.SizeVarint(106<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.EthDstMask)))
		n += len(x.EthDstMask)
	case *OfpOxmOfbField_EthSrcMask:
		n += proto.SizeVarint(107<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.EthSrcMask)))
		n += len(x.EthSrcMask)
	case *OfpOxmOfbField_VlanVidMask:
		n += proto.SizeVarint(109<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.VlanVidMask))
	case *OfpOxmOfbField_Ipv4SrcMask:
		n += proto.SizeVarint(114<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Ipv4SrcMask))
	case *OfpOxmOfbField_Ipv4DstMask:
		n += proto.SizeVarint(115<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Ipv4DstMask))
	case *OfpOxmOfbField_ArpSpaMask:
		n += proto.SizeVarint(125<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.ArpSpaMask))
	case *OfpOxmOfbField_ArpTpaMask:
		n += proto.SizeVarint(126<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.ArpTpaMask))
	case *OfpOxmOfbField_Ipv6SrcMask:
		n += proto.SizeVarint(129<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Ipv6SrcMask)))
		n += len(x.Ipv6SrcMask)
	case *OfpOxmOfbField_Ipv6DstMask:
		n += proto.SizeVarint(130<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Ipv6DstMask)))
		n += len(x.Ipv6DstMask)
	case *OfpOxmOfbField_Ipv6FlabelMask:
		n += proto.SizeVarint(131<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Ipv6FlabelMask))
	case *OfpOxmOfbField_PbbIsidMask:
		n += proto.SizeVarint(140<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.PbbIsidMask))
	case *OfpOxmOfbField_TunnelIdMask:
		n += proto.SizeVarint(141<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.TunnelIdMask))
	case *OfpOxmOfbField_Ipv6ExthdrMask:
		n += proto.SizeVarint(142<<3 | proto.WireVarint)
		n += proto.SizeVarint(uint64(x.Ipv6ExthdrMask))
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// Header for OXM experimenter match fields.
// The experimenter class should not use OXM_HEADER() macros for defining
// fields due to this extra header.
type OfpOxmExperimenterField struct {
	OxmHeader    uint32 `protobuf:"varint,1,opt,name=oxm_header,json=oxmHeader" json:"oxm_header,omitempty"`
	Experimenter uint32 `protobuf:"varint,2,opt,name=experimenter" json:"experimenter,omitempty"`
}

func (m *OfpOxmExperimenterField) Reset()                    { *m = OfpOxmExperimenterField{} }
func (m *OfpOxmExperimenterField) String() string            { return proto.CompactTextString(m) }
func (*OfpOxmExperimenterField) ProtoMessage()               {}
func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }

func (m *OfpOxmExperimenterField) GetOxmHeader() uint32 {
	if m != nil {
		return m.OxmHeader
	}
	return 0
}

func (m *OfpOxmExperimenterField) GetExperimenter() uint32 {
	if m != nil {
		return m.Experimenter
	}
	return 0
}

// Action header that is common to all actions.  The length includes the
// header and any padding used to make the action 64-bit aligned.
// NB: The length of an action *must* always be a multiple of eight.
type OfpAction struct {
	Type OfpActionType `protobuf:"varint,1,opt,name=type,enum=openflow_13.OfpActionType" json:"type,omitempty"`
	// Types that are valid to be assigned to Action:
	//	*OfpAction_Output
	//	*OfpAction_MplsTtl
	//	*OfpAction_Push
	//	*OfpAction_PopMpls
	//	*OfpAction_Group
	//	*OfpAction_NwTtl
	//	*OfpAction_SetField
	//	*OfpAction_Experimenter
	Action isOfpAction_Action `protobuf_oneof:"action"`
}

func (m *OfpAction) Reset()                    { *m = OfpAction{} }
func (m *OfpAction) String() string            { return proto.CompactTextString(m) }
func (*OfpAction) ProtoMessage()               {}
func (*OfpAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }

type isOfpAction_Action interface {
	isOfpAction_Action()
}

type OfpAction_Output struct {
	Output *OfpActionOutput `protobuf:"bytes,2,opt,name=output,oneof"`
}
type OfpAction_MplsTtl struct {
	MplsTtl *OfpActionMplsTtl `protobuf:"bytes,3,opt,name=mpls_ttl,json=mplsTtl,oneof"`
}
type OfpAction_Push struct {
	Push *OfpActionPush `protobuf:"bytes,4,opt,name=push,oneof"`
}
type OfpAction_PopMpls struct {
	PopMpls *OfpActionPopMpls `protobuf:"bytes,5,opt,name=pop_mpls,json=popMpls,oneof"`
}
type OfpAction_Group struct {
	Group *OfpActionGroup `protobuf:"bytes,6,opt,name=group,oneof"`
}
type OfpAction_NwTtl struct {
	NwTtl *OfpActionNwTtl `protobuf:"bytes,7,opt,name=nw_ttl,json=nwTtl,oneof"`
}
type OfpAction_SetField struct {
	SetField *OfpActionSetField `protobuf:"bytes,8,opt,name=set_field,json=setField,oneof"`
}
type OfpAction_Experimenter struct {
	Experimenter *OfpActionExperimenter `protobuf:"bytes,9,opt,name=experimenter,oneof"`
}

func (*OfpAction_Output) isOfpAction_Action()       {}
func (*OfpAction_MplsTtl) isOfpAction_Action()      {}
func (*OfpAction_Push) isOfpAction_Action()         {}
func (*OfpAction_PopMpls) isOfpAction_Action()      {}
func (*OfpAction_Group) isOfpAction_Action()        {}
func (*OfpAction_NwTtl) isOfpAction_Action()        {}
func (*OfpAction_SetField) isOfpAction_Action()     {}
func (*OfpAction_Experimenter) isOfpAction_Action() {}

func (m *OfpAction) GetAction() isOfpAction_Action {
	if m != nil {
		return m.Action
	}
	return nil
}

func (m *OfpAction) GetType() OfpActionType {
	if m != nil {
		return m.Type
	}
	return OfpActionType_OFPAT_OUTPUT
}

func (m *OfpAction) GetOutput() *OfpActionOutput {
	if x, ok := m.GetAction().(*OfpAction_Output); ok {
		return x.Output
	}
	return nil
}

func (m *OfpAction) GetMplsTtl() *OfpActionMplsTtl {
	if x, ok := m.GetAction().(*OfpAction_MplsTtl); ok {
		return x.MplsTtl
	}
	return nil
}

func (m *OfpAction) GetPush() *OfpActionPush {
	if x, ok := m.GetAction().(*OfpAction_Push); ok {
		return x.Push
	}
	return nil
}

func (m *OfpAction) GetPopMpls() *OfpActionPopMpls {
	if x, ok := m.GetAction().(*OfpAction_PopMpls); ok {
		return x.PopMpls
	}
	return nil
}

func (m *OfpAction) GetGroup() *OfpActionGroup {
	if x, ok := m.GetAction().(*OfpAction_Group); ok {
		return x.Group
	}
	return nil
}

func (m *OfpAction) GetNwTtl() *OfpActionNwTtl {
	if x, ok := m.GetAction().(*OfpAction_NwTtl); ok {
		return x.NwTtl
	}
	return nil
}

func (m *OfpAction) GetSetField() *OfpActionSetField {
	if x, ok := m.GetAction().(*OfpAction_SetField); ok {
		return x.SetField
	}
	return nil
}

func (m *OfpAction) GetExperimenter() *OfpActionExperimenter {
	if x, ok := m.GetAction().(*OfpAction_Experimenter); ok {
		return x.Experimenter
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*OfpAction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _OfpAction_OneofMarshaler, _OfpAction_OneofUnmarshaler, _OfpAction_OneofSizer, []interface{}{
		(*OfpAction_Output)(nil),
		(*OfpAction_MplsTtl)(nil),
		(*OfpAction_Push)(nil),
		(*OfpAction_PopMpls)(nil),
		(*OfpAction_Group)(nil),
		(*OfpAction_NwTtl)(nil),
		(*OfpAction_SetField)(nil),
		(*OfpAction_Experimenter)(nil),
	}
}

func _OfpAction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*OfpAction)
	// action
	switch x := m.Action.(type) {
	case *OfpAction_Output:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Output); err != nil {
			return err
		}
	case *OfpAction_MplsTtl:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.MplsTtl); err != nil {
			return err
		}
	case *OfpAction_Push:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Push); err != nil {
			return err
		}
	case *OfpAction_PopMpls:
		b.EncodeVarint(5<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.PopMpls); err != nil {
			return err
		}
	case *OfpAction_Group:
		b.EncodeVarint(6<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Group); err != nil {
			return err
		}
	case *OfpAction_NwTtl:
		b.EncodeVarint(7<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.NwTtl); err != nil {
			return err
		}
	case *OfpAction_SetField:
		b.EncodeVarint(8<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.SetField); err != nil {
			return err
		}
	case *OfpAction_Experimenter:
		b.EncodeVarint(9<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Experimenter); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("OfpAction.Action has unexpected type %T", x)
	}
	return nil
}

func _OfpAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*OfpAction)
	switch tag {
	case 2: // action.output
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpActionOutput)
		err := b.DecodeMessage(msg)
		m.Action = &OfpAction_Output{msg}
		return true, err
	case 3: // action.mpls_ttl
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpActionMplsTtl)
		err := b.DecodeMessage(msg)
		m.Action = &OfpAction_MplsTtl{msg}
		return true, err
	case 4: // action.push
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpActionPush)
		err := b.DecodeMessage(msg)
		m.Action = &OfpAction_Push{msg}
		return true, err
	case 5: // action.pop_mpls
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpActionPopMpls)
		err := b.DecodeMessage(msg)
		m.Action = &OfpAction_PopMpls{msg}
		return true, err
	case 6: // action.group
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpActionGroup)
		err := b.DecodeMessage(msg)
		m.Action = &OfpAction_Group{msg}
		return true, err
	case 7: // action.nw_ttl
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpActionNwTtl)
		err := b.DecodeMessage(msg)
		m.Action = &OfpAction_NwTtl{msg}
		return true, err
	case 8: // action.set_field
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpActionSetField)
		err := b.DecodeMessage(msg)
		m.Action = &OfpAction_SetField{msg}
		return true, err
	case 9: // action.experimenter
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpActionExperimenter)
		err := b.DecodeMessage(msg)
		m.Action = &OfpAction_Experimenter{msg}
		return true, err
	default:
		return false, nil
	}
}

func _OfpAction_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*OfpAction)
	// action
	switch x := m.Action.(type) {
	case *OfpAction_Output:
		s := proto.Size(x.Output)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpAction_MplsTtl:
		s := proto.Size(x.MplsTtl)
		n += proto.SizeVarint(3<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpAction_Push:
		s := proto.Size(x.Push)
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpAction_PopMpls:
		s := proto.Size(x.PopMpls)
		n += proto.SizeVarint(5<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpAction_Group:
		s := proto.Size(x.Group)
		n += proto.SizeVarint(6<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpAction_NwTtl:
		s := proto.Size(x.NwTtl)
		n += proto.SizeVarint(7<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpAction_SetField:
		s := proto.Size(x.SetField)
		n += proto.SizeVarint(8<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpAction_Experimenter:
		s := proto.Size(x.Experimenter)
		n += proto.SizeVarint(9<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
// When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
// number of bytes to send.  A 'max_len' of zero means no bytes of the
// packet should be sent. A 'max_len' of OFPCML_NO_BUFFER means that
// the packet is not buffered and the complete packet is to be sent to
// the controller.
type OfpActionOutput struct {
	Port   uint32 `protobuf:"varint,1,opt,name=port" json:"port,omitempty"`
	MaxLen uint32 `protobuf:"varint,2,opt,name=max_len,json=maxLen" json:"max_len,omitempty"`
}

func (m *OfpActionOutput) Reset()                    { *m = OfpActionOutput{} }
func (m *OfpActionOutput) String() string            { return proto.CompactTextString(m) }
func (*OfpActionOutput) ProtoMessage()               {}
func (*OfpActionOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }

func (m *OfpActionOutput) GetPort() uint32 {
	if m != nil {
		return m.Port
	}
	return 0
}

func (m *OfpActionOutput) GetMaxLen() uint32 {
	if m != nil {
		return m.MaxLen
	}
	return 0
}

// Action structure for OFPAT_SET_MPLS_TTL.
type OfpActionMplsTtl struct {
	MplsTtl uint32 `protobuf:"varint,1,opt,name=mpls_ttl,json=mplsTtl" json:"mpls_ttl,omitempty"`
}

func (m *OfpActionMplsTtl) Reset()                    { *m = OfpActionMplsTtl{} }
func (m *OfpActionMplsTtl) String() string            { return proto.CompactTextString(m) }
func (*OfpActionMplsTtl) ProtoMessage()               {}
func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }

func (m *OfpActionMplsTtl) GetMplsTtl() uint32 {
	if m != nil {
		return m.MplsTtl
	}
	return 0
}

// Action structure for OFPAT_PUSH_VLAN/MPLS/PBB.
type OfpActionPush struct {
	Ethertype uint32 `protobuf:"varint,1,opt,name=ethertype" json:"ethertype,omitempty"`
}

func (m *OfpActionPush) Reset()                    { *m = OfpActionPush{} }
func (m *OfpActionPush) String() string            { return proto.CompactTextString(m) }
func (*OfpActionPush) ProtoMessage()               {}
func (*OfpActionPush) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }

func (m *OfpActionPush) GetEthertype() uint32 {
	if m != nil {
		return m.Ethertype
	}
	return 0
}

// Action structure for OFPAT_POP_MPLS.
type OfpActionPopMpls struct {
	Ethertype uint32 `protobuf:"varint,1,opt,name=ethertype" json:"ethertype,omitempty"`
}

func (m *OfpActionPopMpls) Reset()                    { *m = OfpActionPopMpls{} }
func (m *OfpActionPopMpls) String() string            { return proto.CompactTextString(m) }
func (*OfpActionPopMpls) ProtoMessage()               {}
func (*OfpActionPopMpls) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }

func (m *OfpActionPopMpls) GetEthertype() uint32 {
	if m != nil {
		return m.Ethertype
	}
	return 0
}

// Action structure for OFPAT_GROUP.
type OfpActionGroup struct {
	GroupId uint32 `protobuf:"varint,1,opt,name=group_id,json=groupId" json:"group_id,omitempty"`
}

func (m *OfpActionGroup) Reset()                    { *m = OfpActionGroup{} }
func (m *OfpActionGroup) String() string            { return proto.CompactTextString(m) }
func (*OfpActionGroup) ProtoMessage()               {}
func (*OfpActionGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }

func (m *OfpActionGroup) GetGroupId() uint32 {
	if m != nil {
		return m.GroupId
	}
	return 0
}

// Action structure for OFPAT_SET_NW_TTL.
type OfpActionNwTtl struct {
	NwTtl uint32 `protobuf:"varint,1,opt,name=nw_ttl,json=nwTtl" json:"nw_ttl,omitempty"`
}

func (m *OfpActionNwTtl) Reset()                    { *m = OfpActionNwTtl{} }
func (m *OfpActionNwTtl) String() string            { return proto.CompactTextString(m) }
func (*OfpActionNwTtl) ProtoMessage()               {}
func (*OfpActionNwTtl) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }

func (m *OfpActionNwTtl) GetNwTtl() uint32 {
	if m != nil {
		return m.NwTtl
	}
	return 0
}

// Action structure for OFPAT_SET_FIELD.
type OfpActionSetField struct {
	Field *OfpOxmField `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"`
}

func (m *OfpActionSetField) Reset()                    { *m = OfpActionSetField{} }
func (m *OfpActionSetField) String() string            { return proto.CompactTextString(m) }
func (*OfpActionSetField) ProtoMessage()               {}
func (*OfpActionSetField) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }

func (m *OfpActionSetField) GetField() *OfpOxmField {
	if m != nil {
		return m.Field
	}
	return nil
}

// Action header for OFPAT_EXPERIMENTER.
// The rest of the body is experimenter-defined.
type OfpActionExperimenter struct {
	Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter" json:"experimenter,omitempty"`
	Data         []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
}

func (m *OfpActionExperimenter) Reset()                    { *m = OfpActionExperimenter{} }
func (m *OfpActionExperimenter) String() string            { return proto.CompactTextString(m) }
func (*OfpActionExperimenter) ProtoMessage()               {}
func (*OfpActionExperimenter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }

func (m *OfpActionExperimenter) GetExperimenter() uint32 {
	if m != nil {
		return m.Experimenter
	}
	return 0
}

func (m *OfpActionExperimenter) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

// Instruction header that is common to all instructions.  The length includes
// the header and any padding used to make the instruction 64-bit aligned.
// NB: The length of an instruction *must* always be a multiple of eight.
type OfpInstruction struct {
	Type uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	// Types that are valid to be assigned to Data:
	//	*OfpInstruction_GotoTable
	//	*OfpInstruction_WriteMetadata
	//	*OfpInstruction_Actions
	//	*OfpInstruction_Meter
	//	*OfpInstruction_Experimenter
	Data isOfpInstruction_Data `protobuf_oneof:"data"`
}

func (m *OfpInstruction) Reset()                    { *m = OfpInstruction{} }
func (m *OfpInstruction) String() string            { return proto.CompactTextString(m) }
func (*OfpInstruction) ProtoMessage()               {}
func (*OfpInstruction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }

type isOfpInstruction_Data interface {
	isOfpInstruction_Data()
}

type OfpInstruction_GotoTable struct {
	GotoTable *OfpInstructionGotoTable `protobuf:"bytes,2,opt,name=goto_table,json=gotoTable,oneof"`
}
type OfpInstruction_WriteMetadata struct {
	WriteMetadata *OfpInstructionWriteMetadata `protobuf:"bytes,3,opt,name=write_metadata,json=writeMetadata,oneof"`
}
type OfpInstruction_Actions struct {
	Actions *OfpInstructionActions `protobuf:"bytes,4,opt,name=actions,oneof"`
}
type OfpInstruction_Meter struct {
	Meter *OfpInstructionMeter `protobuf:"bytes,5,opt,name=meter,oneof"`
}
type OfpInstruction_Experimenter struct {
	Experimenter *OfpInstructionExperimenter `protobuf:"bytes,6,opt,name=experimenter,oneof"`
}

func (*OfpInstruction_GotoTable) isOfpInstruction_Data()     {}
func (*OfpInstruction_WriteMetadata) isOfpInstruction_Data() {}
func (*OfpInstruction_Actions) isOfpInstruction_Data()       {}
func (*OfpInstruction_Meter) isOfpInstruction_Data()         {}
func (*OfpInstruction_Experimenter) isOfpInstruction_Data()  {}

func (m *OfpInstruction) GetData() isOfpInstruction_Data {
	if m != nil {
		return m.Data
	}
	return nil
}

func (m *OfpInstruction) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *OfpInstruction) GetGotoTable() *OfpInstructionGotoTable {
	if x, ok := m.GetData().(*OfpInstruction_GotoTable); ok {
		return x.GotoTable
	}
	return nil
}

func (m *OfpInstruction) GetWriteMetadata() *OfpInstructionWriteMetadata {
	if x, ok := m.GetData().(*OfpInstruction_WriteMetadata); ok {
		return x.WriteMetadata
	}
	return nil
}

func (m *OfpInstruction) GetActions() *OfpInstructionActions {
	if x, ok := m.GetData().(*OfpInstruction_Actions); ok {
		return x.Actions
	}
	return nil
}

func (m *OfpInstruction) GetMeter() *OfpInstructionMeter {
	if x, ok := m.GetData().(*OfpInstruction_Meter); ok {
		return x.Meter
	}
	return nil
}

func (m *OfpInstruction) GetExperimenter() *OfpInstructionExperimenter {
	if x, ok := m.GetData().(*OfpInstruction_Experimenter); ok {
		return x.Experimenter
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*OfpInstruction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _OfpInstruction_OneofMarshaler, _OfpInstruction_OneofUnmarshaler, _OfpInstruction_OneofSizer, []interface{}{
		(*OfpInstruction_GotoTable)(nil),
		(*OfpInstruction_WriteMetadata)(nil),
		(*OfpInstruction_Actions)(nil),
		(*OfpInstruction_Meter)(nil),
		(*OfpInstruction_Experimenter)(nil),
	}
}

func _OfpInstruction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*OfpInstruction)
	// data
	switch x := m.Data.(type) {
	case *OfpInstruction_GotoTable:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.GotoTable); err != nil {
			return err
		}
	case *OfpInstruction_WriteMetadata:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.WriteMetadata); err != nil {
			return err
		}
	case *OfpInstruction_Actions:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Actions); err != nil {
			return err
		}
	case *OfpInstruction_Meter:
		b.EncodeVarint(5<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Meter); err != nil {
			return err
		}
	case *OfpInstruction_Experimenter:
		b.EncodeVarint(6<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Experimenter); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("OfpInstruction.Data has unexpected type %T", x)
	}
	return nil
}

func _OfpInstruction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*OfpInstruction)
	switch tag {
	case 2: // data.goto_table
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpInstructionGotoTable)
		err := b.DecodeMessage(msg)
		m.Data = &OfpInstruction_GotoTable{msg}
		return true, err
	case 3: // data.write_metadata
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpInstructionWriteMetadata)
		err := b.DecodeMessage(msg)
		m.Data = &OfpInstruction_WriteMetadata{msg}
		return true, err
	case 4: // data.actions
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpInstructionActions)
		err := b.DecodeMessage(msg)
		m.Data = &OfpInstruction_Actions{msg}
		return true, err
	case 5: // data.meter
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpInstructionMeter)
		err := b.DecodeMessage(msg)
		m.Data = &OfpInstruction_Meter{msg}
		return true, err
	case 6: // data.experimenter
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpInstructionExperimenter)
		err := b.DecodeMessage(msg)
		m.Data = &OfpInstruction_Experimenter{msg}
		return true, err
	default:
		return false, nil
	}
}

func _OfpInstruction_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*OfpInstruction)
	// data
	switch x := m.Data.(type) {
	case *OfpInstruction_GotoTable:
		s := proto.Size(x.GotoTable)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpInstruction_WriteMetadata:
		s := proto.Size(x.WriteMetadata)
		n += proto.SizeVarint(3<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpInstruction_Actions:
		s := proto.Size(x.Actions)
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpInstruction_Meter:
		s := proto.Size(x.Meter)
		n += proto.SizeVarint(5<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpInstruction_Experimenter:
		s := proto.Size(x.Experimenter)
		n += proto.SizeVarint(6<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// Instruction structure for OFPIT_GOTO_TABLE
type OfpInstructionGotoTable struct {
	TableId uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
}

func (m *OfpInstructionGotoTable) Reset()                    { *m = OfpInstructionGotoTable{} }
func (m *OfpInstructionGotoTable) String() string            { return proto.CompactTextString(m) }
func (*OfpInstructionGotoTable) ProtoMessage()               {}
func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }

func (m *OfpInstructionGotoTable) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

// Instruction structure for OFPIT_WRITE_METADATA
type OfpInstructionWriteMetadata struct {
	Metadata     uint64 `protobuf:"varint,1,opt,name=metadata" json:"metadata,omitempty"`
	MetadataMask uint64 `protobuf:"varint,2,opt,name=metadata_mask,json=metadataMask" json:"metadata_mask,omitempty"`
}

func (m *OfpInstructionWriteMetadata) Reset()                    { *m = OfpInstructionWriteMetadata{} }
func (m *OfpInstructionWriteMetadata) String() string            { return proto.CompactTextString(m) }
func (*OfpInstructionWriteMetadata) ProtoMessage()               {}
func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }

func (m *OfpInstructionWriteMetadata) GetMetadata() uint64 {
	if m != nil {
		return m.Metadata
	}
	return 0
}

func (m *OfpInstructionWriteMetadata) GetMetadataMask() uint64 {
	if m != nil {
		return m.MetadataMask
	}
	return 0
}

// Instruction structure for OFPIT_WRITE/APPLY/CLEAR_ACTIONS
type OfpInstructionActions struct {
	Actions []*OfpAction `protobuf:"bytes,1,rep,name=actions" json:"actions,omitempty"`
}

func (m *OfpInstructionActions) Reset()                    { *m = OfpInstructionActions{} }
func (m *OfpInstructionActions) String() string            { return proto.CompactTextString(m) }
func (*OfpInstructionActions) ProtoMessage()               {}
func (*OfpInstructionActions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }

func (m *OfpInstructionActions) GetActions() []*OfpAction {
	if m != nil {
		return m.Actions
	}
	return nil
}

// Instruction structure for OFPIT_METER
type OfpInstructionMeter struct {
	MeterId uint32 `protobuf:"varint,1,opt,name=meter_id,json=meterId" json:"meter_id,omitempty"`
}

func (m *OfpInstructionMeter) Reset()                    { *m = OfpInstructionMeter{} }
func (m *OfpInstructionMeter) String() string            { return proto.CompactTextString(m) }
func (*OfpInstructionMeter) ProtoMessage()               {}
func (*OfpInstructionMeter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }

func (m *OfpInstructionMeter) GetMeterId() uint32 {
	if m != nil {
		return m.MeterId
	}
	return 0
}

// Instruction structure for experimental instructions
type OfpInstructionExperimenter struct {
	Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter" json:"experimenter,omitempty"`
	// Experimenter-defined arbitrary additional data.
	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
}

func (m *OfpInstructionExperimenter) Reset()                    { *m = OfpInstructionExperimenter{} }
func (m *OfpInstructionExperimenter) String() string            { return proto.CompactTextString(m) }
func (*OfpInstructionExperimenter) ProtoMessage()               {}
func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }

func (m *OfpInstructionExperimenter) GetExperimenter() uint32 {
	if m != nil {
		return m.Experimenter
	}
	return 0
}

func (m *OfpInstructionExperimenter) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

// Flow setup and teardown (controller -> datapath).
type OfpFlowMod struct {
	// ofp_header header;
	Cookie       uint64            `protobuf:"varint,1,opt,name=cookie" json:"cookie,omitempty"`
	CookieMask   uint64            `protobuf:"varint,2,opt,name=cookie_mask,json=cookieMask" json:"cookie_mask,omitempty"`
	TableId      uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
	Command      OfpFlowModCommand `protobuf:"varint,4,opt,name=command,enum=openflow_13.OfpFlowModCommand" json:"command,omitempty"`
	IdleTimeout  uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout" json:"idle_timeout,omitempty"`
	HardTimeout  uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout" json:"hard_timeout,omitempty"`
	Priority     uint32            `protobuf:"varint,7,opt,name=priority" json:"priority,omitempty"`
	BufferId     uint32            `protobuf:"varint,8,opt,name=buffer_id,json=bufferId" json:"buffer_id,omitempty"`
	OutPort      uint32            `protobuf:"varint,9,opt,name=out_port,json=outPort" json:"out_port,omitempty"`
	OutGroup     uint32            `protobuf:"varint,10,opt,name=out_group,json=outGroup" json:"out_group,omitempty"`
	Flags        uint32            `protobuf:"varint,11,opt,name=flags" json:"flags,omitempty"`
	Match        *OfpMatch         `protobuf:"bytes,12,opt,name=match" json:"match,omitempty"`
	Instructions []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions" json:"instructions,omitempty"`
}

func (m *OfpFlowMod) Reset()                    { *m = OfpFlowMod{} }
func (m *OfpFlowMod) String() string            { return proto.CompactTextString(m) }
func (*OfpFlowMod) ProtoMessage()               {}
func (*OfpFlowMod) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }

func (m *OfpFlowMod) GetCookie() uint64 {
	if m != nil {
		return m.Cookie
	}
	return 0
}

func (m *OfpFlowMod) GetCookieMask() uint64 {
	if m != nil {
		return m.CookieMask
	}
	return 0
}

func (m *OfpFlowMod) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

func (m *OfpFlowMod) GetCommand() OfpFlowModCommand {
	if m != nil {
		return m.Command
	}
	return OfpFlowModCommand_OFPFC_ADD
}

func (m *OfpFlowMod) GetIdleTimeout() uint32 {
	if m != nil {
		return m.IdleTimeout
	}
	return 0
}

func (m *OfpFlowMod) GetHardTimeout() uint32 {
	if m != nil {
		return m.HardTimeout
	}
	return 0
}

func (m *OfpFlowMod) GetPriority() uint32 {
	if m != nil {
		return m.Priority
	}
	return 0
}

func (m *OfpFlowMod) GetBufferId() uint32 {
	if m != nil {
		return m.BufferId
	}
	return 0
}

func (m *OfpFlowMod) GetOutPort() uint32 {
	if m != nil {
		return m.OutPort
	}
	return 0
}

func (m *OfpFlowMod) GetOutGroup() uint32 {
	if m != nil {
		return m.OutGroup
	}
	return 0
}

func (m *OfpFlowMod) GetFlags() uint32 {
	if m != nil {
		return m.Flags
	}
	return 0
}

func (m *OfpFlowMod) GetMatch() *OfpMatch {
	if m != nil {
		return m.Match
	}
	return nil
}

func (m *OfpFlowMod) GetInstructions() []*OfpInstruction {
	if m != nil {
		return m.Instructions
	}
	return nil
}

// Bucket for use in groups.
type OfpBucket struct {
	Weight     uint32       `protobuf:"varint,1,opt,name=weight" json:"weight,omitempty"`
	WatchPort  uint32       `protobuf:"varint,2,opt,name=watch_port,json=watchPort" json:"watch_port,omitempty"`
	WatchGroup uint32       `protobuf:"varint,3,opt,name=watch_group,json=watchGroup" json:"watch_group,omitempty"`
	Actions    []*OfpAction `protobuf:"bytes,4,rep,name=actions" json:"actions,omitempty"`
}

func (m *OfpBucket) Reset()                    { *m = OfpBucket{} }
func (m *OfpBucket) String() string            { return proto.CompactTextString(m) }
func (*OfpBucket) ProtoMessage()               {}
func (*OfpBucket) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }

func (m *OfpBucket) GetWeight() uint32 {
	if m != nil {
		return m.Weight
	}
	return 0
}

func (m *OfpBucket) GetWatchPort() uint32 {
	if m != nil {
		return m.WatchPort
	}
	return 0
}

func (m *OfpBucket) GetWatchGroup() uint32 {
	if m != nil {
		return m.WatchGroup
	}
	return 0
}

func (m *OfpBucket) GetActions() []*OfpAction {
	if m != nil {
		return m.Actions
	}
	return nil
}

// Group setup and teardown (controller -> datapath).
type OfpGroupMod struct {
	// ofp_header header;
	Command OfpGroupModCommand `protobuf:"varint,1,opt,name=command,enum=openflow_13.OfpGroupModCommand" json:"command,omitempty"`
	Type    OfpGroupType       `protobuf:"varint,2,opt,name=type,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
	GroupId uint32             `protobuf:"varint,3,opt,name=group_id,json=groupId" json:"group_id,omitempty"`
	Buckets []*OfpBucket       `protobuf:"bytes,4,rep,name=buckets" json:"buckets,omitempty"`
}

func (m *OfpGroupMod) Reset()                    { *m = OfpGroupMod{} }
func (m *OfpGroupMod) String() string            { return proto.CompactTextString(m) }
func (*OfpGroupMod) ProtoMessage()               {}
func (*OfpGroupMod) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }

func (m *OfpGroupMod) GetCommand() OfpGroupModCommand {
	if m != nil {
		return m.Command
	}
	return OfpGroupModCommand_OFPGC_ADD
}

func (m *OfpGroupMod) GetType() OfpGroupType {
	if m != nil {
		return m.Type
	}
	return OfpGroupType_OFPGT_ALL
}

func (m *OfpGroupMod) GetGroupId() uint32 {
	if m != nil {
		return m.GroupId
	}
	return 0
}

func (m *OfpGroupMod) GetBuckets() []*OfpBucket {
	if m != nil {
		return m.Buckets
	}
	return nil
}

// Send packet (controller -> datapath).
type OfpPacketOut struct {
	// ofp_header header;
	BufferId uint32       `protobuf:"varint,1,opt,name=buffer_id,json=bufferId" json:"buffer_id,omitempty"`
	InPort   uint32       `protobuf:"varint,2,opt,name=in_port,json=inPort" json:"in_port,omitempty"`
	Actions  []*OfpAction `protobuf:"bytes,3,rep,name=actions" json:"actions,omitempty"`
	// The variable size action list is optionally followed by packet data.
	// This data is only present and meaningful if buffer_id == -1.
	Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
}

func (m *OfpPacketOut) Reset()                    { *m = OfpPacketOut{} }
func (m *OfpPacketOut) String() string            { return proto.CompactTextString(m) }
func (*OfpPacketOut) ProtoMessage()               {}
func (*OfpPacketOut) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }

func (m *OfpPacketOut) GetBufferId() uint32 {
	if m != nil {
		return m.BufferId
	}
	return 0
}

func (m *OfpPacketOut) GetInPort() uint32 {
	if m != nil {
		return m.InPort
	}
	return 0
}

func (m *OfpPacketOut) GetActions() []*OfpAction {
	if m != nil {
		return m.Actions
	}
	return nil
}

func (m *OfpPacketOut) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

// Packet received on port (datapath -> controller).
type OfpPacketIn struct {
	// ofp_header header;
	BufferId uint32            `protobuf:"varint,1,opt,name=buffer_id,json=bufferId" json:"buffer_id,omitempty"`
	Reason   OfpPacketInReason `protobuf:"varint,2,opt,name=reason,enum=openflow_13.OfpPacketInReason" json:"reason,omitempty"`
	TableId  uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
	Cookie   uint64            `protobuf:"varint,4,opt,name=cookie" json:"cookie,omitempty"`
	Match    *OfpMatch         `protobuf:"bytes,5,opt,name=match" json:"match,omitempty"`
	Data     []byte            `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`
}

func (m *OfpPacketIn) Reset()                    { *m = OfpPacketIn{} }
func (m *OfpPacketIn) String() string            { return proto.CompactTextString(m) }
func (*OfpPacketIn) ProtoMessage()               {}
func (*OfpPacketIn) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }

func (m *OfpPacketIn) GetBufferId() uint32 {
	if m != nil {
		return m.BufferId
	}
	return 0
}

func (m *OfpPacketIn) GetReason() OfpPacketInReason {
	if m != nil {
		return m.Reason
	}
	return OfpPacketInReason_OFPR_NO_MATCH
}

func (m *OfpPacketIn) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

func (m *OfpPacketIn) GetCookie() uint64 {
	if m != nil {
		return m.Cookie
	}
	return 0
}

func (m *OfpPacketIn) GetMatch() *OfpMatch {
	if m != nil {
		return m.Match
	}
	return nil
}

func (m *OfpPacketIn) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

// Flow removed (datapath -> controller).
type OfpFlowRemoved struct {
	// ofp_header header;
	Cookie       uint64               `protobuf:"varint,1,opt,name=cookie" json:"cookie,omitempty"`
	Priority     uint32               `protobuf:"varint,2,opt,name=priority" json:"priority,omitempty"`
	Reason       OfpFlowRemovedReason `protobuf:"varint,3,opt,name=reason,enum=openflow_13.OfpFlowRemovedReason" json:"reason,omitempty"`
	TableId      uint32               `protobuf:"varint,4,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
	DurationSec  uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
	DurationNsec uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec" json:"duration_nsec,omitempty"`
	IdleTimeout  uint32               `protobuf:"varint,7,opt,name=idle_timeout,json=idleTimeout" json:"idle_timeout,omitempty"`
	HardTimeout  uint32               `protobuf:"varint,8,opt,name=hard_timeout,json=hardTimeout" json:"hard_timeout,omitempty"`
	PacketCount  uint64               `protobuf:"varint,9,opt,name=packet_count,json=packetCount" json:"packet_count,omitempty"`
	ByteCount    uint64               `protobuf:"varint,10,opt,name=byte_count,json=byteCount" json:"byte_count,omitempty"`
	Match        *OfpMatch            `protobuf:"bytes,121,opt,name=match" json:"match,omitempty"`
}

func (m *OfpFlowRemoved) Reset()                    { *m = OfpFlowRemoved{} }
func (m *OfpFlowRemoved) String() string            { return proto.CompactTextString(m) }
func (*OfpFlowRemoved) ProtoMessage()               {}
func (*OfpFlowRemoved) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }

func (m *OfpFlowRemoved) GetCookie() uint64 {
	if m != nil {
		return m.Cookie
	}
	return 0
}

func (m *OfpFlowRemoved) GetPriority() uint32 {
	if m != nil {
		return m.Priority
	}
	return 0
}

func (m *OfpFlowRemoved) GetReason() OfpFlowRemovedReason {
	if m != nil {
		return m.Reason
	}
	return OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT
}

func (m *OfpFlowRemoved) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

func (m *OfpFlowRemoved) GetDurationSec() uint32 {
	if m != nil {
		return m.DurationSec
	}
	return 0
}

func (m *OfpFlowRemoved) GetDurationNsec() uint32 {
	if m != nil {
		return m.DurationNsec
	}
	return 0
}

func (m *OfpFlowRemoved) GetIdleTimeout() uint32 {
	if m != nil {
		return m.IdleTimeout
	}
	return 0
}

func (m *OfpFlowRemoved) GetHardTimeout() uint32 {
	if m != nil {
		return m.HardTimeout
	}
	return 0
}

func (m *OfpFlowRemoved) GetPacketCount() uint64 {
	if m != nil {
		return m.PacketCount
	}
	return 0
}

func (m *OfpFlowRemoved) GetByteCount() uint64 {
	if m != nil {
		return m.ByteCount
	}
	return 0
}

func (m *OfpFlowRemoved) GetMatch() *OfpMatch {
	if m != nil {
		return m.Match
	}
	return nil
}

// Common header for all meter bands
type OfpMeterBandHeader struct {
	Type      OfpMeterBandType `protobuf:"varint,1,opt,name=type,enum=openflow_13.OfpMeterBandType" json:"type,omitempty"`
	Len       uint32           `protobuf:"varint,2,opt,name=len" json:"len,omitempty"`
	Rate      uint32           `protobuf:"varint,3,opt,name=rate" json:"rate,omitempty"`
	BurstSize uint32           `protobuf:"varint,4,opt,name=burst_size,json=burstSize" json:"burst_size,omitempty"`
}

func (m *OfpMeterBandHeader) Reset()                    { *m = OfpMeterBandHeader{} }
func (m *OfpMeterBandHeader) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterBandHeader) ProtoMessage()               {}
func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }

func (m *OfpMeterBandHeader) GetType() OfpMeterBandType {
	if m != nil {
		return m.Type
	}
	return OfpMeterBandType_OFPMBT_INVALID
}

func (m *OfpMeterBandHeader) GetLen() uint32 {
	if m != nil {
		return m.Len
	}
	return 0
}

func (m *OfpMeterBandHeader) GetRate() uint32 {
	if m != nil {
		return m.Rate
	}
	return 0
}

func (m *OfpMeterBandHeader) GetBurstSize() uint32 {
	if m != nil {
		return m.BurstSize
	}
	return 0
}

// OFPMBT_DROP band - drop packets
type OfpMeterBandDrop struct {
	Type      uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Len       uint32 `protobuf:"varint,2,opt,name=len" json:"len,omitempty"`
	Rate      uint32 `protobuf:"varint,3,opt,name=rate" json:"rate,omitempty"`
	BurstSize uint32 `protobuf:"varint,4,opt,name=burst_size,json=burstSize" json:"burst_size,omitempty"`
}

func (m *OfpMeterBandDrop) Reset()                    { *m = OfpMeterBandDrop{} }
func (m *OfpMeterBandDrop) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterBandDrop) ProtoMessage()               {}
func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }

func (m *OfpMeterBandDrop) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *OfpMeterBandDrop) GetLen() uint32 {
	if m != nil {
		return m.Len
	}
	return 0
}

func (m *OfpMeterBandDrop) GetRate() uint32 {
	if m != nil {
		return m.Rate
	}
	return 0
}

func (m *OfpMeterBandDrop) GetBurstSize() uint32 {
	if m != nil {
		return m.BurstSize
	}
	return 0
}

// OFPMBT_DSCP_REMARK band - Remark DSCP in the IP header
type OfpMeterBandDscpRemark struct {
	Type      uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Len       uint32 `protobuf:"varint,2,opt,name=len" json:"len,omitempty"`
	Rate      uint32 `protobuf:"varint,3,opt,name=rate" json:"rate,omitempty"`
	BurstSize uint32 `protobuf:"varint,4,opt,name=burst_size,json=burstSize" json:"burst_size,omitempty"`
	PrecLevel uint32 `protobuf:"varint,5,opt,name=prec_level,json=precLevel" json:"prec_level,omitempty"`
}

func (m *OfpMeterBandDscpRemark) Reset()                    { *m = OfpMeterBandDscpRemark{} }
func (m *OfpMeterBandDscpRemark) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterBandDscpRemark) ProtoMessage()               {}
func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }

func (m *OfpMeterBandDscpRemark) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *OfpMeterBandDscpRemark) GetLen() uint32 {
	if m != nil {
		return m.Len
	}
	return 0
}

func (m *OfpMeterBandDscpRemark) GetRate() uint32 {
	if m != nil {
		return m.Rate
	}
	return 0
}

func (m *OfpMeterBandDscpRemark) GetBurstSize() uint32 {
	if m != nil {
		return m.BurstSize
	}
	return 0
}

func (m *OfpMeterBandDscpRemark) GetPrecLevel() uint32 {
	if m != nil {
		return m.PrecLevel
	}
	return 0
}

// OFPMBT_EXPERIMENTER band - Experimenter type.
// The rest of the band is experimenter-defined.
type OfpMeterBandExperimenter struct {
	Type         OfpMeterBandType `protobuf:"varint,1,opt,name=type,enum=openflow_13.OfpMeterBandType" json:"type,omitempty"`
	Len          uint32           `protobuf:"varint,2,opt,name=len" json:"len,omitempty"`
	Rate         uint32           `protobuf:"varint,3,opt,name=rate" json:"rate,omitempty"`
	BurstSize    uint32           `protobuf:"varint,4,opt,name=burst_size,json=burstSize" json:"burst_size,omitempty"`
	Experimenter uint32           `protobuf:"varint,5,opt,name=experimenter" json:"experimenter,omitempty"`
}

func (m *OfpMeterBandExperimenter) Reset()                    { *m = OfpMeterBandExperimenter{} }
func (m *OfpMeterBandExperimenter) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterBandExperimenter) ProtoMessage()               {}
func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }

func (m *OfpMeterBandExperimenter) GetType() OfpMeterBandType {
	if m != nil {
		return m.Type
	}
	return OfpMeterBandType_OFPMBT_INVALID
}

func (m *OfpMeterBandExperimenter) GetLen() uint32 {
	if m != nil {
		return m.Len
	}
	return 0
}

func (m *OfpMeterBandExperimenter) GetRate() uint32 {
	if m != nil {
		return m.Rate
	}
	return 0
}

func (m *OfpMeterBandExperimenter) GetBurstSize() uint32 {
	if m != nil {
		return m.BurstSize
	}
	return 0
}

func (m *OfpMeterBandExperimenter) GetExperimenter() uint32 {
	if m != nil {
		return m.Experimenter
	}
	return 0
}

// Meter configuration. OFPT_METER_MOD.
type OfpMeterMod struct {
	//    ofp_header   header = 1;
	Command OfpMeterModCommand    `protobuf:"varint,1,opt,name=command,enum=openflow_13.OfpMeterModCommand" json:"command,omitempty"`
	Flags   uint32                `protobuf:"varint,2,opt,name=flags" json:"flags,omitempty"`
	MeterId uint32                `protobuf:"varint,3,opt,name=meter_id,json=meterId" json:"meter_id,omitempty"`
	Bands   []*OfpMeterBandHeader `protobuf:"bytes,4,rep,name=bands" json:"bands,omitempty"`
}

func (m *OfpMeterMod) Reset()                    { *m = OfpMeterMod{} }
func (m *OfpMeterMod) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterMod) ProtoMessage()               {}
func (*OfpMeterMod) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }

func (m *OfpMeterMod) GetCommand() OfpMeterModCommand {
	if m != nil {
		return m.Command
	}
	return OfpMeterModCommand_OFPMC_ADD
}

func (m *OfpMeterMod) GetFlags() uint32 {
	if m != nil {
		return m.Flags
	}
	return 0
}

func (m *OfpMeterMod) GetMeterId() uint32 {
	if m != nil {
		return m.MeterId
	}
	return 0
}

func (m *OfpMeterMod) GetBands() []*OfpMeterBandHeader {
	if m != nil {
		return m.Bands
	}
	return nil
}

// OFPT_ERROR: Error message (datapath -> controller).
type OfpErrorMsg struct {
	// ofp_header header;
	Type uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Code uint32 `protobuf:"varint,2,opt,name=code" json:"code,omitempty"`
	Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

func (m *OfpErrorMsg) Reset()                    { *m = OfpErrorMsg{} }
func (m *OfpErrorMsg) String() string            { return proto.CompactTextString(m) }
func (*OfpErrorMsg) ProtoMessage()               {}
func (*OfpErrorMsg) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }

func (m *OfpErrorMsg) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *OfpErrorMsg) GetCode() uint32 {
	if m != nil {
		return m.Code
	}
	return 0
}

func (m *OfpErrorMsg) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

// OFPET_EXPERIMENTER: Error message (datapath -> controller).
type OfpErrorExperimenterMsg struct {
	Type         uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	ExpType      uint32 `protobuf:"varint,2,opt,name=exp_type,json=expType" json:"exp_type,omitempty"`
	Experimenter uint32 `protobuf:"varint,3,opt,name=experimenter" json:"experimenter,omitempty"`
	Data         []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
}

func (m *OfpErrorExperimenterMsg) Reset()                    { *m = OfpErrorExperimenterMsg{} }
func (m *OfpErrorExperimenterMsg) String() string            { return proto.CompactTextString(m) }
func (*OfpErrorExperimenterMsg) ProtoMessage()               {}
func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }

func (m *OfpErrorExperimenterMsg) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *OfpErrorExperimenterMsg) GetExpType() uint32 {
	if m != nil {
		return m.ExpType
	}
	return 0
}

func (m *OfpErrorExperimenterMsg) GetExperimenter() uint32 {
	if m != nil {
		return m.Experimenter
	}
	return 0
}

func (m *OfpErrorExperimenterMsg) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

type OfpMultipartRequest struct {
	// ofp_header header;
	Type  OfpMultipartType `protobuf:"varint,1,opt,name=type,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
	Flags uint32           `protobuf:"varint,2,opt,name=flags" json:"flags,omitempty"`
	Body  []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
}

func (m *OfpMultipartRequest) Reset()                    { *m = OfpMultipartRequest{} }
func (m *OfpMultipartRequest) String() string            { return proto.CompactTextString(m) }
func (*OfpMultipartRequest) ProtoMessage()               {}
func (*OfpMultipartRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }

func (m *OfpMultipartRequest) GetType() OfpMultipartType {
	if m != nil {
		return m.Type
	}
	return OfpMultipartType_OFPMP_DESC
}

func (m *OfpMultipartRequest) GetFlags() uint32 {
	if m != nil {
		return m.Flags
	}
	return 0
}

func (m *OfpMultipartRequest) GetBody() []byte {
	if m != nil {
		return m.Body
	}
	return nil
}

type OfpMultipartReply struct {
	// ofp_header header;
	Type  OfpMultipartType `protobuf:"varint,1,opt,name=type,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
	Flags uint32           `protobuf:"varint,2,opt,name=flags" json:"flags,omitempty"`
	Body  []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
}

func (m *OfpMultipartReply) Reset()                    { *m = OfpMultipartReply{} }
func (m *OfpMultipartReply) String() string            { return proto.CompactTextString(m) }
func (*OfpMultipartReply) ProtoMessage()               {}
func (*OfpMultipartReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }

func (m *OfpMultipartReply) GetType() OfpMultipartType {
	if m != nil {
		return m.Type
	}
	return OfpMultipartType_OFPMP_DESC
}

func (m *OfpMultipartReply) GetFlags() uint32 {
	if m != nil {
		return m.Flags
	}
	return 0
}

func (m *OfpMultipartReply) GetBody() []byte {
	if m != nil {
		return m.Body
	}
	return nil
}

// Body of reply to OFPMP_DESC request.  Each entry is a NULL-terminated
// ASCII string.
type OfpDesc struct {
	MfrDesc   string `protobuf:"bytes,1,opt,name=mfr_desc,json=mfrDesc" json:"mfr_desc,omitempty"`
	HwDesc    string `protobuf:"bytes,2,opt,name=hw_desc,json=hwDesc" json:"hw_desc,omitempty"`
	SwDesc    string `protobuf:"bytes,3,opt,name=sw_desc,json=swDesc" json:"sw_desc,omitempty"`
	SerialNum string `protobuf:"bytes,4,opt,name=serial_num,json=serialNum" json:"serial_num,omitempty"`
	DpDesc    string `protobuf:"bytes,5,opt,name=dp_desc,json=dpDesc" json:"dp_desc,omitempty"`
}

func (m *OfpDesc) Reset()                    { *m = OfpDesc{} }
func (m *OfpDesc) String() string            { return proto.CompactTextString(m) }
func (*OfpDesc) ProtoMessage()               {}
func (*OfpDesc) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }

func (m *OfpDesc) GetMfrDesc() string {
	if m != nil {
		return m.MfrDesc
	}
	return ""
}

func (m *OfpDesc) GetHwDesc() string {
	if m != nil {
		return m.HwDesc
	}
	return ""
}

func (m *OfpDesc) GetSwDesc() string {
	if m != nil {
		return m.SwDesc
	}
	return ""
}

func (m *OfpDesc) GetSerialNum() string {
	if m != nil {
		return m.SerialNum
	}
	return ""
}

func (m *OfpDesc) GetDpDesc() string {
	if m != nil {
		return m.DpDesc
	}
	return ""
}

// Body for ofp_multipart_request of type OFPMP_FLOW.
type OfpFlowStatsRequest struct {
	TableId    uint32    `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
	OutPort    uint32    `protobuf:"varint,2,opt,name=out_port,json=outPort" json:"out_port,omitempty"`
	OutGroup   uint32    `protobuf:"varint,3,opt,name=out_group,json=outGroup" json:"out_group,omitempty"`
	Cookie     uint64    `protobuf:"varint,4,opt,name=cookie" json:"cookie,omitempty"`
	CookieMask uint64    `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask" json:"cookie_mask,omitempty"`
	Match      *OfpMatch `protobuf:"bytes,6,opt,name=match" json:"match,omitempty"`
}

func (m *OfpFlowStatsRequest) Reset()                    { *m = OfpFlowStatsRequest{} }
func (m *OfpFlowStatsRequest) String() string            { return proto.CompactTextString(m) }
func (*OfpFlowStatsRequest) ProtoMessage()               {}
func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }

func (m *OfpFlowStatsRequest) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

func (m *OfpFlowStatsRequest) GetOutPort() uint32 {
	if m != nil {
		return m.OutPort
	}
	return 0
}

func (m *OfpFlowStatsRequest) GetOutGroup() uint32 {
	if m != nil {
		return m.OutGroup
	}
	return 0
}

func (m *OfpFlowStatsRequest) GetCookie() uint64 {
	if m != nil {
		return m.Cookie
	}
	return 0
}

func (m *OfpFlowStatsRequest) GetCookieMask() uint64 {
	if m != nil {
		return m.CookieMask
	}
	return 0
}

func (m *OfpFlowStatsRequest) GetMatch() *OfpMatch {
	if m != nil {
		return m.Match
	}
	return nil
}

// Body of reply to OFPMP_FLOW request.
type OfpFlowStats struct {
	Id           uint64            `protobuf:"varint,14,opt,name=id" json:"id,omitempty"`
	TableId      uint32            `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
	DurationSec  uint32            `protobuf:"varint,2,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
	DurationNsec uint32            `protobuf:"varint,3,opt,name=duration_nsec,json=durationNsec" json:"duration_nsec,omitempty"`
	Priority     uint32            `protobuf:"varint,4,opt,name=priority" json:"priority,omitempty"`
	IdleTimeout  uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout" json:"idle_timeout,omitempty"`
	HardTimeout  uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout" json:"hard_timeout,omitempty"`
	Flags        uint32            `protobuf:"varint,7,opt,name=flags" json:"flags,omitempty"`
	Cookie       uint64            `protobuf:"varint,8,opt,name=cookie" json:"cookie,omitempty"`
	PacketCount  uint64            `protobuf:"varint,9,opt,name=packet_count,json=packetCount" json:"packet_count,omitempty"`
	ByteCount    uint64            `protobuf:"varint,10,opt,name=byte_count,json=byteCount" json:"byte_count,omitempty"`
	Match        *OfpMatch         `protobuf:"bytes,12,opt,name=match" json:"match,omitempty"`
	Instructions []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions" json:"instructions,omitempty"`
}

func (m *OfpFlowStats) Reset()                    { *m = OfpFlowStats{} }
func (m *OfpFlowStats) String() string            { return proto.CompactTextString(m) }
func (*OfpFlowStats) ProtoMessage()               {}
func (*OfpFlowStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }

func (m *OfpFlowStats) GetId() uint64 {
	if m != nil {
		return m.Id
	}
	return 0
}

func (m *OfpFlowStats) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

func (m *OfpFlowStats) GetDurationSec() uint32 {
	if m != nil {
		return m.DurationSec
	}
	return 0
}

func (m *OfpFlowStats) GetDurationNsec() uint32 {
	if m != nil {
		return m.DurationNsec
	}
	return 0
}

func (m *OfpFlowStats) GetPriority() uint32 {
	if m != nil {
		return m.Priority
	}
	return 0
}

func (m *OfpFlowStats) GetIdleTimeout() uint32 {
	if m != nil {
		return m.IdleTimeout
	}
	return 0
}

func (m *OfpFlowStats) GetHardTimeout() uint32 {
	if m != nil {
		return m.HardTimeout
	}
	return 0
}

func (m *OfpFlowStats) GetFlags() uint32 {
	if m != nil {
		return m.Flags
	}
	return 0
}

func (m *OfpFlowStats) GetCookie() uint64 {
	if m != nil {
		return m.Cookie
	}
	return 0
}

func (m *OfpFlowStats) GetPacketCount() uint64 {
	if m != nil {
		return m.PacketCount
	}
	return 0
}

func (m *OfpFlowStats) GetByteCount() uint64 {
	if m != nil {
		return m.ByteCount
	}
	return 0
}

func (m *OfpFlowStats) GetMatch() *OfpMatch {
	if m != nil {
		return m.Match
	}
	return nil
}

func (m *OfpFlowStats) GetInstructions() []*OfpInstruction {
	if m != nil {
		return m.Instructions
	}
	return nil
}

// Body for ofp_multipart_request of type OFPMP_AGGREGATE.
type OfpAggregateStatsRequest struct {
	TableId    uint32    `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
	OutPort    uint32    `protobuf:"varint,2,opt,name=out_port,json=outPort" json:"out_port,omitempty"`
	OutGroup   uint32    `protobuf:"varint,3,opt,name=out_group,json=outGroup" json:"out_group,omitempty"`
	Cookie     uint64    `protobuf:"varint,4,opt,name=cookie" json:"cookie,omitempty"`
	CookieMask uint64    `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask" json:"cookie_mask,omitempty"`
	Match      *OfpMatch `protobuf:"bytes,6,opt,name=match" json:"match,omitempty"`
}

func (m *OfpAggregateStatsRequest) Reset()                    { *m = OfpAggregateStatsRequest{} }
func (m *OfpAggregateStatsRequest) String() string            { return proto.CompactTextString(m) }
func (*OfpAggregateStatsRequest) ProtoMessage()               {}
func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }

func (m *OfpAggregateStatsRequest) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

func (m *OfpAggregateStatsRequest) GetOutPort() uint32 {
	if m != nil {
		return m.OutPort
	}
	return 0
}

func (m *OfpAggregateStatsRequest) GetOutGroup() uint32 {
	if m != nil {
		return m.OutGroup
	}
	return 0
}

func (m *OfpAggregateStatsRequest) GetCookie() uint64 {
	if m != nil {
		return m.Cookie
	}
	return 0
}

func (m *OfpAggregateStatsRequest) GetCookieMask() uint64 {
	if m != nil {
		return m.CookieMask
	}
	return 0
}

func (m *OfpAggregateStatsRequest) GetMatch() *OfpMatch {
	if m != nil {
		return m.Match
	}
	return nil
}

// Body of reply to OFPMP_AGGREGATE request.
type OfpAggregateStatsReply struct {
	PacketCount uint64 `protobuf:"varint,1,opt,name=packet_count,json=packetCount" json:"packet_count,omitempty"`
	ByteCount   uint64 `protobuf:"varint,2,opt,name=byte_count,json=byteCount" json:"byte_count,omitempty"`
	FlowCount   uint32 `protobuf:"varint,3,opt,name=flow_count,json=flowCount" json:"flow_count,omitempty"`
}

func (m *OfpAggregateStatsReply) Reset()                    { *m = OfpAggregateStatsReply{} }
func (m *OfpAggregateStatsReply) String() string            { return proto.CompactTextString(m) }
func (*OfpAggregateStatsReply) ProtoMessage()               {}
func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }

func (m *OfpAggregateStatsReply) GetPacketCount() uint64 {
	if m != nil {
		return m.PacketCount
	}
	return 0
}

func (m *OfpAggregateStatsReply) GetByteCount() uint64 {
	if m != nil {
		return m.ByteCount
	}
	return 0
}

func (m *OfpAggregateStatsReply) GetFlowCount() uint32 {
	if m != nil {
		return m.FlowCount
	}
	return 0
}

// Common header for all Table Feature Properties
type OfpTableFeatureProperty struct {
	Type OfpTableFeaturePropType `protobuf:"varint,1,opt,name=type,enum=openflow_13.OfpTableFeaturePropType" json:"type,omitempty"`
	// Types that are valid to be assigned to Value:
	//	*OfpTableFeatureProperty_Instructions
	//	*OfpTableFeatureProperty_NextTables
	//	*OfpTableFeatureProperty_Actions
	//	*OfpTableFeatureProperty_Oxm
	//	*OfpTableFeatureProperty_Experimenter
	Value isOfpTableFeatureProperty_Value `protobuf_oneof:"value"`
}

func (m *OfpTableFeatureProperty) Reset()                    { *m = OfpTableFeatureProperty{} }
func (m *OfpTableFeatureProperty) String() string            { return proto.CompactTextString(m) }
func (*OfpTableFeatureProperty) ProtoMessage()               {}
func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }

type isOfpTableFeatureProperty_Value interface {
	isOfpTableFeatureProperty_Value()
}

type OfpTableFeatureProperty_Instructions struct {
	Instructions *OfpTableFeaturePropInstructions `protobuf:"bytes,2,opt,name=instructions,oneof"`
}
type OfpTableFeatureProperty_NextTables struct {
	NextTables *OfpTableFeaturePropNextTables `protobuf:"bytes,3,opt,name=next_tables,json=nextTables,oneof"`
}
type OfpTableFeatureProperty_Actions struct {
	Actions *OfpTableFeaturePropActions `protobuf:"bytes,4,opt,name=actions,oneof"`
}
type OfpTableFeatureProperty_Oxm struct {
	Oxm *OfpTableFeaturePropOxm `protobuf:"bytes,5,opt,name=oxm,oneof"`
}
type OfpTableFeatureProperty_Experimenter struct {
	Experimenter *OfpTableFeaturePropExperimenter `protobuf:"bytes,6,opt,name=experimenter,oneof"`
}

func (*OfpTableFeatureProperty_Instructions) isOfpTableFeatureProperty_Value() {}
func (*OfpTableFeatureProperty_NextTables) isOfpTableFeatureProperty_Value()   {}
func (*OfpTableFeatureProperty_Actions) isOfpTableFeatureProperty_Value()      {}
func (*OfpTableFeatureProperty_Oxm) isOfpTableFeatureProperty_Value()          {}
func (*OfpTableFeatureProperty_Experimenter) isOfpTableFeatureProperty_Value() {}

func (m *OfpTableFeatureProperty) GetValue() isOfpTableFeatureProperty_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *OfpTableFeatureProperty) GetType() OfpTableFeaturePropType {
	if m != nil {
		return m.Type
	}
	return OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS
}

func (m *OfpTableFeatureProperty) GetInstructions() *OfpTableFeaturePropInstructions {
	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Instructions); ok {
		return x.Instructions
	}
	return nil
}

func (m *OfpTableFeatureProperty) GetNextTables() *OfpTableFeaturePropNextTables {
	if x, ok := m.GetValue().(*OfpTableFeatureProperty_NextTables); ok {
		return x.NextTables
	}
	return nil
}

func (m *OfpTableFeatureProperty) GetActions() *OfpTableFeaturePropActions {
	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Actions); ok {
		return x.Actions
	}
	return nil
}

func (m *OfpTableFeatureProperty) GetOxm() *OfpTableFeaturePropOxm {
	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Oxm); ok {
		return x.Oxm
	}
	return nil
}

func (m *OfpTableFeatureProperty) GetExperimenter() *OfpTableFeaturePropExperimenter {
	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Experimenter); ok {
		return x.Experimenter
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*OfpTableFeatureProperty) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _OfpTableFeatureProperty_OneofMarshaler, _OfpTableFeatureProperty_OneofUnmarshaler, _OfpTableFeatureProperty_OneofSizer, []interface{}{
		(*OfpTableFeatureProperty_Instructions)(nil),
		(*OfpTableFeatureProperty_NextTables)(nil),
		(*OfpTableFeatureProperty_Actions)(nil),
		(*OfpTableFeatureProperty_Oxm)(nil),
		(*OfpTableFeatureProperty_Experimenter)(nil),
	}
}

func _OfpTableFeatureProperty_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*OfpTableFeatureProperty)
	// value
	switch x := m.Value.(type) {
	case *OfpTableFeatureProperty_Instructions:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Instructions); err != nil {
			return err
		}
	case *OfpTableFeatureProperty_NextTables:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.NextTables); err != nil {
			return err
		}
	case *OfpTableFeatureProperty_Actions:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Actions); err != nil {
			return err
		}
	case *OfpTableFeatureProperty_Oxm:
		b.EncodeVarint(5<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Oxm); err != nil {
			return err
		}
	case *OfpTableFeatureProperty_Experimenter:
		b.EncodeVarint(6<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Experimenter); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("OfpTableFeatureProperty.Value has unexpected type %T", x)
	}
	return nil
}

func _OfpTableFeatureProperty_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*OfpTableFeatureProperty)
	switch tag {
	case 2: // value.instructions
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpTableFeaturePropInstructions)
		err := b.DecodeMessage(msg)
		m.Value = &OfpTableFeatureProperty_Instructions{msg}
		return true, err
	case 3: // value.next_tables
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpTableFeaturePropNextTables)
		err := b.DecodeMessage(msg)
		m.Value = &OfpTableFeatureProperty_NextTables{msg}
		return true, err
	case 4: // value.actions
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpTableFeaturePropActions)
		err := b.DecodeMessage(msg)
		m.Value = &OfpTableFeatureProperty_Actions{msg}
		return true, err
	case 5: // value.oxm
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpTableFeaturePropOxm)
		err := b.DecodeMessage(msg)
		m.Value = &OfpTableFeatureProperty_Oxm{msg}
		return true, err
	case 6: // value.experimenter
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpTableFeaturePropExperimenter)
		err := b.DecodeMessage(msg)
		m.Value = &OfpTableFeatureProperty_Experimenter{msg}
		return true, err
	default:
		return false, nil
	}
}

func _OfpTableFeatureProperty_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*OfpTableFeatureProperty)
	// value
	switch x := m.Value.(type) {
	case *OfpTableFeatureProperty_Instructions:
		s := proto.Size(x.Instructions)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpTableFeatureProperty_NextTables:
		s := proto.Size(x.NextTables)
		n += proto.SizeVarint(3<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpTableFeatureProperty_Actions:
		s := proto.Size(x.Actions)
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpTableFeatureProperty_Oxm:
		s := proto.Size(x.Oxm)
		n += proto.SizeVarint(5<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *OfpTableFeatureProperty_Experimenter:
		s := proto.Size(x.Experimenter)
		n += proto.SizeVarint(6<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// Instructions property
type OfpTableFeaturePropInstructions struct {
	// One of OFPTFPT_INSTRUCTIONS,
	// OFPTFPT_INSTRUCTIONS_MISS.
	Instructions []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions" json:"instructions,omitempty"`
}

func (m *OfpTableFeaturePropInstructions) Reset()         { *m = OfpTableFeaturePropInstructions{} }
func (m *OfpTableFeaturePropInstructions) String() string { return proto.CompactTextString(m) }
func (*OfpTableFeaturePropInstructions) ProtoMessage()    {}
func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{50}
}

func (m *OfpTableFeaturePropInstructions) GetInstructions() []*OfpInstruction {
	if m != nil {
		return m.Instructions
	}
	return nil
}

// Next Tables property
type OfpTableFeaturePropNextTables struct {
	// One of OFPTFPT_NEXT_TABLES,
	// OFPTFPT_NEXT_TABLES_MISS.
	NextTableIds []uint32 `protobuf:"varint,1,rep,packed,name=next_table_ids,json=nextTableIds" json:"next_table_ids,omitempty"`
}

func (m *OfpTableFeaturePropNextTables) Reset()                    { *m = OfpTableFeaturePropNextTables{} }
func (m *OfpTableFeaturePropNextTables) String() string            { return proto.CompactTextString(m) }
func (*OfpTableFeaturePropNextTables) ProtoMessage()               {}
func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }

func (m *OfpTableFeaturePropNextTables) GetNextTableIds() []uint32 {
	if m != nil {
		return m.NextTableIds
	}
	return nil
}

// Actions property
type OfpTableFeaturePropActions struct {
	// One of OFPTFPT_WRITE_ACTIONS,
	// OFPTFPT_WRITE_ACTIONS_MISS,
	// OFPTFPT_APPLY_ACTIONS,
	// OFPTFPT_APPLY_ACTIONS_MISS.
	Actions []*OfpAction `protobuf:"bytes,1,rep,name=actions" json:"actions,omitempty"`
}

func (m *OfpTableFeaturePropActions) Reset()                    { *m = OfpTableFeaturePropActions{} }
func (m *OfpTableFeaturePropActions) String() string            { return proto.CompactTextString(m) }
func (*OfpTableFeaturePropActions) ProtoMessage()               {}
func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} }

func (m *OfpTableFeaturePropActions) GetActions() []*OfpAction {
	if m != nil {
		return m.Actions
	}
	return nil
}

// Match, Wildcard or Set-Field property
type OfpTableFeaturePropOxm struct {
	// TODO is this a uint32???
	OxmIds []uint32 `protobuf:"varint,3,rep,packed,name=oxm_ids,json=oxmIds" json:"oxm_ids,omitempty"`
}

func (m *OfpTableFeaturePropOxm) Reset()                    { *m = OfpTableFeaturePropOxm{} }
func (m *OfpTableFeaturePropOxm) String() string            { return proto.CompactTextString(m) }
func (*OfpTableFeaturePropOxm) ProtoMessage()               {}
func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} }

func (m *OfpTableFeaturePropOxm) GetOxmIds() []uint32 {
	if m != nil {
		return m.OxmIds
	}
	return nil
}

// Experimenter table feature property
type OfpTableFeaturePropExperimenter struct {
	// One of OFPTFPT_EXPERIMENTER,
	// OFPTFPT_EXPERIMENTER_MISS.
	Experimenter     uint32   `protobuf:"varint,2,opt,name=experimenter" json:"experimenter,omitempty"`
	ExpType          uint32   `protobuf:"varint,3,opt,name=exp_type,json=expType" json:"exp_type,omitempty"`
	ExperimenterData []uint32 `protobuf:"varint,4,rep,packed,name=experimenter_data,json=experimenterData" json:"experimenter_data,omitempty"`
}

func (m *OfpTableFeaturePropExperimenter) Reset()         { *m = OfpTableFeaturePropExperimenter{} }
func (m *OfpTableFeaturePropExperimenter) String() string { return proto.CompactTextString(m) }
func (*OfpTableFeaturePropExperimenter) ProtoMessage()    {}
func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{54}
}

func (m *OfpTableFeaturePropExperimenter) GetExperimenter() uint32 {
	if m != nil {
		return m.Experimenter
	}
	return 0
}

func (m *OfpTableFeaturePropExperimenter) GetExpType() uint32 {
	if m != nil {
		return m.ExpType
	}
	return 0
}

func (m *OfpTableFeaturePropExperimenter) GetExperimenterData() []uint32 {
	if m != nil {
		return m.ExperimenterData
	}
	return nil
}

// Body for ofp_multipart_request of type OFPMP_TABLE_FEATURES./
// Body of reply to OFPMP_TABLE_FEATURES request.
type OfpTableFeatures struct {
	TableId       uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
	Name          string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
	MetadataMatch uint64 `protobuf:"varint,3,opt,name=metadata_match,json=metadataMatch" json:"metadata_match,omitempty"`
	MetadataWrite uint64 `protobuf:"varint,4,opt,name=metadata_write,json=metadataWrite" json:"metadata_write,omitempty"`
	Config        uint32 `protobuf:"varint,5,opt,name=config" json:"config,omitempty"`
	MaxEntries    uint32 `protobuf:"varint,6,opt,name=max_entries,json=maxEntries" json:"max_entries,omitempty"`
	// Table Feature Property list
	Properties []*OfpTableFeatureProperty `protobuf:"bytes,7,rep,name=properties" json:"properties,omitempty"`
}

func (m *OfpTableFeatures) Reset()                    { *m = OfpTableFeatures{} }
func (m *OfpTableFeatures) String() string            { return proto.CompactTextString(m) }
func (*OfpTableFeatures) ProtoMessage()               {}
func (*OfpTableFeatures) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} }

func (m *OfpTableFeatures) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

func (m *OfpTableFeatures) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *OfpTableFeatures) GetMetadataMatch() uint64 {
	if m != nil {
		return m.MetadataMatch
	}
	return 0
}

func (m *OfpTableFeatures) GetMetadataWrite() uint64 {
	if m != nil {
		return m.MetadataWrite
	}
	return 0
}

func (m *OfpTableFeatures) GetConfig() uint32 {
	if m != nil {
		return m.Config
	}
	return 0
}

func (m *OfpTableFeatures) GetMaxEntries() uint32 {
	if m != nil {
		return m.MaxEntries
	}
	return 0
}

func (m *OfpTableFeatures) GetProperties() []*OfpTableFeatureProperty {
	if m != nil {
		return m.Properties
	}
	return nil
}

// Body of reply to OFPMP_TABLE request.
type OfpTableStats struct {
	TableId      uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
	ActiveCount  uint32 `protobuf:"varint,2,opt,name=active_count,json=activeCount" json:"active_count,omitempty"`
	LookupCount  uint64 `protobuf:"varint,3,opt,name=lookup_count,json=lookupCount" json:"lookup_count,omitempty"`
	MatchedCount uint64 `protobuf:"varint,4,opt,name=matched_count,json=matchedCount" json:"matched_count,omitempty"`
}

func (m *OfpTableStats) Reset()                    { *m = OfpTableStats{} }
func (m *OfpTableStats) String() string            { return proto.CompactTextString(m) }
func (*OfpTableStats) ProtoMessage()               {}
func (*OfpTableStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} }

func (m *OfpTableStats) GetTableId() uint32 {
	if m != nil {
		return m.TableId
	}
	return 0
}

func (m *OfpTableStats) GetActiveCount() uint32 {
	if m != nil {
		return m.ActiveCount
	}
	return 0
}

func (m *OfpTableStats) GetLookupCount() uint64 {
	if m != nil {
		return m.LookupCount
	}
	return 0
}

func (m *OfpTableStats) GetMatchedCount() uint64 {
	if m != nil {
		return m.MatchedCount
	}
	return 0
}

// Body for ofp_multipart_request of type OFPMP_PORT.
type OfpPortStatsRequest struct {
	PortNo uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo" json:"port_no,omitempty"`
}

func (m *OfpPortStatsRequest) Reset()                    { *m = OfpPortStatsRequest{} }
func (m *OfpPortStatsRequest) String() string            { return proto.CompactTextString(m) }
func (*OfpPortStatsRequest) ProtoMessage()               {}
func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} }

func (m *OfpPortStatsRequest) GetPortNo() uint32 {
	if m != nil {
		return m.PortNo
	}
	return 0
}

// Body of reply to OFPMP_PORT request. If a counter is unsupported, set
// the field to all ones.
type OfpPortStats struct {
	PortNo       uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo" json:"port_no,omitempty"`
	RxPackets    uint64 `protobuf:"varint,2,opt,name=rx_packets,json=rxPackets" json:"rx_packets,omitempty"`
	TxPackets    uint64 `protobuf:"varint,3,opt,name=tx_packets,json=txPackets" json:"tx_packets,omitempty"`
	RxBytes      uint64 `protobuf:"varint,4,opt,name=rx_bytes,json=rxBytes" json:"rx_bytes,omitempty"`
	TxBytes      uint64 `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes" json:"tx_bytes,omitempty"`
	RxDropped    uint64 `protobuf:"varint,6,opt,name=rx_dropped,json=rxDropped" json:"rx_dropped,omitempty"`
	TxDropped    uint64 `protobuf:"varint,7,opt,name=tx_dropped,json=txDropped" json:"tx_dropped,omitempty"`
	RxErrors     uint64 `protobuf:"varint,8,opt,name=rx_errors,json=rxErrors" json:"rx_errors,omitempty"`
	TxErrors     uint64 `protobuf:"varint,9,opt,name=tx_errors,json=txErrors" json:"tx_errors,omitempty"`
	RxFrameErr   uint64 `protobuf:"varint,10,opt,name=rx_frame_err,json=rxFrameErr" json:"rx_frame_err,omitempty"`
	RxOverErr    uint64 `protobuf:"varint,11,opt,name=rx_over_err,json=rxOverErr" json:"rx_over_err,omitempty"`
	RxCrcErr     uint64 `protobuf:"varint,12,opt,name=rx_crc_err,json=rxCrcErr" json:"rx_crc_err,omitempty"`
	Collisions   uint64 `protobuf:"varint,13,opt,name=collisions" json:"collisions,omitempty"`
	DurationSec  uint32 `protobuf:"varint,14,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
	DurationNsec uint32 `protobuf:"varint,15,opt,name=duration_nsec,json=durationNsec" json:"duration_nsec,omitempty"`
}

func (m *OfpPortStats) Reset()                    { *m = OfpPortStats{} }
func (m *OfpPortStats) String() string            { return proto.CompactTextString(m) }
func (*OfpPortStats) ProtoMessage()               {}
func (*OfpPortStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} }

func (m *OfpPortStats) GetPortNo() uint32 {
	if m != nil {
		return m.PortNo
	}
	return 0
}

func (m *OfpPortStats) GetRxPackets() uint64 {
	if m != nil {
		return m.RxPackets
	}
	return 0
}

func (m *OfpPortStats) GetTxPackets() uint64 {
	if m != nil {
		return m.TxPackets
	}
	return 0
}

func (m *OfpPortStats) GetRxBytes() uint64 {
	if m != nil {
		return m.RxBytes
	}
	return 0
}

func (m *OfpPortStats) GetTxBytes() uint64 {
	if m != nil {
		return m.TxBytes
	}
	return 0
}

func (m *OfpPortStats) GetRxDropped() uint64 {
	if m != nil {
		return m.RxDropped
	}
	return 0
}

func (m *OfpPortStats) GetTxDropped() uint64 {
	if m != nil {
		return m.TxDropped
	}
	return 0
}

func (m *OfpPortStats) GetRxErrors() uint64 {
	if m != nil {
		return m.RxErrors
	}
	return 0
}

func (m *OfpPortStats) GetTxErrors() uint64 {
	if m != nil {
		return m.TxErrors
	}
	return 0
}

func (m *OfpPortStats) GetRxFrameErr() uint64 {
	if m != nil {
		return m.RxFrameErr
	}
	return 0
}

func (m *OfpPortStats) GetRxOverErr() uint64 {
	if m != nil {
		return m.RxOverErr
	}
	return 0
}

func (m *OfpPortStats) GetRxCrcErr() uint64 {
	if m != nil {
		return m.RxCrcErr
	}
	return 0
}

func (m *OfpPortStats) GetCollisions() uint64 {
	if m != nil {
		return m.Collisions
	}
	return 0
}

func (m *OfpPortStats) GetDurationSec() uint32 {
	if m != nil {
		return m.DurationSec
	}
	return 0
}

func (m *OfpPortStats) GetDurationNsec() uint32 {
	if m != nil {
		return m.DurationNsec
	}
	return 0
}

// Body of OFPMP_GROUP request.
type OfpGroupStatsRequest struct {
	GroupId uint32 `protobuf:"varint,1,opt,name=group_id,json=groupId" json:"group_id,omitempty"`
}

func (m *OfpGroupStatsRequest) Reset()                    { *m = OfpGroupStatsRequest{} }
func (m *OfpGroupStatsRequest) String() string            { return proto.CompactTextString(m) }
func (*OfpGroupStatsRequest) ProtoMessage()               {}
func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} }

func (m *OfpGroupStatsRequest) GetGroupId() uint32 {
	if m != nil {
		return m.GroupId
	}
	return 0
}

// Used in group stats replies.
type OfpBucketCounter struct {
	PacketCount uint64 `protobuf:"varint,1,opt,name=packet_count,json=packetCount" json:"packet_count,omitempty"`
	ByteCount   uint64 `protobuf:"varint,2,opt,name=byte_count,json=byteCount" json:"byte_count,omitempty"`
}

func (m *OfpBucketCounter) Reset()                    { *m = OfpBucketCounter{} }
func (m *OfpBucketCounter) String() string            { return proto.CompactTextString(m) }
func (*OfpBucketCounter) ProtoMessage()               {}
func (*OfpBucketCounter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} }

func (m *OfpBucketCounter) GetPacketCount() uint64 {
	if m != nil {
		return m.PacketCount
	}
	return 0
}

func (m *OfpBucketCounter) GetByteCount() uint64 {
	if m != nil {
		return m.ByteCount
	}
	return 0
}

// Body of reply to OFPMP_GROUP request.
type OfpGroupStats struct {
	GroupId      uint32              `protobuf:"varint,1,opt,name=group_id,json=groupId" json:"group_id,omitempty"`
	RefCount     uint32              `protobuf:"varint,2,opt,name=ref_count,json=refCount" json:"ref_count,omitempty"`
	PacketCount  uint64              `protobuf:"varint,3,opt,name=packet_count,json=packetCount" json:"packet_count,omitempty"`
	ByteCount    uint64              `protobuf:"varint,4,opt,name=byte_count,json=byteCount" json:"byte_count,omitempty"`
	DurationSec  uint32              `protobuf:"varint,5,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
	DurationNsec uint32              `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec" json:"duration_nsec,omitempty"`
	BucketStats  []*OfpBucketCounter `protobuf:"bytes,7,rep,name=bucket_stats,json=bucketStats" json:"bucket_stats,omitempty"`
}

func (m *OfpGroupStats) Reset()                    { *m = OfpGroupStats{} }
func (m *OfpGroupStats) String() string            { return proto.CompactTextString(m) }
func (*OfpGroupStats) ProtoMessage()               {}
func (*OfpGroupStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} }

func (m *OfpGroupStats) GetGroupId() uint32 {
	if m != nil {
		return m.GroupId
	}
	return 0
}

func (m *OfpGroupStats) GetRefCount() uint32 {
	if m != nil {
		return m.RefCount
	}
	return 0
}

func (m *OfpGroupStats) GetPacketCount() uint64 {
	if m != nil {
		return m.PacketCount
	}
	return 0
}

func (m *OfpGroupStats) GetByteCount() uint64 {
	if m != nil {
		return m.ByteCount
	}
	return 0
}

func (m *OfpGroupStats) GetDurationSec() uint32 {
	if m != nil {
		return m.DurationSec
	}
	return 0
}

func (m *OfpGroupStats) GetDurationNsec() uint32 {
	if m != nil {
		return m.DurationNsec
	}
	return 0
}

func (m *OfpGroupStats) GetBucketStats() []*OfpBucketCounter {
	if m != nil {
		return m.BucketStats
	}
	return nil
}

// Body of reply to OFPMP_GROUP_DESC request.
type OfpGroupDesc struct {
	Type    OfpGroupType `protobuf:"varint,1,opt,name=type,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
	GroupId uint32       `protobuf:"varint,2,opt,name=group_id,json=groupId" json:"group_id,omitempty"`
	Buckets []*OfpBucket `protobuf:"bytes,3,rep,name=buckets" json:"buckets,omitempty"`
}

func (m *OfpGroupDesc) Reset()                    { *m = OfpGroupDesc{} }
func (m *OfpGroupDesc) String() string            { return proto.CompactTextString(m) }
func (*OfpGroupDesc) ProtoMessage()               {}
func (*OfpGroupDesc) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} }

func (m *OfpGroupDesc) GetType() OfpGroupType {
	if m != nil {
		return m.Type
	}
	return OfpGroupType_OFPGT_ALL
}

func (m *OfpGroupDesc) GetGroupId() uint32 {
	if m != nil {
		return m.GroupId
	}
	return 0
}

func (m *OfpGroupDesc) GetBuckets() []*OfpBucket {
	if m != nil {
		return m.Buckets
	}
	return nil
}

type OfpGroupEntry struct {
	Desc  *OfpGroupDesc  `protobuf:"bytes,1,opt,name=desc" json:"desc,omitempty"`
	Stats *OfpGroupStats `protobuf:"bytes,2,opt,name=stats" json:"stats,omitempty"`
}

func (m *OfpGroupEntry) Reset()                    { *m = OfpGroupEntry{} }
func (m *OfpGroupEntry) String() string            { return proto.CompactTextString(m) }
func (*OfpGroupEntry) ProtoMessage()               {}
func (*OfpGroupEntry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} }

func (m *OfpGroupEntry) GetDesc() *OfpGroupDesc {
	if m != nil {
		return m.Desc
	}
	return nil
}

func (m *OfpGroupEntry) GetStats() *OfpGroupStats {
	if m != nil {
		return m.Stats
	}
	return nil
}

// Body of reply to OFPMP_GROUP_FEATURES request. Group features.
type OfpGroupFeatures struct {
	Types        uint32   `protobuf:"varint,1,opt,name=types" json:"types,omitempty"`
	Capabilities uint32   `protobuf:"varint,2,opt,name=capabilities" json:"capabilities,omitempty"`
	MaxGroups    []uint32 `protobuf:"varint,3,rep,packed,name=max_groups,json=maxGroups" json:"max_groups,omitempty"`
	Actions      []uint32 `protobuf:"varint,4,rep,packed,name=actions" json:"actions,omitempty"`
}

func (m *OfpGroupFeatures) Reset()                    { *m = OfpGroupFeatures{} }
func (m *OfpGroupFeatures) String() string            { return proto.CompactTextString(m) }
func (*OfpGroupFeatures) ProtoMessage()               {}
func (*OfpGroupFeatures) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} }

func (m *OfpGroupFeatures) GetTypes() uint32 {
	if m != nil {
		return m.Types
	}
	return 0
}

func (m *OfpGroupFeatures) GetCapabilities() uint32 {
	if m != nil {
		return m.Capabilities
	}
	return 0
}

func (m *OfpGroupFeatures) GetMaxGroups() []uint32 {
	if m != nil {
		return m.MaxGroups
	}
	return nil
}

func (m *OfpGroupFeatures) GetActions() []uint32 {
	if m != nil {
		return m.Actions
	}
	return nil
}

// Body of OFPMP_METER and OFPMP_METER_CONFIG requests.
type OfpMeterMultipartRequest struct {
	MeterId uint32 `protobuf:"varint,1,opt,name=meter_id,json=meterId" json:"meter_id,omitempty"`
}

func (m *OfpMeterMultipartRequest) Reset()                    { *m = OfpMeterMultipartRequest{} }
func (m *OfpMeterMultipartRequest) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterMultipartRequest) ProtoMessage()               {}
func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} }

func (m *OfpMeterMultipartRequest) GetMeterId() uint32 {
	if m != nil {
		return m.MeterId
	}
	return 0
}

// Statistics for each meter band
type OfpMeterBandStats struct {
	PacketBandCount uint64 `protobuf:"varint,1,opt,name=packet_band_count,json=packetBandCount" json:"packet_band_count,omitempty"`
	ByteBandCount   uint64 `protobuf:"varint,2,opt,name=byte_band_count,json=byteBandCount" json:"byte_band_count,omitempty"`
}

func (m *OfpMeterBandStats) Reset()                    { *m = OfpMeterBandStats{} }
func (m *OfpMeterBandStats) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterBandStats) ProtoMessage()               {}
func (*OfpMeterBandStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} }

func (m *OfpMeterBandStats) GetPacketBandCount() uint64 {
	if m != nil {
		return m.PacketBandCount
	}
	return 0
}

func (m *OfpMeterBandStats) GetByteBandCount() uint64 {
	if m != nil {
		return m.ByteBandCount
	}
	return 0
}

// Body of reply to OFPMP_METER request. Meter statistics.
type OfpMeterStats struct {
	MeterId       uint32               `protobuf:"varint,1,opt,name=meter_id,json=meterId" json:"meter_id,omitempty"`
	FlowCount     uint32               `protobuf:"varint,2,opt,name=flow_count,json=flowCount" json:"flow_count,omitempty"`
	PacketInCount uint64               `protobuf:"varint,3,opt,name=packet_in_count,json=packetInCount" json:"packet_in_count,omitempty"`
	ByteInCount   uint64               `protobuf:"varint,4,opt,name=byte_in_count,json=byteInCount" json:"byte_in_count,omitempty"`
	DurationSec   uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
	DurationNsec  uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec" json:"duration_nsec,omitempty"`
	BandStats     []*OfpMeterBandStats `protobuf:"bytes,7,rep,name=band_stats,json=bandStats" json:"band_stats,omitempty"`
}

func (m *OfpMeterStats) Reset()                    { *m = OfpMeterStats{} }
func (m *OfpMeterStats) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterStats) ProtoMessage()               {}
func (*OfpMeterStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} }

func (m *OfpMeterStats) GetMeterId() uint32 {
	if m != nil {
		return m.MeterId
	}
	return 0
}

func (m *OfpMeterStats) GetFlowCount() uint32 {
	if m != nil {
		return m.FlowCount
	}
	return 0
}

func (m *OfpMeterStats) GetPacketInCount() uint64 {
	if m != nil {
		return m.PacketInCount
	}
	return 0
}

func (m *OfpMeterStats) GetByteInCount() uint64 {
	if m != nil {
		return m.ByteInCount
	}
	return 0
}

func (m *OfpMeterStats) GetDurationSec() uint32 {
	if m != nil {
		return m.DurationSec
	}
	return 0
}

func (m *OfpMeterStats) GetDurationNsec() uint32 {
	if m != nil {
		return m.DurationNsec
	}
	return 0
}

func (m *OfpMeterStats) GetBandStats() []*OfpMeterBandStats {
	if m != nil {
		return m.BandStats
	}
	return nil
}

// Body of reply to OFPMP_METER_CONFIG request. Meter configuration.
type OfpMeterConfig struct {
	Flags   uint32                `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"`
	MeterId uint32                `protobuf:"varint,2,opt,name=meter_id,json=meterId" json:"meter_id,omitempty"`
	Bands   []*OfpMeterBandHeader `protobuf:"bytes,3,rep,name=bands" json:"bands,omitempty"`
}

func (m *OfpMeterConfig) Reset()                    { *m = OfpMeterConfig{} }
func (m *OfpMeterConfig) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterConfig) ProtoMessage()               {}
func (*OfpMeterConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} }

func (m *OfpMeterConfig) GetFlags() uint32 {
	if m != nil {
		return m.Flags
	}
	return 0
}

func (m *OfpMeterConfig) GetMeterId() uint32 {
	if m != nil {
		return m.MeterId
	}
	return 0
}

func (m *OfpMeterConfig) GetBands() []*OfpMeterBandHeader {
	if m != nil {
		return m.Bands
	}
	return nil
}

// Body of reply to OFPMP_METER_FEATURES request. Meter features.
type OfpMeterFeatures struct {
	MaxMeter     uint32 `protobuf:"varint,1,opt,name=max_meter,json=maxMeter" json:"max_meter,omitempty"`
	BandTypes    uint32 `protobuf:"varint,2,opt,name=band_types,json=bandTypes" json:"band_types,omitempty"`
	Capabilities uint32 `protobuf:"varint,3,opt,name=capabilities" json:"capabilities,omitempty"`
	MaxBands     uint32 `protobuf:"varint,4,opt,name=max_bands,json=maxBands" json:"max_bands,omitempty"`
	MaxColor     uint32 `protobuf:"varint,5,opt,name=max_color,json=maxColor" json:"max_color,omitempty"`
}

func (m *OfpMeterFeatures) Reset()                    { *m = OfpMeterFeatures{} }
func (m *OfpMeterFeatures) String() string            { return proto.CompactTextString(m) }
func (*OfpMeterFeatures) ProtoMessage()               {}
func (*OfpMeterFeatures) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} }

func (m *OfpMeterFeatures) GetMaxMeter() uint32 {
	if m != nil {
		return m.MaxMeter
	}
	return 0
}

func (m *OfpMeterFeatures) GetBandTypes() uint32 {
	if m != nil {
		return m.BandTypes
	}
	return 0
}

func (m *OfpMeterFeatures) GetCapabilities() uint32 {
	if m != nil {
		return m.Capabilities
	}
	return 0
}

func (m *OfpMeterFeatures) GetMaxBands() uint32 {
	if m != nil {
		return m.MaxBands
	}
	return 0
}

func (m *OfpMeterFeatures) GetMaxColor() uint32 {
	if m != nil {
		return m.MaxColor
	}
	return 0
}

// Body for ofp_multipart_request/reply of type OFPMP_EXPERIMENTER.
type OfpExperimenterMultipartHeader struct {
	Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter" json:"experimenter,omitempty"`
	ExpType      uint32 `protobuf:"varint,2,opt,name=exp_type,json=expType" json:"exp_type,omitempty"`
	Data         []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

func (m *OfpExperimenterMultipartHeader) Reset()                    { *m = OfpExperimenterMultipartHeader{} }
func (m *OfpExperimenterMultipartHeader) String() string            { return proto.CompactTextString(m) }
func (*OfpExperimenterMultipartHeader) ProtoMessage()               {}
func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} }

func (m *OfpExperimenterMultipartHeader) GetExperimenter() uint32 {
	if m != nil {
		return m.Experimenter
	}
	return 0
}

func (m *OfpExperimenterMultipartHeader) GetExpType() uint32 {
	if m != nil {
		return m.ExpType
	}
	return 0
}

func (m *OfpExperimenterMultipartHeader) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

// Experimenter extension.
type OfpExperimenterHeader struct {
	// ofp_header header;  /* Type OFPT_EXPERIMENTER. */
	Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter" json:"experimenter,omitempty"`
	ExpType      uint32 `protobuf:"varint,2,opt,name=exp_type,json=expType" json:"exp_type,omitempty"`
	Data         []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

func (m *OfpExperimenterHeader) Reset()                    { *m = OfpExperimenterHeader{} }
func (m *OfpExperimenterHeader) String() string            { return proto.CompactTextString(m) }
func (*OfpExperimenterHeader) ProtoMessage()               {}
func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} }

func (m *OfpExperimenterHeader) GetExperimenter() uint32 {
	if m != nil {
		return m.Experimenter
	}
	return 0
}

func (m *OfpExperimenterHeader) GetExpType() uint32 {
	if m != nil {
		return m.ExpType
	}
	return 0
}

func (m *OfpExperimenterHeader) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

// Common description for a queue.
type OfpQueuePropHeader struct {
	Property uint32 `protobuf:"varint,1,opt,name=property" json:"property,omitempty"`
	Len      uint32 `protobuf:"varint,2,opt,name=len" json:"len,omitempty"`
}

func (m *OfpQueuePropHeader) Reset()                    { *m = OfpQueuePropHeader{} }
func (m *OfpQueuePropHeader) String() string            { return proto.CompactTextString(m) }
func (*OfpQueuePropHeader) ProtoMessage()               {}
func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} }

func (m *OfpQueuePropHeader) GetProperty() uint32 {
	if m != nil {
		return m.Property
	}
	return 0
}

func (m *OfpQueuePropHeader) GetLen() uint32 {
	if m != nil {
		return m.Len
	}
	return 0
}

// Min-Rate queue property description.
type OfpQueuePropMinRate struct {
	PropHeader *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader" json:"prop_header,omitempty"`
	Rate       uint32              `protobuf:"varint,2,opt,name=rate" json:"rate,omitempty"`
}

func (m *OfpQueuePropMinRate) Reset()                    { *m = OfpQueuePropMinRate{} }
func (m *OfpQueuePropMinRate) String() string            { return proto.CompactTextString(m) }
func (*OfpQueuePropMinRate) ProtoMessage()               {}
func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} }

func (m *OfpQueuePropMinRate) GetPropHeader() *OfpQueuePropHeader {
	if m != nil {
		return m.PropHeader
	}
	return nil
}

func (m *OfpQueuePropMinRate) GetRate() uint32 {
	if m != nil {
		return m.Rate
	}
	return 0
}

// Max-Rate queue property description.
type OfpQueuePropMaxRate struct {
	PropHeader *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader" json:"prop_header,omitempty"`
	Rate       uint32              `protobuf:"varint,2,opt,name=rate" json:"rate,omitempty"`
}

func (m *OfpQueuePropMaxRate) Reset()                    { *m = OfpQueuePropMaxRate{} }
func (m *OfpQueuePropMaxRate) String() string            { return proto.CompactTextString(m) }
func (*OfpQueuePropMaxRate) ProtoMessage()               {}
func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{74} }

func (m *OfpQueuePropMaxRate) GetPropHeader() *OfpQueuePropHeader {
	if m != nil {
		return m.PropHeader
	}
	return nil
}

func (m *OfpQueuePropMaxRate) GetRate() uint32 {
	if m != nil {
		return m.Rate
	}
	return 0
}

// Experimenter queue property description.
type OfpQueuePropExperimenter struct {
	PropHeader   *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader" json:"prop_header,omitempty"`
	Experimenter uint32              `protobuf:"varint,2,opt,name=experimenter" json:"experimenter,omitempty"`
	Data         []byte              `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

func (m *OfpQueuePropExperimenter) Reset()                    { *m = OfpQueuePropExperimenter{} }
func (m *OfpQueuePropExperimenter) String() string            { return proto.CompactTextString(m) }
func (*OfpQueuePropExperimenter) ProtoMessage()               {}
func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} }

func (m *OfpQueuePropExperimenter) GetPropHeader() *OfpQueuePropHeader {
	if m != nil {
		return m.PropHeader
	}
	return nil
}

func (m *OfpQueuePropExperimenter) GetExperimenter() uint32 {
	if m != nil {
		return m.Experimenter
	}
	return 0
}

func (m *OfpQueuePropExperimenter) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

// Full description for a queue.
type OfpPacketQueue struct {
	QueueId    uint32                `protobuf:"varint,1,opt,name=queue_id,json=queueId" json:"queue_id,omitempty"`
	Port       uint32                `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
	Properties []*OfpQueuePropHeader `protobuf:"bytes,4,rep,name=properties" json:"properties,omitempty"`
}

func (m *OfpPacketQueue) Reset()                    { *m = OfpPacketQueue{} }
func (m *OfpPacketQueue) String() string            { return proto.CompactTextString(m) }
func (*OfpPacketQueue) ProtoMessage()               {}
func (*OfpPacketQueue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} }

func (m *OfpPacketQueue) GetQueueId() uint32 {
	if m != nil {
		return m.QueueId
	}
	return 0
}

func (m *OfpPacketQueue) GetPort() uint32 {
	if m != nil {
		return m.Port
	}
	return 0
}

func (m *OfpPacketQueue) GetProperties() []*OfpQueuePropHeader {
	if m != nil {
		return m.Properties
	}
	return nil
}

// Query for port queue configuration.
type OfpQueueGetConfigRequest struct {
	// ofp_header header;
	Port uint32 `protobuf:"varint,1,opt,name=port" json:"port,omitempty"`
}

func (m *OfpQueueGetConfigRequest) Reset()                    { *m = OfpQueueGetConfigRequest{} }
func (m *OfpQueueGetConfigRequest) String() string            { return proto.CompactTextString(m) }
func (*OfpQueueGetConfigRequest) ProtoMessage()               {}
func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} }

func (m *OfpQueueGetConfigRequest) GetPort() uint32 {
	if m != nil {
		return m.Port
	}
	return 0
}

// Queue configuration for a given port.
type OfpQueueGetConfigReply struct {
	// ofp_header header;
	Port   uint32            `protobuf:"varint,1,opt,name=port" json:"port,omitempty"`
	Queues []*OfpPacketQueue `protobuf:"bytes,2,rep,name=queues" json:"queues,omitempty"`
}

func (m *OfpQueueGetConfigReply) Reset()                    { *m = OfpQueueGetConfigReply{} }
func (m *OfpQueueGetConfigReply) String() string            { return proto.CompactTextString(m) }
func (*OfpQueueGetConfigReply) ProtoMessage()               {}
func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} }

func (m *OfpQueueGetConfigReply) GetPort() uint32 {
	if m != nil {
		return m.Port
	}
	return 0
}

func (m *OfpQueueGetConfigReply) GetQueues() []*OfpPacketQueue {
	if m != nil {
		return m.Queues
	}
	return nil
}

// OFPAT_SET_QUEUE action struct: send packets to given queue on port.
type OfpActionSetQueue struct {
	Type    uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	QueueId uint32 `protobuf:"varint,3,opt,name=queue_id,json=queueId" json:"queue_id,omitempty"`
}

func (m *OfpActionSetQueue) Reset()                    { *m = OfpActionSetQueue{} }
func (m *OfpActionSetQueue) String() string            { return proto.CompactTextString(m) }
func (*OfpActionSetQueue) ProtoMessage()               {}
func (*OfpActionSetQueue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} }

func (m *OfpActionSetQueue) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *OfpActionSetQueue) GetQueueId() uint32 {
	if m != nil {
		return m.QueueId
	}
	return 0
}

type OfpQueueStatsRequest struct {
	PortNo  uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo" json:"port_no,omitempty"`
	QueueId uint32 `protobuf:"varint,2,opt,name=queue_id,json=queueId" json:"queue_id,omitempty"`
}

func (m *OfpQueueStatsRequest) Reset()                    { *m = OfpQueueStatsRequest{} }
func (m *OfpQueueStatsRequest) String() string            { return proto.CompactTextString(m) }
func (*OfpQueueStatsRequest) ProtoMessage()               {}
func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{80} }

func (m *OfpQueueStatsRequest) GetPortNo() uint32 {
	if m != nil {
		return m.PortNo
	}
	return 0
}

func (m *OfpQueueStatsRequest) GetQueueId() uint32 {
	if m != nil {
		return m.QueueId
	}
	return 0
}

type OfpQueueStats struct {
	PortNo       uint32 `protobuf:"varint,1,opt,name=port_no,json=portNo" json:"port_no,omitempty"`
	QueueId      uint32 `protobuf:"varint,2,opt,name=queue_id,json=queueId" json:"queue_id,omitempty"`
	TxBytes      uint64 `protobuf:"varint,3,opt,name=tx_bytes,json=txBytes" json:"tx_bytes,omitempty"`
	TxPackets    uint64 `protobuf:"varint,4,opt,name=tx_packets,json=txPackets" json:"tx_packets,omitempty"`
	TxErrors     uint64 `protobuf:"varint,5,opt,name=tx_errors,json=txErrors" json:"tx_errors,omitempty"`
	DurationSec  uint32 `protobuf:"varint,6,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
	DurationNsec uint32 `protobuf:"varint,7,opt,name=duration_nsec,json=durationNsec" json:"duration_nsec,omitempty"`
}

func (m *OfpQueueStats) Reset()                    { *m = OfpQueueStats{} }
func (m *OfpQueueStats) String() string            { return proto.CompactTextString(m) }
func (*OfpQueueStats) ProtoMessage()               {}
func (*OfpQueueStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{81} }

func (m *OfpQueueStats) GetPortNo() uint32 {
	if m != nil {
		return m.PortNo
	}
	return 0
}

func (m *OfpQueueStats) GetQueueId() uint32 {
	if m != nil {
		return m.QueueId
	}
	return 0
}

func (m *OfpQueueStats) GetTxBytes() uint64 {
	if m != nil {
		return m.TxBytes
	}
	return 0
}

func (m *OfpQueueStats) GetTxPackets() uint64 {
	if m != nil {
		return m.TxPackets
	}
	return 0
}

func (m *OfpQueueStats) GetTxErrors() uint64 {
	if m != nil {
		return m.TxErrors
	}
	return 0
}

func (m *OfpQueueStats) GetDurationSec() uint32 {
	if m != nil {
		return m.DurationSec
	}
	return 0
}

func (m *OfpQueueStats) GetDurationNsec() uint32 {
	if m != nil {
		return m.DurationNsec
	}
	return 0
}

// Role request and reply message.
type OfpRoleRequest struct {
	// ofp_header header;        /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
	Role         OfpControllerRole `protobuf:"varint,1,opt,name=role,enum=openflow_13.OfpControllerRole" json:"role,omitempty"`
	GenerationId uint64            `protobuf:"varint,2,opt,name=generation_id,json=generationId" json:"generation_id,omitempty"`
}

func (m *OfpRoleRequest) Reset()                    { *m = OfpRoleRequest{} }
func (m *OfpRoleRequest) String() string            { return proto.CompactTextString(m) }
func (*OfpRoleRequest) ProtoMessage()               {}
func (*OfpRoleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{82} }

func (m *OfpRoleRequest) GetRole() OfpControllerRole {
	if m != nil {
		return m.Role
	}
	return OfpControllerRole_OFPCR_ROLE_NOCHANGE
}

func (m *OfpRoleRequest) GetGenerationId() uint64 {
	if m != nil {
		return m.GenerationId
	}
	return 0
}

// Asynchronous message configuration.
type OfpAsyncConfig struct {
	// ofp_header header;    /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
	PacketInMask    []uint32 `protobuf:"varint,1,rep,packed,name=packet_in_mask,json=packetInMask" json:"packet_in_mask,omitempty"`
	PortStatusMask  []uint32 `protobuf:"varint,2,rep,packed,name=port_status_mask,json=portStatusMask" json:"port_status_mask,omitempty"`
	FlowRemovedMask []uint32 `protobuf:"varint,3,rep,packed,name=flow_removed_mask,json=flowRemovedMask" json:"flow_removed_mask,omitempty"`
}

func (m *OfpAsyncConfig) Reset()                    { *m = OfpAsyncConfig{} }
func (m *OfpAsyncConfig) String() string            { return proto.CompactTextString(m) }
func (*OfpAsyncConfig) ProtoMessage()               {}
func (*OfpAsyncConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{83} }

func (m *OfpAsyncConfig) GetPacketInMask() []uint32 {
	if m != nil {
		return m.PacketInMask
	}
	return nil
}

func (m *OfpAsyncConfig) GetPortStatusMask() []uint32 {
	if m != nil {
		return m.PortStatusMask
	}
	return nil
}

func (m *OfpAsyncConfig) GetFlowRemovedMask() []uint32 {
	if m != nil {
		return m.FlowRemovedMask
	}
	return nil
}

type FlowTableUpdate struct {
	Id      string      `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	FlowMod *OfpFlowMod `protobuf:"bytes,2,opt,name=flow_mod,json=flowMod" json:"flow_mod,omitempty"`
}

func (m *FlowTableUpdate) Reset()                    { *m = FlowTableUpdate{} }
func (m *FlowTableUpdate) String() string            { return proto.CompactTextString(m) }
func (*FlowTableUpdate) ProtoMessage()               {}
func (*FlowTableUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{84} }

func (m *FlowTableUpdate) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *FlowTableUpdate) GetFlowMod() *OfpFlowMod {
	if m != nil {
		return m.FlowMod
	}
	return nil
}

type FlowGroupTableUpdate struct {
	Id       string       `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	GroupMod *OfpGroupMod `protobuf:"bytes,2,opt,name=group_mod,json=groupMod" json:"group_mod,omitempty"`
}

func (m *FlowGroupTableUpdate) Reset()                    { *m = FlowGroupTableUpdate{} }
func (m *FlowGroupTableUpdate) String() string            { return proto.CompactTextString(m) }
func (*FlowGroupTableUpdate) ProtoMessage()               {}
func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{85} }

func (m *FlowGroupTableUpdate) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *FlowGroupTableUpdate) GetGroupMod() *OfpGroupMod {
	if m != nil {
		return m.GroupMod
	}
	return nil
}

type Flows struct {
	Items []*OfpFlowStats `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
}

func (m *Flows) Reset()                    { *m = Flows{} }
func (m *Flows) String() string            { return proto.CompactTextString(m) }
func (*Flows) ProtoMessage()               {}
func (*Flows) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{86} }

func (m *Flows) GetItems() []*OfpFlowStats {
	if m != nil {
		return m.Items
	}
	return nil
}

type FlowGroups struct {
	Items []*OfpGroupEntry `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
}

func (m *FlowGroups) Reset()                    { *m = FlowGroups{} }
func (m *FlowGroups) String() string            { return proto.CompactTextString(m) }
func (*FlowGroups) ProtoMessage()               {}
func (*FlowGroups) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{87} }

func (m *FlowGroups) GetItems() []*OfpGroupEntry {
	if m != nil {
		return m.Items
	}
	return nil
}

type PacketIn struct {
	Id       string       `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	PacketIn *OfpPacketIn `protobuf:"bytes,2,opt,name=packet_in,json=packetIn" json:"packet_in,omitempty"`
}

func (m *PacketIn) Reset()                    { *m = PacketIn{} }
func (m *PacketIn) String() string            { return proto.CompactTextString(m) }
func (*PacketIn) ProtoMessage()               {}
func (*PacketIn) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{88} }

func (m *PacketIn) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *PacketIn) GetPacketIn() *OfpPacketIn {
	if m != nil {
		return m.PacketIn
	}
	return nil
}

type PacketOut struct {
	Id        string        `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	PacketOut *OfpPacketOut `protobuf:"bytes,2,opt,name=packet_out,json=packetOut" json:"packet_out,omitempty"`
}

func (m *PacketOut) Reset()                    { *m = PacketOut{} }
func (m *PacketOut) String() string            { return proto.CompactTextString(m) }
func (*PacketOut) ProtoMessage()               {}
func (*PacketOut) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{89} }

func (m *PacketOut) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *PacketOut) GetPacketOut() *OfpPacketOut {
	if m != nil {
		return m.PacketOut
	}
	return nil
}

type ChangeEvent struct {
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	// Types that are valid to be assigned to Event:
	//	*ChangeEvent_PortStatus
	Event isChangeEvent_Event `protobuf_oneof:"event"`
}

func (m *ChangeEvent) Reset()                    { *m = ChangeEvent{} }
func (m *ChangeEvent) String() string            { return proto.CompactTextString(m) }
func (*ChangeEvent) ProtoMessage()               {}
func (*ChangeEvent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{90} }

type isChangeEvent_Event interface {
	isChangeEvent_Event()
}

type ChangeEvent_PortStatus struct {
	PortStatus *OfpPortStatus `protobuf:"bytes,2,opt,name=port_status,json=portStatus,oneof"`
}

func (*ChangeEvent_PortStatus) isChangeEvent_Event() {}

func (m *ChangeEvent) GetEvent() isChangeEvent_Event {
	if m != nil {
		return m.Event
	}
	return nil
}

func (m *ChangeEvent) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *ChangeEvent) GetPortStatus() *OfpPortStatus {
	if x, ok := m.GetEvent().(*ChangeEvent_PortStatus); ok {
		return x.PortStatus
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*ChangeEvent) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _ChangeEvent_OneofMarshaler, _ChangeEvent_OneofUnmarshaler, _ChangeEvent_OneofSizer, []interface{}{
		(*ChangeEvent_PortStatus)(nil),
	}
}

func _ChangeEvent_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*ChangeEvent)
	// event
	switch x := m.Event.(type) {
	case *ChangeEvent_PortStatus:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.PortStatus); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("ChangeEvent.Event has unexpected type %T", x)
	}
	return nil
}

func _ChangeEvent_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*ChangeEvent)
	switch tag {
	case 2: // event.port_status
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(OfpPortStatus)
		err := b.DecodeMessage(msg)
		m.Event = &ChangeEvent_PortStatus{msg}
		return true, err
	default:
		return false, nil
	}
}

func _ChangeEvent_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*ChangeEvent)
	// event
	switch x := m.Event.(type) {
	case *ChangeEvent_PortStatus:
		s := proto.Size(x.PortStatus)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

func init() {
	proto.RegisterType((*OfpHeader)(nil), "openflow_13.ofp_header")
	proto.RegisterType((*OfpHelloElemHeader)(nil), "openflow_13.ofp_hello_elem_header")
	proto.RegisterType((*OfpHelloElemVersionbitmap)(nil), "openflow_13.ofp_hello_elem_versionbitmap")
	proto.RegisterType((*OfpHello)(nil), "openflow_13.ofp_hello")
	proto.RegisterType((*OfpSwitchConfig)(nil), "openflow_13.ofp_switch_config")
	proto.RegisterType((*OfpTableMod)(nil), "openflow_13.ofp_table_mod")
	proto.RegisterType((*OfpPort)(nil), "openflow_13.ofp_port")
	proto.RegisterType((*OfpSwitchFeatures)(nil), "openflow_13.ofp_switch_features")
	proto.RegisterType((*OfpPortStatus)(nil), "openflow_13.ofp_port_status")
	proto.RegisterType((*OfpPortMod)(nil), "openflow_13.ofp_port_mod")
	proto.RegisterType((*OfpMatch)(nil), "openflow_13.ofp_match")
	proto.RegisterType((*OfpOxmField)(nil), "openflow_13.ofp_oxm_field")
	proto.RegisterType((*OfpOxmOfbField)(nil), "openflow_13.ofp_oxm_ofb_field")
	proto.RegisterType((*OfpOxmExperimenterField)(nil), "openflow_13.ofp_oxm_experimenter_field")
	proto.RegisterType((*OfpAction)(nil), "openflow_13.ofp_action")
	proto.RegisterType((*OfpActionOutput)(nil), "openflow_13.ofp_action_output")
	proto.RegisterType((*OfpActionMplsTtl)(nil), "openflow_13.ofp_action_mpls_ttl")
	proto.RegisterType((*OfpActionPush)(nil), "openflow_13.ofp_action_push")
	proto.RegisterType((*OfpActionPopMpls)(nil), "openflow_13.ofp_action_pop_mpls")
	proto.RegisterType((*OfpActionGroup)(nil), "openflow_13.ofp_action_group")
	proto.RegisterType((*OfpActionNwTtl)(nil), "openflow_13.ofp_action_nw_ttl")
	proto.RegisterType((*OfpActionSetField)(nil), "openflow_13.ofp_action_set_field")
	proto.RegisterType((*OfpActionExperimenter)(nil), "openflow_13.ofp_action_experimenter")
	proto.RegisterType((*OfpInstruction)(nil), "openflow_13.ofp_instruction")
	proto.RegisterType((*OfpInstructionGotoTable)(nil), "openflow_13.ofp_instruction_goto_table")
	proto.RegisterType((*OfpInstructionWriteMetadata)(nil), "openflow_13.ofp_instruction_write_metadata")
	proto.RegisterType((*OfpInstructionActions)(nil), "openflow_13.ofp_instruction_actions")
	proto.RegisterType((*OfpInstructionMeter)(nil), "openflow_13.ofp_instruction_meter")
	proto.RegisterType((*OfpInstructionExperimenter)(nil), "openflow_13.ofp_instruction_experimenter")
	proto.RegisterType((*OfpFlowMod)(nil), "openflow_13.ofp_flow_mod")
	proto.RegisterType((*OfpBucket)(nil), "openflow_13.ofp_bucket")
	proto.RegisterType((*OfpGroupMod)(nil), "openflow_13.ofp_group_mod")
	proto.RegisterType((*OfpPacketOut)(nil), "openflow_13.ofp_packet_out")
	proto.RegisterType((*OfpPacketIn)(nil), "openflow_13.ofp_packet_in")
	proto.RegisterType((*OfpFlowRemoved)(nil), "openflow_13.ofp_flow_removed")
	proto.RegisterType((*OfpMeterBandHeader)(nil), "openflow_13.ofp_meter_band_header")
	proto.RegisterType((*OfpMeterBandDrop)(nil), "openflow_13.ofp_meter_band_drop")
	proto.RegisterType((*OfpMeterBandDscpRemark)(nil), "openflow_13.ofp_meter_band_dscp_remark")
	proto.RegisterType((*OfpMeterBandExperimenter)(nil), "openflow_13.ofp_meter_band_experimenter")
	proto.RegisterType((*OfpMeterMod)(nil), "openflow_13.ofp_meter_mod")
	proto.RegisterType((*OfpErrorMsg)(nil), "openflow_13.ofp_error_msg")
	proto.RegisterType((*OfpErrorExperimenterMsg)(nil), "openflow_13.ofp_error_experimenter_msg")
	proto.RegisterType((*OfpMultipartRequest)(nil), "openflow_13.ofp_multipart_request")
	proto.RegisterType((*OfpMultipartReply)(nil), "openflow_13.ofp_multipart_reply")
	proto.RegisterType((*OfpDesc)(nil), "openflow_13.ofp_desc")
	proto.RegisterType((*OfpFlowStatsRequest)(nil), "openflow_13.ofp_flow_stats_request")
	proto.RegisterType((*OfpFlowStats)(nil), "openflow_13.ofp_flow_stats")
	proto.RegisterType((*OfpAggregateStatsRequest)(nil), "openflow_13.ofp_aggregate_stats_request")
	proto.RegisterType((*OfpAggregateStatsReply)(nil), "openflow_13.ofp_aggregate_stats_reply")
	proto.RegisterType((*OfpTableFeatureProperty)(nil), "openflow_13.ofp_table_feature_property")
	proto.RegisterType((*OfpTableFeaturePropInstructions)(nil), "openflow_13.ofp_table_feature_prop_instructions")
	proto.RegisterType((*OfpTableFeaturePropNextTables)(nil), "openflow_13.ofp_table_feature_prop_next_tables")
	proto.RegisterType((*OfpTableFeaturePropActions)(nil), "openflow_13.ofp_table_feature_prop_actions")
	proto.RegisterType((*OfpTableFeaturePropOxm)(nil), "openflow_13.ofp_table_feature_prop_oxm")
	proto.RegisterType((*OfpTableFeaturePropExperimenter)(nil), "openflow_13.ofp_table_feature_prop_experimenter")
	proto.RegisterType((*OfpTableFeatures)(nil), "openflow_13.ofp_table_features")
	proto.RegisterType((*OfpTableStats)(nil), "openflow_13.ofp_table_stats")
	proto.RegisterType((*OfpPortStatsRequest)(nil), "openflow_13.ofp_port_stats_request")
	proto.RegisterType((*OfpPortStats)(nil), "openflow_13.ofp_port_stats")
	proto.RegisterType((*OfpGroupStatsRequest)(nil), "openflow_13.ofp_group_stats_request")
	proto.RegisterType((*OfpBucketCounter)(nil), "openflow_13.ofp_bucket_counter")
	proto.RegisterType((*OfpGroupStats)(nil), "openflow_13.ofp_group_stats")
	proto.RegisterType((*OfpGroupDesc)(nil), "openflow_13.ofp_group_desc")
	proto.RegisterType((*OfpGroupEntry)(nil), "openflow_13.ofp_group_entry")
	proto.RegisterType((*OfpGroupFeatures)(nil), "openflow_13.ofp_group_features")
	proto.RegisterType((*OfpMeterMultipartRequest)(nil), "openflow_13.ofp_meter_multipart_request")
	proto.RegisterType((*OfpMeterBandStats)(nil), "openflow_13.ofp_meter_band_stats")
	proto.RegisterType((*OfpMeterStats)(nil), "openflow_13.ofp_meter_stats")
	proto.RegisterType((*OfpMeterConfig)(nil), "openflow_13.ofp_meter_config")
	proto.RegisterType((*OfpMeterFeatures)(nil), "openflow_13.ofp_meter_features")
	proto.RegisterType((*OfpExperimenterMultipartHeader)(nil), "openflow_13.ofp_experimenter_multipart_header")
	proto.RegisterType((*OfpExperimenterHeader)(nil), "openflow_13.ofp_experimenter_header")
	proto.RegisterType((*OfpQueuePropHeader)(nil), "openflow_13.ofp_queue_prop_header")
	proto.RegisterType((*OfpQueuePropMinRate)(nil), "openflow_13.ofp_queue_prop_min_rate")
	proto.RegisterType((*OfpQueuePropMaxRate)(nil), "openflow_13.ofp_queue_prop_max_rate")
	proto.RegisterType((*OfpQueuePropExperimenter)(nil), "openflow_13.ofp_queue_prop_experimenter")
	proto.RegisterType((*OfpPacketQueue)(nil), "openflow_13.ofp_packet_queue")
	proto.RegisterType((*OfpQueueGetConfigRequest)(nil), "openflow_13.ofp_queue_get_config_request")
	proto.RegisterType((*OfpQueueGetConfigReply)(nil), "openflow_13.ofp_queue_get_config_reply")
	proto.RegisterType((*OfpActionSetQueue)(nil), "openflow_13.ofp_action_set_queue")
	proto.RegisterType((*OfpQueueStatsRequest)(nil), "openflow_13.ofp_queue_stats_request")
	proto.RegisterType((*OfpQueueStats)(nil), "openflow_13.ofp_queue_stats")
	proto.RegisterType((*OfpRoleRequest)(nil), "openflow_13.ofp_role_request")
	proto.RegisterType((*OfpAsyncConfig)(nil), "openflow_13.ofp_async_config")
	proto.RegisterType((*FlowTableUpdate)(nil), "openflow_13.FlowTableUpdate")
	proto.RegisterType((*FlowGroupTableUpdate)(nil), "openflow_13.FlowGroupTableUpdate")
	proto.RegisterType((*Flows)(nil), "openflow_13.Flows")
	proto.RegisterType((*FlowGroups)(nil), "openflow_13.FlowGroups")
	proto.RegisterType((*PacketIn)(nil), "openflow_13.PacketIn")
	proto.RegisterType((*PacketOut)(nil), "openflow_13.PacketOut")
	proto.RegisterType((*ChangeEvent)(nil), "openflow_13.ChangeEvent")
	proto.RegisterEnum("openflow_13.OfpPortNo", OfpPortNo_name, OfpPortNo_value)
	proto.RegisterEnum("openflow_13.OfpType", OfpType_name, OfpType_value)
	proto.RegisterEnum("openflow_13.OfpHelloElemType", OfpHelloElemType_name, OfpHelloElemType_value)
	proto.RegisterEnum("openflow_13.OfpConfigFlags", OfpConfigFlags_name, OfpConfigFlags_value)
	proto.RegisterEnum("openflow_13.OfpTableConfig", OfpTableConfig_name, OfpTableConfig_value)
	proto.RegisterEnum("openflow_13.OfpTable", OfpTable_name, OfpTable_value)
	proto.RegisterEnum("openflow_13.OfpCapabilities", OfpCapabilities_name, OfpCapabilities_value)
	proto.RegisterEnum("openflow_13.OfpPortConfig", OfpPortConfig_name, OfpPortConfig_value)
	proto.RegisterEnum("openflow_13.OfpPortState", OfpPortState_name, OfpPortState_value)
	proto.RegisterEnum("openflow_13.OfpPortFeatures", OfpPortFeatures_name, OfpPortFeatures_value)
	proto.RegisterEnum("openflow_13.OfpPortReason", OfpPortReason_name, OfpPortReason_value)
	proto.RegisterEnum("openflow_13.OfpMatchType", OfpMatchType_name, OfpMatchType_value)
	proto.RegisterEnum("openflow_13.OfpOxmClass", OfpOxmClass_name, OfpOxmClass_value)
	proto.RegisterEnum("openflow_13.OxmOfbFieldTypes", OxmOfbFieldTypes_name, OxmOfbFieldTypes_value)
	proto.RegisterEnum("openflow_13.OfpVlanId", OfpVlanId_name, OfpVlanId_value)
	proto.RegisterEnum("openflow_13.OfpIpv6ExthdrFlags", OfpIpv6ExthdrFlags_name, OfpIpv6ExthdrFlags_value)
	proto.RegisterEnum("openflow_13.OfpActionType", OfpActionType_name, OfpActionType_value)
	proto.RegisterEnum("openflow_13.OfpControllerMaxLen", OfpControllerMaxLen_name, OfpControllerMaxLen_value)
	proto.RegisterEnum("openflow_13.OfpInstructionType", OfpInstructionType_name, OfpInstructionType_value)
	proto.RegisterEnum("openflow_13.OfpFlowModCommand", OfpFlowModCommand_name, OfpFlowModCommand_value)
	proto.RegisterEnum("openflow_13.OfpFlowModFlags", OfpFlowModFlags_name, OfpFlowModFlags_value)
	proto.RegisterEnum("openflow_13.OfpGroup", OfpGroup_name, OfpGroup_value)
	proto.RegisterEnum("openflow_13.OfpGroupModCommand", OfpGroupModCommand_name, OfpGroupModCommand_value)
	proto.RegisterEnum("openflow_13.OfpGroupType", OfpGroupType_name, OfpGroupType_value)
	proto.RegisterEnum("openflow_13.OfpPacketInReason", OfpPacketInReason_name, OfpPacketInReason_value)
	proto.RegisterEnum("openflow_13.OfpFlowRemovedReason", OfpFlowRemovedReason_name, OfpFlowRemovedReason_value)
	proto.RegisterEnum("openflow_13.OfpMeter", OfpMeter_name, OfpMeter_value)
	proto.RegisterEnum("openflow_13.OfpMeterBandType", OfpMeterBandType_name, OfpMeterBandType_value)
	proto.RegisterEnum("openflow_13.OfpMeterModCommand", OfpMeterModCommand_name, OfpMeterModCommand_value)
	proto.RegisterEnum("openflow_13.OfpMeterFlags", OfpMeterFlags_name, OfpMeterFlags_value)
	proto.RegisterEnum("openflow_13.OfpErrorType", OfpErrorType_name, OfpErrorType_value)
	proto.RegisterEnum("openflow_13.OfpHelloFailedCode", OfpHelloFailedCode_name, OfpHelloFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpBadRequestCode", OfpBadRequestCode_name, OfpBadRequestCode_value)
	proto.RegisterEnum("openflow_13.OfpBadActionCode", OfpBadActionCode_name, OfpBadActionCode_value)
	proto.RegisterEnum("openflow_13.OfpBadInstructionCode", OfpBadInstructionCode_name, OfpBadInstructionCode_value)
	proto.RegisterEnum("openflow_13.OfpBadMatchCode", OfpBadMatchCode_name, OfpBadMatchCode_value)
	proto.RegisterEnum("openflow_13.OfpFlowModFailedCode", OfpFlowModFailedCode_name, OfpFlowModFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpGroupModFailedCode", OfpGroupModFailedCode_name, OfpGroupModFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpPortModFailedCode", OfpPortModFailedCode_name, OfpPortModFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpTableModFailedCode", OfpTableModFailedCode_name, OfpTableModFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpQueueOpFailedCode", OfpQueueOpFailedCode_name, OfpQueueOpFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpSwitchConfigFailedCode", OfpSwitchConfigFailedCode_name, OfpSwitchConfigFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpRoleRequestFailedCode", OfpRoleRequestFailedCode_name, OfpRoleRequestFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpMeterModFailedCode", OfpMeterModFailedCode_name, OfpMeterModFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpTableFeaturesFailedCode", OfpTableFeaturesFailedCode_name, OfpTableFeaturesFailedCode_value)
	proto.RegisterEnum("openflow_13.OfpMultipartType", OfpMultipartType_name, OfpMultipartType_value)
	proto.RegisterEnum("openflow_13.OfpMultipartRequestFlags", OfpMultipartRequestFlags_name, OfpMultipartRequestFlags_value)
	proto.RegisterEnum("openflow_13.OfpMultipartReplyFlags", OfpMultipartReplyFlags_name, OfpMultipartReplyFlags_value)
	proto.RegisterEnum("openflow_13.OfpTableFeaturePropType", OfpTableFeaturePropType_name, OfpTableFeaturePropType_value)
	proto.RegisterEnum("openflow_13.OfpGroupCapabilities", OfpGroupCapabilities_name, OfpGroupCapabilities_value)
	proto.RegisterEnum("openflow_13.OfpQueueProperties", OfpQueueProperties_name, OfpQueueProperties_value)
	proto.RegisterEnum("openflow_13.OfpControllerRole", OfpControllerRole_name, OfpControllerRole_value)
}

func init() { proto.RegisterFile("openflow_13.proto", fileDescriptor0) }

var fileDescriptor0 = []byte{
	// 8209 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7c, 0x5b, 0x8c, 0x1b, 0x4b,
	0x76, 0x98, 0xf8, 0x98, 0x21, 0x59, 0x9c, 0x19, 0xb5, 0x5a, 0x2f, 0x4a, 0x23, 0x5d, 0x49, 0x5c,
	0xdd, 0xdd, 0xbb, 0x5c, 0xdb, 0xf7, 0x5e, 0x5d, 0xad, 0x76, 0xbd, 0x7e, 0x44, 0x4d, 0xb2, 0x39,
	0xe4, 0x8a, 0x8f, 0x56, 0x77, 0xcf, 0x48, 0x72, 0xe0, 0x34, 0x38, 0x64, 0x6b, 0x86, 0xbe, 0x7c,
	0x6d, 0x77, 0xcf, 0x68, 0xe4, 0xc4, 0x81, 0x62, 0x23, 0x08, 0x90, 0xc4, 0x76, 0x12, 0x07, 0x58,
	0x20, 0x70, 0x80, 0x18, 0x71, 0x3e, 0x82, 0x00, 0xf9, 0x08, 0x10, 0x20, 0x40, 0xf2, 0x99, 0x00,
	0x09, 0x90, 0x07, 0x60, 0x20, 0xf0, 0x4f, 0xfc, 0xe7, 0xfc, 0x04, 0xf0, 0x77, 0x12, 0x67, 0xb3,
	0x0a, 0x4e, 0x9d, 0x53, 0xd5, 0xd5, 0x7c, 0xcc, 0x9d, 0xdd, 0xdc, 0x4d, 0x00, 0x7f, 0x0d, 0xfb,
	0x9c, 0x53, 0xa7, 0xaa, 0x4e, 0x9d, 0x77, 0x57, 0x0f, 0xbb, 0x32, 0x9b, 0xfb, 0xd3, 0xd7, 0xe3,
	0xd9, 0x1b, 0xef, 0xd3, 0xcf, 0x7e, 0x66, 0x1e, 0xcc, 0xa2, 0x99, 0x5e, 0x54, 0x40, 0xb7, 0xef,
	0x1c, 0xcd, 0x66, 0x47, 0x63, 0xff, 0xe3, 0xfe, 0x7c, 0xf4, 0x71, 0x7f, 0x3a, 0x9d, 0x45, 0xfd,
	0x68, 0x34, 0x9b, 0x86, 0x48, 0x7a, 0x5b, 0x7f, 0xdb, 0x9f, 0x1e, 0x79, 0xb3, 0xb9, 0x02, 0x2b,
	0x0f, 0x18, 0x9b, 0xbd, 0x9e, 0x7b, 0xc7, 0x7e, 0x7f, 0xe8, 0x07, 0x7a, 0x89, 0xe5, 0x4e, 0xfd,
	0x20, 0x1c, 0xcd, 0xa6, 0xa5, 0xd4, 0xfd, 0xd4, 0x47, 0xdb, 0xb6, 0x78, 0xd4, 0xbf, 0xce, 0xb2,
	0xd1, 0xdb, 0xb9, 0x5f, 0x4a, 0xdf, 0x4f, 0x7d, 0xb4, 0xf3, 0xe8, 0xfa, 0xcf, 0xa8, 0x0b, 0x01,
	0x06, 0x80, 0xb4, 0x39, 0x89, 0xae, 0xb1, 0xcc, 0xd9, 0x68, 0x58, 0xca, 0x70, 0x06, 0xf0, 0xb3,
	0xfc, 0x4f, 0x52, 0xec, 0x3a, 0xce, 0x32, 0x1e, 0xcf, 0x3c, 0x7f, 0xec, 0x4f, 0xc4, 0x84, 0x8f,
	0x89, 0x6d, 0x8a, 0xb3, 0xbd, 0xbf, 0xc4, 0x56, 0x19, 0xa1, 0xcc, 0xf0, 0x9c, 0x6d, 0xd3, 0xba,
	0x0e, 0x47, 0xd1, 0xa4, 0x3f, 0xe7, 0xab, 0x2a, 0x3e, 0xfa, 0xfa, 0x79, 0xc3, 0x13, 0x03, 0x9a,
	0x97, 0xec, 0x24, 0x87, 0x6a, 0x81, 0xe5, 0x80, 0xcc, 0x9f, 0x46, 0xe5, 0x6f, 0xb3, 0x3b, 0xe7,
	0x8d, 0x05, 0x21, 0xe1, 0xaf, 0xb0, 0x94, 0xbe, 0x9f, 0x01, 0x21, 0xd1, 0x63, 0xf9, 0x19, 0x2b,
	0xc8, 0x91, 0xfa, 0x2f, 0xb2, 0x3c, 0x71, 0x0c, 0x4b, 0xa9, 0xfb, 0x99, 0x8f, 0x8a, 0x8f, 0xca,
	0xe7, 0xad, 0x0f, 0x05, 0x62, 0xcb, 0x31, 0xe5, 0x0e, 0xbb, 0x02, 0x24, 0xe1, 0x9b, 0x51, 0x34,
	0x38, 0xf6, 0x06, 0xb3, 0xe9, 0xeb, 0xd1, 0x91, 0x7e, 0x8d, 0x6d, 0xbc, 0x1e, 0xf7, 0x8f, 0x42,
	0x3a, 0x1e, 0x7c, 0xd0, 0xcb, 0x6c, 0x7b, 0x32, 0x0a, 0x43, 0x2f, 0xf4, 0xa7, 0x43, 0x6f, 0xec,
	0x4f, 0xb9, 0x3c, 0xb6, 0xed, 0x22, 0x00, 0x1d, 0x7f, 0x3a, 0x6c, 0xfb, 0xd3, 0x72, 0x95, 0x6d,
	0xf3, 0x73, 0xea, 0x1f, 0x8e, 0x7d, 0x6f, 0x32, 0x1b, 0xea, 0xb7, 0x58, 0x1e, 0x1f, 0x46, 0x43,
	0x71, 0xd8, 0xfc, 0xb9, 0x35, 0xd4, 0x6f, 0xb0, 0x4d, 0x9c, 0x8f, 0x18, 0xd1, 0x53, 0xf9, 0x1f,
	0xa4, 0x59, 0x1e, 0x98, 0xcc, 0x67, 0x41, 0xa4, 0xdf, 0x64, 0x39, 0xf8, 0xeb, 0x4d, 0x67, 0x34,
	0x7c, 0x13, 0x1e, 0xbb, 0x33, 0x40, 0x1c, 0xbf, 0xf1, 0xfa, 0xc3, 0x61, 0x40, 0xf2, 0xd9, 0x3c,
	0x7e, 0x63, 0x0c, 0x87, 0x81, 0xae, 0xb3, 0xec, 0xb4, 0x3f, 0xf1, 0xb9, 0x66, 0x14, 0x6c, 0xfe,
	0x5b, 0x99, 0x2a, 0xab, 0x4e, 0x05, 0x1b, 0x0d, 0xa3, 0x7e, 0xe4, 0x97, 0x36, 0x70, 0xa3, 0xfc,
	0x01, 0x38, 0x0c, 0x4e, 0x82, 0xa0, 0xb4, 0xc9, 0x81, 0xfc, 0xb7, 0xfe, 0x01, 0x63, 0xfd, 0xe1,
	0xa9, 0x1f, 0x44, 0xa3, 0xd0, 0x1f, 0x96, 0x72, 0x1c, 0xa3, 0x40, 0xf4, 0x3b, 0xac, 0x10, 0x9e,
	0xcc, 0x61, 0x6d, 0xfe, 0xb0, 0x94, 0xe7, 0xe8, 0x18, 0x00, 0x1c, 0xe7, 0xbe, 0x1f, 0x94, 0x0a,
	0xc8, 0x11, 0x7e, 0xeb, 0x77, 0x19, 0x03, 0xce, 0x5e, 0x38, 0xf7, 0xfd, 0x61, 0x89, 0xe1, 0x10,
	0x80, 0x38, 0x00, 0xd0, 0x77, 0x59, 0x61, 0xd2, 0x3f, 0x23, 0x6c, 0x91, 0x63, 0xf3, 0x93, 0xfe,
	0x19, 0x47, 0x96, 0xff, 0x79, 0x8a, 0x5d, 0x55, 0x8e, 0xed, 0xb5, 0xdf, 0x8f, 0x4e, 0x02, 0x3f,
	0xd4, 0xef, 0xb1, 0xe2, 0xb0, 0x1f, 0xf5, 0xe7, 0xfd, 0xe8, 0x58, 0x08, 0x3c, 0x6b, 0x33, 0x01,
	0x6a, 0x71, 0xae, 0x53, 0xef, 0xf0, 0xe4, 0xf5, 0x6b, 0x3f, 0x08, 0x49, 0xec, 0xf9, 0x69, 0x15,
	0x9f, 0xe1, 0xac, 0xa6, 0x78, 0x74, 0x21, 0xd9, 0x55, 0x6e, 0xea, 0xf2, 0x47, 0xfd, 0x01, 0xdb,
	0xea, 0x9f, 0x9c, 0x8d, 0xc6, 0xa3, 0x7e, 0xf0, 0x16, 0x38, 0xa3, 0x18, 0x8b, 0x12, 0xd6, 0x1a,
	0xea, 0x65, 0xb6, 0x35, 0xe8, 0xcf, 0xfb, 0x87, 0xa3, 0xf1, 0x28, 0x1a, 0xf9, 0x21, 0x89, 0x34,
	0x01, 0x2b, 0x07, 0xec, 0xb2, 0x38, 0x59, 0x0f, 0x64, 0x7d, 0x12, 0xea, 0x8f, 0xd9, 0x66, 0xe0,
	0xf7, 0x43, 0xf2, 0x05, 0x3b, 0x8f, 0xee, 0x2c, 0xa9, 0x2f, 0xa7, 0x46, 0x1a, 0x9b, 0x68, 0xc1,
	0x51, 0x0c, 0xfd, 0x70, 0x40, 0x26, 0x79, 0x7d, 0xe5, 0x18, 0x9b, 0x93, 0x94, 0xff, 0x7a, 0x8a,
	0x6d, 0x49, 0x36, 0xa0, 0x92, 0x3f, 0xba, 0x4a, 0xc5, 0xea, 0x93, 0x49, 0xa8, 0x8f, 0xce, 0xb2,
	0x93, 0x7e, 0xf8, 0x39, 0x49, 0x83, 0xff, 0x06, 0x45, 0x90, 0x6a, 0x41, 0x32, 0x88, 0x01, 0xe5,
	0x37, 0x68, 0xbb, 0x93, 0x7e, 0x34, 0x38, 0xd6, 0x3f, 0x4e, 0xb8, 0xa5, 0xdd, 0xa5, 0x4d, 0x70,
	0x2a, 0xd5, 0x23, 0xfd, 0x2c, 0x63, 0xb3, 0xb3, 0x89, 0xf7, 0x7a, 0xe4, 0x8f, 0x87, 0xe8, 0x16,
	0x8a, 0x8f, 0x6e, 0x2f, 0x0d, 0x93, 0x24, 0x76, 0x61, 0x76, 0x36, 0x69, 0x70, 0xe2, 0xf2, 0x7f,
	0x4b, 0xa1, 0x65, 0x4a, 0xa4, 0xfe, 0x2d, 0x06, 0x68, 0x6f, 0x30, 0xee, 0x87, 0x21, 0x2d, 0x61,
	0x35, 0x2f, 0x4e, 0x61, 0xe7, 0x67, 0x67, 0x93, 0x1a, 0xfc, 0xd2, 0x7f, 0x01, 0xf6, 0x70, 0x88,
	0x5c, 0xf8, 0xd6, 0x8b, 0x8f, 0x3e, 0x58, 0x39, 0x50, 0x52, 0x35, 0x2f, 0xd9, 0xf9, 0xd9, 0xeb,
	0x43, 0xbe, 0x14, 0xfd, 0x25, 0xd3, 0xfd, 0xb3, 0xb9, 0x1f, 0x8c, 0xc0, 0x01, 0xf9, 0x01, 0xf1,
	0xd9, 0xe0, 0x7c, 0xbe, 0xb6, 0x92, 0xcf, 0x32, 0x79, 0xf3, 0x92, 0x7d, 0x45, 0x85, 0x72, 0xce,
	0xd5, 0x1c, 0xdb, 0xe0, 0xd8, 0xf2, 0x1f, 0xee, 0xa0, 0x57, 0x4b, 0x2c, 0xe2, 0xfc, 0x28, 0xa0,
	0x52, 0x72, 0x91, 0x87, 0x24, 0xf3, 0x5b, 0x2c, 0x7f, 0xdc, 0x0f, 0x3d, 0x7e, 0xce, 0xa0, 0x6d,
	0x79, 0x3b, 0x77, 0xdc, 0x0f, 0x3b, 0x70, 0xd4, 0xd7, 0x58, 0x16, 0x34, 0x07, 0x95, 0xa2, 0x79,
	0xc9, 0xe6, 0x4f, 0xfa, 0x87, 0x6c, 0x7b, 0x7e, 0xfc, 0x36, 0x1c, 0x0d, 0xfa, 0x63, 0xae, 0x73,
	0xa8, 0x1d, 0xcd, 0x4b, 0xf6, 0x96, 0x00, 0x5b, 0x40, 0xf6, 0x35, 0xb6, 0x43, 0x5e, 0xd2, 0x8f,
	0xfa, 0x60, 0xa1, 0x5c, 0x04, 0x59, 0x88, 0x19, 0x1c, 0xde, 0x21, 0xb0, 0x7e, 0x8b, 0xe5, 0xfc,
	0xe8, 0xd8, 0x1b, 0x86, 0x11, 0x77, 0x48, 0x5b, 0xcd, 0x4b, 0xf6, 0xa6, 0x1f, 0x1d, 0xd7, 0xc3,
	0x48, 0xa0, 0xc2, 0x60, 0xc0, 0x3d, 0x92, 0x40, 0x39, 0xc1, 0x40, 0xdf, 0x65, 0x79, 0x40, 0xf1,
	0x0d, 0xe7, 0x69, 0x01, 0x40, 0xec, 0xc2, 0x9e, 0x76, 0x59, 0xfe, 0x74, 0xdc, 0x9f, 0x7a, 0xa7,
	0xa3, 0x21, 0xba, 0x24, 0x40, 0x02, 0xe4, 0x60, 0x34, 0x94, 0xc8, 0xf9, 0x60, 0x8e, 0x5e, 0x49,
	0x20, 0xad, 0xc1, 0x1c, 0x66, 0x1c, 0xcd, 0xbd, 0x61, 0x38, 0x98, 0xa3, 0x4f, 0x82, 0x19, 0x47,
	0xf3, 0x7a, 0x38, 0x98, 0xeb, 0x37, 0xd9, 0xe6, 0x68, 0xee, 0xf9, 0x83, 0x69, 0x69, 0x8b, 0x30,
	0x1b, 0xa3, 0xb9, 0x39, 0x98, 0x02, 0xc3, 0xd1, 0xdc, 0xe3, 0x89, 0x40, 0x69, 0x5b, 0x30, 0x1c,
	0xcd, 0x2d, 0x9e, 0x58, 0x70, 0xe4, 0xe9, 0x63, 0xbe, 0x87, 0x9d, 0x18, 0x79, 0xfa, 0x98, 0x36,
	0xc1, 0x91, 0xb0, 0xf7, 0xcb, 0x2a, 0x92, 0x36, 0x1f, 0x0d, 0xe6, 0x7c, 0xa0, 0x26, 0x96, 0x12,
	0x0d, 0xe6, 0x30, 0x8e, 0x50, 0x30, 0xec, 0x8a, 0x82, 0xa2, 0x51, 0x27, 0x43, 0x1c, 0xa5, 0x0b,
	0xd4, 0xc9, 0x50, 0x8c, 0x02, 0x14, 0x8c, 0xba, 0xaa, 0xa0, 0x60, 0xd4, 0x2e, 0xcb, 0x87, 0x83,
	0x08, 0x87, 0x5d, 0x13, 0x0b, 0x01, 0x08, 0xad, 0x92, 0x23, 0x61, 0xe0, 0x75, 0x15, 0x09, 0x23,
	0x1f, 0xb0, 0xe2, 0x68, 0x30, 0x81, 0x4d, 0xf0, 0xa3, 0xb8, 0x41, 0x78, 0x86, 0x40, 0x7e, 0x1a,
	0x31, 0xc9, 0x60, 0x36, 0xf4, 0x4b, 0x37, 0x93, 0x24, 0xb5, 0xd9, 0xd0, 0x07, 0xd9, 0xf6, 0x83,
	0xb9, 0x37, 0x9b, 0x97, 0x4a, 0x42, 0xb6, 0xfd, 0x60, 0xde, 0xe3, 0xe7, 0x01, 0x88, 0x70, 0xde,
	0x2f, 0xdd, 0x12, 0x6b, 0xee, 0x07, 0x73, 0x67, 0xde, 0x17, 0xa8, 0x68, 0xde, 0x2f, 0xdd, 0x56,
	0x50, 0x6e, 0x8c, 0x0a, 0x8f, 0xfb, 0xa5, 0x5d, 0xa1, 0x37, 0x30, 0xea, 0x38, 0x1e, 0x75, 0xdc,
	0x2f, 0xdd, 0x51, 0x50, 0xee, 0x71, 0x9f, 0x4e, 0xe3, 0x09, 0x17, 0xc2, 0x5d, 0xc2, 0xc1, 0x69,
	0x3c, 0x89, 0x8f, 0xea, 0x09, 0x17, 0xc2, 0x07, 0x2a, 0x52, 0x08, 0x01, 0x90, 0xaf, 0xc7, 0xfd,
	0x43, 0x7f, 0x5c, 0xba, 0x27, 0x77, 0x38, 0x3f, 0x7d, 0xd2, 0xe0, 0x30, 0x29, 0x84, 0x27, 0x28,
	0xa7, 0xfb, 0x09, 0x21, 0x3c, 0x49, 0xc8, 0xe9, 0x09, 0xca, 0xe9, 0x41, 0x92, 0x84, 0xcb, 0xe9,
	0xab, 0x6c, 0x87, 0x4f, 0x34, 0x1d, 0x7a, 0x51, 0x3f, 0x38, 0xf2, 0xa3, 0x52, 0x99, 0xd6, 0xb2,
	0x05, 0xf0, 0xee, 0xd0, 0xe5, 0x50, 0xfd, 0x3e, 0x2d, 0x68, 0x3a, 0xf4, 0xc2, 0x70, 0x5c, 0xfa,
	0x0a, 0x11, 0x15, 0x90, 0xc8, 0x09, 0xc7, 0x2a, 0x45, 0x34, 0x1e, 0x97, 0x1e, 0x26, 0x29, 0xdc,
	0xf1, 0x58, 0xbf, 0xc7, 0xd8, 0x64, 0x3e, 0x0e, 0x3d, 0xdc, 0xd3, 0x87, 0xb4, 0x9a, 0x02, 0xc0,
	0xda, 0x7c, 0x4b, 0xb7, 0x58, 0x8e, 0x13, 0x44, 0x83, 0xd2, 0x57, 0xc5, 0x01, 0x00, 0xc0, 0xe5,
	0xd2, 0xe2, 0xa8, 0xc3, 0x59, 0x58, 0xfa, 0x9a, 0x50, 0x19, 0x80, 0x54, 0x67, 0x21, 0x20, 0xe7,
	0x87, 0x87, 0xde, 0x28, 0x1c, 0x0d, 0x4b, 0x1f, 0x09, 0xe4, 0xfc, 0xf0, 0xb0, 0x15, 0x8e, 0x86,
	0xfa, 0x5d, 0x56, 0x88, 0x4e, 0xa6, 0x53, 0x7f, 0x0c, 0x51, 0xf8, 0xeb, 0xe4, 0x31, 0xf2, 0x08,
	0x6a, 0x0d, 0xa5, 0xa4, 0xfd, 0xb3, 0xe8, 0x78, 0x18, 0x94, 0x2a, 0xaa, 0xa4, 0x4d, 0x0e, 0xd3,
	0x3f, 0x61, 0x57, 0x93, 0x8e, 0x07, 0x7d, 0xdb, 0x88, 0xf3, 0x4a, 0xd9, 0x57, 0x12, 0xde, 0x87,
	0xfb, 0xb9, 0x32, 0xdb, 0x22, 0x0f, 0x84, 0xa4, 0xbf, 0xc2, 0x85, 0x91, 0xb2, 0x19, 0xba, 0x21,
	0x95, 0x26, 0x0c, 0x06, 0x48, 0xf3, 0xb9, 0x42, 0xe3, 0x04, 0x03, 0x4e, 0xf3, 0x90, 0x6d, 0x0b,
	0xb7, 0x83, 0x44, 0x13, 0xbe, 0xbc, 0x94, 0x5d, 0x24, 0xdf, 0x23, 0xa8, 0x84, 0x47, 0x40, 0xaa,
	0x40, 0x50, 0x91, 0x5b, 0x48, 0x50, 0xc9, 0x45, 0x85, 0x2a, 0x95, 0xb2, 0x2a, 0x32, 0x0f, 0x24,
	0xfa, 0x35, 0x22, 0x62, 0x68, 0x23, 0x2a, 0x4d, 0x24, 0x68, 0xfe, 0xb2, 0x42, 0xe3, 0x12, 0xcd,
	0x87, 0x7c, 0xb6, 0x27, 0xf1, 0x9a, 0xfe, 0x4a, 0x8a, 0xf6, 0x57, 0x24, 0x03, 0x48, 0x90, 0xc9,
	0x45, 0xfd, 0x7a, 0x82, 0x4c, 0xac, 0xea, 0x1b, 0x4c, 0x53, 0xcc, 0x01, 0x29, 0x7f, 0x23, 0x45,
	0xd3, 0xee, 0xc4, 0x46, 0x21, 0x78, 0x0a, 0x6d, 0x40, 0xca, 0xbf, 0x29, 0x28, 0x8b, 0xa4, 0x13,
	0x9c, 0x0c, 0xc2, 0x89, 0xd0, 0x0b, 0xa4, 0xfb, 0xcd, 0x14, 0x9d, 0xe8, 0x96, 0xd0, 0x8e, 0xc4,
	0xe4, 0xa8, 0x21, 0x48, 0xfa, 0x5b, 0x89, 0xc9, 0x51, 0x4f, 0x80, 0x18, 0x22, 0xea, 0x69, 0x7f,
	0x7c, 0xe2, 0x57, 0x37, 0x31, 0xd3, 0x29, 0x7b, 0xec, 0xf6, 0xfa, 0xa8, 0x0c, 0x29, 0x2d, 0x60,
	0xb0, 0xc8, 0xa0, 0xe4, 0x0a, 0x92, 0x8c, 0x26, 0x96, 0x61, 0xa0, 0x23, 0xca, 0x20, 0xca, 0x3f,
	0x13, 0xb0, 0xf2, 0x3f, 0xcb, 0x62, 0xa9, 0xd8, 0x1f, 0x40, 0xfd, 0xa8, 0x7f, 0x92, 0x88, 0xd9,
	0xcb, 0xb9, 0x21, 0x92, 0xa9, 0x39, 0xd2, 0xb7, 0xd9, 0xe6, 0xec, 0x24, 0x9a, 0x9f, 0x44, 0x94,
	0x1b, 0x7e, 0xb0, 0x6e, 0x0c, 0x52, 0x81, 0x51, 0xe2, 0x2f, 0xfd, 0x17, 0xc8, 0x28, 0xa3, 0x68,
	0xcc, 0x43, 0x7a, 0x71, 0x45, 0xa5, 0x48, 0x63, 0x05, 0x9d, 0x30, 0x5b, 0x37, 0x1a, 0xeb, 0x8f,
	0x58, 0x76, 0x7e, 0x12, 0x1e, 0x53, 0x46, 0xb4, 0x76, 0xa9, 0x40, 0xc3, 0x73, 0x85, 0x93, 0xf0,
	0x18, 0xa6, 0x9c, 0xcf, 0xe6, 0x9c, 0x1d, 0x65, 0x40, 0x6b, 0xa7, 0x14, 0x74, 0xdc, 0x19, 0xcc,
	0xe6, 0x9d, 0xf9, 0x38, 0xd4, 0xbf, 0xc9, 0x36, 0x8e, 0x82, 0xd9, 0xc9, 0x9c, 0x27, 0x06, 0xc5,
	0x47, 0x77, 0xd7, 0x8d, 0xe5, 0x44, 0x10, 0x34, 0xf8, 0x0f, 0xfd, 0x5b, 0x6c, 0x73, 0xfa, 0x86,
	0x6f, 0x33, 0x77, 0xbe, 0x88, 0x90, 0x0a, 0x06, 0x4e, 0xdf, 0xc0, 0x16, 0x9f, 0xb2, 0x42, 0xe8,
	0x47, 0x94, 0xb1, 0xe5, 0xf9, 0xd8, 0x07, 0xeb, 0xc6, 0x4a, 0x42, 0xf0, 0x4f, 0xa1, 0x1f, 0x61,
	0xf2, 0xf7, 0xdd, 0x05, 0x15, 0x28, 0x70, 0x26, 0x0f, 0xd7, 0x31, 0x51, 0x69, 0xc1, 0x89, 0xab,
	0xcf, 0xd5, 0x3c, 0xdb, 0x44, 0xb2, 0xf2, 0x53, 0x4c, 0xf7, 0x12, 0x07, 0xcb, 0x6b, 0x2e, 0x48,
	0xbf, 0x52, 0x54, 0x73, 0x51, 0x35, 0x09, 0x45, 0x55, 0x5c, 0xbc, 0x6e, 0x4e, 0xfa, 0x67, 0x50,
	0xb7, 0x7e, 0x82, 0xf5, 0xd4, 0xc2, 0xf1, 0x42, 0xf2, 0x27, 0x55, 0x82, 0xaa, 0x57, 0x3a, 0xee,
	0xf2, 0xc7, 0x58, 0xca, 0x28, 0xa7, 0x0a, 0xa9, 0xbf, 0x1f, 0x1d, 0xfb, 0x81, 0xd4, 0xd8, 0x6d,
	0x3b, 0x06, 0x94, 0x3f, 0x4b, 0x4c, 0x21, 0x8e, 0xf3, 0x0b, 0x06, 0xfd, 0x34, 0xd3, 0x16, 0xcf,
	0x11, 0x16, 0xc5, 0x7f, 0x28, 0x25, 0x35, 0x7f, 0x6e, 0x0d, 0xcb, 0x95, 0x84, 0x20, 0xf0, 0xf8,
	0xf4, 0xeb, 0xf2, 0xb8, 0xa9, 0x9c, 0xe7, 0x87, 0x59, 0x6e, 0xb2, 0x6b, 0xab, 0x8e, 0x4b, 0xff,
	0x84, 0xb2, 0x68, 0x4e, 0x7d, 0x7e, 0x7d, 0x41, 0xe9, 0xf6, 0x73, 0x76, 0x73, 0xcd, 0x99, 0x2d,
	0x99, 0x7c, 0x6a, 0xd9, 0xe4, 0xe1, 0xa0, 0x78, 0xfe, 0x0b, 0x27, 0xb2, 0x65, 0xf3, 0xdf, 0xe5,
	0xdf, 0xcd, 0xa0, 0x78, 0x47, 0xd3, 0x30, 0x0a, 0x4e, 0xd0, 0x17, 0xe8, 0x8a, 0x2f, 0xd8, 0x26,
	0x6b, 0x6f, 0x32, 0x76, 0x34, 0x8b, 0x66, 0x58, 0xb5, 0x92, 0xc5, 0x2f, 0x17, 0x11, 0x0a, 0x17,
	0x2f, 0x26, 0x87, 0x68, 0x0d, 0x4f, 0xbc, 0xc4, 0xd5, 0x5d, 0xb6, 0xf3, 0x26, 0x18, 0x45, 0x4a,
	0x3e, 0x8e, 0x3e, 0xe0, 0x1b, 0xe7, 0x72, 0x4b, 0x0e, 0x81, 0xe4, 0x9d, 0x43, 0x64, 0xf2, 0xfe,
	0x94, 0xe5, 0x50, 0x2c, 0x21, 0xf9, 0x85, 0x87, 0xe7, 0xb2, 0x23, 0x5a, 0xb0, 0x71, 0xfa, 0xa9,
	0x7f, 0x87, 0x6d, 0x4c, 0x7c, 0x10, 0x1d, 0xfa, 0x87, 0xf2, 0xb9, 0xe3, 0x39, 0x25, 0xd8, 0x2b,
	0xff, 0xa1, 0xf7, 0x16, 0xa4, 0xbf, 0xb9, 0xa6, 0x81, 0xa5, 0xb2, 0x38, 0xd7, 0xe4, 0x36, 0xf1,
	0xa8, 0xca, 0xdf, 0xc2, 0x30, 0xb0, 0x5a, 0xae, 0xe7, 0xf4, 0x7c, 0xca, 0x7d, 0xf6, 0xc1, 0xf9,
	0x22, 0xd4, 0x6f, 0xb3, 0xbc, 0x3c, 0x01, 0xec, 0x5f, 0xc8, 0x67, 0xfd, 0x2b, 0x6c, 0x3b, 0x99,
	0xb4, 0xa4, 0x39, 0xc1, 0xd6, 0x44, 0xc9, 0x56, 0xca, 0x6d, 0xd4, 0xc6, 0x15, 0x62, 0xd5, 0x3f,
	0x8d, 0x4f, 0x03, 0x7b, 0x65, 0x37, 0xd7, 0x38, 0x1e, 0x29, 0xfe, 0xf2, 0x23, 0xec, 0x29, 0x2e,
	0x09, 0x99, 0xbb, 0x06, 0xf8, 0xa1, 0x6c, 0x92, 0x3f, 0xb7, 0x86, 0xe5, 0x03, 0x6c, 0xed, 0xad,
	0x93, 0xea, 0x8f, 0x6d, 0x14, 0xff, 0x25, 0x83, 0x9d, 0x0c, 0xbe, 0xde, 0xc9, 0x8c, 0x3a, 0x68,
	0xb3, 0xcf, 0x47, 0x3e, 0x49, 0x8a, 0x9e, 0xf4, 0x7b, 0xac, 0x88, 0xbf, 0x54, 0x29, 0x31, 0x04,
	0xf1, 0x24, 0x40, 0x3d, 0xa1, 0x4c, 0xb2, 0x2b, 0xf7, 0x73, 0x2c, 0x37, 0x98, 0x4d, 0x26, 0xfd,
	0x29, 0xd6, 0xf6, 0x3b, 0x2b, 0x3c, 0xbc, 0x98, 0xdf, 0x23, 0x42, 0x5b, 0x8c, 0xd0, 0x1f, 0xb0,
	0xad, 0xd1, 0x70, 0xec, 0x7b, 0xd1, 0x68, 0xe2, 0xcf, 0x4e, 0x22, 0xea, 0x7f, 0x14, 0x01, 0xe6,
	0x22, 0x08, 0x48, 0x8e, 0xfb, 0xc1, 0x50, 0x92, 0x60, 0x93, 0xad, 0x08, 0x30, 0x41, 0x72, 0x9b,
	0xe5, 0xe7, 0xc1, 0x68, 0x16, 0x8c, 0xa2, 0xb7, 0xd4, 0x69, 0x93, 0xcf, 0xfa, 0x2e, 0x2b, 0x60,
	0xfb, 0x0a, 0x96, 0x8e, 0x7d, 0xb6, 0x3c, 0x02, 0x5a, 0xbc, 0xd9, 0x38, 0x3b, 0x89, 0xb0, 0xea,
	0xc6, 0x56, 0x5b, 0x6e, 0x76, 0x12, 0xf1, 0x72, 0x7b, 0x97, 0x15, 0x00, 0x85, 0xe1, 0x12, 0x9b,
	0x6d, 0x40, 0xbb, 0xc7, 0x3d, 0xaa, 0xec, 0x77, 0x16, 0xd5, 0x7e, 0xe7, 0x4f, 0xb1, 0x0d, 0xde,
	0x81, 0xe1, 0xf5, 0x6c, 0xf1, 0xd1, 0x8d, 0xd5, 0xfd, 0x19, 0x1b, 0x89, 0xf4, 0xa7, 0x6c, 0x4b,
	0x39, 0xf0, 0xb0, 0xb4, 0xcd, 0x15, 0xec, 0xce, 0x79, 0xb6, 0x66, 0x27, 0x46, 0x94, 0xbf, 0x9f,
	0xc2, 0xd4, 0xe7, 0xf0, 0x64, 0xf0, 0xb9, 0x1f, 0xc1, 0xe1, 0xbe, 0xf1, 0x47, 0x47, 0xc7, 0x22,
	0x82, 0xd1, 0x13, 0x24, 0x59, 0x6f, 0x78, 0x63, 0x88, 0x6f, 0x13, 0xc3, 0x58, 0x81, 0x43, 0xf8,
	0x46, 0xef, 0xb1, 0x22, 0xa2, 0x71, 0xab, 0x78, 0xba, 0x38, 0x02, 0x37, 0xfb, 0xa9, 0xea, 0x92,
	0x2e, 0x66, 0x04, 0xff, 0x9e, 0x9a, 0x47, 0x18, 0x76, 0x40, 0xf3, 0x7e, 0x3e, 0xd6, 0x12, 0x4c,
	0xcd, 0x96, 0xfd, 0x92, 0x24, 0x5e, 0x56, 0x93, 0x8f, 0x13, 0x6d, 0xfe, 0xdd, 0x35, 0x43, 0x95,
	0xa4, 0x4e, 0x0d, 0x79, 0x99, 0x44, 0xc8, 0x83, 0xed, 0xa0, 0xc0, 0xd6, 0x6f, 0x07, 0xf1, 0xb6,
	0xa0, 0x2b, 0xff, 0x66, 0x8a, 0xed, 0xf0, 0x8e, 0x60, 0x1f, 0x9e, 0x21, 0x5f, 0x48, 0xaa, 0x55,
	0x6a, 0x41, 0xad, 0x6e, 0xb2, 0xdc, 0x68, 0xaa, 0x8a, 0x7b, 0x73, 0x34, 0xe5, 0xb2, 0x56, 0x44,
	0x99, 0xb9, 0x98, 0x28, 0xa5, 0x5d, 0x67, 0x55, 0xbb, 0x26, 0xf1, 0xd2, 0x7a, 0x46, 0xd3, 0xf3,
	0x97, 0xf3, 0xb3, 0xb2, 0x63, 0x9a, 0x5e, 0x63, 0xa0, 0x92, 0xd1, 0x62, 0xdb, 0xf4, 0x1c, 0xbb,
	0x8f, 0x7d, 0x49, 0x36, 0xe1, 0x4b, 0xa4, 0x15, 0x6c, 0x5c, 0xc4, 0x0a, 0xc4, 0xf6, 0x36, 0x95,
	0xed, 0xfd, 0xfd, 0x0c, 0x26, 0x31, 0x7c, 0x50, 0xe0, 0x4f, 0x66, 0xa7, 0xfe, 0x7a, 0xd7, 0xa5,
	0xda, 0x7e, 0x7a, 0xc1, 0xf6, 0x7f, 0x5e, 0x6e, 0x3c, 0xc3, 0x37, 0xfe, 0x70, 0xb5, 0x67, 0xa2,
	0x29, 0xce, 0xdb, 0x7b, 0x36, 0xb9, 0xf7, 0x07, 0x6c, 0x6b, 0x78, 0x12, 0xf4, 0x29, 0x11, 0x1a,
	0x08, 0xb7, 0x25, 0x60, 0x8e, 0x3f, 0x80, 0xd0, 0x23, 0x49, 0xa6, 0x40, 0x83, 0x7e, 0x4b, 0x8e,
	0xeb, 0x86, 0xfe, 0x60, 0xc9, 0xfd, 0xe5, 0xbe, 0xd8, 0xfd, 0xe5, 0x97, 0xdd, 0xdf, 0x03, 0xb6,
	0x45, 0x07, 0x38, 0x98, 0x9d, 0x4c, 0xd1, 0x93, 0x65, 0xed, 0x22, 0xc2, 0x6a, 0x00, 0x02, 0x1f,
	0x70, 0xf8, 0x36, 0xf2, 0x89, 0x80, 0x71, 0x82, 0x02, 0x40, 0x10, 0x2d, 0xcf, 0xec, 0xed, 0x05,
	0xce, 0xac, 0xfc, 0x77, 0xe8, 0xbd, 0x19, 0x86, 0xb3, 0xc3, 0xfe, 0x74, 0x78, 0xd1, 0xf7, 0x66,
	0xca, 0x88, 0xe4, 0x9b, 0xb9, 0x38, 0xc1, 0x86, 0x9f, 0xa0, 0x15, 0x41, 0x3f, 0xf2, 0x49, 0xe5,
	0xf8, 0x6f, 0xbe, 0x85, 0x93, 0x20, 0x8c, 0xbc, 0x70, 0xf4, 0xab, 0x3e, 0x1d, 0x48, 0x81, 0x43,
	0x9c, 0xd1, 0xaf, 0xfa, 0xe5, 0x29, 0x66, 0xcb, 0xca, 0x0c, 0xc3, 0x60, 0x36, 0x5f, 0x99, 0x03,
	0x7e, 0x29, 0xf3, 0xfd, 0xdd, 0x14, 0xa6, 0x34, 0xea, 0x84, 0xe1, 0x60, 0x0e, 0xca, 0xd4, 0x0f,
	0x3e, 0xff, 0x89, 0xcd, 0x0b, 0xe8, 0x79, 0xe0, 0x0f, 0xbc, 0xb1, 0x7f, 0xea, 0x8f, 0xc5, 0xfb,
	0x02, 0x80, 0xb4, 0x01, 0x50, 0xfe, 0x57, 0x29, 0xb6, 0xbb, 0xb0, 0xac, 0x44, 0x9a, 0xf0, 0xff,
	0xef, 0x84, 0x96, 0xb2, 0x98, 0x8d, 0x15, 0xd5, 0xfc, 0xbf, 0x20, 0xcf, 0x86, 0xcb, 0xb8, 0x60,
	0xe0, 0x90, 0xc4, 0xcb, 0x81, 0x43, 0x06, 0xea, 0xb4, 0x1a, 0xa8, 0xd5, 0x54, 0x2c, 0x93, 0x48,
	0xc5, 0xf4, 0x6f, 0xb3, 0x0d, 0xd8, 0xbc, 0x88, 0x0d, 0xe5, 0xf3, 0x04, 0x44, 0xef, 0x46, 0x71,
	0x40, 0xf9, 0x19, 0xae, 0xdc, 0x0f, 0x82, 0x59, 0xe0, 0x4d, 0xc2, 0xa3, 0x95, 0x2a, 0xa0, 0xb3,
	0x2c, 0xef, 0x45, 0xa6, 0xe9, 0x4d, 0xe1, 0x6c, 0xe8, 0x4b, 0x17, 0x98, 0x51, 0x5c, 0xe0, 0x6f,
	0x90, 0x76, 0x21, 0xb7, 0x44, 0xe7, 0x64, 0x1d, 0xeb, 0x5b, 0x2c, 0xef, 0x9f, 0x61, 0x10, 0x24,
	0xf6, 0x39, 0xff, 0x6c, 0xce, 0x1b, 0xa1, 0x8b, 0x92, 0xcf, 0x9c, 0x93, 0x3f, 0xaa, 0x71, 0xe6,
	0x94, 0xec, 0xfc, 0x64, 0x1c, 0x8d, 0xe6, 0x7d, 0xfe, 0x52, 0xed, 0x7b, 0x27, 0x7e, 0x18, 0xe9,
	0x9f, 0x25, 0xb4, 0xe8, 0xde, 0xb2, 0x90, 0xe4, 0x08, 0x45, 0x89, 0x56, 0x9f, 0x85, 0xce, 0xb2,
	0x87, 0xb3, 0xe1, 0x5b, 0xb1, 0x7b, 0xf8, 0x5d, 0x8e, 0xc8, 0x96, 0x95, 0x79, 0xe7, 0xe3, 0xb7,
	0x3f, 0xe9, 0x59, 0x7f, 0x3b, 0x85, 0xaf, 0x91, 0x87, 0x7e, 0x38, 0xe0, 0x2a, 0xf2, 0x3a, 0xe0,
	0xbf, 0xf9, 0x7c, 0x05, 0x3b, 0x37, 0x79, 0x1d, 0xd4, 0x01, 0x85, 0x6f, 0xfd, 0xe4, 0xdb, 0xc4,
	0x82, 0xbd, 0x79, 0xfc, 0x46, 0x20, 0x42, 0x42, 0xe0, 0xbb, 0xe4, 0xcd, 0x10, 0x11, 0x77, 0x19,
	0x0b, 0xfd, 0x60, 0xd4, 0x1f, 0x7b, 0xd3, 0x93, 0x09, 0x97, 0x70, 0xc1, 0x2e, 0x20, 0xa4, 0x7b,
	0x32, 0x81, 0x71, 0x43, 0x9c, 0x96, 0xdb, 0x44, 0xc1, 0xde, 0x1c, 0xce, 0x61, 0x5c, 0xf9, 0x0f,
	0x52, 0xec, 0x86, 0x8c, 0x52, 0x61, 0xd4, 0x8f, 0x42, 0x79, 0x02, 0xe7, 0xbc, 0x26, 0x57, 0x93,
	0xda, 0xf4, 0x39, 0x49, 0x6d, 0x66, 0x21, 0xa9, 0x5d, 0x17, 0xd0, 0x17, 0x8a, 0x83, 0x8d, 0xa5,
	0xe2, 0x40, 0x46, 0x8f, 0xcd, 0x8b, 0x44, 0x8f, 0x7f, 0x93, 0xc1, 0x64, 0x2a, 0xde, 0x94, 0xbe,
	0xc3, 0xd2, 0xa3, 0x21, 0x7f, 0x9b, 0x93, 0xb5, 0xd3, 0xa3, 0x73, 0xef, 0x00, 0x2c, 0x46, 0xde,
	0xf4, 0x05, 0x22, 0x6f, 0x66, 0x45, 0xe4, 0x55, 0xd3, 0x86, 0xec, 0x42, 0xda, 0xf0, 0xe5, 0x14,
	0x25, 0x52, 0xf1, 0x72, 0xaa, 0xe2, 0xc5, 0x42, 0xce, 0x27, 0x84, 0xfc, 0x25, 0xc6, 0xf0, 0xff,
	0x47, 0xd5, 0xc7, 0x1f, 0x52, 0xa4, 0xe9, 0x1f, 0x1d, 0x05, 0xfe, 0x51, 0x3f, 0xf2, 0xff, 0xcc,
	0x68, 0xe8, 0x5f, 0x62, 0xb7, 0x56, 0x6f, 0x0c, 0x9c, 0xd0, 0xe2, 0x41, 0xa5, 0xbe, 0xe8, 0xa0,
	0xd2, 0x8b, 0x07, 0x75, 0x97, 0x31, 0x3e, 0x35, 0xa2, 0x71, 0x8f, 0x05, 0x80, 0x70, 0x74, 0xf9,
	0x4f, 0x32, 0xe8, 0xfa, 0x51, 0x78, 0x74, 0x53, 0xc3, 0x9b, 0x07, 0xb3, 0xb9, 0x1f, 0xf0, 0x9c,
	0x56, 0x75, 0x82, 0x1f, 0x2d, 0xdf, 0x78, 0x5a, 0x1a, 0xa6, 0x7a, 0xc3, 0x83, 0x85, 0x63, 0xc7,
	0x06, 0xd8, 0x27, 0x17, 0xe1, 0xa2, 0x8e, 0xe3, 0xef, 0xc7, 0x94, 0x67, 0xdd, 0x66, 0xc5, 0xa9,
	0x7f, 0x16, 0xa9, 0x97, 0x41, 0x8a, 0x8f, 0x3e, 0xbe, 0x08, 0x5b, 0x65, 0x58, 0xf3, 0x92, 0xcd,
	0xe0, 0x91, 0xae, 0x90, 0xec, 0x2d, 0xb6, 0xc2, 0xbe, 0x71, 0x11, 0x7e, 0x2b, 0x3a, 0x62, 0x3f,
	0xc7, 0x32, 0xb3, 0xb3, 0xc9, 0xda, 0x1b, 0x03, 0x2b, 0x98, 0xcc, 0xce, 0x26, 0xcd, 0x4b, 0x36,
	0x8c, 0x02, 0x89, 0xad, 0x68, 0x89, 0x5d, 0x48, 0x62, 0xe7, 0x76, 0xc6, 0xc4, 0x9b, 0x92, 0xf2,
	0x11, 0xfb, 0xca, 0x05, 0x24, 0xbe, 0x64, 0xb0, 0xa9, 0x1f, 0xd9, 0x60, 0xbf, 0xcb, 0xca, 0x5f,
	0x7c, 0x06, 0xfa, 0x43, 0xb6, 0x13, 0x3f, 0x7a, 0xa3, 0x21, 0xce, 0xb4, 0x6d, 0x6f, 0xc9, 0x93,
	0x69, 0x0d, 0xc3, 0xb2, 0x83, 0x6d, 0xb9, 0xf5, 0xf2, 0xff, 0x71, 0x5a, 0x67, 0xdf, 0x5c, 0xa7,
	0xf8, 0x70, 0x1e, 0x10, 0x25, 0x67, 0x67, 0x13, 0xbe, 0xa2, 0x0c, 0x5e, 0xb6, 0x99, 0x9d, 0x4d,
	0x60, 0x2d, 0x7f, 0x3b, 0xb5, 0x56, 0x82, 0xe7, 0x76, 0xd1, 0x56, 0xbc, 0x4d, 0x4a, 0x24, 0x51,
	0x99, 0x64, 0x12, 0xf5, 0x0d, 0x96, 0xb8, 0x41, 0xe2, 0x51, 0xb6, 0x04, 0x2b, 0xd1, 0x54, 0x44,
	0x1d, 0x32, 0xa7, 0xdf, 0x49, 0x33, 0x7d, 0x69, 0x4d, 0xe1, 0x79, 0x3e, 0x51, 0xdc, 0x42, 0x4b,
	0x2b, 0xb7, 0xd0, 0x3e, 0x64, 0x3b, 0x4a, 0xfb, 0x12, 0xfc, 0x57, 0x86, 0x3b, 0x93, 0xed, 0xb8,
	0x7f, 0x09, 0xbe, 0x5c, 0x25, 0xe3, 0xcd, 0x51, 0x72, 0x8f, 0x92, 0xec, 0x05, 0x00, 0x95, 0x4b,
	0x49, 0x1b, 0x89, 0x4b, 0x49, 0xf7, 0x58, 0x71, 0xd2, 0x3f, 0xf3, 0xfc, 0x69, 0x14, 0x8c, 0xfc,
	0x90, 0x42, 0x19, 0x9b, 0xf4, 0xcf, 0x4c, 0x84, 0xe8, 0x7b, 0x50, 0x72, 0x70, 0xf7, 0x03, 0xf8,
	0x1c, 0x3f, 0xcd, 0x8b, 0x98, 0x11, 0xf8, 0x2b, 0x5b, 0x19, 0x5a, 0xfe, 0x7e, 0x0a, 0x9b, 0xf4,
	0x48, 0x8a, 0xb1, 0xff, 0xfc, 0x58, 0x0f, 0xaa, 0x71, 0xaa, 0x7a, 0xd2, 0x6d, 0xbb, 0x88, 0x30,
	0xf4, 0xa5, 0x0f, 0xd8, 0xd6, 0x78, 0x36, 0xfb, 0xfc, 0x64, 0xae, 0x78, 0xd3, 0xac, 0x5d, 0x44,
	0x18, 0x92, 0x7c, 0x85, 0x6d, 0x73, 0xd9, 0xf9, 0x43, 0xa2, 0xc9, 0x52, 0x0f, 0x18, 0x81, 0xe8,
	0x74, 0x3f, 0xc5, 0x44, 0x4b, 0xde, 0x33, 0x8b, 0xc3, 0xd8, 0xba, 0xcb, 0x5f, 0xe5, 0x3f, 0xa2,
	0x3c, 0x26, 0x1e, 0xb3, 0xfe, 0xa2, 0xd8, 0x5d, 0xc6, 0x82, 0x33, 0xea, 0xb2, 0x84, 0x22, 0x22,
	0x04, 0x67, 0x16, 0x02, 0x00, 0x1d, 0xc5, 0x68, 0xdc, 0x43, 0x21, 0x92, 0xe8, 0x5b, 0x2c, 0x1f,
	0x9c, 0x79, 0x10, 0x40, 0x42, 0x5a, 0x7c, 0x2e, 0x38, 0xab, 0xc2, 0x23, 0x97, 0x9e, 0x40, 0x61,
	0xd8, 0xcb, 0x45, 0x84, 0xc2, 0x39, 0xa1, 0x08, 0x9e, 0xfb, 0x43, 0x7e, 0xaa, 0x7c, 0xce, 0x3a,
	0x02, 0x68, 0x4e, 0x81, 0xce, 0x89, 0x39, 0x05, 0x7a, 0x97, 0x15, 0x82, 0x33, 0x2c, 0x3f, 0x42,
	0x4a, 0x55, 0xf2, 0xc1, 0x99, 0xc9, 0x9f, 0x01, 0x19, 0x49, 0x24, 0x66, 0x2a, 0xf9, 0x48, 0x20,
	0xef, 0xb3, 0xad, 0xe0, 0xcc, 0x7b, 0x1d, 0xf4, 0x27, 0x3e, 0x90, 0x50, 0xa2, 0xc2, 0x82, 0xb3,
	0x06, 0x80, 0x4c, 0x7e, 0x35, 0xb2, 0x18, 0x9c, 0x79, 0xb3, 0x53, 0x3f, 0xe0, 0x04, 0x45, 0xb1,
	0xb4, 0xde, 0xa9, 0x1f, 0x00, 0xfe, 0x0e, 0x5f, 0xf9, 0x20, 0x18, 0x70, 0xf4, 0x96, 0x98, 0xbc,
	0x16, 0x0c, 0x70, 0x34, 0x1b, 0xcc, 0xc6, 0xe3, 0x51, 0x48, 0x79, 0x0b, 0xc5, 0x7a, 0x01, 0x59,
	0xca, 0x10, 0x77, 0x2e, 0x90, 0x21, 0x5e, 0x5e, 0xce, 0x10, 0xcb, 0x8f, 0xf1, 0xb5, 0x00, 0xb6,
	0x11, 0x97, 0x52, 0x9b, 0x75, 0x2f, 0xd4, 0x0e, 0xd0, 0xee, 0xb1, 0x73, 0x88, 0x0a, 0xe7, 0x07,
	0xff, 0xf7, 0x49, 0x43, 0xf9, 0xfb, 0x69, 0x34, 0x1d, 0x65, 0x39, 0xe7, 0x2c, 0x83, 0x1f, 0x9f,
	0xff, 0x3a, 0x61, 0x37, 0xf9, 0xc0, 0x7f, 0x2d, 0x8d, 0x26, 0xb1, 0x9a, 0xcc, 0x17, 0xad, 0x26,
	0xbb, 0x98, 0xc2, 0x7c, 0x59, 0xfd, 0xaf, 0x2a, 0xdb, 0x22, 0x49, 0xf1, 0x1d, 0x91, 0x6f, 0xb9,
	0xb7, 0xa6, 0x21, 0x2b, 0xc4, 0x69, 0x17, 0xf1, 0xd9, 0x81, 0x31, 0x50, 0xb6, 0xed, 0xc4, 0x92,
	0xe1, 0xc5, 0xdb, 0x17, 0xdd, 0x93, 0x3c, 0xb7, 0x5d, 0x9c, 0x5e, 0xdb, 0x2e, 0xce, 0x5c, 0xb0,
	0x5d, 0xfc, 0xfb, 0x29, 0xf5, 0xac, 0xc0, 0xaf, 0xbe, 0xd5, 0x7f, 0x99, 0xee, 0x9f, 0xe2, 0x3b,
	0xd2, 0x75, 0x4b, 0x02, 0x92, 0xea, 0x4f, 0xfd, 0xfa, 0x7f, 0xff, 0x0f, 0x77, 0x37, 0x91, 0x1e,
	0x7e, 0xde, 0xd1, 0x6f, 0x2b, 0xd4, 0x3f, 0x9d, 0xa4, 0xc6, 0x3b, 0xab, 0xfa, 0x23, 0xbc, 0x97,
	0x2c, 0x12, 0xba, 0x3b, 0x6b, 0xf8, 0x73, 0x1a, 0xbc, 0xb5, 0x1c, 0x96, 0xff, 0x5a, 0x0a, 0x75,
	0x15, 0x51, 0x32, 0x46, 0x5d, 0x63, 0x1b, 0xfc, 0x3a, 0xa3, 0x78, 0xf9, 0xcb, 0x1f, 0x96, 0x2e,
	0xeb, 0xa6, 0x97, 0x2f, 0xeb, 0x82, 0xd2, 0x40, 0x20, 0xe1, 0xfc, 0x44, 0x90, 0x2e, 0x4c, 0xfa,
	0x67, 0x3c, 0x79, 0x0f, 0xf5, 0x52, 0xf2, 0x3d, 0xc2, 0x76, 0x1c, 0xf8, 0xbf, 0xad, 0xf6, 0xac,
	0x96, 0xbb, 0x0d, 0xe7, 0xbc, 0x39, 0xfb, 0x15, 0x7c, 0x27, 0xad, 0x34, 0x65, 0xd0, 0x34, 0x2a,
	0xec, 0x0a, 0xa9, 0x38, 0x07, 0xaa, 0x56, 0x77, 0x19, 0x11, 0xd5, 0xfe, 0x14, 0x7d, 0xbf, 0xfe,
	0x55, 0x76, 0x99, 0xeb, 0xba, 0x42, 0x89, 0xe6, 0xb7, 0x0d, 0x60, 0x49, 0x57, 0xfe, 0x3d, 0x32,
	0x41, 0x9c, 0x4c, 0x9a, 0xe0, 0x9a, 0xa5, 0x2d, 0xa4, 0xf9, 0xe9, 0x85, 0x34, 0x1f, 0x66, 0x8d,
	0xbb, 0xee, 0xaa, 0x1d, 0x6e, 0x23, 0xb8, 0x35, 0x45, 0xba, 0x32, 0xe3, 0xcb, 0x88, 0xa9, 0xd0,
	0x18, 0x8b, 0x00, 0x14, 0x34, 0x5f, 0x96, 0x39, 0x3e, 0x65, 0x2c, 0x96, 0x21, 0x19, 0xe3, 0x83,
	0xf3, 0x3a, 0x60, 0xa8, 0x4f, 0x05, 0xf8, 0x8d, 0xc6, 0xf8, 0x6b, 0xd8, 0xb9, 0x47, 0x92, 0x73,
	0x3f, 0x0e, 0x50, 0x25, 0x97, 0x5e, 0xd3, 0x83, 0xcb, 0xfc, 0xa8, 0x3d, 0xb8, 0x7f, 0x4a, 0x2a,
	0x8d, 0x04, 0x52, 0xa5, 0xe9, 0x6a, 0x3c, 0xbe, 0x16, 0x4f, 0xc9, 0xab, 0xf1, 0x1d, 0xfe, 0x5e,
	0xf6, 0x2e, 0x6d, 0x1a, 0x95, 0x9e, 0xce, 0x09, 0x20, 0xee, 0x4a, 0xc5, 0xcf, 0xac, 0x50, 0x7c,
	0xe2, 0x2f, 0x1a, 0x87, 0x82, 0x3f, 0xa8, 0x8e, 0x44, 0x0e, 0x66, 0xe3, 0x99, 0xe8, 0x79, 0x02,
	0xb2, 0x06, 0xcf, 0xe5, 0x53, 0xf6, 0x80, 0xb7, 0xf9, 0x12, 0x0d, 0x3e, 0x69, 0x00, 0xc7, 0xab,
	0xaf, 0x41, 0xa5, 0xbe, 0x20, 0x71, 0x5d, 0xe8, 0xfe, 0xad, 0xea, 0x2f, 0x8e, 0x31, 0xb8, 0x25,
	0xe6, 0xfd, 0xc9, 0xcd, 0x66, 0x62, 0x1f, 0xf1, 0x7b, 0x27, 0xfe, 0x09, 0x25, 0xe6, 0x34, 0x17,
	0xef, 0xc2, 0x60, 0xa2, 0x28, 0xce, 0x45, 0x16, 0xba, 0x4b, 0x3d, 0xe7, 0x72, 0x80, 0x8b, 0x56,
	0xd8, 0x4c, 0x46, 0x53, 0x8f, 0xb7, 0x9e, 0x6b, 0xac, 0xa8, 0xf0, 0x25, 0x2f, 0xbb, 0xac, 0x38,
	0x4b, 0x2b, 0xc0, 0xf4, 0x94, 0xae, 0x9b, 0x89, 0x9e, 0x76, 0x3a, 0xee, 0x69, 0xaf, 0x9a, 0xb3,
	0x7f, 0xf6, 0x13, 0x9e, 0xf3, 0xef, 0x51, 0x67, 0x45, 0x19, 0x99, 0x90, 0xfe, 0x97, 0x32, 0xf1,
	0x45, 0xaa, 0xa1, 0x55, 0x67, 0xf9, 0x57, 0x53, 0x68, 0xe2, 0xe4, 0xbc, 0xf8, 0x24, 0xa0, 0x0f,
	0x38, 0x5b, 0xec, 0x06, 0xf9, 0x33, 0xd6, 0x35, 0x4a, 0x9f, 0x07, 0x6f, 0x55, 0x55, 0x13, 0x05,
	0xc5, 0xba, 0x4e, 0xfb, 0x9a, 0xf5, 0x53, 0x2d, 0xf1, 0x08, 0xef, 0x4c, 0x20, 0xd1, 0x11, 0x4f,
	0x0e, 0xc0, 0xdb, 0xc8, 0xa0, 0xb1, 0xe2, 0x36, 0x57, 0xf9, 0x08, 0x0b, 0xcc, 0x15, 0x63, 0xe6,
	0xe3, 0xb7, 0x2b, 0xef, 0x7f, 0x7d, 0x93, 0x6d, 0x72, 0x6a, 0xf1, 0xf1, 0xc4, 0xdd, 0x75, 0xaf,
	0x4e, 0x39, 0x95, 0x4d, 0xc4, 0x65, 0x73, 0xe9, 0xaa, 0x14, 0xca, 0x69, 0x4d, 0xdf, 0x5e, 0xca,
	0x2e, 0x93, 0x90, 0x5d, 0xb9, 0xa3, 0x2a, 0xdf, 0xc5, 0xca, 0x92, 0x04, 0xbb, 0x74, 0x92, 0xdd,
	0x1f, 0x53, 0x5e, 0xa2, 0xf0, 0xfb, 0x71, 0xf8, 0x24, 0x8a, 0x8e, 0xcc, 0x52, 0xd1, 0xa1, 0x54,
	0x32, 0xd9, 0xc5, 0x4a, 0x26, 0x51, 0x38, 0x6c, 0x2c, 0x14, 0x0e, 0x8b, 0x51, 0x6c, 0xf3, 0x02,
	0x51, 0x2c, 0xb7, 0x22, 0x71, 0x9f, 0xa0, 0x82, 0x06, 0xb3, 0xb1, 0x2f, 0xc5, 0xf5, 0x98, 0x65,
	0xe1, 0x79, 0xed, 0x6b, 0xaf, 0xc1, 0x6c, 0x1a, 0x05, 0xb3, 0xf1, 0xd8, 0x0f, 0xf8, 0x38, 0x9b,
	0x53, 0xc3, 0x74, 0x47, 0xfe, 0xd4, 0xa7, 0x09, 0x49, 0x10, 0x59, 0x7b, 0x2b, 0x06, 0xb6, 0x86,
	0xe5, 0xdf, 0x22, 0x83, 0xe8, 0x87, 0x6f, 0xa7, 0x03, 0x11, 0xf3, 0x1e, 0xb2, 0x9d, 0x38, 0xba,
	0xf3, 0xa6, 0x24, 0x75, 0x51, 0x44, 0x70, 0xe7, 0x6d, 0xc9, 0x8f, 0x98, 0xa6, 0x7c, 0xd9, 0x24,
	0xee, 0xde, 0x00, 0xdd, 0x0e, 0xc0, 0x1d, 0x0e, 0xe6, 0x94, 0x15, 0x76, 0x25, 0xf1, 0xaa, 0x9a,
	0x93, 0x62, 0x86, 0x75, 0x19, 0x10, 0x36, 0xc2, 0xf9, 0x7d, 0xa6, 0x17, 0xec, 0x72, 0x63, 0x3c,
	0x7b, 0xc3, 0x7b, 0x35, 0xfb, 0xf3, 0x21, 0xb8, 0x2a, 0x6c, 0xb0, 0xe3, 0x7b, 0x8c, 0xf4, 0x68,
	0xa8, 0x3f, 0x66, 0x79, 0x71, 0x27, 0x87, 0x32, 0xc6, 0x5b, 0x6b, 0x2f, 0xed, 0xd8, 0x39, 0xf8,
	0xd5, 0x99, 0x0d, 0xcb, 0x1e, 0xbb, 0x06, 0x8c, 0x79, 0x3a, 0x77, 0x1e, 0xf7, 0x6f, 0xb1, 0x82,
	0xbc, 0xcb, 0x41, 0xec, 0x6f, 0xaf, 0xbf, 0xed, 0x61, 0x63, 0xea, 0x0d, 0x13, 0x7c, 0x87, 0x6d,
	0xc0, 0x04, 0xa1, 0xfe, 0x29, 0xdb, 0x18, 0x45, 0xfe, 0x44, 0xb4, 0x8e, 0x76, 0x57, 0x2f, 0x8e,
	0xb2, 0x59, 0x4e, 0x59, 0x7e, 0xca, 0x98, 0x5c, 0x5c, 0x08, 0xf9, 0xb0, 0xca, 0x60, 0x5d, 0x3e,
	0xcc, 0x73, 0x73, 0xc1, 0xc1, 0x61, 0x79, 0x8b, 0x4e, 0x67, 0xd5, 0x96, 0xe4, 0x79, 0xae, 0xdd,
	0x92, 0xa4, 0xb0, 0xf3, 0xe2, 0x98, 0xcb, 0x2f, 0x58, 0x01, 0x99, 0xf6, 0x4e, 0xa2, 0x25, 0xae,
	0xdf, 0x61, 0x2c, 0xbe, 0x52, 0x42, 0x6c, 0x77, 0xd7, 0xb1, 0x9d, 0x9d, 0x44, 0x36, 0x2d, 0xa2,
	0x77, 0x02, 0xbe, 0xac, 0x58, 0x3b, 0xee, 0x4f, 0x8f, 0x7c, 0xf3, 0xd4, 0x9f, 0x2e, 0xb3, 0xfe,
	0x73, 0xac, 0xa8, 0xa8, 0xd6, 0xda, 0xb2, 0x40, 0xa1, 0x69, 0x5e, 0xb2, 0x59, 0xac, 0x75, 0xd5,
	0x1c, 0xdb, 0xf0, 0x81, 0x73, 0xe5, 0x3f, 0xa7, 0x58, 0x51, 0x92, 0x4e, 0x67, 0xba, 0xc6, 0xb6,
	0x7a, 0x0d, 0xcb, 0xf2, 0x5a, 0xdd, 0x03, 0xa3, 0xdd, 0xaa, 0x6b, 0x97, 0x74, 0x8d, 0xe5, 0x39,
	0xa4, 0x63, 0xbc, 0xd4, 0xde, 0xfd, 0xf0, 0xfd, 0xfb, 0x9c, 0x7e, 0x4d, 0xd2, 0x78, 0x56, 0xcf,
	0x76, 0xb5, 0xff, 0xf1, 0x1e, 0xa0, 0x3a, 0x63, 0x1c, 0xea, 0x1a, 0xd5, 0xb6, 0xa9, 0xfd, 0x4f,
	0x0e, 0xbb, 0xca, 0x8a, 0x1c, 0xd6, 0xed, 0xd9, 0x1d, 0xa3, 0xad, 0xfd, 0x69, 0x82, 0xb0, 0xd1,
	0xee, 0xf5, 0xea, 0xda, 0xff, 0xe2, 0x30, 0x31, 0x89, 0xd1, 0x6e, 0x6b, 0x3f, 0xe0, 0x90, 0x9b,
	0xec, 0x32, 0x87, 0xd4, 0x7a, 0x5d, 0xd7, 0xee, 0xb5, 0xdb, 0xa6, 0xad, 0xfd, 0xef, 0xc4, 0xf0,
	0x76, 0xaf, 0x66, 0xb4, 0xb5, 0x1f, 0x26, 0x87, 0x77, 0x5f, 0x69, 0xef, 0x01, 0x52, 0xf9, 0xb7,
	0x1b, 0xf8, 0xba, 0x8f, 0x3b, 0xe1, 0x1d, 0x3e, 0xc4, 0xf5, 0x9a, 0x66, 0xbb, 0xdd, 0xd3, 0x2e,
	0xc9, 0x67, 0xd3, 0xb6, 0x7b, 0xb6, 0x96, 0xd2, 0xaf, 0xb3, 0x2b, 0xf8, 0x5c, 0x6b, 0xf6, 0x3c,
	0xdb, 0x7c, 0xbe, 0x6f, 0x3a, 0xae, 0x96, 0xd6, 0xaf, 0xf2, 0x25, 0x48, 0xb0, 0xd5, 0x7e, 0xa5,
	0x65, 0x62, 0xda, 0x97, 0x96, 0x69, 0xb7, 0x3a, 0x66, 0xd7, 0x35, 0x6d, 0x2d, 0xab, 0xdf, 0x62,
	0xd7, 0x39, 0xb8, 0x61, 0x1a, 0xee, 0xbe, 0x6d, 0x3a, 0x92, 0xcd, 0x86, 0x7e, 0x93, 0x5d, 0x5d,
	0x44, 0x01, 0xab, 0x4d, 0x7d, 0x97, 0xdd, 0xe4, 0x88, 0x3d, 0xd3, 0x85, 0x6d, 0x36, 0x5a, 0x7b,
	0x72, 0x54, 0x4e, 0x32, 0x4c, 0x20, 0x61, 0x5c, 0x5e, 0xae, 0xcb, 0x91, 0x28, 0xad, 0xa0, 0xeb,
	0x6c, 0x87, 0x03, 0x2d, 0xa3, 0xf6, 0xcc, 0x74, 0xbd, 0x56, 0x57, 0x63, 0x72, 0xad, 0x8d, 0x76,
	0xef, 0x85, 0x67, 0x9b, 0x9d, 0xde, 0x81, 0x59, 0xd7, 0x8a, 0xfa, 0x35, 0xa6, 0x21, 0x69, 0xcf,
	0x76, 0x3d, 0xc7, 0x35, 0xdc, 0x7d, 0x47, 0xdb, 0x92, 0x5c, 0x89, 0x41, 0x6f, 0xdf, 0xd5, 0xb6,
	0xf5, 0x2b, 0x6c, 0x3b, 0xe6, 0xd0, 0xe9, 0xd5, 0xb5, 0x1d, 0x39, 0xd1, 0x9e, 0xdd, 0xdb, 0xb7,
	0x38, 0xec, 0xb2, 0x24, 0xe3, 0x1c, 0x01, 0xa4, 0x49, 0x32, 0xae, 0x0e, 0x1c, 0x76, 0x45, 0xbf,
	0xcd, 0x6e, 0x70, 0x58, 0x67, 0xbf, 0xed, 0xb6, 0x2c, 0xc3, 0x76, 0xe5, 0x7e, 0x75, 0xbd, 0xc4,
	0xae, 0x2d, 0xe1, 0x60, 0xbb, 0x57, 0x25, 0xa6, 0x6a, 0xd8, 0x76, 0xcb, 0xb4, 0xe5, 0x98, 0x6b,
	0xfa, 0x0d, 0xa6, 0x2f, 0x60, 0x60, 0xc4, 0x75, 0xfd, 0x01, 0xbb, 0xcb, 0xe1, 0xcf, 0xf7, 0xcd,
	0x7d, 0x73, 0x95, 0x78, 0x6f, 0xe8, 0xf7, 0xd8, 0xee, 0x3a, 0x12, 0xe0, 0x71, 0x53, 0xca, 0xce,
	0xee, 0xb5, 0x4d, 0x39, 0xae, 0x24, 0xa5, 0x44, 0x60, 0xa0, 0xbd, 0x25, 0xf7, 0x05, 0x6c, 0x0c,
	0xe7, 0x55, 0xb7, 0x26, 0x07, 0xdc, 0x96, 0xab, 0x57, 0x71, 0x30, 0x6a, 0x57, 0x4a, 0xc8, 0x11,
	0x18, 0xed, 0x8e, 0x84, 0x75, 0x4c, 0xd7, 0xb4, 0xb9, 0xd4, 0xee, 0x56, 0x6a, 0xf8, 0xbe, 0x7c,
	0xe1, 0xab, 0x74, 0x22, 0x6d, 0xf2, 0xb3, 0x16, 0xb6, 0x8a, 0x93, 0x01, 0xec, 0xc0, 0xb4, 0x9d,
	0x56, 0xaf, 0x5b, 0x6d, 0xb9, 0x1d, 0xc3, 0xd2, 0x52, 0x15, 0x1f, 0xc3, 0x18, 0xa5, 0x44, 0x58,
	0xa4, 0xa1, 0x1e, 0xd4, 0xbc, 0x86, 0x6d, 0xec, 0x09, 0x13, 0xbd, 0x44, 0x7c, 0x09, 0x5a, 0xb7,
	0x7b, 0x96, 0x96, 0xa2, 0x5d, 0x13, 0xcc, 0x36, 0x0d, 0xa7, 0xa3, 0xa5, 0x93, 0x84, 0x1d, 0xc3,
	0x79, 0xa6, 0x65, 0x2a, 0x4f, 0x71, 0x1a, 0xec, 0xf9, 0x52, 0xb4, 0x24, 0xe5, 0xa8, 0x29, 0xeb,
	0x24, 0xe5, 0xae, 0x79, 0x75, 0xd3, 0xb2, 0xcd, 0x9a, 0xe1, 0x9a, 0x75, 0xc1, 0xe1, 0x17, 0xf1,
	0x93, 0x58, 0xbc, 0x3a, 0x4c, 0x43, 0xd5, 0x2d, 0xee, 0xb0, 0x02, 0x82, 0xc0, 0x1f, 0xfd, 0x30,
	0x15, 0x3f, 0x83, 0xeb, 0x78, 0x9f, 0xaa, 0xfc, 0x4b, 0x0a, 0xd8, 0x89, 0x12, 0x0e, 0xbd, 0x9a,
	0xba, 0x02, 0xb9, 0x23, 0x50, 0x6c, 0xb0, 0x01, 0x47, 0x4b, 0x49, 0x81, 0xa0, 0xce, 0x22, 0x34,
	0x2d, 0x49, 0xa5, 0xb9, 0x38, 0x5a, 0x56, 0x92, 0xa2, 0x15, 0x20, 0x34, 0x4f, 0xeb, 0xad, 0x79,
	0x2d, 0x8b, 0xa4, 0x74, 0x5f, 0x12, 0xa2, 0xa2, 0x21, 0xe1, 0x53, 0xfd, 0x06, 0xd7, 0x2e, 0xe2,
	0x59, 0x6d, 0xf7, 0x6a, 0xcf, 0xcc, 0xba, 0xf6, 0x2e, 0x5d, 0x39, 0x55, 0xbe, 0x88, 0x4e, 0x88,
	0x6f, 0xc5, 0xe2, 0xc5, 0xf0, 0x7a, 0xef, 0x45, 0x57, 0x4b, 0xc5, 0x74, 0x5d, 0x70, 0x56, 0xb5,
	0x03, 0x2d, 0x2b, 0x9c, 0x39, 0x07, 0x35, 0x5e, 0xd4, 0xb5, 0xfb, 0x64, 0x31, 0x08, 0x89, 0x3d,
	0xc5, 0xd3, 0xca, 0x9f, 0x5f, 0xe8, 0x76, 0x0b, 0xd1, 0x5b, 0xce, 0xf2, 0xb4, 0x8e, 0xd7, 0x6e,
	0x75, 0x9f, 0x2d, 0x4c, 0xeb, 0xc8, 0x5d, 0xa4, 0xc9, 0xbd, 0x72, 0xba, 0x03, 0x53, 0xcb, 0x56,
	0xfe, 0x28, 0x8d, 0xdf, 0x21, 0x70, 0xee, 0xb2, 0x6c, 0xa7, 0x81, 0x0d, 0x65, 0x02, 0x09, 0xfa,
	0xf4, 0x93, 0x4e, 0xd5, 0x6b, 0xd6, 0x63, 0xf6, 0x04, 0x6a, 0xd4, 0xa5, 0xde, 0x71, 0x10, 0x91,
	0x65, 0x17, 0x61, 0x8d, 0xba, 0x96, 0x17, 0xbb, 0x6f, 0x78, 0x9f, 0xee, 0x71, 0x2a, 0x2d, 0x09,
	0x69, 0x80, 0x3c, 0x14, 0xf6, 0x08, 0x7a, 0xaa, 0xeb, 0x02, 0xf4, 0x98, 0x40, 0xef, 0x40, 0xff,
	0x63, 0xf6, 0x04, 0x4c, 0xeb, 0x57, 0x24, 0x37, 0x17, 0x41, 0x20, 0xf0, 0x22, 0x82, 0x7a, 0x6e,
	0xd3, 0xb4, 0xb5, 0x77, 0xf9, 0x98, 0xa8, 0xd6, 0xb3, 0x2c, 0x00, 0x69, 0x31, 0x51, 0xa3, 0x55,
	0x05, 0xc8, 0xfd, 0x78, 0x4a, 0x63, 0xdf, 0xed, 0x75, 0xcd, 0x3d, 0xed, 0xdd, 0x53, 0xfd, 0x8a,
	0xa0, 0xb2, 0x8c, 0x7d, 0xc7, 0xd4, 0xde, 0xbd, 0x4b, 0xe9, 0x37, 0xb8, 0x2a, 0x09, 0x10, 0xf8,
	0x8c, 0x8e, 0xf6, 0xee, 0x5d, 0xba, 0x52, 0x57, 0x94, 0x86, 0x6e, 0x37, 0x6e, 0x73, 0xab, 0xb0,
	0x6c, 0xcf, 0xa8, 0x63, 0x0c, 0xdf, 0xc2, 0xc7, 0xba, 0xd9, 0x36, 0x5d, 0x53, 0x4b, 0xc5, 0x90,
	0x4e, 0xaf, 0xde, 0x6a, 0xbc, 0xd2, 0xd2, 0x95, 0xcf, 0x50, 0x05, 0xe2, 0xaf, 0xcc, 0x49, 0xa8,
	0x1d, 0xae, 0xf4, 0xdd, 0xba, 0x61, 0x03, 0x27, 0x64, 0xdc, 0x71, 0xbd, 0xde, 0xcb, 0x8e, 0x96,
	0xaa, 0x7c, 0x1e, 0x7f, 0x46, 0xce, 0xbf, 0x0b, 0x27, 0xbe, 0x2f, 0x3b, 0x35, 0xaf, 0xfb, 0xb2,
	0xe3, 0x7d, 0x22, 0xe7, 0x16, 0x90, 0x4f, 0xb5, 0x94, 0xbe, 0xcb, 0xad, 0x1f, 0x20, 0x3d, 0xcb,
	0xec, 0x72, 0x0b, 0xac, 0x1a, 0x4e, 0xab, 0x06, 0x9b, 0xd1, 0x6f, 0xf1, 0x68, 0x09, 0xc8, 0x44,
	0x84, 0x7d, 0xff, 0x3e, 0x53, 0xf9, 0x5b, 0x79, 0x76, 0x75, 0xc5, 0x97, 0xd9, 0xa4, 0xd4, 0x2f,
	0x61, 0x51, 0x8d, 0xaa, 0xcc, 0x4a, 0x2e, 0x91, 0x5b, 0x56, 0xe1, 0xcd, 0x57, 0x88, 0x4b, 0x51,
	0x50, 0x16, 0xb8, 0x8e, 0xe9, 0x1a, 0x75, 0xc3, 0x35, 0xb4, 0xf4, 0x02, 0x33, 0xd3, 0x6d, 0x7a,
	0x75, 0xc7, 0xd5, 0x32, 0x2b, 0xe0, 0x8e, 0x5d, 0xd3, 0xb2, 0x0b, 0x8c, 0x00, 0xee, 0xbe, 0xb2,
	0x4c, 0x19, 0xf6, 0x05, 0xe2, 0xa0, 0x6d, 0x74, 0xbd, 0x83, 0x56, 0x5d, 0xdb, 0x5c, 0x85, 0xb0,
	0x6a, 0x96, 0x96, 0x5b, 0xdc, 0x87, 0xe5, 0xd5, 0x9d, 0x9a, 0xa5, 0xe5, 0x29, 0x14, 0x29, 0x70,
	0xb3, 0xd6, 0xd5, 0x0a, 0x0b, 0x7c, 0x5a, 0x96, 0x67, 0xd9, 0x3d, 0xb7, 0xa7, 0xb1, 0x25, 0xc4,
	0xc1, 0x63, 0xbe, 0xd6, 0xe2, 0x2a, 0x04, 0x6c, 0x6e, 0x6b, 0x61, 0x66, 0xb7, 0x66, 0xf1, 0x01,
	0xdb, 0x2b, 0xe0, 0x40, 0xbf, 0xb3, 0x00, 0xdf, 0xaf, 0x23, 0xfd, 0xe5, 0x15, 0x70, 0xa0, 0xd7,
	0x16, 0x26, 0x76, 0x6a, 0x2e, 0x0e, 0xb8, 0xb2, 0x0a, 0x51, 0xe7, 0xe9, 0xc0, 0xc2, 0xd9, 0xd5,
	0x3a, 0xb0, 0x58, 0x2e, 0xd9, 0xab, 0xab, 0x71, 0xb5, 0x5e, 0xdd, 0xd4, 0xae, 0x2d, 0xc8, 0xca,
	0xb0, 0x2d, 0xaf, 0x67, 0x69, 0xd7, 0x17, 0x16, 0x06, 0x60, 0xc7, 0x32, 0xb4, 0x1b, 0x2b, 0xe0,
	0xae, 0x65, 0x68, 0x37, 0x57, 0xd1, 0x37, 0x0d, 0xad, 0xb4, 0x8a, 0xbe, 0x69, 0x68, 0xb7, 0x96,
	0x25, 0xfb, 0x84, 0x6f, 0xf0, 0xf6, 0x2a, 0x04, 0x6c, 0x70, 0x77, 0x71, 0x13, 0x80, 0x68, 0xb4,
	0x8d, 0xaa, 0xd9, 0xd6, 0xee, 0xac, 0xda, 0xe0, 0x13, 0xdc, 0xfc, 0xdd, 0xd5, 0x38, 0xbe, 0xf9,
	0x0f, 0xf4, 0xbb, 0xec, 0xd6, 0x22, 0xcf, 0x6e, 0xdd, 0x73, 0x0d, 0x7b, 0xcf, 0x74, 0xb5, 0x7b,
	0xab, 0xa6, 0xec, 0xd6, 0x3d, 0xa7, 0xdd, 0xd6, 0xee, 0xaf, 0xc1, 0xb9, 0xed, 0xb6, 0xf6, 0x80,
	0xa2, 0xb5, 0xb4, 0x15, 0xab, 0xed, 0x78, 0xb8, 0xd2, 0xf2, 0x82, 0x3c, 0x38, 0xca, 0xad, 0x69,
	0x5f, 0x59, 0x34, 0x2f, 0x80, 0x57, 0x7b, 0x8e, 0xf6, 0x70, 0x01, 0x61, 0x55, 0xab, 0x5e, 0xcb,
	0x69, 0xd5, 0xb5, 0x0f, 0x29, 0x75, 0x91, 0xaa, 0xb6, 0xdf, 0xed, 0x9a, 0x6d, 0xaf, 0x55, 0xd7,
	0xbe, 0xba, 0x6a, 0x69, 0xe6, 0x4b, 0xb7, 0x59, 0xb7, 0xb5, 0xaf, 0x55, 0x3e, 0xc3, 0xea, 0x85,
	0x7f, 0x47, 0x3c, 0x1a, 0xea, 0x97, 0xb9, 0xd3, 0x3c, 0x68, 0xd5, 0xbd, 0x6e, 0xaf, 0x6b, 0xf2,
	0x90, 0xb5, 0x43, 0x00, 0xcb, 0x36, 0x1d, 0xb3, 0xeb, 0x6a, 0xef, 0xee, 0x57, 0xfe, 0x5d, 0x0a,
	0x1b, 0x38, 0xa3, 0xf9, 0xe9, 0x13, 0xfa, 0xee, 0x55, 0xdc, 0x1b, 0x04, 0xea, 0x96, 0xd9, 0x5c,
	0x8a, 0x49, 0x00, 0x03, 0x96, 0x2f, 0xc1, 0x77, 0x60, 0x7c, 0x03, 0x90, 0xe9, 0x58, 0x5a, 0x9a,
	0x66, 0x85, 0x67, 0x63, 0xdf, 0x6d, 0x6a, 0x59, 0x05, 0x50, 0x87, 0x24, 0x30, 0xaf, 0x00, 0x20,
	0x59, 0xd2, 0x34, 0x85, 0xab, 0xdd, 0xdb, 0x07, 0xff, 0x76, 0x5f, 0xe1, 0xda, 0xec, 0x59, 0xda,
	0x53, 0x8a, 0x1c, 0xf0, 0xbc, 0xdf, 0xb5, 0x4d, 0x0b, 0xc2, 0x90, 0x0a, 0x72, 0xcc, 0xe7, 0x90,
	0x30, 0xfc, 0x20, 0x9d, 0xf8, 0xf0, 0x90, 0xee, 0xf3, 0x02, 0x99, 0xc1, 0x73, 0x78, 0x6b, 0x1f,
	0x3c, 0x21, 0x1e, 0x93, 0x01, 0x49, 0xae, 0xf5, 0xca, 0x73, 0xdd, 0x36, 0x4f, 0xef, 0x8b, 0x64,
	0x2d, 0x2a, 0xbc, 0xd5, 0x95, 0xee, 0xc0, 0xc0, 0xd4, 0x14, 0x0f, 0xd5, 0x6d, 0x4b, 0xf3, 0x36,
	0x5c, 0xaf, 0x6e, 0xd6, 0x62, 0xb8, 0x46, 0x89, 0x81, 0xe1, 0x7a, 0xd6, 0xbe, 0xd3, 0xe4, 0x1e,
	0x4d, 0xbb, 0x42, 0xc2, 0x04, 0x60, 0xcf, 0x42, 0x98, 0xbe, 0x40, 0x08, 0x1c, 0xb4, 0xab, 0x49,
	0x42, 0x0e, 0xbb, 0x16, 0x13, 0xc2, 0x0a, 0x78, 0xea, 0xa4, 0x5d, 0x27, 0x29, 0x1a, 0x54, 0x7a,
	0x68, 0x37, 0x28, 0xb7, 0x22, 0xaa, 0xee, 0x0b, 0xbe, 0x9a, 0x9b, 0x31, 0x14, 0x56, 0x49, 0xd0,
	0x52, 0x92, 0x63, 0xa3, 0x65, 0xb6, 0xeb, 0xda, 0x2d, 0x65, 0x6a, 0x58, 0x8f, 0x55, 0xad, 0x6a,
	0xb7, 0xe9, 0x68, 0x68, 0x39, 0x00, 0xda, 0xd5, 0x4b, 0x62, 0xdf, 0x4b, 0x21, 0xe9, 0x00, 0x6f,
	0x16, 0x28, 0x0d, 0x26, 0xfa, 0xa0, 0x54, 0x64, 0xc7, 0x9d, 0x76, 0xa2, 0x94, 0x66, 0x04, 0x83,
	0xe4, 0xf5, 0xbf, 0xbe, 0xcf, 0x50, 0x48, 0x07, 0x48, 0xb7, 0xe7, 0x55, 0xf7, 0x1b, 0x0d, 0xe2,
	0xfb, 0x9f, 0x84, 0x8a, 0x2a, 0x1f, 0x8d, 0xf1, 0xb3, 0x25, 0xc5, 0x51, 0x33, 0x62, 0xdc, 0x6f,
	0xcb, 0xf5, 0xf6, 0x7a, 0x6e, 0x8f, 0xca, 0xef, 0x14, 0xd9, 0x53, 0xcb, 0xf5, 0x5e, 0xd8, 0x2d,
	0xd7, 0x54, 0x23, 0x1c, 0x9a, 0xa0, 0xc4, 0x18, 0x35, 0xb7, 0xd5, 0xeb, 0x3a, 0x5a, 0x26, 0x46,
	0x18, 0x96, 0xd5, 0x7e, 0x25, 0x11, 0xd9, 0x18, 0x51, 0x6b, 0x9b, 0x86, 0x2d, 0x11, 0x1b, 0x42,
	0xaf, 0xa9, 0x5e, 0xd1, 0x36, 0x49, 0x52, 0xad, 0x15, 0x92, 0xfa, 0x8b, 0xb8, 0xa1, 0xc5, 0x8f,
	0xc5, 0x28, 0xa1, 0x68, 0xd4, 0x12, 0x99, 0x4a, 0xa3, 0x26, 0xf2, 0x12, 0x11, 0xa9, 0x25, 0xc4,
	0x73, 0x5c, 0xbb, 0x55, 0x83, 0xf2, 0x5c, 0x92, 0x52, 0x52, 0x93, 0x89, 0x49, 0x11, 0x22, 0x48,
	0xb3, 0x95, 0x7f, 0x48, 0x6f, 0x8e, 0xe4, 0xec, 0x68, 0xef, 0x28, 0xcc, 0x86, 0x9a, 0x82, 0x12,
	0x8b, 0x86, 0xe7, 0x98, 0xdd, 0xba, 0x2c, 0x9c, 0xe3, 0x65, 0x34, 0xbc, 0x5a, 0xd3, 0xac, 0x3d,
	0xf3, 0x7a, 0x07, 0xa6, 0xdd, 0x36, 0x2c, 0x99, 0x30, 0x34, 0x1a, 0x1e, 0x38, 0x18, 0xb0, 0xa4,
	0xfd, 0xae, 0x1b, 0x0b, 0xad, 0xd1, 0xe0, 0xa9, 0xf6, 0x33, 0x89, 0xc8, 0x27, 0x10, 0xd5, 0x57,
	0x12, 0xa1, 0x55, 0x1c, 0x2c, 0x7d, 0xf0, 0xb3, 0x5e, 0xdc, 0xdd, 0xde, 0x52, 0x23, 0x66, 0x4f,
	0x69, 0xc4, 0x08, 0x48, 0xdc, 0x35, 0x91, 0x10, 0xd9, 0x08, 0xf9, 0x2e, 0xbe, 0x9d, 0x59, 0xfa,
	0xfc, 0x8a, 0x04, 0xbf, 0x97, 0x14, 0xfc, 0x9e, 0x22, 0x78, 0x09, 0x21, 0xf9, 0xa6, 0x2b, 0x8e,
	0xfa, 0x2e, 0x9e, 0xab, 0x23, 0x31, 0xc1, 0xea, 0x4b, 0x32, 0x01, 0x23, 0x6b, 0x9b, 0x35, 0xf0,
	0x95, 0x68, 0x06, 0x7b, 0xa0, 0xaf, 0xf5, 0x96, 0x6d, 0xf2, 0x83, 0xdb, 0xc2, 0x45, 0xba, 0x5e,
	0xa3, 0xa1, 0x65, 0x2a, 0x16, 0x2a, 0xc6, 0xe2, 0x47, 0x4a, 0x74, 0x38, 0x36, 0x48, 0xa9, 0x63,
	0xb8, 0xb5, 0xa6, 0x76, 0x89, 0xd4, 0x4d, 0x28, 0xa0, 0x2c, 0xd8, 0x6c, 0x21, 0x24, 0x6e, 0xea,
	0xe9, 0xca, 0xdf, 0x48, 0x61, 0x67, 0x7d, 0xc5, 0xe7, 0x3f, 0x74, 0x5a, 0xb6, 0xed, 0xb5, 0xea,
	0x6d, 0xd3, 0x73, 0x5b, 0x1d, 0xb3, 0xa7, 0x78, 0x48, 0xdb, 0xf6, 0x9a, 0x86, 0x5d, 0x97, 0x70,
	0x21, 0x04, 0x5b, 0x66, 0xce, 0xe9, 0x98, 0x12, 0x4b, 0x3f, 0xa9, 0x7c, 0x12, 0x8e, 0xb5, 0x3b,
	0xc1, 0xb3, 0x95, 0x29, 0xfd, 0x8f, 0x27, 0xfe, 0x3a, 0x92, 0xd2, 0x67, 0xef, 0x97, 0x4c, 0xbb,
	0x27, 0x8f, 0xb4, 0x83, 0x47, 0xfa, 0xee, 0x07, 0xef, 0x73, 0xfa, 0x75, 0xbe, 0xeb, 0x8e, 0xe7,
	0xb4, 0x7b, 0x2f, 0x2c, 0xc3, 0x6d, 0x52, 0xd3, 0x0b, 0xbb, 0x61, 0x1d, 0xb5, 0x1b, 0xa6, 0x76,
	0xbe, 0x3a, 0x58, 0xfd, 0xf2, 0x03, 0x9f, 0x2c, 0x7d, 0x2a, 0xa3, 0x26, 0xf3, 0x55, 0xd5, 0x73,
	0xa0, 0x3c, 0x01, 0x46, 0x75, 0x3e, 0xee, 0x81, 0x03, 0x9c, 0x1a, 0xd4, 0xb0, 0x1d, 0xc3, 0x7e,
	0xa6, 0x89, 0xa4, 0x1c, 0xe0, 0x4b, 0x76, 0xfd, 0x5d, 0xf5, 0x6b, 0xa1, 0x65, 0xfd, 0xea, 0x24,
	0xf5, 0xab, 0xb3, 0xa4, 0x5f, 0x1d, 0x45, 0xbf, 0x8e, 0xd4, 0x57, 0xf0, 0xaa, 0x89, 0x76, 0x1a,
	0x89, 0x0e, 0x00, 0x43, 0xd0, 0xb3, 0xaa, 0x05, 0x55, 0x3b, 0xed, 0xa2, 0x01, 0x56, 0x66, 0x39,
	0x32, 0x1e, 0x77, 0x1a, 0x5e, 0x75, 0xdf, 0x76, 0x5c, 0x19, 0x8f, 0x3b, 0x0d, 0x51, 0xa7, 0x57,
	0x7e, 0x9f, 0x6e, 0x77, 0xe1, 0x07, 0x18, 0x5c, 0x3e, 0xb8, 0x75, 0x93, 0x9a, 0x84, 0x5e, 0xc3,
	0x68, 0xb5, 0x4d, 0x98, 0x0d, 0x43, 0xa4, 0xe9, 0x7a, 0x55, 0xa3, 0x2e, 0xdb, 0x3a, 0x42, 0xf3,
	0x08, 0x4c, 0xfa, 0x98, 0xa6, 0x4c, 0x89, 0xa0, 0xad, 0xae, 0xe3, 0xda, 0xfb, 0x88, 0xca, 0x50,
	0xfc, 0x21, 0x14, 0x2a, 0x74, 0x36, 0xa6, 0x17, 0xfd, 0x35, 0x31, 0xef, 0x06, 0x65, 0x3d, 0xa6,
	0xd2, 0x67, 0x13, 0xb8, 0xcd, 0x78, 0x98, 0xe8, 0xb7, 0x09, 0x54, 0x2e, 0x1e, 0x26, 0xfb, 0x6e,
	0x02, 0x97, 0x8f, 0x87, 0x61, 0x2f, 0xa2, 0x67, 0x09, 0x54, 0x41, 0xff, 0x80, 0xdd, 0x46, 0x94,
	0xf3, 0xa2, 0xe5, 0xd6, 0x9a, 0xa2, 0x19, 0x46, 0x78, 0x46, 0x99, 0xa5, 0x99, 0x6c, 0x87, 0x09,
	0x74, 0x31, 0x9e, 0x55, 0xf6, 0xad, 0x04, 0x6e, 0x8b, 0x3a, 0x6d, 0x72, 0x45, 0xb2, 0x0b, 0x4a,
	0x04, 0xdb, 0x14, 0x33, 0xcc, 0x15, 0xba, 0x55, 0x55, 0xff, 0x83, 0xe3, 0xeb, 0xfe, 0x68, 0xcc,
	0x6f, 0xf9, 0xf1, 0x7f, 0x80, 0x04, 0xfa, 0xd8, 0x6c, 0xd4, 0xbc, 0x56, 0xb7, 0xd6, 0xeb, 0x58,
	0x86, 0xdb, 0x82, 0xa8, 0x27, 0xb4, 0x0c, 0x10, 0xa6, 0x65, 0xda, 0x50, 0xa1, 0xfe, 0x49, 0x1a,
	0xfd, 0xcb, 0x61, 0x7f, 0x28, 0xde, 0x17, 0x21, 0x0f, 0x3c, 0xf0, 0xaa, 0x5d, 0xe3, 0x27, 0x42,
	0xfd, 0x32, 0xd9, 0xe5, 0x10, 0x70, 0x9e, 0x75, 0x8b, 0x68, 0x2a, 0x80, 0xb2, 0x47, 0xa9, 0xa5,
	0xa9, 0x89, 0x2b, 0x30, 0x89, 0x2d, 0x88, 0x80, 0xa4, 0x20, 0x91, 0x9f, 0xe8, 0xcc, 0x00, 0x02,
	0xd7, 0xb9, 0x41, 0xf6, 0x29, 0x48, 0xdb, 0x66, 0x57, 0x56, 0x8a, 0x1c, 0xc6, 0x53, 0x03, 0xcf,
	0xec, 0x58, 0xee, 0x2b, 0xd9, 0x1c, 0x56, 0x10, 0xfb, 0xdd, 0x67, 0xdd, 0xde, 0x8b, 0xae, 0x8c,
	0x2e, 0x72, 0xf9, 0x5c, 0xe6, 0x2d, 0x38, 0xe2, 0x78, 0x5f, 0x2d, 0xc7, 0x73, 0xda, 0xc6, 0x81,
	0xa9, 0xb1, 0x85, 0xcd, 0xf2, 0xda, 0x58, 0x64, 0x85, 0x12, 0xc8, 0xdb, 0x44, 0xda, 0x96, 0xfe,
	0x90, 0xdd, 0x27, 0x70, 0xdc, 0xa3, 0xa5, 0xe9, 0x21, 0x1a, 0x82, 0x0a, 0x6b, 0xdb, 0x95, 0xdf,
	0xcd, 0xa0, 0xff, 0x01, 0x79, 0x53, 0x52, 0xca, 0xc5, 0x4d, 0x33, 0x19, 0x8a, 0x58, 0x45, 0xaf,
	0x51, 0x00, 0x61, 0xd3, 0x29, 0x21, 0x50, 0x63, 0x85, 0x40, 0x45, 0xee, 0xa2, 0x20, 0x91, 0x53,
	0x66, 0x01, 0xd1, 0xdb, 0x47, 0xdb, 0x90, 0x61, 0x58, 0x20, 0x0c, 0x7b, 0x6f, 0x1f, 0x98, 0x69,
	0x1b, 0xe2, 0x08, 0x0c, 0x71, 0x04, 0x9b, 0xca, 0x12, 0xdd, 0x1e, 0x04, 0x9d, 0x2e, 0x88, 0x1a,
	0x0d, 0x5d, 0x8c, 0xc7, 0x54, 0x34, 0x2f, 0xf4, 0x41, 0x99, 0x0e, 0x73, 0xd2, 0x02, 0x59, 0x0a,
	0x60, 0xb8, 0x91, 0x73, 0x05, 0xed, 0x3a, 0x2d, 0xc7, 0x85, 0x59, 0x99, 0x7e, 0x87, 0x95, 0x08,
	0xbd, 0xdf, 0x75, 0xf6, 0x2d, 0x58, 0xa4, 0x59, 0xf7, 0x7a, 0x76, 0xdd, 0xb4, 0xb5, 0xe2, 0x82,
	0x3c, 0x5c, 0x63, 0x4f, 0xdb, 0x5a, 0xd8, 0x00, 0xa4, 0x18, 0x7c, 0xcb, 0xa2, 0x38, 0x57, 0x11,
	0x20, 0xc0, 0x9d, 0x05, 0x01, 0xf2, 0xee, 0xb2, 0xd8, 0xf5, 0xe5, 0xca, 0x9f, 0xa6, 0x58, 0x49,
	0x1c, 0x8f, 0x9a, 0x5c, 0x2a, 0x66, 0x55, 0x6d, 0xd5, 0x84, 0x3e, 0x71, 0x1f, 0x26, 0x9d, 0x20,
	0x22, 0x9c, 0x7d, 0x0b, 0xc1, 0x29, 0x85, 0x3e, 0xa1, 0x6b, 0xc2, 0x0f, 0xc6, 0xf4, 0x32, 0xfb,
	0xcc, 0x90, 0xa7, 0x59, 0x46, 0x61, 0xff, 0x37, 0x2b, 0x56, 0xdf, 0x5a, 0x71, 0xfc, 0x1b, 0x0b,
	0x13, 0xca, 0xe3, 0xdf, 0x14, 0x82, 0x6b, 0xc5, 0x8a, 0x94, 0x13, 0x07, 0xdc, 0x12, 0x07, 0x9c,
	0xaf, 0xfc, 0x23, 0xba, 0xb7, 0x0d, 0x9b, 0xc7, 0x3e, 0x97, 0xaa, 0x9a, 0x9d, 0x55, 0xaa, 0xd9,
	0x51, 0x55, 0x33, 0x09, 0x83, 0xe3, 0x91, 0xf6, 0x4f, 0xb0, 0x7a, 0x1b, 0xc2, 0x9d, 0x4d, 0xcd,
	0xec, 0x05, 0x64, 0xf7, 0x85, 0x82, 0xcc, 0x0a, 0x1d, 0x22, 0xe4, 0x8b, 0x56, 0xbb, 0x5e, 0x33,
	0xec, 0x3a, 0xa4, 0xd5, 0xa4, 0x73, 0x84, 0xc1, 0x62, 0x65, 0x73, 0x01, 0x7a, 0x60, 0xb4, 0xf7,
	0x4d, 0x2d, 0xb7, 0xb0, 0x78, 0xce, 0x5a, 0x74, 0x8c, 0x04, 0xd0, 0xb2, 0x4d, 0xdb, 0x7c, 0xae,
	0x15, 0x14, 0x0e, 0xf5, 0x7d, 0x8b, 0xf8, 0x32, 0x21, 0xa7, 0x8e, 0x90, 0x53, 0xb1, 0xf2, 0x07,
	0xa4, 0x24, 0x71, 0xba, 0xac, 0xf8, 0x5e, 0x9c, 0xb0, 0xd1, 0x69, 0x48, 0x2d, 0x91, 0xe9, 0x13,
	0x07, 0x92, 0x9b, 0xdf, 0x6f, 0xb7, 0xa5, 0xdf, 0xe4, 0xf0, 0x05, 0x15, 0x51, 0xd8, 0x88, 0x5c,
	0x3a, 0x23, 0x12, 0xf2, 0x8e, 0xf4, 0xdf, 0x32, 0x8d, 0x96, 0x1c, 0x28, 0x33, 0xdb, 0x58, 0x44,
	0xd4, 0x7a, 0x9d, 0x8e, 0xd1, 0x05, 0x39, 0xe1, 0xe6, 0x25, 0xa2, 0xd1, 0x36, 0xf6, 0x1c, 0x2d,
	0x57, 0xf9, 0xbd, 0x0c, 0x7e, 0xf8, 0x13, 0x67, 0xc2, 0xea, 0xae, 0x70, 0xa1, 0x7b, 0x30, 0x08,
	0x03, 0xae, 0xf9, 0xb2, 0xe5, 0xb8, 0x8e, 0x7c, 0x57, 0xc1, 0x31, 0x22, 0xcd, 0x44, 0x5b, 0x4f,
	0x91, 0x2e, 0x73, 0xd4, 0x0b, 0xb3, 0xb5, 0xd7, 0x74, 0x55, 0xa3, 0x96, 0x66, 0xc0, 0xf1, 0xe0,
	0x22, 0x7a, 0x0d, 0x1c, 0x09, 0xb5, 0x16, 0x46, 0x4c, 0x15, 0x55, 0xdd, 0x07, 0x3f, 0x0b, 0x95,
	0xc3, 0x7d, 0x76, 0x47, 0xe0, 0x6a, 0x4d, 0xa3, 0xd5, 0x6d, 0x75, 0xf7, 0x12, 0x8c, 0x37, 0xc8,
	0xc9, 0xe0, 0xc4, 0xdc, 0xcb, 0xa8, 0xe8, 0x4d, 0x91, 0x86, 0x03, 0xba, 0xdd, 0xeb, 0x59, 0x32,
	0x60, 0xec, 0x29, 0x87, 0x46, 0x9b, 0xc8, 0xab, 0x28, 0x3e, 0x9b, 0x59, 0x97, 0xbe, 0x0c, 0xf5,
	0x65, 0x4f, 0xca, 0x1e, 0x2c, 0x43, 0xb4, 0x17, 0xf7, 0x16, 0x05, 0x5f, 0x24, 0x25, 0x90, 0x08,
	0xdc, 0x90, 0xb6, 0x45, 0x07, 0x22, 0xe1, 0x7c, 0xc5, 0xf2, 0xdd, 0xe2, 0x5e, 0x7c, 0xd8, 0x3b,
	0x95, 0xdf, 0x26, 0xc5, 0x13, 0xff, 0x9c, 0x35, 0x71, 0x44, 0xb8, 0x1a, 0x4b, 0xb0, 0xa1, 0x26,
	0x2f, 0xae, 0x46, 0x42, 0x9b, 0x68, 0x63, 0x32, 0x97, 0xb5, 0xe2, 0x65, 0xf2, 0x17, 0xa5, 0xe2,
	0x50, 0x24, 0xdc, 0xa8, 0x1f, 0x98, 0xb6, 0xdb, 0x72, 0x4c, 0xa9, 0x7e, 0x96, 0xa2, 0x7e, 0x95,
	0x5f, 0x46, 0xa5, 0x91, 0xff, 0xc1, 0x38, 0xb1, 0x22, 0x7a, 0x47, 0x98, 0xd0, 0x6e, 0x69, 0x0c,
	0xee, 0xc2, 0xcc, 0xe2, 0x5d, 0x86, 0x1b, 0xb3, 0x4f, 0x57, 0x7e, 0x09, 0xf7, 0x8b, 0x77, 0x71,
	0x66, 0xf3, 0x15, 0xfb, 0x7d, 0xde, 0x4b, 0xee, 0x17, 0xe7, 0x94, 0x50, 0x0c, 0x48, 0x82, 0x37,
	0x07, 0x0b, 0xde, 0x7f, 0x81, 0xdd, 0x5d, 0xfa, 0x5f, 0xce, 0x2b, 0x96, 0xef, 0xd4, 0x12, 0x86,
	0x22, 0x12, 0x20, 0x09, 0x46, 0xd7, 0x87, 0xfc, 0x39, 0x30, 0x5e, 0xfb, 0x9d, 0xc5, 0x9b, 0x38,
	0x09, 0xf6, 0x54, 0xc0, 0xd9, 0x8d, 0x1a, 0xe4, 0xdd, 0x5c, 0x32, 0x0a, 0x88, 0x6b, 0x6c, 0x5c,
	0xc2, 0xd9, 0x34, 0x1b, 0xe4, 0x97, 0x5a, 0xba, 0xf2, 0xaf, 0xd3, 0x28, 0xf7, 0xb8, 0xac, 0x58,
	0x76, 0x41, 0x9d, 0xa4, 0x0b, 0x42, 0x0b, 0xe6, 0x40, 0xcc, 0x42, 0xc9, 0x82, 0x53, 0x74, 0xe2,
	0x1d, 0xd5, 0x82, 0xb1, 0x5f, 0x91, 0x56, 0x51, 0xc2, 0x2e, 0x10, 0x25, 0x32, 0x8a, 0xce, 0xa2,
	0x9a, 0x67, 0x49, 0x6c, 0x9d, 0xa4, 0x7f, 0x11, 0x4e, 0x5b, 0x82, 0x6d, 0xc3, 0x35, 0xa5, 0x33,
	0xea, 0xc4, 0x36, 0x61, 0xf3, 0xb7, 0xfb, 0x0b, 0xc4, 0x55, 0xe0, 0x9c, 0x27, 0xa7, 0x90, 0x80,
	0x92, 0x9f, 0x2f, 0xa8, 0x2b, 0x25, 0x87, 0xc1, 0x17, 0xea, 0x68, 0x4c, 0xdd, 0xb9, 0xf0, 0x25,
	0x46, 0xb7, 0xee, 0x68, 0xc5, 0xca, 0x3f, 0x4e, 0xad, 0xf8, 0x92, 0x2b, 0x5c, 0xa5, 0xc3, 0x8d,
	0x05, 0x1d, 0xa6, 0xd7, 0xd6, 0x02, 0x2c, 0x03, 0xb8, 0x38, 0xb0, 0x78, 0x00, 0x38, 0x05, 0x79,
	0x57, 0xa2, 0xa1, 0x28, 0x4d, 0x66, 0x91, 0x89, 0x4c, 0x43, 0xb2, 0xc2, 0x14, 0x1a, 0x52, 0x9d,
	0x36, 0x2a, 0xff, 0x91, 0x82, 0x73, 0xf2, 0x3b, 0x6f, 0x51, 0xed, 0x41, 0xa1, 0xed, 0xd4, 0xe2,
	0xea, 0x8f, 0x5f, 0x1f, 0x79, 0x21, 0x5f, 0x4d, 0x77, 0x2c, 0xcf, 0xd8, 0xdb, 0xb3, 0xcd, 0x3d,
	0x83, 0xd7, 0xe8, 0x54, 0xf0, 0x89, 0xcb, 0x28, 0x19, 0x21, 0x6f, 0x2b, 0xf9, 0x12, 0x57, 0x92,
	0xa1, 0x15, 0x6d, 0xc4, 0x00, 0xf4, 0x80, 0x9b, 0xf1, 0x38, 0x51, 0xec, 0x3b, 0x35, 0x2d, 0x27,
	0x04, 0x2e, 0xa0, 0xa2, 0xa4, 0x91, 0x8d, 0xde, 0x8e, 0x45, 0x5a, 0x54, 0x10, 0x15, 0x35, 0x01,
	0x84, 0x2f, 0x60, 0x31, 0x0b, 0x84, 0x4b, 0x16, 0xc5, 0x18, 0x93, 0xac, 0x97, 0xe4, 0x0d, 0x0d,
	0xb1, 0x09, 0xbe, 0x16, 0x51, 0x3d, 0x75, 0xac, 0x55, 0x95, 0xf9, 0xee, 0xca, 0xef, 0xfb, 0x3d,
	0xf1, 0xad, 0x32, 0x0e, 0x6c, 0x40, 0x39, 0xb7, 0xf4, 0x96, 0x57, 0xc0, 0x3b, 0x3d, 0xdb, 0xd4,
	0x52, 0x95, 0x36, 0x99, 0x63, 0xf2, 0x9b, 0x7d, 0xe2, 0x24, 0x56, 0xdc, 0xc0, 0xab, 0x0d, 0x0a,
	0x2f, 0xd2, 0x7e, 0x89, 0x21, 0x6e, 0x7f, 0x9c, 0xc1, 0xa5, 0xad, 0xf9, 0x9a, 0x55, 0xea, 0x8d,
	0xe5, 0xaa, 0x45, 0x34, 0xf8, 0x26, 0x0c, 0x7c, 0x4b, 0x18, 0xaf, 0xd3, 0x72, 0x1c, 0x99, 0x90,
	0x72, 0x74, 0xd7, 0x7c, 0x49, 0x25, 0xa7, 0xa3, 0xa5, 0x29, 0xed, 0x5e, 0x44, 0xe0, 0xb0, 0x8c,
	0xb8, 0x8e, 0x00, 0xd8, 0x64, 0x4f, 0x34, 0x4b, 0x21, 0x7e, 0x19, 0x85, 0x43, 0x37, 0xd4, 0xa1,
	0xc9, 0xae, 0xe9, 0xa6, 0x3a, 0x34, 0x81, 0xc2, 0xa1, 0x39, 0x69, 0x03, 0x96, 0x4b, 0xfd, 0x80,
	0xbc, 0x34, 0x46, 0x98, 0x4d, 0xe6, 0x83, 0x4c, 0xdc, 0x2f, 0x89, 0x17, 0xe1, 0x98, 0x2e, 0x66,
	0x6f, 0xa2, 0xbc, 0x5e, 0x81, 0xc3, 0x69, 0xb6, 0xd5, 0xc1, 0xb8, 0x0c, 0x39, 0x78, 0x47, 0x1d,
	0x9c, 0xc4, 0xe1, 0xe0, 0xcb, 0xfa, 0xed, 0xf8, 0x24, 0x12, 0xfa, 0xf5, 0xc3, 0xf7, 0x19, 0xfd,
	0x5e, 0x7c, 0x16, 0x2a, 0x0e, 0x87, 0x82, 0x02, 0xfe, 0x0e, 0xfd, 0x83, 0x03, 0xcc, 0xb8, 0x12,
	0x17, 0x32, 0xa8, 0x2d, 0xd8, 0xa8, 0x2d, 0x5d, 0x5e, 0x01, 0x18, 0x76, 0x0f, 0x29, 0xa7, 0xd2,
	0x52, 0x22, 0x59, 0x8a, 0x31, 0xed, 0xd6, 0x81, 0xd9, 0x35, 0x9d, 0xf8, 0x76, 0xc6, 0x9e, 0x92,
	0x2b, 0x69, 0x59, 0x65, 0x80, 0x4c, 0xa0, 0x78, 0xdb, 0xd6, 0xd1, 0xf2, 0x95, 0xcf, 0xb1, 0x1f,
	0x10, 0xdf, 0x3f, 0xc6, 0x2b, 0xc7, 0x22, 0x82, 0xaa, 0xfd, 0x31, 0x5c, 0xe5, 0x73, 0xd7, 0xeb,
	0xb4, 0xba, 0xe8, 0xd0, 0x53, 0x0a, 0xcc, 0x78, 0x89, 0xb0, 0x34, 0xd9, 0xe0, 0xf3, 0x15, 0x1d,
	0x8c, 0xef, 0x61, 0x31, 0xbc, 0x70, 0x01, 0x95, 0xf4, 0xb4, 0x66, 0x63, 0x3b, 0xa5, 0xdb, 0xab,
	0x35, 0x8d, 0xee, 0x9e, 0x29, 0x7b, 0xf9, 0x02, 0x61, 0x3e, 0xdf, 0x37, 0xda, 0xf2, 0x7e, 0x9a,
	0x80, 0x76, 0x0c, 0x07, 0x83, 0x57, 0x92, 0x18, 0x4b, 0xfa, 0x8c, 0x95, 0x3a, 0xdc, 0xe4, 0xff,
	0x5c, 0xfb, 0xb3, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0xcb, 0xda, 0xf6, 0x7f, 0xb9, 0x63, 0x00,
	0x00,
}
