VOL-1460 Implemented a new approach to protos where go stubs are not committed to the repo.
There are new instructions for clients consuming these protos in Go.
Also removed vendor directory and dep, as it isn't really needed at this point.

Implemented a test to check if protos match up with go files. This is run with make test.
This works by generating them and checking this created any more untracked or unstaged changes.
It requires you to commit your changes locally to pass. This process to should be run by
jenkins to validate a commit. A consistent version of protoc must be used, which the Makefile checks for.

Change-Id: I8de28c515a9535e33909cbbd158fa046f96f3b1f
diff --git a/go/afrouter/afrouter.pb.go b/go/afrouter/afrouter.pb.go
index c0c5306..c10c7dc 100644
--- a/go/afrouter/afrouter.pb.go
+++ b/go/afrouter/afrouter.pb.go
@@ -1,15 +1,16 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/afrouter.proto
 
-package afrouter // import "github.com/opencord/voltha-protos/go/afrouter"
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+package afrouter
 
 import (
-	context "golang.org/x/net/context"
+	context "context"
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
 	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	math "math"
 )
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -21,7 +22,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type Result struct {
 	Success              bool     `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
@@ -35,16 +36,17 @@
 func (m *Result) String() string { return proto.CompactTextString(m) }
 func (*Result) ProtoMessage()    {}
 func (*Result) Descriptor() ([]byte, []int) {
-	return fileDescriptor_afrouter_011619d8422f4a7f, []int{0}
+	return fileDescriptor_be7e2f565b9e1c96, []int{0}
 }
+
 func (m *Result) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Result.Unmarshal(m, b)
 }
 func (m *Result) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Result.Marshal(b, m, deterministic)
 }
-func (dst *Result) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Result.Merge(dst, src)
+func (m *Result) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Result.Merge(m, src)
 }
 func (m *Result) XXX_Size() int {
 	return xxx_messageInfo_Result.Size(m)
@@ -79,16 +81,17 @@
 func (m *Empty) String() string { return proto.CompactTextString(m) }
 func (*Empty) ProtoMessage()    {}
 func (*Empty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_afrouter_011619d8422f4a7f, []int{1}
+	return fileDescriptor_be7e2f565b9e1c96, []int{1}
 }
+
 func (m *Empty) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Empty.Unmarshal(m, b)
 }
 func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
 }
-func (dst *Empty) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Empty.Merge(dst, src)
+func (m *Empty) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Empty.Merge(m, src)
 }
 func (m *Empty) XXX_Size() int {
 	return xxx_messageInfo_Empty.Size(m)
@@ -110,16 +113,17 @@
 func (m *Count) String() string { return proto.CompactTextString(m) }
 func (*Count) ProtoMessage()    {}
 func (*Count) Descriptor() ([]byte, []int) {
-	return fileDescriptor_afrouter_011619d8422f4a7f, []int{2}
+	return fileDescriptor_be7e2f565b9e1c96, []int{2}
 }
+
 func (m *Count) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Count.Unmarshal(m, b)
 }
 func (m *Count) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Count.Marshal(b, m, deterministic)
 }
-func (dst *Count) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Count.Merge(dst, src)
+func (m *Count) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Count.Merge(m, src)
 }
 func (m *Count) XXX_Size() int {
 	return xxx_messageInfo_Count.Size(m)
@@ -155,16 +159,17 @@
 func (m *Conn) String() string { return proto.CompactTextString(m) }
 func (*Conn) ProtoMessage()    {}
 func (*Conn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_afrouter_011619d8422f4a7f, []int{3}
+	return fileDescriptor_be7e2f565b9e1c96, []int{3}
 }
+
 func (m *Conn) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Conn.Unmarshal(m, b)
 }
 func (m *Conn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Conn.Marshal(b, m, deterministic)
 }
-func (dst *Conn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Conn.Merge(dst, src)
+func (m *Conn) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Conn.Merge(m, src)
 }
 func (m *Conn) XXX_Size() int {
 	return xxx_messageInfo_Conn.Size(m)
@@ -246,16 +251,17 @@
 func (m *Affinity) String() string { return proto.CompactTextString(m) }
 func (*Affinity) ProtoMessage()    {}
 func (*Affinity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_afrouter_011619d8422f4a7f, []int{4}
+	return fileDescriptor_be7e2f565b9e1c96, []int{4}
 }
+
 func (m *Affinity) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Affinity.Unmarshal(m, b)
 }
 func (m *Affinity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Affinity.Marshal(b, m, deterministic)
 }
-func (dst *Affinity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Affinity.Merge(dst, src)
+func (m *Affinity) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Affinity.Merge(m, src)
 }
 func (m *Affinity) XXX_Size() int {
 	return xxx_messageInfo_Affinity.Size(m)
@@ -309,6 +315,35 @@
 	proto.RegisterType((*Affinity)(nil), "afrouter.Affinity")
 }
 
+func init() { proto.RegisterFile("voltha_protos/afrouter.proto", fileDescriptor_be7e2f565b9e1c96) }
+
+var fileDescriptor_be7e2f565b9e1c96 = []byte{
+	// 365 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x8b, 0xdb, 0x30,
+	0x10, 0x85, 0xeb, 0xc4, 0x76, 0x9c, 0x29, 0x09, 0x41, 0x94, 0x22, 0x4a, 0x5b, 0x82, 0x4f, 0xb9,
+	0x24, 0x86, 0x86, 0x42, 0xaf, 0xad, 0xe9, 0x1f, 0x70, 0x6e, 0x7b, 0x59, 0x1c, 0x59, 0x76, 0x4c,
+	0x12, 0x8d, 0x91, 0x64, 0x43, 0xd8, 0xfd, 0x6d, 0xfb, 0xdb, 0x16, 0x49, 0x76, 0x92, 0x85, 0xdd,
+	0xdb, 0x7c, 0xef, 0x59, 0xe6, 0x3d, 0x69, 0xe0, 0x7b, 0x87, 0x27, 0x7d, 0xc8, 0x1f, 0x1b, 0x89,
+	0x1a, 0x55, 0x92, 0x97, 0x12, 0x5b, 0xcd, 0xe5, 0xc6, 0x32, 0x89, 0x06, 0x8e, 0xff, 0x40, 0x98,
+	0x71, 0xd5, 0x9e, 0x34, 0xa1, 0x30, 0x51, 0x2d, 0x63, 0x5c, 0x29, 0xea, 0x2d, 0xbd, 0x55, 0x94,
+	0x0d, 0x48, 0xbe, 0x40, 0xc0, 0xa5, 0x44, 0x49, 0x47, 0x4b, 0x6f, 0x35, 0xcd, 0x1c, 0xc4, 0x13,
+	0x08, 0xfe, 0x9f, 0x1b, 0x7d, 0x89, 0x7f, 0x40, 0x90, 0x62, 0x2b, 0xb4, 0xf9, 0x8e, 0x99, 0xc1,
+	0x9e, 0x9f, 0x65, 0x0e, 0xe2, 0x17, 0x0f, 0xfc, 0x14, 0x85, 0x20, 0x5f, 0x21, 0x54, 0x5c, 0x76,
+	0x5c, 0x5a, 0x7f, 0x9a, 0xf5, 0x44, 0x16, 0x30, 0x6e, 0x8e, 0x55, 0xff, 0x73, 0x33, 0x1a, 0x45,
+	0x75, 0x8c, 0x8e, 0x9d, 0xa2, 0x3a, 0x66, 0xc2, 0xb1, 0x53, 0xab, 0x34, 0x97, 0xd4, 0xb7, 0xea,
+	0x80, 0xc6, 0xd9, 0xe7, 0xec, 0xc8, 0x45, 0x41, 0x03, 0xe7, 0xf4, 0x48, 0x7e, 0x02, 0x30, 0x14,
+	0x82, 0x33, 0x5d, 0xa3, 0xa0, 0xa1, 0x35, 0xef, 0x14, 0x42, 0xc0, 0xcf, 0x8b, 0x42, 0xd2, 0x89,
+	0x75, 0xec, 0x6c, 0xb4, 0x06, 0xa5, 0xa6, 0xd1, 0xd2, 0x5b, 0xf9, 0x99, 0x9d, 0xe3, 0x67, 0x88,
+	0xfe, 0x96, 0x65, 0x2d, 0x6a, 0x7d, 0x31, 0x1d, 0xdc, 0xc5, 0x0d, 0x1d, 0x1c, 0x99, 0xea, 0x76,
+	0x1a, 0xae, 0xc8, 0xc2, 0x7d, 0xea, 0xf1, 0x87, 0xa9, 0xfd, 0xb7, 0xa9, 0xe7, 0x30, 0xaa, 0x87,
+	0x2a, 0xa3, 0xba, 0xf8, 0xf5, 0x04, 0xb3, 0x14, 0x45, 0x59, 0x57, 0xad, 0xcc, 0x6d, 0xec, 0x2d,
+	0xcc, 0x76, 0x5c, 0xa7, 0xb7, 0x1e, 0xf3, 0xcd, 0xf5, 0x75, 0x8d, 0xfa, 0x6d, 0x71, 0x63, 0xf7,
+	0xb4, 0xf1, 0x27, 0xf2, 0x1b, 0x3e, 0xef, 0xb8, 0xbe, 0xd6, 0x20, 0xb7, 0x4f, 0x06, 0xed, 0xbd,
+	0x63, 0xff, 0x92, 0x87, 0x75, 0x55, 0xeb, 0x43, 0xbb, 0xdf, 0x30, 0x3c, 0x27, 0xd8, 0x70, 0xc1,
+	0x50, 0x16, 0x89, 0xdb, 0xad, 0x75, 0xbf, 0x5b, 0x15, 0x5e, 0xd7, 0x6b, 0x1f, 0x5a, 0x6d, 0xfb,
+	0x1a, 0x00, 0x00, 0xff, 0xff, 0x40, 0x18, 0x4d, 0xa7, 0x7f, 0x02, 0x00, 0x00,
+}
+
 // Reference imports to suppress errors if they are not otherwise used.
 var _ context.Context
 var _ grpc.ClientConn
@@ -357,6 +392,17 @@
 	SetAffinity(context.Context, *Affinity) (*Result, error)
 }
 
+// UnimplementedConfigurationServer can be embedded to have forward compatible implementations.
+type UnimplementedConfigurationServer struct {
+}
+
+func (*UnimplementedConfigurationServer) SetConnection(ctx context.Context, req *Conn) (*Result, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SetConnection not implemented")
+}
+func (*UnimplementedConfigurationServer) SetAffinity(ctx context.Context, req *Affinity) (*Result, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SetAffinity not implemented")
+}
+
 func RegisterConfigurationServer(s *grpc.Server, srv ConfigurationServer) {
 	s.RegisterService(&_Configuration_serviceDesc, srv)
 }
@@ -413,34 +459,3 @@
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "voltha_protos/afrouter.proto",
 }
-
-func init() {
-	proto.RegisterFile("voltha_protos/afrouter.proto", fileDescriptor_afrouter_011619d8422f4a7f)
-}
-
-var fileDescriptor_afrouter_011619d8422f4a7f = []byte{
-	// 365 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x8b, 0xdb, 0x30,
-	0x10, 0x85, 0xeb, 0xc4, 0x76, 0x9c, 0x29, 0x09, 0x41, 0x94, 0x22, 0x4a, 0x5b, 0x82, 0x4f, 0xb9,
-	0x24, 0x86, 0x86, 0x42, 0xaf, 0xad, 0xe9, 0x1f, 0x70, 0x6e, 0x7b, 0x59, 0x1c, 0x59, 0x76, 0x4c,
-	0x12, 0x8d, 0x91, 0x64, 0x43, 0xd8, 0xfd, 0x6d, 0xfb, 0xdb, 0x16, 0x49, 0x76, 0x92, 0x85, 0xdd,
-	0xdb, 0x7c, 0xef, 0x59, 0xe6, 0x3d, 0x69, 0xe0, 0x7b, 0x87, 0x27, 0x7d, 0xc8, 0x1f, 0x1b, 0x89,
-	0x1a, 0x55, 0x92, 0x97, 0x12, 0x5b, 0xcd, 0xe5, 0xc6, 0x32, 0x89, 0x06, 0x8e, 0xff, 0x40, 0x98,
-	0x71, 0xd5, 0x9e, 0x34, 0xa1, 0x30, 0x51, 0x2d, 0x63, 0x5c, 0x29, 0xea, 0x2d, 0xbd, 0x55, 0x94,
-	0x0d, 0x48, 0xbe, 0x40, 0xc0, 0xa5, 0x44, 0x49, 0x47, 0x4b, 0x6f, 0x35, 0xcd, 0x1c, 0xc4, 0x13,
-	0x08, 0xfe, 0x9f, 0x1b, 0x7d, 0x89, 0x7f, 0x40, 0x90, 0x62, 0x2b, 0xb4, 0xf9, 0x8e, 0x99, 0xc1,
-	0x9e, 0x9f, 0x65, 0x0e, 0xe2, 0x17, 0x0f, 0xfc, 0x14, 0x85, 0x20, 0x5f, 0x21, 0x54, 0x5c, 0x76,
-	0x5c, 0x5a, 0x7f, 0x9a, 0xf5, 0x44, 0x16, 0x30, 0x6e, 0x8e, 0x55, 0xff, 0x73, 0x33, 0x1a, 0x45,
-	0x75, 0x8c, 0x8e, 0x9d, 0xa2, 0x3a, 0x66, 0xc2, 0xb1, 0x53, 0xab, 0x34, 0x97, 0xd4, 0xb7, 0xea,
-	0x80, 0xc6, 0xd9, 0xe7, 0xec, 0xc8, 0x45, 0x41, 0x03, 0xe7, 0xf4, 0x48, 0x7e, 0x02, 0x30, 0x14,
-	0x82, 0x33, 0x5d, 0xa3, 0xa0, 0xa1, 0x35, 0xef, 0x14, 0x42, 0xc0, 0xcf, 0x8b, 0x42, 0xd2, 0x89,
-	0x75, 0xec, 0x6c, 0xb4, 0x06, 0xa5, 0xa6, 0xd1, 0xd2, 0x5b, 0xf9, 0x99, 0x9d, 0xe3, 0x67, 0x88,
-	0xfe, 0x96, 0x65, 0x2d, 0x6a, 0x7d, 0x31, 0x1d, 0xdc, 0xc5, 0x0d, 0x1d, 0x1c, 0x99, 0xea, 0x76,
-	0x1a, 0xae, 0xc8, 0xc2, 0x7d, 0xea, 0xf1, 0x87, 0xa9, 0xfd, 0xb7, 0xa9, 0xe7, 0x30, 0xaa, 0x87,
-	0x2a, 0xa3, 0xba, 0xf8, 0xf5, 0x04, 0xb3, 0x14, 0x45, 0x59, 0x57, 0xad, 0xcc, 0x6d, 0xec, 0x2d,
-	0xcc, 0x76, 0x5c, 0xa7, 0xb7, 0x1e, 0xf3, 0xcd, 0xf5, 0x75, 0x8d, 0xfa, 0x6d, 0x71, 0x63, 0xf7,
-	0xb4, 0xf1, 0x27, 0xf2, 0x1b, 0x3e, 0xef, 0xb8, 0xbe, 0xd6, 0x20, 0xb7, 0x4f, 0x06, 0xed, 0xbd,
-	0x63, 0xff, 0x92, 0x87, 0x75, 0x55, 0xeb, 0x43, 0xbb, 0xdf, 0x30, 0x3c, 0x27, 0xd8, 0x70, 0xc1,
-	0x50, 0x16, 0x89, 0xdb, 0xad, 0x75, 0xbf, 0x5b, 0x15, 0x5e, 0xd7, 0x6b, 0x1f, 0x5a, 0x6d, 0xfb,
-	0x1a, 0x00, 0x00, 0xff, 0xff, 0x40, 0x18, 0x4d, 0xa7, 0x7f, 0x02, 0x00, 0x00,
-}
diff --git a/go/common/common.pb.go b/go/common/common.pb.go
index 169cd74..ce8acf9 100644
--- a/go/common/common.pb.go
+++ b/go/common/common.pb.go
@@ -1,11 +1,13 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/common.proto
 
-package common // import "github.com/opencord/voltha-protos/go/common"
+package common
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type TestModeKeys int32
 
@@ -27,6 +29,7 @@
 var TestModeKeys_name = map[int32]string{
 	0: "api_test",
 }
+
 var TestModeKeys_value = map[string]int32{
 	"api_test": 0,
 }
@@ -34,8 +37,9 @@
 func (x TestModeKeys) String() string {
 	return proto.EnumName(TestModeKeys_name, int32(x))
 }
+
 func (TestModeKeys) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{0}
+	return fileDescriptor_c2e3fd231961e826, []int{0}
 }
 
 // Logging verbosity level
@@ -58,6 +62,7 @@
 	4: "CRITICAL",
 	5: "FATAL",
 }
+
 var LogLevel_LogLevel_value = map[string]int32{
 	"DEBUG":    0,
 	"INFO":     1,
@@ -70,8 +75,9 @@
 func (x LogLevel_LogLevel) String() string {
 	return proto.EnumName(LogLevel_LogLevel_name, int32(x))
 }
+
 func (LogLevel_LogLevel) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{2, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{2, 0}
 }
 
 // Administrative State
@@ -101,6 +107,7 @@
 	4: "DOWNLOADING_IMAGE",
 	5: "DELETED",
 }
+
 var AdminState_AdminState_value = map[string]int32{
 	"UNKNOWN":           0,
 	"PREPROVISIONED":    1,
@@ -113,8 +120,9 @@
 func (x AdminState_AdminState) String() string {
 	return proto.EnumName(AdminState_AdminState_name, int32(x))
 }
+
 func (AdminState_AdminState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{3, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{3, 0}
 }
 
 // Operational Status
@@ -143,6 +151,7 @@
 	4: "ACTIVE",
 	5: "FAILED",
 }
+
 var OperStatus_OperStatus_value = map[string]int32{
 	"UNKNOWN":    0,
 	"DISCOVERED": 1,
@@ -155,8 +164,9 @@
 func (x OperStatus_OperStatus) String() string {
 	return proto.EnumName(OperStatus_OperStatus_name, int32(x))
 }
+
 func (OperStatus_OperStatus) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{4, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
 }
 
 // Connectivity Status
@@ -176,6 +186,7 @@
 	1: "UNREACHABLE",
 	2: "REACHABLE",
 }
+
 var ConnectStatus_ConnectStatus_value = map[string]int32{
 	"UNKNOWN":     0,
 	"UNREACHABLE": 1,
@@ -185,8 +196,9 @@
 func (x ConnectStatus_ConnectStatus) String() string {
 	return proto.EnumName(ConnectStatus_ConnectStatus_name, int32(x))
 }
+
 func (ConnectStatus_ConnectStatus) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{5, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
 }
 
 type OperationResp_OperationReturnCode int32
@@ -202,6 +214,7 @@
 	1: "OPERATION_FAILURE",
 	2: "OPERATION_UNSUPPORTED",
 }
+
 var OperationResp_OperationReturnCode_value = map[string]int32{
 	"OPERATION_SUCCESS":     0,
 	"OPERATION_FAILURE":     1,
@@ -211,8 +224,9 @@
 func (x OperationResp_OperationReturnCode) String() string {
 	return proto.EnumName(OperationResp_OperationReturnCode_name, int32(x))
 }
+
 func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{6, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
 }
 
 // Convey a resource identifier
@@ -227,16 +241,17 @@
 func (m *ID) String() string { return proto.CompactTextString(m) }
 func (*ID) ProtoMessage()    {}
 func (*ID) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{0}
+	return fileDescriptor_c2e3fd231961e826, []int{0}
 }
+
 func (m *ID) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ID.Unmarshal(m, b)
 }
 func (m *ID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ID.Marshal(b, m, deterministic)
 }
-func (dst *ID) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ID.Merge(dst, src)
+func (m *ID) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ID.Merge(m, src)
 }
 func (m *ID) XXX_Size() int {
 	return xxx_messageInfo_ID.Size(m)
@@ -266,16 +281,17 @@
 func (m *IDs) String() string { return proto.CompactTextString(m) }
 func (*IDs) ProtoMessage()    {}
 func (*IDs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{1}
+	return fileDescriptor_c2e3fd231961e826, []int{1}
 }
+
 func (m *IDs) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_IDs.Unmarshal(m, b)
 }
 func (m *IDs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_IDs.Marshal(b, m, deterministic)
 }
-func (dst *IDs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IDs.Merge(dst, src)
+func (m *IDs) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IDs.Merge(m, src)
 }
 func (m *IDs) XXX_Size() int {
 	return xxx_messageInfo_IDs.Size(m)
@@ -303,16 +319,17 @@
 func (m *LogLevel) String() string { return proto.CompactTextString(m) }
 func (*LogLevel) ProtoMessage()    {}
 func (*LogLevel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{2}
+	return fileDescriptor_c2e3fd231961e826, []int{2}
 }
+
 func (m *LogLevel) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogLevel.Unmarshal(m, b)
 }
 func (m *LogLevel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LogLevel.Marshal(b, m, deterministic)
 }
-func (dst *LogLevel) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogLevel.Merge(dst, src)
+func (m *LogLevel) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogLevel.Merge(m, src)
 }
 func (m *LogLevel) XXX_Size() int {
 	return xxx_messageInfo_LogLevel.Size(m)
@@ -333,16 +350,17 @@
 func (m *AdminState) String() string { return proto.CompactTextString(m) }
 func (*AdminState) ProtoMessage()    {}
 func (*AdminState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{3}
+	return fileDescriptor_c2e3fd231961e826, []int{3}
 }
+
 func (m *AdminState) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AdminState.Unmarshal(m, b)
 }
 func (m *AdminState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AdminState.Marshal(b, m, deterministic)
 }
-func (dst *AdminState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AdminState.Merge(dst, src)
+func (m *AdminState) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AdminState.Merge(m, src)
 }
 func (m *AdminState) XXX_Size() int {
 	return xxx_messageInfo_AdminState.Size(m)
@@ -363,16 +381,17 @@
 func (m *OperStatus) String() string { return proto.CompactTextString(m) }
 func (*OperStatus) ProtoMessage()    {}
 func (*OperStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{4}
+	return fileDescriptor_c2e3fd231961e826, []int{4}
 }
+
 func (m *OperStatus) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OperStatus.Unmarshal(m, b)
 }
 func (m *OperStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OperStatus.Marshal(b, m, deterministic)
 }
-func (dst *OperStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OperStatus.Merge(dst, src)
+func (m *OperStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OperStatus.Merge(m, src)
 }
 func (m *OperStatus) XXX_Size() int {
 	return xxx_messageInfo_OperStatus.Size(m)
@@ -393,16 +412,17 @@
 func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
 func (*ConnectStatus) ProtoMessage()    {}
 func (*ConnectStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{5}
+	return fileDescriptor_c2e3fd231961e826, []int{5}
 }
+
 func (m *ConnectStatus) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ConnectStatus.Unmarshal(m, b)
 }
 func (m *ConnectStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ConnectStatus.Marshal(b, m, deterministic)
 }
-func (dst *ConnectStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConnectStatus.Merge(dst, src)
+func (m *ConnectStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ConnectStatus.Merge(m, src)
 }
 func (m *ConnectStatus) XXX_Size() int {
 	return xxx_messageInfo_ConnectStatus.Size(m)
@@ -427,16 +447,17 @@
 func (m *OperationResp) String() string { return proto.CompactTextString(m) }
 func (*OperationResp) ProtoMessage()    {}
 func (*OperationResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_87dc80f46ec1fd6b, []int{6}
+	return fileDescriptor_c2e3fd231961e826, []int{6}
 }
+
 func (m *OperationResp) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OperationResp.Unmarshal(m, b)
 }
 func (m *OperationResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OperationResp.Marshal(b, m, deterministic)
 }
-func (dst *OperationResp) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OperationResp.Merge(dst, src)
+func (m *OperationResp) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OperationResp.Merge(m, src)
 }
 func (m *OperationResp) XXX_Size() int {
 	return xxx_messageInfo_OperationResp.Size(m)
@@ -462,6 +483,12 @@
 }
 
 func init() {
+	proto.RegisterEnum("voltha.TestModeKeys", TestModeKeys_name, TestModeKeys_value)
+	proto.RegisterEnum("voltha.LogLevel_LogLevel", LogLevel_LogLevel_name, LogLevel_LogLevel_value)
+	proto.RegisterEnum("voltha.AdminState_AdminState", AdminState_AdminState_name, AdminState_AdminState_value)
+	proto.RegisterEnum("voltha.OperStatus_OperStatus", OperStatus_OperStatus_name, OperStatus_OperStatus_value)
+	proto.RegisterEnum("voltha.ConnectStatus_ConnectStatus", ConnectStatus_ConnectStatus_name, ConnectStatus_ConnectStatus_value)
+	proto.RegisterEnum("voltha.OperationResp_OperationReturnCode", OperationResp_OperationReturnCode_name, OperationResp_OperationReturnCode_value)
 	proto.RegisterType((*ID)(nil), "voltha.ID")
 	proto.RegisterType((*IDs)(nil), "voltha.IDs")
 	proto.RegisterType((*LogLevel)(nil), "voltha.LogLevel")
@@ -469,17 +496,11 @@
 	proto.RegisterType((*OperStatus)(nil), "voltha.OperStatus")
 	proto.RegisterType((*ConnectStatus)(nil), "voltha.ConnectStatus")
 	proto.RegisterType((*OperationResp)(nil), "voltha.OperationResp")
-	proto.RegisterEnum("voltha.TestModeKeys", TestModeKeys_name, TestModeKeys_value)
-	proto.RegisterEnum("voltha.LogLevel_LogLevel", LogLevel_LogLevel_name, LogLevel_LogLevel_value)
-	proto.RegisterEnum("voltha.AdminState_AdminState", AdminState_AdminState_name, AdminState_AdminState_value)
-	proto.RegisterEnum("voltha.OperStatus_OperStatus", OperStatus_OperStatus_name, OperStatus_OperStatus_value)
-	proto.RegisterEnum("voltha.ConnectStatus_ConnectStatus", ConnectStatus_ConnectStatus_name, ConnectStatus_ConnectStatus_value)
-	proto.RegisterEnum("voltha.OperationResp_OperationReturnCode", OperationResp_OperationReturnCode_name, OperationResp_OperationReturnCode_value)
 }
 
-func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_common_87dc80f46ec1fd6b) }
+func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
 
-var fileDescriptor_common_87dc80f46ec1fd6b = []byte{
+var fileDescriptor_c2e3fd231961e826 = []byte{
 	// 564 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5f, 0x4f, 0xdb, 0x3e,
 	0x14, 0x6d, 0xd2, 0x3f, 0xc0, 0x2d, 0x94, 0xfc, 0xfc, 0x1b, 0x12, 0x43, 0x9b, 0x54, 0xe5, 0x05,
diff --git a/go/common/meta.pb.go b/go/common/meta.pb.go
index b8b9181..181f3dd 100644
--- a/go/common/meta.pb.go
+++ b/go/common/meta.pb.go
@@ -1,12 +1,14 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/meta.proto
 
-package common // import "github.com/opencord/voltha-protos/go/common"
+package common
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type Access int32
 
@@ -36,6 +38,7 @@
 	1: "READ_ONLY",
 	2: "REAL_TIME",
 }
+
 var Access_value = map[string]int32{
 	"CONFIG":    0,
 	"READ_ONLY": 1,
@@ -45,8 +48,9 @@
 func (x Access) String() string {
 	return proto.EnumName(Access_name, int32(x))
 }
+
 func (Access) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_meta_7d0d80d5e7f91838, []int{0}
+	return fileDescriptor_96b320e8a67781f3, []int{0}
 }
 
 type ChildNode struct {
@@ -60,16 +64,17 @@
 func (m *ChildNode) String() string { return proto.CompactTextString(m) }
 func (*ChildNode) ProtoMessage()    {}
 func (*ChildNode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_meta_7d0d80d5e7f91838, []int{0}
+	return fileDescriptor_96b320e8a67781f3, []int{0}
 }
+
 func (m *ChildNode) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ChildNode.Unmarshal(m, b)
 }
 func (m *ChildNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ChildNode.Marshal(b, m, deterministic)
 }
-func (dst *ChildNode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChildNode.Merge(dst, src)
+func (m *ChildNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ChildNode.Merge(m, src)
 }
 func (m *ChildNode) XXX_Size() int {
 	return xxx_messageInfo_ChildNode.Size(m)
@@ -92,7 +97,7 @@
 	ExtensionType: (*ChildNode)(nil),
 	Field:         7761772,
 	Name:          "voltha.child_node",
-	Tag:           "bytes,7761772,opt,name=child_node,json=childNode",
+	Tag:           "bytes,7761772,opt,name=child_node",
 	Filename:      "voltha_protos/meta.proto",
 }
 
@@ -106,15 +111,15 @@
 }
 
 func init() {
-	proto.RegisterType((*ChildNode)(nil), "voltha.ChildNode")
 	proto.RegisterEnum("voltha.Access", Access_name, Access_value)
+	proto.RegisterType((*ChildNode)(nil), "voltha.ChildNode")
 	proto.RegisterExtension(E_ChildNode)
 	proto.RegisterExtension(E_Access)
 }
 
-func init() { proto.RegisterFile("voltha_protos/meta.proto", fileDescriptor_meta_7d0d80d5e7f91838) }
+func init() { proto.RegisterFile("voltha_protos/meta.proto", fileDescriptor_96b320e8a67781f3) }
 
-var fileDescriptor_meta_7d0d80d5e7f91838 = []byte{
+var fileDescriptor_96b320e8a67781f3 = []byte{
 	// 271 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0x41, 0x4b, 0x84, 0x40,
 	0x18, 0x86, 0xb3, 0x05, 0xc1, 0x2f, 0x5a, 0xcc, 0x93, 0x04, 0x0b, 0xd2, 0x69, 0x29, 0x76, 0x06,
diff --git a/go/common/yang_options.pb.go b/go/common/yang_options.pb.go
index dcd1e35..9d6ee66 100644
--- a/go/common/yang_options.pb.go
+++ b/go/common/yang_options.pb.go
@@ -1,12 +1,14 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/yang_options.proto
 
-package common // import "github.com/opencord/voltha-protos/go/common"
+package common
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type MessageParserOption int32
 
@@ -35,6 +37,7 @@
 	0: "MOVE_TO_PARENT_LEVEL",
 	1: "CREATE_BOTH_GROUPING_AND_CONTAINER",
 }
+
 var MessageParserOption_value = map[string]int32{
 	"MOVE_TO_PARENT_LEVEL":               0,
 	"CREATE_BOTH_GROUPING_AND_CONTAINER": 1,
@@ -43,8 +46,9 @@
 func (x MessageParserOption) String() string {
 	return proto.EnumName(MessageParserOption_name, int32(x))
 }
+
 func (MessageParserOption) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_yang_options_40f3be6d35d15307, []int{0}
+	return fileDescriptor_e6be2fba65eb89fb, []int{0}
 }
 
 type InlineNode struct {
@@ -59,16 +63,17 @@
 func (m *InlineNode) String() string { return proto.CompactTextString(m) }
 func (*InlineNode) ProtoMessage()    {}
 func (*InlineNode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_yang_options_40f3be6d35d15307, []int{0}
+	return fileDescriptor_e6be2fba65eb89fb, []int{0}
 }
+
 func (m *InlineNode) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InlineNode.Unmarshal(m, b)
 }
 func (m *InlineNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InlineNode.Marshal(b, m, deterministic)
 }
-func (dst *InlineNode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InlineNode.Merge(dst, src)
+func (m *InlineNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InlineNode.Merge(m, src)
 }
 func (m *InlineNode) XXX_Size() int {
 	return xxx_messageInfo_InlineNode.Size(m)
@@ -115,16 +120,17 @@
 func (m *RpcReturnDef) String() string { return proto.CompactTextString(m) }
 func (*RpcReturnDef) ProtoMessage()    {}
 func (*RpcReturnDef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_yang_options_40f3be6d35d15307, []int{1}
+	return fileDescriptor_e6be2fba65eb89fb, []int{1}
 }
+
 func (m *RpcReturnDef) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_RpcReturnDef.Unmarshal(m, b)
 }
 func (m *RpcReturnDef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_RpcReturnDef.Marshal(b, m, deterministic)
 }
-func (dst *RpcReturnDef) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RpcReturnDef.Merge(dst, src)
+func (m *RpcReturnDef) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RpcReturnDef.Merge(m, src)
 }
 func (m *RpcReturnDef) XXX_Size() int {
 	return xxx_messageInfo_RpcReturnDef.Size(m)
@@ -154,7 +160,7 @@
 	ExtensionType: (*MessageParserOption)(nil),
 	Field:         7761774,
 	Name:          "voltha.yang_child_rule",
-	Tag:           "varint,7761774,opt,name=yang_child_rule,json=yangChildRule,enum=voltha.MessageParserOption",
+	Tag:           "varint,7761774,opt,name=yang_child_rule,enum=voltha.MessageParserOption",
 	Filename:      "voltha_protos/yang_options.proto",
 }
 
@@ -163,7 +169,7 @@
 	ExtensionType: (*MessageParserOption)(nil),
 	Field:         7761775,
 	Name:          "voltha.yang_message_rule",
-	Tag:           "varint,7761775,opt,name=yang_message_rule,json=yangMessageRule,enum=voltha.MessageParserOption",
+	Tag:           "varint,7761775,opt,name=yang_message_rule,enum=voltha.MessageParserOption",
 	Filename:      "voltha_protos/yang_options.proto",
 }
 
@@ -172,7 +178,7 @@
 	ExtensionType: (*InlineNode)(nil),
 	Field:         7761776,
 	Name:          "voltha.yang_inline_node",
-	Tag:           "bytes,7761776,opt,name=yang_inline_node,json=yangInlineNode",
+	Tag:           "bytes,7761776,opt,name=yang_inline_node",
 	Filename:      "voltha_protos/yang_options.proto",
 }
 
@@ -181,25 +187,23 @@
 	ExtensionType: (*RpcReturnDef)(nil),
 	Field:         7761777,
 	Name:          "voltha.yang_xml_tag",
-	Tag:           "bytes,7761777,opt,name=yang_xml_tag,json=yangXmlTag",
+	Tag:           "bytes,7761777,opt,name=yang_xml_tag",
 	Filename:      "voltha_protos/yang_options.proto",
 }
 
 func init() {
+	proto.RegisterEnum("voltha.MessageParserOption", MessageParserOption_name, MessageParserOption_value)
 	proto.RegisterType((*InlineNode)(nil), "voltha.InlineNode")
 	proto.RegisterType((*RpcReturnDef)(nil), "voltha.RpcReturnDef")
-	proto.RegisterEnum("voltha.MessageParserOption", MessageParserOption_name, MessageParserOption_value)
 	proto.RegisterExtension(E_YangChildRule)
 	proto.RegisterExtension(E_YangMessageRule)
 	proto.RegisterExtension(E_YangInlineNode)
 	proto.RegisterExtension(E_YangXmlTag)
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/yang_options.proto", fileDescriptor_yang_options_40f3be6d35d15307)
-}
+func init() { proto.RegisterFile("voltha_protos/yang_options.proto", fileDescriptor_e6be2fba65eb89fb) }
 
-var fileDescriptor_yang_options_40f3be6d35d15307 = []byte{
+var fileDescriptor_e6be2fba65eb89fb = []byte{
 	// 452 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4d, 0x6f, 0xd3, 0x30,
 	0x18, 0xc7, 0x69, 0x41, 0x45, 0x98, 0xad, 0x2b, 0x66, 0x12, 0x15, 0x08, 0xa8, 0x7a, 0x98, 0x26,
diff --git a/go/ietf/ietf_interfaces.pb.go b/go/ietf/ietf_interfaces.pb.go
new file mode 100644
index 0000000..6f6f0b4
--- /dev/null
+++ b/go/ietf/ietf_interfaces.pb.go
@@ -0,0 +1,431 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/ietf_interfaces.proto
+
+package ietf
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
+
+// 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
+
+type Interface_LinkUpDownTrapEnableType int32
+
+const (
+	Interface_TRAP_DISABLED Interface_LinkUpDownTrapEnableType = 0
+	Interface_TRAP_ENABLED  Interface_LinkUpDownTrapEnableType = 1
+)
+
+var Interface_LinkUpDownTrapEnableType_name = map[int32]string{
+	0: "TRAP_DISABLED",
+	1: "TRAP_ENABLED",
+}
+
+var Interface_LinkUpDownTrapEnableType_value = map[string]int32{
+	"TRAP_DISABLED": 0,
+	"TRAP_ENABLED":  1,
+}
+
+func (x Interface_LinkUpDownTrapEnableType) String() string {
+	return proto.EnumName(Interface_LinkUpDownTrapEnableType_name, int32(x))
+}
+
+func (Interface_LinkUpDownTrapEnableType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_5a91e49a45099096, []int{1, 0}
+}
+
+type InterfaceState_AdminStatusType int32
+
+const (
+	InterfaceState_ADMIN_DOWN    InterfaceState_AdminStatusType = 0
+	InterfaceState_ADMIN_TESTING InterfaceState_AdminStatusType = 1
+	InterfaceState_ADMIN_UP      InterfaceState_AdminStatusType = 2
+)
+
+var InterfaceState_AdminStatusType_name = map[int32]string{
+	0: "ADMIN_DOWN",
+	1: "ADMIN_TESTING",
+	2: "ADMIN_UP",
+}
+
+var InterfaceState_AdminStatusType_value = map[string]int32{
+	"ADMIN_DOWN":    0,
+	"ADMIN_TESTING": 1,
+	"ADMIN_UP":      2,
+}
+
+func (x InterfaceState_AdminStatusType) String() string {
+	return proto.EnumName(InterfaceState_AdminStatusType_name, int32(x))
+}
+
+func (InterfaceState_AdminStatusType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_5a91e49a45099096, []int{3, 0}
+}
+
+type InterfaceState_OperStatusType int32
+
+const (
+	InterfaceState_DORMANT          InterfaceState_OperStatusType = 0
+	InterfaceState_LOWER_LAYER_DOWN InterfaceState_OperStatusType = 1
+	InterfaceState_UNKNOWN          InterfaceState_OperStatusType = 2
+	InterfaceState_TESTING          InterfaceState_OperStatusType = 3
+	InterfaceState_UP               InterfaceState_OperStatusType = 4
+	InterfaceState_DOWN             InterfaceState_OperStatusType = 5
+	InterfaceState_NOT_PRESENT      InterfaceState_OperStatusType = 6
+)
+
+var InterfaceState_OperStatusType_name = map[int32]string{
+	0: "DORMANT",
+	1: "LOWER_LAYER_DOWN",
+	2: "UNKNOWN",
+	3: "TESTING",
+	4: "UP",
+	5: "DOWN",
+	6: "NOT_PRESENT",
+}
+
+var InterfaceState_OperStatusType_value = map[string]int32{
+	"DORMANT":          0,
+	"LOWER_LAYER_DOWN": 1,
+	"UNKNOWN":          2,
+	"TESTING":          3,
+	"UP":               4,
+	"DOWN":             5,
+	"NOT_PRESENT":      6,
+}
+
+func (x InterfaceState_OperStatusType) String() string {
+	return proto.EnumName(InterfaceState_OperStatusType_name, int32(x))
+}
+
+func (InterfaceState_OperStatusType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_5a91e49a45099096, []int{3, 1}
+}
+
+type Interfaces struct {
+	AllInterfaces        []*Interface `protobuf:"bytes,1,rep,name=all_interfaces,json=allInterfaces,proto3" json:"all_interfaces,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *Interfaces) Reset()         { *m = Interfaces{} }
+func (m *Interfaces) String() string { return proto.CompactTextString(m) }
+func (*Interfaces) ProtoMessage()    {}
+func (*Interfaces) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5a91e49a45099096, []int{0}
+}
+
+func (m *Interfaces) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Interfaces.Unmarshal(m, b)
+}
+func (m *Interfaces) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Interfaces.Marshal(b, m, deterministic)
+}
+func (m *Interfaces) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Interfaces.Merge(m, src)
+}
+func (m *Interfaces) XXX_Size() int {
+	return xxx_messageInfo_Interfaces.Size(m)
+}
+func (m *Interfaces) XXX_DiscardUnknown() {
+	xxx_messageInfo_Interfaces.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Interfaces proto.InternalMessageInfo
+
+func (m *Interfaces) GetAllInterfaces() []*Interface {
+	if m != nil {
+		return m.AllInterfaces
+	}
+	return nil
+}
+
+type Interface struct {
+	Name                 string                             `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Description          string                             `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+	Type                 string                             `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
+	Enabled              bool                               `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"`
+	LinkUpDownTrapEnable Interface_LinkUpDownTrapEnableType `protobuf:"varint,5,opt,name=link_up_down_trap_enable,json=linkUpDownTrapEnable,proto3,enum=ietf_interfaces.Interface_LinkUpDownTrapEnableType" json:"link_up_down_trap_enable,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
+	XXX_unrecognized     []byte                             `json:"-"`
+	XXX_sizecache        int32                              `json:"-"`
+}
+
+func (m *Interface) Reset()         { *m = Interface{} }
+func (m *Interface) String() string { return proto.CompactTextString(m) }
+func (*Interface) ProtoMessage()    {}
+func (*Interface) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5a91e49a45099096, []int{1}
+}
+
+func (m *Interface) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Interface.Unmarshal(m, b)
+}
+func (m *Interface) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Interface.Marshal(b, m, deterministic)
+}
+func (m *Interface) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Interface.Merge(m, src)
+}
+func (m *Interface) XXX_Size() int {
+	return xxx_messageInfo_Interface.Size(m)
+}
+func (m *Interface) XXX_DiscardUnknown() {
+	xxx_messageInfo_Interface.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Interface proto.InternalMessageInfo
+
+func (m *Interface) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Interface) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *Interface) GetType() string {
+	if m != nil {
+		return m.Type
+	}
+	return ""
+}
+
+func (m *Interface) GetEnabled() bool {
+	if m != nil {
+		return m.Enabled
+	}
+	return false
+}
+
+func (m *Interface) GetLinkUpDownTrapEnable() Interface_LinkUpDownTrapEnableType {
+	if m != nil {
+		return m.LinkUpDownTrapEnable
+	}
+	return Interface_TRAP_DISABLED
+}
+
+type InterfacesState struct {
+	AllInterfacs         []*InterfaceState `protobuf:"bytes,1,rep,name=all_interfacs,json=allInterfacs,proto3" json:"all_interfacs,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *InterfacesState) Reset()         { *m = InterfacesState{} }
+func (m *InterfacesState) String() string { return proto.CompactTextString(m) }
+func (*InterfacesState) ProtoMessage()    {}
+func (*InterfacesState) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5a91e49a45099096, []int{2}
+}
+
+func (m *InterfacesState) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_InterfacesState.Unmarshal(m, b)
+}
+func (m *InterfacesState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_InterfacesState.Marshal(b, m, deterministic)
+}
+func (m *InterfacesState) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterfacesState.Merge(m, src)
+}
+func (m *InterfacesState) XXX_Size() int {
+	return xxx_messageInfo_InterfacesState.Size(m)
+}
+func (m *InterfacesState) XXX_DiscardUnknown() {
+	xxx_messageInfo_InterfacesState.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterfacesState proto.InternalMessageInfo
+
+func (m *InterfacesState) GetAllInterfacs() []*InterfaceState {
+	if m != nil {
+		return m.AllInterfacs
+	}
+	return nil
+}
+
+type InterfaceState struct {
+	Name                 string                         `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Type                 string                         `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+	AdminStatus          InterfaceState_AdminStatusType `protobuf:"varint,3,opt,name=admin_status,json=adminStatus,proto3,enum=ietf_interfaces.InterfaceState_AdminStatusType" json:"admin_status,omitempty"`
+	OperStatus           InterfaceState_OperStatusType  `protobuf:"varint,4,opt,name=oper_status,json=operStatus,proto3,enum=ietf_interfaces.InterfaceState_OperStatusType" json:"oper_status,omitempty"`
+	LastChange           string                         `protobuf:"bytes,5,opt,name=last_change,json=lastChange,proto3" json:"last_change,omitempty"`
+	IfIndex              int32                          `protobuf:"varint,6,opt,name=if_index,json=ifIndex,proto3" json:"if_index,omitempty"`
+	PhysAddress          string                         `protobuf:"bytes,7,opt,name=phys_address,json=physAddress,proto3" json:"phys_address,omitempty"`
+	HigherLayerIf        []string                       `protobuf:"bytes,8,rep,name=higher_layer_if,json=higherLayerIf,proto3" json:"higher_layer_if,omitempty"`
+	LowerLayerIf         []string                       `protobuf:"bytes,9,rep,name=lower_layer_if,json=lowerLayerIf,proto3" json:"lower_layer_if,omitempty"`
+	Speed                uint64                         `protobuf:"varint,10,opt,name=speed,proto3" json:"speed,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
+}
+
+func (m *InterfaceState) Reset()         { *m = InterfaceState{} }
+func (m *InterfaceState) String() string { return proto.CompactTextString(m) }
+func (*InterfaceState) ProtoMessage()    {}
+func (*InterfaceState) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5a91e49a45099096, []int{3}
+}
+
+func (m *InterfaceState) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_InterfaceState.Unmarshal(m, b)
+}
+func (m *InterfaceState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_InterfaceState.Marshal(b, m, deterministic)
+}
+func (m *InterfaceState) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterfaceState.Merge(m, src)
+}
+func (m *InterfaceState) XXX_Size() int {
+	return xxx_messageInfo_InterfaceState.Size(m)
+}
+func (m *InterfaceState) XXX_DiscardUnknown() {
+	xxx_messageInfo_InterfaceState.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterfaceState proto.InternalMessageInfo
+
+func (m *InterfaceState) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *InterfaceState) GetType() string {
+	if m != nil {
+		return m.Type
+	}
+	return ""
+}
+
+func (m *InterfaceState) GetAdminStatus() InterfaceState_AdminStatusType {
+	if m != nil {
+		return m.AdminStatus
+	}
+	return InterfaceState_ADMIN_DOWN
+}
+
+func (m *InterfaceState) GetOperStatus() InterfaceState_OperStatusType {
+	if m != nil {
+		return m.OperStatus
+	}
+	return InterfaceState_DORMANT
+}
+
+func (m *InterfaceState) GetLastChange() string {
+	if m != nil {
+		return m.LastChange
+	}
+	return ""
+}
+
+func (m *InterfaceState) GetIfIndex() int32 {
+	if m != nil {
+		return m.IfIndex
+	}
+	return 0
+}
+
+func (m *InterfaceState) GetPhysAddress() string {
+	if m != nil {
+		return m.PhysAddress
+	}
+	return ""
+}
+
+func (m *InterfaceState) GetHigherLayerIf() []string {
+	if m != nil {
+		return m.HigherLayerIf
+	}
+	return nil
+}
+
+func (m *InterfaceState) GetLowerLayerIf() []string {
+	if m != nil {
+		return m.LowerLayerIf
+	}
+	return nil
+}
+
+func (m *InterfaceState) GetSpeed() uint64 {
+	if m != nil {
+		return m.Speed
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterEnum("ietf_interfaces.Interface_LinkUpDownTrapEnableType", Interface_LinkUpDownTrapEnableType_name, Interface_LinkUpDownTrapEnableType_value)
+	proto.RegisterEnum("ietf_interfaces.InterfaceState_AdminStatusType", InterfaceState_AdminStatusType_name, InterfaceState_AdminStatusType_value)
+	proto.RegisterEnum("ietf_interfaces.InterfaceState_OperStatusType", InterfaceState_OperStatusType_name, InterfaceState_OperStatusType_value)
+	proto.RegisterType((*Interfaces)(nil), "ietf_interfaces.Interfaces")
+	proto.RegisterType((*Interface)(nil), "ietf_interfaces.Interface")
+	proto.RegisterType((*InterfacesState)(nil), "ietf_interfaces.InterfacesState")
+	proto.RegisterType((*InterfaceState)(nil), "ietf_interfaces.InterfaceState")
+}
+
+func init() {
+	proto.RegisterFile("voltha_protos/ietf_interfaces.proto", fileDescriptor_5a91e49a45099096)
+}
+
+var fileDescriptor_5a91e49a45099096 = []byte{
+	// 614 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x94, 0xdf, 0x6e, 0x9b, 0x30,
+	0x18, 0xc5, 0x4b, 0xfe, 0xe7, 0x23, 0x21, 0xcc, 0xea, 0x05, 0xdb, 0x4d, 0x19, 0x9b, 0x26, 0xa6,
+	0x69, 0x89, 0xd4, 0x3e, 0xc0, 0x44, 0x07, 0x9a, 0xa2, 0xa5, 0x10, 0x39, 0x44, 0xd5, 0x76, 0x63,
+	0xb9, 0xc1, 0x49, 0x50, 0x29, 0x58, 0xe0, 0xae, 0xcb, 0xc3, 0xec, 0xb5, 0xf6, 0x3c, 0x13, 0x66,
+	0x49, 0x69, 0xd5, 0xaa, 0x77, 0x9c, 0xdf, 0xf7, 0x9d, 0x13, 0xeb, 0xc4, 0x32, 0xbc, 0xfb, 0x95,
+	0x25, 0x62, 0x4b, 0x09, 0xcf, 0x33, 0x91, 0x15, 0x93, 0x98, 0x89, 0x35, 0x89, 0x53, 0xc1, 0xf2,
+	0x35, 0x5d, 0xb1, 0x62, 0x2c, 0x31, 0x1a, 0x3d, 0xc2, 0x56, 0x00, 0x30, 0x3d, 0x28, 0xe4, 0x80,
+	0x46, 0x93, 0xa4, 0x36, 0x37, 0x14, 0xb3, 0x69, 0xab, 0xa7, 0x6f, 0xc6, 0x8f, 0xe3, 0x0e, 0x26,
+	0x3c, 0xa4, 0x49, 0x72, 0x1f, 0x61, 0xfd, 0x69, 0x40, 0xff, 0x20, 0x11, 0x82, 0x56, 0x4a, 0x6f,
+	0x98, 0xa1, 0x98, 0x8a, 0xdd, 0xc7, 0xf2, 0x1b, 0x99, 0xa0, 0x46, 0xac, 0x58, 0xe5, 0x31, 0x17,
+	0x71, 0x96, 0x1a, 0x0d, 0x39, 0xaa, 0xa3, 0xd2, 0x25, 0x76, 0x9c, 0x19, 0xcd, 0xca, 0x55, 0x7e,
+	0x23, 0x03, 0xba, 0x2c, 0xa5, 0x57, 0x09, 0x8b, 0x8c, 0x96, 0xa9, 0xd8, 0x3d, 0xbc, 0x97, 0xe8,
+	0x1a, 0x8c, 0x24, 0x4e, 0xaf, 0xc9, 0x2d, 0x27, 0x51, 0x76, 0x97, 0x12, 0x91, 0x53, 0x4e, 0xaa,
+	0xa1, 0xd1, 0x36, 0x15, 0x5b, 0x3b, 0x3d, 0x7b, 0xfe, 0xf8, 0xe3, 0x59, 0x9c, 0x5e, 0x2f, 0xb9,
+	0x9b, 0xdd, 0xa5, 0x61, 0x4e, 0xb9, 0x27, 0x6d, 0xe1, 0x8e, 0x33, 0x7c, 0x9c, 0x3c, 0x31, 0xb1,
+	0xbe, 0x80, 0xf1, 0x9c, 0x03, 0xbd, 0x82, 0x61, 0x88, 0x9d, 0x39, 0x71, 0xa7, 0x0b, 0xe7, 0x7c,
+	0xe6, 0xb9, 0xfa, 0x11, 0xd2, 0x61, 0x20, 0x91, 0xe7, 0x57, 0x44, 0xb1, 0x2e, 0x61, 0x74, 0xdf,
+	0xd6, 0x42, 0x50, 0xc1, 0x90, 0x0b, 0xc3, 0x7a, 0xeb, 0xfb, 0xd2, 0x4f, 0x9e, 0x3f, 0xb5, 0xf4,
+	0xe1, 0x41, 0xad, 0xf9, 0xc2, 0xfa, 0xdb, 0x02, 0xed, 0xe1, 0xc2, 0x93, 0xed, 0xef, 0xbb, 0x6d,
+	0xd4, 0xba, 0xc5, 0x30, 0xa0, 0xd1, 0x4d, 0x9c, 0x92, 0x42, 0x50, 0x71, 0x5b, 0xc8, 0xde, 0xb5,
+	0xd3, 0xc9, 0x0b, 0xbf, 0x3f, 0x76, 0x4a, 0xcf, 0x42, 0x5a, 0x64, 0x63, 0x2a, 0xbd, 0x07, 0x28,
+	0x00, 0x35, 0xe3, 0x2c, 0xdf, 0x47, 0xb6, 0x64, 0xe4, 0xf8, 0xa5, 0xc8, 0x80, 0xb3, 0xbc, 0x96,
+	0x08, 0xd9, 0x41, 0xa3, 0x13, 0x50, 0x13, 0x5a, 0x08, 0xb2, 0xda, 0xd2, 0x74, 0x53, 0xfd, 0xb3,
+	0x7d, 0x0c, 0x25, 0xfa, 0x2a, 0x09, 0x7a, 0x0d, 0xbd, 0xb8, 0xcc, 0x8e, 0xd8, 0x6f, 0xa3, 0x63,
+	0x2a, 0x76, 0x1b, 0x77, 0xe3, 0xf5, 0xb4, 0x94, 0xe8, 0x2d, 0x0c, 0xf8, 0x76, 0x57, 0x10, 0x1a,
+	0x45, 0x39, 0x2b, 0x0a, 0xa3, 0x5b, 0xdd, 0xb9, 0x92, 0x39, 0x15, 0x42, 0x1f, 0x60, 0xb4, 0x8d,
+	0x37, 0x5b, 0x96, 0x93, 0x84, 0xee, 0x58, 0x4e, 0xe2, 0xb5, 0xd1, 0x33, 0x9b, 0x76, 0x1f, 0x0f,
+	0x2b, 0x3c, 0x2b, 0xe9, 0x74, 0x8d, 0xde, 0x83, 0x96, 0x64, 0x77, 0xf5, 0xb5, 0xbe, 0x5c, 0x1b,
+	0x48, 0xba, 0xdf, 0x3a, 0x86, 0x76, 0xc1, 0x19, 0x8b, 0x0c, 0x30, 0x15, 0xbb, 0x85, 0x2b, 0x61,
+	0x9d, 0xc3, 0xe8, 0x51, 0x67, 0x48, 0x03, 0x70, 0xdc, 0x8b, 0xa9, 0x4f, 0xdc, 0xe0, 0xd2, 0xd7,
+	0x8f, 0xca, 0x3b, 0x54, 0xe9, 0xd0, 0x5b, 0x84, 0x53, 0xff, 0x9b, 0xae, 0xa0, 0x01, 0xf4, 0x2a,
+	0xb4, 0x9c, 0xeb, 0x0d, 0x8b, 0x83, 0xf6, 0xb0, 0x24, 0xa4, 0x42, 0xd7, 0x0d, 0xf0, 0x85, 0xe3,
+	0x87, 0xfa, 0x11, 0x3a, 0x06, 0x7d, 0x16, 0x5c, 0x7a, 0x98, 0xcc, 0x9c, 0x1f, 0x1e, 0xae, 0x52,
+	0x95, 0x72, 0x65, 0xe9, 0x7f, 0xf7, 0x4b, 0xd1, 0x28, 0xc5, 0x3e, 0xbc, 0x89, 0x3a, 0xd0, 0x58,
+	0xce, 0xf5, 0x16, 0xea, 0x41, 0x4b, 0xee, 0xb6, 0xd1, 0x08, 0x54, 0x3f, 0x08, 0xc9, 0x1c, 0x7b,
+	0x0b, 0xcf, 0x0f, 0xf5, 0xce, 0xf9, 0xa7, 0x9f, 0x1f, 0x37, 0xb1, 0xd8, 0xde, 0x5e, 0x8d, 0x57,
+	0xd9, 0xcd, 0x24, 0xe3, 0x2c, 0x5d, 0x65, 0x79, 0x34, 0xa9, 0x9e, 0x9b, 0xcf, 0xff, 0x9f, 0x9b,
+	0x4d, 0x26, 0x5f, 0x9c, 0xab, 0x8e, 0xd4, 0x67, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x97, 0xf8,
+	0x6c, 0xee, 0x8e, 0x04, 0x00, 0x00,
+}
diff --git a/go/inter_container/inter_container.pb.go b/go/inter_container/inter_container.pb.go
index 40ca168..79ce1b1 100644
--- a/go/inter_container/inter_container.pb.go
+++ b/go/inter_container/inter_container.pb.go
@@ -1,14 +1,16 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/inter_container.proto
 
-package inter_container // import "github.com/opencord/voltha-protos/go/inter_container"
+package inter_container
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import any "github.com/golang/protobuf/ptypes/any"
-import openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
-import voltha "github.com/opencord/voltha-protos/go/voltha"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	any "github.com/golang/protobuf/ptypes/any"
+	openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
+	voltha "github.com/opencord/voltha-protos/go/voltha"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -19,7 +21,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 // LogicalPortId from public import voltha_protos/logical_device.proto
 type LogicalPortId = voltha.LogicalPortId
@@ -49,6 +51,7 @@
 	1: "RESPONSE",
 	2: "DEVICE_DISCOVERED",
 }
+
 var MessageType_value = map[string]int32{
 	"REQUEST":           0,
 	"RESPONSE":          1,
@@ -58,8 +61,9 @@
 func (x MessageType) String() string {
 	return proto.EnumName(MessageType_name, int32(x))
 }
+
 func (MessageType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{0}
+	return fileDescriptor_941f0031a549667f, []int{0}
 }
 
 type ErrorCodeCodes int32
@@ -73,6 +77,7 @@
 	0: "UNSUPPORTED_REQUEST",
 	1: "INVALID_PARAMETERS",
 }
+
 var ErrorCodeCodes_value = map[string]int32{
 	"UNSUPPORTED_REQUEST": 0,
 	"INVALID_PARAMETERS":  1,
@@ -81,8 +86,9 @@
 func (x ErrorCodeCodes) String() string {
 	return proto.EnumName(ErrorCodeCodes_name, int32(x))
 }
+
 func (ErrorCodeCodes) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{4, 0}
+	return fileDescriptor_941f0031a549667f, []int{4, 0}
 }
 
 type InterAdapterMessageType_Types int32
@@ -108,6 +114,7 @@
 	6: "ONU_IND_REQUEST",
 	7: "ONU_IND_RESPONSE",
 }
+
 var InterAdapterMessageType_Types_value = map[string]int32{
 	"FLOW_REQUEST":     0,
 	"FLOW_RESPONSE":    1,
@@ -122,8 +129,9 @@
 func (x InterAdapterMessageType_Types) String() string {
 	return proto.EnumName(InterAdapterMessageType_Types_name, int32(x))
 }
+
 func (InterAdapterMessageType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{14, 0}
+	return fileDescriptor_941f0031a549667f, []int{14, 0}
 }
 
 type StrType struct {
@@ -137,16 +145,17 @@
 func (m *StrType) String() string { return proto.CompactTextString(m) }
 func (*StrType) ProtoMessage()    {}
 func (*StrType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{0}
+	return fileDescriptor_941f0031a549667f, []int{0}
 }
+
 func (m *StrType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_StrType.Unmarshal(m, b)
 }
 func (m *StrType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_StrType.Marshal(b, m, deterministic)
 }
-func (dst *StrType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StrType.Merge(dst, src)
+func (m *StrType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StrType.Merge(m, src)
 }
 func (m *StrType) XXX_Size() int {
 	return xxx_messageInfo_StrType.Size(m)
@@ -175,16 +184,17 @@
 func (m *IntType) String() string { return proto.CompactTextString(m) }
 func (*IntType) ProtoMessage()    {}
 func (*IntType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{1}
+	return fileDescriptor_941f0031a549667f, []int{1}
 }
+
 func (m *IntType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_IntType.Unmarshal(m, b)
 }
 func (m *IntType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_IntType.Marshal(b, m, deterministic)
 }
-func (dst *IntType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IntType.Merge(dst, src)
+func (m *IntType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IntType.Merge(m, src)
 }
 func (m *IntType) XXX_Size() int {
 	return xxx_messageInfo_IntType.Size(m)
@@ -213,16 +223,17 @@
 func (m *BoolType) String() string { return proto.CompactTextString(m) }
 func (*BoolType) ProtoMessage()    {}
 func (*BoolType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{2}
+	return fileDescriptor_941f0031a549667f, []int{2}
 }
+
 func (m *BoolType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_BoolType.Unmarshal(m, b)
 }
 func (m *BoolType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_BoolType.Marshal(b, m, deterministic)
 }
-func (dst *BoolType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BoolType.Merge(dst, src)
+func (m *BoolType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BoolType.Merge(m, src)
 }
 func (m *BoolType) XXX_Size() int {
 	return xxx_messageInfo_BoolType.Size(m)
@@ -251,16 +262,17 @@
 func (m *Packet) String() string { return proto.CompactTextString(m) }
 func (*Packet) ProtoMessage()    {}
 func (*Packet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{3}
+	return fileDescriptor_941f0031a549667f, []int{3}
 }
+
 func (m *Packet) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Packet.Unmarshal(m, b)
 }
 func (m *Packet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Packet.Marshal(b, m, deterministic)
 }
-func (dst *Packet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Packet.Merge(dst, src)
+func (m *Packet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Packet.Merge(m, src)
 }
 func (m *Packet) XXX_Size() int {
 	return xxx_messageInfo_Packet.Size(m)
@@ -288,16 +300,17 @@
 func (m *ErrorCode) String() string { return proto.CompactTextString(m) }
 func (*ErrorCode) ProtoMessage()    {}
 func (*ErrorCode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{4}
+	return fileDescriptor_941f0031a549667f, []int{4}
 }
+
 func (m *ErrorCode) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ErrorCode.Unmarshal(m, b)
 }
 func (m *ErrorCode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ErrorCode.Marshal(b, m, deterministic)
 }
-func (dst *ErrorCode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ErrorCode.Merge(dst, src)
+func (m *ErrorCode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ErrorCode.Merge(m, src)
 }
 func (m *ErrorCode) XXX_Size() int {
 	return xxx_messageInfo_ErrorCode.Size(m)
@@ -320,16 +333,17 @@
 func (m *Error) String() string { return proto.CompactTextString(m) }
 func (*Error) ProtoMessage()    {}
 func (*Error) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{5}
+	return fileDescriptor_941f0031a549667f, []int{5}
 }
+
 func (m *Error) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Error.Unmarshal(m, b)
 }
 func (m *Error) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Error.Marshal(b, m, deterministic)
 }
-func (dst *Error) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Error.Merge(dst, src)
+func (m *Error) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Error.Merge(m, src)
 }
 func (m *Error) XXX_Size() int {
 	return xxx_messageInfo_Error.Size(m)
@@ -370,16 +384,17 @@
 func (m *Header) String() string { return proto.CompactTextString(m) }
 func (*Header) ProtoMessage()    {}
 func (*Header) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{6}
+	return fileDescriptor_941f0031a549667f, []int{6}
 }
+
 func (m *Header) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Header.Unmarshal(m, b)
 }
 func (m *Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Header.Marshal(b, m, deterministic)
 }
-func (dst *Header) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Header.Merge(dst, src)
+func (m *Header) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Header.Merge(m, src)
 }
 func (m *Header) XXX_Size() int {
 	return xxx_messageInfo_Header.Size(m)
@@ -444,16 +459,17 @@
 func (m *Argument) String() string { return proto.CompactTextString(m) }
 func (*Argument) ProtoMessage()    {}
 func (*Argument) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{7}
+	return fileDescriptor_941f0031a549667f, []int{7}
 }
+
 func (m *Argument) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Argument.Unmarshal(m, b)
 }
 func (m *Argument) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Argument.Marshal(b, m, deterministic)
 }
-func (dst *Argument) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Argument.Merge(dst, src)
+func (m *Argument) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Argument.Merge(m, src)
 }
 func (m *Argument) XXX_Size() int {
 	return xxx_messageInfo_Argument.Size(m)
@@ -490,16 +506,17 @@
 func (m *InterContainerMessage) String() string { return proto.CompactTextString(m) }
 func (*InterContainerMessage) ProtoMessage()    {}
 func (*InterContainerMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{8}
+	return fileDescriptor_941f0031a549667f, []int{8}
 }
+
 func (m *InterContainerMessage) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterContainerMessage.Unmarshal(m, b)
 }
 func (m *InterContainerMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InterContainerMessage.Marshal(b, m, deterministic)
 }
-func (dst *InterContainerMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterContainerMessage.Merge(dst, src)
+func (m *InterContainerMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterContainerMessage.Merge(m, src)
 }
 func (m *InterContainerMessage) XXX_Size() int {
 	return xxx_messageInfo_InterContainerMessage.Size(m)
@@ -538,16 +555,17 @@
 func (m *InterContainerRequestBody) String() string { return proto.CompactTextString(m) }
 func (*InterContainerRequestBody) ProtoMessage()    {}
 func (*InterContainerRequestBody) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{9}
+	return fileDescriptor_941f0031a549667f, []int{9}
 }
+
 func (m *InterContainerRequestBody) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterContainerRequestBody.Unmarshal(m, b)
 }
 func (m *InterContainerRequestBody) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InterContainerRequestBody.Marshal(b, m, deterministic)
 }
-func (dst *InterContainerRequestBody) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterContainerRequestBody.Merge(dst, src)
+func (m *InterContainerRequestBody) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterContainerRequestBody.Merge(m, src)
 }
 func (m *InterContainerRequestBody) XXX_Size() int {
 	return xxx_messageInfo_InterContainerRequestBody.Size(m)
@@ -598,16 +616,17 @@
 func (m *InterContainerResponseBody) String() string { return proto.CompactTextString(m) }
 func (*InterContainerResponseBody) ProtoMessage()    {}
 func (*InterContainerResponseBody) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{10}
+	return fileDescriptor_941f0031a549667f, []int{10}
 }
+
 func (m *InterContainerResponseBody) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterContainerResponseBody.Unmarshal(m, b)
 }
 func (m *InterContainerResponseBody) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InterContainerResponseBody.Marshal(b, m, deterministic)
 }
-func (dst *InterContainerResponseBody) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterContainerResponseBody.Merge(dst, src)
+func (m *InterContainerResponseBody) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterContainerResponseBody.Merge(m, src)
 }
 func (m *InterContainerResponseBody) XXX_Size() int {
 	return xxx_messageInfo_InterContainerResponseBody.Size(m)
@@ -644,16 +663,17 @@
 func (m *SwitchCapability) String() string { return proto.CompactTextString(m) }
 func (*SwitchCapability) ProtoMessage()    {}
 func (*SwitchCapability) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{11}
+	return fileDescriptor_941f0031a549667f, []int{11}
 }
+
 func (m *SwitchCapability) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SwitchCapability.Unmarshal(m, b)
 }
 func (m *SwitchCapability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_SwitchCapability.Marshal(b, m, deterministic)
 }
-func (dst *SwitchCapability) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SwitchCapability.Merge(dst, src)
+func (m *SwitchCapability) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SwitchCapability.Merge(m, src)
 }
 func (m *SwitchCapability) XXX_Size() int {
 	return xxx_messageInfo_SwitchCapability.Size(m)
@@ -689,16 +709,17 @@
 func (m *PortCapability) String() string { return proto.CompactTextString(m) }
 func (*PortCapability) ProtoMessage()    {}
 func (*PortCapability) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{12}
+	return fileDescriptor_941f0031a549667f, []int{12}
 }
+
 func (m *PortCapability) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PortCapability.Unmarshal(m, b)
 }
 func (m *PortCapability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PortCapability.Marshal(b, m, deterministic)
 }
-func (dst *PortCapability) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PortCapability.Merge(dst, src)
+func (m *PortCapability) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PortCapability.Merge(m, src)
 }
 func (m *PortCapability) XXX_Size() int {
 	return xxx_messageInfo_PortCapability.Size(m)
@@ -730,16 +751,17 @@
 func (m *DeviceDiscovered) String() string { return proto.CompactTextString(m) }
 func (*DeviceDiscovered) ProtoMessage()    {}
 func (*DeviceDiscovered) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{13}
+	return fileDescriptor_941f0031a549667f, []int{13}
 }
+
 func (m *DeviceDiscovered) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeviceDiscovered.Unmarshal(m, b)
 }
 func (m *DeviceDiscovered) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DeviceDiscovered.Marshal(b, m, deterministic)
 }
-func (dst *DeviceDiscovered) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceDiscovered.Merge(dst, src)
+func (m *DeviceDiscovered) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeviceDiscovered.Merge(m, src)
 }
 func (m *DeviceDiscovered) XXX_Size() int {
 	return xxx_messageInfo_DeviceDiscovered.Size(m)
@@ -788,16 +810,17 @@
 func (m *InterAdapterMessageType) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterMessageType) ProtoMessage()    {}
 func (*InterAdapterMessageType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{14}
+	return fileDescriptor_941f0031a549667f, []int{14}
 }
+
 func (m *InterAdapterMessageType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterMessageType.Unmarshal(m, b)
 }
 func (m *InterAdapterMessageType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InterAdapterMessageType.Marshal(b, m, deterministic)
 }
-func (dst *InterAdapterMessageType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterAdapterMessageType.Merge(dst, src)
+func (m *InterAdapterMessageType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterAdapterMessageType.Merge(m, src)
 }
 func (m *InterAdapterMessageType) XXX_Size() int {
 	return xxx_messageInfo_InterAdapterMessageType.Size(m)
@@ -825,16 +848,17 @@
 func (m *InterAdapterHeader) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterHeader) ProtoMessage()    {}
 func (*InterAdapterHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{15}
+	return fileDescriptor_941f0031a549667f, []int{15}
 }
+
 func (m *InterAdapterHeader) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterHeader.Unmarshal(m, b)
 }
 func (m *InterAdapterHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InterAdapterHeader.Marshal(b, m, deterministic)
 }
-func (dst *InterAdapterHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterAdapterHeader.Merge(dst, src)
+func (m *InterAdapterHeader) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterAdapterHeader.Merge(m, src)
 }
 func (m *InterAdapterHeader) XXX_Size() int {
 	return xxx_messageInfo_InterAdapterHeader.Size(m)
@@ -905,16 +929,17 @@
 func (m *InterAdapterOmciMessage) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterOmciMessage) ProtoMessage()    {}
 func (*InterAdapterOmciMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{16}
+	return fileDescriptor_941f0031a549667f, []int{16}
 }
+
 func (m *InterAdapterOmciMessage) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterOmciMessage.Unmarshal(m, b)
 }
 func (m *InterAdapterOmciMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InterAdapterOmciMessage.Marshal(b, m, deterministic)
 }
-func (dst *InterAdapterOmciMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterAdapterOmciMessage.Merge(dst, src)
+func (m *InterAdapterOmciMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterAdapterOmciMessage.Merge(m, src)
 }
 func (m *InterAdapterOmciMessage) XXX_Size() int {
 	return xxx_messageInfo_InterAdapterOmciMessage.Size(m)
@@ -947,16 +972,17 @@
 func (m *InterAdapterResponseBody) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterResponseBody) ProtoMessage()    {}
 func (*InterAdapterResponseBody) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{17}
+	return fileDescriptor_941f0031a549667f, []int{17}
 }
+
 func (m *InterAdapterResponseBody) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterResponseBody.Unmarshal(m, b)
 }
 func (m *InterAdapterResponseBody) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InterAdapterResponseBody.Marshal(b, m, deterministic)
 }
-func (dst *InterAdapterResponseBody) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterAdapterResponseBody.Merge(dst, src)
+func (m *InterAdapterResponseBody) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterAdapterResponseBody.Merge(m, src)
 }
 func (m *InterAdapterResponseBody) XXX_Size() int {
 	return xxx_messageInfo_InterAdapterResponseBody.Size(m)
@@ -1011,80 +1037,14 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*InterAdapterResponseBody) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _InterAdapterResponseBody_OneofMarshaler, _InterAdapterResponseBody_OneofUnmarshaler, _InterAdapterResponseBody_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*InterAdapterResponseBody) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*InterAdapterResponseBody_Body)(nil),
 		(*InterAdapterResponseBody_Omci)(nil),
 	}
 }
 
-func _InterAdapterResponseBody_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*InterAdapterResponseBody)
-	// payload
-	switch x := m.Payload.(type) {
-	case *InterAdapterResponseBody_Body:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Body); err != nil {
-			return err
-		}
-	case *InterAdapterResponseBody_Omci:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Omci); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("InterAdapterResponseBody.Payload has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _InterAdapterResponseBody_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*InterAdapterResponseBody)
-	switch tag {
-	case 2: // payload.body
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(any.Any)
-		err := b.DecodeMessage(msg)
-		m.Payload = &InterAdapterResponseBody_Body{msg}
-		return true, err
-	case 3: // payload.omci
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(InterAdapterOmciMessage)
-		err := b.DecodeMessage(msg)
-		m.Payload = &InterAdapterResponseBody_Omci{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _InterAdapterResponseBody_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*InterAdapterResponseBody)
-	// payload
-	switch x := m.Payload.(type) {
-	case *InterAdapterResponseBody_Body:
-		s := proto.Size(x.Body)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *InterAdapterResponseBody_Omci:
-		s := proto.Size(x.Omci)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type InterAdapterMessage struct {
 	Header               *InterAdapterHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
 	Body                 *any.Any            `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
@@ -1097,16 +1057,17 @@
 func (m *InterAdapterMessage) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterMessage) ProtoMessage()    {}
 func (*InterAdapterMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{18}
+	return fileDescriptor_941f0031a549667f, []int{18}
 }
+
 func (m *InterAdapterMessage) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterMessage.Unmarshal(m, b)
 }
 func (m *InterAdapterMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InterAdapterMessage.Marshal(b, m, deterministic)
 }
-func (dst *InterAdapterMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterAdapterMessage.Merge(dst, src)
+func (m *InterAdapterMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterAdapterMessage.Merge(m, src)
 }
 func (m *InterAdapterMessage) XXX_Size() int {
 	return xxx_messageInfo_InterAdapterMessage.Size(m)
@@ -1132,6 +1093,9 @@
 }
 
 func init() {
+	proto.RegisterEnum("voltha.MessageType", MessageType_name, MessageType_value)
+	proto.RegisterEnum("voltha.ErrorCodeCodes", ErrorCodeCodes_name, ErrorCodeCodes_value)
+	proto.RegisterEnum("voltha.InterAdapterMessageType_Types", InterAdapterMessageType_Types_name, InterAdapterMessageType_Types_value)
 	proto.RegisterType((*StrType)(nil), "voltha.StrType")
 	proto.RegisterType((*IntType)(nil), "voltha.IntType")
 	proto.RegisterType((*BoolType)(nil), "voltha.BoolType")
@@ -1151,16 +1115,13 @@
 	proto.RegisterType((*InterAdapterOmciMessage)(nil), "voltha.InterAdapterOmciMessage")
 	proto.RegisterType((*InterAdapterResponseBody)(nil), "voltha.InterAdapterResponseBody")
 	proto.RegisterType((*InterAdapterMessage)(nil), "voltha.InterAdapterMessage")
-	proto.RegisterEnum("voltha.MessageType", MessageType_name, MessageType_value)
-	proto.RegisterEnum("voltha.ErrorCodeCodes", ErrorCodeCodes_name, ErrorCodeCodes_value)
-	proto.RegisterEnum("voltha.InterAdapterMessageType_Types", InterAdapterMessageType_Types_name, InterAdapterMessageType_Types_value)
 }
 
 func init() {
-	proto.RegisterFile("voltha_protos/inter_container.proto", fileDescriptor_inter_container_07f83a25f58b3d1d)
+	proto.RegisterFile("voltha_protos/inter_container.proto", fileDescriptor_941f0031a549667f)
 }
 
-var fileDescriptor_inter_container_07f83a25f58b3d1d = []byte{
+var fileDescriptor_941f0031a549667f = []byte{
 	// 1061 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdb, 0x6e, 0xe3, 0x44,
 	0x18, 0xde, 0x9c, 0x93, 0x3f, 0xdd, 0x34, 0x9d, 0x6e, 0xbb, 0xe9, 0x01, 0xb5, 0x32, 0x7b, 0x28,
diff --git a/go/omci/omci_alarm_db.pb.go b/go/omci/omci_alarm_db.pb.go
index b7144d9..82776b6 100644
--- a/go/omci/omci_alarm_db.pb.go
+++ b/go/omci/omci_alarm_db.pb.go
@@ -1,12 +1,14 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/omci_alarm_db.proto
 
-package omci // import "github.com/opencord/voltha-protos/go/omci"
+package omci
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import _ "github.com/opencord/voltha-protos/go/common"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "github.com/opencord/voltha-protos/go/common"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type AlarmOpenOmciEventType_OpenOmciEventType int32
 
@@ -28,6 +30,7 @@
 var AlarmOpenOmciEventType_OpenOmciEventType_name = map[int32]string{
 	0: "state_change",
 }
+
 var AlarmOpenOmciEventType_OpenOmciEventType_value = map[string]int32{
 	"state_change": 0,
 }
@@ -35,8 +38,9 @@
 func (x AlarmOpenOmciEventType_OpenOmciEventType) String() string {
 	return proto.EnumName(AlarmOpenOmciEventType_OpenOmciEventType_name, int32(x))
 }
+
 func (AlarmOpenOmciEventType_OpenOmciEventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_omci_alarm_db_26c635f8b97d9376, []int{6, 0}
+	return fileDescriptor_8d41f1e38aadb08d, []int{6, 0}
 }
 
 type AlarmAttributeData struct {
@@ -51,16 +55,17 @@
 func (m *AlarmAttributeData) String() string { return proto.CompactTextString(m) }
 func (*AlarmAttributeData) ProtoMessage()    {}
 func (*AlarmAttributeData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_alarm_db_26c635f8b97d9376, []int{0}
+	return fileDescriptor_8d41f1e38aadb08d, []int{0}
 }
+
 func (m *AlarmAttributeData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmAttributeData.Unmarshal(m, b)
 }
 func (m *AlarmAttributeData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmAttributeData.Marshal(b, m, deterministic)
 }
-func (dst *AlarmAttributeData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmAttributeData.Merge(dst, src)
+func (m *AlarmAttributeData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmAttributeData.Merge(m, src)
 }
 func (m *AlarmAttributeData) XXX_Size() int {
 	return xxx_messageInfo_AlarmAttributeData.Size(m)
@@ -99,16 +104,17 @@
 func (m *AlarmInstanceData) String() string { return proto.CompactTextString(m) }
 func (*AlarmInstanceData) ProtoMessage()    {}
 func (*AlarmInstanceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_alarm_db_26c635f8b97d9376, []int{1}
+	return fileDescriptor_8d41f1e38aadb08d, []int{1}
 }
+
 func (m *AlarmInstanceData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmInstanceData.Unmarshal(m, b)
 }
 func (m *AlarmInstanceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmInstanceData.Marshal(b, m, deterministic)
 }
-func (dst *AlarmInstanceData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmInstanceData.Merge(dst, src)
+func (m *AlarmInstanceData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmInstanceData.Merge(m, src)
 }
 func (m *AlarmInstanceData) XXX_Size() int {
 	return xxx_messageInfo_AlarmInstanceData.Size(m)
@@ -159,16 +165,17 @@
 func (m *AlarmClassData) String() string { return proto.CompactTextString(m) }
 func (*AlarmClassData) ProtoMessage()    {}
 func (*AlarmClassData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_alarm_db_26c635f8b97d9376, []int{2}
+	return fileDescriptor_8d41f1e38aadb08d, []int{2}
 }
+
 func (m *AlarmClassData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmClassData.Unmarshal(m, b)
 }
 func (m *AlarmClassData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmClassData.Marshal(b, m, deterministic)
 }
-func (dst *AlarmClassData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmClassData.Merge(dst, src)
+func (m *AlarmClassData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmClassData.Merge(m, src)
 }
 func (m *AlarmClassData) XXX_Size() int {
 	return xxx_messageInfo_AlarmClassData.Size(m)
@@ -205,16 +212,17 @@
 func (m *AlarmManagedEntity) String() string { return proto.CompactTextString(m) }
 func (*AlarmManagedEntity) ProtoMessage()    {}
 func (*AlarmManagedEntity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_alarm_db_26c635f8b97d9376, []int{3}
+	return fileDescriptor_8d41f1e38aadb08d, []int{3}
 }
+
 func (m *AlarmManagedEntity) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmManagedEntity.Unmarshal(m, b)
 }
 func (m *AlarmManagedEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmManagedEntity.Marshal(b, m, deterministic)
 }
-func (dst *AlarmManagedEntity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmManagedEntity.Merge(dst, src)
+func (m *AlarmManagedEntity) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmManagedEntity.Merge(m, src)
 }
 func (m *AlarmManagedEntity) XXX_Size() int {
 	return xxx_messageInfo_AlarmManagedEntity.Size(m)
@@ -250,16 +258,17 @@
 func (m *AlarmMessageType) String() string { return proto.CompactTextString(m) }
 func (*AlarmMessageType) ProtoMessage()    {}
 func (*AlarmMessageType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_alarm_db_26c635f8b97d9376, []int{4}
+	return fileDescriptor_8d41f1e38aadb08d, []int{4}
 }
+
 func (m *AlarmMessageType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmMessageType.Unmarshal(m, b)
 }
 func (m *AlarmMessageType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmMessageType.Marshal(b, m, deterministic)
 }
-func (dst *AlarmMessageType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmMessageType.Merge(dst, src)
+func (m *AlarmMessageType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmMessageType.Merge(m, src)
 }
 func (m *AlarmMessageType) XXX_Size() int {
 	return xxx_messageInfo_AlarmMessageType.Size(m)
@@ -295,16 +304,17 @@
 func (m *AlarmDeviceData) String() string { return proto.CompactTextString(m) }
 func (*AlarmDeviceData) ProtoMessage()    {}
 func (*AlarmDeviceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_alarm_db_26c635f8b97d9376, []int{5}
+	return fileDescriptor_8d41f1e38aadb08d, []int{5}
 }
+
 func (m *AlarmDeviceData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmDeviceData.Unmarshal(m, b)
 }
 func (m *AlarmDeviceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmDeviceData.Marshal(b, m, deterministic)
 }
-func (dst *AlarmDeviceData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmDeviceData.Merge(dst, src)
+func (m *AlarmDeviceData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmDeviceData.Merge(m, src)
 }
 func (m *AlarmDeviceData) XXX_Size() int {
 	return xxx_messageInfo_AlarmDeviceData.Size(m)
@@ -381,16 +391,17 @@
 func (m *AlarmOpenOmciEventType) String() string { return proto.CompactTextString(m) }
 func (*AlarmOpenOmciEventType) ProtoMessage()    {}
 func (*AlarmOpenOmciEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_alarm_db_26c635f8b97d9376, []int{6}
+	return fileDescriptor_8d41f1e38aadb08d, []int{6}
 }
+
 func (m *AlarmOpenOmciEventType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmOpenOmciEventType.Unmarshal(m, b)
 }
 func (m *AlarmOpenOmciEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmOpenOmciEventType.Marshal(b, m, deterministic)
 }
-func (dst *AlarmOpenOmciEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmOpenOmciEventType.Merge(dst, src)
+func (m *AlarmOpenOmciEventType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmOpenOmciEventType.Merge(m, src)
 }
 func (m *AlarmOpenOmciEventType) XXX_Size() int {
 	return xxx_messageInfo_AlarmOpenOmciEventType.Size(m)
@@ -413,16 +424,17 @@
 func (m *AlarmOpenOmciEvent) String() string { return proto.CompactTextString(m) }
 func (*AlarmOpenOmciEvent) ProtoMessage()    {}
 func (*AlarmOpenOmciEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_alarm_db_26c635f8b97d9376, []int{7}
+	return fileDescriptor_8d41f1e38aadb08d, []int{7}
 }
+
 func (m *AlarmOpenOmciEvent) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmOpenOmciEvent.Unmarshal(m, b)
 }
 func (m *AlarmOpenOmciEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmOpenOmciEvent.Marshal(b, m, deterministic)
 }
-func (dst *AlarmOpenOmciEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmOpenOmciEvent.Merge(dst, src)
+func (m *AlarmOpenOmciEvent) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmOpenOmciEvent.Merge(m, src)
 }
 func (m *AlarmOpenOmciEvent) XXX_Size() int {
 	return xxx_messageInfo_AlarmOpenOmciEvent.Size(m)
@@ -448,6 +460,7 @@
 }
 
 func init() {
+	proto.RegisterEnum("alarm.AlarmOpenOmciEventType_OpenOmciEventType", AlarmOpenOmciEventType_OpenOmciEventType_name, AlarmOpenOmciEventType_OpenOmciEventType_value)
 	proto.RegisterType((*AlarmAttributeData)(nil), "alarm.AlarmAttributeData")
 	proto.RegisterType((*AlarmInstanceData)(nil), "alarm.AlarmInstanceData")
 	proto.RegisterType((*AlarmClassData)(nil), "alarm.AlarmClassData")
@@ -456,14 +469,11 @@
 	proto.RegisterType((*AlarmDeviceData)(nil), "alarm.AlarmDeviceData")
 	proto.RegisterType((*AlarmOpenOmciEventType)(nil), "alarm.AlarmOpenOmciEventType")
 	proto.RegisterType((*AlarmOpenOmciEvent)(nil), "alarm.AlarmOpenOmciEvent")
-	proto.RegisterEnum("alarm.AlarmOpenOmciEventType_OpenOmciEventType", AlarmOpenOmciEventType_OpenOmciEventType_name, AlarmOpenOmciEventType_OpenOmciEventType_value)
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/omci_alarm_db.proto", fileDescriptor_omci_alarm_db_26c635f8b97d9376)
-}
+func init() { proto.RegisterFile("voltha_protos/omci_alarm_db.proto", fileDescriptor_8d41f1e38aadb08d) }
 
-var fileDescriptor_omci_alarm_db_26c635f8b97d9376 = []byte{
+var fileDescriptor_8d41f1e38aadb08d = []byte{
 	// 595 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcf, 0x6a, 0xdb, 0x4e,
 	0x10, 0xfe, 0x39, 0xb1, 0x13, 0x67, 0x6c, 0x27, 0xce, 0xfe, 0xfa, 0x67, 0x13, 0x08, 0xa4, 0xa2,
diff --git a/go/omci/omci_mib_db.pb.go b/go/omci/omci_mib_db.pb.go
index 3423099..f173e7f 100644
--- a/go/omci/omci_mib_db.pb.go
+++ b/go/omci/omci_mib_db.pb.go
@@ -1,12 +1,14 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/omci_mib_db.proto
 
-package omci // import "github.com/opencord/voltha-protos/go/omci"
+package omci
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import _ "github.com/opencord/voltha-protos/go/common"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "github.com/opencord/voltha-protos/go/common"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type OpenOmciEventType_OpenOmciEventType int32
 
@@ -28,6 +30,7 @@
 var OpenOmciEventType_OpenOmciEventType_name = map[int32]string{
 	0: "state_change",
 }
+
 var OpenOmciEventType_OpenOmciEventType_value = map[string]int32{
 	"state_change": 0,
 }
@@ -35,8 +38,9 @@
 func (x OpenOmciEventType_OpenOmciEventType) String() string {
 	return proto.EnumName(OpenOmciEventType_OpenOmciEventType_name, int32(x))
 }
+
 func (OpenOmciEventType_OpenOmciEventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_omci_mib_db_2d13ee397f003988, []int{6, 0}
+	return fileDescriptor_4fa402a2df36dcc1, []int{6, 0}
 }
 
 type MibAttributeData struct {
@@ -51,16 +55,17 @@
 func (m *MibAttributeData) String() string { return proto.CompactTextString(m) }
 func (*MibAttributeData) ProtoMessage()    {}
 func (*MibAttributeData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_mib_db_2d13ee397f003988, []int{0}
+	return fileDescriptor_4fa402a2df36dcc1, []int{0}
 }
+
 func (m *MibAttributeData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MibAttributeData.Unmarshal(m, b)
 }
 func (m *MibAttributeData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MibAttributeData.Marshal(b, m, deterministic)
 }
-func (dst *MibAttributeData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MibAttributeData.Merge(dst, src)
+func (m *MibAttributeData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MibAttributeData.Merge(m, src)
 }
 func (m *MibAttributeData) XXX_Size() int {
 	return xxx_messageInfo_MibAttributeData.Size(m)
@@ -99,16 +104,17 @@
 func (m *MibInstanceData) String() string { return proto.CompactTextString(m) }
 func (*MibInstanceData) ProtoMessage()    {}
 func (*MibInstanceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_mib_db_2d13ee397f003988, []int{1}
+	return fileDescriptor_4fa402a2df36dcc1, []int{1}
 }
+
 func (m *MibInstanceData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MibInstanceData.Unmarshal(m, b)
 }
 func (m *MibInstanceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MibInstanceData.Marshal(b, m, deterministic)
 }
-func (dst *MibInstanceData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MibInstanceData.Merge(dst, src)
+func (m *MibInstanceData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MibInstanceData.Merge(m, src)
 }
 func (m *MibInstanceData) XXX_Size() int {
 	return xxx_messageInfo_MibInstanceData.Size(m)
@@ -159,16 +165,17 @@
 func (m *MibClassData) String() string { return proto.CompactTextString(m) }
 func (*MibClassData) ProtoMessage()    {}
 func (*MibClassData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_mib_db_2d13ee397f003988, []int{2}
+	return fileDescriptor_4fa402a2df36dcc1, []int{2}
 }
+
 func (m *MibClassData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MibClassData.Unmarshal(m, b)
 }
 func (m *MibClassData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MibClassData.Marshal(b, m, deterministic)
 }
-func (dst *MibClassData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MibClassData.Merge(dst, src)
+func (m *MibClassData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MibClassData.Merge(m, src)
 }
 func (m *MibClassData) XXX_Size() int {
 	return xxx_messageInfo_MibClassData.Size(m)
@@ -205,16 +212,17 @@
 func (m *ManagedEntity) String() string { return proto.CompactTextString(m) }
 func (*ManagedEntity) ProtoMessage()    {}
 func (*ManagedEntity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_mib_db_2d13ee397f003988, []int{3}
+	return fileDescriptor_4fa402a2df36dcc1, []int{3}
 }
+
 func (m *ManagedEntity) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ManagedEntity.Unmarshal(m, b)
 }
 func (m *ManagedEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ManagedEntity.Marshal(b, m, deterministic)
 }
-func (dst *ManagedEntity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ManagedEntity.Merge(dst, src)
+func (m *ManagedEntity) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ManagedEntity.Merge(m, src)
 }
 func (m *ManagedEntity) XXX_Size() int {
 	return xxx_messageInfo_ManagedEntity.Size(m)
@@ -250,16 +258,17 @@
 func (m *MessageType) String() string { return proto.CompactTextString(m) }
 func (*MessageType) ProtoMessage()    {}
 func (*MessageType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_mib_db_2d13ee397f003988, []int{4}
+	return fileDescriptor_4fa402a2df36dcc1, []int{4}
 }
+
 func (m *MessageType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MessageType.Unmarshal(m, b)
 }
 func (m *MessageType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MessageType.Marshal(b, m, deterministic)
 }
-func (dst *MessageType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageType.Merge(dst, src)
+func (m *MessageType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageType.Merge(m, src)
 }
 func (m *MessageType) XXX_Size() int {
 	return xxx_messageInfo_MessageType.Size(m)
@@ -295,16 +304,17 @@
 func (m *MibDeviceData) String() string { return proto.CompactTextString(m) }
 func (*MibDeviceData) ProtoMessage()    {}
 func (*MibDeviceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_mib_db_2d13ee397f003988, []int{5}
+	return fileDescriptor_4fa402a2df36dcc1, []int{5}
 }
+
 func (m *MibDeviceData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MibDeviceData.Unmarshal(m, b)
 }
 func (m *MibDeviceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MibDeviceData.Marshal(b, m, deterministic)
 }
-func (dst *MibDeviceData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MibDeviceData.Merge(dst, src)
+func (m *MibDeviceData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MibDeviceData.Merge(m, src)
 }
 func (m *MibDeviceData) XXX_Size() int {
 	return xxx_messageInfo_MibDeviceData.Size(m)
@@ -381,16 +391,17 @@
 func (m *OpenOmciEventType) String() string { return proto.CompactTextString(m) }
 func (*OpenOmciEventType) ProtoMessage()    {}
 func (*OpenOmciEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_mib_db_2d13ee397f003988, []int{6}
+	return fileDescriptor_4fa402a2df36dcc1, []int{6}
 }
+
 func (m *OpenOmciEventType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OpenOmciEventType.Unmarshal(m, b)
 }
 func (m *OpenOmciEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OpenOmciEventType.Marshal(b, m, deterministic)
 }
-func (dst *OpenOmciEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OpenOmciEventType.Merge(dst, src)
+func (m *OpenOmciEventType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OpenOmciEventType.Merge(m, src)
 }
 func (m *OpenOmciEventType) XXX_Size() int {
 	return xxx_messageInfo_OpenOmciEventType.Size(m)
@@ -413,16 +424,17 @@
 func (m *OpenOmciEvent) String() string { return proto.CompactTextString(m) }
 func (*OpenOmciEvent) ProtoMessage()    {}
 func (*OpenOmciEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_omci_mib_db_2d13ee397f003988, []int{7}
+	return fileDescriptor_4fa402a2df36dcc1, []int{7}
 }
+
 func (m *OpenOmciEvent) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OpenOmciEvent.Unmarshal(m, b)
 }
 func (m *OpenOmciEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OpenOmciEvent.Marshal(b, m, deterministic)
 }
-func (dst *OpenOmciEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OpenOmciEvent.Merge(dst, src)
+func (m *OpenOmciEvent) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OpenOmciEvent.Merge(m, src)
 }
 func (m *OpenOmciEvent) XXX_Size() int {
 	return xxx_messageInfo_OpenOmciEvent.Size(m)
@@ -448,6 +460,7 @@
 }
 
 func init() {
+	proto.RegisterEnum("omci.OpenOmciEventType_OpenOmciEventType", OpenOmciEventType_OpenOmciEventType_name, OpenOmciEventType_OpenOmciEventType_value)
 	proto.RegisterType((*MibAttributeData)(nil), "omci.MibAttributeData")
 	proto.RegisterType((*MibInstanceData)(nil), "omci.MibInstanceData")
 	proto.RegisterType((*MibClassData)(nil), "omci.MibClassData")
@@ -456,14 +469,11 @@
 	proto.RegisterType((*MibDeviceData)(nil), "omci.MibDeviceData")
 	proto.RegisterType((*OpenOmciEventType)(nil), "omci.OpenOmciEventType")
 	proto.RegisterType((*OpenOmciEvent)(nil), "omci.OpenOmciEvent")
-	proto.RegisterEnum("omci.OpenOmciEventType_OpenOmciEventType", OpenOmciEventType_OpenOmciEventType_name, OpenOmciEventType_OpenOmciEventType_value)
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/omci_mib_db.proto", fileDescriptor_omci_mib_db_2d13ee397f003988)
-}
+func init() { proto.RegisterFile("voltha_protos/omci_mib_db.proto", fileDescriptor_4fa402a2df36dcc1) }
 
-var fileDescriptor_omci_mib_db_2d13ee397f003988 = []byte{
+var fileDescriptor_4fa402a2df36dcc1 = []byte{
 	// 582 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xdb, 0x6a, 0xdb, 0x40,
 	0x10, 0xad, 0x1d, 0x25, 0x71, 0x46, 0x56, 0xe2, 0x6c, 0x2f, 0x6c, 0x03, 0xa1, 0x41, 0xb4, 0x25,
diff --git a/go/openflow_13/openflow_13.pb.go b/go/openflow_13/openflow_13.pb.go
index 91fab9a..4a6bef2 100644
--- a/go/openflow_13/openflow_13.pb.go
+++ b/go/openflow_13/openflow_13.pb.go
@@ -1,13 +1,15 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/openflow_13.proto
 
-package openflow_13 // import "github.com/opencord/voltha-protos/go/openflow_13"
+package openflow_13
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import common "github.com/opencord/voltha-protos/go/common"
-import _ "google.golang.org/genproto/googleapis/api/annotations"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	common "github.com/opencord/voltha-protos/go/common"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -18,7 +20,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 // InlineNode from public import voltha_protos/yang_options.proto
 type InlineNode = common.InlineNode
@@ -35,16 +37,12 @@
 const MessageParserOption_MOVE_TO_PARENT_LEVEL = MessageParserOption(common.MessageParserOption_MOVE_TO_PARENT_LEVEL)
 const MessageParserOption_CREATE_BOTH_GROUPING_AND_CONTAINER = MessageParserOption(common.MessageParserOption_CREATE_BOTH_GROUPING_AND_CONTAINER)
 
-// yang_child_rule from public import voltha_protos/yang_options.proto
 var E_YangChildRule = common.E_YangChildRule
 
-// yang_message_rule from public import voltha_protos/yang_options.proto
 var E_YangMessageRule = common.E_YangMessageRule
 
-// yang_inline_node from public import voltha_protos/yang_options.proto
 var E_YangInlineNode = common.E_YangInlineNode
 
-// yang_xml_tag from public import voltha_protos/yang_options.proto
 var E_YangXmlTag = common.E_YangXmlTag
 
 // Port numbering. Ports are numbered starting from 1.
@@ -77,6 +75,7 @@
 	2147483646: "OFPP_LOCAL",
 	2147483647: "OFPP_ANY",
 }
+
 var OfpPortNo_value = map[string]int32{
 	"OFPP_INVALID":    0,
 	"OFPP_MAX":        2147483392,
@@ -93,8 +92,9 @@
 func (x OfpPortNo) String() string {
 	return proto.EnumName(OfpPortNo_name, int32(x))
 }
+
 func (OfpPortNo) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{0}
+	return fileDescriptor_08e3a4e375aeddc7, []int{0}
 }
 
 type OfpType int32
@@ -174,6 +174,7 @@
 	28: "OFPT_SET_ASYNC",
 	29: "OFPT_METER_MOD",
 }
+
 var OfpType_value = map[string]int32{
 	"OFPT_HELLO":                    0,
 	"OFPT_ERROR":                    1,
@@ -210,8 +211,9 @@
 func (x OfpType) String() string {
 	return proto.EnumName(OfpType_name, int32(x))
 }
+
 func (OfpType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{1}
+	return fileDescriptor_08e3a4e375aeddc7, []int{1}
 }
 
 // Hello elements types.
@@ -226,6 +228,7 @@
 	0: "OFPHET_INVALID",
 	1: "OFPHET_VERSIONBITMAP",
 }
+
 var OfpHelloElemType_value = map[string]int32{
 	"OFPHET_INVALID":       0,
 	"OFPHET_VERSIONBITMAP": 1,
@@ -234,8 +237,9 @@
 func (x OfpHelloElemType) String() string {
 	return proto.EnumName(OfpHelloElemType_name, int32(x))
 }
+
 func (OfpHelloElemType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{2}
+	return fileDescriptor_08e3a4e375aeddc7, []int{2}
 }
 
 type OfpConfigFlags int32
@@ -254,6 +258,7 @@
 	2: "OFPC_FRAG_REASM",
 	3: "OFPC_FRAG_MASK",
 }
+
 var OfpConfigFlags_value = map[string]int32{
 	"OFPC_FRAG_NORMAL": 0,
 	"OFPC_FRAG_DROP":   1,
@@ -264,8 +269,9 @@
 func (x OfpConfigFlags) String() string {
 	return proto.EnumName(OfpConfigFlags_name, int32(x))
 }
+
 func (OfpConfigFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{3}
+	return fileDescriptor_08e3a4e375aeddc7, []int{3}
 }
 
 // Flags to configure the table. Reserved for future use.
@@ -280,6 +286,7 @@
 	0: "OFPTC_INVALID",
 	3: "OFPTC_DEPRECATED_MASK",
 }
+
 var OfpTableConfig_value = map[string]int32{
 	"OFPTC_INVALID":         0,
 	"OFPTC_DEPRECATED_MASK": 3,
@@ -288,8 +295,9 @@
 func (x OfpTableConfig) String() string {
 	return proto.EnumName(OfpTableConfig_name, int32(x))
 }
+
 func (OfpTableConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{4}
+	return fileDescriptor_08e3a4e375aeddc7, []int{4}
 }
 
 // Table numbering. Tables can use any number up to OFPT_MAX.
@@ -308,6 +316,7 @@
 	254: "OFPTT_MAX",
 	255: "OFPTT_ALL",
 }
+
 var OfpTable_value = map[string]int32{
 	"OFPTT_INVALID": 0,
 	"OFPTT_MAX":     254,
@@ -317,8 +326,9 @@
 func (x OfpTable) String() string {
 	return proto.EnumName(OfpTable_name, int32(x))
 }
+
 func (OfpTable) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{5}
+	return fileDescriptor_08e3a4e375aeddc7, []int{5}
 }
 
 // Capabilities supported by the datapath.
@@ -345,6 +355,7 @@
 	64:  "OFPC_QUEUE_STATS",
 	256: "OFPC_PORT_BLOCKED",
 }
+
 var OfpCapabilities_value = map[string]int32{
 	"OFPC_INVALID":      0,
 	"OFPC_FLOW_STATS":   1,
@@ -359,8 +370,9 @@
 func (x OfpCapabilities) String() string {
 	return proto.EnumName(OfpCapabilities_name, int32(x))
 }
+
 func (OfpCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{6}
+	return fileDescriptor_08e3a4e375aeddc7, []int{6}
 }
 
 // Flags to indicate behavior of the physical port.  These flags are
@@ -383,6 +395,7 @@
 	32: "OFPPC_NO_FWD",
 	64: "OFPPC_NO_PACKET_IN",
 }
+
 var OfpPortConfig_value = map[string]int32{
 	"OFPPC_INVALID":      0,
 	"OFPPC_PORT_DOWN":    1,
@@ -394,8 +407,9 @@
 func (x OfpPortConfig) String() string {
 	return proto.EnumName(OfpPortConfig_name, int32(x))
 }
+
 func (OfpPortConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{7}
+	return fileDescriptor_08e3a4e375aeddc7, []int{7}
 }
 
 // Current state of the physical port.  These are not configurable from
@@ -415,6 +429,7 @@
 	2: "OFPPS_BLOCKED",
 	4: "OFPPS_LIVE",
 }
+
 var OfpPortState_value = map[string]int32{
 	"OFPPS_INVALID":   0,
 	"OFPPS_LINK_DOWN": 1,
@@ -425,8 +440,9 @@
 func (x OfpPortState) String() string {
 	return proto.EnumName(OfpPortState_name, int32(x))
 }
+
 func (OfpPortState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{8}
+	return fileDescriptor_08e3a4e375aeddc7, []int{8}
 }
 
 // Features of ports available in a datapath.
@@ -471,6 +487,7 @@
 	16384: "OFPPF_PAUSE",
 	32768: "OFPPF_PAUSE_ASYM",
 }
+
 var OfpPortFeatures_value = map[string]int32{
 	"OFPPF_INVALID":    0,
 	"OFPPF_10MB_HD":    1,
@@ -494,8 +511,9 @@
 func (x OfpPortFeatures) String() string {
 	return proto.EnumName(OfpPortFeatures_name, int32(x))
 }
+
 func (OfpPortFeatures) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{9}
+	return fileDescriptor_08e3a4e375aeddc7, []int{9}
 }
 
 // What changed about the physical port
@@ -512,6 +530,7 @@
 	1: "OFPPR_DELETE",
 	2: "OFPPR_MODIFY",
 }
+
 var OfpPortReason_value = map[string]int32{
 	"OFPPR_ADD":    0,
 	"OFPPR_DELETE": 1,
@@ -521,8 +540,9 @@
 func (x OfpPortReason) String() string {
 	return proto.EnumName(OfpPortReason_name, int32(x))
 }
+
 func (OfpPortReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{10}
+	return fileDescriptor_08e3a4e375aeddc7, []int{10}
 }
 
 // The match type indicates the match structure (set of fields that compose the
@@ -542,6 +562,7 @@
 	0: "OFPMT_STANDARD",
 	1: "OFPMT_OXM",
 }
+
 var OfpMatchType_value = map[string]int32{
 	"OFPMT_STANDARD": 0,
 	"OFPMT_OXM":      1,
@@ -550,8 +571,9 @@
 func (x OfpMatchType) String() string {
 	return proto.EnumName(OfpMatchType_name, int32(x))
 }
+
 func (OfpMatchType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{11}
+	return fileDescriptor_08e3a4e375aeddc7, []int{11}
 }
 
 // OXM Class IDs.
@@ -573,6 +595,7 @@
 	32768: "OFPXMC_OPENFLOW_BASIC",
 	65535: "OFPXMC_EXPERIMENTER",
 }
+
 var OfpOxmClass_value = map[string]int32{
 	"OFPXMC_NXM_0":          0,
 	"OFPXMC_NXM_1":          1,
@@ -583,8 +606,9 @@
 func (x OfpOxmClass) String() string {
 	return proto.EnumName(OfpOxmClass_name, int32(x))
 }
+
 func (OfpOxmClass) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{12}
+	return fileDescriptor_08e3a4e375aeddc7, []int{12}
 }
 
 // OXM Flow field types for OpenFlow basic class.
@@ -675,6 +699,7 @@
 	38: "OFPXMT_OFB_TUNNEL_ID",
 	39: "OFPXMT_OFB_IPV6_EXTHDR",
 }
+
 var OxmOfbFieldTypes_value = map[string]int32{
 	"OFPXMT_OFB_IN_PORT":        0,
 	"OFPXMT_OFB_IN_PHY_PORT":    1,
@@ -721,8 +746,9 @@
 func (x OxmOfbFieldTypes) String() string {
 	return proto.EnumName(OxmOfbFieldTypes_name, int32(x))
 }
+
 func (OxmOfbFieldTypes) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{13}
+	return fileDescriptor_08e3a4e375aeddc7, []int{13}
 }
 
 // The VLAN id is 12-bits, so we can use the entire 16 bits to indicate
@@ -738,6 +764,7 @@
 	0:    "OFPVID_NONE",
 	4096: "OFPVID_PRESENT",
 }
+
 var OfpVlanId_value = map[string]int32{
 	"OFPVID_NONE":    0,
 	"OFPVID_PRESENT": 4096,
@@ -746,8 +773,9 @@
 func (x OfpVlanId) String() string {
 	return proto.EnumName(OfpVlanId_name, int32(x))
 }
+
 func (OfpVlanId) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{14}
+	return fileDescriptor_08e3a4e375aeddc7, []int{14}
 }
 
 // Bit definitions for IPv6 Extension Header pseudo-field.
@@ -778,6 +806,7 @@
 	128: "OFPIEH_UNREP",
 	256: "OFPIEH_UNSEQ",
 }
+
 var OfpIpv6ExthdrFlags_value = map[string]int32{
 	"OFPIEH_INVALID": 0,
 	"OFPIEH_NONEXT":  1,
@@ -794,8 +823,9 @@
 func (x OfpIpv6ExthdrFlags) String() string {
 	return proto.EnumName(OfpIpv6ExthdrFlags_name, int32(x))
 }
+
 func (OfpIpv6ExthdrFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{15}
+	return fileDescriptor_08e3a4e375aeddc7, []int{15}
 }
 
 type OfpActionType int32
@@ -839,6 +869,7 @@
 	27:    "OFPAT_POP_PBB",
 	65535: "OFPAT_EXPERIMENTER",
 }
+
 var OfpActionType_value = map[string]int32{
 	"OFPAT_OUTPUT":       0,
 	"OFPAT_COPY_TTL_OUT": 11,
@@ -862,8 +893,9 @@
 func (x OfpActionType) String() string {
 	return proto.EnumName(OfpActionType_name, int32(x))
 }
+
 func (OfpActionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{16}
+	return fileDescriptor_08e3a4e375aeddc7, []int{16}
 }
 
 type OfpControllerMaxLen int32
@@ -879,6 +911,7 @@
 	65509: "OFPCML_MAX",
 	65535: "OFPCML_NO_BUFFER",
 }
+
 var OfpControllerMaxLen_value = map[string]int32{
 	"OFPCML_INVALID":   0,
 	"OFPCML_MAX":       65509,
@@ -888,8 +921,9 @@
 func (x OfpControllerMaxLen) String() string {
 	return proto.EnumName(OfpControllerMaxLen_name, int32(x))
 }
+
 func (OfpControllerMaxLen) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{17}
+	return fileDescriptor_08e3a4e375aeddc7, []int{17}
 }
 
 type OfpInstructionType int32
@@ -915,6 +949,7 @@
 	6:     "OFPIT_METER",
 	65535: "OFPIT_EXPERIMENTER",
 }
+
 var OfpInstructionType_value = map[string]int32{
 	"OFPIT_INVALID":        0,
 	"OFPIT_GOTO_TABLE":     1,
@@ -929,8 +964,9 @@
 func (x OfpInstructionType) String() string {
 	return proto.EnumName(OfpInstructionType_name, int32(x))
 }
+
 func (OfpInstructionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{18}
+	return fileDescriptor_08e3a4e375aeddc7, []int{18}
 }
 
 type OfpFlowModCommand int32
@@ -950,6 +986,7 @@
 	3: "OFPFC_DELETE",
 	4: "OFPFC_DELETE_STRICT",
 }
+
 var OfpFlowModCommand_value = map[string]int32{
 	"OFPFC_ADD":           0,
 	"OFPFC_MODIFY":        1,
@@ -961,8 +998,9 @@
 func (x OfpFlowModCommand) String() string {
 	return proto.EnumName(OfpFlowModCommand_name, int32(x))
 }
+
 func (OfpFlowModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{19}
+	return fileDescriptor_08e3a4e375aeddc7, []int{19}
 }
 
 type OfpFlowModFlags int32
@@ -984,6 +1022,7 @@
 	8:  "OFPFF_NO_PKT_COUNTS",
 	16: "OFPFF_NO_BYT_COUNTS",
 }
+
 var OfpFlowModFlags_value = map[string]int32{
 	"OFPFF_INVALID":       0,
 	"OFPFF_SEND_FLOW_REM": 1,
@@ -996,8 +1035,9 @@
 func (x OfpFlowModFlags) String() string {
 	return proto.EnumName(OfpFlowModFlags_name, int32(x))
 }
+
 func (OfpFlowModFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{20}
+	return fileDescriptor_08e3a4e375aeddc7, []int{20}
 }
 
 // Group numbering. Groups can use any number up to OFPG_MAX.
@@ -1018,6 +1058,7 @@
 	2147483644: "OFPG_ALL",
 	2147483647: "OFPG_ANY",
 }
+
 var OfpGroup_value = map[string]int32{
 	"OFPG_INVALID": 0,
 	"OFPG_MAX":     2147483392,
@@ -1028,8 +1069,9 @@
 func (x OfpGroup) String() string {
 	return proto.EnumName(OfpGroup_name, int32(x))
 }
+
 func (OfpGroup) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{21}
+	return fileDescriptor_08e3a4e375aeddc7, []int{21}
 }
 
 // Group commands
@@ -1046,6 +1088,7 @@
 	1: "OFPGC_MODIFY",
 	2: "OFPGC_DELETE",
 }
+
 var OfpGroupModCommand_value = map[string]int32{
 	"OFPGC_ADD":    0,
 	"OFPGC_MODIFY": 1,
@@ -1055,8 +1098,9 @@
 func (x OfpGroupModCommand) String() string {
 	return proto.EnumName(OfpGroupModCommand_name, int32(x))
 }
+
 func (OfpGroupModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{22}
+	return fileDescriptor_08e3a4e375aeddc7, []int{22}
 }
 
 // Group types.  Values in the range [128; 255] are reserved for experimental
@@ -1076,6 +1120,7 @@
 	2: "OFPGT_INDIRECT",
 	3: "OFPGT_FF",
 }
+
 var OfpGroupType_value = map[string]int32{
 	"OFPGT_ALL":      0,
 	"OFPGT_SELECT":   1,
@@ -1086,8 +1131,9 @@
 func (x OfpGroupType) String() string {
 	return proto.EnumName(OfpGroupType_name, int32(x))
 }
+
 func (OfpGroupType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{23}
+	return fileDescriptor_08e3a4e375aeddc7, []int{23}
 }
 
 // Why is this packet being sent to the controller?
@@ -1104,6 +1150,7 @@
 	1: "OFPR_ACTION",
 	2: "OFPR_INVALID_TTL",
 }
+
 var OfpPacketInReason_value = map[string]int32{
 	"OFPR_NO_MATCH":    0,
 	"OFPR_ACTION":      1,
@@ -1113,8 +1160,9 @@
 func (x OfpPacketInReason) String() string {
 	return proto.EnumName(OfpPacketInReason_name, int32(x))
 }
+
 func (OfpPacketInReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{24}
+	return fileDescriptor_08e3a4e375aeddc7, []int{24}
 }
 
 // Why was this flow removed?
@@ -1135,6 +1183,7 @@
 	3: "OFPRR_GROUP_DELETE",
 	4: "OFPRR_METER_DELETE",
 }
+
 var OfpFlowRemovedReason_value = map[string]int32{
 	"OFPRR_IDLE_TIMEOUT": 0,
 	"OFPRR_HARD_TIMEOUT": 1,
@@ -1146,8 +1195,9 @@
 func (x OfpFlowRemovedReason) String() string {
 	return proto.EnumName(OfpFlowRemovedReason_name, int32(x))
 }
+
 func (OfpFlowRemovedReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{25}
+	return fileDescriptor_08e3a4e375aeddc7, []int{25}
 }
 
 // Meter numbering. Flow meters can use any number up to OFPM_MAX.
@@ -1170,6 +1220,7 @@
 	2147483646: "OFPM_CONTROLLER",
 	2147483647: "OFPM_ALL",
 }
+
 var OfpMeter_value = map[string]int32{
 	"OFPM_ZERO":       0,
 	"OFPM_MAX":        2147418112,
@@ -1181,8 +1232,9 @@
 func (x OfpMeter) String() string {
 	return proto.EnumName(OfpMeter_name, int32(x))
 }
+
 func (OfpMeter) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{26}
+	return fileDescriptor_08e3a4e375aeddc7, []int{26}
 }
 
 // Meter band types
@@ -1201,6 +1253,7 @@
 	2:     "OFPMBT_DSCP_REMARK",
 	65535: "OFPMBT_EXPERIMENTER",
 }
+
 var OfpMeterBandType_value = map[string]int32{
 	"OFPMBT_INVALID":      0,
 	"OFPMBT_DROP":         1,
@@ -1211,8 +1264,9 @@
 func (x OfpMeterBandType) String() string {
 	return proto.EnumName(OfpMeterBandType_name, int32(x))
 }
+
 func (OfpMeterBandType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{27}
+	return fileDescriptor_08e3a4e375aeddc7, []int{27}
 }
 
 // Meter commands
@@ -1229,6 +1283,7 @@
 	1: "OFPMC_MODIFY",
 	2: "OFPMC_DELETE",
 }
+
 var OfpMeterModCommand_value = map[string]int32{
 	"OFPMC_ADD":    0,
 	"OFPMC_MODIFY": 1,
@@ -1238,8 +1293,9 @@
 func (x OfpMeterModCommand) String() string {
 	return proto.EnumName(OfpMeterModCommand_name, int32(x))
 }
+
 func (OfpMeterModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{28}
+	return fileDescriptor_08e3a4e375aeddc7, []int{28}
 }
 
 // Meter configuration flags
@@ -1260,6 +1316,7 @@
 	4: "OFPMF_BURST",
 	8: "OFPMF_STATS",
 }
+
 var OfpMeterFlags_value = map[string]int32{
 	"OFPMF_INVALID": 0,
 	"OFPMF_KBPS":    1,
@@ -1271,8 +1328,9 @@
 func (x OfpMeterFlags) String() string {
 	return proto.EnumName(OfpMeterFlags_name, int32(x))
 }
+
 func (OfpMeterFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{29}
+	return fileDescriptor_08e3a4e375aeddc7, []int{29}
 }
 
 // Values for 'type' in ofp_error_message.  These values are immutable: they
@@ -1315,6 +1373,7 @@
 	13:    "OFPET_TABLE_FEATURES_FAILED",
 	65535: "OFPET_EXPERIMENTER",
 }
+
 var OfpErrorType_value = map[string]int32{
 	"OFPET_HELLO_FAILED":          0,
 	"OFPET_BAD_REQUEST":           1,
@@ -1336,8 +1395,9 @@
 func (x OfpErrorType) String() string {
 	return proto.EnumName(OfpErrorType_name, int32(x))
 }
+
 func (OfpErrorType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{30}
+	return fileDescriptor_08e3a4e375aeddc7, []int{30}
 }
 
 // ofp_error_msg 'code' values for OFPET_HELLO_FAILED.  'data' contains an
@@ -1353,6 +1413,7 @@
 	0: "OFPHFC_INCOMPATIBLE",
 	1: "OFPHFC_EPERM",
 }
+
 var OfpHelloFailedCode_value = map[string]int32{
 	"OFPHFC_INCOMPATIBLE": 0,
 	"OFPHFC_EPERM":        1,
@@ -1361,8 +1422,9 @@
 func (x OfpHelloFailedCode) String() string {
 	return proto.EnumName(OfpHelloFailedCode_name, int32(x))
 }
+
 func (OfpHelloFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{31}
+	return fileDescriptor_08e3a4e375aeddc7, []int{31}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_REQUEST.  'data' contains at least
@@ -1402,6 +1464,7 @@
 	12: "OFPBRC_BAD_PACKET",
 	13: "OFPBRC_MULTIPART_BUFFER_OVERFLOW",
 }
+
 var OfpBadRequestCode_value = map[string]int32{
 	"OFPBRC_BAD_VERSION":               0,
 	"OFPBRC_BAD_TYPE":                  1,
@@ -1422,8 +1485,9 @@
 func (x OfpBadRequestCode) String() string {
 	return proto.EnumName(OfpBadRequestCode_name, int32(x))
 }
+
 func (OfpBadRequestCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{32}
+	return fileDescriptor_08e3a4e375aeddc7, []int{32}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_ACTION.  'data' contains at least
@@ -1467,6 +1531,7 @@
 	14: "OFPBAC_BAD_SET_LEN",
 	15: "OFPBAC_BAD_SET_ARGUMENT",
 }
+
 var OfpBadActionCode_value = map[string]int32{
 	"OFPBAC_BAD_TYPE":           0,
 	"OFPBAC_BAD_LEN":            1,
@@ -1489,8 +1554,9 @@
 func (x OfpBadActionCode) String() string {
 	return proto.EnumName(OfpBadActionCode_name, int32(x))
 }
+
 func (OfpBadActionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{33}
+	return fileDescriptor_08e3a4e375aeddc7, []int{33}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_INSTRUCTION.  'data' contains at
@@ -1520,6 +1586,7 @@
 	7: "OFPBIC_BAD_LEN",
 	8: "OFPBIC_EPERM",
 }
+
 var OfpBadInstructionCode_value = map[string]int32{
 	"OFPBIC_UNKNOWN_INST":        0,
 	"OFPBIC_UNSUP_INST":          1,
@@ -1535,8 +1602,9 @@
 func (x OfpBadInstructionCode) String() string {
 	return proto.EnumName(OfpBadInstructionCode_name, int32(x))
 }
+
 func (OfpBadInstructionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{34}
+	return fileDescriptor_08e3a4e375aeddc7, []int{34}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_MATCH.  'data' contains at least
@@ -1572,6 +1640,7 @@
 	10: "OFPBMC_DUP_FIELD",
 	11: "OFPBMC_EPERM",
 }
+
 var OfpBadMatchCode_value = map[string]int32{
 	"OFPBMC_BAD_TYPE":         0,
 	"OFPBMC_BAD_LEN":          1,
@@ -1590,8 +1659,9 @@
 func (x OfpBadMatchCode) String() string {
 	return proto.EnumName(OfpBadMatchCode_name, int32(x))
 }
+
 func (OfpBadMatchCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{35}
+	return fileDescriptor_08e3a4e375aeddc7, []int{35}
 }
 
 // ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED.  'data' contains
@@ -1619,6 +1689,7 @@
 	6: "OFPFMFC_BAD_COMMAND",
 	7: "OFPFMFC_BAD_FLAGS",
 }
+
 var OfpFlowModFailedCode_value = map[string]int32{
 	"OFPFMFC_UNKNOWN":      0,
 	"OFPFMFC_TABLE_FULL":   1,
@@ -1633,8 +1704,9 @@
 func (x OfpFlowModFailedCode) String() string {
 	return proto.EnumName(OfpFlowModFailedCode_name, int32(x))
 }
+
 func (OfpFlowModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{36}
+	return fileDescriptor_08e3a4e375aeddc7, []int{36}
 }
 
 // ofp_error_msg 'code' values for OFPET_GROUP_MOD_FAILED.  'data' contains
@@ -1676,6 +1748,7 @@
 	13: "OFPGMFC_BAD_WATCH",
 	14: "OFPGMFC_EPERM",
 }
+
 var OfpGroupModFailedCode_value = map[string]int32{
 	"OFPGMFC_GROUP_EXISTS":         0,
 	"OFPGMFC_INVALID_GROUP":        1,
@@ -1697,8 +1770,9 @@
 func (x OfpGroupModFailedCode) String() string {
 	return proto.EnumName(OfpGroupModFailedCode_name, int32(x))
 }
+
 func (OfpGroupModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{37}
+	return fileDescriptor_08e3a4e375aeddc7, []int{37}
 }
 
 // ofp_error_msg 'code' values for OFPET_PORT_MOD_FAILED.  'data' contains
@@ -1720,6 +1794,7 @@
 	3: "OFPPMFC_BAD_ADVERTISE",
 	4: "OFPPMFC_EPERM",
 }
+
 var OfpPortModFailedCode_value = map[string]int32{
 	"OFPPMFC_BAD_PORT":      0,
 	"OFPPMFC_BAD_HW_ADDR":   1,
@@ -1731,8 +1806,9 @@
 func (x OfpPortModFailedCode) String() string {
 	return proto.EnumName(OfpPortModFailedCode_name, int32(x))
 }
+
 func (OfpPortModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{38}
+	return fileDescriptor_08e3a4e375aeddc7, []int{38}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_MOD_FAILED.  'data' contains
@@ -1750,6 +1826,7 @@
 	1: "OFPTMFC_BAD_CONFIG",
 	2: "OFPTMFC_EPERM",
 }
+
 var OfpTableModFailedCode_value = map[string]int32{
 	"OFPTMFC_BAD_TABLE":  0,
 	"OFPTMFC_BAD_CONFIG": 1,
@@ -1759,8 +1836,9 @@
 func (x OfpTableModFailedCode) String() string {
 	return proto.EnumName(OfpTableModFailedCode_name, int32(x))
 }
+
 func (OfpTableModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{39}
+	return fileDescriptor_08e3a4e375aeddc7, []int{39}
 }
 
 // ofp_error msg 'code' values for OFPET_QUEUE_OP_FAILED. 'data' contains
@@ -1778,6 +1856,7 @@
 	1: "OFPQOFC_BAD_QUEUE",
 	2: "OFPQOFC_EPERM",
 }
+
 var OfpQueueOpFailedCode_value = map[string]int32{
 	"OFPQOFC_BAD_PORT":  0,
 	"OFPQOFC_BAD_QUEUE": 1,
@@ -1787,8 +1866,9 @@
 func (x OfpQueueOpFailedCode) String() string {
 	return proto.EnumName(OfpQueueOpFailedCode_name, int32(x))
 }
+
 func (OfpQueueOpFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{40}
+	return fileDescriptor_08e3a4e375aeddc7, []int{40}
 }
 
 // ofp_error_msg 'code' values for OFPET_SWITCH_CONFIG_FAILED. 'data' contains
@@ -1806,6 +1886,7 @@
 	1: "OFPSCFC_BAD_LEN",
 	2: "OFPSCFC_EPERM",
 }
+
 var OfpSwitchConfigFailedCode_value = map[string]int32{
 	"OFPSCFC_BAD_FLAGS": 0,
 	"OFPSCFC_BAD_LEN":   1,
@@ -1815,8 +1896,9 @@
 func (x OfpSwitchConfigFailedCode) String() string {
 	return proto.EnumName(OfpSwitchConfigFailedCode_name, int32(x))
 }
+
 func (OfpSwitchConfigFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{41}
+	return fileDescriptor_08e3a4e375aeddc7, []int{41}
 }
 
 // ofp_error_msg 'code' values for OFPET_ROLE_REQUEST_FAILED. 'data' contains
@@ -1834,6 +1916,7 @@
 	1: "OFPRRFC_UNSUP",
 	2: "OFPRRFC_BAD_ROLE",
 }
+
 var OfpRoleRequestFailedCode_value = map[string]int32{
 	"OFPRRFC_STALE":    0,
 	"OFPRRFC_UNSUP":    1,
@@ -1843,8 +1926,9 @@
 func (x OfpRoleRequestFailedCode) String() string {
 	return proto.EnumName(OfpRoleRequestFailedCode_name, int32(x))
 }
+
 func (OfpRoleRequestFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{42}
+	return fileDescriptor_08e3a4e375aeddc7, []int{42}
 }
 
 // ofp_error_msg 'code' values for OFPET_METER_MOD_FAILED.  'data' contains
@@ -1880,6 +1964,7 @@
 	10: "OFPMMFC_OUT_OF_METERS",
 	11: "OFPMMFC_OUT_OF_BANDS",
 }
+
 var OfpMeterModFailedCode_value = map[string]int32{
 	"OFPMMFC_UNKNOWN":        0,
 	"OFPMMFC_METER_EXISTS":   1,
@@ -1898,8 +1983,9 @@
 func (x OfpMeterModFailedCode) String() string {
 	return proto.EnumName(OfpMeterModFailedCode_name, int32(x))
 }
+
 func (OfpMeterModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{43}
+	return fileDescriptor_08e3a4e375aeddc7, []int{43}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_FEATURES_FAILED. 'data' contains
@@ -1923,6 +2009,7 @@
 	4: "OFPTFFC_BAD_ARGUMENT",
 	5: "OFPTFFC_EPERM",
 }
+
 var OfpTableFeaturesFailedCode_value = map[string]int32{
 	"OFPTFFC_BAD_TABLE":    0,
 	"OFPTFFC_BAD_METADATA": 1,
@@ -1935,8 +2022,9 @@
 func (x OfpTableFeaturesFailedCode) String() string {
 	return proto.EnumName(OfpTableFeaturesFailedCode_name, int32(x))
 }
+
 func (OfpTableFeaturesFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{44}
+	return fileDescriptor_08e3a4e375aeddc7, []int{44}
 }
 
 type OfpMultipartType int32
@@ -2025,6 +2113,7 @@
 	13:    "OFPMP_PORT_DESC",
 	65535: "OFPMP_EXPERIMENTER",
 }
+
 var OfpMultipartType_value = map[string]int32{
 	"OFPMP_DESC":           0,
 	"OFPMP_FLOW":           1,
@@ -2046,8 +2135,9 @@
 func (x OfpMultipartType) String() string {
 	return proto.EnumName(OfpMultipartType_name, int32(x))
 }
+
 func (OfpMultipartType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{45}
+	return fileDescriptor_08e3a4e375aeddc7, []int{45}
 }
 
 type OfpMultipartRequestFlags int32
@@ -2061,6 +2151,7 @@
 	0: "OFPMPF_REQ_INVALID",
 	1: "OFPMPF_REQ_MORE",
 }
+
 var OfpMultipartRequestFlags_value = map[string]int32{
 	"OFPMPF_REQ_INVALID": 0,
 	"OFPMPF_REQ_MORE":    1,
@@ -2069,8 +2160,9 @@
 func (x OfpMultipartRequestFlags) String() string {
 	return proto.EnumName(OfpMultipartRequestFlags_name, int32(x))
 }
+
 func (OfpMultipartRequestFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{46}
+	return fileDescriptor_08e3a4e375aeddc7, []int{46}
 }
 
 type OfpMultipartReplyFlags int32
@@ -2084,6 +2176,7 @@
 	0: "OFPMPF_REPLY_INVALID",
 	1: "OFPMPF_REPLY_MORE",
 }
+
 var OfpMultipartReplyFlags_value = map[string]int32{
 	"OFPMPF_REPLY_INVALID": 0,
 	"OFPMPF_REPLY_MORE":    1,
@@ -2092,8 +2185,9 @@
 func (x OfpMultipartReplyFlags) String() string {
 	return proto.EnumName(OfpMultipartReplyFlags_name, int32(x))
 }
+
 func (OfpMultipartReplyFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{47}
+	return fileDescriptor_08e3a4e375aeddc7, []int{47}
 }
 
 // Table Feature property types.
@@ -2138,6 +2232,7 @@
 	65534: "OFPTFPT_EXPERIMENTER",
 	65535: "OFPTFPT_EXPERIMENTER_MISS",
 }
+
 var OfpTableFeaturePropType_value = map[string]int32{
 	"OFPTFPT_INSTRUCTIONS":        0,
 	"OFPTFPT_INSTRUCTIONS_MISS":   1,
@@ -2160,8 +2255,9 @@
 func (x OfpTableFeaturePropType) String() string {
 	return proto.EnumName(OfpTableFeaturePropType_name, int32(x))
 }
+
 func (OfpTableFeaturePropType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{48}
+	return fileDescriptor_08e3a4e375aeddc7, []int{48}
 }
 
 // Group configuration flags
@@ -2182,6 +2278,7 @@
 	4: "OFPGFC_CHAINING",
 	8: "OFPGFC_CHAINING_CHECKS",
 }
+
 var OfpGroupCapabilities_value = map[string]int32{
 	"OFPGFC_INVALID":         0,
 	"OFPGFC_SELECT_WEIGHT":   1,
@@ -2193,8 +2290,9 @@
 func (x OfpGroupCapabilities) String() string {
 	return proto.EnumName(OfpGroupCapabilities_name, int32(x))
 }
+
 func (OfpGroupCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{49}
+	return fileDescriptor_08e3a4e375aeddc7, []int{49}
 }
 
 type OfpQueueProperties int32
@@ -2212,6 +2310,7 @@
 	2:     "OFPQT_MAX_RATE",
 	65535: "OFPQT_EXPERIMENTER",
 }
+
 var OfpQueueProperties_value = map[string]int32{
 	"OFPQT_INVALID":      0,
 	"OFPQT_MIN_RATE":     1,
@@ -2222,8 +2321,9 @@
 func (x OfpQueueProperties) String() string {
 	return proto.EnumName(OfpQueueProperties_name, int32(x))
 }
+
 func (OfpQueueProperties) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{50}
+	return fileDescriptor_08e3a4e375aeddc7, []int{50}
 }
 
 // Controller roles.
@@ -2242,6 +2342,7 @@
 	2: "OFPCR_ROLE_MASTER",
 	3: "OFPCR_ROLE_SLAVE",
 }
+
 var OfpControllerRole_value = map[string]int32{
 	"OFPCR_ROLE_NOCHANGE": 0,
 	"OFPCR_ROLE_EQUAL":    1,
@@ -2252,8 +2353,9 @@
 func (x OfpControllerRole) String() string {
 	return proto.EnumName(OfpControllerRole_name, int32(x))
 }
+
 func (OfpControllerRole) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{51}
+	return fileDescriptor_08e3a4e375aeddc7, []int{51}
 }
 
 // Header on all OpenFlow packets.
@@ -2270,16 +2372,17 @@
 func (m *OfpHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpHeader) ProtoMessage()    {}
 func (*OfpHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{0}
+	return fileDescriptor_08e3a4e375aeddc7, []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 (dst *OfpHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHeader.Merge(dst, src)
+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)
@@ -2326,16 +2429,17 @@
 func (m *OfpHelloElemHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpHelloElemHeader) ProtoMessage()    {}
 func (*OfpHelloElemHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{1}
+	return fileDescriptor_08e3a4e375aeddc7, []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 (dst *OfpHelloElemHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemHeader.Merge(dst, src)
+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)
@@ -2377,61 +2481,13 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpHelloElemHeader) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpHelloElemHeader_OneofMarshaler, _OfpHelloElemHeader_OneofUnmarshaler, _OfpHelloElemHeader_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpHelloElemHeader) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpHelloElemHeader_Versionbitmap)(nil),
 	}
 }
 
-func _OfpHelloElemHeader_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpHelloElemHeader)
-	// element
-	switch x := m.Element.(type) {
-	case *OfpHelloElemHeader_Versionbitmap:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Versionbitmap); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpHelloElemHeader.Element has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpHelloElemHeader_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpHelloElemHeader)
-	switch tag {
-	case 2: // element.versionbitmap
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpHelloElemVersionbitmap)
-		err := b.DecodeMessage(msg)
-		m.Element = &OfpHelloElemHeader_Versionbitmap{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpHelloElemHeader_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpHelloElemHeader)
-	// element
-	switch x := m.Element.(type) {
-	case *OfpHelloElemHeader_Versionbitmap:
-		s := proto.Size(x.Versionbitmap)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Version bitmap Hello Element
 type OfpHelloElemVersionbitmap struct {
 	Bitmaps              []uint32 `protobuf:"varint,2,rep,packed,name=bitmaps,proto3" json:"bitmaps,omitempty"`
@@ -2444,16 +2500,17 @@
 func (m *OfpHelloElemVersionbitmap) String() string { return proto.CompactTextString(m) }
 func (*OfpHelloElemVersionbitmap) ProtoMessage()    {}
 func (*OfpHelloElemVersionbitmap) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{2}
+	return fileDescriptor_08e3a4e375aeddc7, []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 (dst *OfpHelloElemVersionbitmap) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemVersionbitmap.Merge(dst, src)
+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)
@@ -2486,16 +2543,17 @@
 func (m *OfpHello) String() string { return proto.CompactTextString(m) }
 func (*OfpHello) ProtoMessage()    {}
 func (*OfpHello) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{3}
+	return fileDescriptor_08e3a4e375aeddc7, []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 (dst *OfpHello) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHello.Merge(dst, src)
+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)
@@ -2515,7 +2573,7 @@
 
 // Switch configuration.
 type OfpSwitchConfig struct {
-	// ofp_header header;
+	//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:"-"`
@@ -2527,16 +2585,17 @@
 func (m *OfpSwitchConfig) String() string { return proto.CompactTextString(m) }
 func (*OfpSwitchConfig) ProtoMessage()    {}
 func (*OfpSwitchConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{4}
+	return fileDescriptor_08e3a4e375aeddc7, []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 (dst *OfpSwitchConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchConfig.Merge(dst, src)
+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)
@@ -2563,7 +2622,7 @@
 
 // Configure/Modify behavior of a flow table
 type OfpTableMod struct {
-	// ofp_header header;
+	//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:"-"`
@@ -2575,16 +2634,17 @@
 func (m *OfpTableMod) String() string { return proto.CompactTextString(m) }
 func (*OfpTableMod) ProtoMessage()    {}
 func (*OfpTableMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{5}
+	return fileDescriptor_08e3a4e375aeddc7, []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 (dst *OfpTableMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableMod.Merge(dst, src)
+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)
@@ -2633,16 +2693,17 @@
 func (m *OfpPort) String() string { return proto.CompactTextString(m) }
 func (*OfpPort) ProtoMessage()    {}
 func (*OfpPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{6}
+	return fileDescriptor_08e3a4e375aeddc7, []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 (dst *OfpPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPort.Merge(dst, src)
+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)
@@ -2732,7 +2793,7 @@
 
 // Switch features.
 type OfpSwitchFeatures struct {
-	// ofp_header header;
+	//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"`
@@ -2748,16 +2809,17 @@
 func (m *OfpSwitchFeatures) String() string { return proto.CompactTextString(m) }
 func (*OfpSwitchFeatures) ProtoMessage()    {}
 func (*OfpSwitchFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{7}
+	return fileDescriptor_08e3a4e375aeddc7, []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 (dst *OfpSwitchFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchFeatures.Merge(dst, src)
+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)
@@ -2805,7 +2867,7 @@
 
 // A physical port has changed in the datapath
 type OfpPortStatus struct {
-	// ofp_header header;
+	//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:"-"`
@@ -2817,16 +2879,17 @@
 func (m *OfpPortStatus) String() string { return proto.CompactTextString(m) }
 func (*OfpPortStatus) ProtoMessage()    {}
 func (*OfpPortStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{8}
+	return fileDescriptor_08e3a4e375aeddc7, []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 (dst *OfpPortStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatus.Merge(dst, src)
+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)
@@ -2853,14 +2916,14 @@
 
 // Modify behavior of the physical port
 type OfpPortMod struct {
-	// ofp_header header;
+	//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"`
 	// 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.
+	//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"`
@@ -2873,16 +2936,17 @@
 func (m *OfpPortMod) String() string { return proto.CompactTextString(m) }
 func (*OfpPortMod) ProtoMessage()    {}
 func (*OfpPortMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{9}
+	return fileDescriptor_08e3a4e375aeddc7, []int{9}
 }
+
 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 (dst *OfpPortMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortMod.Merge(dst, src)
+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)
@@ -2941,16 +3005,17 @@
 func (m *OfpMatch) String() string { return proto.CompactTextString(m) }
 func (*OfpMatch) ProtoMessage()    {}
 func (*OfpMatch) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{10}
+	return fileDescriptor_08e3a4e375aeddc7, []int{10}
 }
+
 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 (dst *OfpMatch) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMatch.Merge(dst, src)
+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)
@@ -2991,16 +3056,17 @@
 func (m *OfpOxmField) String() string { return proto.CompactTextString(m) }
 func (*OfpOxmField) ProtoMessage()    {}
 func (*OfpOxmField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{11}
+	return fileDescriptor_08e3a4e375aeddc7, []int{11}
 }
+
 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 (dst *OfpOxmField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmField.Merge(dst, src)
+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)
@@ -3055,80 +3121,14 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpOxmField) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpOxmField_OneofMarshaler, _OfpOxmField_OneofUnmarshaler, _OfpOxmField_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpOxmField) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpOxmField_OfbField)(nil),
 		(*OfpOxmField_ExperimenterField)(nil),
 	}
 }
 
-func _OfpOxmField_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpOxmField)
-	// field
-	switch x := m.Field.(type) {
-	case *OfpOxmField_OfbField:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OfbField); err != nil {
-			return err
-		}
-	case *OfpOxmField_ExperimenterField:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.ExperimenterField); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpOxmField.Field has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpOxmField_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpOxmField)
-	switch tag {
-	case 4: // field.ofb_field
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpOxmOfbField)
-		err := b.DecodeMessage(msg)
-		m.Field = &OfpOxmField_OfbField{msg}
-		return true, err
-	case 5: // field.experimenter_field
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpOxmExperimenterField)
-		err := b.DecodeMessage(msg)
-		m.Field = &OfpOxmField_ExperimenterField{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpOxmField_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpOxmField)
-	// field
-	switch x := m.Field.(type) {
-	case *OfpOxmField_OfbField:
-		s := proto.Size(x.OfbField)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpOxmField_ExperimenterField:
-		s := proto.Size(x.ExperimenterField)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // OXM OpenFlow Basic Match Field
 type OfpOxmOfbField struct {
 	Type    OxmOfbFieldTypes `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
@@ -3202,16 +3202,17 @@
 func (m *OfpOxmOfbField) String() string { return proto.CompactTextString(m) }
 func (*OfpOxmOfbField) ProtoMessage()    {}
 func (*OfpOxmOfbField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{12}
+	return fileDescriptor_08e3a4e375aeddc7, []int{12}
 }
+
 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 (dst *OfpOxmOfbField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmOfbField.Merge(dst, src)
+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)
@@ -3960,9 +3961,9 @@
 	return 0
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpOxmOfbField) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpOxmOfbField_OneofMarshaler, _OfpOxmOfbField_OneofUnmarshaler, _OfpOxmOfbField_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpOxmOfbField) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpOxmOfbField_Port)(nil),
 		(*OfpOxmOfbField_PhysicalPort)(nil),
 		(*OfpOxmOfbField_TableMetadata)(nil),
@@ -4020,763 +4021,6 @@
 	}
 }
 
-func _OfpOxmOfbField_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpOxmOfbField)
-	// value
-	switch x := m.Value.(type) {
-	case *OfpOxmOfbField_Port:
-		b.EncodeVarint(3<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Port))
-	case *OfpOxmOfbField_PhysicalPort:
-		b.EncodeVarint(4<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.PhysicalPort))
-	case *OfpOxmOfbField_TableMetadata:
-		b.EncodeVarint(5<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TableMetadata))
-	case *OfpOxmOfbField_EthDst:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.EthDst)
-	case *OfpOxmOfbField_EthSrc:
-		b.EncodeVarint(7<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.EthSrc)
-	case *OfpOxmOfbField_EthType:
-		b.EncodeVarint(8<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.EthType))
-	case *OfpOxmOfbField_VlanVid:
-		b.EncodeVarint(9<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.VlanVid))
-	case *OfpOxmOfbField_VlanPcp:
-		b.EncodeVarint(10<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.VlanPcp))
-	case *OfpOxmOfbField_IpDscp:
-		b.EncodeVarint(11<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.IpDscp))
-	case *OfpOxmOfbField_IpEcn:
-		b.EncodeVarint(12<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.IpEcn))
-	case *OfpOxmOfbField_IpProto:
-		b.EncodeVarint(13<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.IpProto))
-	case *OfpOxmOfbField_Ipv4Src:
-		b.EncodeVarint(14<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv4Src))
-	case *OfpOxmOfbField_Ipv4Dst:
-		b.EncodeVarint(15<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv4Dst))
-	case *OfpOxmOfbField_TcpSrc:
-		b.EncodeVarint(16<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TcpSrc))
-	case *OfpOxmOfbField_TcpDst:
-		b.EncodeVarint(17<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TcpDst))
-	case *OfpOxmOfbField_UdpSrc:
-		b.EncodeVarint(18<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.UdpSrc))
-	case *OfpOxmOfbField_UdpDst:
-		b.EncodeVarint(19<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.UdpDst))
-	case *OfpOxmOfbField_SctpSrc:
-		b.EncodeVarint(20<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.SctpSrc))
-	case *OfpOxmOfbField_SctpDst:
-		b.EncodeVarint(21<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.SctpDst))
-	case *OfpOxmOfbField_Icmpv4Type:
-		b.EncodeVarint(22<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Icmpv4Type))
-	case *OfpOxmOfbField_Icmpv4Code:
-		b.EncodeVarint(23<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Icmpv4Code))
-	case *OfpOxmOfbField_ArpOp:
-		b.EncodeVarint(24<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpOp))
-	case *OfpOxmOfbField_ArpSpa:
-		b.EncodeVarint(25<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpSpa))
-	case *OfpOxmOfbField_ArpTpa:
-		b.EncodeVarint(26<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpTpa))
-	case *OfpOxmOfbField_ArpSha:
-		b.EncodeVarint(27<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.ArpSha)
-	case *OfpOxmOfbField_ArpTha:
-		b.EncodeVarint(28<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.ArpTha)
-	case *OfpOxmOfbField_Ipv6Src:
-		b.EncodeVarint(29<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6Src)
-	case *OfpOxmOfbField_Ipv6Dst:
-		b.EncodeVarint(30<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6Dst)
-	case *OfpOxmOfbField_Ipv6Flabel:
-		b.EncodeVarint(31<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv6Flabel))
-	case *OfpOxmOfbField_Icmpv6Type:
-		b.EncodeVarint(32<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Icmpv6Type))
-	case *OfpOxmOfbField_Icmpv6Code:
-		b.EncodeVarint(33<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Icmpv6Code))
-	case *OfpOxmOfbField_Ipv6NdTarget:
-		b.EncodeVarint(34<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6NdTarget)
-	case *OfpOxmOfbField_Ipv6NdSsl:
-		b.EncodeVarint(35<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6NdSsl)
-	case *OfpOxmOfbField_Ipv6NdTll:
-		b.EncodeVarint(36<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6NdTll)
-	case *OfpOxmOfbField_MplsLabel:
-		b.EncodeVarint(37<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.MplsLabel))
-	case *OfpOxmOfbField_MplsTc:
-		b.EncodeVarint(38<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.MplsTc))
-	case *OfpOxmOfbField_MplsBos:
-		b.EncodeVarint(39<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.MplsBos))
-	case *OfpOxmOfbField_PbbIsid:
-		b.EncodeVarint(40<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.PbbIsid))
-	case *OfpOxmOfbField_TunnelId:
-		b.EncodeVarint(41<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TunnelId))
-	case *OfpOxmOfbField_Ipv6Exthdr:
-		b.EncodeVarint(42<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv6Exthdr))
-	case nil:
-	default:
-		return fmt.Errorf("OfpOxmOfbField.Value has unexpected type %T", x)
-	}
-	// mask
-	switch x := m.Mask.(type) {
-	case *OfpOxmOfbField_TableMetadataMask:
-		b.EncodeVarint(105<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TableMetadataMask))
-	case *OfpOxmOfbField_EthDstMask:
-		b.EncodeVarint(106<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.EthDstMask)
-	case *OfpOxmOfbField_EthSrcMask:
-		b.EncodeVarint(107<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.EthSrcMask)
-	case *OfpOxmOfbField_VlanVidMask:
-		b.EncodeVarint(109<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.VlanVidMask))
-	case *OfpOxmOfbField_Ipv4SrcMask:
-		b.EncodeVarint(114<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv4SrcMask))
-	case *OfpOxmOfbField_Ipv4DstMask:
-		b.EncodeVarint(115<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv4DstMask))
-	case *OfpOxmOfbField_ArpSpaMask:
-		b.EncodeVarint(125<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpSpaMask))
-	case *OfpOxmOfbField_ArpTpaMask:
-		b.EncodeVarint(126<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpTpaMask))
-	case *OfpOxmOfbField_Ipv6SrcMask:
-		b.EncodeVarint(129<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6SrcMask)
-	case *OfpOxmOfbField_Ipv6DstMask:
-		b.EncodeVarint(130<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6DstMask)
-	case *OfpOxmOfbField_Ipv6FlabelMask:
-		b.EncodeVarint(131<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv6FlabelMask))
-	case *OfpOxmOfbField_PbbIsidMask:
-		b.EncodeVarint(140<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.PbbIsidMask))
-	case *OfpOxmOfbField_TunnelIdMask:
-		b.EncodeVarint(141<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TunnelIdMask))
-	case *OfpOxmOfbField_Ipv6ExthdrMask:
-		b.EncodeVarint(142<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv6ExthdrMask))
-	case nil:
-	default:
-		return fmt.Errorf("OfpOxmOfbField.Mask has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpOxmOfbField_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpOxmOfbField)
-	switch tag {
-	case 3: // value.port
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Port{uint32(x)}
-		return true, err
-	case 4: // value.physical_port
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_PhysicalPort{uint32(x)}
-		return true, err
-	case 5: // value.table_metadata
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_TableMetadata{x}
-		return true, err
-	case 6: // value.eth_dst
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_EthDst{x}
-		return true, err
-	case 7: // value.eth_src
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_EthSrc{x}
-		return true, err
-	case 8: // value.eth_type
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_EthType{uint32(x)}
-		return true, err
-	case 9: // value.vlan_vid
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_VlanVid{uint32(x)}
-		return true, err
-	case 10: // value.vlan_pcp
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_VlanPcp{uint32(x)}
-		return true, err
-	case 11: // value.ip_dscp
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_IpDscp{uint32(x)}
-		return true, err
-	case 12: // value.ip_ecn
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_IpEcn{uint32(x)}
-		return true, err
-	case 13: // value.ip_proto
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_IpProto{uint32(x)}
-		return true, err
-	case 14: // value.ipv4_src
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Ipv4Src{uint32(x)}
-		return true, err
-	case 15: // value.ipv4_dst
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Ipv4Dst{uint32(x)}
-		return true, err
-	case 16: // value.tcp_src
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_TcpSrc{uint32(x)}
-		return true, err
-	case 17: // value.tcp_dst
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_TcpDst{uint32(x)}
-		return true, err
-	case 18: // value.udp_src
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_UdpSrc{uint32(x)}
-		return true, err
-	case 19: // value.udp_dst
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_UdpDst{uint32(x)}
-		return true, err
-	case 20: // value.sctp_src
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_SctpSrc{uint32(x)}
-		return true, err
-	case 21: // value.sctp_dst
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_SctpDst{uint32(x)}
-		return true, err
-	case 22: // value.icmpv4_type
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Icmpv4Type{uint32(x)}
-		return true, err
-	case 23: // value.icmpv4_code
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Icmpv4Code{uint32(x)}
-		return true, err
-	case 24: // value.arp_op
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_ArpOp{uint32(x)}
-		return true, err
-	case 25: // value.arp_spa
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_ArpSpa{uint32(x)}
-		return true, err
-	case 26: // value.arp_tpa
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_ArpTpa{uint32(x)}
-		return true, err
-	case 27: // value.arp_sha
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_ArpSha{x}
-		return true, err
-	case 28: // value.arp_tha
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_ArpTha{x}
-		return true, err
-	case 29: // value.ipv6_src
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6Src{x}
-		return true, err
-	case 30: // value.ipv6_dst
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6Dst{x}
-		return true, err
-	case 31: // value.ipv6_flabel
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Ipv6Flabel{uint32(x)}
-		return true, err
-	case 32: // value.icmpv6_type
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Icmpv6Type{uint32(x)}
-		return true, err
-	case 33: // value.icmpv6_code
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Icmpv6Code{uint32(x)}
-		return true, err
-	case 34: // value.ipv6_nd_target
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6NdTarget{x}
-		return true, err
-	case 35: // value.ipv6_nd_ssl
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6NdSsl{x}
-		return true, err
-	case 36: // value.ipv6_nd_tll
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6NdTll{x}
-		return true, err
-	case 37: // value.mpls_label
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_MplsLabel{uint32(x)}
-		return true, err
-	case 38: // value.mpls_tc
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_MplsTc{uint32(x)}
-		return true, err
-	case 39: // value.mpls_bos
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_MplsBos{uint32(x)}
-		return true, err
-	case 40: // value.pbb_isid
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_PbbIsid{uint32(x)}
-		return true, err
-	case 41: // value.tunnel_id
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_TunnelId{x}
-		return true, err
-	case 42: // value.ipv6_exthdr
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Ipv6Exthdr{uint32(x)}
-		return true, err
-	case 105: // mask.table_metadata_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_TableMetadataMask{x}
-		return true, err
-	case 106: // mask.eth_dst_mask
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Mask = &OfpOxmOfbField_EthDstMask{x}
-		return true, err
-	case 107: // mask.eth_src_mask
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Mask = &OfpOxmOfbField_EthSrcMask{x}
-		return true, err
-	case 109: // mask.vlan_vid_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_VlanVidMask{uint32(x)}
-		return true, err
-	case 114: // mask.ipv4_src_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_Ipv4SrcMask{uint32(x)}
-		return true, err
-	case 115: // mask.ipv4_dst_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_Ipv4DstMask{uint32(x)}
-		return true, err
-	case 125: // mask.arp_spa_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_ArpSpaMask{uint32(x)}
-		return true, err
-	case 126: // mask.arp_tpa_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_ArpTpaMask{uint32(x)}
-		return true, err
-	case 129: // mask.ipv6_src_mask
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Mask = &OfpOxmOfbField_Ipv6SrcMask{x}
-		return true, err
-	case 130: // mask.ipv6_dst_mask
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Mask = &OfpOxmOfbField_Ipv6DstMask{x}
-		return true, err
-	case 131: // mask.ipv6_flabel_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_Ipv6FlabelMask{uint32(x)}
-		return true, err
-	case 140: // mask.pbb_isid_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_PbbIsidMask{uint32(x)}
-		return true, err
-	case 141: // mask.tunnel_id_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_TunnelIdMask{x}
-		return true, err
-	case 142: // mask.ipv6_exthdr_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_Ipv6ExthdrMask{uint32(x)}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpOxmOfbField_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpOxmOfbField)
-	// value
-	switch x := m.Value.(type) {
-	case *OfpOxmOfbField_Port:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.Port))
-	case *OfpOxmOfbField_PhysicalPort:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.PhysicalPort))
-	case *OfpOxmOfbField_TableMetadata:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.TableMetadata))
-	case *OfpOxmOfbField_EthDst:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.EthDst)))
-		n += len(x.EthDst)
-	case *OfpOxmOfbField_EthSrc:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.EthSrc)))
-		n += len(x.EthSrc)
-	case *OfpOxmOfbField_EthType:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.EthType))
-	case *OfpOxmOfbField_VlanVid:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.VlanVid))
-	case *OfpOxmOfbField_VlanPcp:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.VlanPcp))
-	case *OfpOxmOfbField_IpDscp:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.IpDscp))
-	case *OfpOxmOfbField_IpEcn:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.IpEcn))
-	case *OfpOxmOfbField_IpProto:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.IpProto))
-	case *OfpOxmOfbField_Ipv4Src:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv4Src))
-	case *OfpOxmOfbField_Ipv4Dst:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv4Dst))
-	case *OfpOxmOfbField_TcpSrc:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TcpSrc))
-	case *OfpOxmOfbField_TcpDst:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TcpDst))
-	case *OfpOxmOfbField_UdpSrc:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.UdpSrc))
-	case *OfpOxmOfbField_UdpDst:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.UdpDst))
-	case *OfpOxmOfbField_SctpSrc:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.SctpSrc))
-	case *OfpOxmOfbField_SctpDst:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.SctpDst))
-	case *OfpOxmOfbField_Icmpv4Type:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Icmpv4Type))
-	case *OfpOxmOfbField_Icmpv4Code:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Icmpv4Code))
-	case *OfpOxmOfbField_ArpOp:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpOp))
-	case *OfpOxmOfbField_ArpSpa:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpSpa))
-	case *OfpOxmOfbField_ArpTpa:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpTpa))
-	case *OfpOxmOfbField_ArpSha:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.ArpSha)))
-		n += len(x.ArpSha)
-	case *OfpOxmOfbField_ArpTha:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.ArpTha)))
-		n += len(x.ArpTha)
-	case *OfpOxmOfbField_Ipv6Src:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6Src)))
-		n += len(x.Ipv6Src)
-	case *OfpOxmOfbField_Ipv6Dst:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6Dst)))
-		n += len(x.Ipv6Dst)
-	case *OfpOxmOfbField_Ipv6Flabel:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv6Flabel))
-	case *OfpOxmOfbField_Icmpv6Type:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Icmpv6Type))
-	case *OfpOxmOfbField_Icmpv6Code:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Icmpv6Code))
-	case *OfpOxmOfbField_Ipv6NdTarget:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6NdTarget)))
-		n += len(x.Ipv6NdTarget)
-	case *OfpOxmOfbField_Ipv6NdSsl:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6NdSsl)))
-		n += len(x.Ipv6NdSsl)
-	case *OfpOxmOfbField_Ipv6NdTll:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6NdTll)))
-		n += len(x.Ipv6NdTll)
-	case *OfpOxmOfbField_MplsLabel:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.MplsLabel))
-	case *OfpOxmOfbField_MplsTc:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.MplsTc))
-	case *OfpOxmOfbField_MplsBos:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.MplsBos))
-	case *OfpOxmOfbField_PbbIsid:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.PbbIsid))
-	case *OfpOxmOfbField_TunnelId:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TunnelId))
-	case *OfpOxmOfbField_Ipv6Exthdr:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv6Exthdr))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	// mask
-	switch x := m.Mask.(type) {
-	case *OfpOxmOfbField_TableMetadataMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TableMetadataMask))
-	case *OfpOxmOfbField_EthDstMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.EthDstMask)))
-		n += len(x.EthDstMask)
-	case *OfpOxmOfbField_EthSrcMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.EthSrcMask)))
-		n += len(x.EthSrcMask)
-	case *OfpOxmOfbField_VlanVidMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.VlanVidMask))
-	case *OfpOxmOfbField_Ipv4SrcMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv4SrcMask))
-	case *OfpOxmOfbField_Ipv4DstMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv4DstMask))
-	case *OfpOxmOfbField_ArpSpaMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpSpaMask))
-	case *OfpOxmOfbField_ArpTpaMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpTpaMask))
-	case *OfpOxmOfbField_Ipv6SrcMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6SrcMask)))
-		n += len(x.Ipv6SrcMask)
-	case *OfpOxmOfbField_Ipv6DstMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6DstMask)))
-		n += len(x.Ipv6DstMask)
-	case *OfpOxmOfbField_Ipv6FlabelMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv6FlabelMask))
-	case *OfpOxmOfbField_PbbIsidMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.PbbIsidMask))
-	case *OfpOxmOfbField_TunnelIdMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TunnelIdMask))
-	case *OfpOxmOfbField_Ipv6ExthdrMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv6ExthdrMask))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Header for OXM experimenter match fields.
 // The experimenter class should not use OXM_HEADER() macros for defining
 // fields due to this extra header.
@@ -4792,16 +4036,17 @@
 func (m *OfpOxmExperimenterField) String() string { return proto.CompactTextString(m) }
 func (*OfpOxmExperimenterField) ProtoMessage()    {}
 func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{13}
+	return fileDescriptor_08e3a4e375aeddc7, []int{13}
 }
+
 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 (dst *OfpOxmExperimenterField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmExperimenterField.Merge(dst, src)
+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)
@@ -4850,16 +4095,17 @@
 func (m *OfpAction) String() string { return proto.CompactTextString(m) }
 func (*OfpAction) ProtoMessage()    {}
 func (*OfpAction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{14}
+	return fileDescriptor_08e3a4e375aeddc7, []int{14}
 }
+
 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 (dst *OfpAction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAction.Merge(dst, src)
+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)
@@ -4992,9 +4238,9 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpAction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpAction_OneofMarshaler, _OfpAction_OneofUnmarshaler, _OfpAction_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpAction) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpAction_Output)(nil),
 		(*OfpAction_MplsTtl)(nil),
 		(*OfpAction_Push)(nil),
@@ -5006,180 +4252,6 @@
 	}
 }
 
-func _OfpAction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpAction)
-	// action
-	switch x := m.Action.(type) {
-	case *OfpAction_Output:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Output); err != nil {
-			return err
-		}
-	case *OfpAction_MplsTtl:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.MplsTtl); err != nil {
-			return err
-		}
-	case *OfpAction_Push:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Push); err != nil {
-			return err
-		}
-	case *OfpAction_PopMpls:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.PopMpls); err != nil {
-			return err
-		}
-	case *OfpAction_Group:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Group); err != nil {
-			return err
-		}
-	case *OfpAction_NwTtl:
-		b.EncodeVarint(7<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.NwTtl); err != nil {
-			return err
-		}
-	case *OfpAction_SetField:
-		b.EncodeVarint(8<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.SetField); err != nil {
-			return err
-		}
-	case *OfpAction_Experimenter:
-		b.EncodeVarint(9<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Experimenter); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpAction.Action has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpAction)
-	switch tag {
-	case 2: // action.output
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionOutput)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_Output{msg}
-		return true, err
-	case 3: // action.mpls_ttl
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionMplsTtl)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_MplsTtl{msg}
-		return true, err
-	case 4: // action.push
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionPush)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_Push{msg}
-		return true, err
-	case 5: // action.pop_mpls
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionPopMpls)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_PopMpls{msg}
-		return true, err
-	case 6: // action.group
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionGroup)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_Group{msg}
-		return true, err
-	case 7: // action.nw_ttl
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionNwTtl)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_NwTtl{msg}
-		return true, err
-	case 8: // action.set_field
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionSetField)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_SetField{msg}
-		return true, err
-	case 9: // action.experimenter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionExperimenter)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_Experimenter{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpAction_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpAction)
-	// action
-	switch x := m.Action.(type) {
-	case *OfpAction_Output:
-		s := proto.Size(x.Output)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_MplsTtl:
-		s := proto.Size(x.MplsTtl)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_Push:
-		s := proto.Size(x.Push)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_PopMpls:
-		s := proto.Size(x.PopMpls)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_Group:
-		s := proto.Size(x.Group)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_NwTtl:
-		s := proto.Size(x.NwTtl)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_SetField:
-		s := proto.Size(x.SetField)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_Experimenter:
-		s := proto.Size(x.Experimenter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
 // When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
 // number of bytes to send.  A 'max_len' of zero means no bytes of the
@@ -5198,16 +4270,17 @@
 func (m *OfpActionOutput) String() string { return proto.CompactTextString(m) }
 func (*OfpActionOutput) ProtoMessage()    {}
 func (*OfpActionOutput) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{15}
+	return fileDescriptor_08e3a4e375aeddc7, []int{15}
 }
+
 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 (dst *OfpActionOutput) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionOutput.Merge(dst, src)
+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)
@@ -5244,16 +4317,17 @@
 func (m *OfpActionMplsTtl) String() string { return proto.CompactTextString(m) }
 func (*OfpActionMplsTtl) ProtoMessage()    {}
 func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{16}
+	return fileDescriptor_08e3a4e375aeddc7, []int{16}
 }
+
 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 (dst *OfpActionMplsTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionMplsTtl.Merge(dst, src)
+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)
@@ -5283,16 +4357,17 @@
 func (m *OfpActionPush) String() string { return proto.CompactTextString(m) }
 func (*OfpActionPush) ProtoMessage()    {}
 func (*OfpActionPush) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{17}
+	return fileDescriptor_08e3a4e375aeddc7, []int{17}
 }
+
 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 (dst *OfpActionPush) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPush.Merge(dst, src)
+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)
@@ -5322,16 +4397,17 @@
 func (m *OfpActionPopMpls) String() string { return proto.CompactTextString(m) }
 func (*OfpActionPopMpls) ProtoMessage()    {}
 func (*OfpActionPopMpls) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{18}
+	return fileDescriptor_08e3a4e375aeddc7, []int{18}
 }
+
 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 (dst *OfpActionPopMpls) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPopMpls.Merge(dst, src)
+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)
@@ -5361,16 +4437,17 @@
 func (m *OfpActionGroup) String() string { return proto.CompactTextString(m) }
 func (*OfpActionGroup) ProtoMessage()    {}
 func (*OfpActionGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{19}
+	return fileDescriptor_08e3a4e375aeddc7, []int{19}
 }
+
 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 (dst *OfpActionGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionGroup.Merge(dst, src)
+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)
@@ -5400,16 +4477,17 @@
 func (m *OfpActionNwTtl) String() string { return proto.CompactTextString(m) }
 func (*OfpActionNwTtl) ProtoMessage()    {}
 func (*OfpActionNwTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{20}
+	return fileDescriptor_08e3a4e375aeddc7, []int{20}
 }
+
 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 (dst *OfpActionNwTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionNwTtl.Merge(dst, src)
+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)
@@ -5439,16 +4517,17 @@
 func (m *OfpActionSetField) String() string { return proto.CompactTextString(m) }
 func (*OfpActionSetField) ProtoMessage()    {}
 func (*OfpActionSetField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{21}
+	return fileDescriptor_08e3a4e375aeddc7, []int{21}
 }
+
 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 (dst *OfpActionSetField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetField.Merge(dst, src)
+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)
@@ -5480,16 +4559,17 @@
 func (m *OfpActionExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpActionExperimenter) ProtoMessage()    {}
 func (*OfpActionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{22}
+	return fileDescriptor_08e3a4e375aeddc7, []int{22}
 }
+
 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 (dst *OfpActionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionExperimenter.Merge(dst, src)
+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)
@@ -5535,16 +4615,17 @@
 func (m *OfpInstruction) String() string { return proto.CompactTextString(m) }
 func (*OfpInstruction) ProtoMessage()    {}
 func (*OfpInstruction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{23}
+	return fileDescriptor_08e3a4e375aeddc7, []int{23}
 }
+
 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 (dst *OfpInstruction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstruction.Merge(dst, src)
+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)
@@ -5638,9 +4719,9 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpInstruction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpInstruction_OneofMarshaler, _OfpInstruction_OneofUnmarshaler, _OfpInstruction_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpInstruction) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpInstruction_GotoTable)(nil),
 		(*OfpInstruction_WriteMetadata)(nil),
 		(*OfpInstruction_Actions)(nil),
@@ -5649,126 +4730,6 @@
 	}
 }
 
-func _OfpInstruction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpInstruction)
-	// data
-	switch x := m.Data.(type) {
-	case *OfpInstruction_GotoTable:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.GotoTable); err != nil {
-			return err
-		}
-	case *OfpInstruction_WriteMetadata:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.WriteMetadata); err != nil {
-			return err
-		}
-	case *OfpInstruction_Actions:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Actions); err != nil {
-			return err
-		}
-	case *OfpInstruction_Meter:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Meter); err != nil {
-			return err
-		}
-	case *OfpInstruction_Experimenter:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Experimenter); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpInstruction.Data has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpInstruction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpInstruction)
-	switch tag {
-	case 2: // data.goto_table
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionGotoTable)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_GotoTable{msg}
-		return true, err
-	case 3: // data.write_metadata
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionWriteMetadata)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_WriteMetadata{msg}
-		return true, err
-	case 4: // data.actions
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionActions)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_Actions{msg}
-		return true, err
-	case 5: // data.meter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionMeter)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_Meter{msg}
-		return true, err
-	case 6: // data.experimenter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionExperimenter)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_Experimenter{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpInstruction_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpInstruction)
-	// data
-	switch x := m.Data.(type) {
-	case *OfpInstruction_GotoTable:
-		s := proto.Size(x.GotoTable)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpInstruction_WriteMetadata:
-		s := proto.Size(x.WriteMetadata)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpInstruction_Actions:
-		s := proto.Size(x.Actions)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpInstruction_Meter:
-		s := proto.Size(x.Meter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpInstruction_Experimenter:
-		s := proto.Size(x.Experimenter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Instruction structure for OFPIT_GOTO_TABLE
 type OfpInstructionGotoTable struct {
 	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
@@ -5781,16 +4742,17 @@
 func (m *OfpInstructionGotoTable) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionGotoTable) ProtoMessage()    {}
 func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{24}
+	return fileDescriptor_08e3a4e375aeddc7, []int{24}
 }
+
 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 (dst *OfpInstructionGotoTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionGotoTable.Merge(dst, src)
+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)
@@ -5821,16 +4783,17 @@
 func (m *OfpInstructionWriteMetadata) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionWriteMetadata) ProtoMessage()    {}
 func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{25}
+	return fileDescriptor_08e3a4e375aeddc7, []int{25}
 }
+
 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 (dst *OfpInstructionWriteMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionWriteMetadata.Merge(dst, src)
+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)
@@ -5867,16 +4830,17 @@
 func (m *OfpInstructionActions) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionActions) ProtoMessage()    {}
 func (*OfpInstructionActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{26}
+	return fileDescriptor_08e3a4e375aeddc7, []int{26}
 }
+
 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 (dst *OfpInstructionActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionActions.Merge(dst, src)
+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)
@@ -5906,16 +4870,17 @@
 func (m *OfpInstructionMeter) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionMeter) ProtoMessage()    {}
 func (*OfpInstructionMeter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{27}
+	return fileDescriptor_08e3a4e375aeddc7, []int{27}
 }
+
 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 (dst *OfpInstructionMeter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionMeter.Merge(dst, src)
+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)
@@ -5947,16 +4912,17 @@
 func (m *OfpInstructionExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionExperimenter) ProtoMessage()    {}
 func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{28}
+	return fileDescriptor_08e3a4e375aeddc7, []int{28}
 }
+
 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 (dst *OfpInstructionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionExperimenter.Merge(dst, src)
+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)
@@ -5983,7 +4949,7 @@
 
 // Flow setup and teardown (controller -> datapath).
 type OfpFlowMod struct {
-	// ofp_header header;
+	//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"`
@@ -6006,16 +4972,17 @@
 func (m *OfpFlowMod) String() string { return proto.CompactTextString(m) }
 func (*OfpFlowMod) ProtoMessage()    {}
 func (*OfpFlowMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{29}
+	return fileDescriptor_08e3a4e375aeddc7, []int{29}
 }
+
 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 (dst *OfpFlowMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowMod.Merge(dst, src)
+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)
@@ -6132,16 +5099,17 @@
 func (m *OfpBucket) String() string { return proto.CompactTextString(m) }
 func (*OfpBucket) ProtoMessage()    {}
 func (*OfpBucket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{30}
+	return fileDescriptor_08e3a4e375aeddc7, []int{30}
 }
+
 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 (dst *OfpBucket) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucket.Merge(dst, src)
+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)
@@ -6182,7 +5150,7 @@
 
 // Group setup and teardown (controller -> datapath).
 type OfpGroupMod struct {
-	// ofp_header header;
+	//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"`
@@ -6196,16 +5164,17 @@
 func (m *OfpGroupMod) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupMod) ProtoMessage()    {}
 func (*OfpGroupMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{31}
+	return fileDescriptor_08e3a4e375aeddc7, []int{31}
 }
+
 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 (dst *OfpGroupMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupMod.Merge(dst, src)
+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)
@@ -6246,7 +5215,7 @@
 
 // Send packet (controller -> datapath).
 type OfpPacketOut struct {
-	// ofp_header header;
+	//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"`
@@ -6262,16 +5231,17 @@
 func (m *OfpPacketOut) String() string { return proto.CompactTextString(m) }
 func (*OfpPacketOut) ProtoMessage()    {}
 func (*OfpPacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{32}
+	return fileDescriptor_08e3a4e375aeddc7, []int{32}
 }
+
 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 (dst *OfpPacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketOut.Merge(dst, src)
+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)
@@ -6312,7 +5282,7 @@
 
 // Packet received on port (datapath -> controller).
 type OfpPacketIn struct {
-	// ofp_header header;
+	//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"`
@@ -6328,16 +5298,17 @@
 func (m *OfpPacketIn) String() string { return proto.CompactTextString(m) }
 func (*OfpPacketIn) ProtoMessage()    {}
 func (*OfpPacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{33}
+	return fileDescriptor_08e3a4e375aeddc7, []int{33}
 }
+
 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 (dst *OfpPacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketIn.Merge(dst, src)
+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)
@@ -6392,7 +5363,7 @@
 
 // Flow removed (datapath -> controller).
 type OfpFlowRemoved struct {
-	// ofp_header header;
+	//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"`
@@ -6413,16 +5384,17 @@
 func (m *OfpFlowRemoved) String() string { return proto.CompactTextString(m) }
 func (*OfpFlowRemoved) ProtoMessage()    {}
 func (*OfpFlowRemoved) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{34}
+	return fileDescriptor_08e3a4e375aeddc7, []int{34}
 }
+
 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 (dst *OfpFlowRemoved) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowRemoved.Merge(dst, src)
+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)
@@ -6529,16 +5501,17 @@
 func (m *OfpMeterBandHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandHeader) ProtoMessage()    {}
 func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{35}
+	return fileDescriptor_08e3a4e375aeddc7, []int{35}
 }
+
 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 (dst *OfpMeterBandHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandHeader.Merge(dst, src)
+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)
@@ -6620,99 +5593,15 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpMeterBandHeader) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpMeterBandHeader_OneofMarshaler, _OfpMeterBandHeader_OneofUnmarshaler, _OfpMeterBandHeader_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpMeterBandHeader) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpMeterBandHeader_Drop)(nil),
 		(*OfpMeterBandHeader_DscpRemark)(nil),
 		(*OfpMeterBandHeader_Experimenter)(nil),
 	}
 }
 
-func _OfpMeterBandHeader_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpMeterBandHeader)
-	// data
-	switch x := m.Data.(type) {
-	case *OfpMeterBandHeader_Drop:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Drop); err != nil {
-			return err
-		}
-	case *OfpMeterBandHeader_DscpRemark:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.DscpRemark); err != nil {
-			return err
-		}
-	case *OfpMeterBandHeader_Experimenter:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Experimenter); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpMeterBandHeader.Data has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpMeterBandHeader_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpMeterBandHeader)
-	switch tag {
-	case 4: // data.drop
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpMeterBandDrop)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpMeterBandHeader_Drop{msg}
-		return true, err
-	case 5: // data.dscp_remark
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpMeterBandDscpRemark)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpMeterBandHeader_DscpRemark{msg}
-		return true, err
-	case 6: // data.experimenter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpMeterBandExperimenter)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpMeterBandHeader_Experimenter{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpMeterBandHeader_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpMeterBandHeader)
-	// data
-	switch x := m.Data.(type) {
-	case *OfpMeterBandHeader_Drop:
-		s := proto.Size(x.Drop)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpMeterBandHeader_DscpRemark:
-		s := proto.Size(x.DscpRemark)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpMeterBandHeader_Experimenter:
-		s := proto.Size(x.Experimenter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // OFPMBT_DROP band - drop packets
 type OfpMeterBandDrop struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -6724,16 +5613,17 @@
 func (m *OfpMeterBandDrop) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandDrop) ProtoMessage()    {}
 func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{36}
+	return fileDescriptor_08e3a4e375aeddc7, []int{36}
 }
+
 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 (dst *OfpMeterBandDrop) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDrop.Merge(dst, src)
+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)
@@ -6756,16 +5646,17 @@
 func (m *OfpMeterBandDscpRemark) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandDscpRemark) ProtoMessage()    {}
 func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{37}
+	return fileDescriptor_08e3a4e375aeddc7, []int{37}
 }
+
 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 (dst *OfpMeterBandDscpRemark) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDscpRemark.Merge(dst, src)
+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)
@@ -6796,16 +5687,17 @@
 func (m *OfpMeterBandExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandExperimenter) ProtoMessage()    {}
 func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{38}
+	return fileDescriptor_08e3a4e375aeddc7, []int{38}
 }
+
 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 (dst *OfpMeterBandExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandExperimenter.Merge(dst, src)
+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)
@@ -6838,16 +5730,17 @@
 func (m *OfpMeterMod) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterMod) ProtoMessage()    {}
 func (*OfpMeterMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{39}
+	return fileDescriptor_08e3a4e375aeddc7, []int{39}
 }
+
 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 (dst *OfpMeterMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMod.Merge(dst, src)
+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)
@@ -6888,7 +5781,7 @@
 
 // OFPT_ERROR: Error message (datapath -> controller).
 type OfpErrorMsg struct {
-	// ofp_header header;
+	//ofp_header header;
 	Type                 uint32   `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
 	Code                 uint32   `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"`
 	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
@@ -6901,16 +5794,17 @@
 func (m *OfpErrorMsg) String() string { return proto.CompactTextString(m) }
 func (*OfpErrorMsg) ProtoMessage()    {}
 func (*OfpErrorMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{40}
+	return fileDescriptor_08e3a4e375aeddc7, []int{40}
 }
+
 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 (dst *OfpErrorMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorMsg.Merge(dst, src)
+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)
@@ -6957,16 +5851,17 @@
 func (m *OfpErrorExperimenterMsg) String() string { return proto.CompactTextString(m) }
 func (*OfpErrorExperimenterMsg) ProtoMessage()    {}
 func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{41}
+	return fileDescriptor_08e3a4e375aeddc7, []int{41}
 }
+
 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 (dst *OfpErrorExperimenterMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorExperimenterMsg.Merge(dst, src)
+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)
@@ -7006,7 +5901,7 @@
 }
 
 type OfpMultipartRequest struct {
-	// ofp_header header;
+	//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"`
@@ -7019,16 +5914,17 @@
 func (m *OfpMultipartRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpMultipartRequest) ProtoMessage()    {}
 func (*OfpMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{42}
+	return fileDescriptor_08e3a4e375aeddc7, []int{42}
 }
+
 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 (dst *OfpMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartRequest.Merge(dst, src)
+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)
@@ -7061,7 +5957,7 @@
 }
 
 type OfpMultipartReply struct {
-	// ofp_header header;
+	//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"`
@@ -7074,16 +5970,17 @@
 func (m *OfpMultipartReply) String() string { return proto.CompactTextString(m) }
 func (*OfpMultipartReply) ProtoMessage()    {}
 func (*OfpMultipartReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{43}
+	return fileDescriptor_08e3a4e375aeddc7, []int{43}
 }
+
 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 (dst *OfpMultipartReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartReply.Merge(dst, src)
+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)
@@ -7132,16 +6029,17 @@
 func (m *OfpDesc) String() string { return proto.CompactTextString(m) }
 func (*OfpDesc) ProtoMessage()    {}
 func (*OfpDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{44}
+	return fileDescriptor_08e3a4e375aeddc7, []int{44}
 }
+
 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 (dst *OfpDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpDesc.Merge(dst, src)
+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)
@@ -7204,16 +6102,17 @@
 func (m *OfpFlowStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpFlowStatsRequest) ProtoMessage()    {}
 func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{45}
+	return fileDescriptor_08e3a4e375aeddc7, []int{45}
 }
+
 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 (dst *OfpFlowStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStatsRequest.Merge(dst, src)
+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)
@@ -7290,16 +6189,17 @@
 func (m *OfpFlowStats) String() string { return proto.CompactTextString(m) }
 func (*OfpFlowStats) ProtoMessage()    {}
 func (*OfpFlowStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{46}
+	return fileDescriptor_08e3a4e375aeddc7, []int{46}
 }
+
 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 (dst *OfpFlowStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStats.Merge(dst, src)
+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)
@@ -7418,16 +6318,17 @@
 func (m *OfpAggregateStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpAggregateStatsRequest) ProtoMessage()    {}
 func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{47}
+	return fileDescriptor_08e3a4e375aeddc7, []int{47}
 }
+
 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 (dst *OfpAggregateStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsRequest.Merge(dst, src)
+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)
@@ -7494,16 +6395,17 @@
 func (m *OfpAggregateStatsReply) String() string { return proto.CompactTextString(m) }
 func (*OfpAggregateStatsReply) ProtoMessage()    {}
 func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{48}
+	return fileDescriptor_08e3a4e375aeddc7, []int{48}
 }
+
 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 (dst *OfpAggregateStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsReply.Merge(dst, src)
+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)
@@ -7554,16 +6456,17 @@
 func (m *OfpTableFeatureProperty) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeatureProperty) ProtoMessage()    {}
 func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{49}
+	return fileDescriptor_08e3a4e375aeddc7, []int{49}
 }
+
 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 (dst *OfpTableFeatureProperty) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatureProperty.Merge(dst, src)
+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)
@@ -7657,9 +6560,9 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpTableFeatureProperty) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpTableFeatureProperty_OneofMarshaler, _OfpTableFeatureProperty_OneofUnmarshaler, _OfpTableFeatureProperty_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpTableFeatureProperty) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpTableFeatureProperty_Instructions)(nil),
 		(*OfpTableFeatureProperty_NextTables)(nil),
 		(*OfpTableFeatureProperty_Actions)(nil),
@@ -7668,130 +6571,10 @@
 	}
 }
 
-func _OfpTableFeatureProperty_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpTableFeatureProperty)
-	// value
-	switch x := m.Value.(type) {
-	case *OfpTableFeatureProperty_Instructions:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Instructions); err != nil {
-			return err
-		}
-	case *OfpTableFeatureProperty_NextTables:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.NextTables); err != nil {
-			return err
-		}
-	case *OfpTableFeatureProperty_Actions:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Actions); err != nil {
-			return err
-		}
-	case *OfpTableFeatureProperty_Oxm:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Oxm); err != nil {
-			return err
-		}
-	case *OfpTableFeatureProperty_Experimenter:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Experimenter); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpTableFeatureProperty.Value has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpTableFeatureProperty_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpTableFeatureProperty)
-	switch tag {
-	case 2: // value.instructions
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropInstructions)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_Instructions{msg}
-		return true, err
-	case 3: // value.next_tables
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropNextTables)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_NextTables{msg}
-		return true, err
-	case 4: // value.actions
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropActions)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_Actions{msg}
-		return true, err
-	case 5: // value.oxm
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropOxm)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_Oxm{msg}
-		return true, err
-	case 6: // value.experimenter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropExperimenter)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_Experimenter{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpTableFeatureProperty_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpTableFeatureProperty)
-	// value
-	switch x := m.Value.(type) {
-	case *OfpTableFeatureProperty_Instructions:
-		s := proto.Size(x.Instructions)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpTableFeatureProperty_NextTables:
-		s := proto.Size(x.NextTables)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpTableFeatureProperty_Actions:
-		s := proto.Size(x.Actions)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpTableFeatureProperty_Oxm:
-		s := proto.Size(x.Oxm)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpTableFeatureProperty_Experimenter:
-		s := proto.Size(x.Experimenter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Instructions property
 type OfpTableFeaturePropInstructions struct {
 	// One of OFPTFPT_INSTRUCTIONS,
-	// OFPTFPT_INSTRUCTIONS_MISS.
+	//OFPTFPT_INSTRUCTIONS_MISS.
 	Instructions         []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions,proto3" json:"instructions,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
 	XXX_unrecognized     []byte            `json:"-"`
@@ -7802,16 +6585,17 @@
 func (m *OfpTableFeaturePropInstructions) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropInstructions) ProtoMessage()    {}
 func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{50}
+	return fileDescriptor_08e3a4e375aeddc7, []int{50}
 }
+
 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 (dst *OfpTableFeaturePropInstructions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropInstructions.Merge(dst, src)
+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)
@@ -7832,7 +6616,7 @@
 // Next Tables property
 type OfpTableFeaturePropNextTables struct {
 	// One of OFPTFPT_NEXT_TABLES,
-	// OFPTFPT_NEXT_TABLES_MISS.
+	//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:"-"`
@@ -7843,16 +6627,17 @@
 func (m *OfpTableFeaturePropNextTables) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropNextTables) ProtoMessage()    {}
 func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{51}
+	return fileDescriptor_08e3a4e375aeddc7, []int{51}
 }
+
 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 (dst *OfpTableFeaturePropNextTables) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropNextTables.Merge(dst, src)
+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)
@@ -7873,9 +6658,9 @@
 // Actions property
 type OfpTableFeaturePropActions struct {
 	// One of OFPTFPT_WRITE_ACTIONS,
-	// OFPTFPT_WRITE_ACTIONS_MISS,
-	// OFPTFPT_APPLY_ACTIONS,
-	// OFPTFPT_APPLY_ACTIONS_MISS.
+	//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:"-"`
@@ -7886,16 +6671,17 @@
 func (m *OfpTableFeaturePropActions) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropActions) ProtoMessage()    {}
 func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{52}
+	return fileDescriptor_08e3a4e375aeddc7, []int{52}
 }
+
 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 (dst *OfpTableFeaturePropActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropActions.Merge(dst, src)
+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)
@@ -7926,16 +6712,17 @@
 func (m *OfpTableFeaturePropOxm) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropOxm) ProtoMessage()    {}
 func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{53}
+	return fileDescriptor_08e3a4e375aeddc7, []int{53}
 }
+
 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 (dst *OfpTableFeaturePropOxm) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropOxm.Merge(dst, src)
+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)
@@ -7956,7 +6743,7 @@
 // Experimenter table feature property
 type OfpTableFeaturePropExperimenter struct {
 	// One of OFPTFPT_EXPERIMENTER,
-	// OFPTFPT_EXPERIMENTER_MISS.
+	//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"`
@@ -7969,16 +6756,17 @@
 func (m *OfpTableFeaturePropExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropExperimenter) ProtoMessage()    {}
 func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{54}
+	return fileDescriptor_08e3a4e375aeddc7, []int{54}
 }
+
 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 (dst *OfpTableFeaturePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropExperimenter.Merge(dst, src)
+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)
@@ -8030,16 +6818,17 @@
 func (m *OfpTableFeatures) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeatures) ProtoMessage()    {}
 func (*OfpTableFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{55}
+	return fileDescriptor_08e3a4e375aeddc7, []int{55}
 }
+
 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 (dst *OfpTableFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatures.Merge(dst, src)
+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)
@@ -8114,16 +6903,17 @@
 func (m *OfpTableStats) String() string { return proto.CompactTextString(m) }
 func (*OfpTableStats) ProtoMessage()    {}
 func (*OfpTableStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{56}
+	return fileDescriptor_08e3a4e375aeddc7, []int{56}
 }
+
 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 (dst *OfpTableStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableStats.Merge(dst, src)
+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)
@@ -8174,16 +6964,17 @@
 func (m *OfpPortStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpPortStatsRequest) ProtoMessage()    {}
 func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{57}
+	return fileDescriptor_08e3a4e375aeddc7, []int{57}
 }
+
 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 (dst *OfpPortStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatsRequest.Merge(dst, src)
+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)
@@ -8228,16 +7019,17 @@
 func (m *OfpPortStats) String() string { return proto.CompactTextString(m) }
 func (*OfpPortStats) ProtoMessage()    {}
 func (*OfpPortStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{58}
+	return fileDescriptor_08e3a4e375aeddc7, []int{58}
 }
+
 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 (dst *OfpPortStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStats.Merge(dst, src)
+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)
@@ -8365,16 +7157,17 @@
 func (m *OfpGroupStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupStatsRequest) ProtoMessage()    {}
 func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{59}
+	return fileDescriptor_08e3a4e375aeddc7, []int{59}
 }
+
 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 (dst *OfpGroupStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStatsRequest.Merge(dst, src)
+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)
@@ -8405,16 +7198,17 @@
 func (m *OfpBucketCounter) String() string { return proto.CompactTextString(m) }
 func (*OfpBucketCounter) ProtoMessage()    {}
 func (*OfpBucketCounter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{60}
+	return fileDescriptor_08e3a4e375aeddc7, []int{60}
 }
+
 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 (dst *OfpBucketCounter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucketCounter.Merge(dst, src)
+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)
@@ -8457,16 +7251,17 @@
 func (m *OfpGroupStats) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupStats) ProtoMessage()    {}
 func (*OfpGroupStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{61}
+	return fileDescriptor_08e3a4e375aeddc7, []int{61}
 }
+
 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 (dst *OfpGroupStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStats.Merge(dst, src)
+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)
@@ -8540,16 +7335,17 @@
 func (m *OfpGroupDesc) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupDesc) ProtoMessage()    {}
 func (*OfpGroupDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{62}
+	return fileDescriptor_08e3a4e375aeddc7, []int{62}
 }
+
 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 (dst *OfpGroupDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupDesc.Merge(dst, src)
+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)
@@ -8593,16 +7389,17 @@
 func (m *OfpGroupEntry) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupEntry) ProtoMessage()    {}
 func (*OfpGroupEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{63}
+	return fileDescriptor_08e3a4e375aeddc7, []int{63}
 }
+
 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 (dst *OfpGroupEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupEntry.Merge(dst, src)
+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)
@@ -8642,16 +7439,17 @@
 func (m *OfpGroupFeatures) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupFeatures) ProtoMessage()    {}
 func (*OfpGroupFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{64}
+	return fileDescriptor_08e3a4e375aeddc7, []int{64}
 }
+
 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 (dst *OfpGroupFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupFeatures.Merge(dst, src)
+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)
@@ -8702,16 +7500,17 @@
 func (m *OfpMeterMultipartRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterMultipartRequest) ProtoMessage()    {}
 func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{65}
+	return fileDescriptor_08e3a4e375aeddc7, []int{65}
 }
+
 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 (dst *OfpMeterMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMultipartRequest.Merge(dst, src)
+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)
@@ -8742,16 +7541,17 @@
 func (m *OfpMeterBandStats) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandStats) ProtoMessage()    {}
 func (*OfpMeterBandStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{66}
+	return fileDescriptor_08e3a4e375aeddc7, []int{66}
 }
+
 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 (dst *OfpMeterBandStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandStats.Merge(dst, src)
+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)
@@ -8794,16 +7594,17 @@
 func (m *OfpMeterStats) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterStats) ProtoMessage()    {}
 func (*OfpMeterStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{67}
+	return fileDescriptor_08e3a4e375aeddc7, []int{67}
 }
+
 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 (dst *OfpMeterStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterStats.Merge(dst, src)
+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)
@@ -8877,16 +7678,17 @@
 func (m *OfpMeterConfig) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterConfig) ProtoMessage()    {}
 func (*OfpMeterConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{68}
+	return fileDescriptor_08e3a4e375aeddc7, []int{68}
 }
+
 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 (dst *OfpMeterConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterConfig.Merge(dst, src)
+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)
@@ -8934,16 +7736,17 @@
 func (m *OfpMeterFeatures) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterFeatures) ProtoMessage()    {}
 func (*OfpMeterFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{69}
+	return fileDescriptor_08e3a4e375aeddc7, []int{69}
 }
+
 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 (dst *OfpMeterFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterFeatures.Merge(dst, src)
+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)
@@ -9003,16 +7806,17 @@
 func (m *OfpExperimenterMultipartHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpExperimenterMultipartHeader) ProtoMessage()    {}
 func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{70}
+	return fileDescriptor_08e3a4e375aeddc7, []int{70}
 }
+
 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 (dst *OfpExperimenterMultipartHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterMultipartHeader.Merge(dst, src)
+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)
@@ -9046,7 +7850,7 @@
 
 // Experimenter extension.
 type OfpExperimenterHeader struct {
-	// ofp_header header;  /* Type OFPT_EXPERIMENTER. */
+	//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"`
@@ -9059,16 +7863,17 @@
 func (m *OfpExperimenterHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpExperimenterHeader) ProtoMessage()    {}
 func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{71}
+	return fileDescriptor_08e3a4e375aeddc7, []int{71}
 }
+
 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 (dst *OfpExperimenterHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterHeader.Merge(dst, src)
+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)
@@ -9113,16 +7918,17 @@
 func (m *OfpQueuePropHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpQueuePropHeader) ProtoMessage()    {}
 func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{72}
+	return fileDescriptor_08e3a4e375aeddc7, []int{72}
 }
+
 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 (dst *OfpQueuePropHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropHeader.Merge(dst, src)
+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)
@@ -9160,16 +7966,17 @@
 func (m *OfpQueuePropMinRate) String() string { return proto.CompactTextString(m) }
 func (*OfpQueuePropMinRate) ProtoMessage()    {}
 func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{73}
+	return fileDescriptor_08e3a4e375aeddc7, []int{73}
 }
+
 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 (dst *OfpQueuePropMinRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMinRate.Merge(dst, src)
+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)
@@ -9207,16 +8014,17 @@
 func (m *OfpQueuePropMaxRate) String() string { return proto.CompactTextString(m) }
 func (*OfpQueuePropMaxRate) ProtoMessage()    {}
 func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{74}
+	return fileDescriptor_08e3a4e375aeddc7, []int{74}
 }
+
 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 (dst *OfpQueuePropMaxRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMaxRate.Merge(dst, src)
+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)
@@ -9255,16 +8063,17 @@
 func (m *OfpQueuePropExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpQueuePropExperimenter) ProtoMessage()    {}
 func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{75}
+	return fileDescriptor_08e3a4e375aeddc7, []int{75}
 }
+
 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 (dst *OfpQueuePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropExperimenter.Merge(dst, src)
+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)
@@ -9310,16 +8119,17 @@
 func (m *OfpPacketQueue) String() string { return proto.CompactTextString(m) }
 func (*OfpPacketQueue) ProtoMessage()    {}
 func (*OfpPacketQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{76}
+	return fileDescriptor_08e3a4e375aeddc7, []int{76}
 }
+
 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 (dst *OfpPacketQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketQueue.Merge(dst, src)
+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)
@@ -9353,7 +8163,7 @@
 
 // Query for port queue configuration.
 type OfpQueueGetConfigRequest struct {
-	// ofp_header header;
+	//ofp_header header;
 	Port                 uint32   `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -9364,16 +8174,17 @@
 func (m *OfpQueueGetConfigRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpQueueGetConfigRequest) ProtoMessage()    {}
 func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{77}
+	return fileDescriptor_08e3a4e375aeddc7, []int{77}
 }
+
 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 (dst *OfpQueueGetConfigRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigRequest.Merge(dst, src)
+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)
@@ -9393,7 +8204,7 @@
 
 // Queue configuration for a given port.
 type OfpQueueGetConfigReply struct {
-	// ofp_header header;
+	//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:"-"`
@@ -9405,16 +8216,17 @@
 func (m *OfpQueueGetConfigReply) String() string { return proto.CompactTextString(m) }
 func (*OfpQueueGetConfigReply) ProtoMessage()    {}
 func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{78}
+	return fileDescriptor_08e3a4e375aeddc7, []int{78}
 }
+
 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 (dst *OfpQueueGetConfigReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigReply.Merge(dst, src)
+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)
@@ -9452,16 +8264,17 @@
 func (m *OfpActionSetQueue) String() string { return proto.CompactTextString(m) }
 func (*OfpActionSetQueue) ProtoMessage()    {}
 func (*OfpActionSetQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{79}
+	return fileDescriptor_08e3a4e375aeddc7, []int{79}
 }
+
 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 (dst *OfpActionSetQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetQueue.Merge(dst, src)
+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)
@@ -9498,16 +8311,17 @@
 func (m *OfpQueueStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpQueueStatsRequest) ProtoMessage()    {}
 func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{80}
+	return fileDescriptor_08e3a4e375aeddc7, []int{80}
 }
+
 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 (dst *OfpQueueStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStatsRequest.Merge(dst, src)
+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)
@@ -9549,16 +8363,17 @@
 func (m *OfpQueueStats) String() string { return proto.CompactTextString(m) }
 func (*OfpQueueStats) ProtoMessage()    {}
 func (*OfpQueueStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{81}
+	return fileDescriptor_08e3a4e375aeddc7, []int{81}
 }
+
 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 (dst *OfpQueueStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStats.Merge(dst, src)
+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)
@@ -9620,7 +8435,7 @@
 
 // Role request and reply message.
 type OfpRoleRequest struct {
-	// ofp_header header;        /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
+	//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:"-"`
@@ -9632,16 +8447,17 @@
 func (m *OfpRoleRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpRoleRequest) ProtoMessage()    {}
 func (*OfpRoleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{82}
+	return fileDescriptor_08e3a4e375aeddc7, []int{82}
 }
+
 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 (dst *OfpRoleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpRoleRequest.Merge(dst, src)
+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)
@@ -9668,7 +8484,7 @@
 
 // Asynchronous message configuration.
 type OfpAsyncConfig struct {
-	// ofp_header header;    /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
+	//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"`
@@ -9681,16 +8497,17 @@
 func (m *OfpAsyncConfig) String() string { return proto.CompactTextString(m) }
 func (*OfpAsyncConfig) ProtoMessage()    {}
 func (*OfpAsyncConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{83}
+	return fileDescriptor_08e3a4e375aeddc7, []int{83}
 }
+
 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 (dst *OfpAsyncConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAsyncConfig.Merge(dst, src)
+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)
@@ -9734,16 +8551,17 @@
 func (m *MeterModUpdate) String() string { return proto.CompactTextString(m) }
 func (*MeterModUpdate) ProtoMessage()    {}
 func (*MeterModUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{84}
+	return fileDescriptor_08e3a4e375aeddc7, []int{84}
 }
+
 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 (dst *MeterModUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterModUpdate.Merge(dst, src)
+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)
@@ -9779,16 +8597,17 @@
 func (m *MeterStatsReply) String() string { return proto.CompactTextString(m) }
 func (*MeterStatsReply) ProtoMessage()    {}
 func (*MeterStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{85}
+	return fileDescriptor_08e3a4e375aeddc7, []int{85}
 }
+
 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 (dst *MeterStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterStatsReply.Merge(dst, src)
+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)
@@ -9818,16 +8637,17 @@
 func (m *FlowTableUpdate) String() string { return proto.CompactTextString(m) }
 func (*FlowTableUpdate) ProtoMessage()    {}
 func (*FlowTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{86}
+	return fileDescriptor_08e3a4e375aeddc7, []int{86}
 }
+
 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 (dst *FlowTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowTableUpdate.Merge(dst, src)
+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)
@@ -9864,16 +8684,17 @@
 func (m *FlowGroupTableUpdate) String() string { return proto.CompactTextString(m) }
 func (*FlowGroupTableUpdate) ProtoMessage()    {}
 func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{87}
+	return fileDescriptor_08e3a4e375aeddc7, []int{87}
 }
+
 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 (dst *FlowGroupTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupTableUpdate.Merge(dst, src)
+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)
@@ -9909,16 +8730,17 @@
 func (m *Flows) String() string { return proto.CompactTextString(m) }
 func (*Flows) ProtoMessage()    {}
 func (*Flows) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{88}
+	return fileDescriptor_08e3a4e375aeddc7, []int{88}
 }
+
 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 (dst *Flows) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Flows.Merge(dst, src)
+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)
@@ -9947,16 +8769,17 @@
 func (m *Meters) String() string { return proto.CompactTextString(m) }
 func (*Meters) ProtoMessage()    {}
 func (*Meters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{89}
+	return fileDescriptor_08e3a4e375aeddc7, []int{89}
 }
+
 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 (dst *Meters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Meters.Merge(dst, src)
+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)
@@ -9985,16 +8808,17 @@
 func (m *FlowGroups) String() string { return proto.CompactTextString(m) }
 func (*FlowGroups) ProtoMessage()    {}
 func (*FlowGroups) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{90}
+	return fileDescriptor_08e3a4e375aeddc7, []int{90}
 }
+
 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 (dst *FlowGroups) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroups.Merge(dst, src)
+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)
@@ -10024,16 +8848,17 @@
 func (m *FlowChanges) String() string { return proto.CompactTextString(m) }
 func (*FlowChanges) ProtoMessage()    {}
 func (*FlowChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{91}
+	return fileDescriptor_08e3a4e375aeddc7, []int{91}
 }
+
 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 (dst *FlowChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowChanges.Merge(dst, src)
+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)
@@ -10071,16 +8896,17 @@
 func (m *FlowGroupChanges) String() string { return proto.CompactTextString(m) }
 func (*FlowGroupChanges) ProtoMessage()    {}
 func (*FlowGroupChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{92}
+	return fileDescriptor_08e3a4e375aeddc7, []int{92}
 }
+
 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 (dst *FlowGroupChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupChanges.Merge(dst, src)
+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)
@@ -10124,16 +8950,17 @@
 func (m *PacketIn) String() string { return proto.CompactTextString(m) }
 func (*PacketIn) ProtoMessage()    {}
 func (*PacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{93}
+	return fileDescriptor_08e3a4e375aeddc7, []int{93}
 }
+
 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 (dst *PacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketIn.Merge(dst, src)
+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)
@@ -10170,16 +8997,17 @@
 func (m *PacketOut) String() string { return proto.CompactTextString(m) }
 func (*PacketOut) ProtoMessage()    {}
 func (*PacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{94}
+	return fileDescriptor_08e3a4e375aeddc7, []int{94}
 }
+
 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 (dst *PacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketOut.Merge(dst, src)
+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)
@@ -10218,16 +9046,17 @@
 func (m *ChangeEvent) String() string { return proto.CompactTextString(m) }
 func (*ChangeEvent) ProtoMessage()    {}
 func (*ChangeEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{95}
+	return fileDescriptor_08e3a4e375aeddc7, []int{95}
 }
+
 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 (dst *ChangeEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChangeEvent.Merge(dst, src)
+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)
@@ -10269,62 +9098,66 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*ChangeEvent) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _ChangeEvent_OneofMarshaler, _ChangeEvent_OneofUnmarshaler, _ChangeEvent_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*ChangeEvent) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*ChangeEvent_PortStatus)(nil),
 	}
 }
 
-func _ChangeEvent_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*ChangeEvent)
-	// event
-	switch x := m.Event.(type) {
-	case *ChangeEvent_PortStatus:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.PortStatus); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("ChangeEvent.Event has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _ChangeEvent_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*ChangeEvent)
-	switch tag {
-	case 2: // event.port_status
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpPortStatus)
-		err := b.DecodeMessage(msg)
-		m.Event = &ChangeEvent_PortStatus{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _ChangeEvent_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*ChangeEvent)
-	// event
-	switch x := m.Event.(type) {
-	case *ChangeEvent_PortStatus:
-		s := proto.Size(x.PortStatus)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 func init() {
+	proto.RegisterEnum("openflow_13.OfpPortNo", OfpPortNo_name, OfpPortNo_value)
+	proto.RegisterEnum("openflow_13.OfpType", OfpType_name, OfpType_value)
+	proto.RegisterEnum("openflow_13.OfpHelloElemType", OfpHelloElemType_name, OfpHelloElemType_value)
+	proto.RegisterEnum("openflow_13.OfpConfigFlags", OfpConfigFlags_name, OfpConfigFlags_value)
+	proto.RegisterEnum("openflow_13.OfpTableConfig", OfpTableConfig_name, OfpTableConfig_value)
+	proto.RegisterEnum("openflow_13.OfpTable", OfpTable_name, OfpTable_value)
+	proto.RegisterEnum("openflow_13.OfpCapabilities", OfpCapabilities_name, OfpCapabilities_value)
+	proto.RegisterEnum("openflow_13.OfpPortConfig", OfpPortConfig_name, OfpPortConfig_value)
+	proto.RegisterEnum("openflow_13.OfpPortState", OfpPortState_name, OfpPortState_value)
+	proto.RegisterEnum("openflow_13.OfpPortFeatures", OfpPortFeatures_name, OfpPortFeatures_value)
+	proto.RegisterEnum("openflow_13.OfpPortReason", OfpPortReason_name, OfpPortReason_value)
+	proto.RegisterEnum("openflow_13.OfpMatchType", OfpMatchType_name, OfpMatchType_value)
+	proto.RegisterEnum("openflow_13.OfpOxmClass", OfpOxmClass_name, OfpOxmClass_value)
+	proto.RegisterEnum("openflow_13.OxmOfbFieldTypes", OxmOfbFieldTypes_name, OxmOfbFieldTypes_value)
+	proto.RegisterEnum("openflow_13.OfpVlanId", OfpVlanId_name, OfpVlanId_value)
+	proto.RegisterEnum("openflow_13.OfpIpv6ExthdrFlags", OfpIpv6ExthdrFlags_name, OfpIpv6ExthdrFlags_value)
+	proto.RegisterEnum("openflow_13.OfpActionType", OfpActionType_name, OfpActionType_value)
+	proto.RegisterEnum("openflow_13.OfpControllerMaxLen", OfpControllerMaxLen_name, OfpControllerMaxLen_value)
+	proto.RegisterEnum("openflow_13.OfpInstructionType", OfpInstructionType_name, OfpInstructionType_value)
+	proto.RegisterEnum("openflow_13.OfpFlowModCommand", OfpFlowModCommand_name, OfpFlowModCommand_value)
+	proto.RegisterEnum("openflow_13.OfpFlowModFlags", OfpFlowModFlags_name, OfpFlowModFlags_value)
+	proto.RegisterEnum("openflow_13.OfpGroup", OfpGroup_name, OfpGroup_value)
+	proto.RegisterEnum("openflow_13.OfpGroupModCommand", OfpGroupModCommand_name, OfpGroupModCommand_value)
+	proto.RegisterEnum("openflow_13.OfpGroupType", OfpGroupType_name, OfpGroupType_value)
+	proto.RegisterEnum("openflow_13.OfpPacketInReason", OfpPacketInReason_name, OfpPacketInReason_value)
+	proto.RegisterEnum("openflow_13.OfpFlowRemovedReason", OfpFlowRemovedReason_name, OfpFlowRemovedReason_value)
+	proto.RegisterEnum("openflow_13.OfpMeter", OfpMeter_name, OfpMeter_value)
+	proto.RegisterEnum("openflow_13.OfpMeterBandType", OfpMeterBandType_name, OfpMeterBandType_value)
+	proto.RegisterEnum("openflow_13.OfpMeterModCommand", OfpMeterModCommand_name, OfpMeterModCommand_value)
+	proto.RegisterEnum("openflow_13.OfpMeterFlags", OfpMeterFlags_name, OfpMeterFlags_value)
+	proto.RegisterEnum("openflow_13.OfpErrorType", OfpErrorType_name, OfpErrorType_value)
+	proto.RegisterEnum("openflow_13.OfpHelloFailedCode", OfpHelloFailedCode_name, OfpHelloFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpBadRequestCode", OfpBadRequestCode_name, OfpBadRequestCode_value)
+	proto.RegisterEnum("openflow_13.OfpBadActionCode", OfpBadActionCode_name, OfpBadActionCode_value)
+	proto.RegisterEnum("openflow_13.OfpBadInstructionCode", OfpBadInstructionCode_name, OfpBadInstructionCode_value)
+	proto.RegisterEnum("openflow_13.OfpBadMatchCode", OfpBadMatchCode_name, OfpBadMatchCode_value)
+	proto.RegisterEnum("openflow_13.OfpFlowModFailedCode", OfpFlowModFailedCode_name, OfpFlowModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpGroupModFailedCode", OfpGroupModFailedCode_name, OfpGroupModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpPortModFailedCode", OfpPortModFailedCode_name, OfpPortModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpTableModFailedCode", OfpTableModFailedCode_name, OfpTableModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpQueueOpFailedCode", OfpQueueOpFailedCode_name, OfpQueueOpFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpSwitchConfigFailedCode", OfpSwitchConfigFailedCode_name, OfpSwitchConfigFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpRoleRequestFailedCode", OfpRoleRequestFailedCode_name, OfpRoleRequestFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpMeterModFailedCode", OfpMeterModFailedCode_name, OfpMeterModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpTableFeaturesFailedCode", OfpTableFeaturesFailedCode_name, OfpTableFeaturesFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpMultipartType", OfpMultipartType_name, OfpMultipartType_value)
+	proto.RegisterEnum("openflow_13.OfpMultipartRequestFlags", OfpMultipartRequestFlags_name, OfpMultipartRequestFlags_value)
+	proto.RegisterEnum("openflow_13.OfpMultipartReplyFlags", OfpMultipartReplyFlags_name, OfpMultipartReplyFlags_value)
+	proto.RegisterEnum("openflow_13.OfpTableFeaturePropType", OfpTableFeaturePropType_name, OfpTableFeaturePropType_value)
+	proto.RegisterEnum("openflow_13.OfpGroupCapabilities", OfpGroupCapabilities_name, OfpGroupCapabilities_value)
+	proto.RegisterEnum("openflow_13.OfpQueueProperties", OfpQueueProperties_name, OfpQueueProperties_value)
+	proto.RegisterEnum("openflow_13.OfpControllerRole", OfpControllerRole_name, OfpControllerRole_value)
 	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")
@@ -10421,65 +9254,11 @@
 	proto.RegisterType((*PacketIn)(nil), "openflow_13.PacketIn")
 	proto.RegisterType((*PacketOut)(nil), "openflow_13.PacketOut")
 	proto.RegisterType((*ChangeEvent)(nil), "openflow_13.ChangeEvent")
-	proto.RegisterEnum("openflow_13.OfpPortNo", OfpPortNo_name, OfpPortNo_value)
-	proto.RegisterEnum("openflow_13.OfpType", OfpType_name, OfpType_value)
-	proto.RegisterEnum("openflow_13.OfpHelloElemType", OfpHelloElemType_name, OfpHelloElemType_value)
-	proto.RegisterEnum("openflow_13.OfpConfigFlags", OfpConfigFlags_name, OfpConfigFlags_value)
-	proto.RegisterEnum("openflow_13.OfpTableConfig", OfpTableConfig_name, OfpTableConfig_value)
-	proto.RegisterEnum("openflow_13.OfpTable", OfpTable_name, OfpTable_value)
-	proto.RegisterEnum("openflow_13.OfpCapabilities", OfpCapabilities_name, OfpCapabilities_value)
-	proto.RegisterEnum("openflow_13.OfpPortConfig", OfpPortConfig_name, OfpPortConfig_value)
-	proto.RegisterEnum("openflow_13.OfpPortState", OfpPortState_name, OfpPortState_value)
-	proto.RegisterEnum("openflow_13.OfpPortFeatures", OfpPortFeatures_name, OfpPortFeatures_value)
-	proto.RegisterEnum("openflow_13.OfpPortReason", OfpPortReason_name, OfpPortReason_value)
-	proto.RegisterEnum("openflow_13.OfpMatchType", OfpMatchType_name, OfpMatchType_value)
-	proto.RegisterEnum("openflow_13.OfpOxmClass", OfpOxmClass_name, OfpOxmClass_value)
-	proto.RegisterEnum("openflow_13.OxmOfbFieldTypes", OxmOfbFieldTypes_name, OxmOfbFieldTypes_value)
-	proto.RegisterEnum("openflow_13.OfpVlanId", OfpVlanId_name, OfpVlanId_value)
-	proto.RegisterEnum("openflow_13.OfpIpv6ExthdrFlags", OfpIpv6ExthdrFlags_name, OfpIpv6ExthdrFlags_value)
-	proto.RegisterEnum("openflow_13.OfpActionType", OfpActionType_name, OfpActionType_value)
-	proto.RegisterEnum("openflow_13.OfpControllerMaxLen", OfpControllerMaxLen_name, OfpControllerMaxLen_value)
-	proto.RegisterEnum("openflow_13.OfpInstructionType", OfpInstructionType_name, OfpInstructionType_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModCommand", OfpFlowModCommand_name, OfpFlowModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModFlags", OfpFlowModFlags_name, OfpFlowModFlags_value)
-	proto.RegisterEnum("openflow_13.OfpGroup", OfpGroup_name, OfpGroup_value)
-	proto.RegisterEnum("openflow_13.OfpGroupModCommand", OfpGroupModCommand_name, OfpGroupModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpGroupType", OfpGroupType_name, OfpGroupType_value)
-	proto.RegisterEnum("openflow_13.OfpPacketInReason", OfpPacketInReason_name, OfpPacketInReason_value)
-	proto.RegisterEnum("openflow_13.OfpFlowRemovedReason", OfpFlowRemovedReason_name, OfpFlowRemovedReason_value)
-	proto.RegisterEnum("openflow_13.OfpMeter", OfpMeter_name, OfpMeter_value)
-	proto.RegisterEnum("openflow_13.OfpMeterBandType", OfpMeterBandType_name, OfpMeterBandType_value)
-	proto.RegisterEnum("openflow_13.OfpMeterModCommand", OfpMeterModCommand_name, OfpMeterModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpMeterFlags", OfpMeterFlags_name, OfpMeterFlags_value)
-	proto.RegisterEnum("openflow_13.OfpErrorType", OfpErrorType_name, OfpErrorType_value)
-	proto.RegisterEnum("openflow_13.OfpHelloFailedCode", OfpHelloFailedCode_name, OfpHelloFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadRequestCode", OfpBadRequestCode_name, OfpBadRequestCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadActionCode", OfpBadActionCode_name, OfpBadActionCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadInstructionCode", OfpBadInstructionCode_name, OfpBadInstructionCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadMatchCode", OfpBadMatchCode_name, OfpBadMatchCode_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModFailedCode", OfpFlowModFailedCode_name, OfpFlowModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpGroupModFailedCode", OfpGroupModFailedCode_name, OfpGroupModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpPortModFailedCode", OfpPortModFailedCode_name, OfpPortModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpTableModFailedCode", OfpTableModFailedCode_name, OfpTableModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpQueueOpFailedCode", OfpQueueOpFailedCode_name, OfpQueueOpFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpSwitchConfigFailedCode", OfpSwitchConfigFailedCode_name, OfpSwitchConfigFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpRoleRequestFailedCode", OfpRoleRequestFailedCode_name, OfpRoleRequestFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpMeterModFailedCode", OfpMeterModFailedCode_name, OfpMeterModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpTableFeaturesFailedCode", OfpTableFeaturesFailedCode_name, OfpTableFeaturesFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartType", OfpMultipartType_name, OfpMultipartType_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartRequestFlags", OfpMultipartRequestFlags_name, OfpMultipartRequestFlags_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartReplyFlags", OfpMultipartReplyFlags_name, OfpMultipartReplyFlags_value)
-	proto.RegisterEnum("openflow_13.OfpTableFeaturePropType", OfpTableFeaturePropType_name, OfpTableFeaturePropType_value)
-	proto.RegisterEnum("openflow_13.OfpGroupCapabilities", OfpGroupCapabilities_name, OfpGroupCapabilities_value)
-	proto.RegisterEnum("openflow_13.OfpQueueProperties", OfpQueueProperties_name, OfpQueueProperties_value)
-	proto.RegisterEnum("openflow_13.OfpControllerRole", OfpControllerRole_name, OfpControllerRole_value)
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/openflow_13.proto", fileDescriptor_openflow_13_2cee8de507cb270a)
-}
+func init() { proto.RegisterFile("voltha_protos/openflow_13.proto", fileDescriptor_08e3a4e375aeddc7) }
 
-var fileDescriptor_openflow_13_2cee8de507cb270a = []byte{
+var fileDescriptor_08e3a4e375aeddc7 = []byte{
 	// 8420 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x5b, 0x8c, 0x1b, 0x59,
 	0x76, 0x98, 0xf8, 0xe8, 0x6e, 0xf2, 0xb2, 0xbb, 0x55, 0x2a, 0xbd, 0x28, 0xb5, 0x34, 0x92, 0xb8,
diff --git a/go/schema/schema.pb.go b/go/schema/schema.pb.go
index 82707d4..f8763a4 100644
--- a/go/schema/schema.pb.go
+++ b/go/schema/schema.pb.go
@@ -1,17 +1,18 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/schema.proto
 
-package schema // import "github.com/opencord/voltha-protos/go/schema"
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import empty "github.com/golang/protobuf/ptypes/empty"
-import _ "google.golang.org/genproto/googleapis/api/annotations"
+package schema
 
 import (
-	context "golang.org/x/net/context"
+	context "context"
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	empty "github.com/golang/protobuf/ptypes/empty"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	math "math"
 )
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -23,7 +24,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 // Contains the name and content of a *.proto file
 type ProtoFile struct {
@@ -39,16 +40,17 @@
 func (m *ProtoFile) String() string { return proto.CompactTextString(m) }
 func (*ProtoFile) ProtoMessage()    {}
 func (*ProtoFile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_70c0f2adee8a5771, []int{0}
+	return fileDescriptor_9d785a7d5fd3f7a9, []int{0}
 }
+
 func (m *ProtoFile) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ProtoFile.Unmarshal(m, b)
 }
 func (m *ProtoFile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ProtoFile.Marshal(b, m, deterministic)
 }
-func (dst *ProtoFile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ProtoFile.Merge(dst, src)
+func (m *ProtoFile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProtoFile.Merge(m, src)
 }
 func (m *ProtoFile) XXX_Size() int {
 	return xxx_messageInfo_ProtoFile.Size(m)
@@ -97,16 +99,17 @@
 func (m *Schemas) String() string { return proto.CompactTextString(m) }
 func (*Schemas) ProtoMessage()    {}
 func (*Schemas) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_70c0f2adee8a5771, []int{1}
+	return fileDescriptor_9d785a7d5fd3f7a9, []int{1}
 }
+
 func (m *Schemas) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Schemas.Unmarshal(m, b)
 }
 func (m *Schemas) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Schemas.Marshal(b, m, deterministic)
 }
-func (dst *Schemas) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Schemas.Merge(dst, src)
+func (m *Schemas) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Schemas.Merge(m, src)
 }
 func (m *Schemas) XXX_Size() int {
 	return xxx_messageInfo_Schemas.Size(m)
@@ -143,6 +146,32 @@
 	proto.RegisterType((*Schemas)(nil), "schema.Schemas")
 }
 
+func init() { proto.RegisterFile("voltha_protos/schema.proto", fileDescriptor_9d785a7d5fd3f7a9) }
+
+var fileDescriptor_9d785a7d5fd3f7a9 = []byte{
+	// 316 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xc1, 0x4a, 0xeb, 0x40,
+	0x14, 0x25, 0x2d, 0xaf, 0x7d, 0x99, 0x56, 0x8a, 0x83, 0x48, 0x48, 0x45, 0x6a, 0x57, 0x15, 0x69,
+	0x02, 0xf5, 0x0f, 0x84, 0xd6, 0x9d, 0x48, 0x0b, 0x2e, 0x5c, 0x58, 0xa6, 0xe9, 0xed, 0x64, 0x20,
+	0x93, 0x1b, 0x26, 0xd3, 0x4a, 0xb7, 0xfe, 0x82, 0x9f, 0xe6, 0x2f, 0xf8, 0x21, 0x32, 0xb9, 0x53,
+	0x71, 0x37, 0xe7, 0x9c, 0x3b, 0xdc, 0x73, 0xce, 0x65, 0xf1, 0x01, 0x0b, 0x9b, 0x8b, 0x75, 0x65,
+	0xd0, 0x62, 0x9d, 0xd6, 0x59, 0x0e, 0x5a, 0x24, 0x0d, 0xe2, 0x1d, 0x42, 0xf1, 0x95, 0x44, 0x94,
+	0x05, 0xa4, 0xa2, 0x52, 0xa9, 0x28, 0x4b, 0xb4, 0xc2, 0x2a, 0x2c, 0x6b, 0x9a, 0x8a, 0x87, 0x5e,
+	0x6d, 0xd0, 0x66, 0xbf, 0x4b, 0x41, 0x57, 0xf6, 0x48, 0xe2, 0xf8, 0x8d, 0x85, 0xcf, 0xee, 0xb1,
+	0x50, 0x05, 0xf0, 0x21, 0x0b, 0x77, 0xaa, 0x80, 0x75, 0x29, 0x34, 0x44, 0xc1, 0x28, 0x98, 0x84,
+	0xcb, 0xff, 0x8e, 0x78, 0x12, 0x1a, 0xf8, 0x05, 0xfb, 0xd7, 0x7c, 0x89, 0x5a, 0x8d, 0x40, 0x80,
+	0x5f, 0x33, 0xb6, 0x85, 0x3a, 0x33, 0xaa, 0xb2, 0x68, 0xa2, 0xf6, 0x28, 0x98, 0xf4, 0x97, 0x7f,
+	0x98, 0xb1, 0x65, 0xdd, 0x55, 0x63, 0xb2, 0xe6, 0xb7, 0xac, 0x43, 0x21, 0xa2, 0x60, 0xd4, 0x9e,
+	0xf4, 0x66, 0xe7, 0x89, 0x0f, 0xf3, 0x6b, 0x60, 0xe9, 0x07, 0xf8, 0x0d, 0xeb, 0xd7, 0xef, 0x42,
+	0x4a, 0x30, 0xeb, 0x9d, 0x41, 0xed, 0x57, 0xf6, 0x3c, 0xb7, 0x30, 0xa8, 0x9d, 0xd7, 0xa3, 0x28,
+	0x25, 0xe9, 0x6d, 0xf2, 0xea, 0x08, 0x27, 0xce, 0x5e, 0xd8, 0x19, 0x6d, 0x5d, 0x81, 0x39, 0xa8,
+	0x0c, 0xf8, 0x9c, 0x85, 0x8f, 0x60, 0x89, 0xe3, 0x97, 0x09, 0x35, 0x92, 0x9c, 0x1a, 0x49, 0xe6,
+	0xae, 0x91, 0x78, 0x70, 0x32, 0xe4, 0x1d, 0x8f, 0x07, 0x1f, 0x5f, 0xdf, 0x9f, 0xad, 0x90, 0x77,
+	0x7d, 0xed, 0x0f, 0xd3, 0xd7, 0x3b, 0xa9, 0x6c, 0xbe, 0xdf, 0x24, 0x19, 0xea, 0x14, 0x2b, 0x28,
+	0x33, 0x34, 0xdb, 0x94, 0x4e, 0x34, 0xf5, 0x27, 0x92, 0xe8, 0xc7, 0x37, 0x14, 0xe7, 0xfe, 0x27,
+	0x00, 0x00, 0xff, 0xff, 0xdc, 0x3c, 0x6a, 0x7d, 0xc4, 0x01, 0x00, 0x00,
+}
+
 // Reference imports to suppress errors if they are not otherwise used.
 var _ context.Context
 var _ grpc.ClientConn
@@ -182,6 +211,14 @@
 	GetSchema(context.Context, *empty.Empty) (*Schemas, error)
 }
 
+// UnimplementedSchemaServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedSchemaServiceServer struct {
+}
+
+func (*UnimplementedSchemaServiceServer) GetSchema(ctx context.Context, req *empty.Empty) (*Schemas, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetSchema not implemented")
+}
+
 func RegisterSchemaServiceServer(s *grpc.Server, srv SchemaServiceServer) {
 	s.RegisterService(&_SchemaService_serviceDesc, srv)
 }
@@ -216,29 +253,3 @@
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "voltha_protos/schema.proto",
 }
-
-func init() { proto.RegisterFile("voltha_protos/schema.proto", fileDescriptor_schema_70c0f2adee8a5771) }
-
-var fileDescriptor_schema_70c0f2adee8a5771 = []byte{
-	// 316 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xc1, 0x4a, 0xeb, 0x40,
-	0x14, 0x25, 0x2d, 0xaf, 0x7d, 0x99, 0x56, 0x8a, 0x83, 0x48, 0x48, 0x45, 0x6a, 0x57, 0x15, 0x69,
-	0x02, 0xf5, 0x0f, 0x84, 0xd6, 0x9d, 0x48, 0x0b, 0x2e, 0x5c, 0x58, 0xa6, 0xe9, 0xed, 0x64, 0x20,
-	0x93, 0x1b, 0x26, 0xd3, 0x4a, 0xb7, 0xfe, 0x82, 0x9f, 0xe6, 0x2f, 0xf8, 0x21, 0x32, 0xb9, 0x53,
-	0x71, 0x37, 0xe7, 0x9c, 0x3b, 0xdc, 0x73, 0xce, 0x65, 0xf1, 0x01, 0x0b, 0x9b, 0x8b, 0x75, 0x65,
-	0xd0, 0x62, 0x9d, 0xd6, 0x59, 0x0e, 0x5a, 0x24, 0x0d, 0xe2, 0x1d, 0x42, 0xf1, 0x95, 0x44, 0x94,
-	0x05, 0xa4, 0xa2, 0x52, 0xa9, 0x28, 0x4b, 0xb4, 0xc2, 0x2a, 0x2c, 0x6b, 0x9a, 0x8a, 0x87, 0x5e,
-	0x6d, 0xd0, 0x66, 0xbf, 0x4b, 0x41, 0x57, 0xf6, 0x48, 0xe2, 0xf8, 0x8d, 0x85, 0xcf, 0xee, 0xb1,
-	0x50, 0x05, 0xf0, 0x21, 0x0b, 0x77, 0xaa, 0x80, 0x75, 0x29, 0x34, 0x44, 0xc1, 0x28, 0x98, 0x84,
-	0xcb, 0xff, 0x8e, 0x78, 0x12, 0x1a, 0xf8, 0x05, 0xfb, 0xd7, 0x7c, 0x89, 0x5a, 0x8d, 0x40, 0x80,
-	0x5f, 0x33, 0xb6, 0x85, 0x3a, 0x33, 0xaa, 0xb2, 0x68, 0xa2, 0xf6, 0x28, 0x98, 0xf4, 0x97, 0x7f,
-	0x98, 0xb1, 0x65, 0xdd, 0x55, 0x63, 0xb2, 0xe6, 0xb7, 0xac, 0x43, 0x21, 0xa2, 0x60, 0xd4, 0x9e,
-	0xf4, 0x66, 0xe7, 0x89, 0x0f, 0xf3, 0x6b, 0x60, 0xe9, 0x07, 0xf8, 0x0d, 0xeb, 0xd7, 0xef, 0x42,
-	0x4a, 0x30, 0xeb, 0x9d, 0x41, 0xed, 0x57, 0xf6, 0x3c, 0xb7, 0x30, 0xa8, 0x9d, 0xd7, 0xa3, 0x28,
-	0x25, 0xe9, 0x6d, 0xf2, 0xea, 0x08, 0x27, 0xce, 0x5e, 0xd8, 0x19, 0x6d, 0x5d, 0x81, 0x39, 0xa8,
-	0x0c, 0xf8, 0x9c, 0x85, 0x8f, 0x60, 0x89, 0xe3, 0x97, 0x09, 0x35, 0x92, 0x9c, 0x1a, 0x49, 0xe6,
-	0xae, 0x91, 0x78, 0x70, 0x32, 0xe4, 0x1d, 0x8f, 0x07, 0x1f, 0x5f, 0xdf, 0x9f, 0xad, 0x90, 0x77,
-	0x7d, 0xed, 0x0f, 0xd3, 0xd7, 0x3b, 0xa9, 0x6c, 0xbe, 0xdf, 0x24, 0x19, 0xea, 0x14, 0x2b, 0x28,
-	0x33, 0x34, 0xdb, 0x94, 0x4e, 0x34, 0xf5, 0x27, 0x92, 0xe8, 0xc7, 0x37, 0x14, 0xe7, 0xfe, 0x27,
-	0x00, 0x00, 0xff, 0xff, 0xdc, 0x3c, 0x6a, 0x7d, 0xc4, 0x01, 0x00, 0x00,
-}
diff --git a/go/voltha.pb b/go/voltha.pb
index 6f8610a..84c9a71 100644
--- a/go/voltha.pb
+++ b/go/voltha.pb
Binary files differ
diff --git a/go/voltha/adapter.pb.go b/go/voltha/adapter.pb.go
index 680fc4b..187844d 100644
--- a/go/voltha/adapter.pb.go
+++ b/go/voltha/adapter.pb.go
@@ -1,13 +1,15 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/adapter.proto
 
-package voltha // import "github.com/opencord/voltha-protos/go/voltha"
+package voltha
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import any "github.com/golang/protobuf/ptypes/any"
-import common "github.com/opencord/voltha-protos/go/common"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	any "github.com/golang/protobuf/ptypes/any"
+	common "github.com/opencord/voltha-protos/go/common"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -18,7 +20,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type AdapterConfig struct {
 	// Common adapter config attributes here
@@ -34,16 +36,17 @@
 func (m *AdapterConfig) String() string { return proto.CompactTextString(m) }
 func (*AdapterConfig) ProtoMessage()    {}
 func (*AdapterConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_adapter_afe3683afb102200, []int{0}
+	return fileDescriptor_7e998ce153307274, []int{0}
 }
+
 func (m *AdapterConfig) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AdapterConfig.Unmarshal(m, b)
 }
 func (m *AdapterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AdapterConfig.Marshal(b, m, deterministic)
 }
-func (dst *AdapterConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AdapterConfig.Merge(dst, src)
+func (m *AdapterConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AdapterConfig.Merge(m, src)
 }
 func (m *AdapterConfig) XXX_Size() int {
 	return xxx_messageInfo_AdapterConfig.Size(m)
@@ -89,16 +92,17 @@
 func (m *Adapter) String() string { return proto.CompactTextString(m) }
 func (*Adapter) ProtoMessage()    {}
 func (*Adapter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_adapter_afe3683afb102200, []int{1}
+	return fileDescriptor_7e998ce153307274, []int{1}
 }
+
 func (m *Adapter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Adapter.Unmarshal(m, b)
 }
 func (m *Adapter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Adapter.Marshal(b, m, deterministic)
 }
-func (dst *Adapter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Adapter.Merge(dst, src)
+func (m *Adapter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Adapter.Merge(m, src)
 }
 func (m *Adapter) XXX_Size() int {
 	return xxx_messageInfo_Adapter.Size(m)
@@ -162,16 +166,17 @@
 func (m *Adapters) String() string { return proto.CompactTextString(m) }
 func (*Adapters) ProtoMessage()    {}
 func (*Adapters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_adapter_afe3683afb102200, []int{2}
+	return fileDescriptor_7e998ce153307274, []int{2}
 }
+
 func (m *Adapters) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Adapters.Unmarshal(m, b)
 }
 func (m *Adapters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Adapters.Marshal(b, m, deterministic)
 }
-func (dst *Adapters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Adapters.Merge(dst, src)
+func (m *Adapters) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Adapters.Merge(m, src)
 }
 func (m *Adapters) XXX_Size() int {
 	return xxx_messageInfo_Adapters.Size(m)
@@ -195,11 +200,9 @@
 	proto.RegisterType((*Adapters)(nil), "voltha.Adapters")
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/adapter.proto", fileDescriptor_adapter_afe3683afb102200)
-}
+func init() { proto.RegisterFile("voltha_protos/adapter.proto", fileDescriptor_7e998ce153307274) }
 
-var fileDescriptor_adapter_afe3683afb102200 = []byte{
+var fileDescriptor_7e998ce153307274 = []byte{
 	// 378 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x6a, 0xe2, 0x40,
 	0x1c, 0xc6, 0x49, 0x5c, 0xa3, 0x8e, 0xec, 0xae, 0x3b, 0xac, 0x4b, 0x74, 0x91, 0x0d, 0xc2, 0x42,
diff --git a/go/voltha/device.pb.go b/go/voltha/device.pb.go
index 413ae22..8934952 100644
--- a/go/voltha/device.pb.go
+++ b/go/voltha/device.pb.go
@@ -1,14 +1,16 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/device.proto
 
-package voltha // import "github.com/opencord/voltha-protos/go/voltha"
+package voltha
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import any "github.com/golang/protobuf/ptypes/any"
-import common "github.com/opencord/voltha-protos/go/common"
-import openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	any "github.com/golang/protobuf/ptypes/any"
+	common "github.com/opencord/voltha-protos/go/common"
+	openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -19,7 +21,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type PmConfig_PmType int32
 
@@ -36,6 +38,7 @@
 	2: "STATE",
 	3: "CONTEXT",
 }
+
 var PmConfig_PmType_value = map[string]int32{
 	"COUNTER": 0,
 	"GAUGE":   1,
@@ -46,8 +49,9 @@
 func (x PmConfig_PmType) String() string {
 	return proto.EnumName(PmConfig_PmType_name, int32(x))
 }
+
 func (PmConfig_PmType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{2, 0}
+	return fileDescriptor_200940f73d155856, []int{2, 0}
 }
 
 type ImageDownload_ImageDownloadState int32
@@ -71,6 +75,7 @@
 	5: "DOWNLOAD_UNSUPPORTED",
 	6: "DOWNLOAD_CANCELLED",
 }
+
 var ImageDownload_ImageDownloadState_value = map[string]int32{
 	"DOWNLOAD_UNKNOWN":     0,
 	"DOWNLOAD_SUCCEEDED":   1,
@@ -84,8 +89,9 @@
 func (x ImageDownload_ImageDownloadState) String() string {
 	return proto.EnumName(ImageDownload_ImageDownloadState_name, int32(x))
 }
+
 func (ImageDownload_ImageDownloadState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{7, 0}
+	return fileDescriptor_200940f73d155856, []int{7, 0}
 }
 
 type ImageDownload_ImageDownloadFailureReason int32
@@ -107,6 +113,7 @@
 	4: "UNKNOWN_ERROR",
 	5: "CANCELLED",
 }
+
 var ImageDownload_ImageDownloadFailureReason_value = map[string]int32{
 	"NO_ERROR":           0,
 	"INVALID_URL":        1,
@@ -119,8 +126,9 @@
 func (x ImageDownload_ImageDownloadFailureReason) String() string {
 	return proto.EnumName(ImageDownload_ImageDownloadFailureReason_name, int32(x))
 }
+
 func (ImageDownload_ImageDownloadFailureReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{7, 1}
+	return fileDescriptor_200940f73d155856, []int{7, 1}
 }
 
 type ImageDownload_ImageActivateState int32
@@ -142,6 +150,7 @@
 	4: "IMAGE_REVERTING",
 	5: "IMAGE_REVERTED",
 }
+
 var ImageDownload_ImageActivateState_value = map[string]int32{
 	"IMAGE_UNKNOWN":    0,
 	"IMAGE_INACTIVE":   1,
@@ -154,8 +163,9 @@
 func (x ImageDownload_ImageActivateState) String() string {
 	return proto.EnumName(ImageDownload_ImageActivateState_name, int32(x))
 }
+
 func (ImageDownload_ImageActivateState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{7, 2}
+	return fileDescriptor_200940f73d155856, []int{7, 2}
 }
 
 type Port_PortType int32
@@ -179,6 +189,7 @@
 	5: "VENET_OLT",
 	6: "VENET_ONU",
 }
+
 var Port_PortType_value = map[string]int32{
 	"UNKNOWN":      0,
 	"ETHERNET_NNI": 1,
@@ -192,8 +203,9 @@
 func (x Port_PortType) String() string {
 	return proto.EnumName(Port_PortType_name, int32(x))
 }
+
 func (Port_PortType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{9, 0}
+	return fileDescriptor_200940f73d155856, []int{9, 0}
 }
 
 type SimulateAlarmRequest_OperationType int32
@@ -207,6 +219,7 @@
 	0: "RAISE",
 	1: "CLEAR",
 }
+
 var SimulateAlarmRequest_OperationType_value = map[string]int32{
 	"RAISE": 0,
 	"CLEAR": 1,
@@ -215,8 +228,9 @@
 func (x SimulateAlarmRequest_OperationType) String() string {
 	return proto.EnumName(SimulateAlarmRequest_OperationType_name, int32(x))
 }
+
 func (SimulateAlarmRequest_OperationType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{13, 0}
+	return fileDescriptor_200940f73d155856, []int{13, 0}
 }
 
 // A Device Type
@@ -242,16 +256,17 @@
 func (m *DeviceType) String() string { return proto.CompactTextString(m) }
 func (*DeviceType) ProtoMessage()    {}
 func (*DeviceType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{0}
+	return fileDescriptor_200940f73d155856, []int{0}
 }
+
 func (m *DeviceType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeviceType.Unmarshal(m, b)
 }
 func (m *DeviceType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DeviceType.Marshal(b, m, deterministic)
 }
-func (dst *DeviceType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceType.Merge(dst, src)
+func (m *DeviceType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeviceType.Merge(m, src)
 }
 func (m *DeviceType) XXX_Size() int {
 	return xxx_messageInfo_DeviceType.Size(m)
@@ -323,16 +338,17 @@
 func (m *DeviceTypes) String() string { return proto.CompactTextString(m) }
 func (*DeviceTypes) ProtoMessage()    {}
 func (*DeviceTypes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{1}
+	return fileDescriptor_200940f73d155856, []int{1}
 }
+
 func (m *DeviceTypes) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeviceTypes.Unmarshal(m, b)
 }
 func (m *DeviceTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DeviceTypes.Marshal(b, m, deterministic)
 }
-func (dst *DeviceTypes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceTypes.Merge(dst, src)
+func (m *DeviceTypes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeviceTypes.Merge(m, src)
 }
 func (m *DeviceTypes) XXX_Size() int {
 	return xxx_messageInfo_DeviceTypes.Size(m)
@@ -364,16 +380,17 @@
 func (m *PmConfig) String() string { return proto.CompactTextString(m) }
 func (*PmConfig) ProtoMessage()    {}
 func (*PmConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{2}
+	return fileDescriptor_200940f73d155856, []int{2}
 }
+
 func (m *PmConfig) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PmConfig.Unmarshal(m, b)
 }
 func (m *PmConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PmConfig.Marshal(b, m, deterministic)
 }
-func (dst *PmConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmConfig.Merge(dst, src)
+func (m *PmConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PmConfig.Merge(m, src)
 }
 func (m *PmConfig) XXX_Size() int {
 	return xxx_messageInfo_PmConfig.Size(m)
@@ -426,16 +443,17 @@
 func (m *PmGroupConfig) String() string { return proto.CompactTextString(m) }
 func (*PmGroupConfig) ProtoMessage()    {}
 func (*PmGroupConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{3}
+	return fileDescriptor_200940f73d155856, []int{3}
 }
+
 func (m *PmGroupConfig) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PmGroupConfig.Unmarshal(m, b)
 }
 func (m *PmGroupConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PmGroupConfig.Marshal(b, m, deterministic)
 }
-func (dst *PmGroupConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmGroupConfig.Merge(dst, src)
+func (m *PmGroupConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PmGroupConfig.Merge(m, src)
 }
 func (m *PmGroupConfig) XXX_Size() int {
 	return xxx_messageInfo_PmGroupConfig.Size(m)
@@ -492,16 +510,17 @@
 func (m *PmConfigs) String() string { return proto.CompactTextString(m) }
 func (*PmConfigs) ProtoMessage()    {}
 func (*PmConfigs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{4}
+	return fileDescriptor_200940f73d155856, []int{4}
 }
+
 func (m *PmConfigs) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PmConfigs.Unmarshal(m, b)
 }
 func (m *PmConfigs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PmConfigs.Marshal(b, m, deterministic)
 }
-func (dst *PmConfigs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmConfigs.Merge(dst, src)
+func (m *PmConfigs) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PmConfigs.Merge(m, src)
 }
 func (m *PmConfigs) XXX_Size() int {
 	return xxx_messageInfo_PmConfigs.Size(m)
@@ -583,16 +602,17 @@
 func (m *Image) String() string { return proto.CompactTextString(m) }
 func (*Image) ProtoMessage()    {}
 func (*Image) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{5}
+	return fileDescriptor_200940f73d155856, []int{5}
 }
+
 func (m *Image) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Image.Unmarshal(m, b)
 }
 func (m *Image) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Image.Marshal(b, m, deterministic)
 }
-func (dst *Image) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Image.Merge(dst, src)
+func (m *Image) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Image.Merge(m, src)
 }
 func (m *Image) XXX_Size() int {
 	return xxx_messageInfo_Image.Size(m)
@@ -664,16 +684,17 @@
 func (m *Images) String() string { return proto.CompactTextString(m) }
 func (*Images) ProtoMessage()    {}
 func (*Images) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{6}
+	return fileDescriptor_200940f73d155856, []int{6}
 }
+
 func (m *Images) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Images.Unmarshal(m, b)
 }
 func (m *Images) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Images.Marshal(b, m, deterministic)
 }
-func (dst *Images) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Images.Merge(dst, src)
+func (m *Images) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Images.Merge(m, src)
 }
 func (m *Images) XXX_Size() int {
 	return xxx_messageInfo_Images.Size(m)
@@ -728,16 +749,17 @@
 func (m *ImageDownload) String() string { return proto.CompactTextString(m) }
 func (*ImageDownload) ProtoMessage()    {}
 func (*ImageDownload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{7}
+	return fileDescriptor_200940f73d155856, []int{7}
 }
+
 func (m *ImageDownload) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ImageDownload.Unmarshal(m, b)
 }
 func (m *ImageDownload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ImageDownload.Marshal(b, m, deterministic)
 }
-func (dst *ImageDownload) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageDownload.Merge(dst, src)
+func (m *ImageDownload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ImageDownload.Merge(m, src)
 }
 func (m *ImageDownload) XXX_Size() int {
 	return xxx_messageInfo_ImageDownload.Size(m)
@@ -850,16 +872,17 @@
 func (m *ImageDownloads) String() string { return proto.CompactTextString(m) }
 func (*ImageDownloads) ProtoMessage()    {}
 func (*ImageDownloads) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{8}
+	return fileDescriptor_200940f73d155856, []int{8}
 }
+
 func (m *ImageDownloads) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ImageDownloads.Unmarshal(m, b)
 }
 func (m *ImageDownloads) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ImageDownloads.Marshal(b, m, deterministic)
 }
-func (dst *ImageDownloads) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageDownloads.Merge(dst, src)
+func (m *ImageDownloads) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ImageDownloads.Merge(m, src)
 }
 func (m *ImageDownloads) XXX_Size() int {
 	return xxx_messageInfo_ImageDownloads.Size(m)
@@ -900,16 +923,17 @@
 func (m *Port) String() string { return proto.CompactTextString(m) }
 func (*Port) ProtoMessage()    {}
 func (*Port) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{9}
+	return fileDescriptor_200940f73d155856, []int{9}
 }
+
 func (m *Port) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Port.Unmarshal(m, b)
 }
 func (m *Port) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Port.Marshal(b, m, deterministic)
 }
-func (dst *Port) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Port.Merge(dst, src)
+func (m *Port) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Port.Merge(m, src)
 }
 func (m *Port) XXX_Size() int {
 	return xxx_messageInfo_Port.Size(m)
@@ -1023,16 +1047,17 @@
 func (m *Port_PeerPort) String() string { return proto.CompactTextString(m) }
 func (*Port_PeerPort) ProtoMessage()    {}
 func (*Port_PeerPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{9, 0}
+	return fileDescriptor_200940f73d155856, []int{9, 0}
 }
+
 func (m *Port_PeerPort) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Port_PeerPort.Unmarshal(m, b)
 }
 func (m *Port_PeerPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Port_PeerPort.Marshal(b, m, deterministic)
 }
-func (dst *Port_PeerPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Port_PeerPort.Merge(dst, src)
+func (m *Port_PeerPort) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Port_PeerPort.Merge(m, src)
 }
 func (m *Port_PeerPort) XXX_Size() int {
 	return xxx_messageInfo_Port_PeerPort.Size(m)
@@ -1068,16 +1093,17 @@
 func (m *Ports) String() string { return proto.CompactTextString(m) }
 func (*Ports) ProtoMessage()    {}
 func (*Ports) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{10}
+	return fileDescriptor_200940f73d155856, []int{10}
 }
+
 func (m *Ports) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Ports.Unmarshal(m, b)
 }
 func (m *Ports) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Ports.Marshal(b, m, deterministic)
 }
-func (dst *Ports) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Ports.Merge(dst, src)
+func (m *Ports) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Ports.Merge(m, src)
 }
 func (m *Ports) XXX_Size() int {
 	return xxx_messageInfo_Ports.Size(m)
@@ -1152,16 +1178,17 @@
 func (m *Device) String() string { return proto.CompactTextString(m) }
 func (*Device) ProtoMessage()    {}
 func (*Device) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{11}
+	return fileDescriptor_200940f73d155856, []int{11}
 }
+
 func (m *Device) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Device.Unmarshal(m, b)
 }
 func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Device.Marshal(b, m, deterministic)
 }
-func (dst *Device) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Device.Merge(dst, src)
+func (m *Device) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Device.Merge(m, src)
 }
 func (m *Device) XXX_Size() int {
 	return xxx_messageInfo_Device.Size(m)
@@ -1411,87 +1438,15 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Device) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Device_OneofMarshaler, _Device_OneofUnmarshaler, _Device_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Device) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*Device_Ipv4Address)(nil),
 		(*Device_Ipv6Address)(nil),
 		(*Device_HostAndPort)(nil),
 	}
 }
 
-func _Device_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Device)
-	// address
-	switch x := m.Address.(type) {
-	case *Device_Ipv4Address:
-		b.EncodeVarint(14<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.Ipv4Address)
-	case *Device_Ipv6Address:
-		b.EncodeVarint(15<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.Ipv6Address)
-	case *Device_HostAndPort:
-		b.EncodeVarint(21<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.HostAndPort)
-	case nil:
-	default:
-		return fmt.Errorf("Device.Address has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Device_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Device)
-	switch tag {
-	case 14: // address.ipv4_address
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Address = &Device_Ipv4Address{x}
-		return true, err
-	case 15: // address.ipv6_address
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Address = &Device_Ipv6Address{x}
-		return true, err
-	case 21: // address.host_and_port
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Address = &Device_HostAndPort{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Device_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Device)
-	// address
-	switch x := m.Address.(type) {
-	case *Device_Ipv4Address:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv4Address)))
-		n += len(x.Ipv4Address)
-	case *Device_Ipv6Address:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6Address)))
-		n += len(x.Ipv6Address)
-	case *Device_HostAndPort:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.HostAndPort)))
-		n += len(x.HostAndPort)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type Device_ProxyAddress struct {
 	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
 	DeviceType           string   `protobuf:"bytes,2,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"`
@@ -1509,16 +1464,17 @@
 func (m *Device_ProxyAddress) String() string { return proto.CompactTextString(m) }
 func (*Device_ProxyAddress) ProtoMessage()    {}
 func (*Device_ProxyAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{11, 0}
+	return fileDescriptor_200940f73d155856, []int{11, 0}
 }
+
 func (m *Device_ProxyAddress) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Device_ProxyAddress.Unmarshal(m, b)
 }
 func (m *Device_ProxyAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Device_ProxyAddress.Marshal(b, m, deterministic)
 }
-func (dst *Device_ProxyAddress) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Device_ProxyAddress.Merge(dst, src)
+func (m *Device_ProxyAddress) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Device_ProxyAddress.Merge(m, src)
 }
 func (m *Device_ProxyAddress) XXX_Size() int {
 	return xxx_messageInfo_Device_ProxyAddress.Size(m)
@@ -1589,16 +1545,17 @@
 func (m *Devices) String() string { return proto.CompactTextString(m) }
 func (*Devices) ProtoMessage()    {}
 func (*Devices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{12}
+	return fileDescriptor_200940f73d155856, []int{12}
 }
+
 func (m *Devices) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Devices.Unmarshal(m, b)
 }
 func (m *Devices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Devices.Marshal(b, m, deterministic)
 }
-func (dst *Devices) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Devices.Merge(dst, src)
+func (m *Devices) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Devices.Merge(m, src)
 }
 func (m *Devices) XXX_Size() int {
 	return xxx_messageInfo_Devices.Size(m)
@@ -1637,16 +1594,17 @@
 func (m *SimulateAlarmRequest) String() string { return proto.CompactTextString(m) }
 func (*SimulateAlarmRequest) ProtoMessage()    {}
 func (*SimulateAlarmRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_device_8624dad2b773c06a, []int{13}
+	return fileDescriptor_200940f73d155856, []int{13}
 }
+
 func (m *SimulateAlarmRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SimulateAlarmRequest.Unmarshal(m, b)
 }
 func (m *SimulateAlarmRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_SimulateAlarmRequest.Marshal(b, m, deterministic)
 }
-func (dst *SimulateAlarmRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimulateAlarmRequest.Merge(dst, src)
+func (m *SimulateAlarmRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SimulateAlarmRequest.Merge(m, src)
 }
 func (m *SimulateAlarmRequest) XXX_Size() int {
 	return xxx_messageInfo_SimulateAlarmRequest.Size(m)
@@ -1728,6 +1686,12 @@
 }
 
 func init() {
+	proto.RegisterEnum("voltha.PmConfig_PmType", PmConfig_PmType_name, PmConfig_PmType_value)
+	proto.RegisterEnum("voltha.ImageDownload_ImageDownloadState", ImageDownload_ImageDownloadState_name, ImageDownload_ImageDownloadState_value)
+	proto.RegisterEnum("voltha.ImageDownload_ImageDownloadFailureReason", ImageDownload_ImageDownloadFailureReason_name, ImageDownload_ImageDownloadFailureReason_value)
+	proto.RegisterEnum("voltha.ImageDownload_ImageActivateState", ImageDownload_ImageActivateState_name, ImageDownload_ImageActivateState_value)
+	proto.RegisterEnum("voltha.Port_PortType", Port_PortType_name, Port_PortType_value)
+	proto.RegisterEnum("voltha.SimulateAlarmRequest_OperationType", SimulateAlarmRequest_OperationType_name, SimulateAlarmRequest_OperationType_value)
 	proto.RegisterType((*DeviceType)(nil), "voltha.DeviceType")
 	proto.RegisterType((*DeviceTypes)(nil), "voltha.DeviceTypes")
 	proto.RegisterType((*PmConfig)(nil), "voltha.PmConfig")
@@ -1744,17 +1708,11 @@
 	proto.RegisterType((*Device_ProxyAddress)(nil), "voltha.Device.ProxyAddress")
 	proto.RegisterType((*Devices)(nil), "voltha.Devices")
 	proto.RegisterType((*SimulateAlarmRequest)(nil), "voltha.SimulateAlarmRequest")
-	proto.RegisterEnum("voltha.PmConfig_PmType", PmConfig_PmType_name, PmConfig_PmType_value)
-	proto.RegisterEnum("voltha.ImageDownload_ImageDownloadState", ImageDownload_ImageDownloadState_name, ImageDownload_ImageDownloadState_value)
-	proto.RegisterEnum("voltha.ImageDownload_ImageDownloadFailureReason", ImageDownload_ImageDownloadFailureReason_name, ImageDownload_ImageDownloadFailureReason_value)
-	proto.RegisterEnum("voltha.ImageDownload_ImageActivateState", ImageDownload_ImageActivateState_name, ImageDownload_ImageActivateState_value)
-	proto.RegisterEnum("voltha.Port_PortType", Port_PortType_name, Port_PortType_value)
-	proto.RegisterEnum("voltha.SimulateAlarmRequest_OperationType", SimulateAlarmRequest_OperationType_name, SimulateAlarmRequest_OperationType_value)
 }
 
-func init() { proto.RegisterFile("voltha_protos/device.proto", fileDescriptor_device_8624dad2b773c06a) }
+func init() { proto.RegisterFile("voltha_protos/device.proto", fileDescriptor_200940f73d155856) }
 
-var fileDescriptor_device_8624dad2b773c06a = []byte{
+var fileDescriptor_200940f73d155856 = []byte{
 	// 2378 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0x4d, 0x6f, 0xdb, 0xc8,
 	0xf9, 0x8f, 0x64, 0x93, 0x12, 0x1f, 0xbd, 0x98, 0x99, 0x38, 0x09, 0x63, 0xff, 0x0d, 0xe7, 0xaf,
diff --git a/go/voltha/events.pb.go b/go/voltha/events.pb.go
index cb08d90..43e5a48 100644
--- a/go/voltha/events.pb.go
+++ b/go/voltha/events.pb.go
@@ -1,13 +1,15 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/events.proto
 
-package voltha // import "github.com/opencord/voltha-protos/go/voltha"
+package voltha
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import _ "github.com/opencord/voltha-protos/go/common"
-import _ "google.golang.org/genproto/googleapis/api/annotations"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "github.com/opencord/voltha-protos/go/common"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -18,7 +20,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type ConfigEventType_ConfigEventType int32
 
@@ -33,6 +35,7 @@
 	1: "remove",
 	2: "update",
 }
+
 var ConfigEventType_ConfigEventType_value = map[string]int32{
 	"add":    0,
 	"remove": 1,
@@ -42,8 +45,9 @@
 func (x ConfigEventType_ConfigEventType) String() string {
 	return proto.EnumName(ConfigEventType_ConfigEventType_name, int32(x))
 }
+
 func (ConfigEventType_ConfigEventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{0, 0}
+	return fileDescriptor_e63e6c07044fd2c4, []int{0, 0}
 }
 
 type KpiEventType_KpiEventType int32
@@ -57,6 +61,7 @@
 	0: "slice",
 	1: "ts",
 }
+
 var KpiEventType_KpiEventType_value = map[string]int32{
 	"slice": 0,
 	"ts":    1,
@@ -65,8 +70,9 @@
 func (x KpiEventType_KpiEventType) String() string {
 	return proto.EnumName(KpiEventType_KpiEventType_name, int32(x))
 }
+
 func (KpiEventType_KpiEventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{2, 0}
+	return fileDescriptor_e63e6c07044fd2c4, []int{2, 0}
 }
 
 type AlarmEventType_AlarmEventType int32
@@ -88,6 +94,7 @@
 	4: "PROCESSING",
 	5: "SECURITY",
 }
+
 var AlarmEventType_AlarmEventType_value = map[string]int32{
 	"COMMUNICATION": 0,
 	"ENVIRONMENT":   1,
@@ -100,8 +107,9 @@
 func (x AlarmEventType_AlarmEventType) String() string {
 	return proto.EnumName(AlarmEventType_AlarmEventType_name, int32(x))
 }
+
 func (AlarmEventType_AlarmEventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{8, 0}
+	return fileDescriptor_e63e6c07044fd2c4, []int{8, 0}
 }
 
 type AlarmEventCategory_AlarmEventCategory int32
@@ -121,6 +129,7 @@
 	3: "ONU",
 	4: "NNI",
 }
+
 var AlarmEventCategory_AlarmEventCategory_value = map[string]int32{
 	"PON": 0,
 	"OLT": 1,
@@ -132,8 +141,9 @@
 func (x AlarmEventCategory_AlarmEventCategory) String() string {
 	return proto.EnumName(AlarmEventCategory_AlarmEventCategory_name, int32(x))
 }
+
 func (AlarmEventCategory_AlarmEventCategory) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{9, 0}
+	return fileDescriptor_e63e6c07044fd2c4, []int{9, 0}
 }
 
 type AlarmEventState_AlarmEventState int32
@@ -147,6 +157,7 @@
 	0: "RAISED",
 	1: "CLEARED",
 }
+
 var AlarmEventState_AlarmEventState_value = map[string]int32{
 	"RAISED":  0,
 	"CLEARED": 1,
@@ -155,8 +166,9 @@
 func (x AlarmEventState_AlarmEventState) String() string {
 	return proto.EnumName(AlarmEventState_AlarmEventState_name, int32(x))
 }
+
 func (AlarmEventState_AlarmEventState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{10, 0}
+	return fileDescriptor_e63e6c07044fd2c4, []int{10, 0}
 }
 
 type AlarmEventSeverity_AlarmEventSeverity int32
@@ -176,6 +188,7 @@
 	3: "MAJOR",
 	4: "CRITICAL",
 }
+
 var AlarmEventSeverity_AlarmEventSeverity_value = map[string]int32{
 	"INDETERMINATE": 0,
 	"WARNING":       1,
@@ -187,8 +200,9 @@
 func (x AlarmEventSeverity_AlarmEventSeverity) String() string {
 	return proto.EnumName(AlarmEventSeverity_AlarmEventSeverity_name, int32(x))
 }
+
 func (AlarmEventSeverity_AlarmEventSeverity) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{11, 0}
+	return fileDescriptor_e63e6c07044fd2c4, []int{11, 0}
 }
 
 type ConfigEventType struct {
@@ -201,16 +215,17 @@
 func (m *ConfigEventType) String() string { return proto.CompactTextString(m) }
 func (*ConfigEventType) ProtoMessage()    {}
 func (*ConfigEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{0}
+	return fileDescriptor_e63e6c07044fd2c4, []int{0}
 }
+
 func (m *ConfigEventType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ConfigEventType.Unmarshal(m, b)
 }
 func (m *ConfigEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ConfigEventType.Marshal(b, m, deterministic)
 }
-func (dst *ConfigEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConfigEventType.Merge(dst, src)
+func (m *ConfigEventType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ConfigEventType.Merge(m, src)
 }
 func (m *ConfigEventType) XXX_Size() int {
 	return xxx_messageInfo_ConfigEventType.Size(m)
@@ -234,16 +249,17 @@
 func (m *ConfigEvent) String() string { return proto.CompactTextString(m) }
 func (*ConfigEvent) ProtoMessage()    {}
 func (*ConfigEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{1}
+	return fileDescriptor_e63e6c07044fd2c4, []int{1}
 }
+
 func (m *ConfigEvent) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ConfigEvent.Unmarshal(m, b)
 }
 func (m *ConfigEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ConfigEvent.Marshal(b, m, deterministic)
 }
-func (dst *ConfigEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConfigEvent.Merge(dst, src)
+func (m *ConfigEvent) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ConfigEvent.Merge(m, src)
 }
 func (m *ConfigEvent) XXX_Size() int {
 	return xxx_messageInfo_ConfigEvent.Size(m)
@@ -285,16 +301,17 @@
 func (m *KpiEventType) String() string { return proto.CompactTextString(m) }
 func (*KpiEventType) ProtoMessage()    {}
 func (*KpiEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{2}
+	return fileDescriptor_e63e6c07044fd2c4, []int{2}
 }
+
 func (m *KpiEventType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_KpiEventType.Unmarshal(m, b)
 }
 func (m *KpiEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_KpiEventType.Marshal(b, m, deterministic)
 }
-func (dst *KpiEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEventType.Merge(dst, src)
+func (m *KpiEventType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_KpiEventType.Merge(m, src)
 }
 func (m *KpiEventType) XXX_Size() int {
 	return xxx_messageInfo_KpiEventType.Size(m)
@@ -326,16 +343,17 @@
 func (m *MetricMetaData) String() string { return proto.CompactTextString(m) }
 func (*MetricMetaData) ProtoMessage()    {}
 func (*MetricMetaData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{3}
+	return fileDescriptor_e63e6c07044fd2c4, []int{3}
 }
+
 func (m *MetricMetaData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MetricMetaData.Unmarshal(m, b)
 }
 func (m *MetricMetaData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MetricMetaData.Marshal(b, m, deterministic)
 }
-func (dst *MetricMetaData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricMetaData.Merge(dst, src)
+func (m *MetricMetaData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MetricMetaData.Merge(m, src)
 }
 func (m *MetricMetaData) XXX_Size() int {
 	return xxx_messageInfo_MetricMetaData.Size(m)
@@ -403,16 +421,17 @@
 func (m *MetricValuePairs) String() string { return proto.CompactTextString(m) }
 func (*MetricValuePairs) ProtoMessage()    {}
 func (*MetricValuePairs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{4}
+	return fileDescriptor_e63e6c07044fd2c4, []int{4}
 }
+
 func (m *MetricValuePairs) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MetricValuePairs.Unmarshal(m, b)
 }
 func (m *MetricValuePairs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MetricValuePairs.Marshal(b, m, deterministic)
 }
-func (dst *MetricValuePairs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricValuePairs.Merge(dst, src)
+func (m *MetricValuePairs) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MetricValuePairs.Merge(m, src)
 }
 func (m *MetricValuePairs) XXX_Size() int {
 	return xxx_messageInfo_MetricValuePairs.Size(m)
@@ -445,16 +464,17 @@
 func (m *MetricInformation) String() string { return proto.CompactTextString(m) }
 func (*MetricInformation) ProtoMessage()    {}
 func (*MetricInformation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{5}
+	return fileDescriptor_e63e6c07044fd2c4, []int{5}
 }
+
 func (m *MetricInformation) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MetricInformation.Unmarshal(m, b)
 }
 func (m *MetricInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MetricInformation.Marshal(b, m, deterministic)
 }
-func (dst *MetricInformation) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricInformation.Merge(dst, src)
+func (m *MetricInformation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MetricInformation.Merge(m, src)
 }
 func (m *MetricInformation) XXX_Size() int {
 	return xxx_messageInfo_MetricInformation.Size(m)
@@ -496,16 +516,17 @@
 func (m *KpiEvent) String() string { return proto.CompactTextString(m) }
 func (*KpiEvent) ProtoMessage()    {}
 func (*KpiEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{6}
+	return fileDescriptor_e63e6c07044fd2c4, []int{6}
 }
+
 func (m *KpiEvent) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_KpiEvent.Unmarshal(m, b)
 }
 func (m *KpiEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_KpiEvent.Marshal(b, m, deterministic)
 }
-func (dst *KpiEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEvent.Merge(dst, src)
+func (m *KpiEvent) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_KpiEvent.Merge(m, src)
 }
 func (m *KpiEvent) XXX_Size() int {
 	return xxx_messageInfo_KpiEvent.Size(m)
@@ -552,16 +573,17 @@
 func (m *KpiEvent2) String() string { return proto.CompactTextString(m) }
 func (*KpiEvent2) ProtoMessage()    {}
 func (*KpiEvent2) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{7}
+	return fileDescriptor_e63e6c07044fd2c4, []int{7}
 }
+
 func (m *KpiEvent2) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_KpiEvent2.Unmarshal(m, b)
 }
 func (m *KpiEvent2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_KpiEvent2.Marshal(b, m, deterministic)
 }
-func (dst *KpiEvent2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEvent2.Merge(dst, src)
+func (m *KpiEvent2) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_KpiEvent2.Merge(m, src)
 }
 func (m *KpiEvent2) XXX_Size() int {
 	return xxx_messageInfo_KpiEvent2.Size(m)
@@ -605,16 +627,17 @@
 func (m *AlarmEventType) String() string { return proto.CompactTextString(m) }
 func (*AlarmEventType) ProtoMessage()    {}
 func (*AlarmEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{8}
+	return fileDescriptor_e63e6c07044fd2c4, []int{8}
 }
+
 func (m *AlarmEventType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmEventType.Unmarshal(m, b)
 }
 func (m *AlarmEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmEventType.Marshal(b, m, deterministic)
 }
-func (dst *AlarmEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmEventType.Merge(dst, src)
+func (m *AlarmEventType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmEventType.Merge(m, src)
 }
 func (m *AlarmEventType) XXX_Size() int {
 	return xxx_messageInfo_AlarmEventType.Size(m)
@@ -637,16 +660,17 @@
 func (m *AlarmEventCategory) String() string { return proto.CompactTextString(m) }
 func (*AlarmEventCategory) ProtoMessage()    {}
 func (*AlarmEventCategory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{9}
+	return fileDescriptor_e63e6c07044fd2c4, []int{9}
 }
+
 func (m *AlarmEventCategory) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmEventCategory.Unmarshal(m, b)
 }
 func (m *AlarmEventCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmEventCategory.Marshal(b, m, deterministic)
 }
-func (dst *AlarmEventCategory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmEventCategory.Merge(dst, src)
+func (m *AlarmEventCategory) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmEventCategory.Merge(m, src)
 }
 func (m *AlarmEventCategory) XXX_Size() int {
 	return xxx_messageInfo_AlarmEventCategory.Size(m)
@@ -669,16 +693,17 @@
 func (m *AlarmEventState) String() string { return proto.CompactTextString(m) }
 func (*AlarmEventState) ProtoMessage()    {}
 func (*AlarmEventState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{10}
+	return fileDescriptor_e63e6c07044fd2c4, []int{10}
 }
+
 func (m *AlarmEventState) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmEventState.Unmarshal(m, b)
 }
 func (m *AlarmEventState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmEventState.Marshal(b, m, deterministic)
 }
-func (dst *AlarmEventState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmEventState.Merge(dst, src)
+func (m *AlarmEventState) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmEventState.Merge(m, src)
 }
 func (m *AlarmEventState) XXX_Size() int {
 	return xxx_messageInfo_AlarmEventState.Size(m)
@@ -701,16 +726,17 @@
 func (m *AlarmEventSeverity) String() string { return proto.CompactTextString(m) }
 func (*AlarmEventSeverity) ProtoMessage()    {}
 func (*AlarmEventSeverity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{11}
+	return fileDescriptor_e63e6c07044fd2c4, []int{11}
 }
+
 func (m *AlarmEventSeverity) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmEventSeverity.Unmarshal(m, b)
 }
 func (m *AlarmEventSeverity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmEventSeverity.Marshal(b, m, deterministic)
 }
-func (dst *AlarmEventSeverity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmEventSeverity.Merge(dst, src)
+func (m *AlarmEventSeverity) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmEventSeverity.Merge(m, src)
 }
 func (m *AlarmEventSeverity) XXX_Size() int {
 	return xxx_messageInfo_AlarmEventSeverity.Size(m)
@@ -759,16 +785,17 @@
 func (m *AlarmEvent) String() string { return proto.CompactTextString(m) }
 func (*AlarmEvent) ProtoMessage()    {}
 func (*AlarmEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_events_26477559e5dbfb38, []int{12}
+	return fileDescriptor_e63e6c07044fd2c4, []int{12}
 }
+
 func (m *AlarmEvent) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmEvent.Unmarshal(m, b)
 }
 func (m *AlarmEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmEvent.Marshal(b, m, deterministic)
 }
-func (dst *AlarmEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmEvent.Merge(dst, src)
+func (m *AlarmEvent) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmEvent.Merge(m, src)
 }
 func (m *AlarmEvent) XXX_Size() int {
 	return xxx_messageInfo_AlarmEvent.Size(m)
@@ -871,6 +898,12 @@
 }
 
 func init() {
+	proto.RegisterEnum("voltha.ConfigEventType_ConfigEventType", ConfigEventType_ConfigEventType_name, ConfigEventType_ConfigEventType_value)
+	proto.RegisterEnum("voltha.KpiEventType_KpiEventType", KpiEventType_KpiEventType_name, KpiEventType_KpiEventType_value)
+	proto.RegisterEnum("voltha.AlarmEventType_AlarmEventType", AlarmEventType_AlarmEventType_name, AlarmEventType_AlarmEventType_value)
+	proto.RegisterEnum("voltha.AlarmEventCategory_AlarmEventCategory", AlarmEventCategory_AlarmEventCategory_name, AlarmEventCategory_AlarmEventCategory_value)
+	proto.RegisterEnum("voltha.AlarmEventState_AlarmEventState", AlarmEventState_AlarmEventState_name, AlarmEventState_AlarmEventState_value)
+	proto.RegisterEnum("voltha.AlarmEventSeverity_AlarmEventSeverity", AlarmEventSeverity_AlarmEventSeverity_name, AlarmEventSeverity_AlarmEventSeverity_value)
 	proto.RegisterType((*ConfigEventType)(nil), "voltha.ConfigEventType")
 	proto.RegisterType((*ConfigEvent)(nil), "voltha.ConfigEvent")
 	proto.RegisterType((*KpiEventType)(nil), "voltha.KpiEventType")
@@ -889,17 +922,11 @@
 	proto.RegisterType((*AlarmEventSeverity)(nil), "voltha.AlarmEventSeverity")
 	proto.RegisterType((*AlarmEvent)(nil), "voltha.AlarmEvent")
 	proto.RegisterMapType((map[string]string)(nil), "voltha.AlarmEvent.ContextEntry")
-	proto.RegisterEnum("voltha.ConfigEventType_ConfigEventType", ConfigEventType_ConfigEventType_name, ConfigEventType_ConfigEventType_value)
-	proto.RegisterEnum("voltha.KpiEventType_KpiEventType", KpiEventType_KpiEventType_name, KpiEventType_KpiEventType_value)
-	proto.RegisterEnum("voltha.AlarmEventType_AlarmEventType", AlarmEventType_AlarmEventType_name, AlarmEventType_AlarmEventType_value)
-	proto.RegisterEnum("voltha.AlarmEventCategory_AlarmEventCategory", AlarmEventCategory_AlarmEventCategory_name, AlarmEventCategory_AlarmEventCategory_value)
-	proto.RegisterEnum("voltha.AlarmEventState_AlarmEventState", AlarmEventState_AlarmEventState_name, AlarmEventState_AlarmEventState_value)
-	proto.RegisterEnum("voltha.AlarmEventSeverity_AlarmEventSeverity", AlarmEventSeverity_AlarmEventSeverity_name, AlarmEventSeverity_AlarmEventSeverity_value)
 }
 
-func init() { proto.RegisterFile("voltha_protos/events.proto", fileDescriptor_events_26477559e5dbfb38) }
+func init() { proto.RegisterFile("voltha_protos/events.proto", fileDescriptor_e63e6c07044fd2c4) }
 
-var fileDescriptor_events_26477559e5dbfb38 = []byte{
+var fileDescriptor_e63e6c07044fd2c4 = []byte{
 	// 1033 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0xe3, 0x44,
 	0x14, 0xae, 0x9d, 0xff, 0x93, 0x36, 0xf5, 0x8e, 0x10, 0x32, 0xe5, 0x67, 0xbb, 0x46, 0x2c, 0xd5,
diff --git a/go/voltha/health.pb.go b/go/voltha/health.pb.go
index aa7d788..844ef8a 100644
--- a/go/voltha/health.pb.go
+++ b/go/voltha/health.pb.go
@@ -1,18 +1,19 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/health.proto
 
-package voltha // import "github.com/opencord/voltha-protos/go/voltha"
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import empty "github.com/golang/protobuf/ptypes/empty"
-import _ "github.com/opencord/voltha-protos/go/common"
-import _ "google.golang.org/genproto/googleapis/api/annotations"
+package voltha
 
 import (
-	context "golang.org/x/net/context"
+	context "context"
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	empty "github.com/golang/protobuf/ptypes/empty"
+	_ "github.com/opencord/voltha-protos/go/common"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	math "math"
 )
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -24,7 +25,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 // Health states
 type HealthStatus_HealthState int32
@@ -40,6 +41,7 @@
 	1: "OVERLOADED",
 	2: "DYING",
 }
+
 var HealthStatus_HealthState_value = map[string]int32{
 	"HEALTHY":    0,
 	"OVERLOADED": 1,
@@ -49,8 +51,9 @@
 func (x HealthStatus_HealthState) String() string {
 	return proto.EnumName(HealthStatus_HealthState_name, int32(x))
 }
+
 func (HealthStatus_HealthState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_health_6b50bf63b9bb04db, []int{0, 0}
+	return fileDescriptor_dd1fc2b2d96d69b8, []int{0, 0}
 }
 
 // Encode health status of a Voltha instance
@@ -66,16 +69,17 @@
 func (m *HealthStatus) String() string { return proto.CompactTextString(m) }
 func (*HealthStatus) ProtoMessage()    {}
 func (*HealthStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_health_6b50bf63b9bb04db, []int{0}
+	return fileDescriptor_dd1fc2b2d96d69b8, []int{0}
 }
+
 func (m *HealthStatus) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_HealthStatus.Unmarshal(m, b)
 }
 func (m *HealthStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_HealthStatus.Marshal(b, m, deterministic)
 }
-func (dst *HealthStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HealthStatus.Merge(dst, src)
+func (m *HealthStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_HealthStatus.Merge(m, src)
 }
 func (m *HealthStatus) XXX_Size() int {
 	return xxx_messageInfo_HealthStatus.Size(m)
@@ -94,8 +98,33 @@
 }
 
 func init() {
-	proto.RegisterType((*HealthStatus)(nil), "voltha.HealthStatus")
 	proto.RegisterEnum("voltha.HealthStatus_HealthState", HealthStatus_HealthState_name, HealthStatus_HealthState_value)
+	proto.RegisterType((*HealthStatus)(nil), "voltha.HealthStatus")
+}
+
+func init() { proto.RegisterFile("voltha_protos/health.proto", fileDescriptor_dd1fc2b2d96d69b8) }
+
+var fileDescriptor_dd1fc2b2d96d69b8 = []byte{
+	// 289 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2a, 0xcb, 0xcf, 0x29,
+	0xc9, 0x48, 0x8c, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x2f, 0xd6, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9,
+	0xd0, 0x03, 0xf3, 0x84, 0xd8, 0x20, 0x72, 0x52, 0x32, 0xe9, 0xf9, 0xf9, 0xe9, 0x39, 0xa9, 0xfa,
+	0x89, 0x05, 0x99, 0xfa, 0x89, 0x79, 0x79, 0xf9, 0x25, 0x89, 0x25, 0x99, 0xf9, 0x79, 0xc5, 0x10,
+	0x55, 0x52, 0xd2, 0x50, 0x59, 0x30, 0x2f, 0xa9, 0x34, 0x4d, 0x3f, 0x35, 0xb7, 0xa0, 0xa4, 0x12,
+	0x2a, 0x29, 0x81, 0x6a, 0x7c, 0x6e, 0x6a, 0x49, 0x22, 0x44, 0x46, 0xa9, 0x85, 0x91, 0x8b, 0xc7,
+	0x03, 0x6c, 0x5b, 0x70, 0x49, 0x62, 0x49, 0x69, 0xb1, 0x90, 0x2d, 0x17, 0x6b, 0x71, 0x49, 0x62,
+	0x49, 0xaa, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x9f, 0x91, 0x82, 0x1e, 0x44, 0xab, 0x1e, 0xb2, 0x22,
+	0x24, 0x4e, 0xaa, 0x13, 0xeb, 0x8b, 0x6f, 0x67, 0x65, 0x19, 0x83, 0x20, 0xba, 0x94, 0x4c, 0xb9,
+	0xb8, 0x91, 0x24, 0x85, 0xb8, 0xb9, 0xd8, 0x3d, 0x5c, 0x1d, 0x7d, 0x42, 0x3c, 0x22, 0x05, 0x18,
+	0x84, 0xf8, 0xb8, 0xb8, 0xfc, 0xc3, 0x5c, 0x83, 0x7c, 0xfc, 0x1d, 0x5d, 0x5c, 0x5d, 0x04, 0x18,
+	0x85, 0x38, 0xb9, 0x58, 0x5d, 0x22, 0x3d, 0xfd, 0xdc, 0x05, 0x98, 0x8c, 0x12, 0xb9, 0x78, 0xa1,
+	0xda, 0x52, 0x8b, 0xca, 0x32, 0x93, 0x53, 0x85, 0x02, 0xb8, 0xf8, 0xdd, 0x53, 0x4b, 0x50, 0x5c,
+	0x26, 0xa6, 0x07, 0xf1, 0xa2, 0x1e, 0xcc, 0x8b, 0x7a, 0xae, 0x20, 0x2f, 0x4a, 0x89, 0x60, 0x73,
+	0xa2, 0x12, 0x7f, 0xd3, 0xe5, 0x27, 0x93, 0x99, 0x38, 0x85, 0xd8, 0xa1, 0x81, 0xe9, 0xa4, 0x1b,
+	0xa5, 0x9d, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x9f, 0x5f, 0x90, 0x9a,
+	0x97, 0x9c, 0x5f, 0x94, 0xa2, 0x0f, 0xd1, 0xab, 0x0b, 0x0d, 0x99, 0xf4, 0x7c, 0xa8, 0x40, 0x12,
+	0x1b, 0x58, 0xc4, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x06, 0x8f, 0xa7, 0x7d, 0x9a, 0x01, 0x00,
+	0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -137,6 +166,14 @@
 	GetHealthStatus(context.Context, *empty.Empty) (*HealthStatus, error)
 }
 
+// UnimplementedHealthServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedHealthServiceServer struct {
+}
+
+func (*UnimplementedHealthServiceServer) GetHealthStatus(ctx context.Context, req *empty.Empty) (*HealthStatus, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
+}
+
 func RegisterHealthServiceServer(s *grpc.Server, srv HealthServiceServer) {
 	s.RegisterService(&_HealthService_serviceDesc, srv)
 }
@@ -171,28 +208,3 @@
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "voltha_protos/health.proto",
 }
-
-func init() { proto.RegisterFile("voltha_protos/health.proto", fileDescriptor_health_6b50bf63b9bb04db) }
-
-var fileDescriptor_health_6b50bf63b9bb04db = []byte{
-	// 289 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2a, 0xcb, 0xcf, 0x29,
-	0xc9, 0x48, 0x8c, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x2f, 0xd6, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9,
-	0xd0, 0x03, 0xf3, 0x84, 0xd8, 0x20, 0x72, 0x52, 0x32, 0xe9, 0xf9, 0xf9, 0xe9, 0x39, 0xa9, 0xfa,
-	0x89, 0x05, 0x99, 0xfa, 0x89, 0x79, 0x79, 0xf9, 0x25, 0x89, 0x25, 0x99, 0xf9, 0x79, 0xc5, 0x10,
-	0x55, 0x52, 0xd2, 0x50, 0x59, 0x30, 0x2f, 0xa9, 0x34, 0x4d, 0x3f, 0x35, 0xb7, 0xa0, 0xa4, 0x12,
-	0x2a, 0x29, 0x81, 0x6a, 0x7c, 0x6e, 0x6a, 0x49, 0x22, 0x44, 0x46, 0xa9, 0x85, 0x91, 0x8b, 0xc7,
-	0x03, 0x6c, 0x5b, 0x70, 0x49, 0x62, 0x49, 0x69, 0xb1, 0x90, 0x2d, 0x17, 0x6b, 0x71, 0x49, 0x62,
-	0x49, 0xaa, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x9f, 0x91, 0x82, 0x1e, 0x44, 0xab, 0x1e, 0xb2, 0x22,
-	0x24, 0x4e, 0xaa, 0x13, 0xeb, 0x8b, 0x6f, 0x67, 0x65, 0x19, 0x83, 0x20, 0xba, 0x94, 0x4c, 0xb9,
-	0xb8, 0x91, 0x24, 0x85, 0xb8, 0xb9, 0xd8, 0x3d, 0x5c, 0x1d, 0x7d, 0x42, 0x3c, 0x22, 0x05, 0x18,
-	0x84, 0xf8, 0xb8, 0xb8, 0xfc, 0xc3, 0x5c, 0x83, 0x7c, 0xfc, 0x1d, 0x5d, 0x5c, 0x5d, 0x04, 0x18,
-	0x85, 0x38, 0xb9, 0x58, 0x5d, 0x22, 0x3d, 0xfd, 0xdc, 0x05, 0x98, 0x8c, 0x12, 0xb9, 0x78, 0xa1,
-	0xda, 0x52, 0x8b, 0xca, 0x32, 0x93, 0x53, 0x85, 0x02, 0xb8, 0xf8, 0xdd, 0x53, 0x4b, 0x50, 0x5c,
-	0x26, 0xa6, 0x07, 0xf1, 0xa2, 0x1e, 0xcc, 0x8b, 0x7a, 0xae, 0x20, 0x2f, 0x4a, 0x89, 0x60, 0x73,
-	0xa2, 0x12, 0x7f, 0xd3, 0xe5, 0x27, 0x93, 0x99, 0x38, 0x85, 0xd8, 0xa1, 0x81, 0xe9, 0xa4, 0x1b,
-	0xa5, 0x9d, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x9f, 0x5f, 0x90, 0x9a,
-	0x97, 0x9c, 0x5f, 0x94, 0xa2, 0x0f, 0xd1, 0xab, 0x0b, 0x0d, 0x99, 0xf4, 0x7c, 0xa8, 0x40, 0x12,
-	0x1b, 0x58, 0xc4, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x06, 0x8f, 0xa7, 0x7d, 0x9a, 0x01, 0x00,
-	0x00,
-}
diff --git a/go/voltha/logical_device.pb.go b/go/voltha/logical_device.pb.go
index 088d55c..bd435c5 100644
--- a/go/voltha/logical_device.pb.go
+++ b/go/voltha/logical_device.pb.go
@@ -1,14 +1,16 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/logical_device.proto
 
-package voltha // import "github.com/opencord/voltha-protos/go/voltha"
+package voltha
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import _ "github.com/opencord/voltha-protos/go/common"
-import openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
-import _ "google.golang.org/genproto/googleapis/api/annotations"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "github.com/opencord/voltha-protos/go/common"
+	openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -19,7 +21,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type LogicalPortId struct {
 	// unique id of logical device
@@ -35,16 +37,17 @@
 func (m *LogicalPortId) String() string { return proto.CompactTextString(m) }
 func (*LogicalPortId) ProtoMessage()    {}
 func (*LogicalPortId) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{0}
+	return fileDescriptor_caf139ab3abc8240, []int{0}
 }
+
 func (m *LogicalPortId) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalPortId.Unmarshal(m, b)
 }
 func (m *LogicalPortId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LogicalPortId.Marshal(b, m, deterministic)
 }
-func (dst *LogicalPortId) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalPortId.Merge(dst, src)
+func (m *LogicalPortId) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogicalPortId.Merge(m, src)
 }
 func (m *LogicalPortId) XXX_Size() int {
 	return xxx_messageInfo_LogicalPortId.Size(m)
@@ -85,16 +88,17 @@
 func (m *LogicalPort) String() string { return proto.CompactTextString(m) }
 func (*LogicalPort) ProtoMessage()    {}
 func (*LogicalPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{1}
+	return fileDescriptor_caf139ab3abc8240, []int{1}
 }
+
 func (m *LogicalPort) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalPort.Unmarshal(m, b)
 }
 func (m *LogicalPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LogicalPort.Marshal(b, m, deterministic)
 }
-func (dst *LogicalPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalPort.Merge(dst, src)
+func (m *LogicalPort) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogicalPort.Merge(m, src)
 }
 func (m *LogicalPort) XXX_Size() int {
 	return xxx_messageInfo_LogicalPort.Size(m)
@@ -158,16 +162,17 @@
 func (m *LogicalPorts) String() string { return proto.CompactTextString(m) }
 func (*LogicalPorts) ProtoMessage()    {}
 func (*LogicalPorts) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{2}
+	return fileDescriptor_caf139ab3abc8240, []int{2}
 }
+
 func (m *LogicalPorts) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalPorts.Unmarshal(m, b)
 }
 func (m *LogicalPorts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LogicalPorts.Marshal(b, m, deterministic)
 }
-func (dst *LogicalPorts) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalPorts.Merge(dst, src)
+func (m *LogicalPorts) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogicalPorts.Merge(m, src)
 }
 func (m *LogicalPorts) XXX_Size() int {
 	return xxx_messageInfo_LogicalPorts.Size(m)
@@ -211,16 +216,17 @@
 func (m *LogicalDevice) String() string { return proto.CompactTextString(m) }
 func (*LogicalDevice) ProtoMessage()    {}
 func (*LogicalDevice) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{3}
+	return fileDescriptor_caf139ab3abc8240, []int{3}
 }
+
 func (m *LogicalDevice) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalDevice.Unmarshal(m, b)
 }
 func (m *LogicalDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LogicalDevice.Marshal(b, m, deterministic)
 }
-func (dst *LogicalDevice) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalDevice.Merge(dst, src)
+func (m *LogicalDevice) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogicalDevice.Merge(m, src)
 }
 func (m *LogicalDevice) XXX_Size() int {
 	return xxx_messageInfo_LogicalDevice.Size(m)
@@ -298,16 +304,17 @@
 func (m *LogicalDevices) String() string { return proto.CompactTextString(m) }
 func (*LogicalDevices) ProtoMessage()    {}
 func (*LogicalDevices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{4}
+	return fileDescriptor_caf139ab3abc8240, []int{4}
 }
+
 func (m *LogicalDevices) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalDevices.Unmarshal(m, b)
 }
 func (m *LogicalDevices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LogicalDevices.Marshal(b, m, deterministic)
 }
-func (dst *LogicalDevices) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalDevices.Merge(dst, src)
+func (m *LogicalDevices) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogicalDevices.Merge(m, src)
 }
 func (m *LogicalDevices) XXX_Size() int {
 	return xxx_messageInfo_LogicalDevices.Size(m)
@@ -333,11 +340,9 @@
 	proto.RegisterType((*LogicalDevices)(nil), "voltha.LogicalDevices")
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/logical_device.proto", fileDescriptor_logical_device_eab9968d916b9ed2)
-}
+func init() { proto.RegisterFile("voltha_protos/logical_device.proto", fileDescriptor_caf139ab3abc8240) }
 
-var fileDescriptor_logical_device_eab9968d916b9ed2 = []byte{
+var fileDescriptor_caf139ab3abc8240 = []byte{
 	// 512 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0x4f, 0x6b, 0x13, 0x41,
 	0x14, 0x77, 0x9b, 0x6c, 0x9a, 0xbc, 0x4d, 0x23, 0x8c, 0x94, 0x2e, 0xad, 0xd2, 0xb0, 0x78, 0x48,
diff --git a/go/voltha/ponsim.pb.go b/go/voltha/ponsim.pb.go
index 2fac739..c063668 100644
--- a/go/voltha/ponsim.pb.go
+++ b/go/voltha/ponsim.pb.go
@@ -1,17 +1,18 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/ponsim.proto
 
-package voltha // import "github.com/opencord/voltha-protos/go/voltha"
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import empty "github.com/golang/protobuf/ptypes/empty"
-import openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
+package voltha
 
 import (
-	context "golang.org/x/net/context"
+	context "context"
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	empty "github.com/golang/protobuf/ptypes/empty"
+	openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
 	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	math "math"
 )
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -23,7 +24,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type PonSimOnuDeviceInfo struct {
 	UniPort              int32    `protobuf:"varint,1,opt,name=uni_port,json=uniPort,proto3" json:"uni_port,omitempty"`
@@ -37,16 +38,17 @@
 func (m *PonSimOnuDeviceInfo) String() string { return proto.CompactTextString(m) }
 func (*PonSimOnuDeviceInfo) ProtoMessage()    {}
 func (*PonSimOnuDeviceInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ponsim_bb56e7457209b09b, []int{0}
+	return fileDescriptor_352253851b8ea7c0, []int{0}
 }
+
 func (m *PonSimOnuDeviceInfo) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PonSimOnuDeviceInfo.Unmarshal(m, b)
 }
 func (m *PonSimOnuDeviceInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PonSimOnuDeviceInfo.Marshal(b, m, deterministic)
 }
-func (dst *PonSimOnuDeviceInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PonSimOnuDeviceInfo.Merge(dst, src)
+func (m *PonSimOnuDeviceInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PonSimOnuDeviceInfo.Merge(m, src)
 }
 func (m *PonSimOnuDeviceInfo) XXX_Size() int {
 	return xxx_messageInfo_PonSimOnuDeviceInfo.Size(m)
@@ -83,16 +85,17 @@
 func (m *PonSimDeviceInfo) String() string { return proto.CompactTextString(m) }
 func (*PonSimDeviceInfo) ProtoMessage()    {}
 func (*PonSimDeviceInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ponsim_bb56e7457209b09b, []int{1}
+	return fileDescriptor_352253851b8ea7c0, []int{1}
 }
+
 func (m *PonSimDeviceInfo) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PonSimDeviceInfo.Unmarshal(m, b)
 }
 func (m *PonSimDeviceInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PonSimDeviceInfo.Marshal(b, m, deterministic)
 }
-func (dst *PonSimDeviceInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PonSimDeviceInfo.Merge(dst, src)
+func (m *PonSimDeviceInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PonSimDeviceInfo.Merge(m, src)
 }
 func (m *PonSimDeviceInfo) XXX_Size() int {
 	return xxx_messageInfo_PonSimDeviceInfo.Size(m)
@@ -129,16 +132,17 @@
 func (m *FlowTable) String() string { return proto.CompactTextString(m) }
 func (*FlowTable) ProtoMessage()    {}
 func (*FlowTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ponsim_bb56e7457209b09b, []int{2}
+	return fileDescriptor_352253851b8ea7c0, []int{2}
 }
+
 func (m *FlowTable) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FlowTable.Unmarshal(m, b)
 }
 func (m *FlowTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FlowTable.Marshal(b, m, deterministic)
 }
-func (dst *FlowTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowTable.Merge(dst, src)
+func (m *FlowTable) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FlowTable.Merge(m, src)
 }
 func (m *FlowTable) XXX_Size() int {
 	return xxx_messageInfo_FlowTable.Size(m)
@@ -176,16 +180,17 @@
 func (m *PonSimFrame) String() string { return proto.CompactTextString(m) }
 func (*PonSimFrame) ProtoMessage()    {}
 func (*PonSimFrame) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ponsim_bb56e7457209b09b, []int{3}
+	return fileDescriptor_352253851b8ea7c0, []int{3}
 }
+
 func (m *PonSimFrame) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PonSimFrame.Unmarshal(m, b)
 }
 func (m *PonSimFrame) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PonSimFrame.Marshal(b, m, deterministic)
 }
-func (dst *PonSimFrame) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PonSimFrame.Merge(dst, src)
+func (m *PonSimFrame) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PonSimFrame.Merge(m, src)
 }
 func (m *PonSimFrame) XXX_Size() int {
 	return xxx_messageInfo_PonSimFrame.Size(m)
@@ -229,16 +234,17 @@
 func (m *PonSimPacketCounter) String() string { return proto.CompactTextString(m) }
 func (*PonSimPacketCounter) ProtoMessage()    {}
 func (*PonSimPacketCounter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ponsim_bb56e7457209b09b, []int{4}
+	return fileDescriptor_352253851b8ea7c0, []int{4}
 }
+
 func (m *PonSimPacketCounter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PonSimPacketCounter.Unmarshal(m, b)
 }
 func (m *PonSimPacketCounter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PonSimPacketCounter.Marshal(b, m, deterministic)
 }
-func (dst *PonSimPacketCounter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PonSimPacketCounter.Merge(dst, src)
+func (m *PonSimPacketCounter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PonSimPacketCounter.Merge(m, src)
 }
 func (m *PonSimPacketCounter) XXX_Size() int {
 	return xxx_messageInfo_PonSimPacketCounter.Size(m)
@@ -275,16 +281,17 @@
 func (m *PonSimPortMetrics) String() string { return proto.CompactTextString(m) }
 func (*PonSimPortMetrics) ProtoMessage()    {}
 func (*PonSimPortMetrics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ponsim_bb56e7457209b09b, []int{5}
+	return fileDescriptor_352253851b8ea7c0, []int{5}
 }
+
 func (m *PonSimPortMetrics) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PonSimPortMetrics.Unmarshal(m, b)
 }
 func (m *PonSimPortMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PonSimPortMetrics.Marshal(b, m, deterministic)
 }
-func (dst *PonSimPortMetrics) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PonSimPortMetrics.Merge(dst, src)
+func (m *PonSimPortMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PonSimPortMetrics.Merge(m, src)
 }
 func (m *PonSimPortMetrics) XXX_Size() int {
 	return xxx_messageInfo_PonSimPortMetrics.Size(m)
@@ -321,16 +328,17 @@
 func (m *PonSimMetrics) String() string { return proto.CompactTextString(m) }
 func (*PonSimMetrics) ProtoMessage()    {}
 func (*PonSimMetrics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ponsim_bb56e7457209b09b, []int{6}
+	return fileDescriptor_352253851b8ea7c0, []int{6}
 }
+
 func (m *PonSimMetrics) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PonSimMetrics.Unmarshal(m, b)
 }
 func (m *PonSimMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PonSimMetrics.Marshal(b, m, deterministic)
 }
-func (dst *PonSimMetrics) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PonSimMetrics.Merge(dst, src)
+func (m *PonSimMetrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PonSimMetrics.Merge(m, src)
 }
 func (m *PonSimMetrics) XXX_Size() int {
 	return xxx_messageInfo_PonSimMetrics.Size(m)
@@ -366,16 +374,17 @@
 func (m *PonSimMetricsRequest) String() string { return proto.CompactTextString(m) }
 func (*PonSimMetricsRequest) ProtoMessage()    {}
 func (*PonSimMetricsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ponsim_bb56e7457209b09b, []int{7}
+	return fileDescriptor_352253851b8ea7c0, []int{7}
 }
+
 func (m *PonSimMetricsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PonSimMetricsRequest.Unmarshal(m, b)
 }
 func (m *PonSimMetricsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PonSimMetricsRequest.Marshal(b, m, deterministic)
 }
-func (dst *PonSimMetricsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PonSimMetricsRequest.Merge(dst, src)
+func (m *PonSimMetricsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PonSimMetricsRequest.Merge(m, src)
 }
 func (m *PonSimMetricsRequest) XXX_Size() int {
 	return xxx_messageInfo_PonSimMetricsRequest.Size(m)
@@ -404,6 +413,47 @@
 	proto.RegisterType((*PonSimMetricsRequest)(nil), "voltha.PonSimMetricsRequest")
 }
 
+func init() { proto.RegisterFile("voltha_protos/ponsim.proto", fileDescriptor_352253851b8ea7c0) }
+
+var fileDescriptor_352253851b8ea7c0 = []byte{
+	// 555 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x41, 0x6f, 0xd3, 0x4e,
+	0x10, 0xc5, 0x93, 0xb4, 0x4d, 0x9b, 0x69, 0xf3, 0xff, 0xd3, 0x6d, 0xa9, 0xd2, 0xf4, 0x40, 0xb4,
+	0x5c, 0x22, 0x50, 0x1d, 0xda, 0x88, 0x0b, 0x48, 0x80, 0x28, 0xb4, 0xe2, 0x40, 0x89, 0x36, 0xf4,
+	0x82, 0x10, 0x96, 0x63, 0x4f, 0x52, 0x0b, 0x7b, 0xc7, 0xd8, 0xbb, 0xa9, 0xfa, 0x0d, 0xf9, 0x58,
+	0xc8, 0xbb, 0x36, 0x89, 0xab, 0x84, 0xdb, 0xee, 0xf8, 0xe5, 0xf7, 0xe6, 0x8d, 0x27, 0x86, 0xee,
+	0x9c, 0x22, 0x75, 0xeb, 0xb9, 0x49, 0x4a, 0x8a, 0xb2, 0x41, 0x42, 0x32, 0x0b, 0x63, 0xc7, 0xdc,
+	0x58, 0xd3, 0x3e, 0xeb, 0x9e, 0xcc, 0x88, 0x66, 0x11, 0x0e, 0x4c, 0x75, 0xa2, 0xa7, 0x03, 0x8c,
+	0x13, 0x75, 0x6f, 0x45, 0xdd, 0x27, 0x55, 0x00, 0x25, 0x28, 0xa7, 0x11, 0xdd, 0xb9, 0x67, 0x43,
+	0x2b, 0xe0, 0x37, 0x70, 0x30, 0x22, 0x39, 0x0e, 0xe3, 0x2f, 0x52, 0x7f, 0xc0, 0x79, 0xe8, 0xe3,
+	0x27, 0x39, 0x25, 0x76, 0x0c, 0x3b, 0x5a, 0x86, 0x6e, 0x42, 0xa9, 0xea, 0xd4, 0x7b, 0xf5, 0xfe,
+	0x96, 0xd8, 0xd6, 0x32, 0x1c, 0x51, 0xaa, 0xd8, 0x53, 0x68, 0x67, 0x98, 0x86, 0x5e, 0xe4, 0x4a,
+	0x1d, 0x4f, 0x30, 0xed, 0x34, 0x7a, 0xf5, 0x7e, 0x4b, 0xec, 0xd9, 0xe2, 0xb5, 0xa9, 0xf1, 0x1f,
+	0xf0, 0xc8, 0x62, 0xab, 0x4c, 0xf9, 0x80, 0x29, 0x0b, 0xe6, 0x00, 0x36, 0x49, 0xea, 0xac, 0xd3,
+	0xe8, 0x6d, 0xf4, 0x77, 0xcf, 0x4f, 0x1c, 0xdb, 0xb5, 0xb3, 0xa2, 0x33, 0x61, 0x84, 0x5c, 0x40,
+	0xeb, 0x32, 0xa2, 0xbb, 0xaf, 0xde, 0x24, 0x42, 0xc6, 0x60, 0x73, 0x09, 0x6a, 0xce, 0xec, 0x0c,
+	0xb6, 0xf2, 0xa0, 0x0b, 0xe4, 0x72, 0x74, 0x9a, 0x26, 0xae, 0x39, 0x67, 0xca, 0x53, 0x99, 0xb0,
+	0x4a, 0x2e, 0x60, 0xd7, 0x1a, 0x5e, 0xa6, 0x5e, 0x8c, 0xec, 0x3f, 0x68, 0x84, 0x81, 0x61, 0xb6,
+	0x44, 0x23, 0x0c, 0x58, 0x07, 0xb6, 0x13, 0xef, 0x3e, 0x22, 0x2f, 0x30, 0x89, 0xf7, 0x44, 0x79,
+	0xcd, 0x83, 0x91, 0x56, 0x36, 0xd8, 0x86, 0x0d, 0x46, 0x5a, 0xe5, 0xc1, 0xf8, 0xdb, 0x72, 0xbc,
+	0x23, 0xcf, 0xff, 0x89, 0xea, 0x82, 0xb4, 0x54, 0x98, 0xe6, 0x1d, 0x4b, 0x2f, 0xc6, 0x82, 0x6e,
+	0xce, 0xec, 0x10, 0xb6, 0xe6, 0x5e, 0xa4, 0xd1, 0xd0, 0x37, 0x84, 0xbd, 0xf0, 0x19, 0xec, 0x17,
+	0x00, 0x4a, 0xd5, 0x67, 0x54, 0x69, 0xe8, 0x67, 0xec, 0x04, 0x5a, 0xb9, 0x99, 0xbb, 0xc4, 0xd8,
+	0xc9, 0x0b, 0xd7, 0x39, 0xe7, 0x65, 0xde, 0x67, 0x6e, 0xb6, 0x66, 0x9c, 0x95, 0x4e, 0x44, 0xa9,
+	0xe5, 0xdf, 0xa1, 0x6d, 0x9f, 0x97, 0x26, 0x47, 0xd0, 0x0c, 0xcc, 0xd8, 0x0b, 0x87, 0xe2, 0xc6,
+	0x86, 0xb0, 0x1d, 0x5b, 0x49, 0xc1, 0x3f, 0x7e, 0xc0, 0x5f, 0x34, 0x2a, 0x4a, 0x25, 0x7f, 0x06,
+	0x87, 0x15, 0xba, 0xc0, 0x5f, 0x1a, 0x33, 0xb5, 0xea, 0xd5, 0x9d, 0xff, 0x6e, 0x40, 0xd3, 0x8a,
+	0xd9, 0x2b, 0x68, 0x8d, 0x51, 0x06, 0xf6, 0x85, 0x1c, 0x54, 0x7d, 0x4c, 0xb1, 0x7b, 0xe4, 0xd8,
+	0xf5, 0x77, 0xca, 0xf5, 0x77, 0x3e, 0xe6, 0xeb, 0xcf, 0x6b, 0xec, 0x1d, 0xb4, 0x05, 0xfa, 0x18,
+	0xce, 0xd1, 0x28, 0x33, 0xb6, 0x46, 0xda, 0x5d, 0xc5, 0xe5, 0xb5, 0x17, 0x75, 0x76, 0x01, 0xed,
+	0x2b, 0x54, 0x4b, 0x1b, 0xbc, 0x8e, 0xd0, 0xa9, 0x12, 0x16, 0xbf, 0xe0, 0x35, 0xf6, 0x06, 0xfe,
+	0xbf, 0x49, 0x02, 0x4f, 0xe1, 0x62, 0x5f, 0xf7, 0x4b, 0xf9, 0xdf, 0xd2, 0x3f, 0x62, 0xbc, 0x86,
+	0x9d, 0x2b, 0x54, 0xe3, 0x7c, 0x51, 0xd7, 0xfa, 0x3f, 0xae, 0xfa, 0x17, 0x33, 0xe6, 0xb5, 0xf7,
+	0xa7, 0xdf, 0x9e, 0xcf, 0x42, 0x75, 0xab, 0x27, 0x8e, 0x4f, 0xb1, 0xf9, 0xf7, 0xfb, 0x94, 0x06,
+	0x03, 0xab, 0x3e, 0x2d, 0x3e, 0x0a, 0x33, 0x2a, 0x0a, 0x93, 0xa6, 0xa9, 0x0c, 0xff, 0x04, 0x00,
+	0x00, 0xff, 0xff, 0x62, 0xcb, 0x74, 0xbe, 0x77, 0x04, 0x00, 0x00,
+}
+
 // Reference imports to suppress errors if they are not otherwise used.
 var _ context.Context
 var _ grpc.ClientConn
@@ -508,6 +558,26 @@
 	GetStats(context.Context, *empty.Empty) (*PonSimMetrics, error)
 }
 
+// UnimplementedPonSimServer can be embedded to have forward compatible implementations.
+type UnimplementedPonSimServer struct {
+}
+
+func (*UnimplementedPonSimServer) SendFrame(ctx context.Context, req *PonSimFrame) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SendFrame not implemented")
+}
+func (*UnimplementedPonSimServer) ReceiveFrames(req *empty.Empty, srv PonSim_ReceiveFramesServer) error {
+	return status.Errorf(codes.Unimplemented, "method ReceiveFrames not implemented")
+}
+func (*UnimplementedPonSimServer) GetDeviceInfo(ctx context.Context, req *empty.Empty) (*PonSimDeviceInfo, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceInfo not implemented")
+}
+func (*UnimplementedPonSimServer) UpdateFlowTable(ctx context.Context, req *FlowTable) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateFlowTable not implemented")
+}
+func (*UnimplementedPonSimServer) GetStats(ctx context.Context, req *empty.Empty) (*PonSimMetrics, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetStats not implemented")
+}
+
 func RegisterPonSimServer(s *grpc.Server, srv PonSimServer) {
 	s.RegisterService(&_PonSim_serviceDesc, srv)
 }
@@ -635,44 +705,3 @@
 	},
 	Metadata: "voltha_protos/ponsim.proto",
 }
-
-func init() { proto.RegisterFile("voltha_protos/ponsim.proto", fileDescriptor_ponsim_bb56e7457209b09b) }
-
-var fileDescriptor_ponsim_bb56e7457209b09b = []byte{
-	// 555 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x41, 0x6f, 0xd3, 0x4e,
-	0x10, 0xc5, 0x93, 0xb4, 0x4d, 0x9b, 0x69, 0xf3, 0xff, 0xd3, 0x6d, 0xa9, 0xd2, 0xf4, 0x40, 0xb4,
-	0x5c, 0x22, 0x50, 0x1d, 0xda, 0x88, 0x0b, 0x48, 0x80, 0x28, 0xb4, 0xe2, 0x40, 0x89, 0x36, 0xf4,
-	0x82, 0x10, 0x96, 0x63, 0x4f, 0x52, 0x0b, 0x7b, 0xc7, 0xd8, 0xbb, 0xa9, 0xfa, 0x0d, 0xf9, 0x58,
-	0xc8, 0xbb, 0x36, 0x89, 0xab, 0x84, 0xdb, 0xee, 0xf8, 0xe5, 0xf7, 0xe6, 0x8d, 0x27, 0x86, 0xee,
-	0x9c, 0x22, 0x75, 0xeb, 0xb9, 0x49, 0x4a, 0x8a, 0xb2, 0x41, 0x42, 0x32, 0x0b, 0x63, 0xc7, 0xdc,
-	0x58, 0xd3, 0x3e, 0xeb, 0x9e, 0xcc, 0x88, 0x66, 0x11, 0x0e, 0x4c, 0x75, 0xa2, 0xa7, 0x03, 0x8c,
-	0x13, 0x75, 0x6f, 0x45, 0xdd, 0x27, 0x55, 0x00, 0x25, 0x28, 0xa7, 0x11, 0xdd, 0xb9, 0x67, 0x43,
-	0x2b, 0xe0, 0x37, 0x70, 0x30, 0x22, 0x39, 0x0e, 0xe3, 0x2f, 0x52, 0x7f, 0xc0, 0x79, 0xe8, 0xe3,
-	0x27, 0x39, 0x25, 0x76, 0x0c, 0x3b, 0x5a, 0x86, 0x6e, 0x42, 0xa9, 0xea, 0xd4, 0x7b, 0xf5, 0xfe,
-	0x96, 0xd8, 0xd6, 0x32, 0x1c, 0x51, 0xaa, 0xd8, 0x53, 0x68, 0x67, 0x98, 0x86, 0x5e, 0xe4, 0x4a,
-	0x1d, 0x4f, 0x30, 0xed, 0x34, 0x7a, 0xf5, 0x7e, 0x4b, 0xec, 0xd9, 0xe2, 0xb5, 0xa9, 0xf1, 0x1f,
-	0xf0, 0xc8, 0x62, 0xab, 0x4c, 0xf9, 0x80, 0x29, 0x0b, 0xe6, 0x00, 0x36, 0x49, 0xea, 0xac, 0xd3,
-	0xe8, 0x6d, 0xf4, 0x77, 0xcf, 0x4f, 0x1c, 0xdb, 0xb5, 0xb3, 0xa2, 0x33, 0x61, 0x84, 0x5c, 0x40,
-	0xeb, 0x32, 0xa2, 0xbb, 0xaf, 0xde, 0x24, 0x42, 0xc6, 0x60, 0x73, 0x09, 0x6a, 0xce, 0xec, 0x0c,
-	0xb6, 0xf2, 0xa0, 0x0b, 0xe4, 0x72, 0x74, 0x9a, 0x26, 0xae, 0x39, 0x67, 0xca, 0x53, 0x99, 0xb0,
-	0x4a, 0x2e, 0x60, 0xd7, 0x1a, 0x5e, 0xa6, 0x5e, 0x8c, 0xec, 0x3f, 0x68, 0x84, 0x81, 0x61, 0xb6,
-	0x44, 0x23, 0x0c, 0x58, 0x07, 0xb6, 0x13, 0xef, 0x3e, 0x22, 0x2f, 0x30, 0x89, 0xf7, 0x44, 0x79,
-	0xcd, 0x83, 0x91, 0x56, 0x36, 0xd8, 0x86, 0x0d, 0x46, 0x5a, 0xe5, 0xc1, 0xf8, 0xdb, 0x72, 0xbc,
-	0x23, 0xcf, 0xff, 0x89, 0xea, 0x82, 0xb4, 0x54, 0x98, 0xe6, 0x1d, 0x4b, 0x2f, 0xc6, 0x82, 0x6e,
-	0xce, 0xec, 0x10, 0xb6, 0xe6, 0x5e, 0xa4, 0xd1, 0xd0, 0x37, 0x84, 0xbd, 0xf0, 0x19, 0xec, 0x17,
-	0x00, 0x4a, 0xd5, 0x67, 0x54, 0x69, 0xe8, 0x67, 0xec, 0x04, 0x5a, 0xb9, 0x99, 0xbb, 0xc4, 0xd8,
-	0xc9, 0x0b, 0xd7, 0x39, 0xe7, 0x65, 0xde, 0x67, 0x6e, 0xb6, 0x66, 0x9c, 0x95, 0x4e, 0x44, 0xa9,
-	0xe5, 0xdf, 0xa1, 0x6d, 0x9f, 0x97, 0x26, 0x47, 0xd0, 0x0c, 0xcc, 0xd8, 0x0b, 0x87, 0xe2, 0xc6,
-	0x86, 0xb0, 0x1d, 0x5b, 0x49, 0xc1, 0x3f, 0x7e, 0xc0, 0x5f, 0x34, 0x2a, 0x4a, 0x25, 0x7f, 0x06,
-	0x87, 0x15, 0xba, 0xc0, 0x5f, 0x1a, 0x33, 0xb5, 0xea, 0xd5, 0x9d, 0xff, 0x6e, 0x40, 0xd3, 0x8a,
-	0xd9, 0x2b, 0x68, 0x8d, 0x51, 0x06, 0xf6, 0x85, 0x1c, 0x54, 0x7d, 0x4c, 0xb1, 0x7b, 0xe4, 0xd8,
-	0xf5, 0x77, 0xca, 0xf5, 0x77, 0x3e, 0xe6, 0xeb, 0xcf, 0x6b, 0xec, 0x1d, 0xb4, 0x05, 0xfa, 0x18,
-	0xce, 0xd1, 0x28, 0x33, 0xb6, 0x46, 0xda, 0x5d, 0xc5, 0xe5, 0xb5, 0x17, 0x75, 0x76, 0x01, 0xed,
-	0x2b, 0x54, 0x4b, 0x1b, 0xbc, 0x8e, 0xd0, 0xa9, 0x12, 0x16, 0xbf, 0xe0, 0x35, 0xf6, 0x06, 0xfe,
-	0xbf, 0x49, 0x02, 0x4f, 0xe1, 0x62, 0x5f, 0xf7, 0x4b, 0xf9, 0xdf, 0xd2, 0x3f, 0x62, 0xbc, 0x86,
-	0x9d, 0x2b, 0x54, 0xe3, 0x7c, 0x51, 0xd7, 0xfa, 0x3f, 0xae, 0xfa, 0x17, 0x33, 0xe6, 0xb5, 0xf7,
-	0xa7, 0xdf, 0x9e, 0xcf, 0x42, 0x75, 0xab, 0x27, 0x8e, 0x4f, 0xb1, 0xf9, 0xf7, 0xfb, 0x94, 0x06,
-	0x03, 0xab, 0x3e, 0x2d, 0x3e, 0x0a, 0x33, 0x2a, 0x0a, 0x93, 0xa6, 0xa9, 0x0c, 0xff, 0x04, 0x00,
-	0x00, 0xff, 0xff, 0x62, 0xcb, 0x74, 0xbe, 0x77, 0x04, 0x00, 0x00,
-}
diff --git a/go/voltha/voltha.pb.go b/go/voltha/voltha.pb.go
index b0c42b0..0ddf204 100644
--- a/go/voltha/voltha.pb.go
+++ b/go/voltha/voltha.pb.go
@@ -1,20 +1,21 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/voltha.proto
 
-package voltha // import "github.com/opencord/voltha-protos/go/voltha"
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import empty "github.com/golang/protobuf/ptypes/empty"
-import common "github.com/opencord/voltha-protos/go/common"
-import omci "github.com/opencord/voltha-protos/go/omci"
-import openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
-import _ "google.golang.org/genproto/googleapis/api/annotations"
+package voltha
 
 import (
-	context "golang.org/x/net/context"
+	context "context"
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	empty "github.com/golang/protobuf/ptypes/empty"
+	common "github.com/opencord/voltha-protos/go/common"
+	omci "github.com/opencord/voltha-protos/go/omci"
+	openflow_13 "github.com/opencord/voltha-protos/go/openflow_13"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	math "math"
 )
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -26,7 +27,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 // ChildNode from public import voltha_protos/meta.proto
 type ChildNode = common.ChildNode
@@ -41,10 +42,8 @@
 const Access_READ_ONLY = Access(common.Access_READ_ONLY)
 const Access_REAL_TIME = Access(common.Access_REAL_TIME)
 
-// child_node from public import voltha_protos/meta.proto
 var E_ChildNode = common.E_ChildNode
 
-// access from public import voltha_protos/meta.proto
 var E_Access = common.E_Access
 
 // ID from public import voltha_protos/common.proto
@@ -76,7 +75,7 @@
 
 const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
 
-// LogLevel from public import voltha_protos/common.proto
+// LogLevel_LogLevel from public import voltha_protos/common.proto
 type LogLevel_LogLevel = common.LogLevel_LogLevel
 
 var LogLevel_LogLevel_name = common.LogLevel_LogLevel_name
@@ -89,7 +88,7 @@
 const LogLevel_CRITICAL = LogLevel_LogLevel(common.LogLevel_CRITICAL)
 const LogLevel_FATAL = LogLevel_LogLevel(common.LogLevel_FATAL)
 
-// AdminState from public import voltha_protos/common.proto
+// AdminState_AdminState from public import voltha_protos/common.proto
 type AdminState_AdminState = common.AdminState_AdminState
 
 var AdminState_AdminState_name = common.AdminState_AdminState_name
@@ -102,7 +101,7 @@
 const AdminState_DOWNLOADING_IMAGE = AdminState_AdminState(common.AdminState_DOWNLOADING_IMAGE)
 const AdminState_DELETED = AdminState_AdminState(common.AdminState_DELETED)
 
-// OperStatus from public import voltha_protos/common.proto
+// OperStatus_OperStatus from public import voltha_protos/common.proto
 type OperStatus_OperStatus = common.OperStatus_OperStatus
 
 var OperStatus_OperStatus_name = common.OperStatus_OperStatus_name
@@ -115,7 +114,7 @@
 const OperStatus_ACTIVE = OperStatus_OperStatus(common.OperStatus_ACTIVE)
 const OperStatus_FAILED = OperStatus_OperStatus(common.OperStatus_FAILED)
 
-// ConnectStatus from public import voltha_protos/common.proto
+// ConnectStatus_ConnectStatus from public import voltha_protos/common.proto
 type ConnectStatus_ConnectStatus = common.ConnectStatus_ConnectStatus
 
 var ConnectStatus_ConnectStatus_name = common.ConnectStatus_ConnectStatus_name
@@ -125,7 +124,7 @@
 const ConnectStatus_UNREACHABLE = ConnectStatus_ConnectStatus(common.ConnectStatus_UNREACHABLE)
 const ConnectStatus_REACHABLE = ConnectStatus_ConnectStatus(common.ConnectStatus_REACHABLE)
 
-// OperationReturnCode from public import voltha_protos/common.proto
+// OperationResp_OperationReturnCode from public import voltha_protos/common.proto
 type OperationResp_OperationReturnCode = common.OperationResp_OperationReturnCode
 
 var OperationResp_OperationReturnCode_name = common.OperationResp_OperationReturnCode_name
@@ -135,110 +134,46 @@
 const OperationResp_OPERATION_FAILURE = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_FAILURE)
 const OperationResp_OPERATION_UNSUPPORTED = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_UNSUPPORTED)
 
-// Ignoring public import of HealthStatus from voltha_protos/health.proto
-
-// Ignoring public import of HealthState from voltha_protos/health.proto
-
-// Ignoring public import of LogicalPortId from voltha_protos/logical_device.proto
-
-// Ignoring public import of LogicalPort from voltha_protos/logical_device.proto
-
-// Ignoring public import of LogicalPorts from voltha_protos/logical_device.proto
-
-// Ignoring public import of LogicalDevice from voltha_protos/logical_device.proto
-
-// Ignoring public import of LogicalDevices from voltha_protos/logical_device.proto
-
-// Ignoring public import of DeviceType from voltha_protos/device.proto
-
-// Ignoring public import of DeviceTypes from voltha_protos/device.proto
-
-// Ignoring public import of PmConfig from voltha_protos/device.proto
-
-// Ignoring public import of PmGroupConfig from voltha_protos/device.proto
-
-// Ignoring public import of PmConfigs from voltha_protos/device.proto
-
-// Ignoring public import of Image from voltha_protos/device.proto
-
-// Ignoring public import of Images from voltha_protos/device.proto
-
-// Ignoring public import of ImageDownload from voltha_protos/device.proto
-
-// Ignoring public import of ImageDownloads from voltha_protos/device.proto
-
-// Ignoring public import of Port from voltha_protos/device.proto
-
-// Ignoring public import of PeerPort from voltha_protos/device.proto
-
-// Ignoring public import of Ports from voltha_protos/device.proto
-
-// Ignoring public import of Device from voltha_protos/device.proto
-
-// Ignoring public import of ProxyAddress from voltha_protos/device.proto
-
-// Ignoring public import of Devices from voltha_protos/device.proto
-
-// Ignoring public import of SimulateAlarmRequest from voltha_protos/device.proto
-
-// Ignoring public import of PmType from voltha_protos/device.proto
-
-// Ignoring public import of ImageDownloadState from voltha_protos/device.proto
-
-// Ignoring public import of ImageDownloadFailureReason from voltha_protos/device.proto
-
-// Ignoring public import of ImageActivateState from voltha_protos/device.proto
-
-// Ignoring public import of PortType from voltha_protos/device.proto
-
-// Ignoring public import of OperationType from voltha_protos/device.proto
-
-// Ignoring public import of AdapterConfig from voltha_protos/adapter.proto
-
-// Ignoring public import of Adapter from voltha_protos/adapter.proto
-
-// Ignoring public import of Adapters from voltha_protos/adapter.proto
-
-// ofp_header from public import voltha_protos/openflow_13.proto
+// OfpHeader from public import voltha_protos/openflow_13.proto
 type OfpHeader = openflow_13.OfpHeader
 
-// ofp_hello_elem_header from public import voltha_protos/openflow_13.proto
+// OfpHelloElemHeader from public import voltha_protos/openflow_13.proto
 type OfpHelloElemHeader = openflow_13.OfpHelloElemHeader
 type OfpHelloElemHeader_Versionbitmap = openflow_13.OfpHelloElemHeader_Versionbitmap
 
-// ofp_hello_elem_versionbitmap from public import voltha_protos/openflow_13.proto
+// OfpHelloElemVersionbitmap from public import voltha_protos/openflow_13.proto
 type OfpHelloElemVersionbitmap = openflow_13.OfpHelloElemVersionbitmap
 
-// ofp_hello from public import voltha_protos/openflow_13.proto
+// OfpHello from public import voltha_protos/openflow_13.proto
 type OfpHello = openflow_13.OfpHello
 
-// ofp_switch_config from public import voltha_protos/openflow_13.proto
+// OfpSwitchConfig from public import voltha_protos/openflow_13.proto
 type OfpSwitchConfig = openflow_13.OfpSwitchConfig
 
-// ofp_table_mod from public import voltha_protos/openflow_13.proto
+// OfpTableMod from public import voltha_protos/openflow_13.proto
 type OfpTableMod = openflow_13.OfpTableMod
 
-// ofp_port from public import voltha_protos/openflow_13.proto
+// OfpPort from public import voltha_protos/openflow_13.proto
 type OfpPort = openflow_13.OfpPort
 
-// ofp_switch_features from public import voltha_protos/openflow_13.proto
+// OfpSwitchFeatures from public import voltha_protos/openflow_13.proto
 type OfpSwitchFeatures = openflow_13.OfpSwitchFeatures
 
-// ofp_port_status from public import voltha_protos/openflow_13.proto
+// OfpPortStatus from public import voltha_protos/openflow_13.proto
 type OfpPortStatus = openflow_13.OfpPortStatus
 
-// ofp_port_mod from public import voltha_protos/openflow_13.proto
+// OfpPortMod from public import voltha_protos/openflow_13.proto
 type OfpPortMod = openflow_13.OfpPortMod
 
-// ofp_match from public import voltha_protos/openflow_13.proto
+// OfpMatch from public import voltha_protos/openflow_13.proto
 type OfpMatch = openflow_13.OfpMatch
 
-// ofp_oxm_field from public import voltha_protos/openflow_13.proto
+// OfpOxmField from public import voltha_protos/openflow_13.proto
 type OfpOxmField = openflow_13.OfpOxmField
 type OfpOxmField_OfbField = openflow_13.OfpOxmField_OfbField
 type OfpOxmField_ExperimenterField = openflow_13.OfpOxmField_ExperimenterField
 
-// ofp_oxm_ofb_field from public import voltha_protos/openflow_13.proto
+// OfpOxmOfbField from public import voltha_protos/openflow_13.proto
 type OfpOxmOfbField = openflow_13.OfpOxmOfbField
 type OfpOxmOfbField_Port = openflow_13.OfpOxmOfbField_Port
 type OfpOxmOfbField_PhysicalPort = openflow_13.OfpOxmOfbField_PhysicalPort
@@ -295,10 +230,10 @@
 type OfpOxmOfbField_TunnelIdMask = openflow_13.OfpOxmOfbField_TunnelIdMask
 type OfpOxmOfbField_Ipv6ExthdrMask = openflow_13.OfpOxmOfbField_Ipv6ExthdrMask
 
-// ofp_oxm_experimenter_field from public import voltha_protos/openflow_13.proto
+// OfpOxmExperimenterField from public import voltha_protos/openflow_13.proto
 type OfpOxmExperimenterField = openflow_13.OfpOxmExperimenterField
 
-// ofp_action from public import voltha_protos/openflow_13.proto
+// OfpAction from public import voltha_protos/openflow_13.proto
 type OfpAction = openflow_13.OfpAction
 type OfpAction_Output = openflow_13.OfpAction_Output
 type OfpAction_MplsTtl = openflow_13.OfpAction_MplsTtl
@@ -309,31 +244,31 @@
 type OfpAction_SetField = openflow_13.OfpAction_SetField
 type OfpAction_Experimenter = openflow_13.OfpAction_Experimenter
 
-// ofp_action_output from public import voltha_protos/openflow_13.proto
+// OfpActionOutput from public import voltha_protos/openflow_13.proto
 type OfpActionOutput = openflow_13.OfpActionOutput
 
-// ofp_action_mpls_ttl from public import voltha_protos/openflow_13.proto
+// OfpActionMplsTtl from public import voltha_protos/openflow_13.proto
 type OfpActionMplsTtl = openflow_13.OfpActionMplsTtl
 
-// ofp_action_push from public import voltha_protos/openflow_13.proto
+// OfpActionPush from public import voltha_protos/openflow_13.proto
 type OfpActionPush = openflow_13.OfpActionPush
 
-// ofp_action_pop_mpls from public import voltha_protos/openflow_13.proto
+// OfpActionPopMpls from public import voltha_protos/openflow_13.proto
 type OfpActionPopMpls = openflow_13.OfpActionPopMpls
 
-// ofp_action_group from public import voltha_protos/openflow_13.proto
+// OfpActionGroup from public import voltha_protos/openflow_13.proto
 type OfpActionGroup = openflow_13.OfpActionGroup
 
-// ofp_action_nw_ttl from public import voltha_protos/openflow_13.proto
+// OfpActionNwTtl from public import voltha_protos/openflow_13.proto
 type OfpActionNwTtl = openflow_13.OfpActionNwTtl
 
-// ofp_action_set_field from public import voltha_protos/openflow_13.proto
+// OfpActionSetField from public import voltha_protos/openflow_13.proto
 type OfpActionSetField = openflow_13.OfpActionSetField
 
-// ofp_action_experimenter from public import voltha_protos/openflow_13.proto
+// OfpActionExperimenter from public import voltha_protos/openflow_13.proto
 type OfpActionExperimenter = openflow_13.OfpActionExperimenter
 
-// ofp_instruction from public import voltha_protos/openflow_13.proto
+// OfpInstruction from public import voltha_protos/openflow_13.proto
 type OfpInstruction = openflow_13.OfpInstruction
 type OfpInstruction_GotoTable = openflow_13.OfpInstruction_GotoTable
 type OfpInstruction_WriteMetadata = openflow_13.OfpInstruction_WriteMetadata
@@ -341,85 +276,85 @@
 type OfpInstruction_Meter = openflow_13.OfpInstruction_Meter
 type OfpInstruction_Experimenter = openflow_13.OfpInstruction_Experimenter
 
-// ofp_instruction_goto_table from public import voltha_protos/openflow_13.proto
+// OfpInstructionGotoTable from public import voltha_protos/openflow_13.proto
 type OfpInstructionGotoTable = openflow_13.OfpInstructionGotoTable
 
-// ofp_instruction_write_metadata from public import voltha_protos/openflow_13.proto
+// OfpInstructionWriteMetadata from public import voltha_protos/openflow_13.proto
 type OfpInstructionWriteMetadata = openflow_13.OfpInstructionWriteMetadata
 
-// ofp_instruction_actions from public import voltha_protos/openflow_13.proto
+// OfpInstructionActions from public import voltha_protos/openflow_13.proto
 type OfpInstructionActions = openflow_13.OfpInstructionActions
 
-// ofp_instruction_meter from public import voltha_protos/openflow_13.proto
+// OfpInstructionMeter from public import voltha_protos/openflow_13.proto
 type OfpInstructionMeter = openflow_13.OfpInstructionMeter
 
-// ofp_instruction_experimenter from public import voltha_protos/openflow_13.proto
+// OfpInstructionExperimenter from public import voltha_protos/openflow_13.proto
 type OfpInstructionExperimenter = openflow_13.OfpInstructionExperimenter
 
-// ofp_flow_mod from public import voltha_protos/openflow_13.proto
+// OfpFlowMod from public import voltha_protos/openflow_13.proto
 type OfpFlowMod = openflow_13.OfpFlowMod
 
-// ofp_bucket from public import voltha_protos/openflow_13.proto
+// OfpBucket from public import voltha_protos/openflow_13.proto
 type OfpBucket = openflow_13.OfpBucket
 
-// ofp_group_mod from public import voltha_protos/openflow_13.proto
+// OfpGroupMod from public import voltha_protos/openflow_13.proto
 type OfpGroupMod = openflow_13.OfpGroupMod
 
-// ofp_packet_out from public import voltha_protos/openflow_13.proto
+// OfpPacketOut from public import voltha_protos/openflow_13.proto
 type OfpPacketOut = openflow_13.OfpPacketOut
 
-// ofp_packet_in from public import voltha_protos/openflow_13.proto
+// OfpPacketIn from public import voltha_protos/openflow_13.proto
 type OfpPacketIn = openflow_13.OfpPacketIn
 
-// ofp_flow_removed from public import voltha_protos/openflow_13.proto
+// OfpFlowRemoved from public import voltha_protos/openflow_13.proto
 type OfpFlowRemoved = openflow_13.OfpFlowRemoved
 
-// ofp_meter_band_header from public import voltha_protos/openflow_13.proto
+// OfpMeterBandHeader from public import voltha_protos/openflow_13.proto
 type OfpMeterBandHeader = openflow_13.OfpMeterBandHeader
 type OfpMeterBandHeader_Drop = openflow_13.OfpMeterBandHeader_Drop
 type OfpMeterBandHeader_DscpRemark = openflow_13.OfpMeterBandHeader_DscpRemark
 type OfpMeterBandHeader_Experimenter = openflow_13.OfpMeterBandHeader_Experimenter
 
-// ofp_meter_band_drop from public import voltha_protos/openflow_13.proto
+// OfpMeterBandDrop from public import voltha_protos/openflow_13.proto
 type OfpMeterBandDrop = openflow_13.OfpMeterBandDrop
 
-// ofp_meter_band_dscp_remark from public import voltha_protos/openflow_13.proto
+// OfpMeterBandDscpRemark from public import voltha_protos/openflow_13.proto
 type OfpMeterBandDscpRemark = openflow_13.OfpMeterBandDscpRemark
 
-// ofp_meter_band_experimenter from public import voltha_protos/openflow_13.proto
+// OfpMeterBandExperimenter from public import voltha_protos/openflow_13.proto
 type OfpMeterBandExperimenter = openflow_13.OfpMeterBandExperimenter
 
-// ofp_meter_mod from public import voltha_protos/openflow_13.proto
+// OfpMeterMod from public import voltha_protos/openflow_13.proto
 type OfpMeterMod = openflow_13.OfpMeterMod
 
-// ofp_error_msg from public import voltha_protos/openflow_13.proto
+// OfpErrorMsg from public import voltha_protos/openflow_13.proto
 type OfpErrorMsg = openflow_13.OfpErrorMsg
 
-// ofp_error_experimenter_msg from public import voltha_protos/openflow_13.proto
+// OfpErrorExperimenterMsg from public import voltha_protos/openflow_13.proto
 type OfpErrorExperimenterMsg = openflow_13.OfpErrorExperimenterMsg
 
-// ofp_multipart_request from public import voltha_protos/openflow_13.proto
+// OfpMultipartRequest from public import voltha_protos/openflow_13.proto
 type OfpMultipartRequest = openflow_13.OfpMultipartRequest
 
-// ofp_multipart_reply from public import voltha_protos/openflow_13.proto
+// OfpMultipartReply from public import voltha_protos/openflow_13.proto
 type OfpMultipartReply = openflow_13.OfpMultipartReply
 
-// ofp_desc from public import voltha_protos/openflow_13.proto
+// OfpDesc from public import voltha_protos/openflow_13.proto
 type OfpDesc = openflow_13.OfpDesc
 
-// ofp_flow_stats_request from public import voltha_protos/openflow_13.proto
+// OfpFlowStatsRequest from public import voltha_protos/openflow_13.proto
 type OfpFlowStatsRequest = openflow_13.OfpFlowStatsRequest
 
-// ofp_flow_stats from public import voltha_protos/openflow_13.proto
+// OfpFlowStats from public import voltha_protos/openflow_13.proto
 type OfpFlowStats = openflow_13.OfpFlowStats
 
-// ofp_aggregate_stats_request from public import voltha_protos/openflow_13.proto
+// OfpAggregateStatsRequest from public import voltha_protos/openflow_13.proto
 type OfpAggregateStatsRequest = openflow_13.OfpAggregateStatsRequest
 
-// ofp_aggregate_stats_reply from public import voltha_protos/openflow_13.proto
+// OfpAggregateStatsReply from public import voltha_protos/openflow_13.proto
 type OfpAggregateStatsReply = openflow_13.OfpAggregateStatsReply
 
-// ofp_table_feature_property from public import voltha_protos/openflow_13.proto
+// OfpTableFeatureProperty from public import voltha_protos/openflow_13.proto
 type OfpTableFeatureProperty = openflow_13.OfpTableFeatureProperty
 type OfpTableFeatureProperty_Instructions = openflow_13.OfpTableFeatureProperty_Instructions
 type OfpTableFeatureProperty_NextTables = openflow_13.OfpTableFeatureProperty_NextTables
@@ -427,106 +362,106 @@
 type OfpTableFeatureProperty_Oxm = openflow_13.OfpTableFeatureProperty_Oxm
 type OfpTableFeatureProperty_Experimenter = openflow_13.OfpTableFeatureProperty_Experimenter
 
-// ofp_table_feature_prop_instructions from public import voltha_protos/openflow_13.proto
+// OfpTableFeaturePropInstructions from public import voltha_protos/openflow_13.proto
 type OfpTableFeaturePropInstructions = openflow_13.OfpTableFeaturePropInstructions
 
-// ofp_table_feature_prop_next_tables from public import voltha_protos/openflow_13.proto
+// OfpTableFeaturePropNextTables from public import voltha_protos/openflow_13.proto
 type OfpTableFeaturePropNextTables = openflow_13.OfpTableFeaturePropNextTables
 
-// ofp_table_feature_prop_actions from public import voltha_protos/openflow_13.proto
+// OfpTableFeaturePropActions from public import voltha_protos/openflow_13.proto
 type OfpTableFeaturePropActions = openflow_13.OfpTableFeaturePropActions
 
-// ofp_table_feature_prop_oxm from public import voltha_protos/openflow_13.proto
+// OfpTableFeaturePropOxm from public import voltha_protos/openflow_13.proto
 type OfpTableFeaturePropOxm = openflow_13.OfpTableFeaturePropOxm
 
-// ofp_table_feature_prop_experimenter from public import voltha_protos/openflow_13.proto
+// OfpTableFeaturePropExperimenter from public import voltha_protos/openflow_13.proto
 type OfpTableFeaturePropExperimenter = openflow_13.OfpTableFeaturePropExperimenter
 
-// ofp_table_features from public import voltha_protos/openflow_13.proto
+// OfpTableFeatures from public import voltha_protos/openflow_13.proto
 type OfpTableFeatures = openflow_13.OfpTableFeatures
 
-// ofp_table_stats from public import voltha_protos/openflow_13.proto
+// OfpTableStats from public import voltha_protos/openflow_13.proto
 type OfpTableStats = openflow_13.OfpTableStats
 
-// ofp_port_stats_request from public import voltha_protos/openflow_13.proto
+// OfpPortStatsRequest from public import voltha_protos/openflow_13.proto
 type OfpPortStatsRequest = openflow_13.OfpPortStatsRequest
 
-// ofp_port_stats from public import voltha_protos/openflow_13.proto
+// OfpPortStats from public import voltha_protos/openflow_13.proto
 type OfpPortStats = openflow_13.OfpPortStats
 
-// ofp_group_stats_request from public import voltha_protos/openflow_13.proto
+// OfpGroupStatsRequest from public import voltha_protos/openflow_13.proto
 type OfpGroupStatsRequest = openflow_13.OfpGroupStatsRequest
 
-// ofp_bucket_counter from public import voltha_protos/openflow_13.proto
+// OfpBucketCounter from public import voltha_protos/openflow_13.proto
 type OfpBucketCounter = openflow_13.OfpBucketCounter
 
-// ofp_group_stats from public import voltha_protos/openflow_13.proto
+// OfpGroupStats from public import voltha_protos/openflow_13.proto
 type OfpGroupStats = openflow_13.OfpGroupStats
 
-// ofp_group_desc from public import voltha_protos/openflow_13.proto
+// OfpGroupDesc from public import voltha_protos/openflow_13.proto
 type OfpGroupDesc = openflow_13.OfpGroupDesc
 
-// ofp_group_entry from public import voltha_protos/openflow_13.proto
+// OfpGroupEntry from public import voltha_protos/openflow_13.proto
 type OfpGroupEntry = openflow_13.OfpGroupEntry
 
-// ofp_group_features from public import voltha_protos/openflow_13.proto
+// OfpGroupFeatures from public import voltha_protos/openflow_13.proto
 type OfpGroupFeatures = openflow_13.OfpGroupFeatures
 
-// ofp_meter_multipart_request from public import voltha_protos/openflow_13.proto
+// OfpMeterMultipartRequest from public import voltha_protos/openflow_13.proto
 type OfpMeterMultipartRequest = openflow_13.OfpMeterMultipartRequest
 
-// ofp_meter_band_stats from public import voltha_protos/openflow_13.proto
+// OfpMeterBandStats from public import voltha_protos/openflow_13.proto
 type OfpMeterBandStats = openflow_13.OfpMeterBandStats
 
-// ofp_meter_stats from public import voltha_protos/openflow_13.proto
+// OfpMeterStats from public import voltha_protos/openflow_13.proto
 type OfpMeterStats = openflow_13.OfpMeterStats
 
-// ofp_meter_config from public import voltha_protos/openflow_13.proto
+// OfpMeterConfig from public import voltha_protos/openflow_13.proto
 type OfpMeterConfig = openflow_13.OfpMeterConfig
 
-// ofp_meter_features from public import voltha_protos/openflow_13.proto
+// OfpMeterFeatures from public import voltha_protos/openflow_13.proto
 type OfpMeterFeatures = openflow_13.OfpMeterFeatures
 
-// ofp_experimenter_multipart_header from public import voltha_protos/openflow_13.proto
+// OfpExperimenterMultipartHeader from public import voltha_protos/openflow_13.proto
 type OfpExperimenterMultipartHeader = openflow_13.OfpExperimenterMultipartHeader
 
-// ofp_experimenter_header from public import voltha_protos/openflow_13.proto
+// OfpExperimenterHeader from public import voltha_protos/openflow_13.proto
 type OfpExperimenterHeader = openflow_13.OfpExperimenterHeader
 
-// ofp_queue_prop_header from public import voltha_protos/openflow_13.proto
+// OfpQueuePropHeader from public import voltha_protos/openflow_13.proto
 type OfpQueuePropHeader = openflow_13.OfpQueuePropHeader
 
-// ofp_queue_prop_min_rate from public import voltha_protos/openflow_13.proto
+// OfpQueuePropMinRate from public import voltha_protos/openflow_13.proto
 type OfpQueuePropMinRate = openflow_13.OfpQueuePropMinRate
 
-// ofp_queue_prop_max_rate from public import voltha_protos/openflow_13.proto
+// OfpQueuePropMaxRate from public import voltha_protos/openflow_13.proto
 type OfpQueuePropMaxRate = openflow_13.OfpQueuePropMaxRate
 
-// ofp_queue_prop_experimenter from public import voltha_protos/openflow_13.proto
+// OfpQueuePropExperimenter from public import voltha_protos/openflow_13.proto
 type OfpQueuePropExperimenter = openflow_13.OfpQueuePropExperimenter
 
-// ofp_packet_queue from public import voltha_protos/openflow_13.proto
+// OfpPacketQueue from public import voltha_protos/openflow_13.proto
 type OfpPacketQueue = openflow_13.OfpPacketQueue
 
-// ofp_queue_get_config_request from public import voltha_protos/openflow_13.proto
+// OfpQueueGetConfigRequest from public import voltha_protos/openflow_13.proto
 type OfpQueueGetConfigRequest = openflow_13.OfpQueueGetConfigRequest
 
-// ofp_queue_get_config_reply from public import voltha_protos/openflow_13.proto
+// OfpQueueGetConfigReply from public import voltha_protos/openflow_13.proto
 type OfpQueueGetConfigReply = openflow_13.OfpQueueGetConfigReply
 
-// ofp_action_set_queue from public import voltha_protos/openflow_13.proto
+// OfpActionSetQueue from public import voltha_protos/openflow_13.proto
 type OfpActionSetQueue = openflow_13.OfpActionSetQueue
 
-// ofp_queue_stats_request from public import voltha_protos/openflow_13.proto
+// OfpQueueStatsRequest from public import voltha_protos/openflow_13.proto
 type OfpQueueStatsRequest = openflow_13.OfpQueueStatsRequest
 
-// ofp_queue_stats from public import voltha_protos/openflow_13.proto
+// OfpQueueStats from public import voltha_protos/openflow_13.proto
 type OfpQueueStats = openflow_13.OfpQueueStats
 
-// ofp_role_request from public import voltha_protos/openflow_13.proto
+// OfpRoleRequest from public import voltha_protos/openflow_13.proto
 type OfpRoleRequest = openflow_13.OfpRoleRequest
 
-// ofp_async_config from public import voltha_protos/openflow_13.proto
+// OfpAsyncConfig from public import voltha_protos/openflow_13.proto
 type OfpAsyncConfig = openflow_13.OfpAsyncConfig
 
 // MeterModUpdate from public import voltha_protos/openflow_13.proto
@@ -566,7 +501,7 @@
 type ChangeEvent = openflow_13.ChangeEvent
 type ChangeEvent_PortStatus = openflow_13.ChangeEvent_PortStatus
 
-// ofp_port_no from public import voltha_protos/openflow_13.proto
+// OfpPortNo from public import voltha_protos/openflow_13.proto
 type OfpPortNo = openflow_13.OfpPortNo
 
 var OfpPortNo_name = openflow_13.OfpPortNo_name
@@ -583,7 +518,7 @@
 const OfpPortNo_OFPP_LOCAL = OfpPortNo(openflow_13.OfpPortNo_OFPP_LOCAL)
 const OfpPortNo_OFPP_ANY = OfpPortNo(openflow_13.OfpPortNo_OFPP_ANY)
 
-// ofp_type from public import voltha_protos/openflow_13.proto
+// OfpType from public import voltha_protos/openflow_13.proto
 type OfpType = openflow_13.OfpType
 
 var OfpType_name = openflow_13.OfpType_name
@@ -620,7 +555,7 @@
 const OfpType_OFPT_SET_ASYNC = OfpType(openflow_13.OfpType_OFPT_SET_ASYNC)
 const OfpType_OFPT_METER_MOD = OfpType(openflow_13.OfpType_OFPT_METER_MOD)
 
-// ofp_hello_elem_type from public import voltha_protos/openflow_13.proto
+// OfpHelloElemType from public import voltha_protos/openflow_13.proto
 type OfpHelloElemType = openflow_13.OfpHelloElemType
 
 var OfpHelloElemType_name = openflow_13.OfpHelloElemType_name
@@ -629,7 +564,7 @@
 const OfpHelloElemType_OFPHET_INVALID = OfpHelloElemType(openflow_13.OfpHelloElemType_OFPHET_INVALID)
 const OfpHelloElemType_OFPHET_VERSIONBITMAP = OfpHelloElemType(openflow_13.OfpHelloElemType_OFPHET_VERSIONBITMAP)
 
-// ofp_config_flags from public import voltha_protos/openflow_13.proto
+// OfpConfigFlags from public import voltha_protos/openflow_13.proto
 type OfpConfigFlags = openflow_13.OfpConfigFlags
 
 var OfpConfigFlags_name = openflow_13.OfpConfigFlags_name
@@ -640,7 +575,7 @@
 const OfpConfigFlags_OFPC_FRAG_REASM = OfpConfigFlags(openflow_13.OfpConfigFlags_OFPC_FRAG_REASM)
 const OfpConfigFlags_OFPC_FRAG_MASK = OfpConfigFlags(openflow_13.OfpConfigFlags_OFPC_FRAG_MASK)
 
-// ofp_table_config from public import voltha_protos/openflow_13.proto
+// OfpTableConfig from public import voltha_protos/openflow_13.proto
 type OfpTableConfig = openflow_13.OfpTableConfig
 
 var OfpTableConfig_name = openflow_13.OfpTableConfig_name
@@ -649,7 +584,7 @@
 const OfpTableConfig_OFPTC_INVALID = OfpTableConfig(openflow_13.OfpTableConfig_OFPTC_INVALID)
 const OfpTableConfig_OFPTC_DEPRECATED_MASK = OfpTableConfig(openflow_13.OfpTableConfig_OFPTC_DEPRECATED_MASK)
 
-// ofp_table from public import voltha_protos/openflow_13.proto
+// OfpTable from public import voltha_protos/openflow_13.proto
 type OfpTable = openflow_13.OfpTable
 
 var OfpTable_name = openflow_13.OfpTable_name
@@ -659,7 +594,7 @@
 const OfpTable_OFPTT_MAX = OfpTable(openflow_13.OfpTable_OFPTT_MAX)
 const OfpTable_OFPTT_ALL = OfpTable(openflow_13.OfpTable_OFPTT_ALL)
 
-// ofp_capabilities from public import voltha_protos/openflow_13.proto
+// OfpCapabilities from public import voltha_protos/openflow_13.proto
 type OfpCapabilities = openflow_13.OfpCapabilities
 
 var OfpCapabilities_name = openflow_13.OfpCapabilities_name
@@ -674,7 +609,7 @@
 const OfpCapabilities_OFPC_QUEUE_STATS = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_QUEUE_STATS)
 const OfpCapabilities_OFPC_PORT_BLOCKED = OfpCapabilities(openflow_13.OfpCapabilities_OFPC_PORT_BLOCKED)
 
-// ofp_port_config from public import voltha_protos/openflow_13.proto
+// OfpPortConfig from public import voltha_protos/openflow_13.proto
 type OfpPortConfig = openflow_13.OfpPortConfig
 
 var OfpPortConfig_name = openflow_13.OfpPortConfig_name
@@ -686,7 +621,7 @@
 const OfpPortConfig_OFPPC_NO_FWD = OfpPortConfig(openflow_13.OfpPortConfig_OFPPC_NO_FWD)
 const OfpPortConfig_OFPPC_NO_PACKET_IN = OfpPortConfig(openflow_13.OfpPortConfig_OFPPC_NO_PACKET_IN)
 
-// ofp_port_state from public import voltha_protos/openflow_13.proto
+// OfpPortState from public import voltha_protos/openflow_13.proto
 type OfpPortState = openflow_13.OfpPortState
 
 var OfpPortState_name = openflow_13.OfpPortState_name
@@ -697,7 +632,7 @@
 const OfpPortState_OFPPS_BLOCKED = OfpPortState(openflow_13.OfpPortState_OFPPS_BLOCKED)
 const OfpPortState_OFPPS_LIVE = OfpPortState(openflow_13.OfpPortState_OFPPS_LIVE)
 
-// ofp_port_features from public import voltha_protos/openflow_13.proto
+// OfpPortFeatures from public import voltha_protos/openflow_13.proto
 type OfpPortFeatures = openflow_13.OfpPortFeatures
 
 var OfpPortFeatures_name = openflow_13.OfpPortFeatures_name
@@ -721,7 +656,7 @@
 const OfpPortFeatures_OFPPF_PAUSE = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_PAUSE)
 const OfpPortFeatures_OFPPF_PAUSE_ASYM = OfpPortFeatures(openflow_13.OfpPortFeatures_OFPPF_PAUSE_ASYM)
 
-// ofp_port_reason from public import voltha_protos/openflow_13.proto
+// OfpPortReason from public import voltha_protos/openflow_13.proto
 type OfpPortReason = openflow_13.OfpPortReason
 
 var OfpPortReason_name = openflow_13.OfpPortReason_name
@@ -731,7 +666,7 @@
 const OfpPortReason_OFPPR_DELETE = OfpPortReason(openflow_13.OfpPortReason_OFPPR_DELETE)
 const OfpPortReason_OFPPR_MODIFY = OfpPortReason(openflow_13.OfpPortReason_OFPPR_MODIFY)
 
-// ofp_match_type from public import voltha_protos/openflow_13.proto
+// OfpMatchType from public import voltha_protos/openflow_13.proto
 type OfpMatchType = openflow_13.OfpMatchType
 
 var OfpMatchType_name = openflow_13.OfpMatchType_name
@@ -740,7 +675,7 @@
 const OfpMatchType_OFPMT_STANDARD = OfpMatchType(openflow_13.OfpMatchType_OFPMT_STANDARD)
 const OfpMatchType_OFPMT_OXM = OfpMatchType(openflow_13.OfpMatchType_OFPMT_OXM)
 
-// ofp_oxm_class from public import voltha_protos/openflow_13.proto
+// OfpOxmClass from public import voltha_protos/openflow_13.proto
 type OfpOxmClass = openflow_13.OfpOxmClass
 
 var OfpOxmClass_name = openflow_13.OfpOxmClass_name
@@ -751,7 +686,7 @@
 const OfpOxmClass_OFPXMC_OPENFLOW_BASIC = OfpOxmClass(openflow_13.OfpOxmClass_OFPXMC_OPENFLOW_BASIC)
 const OfpOxmClass_OFPXMC_EXPERIMENTER = OfpOxmClass(openflow_13.OfpOxmClass_OFPXMC_EXPERIMENTER)
 
-// oxm_ofb_field_types from public import voltha_protos/openflow_13.proto
+// OxmOfbFieldTypes from public import voltha_protos/openflow_13.proto
 type OxmOfbFieldTypes = openflow_13.OxmOfbFieldTypes
 
 var OxmOfbFieldTypes_name = openflow_13.OxmOfbFieldTypes_name
@@ -798,7 +733,7 @@
 const OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID)
 const OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR = OxmOfbFieldTypes(openflow_13.OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR)
 
-// ofp_vlan_id from public import voltha_protos/openflow_13.proto
+// OfpVlanId from public import voltha_protos/openflow_13.proto
 type OfpVlanId = openflow_13.OfpVlanId
 
 var OfpVlanId_name = openflow_13.OfpVlanId_name
@@ -807,7 +742,7 @@
 const OfpVlanId_OFPVID_NONE = OfpVlanId(openflow_13.OfpVlanId_OFPVID_NONE)
 const OfpVlanId_OFPVID_PRESENT = OfpVlanId(openflow_13.OfpVlanId_OFPVID_PRESENT)
 
-// ofp_ipv6exthdr_flags from public import voltha_protos/openflow_13.proto
+// OfpIpv6ExthdrFlags from public import voltha_protos/openflow_13.proto
 type OfpIpv6ExthdrFlags = openflow_13.OfpIpv6ExthdrFlags
 
 var OfpIpv6ExthdrFlags_name = openflow_13.OfpIpv6ExthdrFlags_name
@@ -824,7 +759,7 @@
 const OfpIpv6ExthdrFlags_OFPIEH_UNREP = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_UNREP)
 const OfpIpv6ExthdrFlags_OFPIEH_UNSEQ = OfpIpv6ExthdrFlags(openflow_13.OfpIpv6ExthdrFlags_OFPIEH_UNSEQ)
 
-// ofp_action_type from public import voltha_protos/openflow_13.proto
+// OfpActionType from public import voltha_protos/openflow_13.proto
 type OfpActionType = openflow_13.OfpActionType
 
 var OfpActionType_name = openflow_13.OfpActionType_name
@@ -848,7 +783,7 @@
 const OfpActionType_OFPAT_POP_PBB = OfpActionType(openflow_13.OfpActionType_OFPAT_POP_PBB)
 const OfpActionType_OFPAT_EXPERIMENTER = OfpActionType(openflow_13.OfpActionType_OFPAT_EXPERIMENTER)
 
-// ofp_controller_max_len from public import voltha_protos/openflow_13.proto
+// OfpControllerMaxLen from public import voltha_protos/openflow_13.proto
 type OfpControllerMaxLen = openflow_13.OfpControllerMaxLen
 
 var OfpControllerMaxLen_name = openflow_13.OfpControllerMaxLen_name
@@ -858,7 +793,7 @@
 const OfpControllerMaxLen_OFPCML_MAX = OfpControllerMaxLen(openflow_13.OfpControllerMaxLen_OFPCML_MAX)
 const OfpControllerMaxLen_OFPCML_NO_BUFFER = OfpControllerMaxLen(openflow_13.OfpControllerMaxLen_OFPCML_NO_BUFFER)
 
-// ofp_instruction_type from public import voltha_protos/openflow_13.proto
+// OfpInstructionType from public import voltha_protos/openflow_13.proto
 type OfpInstructionType = openflow_13.OfpInstructionType
 
 var OfpInstructionType_name = openflow_13.OfpInstructionType_name
@@ -873,7 +808,7 @@
 const OfpInstructionType_OFPIT_METER = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_METER)
 const OfpInstructionType_OFPIT_EXPERIMENTER = OfpInstructionType(openflow_13.OfpInstructionType_OFPIT_EXPERIMENTER)
 
-// ofp_flow_mod_command from public import voltha_protos/openflow_13.proto
+// OfpFlowModCommand from public import voltha_protos/openflow_13.proto
 type OfpFlowModCommand = openflow_13.OfpFlowModCommand
 
 var OfpFlowModCommand_name = openflow_13.OfpFlowModCommand_name
@@ -885,7 +820,7 @@
 const OfpFlowModCommand_OFPFC_DELETE = OfpFlowModCommand(openflow_13.OfpFlowModCommand_OFPFC_DELETE)
 const OfpFlowModCommand_OFPFC_DELETE_STRICT = OfpFlowModCommand(openflow_13.OfpFlowModCommand_OFPFC_DELETE_STRICT)
 
-// ofp_flow_mod_flags from public import voltha_protos/openflow_13.proto
+// OfpFlowModFlags from public import voltha_protos/openflow_13.proto
 type OfpFlowModFlags = openflow_13.OfpFlowModFlags
 
 var OfpFlowModFlags_name = openflow_13.OfpFlowModFlags_name
@@ -898,7 +833,7 @@
 const OfpFlowModFlags_OFPFF_NO_PKT_COUNTS = OfpFlowModFlags(openflow_13.OfpFlowModFlags_OFPFF_NO_PKT_COUNTS)
 const OfpFlowModFlags_OFPFF_NO_BYT_COUNTS = OfpFlowModFlags(openflow_13.OfpFlowModFlags_OFPFF_NO_BYT_COUNTS)
 
-// ofp_group from public import voltha_protos/openflow_13.proto
+// OfpGroup from public import voltha_protos/openflow_13.proto
 type OfpGroup = openflow_13.OfpGroup
 
 var OfpGroup_name = openflow_13.OfpGroup_name
@@ -909,7 +844,7 @@
 const OfpGroup_OFPG_ALL = OfpGroup(openflow_13.OfpGroup_OFPG_ALL)
 const OfpGroup_OFPG_ANY = OfpGroup(openflow_13.OfpGroup_OFPG_ANY)
 
-// ofp_group_mod_command from public import voltha_protos/openflow_13.proto
+// OfpGroupModCommand from public import voltha_protos/openflow_13.proto
 type OfpGroupModCommand = openflow_13.OfpGroupModCommand
 
 var OfpGroupModCommand_name = openflow_13.OfpGroupModCommand_name
@@ -919,7 +854,7 @@
 const OfpGroupModCommand_OFPGC_MODIFY = OfpGroupModCommand(openflow_13.OfpGroupModCommand_OFPGC_MODIFY)
 const OfpGroupModCommand_OFPGC_DELETE = OfpGroupModCommand(openflow_13.OfpGroupModCommand_OFPGC_DELETE)
 
-// ofp_group_type from public import voltha_protos/openflow_13.proto
+// OfpGroupType from public import voltha_protos/openflow_13.proto
 type OfpGroupType = openflow_13.OfpGroupType
 
 var OfpGroupType_name = openflow_13.OfpGroupType_name
@@ -930,7 +865,7 @@
 const OfpGroupType_OFPGT_INDIRECT = OfpGroupType(openflow_13.OfpGroupType_OFPGT_INDIRECT)
 const OfpGroupType_OFPGT_FF = OfpGroupType(openflow_13.OfpGroupType_OFPGT_FF)
 
-// ofp_packet_in_reason from public import voltha_protos/openflow_13.proto
+// OfpPacketInReason from public import voltha_protos/openflow_13.proto
 type OfpPacketInReason = openflow_13.OfpPacketInReason
 
 var OfpPacketInReason_name = openflow_13.OfpPacketInReason_name
@@ -940,7 +875,7 @@
 const OfpPacketInReason_OFPR_ACTION = OfpPacketInReason(openflow_13.OfpPacketInReason_OFPR_ACTION)
 const OfpPacketInReason_OFPR_INVALID_TTL = OfpPacketInReason(openflow_13.OfpPacketInReason_OFPR_INVALID_TTL)
 
-// ofp_flow_removed_reason from public import voltha_protos/openflow_13.proto
+// OfpFlowRemovedReason from public import voltha_protos/openflow_13.proto
 type OfpFlowRemovedReason = openflow_13.OfpFlowRemovedReason
 
 var OfpFlowRemovedReason_name = openflow_13.OfpFlowRemovedReason_name
@@ -952,7 +887,7 @@
 const OfpFlowRemovedReason_OFPRR_GROUP_DELETE = OfpFlowRemovedReason(openflow_13.OfpFlowRemovedReason_OFPRR_GROUP_DELETE)
 const OfpFlowRemovedReason_OFPRR_METER_DELETE = OfpFlowRemovedReason(openflow_13.OfpFlowRemovedReason_OFPRR_METER_DELETE)
 
-// ofp_meter from public import voltha_protos/openflow_13.proto
+// OfpMeter from public import voltha_protos/openflow_13.proto
 type OfpMeter = openflow_13.OfpMeter
 
 var OfpMeter_name = openflow_13.OfpMeter_name
@@ -964,7 +899,7 @@
 const OfpMeter_OFPM_CONTROLLER = OfpMeter(openflow_13.OfpMeter_OFPM_CONTROLLER)
 const OfpMeter_OFPM_ALL = OfpMeter(openflow_13.OfpMeter_OFPM_ALL)
 
-// ofp_meter_band_type from public import voltha_protos/openflow_13.proto
+// OfpMeterBandType from public import voltha_protos/openflow_13.proto
 type OfpMeterBandType = openflow_13.OfpMeterBandType
 
 var OfpMeterBandType_name = openflow_13.OfpMeterBandType_name
@@ -975,7 +910,7 @@
 const OfpMeterBandType_OFPMBT_DSCP_REMARK = OfpMeterBandType(openflow_13.OfpMeterBandType_OFPMBT_DSCP_REMARK)
 const OfpMeterBandType_OFPMBT_EXPERIMENTER = OfpMeterBandType(openflow_13.OfpMeterBandType_OFPMBT_EXPERIMENTER)
 
-// ofp_meter_mod_command from public import voltha_protos/openflow_13.proto
+// OfpMeterModCommand from public import voltha_protos/openflow_13.proto
 type OfpMeterModCommand = openflow_13.OfpMeterModCommand
 
 var OfpMeterModCommand_name = openflow_13.OfpMeterModCommand_name
@@ -985,7 +920,7 @@
 const OfpMeterModCommand_OFPMC_MODIFY = OfpMeterModCommand(openflow_13.OfpMeterModCommand_OFPMC_MODIFY)
 const OfpMeterModCommand_OFPMC_DELETE = OfpMeterModCommand(openflow_13.OfpMeterModCommand_OFPMC_DELETE)
 
-// ofp_meter_flags from public import voltha_protos/openflow_13.proto
+// OfpMeterFlags from public import voltha_protos/openflow_13.proto
 type OfpMeterFlags = openflow_13.OfpMeterFlags
 
 var OfpMeterFlags_name = openflow_13.OfpMeterFlags_name
@@ -997,7 +932,7 @@
 const OfpMeterFlags_OFPMF_BURST = OfpMeterFlags(openflow_13.OfpMeterFlags_OFPMF_BURST)
 const OfpMeterFlags_OFPMF_STATS = OfpMeterFlags(openflow_13.OfpMeterFlags_OFPMF_STATS)
 
-// ofp_error_type from public import voltha_protos/openflow_13.proto
+// OfpErrorType from public import voltha_protos/openflow_13.proto
 type OfpErrorType = openflow_13.OfpErrorType
 
 var OfpErrorType_name = openflow_13.OfpErrorType_name
@@ -1019,7 +954,7 @@
 const OfpErrorType_OFPET_TABLE_FEATURES_FAILED = OfpErrorType(openflow_13.OfpErrorType_OFPET_TABLE_FEATURES_FAILED)
 const OfpErrorType_OFPET_EXPERIMENTER = OfpErrorType(openflow_13.OfpErrorType_OFPET_EXPERIMENTER)
 
-// ofp_hello_failed_code from public import voltha_protos/openflow_13.proto
+// OfpHelloFailedCode from public import voltha_protos/openflow_13.proto
 type OfpHelloFailedCode = openflow_13.OfpHelloFailedCode
 
 var OfpHelloFailedCode_name = openflow_13.OfpHelloFailedCode_name
@@ -1028,7 +963,7 @@
 const OfpHelloFailedCode_OFPHFC_INCOMPATIBLE = OfpHelloFailedCode(openflow_13.OfpHelloFailedCode_OFPHFC_INCOMPATIBLE)
 const OfpHelloFailedCode_OFPHFC_EPERM = OfpHelloFailedCode(openflow_13.OfpHelloFailedCode_OFPHFC_EPERM)
 
-// ofp_bad_request_code from public import voltha_protos/openflow_13.proto
+// OfpBadRequestCode from public import voltha_protos/openflow_13.proto
 type OfpBadRequestCode = openflow_13.OfpBadRequestCode
 
 var OfpBadRequestCode_name = openflow_13.OfpBadRequestCode_name
@@ -1049,7 +984,7 @@
 const OfpBadRequestCode_OFPBRC_BAD_PACKET = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_BAD_PACKET)
 const OfpBadRequestCode_OFPBRC_MULTIPART_BUFFER_OVERFLOW = OfpBadRequestCode(openflow_13.OfpBadRequestCode_OFPBRC_MULTIPART_BUFFER_OVERFLOW)
 
-// ofp_bad_action_code from public import voltha_protos/openflow_13.proto
+// OfpBadActionCode from public import voltha_protos/openflow_13.proto
 type OfpBadActionCode = openflow_13.OfpBadActionCode
 
 var OfpBadActionCode_name = openflow_13.OfpBadActionCode_name
@@ -1072,7 +1007,7 @@
 const OfpBadActionCode_OFPBAC_BAD_SET_LEN = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_SET_LEN)
 const OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT = OfpBadActionCode(openflow_13.OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT)
 
-// ofp_bad_instruction_code from public import voltha_protos/openflow_13.proto
+// OfpBadInstructionCode from public import voltha_protos/openflow_13.proto
 type OfpBadInstructionCode = openflow_13.OfpBadInstructionCode
 
 var OfpBadInstructionCode_name = openflow_13.OfpBadInstructionCode_name
@@ -1088,7 +1023,7 @@
 const OfpBadInstructionCode_OFPBIC_BAD_LEN = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_BAD_LEN)
 const OfpBadInstructionCode_OFPBIC_EPERM = OfpBadInstructionCode(openflow_13.OfpBadInstructionCode_OFPBIC_EPERM)
 
-// ofp_bad_match_code from public import voltha_protos/openflow_13.proto
+// OfpBadMatchCode from public import voltha_protos/openflow_13.proto
 type OfpBadMatchCode = openflow_13.OfpBadMatchCode
 
 var OfpBadMatchCode_name = openflow_13.OfpBadMatchCode_name
@@ -1107,7 +1042,7 @@
 const OfpBadMatchCode_OFPBMC_DUP_FIELD = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_DUP_FIELD)
 const OfpBadMatchCode_OFPBMC_EPERM = OfpBadMatchCode(openflow_13.OfpBadMatchCode_OFPBMC_EPERM)
 
-// ofp_flow_mod_failed_code from public import voltha_protos/openflow_13.proto
+// OfpFlowModFailedCode from public import voltha_protos/openflow_13.proto
 type OfpFlowModFailedCode = openflow_13.OfpFlowModFailedCode
 
 var OfpFlowModFailedCode_name = openflow_13.OfpFlowModFailedCode_name
@@ -1122,7 +1057,7 @@
 const OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND)
 const OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS = OfpFlowModFailedCode(openflow_13.OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS)
 
-// ofp_group_mod_failed_code from public import voltha_protos/openflow_13.proto
+// OfpGroupModFailedCode from public import voltha_protos/openflow_13.proto
 type OfpGroupModFailedCode = openflow_13.OfpGroupModFailedCode
 
 var OfpGroupModFailedCode_name = openflow_13.OfpGroupModFailedCode_name
@@ -1144,7 +1079,7 @@
 const OfpGroupModFailedCode_OFPGMFC_BAD_WATCH = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_BAD_WATCH)
 const OfpGroupModFailedCode_OFPGMFC_EPERM = OfpGroupModFailedCode(openflow_13.OfpGroupModFailedCode_OFPGMFC_EPERM)
 
-// ofp_port_mod_failed_code from public import voltha_protos/openflow_13.proto
+// OfpPortModFailedCode from public import voltha_protos/openflow_13.proto
 type OfpPortModFailedCode = openflow_13.OfpPortModFailedCode
 
 var OfpPortModFailedCode_name = openflow_13.OfpPortModFailedCode_name
@@ -1156,7 +1091,7 @@
 const OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE = OfpPortModFailedCode(openflow_13.OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE)
 const OfpPortModFailedCode_OFPPMFC_EPERM = OfpPortModFailedCode(openflow_13.OfpPortModFailedCode_OFPPMFC_EPERM)
 
-// ofp_table_mod_failed_code from public import voltha_protos/openflow_13.proto
+// OfpTableModFailedCode from public import voltha_protos/openflow_13.proto
 type OfpTableModFailedCode = openflow_13.OfpTableModFailedCode
 
 var OfpTableModFailedCode_name = openflow_13.OfpTableModFailedCode_name
@@ -1166,7 +1101,7 @@
 const OfpTableModFailedCode_OFPTMFC_BAD_CONFIG = OfpTableModFailedCode(openflow_13.OfpTableModFailedCode_OFPTMFC_BAD_CONFIG)
 const OfpTableModFailedCode_OFPTMFC_EPERM = OfpTableModFailedCode(openflow_13.OfpTableModFailedCode_OFPTMFC_EPERM)
 
-// ofp_queue_op_failed_code from public import voltha_protos/openflow_13.proto
+// OfpQueueOpFailedCode from public import voltha_protos/openflow_13.proto
 type OfpQueueOpFailedCode = openflow_13.OfpQueueOpFailedCode
 
 var OfpQueueOpFailedCode_name = openflow_13.OfpQueueOpFailedCode_name
@@ -1176,7 +1111,7 @@
 const OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE = OfpQueueOpFailedCode(openflow_13.OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE)
 const OfpQueueOpFailedCode_OFPQOFC_EPERM = OfpQueueOpFailedCode(openflow_13.OfpQueueOpFailedCode_OFPQOFC_EPERM)
 
-// ofp_switch_config_failed_code from public import voltha_protos/openflow_13.proto
+// OfpSwitchConfigFailedCode from public import voltha_protos/openflow_13.proto
 type OfpSwitchConfigFailedCode = openflow_13.OfpSwitchConfigFailedCode
 
 var OfpSwitchConfigFailedCode_name = openflow_13.OfpSwitchConfigFailedCode_name
@@ -1186,7 +1121,7 @@
 const OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN = OfpSwitchConfigFailedCode(openflow_13.OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN)
 const OfpSwitchConfigFailedCode_OFPSCFC_EPERM = OfpSwitchConfigFailedCode(openflow_13.OfpSwitchConfigFailedCode_OFPSCFC_EPERM)
 
-// ofp_role_request_failed_code from public import voltha_protos/openflow_13.proto
+// OfpRoleRequestFailedCode from public import voltha_protos/openflow_13.proto
 type OfpRoleRequestFailedCode = openflow_13.OfpRoleRequestFailedCode
 
 var OfpRoleRequestFailedCode_name = openflow_13.OfpRoleRequestFailedCode_name
@@ -1196,7 +1131,7 @@
 const OfpRoleRequestFailedCode_OFPRRFC_UNSUP = OfpRoleRequestFailedCode(openflow_13.OfpRoleRequestFailedCode_OFPRRFC_UNSUP)
 const OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE = OfpRoleRequestFailedCode(openflow_13.OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE)
 
-// ofp_meter_mod_failed_code from public import voltha_protos/openflow_13.proto
+// OfpMeterModFailedCode from public import voltha_protos/openflow_13.proto
 type OfpMeterModFailedCode = openflow_13.OfpMeterModFailedCode
 
 var OfpMeterModFailedCode_name = openflow_13.OfpMeterModFailedCode_name
@@ -1215,7 +1150,7 @@
 const OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS)
 const OfpMeterModFailedCode_OFPMMFC_OUT_OF_BANDS = OfpMeterModFailedCode(openflow_13.OfpMeterModFailedCode_OFPMMFC_OUT_OF_BANDS)
 
-// ofp_table_features_failed_code from public import voltha_protos/openflow_13.proto
+// OfpTableFeaturesFailedCode from public import voltha_protos/openflow_13.proto
 type OfpTableFeaturesFailedCode = openflow_13.OfpTableFeaturesFailedCode
 
 var OfpTableFeaturesFailedCode_name = openflow_13.OfpTableFeaturesFailedCode_name
@@ -1228,7 +1163,7 @@
 const OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT = OfpTableFeaturesFailedCode(openflow_13.OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT)
 const OfpTableFeaturesFailedCode_OFPTFFC_EPERM = OfpTableFeaturesFailedCode(openflow_13.OfpTableFeaturesFailedCode_OFPTFFC_EPERM)
 
-// ofp_multipart_type from public import voltha_protos/openflow_13.proto
+// OfpMultipartType from public import voltha_protos/openflow_13.proto
 type OfpMultipartType = openflow_13.OfpMultipartType
 
 var OfpMultipartType_name = openflow_13.OfpMultipartType_name
@@ -1250,7 +1185,7 @@
 const OfpMultipartType_OFPMP_PORT_DESC = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_PORT_DESC)
 const OfpMultipartType_OFPMP_EXPERIMENTER = OfpMultipartType(openflow_13.OfpMultipartType_OFPMP_EXPERIMENTER)
 
-// ofp_multipart_request_flags from public import voltha_protos/openflow_13.proto
+// OfpMultipartRequestFlags from public import voltha_protos/openflow_13.proto
 type OfpMultipartRequestFlags = openflow_13.OfpMultipartRequestFlags
 
 var OfpMultipartRequestFlags_name = openflow_13.OfpMultipartRequestFlags_name
@@ -1259,7 +1194,7 @@
 const OfpMultipartRequestFlags_OFPMPF_REQ_INVALID = OfpMultipartRequestFlags(openflow_13.OfpMultipartRequestFlags_OFPMPF_REQ_INVALID)
 const OfpMultipartRequestFlags_OFPMPF_REQ_MORE = OfpMultipartRequestFlags(openflow_13.OfpMultipartRequestFlags_OFPMPF_REQ_MORE)
 
-// ofp_multipart_reply_flags from public import voltha_protos/openflow_13.proto
+// OfpMultipartReplyFlags from public import voltha_protos/openflow_13.proto
 type OfpMultipartReplyFlags = openflow_13.OfpMultipartReplyFlags
 
 var OfpMultipartReplyFlags_name = openflow_13.OfpMultipartReplyFlags_name
@@ -1268,7 +1203,7 @@
 const OfpMultipartReplyFlags_OFPMPF_REPLY_INVALID = OfpMultipartReplyFlags(openflow_13.OfpMultipartReplyFlags_OFPMPF_REPLY_INVALID)
 const OfpMultipartReplyFlags_OFPMPF_REPLY_MORE = OfpMultipartReplyFlags(openflow_13.OfpMultipartReplyFlags_OFPMPF_REPLY_MORE)
 
-// ofp_table_feature_prop_type from public import voltha_protos/openflow_13.proto
+// OfpTableFeaturePropType from public import voltha_protos/openflow_13.proto
 type OfpTableFeaturePropType = openflow_13.OfpTableFeaturePropType
 
 var OfpTableFeaturePropType_name = openflow_13.OfpTableFeaturePropType_name
@@ -1291,7 +1226,7 @@
 const OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER)
 const OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS = OfpTableFeaturePropType(openflow_13.OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS)
 
-// ofp_group_capabilities from public import voltha_protos/openflow_13.proto
+// OfpGroupCapabilities from public import voltha_protos/openflow_13.proto
 type OfpGroupCapabilities = openflow_13.OfpGroupCapabilities
 
 var OfpGroupCapabilities_name = openflow_13.OfpGroupCapabilities_name
@@ -1303,7 +1238,7 @@
 const OfpGroupCapabilities_OFPGFC_CHAINING = OfpGroupCapabilities(openflow_13.OfpGroupCapabilities_OFPGFC_CHAINING)
 const OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS = OfpGroupCapabilities(openflow_13.OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS)
 
-// ofp_queue_properties from public import voltha_protos/openflow_13.proto
+// OfpQueueProperties from public import voltha_protos/openflow_13.proto
 type OfpQueueProperties = openflow_13.OfpQueueProperties
 
 var OfpQueueProperties_name = openflow_13.OfpQueueProperties_name
@@ -1314,7 +1249,7 @@
 const OfpQueueProperties_OFPQT_MAX_RATE = OfpQueueProperties(openflow_13.OfpQueueProperties_OFPQT_MAX_RATE)
 const OfpQueueProperties_OFPQT_EXPERIMENTER = OfpQueueProperties(openflow_13.OfpQueueProperties_OFPQT_EXPERIMENTER)
 
-// ofp_controller_role from public import voltha_protos/openflow_13.proto
+// OfpControllerRole from public import voltha_protos/openflow_13.proto
 type OfpControllerRole = openflow_13.OfpControllerRole
 
 var OfpControllerRole_name = openflow_13.OfpControllerRole_name
@@ -1344,6 +1279,7 @@
 	4: "category",
 	5: "device_id",
 }
+
 var AlarmFilterRuleKey_AlarmFilterRuleKey_value = map[string]int32{
 	"id":          0,
 	"type":        1,
@@ -1356,8 +1292,9 @@
 func (x AlarmFilterRuleKey_AlarmFilterRuleKey) String() string {
 	return proto.EnumName(AlarmFilterRuleKey_AlarmFilterRuleKey_name, int32(x))
 }
+
 func (AlarmFilterRuleKey_AlarmFilterRuleKey) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{2, 0}
+	return fileDescriptor_e084f1a60ce7016c, []int{2, 0}
 }
 
 type SelfTestResponse_SelfTestResult int32
@@ -1375,6 +1312,7 @@
 	2: "NOT_SUPPORTED",
 	3: "UNKNOWN_ERROR",
 }
+
 var SelfTestResponse_SelfTestResult_value = map[string]int32{
 	"SUCCESS":       0,
 	"FAILURE":       1,
@@ -1385,8 +1323,9 @@
 func (x SelfTestResponse_SelfTestResult) String() string {
 	return proto.EnumName(SelfTestResponse_SelfTestResult_name, int32(x))
 }
+
 func (SelfTestResponse_SelfTestResult) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{10, 0}
+	return fileDescriptor_e084f1a60ce7016c, []int{10, 0}
 }
 
 type DeviceGroup struct {
@@ -1402,16 +1341,17 @@
 func (m *DeviceGroup) String() string { return proto.CompactTextString(m) }
 func (*DeviceGroup) ProtoMessage()    {}
 func (*DeviceGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{0}
+	return fileDescriptor_e084f1a60ce7016c, []int{0}
 }
+
 func (m *DeviceGroup) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeviceGroup.Unmarshal(m, b)
 }
 func (m *DeviceGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DeviceGroup.Marshal(b, m, deterministic)
 }
-func (dst *DeviceGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceGroup.Merge(dst, src)
+func (m *DeviceGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeviceGroup.Merge(m, src)
 }
 func (m *DeviceGroup) XXX_Size() int {
 	return xxx_messageInfo_DeviceGroup.Size(m)
@@ -1454,16 +1394,17 @@
 func (m *DeviceGroups) String() string { return proto.CompactTextString(m) }
 func (*DeviceGroups) ProtoMessage()    {}
 func (*DeviceGroups) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{1}
+	return fileDescriptor_e084f1a60ce7016c, []int{1}
 }
+
 func (m *DeviceGroups) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeviceGroups.Unmarshal(m, b)
 }
 func (m *DeviceGroups) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DeviceGroups.Marshal(b, m, deterministic)
 }
-func (dst *DeviceGroups) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceGroups.Merge(dst, src)
+func (m *DeviceGroups) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeviceGroups.Merge(m, src)
 }
 func (m *DeviceGroups) XXX_Size() int {
 	return xxx_messageInfo_DeviceGroups.Size(m)
@@ -1491,16 +1432,17 @@
 func (m *AlarmFilterRuleKey) String() string { return proto.CompactTextString(m) }
 func (*AlarmFilterRuleKey) ProtoMessage()    {}
 func (*AlarmFilterRuleKey) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{2}
+	return fileDescriptor_e084f1a60ce7016c, []int{2}
 }
+
 func (m *AlarmFilterRuleKey) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmFilterRuleKey.Unmarshal(m, b)
 }
 func (m *AlarmFilterRuleKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmFilterRuleKey.Marshal(b, m, deterministic)
 }
-func (dst *AlarmFilterRuleKey) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmFilterRuleKey.Merge(dst, src)
+func (m *AlarmFilterRuleKey) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmFilterRuleKey.Merge(m, src)
 }
 func (m *AlarmFilterRuleKey) XXX_Size() int {
 	return xxx_messageInfo_AlarmFilterRuleKey.Size(m)
@@ -1523,16 +1465,17 @@
 func (m *AlarmFilterRule) String() string { return proto.CompactTextString(m) }
 func (*AlarmFilterRule) ProtoMessage()    {}
 func (*AlarmFilterRule) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{3}
+	return fileDescriptor_e084f1a60ce7016c, []int{3}
 }
+
 func (m *AlarmFilterRule) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmFilterRule.Unmarshal(m, b)
 }
 func (m *AlarmFilterRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmFilterRule.Marshal(b, m, deterministic)
 }
-func (dst *AlarmFilterRule) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmFilterRule.Merge(dst, src)
+func (m *AlarmFilterRule) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmFilterRule.Merge(m, src)
 }
 func (m *AlarmFilterRule) XXX_Size() int {
 	return xxx_messageInfo_AlarmFilterRule.Size(m)
@@ -1569,16 +1512,17 @@
 func (m *AlarmFilter) String() string { return proto.CompactTextString(m) }
 func (*AlarmFilter) ProtoMessage()    {}
 func (*AlarmFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{4}
+	return fileDescriptor_e084f1a60ce7016c, []int{4}
 }
+
 func (m *AlarmFilter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmFilter.Unmarshal(m, b)
 }
 func (m *AlarmFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmFilter.Marshal(b, m, deterministic)
 }
-func (dst *AlarmFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmFilter.Merge(dst, src)
+func (m *AlarmFilter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmFilter.Merge(m, src)
 }
 func (m *AlarmFilter) XXX_Size() int {
 	return xxx_messageInfo_AlarmFilter.Size(m)
@@ -1614,16 +1558,17 @@
 func (m *AlarmFilters) String() string { return proto.CompactTextString(m) }
 func (*AlarmFilters) ProtoMessage()    {}
 func (*AlarmFilters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{5}
+	return fileDescriptor_e084f1a60ce7016c, []int{5}
 }
+
 func (m *AlarmFilters) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AlarmFilters.Unmarshal(m, b)
 }
 func (m *AlarmFilters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AlarmFilters.Marshal(b, m, deterministic)
 }
-func (dst *AlarmFilters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmFilters.Merge(dst, src)
+func (m *AlarmFilters) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmFilters.Merge(m, src)
 }
 func (m *AlarmFilters) XXX_Size() int {
 	return xxx_messageInfo_AlarmFilters.Size(m)
@@ -1653,16 +1598,17 @@
 func (m *Logging) String() string { return proto.CompactTextString(m) }
 func (*Logging) ProtoMessage()    {}
 func (*Logging) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{6}
+	return fileDescriptor_e084f1a60ce7016c, []int{6}
 }
+
 func (m *Logging) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Logging.Unmarshal(m, b)
 }
 func (m *Logging) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Logging.Marshal(b, m, deterministic)
 }
-func (dst *Logging) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Logging.Merge(dst, src)
+func (m *Logging) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Logging.Merge(m, src)
 }
 func (m *Logging) XXX_Size() int {
 	return xxx_messageInfo_Logging.Size(m)
@@ -1701,16 +1647,17 @@
 func (m *CoreInstance) String() string { return proto.CompactTextString(m) }
 func (*CoreInstance) ProtoMessage()    {}
 func (*CoreInstance) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{7}
+	return fileDescriptor_e084f1a60ce7016c, []int{7}
 }
+
 func (m *CoreInstance) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CoreInstance.Unmarshal(m, b)
 }
 func (m *CoreInstance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CoreInstance.Marshal(b, m, deterministic)
 }
-func (dst *CoreInstance) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreInstance.Merge(dst, src)
+func (m *CoreInstance) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CoreInstance.Merge(m, src)
 }
 func (m *CoreInstance) XXX_Size() int {
 	return xxx_messageInfo_CoreInstance.Size(m)
@@ -1746,16 +1693,17 @@
 func (m *CoreInstances) String() string { return proto.CompactTextString(m) }
 func (*CoreInstances) ProtoMessage()    {}
 func (*CoreInstances) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{8}
+	return fileDescriptor_e084f1a60ce7016c, []int{8}
 }
+
 func (m *CoreInstances) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CoreInstances.Unmarshal(m, b)
 }
 func (m *CoreInstances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CoreInstances.Marshal(b, m, deterministic)
 }
-func (dst *CoreInstances) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreInstances.Merge(dst, src)
+func (m *CoreInstances) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CoreInstances.Merge(m, src)
 }
 func (m *CoreInstances) XXX_Size() int {
 	return xxx_messageInfo_CoreInstances.Size(m)
@@ -1795,16 +1743,17 @@
 func (m *Voltha) String() string { return proto.CompactTextString(m) }
 func (*Voltha) ProtoMessage()    {}
 func (*Voltha) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{9}
+	return fileDescriptor_e084f1a60ce7016c, []int{9}
 }
+
 func (m *Voltha) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Voltha.Unmarshal(m, b)
 }
 func (m *Voltha) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Voltha.Marshal(b, m, deterministic)
 }
-func (dst *Voltha) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Voltha.Merge(dst, src)
+func (m *Voltha) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Voltha.Merge(m, src)
 }
 func (m *Voltha) XXX_Size() int {
 	return xxx_messageInfo_Voltha.Size(m)
@@ -1890,16 +1839,17 @@
 func (m *SelfTestResponse) String() string { return proto.CompactTextString(m) }
 func (*SelfTestResponse) ProtoMessage()    {}
 func (*SelfTestResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{10}
+	return fileDescriptor_e084f1a60ce7016c, []int{10}
 }
+
 func (m *SelfTestResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SelfTestResponse.Unmarshal(m, b)
 }
 func (m *SelfTestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_SelfTestResponse.Marshal(b, m, deterministic)
 }
-func (dst *SelfTestResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SelfTestResponse.Merge(dst, src)
+func (m *SelfTestResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SelfTestResponse.Merge(m, src)
 }
 func (m *SelfTestResponse) XXX_Size() int {
 	return xxx_messageInfo_SelfTestResponse.Size(m)
@@ -1931,16 +1881,17 @@
 func (m *OfAgentSubscriber) String() string { return proto.CompactTextString(m) }
 func (*OfAgentSubscriber) ProtoMessage()    {}
 func (*OfAgentSubscriber) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{11}
+	return fileDescriptor_e084f1a60ce7016c, []int{11}
 }
+
 func (m *OfAgentSubscriber) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfAgentSubscriber.Unmarshal(m, b)
 }
 func (m *OfAgentSubscriber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfAgentSubscriber.Marshal(b, m, deterministic)
 }
-func (dst *OfAgentSubscriber) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfAgentSubscriber.Merge(dst, src)
+func (m *OfAgentSubscriber) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfAgentSubscriber.Merge(m, src)
 }
 func (m *OfAgentSubscriber) XXX_Size() int {
 	return xxx_messageInfo_OfAgentSubscriber.Size(m)
@@ -1980,16 +1931,17 @@
 func (m *Membership) String() string { return proto.CompactTextString(m) }
 func (*Membership) ProtoMessage()    {}
 func (*Membership) Descriptor() ([]byte, []int) {
-	return fileDescriptor_voltha_1f7600b5a75eb6d1, []int{12}
+	return fileDescriptor_e084f1a60ce7016c, []int{12}
 }
+
 func (m *Membership) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Membership.Unmarshal(m, b)
 }
 func (m *Membership) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Membership.Marshal(b, m, deterministic)
 }
-func (dst *Membership) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Membership.Merge(dst, src)
+func (m *Membership) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Membership.Merge(m, src)
 }
 func (m *Membership) XXX_Size() int {
 	return xxx_messageInfo_Membership.Size(m)
@@ -2015,6 +1967,8 @@
 }
 
 func init() {
+	proto.RegisterEnum("voltha.AlarmFilterRuleKey_AlarmFilterRuleKey", AlarmFilterRuleKey_AlarmFilterRuleKey_name, AlarmFilterRuleKey_AlarmFilterRuleKey_value)
+	proto.RegisterEnum("voltha.SelfTestResponse_SelfTestResult", SelfTestResponse_SelfTestResult_name, SelfTestResponse_SelfTestResult_value)
 	proto.RegisterType((*DeviceGroup)(nil), "voltha.DeviceGroup")
 	proto.RegisterType((*DeviceGroups)(nil), "voltha.DeviceGroups")
 	proto.RegisterType((*AlarmFilterRuleKey)(nil), "voltha.AlarmFilterRuleKey")
@@ -2028,8 +1982,167 @@
 	proto.RegisterType((*SelfTestResponse)(nil), "voltha.SelfTestResponse")
 	proto.RegisterType((*OfAgentSubscriber)(nil), "voltha.OfAgentSubscriber")
 	proto.RegisterType((*Membership)(nil), "voltha.Membership")
-	proto.RegisterEnum("voltha.AlarmFilterRuleKey_AlarmFilterRuleKey", AlarmFilterRuleKey_AlarmFilterRuleKey_name, AlarmFilterRuleKey_AlarmFilterRuleKey_value)
-	proto.RegisterEnum("voltha.SelfTestResponse_SelfTestResult", SelfTestResponse_SelfTestResult_name, SelfTestResponse_SelfTestResult_value)
+}
+
+func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
+
+var fileDescriptor_e084f1a60ce7016c = []byte{
+	// 2475 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x73, 0xdb, 0xc6,
+	0x15, 0x16, 0x75, 0xd7, 0x21, 0x29, 0x92, 0x47, 0x17, 0xd3, 0x94, 0x64, 0x4b, 0x1b, 0xc7, 0x76,
+	0xe4, 0x88, 0x8c, 0xad, 0xc4, 0xd3, 0x3a, 0xcd, 0xa4, 0xd6, 0xc5, 0x2a, 0x6b, 0x59, 0x64, 0x41,
+	0xcb, 0x4e, 0x9b, 0x7a, 0x38, 0x20, 0xb1, 0xa2, 0x30, 0x06, 0x09, 0x16, 0x0b, 0xca, 0xd5, 0xb8,
+	0x99, 0xce, 0xa4, 0xd7, 0xe9, 0x63, 0xf3, 0x17, 0xfa, 0xd0, 0xe9, 0xf4, 0xaf, 0xf8, 0xa9, 0xbf,
+	0xa0, 0x9d, 0x3e, 0xf4, 0xb1, 0x4f, 0x6e, 0x1f, 0x3b, 0x7b, 0x01, 0x09, 0x10, 0x80, 0x2e, 0x69,
+	0x66, 0xf2, 0x64, 0x62, 0xcf, 0xd9, 0xef, 0xfb, 0xf6, 0xec, 0xd9, 0x83, 0xa3, 0x85, 0xa1, 0x70,
+	0x62, 0x5b, 0xee, 0xb1, 0x5e, 0xef, 0x3a, 0xb6, 0x6b, 0xb3, 0x92, 0x7c, 0x2a, 0x8a, 0x27, 0x9c,
+	0x94, 0x4f, 0x85, 0xe5, 0x96, 0x6d, 0xb7, 0x2c, 0x5a, 0xd2, 0xbb, 0x66, 0x49, 0xef, 0x74, 0x6c,
+	0x57, 0x77, 0x4d, 0xbb, 0xc3, 0xa4, 0x57, 0x61, 0x49, 0x59, 0xc5, 0x53, 0xa3, 0x77, 0x54, 0xa2,
+	0xed, 0xae, 0x7b, 0xaa, 0x8c, 0xf9, 0x20, 0x7c, 0x9b, 0xba, 0x0a, 0xbc, 0x30, 0x44, 0xdc, 0xb4,
+	0xdb, 0x6d, 0xbb, 0x13, 0x6d, 0x3b, 0xa6, 0xba, 0xe5, 0x1e, 0x2b, 0x1b, 0x09, 0xda, 0x2c, 0xbb,
+	0x65, 0x36, 0x75, 0xab, 0x6e, 0xd0, 0x13, 0xb3, 0x49, 0xa3, 0xe7, 0x07, 0x6c, 0x4b, 0x41, 0x9b,
+	0x6e, 0xe8, 0x5d, 0x97, 0x3a, 0xca, 0x78, 0x3d, 0x68, 0xb4, 0xbb, 0xb4, 0x73, 0x64, 0xd9, 0xaf,
+	0xea, 0x77, 0x37, 0x63, 0x1c, 0xda, 0x4d, 0xb3, 0xde, 0x36, 0x1b, 0x75, 0xa3, 0xa1, 0x1c, 0xd6,
+	0x22, 0x1c, 0x74, 0x4b, 0x77, 0xda, 0x03, 0x97, 0xd5, 0xa0, 0xcb, 0xa9, 0xde, 0x69, 0xd5, 0xed,
+	0xae, 0x2f, 0xa4, 0xe4, 0x4f, 0x09, 0x48, 0xee, 0x08, 0xd1, 0x7b, 0x8e, 0xdd, 0xeb, 0xe2, 0x02,
+	0x8c, 0x9a, 0x46, 0x3e, 0xb1, 0x9a, 0xb8, 0x3d, 0xb3, 0x35, 0xf1, 0xaf, 0xb7, 0x6f, 0x56, 0x12,
+	0xda, 0xa8, 0x69, 0x60, 0x19, 0x32, 0xc1, 0xe5, 0xb3, 0xfc, 0xe8, 0xea, 0xd8, 0xed, 0xe4, 0xbd,
+	0x85, 0xa2, 0xda, 0xc7, 0x7d, 0x69, 0x96, 0x58, 0x5b, 0x33, 0xff, 0x78, 0xfb, 0x66, 0x65, 0x9c,
+	0x63, 0x69, 0xb3, 0x96, 0xdf, 0xc2, 0x70, 0x13, 0xa6, 0x3c, 0x88, 0x31, 0x01, 0x31, 0xeb, 0x41,
+	0x84, 0xe7, 0x7a, 0x9e, 0xe4, 0xbb, 0x90, 0xf2, 0xa9, 0x64, 0xf8, 0x1e, 0x4c, 0x98, 0x2e, 0x6d,
+	0xb3, 0x7c, 0x42, 0x40, 0xcc, 0x05, 0x21, 0x84, 0x93, 0x26, 0x3d, 0xc8, 0x2f, 0x01, 0x1f, 0xf2,
+	0xa8, 0x3c, 0x32, 0x2d, 0x97, 0x3a, 0x5a, 0xcf, 0xa2, 0x8f, 0xe9, 0x29, 0x69, 0x44, 0x8d, 0xe2,
+	0x24, 0x67, 0xcd, 0x8e, 0xe0, 0x34, 0x8c, 0xbb, 0xa7, 0x5d, 0x9a, 0x4d, 0x60, 0x0a, 0xa6, 0x19,
+	0x3d, 0xa1, 0x8e, 0xe9, 0x9e, 0x66, 0x47, 0x31, 0x03, 0x49, 0x87, 0x32, 0xbb, 0xe7, 0x34, 0x69,
+	0xdd, 0x34, 0xb2, 0x63, 0xdc, 0xdc, 0xd4, 0x5d, 0xda, 0xb2, 0x9d, 0xd3, 0xec, 0x38, 0xa6, 0x61,
+	0x46, 0x0a, 0xe6, 0xc6, 0x89, 0x07, 0x13, 0xff, 0x7e, 0xfb, 0x66, 0x65, 0x84, 0x1c, 0x43, 0x66,
+	0x88, 0x0a, 0x3f, 0x85, 0xb1, 0x97, 0xf4, 0x54, 0x84, 0x79, 0xf6, 0xde, 0x86, 0x27, 0x3e, 0x2c,
+	0x28, 0x62, 0x48, 0xe3, 0x33, 0x71, 0x1e, 0x26, 0x4e, 0x74, 0xab, 0x47, 0xf3, 0xa3, 0x7c, 0xa7,
+	0x34, 0xf9, 0x40, 0x6a, 0x90, 0xf4, 0x4d, 0x88, 0xdb, 0xcb, 0x0d, 0x98, 0x70, 0x7a, 0x56, 0x7f,
+	0x07, 0xaf, 0xc4, 0xd0, 0x6b, 0xd2, 0x8b, 0x7c, 0x02, 0x29, 0x9f, 0x85, 0xe1, 0x06, 0x4c, 0x1d,
+	0xc9, 0x9f, 0xc3, 0xc1, 0xf7, 0x03, 0x78, 0x3e, 0xe4, 0x05, 0x4c, 0xed, 0xdb, 0xad, 0x96, 0xd9,
+	0x69, 0x61, 0x09, 0x26, 0x2c, 0x7a, 0x42, 0x2d, 0xb5, 0xee, 0xab, 0xbe, 0xd4, 0xd9, 0xe7, 0xe3,
+	0xfd, 0x1f, 0x9a, 0xf4, 0xc3, 0x35, 0x48, 0x75, 0xf5, 0xe6, 0x4b, 0xbd, 0x45, 0xeb, 0x1d, 0xbd,
+	0xed, 0x2d, 0x36, 0xa9, 0xc6, 0x0e, 0xf4, 0x36, 0x25, 0x0e, 0xa4, 0xb6, 0x6d, 0x87, 0x96, 0x3b,
+	0xcc, 0xd5, 0x3b, 0x4d, 0x8a, 0x37, 0x21, 0x69, 0xaa, 0xdf, 0xf5, 0xe1, 0xc5, 0x83, 0x67, 0x29,
+	0x1b, 0xb8, 0x09, 0x93, 0xf2, 0xac, 0x0b, 0xd0, 0xe4, 0xbd, 0x79, 0x4f, 0xcc, 0x0f, 0xc4, 0x68,
+	0xcd, 0xd5, 0xdd, 0x1e, 0xdb, 0x9a, 0xe0, 0xa9, 0x38, 0xa2, 0x29, 0xd7, 0x07, 0x13, 0xff, 0xe5,
+	0x38, 0x64, 0x0b, 0xd2, 0x7e, 0x4e, 0x86, 0xeb, 0xc1, 0x6c, 0xec, 0x63, 0xf9, 0xbd, 0x54, 0x3a,
+	0x7a, 0x18, 0x7f, 0x1f, 0x87, 0xc9, 0x67, 0xc2, 0x0b, 0xaf, 0xc3, 0xd4, 0x09, 0x75, 0x98, 0x69,
+	0x77, 0x82, 0x72, 0xbd, 0x51, 0xbc, 0x0f, 0xd3, 0xaa, 0x76, 0x78, 0x7b, 0x96, 0xe9, 0x87, 0x5c,
+	0x8e, 0xfb, 0xcf, 0x4c, 0xdf, 0x37, 0xea, 0xd0, 0x8e, 0xfd, 0xff, 0x87, 0x76, 0xfc, 0xa2, 0x87,
+	0x16, 0xbf, 0x0f, 0x29, 0x75, 0x1c, 0xf8, 0x61, 0x62, 0xf9, 0x09, 0x31, 0x13, 0x83, 0x33, 0x9f,
+	0x9e, 0x76, 0x03, 0xb3, 0x93, 0x46, 0x7f, 0x98, 0xe1, 0x36, 0xa4, 0x15, 0x42, 0x4b, 0x9c, 0xfb,
+	0xfc, 0x64, 0xec, 0x71, 0xf7, 0x63, 0x28, 0x5a, 0x55, 0x2b, 0xb6, 0x21, 0x2d, 0xcb, 0xa2, 0x97,
+	0xb6, 0x53, 0xb1, 0x69, 0x1b, 0x00, 0xd1, 0xfd, 0x59, 0xff, 0x23, 0xc8, 0x0d, 0x2a, 0xb0, 0xee,
+	0xea, 0x0d, 0x9d, 0xd1, 0xfc, 0xb2, 0x02, 0xe2, 0x96, 0xe2, 0x13, 0xb3, 0x21, 0xe5, 0xec, 0xe8,
+	0xae, 0xbe, 0x95, 0xe5, 0x40, 0x49, 0x5f, 0x3d, 0xd0, 0x32, 0xdc, 0x8b, 0x3b, 0xa9, 0xd9, 0xf8,
+	0x19, 0xcc, 0xf9, 0x6b, 0xb6, 0x07, 0xba, 0x22, 0x40, 0x17, 0x8b, 0x62, 0x58, 0x8a, 0x3b, 0x13,
+	0x57, 0xe8, 0x92, 0x6e, 0x0a, 0xc2, 0xcb, 0xb1, 0xbf, 0x26, 0x20, 0x5b, 0xa3, 0xd6, 0xd1, 0x53,
+	0xca, 0x5c, 0x8d, 0xb2, 0xae, 0xdd, 0x61, 0xbc, 0xf4, 0x4c, 0x3a, 0x94, 0xf5, 0x2c, 0x57, 0x9d,
+	0xc2, 0x5b, 0x5e, 0x18, 0x86, 0x3d, 0xfd, 0x03, 0x3d, 0xcb, 0xd5, 0xd4, 0x34, 0x52, 0x85, 0xd9,
+	0xa0, 0x05, 0x93, 0x30, 0x55, 0x3b, 0xdc, 0xde, 0xde, 0xad, 0xd5, 0xb2, 0x23, 0xfc, 0xe1, 0xd1,
+	0xc3, 0xf2, 0xfe, 0xa1, 0xb6, 0x9b, 0x4d, 0x60, 0x0e, 0xd2, 0x07, 0x95, 0xa7, 0xf5, 0xda, 0x61,
+	0xb5, 0x5a, 0xd1, 0x9e, 0xee, 0xee, 0x64, 0x47, 0xf9, 0xd0, 0xe1, 0xc1, 0xe3, 0x83, 0xca, 0xf3,
+	0x83, 0xfa, 0xae, 0xa6, 0x55, 0xb4, 0xec, 0x98, 0x57, 0x27, 0x2b, 0x90, 0xab, 0x1c, 0x3d, 0x6c,
+	0xd1, 0x8e, 0x5b, 0xeb, 0x35, 0x58, 0xd3, 0x31, 0x1b, 0xd4, 0xc1, 0x15, 0x00, 0xfb, 0x48, 0xe7,
+	0x83, 0xfd, 0xe3, 0xac, 0xcd, 0xa8, 0x91, 0xb2, 0x81, 0x4b, 0x30, 0xa3, 0x5e, 0x71, 0xa6, 0xa1,
+	0xca, 0xc3, 0xb4, 0x1c, 0x28, 0x1b, 0xe4, 0x63, 0x80, 0x27, 0xb4, 0xdd, 0xa0, 0x0e, 0x3b, 0x36,
+	0xbb, 0x1c, 0x49, 0x24, 0x91, 0x2c, 0x25, 0x0a, 0x49, 0x8c, 0xf0, 0x42, 0x82, 0xb3, 0xa2, 0x58,
+	0x4a, 0x88, 0x51, 0xd3, 0xb8, 0xf7, 0xe7, 0x12, 0xa4, 0xe5, 0x01, 0xad, 0x51, 0x87, 0xc7, 0x1a,
+	0x2b, 0x30, 0x7b, 0xd8, 0x35, 0x74, 0x97, 0x7a, 0x65, 0x0a, 0x33, 0xbe, 0x73, 0xc4, 0x2b, 0x5c,
+	0x61, 0xb1, 0x28, 0x3b, 0x94, 0xa2, 0xd7, 0xa1, 0x14, 0x77, 0x79, 0x87, 0x42, 0xe6, 0xbf, 0xfc,
+	0xdb, 0x3f, 0xbf, 0x1a, 0x9d, 0xc5, 0x94, 0x68, 0x6c, 0x4e, 0xee, 0xf2, 0x5e, 0x82, 0xe1, 0x73,
+	0x48, 0xef, 0x51, 0xd7, 0x27, 0x31, 0x66, 0x7a, 0xa1, 0x7f, 0x64, 0x06, 0xbe, 0xa4, 0x20, 0x20,
+	0xe7, 0x11, 0x3d, 0xc8, 0xf6, 0x00, 0xe7, 0x05, 0x64, 0xa5, 0x52, 0x1f, 0x76, 0x04, 0x46, 0xac,
+	0xdc, 0x15, 0x81, 0x7d, 0x85, 0x44, 0x60, 0x3f, 0x48, 0xac, 0xe3, 0x0e, 0xcc, 0xec, 0x51, 0x57,
+	0x55, 0xaf, 0x38, 0xcd, 0xfd, 0x02, 0x21, 0xfd, 0x48, 0x46, 0x60, 0xce, 0xe0, 0x94, 0xc2, 0xc4,
+	0x1e, 0xe4, 0xf6, 0x4d, 0xe6, 0x06, 0x2b, 0x69, 0x1c, 0xda, 0x42, 0x54, 0x49, 0x65, 0xe4, 0xee,
+	0x1f, 0xfe, 0xf3, 0x66, 0x65, 0x4a, 0x55, 0x5f, 0xf1, 0x1b, 0xe5, 0x6f, 0x41, 0x36, 0x87, 0x39,
+	0x6f, 0x01, 0x66, 0x9f, 0xa1, 0x06, 0x99, 0x3d, 0x1a, 0x60, 0x45, 0xf0, 0xc0, 0xcb, 0x3b, 0x85,
+	0xc8, 0xda, 0x4d, 0xae, 0x09, 0xbc, 0x3c, 0x2e, 0x86, 0xf0, 0x4a, 0xaf, 0x4d, 0xe3, 0x0b, 0xd4,
+	0x21, 0xc5, 0xd7, 0xf2, 0xd0, 0xab, 0xbc, 0x71, 0xcb, 0xc8, 0x0e, 0xd5, 0x6d, 0x46, 0x6e, 0x71,
+	0xd5, 0x30, 0x28, 0xf0, 0x82, 0x08, 0x31, 0xeb, 0x11, 0xf5, 0x8b, 0xf9, 0x6b, 0x40, 0x4e, 0xb1,
+	0x1f, 0xac, 0xcb, 0x71, 0x44, 0x8b, 0x91, 0x15, 0x9e, 0x91, 0x8f, 0x38, 0x5d, 0x2e, 0xf4, 0x5e,
+	0x10, 0xac, 0x57, 0xf1, 0x8a, 0x2f, 0x3d, 0xfd, 0x66, 0xfc, 0x1c, 0xb2, 0x7b, 0x34, 0xc8, 0x1d,
+	0x88, 0x5a, 0xf4, 0x0b, 0x85, 0xdc, 0x10, 0xb8, 0xd7, 0x70, 0x39, 0x06, 0x57, 0x06, 0xcf, 0x81,
+	0xc5, 0xd0, 0xca, 0xaa, 0xb6, 0xe3, 0xb2, 0xe8, 0x8d, 0x51, 0x7e, 0xc2, 0x83, 0xdc, 0x57, 0x09,
+	0xd0, 0xe5, 0x4f, 0x82, 0xed, 0x06, 0x92, 0xb3, 0xd8, 0x4a, 0xc2, 0x13, 0x7f, 0x95, 0x80, 0xf9,
+	0xe1, 0x15, 0x71, 0x44, 0x5c, 0x88, 0xa0, 0x29, 0x1b, 0x85, 0xb9, 0x88, 0x61, 0xf2, 0x29, 0x27,
+	0x9f, 0x84, 0x71, 0x0e, 0x29, 0xb8, 0x8b, 0xf8, 0xfe, 0xf9, 0xdc, 0xa5, 0xd7, 0xfc, 0x9f, 0x3a,
+	0x5f, 0xf9, 0x6f, 0x12, 0x70, 0x65, 0xb7, 0xa3, 0x37, 0x2c, 0x7a, 0x61, 0x21, 0x71, 0x47, 0xf6,
+	0x63, 0x21, 0xe0, 0x23, 0xb2, 0x79, 0x19, 0x01, 0x25, 0x2a, 0xc8, 0xf1, 0x77, 0x09, 0xc8, 0xef,
+	0x98, 0xec, 0x1b, 0x11, 0xf2, 0x3d, 0x21, 0xe4, 0x3e, 0xf9, 0xf0, 0x52, 0x42, 0x0c, 0xc9, 0x8e,
+	0xbf, 0x88, 0xc8, 0x85, 0x47, 0x96, 0xfd, 0x2a, 0x98, 0x0b, 0x58, 0xf4, 0xff, 0xb9, 0x24, 0xec,
+	0x64, 0x4b, 0x65, 0x02, 0x1f, 0x0d, 0x97, 0x82, 0xf3, 0xb2, 0x42, 0xcc, 0xe2, 0x59, 0xb1, 0xdc,
+	0x2f, 0xf1, 0x41, 0x01, 0x4f, 0x85, 0xbc, 0xe5, 0x10, 0xb1, 0x18, 0x97, 0x73, 0x62, 0x43, 0xb2,
+	0x21, 0x24, 0xdc, 0x22, 0x17, 0x90, 0xc0, 0xcb, 0xeb, 0xaf, 0x13, 0xb0, 0x12, 0xa1, 0xe2, 0x09,
+	0x75, 0xa9, 0x23, 0x65, 0x2c, 0x05, 0x64, 0x08, 0xc3, 0x13, 0xdb, 0x38, 0x47, 0x45, 0x51, 0xa8,
+	0xb8, 0x4d, 0xde, 0x39, 0x53, 0x45, 0x9b, 0x83, 0x09, 0x19, 0xaf, 0x61, 0x59, 0xbc, 0x9d, 0x5c,
+	0xea, 0xf0, 0x6e, 0x98, 0x55, 0x8e, 0xe2, 0xcf, 0xff, 0x72, 0x58, 0x90, 0x98, 0xa3, 0xd1, 0xae,
+	0x75, 0x4a, 0xee, 0x0a, 0xe6, 0x3b, 0xf8, 0xde, 0x05, 0x98, 0xeb, 0x8c, 0xcf, 0xc3, 0x3f, 0x26,
+	0x60, 0x29, 0x32, 0x11, 0x54, 0x4f, 0xe7, 0x27, 0xbf, 0x12, 0xda, 0x14, 0xe9, 0x44, 0x0e, 0x78,
+	0x1a, 0xa4, 0x21, 0x29, 0x4c, 0xb2, 0x81, 0x0c, 0x25, 0xc6, 0x3a, 0xde, 0x3e, 0x77, 0x57, 0xd4,
+	0x5c, 0xfc, 0x2a, 0x01, 0x6b, 0x31, 0xe9, 0x21, 0x18, 0xe5, 0xe6, 0xac, 0x45, 0xcb, 0xb9, 0x48,
+	0xa2, 0x6c, 0x0a, 0x49, 0x1b, 0xe4, 0xc2, 0x92, 0xf8, 0x3e, 0xbd, 0x80, 0x24, 0x8f, 0xd4, 0x79,
+	0x6f, 0x84, 0x4c, 0xb0, 0x67, 0x66, 0xe4, 0x5d, 0x1e, 0x8b, 0x99, 0x7e, 0x5f, 0x2f, 0xa8, 0x73,
+	0x98, 0xf1, 0xa8, 0xbd, 0xd2, 0x6f, 0x40, 0x7a, 0x00, 0x5f, 0x36, 0xe2, 0x09, 0x92, 0x83, 0x2d,
+	0x61, 0xa4, 0xc8, 0xc1, 0x45, 0x1f, 0x7d, 0xd6, 0x5b, 0x59, 0x72, 0x98, 0x06, 0xc3, 0x43, 0xc8,
+	0x6a, 0xb4, 0x69, 0x77, 0x9a, 0xa6, 0x45, 0xbd, 0x95, 0xf8, 0x01, 0x63, 0x43, 0xb6, 0x2c, 0x30,
+	0x17, 0x49, 0x18, 0x93, 0xc7, 0x66, 0x57, 0x74, 0x2a, 0x11, 0x09, 0x3b, 0xf4, 0xe7, 0x8b, 0x07,
+	0x83, 0xf3, 0x43, 0xcb, 0x97, 0x6f, 0xa8, 0x1f, 0x42, 0x6a, 0xdb, 0xa1, 0xba, 0xab, 0xa4, 0xe1,
+	0xd0, 0xec, 0x10, 0x9a, 0xea, 0xcd, 0xc8, 0x70, 0x30, 0xb9, 0xa4, 0xe7, 0x90, 0x92, 0x25, 0x3f,
+	0x42, 0x55, 0xdc, 0x22, 0xdf, 0x11, 0x78, 0x2b, 0x64, 0x29, 0x4a, 0x9d, 0x57, 0xc4, 0x7f, 0x0c,
+	0x69, 0x55, 0xc3, 0x2f, 0x81, 0xac, 0xde, 0xd0, 0x64, 0x39, 0x12, 0xd9, 0xab, 0xca, 0xcf, 0x21,
+	0xa5, 0xd1, 0x86, 0x6d, 0xbb, 0xdf, 0x98, 0x66, 0x47, 0xc0, 0x71, 0xe0, 0x1d, 0x6a, 0x51, 0xf7,
+	0x6b, 0x04, 0x63, 0x3d, 0x1a, 0xd8, 0x10, 0x70, 0xd8, 0x83, 0xf4, 0x8e, 0xfd, 0xaa, 0x63, 0xd9,
+	0xba, 0x51, 0x6e, 0xeb, 0x2d, 0x3a, 0x78, 0x8b, 0x89, 0x47, 0xcf, 0x36, 0x68, 0x5c, 0x2a, 0x5d,
+	0xea, 0x88, 0xbb, 0x46, 0xfe, 0xe7, 0x0f, 0xb9, 0x2f, 0x38, 0x3e, 0x20, 0x77, 0x22, 0x39, 0x4c,
+	0x0e, 0x51, 0x37, 0x14, 0x06, 0x2b, 0xbd, 0xe6, 0x7f, 0x51, 0x7c, 0xc1, 0x37, 0xf7, 0xcb, 0x04,
+	0x2c, 0xee, 0x51, 0x37, 0xc0, 0x21, 0xaf, 0x12, 0xce, 0x15, 0x10, 0x18, 0x26, 0x0f, 0x84, 0x80,
+	0x0f, 0xf1, 0xde, 0x25, 0x04, 0x94, 0x98, 0x64, 0xea, 0x89, 0x66, 0x2d, 0x80, 0x77, 0x49, 0x76,
+	0x55, 0x87, 0xf0, 0x32, 0xcb, 0xc7, 0x23, 0xd9, 0xa0, 0x06, 0x90, 0xd8, 0xd0, 0x8e, 0x46, 0xb1,
+	0x31, 0xf2, 0xbe, 0xa0, 0xbb, 0x89, 0x37, 0x2e, 0x42, 0x87, 0x3f, 0x87, 0xb9, 0x6d, 0xde, 0x7a,
+	0x5b, 0x97, 0x5b, 0x61, 0x70, 0x83, 0xd5, 0x0a, 0xd7, 0x2f, 0xb5, 0xc2, 0xdf, 0x27, 0x60, 0xee,
+	0x61, 0xd3, 0x35, 0x4f, 0x74, 0x97, 0x0a, 0x16, 0x59, 0xce, 0x2f, 0x49, 0xbd, 0x2d, 0xa8, 0x3f,
+	0x21, 0xdf, 0xb9, 0xcc, 0xd6, 0xca, 0xe1, 0x9e, 0xe0, 0xe3, 0x89, 0xf6, 0xdb, 0x04, 0xe4, 0x34,
+	0x7a, 0x42, 0x1d, 0xf7, 0x5b, 0x11, 0xe2, 0x08, 0x6a, 0x2e, 0xe4, 0xa7, 0x90, 0x19, 0xbc, 0x1e,
+	0xc2, 0x5d, 0x7b, 0xda, 0xfb, 0x2d, 0xdb, 0xf5, 0x62, 0xa8, 0x5d, 0x5f, 0xc6, 0x42, 0x24, 0xbd,
+	0x6c, 0xd3, 0x5f, 0xc0, 0x9c, 0x0f, 0xbd, 0xbd, 0x6d, 0x77, 0x8e, 0xcc, 0x56, 0x90, 0x21, 0xd7,
+	0x67, 0xf0, 0xcc, 0xe4, 0x96, 0x40, 0x5e, 0xc3, 0xeb, 0xd1, 0xc8, 0xed, 0x7a, 0x53, 0xe1, 0x74,
+	0x60, 0x41, 0x46, 0x6e, 0x98, 0x20, 0x0c, 0x1a, 0x5b, 0x8e, 0xd6, 0x65, 0x7f, 0x49, 0xce, 0x23,
+	0xe3, 0xc1, 0x6a, 0xfb, 0x83, 0x75, 0xb1, 0xb6, 0xf6, 0xc1, 0x99, 0x6d, 0x6d, 0x5c, 0xf4, 0xfa,
+	0xed, 0xec, 0x7c, 0x90, 0xef, 0x32, 0xdd, 0xd3, 0xa3, 0x0b, 0x74, 0x4f, 0x04, 0x57, 0x63, 0xf9,
+	0xbd, 0xae, 0xc9, 0xf6, 0x2f, 0x5a, 0x5e, 0xeb, 0xc5, 0xb5, 0x10, 0x73, 0xe1, 0xab, 0x41, 0x46,
+	0x4a, 0x9c, 0x75, 0x36, 0x78, 0x95, 0x18, 0xfd, 0xb6, 0x96, 0x36, 0xd4, 0xc4, 0xb5, 0xca, 0x00,
+	0x62, 0x28, 0xc6, 0x21, 0x0a, 0xb2, 0x26, 0xe0, 0x96, 0xf0, 0x6a, 0x14, 0x9c, 0xec, 0x00, 0x18,
+	0x64, 0x07, 0x8b, 0x50, 0x51, 0x8c, 0x5b, 0xc5, 0x7c, 0xc4, 0xed, 0xa4, 0xba, 0xaa, 0xc8, 0x0c,
+	0xdd, 0x67, 0xca, 0x7b, 0x16, 0x5c, 0x18, 0x22, 0x56, 0x91, 0x7b, 0x04, 0xd9, 0x9a, 0xeb, 0x50,
+	0xbd, 0x5d, 0xd5, 0x9b, 0x2f, 0xa9, 0xcb, 0x2a, 0x3d, 0x17, 0x17, 0x03, 0xdb, 0x25, 0x0d, 0x95,
+	0x9e, 0x1b, 0x9b, 0x9e, 0x23, 0xb7, 0x13, 0xb8, 0x2b, 0x9a, 0x2b, 0x6a, 0x9e, 0x50, 0x05, 0x54,
+	0xee, 0x9c, 0x71, 0xd1, 0x12, 0xc6, 0x2f, 0x77, 0xc8, 0xc8, 0x07, 0x09, 0x7c, 0x0c, 0x73, 0x0a,
+	0x66, 0xfb, 0x58, 0xef, 0xb4, 0xe8, 0xee, 0x09, 0xed, 0xb8, 0xf1, 0x61, 0xc8, 0x07, 0x90, 0x7c,
+	0x53, 0x04, 0xd8, 0x21, 0xcc, 0xf6, 0x37, 0x49, 0x7e, 0x79, 0xf2, 0xef, 0x52, 0xd4, 0x05, 0x2f,
+	0x21, 0xd1, 0x29, 0xaf, 0xa2, 0x25, 0xf7, 0xa9, 0x0e, 0x39, 0xd9, 0xa9, 0xf9, 0xbf, 0x83, 0x44,
+	0xdd, 0xf4, 0x16, 0xa2, 0x06, 0xc9, 0xaa, 0xa0, 0x28, 0x90, 0xfe, 0x86, 0x04, 0x2e, 0x8e, 0xf9,
+	0x11, 0x96, 0xba, 0xfd, 0xe8, 0x91, 0xba, 0xfd, 0xa0, 0x21, 0xdd, 0x01, 0x50, 0xa9, 0xdb, 0x80,
+	0x9c, 0xac, 0x44, 0x5f, 0x4f, 0xf7, 0xbb, 0x82, 0xe2, 0x7a, 0xe1, 0x0c, 0x0a, 0x2e, 0xfe, 0x73,
+	0xc8, 0xc9, 0x76, 0x2b, 0x4e, 0x7f, 0x5c, 0x16, 0xa9, 0x25, 0xac, 0x9f, 0xb5, 0x84, 0xba, 0x3c,
+	0x22, 0x81, 0x6f, 0x45, 0xe7, 0x1e, 0x11, 0xbf, 0xb7, 0x77, 0xed, 0x88, 0xd1, 0xd1, 0xc7, 0x7d,
+	0xd1, 0xcc, 0x8b, 0x57, 0x1b, 0x8b, 0x6e, 0xe6, 0xa5, 0xcd, 0xeb, 0x10, 0x71, 0x29, 0xfe, 0xc5,
+	0xc6, 0xf0, 0x33, 0x98, 0xf6, 0xae, 0xb1, 0x03, 0x60, 0xf9, 0xb8, 0xfb, 0x70, 0x72, 0x53, 0xc0,
+	0xae, 0x92, 0x6b, 0x91, 0xb0, 0x8c, 0x5a, 0x47, 0x75, 0x97, 0xa3, 0x3d, 0x13, 0xfd, 0x57, 0xe0,
+	0x73, 0xc0, 0x50, 0x92, 0x84, 0xbf, 0x17, 0x84, 0x6b, 0x10, 0x3f, 0x3c, 0xdc, 0x4f, 0xfd, 0x71,
+	0x6c, 0x36, 0xf0, 0x05, 0xa0, 0x97, 0x7a, 0x31, 0xc8, 0x31, 0x1f, 0x0d, 0xc2, 0x01, 0x09, 0x82,
+	0x8b, 0x49, 0xc8, 0x20, 0x5d, 0x33, 0xdb, 0x3d, 0xcb, 0x4b, 0x42, 0x5c, 0xee, 0x47, 0xc2, 0x3f,
+	0xac, 0xd1, 0x9f, 0xf5, 0x28, 0x73, 0xe3, 0x9a, 0x8a, 0xd0, 0x5d, 0x47, 0x30, 0x48, 0x0a, 0xa9,
+	0xce, 0x91, 0x78, 0x46, 0x6e, 0xc3, 0x4c, 0xff, 0xb2, 0x1f, 0xfb, 0x1f, 0x04, 0x43, 0x9f, 0x01,
+	0x0a, 0xf1, 0x26, 0x32, 0xb2, 0x65, 0xc2, 0x9c, 0xed, 0xb4, 0x44, 0xb9, 0x69, 0xda, 0x8e, 0xa1,
+	0x5c, 0xb7, 0x52, 0xf2, 0xe6, 0xb9, 0x2a, 0xbe, 0x7d, 0xff, 0xe4, 0x4e, 0xcb, 0x74, 0x8f, 0x7b,
+	0x8d, 0x62, 0xd3, 0x6e, 0x97, 0x3c, 0x4f, 0xf5, 0x7f, 0x10, 0x36, 0xd4, 0xe7, 0xf1, 0x96, 0xad,
+	0x06, 0xfe, 0x32, 0xba, 0x58, 0xf1, 0xc0, 0x9e, 0xf9, 0x6f, 0xb1, 0xab, 0xa3, 0xd5, 0xb1, 0xea,
+	0x78, 0x75, 0xa2, 0x3a, 0x59, 0x9d, 0xaa, 0x4e, 0x37, 0x26, 0xc5, 0xc4, 0xcd, 0xff, 0x05, 0x00,
+	0x00, 0xff, 0xff, 0xe4, 0xcb, 0x00, 0x47, 0xda, 0x20, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -2899,6 +3012,185 @@
 	Subscribe(context.Context, *OfAgentSubscriber) (*OfAgentSubscriber, error)
 }
 
+// UnimplementedVolthaServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedVolthaServiceServer struct {
+}
+
+func (*UnimplementedVolthaServiceServer) UpdateLogLevel(ctx context.Context, req *Logging) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogLevel not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetMembership(ctx context.Context, req *empty.Empty) (*Membership, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetMembership not implemented")
+}
+func (*UnimplementedVolthaServiceServer) UpdateMembership(ctx context.Context, req *Membership) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateMembership not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetVoltha(ctx context.Context, req *empty.Empty) (*Voltha, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetVoltha not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListCoreInstances(ctx context.Context, req *empty.Empty) (*CoreInstances, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListCoreInstances not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetCoreInstance(ctx context.Context, req *common.ID) (*CoreInstance, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetCoreInstance not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListAdapters(ctx context.Context, req *empty.Empty) (*Adapters, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListAdapters not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListLogicalDevices(ctx context.Context, req *empty.Empty) (*LogicalDevices, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDevices not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetLogicalDevice(ctx context.Context, req *common.ID) (*LogicalDevice, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetLogicalDevice not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListLogicalDevicePorts(ctx context.Context, req *common.ID) (*LogicalPorts, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDevicePorts not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetLogicalDevicePort(ctx context.Context, req *LogicalPortId) (*LogicalPort, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetLogicalDevicePort not implemented")
+}
+func (*UnimplementedVolthaServiceServer) EnableLogicalDevicePort(ctx context.Context, req *LogicalPortId) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method EnableLogicalDevicePort not implemented")
+}
+func (*UnimplementedVolthaServiceServer) DisableLogicalDevicePort(ctx context.Context, req *LogicalPortId) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DisableLogicalDevicePort not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListLogicalDeviceFlows(ctx context.Context, req *common.ID) (*openflow_13.Flows, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDeviceFlows not implemented")
+}
+func (*UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowTable(ctx context.Context, req *openflow_13.FlowTableUpdate) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogicalDeviceFlowTable not implemented")
+}
+func (*UnimplementedVolthaServiceServer) UpdateLogicalDeviceMeterTable(ctx context.Context, req *openflow_13.MeterModUpdate) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogicalDeviceMeterTable not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetMeterStatsOfLogicalDevice(ctx context.Context, req *common.ID) (*openflow_13.MeterStatsReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetMeterStatsOfLogicalDevice not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListLogicalDeviceFlowGroups(ctx context.Context, req *common.ID) (*openflow_13.FlowGroups, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDeviceFlowGroups not implemented")
+}
+func (*UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, req *openflow_13.FlowGroupTableUpdate) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogicalDeviceFlowGroupTable not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListDevices(ctx context.Context, req *empty.Empty) (*Devices, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListDevices not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListDeviceIds(ctx context.Context, req *empty.Empty) (*common.IDs, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceIds not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ReconcileDevices(ctx context.Context, req *common.IDs) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ReconcileDevices not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetDevice(ctx context.Context, req *common.ID) (*Device, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetDevice not implemented")
+}
+func (*UnimplementedVolthaServiceServer) CreateDevice(ctx context.Context, req *Device) (*Device, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method CreateDevice not implemented")
+}
+func (*UnimplementedVolthaServiceServer) EnableDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method EnableDevice not implemented")
+}
+func (*UnimplementedVolthaServiceServer) DisableDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DisableDevice not implemented")
+}
+func (*UnimplementedVolthaServiceServer) RebootDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method RebootDevice not implemented")
+}
+func (*UnimplementedVolthaServiceServer) DeleteDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteDevice not implemented")
+}
+func (*UnimplementedVolthaServiceServer) DownloadImage(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DownloadImage not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetImageDownloadStatus(ctx context.Context, req *ImageDownload) (*ImageDownload, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetImageDownloadStatus not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetImageDownload(ctx context.Context, req *ImageDownload) (*ImageDownload, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetImageDownload not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListImageDownloads(ctx context.Context, req *common.ID) (*ImageDownloads, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListImageDownloads not implemented")
+}
+func (*UnimplementedVolthaServiceServer) CancelImageDownload(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method CancelImageDownload not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ActivateImageUpdate(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ActivateImageUpdate not implemented")
+}
+func (*UnimplementedVolthaServiceServer) RevertImageUpdate(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method RevertImageUpdate not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListDevicePorts(ctx context.Context, req *common.ID) (*Ports, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListDevicePorts not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListDevicePmConfigs(ctx context.Context, req *common.ID) (*PmConfigs, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListDevicePmConfigs not implemented")
+}
+func (*UnimplementedVolthaServiceServer) UpdateDevicePmConfigs(ctx context.Context, req *PmConfigs) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateDevicePmConfigs not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListDeviceFlows(ctx context.Context, req *common.ID) (*openflow_13.Flows, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceFlows not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListDeviceFlowGroups(ctx context.Context, req *common.ID) (*openflow_13.FlowGroups, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceFlowGroups not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListDeviceTypes(ctx context.Context, req *empty.Empty) (*DeviceTypes, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceTypes not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetDeviceType(ctx context.Context, req *common.ID) (*DeviceType, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceType not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListDeviceGroups(ctx context.Context, req *empty.Empty) (*DeviceGroups, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceGroups not implemented")
+}
+func (*UnimplementedVolthaServiceServer) StreamPacketsOut(srv VolthaService_StreamPacketsOutServer) error {
+	return status.Errorf(codes.Unimplemented, "method StreamPacketsOut not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ReceivePacketsIn(req *empty.Empty, srv VolthaService_ReceivePacketsInServer) error {
+	return status.Errorf(codes.Unimplemented, "method ReceivePacketsIn not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ReceiveChangeEvents(req *empty.Empty, srv VolthaService_ReceiveChangeEventsServer) error {
+	return status.Errorf(codes.Unimplemented, "method ReceiveChangeEvents not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetDeviceGroup(ctx context.Context, req *common.ID) (*DeviceGroup, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceGroup not implemented")
+}
+func (*UnimplementedVolthaServiceServer) CreateAlarmFilter(ctx context.Context, req *AlarmFilter) (*AlarmFilter, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method CreateAlarmFilter not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetAlarmFilter(ctx context.Context, req *common.ID) (*AlarmFilter, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetAlarmFilter not implemented")
+}
+func (*UnimplementedVolthaServiceServer) UpdateAlarmFilter(ctx context.Context, req *AlarmFilter) (*AlarmFilter, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateAlarmFilter not implemented")
+}
+func (*UnimplementedVolthaServiceServer) DeleteAlarmFilter(ctx context.Context, req *common.ID) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteAlarmFilter not implemented")
+}
+func (*UnimplementedVolthaServiceServer) ListAlarmFilters(ctx context.Context, req *empty.Empty) (*AlarmFilters, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ListAlarmFilters not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetImages(ctx context.Context, req *common.ID) (*Images, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetImages not implemented")
+}
+func (*UnimplementedVolthaServiceServer) SelfTest(ctx context.Context, req *common.ID) (*SelfTestResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SelfTest not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetMibDeviceData(ctx context.Context, req *common.ID) (*omci.MibDeviceData, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetMibDeviceData not implemented")
+}
+func (*UnimplementedVolthaServiceServer) GetAlarmDeviceData(ctx context.Context, req *common.ID) (*omci.AlarmDeviceData, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetAlarmDeviceData not implemented")
+}
+func (*UnimplementedVolthaServiceServer) SimulateAlarm(ctx context.Context, req *SimulateAlarmRequest) (*common.OperationResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SimulateAlarm not implemented")
+}
+func (*UnimplementedVolthaServiceServer) Subscribe(ctx context.Context, req *OfAgentSubscriber) (*OfAgentSubscriber, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method Subscribe not implemented")
+}
+
 func RegisterVolthaServiceServer(s *grpc.Server, srv VolthaServiceServer) {
 	s.RegisterService(&_VolthaService_serviceDesc, srv)
 }
@@ -4205,164 +4497,3 @@
 	},
 	Metadata: "voltha_protos/voltha.proto",
 }
-
-func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_voltha_1f7600b5a75eb6d1) }
-
-var fileDescriptor_voltha_1f7600b5a75eb6d1 = []byte{
-	// 2475 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x73, 0xdb, 0xc6,
-	0x15, 0x16, 0x75, 0xd7, 0x21, 0x29, 0x92, 0x47, 0x17, 0xd3, 0x94, 0x64, 0x4b, 0x1b, 0xc7, 0x76,
-	0xe4, 0x88, 0x8c, 0xad, 0xc4, 0xd3, 0x3a, 0xcd, 0xa4, 0xd6, 0xc5, 0x2a, 0x6b, 0x59, 0x64, 0x41,
-	0xcb, 0x4e, 0x9b, 0x7a, 0x38, 0x20, 0xb1, 0xa2, 0x30, 0x06, 0x09, 0x16, 0x0b, 0xca, 0xd5, 0xb8,
-	0x99, 0xce, 0xa4, 0xd7, 0xe9, 0x63, 0xf3, 0x17, 0xfa, 0xd0, 0xe9, 0xf4, 0xaf, 0xf8, 0xa9, 0xbf,
-	0xa0, 0x9d, 0x3e, 0xf4, 0xb1, 0x4f, 0x6e, 0x1f, 0x3b, 0x7b, 0x01, 0x09, 0x10, 0x80, 0x2e, 0x69,
-	0x66, 0xf2, 0x64, 0x62, 0xcf, 0xd9, 0xef, 0xfb, 0xf6, 0xec, 0xd9, 0x83, 0xa3, 0x85, 0xa1, 0x70,
-	0x62, 0x5b, 0xee, 0xb1, 0x5e, 0xef, 0x3a, 0xb6, 0x6b, 0xb3, 0x92, 0x7c, 0x2a, 0x8a, 0x27, 0x9c,
-	0x94, 0x4f, 0x85, 0xe5, 0x96, 0x6d, 0xb7, 0x2c, 0x5a, 0xd2, 0xbb, 0x66, 0x49, 0xef, 0x74, 0x6c,
-	0x57, 0x77, 0x4d, 0xbb, 0xc3, 0xa4, 0x57, 0x61, 0x49, 0x59, 0xc5, 0x53, 0xa3, 0x77, 0x54, 0xa2,
-	0xed, 0xae, 0x7b, 0xaa, 0x8c, 0xf9, 0x20, 0x7c, 0x9b, 0xba, 0x0a, 0xbc, 0x30, 0x44, 0xdc, 0xb4,
-	0xdb, 0x6d, 0xbb, 0x13, 0x6d, 0x3b, 0xa6, 0xba, 0xe5, 0x1e, 0x2b, 0x1b, 0x09, 0xda, 0x2c, 0xbb,
-	0x65, 0x36, 0x75, 0xab, 0x6e, 0xd0, 0x13, 0xb3, 0x49, 0xa3, 0xe7, 0x07, 0x6c, 0x4b, 0x41, 0x9b,
-	0x6e, 0xe8, 0x5d, 0x97, 0x3a, 0xca, 0x78, 0x3d, 0x68, 0xb4, 0xbb, 0xb4, 0x73, 0x64, 0xd9, 0xaf,
-	0xea, 0x77, 0x37, 0x63, 0x1c, 0xda, 0x4d, 0xb3, 0xde, 0x36, 0x1b, 0x75, 0xa3, 0xa1, 0x1c, 0xd6,
-	0x22, 0x1c, 0x74, 0x4b, 0x77, 0xda, 0x03, 0x97, 0xd5, 0xa0, 0xcb, 0xa9, 0xde, 0x69, 0xd5, 0xed,
-	0xae, 0x2f, 0xa4, 0xe4, 0x4f, 0x09, 0x48, 0xee, 0x08, 0xd1, 0x7b, 0x8e, 0xdd, 0xeb, 0xe2, 0x02,
-	0x8c, 0x9a, 0x46, 0x3e, 0xb1, 0x9a, 0xb8, 0x3d, 0xb3, 0x35, 0xf1, 0xaf, 0xb7, 0x6f, 0x56, 0x12,
-	0xda, 0xa8, 0x69, 0x60, 0x19, 0x32, 0xc1, 0xe5, 0xb3, 0xfc, 0xe8, 0xea, 0xd8, 0xed, 0xe4, 0xbd,
-	0x85, 0xa2, 0xda, 0xc7, 0x7d, 0x69, 0x96, 0x58, 0x5b, 0x33, 0xff, 0x78, 0xfb, 0x66, 0x65, 0x9c,
-	0x63, 0x69, 0xb3, 0x96, 0xdf, 0xc2, 0x70, 0x13, 0xa6, 0x3c, 0x88, 0x31, 0x01, 0x31, 0xeb, 0x41,
-	0x84, 0xe7, 0x7a, 0x9e, 0xe4, 0xbb, 0x90, 0xf2, 0xa9, 0x64, 0xf8, 0x1e, 0x4c, 0x98, 0x2e, 0x6d,
-	0xb3, 0x7c, 0x42, 0x40, 0xcc, 0x05, 0x21, 0x84, 0x93, 0x26, 0x3d, 0xc8, 0x2f, 0x01, 0x1f, 0xf2,
-	0xa8, 0x3c, 0x32, 0x2d, 0x97, 0x3a, 0x5a, 0xcf, 0xa2, 0x8f, 0xe9, 0x29, 0x69, 0x44, 0x8d, 0xe2,
-	0x24, 0x67, 0xcd, 0x8e, 0xe0, 0x34, 0x8c, 0xbb, 0xa7, 0x5d, 0x9a, 0x4d, 0x60, 0x0a, 0xa6, 0x19,
-	0x3d, 0xa1, 0x8e, 0xe9, 0x9e, 0x66, 0x47, 0x31, 0x03, 0x49, 0x87, 0x32, 0xbb, 0xe7, 0x34, 0x69,
-	0xdd, 0x34, 0xb2, 0x63, 0xdc, 0xdc, 0xd4, 0x5d, 0xda, 0xb2, 0x9d, 0xd3, 0xec, 0x38, 0xa6, 0x61,
-	0x46, 0x0a, 0xe6, 0xc6, 0x89, 0x07, 0x13, 0xff, 0x7e, 0xfb, 0x66, 0x65, 0x84, 0x1c, 0x43, 0x66,
-	0x88, 0x0a, 0x3f, 0x85, 0xb1, 0x97, 0xf4, 0x54, 0x84, 0x79, 0xf6, 0xde, 0x86, 0x27, 0x3e, 0x2c,
-	0x28, 0x62, 0x48, 0xe3, 0x33, 0x71, 0x1e, 0x26, 0x4e, 0x74, 0xab, 0x47, 0xf3, 0xa3, 0x7c, 0xa7,
-	0x34, 0xf9, 0x40, 0x6a, 0x90, 0xf4, 0x4d, 0x88, 0xdb, 0xcb, 0x0d, 0x98, 0x70, 0x7a, 0x56, 0x7f,
-	0x07, 0xaf, 0xc4, 0xd0, 0x6b, 0xd2, 0x8b, 0x7c, 0x02, 0x29, 0x9f, 0x85, 0xe1, 0x06, 0x4c, 0x1d,
-	0xc9, 0x9f, 0xc3, 0xc1, 0xf7, 0x03, 0x78, 0x3e, 0xe4, 0x05, 0x4c, 0xed, 0xdb, 0xad, 0x96, 0xd9,
-	0x69, 0x61, 0x09, 0x26, 0x2c, 0x7a, 0x42, 0x2d, 0xb5, 0xee, 0xab, 0xbe, 0xd4, 0xd9, 0xe7, 0xe3,
-	0xfd, 0x1f, 0x9a, 0xf4, 0xc3, 0x35, 0x48, 0x75, 0xf5, 0xe6, 0x4b, 0xbd, 0x45, 0xeb, 0x1d, 0xbd,
-	0xed, 0x2d, 0x36, 0xa9, 0xc6, 0x0e, 0xf4, 0x36, 0x25, 0x0e, 0xa4, 0xb6, 0x6d, 0x87, 0x96, 0x3b,
-	0xcc, 0xd5, 0x3b, 0x4d, 0x8a, 0x37, 0x21, 0x69, 0xaa, 0xdf, 0xf5, 0xe1, 0xc5, 0x83, 0x67, 0x29,
-	0x1b, 0xb8, 0x09, 0x93, 0xf2, 0xac, 0x0b, 0xd0, 0xe4, 0xbd, 0x79, 0x4f, 0xcc, 0x0f, 0xc4, 0x68,
-	0xcd, 0xd5, 0xdd, 0x1e, 0xdb, 0x9a, 0xe0, 0xa9, 0x38, 0xa2, 0x29, 0xd7, 0x07, 0x13, 0xff, 0xe5,
-	0x38, 0x64, 0x0b, 0xd2, 0x7e, 0x4e, 0x86, 0xeb, 0xc1, 0x6c, 0xec, 0x63, 0xf9, 0xbd, 0x54, 0x3a,
-	0x7a, 0x18, 0x7f, 0x1f, 0x87, 0xc9, 0x67, 0xc2, 0x0b, 0xaf, 0xc3, 0xd4, 0x09, 0x75, 0x98, 0x69,
-	0x77, 0x82, 0x72, 0xbd, 0x51, 0xbc, 0x0f, 0xd3, 0xaa, 0x76, 0x78, 0x7b, 0x96, 0xe9, 0x87, 0x5c,
-	0x8e, 0xfb, 0xcf, 0x4c, 0xdf, 0x37, 0xea, 0xd0, 0x8e, 0xfd, 0xff, 0x87, 0x76, 0xfc, 0xa2, 0x87,
-	0x16, 0xbf, 0x0f, 0x29, 0x75, 0x1c, 0xf8, 0x61, 0x62, 0xf9, 0x09, 0x31, 0x13, 0x83, 0x33, 0x9f,
-	0x9e, 0x76, 0x03, 0xb3, 0x93, 0x46, 0x7f, 0x98, 0xe1, 0x36, 0xa4, 0x15, 0x42, 0x4b, 0x9c, 0xfb,
-	0xfc, 0x64, 0xec, 0x71, 0xf7, 0x63, 0x28, 0x5a, 0x55, 0x2b, 0xb6, 0x21, 0x2d, 0xcb, 0xa2, 0x97,
-	0xb6, 0x53, 0xb1, 0x69, 0x1b, 0x00, 0xd1, 0xfd, 0x59, 0xff, 0x23, 0xc8, 0x0d, 0x2a, 0xb0, 0xee,
-	0xea, 0x0d, 0x9d, 0xd1, 0xfc, 0xb2, 0x02, 0xe2, 0x96, 0xe2, 0x13, 0xb3, 0x21, 0xe5, 0xec, 0xe8,
-	0xae, 0xbe, 0x95, 0xe5, 0x40, 0x49, 0x5f, 0x3d, 0xd0, 0x32, 0xdc, 0x8b, 0x3b, 0xa9, 0xd9, 0xf8,
-	0x19, 0xcc, 0xf9, 0x6b, 0xb6, 0x07, 0xba, 0x22, 0x40, 0x17, 0x8b, 0x62, 0x58, 0x8a, 0x3b, 0x13,
-	0x57, 0xe8, 0x92, 0x6e, 0x0a, 0xc2, 0xcb, 0xb1, 0xbf, 0x26, 0x20, 0x5b, 0xa3, 0xd6, 0xd1, 0x53,
-	0xca, 0x5c, 0x8d, 0xb2, 0xae, 0xdd, 0x61, 0xbc, 0xf4, 0x4c, 0x3a, 0x94, 0xf5, 0x2c, 0x57, 0x9d,
-	0xc2, 0x5b, 0x5e, 0x18, 0x86, 0x3d, 0xfd, 0x03, 0x3d, 0xcb, 0xd5, 0xd4, 0x34, 0x52, 0x85, 0xd9,
-	0xa0, 0x05, 0x93, 0x30, 0x55, 0x3b, 0xdc, 0xde, 0xde, 0xad, 0xd5, 0xb2, 0x23, 0xfc, 0xe1, 0xd1,
-	0xc3, 0xf2, 0xfe, 0xa1, 0xb6, 0x9b, 0x4d, 0x60, 0x0e, 0xd2, 0x07, 0x95, 0xa7, 0xf5, 0xda, 0x61,
-	0xb5, 0x5a, 0xd1, 0x9e, 0xee, 0xee, 0x64, 0x47, 0xf9, 0xd0, 0xe1, 0xc1, 0xe3, 0x83, 0xca, 0xf3,
-	0x83, 0xfa, 0xae, 0xa6, 0x55, 0xb4, 0xec, 0x98, 0x57, 0x27, 0x2b, 0x90, 0xab, 0x1c, 0x3d, 0x6c,
-	0xd1, 0x8e, 0x5b, 0xeb, 0x35, 0x58, 0xd3, 0x31, 0x1b, 0xd4, 0xc1, 0x15, 0x00, 0xfb, 0x48, 0xe7,
-	0x83, 0xfd, 0xe3, 0xac, 0xcd, 0xa8, 0x91, 0xb2, 0x81, 0x4b, 0x30, 0xa3, 0x5e, 0x71, 0xa6, 0xa1,
-	0xca, 0xc3, 0xb4, 0x1c, 0x28, 0x1b, 0xe4, 0x63, 0x80, 0x27, 0xb4, 0xdd, 0xa0, 0x0e, 0x3b, 0x36,
-	0xbb, 0x1c, 0x49, 0x24, 0x91, 0x2c, 0x25, 0x0a, 0x49, 0x8c, 0xf0, 0x42, 0x82, 0xb3, 0xa2, 0x58,
-	0x4a, 0x88, 0x51, 0xd3, 0xb8, 0xf7, 0xe7, 0x12, 0xa4, 0xe5, 0x01, 0xad, 0x51, 0x87, 0xc7, 0x1a,
-	0x2b, 0x30, 0x7b, 0xd8, 0x35, 0x74, 0x97, 0x7a, 0x65, 0x0a, 0x33, 0xbe, 0x73, 0xc4, 0x2b, 0x5c,
-	0x61, 0xb1, 0x28, 0x3b, 0x94, 0xa2, 0xd7, 0xa1, 0x14, 0x77, 0x79, 0x87, 0x42, 0xe6, 0xbf, 0xfc,
-	0xdb, 0x3f, 0xbf, 0x1a, 0x9d, 0xc5, 0x94, 0x68, 0x6c, 0x4e, 0xee, 0xf2, 0x5e, 0x82, 0xe1, 0x73,
-	0x48, 0xef, 0x51, 0xd7, 0x27, 0x31, 0x66, 0x7a, 0xa1, 0x7f, 0x64, 0x06, 0xbe, 0xa4, 0x20, 0x20,
-	0xe7, 0x11, 0x3d, 0xc8, 0xf6, 0x00, 0xe7, 0x05, 0x64, 0xa5, 0x52, 0x1f, 0x76, 0x04, 0x46, 0xac,
-	0xdc, 0x15, 0x81, 0x7d, 0x85, 0x44, 0x60, 0x3f, 0x48, 0xac, 0xe3, 0x0e, 0xcc, 0xec, 0x51, 0x57,
-	0x55, 0xaf, 0x38, 0xcd, 0xfd, 0x02, 0x21, 0xfd, 0x48, 0x46, 0x60, 0xce, 0xe0, 0x94, 0xc2, 0xc4,
-	0x1e, 0xe4, 0xf6, 0x4d, 0xe6, 0x06, 0x2b, 0x69, 0x1c, 0xda, 0x42, 0x54, 0x49, 0x65, 0xe4, 0xee,
-	0x1f, 0xfe, 0xf3, 0x66, 0x65, 0x4a, 0x55, 0x5f, 0xf1, 0x1b, 0xe5, 0x6f, 0x41, 0x36, 0x87, 0x39,
-	0x6f, 0x01, 0x66, 0x9f, 0xa1, 0x06, 0x99, 0x3d, 0x1a, 0x60, 0x45, 0xf0, 0xc0, 0xcb, 0x3b, 0x85,
-	0xc8, 0xda, 0x4d, 0xae, 0x09, 0xbc, 0x3c, 0x2e, 0x86, 0xf0, 0x4a, 0xaf, 0x4d, 0xe3, 0x0b, 0xd4,
-	0x21, 0xc5, 0xd7, 0xf2, 0xd0, 0xab, 0xbc, 0x71, 0xcb, 0xc8, 0x0e, 0xd5, 0x6d, 0x46, 0x6e, 0x71,
-	0xd5, 0x30, 0x28, 0xf0, 0x82, 0x08, 0x31, 0xeb, 0x11, 0xf5, 0x8b, 0xf9, 0x6b, 0x40, 0x4e, 0xb1,
-	0x1f, 0xac, 0xcb, 0x71, 0x44, 0x8b, 0x91, 0x15, 0x9e, 0x91, 0x8f, 0x38, 0x5d, 0x2e, 0xf4, 0x5e,
-	0x10, 0xac, 0x57, 0xf1, 0x8a, 0x2f, 0x3d, 0xfd, 0x66, 0xfc, 0x1c, 0xb2, 0x7b, 0x34, 0xc8, 0x1d,
-	0x88, 0x5a, 0xf4, 0x0b, 0x85, 0xdc, 0x10, 0xb8, 0xd7, 0x70, 0x39, 0x06, 0x57, 0x06, 0xcf, 0x81,
-	0xc5, 0xd0, 0xca, 0xaa, 0xb6, 0xe3, 0xb2, 0xe8, 0x8d, 0x51, 0x7e, 0xc2, 0x83, 0xdc, 0x57, 0x09,
-	0xd0, 0xe5, 0x4f, 0x82, 0xed, 0x06, 0x92, 0xb3, 0xd8, 0x4a, 0xc2, 0x13, 0x7f, 0x95, 0x80, 0xf9,
-	0xe1, 0x15, 0x71, 0x44, 0x5c, 0x88, 0xa0, 0x29, 0x1b, 0x85, 0xb9, 0x88, 0x61, 0xf2, 0x29, 0x27,
-	0x9f, 0x84, 0x71, 0x0e, 0x29, 0xb8, 0x8b, 0xf8, 0xfe, 0xf9, 0xdc, 0xa5, 0xd7, 0xfc, 0x9f, 0x3a,
-	0x5f, 0xf9, 0x6f, 0x12, 0x70, 0x65, 0xb7, 0xa3, 0x37, 0x2c, 0x7a, 0x61, 0x21, 0x71, 0x47, 0xf6,
-	0x63, 0x21, 0xe0, 0x23, 0xb2, 0x79, 0x19, 0x01, 0x25, 0x2a, 0xc8, 0xf1, 0x77, 0x09, 0xc8, 0xef,
-	0x98, 0xec, 0x1b, 0x11, 0xf2, 0x3d, 0x21, 0xe4, 0x3e, 0xf9, 0xf0, 0x52, 0x42, 0x0c, 0xc9, 0x8e,
-	0xbf, 0x88, 0xc8, 0x85, 0x47, 0x96, 0xfd, 0x2a, 0x98, 0x0b, 0x58, 0xf4, 0xff, 0xb9, 0x24, 0xec,
-	0x64, 0x4b, 0x65, 0x02, 0x1f, 0x0d, 0x97, 0x82, 0xf3, 0xb2, 0x42, 0xcc, 0xe2, 0x59, 0xb1, 0xdc,
-	0x2f, 0xf1, 0x41, 0x01, 0x4f, 0x85, 0xbc, 0xe5, 0x10, 0xb1, 0x18, 0x97, 0x73, 0x62, 0x43, 0xb2,
-	0x21, 0x24, 0xdc, 0x22, 0x17, 0x90, 0xc0, 0xcb, 0xeb, 0xaf, 0x13, 0xb0, 0x12, 0xa1, 0xe2, 0x09,
-	0x75, 0xa9, 0x23, 0x65, 0x2c, 0x05, 0x64, 0x08, 0xc3, 0x13, 0xdb, 0x38, 0x47, 0x45, 0x51, 0xa8,
-	0xb8, 0x4d, 0xde, 0x39, 0x53, 0x45, 0x9b, 0x83, 0x09, 0x19, 0xaf, 0x61, 0x59, 0xbc, 0x9d, 0x5c,
-	0xea, 0xf0, 0x6e, 0x98, 0x55, 0x8e, 0xe2, 0xcf, 0xff, 0x72, 0x58, 0x90, 0x98, 0xa3, 0xd1, 0xae,
-	0x75, 0x4a, 0xee, 0x0a, 0xe6, 0x3b, 0xf8, 0xde, 0x05, 0x98, 0xeb, 0x8c, 0xcf, 0xc3, 0x3f, 0x26,
-	0x60, 0x29, 0x32, 0x11, 0x54, 0x4f, 0xe7, 0x27, 0xbf, 0x12, 0xda, 0x14, 0xe9, 0x44, 0x0e, 0x78,
-	0x1a, 0xa4, 0x21, 0x29, 0x4c, 0xb2, 0x81, 0x0c, 0x25, 0xc6, 0x3a, 0xde, 0x3e, 0x77, 0x57, 0xd4,
-	0x5c, 0xfc, 0x2a, 0x01, 0x6b, 0x31, 0xe9, 0x21, 0x18, 0xe5, 0xe6, 0xac, 0x45, 0xcb, 0xb9, 0x48,
-	0xa2, 0x6c, 0x0a, 0x49, 0x1b, 0xe4, 0xc2, 0x92, 0xf8, 0x3e, 0xbd, 0x80, 0x24, 0x8f, 0xd4, 0x79,
-	0x6f, 0x84, 0x4c, 0xb0, 0x67, 0x66, 0xe4, 0x5d, 0x1e, 0x8b, 0x99, 0x7e, 0x5f, 0x2f, 0xa8, 0x73,
-	0x98, 0xf1, 0xa8, 0xbd, 0xd2, 0x6f, 0x40, 0x7a, 0x00, 0x5f, 0x36, 0xe2, 0x09, 0x92, 0x83, 0x2d,
-	0x61, 0xa4, 0xc8, 0xc1, 0x45, 0x1f, 0x7d, 0xd6, 0x5b, 0x59, 0x72, 0x98, 0x06, 0xc3, 0x43, 0xc8,
-	0x6a, 0xb4, 0x69, 0x77, 0x9a, 0xa6, 0x45, 0xbd, 0x95, 0xf8, 0x01, 0x63, 0x43, 0xb6, 0x2c, 0x30,
-	0x17, 0x49, 0x18, 0x93, 0xc7, 0x66, 0x57, 0x74, 0x2a, 0x11, 0x09, 0x3b, 0xf4, 0xe7, 0x8b, 0x07,
-	0x83, 0xf3, 0x43, 0xcb, 0x97, 0x6f, 0xa8, 0x1f, 0x42, 0x6a, 0xdb, 0xa1, 0xba, 0xab, 0xa4, 0xe1,
-	0xd0, 0xec, 0x10, 0x9a, 0xea, 0xcd, 0xc8, 0x70, 0x30, 0xb9, 0xa4, 0xe7, 0x90, 0x92, 0x25, 0x3f,
-	0x42, 0x55, 0xdc, 0x22, 0xdf, 0x11, 0x78, 0x2b, 0x64, 0x29, 0x4a, 0x9d, 0x57, 0xc4, 0x7f, 0x0c,
-	0x69, 0x55, 0xc3, 0x2f, 0x81, 0xac, 0xde, 0xd0, 0x64, 0x39, 0x12, 0xd9, 0xab, 0xca, 0xcf, 0x21,
-	0xa5, 0xd1, 0x86, 0x6d, 0xbb, 0xdf, 0x98, 0x66, 0x47, 0xc0, 0x71, 0xe0, 0x1d, 0x6a, 0x51, 0xf7,
-	0x6b, 0x04, 0x63, 0x3d, 0x1a, 0xd8, 0x10, 0x70, 0xd8, 0x83, 0xf4, 0x8e, 0xfd, 0xaa, 0x63, 0xd9,
-	0xba, 0x51, 0x6e, 0xeb, 0x2d, 0x3a, 0x78, 0x8b, 0x89, 0x47, 0xcf, 0x36, 0x68, 0x5c, 0x2a, 0x5d,
-	0xea, 0x88, 0xbb, 0x46, 0xfe, 0xe7, 0x0f, 0xb9, 0x2f, 0x38, 0x3e, 0x20, 0x77, 0x22, 0x39, 0x4c,
-	0x0e, 0x51, 0x37, 0x14, 0x06, 0x2b, 0xbd, 0xe6, 0x7f, 0x51, 0x7c, 0xc1, 0x37, 0xf7, 0xcb, 0x04,
-	0x2c, 0xee, 0x51, 0x37, 0xc0, 0x21, 0xaf, 0x12, 0xce, 0x15, 0x10, 0x18, 0x26, 0x0f, 0x84, 0x80,
-	0x0f, 0xf1, 0xde, 0x25, 0x04, 0x94, 0x98, 0x64, 0xea, 0x89, 0x66, 0x2d, 0x80, 0x77, 0x49, 0x76,
-	0x55, 0x87, 0xf0, 0x32, 0xcb, 0xc7, 0x23, 0xd9, 0xa0, 0x06, 0x90, 0xd8, 0xd0, 0x8e, 0x46, 0xb1,
-	0x31, 0xf2, 0xbe, 0xa0, 0xbb, 0x89, 0x37, 0x2e, 0x42, 0x87, 0x3f, 0x87, 0xb9, 0x6d, 0xde, 0x7a,
-	0x5b, 0x97, 0x5b, 0x61, 0x70, 0x83, 0xd5, 0x0a, 0xd7, 0x2f, 0xb5, 0xc2, 0xdf, 0x27, 0x60, 0xee,
-	0x61, 0xd3, 0x35, 0x4f, 0x74, 0x97, 0x0a, 0x16, 0x59, 0xce, 0x2f, 0x49, 0xbd, 0x2d, 0xa8, 0x3f,
-	0x21, 0xdf, 0xb9, 0xcc, 0xd6, 0xca, 0xe1, 0x9e, 0xe0, 0xe3, 0x89, 0xf6, 0xdb, 0x04, 0xe4, 0x34,
-	0x7a, 0x42, 0x1d, 0xf7, 0x5b, 0x11, 0xe2, 0x08, 0x6a, 0x2e, 0xe4, 0xa7, 0x90, 0x19, 0xbc, 0x1e,
-	0xc2, 0x5d, 0x7b, 0xda, 0xfb, 0x2d, 0xdb, 0xf5, 0x62, 0xa8, 0x5d, 0x5f, 0xc6, 0x42, 0x24, 0xbd,
-	0x6c, 0xd3, 0x5f, 0xc0, 0x9c, 0x0f, 0xbd, 0xbd, 0x6d, 0x77, 0x8e, 0xcc, 0x56, 0x90, 0x21, 0xd7,
-	0x67, 0xf0, 0xcc, 0xe4, 0x96, 0x40, 0x5e, 0xc3, 0xeb, 0xd1, 0xc8, 0xed, 0x7a, 0x53, 0xe1, 0x74,
-	0x60, 0x41, 0x46, 0x6e, 0x98, 0x20, 0x0c, 0x1a, 0x5b, 0x8e, 0xd6, 0x65, 0x7f, 0x49, 0xce, 0x23,
-	0xe3, 0xc1, 0x6a, 0xfb, 0x83, 0x75, 0xb1, 0xb6, 0xf6, 0xc1, 0x99, 0x6d, 0x6d, 0x5c, 0xf4, 0xfa,
-	0xed, 0xec, 0x7c, 0x90, 0xef, 0x32, 0xdd, 0xd3, 0xa3, 0x0b, 0x74, 0x4f, 0x04, 0x57, 0x63, 0xf9,
-	0xbd, 0xae, 0xc9, 0xf6, 0x2f, 0x5a, 0x5e, 0xeb, 0xc5, 0xb5, 0x10, 0x73, 0xe1, 0xab, 0x41, 0x46,
-	0x4a, 0x9c, 0x75, 0x36, 0x78, 0x95, 0x18, 0xfd, 0xb6, 0x96, 0x36, 0xd4, 0xc4, 0xb5, 0xca, 0x00,
-	0x62, 0x28, 0xc6, 0x21, 0x0a, 0xb2, 0x26, 0xe0, 0x96, 0xf0, 0x6a, 0x14, 0x9c, 0xec, 0x00, 0x18,
-	0x64, 0x07, 0x8b, 0x50, 0x51, 0x8c, 0x5b, 0xc5, 0x7c, 0xc4, 0xed, 0xa4, 0xba, 0xaa, 0xc8, 0x0c,
-	0xdd, 0x67, 0xca, 0x7b, 0x16, 0x5c, 0x18, 0x22, 0x56, 0x91, 0x7b, 0x04, 0xd9, 0x9a, 0xeb, 0x50,
-	0xbd, 0x5d, 0xd5, 0x9b, 0x2f, 0xa9, 0xcb, 0x2a, 0x3d, 0x17, 0x17, 0x03, 0xdb, 0x25, 0x0d, 0x95,
-	0x9e, 0x1b, 0x9b, 0x9e, 0x23, 0xb7, 0x13, 0xb8, 0x2b, 0x9a, 0x2b, 0x6a, 0x9e, 0x50, 0x05, 0x54,
-	0xee, 0x9c, 0x71, 0xd1, 0x12, 0xc6, 0x2f, 0x77, 0xc8, 0xc8, 0x07, 0x09, 0x7c, 0x0c, 0x73, 0x0a,
-	0x66, 0xfb, 0x58, 0xef, 0xb4, 0xe8, 0xee, 0x09, 0xed, 0xb8, 0xf1, 0x61, 0xc8, 0x07, 0x90, 0x7c,
-	0x53, 0x04, 0xd8, 0x21, 0xcc, 0xf6, 0x37, 0x49, 0x7e, 0x79, 0xf2, 0xef, 0x52, 0xd4, 0x05, 0x2f,
-	0x21, 0xd1, 0x29, 0xaf, 0xa2, 0x25, 0xf7, 0xa9, 0x0e, 0x39, 0xd9, 0xa9, 0xf9, 0xbf, 0x83, 0x44,
-	0xdd, 0xf4, 0x16, 0xa2, 0x06, 0xc9, 0xaa, 0xa0, 0x28, 0x90, 0xfe, 0x86, 0x04, 0x2e, 0x8e, 0xf9,
-	0x11, 0x96, 0xba, 0xfd, 0xe8, 0x91, 0xba, 0xfd, 0xa0, 0x21, 0xdd, 0x01, 0x50, 0xa9, 0xdb, 0x80,
-	0x9c, 0xac, 0x44, 0x5f, 0x4f, 0xf7, 0xbb, 0x82, 0xe2, 0x7a, 0xe1, 0x0c, 0x0a, 0x2e, 0xfe, 0x73,
-	0xc8, 0xc9, 0x76, 0x2b, 0x4e, 0x7f, 0x5c, 0x16, 0xa9, 0x25, 0xac, 0x9f, 0xb5, 0x84, 0xba, 0x3c,
-	0x22, 0x81, 0x6f, 0x45, 0xe7, 0x1e, 0x11, 0xbf, 0xb7, 0x77, 0xed, 0x88, 0xd1, 0xd1, 0xc7, 0x7d,
-	0xd1, 0xcc, 0x8b, 0x57, 0x1b, 0x8b, 0x6e, 0xe6, 0xa5, 0xcd, 0xeb, 0x10, 0x71, 0x29, 0xfe, 0xc5,
-	0xc6, 0xf0, 0x33, 0x98, 0xf6, 0xae, 0xb1, 0x03, 0x60, 0xf9, 0xb8, 0xfb, 0x70, 0x72, 0x53, 0xc0,
-	0xae, 0x92, 0x6b, 0x91, 0xb0, 0x8c, 0x5a, 0x47, 0x75, 0x97, 0xa3, 0x3d, 0x13, 0xfd, 0x57, 0xe0,
-	0x73, 0xc0, 0x50, 0x92, 0x84, 0xbf, 0x17, 0x84, 0x6b, 0x10, 0x3f, 0x3c, 0xdc, 0x4f, 0xfd, 0x71,
-	0x6c, 0x36, 0xf0, 0x05, 0xa0, 0x97, 0x7a, 0x31, 0xc8, 0x31, 0x1f, 0x0d, 0xc2, 0x01, 0x09, 0x82,
-	0x8b, 0x49, 0xc8, 0x20, 0x5d, 0x33, 0xdb, 0x3d, 0xcb, 0x4b, 0x42, 0x5c, 0xee, 0x47, 0xc2, 0x3f,
-	0xac, 0xd1, 0x9f, 0xf5, 0x28, 0x73, 0xe3, 0x9a, 0x8a, 0xd0, 0x5d, 0x47, 0x30, 0x48, 0x0a, 0xa9,
-	0xce, 0x91, 0x78, 0x46, 0x6e, 0xc3, 0x4c, 0xff, 0xb2, 0x1f, 0xfb, 0x1f, 0x04, 0x43, 0x9f, 0x01,
-	0x0a, 0xf1, 0x26, 0x32, 0xb2, 0x65, 0xc2, 0x9c, 0xed, 0xb4, 0x44, 0xb9, 0x69, 0xda, 0x8e, 0xa1,
-	0x5c, 0xb7, 0x52, 0xf2, 0xe6, 0xb9, 0x2a, 0xbe, 0x7d, 0xff, 0xe4, 0x4e, 0xcb, 0x74, 0x8f, 0x7b,
-	0x8d, 0x62, 0xd3, 0x6e, 0x97, 0x3c, 0x4f, 0xf5, 0x7f, 0x10, 0x36, 0xd4, 0xe7, 0xf1, 0x96, 0xad,
-	0x06, 0xfe, 0x32, 0xba, 0x58, 0xf1, 0xc0, 0x9e, 0xf9, 0x6f, 0xb1, 0xab, 0xa3, 0xd5, 0xb1, 0xea,
-	0x78, 0x75, 0xa2, 0x3a, 0x59, 0x9d, 0xaa, 0x4e, 0x37, 0x26, 0xc5, 0xc4, 0xcd, 0xff, 0x05, 0x00,
-	0x00, 0xff, 0xff, 0xe4, 0xcb, 0x00, 0x47, 0xda, 0x20, 0x00, 0x00,
-}