[VOL-5567] update protos

Change-Id: I2237e104062831286129ece7cae6621fd971ecb9
Signed-off-by: Abhay Kumar <abhay.kumar@radisys.com>
diff --git a/go/openflow_13/openflow_13.pb.go b/go/openflow_13/openflow_13.pb.go
index 18505f0..4c107e9 100644
--- a/go/openflow_13/openflow_13.pb.go
+++ b/go/openflow_13/openflow_13.pb.go
@@ -1,25 +1,82 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford
+// Junior University
+// Copyright 2011-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// We are making the OpenFlow specification and associated documentation
+// (Software) available for public use and benefit with the expectation
+// that others will use, modify and enhance the Software and contribute
+// those enhancements back to the community. However, since we would
+// like to make the Software available for broadest use, with as few
+// restrictions as possible permission is hereby granted, free of
+// charge, to any person obtaining a copy of this Software to deal in
+// the Software under the copyrights without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+//
+// The name and trademarks of copyright holder(s) may NOT be used in
+// advertising or publicity pertaining to the Software or any
+// derivatives without specific, written prior permission.
+
+// OpenFlow: protocol between controller and datapath.
+
+//
+// This is a relatively straightforward rendering of OpenFlow message
+// definitions into protocol buffer messages. We preserved the snake
+// case syntax, and made the following changes:
+// - all pad fields dropped
+// - for each enum value above 0x7fffffff the MSB is dropped. For example,
+//   0xffffffff is now 0x7fffffff.
+// - '<type> thing[...]' is replaced with 'repeated <type> thing'
+// - 'char thing[...]' is replaced with 'string thing'
+// - 'uint8_t data[...]' is replaced with 'bytes data'
+// - the following systematic changes are done to various integer types:
+//   uint8_t  -> uint32
+//   uint16_t -> uint32
+//   uint32_t -> uint32
+//   uint64_t -> uint64
+// - removed most length, len, size fields where these values can be determined
+//   from the explicitly encoded length of "repeated" protobuf fields.
+// - explicit use of enum types whereever it is unambigous (and not used as
+//   bitmask/flags value.
+//
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/openflow_13.proto
 
 package openflow_13
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 // Port numbering. Ports are numbered starting from 1.
 type OfpPortNo int32
@@ -31,165 +88,207 @@
 	// 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_NORMAL     OfpPortNo = 2147483642 // Forward using non-OpenFlow pipeline.
+	OfpPortNo_OFPP_FLOOD      OfpPortNo = 2147483643 // Flood using non-OpenFlow pipeline.
+	OfpPortNo_OFPP_ALL        OfpPortNo = 2147483644 // All standard ports except input port.
+	OfpPortNo_OFPP_CONTROLLER OfpPortNo = 2147483645 // Send to controller.
+	OfpPortNo_OFPP_LOCAL      OfpPortNo = 2147483646 // Local openflow "port".
 	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",
-}
+// Enum value maps for OfpPortNo.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpPortNo {
+	p := new(OfpPortNo)
+	*p = x
+	return p
 }
 
 func (x OfpPortNo) String() string {
-	return proto.EnumName(OfpPortNo_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortNo) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[0].Descriptor()
+}
+
+func (OfpPortNo) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[0]
+}
+
+func (x OfpPortNo) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortNo.Descriptor instead.
 func (OfpPortNo) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{0}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []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
+	OfpType_OFPT_HELLO        OfpType = 0 // Symmetric message
+	OfpType_OFPT_ERROR        OfpType = 1 // Symmetric message
+	OfpType_OFPT_ECHO_REQUEST OfpType = 2 // Symmetric message
+	OfpType_OFPT_ECHO_REPLY   OfpType = 3 // Symmetric message
+	OfpType_OFPT_EXPERIMENTER OfpType = 4 // Symmetric message
 	// 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
+	OfpType_OFPT_FEATURES_REQUEST   OfpType = 5 // Controller/switch message
+	OfpType_OFPT_FEATURES_REPLY     OfpType = 6 // Controller/switch message
+	OfpType_OFPT_GET_CONFIG_REQUEST OfpType = 7 // Controller/switch message
+	OfpType_OFPT_GET_CONFIG_REPLY   OfpType = 8 // Controller/switch message
+	OfpType_OFPT_SET_CONFIG         OfpType = 9 // Controller/switch message
 	// Asynchronous messages.
-	OfpType_OFPT_PACKET_IN    OfpType = 10
-	OfpType_OFPT_FLOW_REMOVED OfpType = 11
-	OfpType_OFPT_PORT_STATUS  OfpType = 12
+	OfpType_OFPT_PACKET_IN    OfpType = 10 // Async message
+	OfpType_OFPT_FLOW_REMOVED OfpType = 11 // Async message
+	OfpType_OFPT_PORT_STATUS  OfpType = 12 // Async message
 	// 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
+	OfpType_OFPT_PACKET_OUT OfpType = 13 // Controller/switch message
+	OfpType_OFPT_FLOW_MOD   OfpType = 14 // Controller/switch message
+	OfpType_OFPT_GROUP_MOD  OfpType = 15 // Controller/switch message
+	OfpType_OFPT_PORT_MOD   OfpType = 16 // Controller/switch message
+	OfpType_OFPT_TABLE_MOD  OfpType = 17 // Controller/switch message
 	// Multipart messages.
-	OfpType_OFPT_MULTIPART_REQUEST OfpType = 18
-	OfpType_OFPT_MULTIPART_REPLY   OfpType = 19
+	OfpType_OFPT_MULTIPART_REQUEST OfpType = 18 // Controller/switch message
+	OfpType_OFPT_MULTIPART_REPLY   OfpType = 19 // Controller/switch message
 	// Barrier messages.
-	OfpType_OFPT_BARRIER_REQUEST OfpType = 20
-	OfpType_OFPT_BARRIER_REPLY   OfpType = 21
+	OfpType_OFPT_BARRIER_REQUEST OfpType = 20 // Controller/switch message
+	OfpType_OFPT_BARRIER_REPLY   OfpType = 21 // Controller/switch message
 	// Queue Configuration messages.
-	OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST OfpType = 22
-	OfpType_OFPT_QUEUE_GET_CONFIG_REPLY   OfpType = 23
+	OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST OfpType = 22 // Controller/switch message
+	OfpType_OFPT_QUEUE_GET_CONFIG_REPLY   OfpType = 23 // Controller/switch message
 	// Controller role change request messages.
-	OfpType_OFPT_ROLE_REQUEST OfpType = 24
-	OfpType_OFPT_ROLE_REPLY   OfpType = 25
+	OfpType_OFPT_ROLE_REQUEST OfpType = 24 // Controller/switch message
+	OfpType_OFPT_ROLE_REPLY   OfpType = 25 // Controller/switch message
 	// Asynchronous message configuration.
-	OfpType_OFPT_GET_ASYNC_REQUEST OfpType = 26
-	OfpType_OFPT_GET_ASYNC_REPLY   OfpType = 27
-	OfpType_OFPT_SET_ASYNC         OfpType = 28
+	OfpType_OFPT_GET_ASYNC_REQUEST OfpType = 26 // Controller/switch message
+	OfpType_OFPT_GET_ASYNC_REPLY   OfpType = 27 // Controller/switch message
+	OfpType_OFPT_SET_ASYNC         OfpType = 28 // Controller/switch message
 	// Meters and rate limiters configuration messages.
-	OfpType_OFPT_METER_MOD OfpType = 29
+	OfpType_OFPT_METER_MOD OfpType = 29 // Controller/switch message
 )
 
-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",
-}
+// Enum value maps for OfpType.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpType {
+	p := new(OfpType)
+	*p = x
+	return p
 }
 
 func (x OfpType) String() string {
-	return proto.EnumName(OfpType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[1].Descriptor()
+}
+
+func (OfpType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[1]
+}
+
+func (x OfpType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpType.Descriptor instead.
 func (OfpType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{1}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{1}
 }
 
 // Hello elements types.
@@ -197,57 +296,99 @@
 
 const (
 	OfpHelloElemType_OFPHET_INVALID       OfpHelloElemType = 0
-	OfpHelloElemType_OFPHET_VERSIONBITMAP OfpHelloElemType = 1
+	OfpHelloElemType_OFPHET_VERSIONBITMAP OfpHelloElemType = 1 // Bitmap of version supported.
 )
 
-var OfpHelloElemType_name = map[int32]string{
-	0: "OFPHET_INVALID",
-	1: "OFPHET_VERSIONBITMAP",
-}
+// Enum value maps for OfpHelloElemType.
+var (
+	OfpHelloElemType_name = map[int32]string{
+		0: "OFPHET_INVALID",
+		1: "OFPHET_VERSIONBITMAP",
+	}
+	OfpHelloElemType_value = map[string]int32{
+		"OFPHET_INVALID":       0,
+		"OFPHET_VERSIONBITMAP": 1,
+	}
+)
 
-var OfpHelloElemType_value = map[string]int32{
-	"OFPHET_INVALID":       0,
-	"OFPHET_VERSIONBITMAP": 1,
+func (x OfpHelloElemType) Enum() *OfpHelloElemType {
+	p := new(OfpHelloElemType)
+	*p = x
+	return p
 }
 
 func (x OfpHelloElemType) String() string {
-	return proto.EnumName(OfpHelloElemType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpHelloElemType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[2].Descriptor()
+}
+
+func (OfpHelloElemType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[2]
+}
+
+func (x OfpHelloElemType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpHelloElemType.Descriptor instead.
 func (OfpHelloElemType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{2}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []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
+	OfpConfigFlags_OFPC_FRAG_NORMAL OfpConfigFlags = 0 // No special handling for fragments.
+	OfpConfigFlags_OFPC_FRAG_DROP   OfpConfigFlags = 1 // Drop fragments.
+	OfpConfigFlags_OFPC_FRAG_REASM  OfpConfigFlags = 2 // Reassemble (only if OFPC_IP_REASM set).
+	OfpConfigFlags_OFPC_FRAG_MASK   OfpConfigFlags = 3 // Bitmask of flags dealing with frag.
 )
 
-var OfpConfigFlags_name = map[int32]string{
-	0: "OFPC_FRAG_NORMAL",
-	1: "OFPC_FRAG_DROP",
-	2: "OFPC_FRAG_REASM",
-	3: "OFPC_FRAG_MASK",
-}
+// Enum value maps for OfpConfigFlags.
+var (
+	OfpConfigFlags_name = map[int32]string{
+		0: "OFPC_FRAG_NORMAL",
+		1: "OFPC_FRAG_DROP",
+		2: "OFPC_FRAG_REASM",
+		3: "OFPC_FRAG_MASK",
+	}
+	OfpConfigFlags_value = map[string]int32{
+		"OFPC_FRAG_NORMAL": 0,
+		"OFPC_FRAG_DROP":   1,
+		"OFPC_FRAG_REASM":  2,
+		"OFPC_FRAG_MASK":   3,
+	}
+)
 
-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) Enum() *OfpConfigFlags {
+	p := new(OfpConfigFlags)
+	*p = x
+	return p
 }
 
 func (x OfpConfigFlags) String() string {
-	return proto.EnumName(OfpConfigFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpConfigFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[3].Descriptor()
+}
+
+func (OfpConfigFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[3]
+}
+
+func (x OfpConfigFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpConfigFlags.Descriptor instead.
 func (OfpConfigFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{3}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{3}
 }
 
 // Flags to configure the table. Reserved for future use.
@@ -255,25 +396,46 @@
 
 const (
 	OfpTableConfig_OFPTC_INVALID         OfpTableConfig = 0
-	OfpTableConfig_OFPTC_DEPRECATED_MASK OfpTableConfig = 3
+	OfpTableConfig_OFPTC_DEPRECATED_MASK OfpTableConfig = 3 // Deprecated bits
 )
 
-var OfpTableConfig_name = map[int32]string{
-	0: "OFPTC_INVALID",
-	3: "OFPTC_DEPRECATED_MASK",
-}
+// Enum value maps for OfpTableConfig.
+var (
+	OfpTableConfig_name = map[int32]string{
+		0: "OFPTC_INVALID",
+		3: "OFPTC_DEPRECATED_MASK",
+	}
+	OfpTableConfig_value = map[string]int32{
+		"OFPTC_INVALID":         0,
+		"OFPTC_DEPRECATED_MASK": 3,
+	}
+)
 
-var OfpTableConfig_value = map[string]int32{
-	"OFPTC_INVALID":         0,
-	"OFPTC_DEPRECATED_MASK": 3,
+func (x OfpTableConfig) Enum() *OfpTableConfig {
+	p := new(OfpTableConfig)
+	*p = x
+	return p
 }
 
 func (x OfpTableConfig) String() string {
-	return proto.EnumName(OfpTableConfig_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableConfig) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[4].Descriptor()
+}
+
+func (OfpTableConfig) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[4]
+}
+
+func (x OfpTableConfig) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableConfig.Descriptor instead.
 func (OfpTableConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{4}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{4}
 }
 
 // Table numbering. Tables can use any number up to OFPT_MAX.
@@ -287,24 +449,45 @@
 	OfpTable_OFPTT_ALL OfpTable = 255
 )
 
-var OfpTable_name = map[int32]string{
-	0:   "OFPTT_INVALID",
-	254: "OFPTT_MAX",
-	255: "OFPTT_ALL",
-}
+// Enum value maps for OfpTable.
+var (
+	OfpTable_name = map[int32]string{
+		0:   "OFPTT_INVALID",
+		254: "OFPTT_MAX",
+		255: "OFPTT_ALL",
+	}
+	OfpTable_value = map[string]int32{
+		"OFPTT_INVALID": 0,
+		"OFPTT_MAX":     254,
+		"OFPTT_ALL":     255,
+	}
+)
 
-var OfpTable_value = map[string]int32{
-	"OFPTT_INVALID": 0,
-	"OFPTT_MAX":     254,
-	"OFPTT_ALL":     255,
+func (x OfpTable) Enum() *OfpTable {
+	p := new(OfpTable)
+	*p = x
+	return p
 }
 
 func (x OfpTable) String() string {
-	return proto.EnumName(OfpTable_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTable) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[5].Descriptor()
+}
+
+func (OfpTable) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[5]
+}
+
+func (x OfpTable) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTable.Descriptor instead.
 func (OfpTable) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{5}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{5}
 }
 
 // Capabilities supported by the datapath.
@@ -312,43 +495,64 @@
 
 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
+	OfpCapabilities_OFPC_FLOW_STATS   OfpCapabilities = 1   // Flow statistics.
+	OfpCapabilities_OFPC_TABLE_STATS  OfpCapabilities = 2   // Table statistics.
+	OfpCapabilities_OFPC_PORT_STATS   OfpCapabilities = 4   // Port statistics.
+	OfpCapabilities_OFPC_GROUP_STATS  OfpCapabilities = 8   // Group statistics.
+	OfpCapabilities_OFPC_IP_REASM     OfpCapabilities = 32  // Can reassemble IP fragments.
+	OfpCapabilities_OFPC_QUEUE_STATS  OfpCapabilities = 64  // Queue statistics.
+	OfpCapabilities_OFPC_PORT_BLOCKED OfpCapabilities = 256 // Switch will block looping ports.
 )
 
-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",
-}
+// Enum value maps for OfpCapabilities.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpCapabilities {
+	p := new(OfpCapabilities)
+	*p = x
+	return p
 }
 
 func (x OfpCapabilities) String() string {
-	return proto.EnumName(OfpCapabilities_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpCapabilities) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[6].Descriptor()
+}
+
+func (OfpCapabilities) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[6]
+}
+
+func (x OfpCapabilities) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpCapabilities.Descriptor instead.
 func (OfpCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{6}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{6}
 }
 
 // Flags to indicate behavior of the physical port.  These flags are
@@ -358,34 +562,55 @@
 
 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
+	OfpPortConfig_OFPPC_PORT_DOWN    OfpPortConfig = 1  // Port is administratively down.
+	OfpPortConfig_OFPPC_NO_RECV      OfpPortConfig = 4  // Drop all packets received by port.
+	OfpPortConfig_OFPPC_NO_FWD       OfpPortConfig = 32 // Drop packets forwarded to port.
+	OfpPortConfig_OFPPC_NO_PACKET_IN OfpPortConfig = 64 // Do not send packet-in msgs for port.
 )
 
-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",
-}
+// Enum value maps for OfpPortConfig.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpPortConfig {
+	p := new(OfpPortConfig)
+	*p = x
+	return p
 }
 
 func (x OfpPortConfig) String() string {
-	return proto.EnumName(OfpPortConfig_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortConfig) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[7].Descriptor()
+}
+
+func (OfpPortConfig) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[7]
+}
+
+func (x OfpPortConfig) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortConfig.Descriptor instead.
 func (OfpPortConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{7}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{7}
 }
 
 // Current state of the physical port.  These are not configurable from
@@ -394,31 +619,52 @@
 
 const (
 	OfpPortState_OFPPS_INVALID   OfpPortState = 0
-	OfpPortState_OFPPS_LINK_DOWN OfpPortState = 1
-	OfpPortState_OFPPS_BLOCKED   OfpPortState = 2
-	OfpPortState_OFPPS_LIVE      OfpPortState = 4
+	OfpPortState_OFPPS_LINK_DOWN OfpPortState = 1 // No physical link present.
+	OfpPortState_OFPPS_BLOCKED   OfpPortState = 2 // Port is blocked
+	OfpPortState_OFPPS_LIVE      OfpPortState = 4 // Live for Fast Failover Group.
 )
 
-var OfpPortState_name = map[int32]string{
-	0: "OFPPS_INVALID",
-	1: "OFPPS_LINK_DOWN",
-	2: "OFPPS_BLOCKED",
-	4: "OFPPS_LIVE",
-}
+// Enum value maps for OfpPortState.
+var (
+	OfpPortState_name = map[int32]string{
+		0: "OFPPS_INVALID",
+		1: "OFPPS_LINK_DOWN",
+		2: "OFPPS_BLOCKED",
+		4: "OFPPS_LIVE",
+	}
+	OfpPortState_value = map[string]int32{
+		"OFPPS_INVALID":   0,
+		"OFPPS_LINK_DOWN": 1,
+		"OFPPS_BLOCKED":   2,
+		"OFPPS_LIVE":      4,
+	}
+)
 
-var OfpPortState_value = map[string]int32{
-	"OFPPS_INVALID":   0,
-	"OFPPS_LINK_DOWN": 1,
-	"OFPPS_BLOCKED":   2,
-	"OFPPS_LIVE":      4,
+func (x OfpPortState) Enum() *OfpPortState {
+	p := new(OfpPortState)
+	*p = x
+	return p
 }
 
 func (x OfpPortState) String() string {
-	return proto.EnumName(OfpPortState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[8].Descriptor()
+}
+
+func (OfpPortState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[8]
+}
+
+func (x OfpPortState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortState.Descriptor instead.
 func (OfpPortState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{8}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{8}
 }
 
 // Features of ports available in a datapath.
@@ -426,125 +672,188 @@
 
 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
+	OfpPortFeatures_OFPPF_10MB_HD    OfpPortFeatures = 1     // 10 Mb half-duplex rate support.
+	OfpPortFeatures_OFPPF_10MB_FD    OfpPortFeatures = 2     // 10 Mb full-duplex rate support.
+	OfpPortFeatures_OFPPF_100MB_HD   OfpPortFeatures = 4     // 100 Mb half-duplex rate support.
+	OfpPortFeatures_OFPPF_100MB_FD   OfpPortFeatures = 8     // 100 Mb full-duplex rate support.
+	OfpPortFeatures_OFPPF_1GB_HD     OfpPortFeatures = 16    // 1 Gb half-duplex rate support.
+	OfpPortFeatures_OFPPF_1GB_FD     OfpPortFeatures = 32    // 1 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_10GB_FD    OfpPortFeatures = 64    // 10 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_40GB_FD    OfpPortFeatures = 128   // 40 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_100GB_FD   OfpPortFeatures = 256   // 100 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_1TB_FD     OfpPortFeatures = 512   // 1 Tb full-duplex rate support.
+	OfpPortFeatures_OFPPF_OTHER      OfpPortFeatures = 1024  // Other rate, not in the list.
+	OfpPortFeatures_OFPPF_COPPER     OfpPortFeatures = 2048  // Copper medium.
+	OfpPortFeatures_OFPPF_FIBER      OfpPortFeatures = 4096  // Fiber medium.
+	OfpPortFeatures_OFPPF_AUTONEG    OfpPortFeatures = 8192  // Auto-negotiation.
+	OfpPortFeatures_OFPPF_PAUSE      OfpPortFeatures = 16384 // Pause.
+	OfpPortFeatures_OFPPF_PAUSE_ASYM OfpPortFeatures = 32768 // Asymmetric pause.
 )
 
-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",
-}
+// Enum value maps for OfpPortFeatures.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpPortFeatures {
+	p := new(OfpPortFeatures)
+	*p = x
+	return p
 }
 
 func (x OfpPortFeatures) String() string {
-	return proto.EnumName(OfpPortFeatures_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortFeatures) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[9].Descriptor()
+}
+
+func (OfpPortFeatures) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[9]
+}
+
+func (x OfpPortFeatures) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortFeatures.Descriptor instead.
 func (OfpPortFeatures) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{9}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []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
+	OfpPortReason_OFPPR_ADD    OfpPortReason = 0 // The port was added.
+	OfpPortReason_OFPPR_DELETE OfpPortReason = 1 // The port was removed.
+	OfpPortReason_OFPPR_MODIFY OfpPortReason = 2 // Some attribute of the port has changed.
 )
 
-var OfpPortReason_name = map[int32]string{
-	0: "OFPPR_ADD",
-	1: "OFPPR_DELETE",
-	2: "OFPPR_MODIFY",
-}
+// Enum value maps for OfpPortReason.
+var (
+	OfpPortReason_name = map[int32]string{
+		0: "OFPPR_ADD",
+		1: "OFPPR_DELETE",
+		2: "OFPPR_MODIFY",
+	}
+	OfpPortReason_value = map[string]int32{
+		"OFPPR_ADD":    0,
+		"OFPPR_DELETE": 1,
+		"OFPPR_MODIFY": 2,
+	}
+)
 
-var OfpPortReason_value = map[string]int32{
-	"OFPPR_ADD":    0,
-	"OFPPR_DELETE": 1,
-	"OFPPR_MODIFY": 2,
+func (x OfpPortReason) Enum() *OfpPortReason {
+	p := new(OfpPortReason)
+	*p = x
+	return p
 }
 
 func (x OfpPortReason) String() string {
-	return proto.EnumName(OfpPortReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[10].Descriptor()
+}
+
+func (OfpPortReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[10]
+}
+
+func (x OfpPortReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortReason.Descriptor instead.
 func (OfpPortReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{10}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{10}
 }
 
 // What changed about the physical device
 type OfpDeviceConnection int32
 
 const (
-	OfpDeviceConnection_OFPDEV_CONNECTED    OfpDeviceConnection = 0
-	OfpDeviceConnection_OFPDEV_DISCONNECTED OfpDeviceConnection = 1
+	OfpDeviceConnection_OFPDEV_CONNECTED    OfpDeviceConnection = 0 // The device connected.
+	OfpDeviceConnection_OFPDEV_DISCONNECTED OfpDeviceConnection = 1 // The device disconnected.
 )
 
-var OfpDeviceConnection_name = map[int32]string{
-	0: "OFPDEV_CONNECTED",
-	1: "OFPDEV_DISCONNECTED",
-}
+// Enum value maps for OfpDeviceConnection.
+var (
+	OfpDeviceConnection_name = map[int32]string{
+		0: "OFPDEV_CONNECTED",
+		1: "OFPDEV_DISCONNECTED",
+	}
+	OfpDeviceConnection_value = map[string]int32{
+		"OFPDEV_CONNECTED":    0,
+		"OFPDEV_DISCONNECTED": 1,
+	}
+)
 
-var OfpDeviceConnection_value = map[string]int32{
-	"OFPDEV_CONNECTED":    0,
-	"OFPDEV_DISCONNECTED": 1,
+func (x OfpDeviceConnection) Enum() *OfpDeviceConnection {
+	p := new(OfpDeviceConnection)
+	*p = x
+	return p
 }
 
 func (x OfpDeviceConnection) String() string {
-	return proto.EnumName(OfpDeviceConnection_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpDeviceConnection) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[11].Descriptor()
+}
+
+func (OfpDeviceConnection) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[11]
+}
+
+func (x OfpDeviceConnection) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpDeviceConnection.Descriptor instead.
 func (OfpDeviceConnection) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{11}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{11}
 }
 
 // The match type indicates the match structure (set of fields that compose the
@@ -556,26 +865,47 @@
 type OfpMatchType int32
 
 const (
-	OfpMatchType_OFPMT_STANDARD OfpMatchType = 0
-	OfpMatchType_OFPMT_OXM      OfpMatchType = 1
+	OfpMatchType_OFPMT_STANDARD OfpMatchType = 0 // Deprecated.
+	OfpMatchType_OFPMT_OXM      OfpMatchType = 1 // OpenFlow Extensible Match
 )
 
-var OfpMatchType_name = map[int32]string{
-	0: "OFPMT_STANDARD",
-	1: "OFPMT_OXM",
-}
+// Enum value maps for OfpMatchType.
+var (
+	OfpMatchType_name = map[int32]string{
+		0: "OFPMT_STANDARD",
+		1: "OFPMT_OXM",
+	}
+	OfpMatchType_value = map[string]int32{
+		"OFPMT_STANDARD": 0,
+		"OFPMT_OXM":      1,
+	}
+)
 
-var OfpMatchType_value = map[string]int32{
-	"OFPMT_STANDARD": 0,
-	"OFPMT_OXM":      1,
+func (x OfpMatchType) Enum() *OfpMatchType {
+	p := new(OfpMatchType)
+	*p = x
+	return p
 }
 
 func (x OfpMatchType) String() string {
-	return proto.EnumName(OfpMatchType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMatchType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[12].Descriptor()
+}
+
+func (OfpMatchType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[12]
+}
+
+func (x OfpMatchType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMatchType.Descriptor instead.
 func (OfpMatchType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{12}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{12}
 }
 
 // OXM Class IDs.
@@ -585,172 +915,214 @@
 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
+	OfpOxmClass_OFPXMC_NXM_0          OfpOxmClass = 0     // Backward compatibility with NXM
+	OfpOxmClass_OFPXMC_NXM_1          OfpOxmClass = 1     // Backward compatibility with NXM
+	OfpOxmClass_OFPXMC_OPENFLOW_BASIC OfpOxmClass = 32768 // Basic class for OpenFlow
+	OfpOxmClass_OFPXMC_EXPERIMENTER   OfpOxmClass = 65535 // Experimenter class
 )
 
-var OfpOxmClass_name = map[int32]string{
-	0:     "OFPXMC_NXM_0",
-	1:     "OFPXMC_NXM_1",
-	32768: "OFPXMC_OPENFLOW_BASIC",
-	65535: "OFPXMC_EXPERIMENTER",
-}
+// Enum value maps for OfpOxmClass.
+var (
+	OfpOxmClass_name = map[int32]string{
+		0:     "OFPXMC_NXM_0",
+		1:     "OFPXMC_NXM_1",
+		32768: "OFPXMC_OPENFLOW_BASIC",
+		65535: "OFPXMC_EXPERIMENTER",
+	}
+	OfpOxmClass_value = map[string]int32{
+		"OFPXMC_NXM_0":          0,
+		"OFPXMC_NXM_1":          1,
+		"OFPXMC_OPENFLOW_BASIC": 32768,
+		"OFPXMC_EXPERIMENTER":   65535,
+	}
+)
 
-var OfpOxmClass_value = map[string]int32{
-	"OFPXMC_NXM_0":          0,
-	"OFPXMC_NXM_1":          1,
-	"OFPXMC_OPENFLOW_BASIC": 32768,
-	"OFPXMC_EXPERIMENTER":   65535,
+func (x OfpOxmClass) Enum() *OfpOxmClass {
+	p := new(OfpOxmClass)
+	*p = x
+	return p
 }
 
 func (x OfpOxmClass) String() string {
-	return proto.EnumName(OfpOxmClass_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpOxmClass) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[13].Descriptor()
+}
+
+func (OfpOxmClass) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[13]
+}
+
+func (x OfpOxmClass) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpOxmClass.Descriptor instead.
 func (OfpOxmClass) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{13}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{13}
 }
 
 // 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
+	OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT        OxmOfbFieldTypes = 0  // Switch input port.
+	OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT    OxmOfbFieldTypes = 1  // Switch physical input port.
+	OxmOfbFieldTypes_OFPXMT_OFB_METADATA       OxmOfbFieldTypes = 2  // Metadata passed between tables.
+	OxmOfbFieldTypes_OFPXMT_OFB_ETH_DST        OxmOfbFieldTypes = 3  // Ethernet destination address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC        OxmOfbFieldTypes = 4  // Ethernet source address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE       OxmOfbFieldTypes = 5  // Ethernet frame type.
+	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID       OxmOfbFieldTypes = 6  // VLAN id.
+	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_PCP       OxmOfbFieldTypes = 7  // VLAN priority.
+	OxmOfbFieldTypes_OFPXMT_OFB_IP_DSCP        OxmOfbFieldTypes = 8  // IP DSCP (6 bits in ToS field).
+	OxmOfbFieldTypes_OFPXMT_OFB_IP_ECN         OxmOfbFieldTypes = 9  // IP ECN (2 bits in ToS field).
+	OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO       OxmOfbFieldTypes = 10 // IP protocol.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_SRC       OxmOfbFieldTypes = 11 // IPv4 source address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_DST       OxmOfbFieldTypes = 12 // IPv4 destination address.
+	OxmOfbFieldTypes_OFPXMT_OFB_TCP_SRC        OxmOfbFieldTypes = 13 // TCP source port.
+	OxmOfbFieldTypes_OFPXMT_OFB_TCP_DST        OxmOfbFieldTypes = 14 // TCP destination port.
+	OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC        OxmOfbFieldTypes = 15 // UDP source port.
+	OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST        OxmOfbFieldTypes = 16 // UDP destination port.
+	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_SRC       OxmOfbFieldTypes = 17 // SCTP source port.
+	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_DST       OxmOfbFieldTypes = 18 // SCTP destination port.
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_TYPE    OxmOfbFieldTypes = 19 // ICMP type.
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_CODE    OxmOfbFieldTypes = 20 // ICMP code.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_OP         OxmOfbFieldTypes = 21 // ARP opcode.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SPA        OxmOfbFieldTypes = 22 // ARP source IPv4 address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_TPA        OxmOfbFieldTypes = 23 // ARP target IPv4 address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SHA        OxmOfbFieldTypes = 24 // ARP source hardware address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_THA        OxmOfbFieldTypes = 25 // ARP target hardware address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_SRC       OxmOfbFieldTypes = 26 // IPv6 source address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_DST       OxmOfbFieldTypes = 27 // IPv6 destination address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_FLABEL    OxmOfbFieldTypes = 28 // IPv6 Flow Label
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_TYPE    OxmOfbFieldTypes = 29 // ICMPv6 type.
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_CODE    OxmOfbFieldTypes = 30 // ICMPv6 code.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TARGET OxmOfbFieldTypes = 31 // Target address for ND.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_SLL    OxmOfbFieldTypes = 32 // Source link-layer for ND.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TLL    OxmOfbFieldTypes = 33 // Target link-layer for ND.
+	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL     OxmOfbFieldTypes = 34 // MPLS label.
+	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC        OxmOfbFieldTypes = 35 // MPLS TC.
+	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS       OxmOfbFieldTypes = 36 // MPLS BoS bit.
+	OxmOfbFieldTypes_OFPXMT_OFB_PBB_ISID       OxmOfbFieldTypes = 37 // PBB I-SID.
+	OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID      OxmOfbFieldTypes = 38 // Logical Port Metadata.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR    OxmOfbFieldTypes = 39 // IPv6 Extension Header pseudo-field
 )
 
-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",
-}
+// Enum value maps for OxmOfbFieldTypes.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OxmOfbFieldTypes {
+	p := new(OxmOfbFieldTypes)
+	*p = x
+	return p
 }
 
 func (x OxmOfbFieldTypes) String() string {
-	return proto.EnumName(OxmOfbFieldTypes_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OxmOfbFieldTypes) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[14].Descriptor()
+}
+
+func (OxmOfbFieldTypes) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[14]
+}
+
+func (x OxmOfbFieldTypes) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OxmOfbFieldTypes.Descriptor instead.
 func (OxmOfbFieldTypes) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{14}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{14}
 }
 
 // The VLAN id is 12-bits, so we can use the entire 16 bits to indicate
@@ -758,26 +1130,47 @@
 type OfpVlanId int32
 
 const (
-	OfpVlanId_OFPVID_NONE    OfpVlanId = 0
-	OfpVlanId_OFPVID_PRESENT OfpVlanId = 4096
+	OfpVlanId_OFPVID_NONE    OfpVlanId = 0    // No VLAN id was set.
+	OfpVlanId_OFPVID_PRESENT OfpVlanId = 4096 // Bit that indicate that a VLAN id is set
 )
 
-var OfpVlanId_name = map[int32]string{
-	0:    "OFPVID_NONE",
-	4096: "OFPVID_PRESENT",
-}
+// Enum value maps for OfpVlanId.
+var (
+	OfpVlanId_name = map[int32]string{
+		0:    "OFPVID_NONE",
+		4096: "OFPVID_PRESENT",
+	}
+	OfpVlanId_value = map[string]int32{
+		"OFPVID_NONE":    0,
+		"OFPVID_PRESENT": 4096,
+	}
+)
 
-var OfpVlanId_value = map[string]int32{
-	"OFPVID_NONE":    0,
-	"OFPVID_PRESENT": 4096,
+func (x OfpVlanId) Enum() *OfpVlanId {
+	p := new(OfpVlanId)
+	*p = x
+	return p
 }
 
 func (x OfpVlanId) String() string {
-	return proto.EnumName(OfpVlanId_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpVlanId) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[15].Descriptor()
+}
+
+func (OfpVlanId) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[15]
+}
+
+func (x OfpVlanId) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpVlanId.Descriptor instead.
 func (OfpVlanId) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{15}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{15}
 }
 
 // Bit definitions for IPv6 Extension Header pseudo-field.
@@ -785,119 +1178,161 @@
 
 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
+	OfpIpv6ExthdrFlags_OFPIEH_NONEXT  OfpIpv6ExthdrFlags = 1   // "No next header" encountered.
+	OfpIpv6ExthdrFlags_OFPIEH_ESP     OfpIpv6ExthdrFlags = 2   // Encrypted Sec Payload header present.
+	OfpIpv6ExthdrFlags_OFPIEH_AUTH    OfpIpv6ExthdrFlags = 4   // Authentication header present.
+	OfpIpv6ExthdrFlags_OFPIEH_DEST    OfpIpv6ExthdrFlags = 8   // 1 or 2 dest headers present.
+	OfpIpv6ExthdrFlags_OFPIEH_FRAG    OfpIpv6ExthdrFlags = 16  // Fragment header present.
+	OfpIpv6ExthdrFlags_OFPIEH_ROUTER  OfpIpv6ExthdrFlags = 32  // Router header present.
+	OfpIpv6ExthdrFlags_OFPIEH_HOP     OfpIpv6ExthdrFlags = 64  // Hop-by-hop header present.
+	OfpIpv6ExthdrFlags_OFPIEH_UNREP   OfpIpv6ExthdrFlags = 128 // Unexpected repeats encountered.
+	OfpIpv6ExthdrFlags_OFPIEH_UNSEQ   OfpIpv6ExthdrFlags = 256 // Unexpected sequencing encountered.
 )
 
-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",
-}
+// Enum value maps for OfpIpv6ExthdrFlags.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpIpv6ExthdrFlags {
+	p := new(OfpIpv6ExthdrFlags)
+	*p = x
+	return p
 }
 
 func (x OfpIpv6ExthdrFlags) String() string {
-	return proto.EnumName(OfpIpv6ExthdrFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpIpv6ExthdrFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[16].Descriptor()
+}
+
+func (OfpIpv6ExthdrFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[16]
+}
+
+func (x OfpIpv6ExthdrFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpIpv6ExthdrFlags.Descriptor instead.
 func (OfpIpv6ExthdrFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{16}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{16}
 }
 
 type OfpActionType int32
 
 const (
-	OfpActionType_OFPAT_OUTPUT       OfpActionType = 0
+	OfpActionType_OFPAT_OUTPUT       OfpActionType = 0 // Output to switch port.
 	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_SET_MPLS_TTL OfpActionType = 15 // MPLS TTL
+	OfpActionType_OFPAT_DEC_MPLS_TTL OfpActionType = 16 // Decrement MPLS TTL
+	OfpActionType_OFPAT_PUSH_VLAN    OfpActionType = 17 // Push a new VLAN tag
+	OfpActionType_OFPAT_POP_VLAN     OfpActionType = 18 // Pop the outer VLAN tag
+	OfpActionType_OFPAT_PUSH_MPLS    OfpActionType = 19 // Push a new MPLS tag
+	OfpActionType_OFPAT_POP_MPLS     OfpActionType = 20 // Pop the outer MPLS tag
+	OfpActionType_OFPAT_SET_QUEUE    OfpActionType = 21 // Set queue id when outputting to a port
+	OfpActionType_OFPAT_GROUP        OfpActionType = 22 // Apply group.
+	OfpActionType_OFPAT_SET_NW_TTL   OfpActionType = 23 // IP TTL.
+	OfpActionType_OFPAT_DEC_NW_TTL   OfpActionType = 24 // Decrement IP TTL.
+	OfpActionType_OFPAT_SET_FIELD    OfpActionType = 25 // Set a header field using OXM TLV format.
+	OfpActionType_OFPAT_PUSH_PBB     OfpActionType = 26 // Push a new PBB service tag (I-TAG)
+	OfpActionType_OFPAT_POP_PBB      OfpActionType = 27 // Pop the outer PBB service tag (I-TAG)
 	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",
-}
+// Enum value maps for OfpActionType.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpActionType {
+	p := new(OfpActionType)
+	*p = x
+	return p
 }
 
 func (x OfpActionType) String() string {
-	return proto.EnumName(OfpActionType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpActionType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[17].Descriptor()
+}
+
+func (OfpActionType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[17]
+}
+
+func (x OfpActionType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpActionType.Descriptor instead.
 func (OfpActionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{17}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{17}
 }
 
 type OfpControllerMaxLen int32
@@ -908,24 +1343,45 @@
 	OfpControllerMaxLen_OFPCML_NO_BUFFER OfpControllerMaxLen = 65535
 )
 
-var OfpControllerMaxLen_name = map[int32]string{
-	0:     "OFPCML_INVALID",
-	65509: "OFPCML_MAX",
-	65535: "OFPCML_NO_BUFFER",
-}
+// Enum value maps for OfpControllerMaxLen.
+var (
+	OfpControllerMaxLen_name = map[int32]string{
+		0:     "OFPCML_INVALID",
+		65509: "OFPCML_MAX",
+		65535: "OFPCML_NO_BUFFER",
+	}
+	OfpControllerMaxLen_value = map[string]int32{
+		"OFPCML_INVALID":   0,
+		"OFPCML_MAX":       65509,
+		"OFPCML_NO_BUFFER": 65535,
+	}
+)
 
-var OfpControllerMaxLen_value = map[string]int32{
-	"OFPCML_INVALID":   0,
-	"OFPCML_MAX":       65509,
-	"OFPCML_NO_BUFFER": 65535,
+func (x OfpControllerMaxLen) Enum() *OfpControllerMaxLen {
+	p := new(OfpControllerMaxLen)
+	*p = x
+	return p
 }
 
 func (x OfpControllerMaxLen) String() string {
-	return proto.EnumName(OfpControllerMaxLen_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpControllerMaxLen) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[18].Descriptor()
+}
+
+func (OfpControllerMaxLen) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[18]
+}
+
+func (x OfpControllerMaxLen) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpControllerMaxLen.Descriptor instead.
 func (OfpControllerMaxLen) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{18}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{18}
 }
 
 type OfpInstructionType int32
@@ -935,74 +1391,116 @@
 	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_APPLY_ACTIONS  OfpInstructionType = 4 // Applies the action(s) immediately
 	OfpInstructionType_OFPIT_CLEAR_ACTIONS  OfpInstructionType = 5
-	OfpInstructionType_OFPIT_METER          OfpInstructionType = 6
-	OfpInstructionType_OFPIT_EXPERIMENTER   OfpInstructionType = 65535
+	OfpInstructionType_OFPIT_METER          OfpInstructionType = 6     // Apply meter (rate limiter)
+	OfpInstructionType_OFPIT_EXPERIMENTER   OfpInstructionType = 65535 // Experimenter instruction
 )
 
-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",
-}
+// Enum value maps for OfpInstructionType.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpInstructionType {
+	p := new(OfpInstructionType)
+	*p = x
+	return p
 }
 
 func (x OfpInstructionType) String() string {
-	return proto.EnumName(OfpInstructionType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpInstructionType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[19].Descriptor()
+}
+
+func (OfpInstructionType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[19]
+}
+
+func (x OfpInstructionType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpInstructionType.Descriptor instead.
 func (OfpInstructionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{19}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{19}
 }
 
 type OfpFlowModCommand int32
 
 const (
-	OfpFlowModCommand_OFPFC_ADD           OfpFlowModCommand = 0
-	OfpFlowModCommand_OFPFC_MODIFY        OfpFlowModCommand = 1
+	OfpFlowModCommand_OFPFC_ADD           OfpFlowModCommand = 0 // New flow.
+	OfpFlowModCommand_OFPFC_MODIFY        OfpFlowModCommand = 1 // Modify all matching flows.
 	OfpFlowModCommand_OFPFC_MODIFY_STRICT OfpFlowModCommand = 2
-	OfpFlowModCommand_OFPFC_DELETE        OfpFlowModCommand = 3
+	OfpFlowModCommand_OFPFC_DELETE        OfpFlowModCommand = 3 // Delete all matching flows.
 	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",
-}
+// Enum value maps for OfpFlowModCommand.
+var (
+	OfpFlowModCommand_name = map[int32]string{
+		0: "OFPFC_ADD",
+		1: "OFPFC_MODIFY",
+		2: "OFPFC_MODIFY_STRICT",
+		3: "OFPFC_DELETE",
+		4: "OFPFC_DELETE_STRICT",
+	}
+	OfpFlowModCommand_value = map[string]int32{
+		"OFPFC_ADD":           0,
+		"OFPFC_MODIFY":        1,
+		"OFPFC_MODIFY_STRICT": 2,
+		"OFPFC_DELETE":        3,
+		"OFPFC_DELETE_STRICT": 4,
+	}
+)
 
-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) Enum() *OfpFlowModCommand {
+	p := new(OfpFlowModCommand)
+	*p = x
+	return p
 }
 
 func (x OfpFlowModCommand) String() string {
-	return proto.EnumName(OfpFlowModCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowModCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[20].Descriptor()
+}
+
+func (OfpFlowModCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[20]
+}
+
+func (x OfpFlowModCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowModCommand.Descriptor instead.
 func (OfpFlowModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{20}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{20}
 }
 
 type OfpFlowModFlags int32
@@ -1010,36 +1508,57 @@
 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
+	OfpFlowModFlags_OFPFF_CHECK_OVERLAP OfpFlowModFlags = 2  // Check for overlapping entries first.
+	OfpFlowModFlags_OFPFF_RESET_COUNTS  OfpFlowModFlags = 4  // Reset flow packet and byte counts.
+	OfpFlowModFlags_OFPFF_NO_PKT_COUNTS OfpFlowModFlags = 8  // Don't keep track of packet count.
+	OfpFlowModFlags_OFPFF_NO_BYT_COUNTS OfpFlowModFlags = 16 // Don't keep track of byte count.
 )
 
-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",
-}
+// Enum value maps for OfpFlowModFlags.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpFlowModFlags {
+	p := new(OfpFlowModFlags)
+	*p = x
+	return p
 }
 
 func (x OfpFlowModFlags) String() string {
-	return proto.EnumName(OfpFlowModFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowModFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[21].Descriptor()
+}
+
+func (OfpFlowModFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[21]
+}
+
+func (x OfpFlowModFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowModFlags.Descriptor instead.
 func (OfpFlowModFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{21}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{21}
 }
 
 // Group numbering. Groups can use any number up to OFPG_MAX.
@@ -1051,58 +1570,100 @@
 	OfpGroup_OFPG_MAX OfpGroup = 2147483392
 	// Fake groups.
 	OfpGroup_OFPG_ALL OfpGroup = 2147483644
-	OfpGroup_OFPG_ANY OfpGroup = 2147483647
+	OfpGroup_OFPG_ANY OfpGroup = 2147483647 // Special wildcard: no group specified.
 )
 
-var OfpGroup_name = map[int32]string{
-	0:          "OFPG_INVALID",
-	2147483392: "OFPG_MAX",
-	2147483644: "OFPG_ALL",
-	2147483647: "OFPG_ANY",
-}
+// Enum value maps for OfpGroup.
+var (
+	OfpGroup_name = map[int32]string{
+		0:          "OFPG_INVALID",
+		2147483392: "OFPG_MAX",
+		2147483644: "OFPG_ALL",
+		2147483647: "OFPG_ANY",
+	}
+	OfpGroup_value = map[string]int32{
+		"OFPG_INVALID": 0,
+		"OFPG_MAX":     2147483392,
+		"OFPG_ALL":     2147483644,
+		"OFPG_ANY":     2147483647,
+	}
+)
 
-var OfpGroup_value = map[string]int32{
-	"OFPG_INVALID": 0,
-	"OFPG_MAX":     2147483392,
-	"OFPG_ALL":     2147483644,
-	"OFPG_ANY":     2147483647,
+func (x OfpGroup) Enum() *OfpGroup {
+	p := new(OfpGroup)
+	*p = x
+	return p
 }
 
 func (x OfpGroup) String() string {
-	return proto.EnumName(OfpGroup_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroup) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[22].Descriptor()
+}
+
+func (OfpGroup) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[22]
+}
+
+func (x OfpGroup) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroup.Descriptor instead.
 func (OfpGroup) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{22}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{22}
 }
 
 // Group commands
 type OfpGroupModCommand int32
 
 const (
-	OfpGroupModCommand_OFPGC_ADD    OfpGroupModCommand = 0
-	OfpGroupModCommand_OFPGC_MODIFY OfpGroupModCommand = 1
-	OfpGroupModCommand_OFPGC_DELETE OfpGroupModCommand = 2
+	OfpGroupModCommand_OFPGC_ADD    OfpGroupModCommand = 0 // New group.
+	OfpGroupModCommand_OFPGC_MODIFY OfpGroupModCommand = 1 // Modify all matching groups.
+	OfpGroupModCommand_OFPGC_DELETE OfpGroupModCommand = 2 // Delete all matching groups.
 )
 
-var OfpGroupModCommand_name = map[int32]string{
-	0: "OFPGC_ADD",
-	1: "OFPGC_MODIFY",
-	2: "OFPGC_DELETE",
-}
+// Enum value maps for OfpGroupModCommand.
+var (
+	OfpGroupModCommand_name = map[int32]string{
+		0: "OFPGC_ADD",
+		1: "OFPGC_MODIFY",
+		2: "OFPGC_DELETE",
+	}
+	OfpGroupModCommand_value = map[string]int32{
+		"OFPGC_ADD":    0,
+		"OFPGC_MODIFY": 1,
+		"OFPGC_DELETE": 2,
+	}
+)
 
-var OfpGroupModCommand_value = map[string]int32{
-	"OFPGC_ADD":    0,
-	"OFPGC_MODIFY": 1,
-	"OFPGC_DELETE": 2,
+func (x OfpGroupModCommand) Enum() *OfpGroupModCommand {
+	p := new(OfpGroupModCommand)
+	*p = x
+	return p
 }
 
 func (x OfpGroupModCommand) String() string {
-	return proto.EnumName(OfpGroupModCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupModCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[23].Descriptor()
+}
+
+func (OfpGroupModCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[23]
+}
+
+func (x OfpGroupModCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupModCommand.Descriptor instead.
 func (OfpGroupModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{23}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{23}
 }
 
 // Group types.  Values in the range [128; 255] are reserved for experimental
@@ -1110,96 +1671,159 @@
 type OfpGroupType int32
 
 const (
-	OfpGroupType_OFPGT_ALL      OfpGroupType = 0
-	OfpGroupType_OFPGT_SELECT   OfpGroupType = 1
-	OfpGroupType_OFPGT_INDIRECT OfpGroupType = 2
-	OfpGroupType_OFPGT_FF       OfpGroupType = 3
+	OfpGroupType_OFPGT_ALL      OfpGroupType = 0 // All (multicast/broadcast) group.
+	OfpGroupType_OFPGT_SELECT   OfpGroupType = 1 // Select group.
+	OfpGroupType_OFPGT_INDIRECT OfpGroupType = 2 // Indirect group.
+	OfpGroupType_OFPGT_FF       OfpGroupType = 3 // Fast failover group.
 )
 
-var OfpGroupType_name = map[int32]string{
-	0: "OFPGT_ALL",
-	1: "OFPGT_SELECT",
-	2: "OFPGT_INDIRECT",
-	3: "OFPGT_FF",
-}
+// Enum value maps for OfpGroupType.
+var (
+	OfpGroupType_name = map[int32]string{
+		0: "OFPGT_ALL",
+		1: "OFPGT_SELECT",
+		2: "OFPGT_INDIRECT",
+		3: "OFPGT_FF",
+	}
+	OfpGroupType_value = map[string]int32{
+		"OFPGT_ALL":      0,
+		"OFPGT_SELECT":   1,
+		"OFPGT_INDIRECT": 2,
+		"OFPGT_FF":       3,
+	}
+)
 
-var OfpGroupType_value = map[string]int32{
-	"OFPGT_ALL":      0,
-	"OFPGT_SELECT":   1,
-	"OFPGT_INDIRECT": 2,
-	"OFPGT_FF":       3,
+func (x OfpGroupType) Enum() *OfpGroupType {
+	p := new(OfpGroupType)
+	*p = x
+	return p
 }
 
 func (x OfpGroupType) String() string {
-	return proto.EnumName(OfpGroupType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[24].Descriptor()
+}
+
+func (OfpGroupType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[24]
+}
+
+func (x OfpGroupType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupType.Descriptor instead.
 func (OfpGroupType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{24}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{24}
 }
 
 // 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
+	OfpPacketInReason_OFPR_NO_MATCH    OfpPacketInReason = 0 // No matching flow (table-miss flow entry).
+	OfpPacketInReason_OFPR_ACTION      OfpPacketInReason = 1 // Action explicitly output to controller.
+	OfpPacketInReason_OFPR_INVALID_TTL OfpPacketInReason = 2 // Packet has invalid TTL
 )
 
-var OfpPacketInReason_name = map[int32]string{
-	0: "OFPR_NO_MATCH",
-	1: "OFPR_ACTION",
-	2: "OFPR_INVALID_TTL",
-}
+// Enum value maps for OfpPacketInReason.
+var (
+	OfpPacketInReason_name = map[int32]string{
+		0: "OFPR_NO_MATCH",
+		1: "OFPR_ACTION",
+		2: "OFPR_INVALID_TTL",
+	}
+	OfpPacketInReason_value = map[string]int32{
+		"OFPR_NO_MATCH":    0,
+		"OFPR_ACTION":      1,
+		"OFPR_INVALID_TTL": 2,
+	}
+)
 
-var OfpPacketInReason_value = map[string]int32{
-	"OFPR_NO_MATCH":    0,
-	"OFPR_ACTION":      1,
-	"OFPR_INVALID_TTL": 2,
+func (x OfpPacketInReason) Enum() *OfpPacketInReason {
+	p := new(OfpPacketInReason)
+	*p = x
+	return p
 }
 
 func (x OfpPacketInReason) String() string {
-	return proto.EnumName(OfpPacketInReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPacketInReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[25].Descriptor()
+}
+
+func (OfpPacketInReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[25]
+}
+
+func (x OfpPacketInReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPacketInReason.Descriptor instead.
 func (OfpPacketInReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{25}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{25}
 }
 
 // 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
+	OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT OfpFlowRemovedReason = 0 // Flow idle time exceeded idle_timeout.
+	OfpFlowRemovedReason_OFPRR_HARD_TIMEOUT OfpFlowRemovedReason = 1 // Time exceeded hard_timeout.
+	OfpFlowRemovedReason_OFPRR_DELETE       OfpFlowRemovedReason = 2 // Evicted by a DELETE flow mod.
+	OfpFlowRemovedReason_OFPRR_GROUP_DELETE OfpFlowRemovedReason = 3 // Group was removed.
+	OfpFlowRemovedReason_OFPRR_METER_DELETE OfpFlowRemovedReason = 4 // Meter was removed
 )
 
-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",
-}
+// Enum value maps for OfpFlowRemovedReason.
+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",
+	}
+	OfpFlowRemovedReason_value = map[string]int32{
+		"OFPRR_IDLE_TIMEOUT": 0,
+		"OFPRR_HARD_TIMEOUT": 1,
+		"OFPRR_DELETE":       2,
+		"OFPRR_GROUP_DELETE": 3,
+		"OFPRR_METER_DELETE": 4,
+	}
+)
 
-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) Enum() *OfpFlowRemovedReason {
+	p := new(OfpFlowRemovedReason)
+	*p = x
+	return p
 }
 
 func (x OfpFlowRemovedReason) String() string {
-	return proto.EnumName(OfpFlowRemovedReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowRemovedReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[26].Descriptor()
+}
+
+func (OfpFlowRemovedReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[26]
+}
+
+func (x OfpFlowRemovedReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowRemovedReason.Descriptor instead.
 func (OfpFlowRemovedReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{26}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{26}
 }
 
 // Meter numbering. Flow meters can use any number up to OFPM_MAX.
@@ -1210,33 +1834,54 @@
 	// Last usable meter.
 	OfpMeter_OFPM_MAX OfpMeter = 2147418112
 	// Virtual meters.
-	OfpMeter_OFPM_SLOWPATH   OfpMeter = 2147483645
-	OfpMeter_OFPM_CONTROLLER OfpMeter = 2147483646
+	OfpMeter_OFPM_SLOWPATH   OfpMeter = 2147483645 // Meter for slow datapath.
+	OfpMeter_OFPM_CONTROLLER OfpMeter = 2147483646 // Meter for controller connection.
 	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",
-}
+// Enum value maps for OfpMeter.
+var (
+	OfpMeter_name = map[int32]string{
+		0:          "OFPM_ZERO",
+		2147418112: "OFPM_MAX",
+		2147483645: "OFPM_SLOWPATH",
+		2147483646: "OFPM_CONTROLLER",
+		2147483647: "OFPM_ALL",
+	}
+	OfpMeter_value = map[string]int32{
+		"OFPM_ZERO":       0,
+		"OFPM_MAX":        2147418112,
+		"OFPM_SLOWPATH":   2147483645,
+		"OFPM_CONTROLLER": 2147483646,
+		"OFPM_ALL":        2147483647,
+	}
+)
 
-var OfpMeter_value = map[string]int32{
-	"OFPM_ZERO":       0,
-	"OFPM_MAX":        2147418112,
-	"OFPM_SLOWPATH":   2147483645,
-	"OFPM_CONTROLLER": 2147483646,
-	"OFPM_ALL":        2147483647,
+func (x OfpMeter) Enum() *OfpMeter {
+	p := new(OfpMeter)
+	*p = x
+	return p
 }
 
 func (x OfpMeter) String() string {
-	return proto.EnumName(OfpMeter_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeter) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[27].Descriptor()
+}
+
+func (OfpMeter) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[27]
+}
+
+func (x OfpMeter) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeter.Descriptor instead.
 func (OfpMeter) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{27}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{27}
 }
 
 // Meter band types
@@ -1244,60 +1889,102 @@
 
 const (
 	OfpMeterBandType_OFPMBT_INVALID      OfpMeterBandType = 0
-	OfpMeterBandType_OFPMBT_DROP         OfpMeterBandType = 1
-	OfpMeterBandType_OFPMBT_DSCP_REMARK  OfpMeterBandType = 2
-	OfpMeterBandType_OFPMBT_EXPERIMENTER OfpMeterBandType = 65535
+	OfpMeterBandType_OFPMBT_DROP         OfpMeterBandType = 1     // Drop packet.
+	OfpMeterBandType_OFPMBT_DSCP_REMARK  OfpMeterBandType = 2     // Remark DSCP in the IP header.
+	OfpMeterBandType_OFPMBT_EXPERIMENTER OfpMeterBandType = 65535 // Experimenter meter band.
 )
 
-var OfpMeterBandType_name = map[int32]string{
-	0:     "OFPMBT_INVALID",
-	1:     "OFPMBT_DROP",
-	2:     "OFPMBT_DSCP_REMARK",
-	65535: "OFPMBT_EXPERIMENTER",
-}
+// Enum value maps for OfpMeterBandType.
+var (
+	OfpMeterBandType_name = map[int32]string{
+		0:     "OFPMBT_INVALID",
+		1:     "OFPMBT_DROP",
+		2:     "OFPMBT_DSCP_REMARK",
+		65535: "OFPMBT_EXPERIMENTER",
+	}
+	OfpMeterBandType_value = map[string]int32{
+		"OFPMBT_INVALID":      0,
+		"OFPMBT_DROP":         1,
+		"OFPMBT_DSCP_REMARK":  2,
+		"OFPMBT_EXPERIMENTER": 65535,
+	}
+)
 
-var OfpMeterBandType_value = map[string]int32{
-	"OFPMBT_INVALID":      0,
-	"OFPMBT_DROP":         1,
-	"OFPMBT_DSCP_REMARK":  2,
-	"OFPMBT_EXPERIMENTER": 65535,
+func (x OfpMeterBandType) Enum() *OfpMeterBandType {
+	p := new(OfpMeterBandType)
+	*p = x
+	return p
 }
 
 func (x OfpMeterBandType) String() string {
-	return proto.EnumName(OfpMeterBandType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterBandType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[28].Descriptor()
+}
+
+func (OfpMeterBandType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[28]
+}
+
+func (x OfpMeterBandType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterBandType.Descriptor instead.
 func (OfpMeterBandType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{28}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{28}
 }
 
 // Meter commands
 type OfpMeterModCommand int32
 
 const (
-	OfpMeterModCommand_OFPMC_ADD    OfpMeterModCommand = 0
-	OfpMeterModCommand_OFPMC_MODIFY OfpMeterModCommand = 1
-	OfpMeterModCommand_OFPMC_DELETE OfpMeterModCommand = 2
+	OfpMeterModCommand_OFPMC_ADD    OfpMeterModCommand = 0 // New meter.
+	OfpMeterModCommand_OFPMC_MODIFY OfpMeterModCommand = 1 // Modify specified meter.
+	OfpMeterModCommand_OFPMC_DELETE OfpMeterModCommand = 2 // Delete specified meter.
 )
 
-var OfpMeterModCommand_name = map[int32]string{
-	0: "OFPMC_ADD",
-	1: "OFPMC_MODIFY",
-	2: "OFPMC_DELETE",
-}
+// Enum value maps for OfpMeterModCommand.
+var (
+	OfpMeterModCommand_name = map[int32]string{
+		0: "OFPMC_ADD",
+		1: "OFPMC_MODIFY",
+		2: "OFPMC_DELETE",
+	}
+	OfpMeterModCommand_value = map[string]int32{
+		"OFPMC_ADD":    0,
+		"OFPMC_MODIFY": 1,
+		"OFPMC_DELETE": 2,
+	}
+)
 
-var OfpMeterModCommand_value = map[string]int32{
-	"OFPMC_ADD":    0,
-	"OFPMC_MODIFY": 1,
-	"OFPMC_DELETE": 2,
+func (x OfpMeterModCommand) Enum() *OfpMeterModCommand {
+	p := new(OfpMeterModCommand)
+	*p = x
+	return p
 }
 
 func (x OfpMeterModCommand) String() string {
-	return proto.EnumName(OfpMeterModCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterModCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[29].Descriptor()
+}
+
+func (OfpMeterModCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[29]
+}
+
+func (x OfpMeterModCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterModCommand.Descriptor instead.
 func (OfpMeterModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{29}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{29}
 }
 
 // Meter configuration flags
@@ -1305,34 +1992,55 @@
 
 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
+	OfpMeterFlags_OFPMF_KBPS    OfpMeterFlags = 1 // Rate value in kb/s (kilo-bit per second).
+	OfpMeterFlags_OFPMF_PKTPS   OfpMeterFlags = 2 // Rate value in packet/sec.
+	OfpMeterFlags_OFPMF_BURST   OfpMeterFlags = 4 // Do burst size.
+	OfpMeterFlags_OFPMF_STATS   OfpMeterFlags = 8 // Collect statistics.
 )
 
-var OfpMeterFlags_name = map[int32]string{
-	0: "OFPMF_INVALID",
-	1: "OFPMF_KBPS",
-	2: "OFPMF_PKTPS",
-	4: "OFPMF_BURST",
-	8: "OFPMF_STATS",
-}
+// Enum value maps for OfpMeterFlags.
+var (
+	OfpMeterFlags_name = map[int32]string{
+		0: "OFPMF_INVALID",
+		1: "OFPMF_KBPS",
+		2: "OFPMF_PKTPS",
+		4: "OFPMF_BURST",
+		8: "OFPMF_STATS",
+	}
+	OfpMeterFlags_value = map[string]int32{
+		"OFPMF_INVALID": 0,
+		"OFPMF_KBPS":    1,
+		"OFPMF_PKTPS":   2,
+		"OFPMF_BURST":   4,
+		"OFPMF_STATS":   8,
+	}
+)
 
-var OfpMeterFlags_value = map[string]int32{
-	"OFPMF_INVALID": 0,
-	"OFPMF_KBPS":    1,
-	"OFPMF_PKTPS":   2,
-	"OFPMF_BURST":   4,
-	"OFPMF_STATS":   8,
+func (x OfpMeterFlags) Enum() *OfpMeterFlags {
+	p := new(OfpMeterFlags)
+	*p = x
+	return p
 }
 
 func (x OfpMeterFlags) String() string {
-	return proto.EnumName(OfpMeterFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[30].Descriptor()
+}
+
+func (OfpMeterFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[30]
+}
+
+func (x OfpMeterFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterFlags.Descriptor instead.
 func (OfpMeterFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{30}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{30}
 }
 
 // Values for 'type' in ofp_error_message.  These values are immutable: they
@@ -1341,65 +2049,86 @@
 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
+	OfpErrorType_OFPET_HELLO_FAILED          OfpErrorType = 0     // Hello protocol failed.
+	OfpErrorType_OFPET_BAD_REQUEST           OfpErrorType = 1     // Request was not understood.
+	OfpErrorType_OFPET_BAD_ACTION            OfpErrorType = 2     // Error in action description.
+	OfpErrorType_OFPET_BAD_INSTRUCTION       OfpErrorType = 3     // Error in instruction list.
+	OfpErrorType_OFPET_BAD_MATCH             OfpErrorType = 4     // Error in match.
+	OfpErrorType_OFPET_FLOW_MOD_FAILED       OfpErrorType = 5     // Problem modifying flow entry.
+	OfpErrorType_OFPET_GROUP_MOD_FAILED      OfpErrorType = 6     // Problem modifying group entry.
+	OfpErrorType_OFPET_PORT_MOD_FAILED       OfpErrorType = 7     // Port mod request failed.
+	OfpErrorType_OFPET_TABLE_MOD_FAILED      OfpErrorType = 8     // Table mod request failed.
+	OfpErrorType_OFPET_QUEUE_OP_FAILED       OfpErrorType = 9     // Queue operation failed.
+	OfpErrorType_OFPET_SWITCH_CONFIG_FAILED  OfpErrorType = 10    // Switch config request failed.
+	OfpErrorType_OFPET_ROLE_REQUEST_FAILED   OfpErrorType = 11    // Controller Role request failed.
+	OfpErrorType_OFPET_METER_MOD_FAILED      OfpErrorType = 12    // Error in meter.
+	OfpErrorType_OFPET_TABLE_FEATURES_FAILED OfpErrorType = 13    // Setting table features failed.
+	OfpErrorType_OFPET_EXPERIMENTER          OfpErrorType = 65535 // Experimenter error messages.
 )
 
-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",
-}
+// Enum value maps for OfpErrorType.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpErrorType {
+	p := new(OfpErrorType)
+	*p = x
+	return p
 }
 
 func (x OfpErrorType) String() string {
-	return proto.EnumName(OfpErrorType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpErrorType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[31].Descriptor()
+}
+
+func (OfpErrorType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[31]
+}
+
+func (x OfpErrorType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpErrorType.Descriptor instead.
 func (OfpErrorType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{31}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{31}
 }
 
 // ofp_error_msg 'code' values for OFPET_HELLO_FAILED.  'data' contains an
@@ -1407,26 +2136,47 @@
 type OfpHelloFailedCode int32
 
 const (
-	OfpHelloFailedCode_OFPHFC_INCOMPATIBLE OfpHelloFailedCode = 0
-	OfpHelloFailedCode_OFPHFC_EPERM        OfpHelloFailedCode = 1
+	OfpHelloFailedCode_OFPHFC_INCOMPATIBLE OfpHelloFailedCode = 0 // No compatible version.
+	OfpHelloFailedCode_OFPHFC_EPERM        OfpHelloFailedCode = 1 // Permissions error.
 )
 
-var OfpHelloFailedCode_name = map[int32]string{
-	0: "OFPHFC_INCOMPATIBLE",
-	1: "OFPHFC_EPERM",
-}
+// Enum value maps for OfpHelloFailedCode.
+var (
+	OfpHelloFailedCode_name = map[int32]string{
+		0: "OFPHFC_INCOMPATIBLE",
+		1: "OFPHFC_EPERM",
+	}
+	OfpHelloFailedCode_value = map[string]int32{
+		"OFPHFC_INCOMPATIBLE": 0,
+		"OFPHFC_EPERM":        1,
+	}
+)
 
-var OfpHelloFailedCode_value = map[string]int32{
-	"OFPHFC_INCOMPATIBLE": 0,
-	"OFPHFC_EPERM":        1,
+func (x OfpHelloFailedCode) Enum() *OfpHelloFailedCode {
+	p := new(OfpHelloFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpHelloFailedCode) String() string {
-	return proto.EnumName(OfpHelloFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpHelloFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[32].Descriptor()
+}
+
+func (OfpHelloFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[32]
+}
+
+func (x OfpHelloFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpHelloFailedCode.Descriptor instead.
 func (OfpHelloFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{32}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{32}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_REQUEST.  'data' contains at least
@@ -1434,62 +2184,83 @@
 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_VERSION               OfpBadRequestCode = 0 // ofp_header.version not supported.
+	OfpBadRequestCode_OFPBRC_BAD_TYPE                  OfpBadRequestCode = 1 // ofp_header.type not supported.
+	OfpBadRequestCode_OFPBRC_BAD_MULTIPART             OfpBadRequestCode = 2 // ofp_multipart_request.type not supported.
 	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_EXP_TYPE              OfpBadRequestCode = 4 // Experimenter type not supported.
+	OfpBadRequestCode_OFPBRC_EPERM                     OfpBadRequestCode = 5 // Permissions error.
+	OfpBadRequestCode_OFPBRC_BAD_LEN                   OfpBadRequestCode = 6 // Wrong request length for type.
+	OfpBadRequestCode_OFPBRC_BUFFER_EMPTY              OfpBadRequestCode = 7 // Specified buffer has already been used.
+	OfpBadRequestCode_OFPBRC_BUFFER_UNKNOWN            OfpBadRequestCode = 8 // Specified buffer does not exist.
 	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_IS_SLAVE                  OfpBadRequestCode = 10 // Denied because controller is slave.
+	OfpBadRequestCode_OFPBRC_BAD_PORT                  OfpBadRequestCode = 11 // Invalid port.
+	OfpBadRequestCode_OFPBRC_BAD_PACKET                OfpBadRequestCode = 12 // Invalid packet in packet-out.
 	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",
-}
+// Enum value maps for OfpBadRequestCode.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpBadRequestCode {
+	p := new(OfpBadRequestCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadRequestCode) String() string {
-	return proto.EnumName(OfpBadRequestCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadRequestCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[33].Descriptor()
+}
+
+func (OfpBadRequestCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[33]
+}
+
+func (x OfpBadRequestCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadRequestCode.Descriptor instead.
 func (OfpBadRequestCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{33}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{33}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_ACTION.  'data' contains at least
@@ -1497,68 +2268,89 @@
 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_BAD_TYPE           OfpBadActionCode = 0 // Unknown or unsupported action type.
+	OfpBadActionCode_OFPBAC_BAD_LEN            OfpBadActionCode = 1 // Length problem in actions.
+	OfpBadActionCode_OFPBAC_BAD_EXPERIMENTER   OfpBadActionCode = 2 // Unknown experimenter id specified.
+	OfpBadActionCode_OFPBAC_BAD_EXP_TYPE       OfpBadActionCode = 3 // Unknown action for experimenter id.
+	OfpBadActionCode_OFPBAC_BAD_OUT_PORT       OfpBadActionCode = 4 // Problem validating output port.
+	OfpBadActionCode_OFPBAC_BAD_ARGUMENT       OfpBadActionCode = 5 // Bad action argument.
+	OfpBadActionCode_OFPBAC_EPERM              OfpBadActionCode = 6 // Permissions error.
+	OfpBadActionCode_OFPBAC_TOO_MANY           OfpBadActionCode = 7 // Can't handle this many actions.
+	OfpBadActionCode_OFPBAC_BAD_QUEUE          OfpBadActionCode = 8 // Problem validating output queue.
+	OfpBadActionCode_OFPBAC_BAD_OUT_GROUP      OfpBadActionCode = 9 // Invalid group id in forward action.
 	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
+	OfpBadActionCode_OFPBAC_BAD_SET_TYPE       OfpBadActionCode = 13 // Unsupported type in SET_FIELD action.
+	OfpBadActionCode_OFPBAC_BAD_SET_LEN        OfpBadActionCode = 14 // Length problem in SET_FIELD action.
+	OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT   OfpBadActionCode = 15 // Bad argument in SET_FIELD action.
 )
 
-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",
-}
+// Enum value maps for OfpBadActionCode.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpBadActionCode {
+	p := new(OfpBadActionCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadActionCode) String() string {
-	return proto.EnumName(OfpBadActionCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadActionCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[34].Descriptor()
+}
+
+func (OfpBadActionCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[34]
+}
+
+func (x OfpBadActionCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadActionCode.Descriptor instead.
 func (OfpBadActionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{34}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{34}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_INSTRUCTION.  'data' contains at
@@ -1566,47 +2358,68 @@
 type OfpBadInstructionCode int32
 
 const (
-	OfpBadInstructionCode_OFPBIC_UNKNOWN_INST        OfpBadInstructionCode = 0
+	OfpBadInstructionCode_OFPBIC_UNKNOWN_INST        OfpBadInstructionCode = 0 // Unknown instruction.
 	OfpBadInstructionCode_OFPBIC_UNSUP_INST          OfpBadInstructionCode = 1
-	OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID        OfpBadInstructionCode = 2
-	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA      OfpBadInstructionCode = 3
+	OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID        OfpBadInstructionCode = 2 // Invalid Table-ID specified.
+	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA      OfpBadInstructionCode = 3 // Metadata value unsupported by datapath.
 	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
+	OfpBadInstructionCode_OFPBIC_BAD_EXPERIMENTER    OfpBadInstructionCode = 5 // Unknown experimenter id specified.
+	OfpBadInstructionCode_OFPBIC_BAD_EXP_TYPE        OfpBadInstructionCode = 6 // Unknown instruction for experimenter id.
+	OfpBadInstructionCode_OFPBIC_BAD_LEN             OfpBadInstructionCode = 7 // Length problem in instructions.
+	OfpBadInstructionCode_OFPBIC_EPERM               OfpBadInstructionCode = 8 // Permissions error.
 )
 
-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",
-}
+// Enum value maps for OfpBadInstructionCode.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpBadInstructionCode {
+	p := new(OfpBadInstructionCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadInstructionCode) String() string {
-	return proto.EnumName(OfpBadInstructionCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadInstructionCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[35].Descriptor()
+}
+
+func (OfpBadInstructionCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[35]
+}
+
+func (x OfpBadInstructionCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadInstructionCode.Descriptor instead.
 func (OfpBadInstructionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{35}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{35}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_MATCH.  'data' contains at least
@@ -1615,55 +2428,76 @@
 
 const (
 	OfpBadMatchCode_OFPBMC_BAD_TYPE         OfpBadMatchCode = 0
-	OfpBadMatchCode_OFPBMC_BAD_LEN          OfpBadMatchCode = 1
-	OfpBadMatchCode_OFPBMC_BAD_TAG          OfpBadMatchCode = 2
+	OfpBadMatchCode_OFPBMC_BAD_LEN          OfpBadMatchCode = 1 // Length problem in match.
+	OfpBadMatchCode_OFPBMC_BAD_TAG          OfpBadMatchCode = 2 // Match uses an unsupported tag/encap.
 	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_FIELD        OfpBadMatchCode = 6 // Unsupported field type in the match.
+	OfpBadMatchCode_OFPBMC_BAD_VALUE        OfpBadMatchCode = 7 // Unsupported value in a match field.
 	OfpBadMatchCode_OFPBMC_BAD_MASK         OfpBadMatchCode = 8
-	OfpBadMatchCode_OFPBMC_BAD_PREREQ       OfpBadMatchCode = 9
-	OfpBadMatchCode_OFPBMC_DUP_FIELD        OfpBadMatchCode = 10
-	OfpBadMatchCode_OFPBMC_EPERM            OfpBadMatchCode = 11
+	OfpBadMatchCode_OFPBMC_BAD_PREREQ       OfpBadMatchCode = 9  // A prerequisite was not met.
+	OfpBadMatchCode_OFPBMC_DUP_FIELD        OfpBadMatchCode = 10 // A field type was duplicated.
+	OfpBadMatchCode_OFPBMC_EPERM            OfpBadMatchCode = 11 // Permissions error.
 )
 
-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",
-}
+// Enum value maps for OfpBadMatchCode.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpBadMatchCode {
+	p := new(OfpBadMatchCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadMatchCode) String() string {
-	return proto.EnumName(OfpBadMatchCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadMatchCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[36].Descriptor()
+}
+
+func (OfpBadMatchCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[36]
+}
+
+func (x OfpBadMatchCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadMatchCode.Descriptor instead.
 func (OfpBadMatchCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{36}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{36}
 }
 
 // ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED.  'data' contains
@@ -1671,44 +2505,65 @@
 type OfpFlowModFailedCode int32
 
 const (
-	OfpFlowModFailedCode_OFPFMFC_UNKNOWN      OfpFlowModFailedCode = 0
-	OfpFlowModFailedCode_OFPFMFC_TABLE_FULL   OfpFlowModFailedCode = 1
-	OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID OfpFlowModFailedCode = 2
+	OfpFlowModFailedCode_OFPFMFC_UNKNOWN      OfpFlowModFailedCode = 0 // Unspecified error.
+	OfpFlowModFailedCode_OFPFMFC_TABLE_FULL   OfpFlowModFailedCode = 1 // Flow not added because table was full.
+	OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID OfpFlowModFailedCode = 2 // Table does not exist
 	OfpFlowModFailedCode_OFPFMFC_OVERLAP      OfpFlowModFailedCode = 3
-	OfpFlowModFailedCode_OFPFMFC_EPERM        OfpFlowModFailedCode = 4
+	OfpFlowModFailedCode_OFPFMFC_EPERM        OfpFlowModFailedCode = 4 // Permissions error.
 	OfpFlowModFailedCode_OFPFMFC_BAD_TIMEOUT  OfpFlowModFailedCode = 5
-	OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND  OfpFlowModFailedCode = 6
-	OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS    OfpFlowModFailedCode = 7
+	OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND  OfpFlowModFailedCode = 6 // Unsupported or unknown command.
+	OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS    OfpFlowModFailedCode = 7 // Unsupported or unknown flags.
 )
 
-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",
-}
+// Enum value maps for OfpFlowModFailedCode.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpFlowModFailedCode {
+	p := new(OfpFlowModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpFlowModFailedCode) String() string {
-	return proto.EnumName(OfpFlowModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[37].Descriptor()
+}
+
+func (OfpFlowModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[37]
+}
+
+func (x OfpFlowModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowModFailedCode.Descriptor instead.
 func (OfpFlowModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{37}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{37}
 }
 
 // ofp_error_msg 'code' values for OFPET_GROUP_MOD_FAILED.  'data' contains
@@ -1719,62 +2574,83 @@
 	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_GROUPS        OfpGroupModFailedCode = 3 // The group table is full.
 	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_LOOP                 OfpGroupModFailedCode = 7 // Group entry would cause a loop.
 	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
+	OfpGroupModFailedCode_OFPGMFC_BAD_TYPE             OfpGroupModFailedCode = 10 // Unsupported or unknown group type.
+	OfpGroupModFailedCode_OFPGMFC_BAD_COMMAND          OfpGroupModFailedCode = 11 // Unsupported or unknown command.
+	OfpGroupModFailedCode_OFPGMFC_BAD_BUCKET           OfpGroupModFailedCode = 12 // Error in bucket.
+	OfpGroupModFailedCode_OFPGMFC_BAD_WATCH            OfpGroupModFailedCode = 13 // Error in watch port/group.
+	OfpGroupModFailedCode_OFPGMFC_EPERM                OfpGroupModFailedCode = 14 // Permissions error.
 )
 
-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",
-}
+// Enum value maps for OfpGroupModFailedCode.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpGroupModFailedCode {
+	p := new(OfpGroupModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpGroupModFailedCode) String() string {
-	return proto.EnumName(OfpGroupModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[38].Descriptor()
+}
+
+func (OfpGroupModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[38]
+}
+
+func (x OfpGroupModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupModFailedCode.Descriptor instead.
 func (OfpGroupModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{38}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{38}
 }
 
 // ofp_error_msg 'code' values for OFPET_PORT_MOD_FAILED.  'data' contains
@@ -1782,35 +2658,56 @@
 type OfpPortModFailedCode int32
 
 const (
-	OfpPortModFailedCode_OFPPMFC_BAD_PORT      OfpPortModFailedCode = 0
+	OfpPortModFailedCode_OFPPMFC_BAD_PORT      OfpPortModFailedCode = 0 // Specified port number does not exist.
 	OfpPortModFailedCode_OFPPMFC_BAD_HW_ADDR   OfpPortModFailedCode = 1
-	OfpPortModFailedCode_OFPPMFC_BAD_CONFIG    OfpPortModFailedCode = 2
-	OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE OfpPortModFailedCode = 3
-	OfpPortModFailedCode_OFPPMFC_EPERM         OfpPortModFailedCode = 4
+	OfpPortModFailedCode_OFPPMFC_BAD_CONFIG    OfpPortModFailedCode = 2 // Specified config is invalid.
+	OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE OfpPortModFailedCode = 3 // Specified advertise is invalid.
+	OfpPortModFailedCode_OFPPMFC_EPERM         OfpPortModFailedCode = 4 // Permissions error.
 )
 
-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",
-}
+// Enum value maps for OfpPortModFailedCode.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpPortModFailedCode {
+	p := new(OfpPortModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpPortModFailedCode) String() string {
-	return proto.EnumName(OfpPortModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[39].Descriptor()
+}
+
+func (OfpPortModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[39]
+}
+
+func (x OfpPortModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortModFailedCode.Descriptor instead.
 func (OfpPortModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{39}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{39}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_MOD_FAILED.  'data' contains
@@ -1818,29 +2715,50 @@
 type OfpTableModFailedCode int32
 
 const (
-	OfpTableModFailedCode_OFPTMFC_BAD_TABLE  OfpTableModFailedCode = 0
-	OfpTableModFailedCode_OFPTMFC_BAD_CONFIG OfpTableModFailedCode = 1
-	OfpTableModFailedCode_OFPTMFC_EPERM      OfpTableModFailedCode = 2
+	OfpTableModFailedCode_OFPTMFC_BAD_TABLE  OfpTableModFailedCode = 0 // Specified table does not exist.
+	OfpTableModFailedCode_OFPTMFC_BAD_CONFIG OfpTableModFailedCode = 1 // Specified config is invalid.
+	OfpTableModFailedCode_OFPTMFC_EPERM      OfpTableModFailedCode = 2 // Permissions error.
 )
 
-var OfpTableModFailedCode_name = map[int32]string{
-	0: "OFPTMFC_BAD_TABLE",
-	1: "OFPTMFC_BAD_CONFIG",
-	2: "OFPTMFC_EPERM",
-}
+// Enum value maps for OfpTableModFailedCode.
+var (
+	OfpTableModFailedCode_name = map[int32]string{
+		0: "OFPTMFC_BAD_TABLE",
+		1: "OFPTMFC_BAD_CONFIG",
+		2: "OFPTMFC_EPERM",
+	}
+	OfpTableModFailedCode_value = map[string]int32{
+		"OFPTMFC_BAD_TABLE":  0,
+		"OFPTMFC_BAD_CONFIG": 1,
+		"OFPTMFC_EPERM":      2,
+	}
+)
 
-var OfpTableModFailedCode_value = map[string]int32{
-	"OFPTMFC_BAD_TABLE":  0,
-	"OFPTMFC_BAD_CONFIG": 1,
-	"OFPTMFC_EPERM":      2,
+func (x OfpTableModFailedCode) Enum() *OfpTableModFailedCode {
+	p := new(OfpTableModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpTableModFailedCode) String() string {
-	return proto.EnumName(OfpTableModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[40].Descriptor()
+}
+
+func (OfpTableModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[40]
+}
+
+func (x OfpTableModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableModFailedCode.Descriptor instead.
 func (OfpTableModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{40}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{40}
 }
 
 // ofp_error msg 'code' values for OFPET_QUEUE_OP_FAILED. 'data' contains
@@ -1848,29 +2766,50 @@
 type OfpQueueOpFailedCode int32
 
 const (
-	OfpQueueOpFailedCode_OFPQOFC_BAD_PORT  OfpQueueOpFailedCode = 0
-	OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE OfpQueueOpFailedCode = 1
-	OfpQueueOpFailedCode_OFPQOFC_EPERM     OfpQueueOpFailedCode = 2
+	OfpQueueOpFailedCode_OFPQOFC_BAD_PORT  OfpQueueOpFailedCode = 0 // Invalid port (or port does not exist).
+	OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE OfpQueueOpFailedCode = 1 // Queue does not exist.
+	OfpQueueOpFailedCode_OFPQOFC_EPERM     OfpQueueOpFailedCode = 2 // Permissions error.
 )
 
-var OfpQueueOpFailedCode_name = map[int32]string{
-	0: "OFPQOFC_BAD_PORT",
-	1: "OFPQOFC_BAD_QUEUE",
-	2: "OFPQOFC_EPERM",
-}
+// Enum value maps for OfpQueueOpFailedCode.
+var (
+	OfpQueueOpFailedCode_name = map[int32]string{
+		0: "OFPQOFC_BAD_PORT",
+		1: "OFPQOFC_BAD_QUEUE",
+		2: "OFPQOFC_EPERM",
+	}
+	OfpQueueOpFailedCode_value = map[string]int32{
+		"OFPQOFC_BAD_PORT":  0,
+		"OFPQOFC_BAD_QUEUE": 1,
+		"OFPQOFC_EPERM":     2,
+	}
+)
 
-var OfpQueueOpFailedCode_value = map[string]int32{
-	"OFPQOFC_BAD_PORT":  0,
-	"OFPQOFC_BAD_QUEUE": 1,
-	"OFPQOFC_EPERM":     2,
+func (x OfpQueueOpFailedCode) Enum() *OfpQueueOpFailedCode {
+	p := new(OfpQueueOpFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpQueueOpFailedCode) String() string {
-	return proto.EnumName(OfpQueueOpFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpQueueOpFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[41].Descriptor()
+}
+
+func (OfpQueueOpFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[41]
+}
+
+func (x OfpQueueOpFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpQueueOpFailedCode.Descriptor instead.
 func (OfpQueueOpFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{41}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{41}
 }
 
 // ofp_error_msg 'code' values for OFPET_SWITCH_CONFIG_FAILED. 'data' contains
@@ -1878,29 +2817,50 @@
 type OfpSwitchConfigFailedCode int32
 
 const (
-	OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS OfpSwitchConfigFailedCode = 0
-	OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN   OfpSwitchConfigFailedCode = 1
-	OfpSwitchConfigFailedCode_OFPSCFC_EPERM     OfpSwitchConfigFailedCode = 2
+	OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS OfpSwitchConfigFailedCode = 0 // Specified flags is invalid.
+	OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN   OfpSwitchConfigFailedCode = 1 // Specified len is invalid.
+	OfpSwitchConfigFailedCode_OFPSCFC_EPERM     OfpSwitchConfigFailedCode = 2 // Permissions error.
 )
 
-var OfpSwitchConfigFailedCode_name = map[int32]string{
-	0: "OFPSCFC_BAD_FLAGS",
-	1: "OFPSCFC_BAD_LEN",
-	2: "OFPSCFC_EPERM",
-}
+// Enum value maps for OfpSwitchConfigFailedCode.
+var (
+	OfpSwitchConfigFailedCode_name = map[int32]string{
+		0: "OFPSCFC_BAD_FLAGS",
+		1: "OFPSCFC_BAD_LEN",
+		2: "OFPSCFC_EPERM",
+	}
+	OfpSwitchConfigFailedCode_value = map[string]int32{
+		"OFPSCFC_BAD_FLAGS": 0,
+		"OFPSCFC_BAD_LEN":   1,
+		"OFPSCFC_EPERM":     2,
+	}
+)
 
-var OfpSwitchConfigFailedCode_value = map[string]int32{
-	"OFPSCFC_BAD_FLAGS": 0,
-	"OFPSCFC_BAD_LEN":   1,
-	"OFPSCFC_EPERM":     2,
+func (x OfpSwitchConfigFailedCode) Enum() *OfpSwitchConfigFailedCode {
+	p := new(OfpSwitchConfigFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpSwitchConfigFailedCode) String() string {
-	return proto.EnumName(OfpSwitchConfigFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpSwitchConfigFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[42].Descriptor()
+}
+
+func (OfpSwitchConfigFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[42]
+}
+
+func (x OfpSwitchConfigFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpSwitchConfigFailedCode.Descriptor instead.
 func (OfpSwitchConfigFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{42}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{42}
 }
 
 // ofp_error_msg 'code' values for OFPET_ROLE_REQUEST_FAILED. 'data' contains
@@ -1908,29 +2868,50 @@
 type OfpRoleRequestFailedCode int32
 
 const (
-	OfpRoleRequestFailedCode_OFPRRFC_STALE    OfpRoleRequestFailedCode = 0
-	OfpRoleRequestFailedCode_OFPRRFC_UNSUP    OfpRoleRequestFailedCode = 1
-	OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE OfpRoleRequestFailedCode = 2
+	OfpRoleRequestFailedCode_OFPRRFC_STALE    OfpRoleRequestFailedCode = 0 // Stale Message: old generation_id.
+	OfpRoleRequestFailedCode_OFPRRFC_UNSUP    OfpRoleRequestFailedCode = 1 // Controller role change unsupported.
+	OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE OfpRoleRequestFailedCode = 2 // Invalid role.
 )
 
-var OfpRoleRequestFailedCode_name = map[int32]string{
-	0: "OFPRRFC_STALE",
-	1: "OFPRRFC_UNSUP",
-	2: "OFPRRFC_BAD_ROLE",
-}
+// Enum value maps for OfpRoleRequestFailedCode.
+var (
+	OfpRoleRequestFailedCode_name = map[int32]string{
+		0: "OFPRRFC_STALE",
+		1: "OFPRRFC_UNSUP",
+		2: "OFPRRFC_BAD_ROLE",
+	}
+	OfpRoleRequestFailedCode_value = map[string]int32{
+		"OFPRRFC_STALE":    0,
+		"OFPRRFC_UNSUP":    1,
+		"OFPRRFC_BAD_ROLE": 2,
+	}
+)
 
-var OfpRoleRequestFailedCode_value = map[string]int32{
-	"OFPRRFC_STALE":    0,
-	"OFPRRFC_UNSUP":    1,
-	"OFPRRFC_BAD_ROLE": 2,
+func (x OfpRoleRequestFailedCode) Enum() *OfpRoleRequestFailedCode {
+	p := new(OfpRoleRequestFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpRoleRequestFailedCode) String() string {
-	return proto.EnumName(OfpRoleRequestFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpRoleRequestFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[43].Descriptor()
+}
+
+func (OfpRoleRequestFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[43]
+}
+
+func (x OfpRoleRequestFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpRoleRequestFailedCode.Descriptor instead.
 func (OfpRoleRequestFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{43}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{43}
 }
 
 // ofp_error_msg 'code' values for OFPET_METER_MOD_FAILED.  'data' contains
@@ -1938,56 +2919,77 @@
 type OfpMeterModFailedCode int32
 
 const (
-	OfpMeterModFailedCode_OFPMMFC_UNKNOWN         OfpMeterModFailedCode = 0
+	OfpMeterModFailedCode_OFPMMFC_UNKNOWN         OfpMeterModFailedCode = 0 // Unspecified error.
 	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_DETAIL OfpMeterModFailedCode = 9
-	OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS   OfpMeterModFailedCode = 10
+	OfpMeterModFailedCode_OFPMMFC_BAD_COMMAND     OfpMeterModFailedCode = 4  // Unsupported or unknown command.
+	OfpMeterModFailedCode_OFPMMFC_BAD_FLAGS       OfpMeterModFailedCode = 5  // Flag configuration unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_RATE        OfpMeterModFailedCode = 6  // Rate unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_BURST       OfpMeterModFailedCode = 7  // Burst size unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_BAND        OfpMeterModFailedCode = 8  // Band unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_BAND_DETAIL OfpMeterModFailedCode = 9  // Band value unsupported.
+	OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS   OfpMeterModFailedCode = 10 // No more meters available.
 	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_DETAIL",
-	10: "OFPMMFC_OUT_OF_METERS",
-	11: "OFPMMFC_OUT_OF_BANDS",
-}
+// Enum value maps for OfpMeterModFailedCode.
+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_DETAIL",
+		10: "OFPMMFC_OUT_OF_METERS",
+		11: "OFPMMFC_OUT_OF_BANDS",
+	}
+	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_DETAIL": 9,
+		"OFPMMFC_OUT_OF_METERS":   10,
+		"OFPMMFC_OUT_OF_BANDS":    11,
+	}
+)
 
-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_DETAIL": 9,
-	"OFPMMFC_OUT_OF_METERS":   10,
-	"OFPMMFC_OUT_OF_BANDS":    11,
+func (x OfpMeterModFailedCode) Enum() *OfpMeterModFailedCode {
+	p := new(OfpMeterModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpMeterModFailedCode) String() string {
-	return proto.EnumName(OfpMeterModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[44].Descriptor()
+}
+
+func (OfpMeterModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[44]
+}
+
+func (x OfpMeterModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterModFailedCode.Descriptor instead.
 func (OfpMeterModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{44}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{44}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_FEATURES_FAILED. 'data' contains
@@ -1995,38 +2997,59 @@
 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
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TABLE    OfpTableFeaturesFailedCode = 0 // Specified table does not exist.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_METADATA OfpTableFeaturesFailedCode = 1 // Invalid metadata mask.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TYPE     OfpTableFeaturesFailedCode = 2 // Unknown property type.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_LEN      OfpTableFeaturesFailedCode = 3 // Length problem in properties.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT OfpTableFeaturesFailedCode = 4 // Unsupported property value.
+	OfpTableFeaturesFailedCode_OFPTFFC_EPERM        OfpTableFeaturesFailedCode = 5 // Permissions error.
 )
 
-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",
-}
+// Enum value maps for OfpTableFeaturesFailedCode.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpTableFeaturesFailedCode {
+	p := new(OfpTableFeaturesFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpTableFeaturesFailedCode) String() string {
-	return proto.EnumName(OfpTableFeaturesFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableFeaturesFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[45].Descriptor()
+}
+
+func (OfpTableFeaturesFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[45]
+}
+
+func (x OfpTableFeaturesFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableFeaturesFailedCode.Descriptor instead.
 func (OfpTableFeaturesFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{45}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{45}
 }
 
 type OfpMultipartType int32
@@ -2098,98 +3121,161 @@
 	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",
-}
+// Enum value maps for OfpMultipartType.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpMultipartType {
+	p := new(OfpMultipartType)
+	*p = x
+	return p
 }
 
 func (x OfpMultipartType) String() string {
-	return proto.EnumName(OfpMultipartType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMultipartType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[46].Descriptor()
+}
+
+func (OfpMultipartType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[46]
+}
+
+func (x OfpMultipartType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMultipartType.Descriptor instead.
 func (OfpMultipartType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{46}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{46}
 }
 
 type OfpMultipartRequestFlags int32
 
 const (
 	OfpMultipartRequestFlags_OFPMPF_REQ_INVALID OfpMultipartRequestFlags = 0
-	OfpMultipartRequestFlags_OFPMPF_REQ_MORE    OfpMultipartRequestFlags = 1
+	OfpMultipartRequestFlags_OFPMPF_REQ_MORE    OfpMultipartRequestFlags = 1 // More requests to follow.
 )
 
-var OfpMultipartRequestFlags_name = map[int32]string{
-	0: "OFPMPF_REQ_INVALID",
-	1: "OFPMPF_REQ_MORE",
-}
+// Enum value maps for OfpMultipartRequestFlags.
+var (
+	OfpMultipartRequestFlags_name = map[int32]string{
+		0: "OFPMPF_REQ_INVALID",
+		1: "OFPMPF_REQ_MORE",
+	}
+	OfpMultipartRequestFlags_value = map[string]int32{
+		"OFPMPF_REQ_INVALID": 0,
+		"OFPMPF_REQ_MORE":    1,
+	}
+)
 
-var OfpMultipartRequestFlags_value = map[string]int32{
-	"OFPMPF_REQ_INVALID": 0,
-	"OFPMPF_REQ_MORE":    1,
+func (x OfpMultipartRequestFlags) Enum() *OfpMultipartRequestFlags {
+	p := new(OfpMultipartRequestFlags)
+	*p = x
+	return p
 }
 
 func (x OfpMultipartRequestFlags) String() string {
-	return proto.EnumName(OfpMultipartRequestFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMultipartRequestFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[47].Descriptor()
+}
+
+func (OfpMultipartRequestFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[47]
+}
+
+func (x OfpMultipartRequestFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMultipartRequestFlags.Descriptor instead.
 func (OfpMultipartRequestFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{47}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{47}
 }
 
 type OfpMultipartReplyFlags int32
 
 const (
 	OfpMultipartReplyFlags_OFPMPF_REPLY_INVALID OfpMultipartReplyFlags = 0
-	OfpMultipartReplyFlags_OFPMPF_REPLY_MORE    OfpMultipartReplyFlags = 1
+	OfpMultipartReplyFlags_OFPMPF_REPLY_MORE    OfpMultipartReplyFlags = 1 // More replies to follow.
 )
 
-var OfpMultipartReplyFlags_name = map[int32]string{
-	0: "OFPMPF_REPLY_INVALID",
-	1: "OFPMPF_REPLY_MORE",
-}
+// Enum value maps for OfpMultipartReplyFlags.
+var (
+	OfpMultipartReplyFlags_name = map[int32]string{
+		0: "OFPMPF_REPLY_INVALID",
+		1: "OFPMPF_REPLY_MORE",
+	}
+	OfpMultipartReplyFlags_value = map[string]int32{
+		"OFPMPF_REPLY_INVALID": 0,
+		"OFPMPF_REPLY_MORE":    1,
+	}
+)
 
-var OfpMultipartReplyFlags_value = map[string]int32{
-	"OFPMPF_REPLY_INVALID": 0,
-	"OFPMPF_REPLY_MORE":    1,
+func (x OfpMultipartReplyFlags) Enum() *OfpMultipartReplyFlags {
+	p := new(OfpMultipartReplyFlags)
+	*p = x
+	return p
 }
 
 func (x OfpMultipartReplyFlags) String() string {
-	return proto.EnumName(OfpMultipartReplyFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMultipartReplyFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[48].Descriptor()
+}
+
+func (OfpMultipartReplyFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[48]
+}
+
+func (x OfpMultipartReplyFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMultipartReplyFlags.Descriptor instead.
 func (OfpMultipartReplyFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{48}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{48}
 }
 
 // Table Feature property types.
@@ -2198,68 +3284,89 @@
 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
+	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS        OfpTableFeaturePropType = 0     // Instructions property.
+	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS_MISS   OfpTableFeaturePropType = 1     // Instructions for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES         OfpTableFeaturePropType = 2     // Next Table property.
+	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES_MISS    OfpTableFeaturePropType = 3     // Next Table for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS       OfpTableFeaturePropType = 4     // Write Actions property.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS_MISS  OfpTableFeaturePropType = 5     // Write Actions for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS       OfpTableFeaturePropType = 6     // Apply Actions property.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS_MISS  OfpTableFeaturePropType = 7     // Apply Actions for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_MATCH               OfpTableFeaturePropType = 8     // Match property.
+	OfpTableFeaturePropType_OFPTFPT_WILDCARDS           OfpTableFeaturePropType = 10    // Wildcards property.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD      OfpTableFeaturePropType = 12    // Write Set-Field property.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD_MISS OfpTableFeaturePropType = 13    // Write Set-Field for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD      OfpTableFeaturePropType = 14    // Apply Set-Field property.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD_MISS OfpTableFeaturePropType = 15    // Apply Set-Field for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER        OfpTableFeaturePropType = 65534 // Experimenter property.
+	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS   OfpTableFeaturePropType = 65535 // Experimenter for table-miss.
 )
 
-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",
-}
+// Enum value maps for OfpTableFeaturePropType.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OfpTableFeaturePropType {
+	p := new(OfpTableFeaturePropType)
+	*p = x
+	return p
 }
 
 func (x OfpTableFeaturePropType) String() string {
-	return proto.EnumName(OfpTableFeaturePropType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableFeaturePropType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[49].Descriptor()
+}
+
+func (OfpTableFeaturePropType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[49]
+}
+
+func (x OfpTableFeaturePropType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropType.Descriptor instead.
 func (OfpTableFeaturePropType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{49}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{49}
 }
 
 // Group configuration flags
@@ -2267,198 +3374,288 @@
 
 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
+	OfpGroupCapabilities_OFPGFC_SELECT_WEIGHT   OfpGroupCapabilities = 1 // Support weight for select groups
+	OfpGroupCapabilities_OFPGFC_SELECT_LIVENESS OfpGroupCapabilities = 2 // Support liveness for select groups
+	OfpGroupCapabilities_OFPGFC_CHAINING        OfpGroupCapabilities = 4 // Support chaining groups
+	OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS OfpGroupCapabilities = 8 // Check chaining for loops and delete
 )
 
-var OfpGroupCapabilities_name = map[int32]string{
-	0: "OFPGFC_INVALID",
-	1: "OFPGFC_SELECT_WEIGHT",
-	2: "OFPGFC_SELECT_LIVENESS",
-	4: "OFPGFC_CHAINING",
-	8: "OFPGFC_CHAINING_CHECKS",
-}
+// Enum value maps for OfpGroupCapabilities.
+var (
+	OfpGroupCapabilities_name = map[int32]string{
+		0: "OFPGFC_INVALID",
+		1: "OFPGFC_SELECT_WEIGHT",
+		2: "OFPGFC_SELECT_LIVENESS",
+		4: "OFPGFC_CHAINING",
+		8: "OFPGFC_CHAINING_CHECKS",
+	}
+	OfpGroupCapabilities_value = map[string]int32{
+		"OFPGFC_INVALID":         0,
+		"OFPGFC_SELECT_WEIGHT":   1,
+		"OFPGFC_SELECT_LIVENESS": 2,
+		"OFPGFC_CHAINING":        4,
+		"OFPGFC_CHAINING_CHECKS": 8,
+	}
+)
 
-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) Enum() *OfpGroupCapabilities {
+	p := new(OfpGroupCapabilities)
+	*p = x
+	return p
 }
 
 func (x OfpGroupCapabilities) String() string {
-	return proto.EnumName(OfpGroupCapabilities_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupCapabilities) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[50].Descriptor()
+}
+
+func (OfpGroupCapabilities) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[50]
+}
+
+func (x OfpGroupCapabilities) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupCapabilities.Descriptor instead.
 func (OfpGroupCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{50}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{50}
 }
 
 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
+	OfpQueueProperties_OFPQT_MIN_RATE     OfpQueueProperties = 1     // Minimum datarate guaranteed.
+	OfpQueueProperties_OFPQT_MAX_RATE     OfpQueueProperties = 2     // Maximum datarate.
+	OfpQueueProperties_OFPQT_EXPERIMENTER OfpQueueProperties = 65535 // Experimenter defined property.
 )
 
-var OfpQueueProperties_name = map[int32]string{
-	0:     "OFPQT_INVALID",
-	1:     "OFPQT_MIN_RATE",
-	2:     "OFPQT_MAX_RATE",
-	65535: "OFPQT_EXPERIMENTER",
-}
+// Enum value maps for OfpQueueProperties.
+var (
+	OfpQueueProperties_name = map[int32]string{
+		0:     "OFPQT_INVALID",
+		1:     "OFPQT_MIN_RATE",
+		2:     "OFPQT_MAX_RATE",
+		65535: "OFPQT_EXPERIMENTER",
+	}
+	OfpQueueProperties_value = map[string]int32{
+		"OFPQT_INVALID":      0,
+		"OFPQT_MIN_RATE":     1,
+		"OFPQT_MAX_RATE":     2,
+		"OFPQT_EXPERIMENTER": 65535,
+	}
+)
 
-var OfpQueueProperties_value = map[string]int32{
-	"OFPQT_INVALID":      0,
-	"OFPQT_MIN_RATE":     1,
-	"OFPQT_MAX_RATE":     2,
-	"OFPQT_EXPERIMENTER": 65535,
+func (x OfpQueueProperties) Enum() *OfpQueueProperties {
+	p := new(OfpQueueProperties)
+	*p = x
+	return p
 }
 
 func (x OfpQueueProperties) String() string {
-	return proto.EnumName(OfpQueueProperties_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpQueueProperties) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[51].Descriptor()
+}
+
+func (OfpQueueProperties) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[51]
+}
+
+func (x OfpQueueProperties) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpQueueProperties.Descriptor instead.
 func (OfpQueueProperties) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{51}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{51}
 }
 
 // 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
+	OfpControllerRole_OFPCR_ROLE_NOCHANGE OfpControllerRole = 0 // Don't change current role.
+	OfpControllerRole_OFPCR_ROLE_EQUAL    OfpControllerRole = 1 // Default role, full access.
+	OfpControllerRole_OFPCR_ROLE_MASTER   OfpControllerRole = 2 // Full access, at most one master.
+	OfpControllerRole_OFPCR_ROLE_SLAVE    OfpControllerRole = 3 // Read-only access.
 )
 
-var OfpControllerRole_name = map[int32]string{
-	0: "OFPCR_ROLE_NOCHANGE",
-	1: "OFPCR_ROLE_EQUAL",
-	2: "OFPCR_ROLE_MASTER",
-	3: "OFPCR_ROLE_SLAVE",
-}
+// Enum value maps for OfpControllerRole.
+var (
+	OfpControllerRole_name = map[int32]string{
+		0: "OFPCR_ROLE_NOCHANGE",
+		1: "OFPCR_ROLE_EQUAL",
+		2: "OFPCR_ROLE_MASTER",
+		3: "OFPCR_ROLE_SLAVE",
+	}
+	OfpControllerRole_value = map[string]int32{
+		"OFPCR_ROLE_NOCHANGE": 0,
+		"OFPCR_ROLE_EQUAL":    1,
+		"OFPCR_ROLE_MASTER":   2,
+		"OFPCR_ROLE_SLAVE":    3,
+	}
+)
 
-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) Enum() *OfpControllerRole {
+	p := new(OfpControllerRole)
+	*p = x
+	return p
 }
 
 func (x OfpControllerRole) String() string {
-	return proto.EnumName(OfpControllerRole_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpControllerRole) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[52].Descriptor()
+}
+
+func (OfpControllerRole) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[52]
+}
+
+func (x OfpControllerRole) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpControllerRole.Descriptor instead.
 func (OfpControllerRole) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{52}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{52}
 }
 
 // Header on all OpenFlow packets.
 type OfpHeader struct {
-	Version              uint32   `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
-	Type                 OfpType  `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpType" json:"type,omitempty"`
-	Xid                  uint32   `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Version       uint32                 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`                    // OFP_VERSION.
+	Type          OfpType                `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpType" json:"type,omitempty"` // One of the OFPT_ constants.
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHeader) Reset()         { *m = OfpHeader{} }
-func (m *OfpHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpHeader) ProtoMessage()    {}
+func (x *OfpHeader) Reset() {
+	*x = OfpHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHeader) ProtoMessage() {}
+
+func (x *OfpHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHeader.ProtoReflect.Descriptor instead.
 func (*OfpHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{0}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *OfpHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHeader.Unmarshal(m, b)
-}
-func (m *OfpHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHeader.Merge(m, src)
-}
-func (m *OfpHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpHeader.Size(m)
-}
-func (m *OfpHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHeader proto.InternalMessageInfo
-
-func (m *OfpHeader) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *OfpHeader) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *OfpHeader) GetType() OfpType {
-	if m != nil {
-		return m.Type
+func (x *OfpHeader) GetType() OfpType {
+	if x != nil {
+		return x.Type
 	}
 	return OfpType_OFPT_HELLO
 }
 
-func (m *OfpHeader) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
+func (x *OfpHeader) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
 	}
 	return 0
 }
 
 // Common header for all Hello Elements
 type OfpHelloElemHeader struct {
-	Type OfpHelloElemType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpHelloElemType" json:"type,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Type  OfpHelloElemType       `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpHelloElemType" json:"type,omitempty"` // One of OFPHET_*.
 	// Types that are valid to be assigned to Element:
+	//
 	//	*OfpHelloElemHeader_Versionbitmap
-	Element              isOfpHelloElemHeader_Element `protobuf_oneof:"element"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	Element       isOfpHelloElemHeader_Element `protobuf_oneof:"element"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHelloElemHeader) Reset()         { *m = OfpHelloElemHeader{} }
-func (m *OfpHelloElemHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpHelloElemHeader) ProtoMessage()    {}
+func (x *OfpHelloElemHeader) Reset() {
+	*x = OfpHelloElemHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHelloElemHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHelloElemHeader) ProtoMessage() {}
+
+func (x *OfpHelloElemHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHelloElemHeader.ProtoReflect.Descriptor instead.
 func (*OfpHelloElemHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{1}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *OfpHelloElemHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHelloElemHeader.Unmarshal(m, b)
-}
-func (m *OfpHelloElemHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHelloElemHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpHelloElemHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemHeader.Merge(m, src)
-}
-func (m *OfpHelloElemHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpHelloElemHeader.Size(m)
-}
-func (m *OfpHelloElemHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHelloElemHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHelloElemHeader proto.InternalMessageInfo
-
-func (m *OfpHelloElemHeader) GetType() OfpHelloElemType {
-	if m != nil {
-		return m.Type
+func (x *OfpHelloElemHeader) GetType() OfpHelloElemType {
+	if x != nil {
+		return x.Type
 	}
 	return OfpHelloElemType_OFPHET_INVALID
 }
 
+func (x *OfpHelloElemHeader) GetElement() isOfpHelloElemHeader_Element {
+	if x != nil {
+		return x.Element
+	}
+	return nil
+}
+
+func (x *OfpHelloElemHeader) GetVersionbitmap() *OfpHelloElemVersionbitmap {
+	if x != nil {
+		if x, ok := x.Element.(*OfpHelloElemHeader_Versionbitmap); ok {
+			return x.Versionbitmap
+		}
+	}
+	return nil
+}
+
 type isOfpHelloElemHeader_Element interface {
 	isOfpHelloElemHeader_Element()
 }
@@ -2469,63 +3666,47 @@
 
 func (*OfpHelloElemHeader_Versionbitmap) isOfpHelloElemHeader_Element() {}
 
-func (m *OfpHelloElemHeader) GetElement() isOfpHelloElemHeader_Element {
-	if m != nil {
-		return m.Element
-	}
-	return nil
-}
-
-func (m *OfpHelloElemHeader) GetVersionbitmap() *OfpHelloElemVersionbitmap {
-	if x, ok := m.GetElement().(*OfpHelloElemHeader_Versionbitmap); ok {
-		return x.Versionbitmap
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpHelloElemHeader) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*OfpHelloElemHeader_Versionbitmap)(nil),
-	}
-}
-
 // Version bitmap Hello Element
 type OfpHelloElemVersionbitmap struct {
-	Bitmaps              []uint32 `protobuf:"varint,2,rep,packed,name=bitmaps,proto3" json:"bitmaps,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Bitmaps       []uint32               `protobuf:"varint,2,rep,packed,name=bitmaps,proto3" json:"bitmaps,omitempty"` // List of bitmaps - supported versions
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHelloElemVersionbitmap) Reset()         { *m = OfpHelloElemVersionbitmap{} }
-func (m *OfpHelloElemVersionbitmap) String() string { return proto.CompactTextString(m) }
-func (*OfpHelloElemVersionbitmap) ProtoMessage()    {}
+func (x *OfpHelloElemVersionbitmap) Reset() {
+	*x = OfpHelloElemVersionbitmap{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHelloElemVersionbitmap) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHelloElemVersionbitmap) ProtoMessage() {}
+
+func (x *OfpHelloElemVersionbitmap) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHelloElemVersionbitmap.ProtoReflect.Descriptor instead.
 func (*OfpHelloElemVersionbitmap) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{2}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *OfpHelloElemVersionbitmap) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHelloElemVersionbitmap.Unmarshal(m, b)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHelloElemVersionbitmap.Marshal(b, m, deterministic)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemVersionbitmap.Merge(m, src)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_Size() int {
-	return xxx_messageInfo_OfpHelloElemVersionbitmap.Size(m)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHelloElemVersionbitmap.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHelloElemVersionbitmap proto.InternalMessageInfo
-
-func (m *OfpHelloElemVersionbitmap) GetBitmaps() []uint32 {
-	if m != nil {
-		return m.Bitmaps
+func (x *OfpHelloElemVersionbitmap) GetBitmaps() []uint32 {
+	if x != nil {
+		return x.Bitmaps
 	}
 	return nil
 }
@@ -2534,604 +3715,681 @@
 // variable size. Unknown elements types must be ignored/skipped, to allow
 // for future extensions.
 type OfpHello struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Hello element list
-	Elements             []*OfpHelloElemHeader `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Elements      []*OfpHelloElemHeader `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"` // 0 or more
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHello) Reset()         { *m = OfpHello{} }
-func (m *OfpHello) String() string { return proto.CompactTextString(m) }
-func (*OfpHello) ProtoMessage()    {}
+func (x *OfpHello) Reset() {
+	*x = OfpHello{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHello) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHello) ProtoMessage() {}
+
+func (x *OfpHello) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHello.ProtoReflect.Descriptor instead.
 func (*OfpHello) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{3}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *OfpHello) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHello.Unmarshal(m, b)
-}
-func (m *OfpHello) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHello.Marshal(b, m, deterministic)
-}
-func (m *OfpHello) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHello.Merge(m, src)
-}
-func (m *OfpHello) XXX_Size() int {
-	return xxx_messageInfo_OfpHello.Size(m)
-}
-func (m *OfpHello) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHello.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHello proto.InternalMessageInfo
-
-func (m *OfpHello) GetElements() []*OfpHelloElemHeader {
-	if m != nil {
-		return m.Elements
+func (x *OfpHello) GetElements() []*OfpHelloElemHeader {
+	if x != nil {
+		return x.Elements
 	}
 	return nil
 }
 
 // Switch configuration.
 type OfpSwitchConfig struct {
-	//ofp_header header;
-	Flags                uint32   `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
-	MissSendLen          uint32   `protobuf:"varint,2,opt,name=miss_send_len,json=missSendLen,proto3" json:"miss_send_len,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Flags         uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"` // Bitmap of OFPC_* flags.
+	MissSendLen   uint32 `protobuf:"varint,2,opt,name=miss_send_len,json=missSendLen,proto3" json:"miss_send_len,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpSwitchConfig) Reset()         { *m = OfpSwitchConfig{} }
-func (m *OfpSwitchConfig) String() string { return proto.CompactTextString(m) }
-func (*OfpSwitchConfig) ProtoMessage()    {}
+func (x *OfpSwitchConfig) Reset() {
+	*x = OfpSwitchConfig{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpSwitchConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpSwitchConfig) ProtoMessage() {}
+
+func (x *OfpSwitchConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpSwitchConfig.ProtoReflect.Descriptor instead.
 func (*OfpSwitchConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{4}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *OfpSwitchConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpSwitchConfig.Unmarshal(m, b)
-}
-func (m *OfpSwitchConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpSwitchConfig.Marshal(b, m, deterministic)
-}
-func (m *OfpSwitchConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchConfig.Merge(m, src)
-}
-func (m *OfpSwitchConfig) XXX_Size() int {
-	return xxx_messageInfo_OfpSwitchConfig.Size(m)
-}
-func (m *OfpSwitchConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpSwitchConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpSwitchConfig proto.InternalMessageInfo
-
-func (m *OfpSwitchConfig) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
+func (x *OfpSwitchConfig) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
 	}
 	return 0
 }
 
-func (m *OfpSwitchConfig) GetMissSendLen() uint32 {
-	if m != nil {
-		return m.MissSendLen
+func (x *OfpSwitchConfig) GetMissSendLen() uint32 {
+	if x != nil {
+		return x.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,proto3" json:"table_id,omitempty"`
-	Config               uint32   `protobuf:"varint,2,opt,name=config,proto3" json:"config,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	TableId       uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"` // ID of the table, OFPTT_ALL indicates all tables
+	Config        uint32 `protobuf:"varint,2,opt,name=config,proto3" json:"config,omitempty"`                  // Bitmap of OFPTC_* flags
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpTableMod) Reset()         { *m = OfpTableMod{} }
-func (m *OfpTableMod) String() string { return proto.CompactTextString(m) }
-func (*OfpTableMod) ProtoMessage()    {}
+func (x *OfpTableMod) Reset() {
+	*x = OfpTableMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableMod) ProtoMessage() {}
+
+func (x *OfpTableMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableMod.ProtoReflect.Descriptor instead.
 func (*OfpTableMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{5}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *OfpTableMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableMod.Unmarshal(m, b)
-}
-func (m *OfpTableMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableMod.Marshal(b, m, deterministic)
-}
-func (m *OfpTableMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableMod.Merge(m, src)
-}
-func (m *OfpTableMod) XXX_Size() int {
-	return xxx_messageInfo_OfpTableMod.Size(m)
-}
-func (m *OfpTableMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableMod proto.InternalMessageInfo
-
-func (m *OfpTableMod) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
+func (x *OfpTableMod) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
 	}
 	return 0
 }
 
-func (m *OfpTableMod) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
+func (x *OfpTableMod) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
 	}
 	return 0
 }
 
 // Description of a port
 type OfpPort struct {
-	PortNo uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"`
-	Name   string   `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
-	Config uint32   `protobuf:"varint,4,opt,name=config,proto3" json:"config,omitempty"`
-	State  uint32   `protobuf:"varint,5,opt,name=state,proto3" json:"state,omitempty"`
+	state  protoimpl.MessageState `protogen:"open.v1"`
+	PortNo uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	HwAddr []uint32               `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"` // [OFP_ETH_ALEN];
+	Name   string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`                           // Null-terminated
+	Config uint32                 `protobuf:"varint,4,opt,name=config,proto3" json:"config,omitempty"`                      // Bitmap of OFPPC_* flags.
+	State  uint32                 `protobuf:"varint,5,opt,name=state,proto3" json:"state,omitempty"`                        // Bitmap of OFPPS_* flags.
 	// Bitmaps of OFPPF_* that describe features.  All bits zeroed if
 	// unsupported or unavailable.
-	Curr                 uint32   `protobuf:"varint,6,opt,name=curr,proto3" json:"curr,omitempty"`
-	Advertised           uint32   `protobuf:"varint,7,opt,name=advertised,proto3" json:"advertised,omitempty"`
-	Supported            uint32   `protobuf:"varint,8,opt,name=supported,proto3" json:"supported,omitempty"`
-	Peer                 uint32   `protobuf:"varint,9,opt,name=peer,proto3" json:"peer,omitempty"`
-	CurrSpeed            uint32   `protobuf:"varint,10,opt,name=curr_speed,json=currSpeed,proto3" json:"curr_speed,omitempty"`
-	MaxSpeed             uint32   `protobuf:"varint,11,opt,name=max_speed,json=maxSpeed,proto3" json:"max_speed,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Curr          uint32 `protobuf:"varint,6,opt,name=curr,proto3" json:"curr,omitempty"`                             // Current features.
+	Advertised    uint32 `protobuf:"varint,7,opt,name=advertised,proto3" json:"advertised,omitempty"`                 // Features being advertised by the port.
+	Supported     uint32 `protobuf:"varint,8,opt,name=supported,proto3" json:"supported,omitempty"`                   // Features supported by the port.
+	Peer          uint32 `protobuf:"varint,9,opt,name=peer,proto3" json:"peer,omitempty"`                             // Features advertised by peer.
+	CurrSpeed     uint32 `protobuf:"varint,10,opt,name=curr_speed,json=currSpeed,proto3" json:"curr_speed,omitempty"` // Current port bitrate in kbps.
+	MaxSpeed      uint32 `protobuf:"varint,11,opt,name=max_speed,json=maxSpeed,proto3" json:"max_speed,omitempty"`    // Max port bitrate in kbps
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpPort) Reset()         { *m = OfpPort{} }
-func (m *OfpPort) String() string { return proto.CompactTextString(m) }
-func (*OfpPort) ProtoMessage()    {}
+func (x *OfpPort) Reset() {
+	*x = OfpPort{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPort) ProtoMessage() {}
+
+func (x *OfpPort) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPort.ProtoReflect.Descriptor instead.
 func (*OfpPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{6}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *OfpPort) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPort.Unmarshal(m, b)
-}
-func (m *OfpPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPort.Marshal(b, m, deterministic)
-}
-func (m *OfpPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPort.Merge(m, src)
-}
-func (m *OfpPort) XXX_Size() int {
-	return xxx_messageInfo_OfpPort.Size(m)
-}
-func (m *OfpPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPort proto.InternalMessageInfo
-
-func (m *OfpPort) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *OfpPort) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *OfpPort) GetHwAddr() []uint32 {
-	if m != nil {
-		return m.HwAddr
+func (x *OfpPort) GetHwAddr() []uint32 {
+	if x != nil {
+		return x.HwAddr
 	}
 	return nil
 }
 
-func (m *OfpPort) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *OfpPort) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *OfpPort) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
+func (x *OfpPort) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
 	}
 	return 0
 }
 
-func (m *OfpPort) GetState() uint32 {
-	if m != nil {
-		return m.State
+func (x *OfpPort) GetState() uint32 {
+	if x != nil {
+		return x.State
 	}
 	return 0
 }
 
-func (m *OfpPort) GetCurr() uint32 {
-	if m != nil {
-		return m.Curr
+func (x *OfpPort) GetCurr() uint32 {
+	if x != nil {
+		return x.Curr
 	}
 	return 0
 }
 
-func (m *OfpPort) GetAdvertised() uint32 {
-	if m != nil {
-		return m.Advertised
+func (x *OfpPort) GetAdvertised() uint32 {
+	if x != nil {
+		return x.Advertised
 	}
 	return 0
 }
 
-func (m *OfpPort) GetSupported() uint32 {
-	if m != nil {
-		return m.Supported
+func (x *OfpPort) GetSupported() uint32 {
+	if x != nil {
+		return x.Supported
 	}
 	return 0
 }
 
-func (m *OfpPort) GetPeer() uint32 {
-	if m != nil {
-		return m.Peer
+func (x *OfpPort) GetPeer() uint32 {
+	if x != nil {
+		return x.Peer
 	}
 	return 0
 }
 
-func (m *OfpPort) GetCurrSpeed() uint32 {
-	if m != nil {
-		return m.CurrSpeed
+func (x *OfpPort) GetCurrSpeed() uint32 {
+	if x != nil {
+		return x.CurrSpeed
 	}
 	return 0
 }
 
-func (m *OfpPort) GetMaxSpeed() uint32 {
-	if m != nil {
-		return m.MaxSpeed
+func (x *OfpPort) GetMaxSpeed() uint32 {
+	if x != nil {
+		return x.MaxSpeed
 	}
 	return 0
 }
 
 // Switch features.
 type OfpSwitchFeatures struct {
-	//ofp_header header;
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
 	DatapathId  uint64 `protobuf:"varint,1,opt,name=datapath_id,json=datapathId,proto3" json:"datapath_id,omitempty"`
-	NBuffers    uint32 `protobuf:"varint,2,opt,name=n_buffers,json=nBuffers,proto3" json:"n_buffers,omitempty"`
-	NTables     uint32 `protobuf:"varint,3,opt,name=n_tables,json=nTables,proto3" json:"n_tables,omitempty"`
-	AuxiliaryId uint32 `protobuf:"varint,4,opt,name=auxiliary_id,json=auxiliaryId,proto3" json:"auxiliary_id,omitempty"`
+	NBuffers    uint32 `protobuf:"varint,2,opt,name=n_buffers,json=nBuffers,proto3" json:"n_buffers,omitempty"`          // Max packets buffered at once.
+	NTables     uint32 `protobuf:"varint,3,opt,name=n_tables,json=nTables,proto3" json:"n_tables,omitempty"`             // Number of tables supported by datapath.
+	AuxiliaryId uint32 `protobuf:"varint,4,opt,name=auxiliary_id,json=auxiliaryId,proto3" json:"auxiliary_id,omitempty"` // Identify auxiliary connections
 	// Features.
-	Capabilities         uint32   `protobuf:"varint,5,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Capabilities  uint32 `protobuf:"varint,5,opt,name=capabilities,proto3" json:"capabilities,omitempty"` // Bitmap of support "ofp_capabilities".
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpSwitchFeatures) Reset()         { *m = OfpSwitchFeatures{} }
-func (m *OfpSwitchFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpSwitchFeatures) ProtoMessage()    {}
+func (x *OfpSwitchFeatures) Reset() {
+	*x = OfpSwitchFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpSwitchFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpSwitchFeatures) ProtoMessage() {}
+
+func (x *OfpSwitchFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpSwitchFeatures.ProtoReflect.Descriptor instead.
 func (*OfpSwitchFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{7}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *OfpSwitchFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpSwitchFeatures.Unmarshal(m, b)
-}
-func (m *OfpSwitchFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpSwitchFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpSwitchFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchFeatures.Merge(m, src)
-}
-func (m *OfpSwitchFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpSwitchFeatures.Size(m)
-}
-func (m *OfpSwitchFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpSwitchFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpSwitchFeatures proto.InternalMessageInfo
-
-func (m *OfpSwitchFeatures) GetDatapathId() uint64 {
-	if m != nil {
-		return m.DatapathId
+func (x *OfpSwitchFeatures) GetDatapathId() uint64 {
+	if x != nil {
+		return x.DatapathId
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetNBuffers() uint32 {
-	if m != nil {
-		return m.NBuffers
+func (x *OfpSwitchFeatures) GetNBuffers() uint32 {
+	if x != nil {
+		return x.NBuffers
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetNTables() uint32 {
-	if m != nil {
-		return m.NTables
+func (x *OfpSwitchFeatures) GetNTables() uint32 {
+	if x != nil {
+		return x.NTables
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetAuxiliaryId() uint32 {
-	if m != nil {
-		return m.AuxiliaryId
+func (x *OfpSwitchFeatures) GetAuxiliaryId() uint32 {
+	if x != nil {
+		return x.AuxiliaryId
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetCapabilities() uint32 {
-	if m != nil {
-		return m.Capabilities
+func (x *OfpSwitchFeatures) GetCapabilities() uint32 {
+	if x != nil {
+		return x.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,proto3,enum=openflow_13.OfpPortReason" json:"reason,omitempty"`
-	Desc                 *OfpPort      `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Reason        OfpPortReason `protobuf:"varint,1,opt,name=reason,proto3,enum=openflow_13.OfpPortReason" json:"reason,omitempty"` // One of OFPPR_*.
+	Desc          *OfpPort      `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpPortStatus) Reset()         { *m = OfpPortStatus{} }
-func (m *OfpPortStatus) String() string { return proto.CompactTextString(m) }
-func (*OfpPortStatus) ProtoMessage()    {}
+func (x *OfpPortStatus) Reset() {
+	*x = OfpPortStatus{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortStatus) ProtoMessage() {}
+
+func (x *OfpPortStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortStatus.ProtoReflect.Descriptor instead.
 func (*OfpPortStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{8}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *OfpPortStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortStatus.Unmarshal(m, b)
-}
-func (m *OfpPortStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortStatus.Marshal(b, m, deterministic)
-}
-func (m *OfpPortStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatus.Merge(m, src)
-}
-func (m *OfpPortStatus) XXX_Size() int {
-	return xxx_messageInfo_OfpPortStatus.Size(m)
-}
-func (m *OfpPortStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortStatus proto.InternalMessageInfo
-
-func (m *OfpPortStatus) GetReason() OfpPortReason {
-	if m != nil {
-		return m.Reason
+func (x *OfpPortStatus) GetReason() OfpPortReason {
+	if x != nil {
+		return x.Reason
 	}
 	return OfpPortReason_OFPPR_ADD
 }
 
-func (m *OfpPortStatus) GetDesc() *OfpPort {
-	if m != nil {
-		return m.Desc
+func (x *OfpPortStatus) GetDesc() *OfpPort {
+	if x != nil {
+		return x.Desc
 	}
 	return nil
 }
 
 // A physical device has changed in the datapath
 type OfpDeviceStatus struct {
-	//ofp_header header;
-	Status               OfpDeviceConnection `protobuf:"varint,1,opt,name=status,proto3,enum=openflow_13.OfpDeviceConnection" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Status        OfpDeviceConnection `protobuf:"varint,1,opt,name=status,proto3,enum=openflow_13.OfpDeviceConnection" json:"status,omitempty"` // One of OFPDEV_*.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpDeviceStatus) Reset()         { *m = OfpDeviceStatus{} }
-func (m *OfpDeviceStatus) String() string { return proto.CompactTextString(m) }
-func (*OfpDeviceStatus) ProtoMessage()    {}
+func (x *OfpDeviceStatus) Reset() {
+	*x = OfpDeviceStatus{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpDeviceStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpDeviceStatus) ProtoMessage() {}
+
+func (x *OfpDeviceStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpDeviceStatus.ProtoReflect.Descriptor instead.
 func (*OfpDeviceStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{9}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *OfpDeviceStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpDeviceStatus.Unmarshal(m, b)
-}
-func (m *OfpDeviceStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpDeviceStatus.Marshal(b, m, deterministic)
-}
-func (m *OfpDeviceStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpDeviceStatus.Merge(m, src)
-}
-func (m *OfpDeviceStatus) XXX_Size() int {
-	return xxx_messageInfo_OfpDeviceStatus.Size(m)
-}
-func (m *OfpDeviceStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpDeviceStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpDeviceStatus proto.InternalMessageInfo
-
-func (m *OfpDeviceStatus) GetStatus() OfpDeviceConnection {
-	if m != nil {
-		return m.Status
+func (x *OfpDeviceStatus) GetStatus() OfpDeviceConnection {
+	if x != nil {
+		return x.Status
 	}
 	return OfpDeviceConnection_OFPDEV_CONNECTED
 }
 
 // Modify behavior of the physical port
 type OfpPortMod struct {
-	//ofp_header header;
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
 	PortNo uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"`
+	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"` //[OFP_ETH_ALEN];
 	// 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,proto3" json:"config,omitempty"`
-	Mask                 uint32   `protobuf:"varint,4,opt,name=mask,proto3" json:"mask,omitempty"`
-	Advertise            uint32   `protobuf:"varint,5,opt,name=advertise,proto3" json:"advertise,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	// 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,proto3" json:"config,omitempty"` // Bitmap of OFPPC_* flags.
+	Mask          uint32 `protobuf:"varint,4,opt,name=mask,proto3" json:"mask,omitempty"`     // Bitmap of OFPPC_* flags to be changed.
+	Advertise     uint32 `protobuf:"varint,5,opt,name=advertise,proto3" json:"advertise,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpPortMod) Reset()         { *m = OfpPortMod{} }
-func (m *OfpPortMod) String() string { return proto.CompactTextString(m) }
-func (*OfpPortMod) ProtoMessage()    {}
+func (x *OfpPortMod) Reset() {
+	*x = OfpPortMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortMod) ProtoMessage() {}
+
+func (x *OfpPortMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortMod.ProtoReflect.Descriptor instead.
 func (*OfpPortMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{10}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *OfpPortMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortMod.Unmarshal(m, b)
-}
-func (m *OfpPortMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortMod.Marshal(b, m, deterministic)
-}
-func (m *OfpPortMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortMod.Merge(m, src)
-}
-func (m *OfpPortMod) XXX_Size() int {
-	return xxx_messageInfo_OfpPortMod.Size(m)
-}
-func (m *OfpPortMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortMod proto.InternalMessageInfo
-
-func (m *OfpPortMod) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *OfpPortMod) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *OfpPortMod) GetHwAddr() []uint32 {
-	if m != nil {
-		return m.HwAddr
+func (x *OfpPortMod) GetHwAddr() []uint32 {
+	if x != nil {
+		return x.HwAddr
 	}
 	return nil
 }
 
-func (m *OfpPortMod) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
+func (x *OfpPortMod) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
 	}
 	return 0
 }
 
-func (m *OfpPortMod) GetMask() uint32 {
-	if m != nil {
-		return m.Mask
+func (x *OfpPortMod) GetMask() uint32 {
+	if x != nil {
+		return x.Mask
 	}
 	return 0
 }
 
-func (m *OfpPortMod) GetAdvertise() uint32 {
-	if m != nil {
-		return m.Advertise
+func (x *OfpPortMod) GetAdvertise() uint32 {
+	if x != nil {
+		return x.Advertise
 	}
 	return 0
 }
 
 // Fields to match against flows
 type OfpMatch struct {
-	Type                 OfpMatchType   `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMatchType" json:"type,omitempty"`
-	OxmFields            []*OfpOxmField `protobuf:"bytes,2,rep,name=oxm_fields,json=oxmFields,proto3" json:"oxm_fields,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          OfpMatchType           `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMatchType" json:"type,omitempty"` // One of OFPMT_*
+	OxmFields     []*OfpOxmField         `protobuf:"bytes,2,rep,name=oxm_fields,json=oxmFields,proto3" json:"oxm_fields,omitempty"`     // 0 or more
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpMatch) Reset()         { *m = OfpMatch{} }
-func (m *OfpMatch) String() string { return proto.CompactTextString(m) }
-func (*OfpMatch) ProtoMessage()    {}
+func (x *OfpMatch) Reset() {
+	*x = OfpMatch{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMatch) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMatch) ProtoMessage() {}
+
+func (x *OfpMatch) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMatch.ProtoReflect.Descriptor instead.
 func (*OfpMatch) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{11}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *OfpMatch) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMatch.Unmarshal(m, b)
-}
-func (m *OfpMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMatch.Marshal(b, m, deterministic)
-}
-func (m *OfpMatch) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMatch.Merge(m, src)
-}
-func (m *OfpMatch) XXX_Size() int {
-	return xxx_messageInfo_OfpMatch.Size(m)
-}
-func (m *OfpMatch) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMatch.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMatch proto.InternalMessageInfo
-
-func (m *OfpMatch) GetType() OfpMatchType {
-	if m != nil {
-		return m.Type
+func (x *OfpMatch) GetType() OfpMatchType {
+	if x != nil {
+		return x.Type
 	}
 	return OfpMatchType_OFPMT_STANDARD
 }
 
-func (m *OfpMatch) GetOxmFields() []*OfpOxmField {
-	if m != nil {
-		return m.OxmFields
+func (x *OfpMatch) GetOxmFields() []*OfpOxmField {
+	if x != nil {
+		return x.OxmFields
 	}
 	return nil
 }
 
 // OXM Flow match fields
 type OfpOxmField struct {
-	OxmClass OfpOxmClass `protobuf:"varint,1,opt,name=oxm_class,json=oxmClass,proto3,enum=openflow_13.OfpOxmClass" json:"oxm_class,omitempty"`
+	state    protoimpl.MessageState `protogen:"open.v1"`
+	OxmClass OfpOxmClass            `protobuf:"varint,1,opt,name=oxm_class,json=oxmClass,proto3,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"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	Field         isOfpOxmField_Field `protobuf_oneof:"field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpOxmField) Reset()         { *m = OfpOxmField{} }
-func (m *OfpOxmField) String() string { return proto.CompactTextString(m) }
-func (*OfpOxmField) ProtoMessage()    {}
+func (x *OfpOxmField) Reset() {
+	*x = OfpOxmField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpOxmField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpOxmField) ProtoMessage() {}
+
+func (x *OfpOxmField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpOxmField.ProtoReflect.Descriptor instead.
 func (*OfpOxmField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{12}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *OfpOxmField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpOxmField.Unmarshal(m, b)
-}
-func (m *OfpOxmField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpOxmField.Marshal(b, m, deterministic)
-}
-func (m *OfpOxmField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmField.Merge(m, src)
-}
-func (m *OfpOxmField) XXX_Size() int {
-	return xxx_messageInfo_OfpOxmField.Size(m)
-}
-func (m *OfpOxmField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpOxmField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpOxmField proto.InternalMessageInfo
-
-func (m *OfpOxmField) GetOxmClass() OfpOxmClass {
-	if m != nil {
-		return m.OxmClass
+func (x *OfpOxmField) GetOxmClass() OfpOxmClass {
+	if x != nil {
+		return x.OxmClass
 	}
 	return OfpOxmClass_OFPXMC_NXM_0
 }
 
+func (x *OfpOxmField) GetField() isOfpOxmField_Field {
+	if x != nil {
+		return x.Field
+	}
+	return nil
+}
+
+func (x *OfpOxmField) GetOfbField() *OfpOxmOfbField {
+	if x != nil {
+		if x, ok := x.Field.(*OfpOxmField_OfbField); ok {
+			return x.OfbField
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmField) GetExperimenterField() *OfpOxmExperimenterField {
+	if x != nil {
+		if x, ok := x.Field.(*OfpOxmField_ExperimenterField); ok {
+			return x.ExperimenterField
+		}
+	}
+	return nil
+}
+
 type isOfpOxmField_Field interface {
 	isOfpOxmField_Field()
 }
 
 type OfpOxmField_OfbField struct {
+	// 2 and 3 reserved for NXM_0 and NXM-1 OXM classes
 	OfbField *OfpOxmOfbField `protobuf:"bytes,4,opt,name=ofb_field,json=ofbField,proto3,oneof"`
 }
 
@@ -3143,40 +4401,13 @@
 
 func (*OfpOxmField_ExperimenterField) isOfpOxmField_Field() {}
 
-func (m *OfpOxmField) GetField() isOfpOxmField_Field {
-	if m != nil {
-		return m.Field
-	}
-	return nil
-}
-
-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_OneofWrappers is for the internal use of the proto package.
-func (*OfpOxmField) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*OfpOxmField_OfbField)(nil),
-		(*OfpOxmField_ExperimenterField)(nil),
-	}
-}
-
 // OXM OpenFlow Basic Match Field
 type OfpOxmOfbField struct {
-	Type    OxmOfbFieldTypes `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
-	HasMask bool             `protobuf:"varint,2,opt,name=has_mask,json=hasMask,proto3" json:"has_mask,omitempty"`
+	state   protoimpl.MessageState `protogen:"open.v1"`
+	Type    OxmOfbFieldTypes       `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
+	HasMask bool                   `protobuf:"varint,2,opt,name=has_mask,json=hasMask,proto3" json:"has_mask,omitempty"`
 	// Types that are valid to be assigned to Value:
+	//
 	//	*OfpOxmOfbField_Port
 	//	*OfpOxmOfbField_PhysicalPort
 	//	*OfpOxmOfbField_TableMetadata
@@ -3219,8 +4450,8 @@
 	//	*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
@@ -3235,213 +4466,774 @@
 	//	*OfpOxmOfbField_PbbIsidMask
 	//	*OfpOxmOfbField_TunnelIdMask
 	//	*OfpOxmOfbField_Ipv6ExthdrMask
-	Mask                 isOfpOxmOfbField_Mask `protobuf_oneof:"mask"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Mask          isOfpOxmOfbField_Mask `protobuf_oneof:"mask"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpOxmOfbField) Reset()         { *m = OfpOxmOfbField{} }
-func (m *OfpOxmOfbField) String() string { return proto.CompactTextString(m) }
-func (*OfpOxmOfbField) ProtoMessage()    {}
+func (x *OfpOxmOfbField) Reset() {
+	*x = OfpOxmOfbField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpOxmOfbField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpOxmOfbField) ProtoMessage() {}
+
+func (x *OfpOxmOfbField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpOxmOfbField.ProtoReflect.Descriptor instead.
 func (*OfpOxmOfbField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{13}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *OfpOxmOfbField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpOxmOfbField.Unmarshal(m, b)
-}
-func (m *OfpOxmOfbField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpOxmOfbField.Marshal(b, m, deterministic)
-}
-func (m *OfpOxmOfbField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmOfbField.Merge(m, src)
-}
-func (m *OfpOxmOfbField) XXX_Size() int {
-	return xxx_messageInfo_OfpOxmOfbField.Size(m)
-}
-func (m *OfpOxmOfbField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpOxmOfbField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpOxmOfbField proto.InternalMessageInfo
-
-func (m *OfpOxmOfbField) GetType() OxmOfbFieldTypes {
-	if m != nil {
-		return m.Type
+func (x *OfpOxmOfbField) GetType() OxmOfbFieldTypes {
+	if x != nil {
+		return x.Type
 	}
 	return OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT
 }
 
-func (m *OfpOxmOfbField) GetHasMask() bool {
-	if m != nil {
-		return m.HasMask
+func (x *OfpOxmOfbField) GetHasMask() bool {
+	if x != nil {
+		return x.HasMask
 	}
 	return false
 }
 
+func (x *OfpOxmOfbField) GetValue() isOfpOxmOfbField_Value {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetPort() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Port); ok {
+			return x.Port
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetPhysicalPort() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_PhysicalPort); ok {
+			return x.PhysicalPort
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTableMetadata() uint64 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TableMetadata); ok {
+			return x.TableMetadata
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetEthDst() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_EthDst); ok {
+			return x.EthDst
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetEthSrc() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_EthSrc); ok {
+			return x.EthSrc
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetEthType() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_EthType); ok {
+			return x.EthType
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetVlanVid() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_VlanVid); ok {
+			return x.VlanVid
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetVlanPcp() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_VlanPcp); ok {
+			return x.VlanPcp
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpDscp() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_IpDscp); ok {
+			return x.IpDscp
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpEcn() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_IpEcn); ok {
+			return x.IpEcn
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpProto() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_IpProto); ok {
+			return x.IpProto
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4Src() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv4Src); ok {
+			return x.Ipv4Src
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4Dst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv4Dst); ok {
+			return x.Ipv4Dst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTcpSrc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TcpSrc); ok {
+			return x.TcpSrc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTcpDst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TcpDst); ok {
+			return x.TcpDst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetUdpSrc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_UdpSrc); ok {
+			return x.UdpSrc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetUdpDst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_UdpDst); ok {
+			return x.UdpDst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetSctpSrc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_SctpSrc); ok {
+			return x.SctpSrc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetSctpDst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_SctpDst); ok {
+			return x.SctpDst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv4Type() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv4Type); ok {
+			return x.Icmpv4Type
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv4Code() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv4Code); ok {
+			return x.Icmpv4Code
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpOp() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpOp); ok {
+			return x.ArpOp
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpSpa() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpSpa); ok {
+			return x.ArpSpa
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpTpa() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpTpa); ok {
+			return x.ArpTpa
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpSha() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpSha); ok {
+			return x.ArpSha
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetArpTha() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpTha); ok {
+			return x.ArpTha
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6Src() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Src); ok {
+			return x.Ipv6Src
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6Dst() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Dst); ok {
+			return x.Ipv6Dst
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6Flabel() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Flabel); ok {
+			return x.Ipv6Flabel
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv6Type() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv6Type); ok {
+			return x.Icmpv6Type
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv6Code() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv6Code); ok {
+			return x.Icmpv6Code
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6NdTarget() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6NdTarget); ok {
+			return x.Ipv6NdTarget
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6NdSsl() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6NdSsl); ok {
+			return x.Ipv6NdSsl
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6NdTll() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6NdTll); ok {
+			return x.Ipv6NdTll
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetMplsLabel() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_MplsLabel); ok {
+			return x.MplsLabel
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetMplsTc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_MplsTc); ok {
+			return x.MplsTc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetMplsBos() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_MplsBos); ok {
+			return x.MplsBos
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetPbbIsid() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_PbbIsid); ok {
+			return x.PbbIsid
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTunnelId() uint64 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TunnelId); ok {
+			return x.TunnelId
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6Exthdr() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Exthdr); ok {
+			return x.Ipv6Exthdr
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetMask() isOfpOxmOfbField_Mask {
+	if x != nil {
+		return x.Mask
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetTableMetadataMask() uint64 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_TableMetadataMask); ok {
+			return x.TableMetadataMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetEthDstMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_EthDstMask); ok {
+			return x.EthDstMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetEthSrcMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_EthSrcMask); ok {
+			return x.EthSrcMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetVlanVidMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_VlanVidMask); ok {
+			return x.VlanVidMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4SrcMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv4SrcMask); ok {
+			return x.Ipv4SrcMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4DstMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv4DstMask); ok {
+			return x.Ipv4DstMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpSpaMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_ArpSpaMask); ok {
+			return x.ArpSpaMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpTpaMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_ArpTpaMask); ok {
+			return x.ArpTpaMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6SrcMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6SrcMask); ok {
+			return x.Ipv6SrcMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6DstMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6DstMask); ok {
+			return x.Ipv6DstMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6FlabelMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6FlabelMask); ok {
+			return x.Ipv6FlabelMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetPbbIsidMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_PbbIsidMask); ok {
+			return x.PbbIsidMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTunnelIdMask() uint64 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_TunnelIdMask); ok {
+			return x.TunnelIdMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6ExthdrMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6ExthdrMask); ok {
+			return x.Ipv6ExthdrMask
+		}
+	}
+	return 0
+}
+
 type isOfpOxmOfbField_Value interface {
 	isOfpOxmOfbField_Value()
 }
 
 type OfpOxmOfbField_Port struct {
-	Port uint32 `protobuf:"varint,3,opt,name=port,proto3,oneof"`
+	// #define OXM_OF_IN_PORT    OXM_HEADER  (0x8000, OFPXMT_OFB_IN_PORT, 4)
+	Port uint32 `protobuf:"varint,3,opt,name=port,proto3,oneof"` // Used for OFPXMT_OFB_IN_PORT
 }
 
 type OfpOxmOfbField_PhysicalPort struct {
-	PhysicalPort uint32 `protobuf:"varint,4,opt,name=physical_port,json=physicalPort,proto3,oneof"`
+	// #define OXM_OF_IN_PHY_PORT OXM_HEADER  (0x8000, OFPXMT_OFB_IN_PHY_PORT, 4)
+	PhysicalPort uint32 `protobuf:"varint,4,opt,name=physical_port,json=physicalPort,proto3,oneof"` // Used for OFPXMT_OF_IN_PHY_PORT
 }
 
 type OfpOxmOfbField_TableMetadata struct {
-	TableMetadata uint64 `protobuf:"varint,5,opt,name=table_metadata,json=tableMetadata,proto3,oneof"`
+	// #define OXM_OF_METADATA   OXM_HEADER  (0x8000, OFPXMT_OFB_METADATA, 8)
+	// #define OXM_OF_METADATA_W OXM_HEADER_W(0x8000, OFPXMT_OFB_METADATA, 8)
+	TableMetadata uint64 `protobuf:"varint,5,opt,name=table_metadata,json=tableMetadata,proto3,oneof"` // Used for OFPXMT_OFB_METADATA
 }
 
 type OfpOxmOfbField_EthDst struct {
-	EthDst []byte `protobuf:"bytes,6,opt,name=eth_dst,json=ethDst,proto3,oneof"`
+	// #define OXM_OF_ETH_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_ETH_DST, 6)
+	// #define OXM_OF_ETH_DST_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ETH_DST, 6)
+	// #define OXM_OF_ETH_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_ETH_SRC, 6)
+	// #define OXM_OF_ETH_SRC_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ETH_SRC, 6)
+	EthDst []byte `protobuf:"bytes,6,opt,name=eth_dst,json=ethDst,proto3,oneof"` // Used for OFPXMT_OFB_ETH_DST (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_EthSrc struct {
-	EthSrc []byte `protobuf:"bytes,7,opt,name=eth_src,json=ethSrc,proto3,oneof"`
+	EthSrc []byte `protobuf:"bytes,7,opt,name=eth_src,json=ethSrc,proto3,oneof"` // Used for OFPXMT_OFB_ETH_SRC (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_EthType struct {
-	EthType uint32 `protobuf:"varint,8,opt,name=eth_type,json=ethType,proto3,oneof"`
+	// #define OXM_OF_ETH_TYPE   OXM_HEADER  (0x8000, OFPXMT_OFB_ETH_TYPE,2)
+	EthType uint32 `protobuf:"varint,8,opt,name=eth_type,json=ethType,proto3,oneof"` // Used for OFPXMT_OFB_ETH_TYPE
 }
 
 type OfpOxmOfbField_VlanVid struct {
-	VlanVid uint32 `protobuf:"varint,9,opt,name=vlan_vid,json=vlanVid,proto3,oneof"`
+	// #define OXM_OF_VLAN_VID   OXM_HEADER  (0x8000, OFPXMT_OFB_VLAN_VID, 2)
+	// #define OXM_OF_VLAN_VID_W OXM_HEADER_W(0x8000, OFPXMT_OFB_VLAN_VID, 2)
+	VlanVid uint32 `protobuf:"varint,9,opt,name=vlan_vid,json=vlanVid,proto3,oneof"` // Used for OFPXMT_OFB_VLAN_VID
 }
 
 type OfpOxmOfbField_VlanPcp struct {
-	VlanPcp uint32 `protobuf:"varint,10,opt,name=vlan_pcp,json=vlanPcp,proto3,oneof"`
+	// #define OXM_OF_VLAN_PCP   OXM_HEADER  (0x8000, OFPXMT_OFB_VLAN_PCP, 1)
+	VlanPcp uint32 `protobuf:"varint,10,opt,name=vlan_pcp,json=vlanPcp,proto3,oneof"` // Used for OFPXMT_OFB_VLAN_PCP
 }
 
 type OfpOxmOfbField_IpDscp struct {
-	IpDscp uint32 `protobuf:"varint,11,opt,name=ip_dscp,json=ipDscp,proto3,oneof"`
+	// #define OXM_OF_IP_DSCP     OXM_HEADER  (0x8000, OFPXMT_OFB_IP_DSCP, 1)
+	IpDscp uint32 `protobuf:"varint,11,opt,name=ip_dscp,json=ipDscp,proto3,oneof"` // Used for OFPXMT_OFB_IP_DSCP
 }
 
 type OfpOxmOfbField_IpEcn struct {
-	IpEcn uint32 `protobuf:"varint,12,opt,name=ip_ecn,json=ipEcn,proto3,oneof"`
+	// #define OXM_OF_IP_ECN     OXM_HEADER  (0x8000, OFPXMT_OFB_IP_ECN, 1)
+	IpEcn uint32 `protobuf:"varint,12,opt,name=ip_ecn,json=ipEcn,proto3,oneof"` // Used for OFPXMT_OFB_IP_ECN
 }
 
 type OfpOxmOfbField_IpProto struct {
-	IpProto uint32 `protobuf:"varint,13,opt,name=ip_proto,json=ipProto,proto3,oneof"`
+	// #define OXM_OF_IP_PROTO   OXM_HEADER  (0x8000, OFPXMT_OFB_IP_PROTO, 1)
+	IpProto uint32 `protobuf:"varint,13,opt,name=ip_proto,json=ipProto,proto3,oneof"` // Used for OFPXMT_OFB_IP_PROTO
 }
 
 type OfpOxmOfbField_Ipv4Src struct {
-	Ipv4Src uint32 `protobuf:"varint,14,opt,name=ipv4_src,json=ipv4Src,proto3,oneof"`
+	// #define OXM_OF_IPV4_SRC     OXM_HEADER  (0x8000, OFPXMT_OFB_IPV4_SRC, 4)
+	// #define OXM_OF_IPV4_SRC_W   OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV4_SRC, 4)
+	// #define OXM_OF_IPV4_DST     OXM_HEADER  (0x8000, OFPXMT_OFB_IPV4_DST, 4)
+	// #define OXM_OF_IPV4_DST_W   OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV4_DST, 4)
+	Ipv4Src uint32 `protobuf:"varint,14,opt,name=ipv4_src,json=ipv4Src,proto3,oneof"` // Used for OFPXMT_OFB_IPV4_SRC
 }
 
 type OfpOxmOfbField_Ipv4Dst struct {
-	Ipv4Dst uint32 `protobuf:"varint,15,opt,name=ipv4_dst,json=ipv4Dst,proto3,oneof"`
+	Ipv4Dst uint32 `protobuf:"varint,15,opt,name=ipv4_dst,json=ipv4Dst,proto3,oneof"` // Used for OFPXMT_OFB_IPV4_DST
 }
 
 type OfpOxmOfbField_TcpSrc struct {
-	TcpSrc uint32 `protobuf:"varint,16,opt,name=tcp_src,json=tcpSrc,proto3,oneof"`
+	// #define OXM_OF_TCP_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_TCP_SRC, 2)
+	// #define OXM_OF_TCP_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_TCP_DST, 2)
+	TcpSrc uint32 `protobuf:"varint,16,opt,name=tcp_src,json=tcpSrc,proto3,oneof"` // Used for OFPXMT_OFB_TCP_SRC
 }
 
 type OfpOxmOfbField_TcpDst struct {
-	TcpDst uint32 `protobuf:"varint,17,opt,name=tcp_dst,json=tcpDst,proto3,oneof"`
+	TcpDst uint32 `protobuf:"varint,17,opt,name=tcp_dst,json=tcpDst,proto3,oneof"` // Used for OFPXMT_OFB_TCP_DST
 }
 
 type OfpOxmOfbField_UdpSrc struct {
-	UdpSrc uint32 `protobuf:"varint,18,opt,name=udp_src,json=udpSrc,proto3,oneof"`
+	// #define OXM_OF_UDP_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_UDP_SRC, 2)
+	// #define OXM_OF_UDP_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_UDP_DST, 2)
+	UdpSrc uint32 `protobuf:"varint,18,opt,name=udp_src,json=udpSrc,proto3,oneof"` // Used for OFPXMT_OFB_UDP_SRC
 }
 
 type OfpOxmOfbField_UdpDst struct {
-	UdpDst uint32 `protobuf:"varint,19,opt,name=udp_dst,json=udpDst,proto3,oneof"`
+	UdpDst uint32 `protobuf:"varint,19,opt,name=udp_dst,json=udpDst,proto3,oneof"` // Used for OFPXMT_OFB_UDP_DST
 }
 
 type OfpOxmOfbField_SctpSrc struct {
-	SctpSrc uint32 `protobuf:"varint,20,opt,name=sctp_src,json=sctpSrc,proto3,oneof"`
+	// #define OXM_OF_SCTP_SRC   OXM_HEADER  (0x8000, OFPXMT_OFB_SCTP_SRC, 2)
+	// #define OXM_OF_SCTP_DST   OXM_HEADER  (0x8000, OFPXMT_OFB_SCTP_DST, 2)
+	SctpSrc uint32 `protobuf:"varint,20,opt,name=sctp_src,json=sctpSrc,proto3,oneof"` // Used for OFPXMT_OFB_SCTP_SRC
 }
 
 type OfpOxmOfbField_SctpDst struct {
-	SctpDst uint32 `protobuf:"varint,21,opt,name=sctp_dst,json=sctpDst,proto3,oneof"`
+	SctpDst uint32 `protobuf:"varint,21,opt,name=sctp_dst,json=sctpDst,proto3,oneof"` // Used for OFPXMT_OFB_SCTP_DST
 }
 
 type OfpOxmOfbField_Icmpv4Type struct {
-	Icmpv4Type uint32 `protobuf:"varint,22,opt,name=icmpv4_type,json=icmpv4Type,proto3,oneof"`
+	// #define OXM_OF_ICMPV4_TYPE  OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV4_TYPE, 1)
+	// #define OXM_OF_ICMPV4_CODE  OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV4_CODE, 1)
+	Icmpv4Type uint32 `protobuf:"varint,22,opt,name=icmpv4_type,json=icmpv4Type,proto3,oneof"` // Used for OFPXMT_OFB_ICMPV4_TYPE
 }
 
 type OfpOxmOfbField_Icmpv4Code struct {
-	Icmpv4Code uint32 `protobuf:"varint,23,opt,name=icmpv4_code,json=icmpv4Code,proto3,oneof"`
+	Icmpv4Code uint32 `protobuf:"varint,23,opt,name=icmpv4_code,json=icmpv4Code,proto3,oneof"` // Used for OFPXMT_OFB_ICMPV4_CODE
 }
 
 type OfpOxmOfbField_ArpOp struct {
-	ArpOp uint32 `protobuf:"varint,24,opt,name=arp_op,json=arpOp,proto3,oneof"`
+	// #define OXM_OF_ARP_OP     OXM_HEADER  (0x8000, OFPXMT_OFB_ARP_OP, 2)
+	ArpOp uint32 `protobuf:"varint,24,opt,name=arp_op,json=arpOp,proto3,oneof"` // Used for OFPXMT_OFB_ARP_OP
 }
 
 type OfpOxmOfbField_ArpSpa struct {
-	ArpSpa uint32 `protobuf:"varint,25,opt,name=arp_spa,json=arpSpa,proto3,oneof"`
+	// #define OXM_OF_ARP_SPA    OXM_HEADER  (0x8000, OFPXMT_OFB_ARP_SPA, 4)
+	// #define OXM_OF_ARP_SPA_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ARP_SPA, 4)
+	// #define OXM_OF_ARP_TPA    OXM_HEADER  (0x8000, OFPXMT_OFB_ARP_TPA, 4)
+	// #define OXM_OF_ARP_TPA_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ARP_TPA, 4)
+	ArpSpa uint32 `protobuf:"varint,25,opt,name=arp_spa,json=arpSpa,proto3,oneof"` // For OFPXMT_OFB_ARP_SPA
 }
 
 type OfpOxmOfbField_ArpTpa struct {
-	ArpTpa uint32 `protobuf:"varint,26,opt,name=arp_tpa,json=arpTpa,proto3,oneof"`
+	ArpTpa uint32 `protobuf:"varint,26,opt,name=arp_tpa,json=arpTpa,proto3,oneof"` // For OFPXMT_OFB_ARP_TPA
 }
 
 type OfpOxmOfbField_ArpSha struct {
-	ArpSha []byte `protobuf:"bytes,27,opt,name=arp_sha,json=arpSha,proto3,oneof"`
+	// #define OXM_OF_ARP_SHA    OXM_HEADER   (0x8000, OFPXMT_OFB_ARP_SHA, 6)
+	// #define OXM_OF_ARP_SHA_W  OXM_HEADER_W (0x8000, OFPXMT_OFB_ARP_SHA, 6)
+	// #define OXM_OF_ARP_THA    OXM_HEADER   (0x8000, OFPXMT_OFB_ARP_THA, 6)
+	// #define OXM_OF_ARP_THA_W  OXM_HEADER_W (0x8000, OFPXMT_OFB_ARP_THA, 6)
+	ArpSha []byte `protobuf:"bytes,27,opt,name=arp_sha,json=arpSha,proto3,oneof"` // For OFPXMT_OFB_ARP_SHA (6 bytes)
 }
 
 type OfpOxmOfbField_ArpTha struct {
-	ArpTha []byte `protobuf:"bytes,28,opt,name=arp_tha,json=arpTha,proto3,oneof"`
+	ArpTha []byte `protobuf:"bytes,28,opt,name=arp_tha,json=arpTha,proto3,oneof"` // For OFPXMT_OFB_ARP_THA (6 bytes)
 }
 
 type OfpOxmOfbField_Ipv6Src struct {
-	Ipv6Src []byte `protobuf:"bytes,29,opt,name=ipv6_src,json=ipv6Src,proto3,oneof"`
+	// #define OXM_OF_IPV6_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_SRC, 16)
+	// #define OXM_OF_IPV6_SRC_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_SRC, 16)
+	// #define OXM_OF_IPV6_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_DST, 16)
+	// #define OXM_OF_IPV6_DST_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_DST, 16)
+	Ipv6Src []byte `protobuf:"bytes,29,opt,name=ipv6_src,json=ipv6Src,proto3,oneof"` // For OFPXMT_OFB_IPV6_SRC
 }
 
 type OfpOxmOfbField_Ipv6Dst struct {
-	Ipv6Dst []byte `protobuf:"bytes,30,opt,name=ipv6_dst,json=ipv6Dst,proto3,oneof"`
+	Ipv6Dst []byte `protobuf:"bytes,30,opt,name=ipv6_dst,json=ipv6Dst,proto3,oneof"` // For OFPXMT_OFB_IPV6_DST
 }
 
 type OfpOxmOfbField_Ipv6Flabel struct {
-	Ipv6Flabel uint32 `protobuf:"varint,31,opt,name=ipv6_flabel,json=ipv6Flabel,proto3,oneof"`
+	// #define OXM_OF_IPV6_FLABEL   OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_FLABEL, 4)
+	// #define OXM_OF_IPV6_FLABEL_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_FLABEL, 4)
+	Ipv6Flabel uint32 `protobuf:"varint,31,opt,name=ipv6_flabel,json=ipv6Flabel,proto3,oneof"` // For OFPXMT_OFB_IPV6_FLABEL
 }
 
 type OfpOxmOfbField_Icmpv6Type struct {
-	Icmpv6Type uint32 `protobuf:"varint,32,opt,name=icmpv6_type,json=icmpv6Type,proto3,oneof"`
+	// #define OXM_OF_ICMPV6_TYPE OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV6_TYPE, 1)
+	// #define OXM_OF_ICMPV6_CODE OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV6_CODE, 1)
+	Icmpv6Type uint32 `protobuf:"varint,32,opt,name=icmpv6_type,json=icmpv6Type,proto3,oneof"` // For OFPXMT_OFB_ICMPV6_TYPE
 }
 
 type OfpOxmOfbField_Icmpv6Code struct {
-	Icmpv6Code uint32 `protobuf:"varint,33,opt,name=icmpv6_code,json=icmpv6Code,proto3,oneof"`
+	Icmpv6Code uint32 `protobuf:"varint,33,opt,name=icmpv6_code,json=icmpv6Code,proto3,oneof"` // For OFPXMT_OFB_ICMPV6_CODE
 }
 
 type OfpOxmOfbField_Ipv6NdTarget struct {
-	Ipv6NdTarget []byte `protobuf:"bytes,34,opt,name=ipv6_nd_target,json=ipv6NdTarget,proto3,oneof"`
+	//	#define OXM_OF_IPV6_ND_TARGET OXM_HEADER \
+	//	   (0x8000, OFPXMT_OFB_IPV6_ND_TARGET, 16)
+	Ipv6NdTarget []byte `protobuf:"bytes,34,opt,name=ipv6_nd_target,json=ipv6NdTarget,proto3,oneof"` // For OFPXMT_OFB_IPV6_ND_TARGET
 }
 
 type OfpOxmOfbField_Ipv6NdSsl struct {
-	Ipv6NdSsl []byte `protobuf:"bytes,35,opt,name=ipv6_nd_ssl,json=ipv6NdSsl,proto3,oneof"`
+	// #define OXM_OF_IPV6_ND_SLL  OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_ND_SLL, 6)
+	Ipv6NdSsl []byte `protobuf:"bytes,35,opt,name=ipv6_nd_ssl,json=ipv6NdSsl,proto3,oneof"` // For OFPXMT_OFB_IPV6_ND_SLL
 }
 
 type OfpOxmOfbField_Ipv6NdTll struct {
-	Ipv6NdTll []byte `protobuf:"bytes,36,opt,name=ipv6_nd_tll,json=ipv6NdTll,proto3,oneof"`
+	// #define OXM_OF_IPV6_ND_TLL  OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_ND_TLL, 6)
+	Ipv6NdTll []byte `protobuf:"bytes,36,opt,name=ipv6_nd_tll,json=ipv6NdTll,proto3,oneof"` // For OFPXMT_OFB_IPV6_ND_TLL
 }
 
 type OfpOxmOfbField_MplsLabel struct {
-	MplsLabel uint32 `protobuf:"varint,37,opt,name=mpls_label,json=mplsLabel,proto3,oneof"`
+	// #define OXM_OF_MPLS_LABEL  OXM_HEADER  (0x8000, OFPXMT_OFB_MPLS_LABEL, 4)
+	MplsLabel uint32 `protobuf:"varint,37,opt,name=mpls_label,json=mplsLabel,proto3,oneof"` // For OFPXMT_OFB_MPLS_LABEL
 }
 
 type OfpOxmOfbField_MplsTc struct {
-	MplsTc uint32 `protobuf:"varint,38,opt,name=mpls_tc,json=mplsTc,proto3,oneof"`
+	// #define OXM_OF_MPLS_TC     OXM_HEADER  (0x8000, OFPXMT_OFB_MPLS_TC, 1)
+	MplsTc uint32 `protobuf:"varint,38,opt,name=mpls_tc,json=mplsTc,proto3,oneof"` // For OFPXMT_OFB_MPLS_TC
 }
 
 type OfpOxmOfbField_MplsBos struct {
-	MplsBos uint32 `protobuf:"varint,39,opt,name=mpls_bos,json=mplsBos,proto3,oneof"`
+	// #define OXM_OF_MPLS_BOS     OXM_HEADER  (0x8000, OFPXMT_OFB_MPLS_BOS, 1)
+	MplsBos uint32 `protobuf:"varint,39,opt,name=mpls_bos,json=mplsBos,proto3,oneof"` // For OFPXMT_OFB_MPLS_BOS
 }
 
 type OfpOxmOfbField_PbbIsid struct {
-	PbbIsid uint32 `protobuf:"varint,40,opt,name=pbb_isid,json=pbbIsid,proto3,oneof"`
+	// #define OXM_OF_PBB_ISID   OXM_HEADER  (0x8000, OFPXMT_OFB_PBB_ISID, 3)
+	// #define OXM_OF_PBB_ISID_W OXM_HEADER_W(0x8000, OFPXMT_OFB_PBB_ISID, 3)
+	PbbIsid uint32 `protobuf:"varint,40,opt,name=pbb_isid,json=pbbIsid,proto3,oneof"` // For OFPXMT_OFB_PBB_ISID
 }
 
 type OfpOxmOfbField_TunnelId struct {
-	TunnelId uint64 `protobuf:"varint,41,opt,name=tunnel_id,json=tunnelId,proto3,oneof"`
+	// #define OXM_OF_TUNNEL_ID    OXM_HEADER  (0x8000, OFPXMT_OFB_TUNNEL_ID, 8)
+	// #define OXM_OF_TUNNEL_ID_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_TUNNEL_ID, 8)
+	TunnelId uint64 `protobuf:"varint,41,opt,name=tunnel_id,json=tunnelId,proto3,oneof"` // For OFPXMT_OFB_TUNNEL_ID
 }
 
 type OfpOxmOfbField_Ipv6Exthdr struct {
-	Ipv6Exthdr uint32 `protobuf:"varint,42,opt,name=ipv6_exthdr,json=ipv6Exthdr,proto3,oneof"`
+	// #define OXM_OF_IPV6_EXTHDR   OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_EXTHDR, 2)
+	// #define OXM_OF_IPV6_EXTHDR_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_EXTHDR, 2)
+	Ipv6Exthdr uint32 `protobuf:"varint,42,opt,name=ipv6_exthdr,json=ipv6Exthdr,proto3,oneof"` // For OFPXMT_OFB_IPV6_EXTHDR
 }
 
 func (*OfpOxmOfbField_Port) isOfpOxmOfbField_Value() {}
@@ -3524,351 +5316,64 @@
 
 func (*OfpOxmOfbField_Ipv6Exthdr) isOfpOxmOfbField_Value() {}
 
-func (m *OfpOxmOfbField) GetValue() isOfpOxmOfbField_Value {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-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
-}
-
 type isOfpOxmOfbField_Mask interface {
 	isOfpOxmOfbField_Mask()
 }
 
 type OfpOxmOfbField_TableMetadataMask struct {
-	TableMetadataMask uint64 `protobuf:"varint,105,opt,name=table_metadata_mask,json=tableMetadataMask,proto3,oneof"`
+	TableMetadataMask uint64 `protobuf:"varint,105,opt,name=table_metadata_mask,json=tableMetadataMask,proto3,oneof"` // For OFPXMT_OFB_METADATA
 }
 
 type OfpOxmOfbField_EthDstMask struct {
-	EthDstMask []byte `protobuf:"bytes,106,opt,name=eth_dst_mask,json=ethDstMask,proto3,oneof"`
+	EthDstMask []byte `protobuf:"bytes,106,opt,name=eth_dst_mask,json=ethDstMask,proto3,oneof"` // For OFPXMT_OFB_ETH_DST (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_EthSrcMask struct {
-	EthSrcMask []byte `protobuf:"bytes,107,opt,name=eth_src_mask,json=ethSrcMask,proto3,oneof"`
+	EthSrcMask []byte `protobuf:"bytes,107,opt,name=eth_src_mask,json=ethSrcMask,proto3,oneof"` // For OFPXMT_OFB_ETH_SRC (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_VlanVidMask struct {
-	VlanVidMask uint32 `protobuf:"varint,109,opt,name=vlan_vid_mask,json=vlanVidMask,proto3,oneof"`
+	VlanVidMask uint32 `protobuf:"varint,109,opt,name=vlan_vid_mask,json=vlanVidMask,proto3,oneof"` // For OFPXMT_OFB_VLAN_VID
 }
 
 type OfpOxmOfbField_Ipv4SrcMask struct {
-	Ipv4SrcMask uint32 `protobuf:"varint,114,opt,name=ipv4_src_mask,json=ipv4SrcMask,proto3,oneof"`
+	Ipv4SrcMask uint32 `protobuf:"varint,114,opt,name=ipv4_src_mask,json=ipv4SrcMask,proto3,oneof"` // For OFPXMT_OFB_IPV4_SRC
 }
 
 type OfpOxmOfbField_Ipv4DstMask struct {
-	Ipv4DstMask uint32 `protobuf:"varint,115,opt,name=ipv4_dst_mask,json=ipv4DstMask,proto3,oneof"`
+	Ipv4DstMask uint32 `protobuf:"varint,115,opt,name=ipv4_dst_mask,json=ipv4DstMask,proto3,oneof"` // For OFPXMT_OFB_IPV4_DST
 }
 
 type OfpOxmOfbField_ArpSpaMask struct {
-	ArpSpaMask uint32 `protobuf:"varint,125,opt,name=arp_spa_mask,json=arpSpaMask,proto3,oneof"`
+	ArpSpaMask uint32 `protobuf:"varint,125,opt,name=arp_spa_mask,json=arpSpaMask,proto3,oneof"` // For OFPXMT_OFB_ARP_SPA
 }
 
 type OfpOxmOfbField_ArpTpaMask struct {
-	ArpTpaMask uint32 `protobuf:"varint,126,opt,name=arp_tpa_mask,json=arpTpaMask,proto3,oneof"`
+	ArpTpaMask uint32 `protobuf:"varint,126,opt,name=arp_tpa_mask,json=arpTpaMask,proto3,oneof"` // For OFPXMT_OFB_ARP_TPA
 }
 
 type OfpOxmOfbField_Ipv6SrcMask struct {
-	Ipv6SrcMask []byte `protobuf:"bytes,129,opt,name=ipv6_src_mask,json=ipv6SrcMask,proto3,oneof"`
+	Ipv6SrcMask []byte `protobuf:"bytes,129,opt,name=ipv6_src_mask,json=ipv6SrcMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_SRC
 }
 
 type OfpOxmOfbField_Ipv6DstMask struct {
-	Ipv6DstMask []byte `protobuf:"bytes,130,opt,name=ipv6_dst_mask,json=ipv6DstMask,proto3,oneof"`
+	Ipv6DstMask []byte `protobuf:"bytes,130,opt,name=ipv6_dst_mask,json=ipv6DstMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_DST
 }
 
 type OfpOxmOfbField_Ipv6FlabelMask struct {
-	Ipv6FlabelMask uint32 `protobuf:"varint,131,opt,name=ipv6_flabel_mask,json=ipv6FlabelMask,proto3,oneof"`
+	Ipv6FlabelMask uint32 `protobuf:"varint,131,opt,name=ipv6_flabel_mask,json=ipv6FlabelMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_FLABEL
 }
 
 type OfpOxmOfbField_PbbIsidMask struct {
-	PbbIsidMask uint32 `protobuf:"varint,140,opt,name=pbb_isid_mask,json=pbbIsidMask,proto3,oneof"`
+	PbbIsidMask uint32 `protobuf:"varint,140,opt,name=pbb_isid_mask,json=pbbIsidMask,proto3,oneof"` // For OFPXMT_OFB_PBB_ISID
 }
 
 type OfpOxmOfbField_TunnelIdMask struct {
-	TunnelIdMask uint64 `protobuf:"varint,141,opt,name=tunnel_id_mask,json=tunnelIdMask,proto3,oneof"`
+	TunnelIdMask uint64 `protobuf:"varint,141,opt,name=tunnel_id_mask,json=tunnelIdMask,proto3,oneof"` // For OFPXMT_OFB_TUNNEL_ID
 }
 
 type OfpOxmOfbField_Ipv6ExthdrMask struct {
-	Ipv6ExthdrMask uint32 `protobuf:"varint,142,opt,name=ipv6_exthdr_mask,json=ipv6ExthdrMask,proto3,oneof"`
+	Ipv6ExthdrMask uint32 `protobuf:"varint,142,opt,name=ipv6_exthdr_mask,json=ipv6ExthdrMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_EXTHDR
 }
 
 func (*OfpOxmOfbField_TableMetadataMask) isOfpOxmOfbField_Mask() {}
@@ -3899,114 +5404,6977 @@
 
 func (*OfpOxmOfbField_Ipv6ExthdrMask) isOfpOxmOfbField_Mask() {}
 
-func (m *OfpOxmOfbField) GetMask() isOfpOxmOfbField_Mask {
-	if m != nil {
-		return m.Mask
+// 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 {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OxmHeader     uint32                 `protobuf:"varint,1,opt,name=oxm_header,json=oxmHeader,proto3" json:"oxm_header,omitempty"` // oxm_class = OFPXMC_EXPERIMENTER
+	Experimenter  uint32                 `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpOxmExperimenterField) Reset() {
+	*x = OfpOxmExperimenterField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpOxmExperimenterField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpOxmExperimenterField) ProtoMessage() {}
+
+func (x *OfpOxmExperimenterField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpOxmExperimenterField.ProtoReflect.Descriptor instead.
+func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *OfpOxmExperimenterField) GetOxmHeader() uint32 {
+	if x != nil {
+		return x.OxmHeader
+	}
+	return 0
+}
+
+func (x *OfpOxmExperimenterField) GetExperimenter() uint32 {
+	if x != nil {
+		return x.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 {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Type  OfpActionType          `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpActionType" json:"type,omitempty"` // One of OFPAT_*.
+	// 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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpAction) Reset() {
+	*x = OfpAction{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAction) ProtoMessage() {}
+
+func (x *OfpAction) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAction.ProtoReflect.Descriptor instead.
+func (*OfpAction) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *OfpAction) GetType() OfpActionType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpActionType_OFPAT_OUTPUT
+}
+
+func (x *OfpAction) GetAction() isOfpAction_Action {
+	if x != nil {
+		return x.Action
 	}
 	return nil
 }
 
-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
+func (x *OfpAction) GetOutput() *OfpActionOutput {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Output); ok {
+			return x.Output
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetEthSrcMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_EthSrcMask); ok {
-		return x.EthSrcMask
+func (x *OfpAction) GetMplsTtl() *OfpActionMplsTtl {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_MplsTtl); ok {
+			return x.MplsTtl
+		}
 	}
 	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
+func (x *OfpAction) GetPush() *OfpActionPush {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Push); ok {
+			return x.Push
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetIpv6DstMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6DstMask); ok {
-		return x.Ipv6DstMask
+func (x *OfpAction) GetPopMpls() *OfpActionPopMpls {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_PopMpls); ok {
+			return x.PopMpls
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetIpv6FlabelMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6FlabelMask); ok {
-		return x.Ipv6FlabelMask
+func (x *OfpAction) GetGroup() *OfpActionGroup {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Group); ok {
+			return x.Group
+		}
+	}
+	return nil
+}
+
+func (x *OfpAction) GetNwTtl() *OfpActionNwTtl {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_NwTtl); ok {
+			return x.NwTtl
+		}
+	}
+	return nil
+}
+
+func (x *OfpAction) GetSetField() *OfpActionSetField {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_SetField); ok {
+			return x.SetField
+		}
+	}
+	return nil
+}
+
+func (x *OfpAction) GetExperimenter() *OfpActionExperimenter {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpAction_Action interface {
+	isOfpAction_Action()
+}
+
+type OfpAction_Output struct {
+	Output *OfpActionOutput `protobuf:"bytes,2,opt,name=output,proto3,oneof"`
+}
+
+type OfpAction_MplsTtl struct {
+	MplsTtl *OfpActionMplsTtl `protobuf:"bytes,3,opt,name=mpls_ttl,json=mplsTtl,proto3,oneof"`
+}
+
+type OfpAction_Push struct {
+	Push *OfpActionPush `protobuf:"bytes,4,opt,name=push,proto3,oneof"`
+}
+
+type OfpAction_PopMpls struct {
+	PopMpls *OfpActionPopMpls `protobuf:"bytes,5,opt,name=pop_mpls,json=popMpls,proto3,oneof"`
+}
+
+type OfpAction_Group struct {
+	Group *OfpActionGroup `protobuf:"bytes,6,opt,name=group,proto3,oneof"`
+}
+
+type OfpAction_NwTtl struct {
+	NwTtl *OfpActionNwTtl `protobuf:"bytes,7,opt,name=nw_ttl,json=nwTtl,proto3,oneof"`
+}
+
+type OfpAction_SetField struct {
+	SetField *OfpActionSetField `protobuf:"bytes,8,opt,name=set_field,json=setField,proto3,oneof"`
+}
+
+type OfpAction_Experimenter struct {
+	Experimenter *OfpActionExperimenter `protobuf:"bytes,9,opt,name=experimenter,proto3,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() {}
+
+// 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 {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Port          uint32                 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`                   // Output port.
+	MaxLen        uint32                 `protobuf:"varint,2,opt,name=max_len,json=maxLen,proto3" json:"max_len,omitempty"` // Max length to send to controller.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionOutput) Reset() {
+	*x = OfpActionOutput{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionOutput) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionOutput) ProtoMessage() {}
+
+func (x *OfpActionOutput) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionOutput.ProtoReflect.Descriptor instead.
+func (*OfpActionOutput) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *OfpActionOutput) GetPort() uint32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *OfpOxmOfbField) GetPbbIsidMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_PbbIsidMask); ok {
-		return x.PbbIsidMask
+func (x *OfpActionOutput) GetMaxLen() uint32 {
+	if x != nil {
+		return x.MaxLen
 	}
 	return 0
 }
 
-func (m *OfpOxmOfbField) GetTunnelIdMask() uint64 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_TunnelIdMask); ok {
-		return x.TunnelIdMask
+// Action structure for OFPAT_SET_MPLS_TTL.
+type OfpActionMplsTtl struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MplsTtl       uint32                 `protobuf:"varint,1,opt,name=mpls_ttl,json=mplsTtl,proto3" json:"mpls_ttl,omitempty"` // MPLS TTL
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionMplsTtl) Reset() {
+	*x = OfpActionMplsTtl{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionMplsTtl) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionMplsTtl) ProtoMessage() {}
+
+func (x *OfpActionMplsTtl) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionMplsTtl.ProtoReflect.Descriptor instead.
+func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *OfpActionMplsTtl) GetMplsTtl() uint32 {
+	if x != nil {
+		return x.MplsTtl
 	}
 	return 0
 }
 
-func (m *OfpOxmOfbField) GetIpv6ExthdrMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6ExthdrMask); ok {
-		return x.Ipv6ExthdrMask
+// Action structure for OFPAT_PUSH_VLAN/MPLS/PBB.
+type OfpActionPush struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Ethertype     uint32                 `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"` // Ethertype
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionPush) Reset() {
+	*x = OfpActionPush{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionPush) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionPush) ProtoMessage() {}
+
+func (x *OfpActionPush) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionPush.ProtoReflect.Descriptor instead.
+func (*OfpActionPush) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *OfpActionPush) GetEthertype() uint32 {
+	if x != nil {
+		return x.Ethertype
 	}
 	return 0
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpOxmOfbField) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+// Action structure for OFPAT_POP_MPLS.
+type OfpActionPopMpls struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Ethertype     uint32                 `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"` // Ethertype
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionPopMpls) Reset() {
+	*x = OfpActionPopMpls{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionPopMpls) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionPopMpls) ProtoMessage() {}
+
+func (x *OfpActionPopMpls) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionPopMpls.ProtoReflect.Descriptor instead.
+func (*OfpActionPopMpls) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *OfpActionPopMpls) GetEthertype() uint32 {
+	if x != nil {
+		return x.Ethertype
+	}
+	return 0
+}
+
+// Action structure for OFPAT_GROUP.
+type OfpActionGroup struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupId       uint32                 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // Group identifier.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionGroup) Reset() {
+	*x = OfpActionGroup{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionGroup) ProtoMessage() {}
+
+func (x *OfpActionGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionGroup.ProtoReflect.Descriptor instead.
+func (*OfpActionGroup) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *OfpActionGroup) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+// Action structure for OFPAT_SET_NW_TTL.
+type OfpActionNwTtl struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	NwTtl         uint32                 `protobuf:"varint,1,opt,name=nw_ttl,json=nwTtl,proto3" json:"nw_ttl,omitempty"` // IP TTL
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionNwTtl) Reset() {
+	*x = OfpActionNwTtl{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionNwTtl) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionNwTtl) ProtoMessage() {}
+
+func (x *OfpActionNwTtl) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionNwTtl.ProtoReflect.Descriptor instead.
+func (*OfpActionNwTtl) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *OfpActionNwTtl) GetNwTtl() uint32 {
+	if x != nil {
+		return x.NwTtl
+	}
+	return 0
+}
+
+// Action structure for OFPAT_SET_FIELD.
+type OfpActionSetField struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Field         *OfpOxmField           `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionSetField) Reset() {
+	*x = OfpActionSetField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionSetField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionSetField) ProtoMessage() {}
+
+func (x *OfpActionSetField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionSetField.ProtoReflect.Descriptor instead.
+func (*OfpActionSetField) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *OfpActionSetField) GetField() *OfpOxmField {
+	if x != nil {
+		return x.Field
+	}
+	return nil
+}
+
+// Action header for OFPAT_EXPERIMENTER.
+// The rest of the body is experimenter-defined.
+type OfpActionExperimenter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter  uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	Data          []byte                 `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionExperimenter) Reset() {
+	*x = OfpActionExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionExperimenter) ProtoMessage() {}
+
+func (x *OfpActionExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpActionExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *OfpActionExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpActionExperimenter) GetData() []byte {
+	if x != nil {
+		return x.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 {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Type  uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` // Instruction type
+	// 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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstruction) Reset() {
+	*x = OfpInstruction{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstruction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstruction) ProtoMessage() {}
+
+func (x *OfpInstruction) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstruction.ProtoReflect.Descriptor instead.
+func (*OfpInstruction) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *OfpInstruction) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpInstruction) GetData() isOfpInstruction_Data {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetGotoTable() *OfpInstructionGotoTable {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_GotoTable); ok {
+			return x.GotoTable
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetWriteMetadata() *OfpInstructionWriteMetadata {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_WriteMetadata); ok {
+			return x.WriteMetadata
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetActions() *OfpInstructionActions {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_Actions); ok {
+			return x.Actions
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetMeter() *OfpInstructionMeter {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_Meter); ok {
+			return x.Meter
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetExperimenter() *OfpInstructionExperimenter {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpInstruction_Data interface {
+	isOfpInstruction_Data()
+}
+
+type OfpInstruction_GotoTable struct {
+	GotoTable *OfpInstructionGotoTable `protobuf:"bytes,2,opt,name=goto_table,json=gotoTable,proto3,oneof"`
+}
+
+type OfpInstruction_WriteMetadata struct {
+	WriteMetadata *OfpInstructionWriteMetadata `protobuf:"bytes,3,opt,name=write_metadata,json=writeMetadata,proto3,oneof"`
+}
+
+type OfpInstruction_Actions struct {
+	Actions *OfpInstructionActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
+}
+
+type OfpInstruction_Meter struct {
+	Meter *OfpInstructionMeter `protobuf:"bytes,5,opt,name=meter,proto3,oneof"`
+}
+
+type OfpInstruction_Experimenter struct {
+	Experimenter *OfpInstructionExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,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() {}
+
+// Instruction structure for OFPIT_GOTO_TABLE
+type OfpInstructionGotoTable struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"` // Set next table in the lookup pipeline
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionGotoTable) Reset() {
+	*x = OfpInstructionGotoTable{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[25]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionGotoTable) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionGotoTable) ProtoMessage() {}
+
+func (x *OfpInstructionGotoTable) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[25]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionGotoTable.ProtoReflect.Descriptor instead.
+func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *OfpInstructionGotoTable) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+// Instruction structure for OFPIT_WRITE_METADATA
+type OfpInstructionWriteMetadata struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Metadata      uint64                 `protobuf:"varint,1,opt,name=metadata,proto3" json:"metadata,omitempty"`                             // Metadata value to write
+	MetadataMask  uint64                 `protobuf:"varint,2,opt,name=metadata_mask,json=metadataMask,proto3" json:"metadata_mask,omitempty"` // Metadata write bitmask
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionWriteMetadata) Reset() {
+	*x = OfpInstructionWriteMetadata{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[26]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionWriteMetadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionWriteMetadata) ProtoMessage() {}
+
+func (x *OfpInstructionWriteMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[26]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionWriteMetadata.ProtoReflect.Descriptor instead.
+func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *OfpInstructionWriteMetadata) GetMetadata() uint64 {
+	if x != nil {
+		return x.Metadata
+	}
+	return 0
+}
+
+func (x *OfpInstructionWriteMetadata) GetMetadataMask() uint64 {
+	if x != nil {
+		return x.MetadataMask
+	}
+	return 0
+}
+
+// Instruction structure for OFPIT_WRITE/APPLY/CLEAR_ACTIONS
+type OfpInstructionActions struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Actions       []*OfpAction           `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionActions) Reset() {
+	*x = OfpInstructionActions{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[27]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionActions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionActions) ProtoMessage() {}
+
+func (x *OfpInstructionActions) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[27]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionActions.ProtoReflect.Descriptor instead.
+func (*OfpInstructionActions) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *OfpInstructionActions) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Instruction structure for OFPIT_METER
+type OfpInstructionMeter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterId       uint32                 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"` // Meter instance.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionMeter) Reset() {
+	*x = OfpInstructionMeter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[28]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionMeter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionMeter) ProtoMessage() {}
+
+func (x *OfpInstructionMeter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[28]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionMeter.ProtoReflect.Descriptor instead.
+func (*OfpInstructionMeter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *OfpInstructionMeter) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+// Instruction structure for experimental instructions
+type OfpInstructionExperimenter struct {
+	state        protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	// Experimenter-defined arbitrary additional data.
+	Data          []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionExperimenter) Reset() {
+	*x = OfpInstructionExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[29]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionExperimenter) ProtoMessage() {}
+
+func (x *OfpInstructionExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[29]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *OfpInstructionExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpInstructionExperimenter) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Flow setup and teardown (controller -> datapath).
+type OfpFlowMod struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Cookie        uint64            `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"` // Opaque controller-issued identifier.
+	CookieMask    uint64            `protobuf:"varint,2,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+	TableId       uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	Command       OfpFlowModCommand `protobuf:"varint,4,opt,name=command,proto3,enum=openflow_13.OfpFlowModCommand" json:"command,omitempty"` // One of OFPFC_*.
+	IdleTimeout   uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`         // Idle time before discarding (seconds).
+	HardTimeout   uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`         // Max time before discarding (seconds).
+	Priority      uint32            `protobuf:"varint,7,opt,name=priority,proto3" json:"priority,omitempty"`                                  // Priority level of flow entry.
+	BufferId      uint32            `protobuf:"varint,8,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
+	OutPort       uint32            `protobuf:"varint,9,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+	OutGroup      uint32            `protobuf:"varint,10,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+	Flags         uint32            `protobuf:"varint,11,opt,name=flags,proto3" json:"flags,omitempty"`              // Bitmap of OFPFF_* flags.
+	Match         *OfpMatch         `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`               // Fields to match. Variable size.
+	Instructions  []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"` // 0 or more.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowMod) Reset() {
+	*x = OfpFlowMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[30]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowMod) ProtoMessage() {}
+
+func (x *OfpFlowMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[30]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowMod.ProtoReflect.Descriptor instead.
+func (*OfpFlowMod) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *OfpFlowMod) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetCookieMask() uint64 {
+	if x != nil {
+		return x.CookieMask
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetCommand() OfpFlowModCommand {
+	if x != nil {
+		return x.Command
+	}
+	return OfpFlowModCommand_OFPFC_ADD
+}
+
+func (x *OfpFlowMod) GetIdleTimeout() uint32 {
+	if x != nil {
+		return x.IdleTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetHardTimeout() uint32 {
+	if x != nil {
+		return x.HardTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetBufferId() uint32 {
+	if x != nil {
+		return x.BufferId
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetOutPort() uint32 {
+	if x != nil {
+		return x.OutPort
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetOutGroup() uint32 {
+	if x != nil {
+		return x.OutGroup
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+func (x *OfpFlowMod) GetInstructions() []*OfpInstruction {
+	if x != nil {
+		return x.Instructions
+	}
+	return nil
+}
+
+// Bucket for use in groups.
+type OfpBucket struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Weight        uint32                 `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"`
+	WatchPort     uint32                 `protobuf:"varint,2,opt,name=watch_port,json=watchPort,proto3" json:"watch_port,omitempty"`
+	WatchGroup    uint32                 `protobuf:"varint,3,opt,name=watch_group,json=watchGroup,proto3" json:"watch_group,omitempty"`
+	Actions       []*OfpAction           `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpBucket) Reset() {
+	*x = OfpBucket{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[31]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpBucket) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpBucket) ProtoMessage() {}
+
+func (x *OfpBucket) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[31]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpBucket.ProtoReflect.Descriptor instead.
+func (*OfpBucket) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *OfpBucket) GetWeight() uint32 {
+	if x != nil {
+		return x.Weight
+	}
+	return 0
+}
+
+func (x *OfpBucket) GetWatchPort() uint32 {
+	if x != nil {
+		return x.WatchPort
+	}
+	return 0
+}
+
+func (x *OfpBucket) GetWatchGroup() uint32 {
+	if x != nil {
+		return x.WatchGroup
+	}
+	return 0
+}
+
+func (x *OfpBucket) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Group setup and teardown (controller -> datapath).
+type OfpGroupMod struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Command       OfpGroupModCommand `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpGroupModCommand" json:"command,omitempty"` // One of OFPGC_*.
+	Type          OfpGroupType       `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`             // One of OFPGT_*.
+	GroupId       uint32             `protobuf:"varint,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`                      // Group identifier.
+	Buckets       []*OfpBucket       `protobuf:"bytes,4,rep,name=buckets,proto3" json:"buckets,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupMod) Reset() {
+	*x = OfpGroupMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[32]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupMod) ProtoMessage() {}
+
+func (x *OfpGroupMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[32]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupMod.ProtoReflect.Descriptor instead.
+func (*OfpGroupMod) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{32}
+}
+
+func (x *OfpGroupMod) GetCommand() OfpGroupModCommand {
+	if x != nil {
+		return x.Command
+	}
+	return OfpGroupModCommand_OFPGC_ADD
+}
+
+func (x *OfpGroupMod) GetType() OfpGroupType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpGroupType_OFPGT_ALL
+}
+
+func (x *OfpGroupMod) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *OfpGroupMod) GetBuckets() []*OfpBucket {
+	if x != nil {
+		return x.Buckets
+	}
+	return nil
+}
+
+// Send packet (controller -> datapath).
+type OfpPacketOut struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	BufferId uint32       `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
+	InPort   uint32       `protobuf:"varint,2,opt,name=in_port,json=inPort,proto3" json:"in_port,omitempty"` // Packet's input port or OFPP_CONTROLLER.
+	Actions  []*OfpAction `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`              // Action list - 0 or more.
+	// 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"` // Packet data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPacketOut) Reset() {
+	*x = OfpPacketOut{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[33]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPacketOut) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPacketOut) ProtoMessage() {}
+
+func (x *OfpPacketOut) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[33]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPacketOut.ProtoReflect.Descriptor instead.
+func (*OfpPacketOut) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *OfpPacketOut) GetBufferId() uint32 {
+	if x != nil {
+		return x.BufferId
+	}
+	return 0
+}
+
+func (x *OfpPacketOut) GetInPort() uint32 {
+	if x != nil {
+		return x.InPort
+	}
+	return 0
+}
+
+func (x *OfpPacketOut) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+func (x *OfpPacketOut) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Packet received on port (datapath -> controller).
+type OfpPacketIn struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	BufferId      uint32            `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`                // ID assigned by datapath.
+	Reason        OfpPacketInReason `protobuf:"varint,2,opt,name=reason,proto3,enum=openflow_13.OfpPacketInReason" json:"reason,omitempty"` // Reason packet is being sent
+	TableId       uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`                   // ID of the table that was looked up
+	Cookie        uint64            `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`                                    // Cookie of the flow entry that was looked up.
+	Match         *OfpMatch         `protobuf:"bytes,5,opt,name=match,proto3" json:"match,omitempty"`                                       // Packet metadata. Variable size.
+	Data          []byte            `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`                                         // Ethernet frame
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPacketIn) Reset() {
+	*x = OfpPacketIn{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[34]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPacketIn) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPacketIn) ProtoMessage() {}
+
+func (x *OfpPacketIn) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[34]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPacketIn.ProtoReflect.Descriptor instead.
+func (*OfpPacketIn) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *OfpPacketIn) GetBufferId() uint32 {
+	if x != nil {
+		return x.BufferId
+	}
+	return 0
+}
+
+func (x *OfpPacketIn) GetReason() OfpPacketInReason {
+	if x != nil {
+		return x.Reason
+	}
+	return OfpPacketInReason_OFPR_NO_MATCH
+}
+
+func (x *OfpPacketIn) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpPacketIn) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpPacketIn) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+func (x *OfpPacketIn) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Flow removed (datapath -> controller).
+type OfpFlowRemoved struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Cookie        uint64               `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`                                       // Opaque controller-issued identifier.
+	Priority      uint32               `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`                                   // Priority level of flow entry.
+	Reason        OfpFlowRemovedReason `protobuf:"varint,3,opt,name=reason,proto3,enum=openflow_13.OfpFlowRemovedReason" json:"reason,omitempty"` // One of OFPRR_*.
+	TableId       uint32               `protobuf:"varint,4,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`                      // ID of the table
+	DurationSec   uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`          // Time flow was alive in seconds.
+	DurationNsec  uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	IdleTimeout   uint32               `protobuf:"varint,7,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` // Idle timeout from original flow mod.
+	HardTimeout   uint32               `protobuf:"varint,8,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"` // Hard timeout from original flow mod.
+	PacketCount   uint64               `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
+	ByteCount     uint64               `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
+	Match         *OfpMatch            `protobuf:"bytes,121,opt,name=match,proto3" json:"match,omitempty"` // Description of fields. Variable size.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowRemoved) Reset() {
+	*x = OfpFlowRemoved{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[35]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowRemoved) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowRemoved) ProtoMessage() {}
+
+func (x *OfpFlowRemoved) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[35]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowRemoved.ProtoReflect.Descriptor instead.
+func (*OfpFlowRemoved) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *OfpFlowRemoved) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetReason() OfpFlowRemovedReason {
+	if x != nil {
+		return x.Reason
+	}
+	return OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT
+}
+
+func (x *OfpFlowRemoved) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetIdleTimeout() uint32 {
+	if x != nil {
+		return x.IdleTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetHardTimeout() uint32 {
+	if x != nil {
+		return x.HardTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+// Common header for all meter bands
+type OfpMeterBandHeader struct {
+	state     protoimpl.MessageState `protogen:"open.v1"`
+	Type      OfpMeterBandType       `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMeterBandType" json:"type,omitempty"` // One of OFPMBT_*.
+	Rate      uint32                 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`                                   // Rate for this band.
+	BurstSize uint32                 `protobuf:"varint,3,opt,name=burst_size,json=burstSize,proto3" json:"burst_size,omitempty"`        // Size of bursts.
+	// Types that are valid to be assigned to Data:
+	//
+	//	*OfpMeterBandHeader_Drop
+	//	*OfpMeterBandHeader_DscpRemark
+	//	*OfpMeterBandHeader_Experimenter
+	Data          isOfpMeterBandHeader_Data `protobuf_oneof:"data"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandHeader) Reset() {
+	*x = OfpMeterBandHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[36]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandHeader) ProtoMessage() {}
+
+func (x *OfpMeterBandHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[36]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandHeader.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{36}
+}
+
+func (x *OfpMeterBandHeader) GetType() OfpMeterBandType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpMeterBandType_OFPMBT_INVALID
+}
+
+func (x *OfpMeterBandHeader) GetRate() uint32 {
+	if x != nil {
+		return x.Rate
+	}
+	return 0
+}
+
+func (x *OfpMeterBandHeader) GetBurstSize() uint32 {
+	if x != nil {
+		return x.BurstSize
+	}
+	return 0
+}
+
+func (x *OfpMeterBandHeader) GetData() isOfpMeterBandHeader_Data {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+func (x *OfpMeterBandHeader) GetDrop() *OfpMeterBandDrop {
+	if x != nil {
+		if x, ok := x.Data.(*OfpMeterBandHeader_Drop); ok {
+			return x.Drop
+		}
+	}
+	return nil
+}
+
+func (x *OfpMeterBandHeader) GetDscpRemark() *OfpMeterBandDscpRemark {
+	if x != nil {
+		if x, ok := x.Data.(*OfpMeterBandHeader_DscpRemark); ok {
+			return x.DscpRemark
+		}
+	}
+	return nil
+}
+
+func (x *OfpMeterBandHeader) GetExperimenter() *OfpMeterBandExperimenter {
+	if x != nil {
+		if x, ok := x.Data.(*OfpMeterBandHeader_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpMeterBandHeader_Data interface {
+	isOfpMeterBandHeader_Data()
+}
+
+type OfpMeterBandHeader_Drop struct {
+	Drop *OfpMeterBandDrop `protobuf:"bytes,4,opt,name=drop,proto3,oneof"`
+}
+
+type OfpMeterBandHeader_DscpRemark struct {
+	DscpRemark *OfpMeterBandDscpRemark `protobuf:"bytes,5,opt,name=dscp_remark,json=dscpRemark,proto3,oneof"`
+}
+
+type OfpMeterBandHeader_Experimenter struct {
+	Experimenter *OfpMeterBandExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpMeterBandHeader_Drop) isOfpMeterBandHeader_Data() {}
+
+func (*OfpMeterBandHeader_DscpRemark) isOfpMeterBandHeader_Data() {}
+
+func (*OfpMeterBandHeader_Experimenter) isOfpMeterBandHeader_Data() {}
+
+// OFPMBT_DROP band - drop packets
+type OfpMeterBandDrop struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandDrop) Reset() {
+	*x = OfpMeterBandDrop{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[37]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandDrop) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandDrop) ProtoMessage() {}
+
+func (x *OfpMeterBandDrop) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[37]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandDrop.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{37}
+}
+
+// OFPMBT_DSCP_REMARK band - Remark DSCP in the IP header
+type OfpMeterBandDscpRemark struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PrecLevel     uint32                 `protobuf:"varint,1,opt,name=prec_level,json=precLevel,proto3" json:"prec_level,omitempty"` // Number of drop precedence level to add.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandDscpRemark) Reset() {
+	*x = OfpMeterBandDscpRemark{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[38]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandDscpRemark) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandDscpRemark) ProtoMessage() {}
+
+func (x *OfpMeterBandDscpRemark) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[38]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandDscpRemark.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{38}
+}
+
+func (x *OfpMeterBandDscpRemark) GetPrecLevel() uint32 {
+	if x != nil {
+		return x.PrecLevel
+	}
+	return 0
+}
+
+// OFPMBT_EXPERIMENTER band - Experimenter type.
+// The rest of the band is experimenter-defined.
+type OfpMeterBandExperimenter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter  uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandExperimenter) Reset() {
+	*x = OfpMeterBandExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[39]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandExperimenter) ProtoMessage() {}
+
+func (x *OfpMeterBandExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[39]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{39}
+}
+
+func (x *OfpMeterBandExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+// Meter configuration. OFPT_METER_MOD.
+type OfpMeterMod struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Command       OfpMeterModCommand     `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpMeterModCommand" json:"command,omitempty"` // One of OFPMC_*.
+	Flags         uint32                 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`                                         // Bitmap of OFPMF_* flags.
+	MeterId       uint32                 `protobuf:"varint,3,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`                      // Meter instance.
+	Bands         []*OfpMeterBandHeader  `protobuf:"bytes,4,rep,name=bands,proto3" json:"bands,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterMod) Reset() {
+	*x = OfpMeterMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[40]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterMod) ProtoMessage() {}
+
+func (x *OfpMeterMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[40]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterMod.ProtoReflect.Descriptor instead.
+func (*OfpMeterMod) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{40}
+}
+
+func (x *OfpMeterMod) GetCommand() OfpMeterModCommand {
+	if x != nil {
+		return x.Command
+	}
+	return OfpMeterModCommand_OFPMC_ADD
+}
+
+func (x *OfpMeterMod) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMeterMod) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+func (x *OfpMeterMod) GetBands() []*OfpMeterBandHeader {
+	if x != nil {
+		return x.Bands
+	}
+	return nil
+}
+
+// OFPT_ERROR: Error message (datapath -> controller).
+type OfpErrorMsg struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Header        *OfpHeader             `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
+	Type          uint32                 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
+	Code          uint32                 `protobuf:"varint,3,opt,name=code,proto3" json:"code,omitempty"`
+	Data          []byte                 `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpErrorMsg) Reset() {
+	*x = OfpErrorMsg{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[41]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpErrorMsg) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpErrorMsg) ProtoMessage() {}
+
+func (x *OfpErrorMsg) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[41]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpErrorMsg.ProtoReflect.Descriptor instead.
+func (*OfpErrorMsg) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{41}
+}
+
+func (x *OfpErrorMsg) GetHeader() *OfpHeader {
+	if x != nil {
+		return x.Header
+	}
+	return nil
+}
+
+func (x *OfpErrorMsg) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpErrorMsg) GetCode() uint32 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *OfpErrorMsg) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// OFPET_EXPERIMENTER: Error message (datapath -> controller).
+type OfpErrorExperimenterMsg struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`                      // OFPET_EXPERIMENTER.
+	ExpType       uint32                 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	Experimenter  uint32                 `protobuf:"varint,3,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	Data          []byte                 `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpErrorExperimenterMsg) Reset() {
+	*x = OfpErrorExperimenterMsg{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[42]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpErrorExperimenterMsg) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpErrorExperimenterMsg) ProtoMessage() {}
+
+func (x *OfpErrorExperimenterMsg) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[42]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpErrorExperimenterMsg.ProtoReflect.Descriptor instead.
+func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{42}
+}
+
+func (x *OfpErrorExperimenterMsg) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpErrorExperimenterMsg) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpErrorExperimenterMsg) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpErrorExperimenterMsg) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+type OfpMultipartRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Type          OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"` // One of the OFPMP_* constants.
+	Flags         uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`                                 // OFPMPF_REQ_* flags.
+	Body          []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`                                    // Body of the request. 0 or more bytes.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMultipartRequest) Reset() {
+	*x = OfpMultipartRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[43]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMultipartRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMultipartRequest) ProtoMessage() {}
+
+func (x *OfpMultipartRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[43]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMultipartRequest.ProtoReflect.Descriptor instead.
+func (*OfpMultipartRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{43}
+}
+
+func (x *OfpMultipartRequest) GetType() OfpMultipartType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpMultipartType_OFPMP_DESC
+}
+
+func (x *OfpMultipartRequest) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMultipartRequest) GetBody() []byte {
+	if x != nil {
+		return x.Body
+	}
+	return nil
+}
+
+type OfpMultipartReply struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Type          OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"` // One of the OFPMP_* constants.
+	Flags         uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`                                 // OFPMPF_REPLY_* flags.
+	Body          []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`                                    // Body of the reply. 0 or more bytes.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMultipartReply) Reset() {
+	*x = OfpMultipartReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[44]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMultipartReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMultipartReply) ProtoMessage() {}
+
+func (x *OfpMultipartReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[44]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMultipartReply.ProtoReflect.Descriptor instead.
+func (*OfpMultipartReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{44}
+}
+
+func (x *OfpMultipartReply) GetType() OfpMultipartType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpMultipartType_OFPMP_DESC
+}
+
+func (x *OfpMultipartReply) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMultipartReply) GetBody() []byte {
+	if x != nil {
+		return x.Body
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_DESC request.  Each entry is a NULL-terminated
+// ASCII string.
+type OfpDesc struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MfrDesc       string                 `protobuf:"bytes,1,opt,name=mfr_desc,json=mfrDesc,proto3" json:"mfr_desc,omitempty"`       // Manufacturer description.
+	HwDesc        string                 `protobuf:"bytes,2,opt,name=hw_desc,json=hwDesc,proto3" json:"hw_desc,omitempty"`          // Hardware description.
+	SwDesc        string                 `protobuf:"bytes,3,opt,name=sw_desc,json=swDesc,proto3" json:"sw_desc,omitempty"`          // Software description.
+	SerialNum     string                 `protobuf:"bytes,4,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"` // Serial number.
+	DpDesc        string                 `protobuf:"bytes,5,opt,name=dp_desc,json=dpDesc,proto3" json:"dp_desc,omitempty"`          // Human readable description of datapath.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpDesc) Reset() {
+	*x = OfpDesc{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[45]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpDesc) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpDesc) ProtoMessage() {}
+
+func (x *OfpDesc) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[45]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpDesc.ProtoReflect.Descriptor instead.
+func (*OfpDesc) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{45}
+}
+
+func (x *OfpDesc) GetMfrDesc() string {
+	if x != nil {
+		return x.MfrDesc
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetHwDesc() string {
+	if x != nil {
+		return x.HwDesc
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetSwDesc() string {
+	if x != nil {
+		return x.SwDesc
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetSerialNum() string {
+	if x != nil {
+		return x.SerialNum
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetDpDesc() string {
+	if x != nil {
+		return x.DpDesc
+	}
+	return ""
+}
+
+// Body for ofp_multipart_request of type OFPMP_FLOW.
+type OfpFlowStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	OutPort       uint32                 `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+	OutGroup      uint32                 `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+	Cookie        uint64                 `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
+	CookieMask    uint64                 `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+	Match         *OfpMatch              `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"` // Fields to match. Variable size.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowStatsRequest) Reset() {
+	*x = OfpFlowStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[46]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowStatsRequest) ProtoMessage() {}
+
+func (x *OfpFlowStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[46]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{46}
+}
+
+func (x *OfpFlowStatsRequest) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetOutPort() uint32 {
+	if x != nil {
+		return x.OutPort
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetOutGroup() uint32 {
+	if x != nil {
+		return x.OutGroup
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetCookieMask() uint64 {
+	if x != nil {
+		return x.CookieMask
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_FLOW request.
+type OfpFlowStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            uint64                 `protobuf:"varint,14,opt,name=id,proto3" json:"id,omitempty"`                                     // Unique ID of flow within device.
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`             // ID of table flow came from.
+	DurationSec   uint32                 `protobuf:"varint,2,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time flow has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,3,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	Priority      uint32                 `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`                          // Priority of the entry.
+	IdleTimeout   uint32                 `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` // Number of seconds idle before expiration.
+	HardTimeout   uint32                 `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"` // Number of seconds before expiration.
+	Flags         uint32                 `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"`                                // Bitmap of OFPFF_* flags.
+	Cookie        uint64                 `protobuf:"varint,8,opt,name=cookie,proto3" json:"cookie,omitempty"`                              // Opaque controller-issued identifier.
+	PacketCount   uint64                 `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets in flow.
+	ByteCount     uint64                 `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`      // Number of bytes in flow.
+	Match         *OfpMatch              `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`                                // Description of fields. Variable size.
+	Instructions  []*OfpInstruction      `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowStats) Reset() {
+	*x = OfpFlowStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[47]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowStats) ProtoMessage() {}
+
+func (x *OfpFlowStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[47]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowStats.ProtoReflect.Descriptor instead.
+func (*OfpFlowStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{47}
+}
+
+func (x *OfpFlowStats) GetId() uint64 {
+	if x != nil {
+		return x.Id
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetIdleTimeout() uint32 {
+	if x != nil {
+		return x.IdleTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetHardTimeout() uint32 {
+	if x != nil {
+		return x.HardTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+func (x *OfpFlowStats) GetInstructions() []*OfpInstruction {
+	if x != nil {
+		return x.Instructions
+	}
+	return nil
+}
+
+// Body for ofp_multipart_request of type OFPMP_AGGREGATE.
+type OfpAggregateStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	OutPort       uint32                 `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+	OutGroup      uint32                 `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+	Cookie        uint64                 `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
+	CookieMask    uint64                 `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+	Match         *OfpMatch              `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"` // Fields to match. Variable size.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpAggregateStatsRequest) Reset() {
+	*x = OfpAggregateStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[48]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAggregateStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAggregateStatsRequest) ProtoMessage() {}
+
+func (x *OfpAggregateStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[48]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAggregateStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{48}
+}
+
+func (x *OfpAggregateStatsRequest) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetOutPort() uint32 {
+	if x != nil {
+		return x.OutPort
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetOutGroup() uint32 {
+	if x != nil {
+		return x.OutGroup
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetCookieMask() uint64 {
+	if x != nil {
+		return x.CookieMask
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_AGGREGATE request.
+type OfpAggregateStatsReply struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PacketCount   uint64                 `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets in flows.
+	ByteCount     uint64                 `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`       // Number of bytes in flows.
+	FlowCount     uint32                 `protobuf:"varint,3,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`       // Number of flows.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpAggregateStatsReply) Reset() {
+	*x = OfpAggregateStatsReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[49]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAggregateStatsReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAggregateStatsReply) ProtoMessage() {}
+
+func (x *OfpAggregateStatsReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[49]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAggregateStatsReply.ProtoReflect.Descriptor instead.
+func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{49}
+}
+
+func (x *OfpAggregateStatsReply) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsReply) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsReply) GetFlowCount() uint32 {
+	if x != nil {
+		return x.FlowCount
+	}
+	return 0
+}
+
+// Common header for all Table Feature Properties
+type OfpTableFeatureProperty struct {
+	state protoimpl.MessageState  `protogen:"open.v1"`
+	Type  OfpTableFeaturePropType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpTableFeaturePropType" json:"type,omitempty"` // One of OFPTFPT_*.
+	// 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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeatureProperty) Reset() {
+	*x = OfpTableFeatureProperty{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[50]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeatureProperty) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeatureProperty) ProtoMessage() {}
+
+func (x *OfpTableFeatureProperty) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[50]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeatureProperty.ProtoReflect.Descriptor instead.
+func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{50}
+}
+
+func (x *OfpTableFeatureProperty) GetType() OfpTableFeaturePropType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS
+}
+
+func (x *OfpTableFeatureProperty) GetValue() isOfpTableFeatureProperty_Value {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetInstructions() *OfpTableFeaturePropInstructions {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Instructions); ok {
+			return x.Instructions
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetNextTables() *OfpTableFeaturePropNextTables {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_NextTables); ok {
+			return x.NextTables
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetActions() *OfpTableFeaturePropActions {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Actions); ok {
+			return x.Actions
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetOxm() *OfpTableFeaturePropOxm {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Oxm); ok {
+			return x.Oxm
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetExperimenter() *OfpTableFeaturePropExperimenter {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpTableFeatureProperty_Value interface {
+	isOfpTableFeatureProperty_Value()
+}
+
+type OfpTableFeatureProperty_Instructions struct {
+	Instructions *OfpTableFeaturePropInstructions `protobuf:"bytes,2,opt,name=instructions,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_NextTables struct {
+	NextTables *OfpTableFeaturePropNextTables `protobuf:"bytes,3,opt,name=next_tables,json=nextTables,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Actions struct {
+	Actions *OfpTableFeaturePropActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Oxm struct {
+	Oxm *OfpTableFeaturePropOxm `protobuf:"bytes,5,opt,name=oxm,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Experimenter struct {
+	Experimenter *OfpTableFeaturePropExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,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() {}
+
+// Instructions property
+type OfpTableFeaturePropInstructions struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_INSTRUCTIONS,
+	// OFPTFPT_INSTRUCTIONS_MISS.
+	Instructions  []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions,proto3" json:"instructions,omitempty"` // List of instructions
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropInstructions) Reset() {
+	*x = OfpTableFeaturePropInstructions{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[51]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropInstructions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropInstructions) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropInstructions) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[51]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropInstructions.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{51}
+}
+
+func (x *OfpTableFeaturePropInstructions) GetInstructions() []*OfpInstruction {
+	if x != nil {
+		return x.Instructions
+	}
+	return nil
+}
+
+// Next Tables property
+type OfpTableFeaturePropNextTables struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_NEXT_TABLES,
+	// OFPTFPT_NEXT_TABLES_MISS.
+	NextTableIds  []uint32 `protobuf:"varint,1,rep,packed,name=next_table_ids,json=nextTableIds,proto3" json:"next_table_ids,omitempty"` // List of table ids.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropNextTables) Reset() {
+	*x = OfpTableFeaturePropNextTables{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[52]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropNextTables) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropNextTables) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropNextTables) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[52]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropNextTables.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{52}
+}
+
+func (x *OfpTableFeaturePropNextTables) GetNextTableIds() []uint32 {
+	if x != nil {
+		return x.NextTableIds
+	}
+	return nil
+}
+
+// Actions property
+type OfpTableFeaturePropActions struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_WRITE_ACTIONS,
+	// OFPTFPT_WRITE_ACTIONS_MISS,
+	// OFPTFPT_APPLY_ACTIONS,
+	// OFPTFPT_APPLY_ACTIONS_MISS.
+	Actions       []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"` // List of actions
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropActions) Reset() {
+	*x = OfpTableFeaturePropActions{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[53]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropActions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropActions) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropActions) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[53]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropActions.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{53}
+}
+
+func (x *OfpTableFeaturePropActions) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Match, Wildcard or Set-Field property
+type OfpTableFeaturePropOxm struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// TODO is this a uint32???
+	OxmIds        []uint32 `protobuf:"varint,3,rep,packed,name=oxm_ids,json=oxmIds,proto3" json:"oxm_ids,omitempty"` // Array of OXM headers
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropOxm) Reset() {
+	*x = OfpTableFeaturePropOxm{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[54]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropOxm) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropOxm) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropOxm) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[54]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropOxm.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{54}
+}
+
+func (x *OfpTableFeaturePropOxm) GetOxmIds() []uint32 {
+	if x != nil {
+		return x.OxmIds
+	}
+	return nil
+}
+
+// Experimenter table feature property
+type OfpTableFeaturePropExperimenter struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_EXPERIMENTER,
+	// OFPTFPT_EXPERIMENTER_MISS.
+	Experimenter     uint32   `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	ExpType          uint32   `protobuf:"varint,3,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	ExperimenterData []uint32 `protobuf:"varint,4,rep,packed,name=experimenter_data,json=experimenterData,proto3" json:"experimenter_data,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropExperimenter) Reset() {
+	*x = OfpTableFeaturePropExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[55]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropExperimenter) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[55]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{55}
+}
+
+func (x *OfpTableFeaturePropExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpTableFeaturePropExperimenter) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpTableFeaturePropExperimenter) GetExperimenterData() []uint32 {
+	if x != nil {
+		return x.ExperimenterData
+	}
+	return nil
+}
+
+// Body for ofp_multipart_request of type OFPMP_TABLE_FEATURES./
+// Body of reply to OFPMP_TABLE_FEATURES request.
+type OfpTableFeatures struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	MetadataMatch uint64                 `protobuf:"varint,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"` // Bits of metadata table can match.
+	MetadataWrite uint64                 `protobuf:"varint,4,opt,name=metadata_write,json=metadataWrite,proto3" json:"metadata_write,omitempty"` // Bits of metadata table can write.
+	Config        uint32                 `protobuf:"varint,5,opt,name=config,proto3" json:"config,omitempty"`                                    // Bitmap of OFPTC_* values
+	MaxEntries    uint32                 `protobuf:"varint,6,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"`          // Max number of entries supported.
+	// Table Feature Property list
+	Properties    []*OfpTableFeatureProperty `protobuf:"bytes,7,rep,name=properties,proto3" json:"properties,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeatures) Reset() {
+	*x = OfpTableFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[56]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeatures) ProtoMessage() {}
+
+func (x *OfpTableFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[56]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeatures.ProtoReflect.Descriptor instead.
+func (*OfpTableFeatures) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{56}
+}
+
+func (x *OfpTableFeatures) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+func (x *OfpTableFeatures) GetMetadataMatch() uint64 {
+	if x != nil {
+		return x.MetadataMatch
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetMetadataWrite() uint64 {
+	if x != nil {
+		return x.MetadataWrite
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetMaxEntries() uint32 {
+	if x != nil {
+		return x.MaxEntries
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetProperties() []*OfpTableFeatureProperty {
+	if x != nil {
+		return x.Properties
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_TABLE request.
+type OfpTableStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	ActiveCount   uint32                 `protobuf:"varint,2,opt,name=active_count,json=activeCount,proto3" json:"active_count,omitempty"`    // Number of active entries.
+	LookupCount   uint64                 `protobuf:"varint,3,opt,name=lookup_count,json=lookupCount,proto3" json:"lookup_count,omitempty"`    // Number of packets looked up in table.
+	MatchedCount  uint64                 `protobuf:"varint,4,opt,name=matched_count,json=matchedCount,proto3" json:"matched_count,omitempty"` // Number of packets that hit table.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableStats) Reset() {
+	*x = OfpTableStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[57]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableStats) ProtoMessage() {}
+
+func (x *OfpTableStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[57]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableStats.ProtoReflect.Descriptor instead.
+func (*OfpTableStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{57}
+}
+
+func (x *OfpTableStats) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpTableStats) GetActiveCount() uint32 {
+	if x != nil {
+		return x.ActiveCount
+	}
+	return 0
+}
+
+func (x *OfpTableStats) GetLookupCount() uint64 {
+	if x != nil {
+		return x.LookupCount
+	}
+	return 0
+}
+
+func (x *OfpTableStats) GetMatchedCount() uint64 {
+	if x != nil {
+		return x.MatchedCount
+	}
+	return 0
+}
+
+// Body for ofp_multipart_request of type OFPMP_PORT.
+type OfpPortStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPortStatsRequest) Reset() {
+	*x = OfpPortStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[58]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortStatsRequest) ProtoMessage() {}
+
+func (x *OfpPortStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[58]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{58}
+}
+
+func (x *OfpPortStatsRequest) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+// Body of reply to OFPMP_PORT request. If a counter is unsupported, set
+// the field to all ones.
+type OfpPortStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	RxPackets     uint64                 `protobuf:"varint,2,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"` // Number of received packets.
+	TxPackets     uint64                 `protobuf:"varint,3,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"` // Number of transmitted packets.
+	RxBytes       uint64                 `protobuf:"varint,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`       // Number of received bytes.
+	TxBytes       uint64                 `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`       // Number of transmitted bytes.
+	RxDropped     uint64                 `protobuf:"varint,6,opt,name=rx_dropped,json=rxDropped,proto3" json:"rx_dropped,omitempty"` // Number of packets dropped by RX.
+	TxDropped     uint64                 `protobuf:"varint,7,opt,name=tx_dropped,json=txDropped,proto3" json:"tx_dropped,omitempty"` // Number of packets dropped by TX.
+	RxErrors      uint64                 `protobuf:"varint,8,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"`
+	TxErrors      uint64                 `protobuf:"varint,9,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
+	RxFrameErr    uint64                 `protobuf:"varint,10,opt,name=rx_frame_err,json=rxFrameErr,proto3" json:"rx_frame_err,omitempty"`  // Number of frame alignment errors.
+	RxOverErr     uint64                 `protobuf:"varint,11,opt,name=rx_over_err,json=rxOverErr,proto3" json:"rx_over_err,omitempty"`     // Number of packets with RX overrun.
+	RxCrcErr      uint64                 `protobuf:"varint,12,opt,name=rx_crc_err,json=rxCrcErr,proto3" json:"rx_crc_err,omitempty"`        // Number of CRC errors.
+	Collisions    uint64                 `protobuf:"varint,13,opt,name=collisions,proto3" json:"collisions,omitempty"`                      // Number of collisions.
+	DurationSec   uint32                 `protobuf:"varint,14,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time port has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,15,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPortStats) Reset() {
+	*x = OfpPortStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[59]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortStats) ProtoMessage() {}
+
+func (x *OfpPortStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[59]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortStats.ProtoReflect.Descriptor instead.
+func (*OfpPortStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{59}
+}
+
+func (x *OfpPortStats) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxDropped() uint64 {
+	if x != nil {
+		return x.RxDropped
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxDropped() uint64 {
+	if x != nil {
+		return x.TxDropped
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxErrors() uint64 {
+	if x != nil {
+		return x.RxErrors
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxErrors() uint64 {
+	if x != nil {
+		return x.TxErrors
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxFrameErr() uint64 {
+	if x != nil {
+		return x.RxFrameErr
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxOverErr() uint64 {
+	if x != nil {
+		return x.RxOverErr
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxCrcErr() uint64 {
+	if x != nil {
+		return x.RxCrcErr
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetCollisions() uint64 {
+	if x != nil {
+		return x.Collisions
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+// Body of OFPMP_GROUP request.
+type OfpGroupStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupId       uint32                 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // All groups if OFPG_ALL.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupStatsRequest) Reset() {
+	*x = OfpGroupStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[60]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupStatsRequest) ProtoMessage() {}
+
+func (x *OfpGroupStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[60]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{60}
+}
+
+func (x *OfpGroupStatsRequest) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+// Used in group stats replies.
+type OfpBucketCounter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PacketCount   uint64                 `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets processed by bucket.
+	ByteCount     uint64                 `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`       // Number of bytes processed by bucket.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpBucketCounter) Reset() {
+	*x = OfpBucketCounter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[61]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpBucketCounter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpBucketCounter) ProtoMessage() {}
+
+func (x *OfpBucketCounter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[61]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpBucketCounter.ProtoReflect.Descriptor instead.
+func (*OfpBucketCounter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{61}
+}
+
+func (x *OfpBucketCounter) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpBucketCounter) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+// Body of reply to OFPMP_GROUP request.
+type OfpGroupStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupId       uint32                 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // Group identifier.
+	RefCount      uint32                 `protobuf:"varint,2,opt,name=ref_count,json=refCount,proto3" json:"ref_count,omitempty"`
+	PacketCount   uint64                 `protobuf:"varint,3,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets processed by group.
+	ByteCount     uint64                 `protobuf:"varint,4,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`       // Number of bytes processed by group.
+	DurationSec   uint32                 `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time group has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	BucketStats   []*OfpBucketCounter    `protobuf:"bytes,7,rep,name=bucket_stats,json=bucketStats,proto3" json:"bucket_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupStats) Reset() {
+	*x = OfpGroupStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[62]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupStats) ProtoMessage() {}
+
+func (x *OfpGroupStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[62]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupStats.ProtoReflect.Descriptor instead.
+func (*OfpGroupStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{62}
+}
+
+func (x *OfpGroupStats) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetRefCount() uint32 {
+	if x != nil {
+		return x.RefCount
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetBucketStats() []*OfpBucketCounter {
+	if x != nil {
+		return x.BucketStats
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_GROUP_DESC request.
+type OfpGroupDesc struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          OfpGroupType           `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"` // One of OFPGT_*.
+	GroupId       uint32                 `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`          // Group identifier.
+	Buckets       []*OfpBucket           `protobuf:"bytes,3,rep,name=buckets,proto3" json:"buckets,omitempty"`                          // List of buckets - 0 or more.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupDesc) Reset() {
+	*x = OfpGroupDesc{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[63]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupDesc) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupDesc) ProtoMessage() {}
+
+func (x *OfpGroupDesc) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[63]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupDesc.ProtoReflect.Descriptor instead.
+func (*OfpGroupDesc) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{63}
+}
+
+func (x *OfpGroupDesc) GetType() OfpGroupType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpGroupType_OFPGT_ALL
+}
+
+func (x *OfpGroupDesc) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *OfpGroupDesc) GetBuckets() []*OfpBucket {
+	if x != nil {
+		return x.Buckets
+	}
+	return nil
+}
+
+type OfpGroupEntry struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Desc          *OfpGroupDesc          `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
+	Stats         *OfpGroupStats         `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupEntry) Reset() {
+	*x = OfpGroupEntry{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[64]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupEntry) ProtoMessage() {}
+
+func (x *OfpGroupEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[64]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupEntry.ProtoReflect.Descriptor instead.
+func (*OfpGroupEntry) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{64}
+}
+
+func (x *OfpGroupEntry) GetDesc() *OfpGroupDesc {
+	if x != nil {
+		return x.Desc
+	}
+	return nil
+}
+
+func (x *OfpGroupEntry) GetStats() *OfpGroupStats {
+	if x != nil {
+		return x.Stats
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_GROUP_FEATURES request. Group features.
+type OfpGroupFeatures struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Types         uint32                 `protobuf:"varint,1,opt,name=types,proto3" json:"types,omitempty"`                                 // Bitmap of (1 << OFPGT_*) values supported.
+	Capabilities  uint32                 `protobuf:"varint,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"`                   // Bitmap of OFPGFC_* capability supported.
+	MaxGroups     []uint32               `protobuf:"varint,3,rep,packed,name=max_groups,json=maxGroups,proto3" json:"max_groups,omitempty"` // Maximum number of groups for each type.
+	Actions       []uint32               `protobuf:"varint,4,rep,packed,name=actions,proto3" json:"actions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupFeatures) Reset() {
+	*x = OfpGroupFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[65]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupFeatures) ProtoMessage() {}
+
+func (x *OfpGroupFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[65]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupFeatures.ProtoReflect.Descriptor instead.
+func (*OfpGroupFeatures) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{65}
+}
+
+func (x *OfpGroupFeatures) GetTypes() uint32 {
+	if x != nil {
+		return x.Types
+	}
+	return 0
+}
+
+func (x *OfpGroupFeatures) GetCapabilities() uint32 {
+	if x != nil {
+		return x.Capabilities
+	}
+	return 0
+}
+
+func (x *OfpGroupFeatures) GetMaxGroups() []uint32 {
+	if x != nil {
+		return x.MaxGroups
+	}
+	return nil
+}
+
+func (x *OfpGroupFeatures) GetActions() []uint32 {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Body of OFPMP_METER and OFPMP_METER_CONFIG requests.
+type OfpMeterMultipartRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterId       uint32                 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"` // Meter instance, or OFPM_ALL.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterMultipartRequest) Reset() {
+	*x = OfpMeterMultipartRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[66]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterMultipartRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterMultipartRequest) ProtoMessage() {}
+
+func (x *OfpMeterMultipartRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[66]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterMultipartRequest.ProtoReflect.Descriptor instead.
+func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{66}
+}
+
+func (x *OfpMeterMultipartRequest) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+// Statistics for each meter band
+type OfpMeterBandStats struct {
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	PacketBandCount uint64                 `protobuf:"varint,1,opt,name=packet_band_count,json=packetBandCount,proto3" json:"packet_band_count,omitempty"` // Number of packets in band.
+	ByteBandCount   uint64                 `protobuf:"varint,2,opt,name=byte_band_count,json=byteBandCount,proto3" json:"byte_band_count,omitempty"`       // Number of bytes in band.
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandStats) Reset() {
+	*x = OfpMeterBandStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[67]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandStats) ProtoMessage() {}
+
+func (x *OfpMeterBandStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[67]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandStats.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{67}
+}
+
+func (x *OfpMeterBandStats) GetPacketBandCount() uint64 {
+	if x != nil {
+		return x.PacketBandCount
+	}
+	return 0
+}
+
+func (x *OfpMeterBandStats) GetByteBandCount() uint64 {
+	if x != nil {
+		return x.ByteBandCount
+	}
+	return 0
+}
+
+// Body of reply to OFPMP_METER request. Meter statistics.
+type OfpMeterStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterId       uint32                 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`                     // Meter instance.
+	FlowCount     uint32                 `protobuf:"varint,2,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`               // Number of flows bound to meter.
+	PacketInCount uint64                 `protobuf:"varint,3,opt,name=packet_in_count,json=packetInCount,proto3" json:"packet_in_count,omitempty"` // Number of packets in input.
+	ByteInCount   uint64                 `protobuf:"varint,4,opt,name=byte_in_count,json=byteInCount,proto3" json:"byte_in_count,omitempty"`       // Number of bytes in input.
+	DurationSec   uint32                 `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`         // Time meter has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	BandStats     []*OfpMeterBandStats   `protobuf:"bytes,7,rep,name=band_stats,json=bandStats,proto3" json:"band_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterStats) Reset() {
+	*x = OfpMeterStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[68]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterStats) ProtoMessage() {}
+
+func (x *OfpMeterStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[68]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterStats.ProtoReflect.Descriptor instead.
+func (*OfpMeterStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{68}
+}
+
+func (x *OfpMeterStats) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetFlowCount() uint32 {
+	if x != nil {
+		return x.FlowCount
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetPacketInCount() uint64 {
+	if x != nil {
+		return x.PacketInCount
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetByteInCount() uint64 {
+	if x != nil {
+		return x.ByteInCount
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetBandStats() []*OfpMeterBandStats {
+	if x != nil {
+		return x.BandStats
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_METER_CONFIG request. Meter configuration.
+type OfpMeterConfig struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Flags         uint32                 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`                    // All OFPMF_* that apply.
+	MeterId       uint32                 `protobuf:"varint,2,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"` // Meter instance.
+	Bands         []*OfpMeterBandHeader  `protobuf:"bytes,3,rep,name=bands,proto3" json:"bands,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterConfig) Reset() {
+	*x = OfpMeterConfig{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[69]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterConfig) ProtoMessage() {}
+
+func (x *OfpMeterConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[69]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterConfig.ProtoReflect.Descriptor instead.
+func (*OfpMeterConfig) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{69}
+}
+
+func (x *OfpMeterConfig) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMeterConfig) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+func (x *OfpMeterConfig) GetBands() []*OfpMeterBandHeader {
+	if x != nil {
+		return x.Bands
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_METER_FEATURES request. Meter features.
+type OfpMeterFeatures struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MaxMeter      uint32                 `protobuf:"varint,1,opt,name=max_meter,json=maxMeter,proto3" json:"max_meter,omitempty"`    // Maximum number of meters.
+	BandTypes     uint32                 `protobuf:"varint,2,opt,name=band_types,json=bandTypes,proto3" json:"band_types,omitempty"` // Bitmaps of (1 << OFPMBT_*) values supported.
+	Capabilities  uint32                 `protobuf:"varint,3,opt,name=capabilities,proto3" json:"capabilities,omitempty"`            // Bitmaps of "ofp_meter_flags".
+	MaxBands      uint32                 `protobuf:"varint,4,opt,name=max_bands,json=maxBands,proto3" json:"max_bands,omitempty"`    // Maximum bands per meters
+	MaxColor      uint32                 `protobuf:"varint,5,opt,name=max_color,json=maxColor,proto3" json:"max_color,omitempty"`    // Maximum color value
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterFeatures) Reset() {
+	*x = OfpMeterFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[70]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterFeatures) ProtoMessage() {}
+
+func (x *OfpMeterFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[70]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterFeatures.ProtoReflect.Descriptor instead.
+func (*OfpMeterFeatures) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{70}
+}
+
+func (x *OfpMeterFeatures) GetMaxMeter() uint32 {
+	if x != nil {
+		return x.MaxMeter
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetBandTypes() uint32 {
+	if x != nil {
+		return x.BandTypes
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetCapabilities() uint32 {
+	if x != nil {
+		return x.Capabilities
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetMaxBands() uint32 {
+	if x != nil {
+		return x.MaxBands
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetMaxColor() uint32 {
+	if x != nil {
+		return x.MaxColor
+	}
+	return 0
+}
+
+type OfpMeterEntry struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Config        *OfpMeterConfig        `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
+	Stats         *OfpMeterStats         `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterEntry) Reset() {
+	*x = OfpMeterEntry{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[71]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterEntry) ProtoMessage() {}
+
+func (x *OfpMeterEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[71]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterEntry.ProtoReflect.Descriptor instead.
+func (*OfpMeterEntry) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{71}
+}
+
+func (x *OfpMeterEntry) GetConfig() *OfpMeterConfig {
+	if x != nil {
+		return x.Config
+	}
+	return nil
+}
+
+func (x *OfpMeterEntry) GetStats() *OfpMeterStats {
+	if x != nil {
+		return x.Stats
+	}
+	return nil
+}
+
+// Body for ofp_multipart_request/reply of type OFPMP_EXPERIMENTER.
+type OfpExperimenterMultipartHeader struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter  uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	ExpType       uint32                 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	Data          []byte                 `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`                       // Experimenter-defined arbitrary additional data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpExperimenterMultipartHeader) Reset() {
+	*x = OfpExperimenterMultipartHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[72]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpExperimenterMultipartHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpExperimenterMultipartHeader) ProtoMessage() {}
+
+func (x *OfpExperimenterMultipartHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[72]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpExperimenterMultipartHeader.ProtoReflect.Descriptor instead.
+func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{72}
+}
+
+func (x *OfpExperimenterMultipartHeader) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpExperimenterMultipartHeader) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpExperimenterMultipartHeader) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Experimenter extension.
+type OfpExperimenterHeader struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;  /* Type OFPT_EXPERIMENTER. */
+	Experimenter  uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	ExpType       uint32 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	Data          []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`                       // Experimenter-defined arbitrary additional data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpExperimenterHeader) Reset() {
+	*x = OfpExperimenterHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[73]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpExperimenterHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpExperimenterHeader) ProtoMessage() {}
+
+func (x *OfpExperimenterHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[73]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpExperimenterHeader.ProtoReflect.Descriptor instead.
+func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{73}
+}
+
+func (x *OfpExperimenterHeader) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpExperimenterHeader) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpExperimenterHeader) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Common description for a queue.
+type OfpQueuePropHeader struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Property      uint32                 `protobuf:"varint,1,opt,name=property,proto3" json:"property,omitempty"` // One of OFPQT_.
+	Len           uint32                 `protobuf:"varint,2,opt,name=len,proto3" json:"len,omitempty"`           // Length of property, including this header.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropHeader) Reset() {
+	*x = OfpQueuePropHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[74]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropHeader) ProtoMessage() {}
+
+func (x *OfpQueuePropHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[74]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropHeader.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{74}
+}
+
+func (x *OfpQueuePropHeader) GetProperty() uint32 {
+	if x != nil {
+		return x.Property
+	}
+	return 0
+}
+
+func (x *OfpQueuePropHeader) GetLen() uint32 {
+	if x != nil {
+		return x.Len
+	}
+	return 0
+}
+
+// Min-Rate queue property description.
+type OfpQueuePropMinRate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PropHeader    *OfpQueuePropHeader    `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"` // prop: OFPQT_MIN, len: 16.
+	Rate          uint32                 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`                              // In 1/10 of a percent = 0;>1000 -> disabled.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropMinRate) Reset() {
+	*x = OfpQueuePropMinRate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[75]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropMinRate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropMinRate) ProtoMessage() {}
+
+func (x *OfpQueuePropMinRate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[75]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropMinRate.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{75}
+}
+
+func (x *OfpQueuePropMinRate) GetPropHeader() *OfpQueuePropHeader {
+	if x != nil {
+		return x.PropHeader
+	}
+	return nil
+}
+
+func (x *OfpQueuePropMinRate) GetRate() uint32 {
+	if x != nil {
+		return x.Rate
+	}
+	return 0
+}
+
+// Max-Rate queue property description.
+type OfpQueuePropMaxRate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PropHeader    *OfpQueuePropHeader    `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"` // prop: OFPQT_MAX, len: 16.
+	Rate          uint32                 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`                              // In 1/10 of a percent = 0;>1000 -> disabled.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropMaxRate) Reset() {
+	*x = OfpQueuePropMaxRate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[76]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropMaxRate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropMaxRate) ProtoMessage() {}
+
+func (x *OfpQueuePropMaxRate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[76]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropMaxRate.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{76}
+}
+
+func (x *OfpQueuePropMaxRate) GetPropHeader() *OfpQueuePropHeader {
+	if x != nil {
+		return x.PropHeader
+	}
+	return nil
+}
+
+func (x *OfpQueuePropMaxRate) GetRate() uint32 {
+	if x != nil {
+		return x.Rate
+	}
+	return 0
+}
+
+// Experimenter queue property description.
+type OfpQueuePropExperimenter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PropHeader    *OfpQueuePropHeader    `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"` // prop: OFPQT_EXPERIMENTER
+	Experimenter  uint32                 `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	Data          []byte                 `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` // Experimenter defined data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropExperimenter) Reset() {
+	*x = OfpQueuePropExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[77]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropExperimenter) ProtoMessage() {}
+
+func (x *OfpQueuePropExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[77]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{77}
+}
+
+func (x *OfpQueuePropExperimenter) GetPropHeader() *OfpQueuePropHeader {
+	if x != nil {
+		return x.PropHeader
+	}
+	return nil
+}
+
+func (x *OfpQueuePropExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpQueuePropExperimenter) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Full description for a queue.
+type OfpPacketQueue struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	QueueId       uint32                 `protobuf:"varint,1,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"` // id for the specific queue.
+	Port          uint32                 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`                      // Port this queue is attached to.
+	Properties    []*OfpQueuePropHeader  `protobuf:"bytes,4,rep,name=properties,proto3" json:"properties,omitempty"`           // List of properties.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPacketQueue) Reset() {
+	*x = OfpPacketQueue{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[78]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPacketQueue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPacketQueue) ProtoMessage() {}
+
+func (x *OfpPacketQueue) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[78]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPacketQueue.ProtoReflect.Descriptor instead.
+func (*OfpPacketQueue) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{78}
+}
+
+func (x *OfpPacketQueue) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+func (x *OfpPacketQueue) GetPort() uint32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+func (x *OfpPacketQueue) GetProperties() []*OfpQueuePropHeader {
+	if x != nil {
+		return x.Properties
+	}
+	return nil
+}
+
+// Query for port queue configuration.
+type OfpQueueGetConfigRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Port          uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueGetConfigRequest) Reset() {
+	*x = OfpQueueGetConfigRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[79]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueGetConfigRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueGetConfigRequest) ProtoMessage() {}
+
+func (x *OfpQueueGetConfigRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[79]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueGetConfigRequest.ProtoReflect.Descriptor instead.
+func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{79}
+}
+
+func (x *OfpQueueGetConfigRequest) GetPort() uint32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+// Queue configuration for a given port.
+type OfpQueueGetConfigReply struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Port          uint32            `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+	Queues        []*OfpPacketQueue `protobuf:"bytes,2,rep,name=queues,proto3" json:"queues,omitempty"` // List of configured queues.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueGetConfigReply) Reset() {
+	*x = OfpQueueGetConfigReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[80]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueGetConfigReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueGetConfigReply) ProtoMessage() {}
+
+func (x *OfpQueueGetConfigReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[80]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueGetConfigReply.ProtoReflect.Descriptor instead.
+func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{80}
+}
+
+func (x *OfpQueueGetConfigReply) GetPort() uint32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+func (x *OfpQueueGetConfigReply) GetQueues() []*OfpPacketQueue {
+	if x != nil {
+		return x.Queues
+	}
+	return nil
+}
+
+// OFPAT_SET_QUEUE action struct: send packets to given queue on port.
+type OfpActionSetQueue struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`                      // OFPAT_SET_QUEUE.
+	QueueId       uint32                 `protobuf:"varint,3,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"` // Queue id for the packets.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionSetQueue) Reset() {
+	*x = OfpActionSetQueue{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[81]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionSetQueue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionSetQueue) ProtoMessage() {}
+
+func (x *OfpActionSetQueue) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[81]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionSetQueue.ProtoReflect.Descriptor instead.
+func (*OfpActionSetQueue) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{81}
+}
+
+func (x *OfpActionSetQueue) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpActionSetQueue) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+type OfpQueueStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`    // All ports if OFPP_ANY.
+	QueueId       uint32                 `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"` // All queues if OFPQ_ALL.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueStatsRequest) Reset() {
+	*x = OfpQueueStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[82]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueStatsRequest) ProtoMessage() {}
+
+func (x *OfpQueueStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[82]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{82}
+}
+
+func (x *OfpQueueStatsRequest) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OfpQueueStatsRequest) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+type OfpQueueStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	QueueId       uint32                 `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`             // Queue i.d
+	TxBytes       uint64                 `protobuf:"varint,3,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`             // Number of transmitted bytes.
+	TxPackets     uint64                 `protobuf:"varint,4,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`       // Number of transmitted packets.
+	TxErrors      uint64                 `protobuf:"varint,5,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`          // Number of packets dropped due to overrun.
+	DurationSec   uint32                 `protobuf:"varint,6,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time queue has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,7,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueStats) Reset() {
+	*x = OfpQueueStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[83]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueStats) ProtoMessage() {}
+
+func (x *OfpQueueStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[83]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueStats.ProtoReflect.Descriptor instead.
+func (*OfpQueueStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{83}
+}
+
+func (x *OfpQueueStats) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetTxErrors() uint64 {
+	if x != nil {
+		return x.TxErrors
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+// Role request and reply message.
+type OfpRoleRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;        /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
+	Role          OfpControllerRole `protobuf:"varint,1,opt,name=role,proto3,enum=openflow_13.OfpControllerRole" json:"role,omitempty"`  // One of OFPCR_ROLE_*.
+	GenerationId  uint64            `protobuf:"varint,2,opt,name=generation_id,json=generationId,proto3" json:"generation_id,omitempty"` // Master Election Generation Id
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpRoleRequest) Reset() {
+	*x = OfpRoleRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[84]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpRoleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpRoleRequest) ProtoMessage() {}
+
+func (x *OfpRoleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[84]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpRoleRequest.ProtoReflect.Descriptor instead.
+func (*OfpRoleRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{84}
+}
+
+func (x *OfpRoleRequest) GetRole() OfpControllerRole {
+	if x != nil {
+		return x.Role
+	}
+	return OfpControllerRole_OFPCR_ROLE_NOCHANGE
+}
+
+func (x *OfpRoleRequest) GetGenerationId() uint64 {
+	if x != nil {
+		return x.GenerationId
+	}
+	return 0
+}
+
+// Asynchronous message configuration.
+type OfpAsyncConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;    /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
+	PacketInMask    []uint32 `protobuf:"varint,1,rep,packed,name=packet_in_mask,json=packetInMask,proto3" json:"packet_in_mask,omitempty"`          // Bitmasks of OFPR_* values.
+	PortStatusMask  []uint32 `protobuf:"varint,2,rep,packed,name=port_status_mask,json=portStatusMask,proto3" json:"port_status_mask,omitempty"`    // Bitmasks of OFPPR_* values.
+	FlowRemovedMask []uint32 `protobuf:"varint,3,rep,packed,name=flow_removed_mask,json=flowRemovedMask,proto3" json:"flow_removed_mask,omitempty"` // Bitmasks of OFPRR_* values.
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *OfpAsyncConfig) Reset() {
+	*x = OfpAsyncConfig{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[85]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAsyncConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAsyncConfig) ProtoMessage() {}
+
+func (x *OfpAsyncConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[85]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAsyncConfig.ProtoReflect.Descriptor instead.
+func (*OfpAsyncConfig) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{85}
+}
+
+func (x *OfpAsyncConfig) GetPacketInMask() []uint32 {
+	if x != nil {
+		return x.PacketInMask
+	}
+	return nil
+}
+
+func (x *OfpAsyncConfig) GetPortStatusMask() []uint32 {
+	if x != nil {
+		return x.PortStatusMask
+	}
+	return nil
+}
+
+func (x *OfpAsyncConfig) GetFlowRemovedMask() []uint32 {
+	if x != nil {
+		return x.FlowRemovedMask
+	}
+	return nil
+}
+
+type MeterModUpdate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Device.id or LogicalDevice.id
+	MeterMod      *OfpMeterMod           `protobuf:"bytes,2,opt,name=meter_mod,json=meterMod,proto3" json:"meter_mod,omitempty"`
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"` //Transaction id associated with this request.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *MeterModUpdate) Reset() {
+	*x = MeterModUpdate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[86]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MeterModUpdate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MeterModUpdate) ProtoMessage() {}
+
+func (x *MeterModUpdate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[86]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MeterModUpdate.ProtoReflect.Descriptor instead.
+func (*MeterModUpdate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{86}
+}
+
+func (x *MeterModUpdate) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *MeterModUpdate) GetMeterMod() *OfpMeterMod {
+	if x != nil {
+		return x.MeterMod
+	}
+	return nil
+}
+
+func (x *MeterModUpdate) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
+	}
+	return 0
+}
+
+type MeterStatsReply struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterStats    []*OfpMeterStats       `protobuf:"bytes,1,rep,name=meter_stats,json=meterStats,proto3" json:"meter_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *MeterStatsReply) Reset() {
+	*x = MeterStatsReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[87]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MeterStatsReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MeterStatsReply) ProtoMessage() {}
+
+func (x *MeterStatsReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[87]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MeterStatsReply.ProtoReflect.Descriptor instead.
+func (*MeterStatsReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{87}
+}
+
+func (x *MeterStatsReply) GetMeterStats() []*OfpMeterStats {
+	if x != nil {
+		return x.MeterStats
+	}
+	return nil
+}
+
+type FlowTableUpdate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Device.id or LogicalDevice.id
+	FlowMod       *OfpFlowMod            `protobuf:"bytes,2,opt,name=flow_mod,json=flowMod,proto3" json:"flow_mod,omitempty"`
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"` //Transaction id associated with this request.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowTableUpdate) Reset() {
+	*x = FlowTableUpdate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[88]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowTableUpdate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowTableUpdate) ProtoMessage() {}
+
+func (x *FlowTableUpdate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[88]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowTableUpdate.ProtoReflect.Descriptor instead.
+func (*FlowTableUpdate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{88}
+}
+
+func (x *FlowTableUpdate) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *FlowTableUpdate) GetFlowMod() *OfpFlowMod {
+	if x != nil {
+		return x.FlowMod
+	}
+	return nil
+}
+
+func (x *FlowTableUpdate) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
+	}
+	return 0
+}
+
+type FlowGroupTableUpdate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Device.id or LogicalDevice.id
+	GroupMod      *OfpGroupMod           `protobuf:"bytes,2,opt,name=group_mod,json=groupMod,proto3" json:"group_mod,omitempty"`
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"` //Transaction id associated with this request.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowGroupTableUpdate) Reset() {
+	*x = FlowGroupTableUpdate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[89]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowGroupTableUpdate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowGroupTableUpdate) ProtoMessage() {}
+
+func (x *FlowGroupTableUpdate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[89]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowGroupTableUpdate.ProtoReflect.Descriptor instead.
+func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{89}
+}
+
+func (x *FlowGroupTableUpdate) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *FlowGroupTableUpdate) GetGroupMod() *OfpGroupMod {
+	if x != nil {
+		return x.GroupMod
+	}
+	return nil
+}
+
+func (x *FlowGroupTableUpdate) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
+	}
+	return 0
+}
+
+type Flows struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OfpFlowStats        `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Flows) Reset() {
+	*x = Flows{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[90]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Flows) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Flows) ProtoMessage() {}
+
+func (x *Flows) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[90]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Flows.ProtoReflect.Descriptor instead.
+func (*Flows) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{90}
+}
+
+func (x *Flows) GetItems() []*OfpFlowStats {
+	if x != nil {
+		return x.Items
+	}
+	return nil
+}
+
+type Meters struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OfpMeterEntry       `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Meters) Reset() {
+	*x = Meters{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[91]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Meters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Meters) ProtoMessage() {}
+
+func (x *Meters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[91]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Meters.ProtoReflect.Descriptor instead.
+func (*Meters) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{91}
+}
+
+func (x *Meters) GetItems() []*OfpMeterEntry {
+	if x != nil {
+		return x.Items
+	}
+	return nil
+}
+
+type FlowGroups struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OfpGroupEntry       `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowGroups) Reset() {
+	*x = FlowGroups{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[92]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowGroups) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowGroups) ProtoMessage() {}
+
+func (x *FlowGroups) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[92]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowGroups.ProtoReflect.Descriptor instead.
+func (*FlowGroups) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{92}
+}
+
+func (x *FlowGroups) GetItems() []*OfpGroupEntry {
+	if x != nil {
+		return x.Items
+	}
+	return nil
+}
+
+type FlowChanges struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ToAdd         *Flows                 `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
+	ToRemove      *Flows                 `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowChanges) Reset() {
+	*x = FlowChanges{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[93]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowChanges) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowChanges) ProtoMessage() {}
+
+func (x *FlowChanges) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[93]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowChanges.ProtoReflect.Descriptor instead.
+func (*FlowChanges) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{93}
+}
+
+func (x *FlowChanges) GetToAdd() *Flows {
+	if x != nil {
+		return x.ToAdd
+	}
+	return nil
+}
+
+func (x *FlowChanges) GetToRemove() *Flows {
+	if x != nil {
+		return x.ToRemove
+	}
+	return nil
+}
+
+type FlowGroupChanges struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ToAdd         *FlowGroups            `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
+	ToRemove      *FlowGroups            `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
+	ToUpdate      *FlowGroups            `protobuf:"bytes,3,opt,name=to_update,json=toUpdate,proto3" json:"to_update,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowGroupChanges) Reset() {
+	*x = FlowGroupChanges{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[94]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowGroupChanges) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowGroupChanges) ProtoMessage() {}
+
+func (x *FlowGroupChanges) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[94]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowGroupChanges.ProtoReflect.Descriptor instead.
+func (*FlowGroupChanges) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{94}
+}
+
+func (x *FlowGroupChanges) GetToAdd() *FlowGroups {
+	if x != nil {
+		return x.ToAdd
+	}
+	return nil
+}
+
+func (x *FlowGroupChanges) GetToRemove() *FlowGroups {
+	if x != nil {
+		return x.ToRemove
+	}
+	return nil
+}
+
+func (x *FlowGroupChanges) GetToUpdate() *FlowGroups {
+	if x != nil {
+		return x.ToUpdate
+	}
+	return nil
+}
+
+type PacketIn struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // LogicalDevice.id
+	PacketIn      *OfpPacketIn           `protobuf:"bytes,2,opt,name=packet_in,json=packetIn,proto3" json:"packet_in,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *PacketIn) Reset() {
+	*x = PacketIn{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[95]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PacketIn) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PacketIn) ProtoMessage() {}
+
+func (x *PacketIn) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[95]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PacketIn.ProtoReflect.Descriptor instead.
+func (*PacketIn) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{95}
+}
+
+func (x *PacketIn) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *PacketIn) GetPacketIn() *OfpPacketIn {
+	if x != nil {
+		return x.PacketIn
+	}
+	return nil
+}
+
+type PacketOut struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // LogicalDevice.id
+	PacketOut     *OfpPacketOut          `protobuf:"bytes,2,opt,name=packet_out,json=packetOut,proto3" json:"packet_out,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *PacketOut) Reset() {
+	*x = PacketOut{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[96]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PacketOut) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PacketOut) ProtoMessage() {}
+
+func (x *PacketOut) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[96]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PacketOut.ProtoReflect.Descriptor instead.
+func (*PacketOut) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{96}
+}
+
+func (x *PacketOut) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *PacketOut) GetPacketOut() *OfpPacketOut {
+	if x != nil {
+		return x.PacketOut
+	}
+	return nil
+}
+
+type ChangeEvent struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Id    string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // LogicalDevice.id
+	// Types that are valid to be assigned to Event:
+	//
+	//	*ChangeEvent_PortStatus
+	//	*ChangeEvent_Error
+	//	*ChangeEvent_DeviceStatus
+	Event         isChangeEvent_Event `protobuf_oneof:"event"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ChangeEvent) Reset() {
+	*x = ChangeEvent{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[97]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ChangeEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangeEvent) ProtoMessage() {}
+
+func (x *ChangeEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[97]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangeEvent.ProtoReflect.Descriptor instead.
+func (*ChangeEvent) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{97}
+}
+
+func (x *ChangeEvent) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *ChangeEvent) GetEvent() isChangeEvent_Event {
+	if x != nil {
+		return x.Event
+	}
+	return nil
+}
+
+func (x *ChangeEvent) GetPortStatus() *OfpPortStatus {
+	if x != nil {
+		if x, ok := x.Event.(*ChangeEvent_PortStatus); ok {
+			return x.PortStatus
+		}
+	}
+	return nil
+}
+
+func (x *ChangeEvent) GetError() *OfpErrorMsg {
+	if x != nil {
+		if x, ok := x.Event.(*ChangeEvent_Error); ok {
+			return x.Error
+		}
+	}
+	return nil
+}
+
+func (x *ChangeEvent) GetDeviceStatus() *OfpDeviceStatus {
+	if x != nil {
+		if x, ok := x.Event.(*ChangeEvent_DeviceStatus); ok {
+			return x.DeviceStatus
+		}
+	}
+	return nil
+}
+
+type isChangeEvent_Event interface {
+	isChangeEvent_Event()
+}
+
+type ChangeEvent_PortStatus struct {
+	PortStatus *OfpPortStatus `protobuf:"bytes,2,opt,name=port_status,json=portStatus,proto3,oneof"`
+}
+
+type ChangeEvent_Error struct {
+	Error *OfpErrorMsg `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
+}
+
+type ChangeEvent_DeviceStatus struct {
+	DeviceStatus *OfpDeviceStatus `protobuf:"bytes,4,opt,name=device_status,json=deviceStatus,proto3,oneof"`
+}
+
+func (*ChangeEvent_PortStatus) isChangeEvent_Event() {}
+
+func (*ChangeEvent_Error) isChangeEvent_Event() {}
+
+func (*ChangeEvent_DeviceStatus) isChangeEvent_Event() {}
+
+// Additional information required to process flow at device adapters
+type FlowMetadata struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Meters associated with flow-update to adapter
+	Meters        []*OfpMeterConfig `protobuf:"bytes,1,rep,name=meters,proto3" json:"meters,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowMetadata) Reset() {
+	*x = FlowMetadata{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[98]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowMetadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowMetadata) ProtoMessage() {}
+
+func (x *FlowMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[98]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowMetadata.ProtoReflect.Descriptor instead.
+func (*FlowMetadata) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{98}
+}
+
+func (x *FlowMetadata) GetMeters() []*OfpMeterConfig {
+	if x != nil {
+		return x.Meters
+	}
+	return nil
+}
+
+var File_voltha_protos_openflow_13_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_openflow_13_proto_rawDesc = "" +
+	"\n" +
+	"\x1fvoltha_protos/openflow_13.proto\x12\vopenflow_13\x1a\x1cgoogle/api/annotations.proto\"c\n" +
+	"\n" +
+	"ofp_header\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\rR\aversion\x12)\n" +
+	"\x04type\x18\x02 \x01(\x0e2\x15.openflow_13.ofp_typeR\x04type\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\"\xab\x01\n" +
+	"\x15ofp_hello_elem_header\x124\n" +
+	"\x04type\x18\x01 \x01(\x0e2 .openflow_13.ofp_hello_elem_typeR\x04type\x12Q\n" +
+	"\rversionbitmap\x18\x02 \x01(\v2).openflow_13.ofp_hello_elem_versionbitmapH\x00R\rversionbitmapB\t\n" +
+	"\aelement\"8\n" +
+	"\x1cofp_hello_elem_versionbitmap\x12\x18\n" +
+	"\abitmaps\x18\x02 \x03(\rR\abitmaps\"K\n" +
+	"\tofp_hello\x12>\n" +
+	"\belements\x18\x01 \x03(\v2\".openflow_13.ofp_hello_elem_headerR\belements\"M\n" +
+	"\x11ofp_switch_config\x12\x14\n" +
+	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\"\n" +
+	"\rmiss_send_len\x18\x02 \x01(\rR\vmissSendLen\"B\n" +
+	"\rofp_table_mod\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x16\n" +
+	"\x06config\x18\x02 \x01(\rR\x06config\"\xa0\x02\n" +
+	"\bofp_port\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x17\n" +
+	"\ahw_addr\x18\x02 \x03(\rR\x06hwAddr\x12\x12\n" +
+	"\x04name\x18\x03 \x01(\tR\x04name\x12\x16\n" +
+	"\x06config\x18\x04 \x01(\rR\x06config\x12\x14\n" +
+	"\x05state\x18\x05 \x01(\rR\x05state\x12\x12\n" +
+	"\x04curr\x18\x06 \x01(\rR\x04curr\x12\x1e\n" +
+	"\n" +
+	"advertised\x18\a \x01(\rR\n" +
+	"advertised\x12\x1c\n" +
+	"\tsupported\x18\b \x01(\rR\tsupported\x12\x12\n" +
+	"\x04peer\x18\t \x01(\rR\x04peer\x12\x1d\n" +
+	"\n" +
+	"curr_speed\x18\n" +
+	" \x01(\rR\tcurrSpeed\x12\x1b\n" +
+	"\tmax_speed\x18\v \x01(\rR\bmaxSpeed\"\xb5\x01\n" +
+	"\x13ofp_switch_features\x12\x1f\n" +
+	"\vdatapath_id\x18\x01 \x01(\x04R\n" +
+	"datapathId\x12\x1b\n" +
+	"\tn_buffers\x18\x02 \x01(\rR\bnBuffers\x12\x19\n" +
+	"\bn_tables\x18\x03 \x01(\rR\anTables\x12!\n" +
+	"\fauxiliary_id\x18\x04 \x01(\rR\vauxiliaryId\x12\"\n" +
+	"\fcapabilities\x18\x05 \x01(\rR\fcapabilities\"r\n" +
+	"\x0fofp_port_status\x124\n" +
+	"\x06reason\x18\x01 \x01(\x0e2\x1c.openflow_13.ofp_port_reasonR\x06reason\x12)\n" +
+	"\x04desc\x18\x02 \x01(\v2\x15.openflow_13.ofp_portR\x04desc\"O\n" +
+	"\x11ofp_device_status\x12:\n" +
+	"\x06status\x18\x01 \x01(\x0e2\".openflow_13.ofp_device_connectionR\x06status\"\x8a\x01\n" +
+	"\fofp_port_mod\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x17\n" +
+	"\ahw_addr\x18\x02 \x03(\rR\x06hwAddr\x12\x16\n" +
+	"\x06config\x18\x03 \x01(\rR\x06config\x12\x12\n" +
+	"\x04mask\x18\x04 \x01(\rR\x04mask\x12\x1c\n" +
+	"\tadvertise\x18\x05 \x01(\rR\tadvertise\"w\n" +
+	"\tofp_match\x12/\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1b.openflow_13.ofp_match_typeR\x04type\x129\n" +
+	"\n" +
+	"oxm_fields\x18\x02 \x03(\v2\x1a.openflow_13.ofp_oxm_fieldR\toxmFields\"\xea\x01\n" +
+	"\rofp_oxm_field\x127\n" +
+	"\toxm_class\x18\x01 \x01(\x0e2\x1a.openflow_13.ofp_oxm_classR\boxmClass\x12=\n" +
+	"\tofb_field\x18\x04 \x01(\v2\x1e.openflow_13.ofp_oxm_ofb_fieldH\x00R\bofbField\x12X\n" +
+	"\x12experimenter_field\x18\x05 \x01(\v2'.openflow_13.ofp_oxm_experimenter_fieldH\x00R\x11experimenterFieldB\a\n" +
+	"\x05field\"\xd7\x0e\n" +
+	"\x11ofp_oxm_ofb_field\x124\n" +
+	"\x04type\x18\x01 \x01(\x0e2 .openflow_13.oxm_ofb_field_typesR\x04type\x12\x19\n" +
+	"\bhas_mask\x18\x02 \x01(\bR\ahasMask\x12\x14\n" +
+	"\x04port\x18\x03 \x01(\rH\x00R\x04port\x12%\n" +
+	"\rphysical_port\x18\x04 \x01(\rH\x00R\fphysicalPort\x12'\n" +
+	"\x0etable_metadata\x18\x05 \x01(\x04H\x00R\rtableMetadata\x12\x19\n" +
+	"\aeth_dst\x18\x06 \x01(\fH\x00R\x06ethDst\x12\x19\n" +
+	"\aeth_src\x18\a \x01(\fH\x00R\x06ethSrc\x12\x1b\n" +
+	"\beth_type\x18\b \x01(\rH\x00R\aethType\x12\x1b\n" +
+	"\bvlan_vid\x18\t \x01(\rH\x00R\avlanVid\x12\x1b\n" +
+	"\bvlan_pcp\x18\n" +
+	" \x01(\rH\x00R\avlanPcp\x12\x19\n" +
+	"\aip_dscp\x18\v \x01(\rH\x00R\x06ipDscp\x12\x17\n" +
+	"\x06ip_ecn\x18\f \x01(\rH\x00R\x05ipEcn\x12\x1b\n" +
+	"\bip_proto\x18\r \x01(\rH\x00R\aipProto\x12\x1b\n" +
+	"\bipv4_src\x18\x0e \x01(\rH\x00R\aipv4Src\x12\x1b\n" +
+	"\bipv4_dst\x18\x0f \x01(\rH\x00R\aipv4Dst\x12\x19\n" +
+	"\atcp_src\x18\x10 \x01(\rH\x00R\x06tcpSrc\x12\x19\n" +
+	"\atcp_dst\x18\x11 \x01(\rH\x00R\x06tcpDst\x12\x19\n" +
+	"\audp_src\x18\x12 \x01(\rH\x00R\x06udpSrc\x12\x19\n" +
+	"\audp_dst\x18\x13 \x01(\rH\x00R\x06udpDst\x12\x1b\n" +
+	"\bsctp_src\x18\x14 \x01(\rH\x00R\asctpSrc\x12\x1b\n" +
+	"\bsctp_dst\x18\x15 \x01(\rH\x00R\asctpDst\x12!\n" +
+	"\vicmpv4_type\x18\x16 \x01(\rH\x00R\n" +
+	"icmpv4Type\x12!\n" +
+	"\vicmpv4_code\x18\x17 \x01(\rH\x00R\n" +
+	"icmpv4Code\x12\x17\n" +
+	"\x06arp_op\x18\x18 \x01(\rH\x00R\x05arpOp\x12\x19\n" +
+	"\aarp_spa\x18\x19 \x01(\rH\x00R\x06arpSpa\x12\x19\n" +
+	"\aarp_tpa\x18\x1a \x01(\rH\x00R\x06arpTpa\x12\x19\n" +
+	"\aarp_sha\x18\x1b \x01(\fH\x00R\x06arpSha\x12\x19\n" +
+	"\aarp_tha\x18\x1c \x01(\fH\x00R\x06arpTha\x12\x1b\n" +
+	"\bipv6_src\x18\x1d \x01(\fH\x00R\aipv6Src\x12\x1b\n" +
+	"\bipv6_dst\x18\x1e \x01(\fH\x00R\aipv6Dst\x12!\n" +
+	"\vipv6_flabel\x18\x1f \x01(\rH\x00R\n" +
+	"ipv6Flabel\x12!\n" +
+	"\vicmpv6_type\x18  \x01(\rH\x00R\n" +
+	"icmpv6Type\x12!\n" +
+	"\vicmpv6_code\x18! \x01(\rH\x00R\n" +
+	"icmpv6Code\x12&\n" +
+	"\x0eipv6_nd_target\x18\" \x01(\fH\x00R\fipv6NdTarget\x12 \n" +
+	"\vipv6_nd_ssl\x18# \x01(\fH\x00R\tipv6NdSsl\x12 \n" +
+	"\vipv6_nd_tll\x18$ \x01(\fH\x00R\tipv6NdTll\x12\x1f\n" +
+	"\n" +
+	"mpls_label\x18% \x01(\rH\x00R\tmplsLabel\x12\x19\n" +
+	"\ampls_tc\x18& \x01(\rH\x00R\x06mplsTc\x12\x1b\n" +
+	"\bmpls_bos\x18' \x01(\rH\x00R\amplsBos\x12\x1b\n" +
+	"\bpbb_isid\x18( \x01(\rH\x00R\apbbIsid\x12\x1d\n" +
+	"\ttunnel_id\x18) \x01(\x04H\x00R\btunnelId\x12!\n" +
+	"\vipv6_exthdr\x18* \x01(\rH\x00R\n" +
+	"ipv6Exthdr\x120\n" +
+	"\x13table_metadata_mask\x18i \x01(\x04H\x01R\x11tableMetadataMask\x12\"\n" +
+	"\feth_dst_mask\x18j \x01(\fH\x01R\n" +
+	"ethDstMask\x12\"\n" +
+	"\feth_src_mask\x18k \x01(\fH\x01R\n" +
+	"ethSrcMask\x12$\n" +
+	"\rvlan_vid_mask\x18m \x01(\rH\x01R\vvlanVidMask\x12$\n" +
+	"\ripv4_src_mask\x18r \x01(\rH\x01R\vipv4SrcMask\x12$\n" +
+	"\ripv4_dst_mask\x18s \x01(\rH\x01R\vipv4DstMask\x12\"\n" +
+	"\farp_spa_mask\x18} \x01(\rH\x01R\n" +
+	"arpSpaMask\x12\"\n" +
+	"\farp_tpa_mask\x18~ \x01(\rH\x01R\n" +
+	"arpTpaMask\x12%\n" +
+	"\ripv6_src_mask\x18\x81\x01 \x01(\fH\x01R\vipv6SrcMask\x12%\n" +
+	"\ripv6_dst_mask\x18\x82\x01 \x01(\fH\x01R\vipv6DstMask\x12+\n" +
+	"\x10ipv6_flabel_mask\x18\x83\x01 \x01(\rH\x01R\x0eipv6FlabelMask\x12%\n" +
+	"\rpbb_isid_mask\x18\x8c\x01 \x01(\rH\x01R\vpbbIsidMask\x12'\n" +
+	"\x0etunnel_id_mask\x18\x8d\x01 \x01(\x04H\x01R\ftunnelIdMask\x12+\n" +
+	"\x10ipv6_exthdr_mask\x18\x8e\x01 \x01(\rH\x01R\x0eipv6ExthdrMaskB\a\n" +
+	"\x05valueB\x06\n" +
+	"\x04mask\"_\n" +
+	"\x1aofp_oxm_experimenter_field\x12\x1d\n" +
+	"\n" +
+	"oxm_header\x18\x01 \x01(\rR\toxmHeader\x12\"\n" +
+	"\fexperimenter\x18\x02 \x01(\rR\fexperimenter\"\xb2\x04\n" +
+	"\n" +
+	"ofp_action\x120\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1c.openflow_13.ofp_action_typeR\x04type\x128\n" +
+	"\x06output\x18\x02 \x01(\v2\x1e.openflow_13.ofp_action_outputH\x00R\x06output\x12=\n" +
+	"\bmpls_ttl\x18\x03 \x01(\v2 .openflow_13.ofp_action_mpls_ttlH\x00R\amplsTtl\x122\n" +
+	"\x04push\x18\x04 \x01(\v2\x1c.openflow_13.ofp_action_pushH\x00R\x04push\x12=\n" +
+	"\bpop_mpls\x18\x05 \x01(\v2 .openflow_13.ofp_action_pop_mplsH\x00R\apopMpls\x125\n" +
+	"\x05group\x18\x06 \x01(\v2\x1d.openflow_13.ofp_action_groupH\x00R\x05group\x127\n" +
+	"\x06nw_ttl\x18\a \x01(\v2\x1e.openflow_13.ofp_action_nw_ttlH\x00R\x05nwTtl\x12@\n" +
+	"\tset_field\x18\b \x01(\v2!.openflow_13.ofp_action_set_fieldH\x00R\bsetField\x12J\n" +
+	"\fexperimenter\x18\t \x01(\v2$.openflow_13.ofp_action_experimenterH\x00R\fexperimenterB\b\n" +
+	"\x06action\"@\n" +
+	"\x11ofp_action_output\x12\x12\n" +
+	"\x04port\x18\x01 \x01(\rR\x04port\x12\x17\n" +
+	"\amax_len\x18\x02 \x01(\rR\x06maxLen\"0\n" +
+	"\x13ofp_action_mpls_ttl\x12\x19\n" +
+	"\bmpls_ttl\x18\x01 \x01(\rR\amplsTtl\"/\n" +
+	"\x0fofp_action_push\x12\x1c\n" +
+	"\tethertype\x18\x01 \x01(\rR\tethertype\"3\n" +
+	"\x13ofp_action_pop_mpls\x12\x1c\n" +
+	"\tethertype\x18\x01 \x01(\rR\tethertype\"-\n" +
+	"\x10ofp_action_group\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\"*\n" +
+	"\x11ofp_action_nw_ttl\x12\x15\n" +
+	"\x06nw_ttl\x18\x01 \x01(\rR\x05nwTtl\"H\n" +
+	"\x14ofp_action_set_field\x120\n" +
+	"\x05field\x18\x01 \x01(\v2\x1a.openflow_13.ofp_oxm_fieldR\x05field\"Q\n" +
+	"\x17ofp_action_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\fR\x04data\"\x9c\x03\n" +
+	"\x0fofp_instruction\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\rR\x04type\x12H\n" +
+	"\n" +
+	"goto_table\x18\x02 \x01(\v2'.openflow_13.ofp_instruction_goto_tableH\x00R\tgotoTable\x12T\n" +
+	"\x0ewrite_metadata\x18\x03 \x01(\v2+.openflow_13.ofp_instruction_write_metadataH\x00R\rwriteMetadata\x12@\n" +
+	"\aactions\x18\x04 \x01(\v2$.openflow_13.ofp_instruction_actionsH\x00R\aactions\x12:\n" +
+	"\x05meter\x18\x05 \x01(\v2\".openflow_13.ofp_instruction_meterH\x00R\x05meter\x12O\n" +
+	"\fexperimenter\x18\x06 \x01(\v2).openflow_13.ofp_instruction_experimenterH\x00R\fexperimenterB\x06\n" +
+	"\x04data\"7\n" +
+	"\x1aofp_instruction_goto_table\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\"a\n" +
+	"\x1eofp_instruction_write_metadata\x12\x1a\n" +
+	"\bmetadata\x18\x01 \x01(\x04R\bmetadata\x12#\n" +
+	"\rmetadata_mask\x18\x02 \x01(\x04R\fmetadataMask\"L\n" +
+	"\x17ofp_instruction_actions\x121\n" +
+	"\aactions\x18\x01 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\"2\n" +
+	"\x15ofp_instruction_meter\x12\x19\n" +
+	"\bmeter_id\x18\x01 \x01(\rR\ameterId\"V\n" +
+	"\x1cofp_instruction_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\fR\x04data\"\xdc\x03\n" +
+	"\fofp_flow_mod\x12\x16\n" +
+	"\x06cookie\x18\x01 \x01(\x04R\x06cookie\x12\x1f\n" +
+	"\vcookie_mask\x18\x02 \x01(\x04R\n" +
+	"cookieMask\x12\x19\n" +
+	"\btable_id\x18\x03 \x01(\rR\atableId\x12;\n" +
+	"\acommand\x18\x04 \x01(\x0e2!.openflow_13.ofp_flow_mod_commandR\acommand\x12!\n" +
+	"\fidle_timeout\x18\x05 \x01(\rR\vidleTimeout\x12!\n" +
+	"\fhard_timeout\x18\x06 \x01(\rR\vhardTimeout\x12\x1a\n" +
+	"\bpriority\x18\a \x01(\rR\bpriority\x12\x1b\n" +
+	"\tbuffer_id\x18\b \x01(\rR\bbufferId\x12\x19\n" +
+	"\bout_port\x18\t \x01(\rR\aoutPort\x12\x1b\n" +
+	"\tout_group\x18\n" +
+	" \x01(\rR\boutGroup\x12\x14\n" +
+	"\x05flags\x18\v \x01(\rR\x05flags\x12,\n" +
+	"\x05match\x18\f \x01(\v2\x16.openflow_13.ofp_matchR\x05match\x12@\n" +
+	"\finstructions\x18\r \x03(\v2\x1c.openflow_13.ofp_instructionR\finstructions\"\x97\x01\n" +
+	"\n" +
+	"ofp_bucket\x12\x16\n" +
+	"\x06weight\x18\x01 \x01(\rR\x06weight\x12\x1d\n" +
+	"\n" +
+	"watch_port\x18\x02 \x01(\rR\twatchPort\x12\x1f\n" +
+	"\vwatch_group\x18\x03 \x01(\rR\n" +
+	"watchGroup\x121\n" +
+	"\aactions\x18\x04 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\"\xcc\x01\n" +
+	"\rofp_group_mod\x12<\n" +
+	"\acommand\x18\x01 \x01(\x0e2\".openflow_13.ofp_group_mod_commandR\acommand\x12/\n" +
+	"\x04type\x18\x02 \x01(\x0e2\x1b.openflow_13.ofp_group_typeR\x04type\x12\x19\n" +
+	"\bgroup_id\x18\x03 \x01(\rR\agroupId\x121\n" +
+	"\abuckets\x18\x04 \x03(\v2\x17.openflow_13.ofp_bucketR\abuckets\"\x8d\x01\n" +
+	"\x0eofp_packet_out\x12\x1b\n" +
+	"\tbuffer_id\x18\x01 \x01(\rR\bbufferId\x12\x17\n" +
+	"\ain_port\x18\x02 \x01(\rR\x06inPort\x121\n" +
+	"\aactions\x18\x03 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\x12\x12\n" +
+	"\x04data\x18\x04 \x01(\fR\x04data\"\xdc\x01\n" +
+	"\rofp_packet_in\x12\x1b\n" +
+	"\tbuffer_id\x18\x01 \x01(\rR\bbufferId\x129\n" +
+	"\x06reason\x18\x02 \x01(\x0e2!.openflow_13.ofp_packet_in_reasonR\x06reason\x12\x19\n" +
+	"\btable_id\x18\x03 \x01(\rR\atableId\x12\x16\n" +
+	"\x06cookie\x18\x04 \x01(\x04R\x06cookie\x12,\n" +
+	"\x05match\x18\x05 \x01(\v2\x16.openflow_13.ofp_matchR\x05match\x12\x12\n" +
+	"\x04data\x18\x06 \x01(\fR\x04data\"\x9d\x03\n" +
+	"\x10ofp_flow_removed\x12\x16\n" +
+	"\x06cookie\x18\x01 \x01(\x04R\x06cookie\x12\x1a\n" +
+	"\bpriority\x18\x02 \x01(\rR\bpriority\x12<\n" +
+	"\x06reason\x18\x03 \x01(\x0e2$.openflow_13.ofp_flow_removed_reasonR\x06reason\x12\x19\n" +
+	"\btable_id\x18\x04 \x01(\rR\atableId\x12!\n" +
+	"\fduration_sec\x18\x05 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x06 \x01(\rR\fdurationNsec\x12!\n" +
+	"\fidle_timeout\x18\a \x01(\rR\vidleTimeout\x12!\n" +
+	"\fhard_timeout\x18\b \x01(\rR\vhardTimeout\x12!\n" +
+	"\fpacket_count\x18\t \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\n" +
+	" \x01(\x04R\tbyteCount\x12,\n" +
+	"\x05match\x18y \x01(\v2\x16.openflow_13.ofp_matchR\x05match\"\xdc\x02\n" +
+	"\x15ofp_meter_band_header\x124\n" +
+	"\x04type\x18\x01 \x01(\x0e2 .openflow_13.ofp_meter_band_typeR\x04type\x12\x12\n" +
+	"\x04rate\x18\x02 \x01(\rR\x04rate\x12\x1d\n" +
+	"\n" +
+	"burst_size\x18\x03 \x01(\rR\tburstSize\x126\n" +
+	"\x04drop\x18\x04 \x01(\v2 .openflow_13.ofp_meter_band_dropH\x00R\x04drop\x12J\n" +
+	"\vdscp_remark\x18\x05 \x01(\v2'.openflow_13.ofp_meter_band_dscp_remarkH\x00R\n" +
+	"dscpRemark\x12N\n" +
+	"\fexperimenter\x18\x06 \x01(\v2(.openflow_13.ofp_meter_band_experimenterH\x00R\fexperimenterB\x06\n" +
+	"\x04data\"\x15\n" +
+	"\x13ofp_meter_band_drop\";\n" +
+	"\x1aofp_meter_band_dscp_remark\x12\x1d\n" +
+	"\n" +
+	"prec_level\x18\x01 \x01(\rR\tprecLevel\"A\n" +
+	"\x1bofp_meter_band_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\"\xb8\x01\n" +
+	"\rofp_meter_mod\x12<\n" +
+	"\acommand\x18\x01 \x01(\x0e2\".openflow_13.ofp_meter_mod_commandR\acommand\x12\x14\n" +
+	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x19\n" +
+	"\bmeter_id\x18\x03 \x01(\rR\ameterId\x128\n" +
+	"\x05bands\x18\x04 \x03(\v2\".openflow_13.ofp_meter_band_headerR\x05bands\"|\n" +
+	"\rofp_error_msg\x12/\n" +
+	"\x06header\x18\x01 \x01(\v2\x17.openflow_13.ofp_headerR\x06header\x12\x12\n" +
+	"\x04type\x18\x02 \x01(\rR\x04type\x12\x12\n" +
+	"\x04code\x18\x03 \x01(\rR\x04code\x12\x12\n" +
+	"\x04data\x18\x04 \x01(\fR\x04data\"\x83\x01\n" +
+	"\x1aofp_error_experimenter_msg\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\rR\x04type\x12\x19\n" +
+	"\bexp_type\x18\x02 \x01(\rR\aexpType\x12\"\n" +
+	"\fexperimenter\x18\x03 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x04 \x01(\fR\x04data\"v\n" +
+	"\x15ofp_multipart_request\x123\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1f.openflow_13.ofp_multipart_typeR\x04type\x12\x14\n" +
+	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x12\n" +
+	"\x04body\x18\x03 \x01(\fR\x04body\"t\n" +
+	"\x13ofp_multipart_reply\x123\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1f.openflow_13.ofp_multipart_typeR\x04type\x12\x14\n" +
+	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x12\n" +
+	"\x04body\x18\x03 \x01(\fR\x04body\"\x8f\x01\n" +
+	"\bofp_desc\x12\x19\n" +
+	"\bmfr_desc\x18\x01 \x01(\tR\amfrDesc\x12\x17\n" +
+	"\ahw_desc\x18\x02 \x01(\tR\x06hwDesc\x12\x17\n" +
+	"\asw_desc\x18\x03 \x01(\tR\x06swDesc\x12\x1d\n" +
+	"\n" +
+	"serial_num\x18\x04 \x01(\tR\tserialNum\x12\x17\n" +
+	"\adp_desc\x18\x05 \x01(\tR\x06dpDesc\"\xd2\x01\n" +
+	"\x16ofp_flow_stats_request\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x19\n" +
+	"\bout_port\x18\x02 \x01(\rR\aoutPort\x12\x1b\n" +
+	"\tout_group\x18\x03 \x01(\rR\boutGroup\x12\x16\n" +
+	"\x06cookie\x18\x04 \x01(\x04R\x06cookie\x12\x1f\n" +
+	"\vcookie_mask\x18\x05 \x01(\x04R\n" +
+	"cookieMask\x12,\n" +
+	"\x05match\x18\x06 \x01(\v2\x16.openflow_13.ofp_matchR\x05match\"\xc5\x03\n" +
+	"\x0eofp_flow_stats\x12\x0e\n" +
+	"\x02id\x18\x0e \x01(\x04R\x02id\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12!\n" +
+	"\fduration_sec\x18\x02 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x03 \x01(\rR\fdurationNsec\x12\x1a\n" +
+	"\bpriority\x18\x04 \x01(\rR\bpriority\x12!\n" +
+	"\fidle_timeout\x18\x05 \x01(\rR\vidleTimeout\x12!\n" +
+	"\fhard_timeout\x18\x06 \x01(\rR\vhardTimeout\x12\x14\n" +
+	"\x05flags\x18\a \x01(\rR\x05flags\x12\x16\n" +
+	"\x06cookie\x18\b \x01(\x04R\x06cookie\x12!\n" +
+	"\fpacket_count\x18\t \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\n" +
+	" \x01(\x04R\tbyteCount\x12,\n" +
+	"\x05match\x18\f \x01(\v2\x16.openflow_13.ofp_matchR\x05match\x12@\n" +
+	"\finstructions\x18\r \x03(\v2\x1c.openflow_13.ofp_instructionR\finstructions\"\xd7\x01\n" +
+	"\x1bofp_aggregate_stats_request\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x19\n" +
+	"\bout_port\x18\x02 \x01(\rR\aoutPort\x12\x1b\n" +
+	"\tout_group\x18\x03 \x01(\rR\boutGroup\x12\x16\n" +
+	"\x06cookie\x18\x04 \x01(\x04R\x06cookie\x12\x1f\n" +
+	"\vcookie_mask\x18\x05 \x01(\x04R\n" +
+	"cookieMask\x12,\n" +
+	"\x05match\x18\x06 \x01(\v2\x16.openflow_13.ofp_matchR\x05match\"|\n" +
+	"\x19ofp_aggregate_stats_reply\x12!\n" +
+	"\fpacket_count\x18\x01 \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\x02 \x01(\x04R\tbyteCount\x12\x1d\n" +
+	"\n" +
+	"flow_count\x18\x03 \x01(\rR\tflowCount\"\xed\x03\n" +
+	"\x1aofp_table_feature_property\x12<\n" +
+	"\x04type\x18\x01 \x01(\x0e2(.openflow_13.ofp_table_feature_prop_typeR\x04type\x12V\n" +
+	"\finstructions\x18\x02 \x01(\v20.openflow_13.ofp_table_feature_prop_instructionsH\x00R\finstructions\x12R\n" +
+	"\vnext_tables\x18\x03 \x01(\v2/.openflow_13.ofp_table_feature_prop_next_tablesH\x00R\n" +
+	"nextTables\x12G\n" +
+	"\aactions\x18\x04 \x01(\v2+.openflow_13.ofp_table_feature_prop_actionsH\x00R\aactions\x12;\n" +
+	"\x03oxm\x18\x05 \x01(\v2'.openflow_13.ofp_table_feature_prop_oxmH\x00R\x03oxm\x12V\n" +
+	"\fexperimenter\x18\x06 \x01(\v20.openflow_13.ofp_table_feature_prop_experimenterH\x00R\fexperimenterB\a\n" +
+	"\x05value\"g\n" +
+	"#ofp_table_feature_prop_instructions\x12@\n" +
+	"\finstructions\x18\x01 \x03(\v2\x1c.openflow_13.ofp_instructionR\finstructions\"J\n" +
+	"\"ofp_table_feature_prop_next_tables\x12$\n" +
+	"\x0enext_table_ids\x18\x01 \x03(\rR\fnextTableIds\"S\n" +
+	"\x1eofp_table_feature_prop_actions\x121\n" +
+	"\aactions\x18\x01 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\"5\n" +
+	"\x1aofp_table_feature_prop_oxm\x12\x17\n" +
+	"\aoxm_ids\x18\x03 \x03(\rR\x06oxmIds\"\x91\x01\n" +
+	"#ofp_table_feature_prop_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x02 \x01(\rR\fexperimenter\x12\x19\n" +
+	"\bexp_type\x18\x03 \x01(\rR\aexpType\x12+\n" +
+	"\x11experimenter_data\x18\x04 \x03(\rR\x10experimenterData\"\x93\x02\n" +
+	"\x12ofp_table_features\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\x12%\n" +
+	"\x0emetadata_match\x18\x03 \x01(\x04R\rmetadataMatch\x12%\n" +
+	"\x0emetadata_write\x18\x04 \x01(\x04R\rmetadataWrite\x12\x16\n" +
+	"\x06config\x18\x05 \x01(\rR\x06config\x12\x1f\n" +
+	"\vmax_entries\x18\x06 \x01(\rR\n" +
+	"maxEntries\x12G\n" +
+	"\n" +
+	"properties\x18\a \x03(\v2'.openflow_13.ofp_table_feature_propertyR\n" +
+	"properties\"\x97\x01\n" +
+	"\x0fofp_table_stats\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12!\n" +
+	"\factive_count\x18\x02 \x01(\rR\vactiveCount\x12!\n" +
+	"\flookup_count\x18\x03 \x01(\x04R\vlookupCount\x12#\n" +
+	"\rmatched_count\x18\x04 \x01(\x04R\fmatchedCount\"1\n" +
+	"\x16ofp_port_stats_request\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\"\xdd\x03\n" +
+	"\x0eofp_port_stats\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x1d\n" +
+	"\n" +
+	"rx_packets\x18\x02 \x01(\x04R\trxPackets\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\x03 \x01(\x04R\ttxPackets\x12\x19\n" +
+	"\brx_bytes\x18\x04 \x01(\x04R\arxBytes\x12\x19\n" +
+	"\btx_bytes\x18\x05 \x01(\x04R\atxBytes\x12\x1d\n" +
+	"\n" +
+	"rx_dropped\x18\x06 \x01(\x04R\trxDropped\x12\x1d\n" +
+	"\n" +
+	"tx_dropped\x18\a \x01(\x04R\ttxDropped\x12\x1b\n" +
+	"\trx_errors\x18\b \x01(\x04R\brxErrors\x12\x1b\n" +
+	"\ttx_errors\x18\t \x01(\x04R\btxErrors\x12 \n" +
+	"\frx_frame_err\x18\n" +
+	" \x01(\x04R\n" +
+	"rxFrameErr\x12\x1e\n" +
+	"\vrx_over_err\x18\v \x01(\x04R\trxOverErr\x12\x1c\n" +
+	"\n" +
+	"rx_crc_err\x18\f \x01(\x04R\brxCrcErr\x12\x1e\n" +
+	"\n" +
+	"collisions\x18\r \x01(\x04R\n" +
+	"collisions\x12!\n" +
+	"\fduration_sec\x18\x0e \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x0f \x01(\rR\fdurationNsec\"4\n" +
+	"\x17ofp_group_stats_request\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\"V\n" +
+	"\x12ofp_bucket_counter\x12!\n" +
+	"\fpacket_count\x18\x01 \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\x02 \x01(\x04R\tbyteCount\"\x97\x02\n" +
+	"\x0fofp_group_stats\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\x12\x1b\n" +
+	"\tref_count\x18\x02 \x01(\rR\brefCount\x12!\n" +
+	"\fpacket_count\x18\x03 \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\x04 \x01(\x04R\tbyteCount\x12!\n" +
+	"\fduration_sec\x18\x05 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x06 \x01(\rR\fdurationNsec\x12B\n" +
+	"\fbucket_stats\x18\a \x03(\v2\x1f.openflow_13.ofp_bucket_counterR\vbucketStats\"\x8f\x01\n" +
+	"\x0eofp_group_desc\x12/\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1b.openflow_13.ofp_group_typeR\x04type\x12\x19\n" +
+	"\bgroup_id\x18\x02 \x01(\rR\agroupId\x121\n" +
+	"\abuckets\x18\x03 \x03(\v2\x17.openflow_13.ofp_bucketR\abuckets\"v\n" +
+	"\x0fofp_group_entry\x12/\n" +
+	"\x04desc\x18\x01 \x01(\v2\x1b.openflow_13.ofp_group_descR\x04desc\x122\n" +
+	"\x05stats\x18\x02 \x01(\v2\x1c.openflow_13.ofp_group_statsR\x05stats\"\x87\x01\n" +
+	"\x12ofp_group_features\x12\x14\n" +
+	"\x05types\x18\x01 \x01(\rR\x05types\x12\"\n" +
+	"\fcapabilities\x18\x02 \x01(\rR\fcapabilities\x12\x1d\n" +
+	"\n" +
+	"max_groups\x18\x03 \x03(\rR\tmaxGroups\x12\x18\n" +
+	"\aactions\x18\x04 \x03(\rR\aactions\"8\n" +
+	"\x1bofp_meter_multipart_request\x12\x19\n" +
+	"\bmeter_id\x18\x01 \x01(\rR\ameterId\"j\n" +
+	"\x14ofp_meter_band_stats\x12*\n" +
+	"\x11packet_band_count\x18\x01 \x01(\x04R\x0fpacketBandCount\x12&\n" +
+	"\x0fbyte_band_count\x18\x02 \x01(\x04R\rbyteBandCount\"\xa1\x02\n" +
+	"\x0fofp_meter_stats\x12\x19\n" +
+	"\bmeter_id\x18\x01 \x01(\rR\ameterId\x12\x1d\n" +
+	"\n" +
+	"flow_count\x18\x02 \x01(\rR\tflowCount\x12&\n" +
+	"\x0fpacket_in_count\x18\x03 \x01(\x04R\rpacketInCount\x12\"\n" +
+	"\rbyte_in_count\x18\x04 \x01(\x04R\vbyteInCount\x12!\n" +
+	"\fduration_sec\x18\x05 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x06 \x01(\rR\fdurationNsec\x12@\n" +
+	"\n" +
+	"band_stats\x18\a \x03(\v2!.openflow_13.ofp_meter_band_statsR\tbandStats\"}\n" +
+	"\x10ofp_meter_config\x12\x14\n" +
+	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\x19\n" +
+	"\bmeter_id\x18\x02 \x01(\rR\ameterId\x128\n" +
+	"\x05bands\x18\x03 \x03(\v2\".openflow_13.ofp_meter_band_headerR\x05bands\"\xae\x01\n" +
+	"\x12ofp_meter_features\x12\x1b\n" +
+	"\tmax_meter\x18\x01 \x01(\rR\bmaxMeter\x12\x1d\n" +
+	"\n" +
+	"band_types\x18\x02 \x01(\rR\tbandTypes\x12\"\n" +
+	"\fcapabilities\x18\x03 \x01(\rR\fcapabilities\x12\x1b\n" +
+	"\tmax_bands\x18\x04 \x01(\rR\bmaxBands\x12\x1b\n" +
+	"\tmax_color\x18\x05 \x01(\rR\bmaxColor\"|\n" +
+	"\x0fofp_meter_entry\x125\n" +
+	"\x06config\x18\x01 \x01(\v2\x1d.openflow_13.ofp_meter_configR\x06config\x122\n" +
+	"\x05stats\x18\x02 \x01(\v2\x1c.openflow_13.ofp_meter_statsR\x05stats\"v\n" +
+	"!ofp_experimenter_multipart_header\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x19\n" +
+	"\bexp_type\x18\x02 \x01(\rR\aexpType\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\fR\x04data\"l\n" +
+	"\x17ofp_experimenter_header\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x19\n" +
+	"\bexp_type\x18\x02 \x01(\rR\aexpType\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\fR\x04data\"E\n" +
+	"\x15ofp_queue_prop_header\x12\x1a\n" +
+	"\bproperty\x18\x01 \x01(\rR\bproperty\x12\x10\n" +
+	"\x03len\x18\x02 \x01(\rR\x03len\"r\n" +
+	"\x17ofp_queue_prop_min_rate\x12C\n" +
+	"\vprop_header\x18\x01 \x01(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"propHeader\x12\x12\n" +
+	"\x04rate\x18\x02 \x01(\rR\x04rate\"r\n" +
+	"\x17ofp_queue_prop_max_rate\x12C\n" +
+	"\vprop_header\x18\x01 \x01(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"propHeader\x12\x12\n" +
+	"\x04rate\x18\x02 \x01(\rR\x04rate\"\x9a\x01\n" +
+	"\x1bofp_queue_prop_experimenter\x12C\n" +
+	"\vprop_header\x18\x01 \x01(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"propHeader\x12\"\n" +
+	"\fexperimenter\x18\x02 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\fR\x04data\"\x85\x01\n" +
+	"\x10ofp_packet_queue\x12\x19\n" +
+	"\bqueue_id\x18\x01 \x01(\rR\aqueueId\x12\x12\n" +
+	"\x04port\x18\x02 \x01(\rR\x04port\x12B\n" +
+	"\n" +
+	"properties\x18\x04 \x03(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"properties\"2\n" +
+	"\x1cofp_queue_get_config_request\x12\x12\n" +
+	"\x04port\x18\x01 \x01(\rR\x04port\"g\n" +
+	"\x1aofp_queue_get_config_reply\x12\x12\n" +
+	"\x04port\x18\x01 \x01(\rR\x04port\x125\n" +
+	"\x06queues\x18\x02 \x03(\v2\x1d.openflow_13.ofp_packet_queueR\x06queues\"E\n" +
+	"\x14ofp_action_set_queue\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\rR\x04type\x12\x19\n" +
+	"\bqueue_id\x18\x03 \x01(\rR\aqueueId\"M\n" +
+	"\x17ofp_queue_stats_request\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x19\n" +
+	"\bqueue_id\x18\x02 \x01(\rR\aqueueId\"\xe4\x01\n" +
+	"\x0fofp_queue_stats\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x19\n" +
+	"\bqueue_id\x18\x02 \x01(\rR\aqueueId\x12\x19\n" +
+	"\btx_bytes\x18\x03 \x01(\x04R\atxBytes\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\x04 \x01(\x04R\ttxPackets\x12\x1b\n" +
+	"\ttx_errors\x18\x05 \x01(\x04R\btxErrors\x12!\n" +
+	"\fduration_sec\x18\x06 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\a \x01(\rR\fdurationNsec\"m\n" +
+	"\x10ofp_role_request\x124\n" +
+	"\x04role\x18\x01 \x01(\x0e2 .openflow_13.ofp_controller_roleR\x04role\x12#\n" +
+	"\rgeneration_id\x18\x02 \x01(\x04R\fgenerationId\"\x8e\x01\n" +
+	"\x10ofp_async_config\x12$\n" +
+	"\x0epacket_in_mask\x18\x01 \x03(\rR\fpacketInMask\x12(\n" +
+	"\x10port_status_mask\x18\x02 \x03(\rR\x0eportStatusMask\x12*\n" +
+	"\x11flow_removed_mask\x18\x03 \x03(\rR\x0fflowRemovedMask\"k\n" +
+	"\x0eMeterModUpdate\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x127\n" +
+	"\tmeter_mod\x18\x02 \x01(\v2\x1a.openflow_13.ofp_meter_modR\bmeterMod\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\"P\n" +
+	"\x0fMeterStatsReply\x12=\n" +
+	"\vmeter_stats\x18\x01 \x03(\v2\x1c.openflow_13.ofp_meter_statsR\n" +
+	"meterStats\"i\n" +
+	"\x0fFlowTableUpdate\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x124\n" +
+	"\bflow_mod\x18\x02 \x01(\v2\x19.openflow_13.ofp_flow_modR\aflowMod\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\"q\n" +
+	"\x14FlowGroupTableUpdate\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x127\n" +
+	"\tgroup_mod\x18\x02 \x01(\v2\x1a.openflow_13.ofp_group_modR\bgroupMod\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\":\n" +
+	"\x05Flows\x121\n" +
+	"\x05items\x18\x01 \x03(\v2\x1b.openflow_13.ofp_flow_statsR\x05items\"<\n" +
+	"\x06Meters\x122\n" +
+	"\x05items\x18\x01 \x03(\v2\x1c.openflow_13.ofp_meter_entryR\x05items\"@\n" +
+	"\n" +
+	"FlowGroups\x122\n" +
+	"\x05items\x18\x01 \x03(\v2\x1c.openflow_13.ofp_group_entryR\x05items\"i\n" +
+	"\vFlowChanges\x12)\n" +
+	"\x06to_add\x18\x01 \x01(\v2\x12.openflow_13.FlowsR\x05toAdd\x12/\n" +
+	"\tto_remove\x18\x02 \x01(\v2\x12.openflow_13.FlowsR\btoRemove\"\xae\x01\n" +
+	"\x10FlowGroupChanges\x12.\n" +
+	"\x06to_add\x18\x01 \x01(\v2\x17.openflow_13.FlowGroupsR\x05toAdd\x124\n" +
+	"\tto_remove\x18\x02 \x01(\v2\x17.openflow_13.FlowGroupsR\btoRemove\x124\n" +
+	"\tto_update\x18\x03 \x01(\v2\x17.openflow_13.FlowGroupsR\btoUpdate\"S\n" +
+	"\bPacketIn\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x127\n" +
+	"\tpacket_in\x18\x02 \x01(\v2\x1a.openflow_13.ofp_packet_inR\bpacketIn\"W\n" +
+	"\tPacketOut\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12:\n" +
+	"\n" +
+	"packet_out\x18\x02 \x01(\v2\x1b.openflow_13.ofp_packet_outR\tpacketOut\"\xe2\x01\n" +
+	"\vChangeEvent\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12?\n" +
+	"\vport_status\x18\x02 \x01(\v2\x1c.openflow_13.ofp_port_statusH\x00R\n" +
+	"portStatus\x122\n" +
+	"\x05error\x18\x03 \x01(\v2\x1a.openflow_13.ofp_error_msgH\x00R\x05error\x12E\n" +
+	"\rdevice_status\x18\x04 \x01(\v2\x1e.openflow_13.ofp_device_statusH\x00R\fdeviceStatusB\a\n" +
+	"\x05event\"E\n" +
+	"\fFlowMetadata\x125\n" +
+	"\x06meters\x18\x01 \x03(\v2\x1d.openflow_13.ofp_meter_configR\x06meters*\xd5\x01\n" +
+	"\vofp_port_no\x12\x10\n" +
+	"\fOFPP_INVALID\x10\x00\x12\x10\n" +
+	"\bOFPP_MAX\x10\x80\xfe\xff\xff\a\x12\x14\n" +
+	"\fOFPP_IN_PORT\x10\xf8\xff\xff\xff\a\x12\x12\n" +
+	"\n" +
+	"OFPP_TABLE\x10\xf9\xff\xff\xff\a\x12\x13\n" +
+	"\vOFPP_NORMAL\x10\xfa\xff\xff\xff\a\x12\x12\n" +
+	"\n" +
+	"OFPP_FLOOD\x10\xfb\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPP_ALL\x10\xfc\xff\xff\xff\a\x12\x17\n" +
+	"\x0fOFPP_CONTROLLER\x10\xfd\xff\xff\xff\a\x12\x12\n" +
+	"\n" +
+	"OFPP_LOCAL\x10\xfe\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPP_ANY\x10\xff\xff\xff\xff\a*\xc8\x05\n" +
+	"\bofp_type\x12\x0e\n" +
+	"\n" +
+	"OFPT_HELLO\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OFPT_ERROR\x10\x01\x12\x15\n" +
+	"\x11OFPT_ECHO_REQUEST\x10\x02\x12\x13\n" +
+	"\x0fOFPT_ECHO_REPLY\x10\x03\x12\x15\n" +
+	"\x11OFPT_EXPERIMENTER\x10\x04\x12\x19\n" +
+	"\x15OFPT_FEATURES_REQUEST\x10\x05\x12\x17\n" +
+	"\x13OFPT_FEATURES_REPLY\x10\x06\x12\x1b\n" +
+	"\x17OFPT_GET_CONFIG_REQUEST\x10\a\x12\x19\n" +
+	"\x15OFPT_GET_CONFIG_REPLY\x10\b\x12\x13\n" +
+	"\x0fOFPT_SET_CONFIG\x10\t\x12\x12\n" +
+	"\x0eOFPT_PACKET_IN\x10\n" +
+	"\x12\x15\n" +
+	"\x11OFPT_FLOW_REMOVED\x10\v\x12\x14\n" +
+	"\x10OFPT_PORT_STATUS\x10\f\x12\x13\n" +
+	"\x0fOFPT_PACKET_OUT\x10\r\x12\x11\n" +
+	"\rOFPT_FLOW_MOD\x10\x0e\x12\x12\n" +
+	"\x0eOFPT_GROUP_MOD\x10\x0f\x12\x11\n" +
+	"\rOFPT_PORT_MOD\x10\x10\x12\x12\n" +
+	"\x0eOFPT_TABLE_MOD\x10\x11\x12\x1a\n" +
+	"\x16OFPT_MULTIPART_REQUEST\x10\x12\x12\x18\n" +
+	"\x14OFPT_MULTIPART_REPLY\x10\x13\x12\x18\n" +
+	"\x14OFPT_BARRIER_REQUEST\x10\x14\x12\x16\n" +
+	"\x12OFPT_BARRIER_REPLY\x10\x15\x12!\n" +
+	"\x1dOFPT_QUEUE_GET_CONFIG_REQUEST\x10\x16\x12\x1f\n" +
+	"\x1bOFPT_QUEUE_GET_CONFIG_REPLY\x10\x17\x12\x15\n" +
+	"\x11OFPT_ROLE_REQUEST\x10\x18\x12\x13\n" +
+	"\x0fOFPT_ROLE_REPLY\x10\x19\x12\x1a\n" +
+	"\x16OFPT_GET_ASYNC_REQUEST\x10\x1a\x12\x18\n" +
+	"\x14OFPT_GET_ASYNC_REPLY\x10\x1b\x12\x12\n" +
+	"\x0eOFPT_SET_ASYNC\x10\x1c\x12\x12\n" +
+	"\x0eOFPT_METER_MOD\x10\x1d*C\n" +
+	"\x13ofp_hello_elem_type\x12\x12\n" +
+	"\x0eOFPHET_INVALID\x10\x00\x12\x18\n" +
+	"\x14OFPHET_VERSIONBITMAP\x10\x01*e\n" +
+	"\x10ofp_config_flags\x12\x14\n" +
+	"\x10OFPC_FRAG_NORMAL\x10\x00\x12\x12\n" +
+	"\x0eOFPC_FRAG_DROP\x10\x01\x12\x13\n" +
+	"\x0fOFPC_FRAG_REASM\x10\x02\x12\x12\n" +
+	"\x0eOFPC_FRAG_MASK\x10\x03*@\n" +
+	"\x10ofp_table_config\x12\x11\n" +
+	"\rOFPTC_INVALID\x10\x00\x12\x19\n" +
+	"\x15OFPTC_DEPRECATED_MASK\x10\x03*>\n" +
+	"\tofp_table\x12\x11\n" +
+	"\rOFPTT_INVALID\x10\x00\x12\x0e\n" +
+	"\tOFPTT_MAX\x10\xfe\x01\x12\x0e\n" +
+	"\tOFPTT_ALL\x10\xff\x01*\xbb\x01\n" +
+	"\x10ofp_capabilities\x12\x10\n" +
+	"\fOFPC_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPC_FLOW_STATS\x10\x01\x12\x14\n" +
+	"\x10OFPC_TABLE_STATS\x10\x02\x12\x13\n" +
+	"\x0fOFPC_PORT_STATS\x10\x04\x12\x14\n" +
+	"\x10OFPC_GROUP_STATS\x10\b\x12\x11\n" +
+	"\rOFPC_IP_REASM\x10 \x12\x14\n" +
+	"\x10OFPC_QUEUE_STATS\x10@\x12\x16\n" +
+	"\x11OFPC_PORT_BLOCKED\x10\x80\x02*v\n" +
+	"\x0fofp_port_config\x12\x11\n" +
+	"\rOFPPC_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPPC_PORT_DOWN\x10\x01\x12\x11\n" +
+	"\rOFPPC_NO_RECV\x10\x04\x12\x10\n" +
+	"\fOFPPC_NO_FWD\x10 \x12\x16\n" +
+	"\x12OFPPC_NO_PACKET_IN\x10@*[\n" +
+	"\x0eofp_port_state\x12\x11\n" +
+	"\rOFPPS_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPPS_LINK_DOWN\x10\x01\x12\x11\n" +
+	"\rOFPPS_BLOCKED\x10\x02\x12\x0e\n" +
+	"\n" +
+	"OFPPS_LIVE\x10\x04*\xdd\x02\n" +
+	"\x11ofp_port_features\x12\x11\n" +
+	"\rOFPPF_INVALID\x10\x00\x12\x11\n" +
+	"\rOFPPF_10MB_HD\x10\x01\x12\x11\n" +
+	"\rOFPPF_10MB_FD\x10\x02\x12\x12\n" +
+	"\x0eOFPPF_100MB_HD\x10\x04\x12\x12\n" +
+	"\x0eOFPPF_100MB_FD\x10\b\x12\x10\n" +
+	"\fOFPPF_1GB_HD\x10\x10\x12\x10\n" +
+	"\fOFPPF_1GB_FD\x10 \x12\x11\n" +
+	"\rOFPPF_10GB_FD\x10@\x12\x12\n" +
+	"\rOFPPF_40GB_FD\x10\x80\x01\x12\x13\n" +
+	"\x0eOFPPF_100GB_FD\x10\x80\x02\x12\x11\n" +
+	"\fOFPPF_1TB_FD\x10\x80\x04\x12\x10\n" +
+	"\vOFPPF_OTHER\x10\x80\b\x12\x11\n" +
+	"\fOFPPF_COPPER\x10\x80\x10\x12\x10\n" +
+	"\vOFPPF_FIBER\x10\x80 \x12\x12\n" +
+	"\rOFPPF_AUTONEG\x10\x80@\x12\x11\n" +
+	"\vOFPPF_PAUSE\x10\x80\x80\x01\x12\x16\n" +
+	"\x10OFPPF_PAUSE_ASYM\x10\x80\x80\x02*D\n" +
+	"\x0fofp_port_reason\x12\r\n" +
+	"\tOFPPR_ADD\x10\x00\x12\x10\n" +
+	"\fOFPPR_DELETE\x10\x01\x12\x10\n" +
+	"\fOFPPR_MODIFY\x10\x02*F\n" +
+	"\x15ofp_device_connection\x12\x14\n" +
+	"\x10OFPDEV_CONNECTED\x10\x00\x12\x17\n" +
+	"\x13OFPDEV_DISCONNECTED\x10\x01*3\n" +
+	"\x0eofp_match_type\x12\x12\n" +
+	"\x0eOFPMT_STANDARD\x10\x00\x12\r\n" +
+	"\tOFPMT_OXM\x10\x01*k\n" +
+	"\rofp_oxm_class\x12\x10\n" +
+	"\fOFPXMC_NXM_0\x10\x00\x12\x10\n" +
+	"\fOFPXMC_NXM_1\x10\x01\x12\x1b\n" +
+	"\x15OFPXMC_OPENFLOW_BASIC\x10\x80\x80\x02\x12\x19\n" +
+	"\x13OFPXMC_EXPERIMENTER\x10\xff\xff\x03*\x90\b\n" +
+	"\x13oxm_ofb_field_types\x12\x16\n" +
+	"\x12OFPXMT_OFB_IN_PORT\x10\x00\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IN_PHY_PORT\x10\x01\x12\x17\n" +
+	"\x13OFPXMT_OFB_METADATA\x10\x02\x12\x16\n" +
+	"\x12OFPXMT_OFB_ETH_DST\x10\x03\x12\x16\n" +
+	"\x12OFPXMT_OFB_ETH_SRC\x10\x04\x12\x17\n" +
+	"\x13OFPXMT_OFB_ETH_TYPE\x10\x05\x12\x17\n" +
+	"\x13OFPXMT_OFB_VLAN_VID\x10\x06\x12\x17\n" +
+	"\x13OFPXMT_OFB_VLAN_PCP\x10\a\x12\x16\n" +
+	"\x12OFPXMT_OFB_IP_DSCP\x10\b\x12\x15\n" +
+	"\x11OFPXMT_OFB_IP_ECN\x10\t\x12\x17\n" +
+	"\x13OFPXMT_OFB_IP_PROTO\x10\n" +
+	"\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV4_SRC\x10\v\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV4_DST\x10\f\x12\x16\n" +
+	"\x12OFPXMT_OFB_TCP_SRC\x10\r\x12\x16\n" +
+	"\x12OFPXMT_OFB_TCP_DST\x10\x0e\x12\x16\n" +
+	"\x12OFPXMT_OFB_UDP_SRC\x10\x0f\x12\x16\n" +
+	"\x12OFPXMT_OFB_UDP_DST\x10\x10\x12\x17\n" +
+	"\x13OFPXMT_OFB_SCTP_SRC\x10\x11\x12\x17\n" +
+	"\x13OFPXMT_OFB_SCTP_DST\x10\x12\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV4_TYPE\x10\x13\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV4_CODE\x10\x14\x12\x15\n" +
+	"\x11OFPXMT_OFB_ARP_OP\x10\x15\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_SPA\x10\x16\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_TPA\x10\x17\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_SHA\x10\x18\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_THA\x10\x19\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV6_SRC\x10\x1a\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV6_DST\x10\x1b\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_FLABEL\x10\x1c\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV6_TYPE\x10\x1d\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV6_CODE\x10\x1e\x12\x1d\n" +
+	"\x19OFPXMT_OFB_IPV6_ND_TARGET\x10\x1f\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_ND_SLL\x10 \x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_ND_TLL\x10!\x12\x19\n" +
+	"\x15OFPXMT_OFB_MPLS_LABEL\x10\"\x12\x16\n" +
+	"\x12OFPXMT_OFB_MPLS_TC\x10#\x12\x17\n" +
+	"\x13OFPXMT_OFB_MPLS_BOS\x10$\x12\x17\n" +
+	"\x13OFPXMT_OFB_PBB_ISID\x10%\x12\x18\n" +
+	"\x14OFPXMT_OFB_TUNNEL_ID\x10&\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_EXTHDR\x10'*3\n" +
+	"\vofp_vlan_id\x12\x0f\n" +
+	"\vOFPVID_NONE\x10\x00\x12\x13\n" +
+	"\x0eOFPVID_PRESENT\x10\x80 *\xc9\x01\n" +
+	"\x14ofp_ipv6exthdr_flags\x12\x12\n" +
+	"\x0eOFPIEH_INVALID\x10\x00\x12\x11\n" +
+	"\rOFPIEH_NONEXT\x10\x01\x12\x0e\n" +
+	"\n" +
+	"OFPIEH_ESP\x10\x02\x12\x0f\n" +
+	"\vOFPIEH_AUTH\x10\x04\x12\x0f\n" +
+	"\vOFPIEH_DEST\x10\b\x12\x0f\n" +
+	"\vOFPIEH_FRAG\x10\x10\x12\x11\n" +
+	"\rOFPIEH_ROUTER\x10 \x12\x0e\n" +
+	"\n" +
+	"OFPIEH_HOP\x10@\x12\x11\n" +
+	"\fOFPIEH_UNREP\x10\x80\x01\x12\x11\n" +
+	"\fOFPIEH_UNSEQ\x10\x80\x02*\xfc\x02\n" +
+	"\x0fofp_action_type\x12\x10\n" +
+	"\fOFPAT_OUTPUT\x10\x00\x12\x16\n" +
+	"\x12OFPAT_COPY_TTL_OUT\x10\v\x12\x15\n" +
+	"\x11OFPAT_COPY_TTL_IN\x10\f\x12\x16\n" +
+	"\x12OFPAT_SET_MPLS_TTL\x10\x0f\x12\x16\n" +
+	"\x12OFPAT_DEC_MPLS_TTL\x10\x10\x12\x13\n" +
+	"\x0fOFPAT_PUSH_VLAN\x10\x11\x12\x12\n" +
+	"\x0eOFPAT_POP_VLAN\x10\x12\x12\x13\n" +
+	"\x0fOFPAT_PUSH_MPLS\x10\x13\x12\x12\n" +
+	"\x0eOFPAT_POP_MPLS\x10\x14\x12\x13\n" +
+	"\x0fOFPAT_SET_QUEUE\x10\x15\x12\x0f\n" +
+	"\vOFPAT_GROUP\x10\x16\x12\x14\n" +
+	"\x10OFPAT_SET_NW_TTL\x10\x17\x12\x14\n" +
+	"\x10OFPAT_DEC_NW_TTL\x10\x18\x12\x13\n" +
+	"\x0fOFPAT_SET_FIELD\x10\x19\x12\x12\n" +
+	"\x0eOFPAT_PUSH_PBB\x10\x1a\x12\x11\n" +
+	"\rOFPAT_POP_PBB\x10\x1b\x12\x18\n" +
+	"\x12OFPAT_EXPERIMENTER\x10\xff\xff\x03*V\n" +
+	"\x16ofp_controller_max_len\x12\x12\n" +
+	"\x0eOFPCML_INVALID\x10\x00\x12\x10\n" +
+	"\n" +
+	"OFPCML_MAX\x10\xe5\xff\x03\x12\x16\n" +
+	"\x10OFPCML_NO_BUFFER\x10\xff\xff\x03*\xcf\x01\n" +
+	"\x14ofp_instruction_type\x12\x11\n" +
+	"\rOFPIT_INVALID\x10\x00\x12\x14\n" +
+	"\x10OFPIT_GOTO_TABLE\x10\x01\x12\x18\n" +
+	"\x14OFPIT_WRITE_METADATA\x10\x02\x12\x17\n" +
+	"\x13OFPIT_WRITE_ACTIONS\x10\x03\x12\x17\n" +
+	"\x13OFPIT_APPLY_ACTIONS\x10\x04\x12\x17\n" +
+	"\x13OFPIT_CLEAR_ACTIONS\x10\x05\x12\x0f\n" +
+	"\vOFPIT_METER\x10\x06\x12\x18\n" +
+	"\x12OFPIT_EXPERIMENTER\x10\xff\xff\x03*{\n" +
+	"\x14ofp_flow_mod_command\x12\r\n" +
+	"\tOFPFC_ADD\x10\x00\x12\x10\n" +
+	"\fOFPFC_MODIFY\x10\x01\x12\x17\n" +
+	"\x13OFPFC_MODIFY_STRICT\x10\x02\x12\x10\n" +
+	"\fOFPFC_DELETE\x10\x03\x12\x17\n" +
+	"\x13OFPFC_DELETE_STRICT\x10\x04*\xa3\x01\n" +
+	"\x12ofp_flow_mod_flags\x12\x11\n" +
+	"\rOFPFF_INVALID\x10\x00\x12\x17\n" +
+	"\x13OFPFF_SEND_FLOW_REM\x10\x01\x12\x17\n" +
+	"\x13OFPFF_CHECK_OVERLAP\x10\x02\x12\x16\n" +
+	"\x12OFPFF_RESET_COUNTS\x10\x04\x12\x17\n" +
+	"\x13OFPFF_NO_PKT_COUNTS\x10\b\x12\x17\n" +
+	"\x13OFPFF_NO_BYT_COUNTS\x10\x10*S\n" +
+	"\tofp_group\x12\x10\n" +
+	"\fOFPG_INVALID\x10\x00\x12\x10\n" +
+	"\bOFPG_MAX\x10\x80\xfe\xff\xff\a\x12\x10\n" +
+	"\bOFPG_ALL\x10\xfc\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPG_ANY\x10\xff\xff\xff\xff\a*J\n" +
+	"\x15ofp_group_mod_command\x12\r\n" +
+	"\tOFPGC_ADD\x10\x00\x12\x10\n" +
+	"\fOFPGC_MODIFY\x10\x01\x12\x10\n" +
+	"\fOFPGC_DELETE\x10\x02*S\n" +
+	"\x0eofp_group_type\x12\r\n" +
+	"\tOFPGT_ALL\x10\x00\x12\x10\n" +
+	"\fOFPGT_SELECT\x10\x01\x12\x12\n" +
+	"\x0eOFPGT_INDIRECT\x10\x02\x12\f\n" +
+	"\bOFPGT_FF\x10\x03*P\n" +
+	"\x14ofp_packet_in_reason\x12\x11\n" +
+	"\rOFPR_NO_MATCH\x10\x00\x12\x0f\n" +
+	"\vOFPR_ACTION\x10\x01\x12\x14\n" +
+	"\x10OFPR_INVALID_TTL\x10\x02*\x8b\x01\n" +
+	"\x17ofp_flow_removed_reason\x12\x16\n" +
+	"\x12OFPRR_IDLE_TIMEOUT\x10\x00\x12\x16\n" +
+	"\x12OFPRR_HARD_TIMEOUT\x10\x01\x12\x10\n" +
+	"\fOFPRR_DELETE\x10\x02\x12\x16\n" +
+	"\x12OFPRR_GROUP_DELETE\x10\x03\x12\x16\n" +
+	"\x12OFPRR_METER_DELETE\x10\x04*n\n" +
+	"\tofp_meter\x12\r\n" +
+	"\tOFPM_ZERO\x10\x00\x12\x10\n" +
+	"\bOFPM_MAX\x10\x80\x80\xfc\xff\a\x12\x15\n" +
+	"\rOFPM_SLOWPATH\x10\xfd\xff\xff\xff\a\x12\x17\n" +
+	"\x0fOFPM_CONTROLLER\x10\xfe\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPM_ALL\x10\xff\xff\xff\xff\a*m\n" +
+	"\x13ofp_meter_band_type\x12\x12\n" +
+	"\x0eOFPMBT_INVALID\x10\x00\x12\x0f\n" +
+	"\vOFPMBT_DROP\x10\x01\x12\x16\n" +
+	"\x12OFPMBT_DSCP_REMARK\x10\x02\x12\x19\n" +
+	"\x13OFPMBT_EXPERIMENTER\x10\xff\xff\x03*J\n" +
+	"\x15ofp_meter_mod_command\x12\r\n" +
+	"\tOFPMC_ADD\x10\x00\x12\x10\n" +
+	"\fOFPMC_MODIFY\x10\x01\x12\x10\n" +
+	"\fOFPMC_DELETE\x10\x02*g\n" +
+	"\x0fofp_meter_flags\x12\x11\n" +
+	"\rOFPMF_INVALID\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OFPMF_KBPS\x10\x01\x12\x0f\n" +
+	"\vOFPMF_PKTPS\x10\x02\x12\x0f\n" +
+	"\vOFPMF_BURST\x10\x04\x12\x0f\n" +
+	"\vOFPMF_STATS\x10\b*\xa4\x03\n" +
+	"\x0eofp_error_type\x12\x16\n" +
+	"\x12OFPET_HELLO_FAILED\x10\x00\x12\x15\n" +
+	"\x11OFPET_BAD_REQUEST\x10\x01\x12\x14\n" +
+	"\x10OFPET_BAD_ACTION\x10\x02\x12\x19\n" +
+	"\x15OFPET_BAD_INSTRUCTION\x10\x03\x12\x13\n" +
+	"\x0fOFPET_BAD_MATCH\x10\x04\x12\x19\n" +
+	"\x15OFPET_FLOW_MOD_FAILED\x10\x05\x12\x1a\n" +
+	"\x16OFPET_GROUP_MOD_FAILED\x10\x06\x12\x19\n" +
+	"\x15OFPET_PORT_MOD_FAILED\x10\a\x12\x1a\n" +
+	"\x16OFPET_TABLE_MOD_FAILED\x10\b\x12\x19\n" +
+	"\x15OFPET_QUEUE_OP_FAILED\x10\t\x12\x1e\n" +
+	"\x1aOFPET_SWITCH_CONFIG_FAILED\x10\n" +
+	"\x12\x1d\n" +
+	"\x19OFPET_ROLE_REQUEST_FAILED\x10\v\x12\x1a\n" +
+	"\x16OFPET_METER_MOD_FAILED\x10\f\x12\x1f\n" +
+	"\x1bOFPET_TABLE_FEATURES_FAILED\x10\r\x12\x18\n" +
+	"\x12OFPET_EXPERIMENTER\x10\xff\xff\x03*B\n" +
+	"\x15ofp_hello_failed_code\x12\x17\n" +
+	"\x13OFPHFC_INCOMPATIBLE\x10\x00\x12\x10\n" +
+	"\fOFPHFC_EPERM\x10\x01*\xed\x02\n" +
+	"\x14ofp_bad_request_code\x12\x16\n" +
+	"\x12OFPBRC_BAD_VERSION\x10\x00\x12\x13\n" +
+	"\x0fOFPBRC_BAD_TYPE\x10\x01\x12\x18\n" +
+	"\x14OFPBRC_BAD_MULTIPART\x10\x02\x12\x1b\n" +
+	"\x17OFPBRC_BAD_EXPERIMENTER\x10\x03\x12\x17\n" +
+	"\x13OFPBRC_BAD_EXP_TYPE\x10\x04\x12\x10\n" +
+	"\fOFPBRC_EPERM\x10\x05\x12\x12\n" +
+	"\x0eOFPBRC_BAD_LEN\x10\x06\x12\x17\n" +
+	"\x13OFPBRC_BUFFER_EMPTY\x10\a\x12\x19\n" +
+	"\x15OFPBRC_BUFFER_UNKNOWN\x10\b\x12\x17\n" +
+	"\x13OFPBRC_BAD_TABLE_ID\x10\t\x12\x13\n" +
+	"\x0fOFPBRC_IS_SLAVE\x10\n" +
+	"\x12\x13\n" +
+	"\x0fOFPBRC_BAD_PORT\x10\v\x12\x15\n" +
+	"\x11OFPBRC_BAD_PACKET\x10\f\x12$\n" +
+	" OFPBRC_MULTIPART_BUFFER_OVERFLOW\x10\r*\x9c\x03\n" +
+	"\x13ofp_bad_action_code\x12\x13\n" +
+	"\x0fOFPBAC_BAD_TYPE\x10\x00\x12\x12\n" +
+	"\x0eOFPBAC_BAD_LEN\x10\x01\x12\x1b\n" +
+	"\x17OFPBAC_BAD_EXPERIMENTER\x10\x02\x12\x17\n" +
+	"\x13OFPBAC_BAD_EXP_TYPE\x10\x03\x12\x17\n" +
+	"\x13OFPBAC_BAD_OUT_PORT\x10\x04\x12\x17\n" +
+	"\x13OFPBAC_BAD_ARGUMENT\x10\x05\x12\x10\n" +
+	"\fOFPBAC_EPERM\x10\x06\x12\x13\n" +
+	"\x0fOFPBAC_TOO_MANY\x10\a\x12\x14\n" +
+	"\x10OFPBAC_BAD_QUEUE\x10\b\x12\x18\n" +
+	"\x14OFPBAC_BAD_OUT_GROUP\x10\t\x12\x1d\n" +
+	"\x19OFPBAC_MATCH_INCONSISTENT\x10\n" +
+	"\x12\x1c\n" +
+	"\x18OFPBAC_UNSUPPORTED_ORDER\x10\v\x12\x12\n" +
+	"\x0eOFPBAC_BAD_TAG\x10\f\x12\x17\n" +
+	"\x13OFPBAC_BAD_SET_TYPE\x10\r\x12\x16\n" +
+	"\x12OFPBAC_BAD_SET_LEN\x10\x0e\x12\x1b\n" +
+	"\x17OFPBAC_BAD_SET_ARGUMENT\x10\x0f*\xfa\x01\n" +
+	"\x18ofp_bad_instruction_code\x12\x17\n" +
+	"\x13OFPBIC_UNKNOWN_INST\x10\x00\x12\x15\n" +
+	"\x11OFPBIC_UNSUP_INST\x10\x01\x12\x17\n" +
+	"\x13OFPBIC_BAD_TABLE_ID\x10\x02\x12\x19\n" +
+	"\x15OFPBIC_UNSUP_METADATA\x10\x03\x12\x1e\n" +
+	"\x1aOFPBIC_UNSUP_METADATA_MASK\x10\x04\x12\x1b\n" +
+	"\x17OFPBIC_BAD_EXPERIMENTER\x10\x05\x12\x17\n" +
+	"\x13OFPBIC_BAD_EXP_TYPE\x10\x06\x12\x12\n" +
+	"\x0eOFPBIC_BAD_LEN\x10\a\x12\x10\n" +
+	"\fOFPBIC_EPERM\x10\b*\xa5\x02\n" +
+	"\x12ofp_bad_match_code\x12\x13\n" +
+	"\x0fOFPBMC_BAD_TYPE\x10\x00\x12\x12\n" +
+	"\x0eOFPBMC_BAD_LEN\x10\x01\x12\x12\n" +
+	"\x0eOFPBMC_BAD_TAG\x10\x02\x12\x1b\n" +
+	"\x17OFPBMC_BAD_DL_ADDR_MASK\x10\x03\x12\x1b\n" +
+	"\x17OFPBMC_BAD_NW_ADDR_MASK\x10\x04\x12\x18\n" +
+	"\x14OFPBMC_BAD_WILDCARDS\x10\x05\x12\x14\n" +
+	"\x10OFPBMC_BAD_FIELD\x10\x06\x12\x14\n" +
+	"\x10OFPBMC_BAD_VALUE\x10\a\x12\x13\n" +
+	"\x0fOFPBMC_BAD_MASK\x10\b\x12\x15\n" +
+	"\x11OFPBMC_BAD_PREREQ\x10\t\x12\x14\n" +
+	"\x10OFPBMC_DUP_FIELD\x10\n" +
+	"\x12\x10\n" +
+	"\fOFPBMC_EPERM\x10\v*\xd2\x01\n" +
+	"\x18ofp_flow_mod_failed_code\x12\x13\n" +
+	"\x0fOFPFMFC_UNKNOWN\x10\x00\x12\x16\n" +
+	"\x12OFPFMFC_TABLE_FULL\x10\x01\x12\x18\n" +
+	"\x14OFPFMFC_BAD_TABLE_ID\x10\x02\x12\x13\n" +
+	"\x0fOFPFMFC_OVERLAP\x10\x03\x12\x11\n" +
+	"\rOFPFMFC_EPERM\x10\x04\x12\x17\n" +
+	"\x13OFPFMFC_BAD_TIMEOUT\x10\x05\x12\x17\n" +
+	"\x13OFPFMFC_BAD_COMMAND\x10\x06\x12\x15\n" +
+	"\x11OFPFMFC_BAD_FLAGS\x10\a*\xa1\x03\n" +
+	"\x19ofp_group_mod_failed_code\x12\x18\n" +
+	"\x14OFPGMFC_GROUP_EXISTS\x10\x00\x12\x19\n" +
+	"\x15OFPGMFC_INVALID_GROUP\x10\x01\x12\x1e\n" +
+	"\x1aOFPGMFC_WEIGHT_UNSUPPORTED\x10\x02\x12\x19\n" +
+	"\x15OFPGMFC_OUT_OF_GROUPS\x10\x03\x12\x1a\n" +
+	"\x16OFPGMFC_OUT_OF_BUCKETS\x10\x04\x12 \n" +
+	"\x1cOFPGMFC_CHAINING_UNSUPPORTED\x10\x05\x12\x1d\n" +
+	"\x19OFPGMFC_WATCH_UNSUPPORTED\x10\x06\x12\x10\n" +
+	"\fOFPGMFC_LOOP\x10\a\x12\x19\n" +
+	"\x15OFPGMFC_UNKNOWN_GROUP\x10\b\x12\x19\n" +
+	"\x15OFPGMFC_CHAINED_GROUP\x10\t\x12\x14\n" +
+	"\x10OFPGMFC_BAD_TYPE\x10\n" +
+	"\x12\x17\n" +
+	"\x13OFPGMFC_BAD_COMMAND\x10\v\x12\x16\n" +
+	"\x12OFPGMFC_BAD_BUCKET\x10\f\x12\x15\n" +
+	"\x11OFPGMFC_BAD_WATCH\x10\r\x12\x11\n" +
+	"\rOFPGMFC_EPERM\x10\x0e*\x8f\x01\n" +
+	"\x18ofp_port_mod_failed_code\x12\x14\n" +
+	"\x10OFPPMFC_BAD_PORT\x10\x00\x12\x17\n" +
+	"\x13OFPPMFC_BAD_HW_ADDR\x10\x01\x12\x16\n" +
+	"\x12OFPPMFC_BAD_CONFIG\x10\x02\x12\x19\n" +
+	"\x15OFPPMFC_BAD_ADVERTISE\x10\x03\x12\x11\n" +
+	"\rOFPPMFC_EPERM\x10\x04*]\n" +
+	"\x19ofp_table_mod_failed_code\x12\x15\n" +
+	"\x11OFPTMFC_BAD_TABLE\x10\x00\x12\x16\n" +
+	"\x12OFPTMFC_BAD_CONFIG\x10\x01\x12\x11\n" +
+	"\rOFPTMFC_EPERM\x10\x02*Z\n" +
+	"\x18ofp_queue_op_failed_code\x12\x14\n" +
+	"\x10OFPQOFC_BAD_PORT\x10\x00\x12\x15\n" +
+	"\x11OFPQOFC_BAD_QUEUE\x10\x01\x12\x11\n" +
+	"\rOFPQOFC_EPERM\x10\x02*^\n" +
+	"\x1dofp_switch_config_failed_code\x12\x15\n" +
+	"\x11OFPSCFC_BAD_FLAGS\x10\x00\x12\x13\n" +
+	"\x0fOFPSCFC_BAD_LEN\x10\x01\x12\x11\n" +
+	"\rOFPSCFC_EPERM\x10\x02*Z\n" +
+	"\x1cofp_role_request_failed_code\x12\x11\n" +
+	"\rOFPRRFC_STALE\x10\x00\x12\x11\n" +
+	"\rOFPRRFC_UNSUP\x10\x01\x12\x14\n" +
+	"\x10OFPRRFC_BAD_ROLE\x10\x02*\xc5\x02\n" +
+	"\x19ofp_meter_mod_failed_code\x12\x13\n" +
+	"\x0fOFPMMFC_UNKNOWN\x10\x00\x12\x18\n" +
+	"\x14OFPMMFC_METER_EXISTS\x10\x01\x12\x19\n" +
+	"\x15OFPMMFC_INVALID_METER\x10\x02\x12\x19\n" +
+	"\x15OFPMMFC_UNKNOWN_METER\x10\x03\x12\x17\n" +
+	"\x13OFPMMFC_BAD_COMMAND\x10\x04\x12\x15\n" +
+	"\x11OFPMMFC_BAD_FLAGS\x10\x05\x12\x14\n" +
+	"\x10OFPMMFC_BAD_RATE\x10\x06\x12\x15\n" +
+	"\x11OFPMMFC_BAD_BURST\x10\a\x12\x14\n" +
+	"\x10OFPMMFC_BAD_BAND\x10\b\x12\x1b\n" +
+	"\x17OFPMMFC_BAD_BAND_DETAIL\x10\t\x12\x19\n" +
+	"\x15OFPMMFC_OUT_OF_METERS\x10\n" +
+	"\x12\x18\n" +
+	"\x14OFPMMFC_OUT_OF_BANDS\x10\v*\xa9\x01\n" +
+	"\x1eofp_table_features_failed_code\x12\x15\n" +
+	"\x11OFPTFFC_BAD_TABLE\x10\x00\x12\x18\n" +
+	"\x14OFPTFFC_BAD_METADATA\x10\x01\x12\x14\n" +
+	"\x10OFPTFFC_BAD_TYPE\x10\x02\x12\x13\n" +
+	"\x0fOFPTFFC_BAD_LEN\x10\x03\x12\x18\n" +
+	"\x14OFPTFFC_BAD_ARGUMENT\x10\x04\x12\x11\n" +
+	"\rOFPTFFC_EPERM\x10\x05*\xce\x02\n" +
+	"\x12ofp_multipart_type\x12\x0e\n" +
+	"\n" +
+	"OFPMP_DESC\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OFPMP_FLOW\x10\x01\x12\x13\n" +
+	"\x0fOFPMP_AGGREGATE\x10\x02\x12\x0f\n" +
+	"\vOFPMP_TABLE\x10\x03\x12\x14\n" +
+	"\x10OFPMP_PORT_STATS\x10\x04\x12\x0f\n" +
+	"\vOFPMP_QUEUE\x10\x05\x12\x0f\n" +
+	"\vOFPMP_GROUP\x10\x06\x12\x14\n" +
+	"\x10OFPMP_GROUP_DESC\x10\a\x12\x18\n" +
+	"\x14OFPMP_GROUP_FEATURES\x10\b\x12\x0f\n" +
+	"\vOFPMP_METER\x10\t\x12\x16\n" +
+	"\x12OFPMP_METER_CONFIG\x10\n" +
+	"\x12\x18\n" +
+	"\x14OFPMP_METER_FEATURES\x10\v\x12\x18\n" +
+	"\x14OFPMP_TABLE_FEATURES\x10\f\x12\x13\n" +
+	"\x0fOFPMP_PORT_DESC\x10\r\x12\x18\n" +
+	"\x12OFPMP_EXPERIMENTER\x10\xff\xff\x03*J\n" +
+	"\x1bofp_multipart_request_flags\x12\x16\n" +
+	"\x12OFPMPF_REQ_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPMPF_REQ_MORE\x10\x01*L\n" +
+	"\x19ofp_multipart_reply_flags\x12\x18\n" +
+	"\x14OFPMPF_REPLY_INVALID\x10\x00\x12\x15\n" +
+	"\x11OFPMPF_REPLY_MORE\x10\x01*\xe4\x03\n" +
+	"\x1bofp_table_feature_prop_type\x12\x18\n" +
+	"\x14OFPTFPT_INSTRUCTIONS\x10\x00\x12\x1d\n" +
+	"\x19OFPTFPT_INSTRUCTIONS_MISS\x10\x01\x12\x17\n" +
+	"\x13OFPTFPT_NEXT_TABLES\x10\x02\x12\x1c\n" +
+	"\x18OFPTFPT_NEXT_TABLES_MISS\x10\x03\x12\x19\n" +
+	"\x15OFPTFPT_WRITE_ACTIONS\x10\x04\x12\x1e\n" +
+	"\x1aOFPTFPT_WRITE_ACTIONS_MISS\x10\x05\x12\x19\n" +
+	"\x15OFPTFPT_APPLY_ACTIONS\x10\x06\x12\x1e\n" +
+	"\x1aOFPTFPT_APPLY_ACTIONS_MISS\x10\a\x12\x11\n" +
+	"\rOFPTFPT_MATCH\x10\b\x12\x15\n" +
+	"\x11OFPTFPT_WILDCARDS\x10\n" +
+	"\x12\x1a\n" +
+	"\x16OFPTFPT_WRITE_SETFIELD\x10\f\x12\x1f\n" +
+	"\x1bOFPTFPT_WRITE_SETFIELD_MISS\x10\r\x12\x1a\n" +
+	"\x16OFPTFPT_APPLY_SETFIELD\x10\x0e\x12\x1f\n" +
+	"\x1bOFPTFPT_APPLY_SETFIELD_MISS\x10\x0f\x12\x1a\n" +
+	"\x14OFPTFPT_EXPERIMENTER\x10\xfe\xff\x03\x12\x1f\n" +
+	"\x19OFPTFPT_EXPERIMENTER_MISS\x10\xff\xff\x03*\x93\x01\n" +
+	"\x16ofp_group_capabilities\x12\x12\n" +
+	"\x0eOFPGFC_INVALID\x10\x00\x12\x18\n" +
+	"\x14OFPGFC_SELECT_WEIGHT\x10\x01\x12\x1a\n" +
+	"\x16OFPGFC_SELECT_LIVENESS\x10\x02\x12\x13\n" +
+	"\x0fOFPGFC_CHAINING\x10\x04\x12\x1a\n" +
+	"\x16OFPGFC_CHAINING_CHECKS\x10\b*k\n" +
+	"\x14ofp_queue_properties\x12\x11\n" +
+	"\rOFPQT_INVALID\x10\x00\x12\x12\n" +
+	"\x0eOFPQT_MIN_RATE\x10\x01\x12\x12\n" +
+	"\x0eOFPQT_MAX_RATE\x10\x02\x12\x18\n" +
+	"\x12OFPQT_EXPERIMENTER\x10\xff\xff\x03*q\n" +
+	"\x13ofp_controller_role\x12\x17\n" +
+	"\x13OFPCR_ROLE_NOCHANGE\x10\x00\x12\x14\n" +
+	"\x10OFPCR_ROLE_EQUAL\x10\x01\x12\x15\n" +
+	"\x11OFPCR_ROLE_MASTER\x10\x02\x12\x14\n" +
+	"\x10OFPCR_ROLE_SLAVE\x10\x03BU\n" +
+	"\x1eorg.opencord.voltha.openflow13Z3github.com/opencord/voltha-protos/v5/go/openflow_13b\x06proto3"
+
+var (
+	file_voltha_protos_openflow_13_proto_rawDescOnce sync.Once
+	file_voltha_protos_openflow_13_proto_rawDescData []byte
+)
+
+func file_voltha_protos_openflow_13_proto_rawDescGZIP() []byte {
+	file_voltha_protos_openflow_13_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_openflow_13_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_openflow_13_proto_rawDesc), len(file_voltha_protos_openflow_13_proto_rawDesc)))
+	})
+	return file_voltha_protos_openflow_13_proto_rawDescData
+}
+
+var file_voltha_protos_openflow_13_proto_enumTypes = make([]protoimpl.EnumInfo, 53)
+var file_voltha_protos_openflow_13_proto_msgTypes = make([]protoimpl.MessageInfo, 99)
+var file_voltha_protos_openflow_13_proto_goTypes = []any{
+	(OfpPortNo)(0),                          // 0: openflow_13.ofp_port_no
+	(OfpType)(0),                            // 1: openflow_13.ofp_type
+	(OfpHelloElemType)(0),                   // 2: openflow_13.ofp_hello_elem_type
+	(OfpConfigFlags)(0),                     // 3: openflow_13.ofp_config_flags
+	(OfpTableConfig)(0),                     // 4: openflow_13.ofp_table_config
+	(OfpTable)(0),                           // 5: openflow_13.ofp_table
+	(OfpCapabilities)(0),                    // 6: openflow_13.ofp_capabilities
+	(OfpPortConfig)(0),                      // 7: openflow_13.ofp_port_config
+	(OfpPortState)(0),                       // 8: openflow_13.ofp_port_state
+	(OfpPortFeatures)(0),                    // 9: openflow_13.ofp_port_features
+	(OfpPortReason)(0),                      // 10: openflow_13.ofp_port_reason
+	(OfpDeviceConnection)(0),                // 11: openflow_13.ofp_device_connection
+	(OfpMatchType)(0),                       // 12: openflow_13.ofp_match_type
+	(OfpOxmClass)(0),                        // 13: openflow_13.ofp_oxm_class
+	(OxmOfbFieldTypes)(0),                   // 14: openflow_13.oxm_ofb_field_types
+	(OfpVlanId)(0),                          // 15: openflow_13.ofp_vlan_id
+	(OfpIpv6ExthdrFlags)(0),                 // 16: openflow_13.ofp_ipv6exthdr_flags
+	(OfpActionType)(0),                      // 17: openflow_13.ofp_action_type
+	(OfpControllerMaxLen)(0),                // 18: openflow_13.ofp_controller_max_len
+	(OfpInstructionType)(0),                 // 19: openflow_13.ofp_instruction_type
+	(OfpFlowModCommand)(0),                  // 20: openflow_13.ofp_flow_mod_command
+	(OfpFlowModFlags)(0),                    // 21: openflow_13.ofp_flow_mod_flags
+	(OfpGroup)(0),                           // 22: openflow_13.ofp_group
+	(OfpGroupModCommand)(0),                 // 23: openflow_13.ofp_group_mod_command
+	(OfpGroupType)(0),                       // 24: openflow_13.ofp_group_type
+	(OfpPacketInReason)(0),                  // 25: openflow_13.ofp_packet_in_reason
+	(OfpFlowRemovedReason)(0),               // 26: openflow_13.ofp_flow_removed_reason
+	(OfpMeter)(0),                           // 27: openflow_13.ofp_meter
+	(OfpMeterBandType)(0),                   // 28: openflow_13.ofp_meter_band_type
+	(OfpMeterModCommand)(0),                 // 29: openflow_13.ofp_meter_mod_command
+	(OfpMeterFlags)(0),                      // 30: openflow_13.ofp_meter_flags
+	(OfpErrorType)(0),                       // 31: openflow_13.ofp_error_type
+	(OfpHelloFailedCode)(0),                 // 32: openflow_13.ofp_hello_failed_code
+	(OfpBadRequestCode)(0),                  // 33: openflow_13.ofp_bad_request_code
+	(OfpBadActionCode)(0),                   // 34: openflow_13.ofp_bad_action_code
+	(OfpBadInstructionCode)(0),              // 35: openflow_13.ofp_bad_instruction_code
+	(OfpBadMatchCode)(0),                    // 36: openflow_13.ofp_bad_match_code
+	(OfpFlowModFailedCode)(0),               // 37: openflow_13.ofp_flow_mod_failed_code
+	(OfpGroupModFailedCode)(0),              // 38: openflow_13.ofp_group_mod_failed_code
+	(OfpPortModFailedCode)(0),               // 39: openflow_13.ofp_port_mod_failed_code
+	(OfpTableModFailedCode)(0),              // 40: openflow_13.ofp_table_mod_failed_code
+	(OfpQueueOpFailedCode)(0),               // 41: openflow_13.ofp_queue_op_failed_code
+	(OfpSwitchConfigFailedCode)(0),          // 42: openflow_13.ofp_switch_config_failed_code
+	(OfpRoleRequestFailedCode)(0),           // 43: openflow_13.ofp_role_request_failed_code
+	(OfpMeterModFailedCode)(0),              // 44: openflow_13.ofp_meter_mod_failed_code
+	(OfpTableFeaturesFailedCode)(0),         // 45: openflow_13.ofp_table_features_failed_code
+	(OfpMultipartType)(0),                   // 46: openflow_13.ofp_multipart_type
+	(OfpMultipartRequestFlags)(0),           // 47: openflow_13.ofp_multipart_request_flags
+	(OfpMultipartReplyFlags)(0),             // 48: openflow_13.ofp_multipart_reply_flags
+	(OfpTableFeaturePropType)(0),            // 49: openflow_13.ofp_table_feature_prop_type
+	(OfpGroupCapabilities)(0),               // 50: openflow_13.ofp_group_capabilities
+	(OfpQueueProperties)(0),                 // 51: openflow_13.ofp_queue_properties
+	(OfpControllerRole)(0),                  // 52: openflow_13.ofp_controller_role
+	(*OfpHeader)(nil),                       // 53: openflow_13.ofp_header
+	(*OfpHelloElemHeader)(nil),              // 54: openflow_13.ofp_hello_elem_header
+	(*OfpHelloElemVersionbitmap)(nil),       // 55: openflow_13.ofp_hello_elem_versionbitmap
+	(*OfpHello)(nil),                        // 56: openflow_13.ofp_hello
+	(*OfpSwitchConfig)(nil),                 // 57: openflow_13.ofp_switch_config
+	(*OfpTableMod)(nil),                     // 58: openflow_13.ofp_table_mod
+	(*OfpPort)(nil),                         // 59: openflow_13.ofp_port
+	(*OfpSwitchFeatures)(nil),               // 60: openflow_13.ofp_switch_features
+	(*OfpPortStatus)(nil),                   // 61: openflow_13.ofp_port_status
+	(*OfpDeviceStatus)(nil),                 // 62: openflow_13.ofp_device_status
+	(*OfpPortMod)(nil),                      // 63: openflow_13.ofp_port_mod
+	(*OfpMatch)(nil),                        // 64: openflow_13.ofp_match
+	(*OfpOxmField)(nil),                     // 65: openflow_13.ofp_oxm_field
+	(*OfpOxmOfbField)(nil),                  // 66: openflow_13.ofp_oxm_ofb_field
+	(*OfpOxmExperimenterField)(nil),         // 67: openflow_13.ofp_oxm_experimenter_field
+	(*OfpAction)(nil),                       // 68: openflow_13.ofp_action
+	(*OfpActionOutput)(nil),                 // 69: openflow_13.ofp_action_output
+	(*OfpActionMplsTtl)(nil),                // 70: openflow_13.ofp_action_mpls_ttl
+	(*OfpActionPush)(nil),                   // 71: openflow_13.ofp_action_push
+	(*OfpActionPopMpls)(nil),                // 72: openflow_13.ofp_action_pop_mpls
+	(*OfpActionGroup)(nil),                  // 73: openflow_13.ofp_action_group
+	(*OfpActionNwTtl)(nil),                  // 74: openflow_13.ofp_action_nw_ttl
+	(*OfpActionSetField)(nil),               // 75: openflow_13.ofp_action_set_field
+	(*OfpActionExperimenter)(nil),           // 76: openflow_13.ofp_action_experimenter
+	(*OfpInstruction)(nil),                  // 77: openflow_13.ofp_instruction
+	(*OfpInstructionGotoTable)(nil),         // 78: openflow_13.ofp_instruction_goto_table
+	(*OfpInstructionWriteMetadata)(nil),     // 79: openflow_13.ofp_instruction_write_metadata
+	(*OfpInstructionActions)(nil),           // 80: openflow_13.ofp_instruction_actions
+	(*OfpInstructionMeter)(nil),             // 81: openflow_13.ofp_instruction_meter
+	(*OfpInstructionExperimenter)(nil),      // 82: openflow_13.ofp_instruction_experimenter
+	(*OfpFlowMod)(nil),                      // 83: openflow_13.ofp_flow_mod
+	(*OfpBucket)(nil),                       // 84: openflow_13.ofp_bucket
+	(*OfpGroupMod)(nil),                     // 85: openflow_13.ofp_group_mod
+	(*OfpPacketOut)(nil),                    // 86: openflow_13.ofp_packet_out
+	(*OfpPacketIn)(nil),                     // 87: openflow_13.ofp_packet_in
+	(*OfpFlowRemoved)(nil),                  // 88: openflow_13.ofp_flow_removed
+	(*OfpMeterBandHeader)(nil),              // 89: openflow_13.ofp_meter_band_header
+	(*OfpMeterBandDrop)(nil),                // 90: openflow_13.ofp_meter_band_drop
+	(*OfpMeterBandDscpRemark)(nil),          // 91: openflow_13.ofp_meter_band_dscp_remark
+	(*OfpMeterBandExperimenter)(nil),        // 92: openflow_13.ofp_meter_band_experimenter
+	(*OfpMeterMod)(nil),                     // 93: openflow_13.ofp_meter_mod
+	(*OfpErrorMsg)(nil),                     // 94: openflow_13.ofp_error_msg
+	(*OfpErrorExperimenterMsg)(nil),         // 95: openflow_13.ofp_error_experimenter_msg
+	(*OfpMultipartRequest)(nil),             // 96: openflow_13.ofp_multipart_request
+	(*OfpMultipartReply)(nil),               // 97: openflow_13.ofp_multipart_reply
+	(*OfpDesc)(nil),                         // 98: openflow_13.ofp_desc
+	(*OfpFlowStatsRequest)(nil),             // 99: openflow_13.ofp_flow_stats_request
+	(*OfpFlowStats)(nil),                    // 100: openflow_13.ofp_flow_stats
+	(*OfpAggregateStatsRequest)(nil),        // 101: openflow_13.ofp_aggregate_stats_request
+	(*OfpAggregateStatsReply)(nil),          // 102: openflow_13.ofp_aggregate_stats_reply
+	(*OfpTableFeatureProperty)(nil),         // 103: openflow_13.ofp_table_feature_property
+	(*OfpTableFeaturePropInstructions)(nil), // 104: openflow_13.ofp_table_feature_prop_instructions
+	(*OfpTableFeaturePropNextTables)(nil),   // 105: openflow_13.ofp_table_feature_prop_next_tables
+	(*OfpTableFeaturePropActions)(nil),      // 106: openflow_13.ofp_table_feature_prop_actions
+	(*OfpTableFeaturePropOxm)(nil),          // 107: openflow_13.ofp_table_feature_prop_oxm
+	(*OfpTableFeaturePropExperimenter)(nil), // 108: openflow_13.ofp_table_feature_prop_experimenter
+	(*OfpTableFeatures)(nil),                // 109: openflow_13.ofp_table_features
+	(*OfpTableStats)(nil),                   // 110: openflow_13.ofp_table_stats
+	(*OfpPortStatsRequest)(nil),             // 111: openflow_13.ofp_port_stats_request
+	(*OfpPortStats)(nil),                    // 112: openflow_13.ofp_port_stats
+	(*OfpGroupStatsRequest)(nil),            // 113: openflow_13.ofp_group_stats_request
+	(*OfpBucketCounter)(nil),                // 114: openflow_13.ofp_bucket_counter
+	(*OfpGroupStats)(nil),                   // 115: openflow_13.ofp_group_stats
+	(*OfpGroupDesc)(nil),                    // 116: openflow_13.ofp_group_desc
+	(*OfpGroupEntry)(nil),                   // 117: openflow_13.ofp_group_entry
+	(*OfpGroupFeatures)(nil),                // 118: openflow_13.ofp_group_features
+	(*OfpMeterMultipartRequest)(nil),        // 119: openflow_13.ofp_meter_multipart_request
+	(*OfpMeterBandStats)(nil),               // 120: openflow_13.ofp_meter_band_stats
+	(*OfpMeterStats)(nil),                   // 121: openflow_13.ofp_meter_stats
+	(*OfpMeterConfig)(nil),                  // 122: openflow_13.ofp_meter_config
+	(*OfpMeterFeatures)(nil),                // 123: openflow_13.ofp_meter_features
+	(*OfpMeterEntry)(nil),                   // 124: openflow_13.ofp_meter_entry
+	(*OfpExperimenterMultipartHeader)(nil),  // 125: openflow_13.ofp_experimenter_multipart_header
+	(*OfpExperimenterHeader)(nil),           // 126: openflow_13.ofp_experimenter_header
+	(*OfpQueuePropHeader)(nil),              // 127: openflow_13.ofp_queue_prop_header
+	(*OfpQueuePropMinRate)(nil),             // 128: openflow_13.ofp_queue_prop_min_rate
+	(*OfpQueuePropMaxRate)(nil),             // 129: openflow_13.ofp_queue_prop_max_rate
+	(*OfpQueuePropExperimenter)(nil),        // 130: openflow_13.ofp_queue_prop_experimenter
+	(*OfpPacketQueue)(nil),                  // 131: openflow_13.ofp_packet_queue
+	(*OfpQueueGetConfigRequest)(nil),        // 132: openflow_13.ofp_queue_get_config_request
+	(*OfpQueueGetConfigReply)(nil),          // 133: openflow_13.ofp_queue_get_config_reply
+	(*OfpActionSetQueue)(nil),               // 134: openflow_13.ofp_action_set_queue
+	(*OfpQueueStatsRequest)(nil),            // 135: openflow_13.ofp_queue_stats_request
+	(*OfpQueueStats)(nil),                   // 136: openflow_13.ofp_queue_stats
+	(*OfpRoleRequest)(nil),                  // 137: openflow_13.ofp_role_request
+	(*OfpAsyncConfig)(nil),                  // 138: openflow_13.ofp_async_config
+	(*MeterModUpdate)(nil),                  // 139: openflow_13.MeterModUpdate
+	(*MeterStatsReply)(nil),                 // 140: openflow_13.MeterStatsReply
+	(*FlowTableUpdate)(nil),                 // 141: openflow_13.FlowTableUpdate
+	(*FlowGroupTableUpdate)(nil),            // 142: openflow_13.FlowGroupTableUpdate
+	(*Flows)(nil),                           // 143: openflow_13.Flows
+	(*Meters)(nil),                          // 144: openflow_13.Meters
+	(*FlowGroups)(nil),                      // 145: openflow_13.FlowGroups
+	(*FlowChanges)(nil),                     // 146: openflow_13.FlowChanges
+	(*FlowGroupChanges)(nil),                // 147: openflow_13.FlowGroupChanges
+	(*PacketIn)(nil),                        // 148: openflow_13.PacketIn
+	(*PacketOut)(nil),                       // 149: openflow_13.PacketOut
+	(*ChangeEvent)(nil),                     // 150: openflow_13.ChangeEvent
+	(*FlowMetadata)(nil),                    // 151: openflow_13.FlowMetadata
+}
+var file_voltha_protos_openflow_13_proto_depIdxs = []int32{
+	1,   // 0: openflow_13.ofp_header.type:type_name -> openflow_13.ofp_type
+	2,   // 1: openflow_13.ofp_hello_elem_header.type:type_name -> openflow_13.ofp_hello_elem_type
+	55,  // 2: openflow_13.ofp_hello_elem_header.versionbitmap:type_name -> openflow_13.ofp_hello_elem_versionbitmap
+	54,  // 3: openflow_13.ofp_hello.elements:type_name -> openflow_13.ofp_hello_elem_header
+	10,  // 4: openflow_13.ofp_port_status.reason:type_name -> openflow_13.ofp_port_reason
+	59,  // 5: openflow_13.ofp_port_status.desc:type_name -> openflow_13.ofp_port
+	11,  // 6: openflow_13.ofp_device_status.status:type_name -> openflow_13.ofp_device_connection
+	12,  // 7: openflow_13.ofp_match.type:type_name -> openflow_13.ofp_match_type
+	65,  // 8: openflow_13.ofp_match.oxm_fields:type_name -> openflow_13.ofp_oxm_field
+	13,  // 9: openflow_13.ofp_oxm_field.oxm_class:type_name -> openflow_13.ofp_oxm_class
+	66,  // 10: openflow_13.ofp_oxm_field.ofb_field:type_name -> openflow_13.ofp_oxm_ofb_field
+	67,  // 11: openflow_13.ofp_oxm_field.experimenter_field:type_name -> openflow_13.ofp_oxm_experimenter_field
+	14,  // 12: openflow_13.ofp_oxm_ofb_field.type:type_name -> openflow_13.oxm_ofb_field_types
+	17,  // 13: openflow_13.ofp_action.type:type_name -> openflow_13.ofp_action_type
+	69,  // 14: openflow_13.ofp_action.output:type_name -> openflow_13.ofp_action_output
+	70,  // 15: openflow_13.ofp_action.mpls_ttl:type_name -> openflow_13.ofp_action_mpls_ttl
+	71,  // 16: openflow_13.ofp_action.push:type_name -> openflow_13.ofp_action_push
+	72,  // 17: openflow_13.ofp_action.pop_mpls:type_name -> openflow_13.ofp_action_pop_mpls
+	73,  // 18: openflow_13.ofp_action.group:type_name -> openflow_13.ofp_action_group
+	74,  // 19: openflow_13.ofp_action.nw_ttl:type_name -> openflow_13.ofp_action_nw_ttl
+	75,  // 20: openflow_13.ofp_action.set_field:type_name -> openflow_13.ofp_action_set_field
+	76,  // 21: openflow_13.ofp_action.experimenter:type_name -> openflow_13.ofp_action_experimenter
+	65,  // 22: openflow_13.ofp_action_set_field.field:type_name -> openflow_13.ofp_oxm_field
+	78,  // 23: openflow_13.ofp_instruction.goto_table:type_name -> openflow_13.ofp_instruction_goto_table
+	79,  // 24: openflow_13.ofp_instruction.write_metadata:type_name -> openflow_13.ofp_instruction_write_metadata
+	80,  // 25: openflow_13.ofp_instruction.actions:type_name -> openflow_13.ofp_instruction_actions
+	81,  // 26: openflow_13.ofp_instruction.meter:type_name -> openflow_13.ofp_instruction_meter
+	82,  // 27: openflow_13.ofp_instruction.experimenter:type_name -> openflow_13.ofp_instruction_experimenter
+	68,  // 28: openflow_13.ofp_instruction_actions.actions:type_name -> openflow_13.ofp_action
+	20,  // 29: openflow_13.ofp_flow_mod.command:type_name -> openflow_13.ofp_flow_mod_command
+	64,  // 30: openflow_13.ofp_flow_mod.match:type_name -> openflow_13.ofp_match
+	77,  // 31: openflow_13.ofp_flow_mod.instructions:type_name -> openflow_13.ofp_instruction
+	68,  // 32: openflow_13.ofp_bucket.actions:type_name -> openflow_13.ofp_action
+	23,  // 33: openflow_13.ofp_group_mod.command:type_name -> openflow_13.ofp_group_mod_command
+	24,  // 34: openflow_13.ofp_group_mod.type:type_name -> openflow_13.ofp_group_type
+	84,  // 35: openflow_13.ofp_group_mod.buckets:type_name -> openflow_13.ofp_bucket
+	68,  // 36: openflow_13.ofp_packet_out.actions:type_name -> openflow_13.ofp_action
+	25,  // 37: openflow_13.ofp_packet_in.reason:type_name -> openflow_13.ofp_packet_in_reason
+	64,  // 38: openflow_13.ofp_packet_in.match:type_name -> openflow_13.ofp_match
+	26,  // 39: openflow_13.ofp_flow_removed.reason:type_name -> openflow_13.ofp_flow_removed_reason
+	64,  // 40: openflow_13.ofp_flow_removed.match:type_name -> openflow_13.ofp_match
+	28,  // 41: openflow_13.ofp_meter_band_header.type:type_name -> openflow_13.ofp_meter_band_type
+	90,  // 42: openflow_13.ofp_meter_band_header.drop:type_name -> openflow_13.ofp_meter_band_drop
+	91,  // 43: openflow_13.ofp_meter_band_header.dscp_remark:type_name -> openflow_13.ofp_meter_band_dscp_remark
+	92,  // 44: openflow_13.ofp_meter_band_header.experimenter:type_name -> openflow_13.ofp_meter_band_experimenter
+	29,  // 45: openflow_13.ofp_meter_mod.command:type_name -> openflow_13.ofp_meter_mod_command
+	89,  // 46: openflow_13.ofp_meter_mod.bands:type_name -> openflow_13.ofp_meter_band_header
+	53,  // 47: openflow_13.ofp_error_msg.header:type_name -> openflow_13.ofp_header
+	46,  // 48: openflow_13.ofp_multipart_request.type:type_name -> openflow_13.ofp_multipart_type
+	46,  // 49: openflow_13.ofp_multipart_reply.type:type_name -> openflow_13.ofp_multipart_type
+	64,  // 50: openflow_13.ofp_flow_stats_request.match:type_name -> openflow_13.ofp_match
+	64,  // 51: openflow_13.ofp_flow_stats.match:type_name -> openflow_13.ofp_match
+	77,  // 52: openflow_13.ofp_flow_stats.instructions:type_name -> openflow_13.ofp_instruction
+	64,  // 53: openflow_13.ofp_aggregate_stats_request.match:type_name -> openflow_13.ofp_match
+	49,  // 54: openflow_13.ofp_table_feature_property.type:type_name -> openflow_13.ofp_table_feature_prop_type
+	104, // 55: openflow_13.ofp_table_feature_property.instructions:type_name -> openflow_13.ofp_table_feature_prop_instructions
+	105, // 56: openflow_13.ofp_table_feature_property.next_tables:type_name -> openflow_13.ofp_table_feature_prop_next_tables
+	106, // 57: openflow_13.ofp_table_feature_property.actions:type_name -> openflow_13.ofp_table_feature_prop_actions
+	107, // 58: openflow_13.ofp_table_feature_property.oxm:type_name -> openflow_13.ofp_table_feature_prop_oxm
+	108, // 59: openflow_13.ofp_table_feature_property.experimenter:type_name -> openflow_13.ofp_table_feature_prop_experimenter
+	77,  // 60: openflow_13.ofp_table_feature_prop_instructions.instructions:type_name -> openflow_13.ofp_instruction
+	68,  // 61: openflow_13.ofp_table_feature_prop_actions.actions:type_name -> openflow_13.ofp_action
+	103, // 62: openflow_13.ofp_table_features.properties:type_name -> openflow_13.ofp_table_feature_property
+	114, // 63: openflow_13.ofp_group_stats.bucket_stats:type_name -> openflow_13.ofp_bucket_counter
+	24,  // 64: openflow_13.ofp_group_desc.type:type_name -> openflow_13.ofp_group_type
+	84,  // 65: openflow_13.ofp_group_desc.buckets:type_name -> openflow_13.ofp_bucket
+	116, // 66: openflow_13.ofp_group_entry.desc:type_name -> openflow_13.ofp_group_desc
+	115, // 67: openflow_13.ofp_group_entry.stats:type_name -> openflow_13.ofp_group_stats
+	120, // 68: openflow_13.ofp_meter_stats.band_stats:type_name -> openflow_13.ofp_meter_band_stats
+	89,  // 69: openflow_13.ofp_meter_config.bands:type_name -> openflow_13.ofp_meter_band_header
+	122, // 70: openflow_13.ofp_meter_entry.config:type_name -> openflow_13.ofp_meter_config
+	121, // 71: openflow_13.ofp_meter_entry.stats:type_name -> openflow_13.ofp_meter_stats
+	127, // 72: openflow_13.ofp_queue_prop_min_rate.prop_header:type_name -> openflow_13.ofp_queue_prop_header
+	127, // 73: openflow_13.ofp_queue_prop_max_rate.prop_header:type_name -> openflow_13.ofp_queue_prop_header
+	127, // 74: openflow_13.ofp_queue_prop_experimenter.prop_header:type_name -> openflow_13.ofp_queue_prop_header
+	127, // 75: openflow_13.ofp_packet_queue.properties:type_name -> openflow_13.ofp_queue_prop_header
+	131, // 76: openflow_13.ofp_queue_get_config_reply.queues:type_name -> openflow_13.ofp_packet_queue
+	52,  // 77: openflow_13.ofp_role_request.role:type_name -> openflow_13.ofp_controller_role
+	93,  // 78: openflow_13.MeterModUpdate.meter_mod:type_name -> openflow_13.ofp_meter_mod
+	121, // 79: openflow_13.MeterStatsReply.meter_stats:type_name -> openflow_13.ofp_meter_stats
+	83,  // 80: openflow_13.FlowTableUpdate.flow_mod:type_name -> openflow_13.ofp_flow_mod
+	85,  // 81: openflow_13.FlowGroupTableUpdate.group_mod:type_name -> openflow_13.ofp_group_mod
+	100, // 82: openflow_13.Flows.items:type_name -> openflow_13.ofp_flow_stats
+	124, // 83: openflow_13.Meters.items:type_name -> openflow_13.ofp_meter_entry
+	117, // 84: openflow_13.FlowGroups.items:type_name -> openflow_13.ofp_group_entry
+	143, // 85: openflow_13.FlowChanges.to_add:type_name -> openflow_13.Flows
+	143, // 86: openflow_13.FlowChanges.to_remove:type_name -> openflow_13.Flows
+	145, // 87: openflow_13.FlowGroupChanges.to_add:type_name -> openflow_13.FlowGroups
+	145, // 88: openflow_13.FlowGroupChanges.to_remove:type_name -> openflow_13.FlowGroups
+	145, // 89: openflow_13.FlowGroupChanges.to_update:type_name -> openflow_13.FlowGroups
+	87,  // 90: openflow_13.PacketIn.packet_in:type_name -> openflow_13.ofp_packet_in
+	86,  // 91: openflow_13.PacketOut.packet_out:type_name -> openflow_13.ofp_packet_out
+	61,  // 92: openflow_13.ChangeEvent.port_status:type_name -> openflow_13.ofp_port_status
+	94,  // 93: openflow_13.ChangeEvent.error:type_name -> openflow_13.ofp_error_msg
+	62,  // 94: openflow_13.ChangeEvent.device_status:type_name -> openflow_13.ofp_device_status
+	122, // 95: openflow_13.FlowMetadata.meters:type_name -> openflow_13.ofp_meter_config
+	96,  // [96:96] is the sub-list for method output_type
+	96,  // [96:96] is the sub-list for method input_type
+	96,  // [96:96] is the sub-list for extension type_name
+	96,  // [96:96] is the sub-list for extension extendee
+	0,   // [0:96] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_openflow_13_proto_init() }
+func file_voltha_protos_openflow_13_proto_init() {
+	if File_voltha_protos_openflow_13_proto != nil {
+		return
+	}
+	file_voltha_protos_openflow_13_proto_msgTypes[1].OneofWrappers = []any{
+		(*OfpHelloElemHeader_Versionbitmap)(nil),
+	}
+	file_voltha_protos_openflow_13_proto_msgTypes[12].OneofWrappers = []any{
+		(*OfpOxmField_OfbField)(nil),
+		(*OfpOxmField_ExperimenterField)(nil),
+	}
+	file_voltha_protos_openflow_13_proto_msgTypes[13].OneofWrappers = []any{
 		(*OfpOxmOfbField_Port)(nil),
 		(*OfpOxmOfbField_PhysicalPort)(nil),
 		(*OfpOxmOfbField_TableMetadata)(nil),
@@ -4062,228 +12430,7 @@
 		(*OfpOxmOfbField_TunnelIdMask)(nil),
 		(*OfpOxmOfbField_Ipv6ExthdrMask)(nil),
 	}
-}
-
-// 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,proto3" json:"oxm_header,omitempty"`
-	Experimenter         uint32   `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpOxmExperimenterField) Reset()         { *m = OfpOxmExperimenterField{} }
-func (m *OfpOxmExperimenterField) String() string { return proto.CompactTextString(m) }
-func (*OfpOxmExperimenterField) ProtoMessage()    {}
-func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{14}
-}
-
-func (m *OfpOxmExperimenterField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpOxmExperimenterField.Unmarshal(m, b)
-}
-func (m *OfpOxmExperimenterField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpOxmExperimenterField.Marshal(b, m, deterministic)
-}
-func (m *OfpOxmExperimenterField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmExperimenterField.Merge(m, src)
-}
-func (m *OfpOxmExperimenterField) XXX_Size() int {
-	return xxx_messageInfo_OfpOxmExperimenterField.Size(m)
-}
-func (m *OfpOxmExperimenterField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpOxmExperimenterField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpOxmExperimenterField proto.InternalMessageInfo
-
-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,proto3,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"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
-
-func (m *OfpAction) Reset()         { *m = OfpAction{} }
-func (m *OfpAction) String() string { return proto.CompactTextString(m) }
-func (*OfpAction) ProtoMessage()    {}
-func (*OfpAction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{15}
-}
-
-func (m *OfpAction) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAction.Unmarshal(m, b)
-}
-func (m *OfpAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAction.Marshal(b, m, deterministic)
-}
-func (m *OfpAction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAction.Merge(m, src)
-}
-func (m *OfpAction) XXX_Size() int {
-	return xxx_messageInfo_OfpAction.Size(m)
-}
-func (m *OfpAction) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAction.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAction proto.InternalMessageInfo
-
-func (m *OfpAction) GetType() OfpActionType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpActionType_OFPAT_OUTPUT
-}
-
-type isOfpAction_Action interface {
-	isOfpAction_Action()
-}
-
-type OfpAction_Output struct {
-	Output *OfpActionOutput `protobuf:"bytes,2,opt,name=output,proto3,oneof"`
-}
-
-type OfpAction_MplsTtl struct {
-	MplsTtl *OfpActionMplsTtl `protobuf:"bytes,3,opt,name=mpls_ttl,json=mplsTtl,proto3,oneof"`
-}
-
-type OfpAction_Push struct {
-	Push *OfpActionPush `protobuf:"bytes,4,opt,name=push,proto3,oneof"`
-}
-
-type OfpAction_PopMpls struct {
-	PopMpls *OfpActionPopMpls `protobuf:"bytes,5,opt,name=pop_mpls,json=popMpls,proto3,oneof"`
-}
-
-type OfpAction_Group struct {
-	Group *OfpActionGroup `protobuf:"bytes,6,opt,name=group,proto3,oneof"`
-}
-
-type OfpAction_NwTtl struct {
-	NwTtl *OfpActionNwTtl `protobuf:"bytes,7,opt,name=nw_ttl,json=nwTtl,proto3,oneof"`
-}
-
-type OfpAction_SetField struct {
-	SetField *OfpActionSetField `protobuf:"bytes,8,opt,name=set_field,json=setField,proto3,oneof"`
-}
-
-type OfpAction_Experimenter struct {
-	Experimenter *OfpActionExperimenter `protobuf:"bytes,9,opt,name=experimenter,proto3,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) 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_OneofWrappers is for the internal use of the proto package.
-func (*OfpAction) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[15].OneofWrappers = []any{
 		(*OfpAction_Output)(nil),
 		(*OfpAction_MplsTtl)(nil),
 		(*OfpAction_Push)(nil),
@@ -4293,5703 +12440,46 @@
 		(*OfpAction_SetField)(nil),
 		(*OfpAction_Experimenter)(nil),
 	}
-}
-
-// 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,proto3" json:"port,omitempty"`
-	MaxLen               uint32   `protobuf:"varint,2,opt,name=max_len,json=maxLen,proto3" json:"max_len,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionOutput) Reset()         { *m = OfpActionOutput{} }
-func (m *OfpActionOutput) String() string { return proto.CompactTextString(m) }
-func (*OfpActionOutput) ProtoMessage()    {}
-func (*OfpActionOutput) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{16}
-}
-
-func (m *OfpActionOutput) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionOutput.Unmarshal(m, b)
-}
-func (m *OfpActionOutput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionOutput.Marshal(b, m, deterministic)
-}
-func (m *OfpActionOutput) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionOutput.Merge(m, src)
-}
-func (m *OfpActionOutput) XXX_Size() int {
-	return xxx_messageInfo_OfpActionOutput.Size(m)
-}
-func (m *OfpActionOutput) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionOutput.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionOutput proto.InternalMessageInfo
-
-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,proto3" json:"mpls_ttl,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionMplsTtl) Reset()         { *m = OfpActionMplsTtl{} }
-func (m *OfpActionMplsTtl) String() string { return proto.CompactTextString(m) }
-func (*OfpActionMplsTtl) ProtoMessage()    {}
-func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{17}
-}
-
-func (m *OfpActionMplsTtl) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionMplsTtl.Unmarshal(m, b)
-}
-func (m *OfpActionMplsTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionMplsTtl.Marshal(b, m, deterministic)
-}
-func (m *OfpActionMplsTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionMplsTtl.Merge(m, src)
-}
-func (m *OfpActionMplsTtl) XXX_Size() int {
-	return xxx_messageInfo_OfpActionMplsTtl.Size(m)
-}
-func (m *OfpActionMplsTtl) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionMplsTtl.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionMplsTtl proto.InternalMessageInfo
-
-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,proto3" json:"ethertype,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionPush) Reset()         { *m = OfpActionPush{} }
-func (m *OfpActionPush) String() string { return proto.CompactTextString(m) }
-func (*OfpActionPush) ProtoMessage()    {}
-func (*OfpActionPush) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{18}
-}
-
-func (m *OfpActionPush) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionPush.Unmarshal(m, b)
-}
-func (m *OfpActionPush) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionPush.Marshal(b, m, deterministic)
-}
-func (m *OfpActionPush) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPush.Merge(m, src)
-}
-func (m *OfpActionPush) XXX_Size() int {
-	return xxx_messageInfo_OfpActionPush.Size(m)
-}
-func (m *OfpActionPush) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionPush.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionPush proto.InternalMessageInfo
-
-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,proto3" json:"ethertype,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionPopMpls) Reset()         { *m = OfpActionPopMpls{} }
-func (m *OfpActionPopMpls) String() string { return proto.CompactTextString(m) }
-func (*OfpActionPopMpls) ProtoMessage()    {}
-func (*OfpActionPopMpls) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{19}
-}
-
-func (m *OfpActionPopMpls) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionPopMpls.Unmarshal(m, b)
-}
-func (m *OfpActionPopMpls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionPopMpls.Marshal(b, m, deterministic)
-}
-func (m *OfpActionPopMpls) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPopMpls.Merge(m, src)
-}
-func (m *OfpActionPopMpls) XXX_Size() int {
-	return xxx_messageInfo_OfpActionPopMpls.Size(m)
-}
-func (m *OfpActionPopMpls) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionPopMpls.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionPopMpls proto.InternalMessageInfo
-
-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,proto3" json:"group_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionGroup) Reset()         { *m = OfpActionGroup{} }
-func (m *OfpActionGroup) String() string { return proto.CompactTextString(m) }
-func (*OfpActionGroup) ProtoMessage()    {}
-func (*OfpActionGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{20}
-}
-
-func (m *OfpActionGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionGroup.Unmarshal(m, b)
-}
-func (m *OfpActionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionGroup.Marshal(b, m, deterministic)
-}
-func (m *OfpActionGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionGroup.Merge(m, src)
-}
-func (m *OfpActionGroup) XXX_Size() int {
-	return xxx_messageInfo_OfpActionGroup.Size(m)
-}
-func (m *OfpActionGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionGroup proto.InternalMessageInfo
-
-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,proto3" json:"nw_ttl,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionNwTtl) Reset()         { *m = OfpActionNwTtl{} }
-func (m *OfpActionNwTtl) String() string { return proto.CompactTextString(m) }
-func (*OfpActionNwTtl) ProtoMessage()    {}
-func (*OfpActionNwTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{21}
-}
-
-func (m *OfpActionNwTtl) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionNwTtl.Unmarshal(m, b)
-}
-func (m *OfpActionNwTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionNwTtl.Marshal(b, m, deterministic)
-}
-func (m *OfpActionNwTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionNwTtl.Merge(m, src)
-}
-func (m *OfpActionNwTtl) XXX_Size() int {
-	return xxx_messageInfo_OfpActionNwTtl.Size(m)
-}
-func (m *OfpActionNwTtl) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionNwTtl.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionNwTtl proto.InternalMessageInfo
-
-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,proto3" json:"field,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpActionSetField) Reset()         { *m = OfpActionSetField{} }
-func (m *OfpActionSetField) String() string { return proto.CompactTextString(m) }
-func (*OfpActionSetField) ProtoMessage()    {}
-func (*OfpActionSetField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{22}
-}
-
-func (m *OfpActionSetField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionSetField.Unmarshal(m, b)
-}
-func (m *OfpActionSetField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionSetField.Marshal(b, m, deterministic)
-}
-func (m *OfpActionSetField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetField.Merge(m, src)
-}
-func (m *OfpActionSetField) XXX_Size() int {
-	return xxx_messageInfo_OfpActionSetField.Size(m)
-}
-func (m *OfpActionSetField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionSetField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionSetField proto.InternalMessageInfo
-
-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,proto3" json:"experimenter,omitempty"`
-	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionExperimenter) Reset()         { *m = OfpActionExperimenter{} }
-func (m *OfpActionExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpActionExperimenter) ProtoMessage()    {}
-func (*OfpActionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{23}
-}
-
-func (m *OfpActionExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionExperimenter.Unmarshal(m, b)
-}
-func (m *OfpActionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpActionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionExperimenter.Merge(m, src)
-}
-func (m *OfpActionExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpActionExperimenter.Size(m)
-}
-func (m *OfpActionExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionExperimenter proto.InternalMessageInfo
-
-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,proto3" 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"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpInstruction) Reset()         { *m = OfpInstruction{} }
-func (m *OfpInstruction) String() string { return proto.CompactTextString(m) }
-func (*OfpInstruction) ProtoMessage()    {}
-func (*OfpInstruction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{24}
-}
-
-func (m *OfpInstruction) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstruction.Unmarshal(m, b)
-}
-func (m *OfpInstruction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstruction.Marshal(b, m, deterministic)
-}
-func (m *OfpInstruction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstruction.Merge(m, src)
-}
-func (m *OfpInstruction) XXX_Size() int {
-	return xxx_messageInfo_OfpInstruction.Size(m)
-}
-func (m *OfpInstruction) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstruction.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstruction proto.InternalMessageInfo
-
-func (m *OfpInstruction) GetType() uint32 {
-	if m != nil {
-		return m.Type
-	}
-	return 0
-}
-
-type isOfpInstruction_Data interface {
-	isOfpInstruction_Data()
-}
-
-type OfpInstruction_GotoTable struct {
-	GotoTable *OfpInstructionGotoTable `protobuf:"bytes,2,opt,name=goto_table,json=gotoTable,proto3,oneof"`
-}
-
-type OfpInstruction_WriteMetadata struct {
-	WriteMetadata *OfpInstructionWriteMetadata `protobuf:"bytes,3,opt,name=write_metadata,json=writeMetadata,proto3,oneof"`
-}
-
-type OfpInstruction_Actions struct {
-	Actions *OfpInstructionActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
-}
-
-type OfpInstruction_Meter struct {
-	Meter *OfpInstructionMeter `protobuf:"bytes,5,opt,name=meter,proto3,oneof"`
-}
-
-type OfpInstruction_Experimenter struct {
-	Experimenter *OfpInstructionExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,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) 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_OneofWrappers is for the internal use of the proto package.
-func (*OfpInstruction) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[24].OneofWrappers = []any{
 		(*OfpInstruction_GotoTable)(nil),
 		(*OfpInstruction_WriteMetadata)(nil),
 		(*OfpInstruction_Actions)(nil),
 		(*OfpInstruction_Meter)(nil),
 		(*OfpInstruction_Experimenter)(nil),
 	}
-}
-
-// Instruction structure for OFPIT_GOTO_TABLE
-type OfpInstructionGotoTable struct {
-	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionGotoTable) Reset()         { *m = OfpInstructionGotoTable{} }
-func (m *OfpInstructionGotoTable) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionGotoTable) ProtoMessage()    {}
-func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{25}
-}
-
-func (m *OfpInstructionGotoTable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionGotoTable.Unmarshal(m, b)
-}
-func (m *OfpInstructionGotoTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionGotoTable.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionGotoTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionGotoTable.Merge(m, src)
-}
-func (m *OfpInstructionGotoTable) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionGotoTable.Size(m)
-}
-func (m *OfpInstructionGotoTable) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionGotoTable.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionGotoTable proto.InternalMessageInfo
-
-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,proto3" json:"metadata,omitempty"`
-	MetadataMask         uint64   `protobuf:"varint,2,opt,name=metadata_mask,json=metadataMask,proto3" json:"metadata_mask,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionWriteMetadata) Reset()         { *m = OfpInstructionWriteMetadata{} }
-func (m *OfpInstructionWriteMetadata) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionWriteMetadata) ProtoMessage()    {}
-func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{26}
-}
-
-func (m *OfpInstructionWriteMetadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionWriteMetadata.Unmarshal(m, b)
-}
-func (m *OfpInstructionWriteMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionWriteMetadata.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionWriteMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionWriteMetadata.Merge(m, src)
-}
-func (m *OfpInstructionWriteMetadata) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionWriteMetadata.Size(m)
-}
-func (m *OfpInstructionWriteMetadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionWriteMetadata.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionWriteMetadata proto.InternalMessageInfo
-
-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,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpInstructionActions) Reset()         { *m = OfpInstructionActions{} }
-func (m *OfpInstructionActions) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionActions) ProtoMessage()    {}
-func (*OfpInstructionActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{27}
-}
-
-func (m *OfpInstructionActions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionActions.Unmarshal(m, b)
-}
-func (m *OfpInstructionActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionActions.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionActions.Merge(m, src)
-}
-func (m *OfpInstructionActions) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionActions.Size(m)
-}
-func (m *OfpInstructionActions) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionActions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionActions proto.InternalMessageInfo
-
-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,proto3" json:"meter_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionMeter) Reset()         { *m = OfpInstructionMeter{} }
-func (m *OfpInstructionMeter) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionMeter) ProtoMessage()    {}
-func (*OfpInstructionMeter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{28}
-}
-
-func (m *OfpInstructionMeter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionMeter.Unmarshal(m, b)
-}
-func (m *OfpInstructionMeter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionMeter.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionMeter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionMeter.Merge(m, src)
-}
-func (m *OfpInstructionMeter) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionMeter.Size(m)
-}
-func (m *OfpInstructionMeter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionMeter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionMeter proto.InternalMessageInfo
-
-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,proto3" json:"experimenter,omitempty"`
-	// Experimenter-defined arbitrary additional data.
-	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionExperimenter) Reset()         { *m = OfpInstructionExperimenter{} }
-func (m *OfpInstructionExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionExperimenter) ProtoMessage()    {}
-func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{29}
-}
-
-func (m *OfpInstructionExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionExperimenter.Unmarshal(m, b)
-}
-func (m *OfpInstructionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionExperimenter.Merge(m, src)
-}
-func (m *OfpInstructionExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionExperimenter.Size(m)
-}
-func (m *OfpInstructionExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionExperimenter proto.InternalMessageInfo
-
-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,proto3" json:"cookie,omitempty"`
-	CookieMask           uint64            `protobuf:"varint,2,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
-	TableId              uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Command              OfpFlowModCommand `protobuf:"varint,4,opt,name=command,proto3,enum=openflow_13.OfpFlowModCommand" json:"command,omitempty"`
-	IdleTimeout          uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
-	HardTimeout          uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
-	Priority             uint32            `protobuf:"varint,7,opt,name=priority,proto3" json:"priority,omitempty"`
-	BufferId             uint32            `protobuf:"varint,8,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
-	OutPort              uint32            `protobuf:"varint,9,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
-	OutGroup             uint32            `protobuf:"varint,10,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
-	Flags                uint32            `protobuf:"varint,11,opt,name=flags,proto3" json:"flags,omitempty"`
-	Match                *OfpMatch         `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`
-	Instructions         []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpFlowMod) Reset()         { *m = OfpFlowMod{} }
-func (m *OfpFlowMod) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowMod) ProtoMessage()    {}
-func (*OfpFlowMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{30}
-}
-
-func (m *OfpFlowMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowMod.Unmarshal(m, b)
-}
-func (m *OfpFlowMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowMod.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowMod.Merge(m, src)
-}
-func (m *OfpFlowMod) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowMod.Size(m)
-}
-func (m *OfpFlowMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowMod proto.InternalMessageInfo
-
-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,proto3" json:"weight,omitempty"`
-	WatchPort            uint32       `protobuf:"varint,2,opt,name=watch_port,json=watchPort,proto3" json:"watch_port,omitempty"`
-	WatchGroup           uint32       `protobuf:"varint,3,opt,name=watch_group,json=watchGroup,proto3" json:"watch_group,omitempty"`
-	Actions              []*OfpAction `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpBucket) Reset()         { *m = OfpBucket{} }
-func (m *OfpBucket) String() string { return proto.CompactTextString(m) }
-func (*OfpBucket) ProtoMessage()    {}
-func (*OfpBucket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{31}
-}
-
-func (m *OfpBucket) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpBucket.Unmarshal(m, b)
-}
-func (m *OfpBucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpBucket.Marshal(b, m, deterministic)
-}
-func (m *OfpBucket) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucket.Merge(m, src)
-}
-func (m *OfpBucket) XXX_Size() int {
-	return xxx_messageInfo_OfpBucket.Size(m)
-}
-func (m *OfpBucket) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpBucket.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpBucket proto.InternalMessageInfo
-
-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,proto3,enum=openflow_13.OfpGroupModCommand" json:"command,omitempty"`
-	Type                 OfpGroupType       `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
-	GroupId              uint32             `protobuf:"varint,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	Buckets              []*OfpBucket       `protobuf:"bytes,4,rep,name=buckets,proto3" json:"buckets,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
-
-func (m *OfpGroupMod) Reset()         { *m = OfpGroupMod{} }
-func (m *OfpGroupMod) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupMod) ProtoMessage()    {}
-func (*OfpGroupMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{32}
-}
-
-func (m *OfpGroupMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupMod.Unmarshal(m, b)
-}
-func (m *OfpGroupMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupMod.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupMod.Merge(m, src)
-}
-func (m *OfpGroupMod) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupMod.Size(m)
-}
-func (m *OfpGroupMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupMod proto.InternalMessageInfo
-
-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,proto3" json:"buffer_id,omitempty"`
-	InPort   uint32       `protobuf:"varint,2,opt,name=in_port,json=inPort,proto3" json:"in_port,omitempty"`
-	Actions  []*OfpAction `protobuf:"bytes,3,rep,name=actions,proto3" 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"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpPacketOut) Reset()         { *m = OfpPacketOut{} }
-func (m *OfpPacketOut) String() string { return proto.CompactTextString(m) }
-func (*OfpPacketOut) ProtoMessage()    {}
-func (*OfpPacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{33}
-}
-
-func (m *OfpPacketOut) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPacketOut.Unmarshal(m, b)
-}
-func (m *OfpPacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPacketOut.Marshal(b, m, deterministic)
-}
-func (m *OfpPacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketOut.Merge(m, src)
-}
-func (m *OfpPacketOut) XXX_Size() int {
-	return xxx_messageInfo_OfpPacketOut.Size(m)
-}
-func (m *OfpPacketOut) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPacketOut.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPacketOut proto.InternalMessageInfo
-
-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,proto3" json:"buffer_id,omitempty"`
-	Reason               OfpPacketInReason `protobuf:"varint,2,opt,name=reason,proto3,enum=openflow_13.OfpPacketInReason" json:"reason,omitempty"`
-	TableId              uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Cookie               uint64            `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	Match                *OfpMatch         `protobuf:"bytes,5,opt,name=match,proto3" json:"match,omitempty"`
-	Data                 []byte            `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpPacketIn) Reset()         { *m = OfpPacketIn{} }
-func (m *OfpPacketIn) String() string { return proto.CompactTextString(m) }
-func (*OfpPacketIn) ProtoMessage()    {}
-func (*OfpPacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{34}
-}
-
-func (m *OfpPacketIn) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPacketIn.Unmarshal(m, b)
-}
-func (m *OfpPacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPacketIn.Marshal(b, m, deterministic)
-}
-func (m *OfpPacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketIn.Merge(m, src)
-}
-func (m *OfpPacketIn) XXX_Size() int {
-	return xxx_messageInfo_OfpPacketIn.Size(m)
-}
-func (m *OfpPacketIn) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPacketIn.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPacketIn proto.InternalMessageInfo
-
-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,proto3" json:"cookie,omitempty"`
-	Priority             uint32               `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
-	Reason               OfpFlowRemovedReason `protobuf:"varint,3,opt,name=reason,proto3,enum=openflow_13.OfpFlowRemovedReason" json:"reason,omitempty"`
-	TableId              uint32               `protobuf:"varint,4,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	DurationSec          uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	IdleTimeout          uint32               `protobuf:"varint,7,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
-	HardTimeout          uint32               `protobuf:"varint,8,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
-	PacketCount          uint64               `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64               `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	Match                *OfpMatch            `protobuf:"bytes,121,opt,name=match,proto3" json:"match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
-
-func (m *OfpFlowRemoved) Reset()         { *m = OfpFlowRemoved{} }
-func (m *OfpFlowRemoved) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowRemoved) ProtoMessage()    {}
-func (*OfpFlowRemoved) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{35}
-}
-
-func (m *OfpFlowRemoved) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowRemoved.Unmarshal(m, b)
-}
-func (m *OfpFlowRemoved) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowRemoved.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowRemoved) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowRemoved.Merge(m, src)
-}
-func (m *OfpFlowRemoved) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowRemoved.Size(m)
-}
-func (m *OfpFlowRemoved) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowRemoved.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowRemoved proto.InternalMessageInfo
-
-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,proto3,enum=openflow_13.OfpMeterBandType" json:"type,omitempty"`
-	Rate      uint32           `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
-	BurstSize uint32           `protobuf:"varint,3,opt,name=burst_size,json=burstSize,proto3" json:"burst_size,omitempty"`
-	// Types that are valid to be assigned to Data:
-	//	*OfpMeterBandHeader_Drop
-	//	*OfpMeterBandHeader_DscpRemark
-	//	*OfpMeterBandHeader_Experimenter
-	Data                 isOfpMeterBandHeader_Data `protobuf_oneof:"data"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
-}
-
-func (m *OfpMeterBandHeader) Reset()         { *m = OfpMeterBandHeader{} }
-func (m *OfpMeterBandHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandHeader) ProtoMessage()    {}
-func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{36}
-}
-
-func (m *OfpMeterBandHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandHeader.Unmarshal(m, b)
-}
-func (m *OfpMeterBandHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandHeader.Merge(m, src)
-}
-func (m *OfpMeterBandHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandHeader.Size(m)
-}
-func (m *OfpMeterBandHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandHeader proto.InternalMessageInfo
-
-func (m *OfpMeterBandHeader) GetType() OfpMeterBandType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpMeterBandType_OFPMBT_INVALID
-}
-
-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
-}
-
-type isOfpMeterBandHeader_Data interface {
-	isOfpMeterBandHeader_Data()
-}
-
-type OfpMeterBandHeader_Drop struct {
-	Drop *OfpMeterBandDrop `protobuf:"bytes,4,opt,name=drop,proto3,oneof"`
-}
-
-type OfpMeterBandHeader_DscpRemark struct {
-	DscpRemark *OfpMeterBandDscpRemark `protobuf:"bytes,5,opt,name=dscp_remark,json=dscpRemark,proto3,oneof"`
-}
-
-type OfpMeterBandHeader_Experimenter struct {
-	Experimenter *OfpMeterBandExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
-}
-
-func (*OfpMeterBandHeader_Drop) isOfpMeterBandHeader_Data() {}
-
-func (*OfpMeterBandHeader_DscpRemark) isOfpMeterBandHeader_Data() {}
-
-func (*OfpMeterBandHeader_Experimenter) isOfpMeterBandHeader_Data() {}
-
-func (m *OfpMeterBandHeader) GetData() isOfpMeterBandHeader_Data {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-func (m *OfpMeterBandHeader) GetDrop() *OfpMeterBandDrop {
-	if x, ok := m.GetData().(*OfpMeterBandHeader_Drop); ok {
-		return x.Drop
-	}
-	return nil
-}
-
-func (m *OfpMeterBandHeader) GetDscpRemark() *OfpMeterBandDscpRemark {
-	if x, ok := m.GetData().(*OfpMeterBandHeader_DscpRemark); ok {
-		return x.DscpRemark
-	}
-	return nil
-}
-
-func (m *OfpMeterBandHeader) GetExperimenter() *OfpMeterBandExperimenter {
-	if x, ok := m.GetData().(*OfpMeterBandHeader_Experimenter); ok {
-		return x.Experimenter
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpMeterBandHeader) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[36].OneofWrappers = []any{
 		(*OfpMeterBandHeader_Drop)(nil),
 		(*OfpMeterBandHeader_DscpRemark)(nil),
 		(*OfpMeterBandHeader_Experimenter)(nil),
 	}
-}
-
-// OFPMBT_DROP band - drop packets
-type OfpMeterBandDrop struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandDrop) Reset()         { *m = OfpMeterBandDrop{} }
-func (m *OfpMeterBandDrop) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandDrop) ProtoMessage()    {}
-func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{37}
-}
-
-func (m *OfpMeterBandDrop) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandDrop.Unmarshal(m, b)
-}
-func (m *OfpMeterBandDrop) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandDrop.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandDrop) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDrop.Merge(m, src)
-}
-func (m *OfpMeterBandDrop) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandDrop.Size(m)
-}
-func (m *OfpMeterBandDrop) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandDrop.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandDrop proto.InternalMessageInfo
-
-// OFPMBT_DSCP_REMARK band - Remark DSCP in the IP header
-type OfpMeterBandDscpRemark struct {
-	PrecLevel            uint32   `protobuf:"varint,1,opt,name=prec_level,json=precLevel,proto3" json:"prec_level,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandDscpRemark) Reset()         { *m = OfpMeterBandDscpRemark{} }
-func (m *OfpMeterBandDscpRemark) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandDscpRemark) ProtoMessage()    {}
-func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{38}
-}
-
-func (m *OfpMeterBandDscpRemark) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandDscpRemark.Unmarshal(m, b)
-}
-func (m *OfpMeterBandDscpRemark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandDscpRemark.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandDscpRemark) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDscpRemark.Merge(m, src)
-}
-func (m *OfpMeterBandDscpRemark) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandDscpRemark.Size(m)
-}
-func (m *OfpMeterBandDscpRemark) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandDscpRemark.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandDscpRemark proto.InternalMessageInfo
-
-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 {
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandExperimenter) Reset()         { *m = OfpMeterBandExperimenter{} }
-func (m *OfpMeterBandExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandExperimenter) ProtoMessage()    {}
-func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{39}
-}
-
-func (m *OfpMeterBandExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandExperimenter.Unmarshal(m, b)
-}
-func (m *OfpMeterBandExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandExperimenter.Merge(m, src)
-}
-func (m *OfpMeterBandExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandExperimenter.Size(m)
-}
-func (m *OfpMeterBandExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandExperimenter proto.InternalMessageInfo
-
-func (m *OfpMeterBandExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-// Meter configuration. OFPT_METER_MOD.
-type OfpMeterMod struct {
-	Command              OfpMeterModCommand    `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpMeterModCommand" json:"command,omitempty"`
-	Flags                uint32                `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
-	MeterId              uint32                `protobuf:"varint,3,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	Bands                []*OfpMeterBandHeader `protobuf:"bytes,4,rep,name=bands,proto3" json:"bands,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpMeterMod) Reset()         { *m = OfpMeterMod{} }
-func (m *OfpMeterMod) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterMod) ProtoMessage()    {}
-func (*OfpMeterMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{40}
-}
-
-func (m *OfpMeterMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterMod.Unmarshal(m, b)
-}
-func (m *OfpMeterMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterMod.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMod.Merge(m, src)
-}
-func (m *OfpMeterMod) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterMod.Size(m)
-}
-func (m *OfpMeterMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterMod proto.InternalMessageInfo
-
-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 {
-	Header               *OfpHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
-	Type                 uint32     `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
-	Code                 uint32     `protobuf:"varint,3,opt,name=code,proto3" json:"code,omitempty"`
-	Data                 []byte     `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
-
-func (m *OfpErrorMsg) Reset()         { *m = OfpErrorMsg{} }
-func (m *OfpErrorMsg) String() string { return proto.CompactTextString(m) }
-func (*OfpErrorMsg) ProtoMessage()    {}
-func (*OfpErrorMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{41}
-}
-
-func (m *OfpErrorMsg) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpErrorMsg.Unmarshal(m, b)
-}
-func (m *OfpErrorMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpErrorMsg.Marshal(b, m, deterministic)
-}
-func (m *OfpErrorMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorMsg.Merge(m, src)
-}
-func (m *OfpErrorMsg) XXX_Size() int {
-	return xxx_messageInfo_OfpErrorMsg.Size(m)
-}
-func (m *OfpErrorMsg) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpErrorMsg.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpErrorMsg proto.InternalMessageInfo
-
-func (m *OfpErrorMsg) GetHeader() *OfpHeader {
-	if m != nil {
-		return m.Header
-	}
-	return nil
-}
-
-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,proto3" json:"type,omitempty"`
-	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	Experimenter         uint32   `protobuf:"varint,3,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	Data                 []byte   `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpErrorExperimenterMsg) Reset()         { *m = OfpErrorExperimenterMsg{} }
-func (m *OfpErrorExperimenterMsg) String() string { return proto.CompactTextString(m) }
-func (*OfpErrorExperimenterMsg) ProtoMessage()    {}
-func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{42}
-}
-
-func (m *OfpErrorExperimenterMsg) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpErrorExperimenterMsg.Unmarshal(m, b)
-}
-func (m *OfpErrorExperimenterMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpErrorExperimenterMsg.Marshal(b, m, deterministic)
-}
-func (m *OfpErrorExperimenterMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorExperimenterMsg.Merge(m, src)
-}
-func (m *OfpErrorExperimenterMsg) XXX_Size() int {
-	return xxx_messageInfo_OfpErrorExperimenterMsg.Size(m)
-}
-func (m *OfpErrorExperimenterMsg) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpErrorExperimenterMsg.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpErrorExperimenterMsg proto.InternalMessageInfo
-
-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,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
-	Flags                uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
-	Body                 []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *OfpMultipartRequest) Reset()         { *m = OfpMultipartRequest{} }
-func (m *OfpMultipartRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpMultipartRequest) ProtoMessage()    {}
-func (*OfpMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{43}
-}
-
-func (m *OfpMultipartRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMultipartRequest.Unmarshal(m, b)
-}
-func (m *OfpMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMultipartRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartRequest.Merge(m, src)
-}
-func (m *OfpMultipartRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpMultipartRequest.Size(m)
-}
-func (m *OfpMultipartRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMultipartRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMultipartRequest proto.InternalMessageInfo
-
-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,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
-	Flags                uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
-	Body                 []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *OfpMultipartReply) Reset()         { *m = OfpMultipartReply{} }
-func (m *OfpMultipartReply) String() string { return proto.CompactTextString(m) }
-func (*OfpMultipartReply) ProtoMessage()    {}
-func (*OfpMultipartReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{44}
-}
-
-func (m *OfpMultipartReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMultipartReply.Unmarshal(m, b)
-}
-func (m *OfpMultipartReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMultipartReply.Marshal(b, m, deterministic)
-}
-func (m *OfpMultipartReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartReply.Merge(m, src)
-}
-func (m *OfpMultipartReply) XXX_Size() int {
-	return xxx_messageInfo_OfpMultipartReply.Size(m)
-}
-func (m *OfpMultipartReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMultipartReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMultipartReply proto.InternalMessageInfo
-
-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,proto3" json:"mfr_desc,omitempty"`
-	HwDesc               string   `protobuf:"bytes,2,opt,name=hw_desc,json=hwDesc,proto3" json:"hw_desc,omitempty"`
-	SwDesc               string   `protobuf:"bytes,3,opt,name=sw_desc,json=swDesc,proto3" json:"sw_desc,omitempty"`
-	SerialNum            string   `protobuf:"bytes,4,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"`
-	DpDesc               string   `protobuf:"bytes,5,opt,name=dp_desc,json=dpDesc,proto3" json:"dp_desc,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpDesc) Reset()         { *m = OfpDesc{} }
-func (m *OfpDesc) String() string { return proto.CompactTextString(m) }
-func (*OfpDesc) ProtoMessage()    {}
-func (*OfpDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{45}
-}
-
-func (m *OfpDesc) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpDesc.Unmarshal(m, b)
-}
-func (m *OfpDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpDesc.Marshal(b, m, deterministic)
-}
-func (m *OfpDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpDesc.Merge(m, src)
-}
-func (m *OfpDesc) XXX_Size() int {
-	return xxx_messageInfo_OfpDesc.Size(m)
-}
-func (m *OfpDesc) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpDesc.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpDesc proto.InternalMessageInfo
-
-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,proto3" json:"table_id,omitempty"`
-	OutPort              uint32    `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
-	OutGroup             uint32    `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
-	Cookie               uint64    `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	CookieMask           uint64    `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
-	Match                *OfpMatch `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *OfpFlowStatsRequest) Reset()         { *m = OfpFlowStatsRequest{} }
-func (m *OfpFlowStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowStatsRequest) ProtoMessage()    {}
-func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{46}
-}
-
-func (m *OfpFlowStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpFlowStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStatsRequest.Merge(m, src)
-}
-func (m *OfpFlowStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowStatsRequest.Size(m)
-}
-func (m *OfpFlowStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowStatsRequest proto.InternalMessageInfo
-
-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,proto3" json:"id,omitempty"`
-	TableId              uint32            `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	DurationSec          uint32            `protobuf:"varint,2,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32            `protobuf:"varint,3,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	Priority             uint32            `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`
-	IdleTimeout          uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
-	HardTimeout          uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
-	Flags                uint32            `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"`
-	Cookie               uint64            `protobuf:"varint,8,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	PacketCount          uint64            `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64            `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	Match                *OfpMatch         `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`
-	Instructions         []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpFlowStats) Reset()         { *m = OfpFlowStats{} }
-func (m *OfpFlowStats) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowStats) ProtoMessage()    {}
-func (*OfpFlowStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{47}
-}
-
-func (m *OfpFlowStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowStats.Unmarshal(m, b)
-}
-func (m *OfpFlowStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowStats.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStats.Merge(m, src)
-}
-func (m *OfpFlowStats) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowStats.Size(m)
-}
-func (m *OfpFlowStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowStats proto.InternalMessageInfo
-
-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,proto3" json:"table_id,omitempty"`
-	OutPort              uint32    `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
-	OutGroup             uint32    `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
-	Cookie               uint64    `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	CookieMask           uint64    `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
-	Match                *OfpMatch `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *OfpAggregateStatsRequest) Reset()         { *m = OfpAggregateStatsRequest{} }
-func (m *OfpAggregateStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpAggregateStatsRequest) ProtoMessage()    {}
-func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{48}
-}
-
-func (m *OfpAggregateStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAggregateStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpAggregateStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAggregateStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpAggregateStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsRequest.Merge(m, src)
-}
-func (m *OfpAggregateStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpAggregateStatsRequest.Size(m)
-}
-func (m *OfpAggregateStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAggregateStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAggregateStatsRequest proto.InternalMessageInfo
-
-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,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64   `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	FlowCount            uint32   `protobuf:"varint,3,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpAggregateStatsReply) Reset()         { *m = OfpAggregateStatsReply{} }
-func (m *OfpAggregateStatsReply) String() string { return proto.CompactTextString(m) }
-func (*OfpAggregateStatsReply) ProtoMessage()    {}
-func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{49}
-}
-
-func (m *OfpAggregateStatsReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAggregateStatsReply.Unmarshal(m, b)
-}
-func (m *OfpAggregateStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAggregateStatsReply.Marshal(b, m, deterministic)
-}
-func (m *OfpAggregateStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsReply.Merge(m, src)
-}
-func (m *OfpAggregateStatsReply) XXX_Size() int {
-	return xxx_messageInfo_OfpAggregateStatsReply.Size(m)
-}
-func (m *OfpAggregateStatsReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAggregateStatsReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAggregateStatsReply proto.InternalMessageInfo
-
-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,proto3,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"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
-}
-
-func (m *OfpTableFeatureProperty) Reset()         { *m = OfpTableFeatureProperty{} }
-func (m *OfpTableFeatureProperty) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeatureProperty) ProtoMessage()    {}
-func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{50}
-}
-
-func (m *OfpTableFeatureProperty) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeatureProperty.Unmarshal(m, b)
-}
-func (m *OfpTableFeatureProperty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeatureProperty.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeatureProperty) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatureProperty.Merge(m, src)
-}
-func (m *OfpTableFeatureProperty) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeatureProperty.Size(m)
-}
-func (m *OfpTableFeatureProperty) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeatureProperty.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeatureProperty proto.InternalMessageInfo
-
-func (m *OfpTableFeatureProperty) GetType() OfpTableFeaturePropType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS
-}
-
-type isOfpTableFeatureProperty_Value interface {
-	isOfpTableFeatureProperty_Value()
-}
-
-type OfpTableFeatureProperty_Instructions struct {
-	Instructions *OfpTableFeaturePropInstructions `protobuf:"bytes,2,opt,name=instructions,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_NextTables struct {
-	NextTables *OfpTableFeaturePropNextTables `protobuf:"bytes,3,opt,name=next_tables,json=nextTables,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_Actions struct {
-	Actions *OfpTableFeaturePropActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_Oxm struct {
-	Oxm *OfpTableFeaturePropOxm `protobuf:"bytes,5,opt,name=oxm,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_Experimenter struct {
-	Experimenter *OfpTableFeaturePropExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,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) 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_OneofWrappers is for the internal use of the proto package.
-func (*OfpTableFeatureProperty) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[50].OneofWrappers = []any{
 		(*OfpTableFeatureProperty_Instructions)(nil),
 		(*OfpTableFeatureProperty_NextTables)(nil),
 		(*OfpTableFeatureProperty_Actions)(nil),
 		(*OfpTableFeatureProperty_Oxm)(nil),
 		(*OfpTableFeatureProperty_Experimenter)(nil),
 	}
-}
-
-// Instructions property
-type OfpTableFeaturePropInstructions struct {
-	// One of OFPTFPT_INSTRUCTIONS,
-	//OFPTFPT_INSTRUCTIONS_MISS.
-	Instructions         []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions,proto3" json:"instructions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpTableFeaturePropInstructions) Reset()         { *m = OfpTableFeaturePropInstructions{} }
-func (m *OfpTableFeaturePropInstructions) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropInstructions) ProtoMessage()    {}
-func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{51}
-}
-
-func (m *OfpTableFeaturePropInstructions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropInstructions.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropInstructions.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropInstructions.Merge(m, src)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropInstructions.Size(m)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropInstructions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropInstructions proto.InternalMessageInfo
-
-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,proto3" json:"next_table_ids,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableFeaturePropNextTables) Reset()         { *m = OfpTableFeaturePropNextTables{} }
-func (m *OfpTableFeaturePropNextTables) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropNextTables) ProtoMessage()    {}
-func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{52}
-}
-
-func (m *OfpTableFeaturePropNextTables) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropNextTables.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropNextTables.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropNextTables.Merge(m, src)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropNextTables.Size(m)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropNextTables.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropNextTables proto.InternalMessageInfo
-
-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,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpTableFeaturePropActions) Reset()         { *m = OfpTableFeaturePropActions{} }
-func (m *OfpTableFeaturePropActions) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropActions) ProtoMessage()    {}
-func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{53}
-}
-
-func (m *OfpTableFeaturePropActions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropActions.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropActions.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropActions.Merge(m, src)
-}
-func (m *OfpTableFeaturePropActions) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropActions.Size(m)
-}
-func (m *OfpTableFeaturePropActions) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropActions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropActions proto.InternalMessageInfo
-
-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,proto3" json:"oxm_ids,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableFeaturePropOxm) Reset()         { *m = OfpTableFeaturePropOxm{} }
-func (m *OfpTableFeaturePropOxm) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropOxm) ProtoMessage()    {}
-func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{54}
-}
-
-func (m *OfpTableFeaturePropOxm) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropOxm.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropOxm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropOxm.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropOxm) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropOxm.Merge(m, src)
-}
-func (m *OfpTableFeaturePropOxm) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropOxm.Size(m)
-}
-func (m *OfpTableFeaturePropOxm) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropOxm.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropOxm proto.InternalMessageInfo
-
-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,proto3" json:"experimenter,omitempty"`
-	ExpType              uint32   `protobuf:"varint,3,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	ExperimenterData     []uint32 `protobuf:"varint,4,rep,packed,name=experimenter_data,json=experimenterData,proto3" json:"experimenter_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableFeaturePropExperimenter) Reset()         { *m = OfpTableFeaturePropExperimenter{} }
-func (m *OfpTableFeaturePropExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropExperimenter) ProtoMessage()    {}
-func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{55}
-}
-
-func (m *OfpTableFeaturePropExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropExperimenter.Merge(m, src)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Size(m)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropExperimenter proto.InternalMessageInfo
-
-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,proto3" json:"table_id,omitempty"`
-	Name          string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	MetadataMatch uint64 `protobuf:"varint,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"`
-	MetadataWrite uint64 `protobuf:"varint,4,opt,name=metadata_write,json=metadataWrite,proto3" json:"metadata_write,omitempty"`
-	Config        uint32 `protobuf:"varint,5,opt,name=config,proto3" json:"config,omitempty"`
-	MaxEntries    uint32 `protobuf:"varint,6,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"`
-	// Table Feature Property list
-	Properties           []*OfpTableFeatureProperty `protobuf:"bytes,7,rep,name=properties,proto3" json:"properties,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
-	XXX_unrecognized     []byte                     `json:"-"`
-	XXX_sizecache        int32                      `json:"-"`
-}
-
-func (m *OfpTableFeatures) Reset()         { *m = OfpTableFeatures{} }
-func (m *OfpTableFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeatures) ProtoMessage()    {}
-func (*OfpTableFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{56}
-}
-
-func (m *OfpTableFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeatures.Unmarshal(m, b)
-}
-func (m *OfpTableFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatures.Merge(m, src)
-}
-func (m *OfpTableFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeatures.Size(m)
-}
-func (m *OfpTableFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeatures proto.InternalMessageInfo
-
-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,proto3" json:"table_id,omitempty"`
-	ActiveCount          uint32   `protobuf:"varint,2,opt,name=active_count,json=activeCount,proto3" json:"active_count,omitempty"`
-	LookupCount          uint64   `protobuf:"varint,3,opt,name=lookup_count,json=lookupCount,proto3" json:"lookup_count,omitempty"`
-	MatchedCount         uint64   `protobuf:"varint,4,opt,name=matched_count,json=matchedCount,proto3" json:"matched_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableStats) Reset()         { *m = OfpTableStats{} }
-func (m *OfpTableStats) String() string { return proto.CompactTextString(m) }
-func (*OfpTableStats) ProtoMessage()    {}
-func (*OfpTableStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{57}
-}
-
-func (m *OfpTableStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableStats.Unmarshal(m, b)
-}
-func (m *OfpTableStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableStats.Marshal(b, m, deterministic)
-}
-func (m *OfpTableStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableStats.Merge(m, src)
-}
-func (m *OfpTableStats) XXX_Size() int {
-	return xxx_messageInfo_OfpTableStats.Size(m)
-}
-func (m *OfpTableStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableStats proto.InternalMessageInfo
-
-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,proto3" json:"port_no,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpPortStatsRequest) Reset()         { *m = OfpPortStatsRequest{} }
-func (m *OfpPortStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpPortStatsRequest) ProtoMessage()    {}
-func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{58}
-}
-
-func (m *OfpPortStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpPortStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpPortStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatsRequest.Merge(m, src)
-}
-func (m *OfpPortStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpPortStatsRequest.Size(m)
-}
-func (m *OfpPortStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortStatsRequest proto.InternalMessageInfo
-
-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,proto3" json:"port_no,omitempty"`
-	RxPackets            uint64   `protobuf:"varint,2,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,3,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	RxBytes              uint64   `protobuf:"varint,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
-	TxBytes              uint64   `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	RxDropped            uint64   `protobuf:"varint,6,opt,name=rx_dropped,json=rxDropped,proto3" json:"rx_dropped,omitempty"`
-	TxDropped            uint64   `protobuf:"varint,7,opt,name=tx_dropped,json=txDropped,proto3" json:"tx_dropped,omitempty"`
-	RxErrors             uint64   `protobuf:"varint,8,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"`
-	TxErrors             uint64   `protobuf:"varint,9,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
-	RxFrameErr           uint64   `protobuf:"varint,10,opt,name=rx_frame_err,json=rxFrameErr,proto3" json:"rx_frame_err,omitempty"`
-	RxOverErr            uint64   `protobuf:"varint,11,opt,name=rx_over_err,json=rxOverErr,proto3" json:"rx_over_err,omitempty"`
-	RxCrcErr             uint64   `protobuf:"varint,12,opt,name=rx_crc_err,json=rxCrcErr,proto3" json:"rx_crc_err,omitempty"`
-	Collisions           uint64   `protobuf:"varint,13,opt,name=collisions,proto3" json:"collisions,omitempty"`
-	DurationSec          uint32   `protobuf:"varint,14,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32   `protobuf:"varint,15,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpPortStats) Reset()         { *m = OfpPortStats{} }
-func (m *OfpPortStats) String() string { return proto.CompactTextString(m) }
-func (*OfpPortStats) ProtoMessage()    {}
-func (*OfpPortStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{59}
-}
-
-func (m *OfpPortStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortStats.Unmarshal(m, b)
-}
-func (m *OfpPortStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortStats.Marshal(b, m, deterministic)
-}
-func (m *OfpPortStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStats.Merge(m, src)
-}
-func (m *OfpPortStats) XXX_Size() int {
-	return xxx_messageInfo_OfpPortStats.Size(m)
-}
-func (m *OfpPortStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortStats proto.InternalMessageInfo
-
-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,proto3" json:"group_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpGroupStatsRequest) Reset()         { *m = OfpGroupStatsRequest{} }
-func (m *OfpGroupStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupStatsRequest) ProtoMessage()    {}
-func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{60}
-}
-
-func (m *OfpGroupStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpGroupStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStatsRequest.Merge(m, src)
-}
-func (m *OfpGroupStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupStatsRequest.Size(m)
-}
-func (m *OfpGroupStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupStatsRequest proto.InternalMessageInfo
-
-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,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64   `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpBucketCounter) Reset()         { *m = OfpBucketCounter{} }
-func (m *OfpBucketCounter) String() string { return proto.CompactTextString(m) }
-func (*OfpBucketCounter) ProtoMessage()    {}
-func (*OfpBucketCounter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{61}
-}
-
-func (m *OfpBucketCounter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpBucketCounter.Unmarshal(m, b)
-}
-func (m *OfpBucketCounter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpBucketCounter.Marshal(b, m, deterministic)
-}
-func (m *OfpBucketCounter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucketCounter.Merge(m, src)
-}
-func (m *OfpBucketCounter) XXX_Size() int {
-	return xxx_messageInfo_OfpBucketCounter.Size(m)
-}
-func (m *OfpBucketCounter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpBucketCounter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpBucketCounter proto.InternalMessageInfo
-
-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,proto3" json:"group_id,omitempty"`
-	RefCount             uint32              `protobuf:"varint,2,opt,name=ref_count,json=refCount,proto3" json:"ref_count,omitempty"`
-	PacketCount          uint64              `protobuf:"varint,3,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64              `protobuf:"varint,4,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	DurationSec          uint32              `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32              `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	BucketStats          []*OfpBucketCounter `protobuf:"bytes,7,rep,name=bucket_stats,json=bucketStats,proto3" json:"bucket_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpGroupStats) Reset()         { *m = OfpGroupStats{} }
-func (m *OfpGroupStats) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupStats) ProtoMessage()    {}
-func (*OfpGroupStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{62}
-}
-
-func (m *OfpGroupStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupStats.Unmarshal(m, b)
-}
-func (m *OfpGroupStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupStats.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStats.Merge(m, src)
-}
-func (m *OfpGroupStats) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupStats.Size(m)
-}
-func (m *OfpGroupStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupStats proto.InternalMessageInfo
-
-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,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
-	GroupId              uint32       `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	Buckets              []*OfpBucket `protobuf:"bytes,3,rep,name=buckets,proto3" json:"buckets,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpGroupDesc) Reset()         { *m = OfpGroupDesc{} }
-func (m *OfpGroupDesc) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupDesc) ProtoMessage()    {}
-func (*OfpGroupDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{63}
-}
-
-func (m *OfpGroupDesc) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupDesc.Unmarshal(m, b)
-}
-func (m *OfpGroupDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupDesc.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupDesc.Merge(m, src)
-}
-func (m *OfpGroupDesc) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupDesc.Size(m)
-}
-func (m *OfpGroupDesc) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupDesc.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupDesc proto.InternalMessageInfo
-
-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,proto3" json:"desc,omitempty"`
-	Stats                *OfpGroupStats `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
-}
-
-func (m *OfpGroupEntry) Reset()         { *m = OfpGroupEntry{} }
-func (m *OfpGroupEntry) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupEntry) ProtoMessage()    {}
-func (*OfpGroupEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{64}
-}
-
-func (m *OfpGroupEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupEntry.Unmarshal(m, b)
-}
-func (m *OfpGroupEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupEntry.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupEntry.Merge(m, src)
-}
-func (m *OfpGroupEntry) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupEntry.Size(m)
-}
-func (m *OfpGroupEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupEntry proto.InternalMessageInfo
-
-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,proto3" json:"types,omitempty"`
-	Capabilities         uint32   `protobuf:"varint,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
-	MaxGroups            []uint32 `protobuf:"varint,3,rep,packed,name=max_groups,json=maxGroups,proto3" json:"max_groups,omitempty"`
-	Actions              []uint32 `protobuf:"varint,4,rep,packed,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpGroupFeatures) Reset()         { *m = OfpGroupFeatures{} }
-func (m *OfpGroupFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupFeatures) ProtoMessage()    {}
-func (*OfpGroupFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{65}
-}
-
-func (m *OfpGroupFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupFeatures.Unmarshal(m, b)
-}
-func (m *OfpGroupFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupFeatures.Merge(m, src)
-}
-func (m *OfpGroupFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupFeatures.Size(m)
-}
-func (m *OfpGroupFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupFeatures proto.InternalMessageInfo
-
-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,proto3" json:"meter_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterMultipartRequest) Reset()         { *m = OfpMeterMultipartRequest{} }
-func (m *OfpMeterMultipartRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterMultipartRequest) ProtoMessage()    {}
-func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{66}
-}
-
-func (m *OfpMeterMultipartRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterMultipartRequest.Unmarshal(m, b)
-}
-func (m *OfpMeterMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterMultipartRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMultipartRequest.Merge(m, src)
-}
-func (m *OfpMeterMultipartRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterMultipartRequest.Size(m)
-}
-func (m *OfpMeterMultipartRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterMultipartRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterMultipartRequest proto.InternalMessageInfo
-
-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,proto3" json:"packet_band_count,omitempty"`
-	ByteBandCount        uint64   `protobuf:"varint,2,opt,name=byte_band_count,json=byteBandCount,proto3" json:"byte_band_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandStats) Reset()         { *m = OfpMeterBandStats{} }
-func (m *OfpMeterBandStats) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandStats) ProtoMessage()    {}
-func (*OfpMeterBandStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{67}
-}
-
-func (m *OfpMeterBandStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandStats.Unmarshal(m, b)
-}
-func (m *OfpMeterBandStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandStats.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandStats.Merge(m, src)
-}
-func (m *OfpMeterBandStats) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandStats.Size(m)
-}
-func (m *OfpMeterBandStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandStats proto.InternalMessageInfo
-
-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,proto3" json:"meter_id,omitempty"`
-	FlowCount            uint32               `protobuf:"varint,2,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`
-	PacketInCount        uint64               `protobuf:"varint,3,opt,name=packet_in_count,json=packetInCount,proto3" json:"packet_in_count,omitempty"`
-	ByteInCount          uint64               `protobuf:"varint,4,opt,name=byte_in_count,json=byteInCount,proto3" json:"byte_in_count,omitempty"`
-	DurationSec          uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	BandStats            []*OfpMeterBandStats `protobuf:"bytes,7,rep,name=band_stats,json=bandStats,proto3" json:"band_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
-
-func (m *OfpMeterStats) Reset()         { *m = OfpMeterStats{} }
-func (m *OfpMeterStats) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterStats) ProtoMessage()    {}
-func (*OfpMeterStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{68}
-}
-
-func (m *OfpMeterStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterStats.Unmarshal(m, b)
-}
-func (m *OfpMeterStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterStats.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterStats.Merge(m, src)
-}
-func (m *OfpMeterStats) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterStats.Size(m)
-}
-func (m *OfpMeterStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterStats proto.InternalMessageInfo
-
-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,proto3" json:"flags,omitempty"`
-	MeterId              uint32                `protobuf:"varint,2,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	Bands                []*OfpMeterBandHeader `protobuf:"bytes,3,rep,name=bands,proto3" json:"bands,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpMeterConfig) Reset()         { *m = OfpMeterConfig{} }
-func (m *OfpMeterConfig) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterConfig) ProtoMessage()    {}
-func (*OfpMeterConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{69}
-}
-
-func (m *OfpMeterConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterConfig.Unmarshal(m, b)
-}
-func (m *OfpMeterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterConfig.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterConfig.Merge(m, src)
-}
-func (m *OfpMeterConfig) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterConfig.Size(m)
-}
-func (m *OfpMeterConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterConfig proto.InternalMessageInfo
-
-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,proto3" json:"max_meter,omitempty"`
-	BandTypes            uint32   `protobuf:"varint,2,opt,name=band_types,json=bandTypes,proto3" json:"band_types,omitempty"`
-	Capabilities         uint32   `protobuf:"varint,3,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
-	MaxBands             uint32   `protobuf:"varint,4,opt,name=max_bands,json=maxBands,proto3" json:"max_bands,omitempty"`
-	MaxColor             uint32   `protobuf:"varint,5,opt,name=max_color,json=maxColor,proto3" json:"max_color,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterFeatures) Reset()         { *m = OfpMeterFeatures{} }
-func (m *OfpMeterFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterFeatures) ProtoMessage()    {}
-func (*OfpMeterFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{70}
-}
-
-func (m *OfpMeterFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterFeatures.Unmarshal(m, b)
-}
-func (m *OfpMeterFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterFeatures.Merge(m, src)
-}
-func (m *OfpMeterFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterFeatures.Size(m)
-}
-func (m *OfpMeterFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterFeatures proto.InternalMessageInfo
-
-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
-}
-
-type OfpMeterEntry struct {
-	Config               *OfpMeterConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
-	Stats                *OfpMeterStats  `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *OfpMeterEntry) Reset()         { *m = OfpMeterEntry{} }
-func (m *OfpMeterEntry) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterEntry) ProtoMessage()    {}
-func (*OfpMeterEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{71}
-}
-
-func (m *OfpMeterEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterEntry.Unmarshal(m, b)
-}
-func (m *OfpMeterEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterEntry.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterEntry.Merge(m, src)
-}
-func (m *OfpMeterEntry) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterEntry.Size(m)
-}
-func (m *OfpMeterEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterEntry proto.InternalMessageInfo
-
-func (m *OfpMeterEntry) GetConfig() *OfpMeterConfig {
-	if m != nil {
-		return m.Config
-	}
-	return nil
-}
-
-func (m *OfpMeterEntry) GetStats() *OfpMeterStats {
-	if m != nil {
-		return m.Stats
-	}
-	return nil
-}
-
-// Body for ofp_multipart_request/reply of type OFPMP_EXPERIMENTER.
-type OfpExperimenterMultipartHeader struct {
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpExperimenterMultipartHeader) Reset()         { *m = OfpExperimenterMultipartHeader{} }
-func (m *OfpExperimenterMultipartHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpExperimenterMultipartHeader) ProtoMessage()    {}
-func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{72}
-}
-
-func (m *OfpExperimenterMultipartHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpExperimenterMultipartHeader.Unmarshal(m, b)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpExperimenterMultipartHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterMultipartHeader.Merge(m, src)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpExperimenterMultipartHeader.Size(m)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpExperimenterMultipartHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpExperimenterMultipartHeader proto.InternalMessageInfo
-
-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,proto3" json:"experimenter,omitempty"`
-	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpExperimenterHeader) Reset()         { *m = OfpExperimenterHeader{} }
-func (m *OfpExperimenterHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpExperimenterHeader) ProtoMessage()    {}
-func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{73}
-}
-
-func (m *OfpExperimenterHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpExperimenterHeader.Unmarshal(m, b)
-}
-func (m *OfpExperimenterHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpExperimenterHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpExperimenterHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterHeader.Merge(m, src)
-}
-func (m *OfpExperimenterHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpExperimenterHeader.Size(m)
-}
-func (m *OfpExperimenterHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpExperimenterHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpExperimenterHeader proto.InternalMessageInfo
-
-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,proto3" json:"property,omitempty"`
-	Len                  uint32   `protobuf:"varint,2,opt,name=len,proto3" json:"len,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueuePropHeader) Reset()         { *m = OfpQueuePropHeader{} }
-func (m *OfpQueuePropHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropHeader) ProtoMessage()    {}
-func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{74}
-}
-
-func (m *OfpQueuePropHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropHeader.Unmarshal(m, b)
-}
-func (m *OfpQueuePropHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropHeader.Merge(m, src)
-}
-func (m *OfpQueuePropHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropHeader.Size(m)
-}
-func (m *OfpQueuePropHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropHeader proto.InternalMessageInfo
-
-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,proto3" json:"prop_header,omitempty"`
-	Rate                 uint32              `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpQueuePropMinRate) Reset()         { *m = OfpQueuePropMinRate{} }
-func (m *OfpQueuePropMinRate) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropMinRate) ProtoMessage()    {}
-func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{75}
-}
-
-func (m *OfpQueuePropMinRate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropMinRate.Unmarshal(m, b)
-}
-func (m *OfpQueuePropMinRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropMinRate.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropMinRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMinRate.Merge(m, src)
-}
-func (m *OfpQueuePropMinRate) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropMinRate.Size(m)
-}
-func (m *OfpQueuePropMinRate) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropMinRate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropMinRate proto.InternalMessageInfo
-
-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,proto3" json:"prop_header,omitempty"`
-	Rate                 uint32              `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpQueuePropMaxRate) Reset()         { *m = OfpQueuePropMaxRate{} }
-func (m *OfpQueuePropMaxRate) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropMaxRate) ProtoMessage()    {}
-func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{76}
-}
-
-func (m *OfpQueuePropMaxRate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropMaxRate.Unmarshal(m, b)
-}
-func (m *OfpQueuePropMaxRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropMaxRate.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropMaxRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMaxRate.Merge(m, src)
-}
-func (m *OfpQueuePropMaxRate) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropMaxRate.Size(m)
-}
-func (m *OfpQueuePropMaxRate) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropMaxRate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropMaxRate proto.InternalMessageInfo
-
-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,proto3" json:"prop_header,omitempty"`
-	Experimenter         uint32              `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	Data                 []byte              `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpQueuePropExperimenter) Reset()         { *m = OfpQueuePropExperimenter{} }
-func (m *OfpQueuePropExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropExperimenter) ProtoMessage()    {}
-func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{77}
-}
-
-func (m *OfpQueuePropExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropExperimenter.Unmarshal(m, b)
-}
-func (m *OfpQueuePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropExperimenter.Merge(m, src)
-}
-func (m *OfpQueuePropExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropExperimenter.Size(m)
-}
-func (m *OfpQueuePropExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropExperimenter proto.InternalMessageInfo
-
-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,proto3" json:"queue_id,omitempty"`
-	Port                 uint32                `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
-	Properties           []*OfpQueuePropHeader `protobuf:"bytes,4,rep,name=properties,proto3" json:"properties,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpPacketQueue) Reset()         { *m = OfpPacketQueue{} }
-func (m *OfpPacketQueue) String() string { return proto.CompactTextString(m) }
-func (*OfpPacketQueue) ProtoMessage()    {}
-func (*OfpPacketQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{78}
-}
-
-func (m *OfpPacketQueue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPacketQueue.Unmarshal(m, b)
-}
-func (m *OfpPacketQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPacketQueue.Marshal(b, m, deterministic)
-}
-func (m *OfpPacketQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketQueue.Merge(m, src)
-}
-func (m *OfpPacketQueue) XXX_Size() int {
-	return xxx_messageInfo_OfpPacketQueue.Size(m)
-}
-func (m *OfpPacketQueue) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPacketQueue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPacketQueue proto.InternalMessageInfo
-
-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,proto3" json:"port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueueGetConfigRequest) Reset()         { *m = OfpQueueGetConfigRequest{} }
-func (m *OfpQueueGetConfigRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueGetConfigRequest) ProtoMessage()    {}
-func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{79}
-}
-
-func (m *OfpQueueGetConfigRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueGetConfigRequest.Unmarshal(m, b)
-}
-func (m *OfpQueueGetConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueGetConfigRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueGetConfigRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigRequest.Merge(m, src)
-}
-func (m *OfpQueueGetConfigRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueGetConfigRequest.Size(m)
-}
-func (m *OfpQueueGetConfigRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueGetConfigRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueGetConfigRequest proto.InternalMessageInfo
-
-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,proto3" json:"port,omitempty"`
-	Queues               []*OfpPacketQueue `protobuf:"bytes,2,rep,name=queues,proto3" json:"queues,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpQueueGetConfigReply) Reset()         { *m = OfpQueueGetConfigReply{} }
-func (m *OfpQueueGetConfigReply) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueGetConfigReply) ProtoMessage()    {}
-func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{80}
-}
-
-func (m *OfpQueueGetConfigReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueGetConfigReply.Unmarshal(m, b)
-}
-func (m *OfpQueueGetConfigReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueGetConfigReply.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueGetConfigReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigReply.Merge(m, src)
-}
-func (m *OfpQueueGetConfigReply) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueGetConfigReply.Size(m)
-}
-func (m *OfpQueueGetConfigReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueGetConfigReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueGetConfigReply proto.InternalMessageInfo
-
-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,proto3" json:"type,omitempty"`
-	QueueId              uint32   `protobuf:"varint,3,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionSetQueue) Reset()         { *m = OfpActionSetQueue{} }
-func (m *OfpActionSetQueue) String() string { return proto.CompactTextString(m) }
-func (*OfpActionSetQueue) ProtoMessage()    {}
-func (*OfpActionSetQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{81}
-}
-
-func (m *OfpActionSetQueue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionSetQueue.Unmarshal(m, b)
-}
-func (m *OfpActionSetQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionSetQueue.Marshal(b, m, deterministic)
-}
-func (m *OfpActionSetQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetQueue.Merge(m, src)
-}
-func (m *OfpActionSetQueue) XXX_Size() int {
-	return xxx_messageInfo_OfpActionSetQueue.Size(m)
-}
-func (m *OfpActionSetQueue) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionSetQueue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionSetQueue proto.InternalMessageInfo
-
-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,proto3" json:"port_no,omitempty"`
-	QueueId              uint32   `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueueStatsRequest) Reset()         { *m = OfpQueueStatsRequest{} }
-func (m *OfpQueueStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueStatsRequest) ProtoMessage()    {}
-func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{82}
-}
-
-func (m *OfpQueueStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpQueueStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStatsRequest.Merge(m, src)
-}
-func (m *OfpQueueStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueStatsRequest.Size(m)
-}
-func (m *OfpQueueStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueStatsRequest proto.InternalMessageInfo
-
-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,proto3" json:"port_no,omitempty"`
-	QueueId              uint32   `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	TxBytes              uint64   `protobuf:"varint,3,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,4,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	TxErrors             uint64   `protobuf:"varint,5,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
-	DurationSec          uint32   `protobuf:"varint,6,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32   `protobuf:"varint,7,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueueStats) Reset()         { *m = OfpQueueStats{} }
-func (m *OfpQueueStats) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueStats) ProtoMessage()    {}
-func (*OfpQueueStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{83}
-}
-
-func (m *OfpQueueStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueStats.Unmarshal(m, b)
-}
-func (m *OfpQueueStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueStats.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStats.Merge(m, src)
-}
-func (m *OfpQueueStats) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueStats.Size(m)
-}
-func (m *OfpQueueStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueStats proto.InternalMessageInfo
-
-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,proto3,enum=openflow_13.OfpControllerRole" json:"role,omitempty"`
-	GenerationId         uint64            `protobuf:"varint,2,opt,name=generation_id,json=generationId,proto3" json:"generation_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpRoleRequest) Reset()         { *m = OfpRoleRequest{} }
-func (m *OfpRoleRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpRoleRequest) ProtoMessage()    {}
-func (*OfpRoleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{84}
-}
-
-func (m *OfpRoleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpRoleRequest.Unmarshal(m, b)
-}
-func (m *OfpRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpRoleRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpRoleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpRoleRequest.Merge(m, src)
-}
-func (m *OfpRoleRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpRoleRequest.Size(m)
-}
-func (m *OfpRoleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpRoleRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpRoleRequest proto.InternalMessageInfo
-
-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,proto3" json:"packet_in_mask,omitempty"`
-	PortStatusMask       []uint32 `protobuf:"varint,2,rep,packed,name=port_status_mask,json=portStatusMask,proto3" json:"port_status_mask,omitempty"`
-	FlowRemovedMask      []uint32 `protobuf:"varint,3,rep,packed,name=flow_removed_mask,json=flowRemovedMask,proto3" json:"flow_removed_mask,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpAsyncConfig) Reset()         { *m = OfpAsyncConfig{} }
-func (m *OfpAsyncConfig) String() string { return proto.CompactTextString(m) }
-func (*OfpAsyncConfig) ProtoMessage()    {}
-func (*OfpAsyncConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{85}
-}
-
-func (m *OfpAsyncConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAsyncConfig.Unmarshal(m, b)
-}
-func (m *OfpAsyncConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAsyncConfig.Marshal(b, m, deterministic)
-}
-func (m *OfpAsyncConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAsyncConfig.Merge(m, src)
-}
-func (m *OfpAsyncConfig) XXX_Size() int {
-	return xxx_messageInfo_OfpAsyncConfig.Size(m)
-}
-func (m *OfpAsyncConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAsyncConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAsyncConfig proto.InternalMessageInfo
-
-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 MeterModUpdate struct {
-	Id                   string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	MeterMod             *OfpMeterMod `protobuf:"bytes,2,opt,name=meter_mod,json=meterMod,proto3" json:"meter_mod,omitempty"`
-	Xid                  uint32       `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *MeterModUpdate) Reset()         { *m = MeterModUpdate{} }
-func (m *MeterModUpdate) String() string { return proto.CompactTextString(m) }
-func (*MeterModUpdate) ProtoMessage()    {}
-func (*MeterModUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{86}
-}
-
-func (m *MeterModUpdate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MeterModUpdate.Unmarshal(m, b)
-}
-func (m *MeterModUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MeterModUpdate.Marshal(b, m, deterministic)
-}
-func (m *MeterModUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterModUpdate.Merge(m, src)
-}
-func (m *MeterModUpdate) XXX_Size() int {
-	return xxx_messageInfo_MeterModUpdate.Size(m)
-}
-func (m *MeterModUpdate) XXX_DiscardUnknown() {
-	xxx_messageInfo_MeterModUpdate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MeterModUpdate proto.InternalMessageInfo
-
-func (m *MeterModUpdate) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *MeterModUpdate) GetMeterMod() *OfpMeterMod {
-	if m != nil {
-		return m.MeterMod
-	}
-	return nil
-}
-
-func (m *MeterModUpdate) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
-	}
-	return 0
-}
-
-type MeterStatsReply struct {
-	MeterStats           []*OfpMeterStats `protobuf:"bytes,1,rep,name=meter_stats,json=meterStats,proto3" json:"meter_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *MeterStatsReply) Reset()         { *m = MeterStatsReply{} }
-func (m *MeterStatsReply) String() string { return proto.CompactTextString(m) }
-func (*MeterStatsReply) ProtoMessage()    {}
-func (*MeterStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{87}
-}
-
-func (m *MeterStatsReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MeterStatsReply.Unmarshal(m, b)
-}
-func (m *MeterStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MeterStatsReply.Marshal(b, m, deterministic)
-}
-func (m *MeterStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterStatsReply.Merge(m, src)
-}
-func (m *MeterStatsReply) XXX_Size() int {
-	return xxx_messageInfo_MeterStatsReply.Size(m)
-}
-func (m *MeterStatsReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_MeterStatsReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MeterStatsReply proto.InternalMessageInfo
-
-func (m *MeterStatsReply) GetMeterStats() []*OfpMeterStats {
-	if m != nil {
-		return m.MeterStats
-	}
-	return nil
-}
-
-type FlowTableUpdate struct {
-	Id                   string      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	FlowMod              *OfpFlowMod `protobuf:"bytes,2,opt,name=flow_mod,json=flowMod,proto3" json:"flow_mod,omitempty"`
-	Xid                  uint32      `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
-
-func (m *FlowTableUpdate) Reset()         { *m = FlowTableUpdate{} }
-func (m *FlowTableUpdate) String() string { return proto.CompactTextString(m) }
-func (*FlowTableUpdate) ProtoMessage()    {}
-func (*FlowTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{88}
-}
-
-func (m *FlowTableUpdate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowTableUpdate.Unmarshal(m, b)
-}
-func (m *FlowTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowTableUpdate.Marshal(b, m, deterministic)
-}
-func (m *FlowTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowTableUpdate.Merge(m, src)
-}
-func (m *FlowTableUpdate) XXX_Size() int {
-	return xxx_messageInfo_FlowTableUpdate.Size(m)
-}
-func (m *FlowTableUpdate) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowTableUpdate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowTableUpdate proto.InternalMessageInfo
-
-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
-}
-
-func (m *FlowTableUpdate) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
-	}
-	return 0
-}
-
-type FlowGroupTableUpdate struct {
-	Id                   string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	GroupMod             *OfpGroupMod `protobuf:"bytes,2,opt,name=group_mod,json=groupMod,proto3" json:"group_mod,omitempty"`
-	Xid                  uint32       `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *FlowGroupTableUpdate) Reset()         { *m = FlowGroupTableUpdate{} }
-func (m *FlowGroupTableUpdate) String() string { return proto.CompactTextString(m) }
-func (*FlowGroupTableUpdate) ProtoMessage()    {}
-func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{89}
-}
-
-func (m *FlowGroupTableUpdate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowGroupTableUpdate.Unmarshal(m, b)
-}
-func (m *FlowGroupTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowGroupTableUpdate.Marshal(b, m, deterministic)
-}
-func (m *FlowGroupTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupTableUpdate.Merge(m, src)
-}
-func (m *FlowGroupTableUpdate) XXX_Size() int {
-	return xxx_messageInfo_FlowGroupTableUpdate.Size(m)
-}
-func (m *FlowGroupTableUpdate) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowGroupTableUpdate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowGroupTableUpdate proto.InternalMessageInfo
-
-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
-}
-
-func (m *FlowGroupTableUpdate) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
-	}
-	return 0
-}
-
-type Flows struct {
-	Items                []*OfpFlowStats `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *Flows) Reset()         { *m = Flows{} }
-func (m *Flows) String() string { return proto.CompactTextString(m) }
-func (*Flows) ProtoMessage()    {}
-func (*Flows) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{90}
-}
-
-func (m *Flows) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Flows.Unmarshal(m, b)
-}
-func (m *Flows) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Flows.Marshal(b, m, deterministic)
-}
-func (m *Flows) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Flows.Merge(m, src)
-}
-func (m *Flows) XXX_Size() int {
-	return xxx_messageInfo_Flows.Size(m)
-}
-func (m *Flows) XXX_DiscardUnknown() {
-	xxx_messageInfo_Flows.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Flows proto.InternalMessageInfo
-
-func (m *Flows) GetItems() []*OfpFlowStats {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
-type Meters struct {
-	Items                []*OfpMeterEntry `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *Meters) Reset()         { *m = Meters{} }
-func (m *Meters) String() string { return proto.CompactTextString(m) }
-func (*Meters) ProtoMessage()    {}
-func (*Meters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{91}
-}
-
-func (m *Meters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Meters.Unmarshal(m, b)
-}
-func (m *Meters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Meters.Marshal(b, m, deterministic)
-}
-func (m *Meters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Meters.Merge(m, src)
-}
-func (m *Meters) XXX_Size() int {
-	return xxx_messageInfo_Meters.Size(m)
-}
-func (m *Meters) XXX_DiscardUnknown() {
-	xxx_messageInfo_Meters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Meters proto.InternalMessageInfo
-
-func (m *Meters) GetItems() []*OfpMeterEntry {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
-type FlowGroups struct {
-	Items                []*OfpGroupEntry `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *FlowGroups) Reset()         { *m = FlowGroups{} }
-func (m *FlowGroups) String() string { return proto.CompactTextString(m) }
-func (*FlowGroups) ProtoMessage()    {}
-func (*FlowGroups) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{92}
-}
-
-func (m *FlowGroups) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowGroups.Unmarshal(m, b)
-}
-func (m *FlowGroups) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowGroups.Marshal(b, m, deterministic)
-}
-func (m *FlowGroups) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroups.Merge(m, src)
-}
-func (m *FlowGroups) XXX_Size() int {
-	return xxx_messageInfo_FlowGroups.Size(m)
-}
-func (m *FlowGroups) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowGroups.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowGroups proto.InternalMessageInfo
-
-func (m *FlowGroups) GetItems() []*OfpGroupEntry {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
-type FlowChanges struct {
-	ToAdd                *Flows   `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
-	ToRemove             *Flows   `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *FlowChanges) Reset()         { *m = FlowChanges{} }
-func (m *FlowChanges) String() string { return proto.CompactTextString(m) }
-func (*FlowChanges) ProtoMessage()    {}
-func (*FlowChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{93}
-}
-
-func (m *FlowChanges) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowChanges.Unmarshal(m, b)
-}
-func (m *FlowChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowChanges.Marshal(b, m, deterministic)
-}
-func (m *FlowChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowChanges.Merge(m, src)
-}
-func (m *FlowChanges) XXX_Size() int {
-	return xxx_messageInfo_FlowChanges.Size(m)
-}
-func (m *FlowChanges) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowChanges.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowChanges proto.InternalMessageInfo
-
-func (m *FlowChanges) GetToAdd() *Flows {
-	if m != nil {
-		return m.ToAdd
-	}
-	return nil
-}
-
-func (m *FlowChanges) GetToRemove() *Flows {
-	if m != nil {
-		return m.ToRemove
-	}
-	return nil
-}
-
-type FlowGroupChanges struct {
-	ToAdd                *FlowGroups `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
-	ToRemove             *FlowGroups `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
-	ToUpdate             *FlowGroups `protobuf:"bytes,3,opt,name=to_update,json=toUpdate,proto3" json:"to_update,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
-
-func (m *FlowGroupChanges) Reset()         { *m = FlowGroupChanges{} }
-func (m *FlowGroupChanges) String() string { return proto.CompactTextString(m) }
-func (*FlowGroupChanges) ProtoMessage()    {}
-func (*FlowGroupChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{94}
-}
-
-func (m *FlowGroupChanges) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowGroupChanges.Unmarshal(m, b)
-}
-func (m *FlowGroupChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowGroupChanges.Marshal(b, m, deterministic)
-}
-func (m *FlowGroupChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupChanges.Merge(m, src)
-}
-func (m *FlowGroupChanges) XXX_Size() int {
-	return xxx_messageInfo_FlowGroupChanges.Size(m)
-}
-func (m *FlowGroupChanges) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowGroupChanges.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowGroupChanges proto.InternalMessageInfo
-
-func (m *FlowGroupChanges) GetToAdd() *FlowGroups {
-	if m != nil {
-		return m.ToAdd
-	}
-	return nil
-}
-
-func (m *FlowGroupChanges) GetToRemove() *FlowGroups {
-	if m != nil {
-		return m.ToRemove
-	}
-	return nil
-}
-
-func (m *FlowGroupChanges) GetToUpdate() *FlowGroups {
-	if m != nil {
-		return m.ToUpdate
-	}
-	return nil
-}
-
-type PacketIn struct {
-	Id                   string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	PacketIn             *OfpPacketIn `protobuf:"bytes,2,opt,name=packet_in,json=packetIn,proto3" json:"packet_in,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *PacketIn) Reset()         { *m = PacketIn{} }
-func (m *PacketIn) String() string { return proto.CompactTextString(m) }
-func (*PacketIn) ProtoMessage()    {}
-func (*PacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{95}
-}
-
-func (m *PacketIn) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PacketIn.Unmarshal(m, b)
-}
-func (m *PacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PacketIn.Marshal(b, m, deterministic)
-}
-func (m *PacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketIn.Merge(m, src)
-}
-func (m *PacketIn) XXX_Size() int {
-	return xxx_messageInfo_PacketIn.Size(m)
-}
-func (m *PacketIn) XXX_DiscardUnknown() {
-	xxx_messageInfo_PacketIn.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PacketIn proto.InternalMessageInfo
-
-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,proto3" json:"id,omitempty"`
-	PacketOut            *OfpPacketOut `protobuf:"bytes,2,opt,name=packet_out,json=packetOut,proto3" json:"packet_out,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
-}
-
-func (m *PacketOut) Reset()         { *m = PacketOut{} }
-func (m *PacketOut) String() string { return proto.CompactTextString(m) }
-func (*PacketOut) ProtoMessage()    {}
-func (*PacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{96}
-}
-
-func (m *PacketOut) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PacketOut.Unmarshal(m, b)
-}
-func (m *PacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PacketOut.Marshal(b, m, deterministic)
-}
-func (m *PacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketOut.Merge(m, src)
-}
-func (m *PacketOut) XXX_Size() int {
-	return xxx_messageInfo_PacketOut.Size(m)
-}
-func (m *PacketOut) XXX_DiscardUnknown() {
-	xxx_messageInfo_PacketOut.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PacketOut proto.InternalMessageInfo
-
-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,proto3" json:"id,omitempty"`
-	// Types that are valid to be assigned to Event:
-	//	*ChangeEvent_PortStatus
-	//	*ChangeEvent_Error
-	//	*ChangeEvent_DeviceStatus
-	Event                isChangeEvent_Event `protobuf_oneof:"event"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *ChangeEvent) Reset()         { *m = ChangeEvent{} }
-func (m *ChangeEvent) String() string { return proto.CompactTextString(m) }
-func (*ChangeEvent) ProtoMessage()    {}
-func (*ChangeEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{97}
-}
-
-func (m *ChangeEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChangeEvent.Unmarshal(m, b)
-}
-func (m *ChangeEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChangeEvent.Marshal(b, m, deterministic)
-}
-func (m *ChangeEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChangeEvent.Merge(m, src)
-}
-func (m *ChangeEvent) XXX_Size() int {
-	return xxx_messageInfo_ChangeEvent.Size(m)
-}
-func (m *ChangeEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChangeEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChangeEvent proto.InternalMessageInfo
-
-func (m *ChangeEvent) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-type isChangeEvent_Event interface {
-	isChangeEvent_Event()
-}
-
-type ChangeEvent_PortStatus struct {
-	PortStatus *OfpPortStatus `protobuf:"bytes,2,opt,name=port_status,json=portStatus,proto3,oneof"`
-}
-
-type ChangeEvent_Error struct {
-	Error *OfpErrorMsg `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
-}
-
-type ChangeEvent_DeviceStatus struct {
-	DeviceStatus *OfpDeviceStatus `protobuf:"bytes,4,opt,name=device_status,json=deviceStatus,proto3,oneof"`
-}
-
-func (*ChangeEvent_PortStatus) isChangeEvent_Event() {}
-
-func (*ChangeEvent_Error) isChangeEvent_Event() {}
-
-func (*ChangeEvent_DeviceStatus) isChangeEvent_Event() {}
-
-func (m *ChangeEvent) GetEvent() isChangeEvent_Event {
-	if m != nil {
-		return m.Event
-	}
-	return nil
-}
-
-func (m *ChangeEvent) GetPortStatus() *OfpPortStatus {
-	if x, ok := m.GetEvent().(*ChangeEvent_PortStatus); ok {
-		return x.PortStatus
-	}
-	return nil
-}
-
-func (m *ChangeEvent) GetError() *OfpErrorMsg {
-	if x, ok := m.GetEvent().(*ChangeEvent_Error); ok {
-		return x.Error
-	}
-	return nil
-}
-
-func (m *ChangeEvent) GetDeviceStatus() *OfpDeviceStatus {
-	if x, ok := m.GetEvent().(*ChangeEvent_DeviceStatus); ok {
-		return x.DeviceStatus
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ChangeEvent) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[97].OneofWrappers = []any{
 		(*ChangeEvent_PortStatus)(nil),
 		(*ChangeEvent_Error)(nil),
 		(*ChangeEvent_DeviceStatus)(nil),
 	}
-}
-
-// Additional information required to process flow at device adapters
-type FlowMetadata struct {
-	// Meters associated with flow-update to adapter
-	Meters               []*OfpMeterConfig `protobuf:"bytes,1,rep,name=meters,proto3" json:"meters,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *FlowMetadata) Reset()         { *m = FlowMetadata{} }
-func (m *FlowMetadata) String() string { return proto.CompactTextString(m) }
-func (*FlowMetadata) ProtoMessage()    {}
-func (*FlowMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{98}
-}
-
-func (m *FlowMetadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowMetadata.Unmarshal(m, b)
-}
-func (m *FlowMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowMetadata.Marshal(b, m, deterministic)
-}
-func (m *FlowMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowMetadata.Merge(m, src)
-}
-func (m *FlowMetadata) XXX_Size() int {
-	return xxx_messageInfo_FlowMetadata.Size(m)
-}
-func (m *FlowMetadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowMetadata.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowMetadata proto.InternalMessageInfo
-
-func (m *FlowMetadata) GetMeters() []*OfpMeterConfig {
-	if m != nil {
-		return m.Meters
-	}
-	return nil
-}
-
-func init() {
-	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.OfpDeviceConnection", OfpDeviceConnection_name, OfpDeviceConnection_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)
-	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((*OfpDeviceStatus)(nil), "openflow_13.ofp_device_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((*OfpMeterEntry)(nil), "openflow_13.ofp_meter_entry")
-	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((*MeterModUpdate)(nil), "openflow_13.MeterModUpdate")
-	proto.RegisterType((*MeterStatsReply)(nil), "openflow_13.MeterStatsReply")
-	proto.RegisterType((*FlowTableUpdate)(nil), "openflow_13.FlowTableUpdate")
-	proto.RegisterType((*FlowGroupTableUpdate)(nil), "openflow_13.FlowGroupTableUpdate")
-	proto.RegisterType((*Flows)(nil), "openflow_13.Flows")
-	proto.RegisterType((*Meters)(nil), "openflow_13.Meters")
-	proto.RegisterType((*FlowGroups)(nil), "openflow_13.FlowGroups")
-	proto.RegisterType((*FlowChanges)(nil), "openflow_13.FlowChanges")
-	proto.RegisterType((*FlowGroupChanges)(nil), "openflow_13.FlowGroupChanges")
-	proto.RegisterType((*PacketIn)(nil), "openflow_13.PacketIn")
-	proto.RegisterType((*PacketOut)(nil), "openflow_13.PacketOut")
-	proto.RegisterType((*ChangeEvent)(nil), "openflow_13.ChangeEvent")
-	proto.RegisterType((*FlowMetadata)(nil), "openflow_13.FlowMetadata")
-}
-
-func init() { proto.RegisterFile("voltha_protos/openflow_13.proto", fileDescriptor_08e3a4e375aeddc7) }
-
-var fileDescriptor_08e3a4e375aeddc7 = []byte{
-	// 8566 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x5b, 0x8c, 0x1b, 0x49,
-	0x92, 0x98, 0xf8, 0x68, 0x36, 0x99, 0xec, 0x6e, 0x95, 0x4a, 0x2f, 0x4a, 0x2d, 0x8d, 0x24, 0xee,
-	0xcc, 0xee, 0x2c, 0xd7, 0x37, 0x9a, 0xd1, 0x68, 0xb4, 0x7b, 0xfb, 0x38, 0xab, 0x48, 0x16, 0x9b,
-	0x1c, 0xf1, 0xa5, 0xaa, 0xea, 0x96, 0xb4, 0x86, 0x5d, 0xa0, 0xc8, 0x52, 0x37, 0x6f, 0x48, 0x16,
-	0xb7, 0xaa, 0xba, 0xd5, 0x3a, 0xef, 0x19, 0xb2, 0x0f, 0x86, 0x01, 0xdb, 0x77, 0x67, 0xe3, 0x3e,
-	0x16, 0x30, 0xce, 0x80, 0x0f, 0xb6, 0x3f, 0x0c, 0x03, 0xfe, 0x30, 0x60, 0xc0, 0x80, 0xbf, 0x0f,
-	0xb0, 0x01, 0xc3, 0x06, 0x0e, 0x30, 0xee, 0xe7, 0xee, 0xc7, 0x38, 0xff, 0x18, 0xb8, 0x7f, 0xfb,
-	0xbc, 0x5e, 0x19, 0x91, 0x11, 0x99, 0x95, 0xc5, 0x47, 0x4f, 0xef, 0x7a, 0xd6, 0x1f, 0xfe, 0x12,
-	0x2b, 0x5e, 0x19, 0x19, 0x19, 0x11, 0x19, 0x19, 0x95, 0xd5, 0x62, 0x77, 0x4e, 0xfc, 0x49, 0x74,
-	0x34, 0x70, 0xe7, 0x81, 0x1f, 0xf9, 0xe1, 0x7d, 0x7f, 0xee, 0xcd, 0x5e, 0x4d, 0xfc, 0xd7, 0xee,
-	0x27, 0x9f, 0x7e, 0xc4, 0x41, 0x7a, 0x51, 0x01, 0xdd, 0xbc, 0x75, 0xe8, 0xfb, 0x87, 0x13, 0xef,
-	0xfe, 0x60, 0x3e, 0xbe, 0x3f, 0x98, 0xcd, 0xfc, 0x68, 0x10, 0x8d, 0xfd, 0x59, 0x88, 0xa4, 0xe5,
-	0x21, 0x63, 0xfe, 0xab, 0xb9, 0x7b, 0xe4, 0x0d, 0x46, 0x5e, 0xa0, 0x97, 0xd8, 0xe6, 0x89, 0x17,
-	0x84, 0x63, 0x7f, 0x56, 0x4a, 0xdd, 0x4d, 0x7d, 0xb8, 0x6d, 0x89, 0x47, 0xfd, 0x9b, 0x2c, 0x1b,
-	0xbd, 0x99, 0x7b, 0xa5, 0xf4, 0xdd, 0xd4, 0x87, 0x3b, 0x0f, 0xae, 0x7e, 0xa4, 0x0e, 0x0a, 0x02,
-	0x00, 0x69, 0x71, 0x12, 0x5d, 0x63, 0x99, 0xd3, 0xf1, 0xa8, 0x94, 0xe1, 0x02, 0xe0, 0x67, 0xf9,
-	0x5f, 0xa6, 0xd8, 0x55, 0x1c, 0x65, 0x32, 0xf1, 0x5d, 0x6f, 0xe2, 0x4d, 0xc5, 0x80, 0x0f, 0x49,
-	0x6c, 0x8a, 0x8b, 0xbd, 0xbb, 0x24, 0x56, 0xe1, 0x50, 0x46, 0x78, 0xca, 0xb6, 0x49, 0xaf, 0x97,
-	0xe3, 0x68, 0x3a, 0x98, 0x73, 0xad, 0x8a, 0x0f, 0xbe, 0x79, 0x16, 0x7b, 0x82, 0xa1, 0x79, 0xc1,
-	0x4a, 0x4a, 0xa8, 0x16, 0xd8, 0x26, 0x90, 0x79, 0xb3, 0xa8, 0xfc, 0x1d, 0x76, 0xeb, 0x2c, 0x5e,
-	0x30, 0x12, 0xfe, 0x0a, 0x4b, 0xe9, 0xbb, 0x19, 0x30, 0x12, 0x3d, 0x96, 0x9f, 0xb0, 0x82, 0xe4,
-	0xd4, 0x7f, 0x8d, 0xe5, 0x49, 0x62, 0x58, 0x4a, 0xdd, 0xcd, 0x7c, 0x58, 0x7c, 0x50, 0x3e, 0x4b,
-	0x3f, 0x34, 0x88, 0x25, 0x79, 0xca, 0x1d, 0x76, 0x09, 0x48, 0xc2, 0xd7, 0xe3, 0x68, 0x78, 0xe4,
-	0x0e, 0xfd, 0xd9, 0xab, 0xf1, 0xa1, 0x7e, 0x85, 0x6d, 0xbc, 0x9a, 0x0c, 0x0e, 0x43, 0x5a, 0x1e,
-	0x7c, 0xd0, 0xcb, 0x6c, 0x7b, 0x3a, 0x0e, 0x43, 0x37, 0xf4, 0x66, 0x23, 0x77, 0xe2, 0xcd, 0xb8,
-	0x3d, 0xb6, 0xad, 0x22, 0x00, 0x6d, 0x6f, 0x36, 0x6a, 0x7b, 0xb3, 0x72, 0x95, 0x6d, 0xf3, 0x75,
-	0x1a, 0xbc, 0x9c, 0x78, 0xee, 0xd4, 0x1f, 0xe9, 0x37, 0x58, 0x1e, 0x1f, 0xc6, 0x23, 0xb1, 0xd8,
-	0xfc, 0xb9, 0x35, 0xd2, 0xaf, 0xb1, 0x1c, 0x8e, 0x47, 0x82, 0xe8, 0xa9, 0xfc, 0x4f, 0xd2, 0x2c,
-	0x0f, 0x42, 0xe6, 0x7e, 0x10, 0xe9, 0xd7, 0xd9, 0x26, 0xfc, 0xeb, 0xce, 0x7c, 0x62, 0xcf, 0xc1,
-	0x63, 0xd7, 0x07, 0xc4, 0xd1, 0x6b, 0x77, 0x30, 0x1a, 0x05, 0x64, 0x9f, 0xdc, 0xd1, 0x6b, 0x63,
-	0x34, 0x0a, 0x74, 0x9d, 0x65, 0x67, 0x83, 0xa9, 0xc7, 0x3d, 0xa3, 0x60, 0xf1, 0xdf, 0xca, 0x50,
-	0x59, 0x75, 0x28, 0x98, 0x68, 0x18, 0x0d, 0x22, 0xaf, 0xb4, 0x81, 0x13, 0xe5, 0x0f, 0x20, 0x61,
-	0x78, 0x1c, 0x04, 0xa5, 0x1c, 0x07, 0xf2, 0xdf, 0xfa, 0x7b, 0x8c, 0x0d, 0x46, 0x27, 0x5e, 0x10,
-	0x8d, 0x43, 0x6f, 0x54, 0xda, 0xe4, 0x18, 0x05, 0xa2, 0xdf, 0x62, 0x85, 0xf0, 0x78, 0x0e, 0xba,
-	0x79, 0xa3, 0x52, 0x9e, 0xa3, 0x63, 0x00, 0x48, 0x9c, 0x7b, 0x5e, 0x50, 0x2a, 0xa0, 0x44, 0xf8,
-	0xad, 0xdf, 0x66, 0x0c, 0x24, 0xbb, 0xe1, 0xdc, 0xf3, 0x46, 0x25, 0x86, 0x2c, 0x00, 0xb1, 0x01,
-	0xa0, 0xef, 0xb2, 0xc2, 0x74, 0x70, 0x4a, 0xd8, 0x22, 0xc7, 0xe6, 0xa7, 0x83, 0x53, 0x8e, 0x2c,
-	0xff, 0x9b, 0x14, 0xbb, 0xac, 0x2c, 0xdb, 0x2b, 0x6f, 0x10, 0x1d, 0x07, 0x5e, 0xa8, 0xdf, 0x61,
-	0xc5, 0xd1, 0x20, 0x1a, 0xcc, 0x07, 0xd1, 0x91, 0x30, 0x78, 0xd6, 0x62, 0x02, 0xd4, 0xe2, 0x52,
-	0x67, 0xee, 0xcb, 0xe3, 0x57, 0xaf, 0xbc, 0x20, 0x24, 0xb3, 0xe7, 0x67, 0x55, 0x7c, 0x86, 0xb5,
-	0x9a, 0xe1, 0xd2, 0x85, 0x14, 0x57, 0x9b, 0x33, 0x87, 0x3f, 0xea, 0xf7, 0xd8, 0xd6, 0xe0, 0xf8,
-	0x74, 0x3c, 0x19, 0x0f, 0x82, 0x37, 0x20, 0x19, 0xcd, 0x58, 0x94, 0xb0, 0xd6, 0x48, 0x2f, 0xb3,
-	0xad, 0xe1, 0x60, 0x3e, 0x78, 0x39, 0x9e, 0x8c, 0xa3, 0xb1, 0x17, 0x92, 0x49, 0x13, 0xb0, 0x72,
-	0xc0, 0x2e, 0x8a, 0x95, 0x75, 0xc1, 0xd6, 0xc7, 0xa1, 0xfe, 0x90, 0xe5, 0x02, 0x6f, 0x10, 0x52,
-	0x2e, 0xd8, 0x79, 0x70, 0x6b, 0xc9, 0x7d, 0x39, 0x35, 0xd2, 0x58, 0x44, 0x0b, 0x89, 0x62, 0xe4,
-	0x85, 0x43, 0x0a, 0xc9, 0xab, 0x2b, 0x79, 0x2c, 0x4e, 0x52, 0xee, 0xa1, 0x87, 0x8f, 0xbc, 0x93,
-	0xf1, 0xd0, 0x13, 0xa3, 0x7e, 0x97, 0xe5, 0xf0, 0x17, 0x8d, 0xba, 0x1c, 0x34, 0x44, 0x3f, 0xf4,
-	0x67, 0x33, 0x6f, 0x08, 0xb9, 0xcc, 0x22, 0x8e, 0xf2, 0xdf, 0x4d, 0xb1, 0x2d, 0xa9, 0x17, 0xf8,
-	0xf8, 0xcf, 0xef, 0xa3, 0xb1, 0x3f, 0x66, 0x12, 0xfe, 0xa8, 0xb3, 0xec, 0x74, 0x10, 0x7e, 0x41,
-	0xe6, 0xe5, 0xbf, 0xc1, 0xb3, 0xa4, 0x9f, 0x91, 0x51, 0x63, 0x40, 0xf9, 0x35, 0x26, 0x83, 0xe9,
-	0x20, 0x1a, 0x1e, 0xe9, 0xf7, 0x13, 0x79, 0x6e, 0x77, 0x69, 0x4e, 0x9c, 0x4a, 0x4d, 0x71, 0xbf,
-	0xca, 0x98, 0x7f, 0x3a, 0x75, 0x5f, 0x8d, 0xbd, 0xc9, 0x08, 0xf3, 0x4c, 0xf1, 0xc1, 0xcd, 0x25,
-	0x36, 0x49, 0x62, 0x15, 0xfc, 0xd3, 0x69, 0x83, 0x13, 0x97, 0xff, 0x7b, 0x0a, 0x43, 0x5d, 0x22,
-	0xf5, 0x6f, 0x33, 0x40, 0xbb, 0xc3, 0xc9, 0x20, 0x14, 0x66, 0x5d, 0x2d, 0x8b, 0x53, 0x58, 0x79,
-	0xff, 0x74, 0x5a, 0x83, 0x5f, 0xfa, 0x0f, 0x60, 0x0e, 0x2f, 0x51, 0x0a, 0x9f, 0x7a, 0xf1, 0xc1,
-	0x7b, 0x2b, 0x19, 0x25, 0x55, 0xf3, 0x82, 0x95, 0xf7, 0x5f, 0xbd, 0xe4, 0xaa, 0xe8, 0xcf, 0x99,
-	0xee, 0x9d, 0xce, 0xbd, 0x60, 0x0c, 0x19, 0xcd, 0x0b, 0x48, 0xce, 0x06, 0x97, 0xf3, 0x8d, 0x95,
-	0x72, 0x96, 0xc9, 0x9b, 0x17, 0xac, 0x4b, 0x2a, 0x94, 0x4b, 0xae, 0x6e, 0xb2, 0x0d, 0x8e, 0x2d,
-	0xff, 0xf1, 0x0e, 0x3a, 0x51, 0x42, 0x89, 0xb3, 0xb7, 0x15, 0x95, 0x92, 0x9b, 0x3c, 0x24, 0x9b,
-	0xdf, 0x60, 0xf9, 0xa3, 0x41, 0xe8, 0xf2, 0x75, 0x06, 0xf7, 0xcd, 0x5b, 0x9b, 0x47, 0x83, 0xb0,
-	0x03, 0x4b, 0x7d, 0x85, 0x65, 0xc1, 0x73, 0xd0, 0x29, 0x9a, 0x17, 0x2c, 0xfe, 0xa4, 0x7f, 0xc0,
-	0xb6, 0xe7, 0x47, 0x6f, 0xc2, 0xf1, 0x70, 0x30, 0xe1, 0x3e, 0x87, 0xde, 0xd1, 0xbc, 0x60, 0x6d,
-	0x09, 0x70, 0x1f, 0xc8, 0xbe, 0xc1, 0x76, 0x28, 0xed, 0x7a, 0xd1, 0x00, 0x42, 0x9e, 0x9b, 0x20,
-	0x0b, 0x9b, 0x10, 0x87, 0x77, 0x08, 0xac, 0xdf, 0x60, 0x9b, 0x5e, 0x74, 0xe4, 0x8e, 0xc2, 0x88,
-	0x67, 0xb8, 0xad, 0xe6, 0x05, 0x2b, 0xe7, 0x45, 0x47, 0xf5, 0x30, 0x12, 0xa8, 0x30, 0x18, 0xf2,
-	0x14, 0x27, 0x50, 0x76, 0x30, 0xd4, 0x77, 0x59, 0x1e, 0x50, 0x7c, 0xc2, 0x79, 0x52, 0x00, 0x88,
-	0x1d, 0x98, 0xd3, 0x2e, 0xcb, 0x9f, 0x4c, 0x06, 0x33, 0xf7, 0x64, 0x3c, 0xc2, 0x1c, 0x07, 0x48,
-	0x80, 0x1c, 0x8c, 0x47, 0x12, 0x39, 0x1f, 0xce, 0x31, 0xcd, 0x09, 0x64, 0x7f, 0x38, 0x87, 0x11,
-	0xc7, 0x73, 0x77, 0x14, 0x0e, 0xe7, 0x98, 0xe4, 0x60, 0xc4, 0xf1, 0xbc, 0x1e, 0x0e, 0xe7, 0xfa,
-	0x75, 0x96, 0x1b, 0xcf, 0x5d, 0x6f, 0x38, 0x2b, 0x6d, 0x11, 0x66, 0x63, 0x3c, 0x37, 0x87, 0x33,
-	0x10, 0x38, 0x9e, 0x63, 0x5d, 0x52, 0xda, 0x16, 0x02, 0xc7, 0xf3, 0x3e, 0xaf, 0x4a, 0x38, 0xf2,
-	0xe4, 0x21, 0x9f, 0xc3, 0x4e, 0x8c, 0x3c, 0x79, 0x48, 0x93, 0xe0, 0x48, 0x98, 0xfb, 0x45, 0x15,
-	0x49, 0x93, 0x8f, 0x86, 0x73, 0xce, 0xa8, 0x09, 0x55, 0xa2, 0xe1, 0x1c, 0xf8, 0x08, 0x05, 0x6c,
-	0x97, 0x14, 0x14, 0x71, 0x1d, 0x8f, 0x90, 0x4b, 0x17, 0xa8, 0xe3, 0x91, 0xe0, 0x02, 0x14, 0x70,
-	0x5d, 0x56, 0x50, 0xc0, 0xb5, 0xcb, 0xf2, 0xe1, 0x30, 0x42, 0xb6, 0x2b, 0x42, 0x11, 0x80, 0x90,
-	0x96, 0x1c, 0x09, 0x8c, 0x57, 0x55, 0x24, 0x70, 0xde, 0x63, 0xc5, 0xf1, 0x70, 0x0a, 0x93, 0xe0,
-	0x4b, 0x71, 0x8d, 0xf0, 0x0c, 0x81, 0x7c, 0x35, 0x62, 0x92, 0xa1, 0x3f, 0xf2, 0x4a, 0xd7, 0x93,
-	0x24, 0x35, 0x7f, 0xe4, 0x81, 0x6d, 0x07, 0xc1, 0xdc, 0xf5, 0xe7, 0xa5, 0x92, 0xb0, 0xed, 0x20,
-	0x98, 0xf7, 0xf8, 0x7a, 0x00, 0x22, 0x9c, 0x0f, 0x4a, 0x37, 0x84, 0xce, 0x83, 0x60, 0x6e, 0xcf,
-	0x07, 0x02, 0x15, 0xcd, 0x07, 0xa5, 0x9b, 0x0a, 0xca, 0x89, 0x51, 0xe1, 0xd1, 0xa0, 0xb4, 0x2b,
-	0xfc, 0x06, 0xb8, 0x8e, 0x62, 0xae, 0xa3, 0x41, 0xe9, 0x96, 0x82, 0x72, 0x8e, 0x06, 0xb4, 0x1a,
-	0x8f, 0xb8, 0x11, 0x6e, 0x13, 0x0e, 0x56, 0xe3, 0x51, 0xbc, 0x54, 0x8f, 0xb8, 0x11, 0xde, 0x53,
-	0x91, 0xc2, 0x08, 0x80, 0x7c, 0x35, 0x19, 0xbc, 0xf4, 0x26, 0xa5, 0x3b, 0x72, 0x86, 0xf3, 0x93,
-	0x47, 0x0d, 0x0e, 0x93, 0x46, 0x78, 0x84, 0x76, 0xba, 0x9b, 0x30, 0xc2, 0xa3, 0x84, 0x9d, 0x1e,
-	0xa1, 0x9d, 0xee, 0x25, 0x49, 0xb8, 0x9d, 0xbe, 0xce, 0x76, 0xf8, 0x40, 0xb3, 0x91, 0x1b, 0x0d,
-	0x82, 0x43, 0x2f, 0x2a, 0x95, 0x49, 0x97, 0x2d, 0x80, 0x77, 0x47, 0x0e, 0x87, 0xea, 0x77, 0x49,
-	0xa1, 0xd9, 0xc8, 0x0d, 0xc3, 0x49, 0xe9, 0x6b, 0x44, 0x54, 0x40, 0x22, 0x3b, 0x9c, 0xa8, 0x14,
-	0xd1, 0x64, 0x52, 0x7a, 0x3f, 0x49, 0xe1, 0x4c, 0x26, 0xfa, 0x1d, 0xc6, 0xa6, 0xf3, 0x49, 0xe8,
-	0xe2, 0x9c, 0x3e, 0x20, 0x6d, 0x0a, 0x00, 0x6b, 0xf3, 0x29, 0xdd, 0x60, 0x9b, 0x9c, 0x20, 0x1a,
-	0x96, 0xbe, 0x2e, 0x16, 0x00, 0x00, 0x0e, 0xb7, 0x16, 0x47, 0xbd, 0xf4, 0xc3, 0xd2, 0x37, 0x84,
-	0xcb, 0x00, 0xa4, 0xea, 0x87, 0x80, 0x9c, 0xbf, 0x7c, 0xe9, 0x8e, 0xc3, 0xf1, 0xa8, 0xf4, 0xa1,
-	0x40, 0xce, 0x5f, 0xbe, 0x6c, 0x85, 0xe3, 0x91, 0x7e, 0x9b, 0x15, 0xa2, 0xe3, 0xd9, 0xcc, 0x9b,
-	0xc0, 0xb6, 0xfe, 0x4d, 0xca, 0x18, 0x79, 0x04, 0xb5, 0x46, 0xd2, 0xd2, 0xde, 0x69, 0x74, 0x34,
-	0x0a, 0x4a, 0x15, 0xd5, 0xd2, 0x26, 0x87, 0xe9, 0x1f, 0xb3, 0xcb, 0xc9, 0xc4, 0x83, 0xb9, 0x6d,
-	0xcc, 0x65, 0xa5, 0xac, 0x4b, 0x89, 0xec, 0xc3, 0xf3, 0x5c, 0x99, 0x6d, 0x51, 0x06, 0x42, 0xd2,
-	0x5f, 0xe7, 0xc6, 0x48, 0x59, 0x0c, 0xd3, 0x90, 0x4a, 0x13, 0x06, 0x43, 0xa4, 0xf9, 0x42, 0xa1,
-	0xb1, 0x83, 0x21, 0xa7, 0x79, 0x9f, 0x6d, 0x8b, 0xb4, 0x83, 0x44, 0x53, 0xae, 0x5e, 0xca, 0x2a,
-	0x52, 0xee, 0x11, 0x54, 0x22, 0x23, 0x20, 0x55, 0x20, 0xa8, 0x28, 0x2d, 0x24, 0xa8, 0xa4, 0x52,
-	0xa1, 0x4a, 0xa5, 0x68, 0x45, 0xe1, 0x81, 0x44, 0xbf, 0x49, 0x44, 0x0c, 0x63, 0x44, 0xa5, 0x89,
-	0x04, 0xcd, 0xdf, 0x50, 0x68, 0x1c, 0xa2, 0xf9, 0x80, 0x8f, 0xf6, 0x28, 0xd6, 0xe9, 0x6f, 0xa6,
-	0x68, 0x7e, 0x45, 0x0a, 0x80, 0x04, 0x99, 0x54, 0xea, 0x6f, 0x25, 0xc8, 0x84, 0x56, 0xdf, 0x62,
-	0x9a, 0x12, 0x0e, 0x48, 0xf9, 0x5b, 0x29, 0x1a, 0x76, 0x27, 0x0e, 0x0a, 0x21, 0x53, 0x78, 0x03,
-	0x52, 0xfe, 0x7d, 0x41, 0x59, 0x24, 0x9f, 0xe0, 0x64, 0xb0, 0x9d, 0x08, 0xbf, 0x40, 0xba, 0xdf,
-	0x4e, 0xd1, 0x8a, 0x6e, 0x09, 0xef, 0x48, 0x0c, 0x8e, 0x1e, 0x82, 0xa4, 0xbf, 0x93, 0x18, 0x1c,
-	0xfd, 0x04, 0x88, 0x61, 0x47, 0x3d, 0x19, 0x4c, 0x8e, 0xbd, 0x6a, 0x0e, 0x2b, 0x9d, 0xb2, 0xcb,
-	0x6e, 0xae, 0xdf, 0x95, 0xa1, 0x46, 0x06, 0x0c, 0x9e, 0x5a, 0xa8, 0xb8, 0x82, 0x22, 0xa3, 0x89,
-	0xe7, 0x3a, 0xf0, 0x11, 0x85, 0x89, 0x0a, 0xda, 0x04, 0xac, 0xfc, 0xaf, 0xb3, 0x78, 0xf6, 0x1c,
-	0xf0, 0x22, 0x4e, 0xff, 0x38, 0xb1, 0x67, 0x2f, 0x17, 0x9b, 0x48, 0xa6, 0xd6, 0x48, 0xdf, 0x61,
-	0x39, 0xff, 0x38, 0x9a, 0x1f, 0x47, 0x54, 0x6c, 0xbe, 0xb7, 0x8e, 0x07, 0xa9, 0x20, 0x28, 0xf1,
-	0x97, 0xfe, 0x03, 0x0a, 0xca, 0x28, 0x9a, 0xf0, 0x2d, 0xbd, 0xb8, 0xe2, 0xe8, 0x49, 0xbc, 0x82,
-	0x4e, 0x84, 0xad, 0x13, 0x4d, 0xf4, 0x07, 0x2c, 0x3b, 0x3f, 0x0e, 0x8f, 0xa8, 0x22, 0x5a, 0xab,
-	0x2a, 0xd0, 0xf0, 0x5a, 0xe1, 0x38, 0x3c, 0x82, 0x21, 0xe7, 0xfe, 0x9c, 0x8b, 0xa3, 0x0a, 0x68,
-	0xed, 0x90, 0x82, 0x8e, 0x27, 0x03, 0x7f, 0xde, 0x99, 0x4f, 0x42, 0xfd, 0x33, 0xb6, 0x71, 0x18,
-	0xf8, 0xc7, 0x73, 0x5e, 0x18, 0x14, 0x1f, 0xdc, 0x5e, 0xc7, 0xcb, 0x89, 0x60, 0xd3, 0xe0, 0x3f,
-	0xf4, 0x6f, 0xb3, 0xdc, 0xec, 0x35, 0x9f, 0xe6, 0xe6, 0xd9, 0x26, 0x42, 0x2a, 0x60, 0x9c, 0xbd,
-	0x86, 0x29, 0x3e, 0x66, 0x85, 0xd0, 0x8b, 0xa8, 0x62, 0xcb, 0x73, 0xde, 0x7b, 0xeb, 0x78, 0x25,
-	0x21, 0xe4, 0xa7, 0xd0, 0x8b, 0xb0, 0xf8, 0xfb, 0x7c, 0xc1, 0x05, 0x0a, 0x5c, 0xc8, 0xfb, 0xeb,
-	0x84, 0xa8, 0xb4, 0x90, 0xc4, 0xd5, 0xe7, 0x6a, 0x9e, 0xe5, 0x90, 0xac, 0xfc, 0x18, 0xcb, 0xbd,
-	0xc4, 0xc2, 0xf2, 0x43, 0x1c, 0x94, 0x5f, 0x29, 0x3a, 0xc4, 0xd1, 0xf1, 0x14, 0x4e, 0x69, 0xf1,
-	0x69, 0x38, 0x37, 0x1d, 0x9c, 0xc2, 0x41, 0xf8, 0x63, 0x3c, 0xa0, 0x2d, 0x2c, 0x2f, 0x14, 0x7f,
-	0xd2, 0x25, 0xe8, 0x38, 0x4c, 0xcb, 0x5d, 0xbe, 0x8f, 0x67, 0x23, 0x65, 0x55, 0xa1, 0xf4, 0xf7,
-	0xa2, 0x23, 0x2f, 0x90, 0x1e, 0xbb, 0x6d, 0xc5, 0x80, 0xf2, 0xa7, 0x89, 0x21, 0xc4, 0x72, 0x7e,
-	0x09, 0xd3, 0xaf, 0x30, 0x6d, 0x71, 0x1d, 0x41, 0x29, 0xfe, 0x43, 0x39, 0xa3, 0xf3, 0xe7, 0xd6,
-	0xa8, 0x5c, 0x49, 0x18, 0x02, 0x97, 0x4f, 0xbf, 0x2a, 0x97, 0x9b, 0xfa, 0x03, 0x7c, 0x31, 0xcb,
-	0x4d, 0x76, 0x65, 0xd5, 0x72, 0xe9, 0x1f, 0x53, 0x15, 0xcd, 0xa9, 0xcf, 0x3e, 0x5f, 0x50, 0xb9,
-	0xfd, 0x94, 0x5d, 0x5f, 0xb3, 0x66, 0x4b, 0x21, 0x9f, 0x5a, 0x0e, 0x79, 0x58, 0x28, 0x5e, 0xff,
-	0xc2, 0x8a, 0x6c, 0x59, 0xfc, 0x77, 0xf9, 0xf7, 0x33, 0x68, 0xde, 0xf1, 0x2c, 0x8c, 0x82, 0x63,
-	0xcc, 0x05, 0xba, 0x92, 0x0b, 0xb6, 0x29, 0xda, 0x9b, 0x8c, 0x1d, 0xfa, 0x91, 0x8f, 0xc7, 0x60,
-	0x8a, 0xf8, 0xe5, 0x43, 0x84, 0x22, 0xc5, 0x8d, 0xc9, 0x61, 0xb7, 0x86, 0x27, 0x7e, 0x66, 0xd6,
-	0x1d, 0xb6, 0xf3, 0x3a, 0x18, 0x47, 0x4a, 0x3d, 0x8e, 0x39, 0xe0, 0x5b, 0x67, 0x4a, 0x4b, 0xb2,
-	0x40, 0xf1, 0xce, 0x21, 0xb2, 0x78, 0x7f, 0xcc, 0x36, 0xd1, 0x2c, 0x21, 0xe5, 0x85, 0xf7, 0xcf,
-	0x14, 0x47, 0xb4, 0x10, 0xe3, 0xf4, 0x53, 0xff, 0x2e, 0xdb, 0x98, 0x7a, 0x60, 0x3a, 0xcc, 0x0f,
-	0xe5, 0x33, 0xf9, 0x39, 0x25, 0xc4, 0x2b, 0xff, 0xa1, 0xf7, 0x16, 0xac, 0x9f, 0x5b, 0xd3, 0x11,
-	0x53, 0x45, 0x9c, 0x19, 0x72, 0x39, 0x5c, 0xaa, 0xf2, 0xb7, 0x71, 0x1b, 0x58, 0x6d, 0xd7, 0x33,
-	0x9a, 0x48, 0xe5, 0x01, 0x7b, 0xef, 0x6c, 0x13, 0xea, 0x37, 0x59, 0x5e, 0xae, 0x00, 0x36, 0x44,
-	0xe4, 0xb3, 0xfe, 0x35, 0xb6, 0x9d, 0x2c, 0x5a, 0xd2, 0x9c, 0x60, 0x6b, 0xaa, 0x54, 0x2b, 0xe5,
-	0x36, 0x7a, 0xe3, 0x0a, 0xb3, 0xea, 0x9f, 0xc4, 0xab, 0x81, 0xcd, 0xb7, 0xeb, 0x6b, 0x12, 0x8f,
-	0x34, 0x7f, 0xf9, 0x01, 0x36, 0x29, 0x97, 0x8c, 0xcc, 0x53, 0x03, 0xfc, 0x50, 0x26, 0xc9, 0x9f,
-	0x5b, 0xa3, 0xf2, 0x01, 0xf6, 0x0a, 0xd7, 0x59, 0xf5, 0x17, 0x0e, 0x8a, 0x3f, 0xc9, 0x60, 0x27,
-	0x83, 0xeb, 0x3b, 0xf5, 0xa9, 0x25, 0xe7, 0x7f, 0x31, 0xf6, 0xc8, 0x52, 0xf4, 0xa4, 0xdf, 0x61,
-	0x45, 0xfc, 0xa5, 0x5a, 0x89, 0x21, 0x88, 0x17, 0x01, 0xea, 0x0a, 0x65, 0x92, 0x6d, 0xbe, 0xef,
-	0xb1, 0xcd, 0xa1, 0x3f, 0x9d, 0x0e, 0x66, 0x78, 0xb6, 0xdf, 0x59, 0x91, 0xe1, 0xc5, 0xf8, 0x2e,
-	0x11, 0x5a, 0x82, 0x43, 0xbf, 0xc7, 0xb6, 0xc6, 0xa3, 0x89, 0xe7, 0x46, 0xe3, 0xa9, 0xe7, 0x1f,
-	0x47, 0xd4, 0xff, 0x28, 0x02, 0xcc, 0x41, 0x10, 0x90, 0x1c, 0x0d, 0x82, 0x91, 0x24, 0xc1, 0xae,
-	0x5d, 0x11, 0x60, 0x82, 0xe4, 0x26, 0xcb, 0xcf, 0x83, 0xb1, 0x1f, 0x8c, 0xa3, 0x37, 0xd4, 0xba,
-	0x93, 0xcf, 0xfa, 0x2e, 0x2b, 0x60, 0x3f, 0x0c, 0x54, 0xc7, 0xc6, 0x5d, 0x1e, 0x01, 0x2d, 0xde,
-	0xbd, 0xf4, 0x8f, 0x23, 0x3c, 0x75, 0x63, 0xef, 0x6e, 0xd3, 0x3f, 0x8e, 0xf8, 0x71, 0x7b, 0x97,
-	0x15, 0x00, 0x85, 0xdb, 0x25, 0x76, 0xef, 0x80, 0x76, 0x8f, 0x67, 0x54, 0xd9, 0x40, 0x2d, 0xaa,
-	0x0d, 0xd4, 0xbf, 0xc4, 0x36, 0x78, 0x07, 0x86, 0x9f, 0x67, 0x8b, 0x0f, 0xae, 0xad, 0xee, 0xcf,
-	0x58, 0x48, 0xa4, 0x3f, 0x66, 0x5b, 0xca, 0x82, 0x87, 0xa5, 0x6d, 0xee, 0x60, 0xb7, 0xce, 0x8a,
-	0x35, 0x2b, 0xc1, 0x51, 0xfe, 0x49, 0x0a, 0x4b, 0x9f, 0x97, 0xc7, 0xc3, 0x2f, 0xbc, 0x08, 0x16,
-	0xf7, 0xb5, 0x37, 0x3e, 0x3c, 0x12, 0x3b, 0x18, 0x3d, 0x41, 0x91, 0xf5, 0x9a, 0x37, 0x86, 0xf8,
-	0x34, 0x71, 0x1b, 0x2b, 0x70, 0x08, 0x9f, 0xe8, 0x1d, 0x56, 0x44, 0x34, 0x4e, 0x15, 0x57, 0x17,
-	0x39, 0x70, 0xb2, 0x9f, 0xa8, 0x29, 0xe9, 0x7c, 0x41, 0xf0, 0x1f, 0xa9, 0x79, 0x84, 0xdb, 0x0e,
-	0x78, 0xde, 0xf7, 0x63, 0x2f, 0x59, 0xd7, 0x91, 0x93, 0xc4, 0xcb, 0x6e, 0x72, 0x3f, 0xf1, 0xde,
-	0x60, 0x77, 0x0d, 0xab, 0x52, 0xd4, 0xa9, 0x5b, 0x5e, 0x26, 0xb1, 0xe5, 0xc1, 0x74, 0xd0, 0x60,
-	0xeb, 0xa7, 0x83, 0x78, 0x4b, 0xd0, 0x95, 0x7f, 0x3b, 0xc5, 0x76, 0x78, 0x47, 0x70, 0x00, 0xcf,
-	0x50, 0x2f, 0x24, 0xdd, 0x2a, 0xb5, 0xe0, 0x56, 0xd7, 0xd9, 0xe6, 0x78, 0xa6, 0x9a, 0x3b, 0x37,
-	0x9e, 0x71, 0x5b, 0x2b, 0xa6, 0xcc, 0x9c, 0xcf, 0x94, 0x32, 0xae, 0xb3, 0x6a, 0x5c, 0x93, 0x79,
-	0x49, 0x9f, 0xf1, 0xec, 0x6c, 0x75, 0x7e, 0x55, 0xb6, 0x60, 0xd3, 0x6b, 0x02, 0x54, 0x0a, 0x5a,
-	0xec, 0xc3, 0x9e, 0x11, 0xf7, 0x71, 0x2e, 0xc9, 0x26, 0x72, 0x89, 0x8c, 0x82, 0x8d, 0xf3, 0x44,
-	0x81, 0x98, 0x5e, 0x4e, 0x99, 0xde, 0x3f, 0xce, 0x60, 0x11, 0xc3, 0x99, 0x02, 0x6f, 0xea, 0x9f,
-	0x78, 0xeb, 0x53, 0x97, 0x1a, 0xfb, 0xe9, 0x85, 0xd8, 0xff, 0xbe, 0x9c, 0x78, 0x86, 0x4f, 0xfc,
-	0xfd, 0xd5, 0x99, 0x89, 0x86, 0x38, 0x6b, 0xee, 0xd9, 0xe4, 0xdc, 0xef, 0xb1, 0xad, 0xd1, 0x71,
-	0x30, 0xa0, 0x42, 0x68, 0x28, 0xd2, 0x96, 0x80, 0xd9, 0xde, 0x10, 0xb6, 0x1e, 0x49, 0x32, 0x03,
-	0x1a, 0xcc, 0x5b, 0x92, 0xaf, 0x1b, 0x7a, 0xc3, 0xa5, 0xf4, 0xb7, 0xf9, 0xe5, 0xe9, 0x2f, 0xbf,
-	0x9c, 0xfe, 0xee, 0xb1, 0x2d, 0x5a, 0xc0, 0xa1, 0x7f, 0x3c, 0xc3, 0x4c, 0x96, 0xb5, 0x8a, 0x08,
-	0xab, 0x01, 0x08, 0x72, 0xc0, 0xcb, 0x37, 0x91, 0x47, 0x04, 0x8c, 0x13, 0x14, 0x00, 0x82, 0x68,
-	0xb9, 0x66, 0x6f, 0xce, 0xb1, 0x66, 0xe5, 0x3f, 0x49, 0xe3, 0x1e, 0x87, 0xdb, 0xd9, 0xcb, 0xc1,
-	0x6c, 0x74, 0xde, 0x17, 0x71, 0x0a, 0x87, 0x12, 0xac, 0x3a, 0xcb, 0x06, 0x83, 0xc8, 0xa3, 0xe5,
-	0xe3, 0xbf, 0xb9, 0xc2, 0xc7, 0x41, 0x18, 0xb9, 0xe1, 0xf8, 0x37, 0x3c, 0x72, 0xbd, 0x02, 0x87,
-	0xd8, 0xe3, 0xdf, 0xf0, 0xf4, 0x47, 0x2c, 0x3b, 0x0a, 0xfc, 0x39, 0xd5, 0x48, 0x67, 0x0e, 0x04,
-	0x74, 0x70, 0x7e, 0x82, 0x7f, 0xf5, 0xcf, 0x59, 0x71, 0x14, 0x0e, 0xe7, 0xb0, 0xe4, 0x83, 0xe0,
-	0x8b, 0xb5, 0x4d, 0x64, 0x95, 0x3d, 0x26, 0x6f, 0x5e, 0xb0, 0x18, 0x3c, 0x5a, 0xfc, 0x49, 0xef,
-	0xae, 0x2c, 0x96, 0x3e, 0x3c, 0x4b, 0xd8, 0xb9, 0x6a, 0xa5, 0xab, 0x58, 0xf7, 0x2f, 0x4c, 0xa1,
-	0xfc, 0x3d, 0x2c, 0xa1, 0x56, 0xab, 0x06, 0xf6, 0x9a, 0x07, 0xde, 0xd0, 0x9d, 0x78, 0x27, 0x9e,
-	0xa8, 0xdb, 0x0b, 0x00, 0x69, 0x03, 0xa0, 0x6c, 0xb0, 0xdd, 0x33, 0x54, 0x39, 0x4f, 0x81, 0x51,
-	0xfe, 0xb7, 0x94, 0x74, 0x50, 0xc6, 0x39, 0x73, 0xba, 0x24, 0x5e, 0xce, 0xe9, 0x72, 0x0f, 0x4d,
-	0xab, 0x7b, 0xa8, 0x5a, 0x25, 0x65, 0x12, 0x55, 0x92, 0xfe, 0x1d, 0xb6, 0x01, 0x9a, 0x8b, 0xb4,
-	0x5d, 0x3e, 0xcb, 0xd0, 0xf4, 0x1e, 0x14, 0x19, 0xca, 0x3f, 0x46, 0xcd, 0xbd, 0x20, 0xf0, 0x03,
-	0x77, 0x1a, 0x1e, 0xea, 0xf7, 0x59, 0x4e, 0xe9, 0x39, 0xac, 0x4a, 0xc3, 0x24, 0x80, 0xc8, 0xe4,
-	0x51, 0x22, 0xad, 0x1c, 0x25, 0x74, 0x96, 0xe5, 0x7d, 0xc5, 0x0c, 0xbd, 0x46, 0xf4, 0x47, 0xde,
-	0xca, 0x6c, 0xfd, 0x5b, 0x29, 0x5c, 0x39, 0x1c, 0x3e, 0xd1, 0x05, 0x01, 0x5d, 0x56, 0x9d, 0x52,
-	0x6e, 0xb0, 0xbc, 0x77, 0x8a, 0x1b, 0x1a, 0x0d, 0xb9, 0xe9, 0x9d, 0xce, 0x79, 0x53, 0x73, 0x71,
-	0xa9, 0x32, 0x67, 0xd4, 0x82, 0xaa, 0x16, 0x27, 0x14, 0xb3, 0xc7, 0x93, 0x68, 0x3c, 0x1f, 0xf0,
-	0x37, 0x6e, 0x3f, 0x3a, 0xf6, 0xc2, 0x48, 0xff, 0x34, 0x11, 0xb3, 0x77, 0x96, 0xad, 0x2a, 0x39,
-	0x94, 0x90, 0x5d, 0xbd, 0x78, 0x3a, 0xcb, 0xbe, 0xf4, 0x47, 0x6f, 0xb8, 0x4e, 0x5b, 0x16, 0xff,
-	0x5d, 0x8e, 0xc8, 0x9b, 0x95, 0x71, 0xe7, 0x93, 0x37, 0xbf, 0xec, 0x51, 0x7f, 0x37, 0x85, 0xef,
-	0x98, 0x47, 0x5e, 0x38, 0xe4, 0x3e, 0xf5, 0x2a, 0xe0, 0xbf, 0xf9, 0x78, 0x05, 0x6b, 0x73, 0xfa,
-	0x2a, 0xa8, 0x03, 0x0a, 0xdf, 0xe0, 0xc9, 0x57, 0x8d, 0x05, 0x2b, 0x77, 0xf4, 0x5a, 0x20, 0x42,
-	0x42, 0xe0, 0x8b, 0xe6, 0x5c, 0x88, 0x88, 0xdb, 0x8c, 0x85, 0x5e, 0x30, 0x1e, 0x4c, 0xdc, 0xd9,
-	0xf1, 0x94, 0x5b, 0xb8, 0x60, 0x15, 0x10, 0xd2, 0x3d, 0x9e, 0x02, 0xdf, 0x08, 0x87, 0xe5, 0xc9,
-	0xa5, 0x60, 0xe5, 0x46, 0x73, 0xe0, 0x2b, 0xff, 0x51, 0x8a, 0x5d, 0x93, 0x3b, 0x4e, 0x18, 0x0d,
-	0xa2, 0x50, 0xae, 0xc0, 0x19, 0xef, 0xd0, 0xd5, 0x02, 0x35, 0x7d, 0x46, 0x81, 0x9a, 0x59, 0x28,
-	0x50, 0xd7, 0x6d, 0xce, 0x0b, 0x85, 0xfe, 0xc6, 0x52, 0xa1, 0x2f, 0x77, 0x82, 0xdc, 0x79, 0x76,
-	0x82, 0x3f, 0xcc, 0x60, 0x61, 0x14, 0x4f, 0x4a, 0xdf, 0x61, 0xe9, 0xf1, 0x88, 0xbf, 0x99, 0xc9,
-	0x5a, 0xe9, 0xf1, 0x99, 0x17, 0x04, 0x16, 0x77, 0xd1, 0xf4, 0x39, 0x76, 0xd1, 0xcc, 0x8a, 0x5d,
-	0x54, 0x2d, 0x01, 0xb2, 0x0b, 0x25, 0xc0, 0x57, 0x73, 0xc0, 0x90, 0x8e, 0xb7, 0xa9, 0x3a, 0x5e,
-	0x6c, 0xe4, 0x7c, 0xc2, 0xc8, 0x5f, 0xe1, 0x7e, 0xfc, 0xff, 0xe8, 0x24, 0xf1, 0xc7, 0x29, 0xdc,
-	0x1f, 0x06, 0x87, 0x87, 0x81, 0x77, 0x38, 0x88, 0xbc, 0xff, 0x6f, 0x3c, 0xf4, 0xc7, 0xec, 0xc6,
-	0xea, 0x89, 0x41, 0x12, 0x5a, 0x5c, 0xa8, 0xd4, 0x97, 0x2d, 0x54, 0x7a, 0x71, 0xa1, 0x6e, 0x33,
-	0xc6, 0x87, 0x46, 0x34, 0x95, 0x29, 0x00, 0xe1, 0xe8, 0xf2, 0x9f, 0x67, 0x30, 0xf5, 0xa3, 0xf1,
-	0xe8, 0x1a, 0x87, 0x3b, 0x0f, 0xfc, 0xb9, 0x17, 0xf0, 0xfa, 0x54, 0x4d, 0x82, 0xcb, 0x95, 0xc3,
-	0x32, 0x9b, 0x9a, 0x0d, 0x0f, 0x16, 0x96, 0x1d, 0x9b, 0x59, 0x1f, 0x9f, 0x47, 0x8a, 0xca, 0xc7,
-	0xdf, 0x75, 0x29, 0xcf, 0xba, 0xc5, 0x8a, 0x33, 0xef, 0x34, 0x52, 0x6f, 0x8a, 0x14, 0x1f, 0xdc,
-	0x3f, 0x8f, 0x58, 0x85, 0x0d, 0x6a, 0x25, 0x78, 0xa4, 0xfb, 0x25, 0x7b, 0x8b, 0x6d, 0xad, 0x6f,
-	0x9d, 0x47, 0xde, 0x8a, 0xee, 0xd6, 0xf7, 0x58, 0xc6, 0x3f, 0x9d, 0xae, 0x2d, 0xdc, 0x56, 0x08,
-	0xf1, 0x4f, 0xa7, 0xcd, 0x0b, 0x16, 0x70, 0x81, 0xc5, 0x56, 0x54, 0x6c, 0xe7, 0xb2, 0xd8, 0x99,
-	0x95, 0x9b, 0x78, 0xeb, 0x51, 0x3e, 0x64, 0x5f, 0x3b, 0x87, 0xc5, 0x97, 0x02, 0x36, 0xf5, 0x73,
-	0x07, 0xec, 0xe7, 0xac, 0xfc, 0xe5, 0x6b, 0xa0, 0xbf, 0xcf, 0x76, 0xe2, 0x47, 0x77, 0x3c, 0xc2,
-	0x91, 0xb6, 0xad, 0x2d, 0xb9, 0x32, 0xad, 0x51, 0x58, 0xb6, 0xb1, 0xc5, 0xb6, 0xde, 0xfe, 0xbf,
-	0x48, 0x1b, 0xec, 0xb3, 0x75, 0x8e, 0x0f, 0xeb, 0x01, 0xbb, 0xa4, 0x7f, 0x3a, 0xe5, 0x1a, 0x65,
-	0xf0, 0xe2, 0x8c, 0x7f, 0x3a, 0x05, 0x5d, 0xfe, 0x61, 0x6a, 0xad, 0x05, 0xcf, 0x2c, 0x58, 0x57,
-	0xbc, 0x19, 0x4a, 0x14, 0x51, 0x99, 0x64, 0x11, 0xf5, 0x2d, 0x96, 0xb8, 0x0d, 0xe2, 0x52, 0xb5,
-	0x04, 0x9a, 0x68, 0x2a, 0xa2, 0x0e, 0x95, 0xd3, 0xef, 0xa5, 0x99, 0xbe, 0xa4, 0x53, 0x78, 0x56,
-	0x4e, 0x14, 0x57, 0xd4, 0xd2, 0xca, 0x15, 0xb5, 0x0f, 0xd8, 0x8e, 0xd2, 0x8a, 0x84, 0xfc, 0x95,
-	0xe1, 0xc9, 0x64, 0x3b, 0xee, 0x45, 0x42, 0x2e, 0x57, 0xc9, 0x78, 0xa3, 0x93, 0xd2, 0xa3, 0x24,
-	0x7b, 0x06, 0x40, 0xe5, 0x82, 0xd1, 0x46, 0xe2, 0x82, 0xd1, 0x1d, 0x56, 0x9c, 0x0e, 0x4e, 0x5d,
-	0x6f, 0x16, 0x05, 0x63, 0x2f, 0xa4, 0xad, 0x8c, 0x4d, 0x07, 0xa7, 0x26, 0x42, 0xf4, 0x3d, 0x38,
-	0x27, 0xf0, 0xf4, 0x03, 0xf8, 0x4d, 0xbe, 0x9a, 0xe7, 0x09, 0x23, 0xc8, 0x57, 0x96, 0xc2, 0x5a,
-	0xfe, 0x49, 0x0a, 0x1b, 0xee, 0x48, 0x8a, 0x7b, 0xff, 0xd9, 0x7b, 0x3d, 0xb8, 0xc6, 0x89, 0x9a,
-	0x49, 0xb7, 0xad, 0x22, 0xc2, 0x30, 0x97, 0xde, 0x63, 0x5b, 0x13, 0xdf, 0xff, 0xe2, 0x78, 0xae,
-	0x64, 0xd3, 0xac, 0x55, 0x44, 0x18, 0x92, 0x7c, 0x8d, 0x6d, 0x73, 0xdb, 0x79, 0x23, 0xa2, 0xc9,
-	0x52, 0x3f, 0x17, 0x81, 0x98, 0x74, 0x3f, 0xc1, 0x42, 0x4b, 0x5e, 0x42, 0x8b, 0xb7, 0xb1, 0x75,
-	0x17, 0xb9, 0xca, 0x7f, 0x4a, 0x75, 0x4c, 0xcc, 0xb3, 0xfe, 0xd2, 0xd7, 0x6d, 0xc6, 0x82, 0x53,
-	0xea, 0x98, 0x84, 0x62, 0x47, 0x08, 0x4e, 0xfb, 0x08, 0x00, 0x74, 0x14, 0xa3, 0x71, 0x0e, 0x85,
-	0x48, 0xa2, 0x6f, 0xb0, 0x7c, 0x70, 0xea, 0xc2, 0x06, 0x12, 0x92, 0xf2, 0x9b, 0xc1, 0x69, 0x15,
-	0x1e, 0xb9, 0xf5, 0x04, 0x0a, 0xb7, 0xbd, 0xcd, 0x88, 0x50, 0x38, 0x26, 0x1c, 0x03, 0xe7, 0xde,
-	0x88, 0xaf, 0x2a, 0x1f, 0xb3, 0x8e, 0x00, 0x1a, 0x53, 0xa0, 0x37, 0xc5, 0x98, 0x02, 0xbd, 0xcb,
-	0x0a, 0xc1, 0x29, 0x1e, 0x3f, 0x42, 0x2a, 0x55, 0xf2, 0xc1, 0xa9, 0xc9, 0x9f, 0x01, 0x19, 0x49,
-	0x24, 0x56, 0x2a, 0xf9, 0x48, 0x20, 0xef, 0xb2, 0xad, 0xe0, 0xd4, 0x7d, 0x15, 0x0c, 0xa6, 0x1e,
-	0x90, 0x50, 0xa1, 0xc2, 0x82, 0xd3, 0x06, 0x80, 0x4c, 0x7e, 0x6f, 0xb2, 0x18, 0x9c, 0xba, 0xfe,
-	0x89, 0x17, 0x70, 0x82, 0xa2, 0x50, 0xad, 0x77, 0xe2, 0x05, 0x80, 0xbf, 0xc5, 0x35, 0x1f, 0x06,
-	0x43, 0x8e, 0xde, 0x12, 0x83, 0xd7, 0x82, 0x21, 0x72, 0xb3, 0xa1, 0x3f, 0x99, 0x8c, 0x43, 0xaa,
-	0x5b, 0x68, 0xaf, 0x17, 0x90, 0xa5, 0x0a, 0x71, 0xe7, 0x1c, 0x15, 0xe2, 0xc5, 0xe5, 0x0a, 0xb1,
-	0xfc, 0x10, 0x5b, 0xfc, 0xd8, 0x12, 0x5c, 0x2a, 0x6d, 0xd6, 0xbd, 0x1c, 0x3b, 0xc0, 0xb8, 0xc7,
-	0x2e, 0x20, 0x3a, 0x9c, 0x17, 0xfc, 0xdf, 0x17, 0x0d, 0xe5, 0x9f, 0xa4, 0x31, 0x74, 0x14, 0x75,
-	0xce, 0x50, 0x83, 0x2f, 0x9f, 0xf7, 0x2a, 0x11, 0x37, 0xf9, 0xc0, 0x7b, 0x25, 0x83, 0x26, 0xa1,
-	0x4d, 0xe6, 0xcb, 0xb4, 0xc9, 0x2e, 0x96, 0x30, 0x5f, 0x55, 0x2f, 0xab, 0xca, 0xb6, 0xc8, 0x52,
-	0x7c, 0x46, 0x94, 0x5b, 0xee, 0xac, 0x69, 0xae, 0x0a, 0x73, 0x5a, 0x45, 0x7c, 0xb6, 0x81, 0x07,
-	0x8e, 0x6d, 0x3b, 0xb1, 0x65, 0xf8, 0xe1, 0xed, 0xcb, 0xee, 0x3c, 0x9e, 0xd9, 0xfa, 0x4d, 0xaf,
-	0x6d, 0xfd, 0x66, 0xce, 0xd9, 0xfa, 0x3d, 0x51, 0x97, 0x0a, 0xd2, 0xea, 0x1b, 0xd0, 0x48, 0x1e,
-	0x25, 0x8b, 0x6b, 0x35, 0x02, 0x12, 0xbc, 0xa1, 0xaa, 0x3f, 0xc0, 0x5b, 0xc8, 0xa2, 0x42, 0xbb,
-	0xb5, 0x86, 0x83, 0xd3, 0xe0, 0x1d, 0xe5, 0xb0, 0xfc, 0x77, 0x52, 0xe8, 0x7c, 0x88, 0x92, 0x9b,
-	0xce, 0x15, 0xb6, 0xc1, 0xef, 0x1a, 0x8a, 0x37, 0xb3, 0xfc, 0x61, 0xe9, 0x6a, 0x6e, 0x7a, 0xf9,
-	0x6a, 0x2e, 0x78, 0x01, 0xec, 0x0c, 0x5c, 0x9e, 0xd8, 0x75, 0x0b, 0xd3, 0xc1, 0x29, 0xaf, 0xc6,
-	0x43, 0xbd, 0x94, 0x6c, 0xf2, 0x6f, 0xc7, 0x3b, 0xf9, 0x77, 0xd4, 0xd6, 0xd1, 0x72, 0xfb, 0xe0,
-	0x8c, 0xd7, 0x5a, 0xbf, 0x8e, 0x2f, 0x8c, 0x95, 0xb6, 0x0c, 0xfa, 0x7a, 0x85, 0x5d, 0x22, 0x9f,
-	0xe5, 0x40, 0x35, 0x8c, 0x2e, 0x22, 0xa2, 0x3a, 0x98, 0x61, 0x32, 0xd7, 0xbf, 0xce, 0x2e, 0x72,
-	0xe7, 0x55, 0x28, 0x31, 0x9e, 0xb6, 0x01, 0x2c, 0xe9, 0xca, 0x7f, 0x40, 0x31, 0x85, 0x83, 0xc9,
-	0x98, 0x5a, 0xa3, 0xda, 0x42, 0xdd, 0x9e, 0x5e, 0xa8, 0xdb, 0x61, 0xd4, 0xb8, 0x25, 0xae, 0x06,
-	0xd6, 0x36, 0x82, 0x5b, 0x33, 0xa4, 0x2b, 0x33, 0xae, 0x46, 0x4c, 0x85, 0xd1, 0x55, 0x04, 0xa0,
-	0xa0, 0xf9, 0xaa, 0xe2, 0xeb, 0x31, 0x63, 0xb1, 0x0d, 0x29, 0xba, 0xee, 0x9d, 0xd5, 0x03, 0x43,
-	0x7f, 0x2a, 0xc0, 0x6f, 0x8c, 0xae, 0xdf, 0xc4, 0xb6, 0x3a, 0x92, 0x9c, 0xf9, 0x29, 0x80, 0x6a,
-	0xb9, 0xf4, 0x9a, 0x2e, 0x5c, 0xe6, 0xe7, 0xed, 0xc2, 0xfd, 0x2b, 0x72, 0x69, 0x24, 0x90, 0x2e,
-	0x4d, 0x17, 0xe1, 0xf1, 0x9d, 0x75, 0x4a, 0x5e, 0x84, 0xef, 0xf0, 0x97, 0xa6, 0xb7, 0x69, 0xd2,
-	0xe8, 0xf4, 0xb4, 0x4e, 0x00, 0x71, 0x56, 0x3a, 0x7e, 0x66, 0x85, 0xe3, 0x93, 0x7c, 0xd1, 0x3a,
-	0x14, 0xf2, 0xc1, 0x75, 0x24, 0x72, 0xe8, 0x4f, 0xfc, 0x80, 0x56, 0x06, 0x90, 0x35, 0x78, 0x2e,
-	0xff, 0x58, 0x75, 0x29, 0x8c, 0xfd, 0xcf, 0x64, 0xdd, 0x95, 0x5a, 0x73, 0x83, 0x46, 0xb5, 0xae,
-	0x2c, 0xcb, 0xbe, 0x34, 0x03, 0x28, 0x6e, 0x2b, 0x32, 0xc0, 0x09, 0xbb, 0xc7, 0xbb, 0x86, 0x89,
-	0x7e, 0xa1, 0x0c, 0xbf, 0xa3, 0xd5, 0x37, 0xa4, 0x52, 0x5f, 0x52, 0x07, 0x2f, 0x34, 0x13, 0x45,
-	0xa3, 0x30, 0xa3, 0x34, 0x0a, 0x27, 0xb8, 0x57, 0x26, 0xc6, 0xfd, 0xe5, 0x8d, 0x66, 0x62, 0x5b,
-	0xf2, 0x47, 0xc7, 0xde, 0x31, 0xd5, 0xf9, 0x34, 0x16, 0x6f, 0xea, 0x60, 0xdd, 0x29, 0xbc, 0x42,
-	0x9e, 0x9b, 0x35, 0x96, 0x89, 0x6f, 0xe4, 0xc0, 0xcf, 0x72, 0x80, 0x4a, 0x2b, 0x62, 0xa6, 0xe3,
-	0x99, 0xcb, 0xdf, 0x24, 0xd4, 0x58, 0x51, 0x91, 0x4b, 0xeb, 0xb6, 0xec, 0xb6, 0x4b, 0x1a, 0x60,
-	0xb5, 0xdb, 0x94, 0xfd, 0xdf, 0xc5, 0x57, 0x14, 0xab, 0xc6, 0x1c, 0x9c, 0xfe, 0x92, 0xc7, 0xfc,
-	0x47, 0xd4, 0xa8, 0x51, 0x38, 0x13, 0xd6, 0xff, 0x4a, 0x06, 0x3e, 0xcf, 0xe1, 0x6a, 0xd5, 0x5a,
-	0xfe, 0xed, 0x14, 0x26, 0x18, 0x4a, 0x9d, 0x7c, 0x10, 0xf0, 0x07, 0x1c, 0x2d, 0x4e, 0xc2, 0xfc,
-	0x19, 0x8f, 0x49, 0x4a, 0xdb, 0x08, 0x2f, 0x5c, 0x55, 0x13, 0xe7, 0x93, 0x75, 0x9d, 0xfe, 0x35,
-	0xfa, 0xd3, 0xd1, 0xe4, 0x01, 0x5e, 0xa7, 0x40, 0xa2, 0x43, 0x5e, 0x6b, 0x40, 0x14, 0xca, 0x2d,
-	0x6b, 0xc5, 0x45, 0xaf, 0xf2, 0x21, 0x9e, 0x57, 0x57, 0xf0, 0xcc, 0x27, 0x6f, 0x56, 0x5e, 0x0d,
-	0xfb, 0x8c, 0xe5, 0x38, 0xb5, 0xf8, 0xae, 0xe2, 0xf6, 0xba, 0xb7, 0xaa, 0x9c, 0xca, 0x22, 0xe2,
-	0xb2, 0xb9, 0x74, 0x8b, 0x0a, 0xed, 0xb4, 0xe6, 0x35, 0x80, 0xb4, 0x5d, 0x26, 0x61, 0xbb, 0x72,
-	0x47, 0x75, 0xbe, 0xf3, 0x9d, 0x72, 0x12, 0xe2, 0xd2, 0x49, 0x71, 0x7f, 0x46, 0xa7, 0x39, 0x45,
-	0xde, 0x2f, 0x22, 0x27, 0x71, 0x86, 0xc9, 0x2c, 0x9d, 0x61, 0x94, 0x83, 0x51, 0x76, 0xf1, 0x60,
-	0x94, 0x38, 0x87, 0x6c, 0x2c, 0x9c, 0x43, 0x16, 0xf7, 0xd0, 0xdc, 0x39, 0xf6, 0xd0, 0xcd, 0x15,
-	0xe7, 0x80, 0x29, 0x3a, 0x68, 0xe0, 0x4f, 0x3c, 0x69, 0xae, 0x87, 0x2c, 0x0b, 0xcf, 0x6b, 0xdf,
-	0x59, 0x0e, 0xfd, 0x59, 0x14, 0xf8, 0x93, 0x89, 0x17, 0x70, 0x3e, 0x8b, 0x53, 0xc3, 0x70, 0x87,
-	0xde, 0xcc, 0xa3, 0x01, 0xc9, 0x10, 0x59, 0x6b, 0x2b, 0x06, 0xb6, 0x46, 0xe5, 0xdf, 0xa1, 0x80,
-	0x18, 0x84, 0x6f, 0x66, 0x43, 0xb1, 0xe3, 0xbe, 0xcf, 0x76, 0xe2, 0xda, 0x82, 0xf7, 0x38, 0xa9,
-	0x29, 0x23, 0x4a, 0x0b, 0xde, 0xe5, 0xfc, 0x90, 0x69, 0xca, 0x57, 0x54, 0xe2, 0x5a, 0x0e, 0xd0,
-	0xed, 0x00, 0xdc, 0xe6, 0x60, 0x4e, 0x59, 0x61, 0x97, 0x12, 0x6f, 0xb1, 0x39, 0x29, 0xd6, 0x77,
-	0x17, 0x01, 0x61, 0x21, 0x9c, 0x5f, 0x75, 0xfa, 0x82, 0xed, 0xf0, 0x7d, 0xb5, 0xe3, 0x8f, 0xf6,
-	0xe7, 0x23, 0xc8, 0x54, 0xd8, 0xae, 0xc7, 0xb7, 0x22, 0xe9, 0x31, 0xff, 0xc8, 0x47, 0xbe, 0xb3,
-	0xa3, 0xdd, 0xea, 0xe6, 0xfa, 0xb7, 0x7a, 0x16, 0x96, 0x09, 0x1d, 0x7f, 0xb4, 0xe2, 0x7b, 0xcd,
-	0x3e, 0xbb, 0xc8, 0x07, 0xe3, 0xc5, 0x87, 0xc5, 0xe3, 0xe8, 0x07, 0xac, 0xa8, 0xec, 0x74, 0x6b,
-	0xfb, 0x5e, 0xea, 0x6e, 0xc8, 0xa6, 0x52, 0x46, 0x79, 0xcc, 0x2e, 0x36, 0x26, 0xfe, 0x6b, 0xde,
-	0xb9, 0x5a, 0xa3, 0xff, 0x43, 0x96, 0x17, 0xb7, 0x8d, 0x48, 0xfd, 0x1b, 0x6b, 0xaf, 0x23, 0x59,
-	0x9b, 0xf0, 0x6b, 0xb5, 0xf2, 0x3f, 0x62, 0x57, 0x60, 0x28, 0x5e, 0x1d, 0x9f, 0x35, 0xde, 0xb7,
-	0x59, 0x41, 0xde, 0x5b, 0x59, 0x6b, 0x2f, 0x49, 0x61, 0xe1, 0xd1, 0x64, 0xf5, 0x90, 0xdf, 0x65,
-	0x1b, 0x30, 0x64, 0xa8, 0x7f, 0xc2, 0x36, 0xc6, 0x91, 0x37, 0x15, 0xf6, 0xd9, 0x5d, 0x3d, 0x01,
-	0x2a, 0x16, 0x38, 0x65, 0xf9, 0xfb, 0x2c, 0xc7, 0x6d, 0x1d, 0x42, 0xa9, 0xa1, 0x32, 0xaf, 0x33,
-	0x2e, 0x2f, 0x67, 0x04, 0xf7, 0x63, 0xc6, 0xe4, 0x64, 0xcf, 0x21, 0x41, 0x39, 0x0c, 0x09, 0x09,
-	0x63, 0x56, 0x04, 0x09, 0xb5, 0xa3, 0xc1, 0xec, 0xd0, 0x0b, 0xf5, 0x6f, 0xb2, 0x5c, 0xe4, 0xbb,
-	0x83, 0x91, 0xb8, 0x13, 0xaa, 0x27, 0x64, 0xf0, 0x59, 0x5a, 0x1b, 0x91, 0x6f, 0x8c, 0x46, 0xfa,
-	0x7d, 0x56, 0x88, 0x7c, 0x72, 0x5e, 0x32, 0xe0, 0x2a, 0xea, 0x7c, 0xe4, 0xa3, 0x23, 0x43, 0x19,
-	0xa9, 0x49, 0x6d, 0xc5, 0x80, 0x1f, 0x2d, 0x0c, 0x78, 0x7d, 0x49, 0x04, 0x4e, 0x4e, 0x8c, 0xfa,
-	0x70, 0x79, 0xd4, 0xb5, 0x2c, 0x72, 0x68, 0xe2, 0x3a, 0xe6, 0x9e, 0x40, 0x7d, 0xf1, 0xb3, 0xb8,
-	0xd0, 0x65, 0xca, 0x36, 0xcb, 0xf7, 0x29, 0xb4, 0x57, 0xb9, 0x8f, 0x4c, 0x06, 0x6b, 0xdd, 0x47,
-	0x52, 0x58, 0x79, 0x91, 0x23, 0xca, 0xcf, 0x58, 0x01, 0x85, 0xf6, 0x8e, 0xa3, 0x25, 0xa9, 0xdf,
-	0x65, 0x2c, 0xbe, 0xaa, 0x44, 0x62, 0x77, 0xd7, 0x89, 0xf5, 0x8f, 0x23, 0x8b, 0x94, 0xe8, 0x1d,
-	0x47, 0xe5, 0xff, 0x9a, 0x62, 0x45, 0xb4, 0xaa, 0x79, 0xe2, 0xcd, 0x96, 0x65, 0xff, 0x65, 0x56,
-	0x54, 0x12, 0xd3, 0xda, 0x82, 0x56, 0xa1, 0x69, 0x5e, 0xb0, 0x58, 0x9c, 0xb3, 0xc0, 0xbd, 0x78,
-	0x96, 0x27, 0x03, 0x2e, 0x4f, 0x57, 0xbe, 0xa6, 0x6f, 0x5e, 0xb0, 0x90, 0x54, 0x37, 0xd9, 0x76,
-	0xe2, 0xfb, 0xce, 0xb5, 0x5f, 0x11, 0x26, 0xa8, 0x9a, 0x17, 0xac, 0x2d, 0x04, 0xe0, 0xd0, 0xd5,
-	0x4d, 0xb6, 0xe1, 0xc1, 0xa4, 0xca, 0x26, 0xdb, 0x82, 0xa5, 0x92, 0xb7, 0x6e, 0x3f, 0x63, 0x39,
-	0x1e, 0x16, 0xc2, 0xe7, 0xbf, 0xac, 0xac, 0x47, 0xe2, 0xca, 0x7f, 0x49, 0xb1, 0xa2, 0x9c, 0xec,
-	0xcc, 0xd7, 0x35, 0xb6, 0xd5, 0x6b, 0xf4, 0xfb, 0x6e, 0xab, 0x7b, 0x60, 0xb4, 0x5b, 0x75, 0xed,
-	0x82, 0xae, 0xb1, 0x3c, 0x87, 0x74, 0x8c, 0xe7, 0xda, 0xdb, 0x9f, 0xbd, 0x7b, 0xb7, 0xa9, 0x5f,
-	0x91, 0x34, 0x6e, 0xbf, 0x67, 0x39, 0xda, 0xff, 0x78, 0x07, 0x50, 0x9d, 0x31, 0x0e, 0x75, 0x8c,
-	0x6a, 0xdb, 0xd4, 0xfe, 0x27, 0x87, 0x5d, 0x66, 0x45, 0x0e, 0xeb, 0xf6, 0xac, 0x8e, 0xd1, 0xd6,
-	0xfe, 0x22, 0x41, 0xd8, 0x68, 0xf7, 0x7a, 0x75, 0xed, 0x7f, 0x71, 0x98, 0x18, 0xc4, 0x68, 0xb7,
-	0xb5, 0x9f, 0x72, 0xc8, 0x75, 0x76, 0x91, 0x43, 0x6a, 0xbd, 0xae, 0x63, 0xf5, 0xda, 0x6d, 0xd3,
-	0xd2, 0xfe, 0x77, 0x82, 0xbd, 0xdd, 0xab, 0x19, 0x6d, 0xed, 0x67, 0x49, 0xf6, 0xee, 0x0b, 0xed,
-	0x1d, 0x40, 0x2a, 0xff, 0x7e, 0x03, 0xdf, 0x9e, 0xf3, 0x22, 0x64, 0x87, 0xb3, 0x38, 0x6e, 0xd3,
-	0x6c, 0xb7, 0x7b, 0xda, 0x05, 0xf9, 0x6c, 0x5a, 0x56, 0xcf, 0xd2, 0x52, 0xfa, 0x55, 0x76, 0x09,
-	0x9f, 0x6b, 0xcd, 0x9e, 0x6b, 0x99, 0x4f, 0xf7, 0x4d, 0xdb, 0xd1, 0xd2, 0xfa, 0x65, 0xae, 0x82,
-	0x04, 0xf7, 0xdb, 0x2f, 0xb4, 0x4c, 0x4c, 0xfb, 0xbc, 0x6f, 0x5a, 0xad, 0x8e, 0xd9, 0x75, 0x4c,
-	0x4b, 0xcb, 0xea, 0x37, 0xd8, 0x55, 0x0e, 0x6e, 0x98, 0x86, 0xb3, 0x6f, 0x99, 0xb6, 0x14, 0xb3,
-	0xa1, 0x5f, 0x67, 0x97, 0x17, 0x51, 0x20, 0x2a, 0xa7, 0xef, 0xb2, 0xeb, 0x1c, 0xb1, 0x67, 0x3a,
-	0x30, 0xcd, 0x46, 0x6b, 0x4f, 0x72, 0x6d, 0x4a, 0x81, 0x09, 0x24, 0xf0, 0xe5, 0xa5, 0x5e, 0xb6,
-	0x44, 0x69, 0x05, 0x5d, 0x67, 0x3b, 0x1c, 0xd8, 0x37, 0x6a, 0x4f, 0x4c, 0xc7, 0x6d, 0x75, 0x35,
-	0x26, 0x75, 0x6d, 0xb4, 0x7b, 0xcf, 0x5c, 0xcb, 0xec, 0xf4, 0x0e, 0xcc, 0xba, 0x56, 0xd4, 0xaf,
-	0x30, 0x0d, 0x49, 0x7b, 0x96, 0xe3, 0xda, 0x8e, 0xe1, 0xec, 0xdb, 0xda, 0x96, 0x94, 0x4a, 0x02,
-	0x7a, 0xfb, 0x8e, 0xb6, 0xad, 0x5f, 0x62, 0xdb, 0xb1, 0x84, 0x4e, 0xaf, 0xae, 0xed, 0xc8, 0x81,
-	0xf6, 0xac, 0xde, 0x7e, 0x9f, 0xc3, 0x2e, 0x4a, 0x32, 0x2e, 0x11, 0x40, 0x9a, 0x24, 0xe3, 0xee,
-	0xc0, 0x61, 0x97, 0xf4, 0x9b, 0xec, 0x1a, 0x87, 0x75, 0xf6, 0xdb, 0x4e, 0xab, 0x6f, 0x58, 0x8e,
-	0x9c, 0xaf, 0xae, 0x97, 0xd8, 0x95, 0x25, 0x1c, 0x4c, 0xf7, 0xb2, 0xc4, 0x54, 0x0d, 0xcb, 0x6a,
-	0x99, 0x96, 0xe4, 0xb9, 0xa2, 0x5f, 0x63, 0xfa, 0x02, 0x06, 0x38, 0xae, 0xea, 0xf7, 0xd8, 0x6d,
-	0x0e, 0x7f, 0xba, 0x6f, 0xee, 0x9b, 0xab, 0xcc, 0x7b, 0x4d, 0xbf, 0xc3, 0x76, 0xd7, 0x91, 0x80,
-	0x8c, 0xeb, 0xd2, 0x76, 0x56, 0xaf, 0x6d, 0x4a, 0xbe, 0x92, 0xb4, 0x12, 0x81, 0x81, 0xf6, 0x86,
-	0x9c, 0x17, 0x88, 0x31, 0xec, 0x17, 0xdd, 0x9a, 0x64, 0xb8, 0x29, 0xb5, 0x57, 0x71, 0xc0, 0xb5,
-	0x2b, 0x2d, 0x64, 0x0b, 0x8c, 0x76, 0x4b, 0xc2, 0x3a, 0xa6, 0x63, 0x5a, 0xdc, 0x6a, 0xb7, 0x2b,
-	0x35, 0xbc, 0x7e, 0xb2, 0xf0, 0x17, 0x20, 0x88, 0xb4, 0xc9, 0xd7, 0x5a, 0xc4, 0x2a, 0x0e, 0x06,
-	0xb0, 0x03, 0xd3, 0xb2, 0x5b, 0xbd, 0x6e, 0xb5, 0xe5, 0x74, 0x8c, 0xbe, 0x96, 0xaa, 0x78, 0x58,
-	0xc6, 0xd1, 0x91, 0x00, 0x5b, 0x24, 0xe8, 0x07, 0x35, 0xb7, 0x61, 0x19, 0x7b, 0x22, 0x44, 0x2f,
-	0x90, 0x5c, 0x82, 0xd6, 0xad, 0x5e, 0x5f, 0x4b, 0xd1, 0xac, 0x09, 0x66, 0x99, 0x86, 0xdd, 0xd1,
-	0xd2, 0x49, 0xc2, 0x8e, 0x61, 0x3f, 0xd1, 0x32, 0x95, 0xc7, 0x38, 0x0c, 0xbe, 0x42, 0xa1, 0x6a,
-	0x91, 0x9c, 0xa3, 0xa6, 0xe8, 0x49, 0xce, 0x5d, 0x73, 0xeb, 0x66, 0xdf, 0x32, 0x6b, 0x86, 0x63,
-	0xd6, 0x85, 0x84, 0x5f, 0xc3, 0xaf, 0xc5, 0xf1, 0x56, 0x3d, 0xb1, 0xaa, 0x53, 0xdc, 0x61, 0x05,
-	0x04, 0x41, 0x3e, 0xfa, 0x59, 0x2a, 0x7e, 0x86, 0xd4, 0xf1, 0x2e, 0x55, 0xf9, 0x77, 0x54, 0xb0,
-	0x26, 0x1a, 0x28, 0x98, 0xd5, 0x54, 0x0d, 0xe4, 0x8c, 0xc0, 0xb1, 0x21, 0x06, 0x6c, 0x2d, 0x25,
-	0x0d, 0x82, 0x3e, 0x8b, 0xd0, 0xb4, 0x24, 0x95, 0xe1, 0x62, 0x6b, 0x59, 0x49, 0x8a, 0x51, 0x80,
-	0xd0, 0x3c, 0xe9, 0x5b, 0x73, 0x5b, 0x7d, 0xb2, 0xd2, 0x5d, 0x49, 0x88, 0x8e, 0x86, 0x84, 0x8f,
-	0xf5, 0x6b, 0xdc, 0xbb, 0x48, 0x66, 0xb5, 0xdd, 0xab, 0x3d, 0x31, 0xeb, 0xda, 0xdb, 0x74, 0xe5,
-	0x44, 0xf9, 0xeb, 0x03, 0x09, 0xf3, 0xad, 0x50, 0x5e, 0xb0, 0xd7, 0x7b, 0xcf, 0xba, 0x5a, 0x2a,
-	0xa6, 0xeb, 0x42, 0xb2, 0xaa, 0x1d, 0x68, 0x59, 0x91, 0xcc, 0x39, 0xa8, 0xf1, 0xac, 0xae, 0xdd,
-	0xa5, 0x88, 0x41, 0x48, 0x9c, 0x29, 0x1e, 0x57, 0xfe, 0xca, 0xc2, 0xcb, 0x23, 0x61, 0xfa, 0xbe,
-	0xbd, 0x3c, 0xac, 0xed, 0xb6, 0x5b, 0xdd, 0x27, 0x0b, 0xc3, 0xda, 0x72, 0x16, 0x69, 0x4a, 0xaf,
-	0x9c, 0xee, 0xc0, 0xd4, 0xb2, 0x95, 0x3f, 0x4d, 0xe3, 0x27, 0x3a, 0x5c, 0xba, 0x6c, 0x9a, 0x11,
-	0x63, 0x43, 0x19, 0x40, 0x82, 0x3e, 0xf9, 0xb8, 0x53, 0x75, 0x9b, 0xf5, 0x58, 0x3c, 0x81, 0x1a,
-	0x75, 0xe9, 0x77, 0x1c, 0x44, 0x64, 0xd9, 0x45, 0x58, 0xa3, 0xae, 0xe5, 0xc5, 0xec, 0x1b, 0xee,
-	0x27, 0x7b, 0x9c, 0x4a, 0x4b, 0x42, 0x1a, 0x60, 0x0f, 0x45, 0x3c, 0x82, 0x1e, 0xeb, 0xba, 0x00,
-	0x3d, 0x24, 0xd0, 0x5b, 0xf0, 0xff, 0x58, 0x3c, 0x01, 0xd3, 0xfa, 0x25, 0x29, 0xcd, 0x41, 0x10,
-	0x18, 0xbc, 0x88, 0xa0, 0x9e, 0xd3, 0x34, 0x2d, 0xed, 0x6d, 0x3e, 0x26, 0xaa, 0xf5, 0xfa, 0x7d,
-	0x00, 0x69, 0x31, 0x51, 0xa3, 0x55, 0x05, 0xc8, 0xdd, 0x78, 0x48, 0x63, 0xdf, 0xe9, 0x75, 0xcd,
-	0x3d, 0xed, 0xed, 0x63, 0xfd, 0x92, 0xa0, 0xea, 0x1b, 0xfb, 0xb6, 0xa9, 0xbd, 0x7d, 0x9b, 0xd2,
-	0xaf, 0x71, 0x57, 0x12, 0x20, 0xc8, 0x19, 0x1d, 0xed, 0xed, 0xdb, 0x74, 0xa5, 0xae, 0x38, 0x0d,
-	0x5d, 0xfc, 0xdd, 0xe6, 0x51, 0xd1, 0xb7, 0x5c, 0xa3, 0x8e, 0x7b, 0xf8, 0x16, 0x3e, 0xd6, 0xcd,
-	0xb6, 0xe9, 0x98, 0x5a, 0x2a, 0x86, 0x74, 0x7a, 0xf5, 0x56, 0xe3, 0x85, 0x96, 0xae, 0x34, 0xb0,
-	0x8d, 0xb5, 0xf4, 0x47, 0x25, 0xc8, 0x83, 0xeb, 0xe6, 0x01, 0xa4, 0xc8, 0xae, 0x59, 0x73, 0x4c,
-	0x10, 0x89, 0xbb, 0x1a, 0x40, 0xeb, 0x2d, 0x3b, 0x46, 0xa4, 0x2a, 0x9f, 0xa2, 0x2b, 0xc5, 0x7f,
-	0xc8, 0x81, 0x16, 0xa7, 0xc3, 0x83, 0xa7, 0x5b, 0x37, 0x2c, 0x60, 0x47, 0x05, 0x3b, 0x8e, 0xdb,
-	0x7b, 0xde, 0xd1, 0x52, 0x95, 0x2f, 0xe2, 0xbf, 0xd4, 0xc0, 0xff, 0xf4, 0x02, 0xe9, 0xf7, 0xbc,
-	0x53, 0x73, 0xbb, 0xcf, 0x3b, 0xee, 0xc7, 0x72, 0x0e, 0x02, 0xf2, 0x89, 0x96, 0xd2, 0x77, 0x79,
-	0x16, 0x01, 0x48, 0xaf, 0x6f, 0x76, 0x79, 0x24, 0x57, 0x0d, 0xbb, 0x55, 0x03, 0xa3, 0xe8, 0x37,
-	0xb8, 0x7e, 0x80, 0x4c, 0xec, 0xd4, 0xef, 0xde, 0x65, 0x2a, 0xff, 0x20, 0xcf, 0x2e, 0xaf, 0xf8,
-	0xe3, 0x07, 0x14, 0x1c, 0xcf, 0x41, 0xa9, 0x46, 0x55, 0x56, 0x37, 0x17, 0x28, 0xbd, 0xab, 0xf0,
-	0xe6, 0x0b, 0xc4, 0xa5, 0xc8, 0x0c, 0x02, 0xd7, 0x31, 0x1d, 0xa3, 0x6e, 0x38, 0x86, 0x96, 0x5e,
-	0x10, 0x66, 0x3a, 0x4d, 0xb7, 0x6e, 0x3b, 0x5a, 0x66, 0x05, 0xdc, 0xb6, 0x6a, 0x5a, 0x76, 0x41,
-	0x10, 0xc0, 0x9d, 0x17, 0x7d, 0x53, 0x96, 0x0f, 0x02, 0x71, 0xd0, 0x36, 0xba, 0xee, 0x41, 0xab,
-	0xae, 0xe5, 0x56, 0x21, 0xfa, 0xb5, 0xbe, 0xb6, 0xb9, 0x38, 0x8f, 0xbe, 0x5b, 0xb7, 0x6b, 0x7d,
-	0x2d, 0x4f, 0x5b, 0x9a, 0x02, 0x37, 0x6b, 0x5d, 0xad, 0xb0, 0x20, 0xa7, 0xd5, 0x77, 0xfb, 0x56,
-	0xcf, 0xe9, 0x69, 0x6c, 0x09, 0x71, 0xf0, 0x90, 0xeb, 0x5a, 0x5c, 0x85, 0x80, 0xc9, 0x6d, 0x2d,
-	0x8c, 0xec, 0xd4, 0xfa, 0x9c, 0x61, 0x7b, 0x05, 0x1c, 0xe8, 0x77, 0x16, 0xe0, 0xfb, 0x75, 0xa4,
-	0xbf, 0xb8, 0x02, 0x0e, 0xf4, 0xda, 0xc2, 0xc0, 0x76, 0xcd, 0x41, 0x86, 0x4b, 0xab, 0x10, 0x75,
-	0x5e, 0x56, 0x2c, 0xac, 0x5d, 0xad, 0x03, 0xca, 0x72, 0xcb, 0x5e, 0x5e, 0x8d, 0xab, 0xf5, 0xea,
-	0xa6, 0x76, 0x65, 0xc1, 0x56, 0x86, 0xd5, 0x77, 0x7b, 0x7d, 0xed, 0xea, 0x82, 0x62, 0x00, 0xb6,
-	0xfb, 0x86, 0x76, 0x6d, 0x05, 0xdc, 0xe9, 0x1b, 0xda, 0xf5, 0x55, 0xf4, 0x4d, 0x43, 0x2b, 0xad,
-	0xa2, 0x6f, 0x1a, 0xda, 0x8d, 0x65, 0xcb, 0x3e, 0xe2, 0x13, 0xbc, 0xb9, 0x0a, 0x01, 0x13, 0xdc,
-	0x5d, 0x9c, 0x04, 0x20, 0x1a, 0x6d, 0xa3, 0x6a, 0xb6, 0xb5, 0x5b, 0xab, 0x26, 0xf8, 0x08, 0x27,
-	0x7f, 0x7b, 0x35, 0x8e, 0x4f, 0xfe, 0x3d, 0xfd, 0x36, 0xbb, 0xb1, 0x28, 0xb3, 0x5b, 0x77, 0x1d,
-	0xc3, 0xda, 0x33, 0x1d, 0xed, 0xce, 0xaa, 0x21, 0xbb, 0x75, 0xd7, 0x6e, 0xb7, 0xb5, 0xbb, 0x6b,
-	0x70, 0x4e, 0xbb, 0xad, 0xdd, 0xa3, 0x5d, 0x5f, 0xc6, 0x4a, 0xbf, 0x6d, 0xbb, 0xa8, 0x69, 0x79,
-	0xc1, 0x1e, 0x1c, 0xe5, 0xd4, 0xb4, 0xaf, 0x2d, 0x86, 0x17, 0xc0, 0xab, 0x3d, 0x5b, 0x7b, 0x7f,
-	0x01, 0xd1, 0xaf, 0x56, 0xdd, 0x96, 0xdd, 0xaa, 0x6b, 0x1f, 0x50, 0x09, 0x24, 0x5d, 0x6d, 0xbf,
-	0xdb, 0x35, 0xdb, 0x6e, 0xab, 0xae, 0x7d, 0x7d, 0x95, 0x6a, 0xe6, 0x73, 0xa7, 0x59, 0xb7, 0xb4,
-	0x6f, 0x54, 0x3e, 0xc5, 0x53, 0x10, 0xff, 0x54, 0x7f, 0x3c, 0xd2, 0x2f, 0xf2, 0xe4, 0x7b, 0xd0,
-	0xaa, 0xbb, 0xdd, 0x5e, 0xd7, 0xe4, 0x5b, 0xdf, 0x0e, 0x01, 0xfa, 0x96, 0x69, 0x9b, 0x5d, 0x47,
-	0x7b, 0x7b, 0xb7, 0xf2, 0x1f, 0x52, 0xd8, 0x08, 0x1d, 0xcf, 0x4f, 0x1e, 0xd1, 0xa7, 0xe5, 0xe2,
-	0x3a, 0x2f, 0x50, 0xb7, 0xcc, 0xe6, 0xd2, 0xde, 0x06, 0x30, 0x10, 0xf9, 0x1c, 0x72, 0x07, 0xee,
-	0x93, 0x00, 0x32, 0xed, 0xbe, 0x96, 0xa6, 0x51, 0xe1, 0xd9, 0xd8, 0x77, 0x9a, 0x5a, 0x56, 0x01,
-	0xd4, 0xa1, 0x98, 0xcc, 0x2b, 0x00, 0x28, 0xba, 0x34, 0x4d, 0x91, 0x6a, 0xf5, 0xf6, 0x21, 0xbf,
-	0xdd, 0x55, 0xa4, 0x36, 0x7b, 0x7d, 0xed, 0x31, 0xed, 0x40, 0xf0, 0xbc, 0xdf, 0xb5, 0xcc, 0x3e,
-	0x6c, 0x67, 0x2a, 0xc8, 0x36, 0x9f, 0x42, 0xe1, 0xf1, 0xd3, 0x74, 0xe2, 0xdb, 0x5e, 0xfa, 0xfb,
-	0x65, 0x40, 0x66, 0xf0, 0xb3, 0x40, 0x7f, 0x1f, 0x32, 0x21, 0x2e, 0x93, 0x01, 0xc5, 0x72, 0xff,
-	0x85, 0xeb, 0x38, 0x6d, 0x7e, 0x4c, 0x28, 0x52, 0xb4, 0xa8, 0xf0, 0x56, 0x57, 0xa6, 0x03, 0x03,
-	0x4b, 0x5c, 0x5c, 0x54, 0xa7, 0x2d, 0xc3, 0xdb, 0x70, 0xdc, 0xba, 0x59, 0x8b, 0xe1, 0x1a, 0x15,
-	0x18, 0x86, 0xe3, 0xf6, 0xf7, 0xed, 0x26, 0xcf, 0x68, 0xda, 0x25, 0x32, 0x26, 0x00, 0x7b, 0x7d,
-	0x84, 0xe9, 0x0b, 0x84, 0x20, 0x41, 0xbb, 0x9c, 0x24, 0xe4, 0xb0, 0x2b, 0x31, 0x21, 0x68, 0xc0,
-	0x4b, 0x30, 0xed, 0x2a, 0x59, 0xd1, 0xa0, 0x23, 0x8c, 0x76, 0x8d, 0x76, 0x38, 0xa2, 0xea, 0x3e,
-	0xe3, 0xda, 0x5c, 0x8f, 0xa1, 0xa0, 0x25, 0x41, 0x4b, 0x49, 0x89, 0x8d, 0x96, 0xd9, 0xae, 0x6b,
-	0x37, 0x94, 0xa1, 0x41, 0x9f, 0x7e, 0xb5, 0xaa, 0xdd, 0xa4, 0xa5, 0x21, 0x75, 0x00, 0xb4, 0xab,
-	0x97, 0xc4, 0xbc, 0x97, 0xb6, 0xa4, 0x03, 0xbc, 0xf0, 0xa3, 0x34, 0x6a, 0xe9, 0x9b, 0x6d, 0x51,
-	0x65, 0x77, 0xda, 0x89, 0x23, 0x39, 0x23, 0x18, 0x14, 0xc1, 0xff, 0xed, 0x5d, 0x86, 0x4a, 0x03,
-	0x80, 0x74, 0x7b, 0x6e, 0x75, 0xbf, 0xd1, 0x20, 0xb9, 0xff, 0x59, 0xb8, 0xa8, 0xf2, 0x5d, 0x26,
-	0x5f, 0x5b, 0x72, 0x1c, 0xb5, 0xb2, 0xc6, 0xf9, 0xb6, 0x1c, 0x77, 0xaf, 0xe7, 0xf4, 0xe8, 0x18,
-	0x9f, 0xa2, 0x78, 0x6a, 0x39, 0xee, 0x33, 0xab, 0xe5, 0x98, 0xea, 0x0e, 0x87, 0x21, 0x28, 0x31,
-	0x46, 0xcd, 0x69, 0xf5, 0xba, 0xb6, 0x96, 0x89, 0x11, 0x46, 0xbf, 0xdf, 0x7e, 0x21, 0x11, 0xd9,
-	0x18, 0x51, 0x6b, 0x9b, 0x86, 0x25, 0x11, 0x1b, 0xc2, 0xaf, 0xe9, 0xdc, 0xa3, 0xe5, 0xc8, 0x52,
-	0xad, 0x15, 0x96, 0xfa, 0xeb, 0x38, 0xa1, 0xc5, 0xef, 0x31, 0xa9, 0xa0, 0x68, 0xd4, 0x12, 0x15,
-	0x4f, 0xa3, 0x26, 0xea, 0x1b, 0xb1, 0x53, 0x4b, 0x88, 0x6b, 0x3b, 0x56, 0xab, 0x06, 0xc7, 0x7c,
-	0x49, 0x4a, 0xc5, 0x51, 0x26, 0x26, 0x45, 0x88, 0x20, 0xcd, 0x56, 0xfe, 0x29, 0xbd, 0xff, 0x95,
-	0xa3, 0x63, 0xbc, 0xa3, 0x31, 0x1b, 0x6a, 0x29, 0x4b, 0x22, 0x1a, 0xae, 0x6d, 0x76, 0xeb, 0xf2,
-	0x00, 0x1e, 0xab, 0xd1, 0x70, 0x6b, 0x4d, 0xb3, 0xf6, 0xc4, 0xed, 0x1d, 0x98, 0x56, 0xdb, 0xe8,
-	0xcb, 0x82, 0xa1, 0xd1, 0x70, 0x21, 0xc1, 0x40, 0x24, 0xed, 0x77, 0x9d, 0xd8, 0x68, 0x8d, 0x06,
-	0x2f, 0xd9, 0x9f, 0x48, 0x44, 0x3e, 0x81, 0xa8, 0xbe, 0x90, 0x08, 0xad, 0x62, 0xe3, 0x11, 0x0a,
-	0xbf, 0x9c, 0xc7, 0xd9, 0xed, 0x2d, 0x35, 0x74, 0xf6, 0x94, 0x86, 0x8e, 0x80, 0xc4, 0xdd, 0x17,
-	0x09, 0x91, 0x0d, 0x95, 0xcf, 0xb1, 0x3c, 0x5c, 0xfa, 0xc2, 0x91, 0x0c, 0xbf, 0x97, 0x34, 0xfc,
-	0x9e, 0x62, 0x78, 0x09, 0x21, 0xfb, 0xa6, 0x2b, 0xb6, 0x7a, 0x45, 0x86, 0xbb, 0x23, 0x09, 0xc1,
-	0x53, 0x9c, 0x14, 0x02, 0x41, 0xd6, 0x36, 0x6b, 0x90, 0x2b, 0x31, 0x0c, 0xf6, 0xc0, 0x5f, 0xeb,
-	0x2d, 0xcb, 0xe4, 0x0b, 0xb7, 0x85, 0x4a, 0x3a, 0x6e, 0xa3, 0xa1, 0x65, 0x2a, 0x7d, 0x74, 0x8c,
-	0xc5, 0xef, 0x00, 0x69, 0x71, 0x2c, 0xb0, 0x52, 0xc7, 0x70, 0x6a, 0x4d, 0xed, 0x02, 0xb9, 0x9b,
-	0x70, 0x40, 0x79, 0xf0, 0xb3, 0x84, 0x91, 0x78, 0xa8, 0xa7, 0x2b, 0x7f, 0x2f, 0x85, 0x6f, 0xa8,
-	0x56, 0x7c, 0x61, 0x47, 0xab, 0x65, 0x59, 0x6e, 0xab, 0xde, 0x36, 0x5d, 0xa7, 0xd5, 0x31, 0x7b,
-	0x4a, 0x86, 0xb4, 0x2c, 0xb7, 0x69, 0x58, 0x75, 0x09, 0x17, 0x46, 0xb0, 0x64, 0x05, 0x9e, 0x8e,
-	0x29, 0xf1, 0x08, 0x29, 0x9d, 0x4f, 0xc2, 0xb1, 0x07, 0x40, 0xf0, 0x6c, 0x65, 0x46, 0x7f, 0x46,
-	0x8d, 0x5f, 0x2a, 0xa0, 0xf2, 0xd9, 0xfd, 0xa1, 0x69, 0xf5, 0xe4, 0x92, 0x76, 0x70, 0x49, 0xdf,
-	0xfe, 0xf4, 0xdd, 0xa6, 0x7e, 0x95, 0xcf, 0xba, 0xe3, 0xda, 0xed, 0xde, 0xb3, 0xbe, 0xe1, 0x34,
-	0xa9, 0x79, 0x86, 0x5d, 0xb5, 0x8e, 0xda, 0x55, 0x53, 0x3b, 0x68, 0x1d, 0x3c, 0x45, 0xf3, 0x05,
-	0x9f, 0x2e, 0x7d, 0xc3, 0xa5, 0x16, 0xf3, 0x55, 0x35, 0x73, 0xa0, 0x3d, 0x01, 0x46, 0xfd, 0x02,
-	0x9c, 0x03, 0x07, 0xd8, 0x35, 0x38, 0x0b, 0x77, 0x0c, 0xeb, 0x89, 0x26, 0x8a, 0x72, 0x80, 0x2f,
-	0xc5, 0xf5, 0xe7, 0xea, 0x07, 0x79, 0xcb, 0xfe, 0xd5, 0x49, 0xfa, 0x57, 0x67, 0xc9, 0xbf, 0x3a,
-	0x8a, 0x7f, 0x1d, 0xaa, 0xb7, 0x1e, 0xd4, 0x10, 0xed, 0x34, 0x12, 0x9d, 0x04, 0x86, 0xa0, 0x27,
-	0xd5, 0x3e, 0x9c, 0xfe, 0x69, 0x16, 0x0d, 0x88, 0xb2, 0xbe, 0x2d, 0xf7, 0xe3, 0x4e, 0xc3, 0xad,
-	0xee, 0x5b, 0xb6, 0x23, 0xf7, 0xe3, 0x4e, 0x43, 0x9c, 0xf7, 0x2b, 0xff, 0x8c, 0x2e, 0x5d, 0x62,
-	0xbf, 0x97, 0xdb, 0x07, 0xa7, 0x6e, 0x52, 0xb3, 0xd1, 0x6d, 0x18, 0xad, 0x36, 0x3f, 0x2f, 0xe1,
-	0x16, 0x69, 0x3a, 0x6e, 0xd5, 0xa8, 0xcb, 0xf6, 0x90, 0xf0, 0x3c, 0x02, 0x93, 0x3f, 0xa6, 0xa9,
-	0x52, 0x22, 0x68, 0xab, 0x6b, 0x3b, 0xd6, 0x3e, 0xa2, 0x32, 0xb4, 0xff, 0x10, 0x0a, 0x1d, 0x3a,
-	0x1b, 0xd3, 0x8b, 0x3e, 0x9d, 0x18, 0x77, 0x83, 0xaa, 0x1e, 0x53, 0xe9, 0xd7, 0x09, 0x5c, 0x2e,
-	0x66, 0x13, 0x7d, 0x3b, 0x81, 0xda, 0x8c, 0xd9, 0x64, 0xff, 0x4e, 0xe0, 0xf2, 0x31, 0x1b, 0xf6,
-	0x34, 0x7a, 0x7d, 0x81, 0x2a, 0xe8, 0xef, 0xb1, 0x9b, 0x88, 0xb2, 0x9f, 0xb5, 0x9c, 0x5a, 0x53,
-	0x34, 0xd5, 0x08, 0xcf, 0xa8, 0xb2, 0x34, 0x93, 0x6d, 0x35, 0x81, 0x2e, 0xc6, 0xa3, 0xca, 0xfe,
-	0x97, 0xc0, 0x6d, 0x51, 0xc7, 0x4e, 0x6a, 0x24, 0xbb, 0xa9, 0x44, 0xb0, 0x4d, 0x7b, 0x86, 0xb9,
-	0xc2, 0xb7, 0xaa, 0xea, 0x5f, 0x5d, 0x7d, 0x35, 0x18, 0x4f, 0xf8, 0xe5, 0x5b, 0xfe, 0x37, 0xc6,
-	0xc0, 0x1f, 0x9b, 0x8d, 0x9a, 0xdb, 0xea, 0xd6, 0x7a, 0x9d, 0xbe, 0xe1, 0xb4, 0x60, 0xd7, 0x13,
-	0x5e, 0x06, 0x08, 0xb3, 0x6f, 0x5a, 0x70, 0x42, 0xfd, 0xf3, 0x34, 0xe6, 0x97, 0x97, 0x83, 0x91,
-	0x78, 0xef, 0x8a, 0x32, 0x70, 0xc1, 0xab, 0x56, 0x8d, 0xaf, 0x08, 0xf5, 0xdd, 0x64, 0xb7, 0x44,
-	0xc0, 0x79, 0xd5, 0x2d, 0x76, 0x53, 0x01, 0x94, 0xbd, 0x4e, 0x2d, 0x4d, 0xcd, 0x60, 0x81, 0x49,
-	0x4c, 0x41, 0x6c, 0x48, 0x0a, 0x12, 0xe5, 0x89, 0x0e, 0x0f, 0x20, 0x50, 0xcf, 0x0d, 0x8a, 0x4f,
-	0x41, 0xda, 0x36, 0xbb, 0xf2, 0xa4, 0xc8, 0x61, 0xbc, 0x34, 0x70, 0xcd, 0x4e, 0xdf, 0x79, 0x21,
-	0x9b, 0xcc, 0x0a, 0x62, 0xbf, 0xfb, 0xa4, 0xdb, 0x7b, 0xd6, 0x95, 0xbb, 0x8b, 0x54, 0x9f, 0xdb,
-	0xbc, 0x05, 0x4b, 0x1c, 0xcf, 0xab, 0x65, 0xbb, 0x76, 0xdb, 0x38, 0x30, 0x35, 0xb6, 0x30, 0x59,
-	0x7e, 0x36, 0x16, 0x55, 0xa1, 0x04, 0xf2, 0x76, 0x93, 0xb6, 0xa5, 0xbf, 0xcf, 0xee, 0x12, 0x38,
-	0xee, 0xf5, 0xd2, 0xf0, 0xb0, 0x1b, 0x82, 0x0b, 0x6b, 0xdb, 0x95, 0xdf, 0xcf, 0x60, 0xfe, 0x01,
-	0x7b, 0x53, 0x51, 0xca, 0xcd, 0x4d, 0x23, 0x19, 0x8a, 0x59, 0x45, 0xcf, 0x52, 0x00, 0x61, 0xd2,
-	0x29, 0x61, 0x50, 0x63, 0x85, 0x41, 0x45, 0xed, 0xa2, 0x20, 0x51, 0x52, 0x66, 0x01, 0xd1, 0xdb,
-	0xc7, 0xd8, 0x90, 0xdb, 0xb0, 0x40, 0x18, 0xd6, 0xde, 0x3e, 0x08, 0xd3, 0x36, 0xc4, 0x12, 0x18,
-	0x62, 0x09, 0x72, 0x8a, 0x8a, 0x4e, 0x0f, 0x36, 0x9d, 0x2e, 0x98, 0x1a, 0x03, 0x5d, 0xf0, 0x63,
-	0x29, 0x9a, 0x17, 0xfe, 0xa0, 0x0c, 0x87, 0x35, 0x69, 0x81, 0x22, 0x05, 0x30, 0x3c, 0xc8, 0xb9,
-	0x83, 0x76, 0xed, 0x96, 0xed, 0xc0, 0xa8, 0x4c, 0xbf, 0xc5, 0x4a, 0x84, 0xde, 0xef, 0xda, 0xfb,
-	0x7d, 0x50, 0xd2, 0xac, 0xbb, 0x3d, 0xab, 0x6e, 0x5a, 0x5a, 0x71, 0xc1, 0x1e, 0x8e, 0xb1, 0xa7,
-	0x6d, 0x2d, 0x4c, 0x00, 0x4a, 0x0c, 0x3e, 0x65, 0x71, 0x38, 0x57, 0x11, 0x60, 0xc0, 0x9d, 0x05,
-	0x03, 0xf2, 0x2e, 0xb5, 0x98, 0xf5, 0xc5, 0xca, 0x5f, 0xa4, 0x58, 0x49, 0x2c, 0x8f, 0x5a, 0x5c,
-	0x2a, 0x61, 0x55, 0x6d, 0xd5, 0x84, 0x3f, 0xf1, 0x1c, 0x26, 0x93, 0x20, 0x22, 0xec, 0xfd, 0x3e,
-	0x82, 0x53, 0x0a, 0x7d, 0xc2, 0xd7, 0x44, 0x1e, 0x8c, 0xe9, 0x65, 0xf5, 0x99, 0xa1, 0x4c, 0xb3,
-	0x8c, 0xc2, 0x3e, 0x72, 0x56, 0x68, 0xdf, 0x5a, 0xb1, 0xfc, 0x1b, 0x0b, 0x03, 0xca, 0xe5, 0xcf,
-	0x09, 0xc3, 0xb5, 0x62, 0x47, 0xda, 0x14, 0x0b, 0xdc, 0x12, 0x0b, 0x9c, 0xaf, 0xfc, 0x73, 0xfa,
-	0x9c, 0x02, 0x26, 0x8f, 0x7d, 0x2e, 0xd5, 0x35, 0x3b, 0xab, 0x5c, 0xb3, 0xa3, 0xba, 0x66, 0x12,
-	0x06, 0xcb, 0x23, 0xe3, 0x9f, 0x60, 0xf5, 0x36, 0x6c, 0x77, 0x16, 0x35, 0xc5, 0x17, 0x90, 0xdd,
-	0x67, 0x0a, 0x32, 0x2b, 0x7c, 0x88, 0x90, 0xcf, 0x5a, 0xed, 0x7a, 0xcd, 0xb0, 0xea, 0x50, 0x56,
-	0x93, 0xcf, 0x11, 0x06, 0x0f, 0x2b, 0xb9, 0x05, 0xe8, 0x81, 0xd1, 0xde, 0x37, 0xb5, 0xcd, 0x05,
-	0xe5, 0xb9, 0x68, 0xd1, 0x31, 0x12, 0xc0, 0xbe, 0x65, 0x5a, 0xe6, 0x53, 0xad, 0xa0, 0x48, 0xa8,
-	0xef, 0xf7, 0x49, 0x2e, 0x13, 0x76, 0xea, 0x08, 0x3b, 0x15, 0x2b, 0x7f, 0x44, 0x4e, 0x12, 0x97,
-	0xcb, 0x4a, 0xee, 0xc5, 0x01, 0x1b, 0x9d, 0x86, 0xf4, 0x12, 0x59, 0x3e, 0x71, 0x20, 0xa5, 0xf9,
-	0xfd, 0x76, 0x5b, 0xe6, 0x4d, 0x0e, 0x5f, 0x70, 0x11, 0x45, 0x8c, 0xa8, 0xa5, 0x33, 0xa2, 0x20,
-	0xef, 0xc8, 0xfc, 0x2d, 0xcb, 0x68, 0x29, 0x81, 0x2a, 0xb3, 0x8d, 0x45, 0x44, 0xad, 0xd7, 0xe9,
-	0x18, 0x5d, 0xb0, 0x13, 0x4e, 0x5e, 0x22, 0x1a, 0x6d, 0x63, 0xcf, 0xd6, 0x36, 0x2b, 0x7f, 0x90,
-	0xc1, 0xef, 0xf1, 0xe2, 0x4a, 0x58, 0x9d, 0x15, 0x2a, 0xba, 0x07, 0x4c, 0xb8, 0xe1, 0x9a, 0xcf,
-	0x5b, 0xb6, 0x63, 0xcb, 0x77, 0x1e, 0x1c, 0x23, 0xca, 0x4c, 0x8c, 0xf5, 0x14, 0xf9, 0x32, 0x47,
-	0x3d, 0x33, 0x5b, 0x7b, 0x4d, 0x47, 0x0d, 0x6a, 0x19, 0x06, 0x1c, 0x0f, 0x29, 0xa2, 0xd7, 0x40,
-	0x4e, 0x38, 0x6b, 0xe1, 0x8e, 0xa9, 0xa2, 0xaa, 0xfb, 0x90, 0x67, 0xe1, 0xe4, 0x70, 0x97, 0xdd,
-	0x12, 0xb8, 0x5a, 0xd3, 0x68, 0x75, 0x5b, 0xdd, 0xbd, 0x84, 0xe0, 0x0d, 0x4a, 0x32, 0x38, 0x30,
-	0xcf, 0x32, 0x2a, 0x3a, 0x27, 0xca, 0x70, 0x40, 0xb7, 0x7b, 0xbd, 0xbe, 0xdc, 0x30, 0xf6, 0x94,
-	0x45, 0xa3, 0x49, 0xe4, 0x55, 0x14, 0x1f, 0xcd, 0xac, 0xcb, 0x5c, 0x86, 0xfe, 0xb2, 0x27, 0x6d,
-	0x0f, 0x91, 0x21, 0xda, 0x8b, 0x7b, 0x8b, 0x86, 0x2f, 0x92, 0x13, 0x48, 0x04, 0x4e, 0x48, 0xdb,
-	0xa2, 0x05, 0x91, 0x70, 0xae, 0xb1, 0x7c, 0x47, 0xb9, 0x17, 0x2f, 0xf6, 0x4e, 0xe5, 0x77, 0xc9,
-	0xf1, 0xc4, 0xdf, 0x3f, 0x4e, 0x2c, 0x11, 0x6a, 0xd3, 0x17, 0x62, 0xa8, 0xc9, 0x8b, 0xda, 0x48,
-	0x68, 0x13, 0x63, 0x4c, 0xd6, 0xb2, 0xfd, 0x58, 0x4d, 0xfe, 0xc2, 0x55, 0x2c, 0x8a, 0x84, 0x1b,
-	0xf5, 0x03, 0xd3, 0x72, 0x5a, 0xb6, 0x29, 0xdd, 0xaf, 0xaf, 0xb8, 0x5f, 0xe5, 0xaf, 0xa2, 0xd3,
-	0xc8, 0xbf, 0x3a, 0x9e, 0xd0, 0x88, 0xde, 0x35, 0x26, 0xbc, 0x5b, 0x06, 0x83, 0xb3, 0x30, 0xb2,
-	0x78, 0x27, 0xe2, 0xc4, 0xe2, 0xd3, 0x95, 0x1f, 0xe2, 0x7c, 0xf1, 0x4e, 0x9b, 0x3f, 0x5f, 0x31,
-	0xdf, 0xa7, 0xbd, 0xe4, 0x7c, 0x71, 0x4c, 0x09, 0xc5, 0x0d, 0x49, 0xc8, 0xe6, 0x60, 0x21, 0xfb,
-	0xaf, 0xb1, 0xdb, 0x4b, 0x7f, 0x7f, 0x7d, 0x85, 0xfa, 0x76, 0x2d, 0x11, 0x28, 0xa2, 0x00, 0x92,
-	0x60, 0x4c, 0x7d, 0x28, 0x9f, 0x03, 0x63, 0xdd, 0x6f, 0x2d, 0xde, 0x68, 0x4b, 0x88, 0xa7, 0x03,
-	0x9c, 0xd5, 0xa8, 0x41, 0xdd, 0xcd, 0x2d, 0xa3, 0x80, 0xb8, 0xc7, 0xc6, 0x47, 0x38, 0x8b, 0x46,
-	0x83, 0xfa, 0x52, 0x4b, 0x57, 0xfe, 0x30, 0x8d, 0x76, 0x8f, 0x8f, 0x15, 0xcb, 0x29, 0xa8, 0x93,
-	0x4c, 0x41, 0x18, 0xc1, 0x1c, 0x88, 0x55, 0x28, 0x45, 0x70, 0x8a, 0x56, 0xbc, 0xa3, 0x46, 0x30,
-	0xf6, 0x2b, 0xd2, 0x2a, 0x4a, 0xc4, 0x05, 0xa2, 0x44, 0x45, 0xd1, 0x59, 0x74, 0xf3, 0x2c, 0x99,
-	0xad, 0x93, 0xcc, 0x2f, 0x22, 0x69, 0x4b, 0xb0, 0x65, 0x38, 0xa6, 0x4c, 0x46, 0x9d, 0x38, 0x26,
-	0x2c, 0x7e, 0x4b, 0x60, 0x81, 0xb8, 0x0a, 0x92, 0xf3, 0xb4, 0x5d, 0x24, 0xa0, 0x6e, 0xdd, 0x74,
-	0x8c, 0x56, 0x5b, 0x2b, 0xa8, 0xaa, 0x52, 0xc6, 0xe0, 0x9a, 0xda, 0x1a, 0x53, 0xa7, 0x2e, 0x92,
-	0x89, 0xd1, 0xad, 0xdb, 0x5a, 0xb1, 0xf2, 0x2f, 0x52, 0x2b, 0xbe, 0xb0, 0x0c, 0x57, 0x39, 0x71,
-	0x63, 0xc1, 0x89, 0xe9, 0xfd, 0xb7, 0x00, 0xcb, 0x1d, 0x5c, 0xac, 0x58, 0xcc, 0x00, 0x59, 0x41,
-	0x5e, 0xba, 0x68, 0x28, 0x5e, 0x93, 0x59, 0x14, 0x22, 0xeb, 0x90, 0xac, 0x88, 0x85, 0x86, 0xf4,
-	0xa7, 0x8d, 0xca, 0x7f, 0xa2, 0xdd, 0x39, 0xf9, 0xf7, 0x17, 0xc4, 0x71, 0x0f, 0x4e, 0xda, 0x76,
-	0x2d, 0x3e, 0xfe, 0xf1, 0x7b, 0x28, 0xcf, 0xe4, 0x3b, 0xee, 0x4e, 0xdf, 0x35, 0xf6, 0xf6, 0x2c,
-	0x73, 0xcf, 0xe0, 0x87, 0x74, 0x3a, 0xf1, 0x89, 0x5b, 0x2d, 0x19, 0x61, 0xf0, 0x7e, 0xf2, 0x6d,
-	0xb0, 0x24, 0xc3, 0x30, 0xda, 0x88, 0x01, 0x98, 0x02, 0x73, 0x31, 0x9f, 0x38, 0xed, 0xdb, 0x35,
-	0x6d, 0x53, 0x18, 0x5c, 0x40, 0xc5, 0x99, 0x46, 0x76, 0x7a, 0x3b, 0x7d, 0x72, 0xa3, 0x82, 0x38,
-	0x52, 0x13, 0x40, 0x24, 0x03, 0x16, 0x8b, 0x40, 0xb8, 0x14, 0x51, 0x8c, 0x31, 0xc9, 0x03, 0x93,
-	0xbc, 0xea, 0x21, 0x26, 0xc1, 0x75, 0x11, 0xc7, 0xa7, 0x4e, 0x7f, 0xd5, 0xd1, 0x7c, 0x77, 0xe5,
-	0xdf, 0xdd, 0x70, 0xc5, 0xdf, 0x10, 0x40, 0xc6, 0x06, 0x9c, 0xe7, 0x96, 0x5e, 0x17, 0x0b, 0x78,
-	0xa7, 0x67, 0x99, 0x5a, 0xaa, 0xd2, 0xa6, 0x78, 0x4c, 0xfe, 0x2d, 0x0d, 0x92, 0x24, 0x34, 0x6e,
-	0xe0, 0x1d, 0x09, 0x45, 0x16, 0xb9, 0xbf, 0xc4, 0x90, 0xb4, 0x3f, 0xcb, 0xa0, 0x6a, 0x6b, 0xbe,
-	0x32, 0x97, 0x7e, 0xd3, 0x77, 0xd4, 0x53, 0x34, 0x24, 0x27, 0xdc, 0xf9, 0x96, 0x30, 0x6e, 0xa7,
-	0x65, 0xdb, 0xb2, 0x22, 0xe5, 0xe8, 0xae, 0xf9, 0x9c, 0xce, 0x9c, 0xb6, 0x96, 0xa6, 0xba, 0x7b,
-	0x11, 0x81, 0x6c, 0x19, 0x71, 0xaf, 0x01, 0xb0, 0xc9, 0xa6, 0x68, 0x96, 0xf6, 0xf8, 0x65, 0x14,
-	0xb2, 0x6e, 0xa8, 0xac, 0xc9, 0xb6, 0x69, 0x4e, 0x65, 0x4d, 0xa0, 0x90, 0x75, 0x53, 0xc6, 0x40,
-	0xdf, 0xa1, 0x86, 0x40, 0x5e, 0x06, 0x23, 0x8c, 0x26, 0x0b, 0x42, 0x26, 0x2e, 0xaa, 0xc4, 0x4a,
-	0xd8, 0xa6, 0x83, 0xe5, 0x9b, 0x38, 0x5f, 0xaf, 0xc0, 0xe1, 0x30, 0xdb, 0x2a, 0x33, 0xaa, 0x21,
-	0x99, 0x77, 0x54, 0xe6, 0x24, 0x0e, 0x99, 0x2f, 0xea, 0x37, 0xe3, 0x95, 0x48, 0xf8, 0xd7, 0xcf,
-	0xde, 0x65, 0xf4, 0x3b, 0xf1, 0x5a, 0xa8, 0x38, 0x64, 0x05, 0x07, 0xfc, 0x3d, 0xfa, 0xc3, 0x23,
-	0x58, 0x72, 0x25, 0x6e, 0x76, 0x50, 0x5f, 0xb0, 0x51, 0x5b, 0xba, 0x05, 0x03, 0x30, 0x6c, 0x1f,
-	0x52, 0x51, 0xa5, 0xa5, 0x44, 0xb5, 0x14, 0x63, 0xda, 0xad, 0x03, 0xb3, 0x6b, 0xda, 0xf1, 0x35,
-	0x8f, 0x3d, 0xa5, 0x58, 0xd2, 0xb2, 0x0a, 0x83, 0xac, 0xa0, 0x78, 0xdf, 0xd6, 0xd6, 0xf2, 0x95,
-	0x2f, 0xb0, 0x21, 0x10, 0x5f, 0xe4, 0xc7, 0xbb, 0xfb, 0x62, 0x0b, 0x55, 0x1b, 0x64, 0xa8, 0xe5,
-	0x53, 0xc7, 0xed, 0xb4, 0xba, 0x98, 0xd1, 0x53, 0x0a, 0xcc, 0x78, 0x8e, 0xb0, 0x34, 0xc5, 0xe0,
-	0xd3, 0x15, 0x2d, 0x8c, 0x1f, 0xe1, 0x69, 0x78, 0xe1, 0x26, 0x37, 0xf9, 0x69, 0xcd, 0xc2, 0x7e,
-	0x4a, 0xb7, 0x57, 0x6b, 0x1a, 0xdd, 0x3d, 0x53, 0x36, 0xf3, 0x05, 0xc2, 0x7c, 0xba, 0x6f, 0xb4,
-	0xe5, 0x45, 0x37, 0x01, 0xed, 0x18, 0x36, 0xee, 0x5e, 0x49, 0x62, 0x3c, 0xd3, 0x67, 0xaa, 0xfb,
-	0xec, 0x3d, 0x3f, 0x38, 0xe4, 0xd7, 0x08, 0x87, 0x7e, 0x30, 0xfa, 0x08, 0xff, 0xb3, 0x1d, 0x79,
-	0xad, 0xf0, 0x93, 0x4f, 0x7f, 0xf8, 0xe9, 0xe1, 0x38, 0x3a, 0x3a, 0x7e, 0xf9, 0xd1, 0xd0, 0x9f,
-	0xde, 0x17, 0x64, 0xf7, 0x91, 0xec, 0x57, 0xe8, 0xff, 0xe4, 0x39, 0xf9, 0xec, 0xfe, 0xa1, 0xaf,
-	0xfe, 0xcf, 0x3c, 0x2f, 0x73, 0x1c, 0xf3, 0xe9, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x8e, 0xea,
-	0x36, 0xd9, 0xbd, 0x67, 0x00, 0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_openflow_13_proto_rawDesc), len(file_voltha_protos_openflow_13_proto_rawDesc)),
+			NumEnums:      53,
+			NumMessages:   99,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_openflow_13_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_openflow_13_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_openflow_13_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_openflow_13_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_openflow_13_proto = out.File
+	file_voltha_protos_openflow_13_proto_goTypes = nil
+	file_voltha_protos_openflow_13_proto_depIdxs = nil
 }