[VOL-5567] Upgrade protos and remove deprecated dependencies

Change-Id: I699f46a8f3f6140431d7e813b6ae48f3db55f45c
Signed-off-by: bseeniva <balaji.seenivasan@radisys.com>
diff --git a/vendor/github.com/golang/mock/CONTRIBUTORS b/vendor/github.com/golang/mock/CONTRIBUTORS
deleted file mode 100644
index def849c..0000000
--- a/vendor/github.com/golang/mock/CONTRIBUTORS
+++ /dev/null
@@ -1,37 +0,0 @@
-# This is the official list of people who can contribute (and typically
-# have contributed) code to the gomock repository.
-# The AUTHORS file lists the copyright holders; this file
-# lists people.  For example, Google employees are listed here
-# but not in AUTHORS, because Google holds the copyright.
-#
-# The submission process automatically checks to make sure
-# that people submitting code are listed in this file (by email address).
-#
-# Names should be added to this file only after verifying that
-# the individual or the individual's organization has agreed to
-# the appropriate Contributor License Agreement, found here:
-#
-#     http://code.google.com/legal/individual-cla-v1.0.html
-#     http://code.google.com/legal/corporate-cla-v1.0.html
-#
-# The agreement for individuals can be filled out on the web.
-#
-# When adding J Random Contributor's name to this file,
-# either J's name or J's organization's name should be
-# added to the AUTHORS file, depending on whether the
-# individual or corporate CLA was used.
-
-# Names should be added to this file like so:
-#     Name <email address>
-#
-# An entry with two email addresses specifies that the
-# first address should be used in the submit logs and
-# that the second address should be recognized as the
-# same person when interacting with Rietveld.
-
-# Please keep the list sorted.
-
-Aaron Jacobs <jacobsa@google.com> <aaronjjacobs@gmail.com>
-Alex Reece <awreece@gmail.com>
-David Symonds <dsymonds@golang.org>
-Ryan Barrett <ryanb@google.com>
diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go
deleted file mode 100644
index 0ef27d3..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: github.com/golang/protobuf/ptypes/any/any.proto
-
-package any
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	anypb "google.golang.org/protobuf/types/known/anypb"
-	reflect "reflect"
-)
-
-// Symbols defined in public import of google/protobuf/any.proto.
-
-type Any = anypb.Any
-
-var File_github_com_golang_protobuf_ptypes_any_any_proto protoreflect.FileDescriptor
-
-var file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = []byte{
-	0x0a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x61, 0x6e, 0x79, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x2b, 0x5a, 0x29,
-	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
-	0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65,
-	0x73, 0x2f, 0x61, 0x6e, 0x79, 0x3b, 0x61, 0x6e, 0x79, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33,
-}
-
-var file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = []interface{}{}
-var file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_github_com_golang_protobuf_ptypes_any_any_proto_init() }
-func file_github_com_golang_protobuf_ptypes_any_any_proto_init() {
-	if File_github_com_golang_protobuf_ptypes_any_any_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes,
-		DependencyIndexes: file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs,
-	}.Build()
-	File_github_com_golang_protobuf_ptypes_any_any_proto = out.File
-	file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = nil
-	file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = nil
-	file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = nil
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go b/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go
deleted file mode 100644
index 16686a6..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: github.com/golang/protobuf/ptypes/empty/empty.proto
-
-package empty
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	emptypb "google.golang.org/protobuf/types/known/emptypb"
-	reflect "reflect"
-)
-
-// Symbols defined in public import of google/protobuf/empty.proto.
-
-type Empty = emptypb.Empty
-
-var File_github_com_golang_protobuf_ptypes_empty_empty_proto protoreflect.FileDescriptor
-
-var file_github_com_golang_protobuf_ptypes_empty_empty_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
-	0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x3b, 0x65, 0x6d,
-	0x70, 0x74, 0x79, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_github_com_golang_protobuf_ptypes_empty_empty_proto_goTypes = []interface{}{}
-var file_github_com_golang_protobuf_ptypes_empty_empty_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_github_com_golang_protobuf_ptypes_empty_empty_proto_init() }
-func file_github_com_golang_protobuf_ptypes_empty_empty_proto_init() {
-	if File_github_com_golang_protobuf_ptypes_empty_empty_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_github_com_golang_protobuf_ptypes_empty_empty_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_github_com_golang_protobuf_ptypes_empty_empty_proto_goTypes,
-		DependencyIndexes: file_github_com_golang_protobuf_ptypes_empty_empty_proto_depIdxs,
-	}.Build()
-	File_github_com_golang_protobuf_ptypes_empty_empty_proto = out.File
-	file_github_com_golang_protobuf_ptypes_empty_empty_proto_rawDesc = nil
-	file_github_com_golang_protobuf_ptypes_empty_empty_proto_goTypes = nil
-	file_github_com_golang_protobuf_ptypes_empty_empty_proto_depIdxs = nil
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
deleted file mode 100644
index a76f807..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
-
-package timestamp
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
-	reflect "reflect"
-)
-
-// Symbols defined in public import of google/protobuf/timestamp.proto.
-
-type Timestamp = timestamppb.Timestamp
-
-var File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto protoreflect.FileDescriptor
-
-var file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc = []byte{
-	0x0a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2f, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x37,
-	0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x3b, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
-}
-
-var file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes = []interface{}{}
-var file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_init() }
-func file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_init() {
-	if File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes,
-		DependencyIndexes: file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs,
-	}.Build()
-	File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto = out.File
-	file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc = nil
-	file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes = nil
-	file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs = nil
-}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/flows/flow_utils.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/flows/flow_utils.go
index 8a6333f..7b65b4e 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/flows/flow_utils.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/flows/flow_utils.go
@@ -27,9 +27,10 @@
 	"sync"
 
 	"github.com/cevaris/ordered_map"
-	"github.com/golang/protobuf/proto"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	ofp "github.com/opencord/voltha-protos/v5/go/openflow_13"
+	"google.golang.org/protobuf/encoding/prototext"
+	"google.golang.org/protobuf/proto"
 )
 
 var (
@@ -1019,7 +1020,7 @@
 		bandStats = append(bandStats, band)
 	}
 	meter.Stats.BandStats = bandStats
-	logger.Debugw(ctx, "Allocated meter entry", log.Fields{"meter": *meter})
+	logger.Debugw(ctx, "Allocated meter entry", log.Fields{"meter": meter})
 	return meter
 
 }
@@ -1040,8 +1041,8 @@
 
 func MkOxmFields(matchFields []ofp.OfpOxmField) []*ofp.OfpOxmField {
 	oxmFields := make([]*ofp.OfpOxmField, 0)
-	for _, matchField := range matchFields {
-		oxmField := ofp.OfpOxmField{OxmClass: ofp.OfpOxmClass_OFPXMC_OPENFLOW_BASIC, Field: matchField.Field}
+	for i := range matchFields {
+		oxmField := ofp.OfpOxmField{OxmClass: ofp.OfpOxmClass_OFPXMC_OPENFLOW_BASIC, Field: matchFields[i].Field}
 		oxmFields = append(oxmFields, &oxmField)
 	}
 	return oxmFields
@@ -1278,7 +1279,7 @@
 	for kv, ok := iter(); ok; kv, ok = iter() {
 		if protoMsg, isMsg := kv.Value.(*ofp.OfpFlowStats); isMsg {
 			buffer.WriteString("\nFlow:\n")
-			buffer.WriteString(proto.MarshalTextString(protoMsg))
+			buffer.WriteString(prototext.Format(protoMsg))
 			buffer.WriteString("\n")
 		}
 	}
@@ -1286,7 +1287,7 @@
 	for kv, ok := iter(); ok; kv, ok = iter() {
 		if protoMsg, isMsg := kv.Value.(*ofp.OfpGroupEntry); isMsg {
 			buffer.WriteString("\nGroup:\n")
-			buffer.WriteString(proto.MarshalTextString(protoMsg))
+			buffer.WriteString(prototext.Format(protoMsg))
 			buffer.WriteString("\n")
 		}
 	}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
index 0348672..0312ed7 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
@@ -1,24 +1,25 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/common.proto
 
 package common
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type TestModeKeys int32
 
@@ -26,20 +27,41 @@
 	TestModeKeys_api_test TestModeKeys = 0
 )
 
-var TestModeKeys_name = map[int32]string{
-	0: "api_test",
-}
+// Enum value maps for TestModeKeys.
+var (
+	TestModeKeys_name = map[int32]string{
+		0: "api_test",
+	}
+	TestModeKeys_value = map[string]int32{
+		"api_test": 0,
+	}
+)
 
-var TestModeKeys_value = map[string]int32{
-	"api_test": 0,
+func (x TestModeKeys) Enum() *TestModeKeys {
+	p := new(TestModeKeys)
+	*p = x
+	return p
 }
 
 func (x TestModeKeys) String() string {
-	return proto.EnumName(TestModeKeys_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (TestModeKeys) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[0].Descriptor()
+}
+
+func (TestModeKeys) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[0]
+}
+
+func (x TestModeKeys) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use TestModeKeys.Descriptor instead.
 func (TestModeKeys) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{0}
 }
 
 // Administrative State
@@ -59,28 +81,49 @@
 	AdminState_DOWNLOADING_IMAGE AdminState_Types = 4
 )
 
-var AdminState_Types_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "PREPROVISIONED",
-	2: "ENABLED",
-	3: "DISABLED",
-	4: "DOWNLOADING_IMAGE",
-}
+// Enum value maps for AdminState_Types.
+var (
+	AdminState_Types_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "PREPROVISIONED",
+		2: "ENABLED",
+		3: "DISABLED",
+		4: "DOWNLOADING_IMAGE",
+	}
+	AdminState_Types_value = map[string]int32{
+		"UNKNOWN":           0,
+		"PREPROVISIONED":    1,
+		"ENABLED":           2,
+		"DISABLED":          3,
+		"DOWNLOADING_IMAGE": 4,
+	}
+)
 
-var AdminState_Types_value = map[string]int32{
-	"UNKNOWN":           0,
-	"PREPROVISIONED":    1,
-	"ENABLED":           2,
-	"DISABLED":          3,
-	"DOWNLOADING_IMAGE": 4,
+func (x AdminState_Types) Enum() *AdminState_Types {
+	p := new(AdminState_Types)
+	*p = x
+	return p
 }
 
 func (x AdminState_Types) String() string {
-	return proto.EnumName(AdminState_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (AdminState_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[1].Descriptor()
+}
+
+func (AdminState_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[1]
+}
+
+func (x AdminState_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AdminState_Types.Descriptor instead.
 func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{4, 0}
 }
 
 // Operational Status
@@ -107,36 +150,57 @@
 	OperStatus_REBOOTED OperStatus_Types = 8
 )
 
-var OperStatus_Types_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "DISCOVERED",
-	2: "ACTIVATING",
-	3: "TESTING",
-	4: "ACTIVE",
-	5: "FAILED",
-	6: "RECONCILING",
-	7: "RECONCILING_FAILED",
-	8: "REBOOTED",
-}
+// Enum value maps for OperStatus_Types.
+var (
+	OperStatus_Types_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "DISCOVERED",
+		2: "ACTIVATING",
+		3: "TESTING",
+		4: "ACTIVE",
+		5: "FAILED",
+		6: "RECONCILING",
+		7: "RECONCILING_FAILED",
+		8: "REBOOTED",
+	}
+	OperStatus_Types_value = map[string]int32{
+		"UNKNOWN":            0,
+		"DISCOVERED":         1,
+		"ACTIVATING":         2,
+		"TESTING":            3,
+		"ACTIVE":             4,
+		"FAILED":             5,
+		"RECONCILING":        6,
+		"RECONCILING_FAILED": 7,
+		"REBOOTED":           8,
+	}
+)
 
-var OperStatus_Types_value = map[string]int32{
-	"UNKNOWN":            0,
-	"DISCOVERED":         1,
-	"ACTIVATING":         2,
-	"TESTING":            3,
-	"ACTIVE":             4,
-	"FAILED":             5,
-	"RECONCILING":        6,
-	"RECONCILING_FAILED": 7,
-	"REBOOTED":           8,
+func (x OperStatus_Types) Enum() *OperStatus_Types {
+	p := new(OperStatus_Types)
+	*p = x
+	return p
 }
 
 func (x OperStatus_Types) String() string {
-	return proto.EnumName(OperStatus_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OperStatus_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[2].Descriptor()
+}
+
+func (OperStatus_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[2]
+}
+
+func (x OperStatus_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OperStatus_Types.Descriptor instead.
 func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{5, 0}
 }
 
 // Connectivity Status
@@ -151,24 +215,45 @@
 	ConnectStatus_REACHABLE ConnectStatus_Types = 2
 )
 
-var ConnectStatus_Types_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "UNREACHABLE",
-	2: "REACHABLE",
-}
+// Enum value maps for ConnectStatus_Types.
+var (
+	ConnectStatus_Types_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "UNREACHABLE",
+		2: "REACHABLE",
+	}
+	ConnectStatus_Types_value = map[string]int32{
+		"UNKNOWN":     0,
+		"UNREACHABLE": 1,
+		"REACHABLE":   2,
+	}
+)
 
-var ConnectStatus_Types_value = map[string]int32{
-	"UNKNOWN":     0,
-	"UNREACHABLE": 1,
-	"REACHABLE":   2,
+func (x ConnectStatus_Types) Enum() *ConnectStatus_Types {
+	p := new(ConnectStatus_Types)
+	*p = x
+	return p
 }
 
 func (x ConnectStatus_Types) String() string {
-	return proto.EnumName(ConnectStatus_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ConnectStatus_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[3].Descriptor()
+}
+
+func (ConnectStatus_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[3]
+}
+
+func (x ConnectStatus_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ConnectStatus_Types.Descriptor instead.
 func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type OperationResp_OperationReturnCode int32
@@ -180,987 +265,1260 @@
 	OperationResp_OPERATION_IN_PROGRESS OperationResp_OperationReturnCode = 3
 )
 
-var OperationResp_OperationReturnCode_name = map[int32]string{
-	0: "OPERATION_SUCCESS",
-	1: "OPERATION_FAILURE",
-	2: "OPERATION_UNSUPPORTED",
-	3: "OPERATION_IN_PROGRESS",
-}
+// Enum value maps for OperationResp_OperationReturnCode.
+var (
+	OperationResp_OperationReturnCode_name = map[int32]string{
+		0: "OPERATION_SUCCESS",
+		1: "OPERATION_FAILURE",
+		2: "OPERATION_UNSUPPORTED",
+		3: "OPERATION_IN_PROGRESS",
+	}
+	OperationResp_OperationReturnCode_value = map[string]int32{
+		"OPERATION_SUCCESS":     0,
+		"OPERATION_FAILURE":     1,
+		"OPERATION_UNSUPPORTED": 2,
+		"OPERATION_IN_PROGRESS": 3,
+	}
+)
 
-var OperationResp_OperationReturnCode_value = map[string]int32{
-	"OPERATION_SUCCESS":     0,
-	"OPERATION_FAILURE":     1,
-	"OPERATION_UNSUPPORTED": 2,
-	"OPERATION_IN_PROGRESS": 3,
+func (x OperationResp_OperationReturnCode) Enum() *OperationResp_OperationReturnCode {
+	p := new(OperationResp_OperationReturnCode)
+	*p = x
+	return p
 }
 
 func (x OperationResp_OperationReturnCode) String() string {
-	return proto.EnumName(OperationResp_OperationReturnCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OperationResp_OperationReturnCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[4].Descriptor()
+}
+
+func (OperationResp_OperationReturnCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[4]
+}
+
+func (x OperationResp_OperationReturnCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OperationResp_OperationReturnCode.Descriptor instead.
 func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{7, 0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{7, 0}
 }
 
 // Full path for KV store
 type Key struct {
-	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Key           string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Key) Reset()         { *m = Key{} }
-func (m *Key) String() string { return proto.CompactTextString(m) }
-func (*Key) ProtoMessage()    {}
+func (x *Key) Reset() {
+	*x = Key{}
+	mi := &file_voltha_protos_common_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Key) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Key) ProtoMessage() {}
+
+func (x *Key) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Key.ProtoReflect.Descriptor instead.
 func (*Key) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Key) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Key.Unmarshal(m, b)
-}
-func (m *Key) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Key.Marshal(b, m, deterministic)
-}
-func (m *Key) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Key.Merge(m, src)
-}
-func (m *Key) XXX_Size() int {
-	return xxx_messageInfo_Key.Size(m)
-}
-func (m *Key) XXX_DiscardUnknown() {
-	xxx_messageInfo_Key.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Key proto.InternalMessageInfo
-
-func (m *Key) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *Key) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
 // Convey a resource identifier
 type ID struct {
-	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ID) Reset()         { *m = ID{} }
-func (m *ID) String() string { return proto.CompactTextString(m) }
-func (*ID) ProtoMessage()    {}
+func (x *ID) Reset() {
+	*x = ID{}
+	mi := &file_voltha_protos_common_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ID) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ID) ProtoMessage() {}
+
+func (x *ID) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ID.ProtoReflect.Descriptor instead.
 func (*ID) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{1}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{1}
 }
 
-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 (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)
-}
-func (m *ID) XXX_DiscardUnknown() {
-	xxx_messageInfo_ID.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ID proto.InternalMessageInfo
-
-func (m *ID) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *ID) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
 // Represents a list of IDs
 type IDs struct {
-	Items                []*ID    `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*ID                  `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *IDs) Reset()         { *m = IDs{} }
-func (m *IDs) String() string { return proto.CompactTextString(m) }
-func (*IDs) ProtoMessage()    {}
+func (x *IDs) Reset() {
+	*x = IDs{}
+	mi := &file_voltha_protos_common_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IDs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IDs) ProtoMessage() {}
+
+func (x *IDs) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IDs.ProtoReflect.Descriptor instead.
 func (*IDs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{2}
 }
 
-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 (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)
-}
-func (m *IDs) XXX_DiscardUnknown() {
-	xxx_messageInfo_IDs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IDs proto.InternalMessageInfo
-
-func (m *IDs) GetItems() []*ID {
-	if m != nil {
-		return m.Items
+func (x *IDs) GetItems() []*ID {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type Connection struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// endpoint is the endpoint sending the request
 	Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
 	// contextInfo represents additional contextual information
 	ContextInfo string `protobuf:"bytes,2,opt,name=contextInfo,proto3" json:"contextInfo,omitempty"`
 	// keep_alive_interval is used to indicate to the remote endpoint how often it
 	// will get a keep alive notification
-	KeepAliveInterval    int64    `protobuf:"varint,3,opt,name=keep_alive_interval,json=keepAliveInterval,proto3" json:"keep_alive_interval,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	KeepAliveInterval int64 `protobuf:"varint,3,opt,name=keep_alive_interval,json=keepAliveInterval,proto3" json:"keep_alive_interval,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *Connection) Reset()         { *m = Connection{} }
-func (m *Connection) String() string { return proto.CompactTextString(m) }
-func (*Connection) ProtoMessage()    {}
+func (x *Connection) Reset() {
+	*x = Connection{}
+	mi := &file_voltha_protos_common_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Connection) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Connection) ProtoMessage() {}
+
+func (x *Connection) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Connection.ProtoReflect.Descriptor instead.
 func (*Connection) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *Connection) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Connection.Unmarshal(m, b)
-}
-func (m *Connection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Connection.Marshal(b, m, deterministic)
-}
-func (m *Connection) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Connection.Merge(m, src)
-}
-func (m *Connection) XXX_Size() int {
-	return xxx_messageInfo_Connection.Size(m)
-}
-func (m *Connection) XXX_DiscardUnknown() {
-	xxx_messageInfo_Connection.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Connection proto.InternalMessageInfo
-
-func (m *Connection) GetEndpoint() string {
-	if m != nil {
-		return m.Endpoint
+func (x *Connection) GetEndpoint() string {
+	if x != nil {
+		return x.Endpoint
 	}
 	return ""
 }
 
-func (m *Connection) GetContextInfo() string {
-	if m != nil {
-		return m.ContextInfo
+func (x *Connection) GetContextInfo() string {
+	if x != nil {
+		return x.ContextInfo
 	}
 	return ""
 }
 
-func (m *Connection) GetKeepAliveInterval() int64 {
-	if m != nil {
-		return m.KeepAliveInterval
+func (x *Connection) GetKeepAliveInterval() int64 {
+	if x != nil {
+		return x.KeepAliveInterval
 	}
 	return 0
 }
 
 type AdminState struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AdminState) Reset()         { *m = AdminState{} }
-func (m *AdminState) String() string { return proto.CompactTextString(m) }
-func (*AdminState) ProtoMessage()    {}
+func (x *AdminState) Reset() {
+	*x = AdminState{}
+	mi := &file_voltha_protos_common_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AdminState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AdminState) ProtoMessage() {}
+
+func (x *AdminState) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AdminState.ProtoReflect.Descriptor instead.
 func (*AdminState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{4}
 }
 
-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 (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)
-}
-func (m *AdminState) XXX_DiscardUnknown() {
-	xxx_messageInfo_AdminState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AdminState proto.InternalMessageInfo
-
 type OperStatus struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OperStatus) Reset()         { *m = OperStatus{} }
-func (m *OperStatus) String() string { return proto.CompactTextString(m) }
-func (*OperStatus) ProtoMessage()    {}
+func (x *OperStatus) Reset() {
+	*x = OperStatus{}
+	mi := &file_voltha_protos_common_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OperStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OperStatus) ProtoMessage() {}
+
+func (x *OperStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OperStatus.ProtoReflect.Descriptor instead.
 func (*OperStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{5}
 }
 
-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 (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)
-}
-func (m *OperStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_OperStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OperStatus proto.InternalMessageInfo
-
 type ConnectStatus struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ConnectStatus) Reset()         { *m = ConnectStatus{} }
-func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
-func (*ConnectStatus) ProtoMessage()    {}
+func (x *ConnectStatus) Reset() {
+	*x = ConnectStatus{}
+	mi := &file_voltha_protos_common_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ConnectStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConnectStatus) ProtoMessage() {}
+
+func (x *ConnectStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConnectStatus.ProtoReflect.Descriptor instead.
 func (*ConnectStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{6}
 }
 
-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 (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)
-}
-func (m *ConnectStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConnectStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConnectStatus proto.InternalMessageInfo
-
 type OperationResp struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Return code
 	Code OperationResp_OperationReturnCode `protobuf:"varint,1,opt,name=code,proto3,enum=common.OperationResp_OperationReturnCode" json:"code,omitempty"`
 	// Additional Info
-	AdditionalInfo       string   `protobuf:"bytes,2,opt,name=additional_info,json=additionalInfo,proto3" json:"additional_info,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AdditionalInfo string `protobuf:"bytes,2,opt,name=additional_info,json=additionalInfo,proto3" json:"additional_info,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OperationResp) Reset()         { *m = OperationResp{} }
-func (m *OperationResp) String() string { return proto.CompactTextString(m) }
-func (*OperationResp) ProtoMessage()    {}
+func (x *OperationResp) Reset() {
+	*x = OperationResp{}
+	mi := &file_voltha_protos_common_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OperationResp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OperationResp) ProtoMessage() {}
+
+func (x *OperationResp) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OperationResp.ProtoReflect.Descriptor instead.
 func (*OperationResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{7}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{7}
 }
 
-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 (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)
-}
-func (m *OperationResp) XXX_DiscardUnknown() {
-	xxx_messageInfo_OperationResp.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OperationResp proto.InternalMessageInfo
-
-func (m *OperationResp) GetCode() OperationResp_OperationReturnCode {
-	if m != nil {
-		return m.Code
+func (x *OperationResp) GetCode() OperationResp_OperationReturnCode {
+	if x != nil {
+		return x.Code
 	}
 	return OperationResp_OPERATION_SUCCESS
 }
 
-func (m *OperationResp) GetAdditionalInfo() string {
-	if m != nil {
-		return m.AdditionalInfo
+func (x *OperationResp) GetAdditionalInfo() string {
+	if x != nil {
+		return x.AdditionalInfo
 	}
 	return ""
 }
 
 type PortStatistics struct {
-	IntfId                  uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	RxBytes                 uint64   `protobuf:"fixed64,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
-	RxPackets               uint64   `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
-	RxUcastPackets          uint64   `protobuf:"fixed64,4,opt,name=rx_ucast_packets,json=rxUcastPackets,proto3" json:"rx_ucast_packets,omitempty"`
-	RxMcastPackets          uint64   `protobuf:"fixed64,5,opt,name=rx_mcast_packets,json=rxMcastPackets,proto3" json:"rx_mcast_packets,omitempty"`
-	RxBcastPackets          uint64   `protobuf:"fixed64,6,opt,name=rx_bcast_packets,json=rxBcastPackets,proto3" json:"rx_bcast_packets,omitempty"`
-	RxErrorPackets          uint64   `protobuf:"fixed64,7,opt,name=rx_error_packets,json=rxErrorPackets,proto3" json:"rx_error_packets,omitempty"`
-	RxFrames                uint64   `protobuf:"fixed64,17,opt,name=rx_frames,json=rxFrames,proto3" json:"rx_frames,omitempty"`
-	RxFrames_64             uint64   `protobuf:"fixed64,18,opt,name=rx_frames_64,json=rxFrames64,proto3" json:"rx_frames_64,omitempty"`
-	RxFrames_65_127         uint64   `protobuf:"fixed64,19,opt,name=rx_frames_65_127,json=rxFrames65127,proto3" json:"rx_frames_65_127,omitempty"`
-	RxFrames_128_255        uint64   `protobuf:"fixed64,20,opt,name=rx_frames_128_255,json=rxFrames128255,proto3" json:"rx_frames_128_255,omitempty"`
-	RxFrames_256_511        uint64   `protobuf:"fixed64,21,opt,name=rx_frames_256_511,json=rxFrames256511,proto3" json:"rx_frames_256_511,omitempty"`
-	RxFrames_512_1023       uint64   `protobuf:"fixed64,22,opt,name=rx_frames_512_1023,json=rxFrames5121023,proto3" json:"rx_frames_512_1023,omitempty"`
-	RxFrames_1024_1518      uint64   `protobuf:"fixed64,23,opt,name=rx_frames_1024_1518,json=rxFrames10241518,proto3" json:"rx_frames_1024_1518,omitempty"`
-	RxFrames_1519_2047      uint64   `protobuf:"fixed64,24,opt,name=rx_frames_1519_2047,json=rxFrames15192047,proto3" json:"rx_frames_1519_2047,omitempty"`
-	RxFrames_2048_4095      uint64   `protobuf:"fixed64,25,opt,name=rx_frames_2048_4095,json=rxFrames20484095,proto3" json:"rx_frames_2048_4095,omitempty"`
-	RxFrames_4096_9216      uint64   `protobuf:"fixed64,26,opt,name=rx_frames_4096_9216,json=rxFrames40969216,proto3" json:"rx_frames_4096_9216,omitempty"`
-	RxFrames_9217_16383     uint64   `protobuf:"fixed64,27,opt,name=rx_frames_9217_16383,json=rxFrames921716383,proto3" json:"rx_frames_9217_16383,omitempty"`
-	RxCrcErrors             uint64   `protobuf:"fixed64,14,opt,name=rx_crc_errors,json=rxCrcErrors,proto3" json:"rx_crc_errors,omitempty"`
-	RxUndersizePackets      uint64   `protobuf:"fixed64,39,opt,name=rxUndersizePackets,proto3" json:"rxUndersizePackets,omitempty"`
-	RxOversizePackets       uint64   `protobuf:"fixed64,40,opt,name=rxOversizePackets,proto3" json:"rxOversizePackets,omitempty"`
-	RxGem                   uint64   `protobuf:"fixed64,43,opt,name=rxGem,proto3" json:"rxGem,omitempty"`
-	RxGemDropped            uint64   `protobuf:"fixed64,44,opt,name=rxGemDropped,proto3" json:"rxGemDropped,omitempty"`
-	RxGemIdle               uint64   `protobuf:"fixed64,45,opt,name=rxGemIdle,proto3" json:"rxGemIdle,omitempty"`
-	RxGemCorrected          uint64   `protobuf:"fixed64,46,opt,name=rxGemCorrected,proto3" json:"rxGemCorrected,omitempty"`
-	RxGemIllegal            uint64   `protobuf:"fixed64,47,opt,name=rxGemIllegal,proto3" json:"rxGemIllegal,omitempty"`
-	RxFragmentError         uint64   `protobuf:"fixed64,48,opt,name=rxFragmentError,proto3" json:"rxFragmentError,omitempty"`
-	RxPacketsDropped        uint64   `protobuf:"fixed64,49,opt,name=rxPacketsDropped,proto3" json:"rxPacketsDropped,omitempty"`
-	RxCpuOmciPacketsDropped uint64   `protobuf:"fixed64,50,opt,name=rxCpuOmciPacketsDropped,proto3" json:"rxCpuOmciPacketsDropped,omitempty"`
-	RxCpu                   uint64   `protobuf:"fixed64,51,opt,name=rxCpu,proto3" json:"rxCpu,omitempty"`
-	RxOmci                  uint64   `protobuf:"fixed64,52,opt,name=rxOmci,proto3" json:"rxOmci,omitempty"`
-	RxOmciPacketsCrcError   uint64   `protobuf:"fixed64,53,opt,name=rxOmciPacketsCrcError,proto3" json:"rxOmciPacketsCrcError,omitempty"`
-	RxFcsErrorPackets       uint64   `protobuf:"fixed64,62,opt,name=rxFcsErrorPackets,proto3" json:"rxFcsErrorPackets,omitempty"`
-	TxBytes                 uint64   `protobuf:"fixed64,8,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	TxPackets               uint64   `protobuf:"fixed64,9,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	TxUcastPackets          uint64   `protobuf:"fixed64,10,opt,name=tx_ucast_packets,json=txUcastPackets,proto3" json:"tx_ucast_packets,omitempty"`
-	TxMcastPackets          uint64   `protobuf:"fixed64,11,opt,name=tx_mcast_packets,json=txMcastPackets,proto3" json:"tx_mcast_packets,omitempty"`
-	TxBcastPackets          uint64   `protobuf:"fixed64,12,opt,name=tx_bcast_packets,json=txBcastPackets,proto3" json:"tx_bcast_packets,omitempty"`
-	TxErrorPackets          uint64   `protobuf:"fixed64,13,opt,name=tx_error_packets,json=txErrorPackets,proto3" json:"tx_error_packets,omitempty"`
-	TxFrames                uint64   `protobuf:"fixed64,28,opt,name=tx_frames,json=txFrames,proto3" json:"tx_frames,omitempty"`
-	TxFrames_64             uint64   `protobuf:"fixed64,29,opt,name=tx_frames_64,json=txFrames64,proto3" json:"tx_frames_64,omitempty"`
-	TxFrames_65_127         uint64   `protobuf:"fixed64,30,opt,name=tx_frames_65_127,json=txFrames65127,proto3" json:"tx_frames_65_127,omitempty"`
-	TxFrames_128_255        uint64   `protobuf:"fixed64,31,opt,name=tx_frames_128_255,json=txFrames128255,proto3" json:"tx_frames_128_255,omitempty"`
-	TxFrames_256_511        uint64   `protobuf:"fixed64,32,opt,name=tx_frames_256_511,json=txFrames256511,proto3" json:"tx_frames_256_511,omitempty"`
-	TxFrames_512_1023       uint64   `protobuf:"fixed64,33,opt,name=tx_frames_512_1023,json=txFrames5121023,proto3" json:"tx_frames_512_1023,omitempty"`
-	TxFrames_1024_1518      uint64   `protobuf:"fixed64,34,opt,name=tx_frames_1024_1518,json=txFrames10241518,proto3" json:"tx_frames_1024_1518,omitempty"`
-	TxFrames_1519_2047      uint64   `protobuf:"fixed64,35,opt,name=tx_frames_1519_2047,json=txFrames15192047,proto3" json:"tx_frames_1519_2047,omitempty"`
-	TxFrames_2048_4095      uint64   `protobuf:"fixed64,36,opt,name=tx_frames_2048_4095,json=txFrames20484095,proto3" json:"tx_frames_2048_4095,omitempty"`
-	TxFrames_4096_9216      uint64   `protobuf:"fixed64,37,opt,name=tx_frames_4096_9216,json=txFrames40969216,proto3" json:"tx_frames_4096_9216,omitempty"`
-	TxFrames_9217_16383     uint64   `protobuf:"fixed64,38,opt,name=tx_frames_9217_16383,json=txFrames921716383,proto3" json:"tx_frames_9217_16383,omitempty"`
-	TxUndersizePackets      uint64   `protobuf:"fixed64,41,opt,name=txUndersizePackets,proto3" json:"txUndersizePackets,omitempty"`
-	TxOversizePackets       uint64   `protobuf:"fixed64,42,opt,name=txOversizePackets,proto3" json:"txOversizePackets,omitempty"`
-	TxGem                   uint64   `protobuf:"fixed64,54,opt,name=txGem,proto3" json:"txGem,omitempty"`
-	TxCpu                   uint64   `protobuf:"fixed64,55,opt,name=txCpu,proto3" json:"txCpu,omitempty"`
-	TxOmci                  uint64   `protobuf:"fixed64,56,opt,name=txOmci,proto3" json:"txOmci,omitempty"`
-	TxDroppedIllegalLength  uint64   `protobuf:"fixed64,57,opt,name=txDroppedIllegalLength,proto3" json:"txDroppedIllegalLength,omitempty"`
-	TxDroppedTpidMiss       uint64   `protobuf:"fixed64,58,opt,name=txDroppedTpidMiss,proto3" json:"txDroppedTpidMiss,omitempty"`
-	TxDroppedVidMiss        uint64   `protobuf:"fixed64,59,opt,name=txDroppedVidMiss,proto3" json:"txDroppedVidMiss,omitempty"`
-	TxDroppedTotal          uint64   `protobuf:"fixed64,60,opt,name=txDroppedTotal,proto3" json:"txDroppedTotal,omitempty"`
-	BipErrors               uint64   `protobuf:"fixed64,15,opt,name=bip_errors,json=bipErrors,proto3" json:"bip_errors,omitempty"`
-	BipUnits                uint64   `protobuf:"fixed64,61,opt,name=bip_units,json=bipUnits,proto3" json:"bip_units,omitempty"`
-	Timestamp               uint32   `protobuf:"fixed32,16,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	XXX_NoUnkeyedLiteral    struct{} `json:"-"`
-	XXX_unrecognized        []byte   `json:"-"`
-	XXX_sizecache           int32    `json:"-"`
+	state   protoimpl.MessageState `protogen:"open.v1"`
+	IntfId  uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	RxBytes uint64                 `protobuf:"fixed64,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use rx_frames (field 17) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxPackets uint64 `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use rx_ucast_frames (field 63) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxUcastPackets uint64 `protobuf:"fixed64,4,opt,name=rx_ucast_packets,json=rxUcastPackets,proto3" json:"rx_ucast_packets,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use rx_mcast_frames (field 64) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxMcastPackets uint64 `protobuf:"fixed64,5,opt,name=rx_mcast_packets,json=rxMcastPackets,proto3" json:"rx_mcast_packets,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use rx_bcast_frames (field 65) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxBcastPackets uint64 `protobuf:"fixed64,6,opt,name=rx_bcast_packets,json=rxBcastPackets,proto3" json:"rx_bcast_packets,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use rx_error_frames (field 66) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxErrorPackets          uint64 `protobuf:"fixed64,7,opt,name=rx_error_packets,json=rxErrorPackets,proto3" json:"rx_error_packets,omitempty"`
+	RxFrames                uint64 `protobuf:"fixed64,17,opt,name=rx_frames,json=rxFrames,proto3" json:"rx_frames,omitempty"`
+	RxFrames_64             uint64 `protobuf:"fixed64,18,opt,name=rx_frames_64,json=rxFrames64,proto3" json:"rx_frames_64,omitempty"`
+	RxFrames_65_127         uint64 `protobuf:"fixed64,19,opt,name=rx_frames_65_127,json=rxFrames65127,proto3" json:"rx_frames_65_127,omitempty"`
+	RxFrames_128_255        uint64 `protobuf:"fixed64,20,opt,name=rx_frames_128_255,json=rxFrames128255,proto3" json:"rx_frames_128_255,omitempty"`
+	RxFrames_256_511        uint64 `protobuf:"fixed64,21,opt,name=rx_frames_256_511,json=rxFrames256511,proto3" json:"rx_frames_256_511,omitempty"`
+	RxFrames_512_1023       uint64 `protobuf:"fixed64,22,opt,name=rx_frames_512_1023,json=rxFrames5121023,proto3" json:"rx_frames_512_1023,omitempty"`
+	RxFrames_1024_1518      uint64 `protobuf:"fixed64,23,opt,name=rx_frames_1024_1518,json=rxFrames10241518,proto3" json:"rx_frames_1024_1518,omitempty"`
+	RxFrames_1519_2047      uint64 `protobuf:"fixed64,24,opt,name=rx_frames_1519_2047,json=rxFrames15192047,proto3" json:"rx_frames_1519_2047,omitempty"`
+	RxFrames_2048_4095      uint64 `protobuf:"fixed64,25,opt,name=rx_frames_2048_4095,json=rxFrames20484095,proto3" json:"rx_frames_2048_4095,omitempty"`
+	RxFrames_4096_9216      uint64 `protobuf:"fixed64,26,opt,name=rx_frames_4096_9216,json=rxFrames40969216,proto3" json:"rx_frames_4096_9216,omitempty"`
+	RxFrames_9217_16383     uint64 `protobuf:"fixed64,27,opt,name=rx_frames_9217_16383,json=rxFrames921716383,proto3" json:"rx_frames_9217_16383,omitempty"`
+	RxCrcErrors             uint64 `protobuf:"fixed64,14,opt,name=rx_crc_errors,json=rxCrcErrors,proto3" json:"rx_crc_errors,omitempty"`
+	RxUndersizePackets      uint64 `protobuf:"fixed64,39,opt,name=rxUndersizePackets,proto3" json:"rxUndersizePackets,omitempty"`
+	RxOversizePackets       uint64 `protobuf:"fixed64,40,opt,name=rxOversizePackets,proto3" json:"rxOversizePackets,omitempty"`
+	RxGem                   uint64 `protobuf:"fixed64,43,opt,name=rxGem,proto3" json:"rxGem,omitempty"`
+	RxGemDropped            uint64 `protobuf:"fixed64,44,opt,name=rxGemDropped,proto3" json:"rxGemDropped,omitempty"`
+	RxGemIdle               uint64 `protobuf:"fixed64,45,opt,name=rxGemIdle,proto3" json:"rxGemIdle,omitempty"`
+	RxGemCorrected          uint64 `protobuf:"fixed64,46,opt,name=rxGemCorrected,proto3" json:"rxGemCorrected,omitempty"`
+	RxGemIllegal            uint64 `protobuf:"fixed64,47,opt,name=rxGemIllegal,proto3" json:"rxGemIllegal,omitempty"`
+	RxFragmentError         uint64 `protobuf:"fixed64,48,opt,name=rxFragmentError,proto3" json:"rxFragmentError,omitempty"`
+	RxPacketsDropped        uint64 `protobuf:"fixed64,49,opt,name=rxPacketsDropped,proto3" json:"rxPacketsDropped,omitempty"`
+	RxCpuOmciPacketsDropped uint64 `protobuf:"fixed64,50,opt,name=rxCpuOmciPacketsDropped,proto3" json:"rxCpuOmciPacketsDropped,omitempty"`
+	RxCpu                   uint64 `protobuf:"fixed64,51,opt,name=rxCpu,proto3" json:"rxCpu,omitempty"`
+	RxOmci                  uint64 `protobuf:"fixed64,52,opt,name=rxOmci,proto3" json:"rxOmci,omitempty"`
+	RxOmciPacketsCrcError   uint64 `protobuf:"fixed64,53,opt,name=rxOmciPacketsCrcError,proto3" json:"rxOmciPacketsCrcError,omitempty"`
+	RxFcsErrorPackets       uint64 `protobuf:"fixed64,62,opt,name=rxFcsErrorPackets,proto3" json:"rxFcsErrorPackets,omitempty"`
+	TxBytes                 uint64 `protobuf:"fixed64,8,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use tx_frames (field 28) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxPackets uint64 `protobuf:"fixed64,9,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use tx_ucast_frames (field 68) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxUcastPackets uint64 `protobuf:"fixed64,10,opt,name=tx_ucast_packets,json=txUcastPackets,proto3" json:"tx_ucast_packets,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use tx_mcast_frames (field 69) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxMcastPackets uint64 `protobuf:"fixed64,11,opt,name=tx_mcast_packets,json=txMcastPackets,proto3" json:"tx_mcast_packets,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use tx_bcast_frames (field 70) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxBcastPackets uint64 `protobuf:"fixed64,12,opt,name=tx_bcast_packets,json=txBcastPackets,proto3" json:"tx_bcast_packets,omitempty"`
+	// Deprecated: OLT being a Layer 2 device, use tx_error_frames (field 71) instead
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxErrorPackets         uint64 `protobuf:"fixed64,13,opt,name=tx_error_packets,json=txErrorPackets,proto3" json:"tx_error_packets,omitempty"`
+	TxFrames               uint64 `protobuf:"fixed64,28,opt,name=tx_frames,json=txFrames,proto3" json:"tx_frames,omitempty"`
+	TxFrames_64            uint64 `protobuf:"fixed64,29,opt,name=tx_frames_64,json=txFrames64,proto3" json:"tx_frames_64,omitempty"`
+	TxFrames_65_127        uint64 `protobuf:"fixed64,30,opt,name=tx_frames_65_127,json=txFrames65127,proto3" json:"tx_frames_65_127,omitempty"`
+	TxFrames_128_255       uint64 `protobuf:"fixed64,31,opt,name=tx_frames_128_255,json=txFrames128255,proto3" json:"tx_frames_128_255,omitempty"`
+	TxFrames_256_511       uint64 `protobuf:"fixed64,32,opt,name=tx_frames_256_511,json=txFrames256511,proto3" json:"tx_frames_256_511,omitempty"`
+	TxFrames_512_1023      uint64 `protobuf:"fixed64,33,opt,name=tx_frames_512_1023,json=txFrames5121023,proto3" json:"tx_frames_512_1023,omitempty"`
+	TxFrames_1024_1518     uint64 `protobuf:"fixed64,34,opt,name=tx_frames_1024_1518,json=txFrames10241518,proto3" json:"tx_frames_1024_1518,omitempty"`
+	TxFrames_1519_2047     uint64 `protobuf:"fixed64,35,opt,name=tx_frames_1519_2047,json=txFrames15192047,proto3" json:"tx_frames_1519_2047,omitempty"`
+	TxFrames_2048_4095     uint64 `protobuf:"fixed64,36,opt,name=tx_frames_2048_4095,json=txFrames20484095,proto3" json:"tx_frames_2048_4095,omitempty"`
+	TxFrames_4096_9216     uint64 `protobuf:"fixed64,37,opt,name=tx_frames_4096_9216,json=txFrames40969216,proto3" json:"tx_frames_4096_9216,omitempty"`
+	TxFrames_9217_16383    uint64 `protobuf:"fixed64,38,opt,name=tx_frames_9217_16383,json=txFrames921716383,proto3" json:"tx_frames_9217_16383,omitempty"`
+	TxUndersizePackets     uint64 `protobuf:"fixed64,41,opt,name=txUndersizePackets,proto3" json:"txUndersizePackets,omitempty"`
+	TxOversizePackets      uint64 `protobuf:"fixed64,42,opt,name=txOversizePackets,proto3" json:"txOversizePackets,omitempty"`
+	TxGem                  uint64 `protobuf:"fixed64,54,opt,name=txGem,proto3" json:"txGem,omitempty"`
+	TxCpu                  uint64 `protobuf:"fixed64,55,opt,name=txCpu,proto3" json:"txCpu,omitempty"`
+	TxOmci                 uint64 `protobuf:"fixed64,56,opt,name=txOmci,proto3" json:"txOmci,omitempty"`
+	TxDroppedIllegalLength uint64 `protobuf:"fixed64,57,opt,name=txDroppedIllegalLength,proto3" json:"txDroppedIllegalLength,omitempty"`
+	TxDroppedTpidMiss      uint64 `protobuf:"fixed64,58,opt,name=txDroppedTpidMiss,proto3" json:"txDroppedTpidMiss,omitempty"`
+	TxDroppedVidMiss       uint64 `protobuf:"fixed64,59,opt,name=txDroppedVidMiss,proto3" json:"txDroppedVidMiss,omitempty"`
+	TxDroppedTotal         uint64 `protobuf:"fixed64,60,opt,name=txDroppedTotal,proto3" json:"txDroppedTotal,omitempty"`
+	BipErrors              uint64 `protobuf:"fixed64,15,opt,name=bip_errors,json=bipErrors,proto3" json:"bip_errors,omitempty"`
+	BipUnits               uint64 `protobuf:"fixed64,61,opt,name=bip_units,json=bipUnits,proto3" json:"bip_units,omitempty"`
+	Timestamp              uint32 `protobuf:"fixed32,16,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+	RxUcastFrames          uint64 `protobuf:"fixed64,63,opt,name=rx_ucast_frames,json=rxUcastFrames,proto3" json:"rx_ucast_frames,omitempty"`
+	RxMcastFrames          uint64 `protobuf:"fixed64,64,opt,name=rx_mcast_frames,json=rxMcastFrames,proto3" json:"rx_mcast_frames,omitempty"`
+	RxBcastFrames          uint64 `protobuf:"fixed64,65,opt,name=rx_bcast_frames,json=rxBcastFrames,proto3" json:"rx_bcast_frames,omitempty"`
+	RxErrorFrames          uint64 `protobuf:"fixed64,66,opt,name=rx_error_frames,json=rxErrorFrames,proto3" json:"rx_error_frames,omitempty"`
+	RxRightFrames          uint64 `protobuf:"fixed64,67,opt,name=rx_right_frames,json=rxRightFrames,proto3" json:"rx_right_frames,omitempty"`
+	TxUcastFrames          uint64 `protobuf:"fixed64,68,opt,name=tx_ucast_frames,json=txUcastFrames,proto3" json:"tx_ucast_frames,omitempty"`
+	TxMcastFrames          uint64 `protobuf:"fixed64,69,opt,name=tx_mcast_frames,json=txMcastFrames,proto3" json:"tx_mcast_frames,omitempty"`
+	TxBcastFrames          uint64 `protobuf:"fixed64,70,opt,name=tx_bcast_frames,json=txBcastFrames,proto3" json:"tx_bcast_frames,omitempty"`
+	TxErrorFrames          uint64 `protobuf:"fixed64,71,opt,name=tx_error_frames,json=txErrorFrames,proto3" json:"tx_error_frames,omitempty"`
+	RxDiscardedFrames      uint64 `protobuf:"fixed64,72,opt,name=rx_discarded_frames,json=rxDiscardedFrames,proto3" json:"rx_discarded_frames,omitempty"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
 }
 
-func (m *PortStatistics) Reset()         { *m = PortStatistics{} }
-func (m *PortStatistics) String() string { return proto.CompactTextString(m) }
-func (*PortStatistics) ProtoMessage()    {}
+func (x *PortStatistics) Reset() {
+	*x = PortStatistics{}
+	mi := &file_voltha_protos_common_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PortStatistics) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PortStatistics) ProtoMessage() {}
+
+func (x *PortStatistics) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PortStatistics.ProtoReflect.Descriptor instead.
 func (*PortStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{8}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *PortStatistics) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PortStatistics.Unmarshal(m, b)
-}
-func (m *PortStatistics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PortStatistics.Marshal(b, m, deterministic)
-}
-func (m *PortStatistics) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PortStatistics.Merge(m, src)
-}
-func (m *PortStatistics) XXX_Size() int {
-	return xxx_messageInfo_PortStatistics.Size(m)
-}
-func (m *PortStatistics) XXX_DiscardUnknown() {
-	xxx_messageInfo_PortStatistics.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PortStatistics proto.InternalMessageInfo
-
-func (m *PortStatistics) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *PortStatistics) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *PortStatistics) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxUcastPackets() uint64 {
-	if m != nil {
-		return m.RxUcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxUcastPackets() uint64 {
+	if x != nil {
+		return x.RxUcastPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxMcastPackets() uint64 {
-	if m != nil {
-		return m.RxMcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxMcastPackets() uint64 {
+	if x != nil {
+		return x.RxMcastPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxBcastPackets() uint64 {
-	if m != nil {
-		return m.RxBcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxBcastPackets() uint64 {
+	if x != nil {
+		return x.RxBcastPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxErrorPackets() uint64 {
-	if m != nil {
-		return m.RxErrorPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxErrorPackets() uint64 {
+	if x != nil {
+		return x.RxErrorPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames() uint64 {
-	if m != nil {
-		return m.RxFrames
+func (x *PortStatistics) GetRxFrames() uint64 {
+	if x != nil {
+		return x.RxFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_64() uint64 {
-	if m != nil {
-		return m.RxFrames_64
+func (x *PortStatistics) GetRxFrames_64() uint64 {
+	if x != nil {
+		return x.RxFrames_64
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_65_127() uint64 {
-	if m != nil {
-		return m.RxFrames_65_127
+func (x *PortStatistics) GetRxFrames_65_127() uint64 {
+	if x != nil {
+		return x.RxFrames_65_127
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_128_255() uint64 {
-	if m != nil {
-		return m.RxFrames_128_255
+func (x *PortStatistics) GetRxFrames_128_255() uint64 {
+	if x != nil {
+		return x.RxFrames_128_255
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_256_511() uint64 {
-	if m != nil {
-		return m.RxFrames_256_511
+func (x *PortStatistics) GetRxFrames_256_511() uint64 {
+	if x != nil {
+		return x.RxFrames_256_511
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_512_1023() uint64 {
-	if m != nil {
-		return m.RxFrames_512_1023
+func (x *PortStatistics) GetRxFrames_512_1023() uint64 {
+	if x != nil {
+		return x.RxFrames_512_1023
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_1024_1518() uint64 {
-	if m != nil {
-		return m.RxFrames_1024_1518
+func (x *PortStatistics) GetRxFrames_1024_1518() uint64 {
+	if x != nil {
+		return x.RxFrames_1024_1518
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_1519_2047() uint64 {
-	if m != nil {
-		return m.RxFrames_1519_2047
+func (x *PortStatistics) GetRxFrames_1519_2047() uint64 {
+	if x != nil {
+		return x.RxFrames_1519_2047
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_2048_4095() uint64 {
-	if m != nil {
-		return m.RxFrames_2048_4095
+func (x *PortStatistics) GetRxFrames_2048_4095() uint64 {
+	if x != nil {
+		return x.RxFrames_2048_4095
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_4096_9216() uint64 {
-	if m != nil {
-		return m.RxFrames_4096_9216
+func (x *PortStatistics) GetRxFrames_4096_9216() uint64 {
+	if x != nil {
+		return x.RxFrames_4096_9216
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_9217_16383() uint64 {
-	if m != nil {
-		return m.RxFrames_9217_16383
+func (x *PortStatistics) GetRxFrames_9217_16383() uint64 {
+	if x != nil {
+		return x.RxFrames_9217_16383
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxCrcErrors() uint64 {
-	if m != nil {
-		return m.RxCrcErrors
+func (x *PortStatistics) GetRxCrcErrors() uint64 {
+	if x != nil {
+		return x.RxCrcErrors
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxUndersizePackets() uint64 {
-	if m != nil {
-		return m.RxUndersizePackets
+func (x *PortStatistics) GetRxUndersizePackets() uint64 {
+	if x != nil {
+		return x.RxUndersizePackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxOversizePackets() uint64 {
-	if m != nil {
-		return m.RxOversizePackets
+func (x *PortStatistics) GetRxOversizePackets() uint64 {
+	if x != nil {
+		return x.RxOversizePackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGem() uint64 {
-	if m != nil {
-		return m.RxGem
+func (x *PortStatistics) GetRxGem() uint64 {
+	if x != nil {
+		return x.RxGem
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGemDropped() uint64 {
-	if m != nil {
-		return m.RxGemDropped
+func (x *PortStatistics) GetRxGemDropped() uint64 {
+	if x != nil {
+		return x.RxGemDropped
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGemIdle() uint64 {
-	if m != nil {
-		return m.RxGemIdle
+func (x *PortStatistics) GetRxGemIdle() uint64 {
+	if x != nil {
+		return x.RxGemIdle
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGemCorrected() uint64 {
-	if m != nil {
-		return m.RxGemCorrected
+func (x *PortStatistics) GetRxGemCorrected() uint64 {
+	if x != nil {
+		return x.RxGemCorrected
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGemIllegal() uint64 {
-	if m != nil {
-		return m.RxGemIllegal
+func (x *PortStatistics) GetRxGemIllegal() uint64 {
+	if x != nil {
+		return x.RxGemIllegal
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFragmentError() uint64 {
-	if m != nil {
-		return m.RxFragmentError
+func (x *PortStatistics) GetRxFragmentError() uint64 {
+	if x != nil {
+		return x.RxFragmentError
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxPacketsDropped() uint64 {
-	if m != nil {
-		return m.RxPacketsDropped
+func (x *PortStatistics) GetRxPacketsDropped() uint64 {
+	if x != nil {
+		return x.RxPacketsDropped
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxCpuOmciPacketsDropped() uint64 {
-	if m != nil {
-		return m.RxCpuOmciPacketsDropped
+func (x *PortStatistics) GetRxCpuOmciPacketsDropped() uint64 {
+	if x != nil {
+		return x.RxCpuOmciPacketsDropped
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxCpu() uint64 {
-	if m != nil {
-		return m.RxCpu
+func (x *PortStatistics) GetRxCpu() uint64 {
+	if x != nil {
+		return x.RxCpu
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxOmci() uint64 {
-	if m != nil {
-		return m.RxOmci
+func (x *PortStatistics) GetRxOmci() uint64 {
+	if x != nil {
+		return x.RxOmci
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxOmciPacketsCrcError() uint64 {
-	if m != nil {
-		return m.RxOmciPacketsCrcError
+func (x *PortStatistics) GetRxOmciPacketsCrcError() uint64 {
+	if x != nil {
+		return x.RxOmciPacketsCrcError
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFcsErrorPackets() uint64 {
-	if m != nil {
-		return m.RxFcsErrorPackets
+func (x *PortStatistics) GetRxFcsErrorPackets() uint64 {
+	if x != nil {
+		return x.RxFcsErrorPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
+func (x *PortStatistics) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxUcastPackets() uint64 {
-	if m != nil {
-		return m.TxUcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxUcastPackets() uint64 {
+	if x != nil {
+		return x.TxUcastPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxMcastPackets() uint64 {
-	if m != nil {
-		return m.TxMcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxMcastPackets() uint64 {
+	if x != nil {
+		return x.TxMcastPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxBcastPackets() uint64 {
-	if m != nil {
-		return m.TxBcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxBcastPackets() uint64 {
+	if x != nil {
+		return x.TxBcastPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxErrorPackets() uint64 {
-	if m != nil {
-		return m.TxErrorPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxErrorPackets() uint64 {
+	if x != nil {
+		return x.TxErrorPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames() uint64 {
-	if m != nil {
-		return m.TxFrames
+func (x *PortStatistics) GetTxFrames() uint64 {
+	if x != nil {
+		return x.TxFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_64() uint64 {
-	if m != nil {
-		return m.TxFrames_64
+func (x *PortStatistics) GetTxFrames_64() uint64 {
+	if x != nil {
+		return x.TxFrames_64
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_65_127() uint64 {
-	if m != nil {
-		return m.TxFrames_65_127
+func (x *PortStatistics) GetTxFrames_65_127() uint64 {
+	if x != nil {
+		return x.TxFrames_65_127
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_128_255() uint64 {
-	if m != nil {
-		return m.TxFrames_128_255
+func (x *PortStatistics) GetTxFrames_128_255() uint64 {
+	if x != nil {
+		return x.TxFrames_128_255
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_256_511() uint64 {
-	if m != nil {
-		return m.TxFrames_256_511
+func (x *PortStatistics) GetTxFrames_256_511() uint64 {
+	if x != nil {
+		return x.TxFrames_256_511
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_512_1023() uint64 {
-	if m != nil {
-		return m.TxFrames_512_1023
+func (x *PortStatistics) GetTxFrames_512_1023() uint64 {
+	if x != nil {
+		return x.TxFrames_512_1023
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_1024_1518() uint64 {
-	if m != nil {
-		return m.TxFrames_1024_1518
+func (x *PortStatistics) GetTxFrames_1024_1518() uint64 {
+	if x != nil {
+		return x.TxFrames_1024_1518
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_1519_2047() uint64 {
-	if m != nil {
-		return m.TxFrames_1519_2047
+func (x *PortStatistics) GetTxFrames_1519_2047() uint64 {
+	if x != nil {
+		return x.TxFrames_1519_2047
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_2048_4095() uint64 {
-	if m != nil {
-		return m.TxFrames_2048_4095
+func (x *PortStatistics) GetTxFrames_2048_4095() uint64 {
+	if x != nil {
+		return x.TxFrames_2048_4095
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_4096_9216() uint64 {
-	if m != nil {
-		return m.TxFrames_4096_9216
+func (x *PortStatistics) GetTxFrames_4096_9216() uint64 {
+	if x != nil {
+		return x.TxFrames_4096_9216
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_9217_16383() uint64 {
-	if m != nil {
-		return m.TxFrames_9217_16383
+func (x *PortStatistics) GetTxFrames_9217_16383() uint64 {
+	if x != nil {
+		return x.TxFrames_9217_16383
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxUndersizePackets() uint64 {
-	if m != nil {
-		return m.TxUndersizePackets
+func (x *PortStatistics) GetTxUndersizePackets() uint64 {
+	if x != nil {
+		return x.TxUndersizePackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxOversizePackets() uint64 {
-	if m != nil {
-		return m.TxOversizePackets
+func (x *PortStatistics) GetTxOversizePackets() uint64 {
+	if x != nil {
+		return x.TxOversizePackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxGem() uint64 {
-	if m != nil {
-		return m.TxGem
+func (x *PortStatistics) GetTxGem() uint64 {
+	if x != nil {
+		return x.TxGem
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxCpu() uint64 {
-	if m != nil {
-		return m.TxCpu
+func (x *PortStatistics) GetTxCpu() uint64 {
+	if x != nil {
+		return x.TxCpu
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxOmci() uint64 {
-	if m != nil {
-		return m.TxOmci
+func (x *PortStatistics) GetTxOmci() uint64 {
+	if x != nil {
+		return x.TxOmci
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxDroppedIllegalLength() uint64 {
-	if m != nil {
-		return m.TxDroppedIllegalLength
+func (x *PortStatistics) GetTxDroppedIllegalLength() uint64 {
+	if x != nil {
+		return x.TxDroppedIllegalLength
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxDroppedTpidMiss() uint64 {
-	if m != nil {
-		return m.TxDroppedTpidMiss
+func (x *PortStatistics) GetTxDroppedTpidMiss() uint64 {
+	if x != nil {
+		return x.TxDroppedTpidMiss
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxDroppedVidMiss() uint64 {
-	if m != nil {
-		return m.TxDroppedVidMiss
+func (x *PortStatistics) GetTxDroppedVidMiss() uint64 {
+	if x != nil {
+		return x.TxDroppedVidMiss
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxDroppedTotal() uint64 {
-	if m != nil {
-		return m.TxDroppedTotal
+func (x *PortStatistics) GetTxDroppedTotal() uint64 {
+	if x != nil {
+		return x.TxDroppedTotal
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetBipErrors() uint64 {
-	if m != nil {
-		return m.BipErrors
+func (x *PortStatistics) GetBipErrors() uint64 {
+	if x != nil {
+		return x.BipErrors
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetBipUnits() uint64 {
-	if m != nil {
-		return m.BipUnits
+func (x *PortStatistics) GetBipUnits() uint64 {
+	if x != nil {
+		return x.BipUnits
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTimestamp() uint32 {
-	if m != nil {
-		return m.Timestamp
+func (x *PortStatistics) GetTimestamp() uint32 {
+	if x != nil {
+		return x.Timestamp
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterEnum("common.TestModeKeys", TestModeKeys_name, TestModeKeys_value)
-	proto.RegisterEnum("common.AdminState_Types", AdminState_Types_name, AdminState_Types_value)
-	proto.RegisterEnum("common.OperStatus_Types", OperStatus_Types_name, OperStatus_Types_value)
-	proto.RegisterEnum("common.ConnectStatus_Types", ConnectStatus_Types_name, ConnectStatus_Types_value)
-	proto.RegisterEnum("common.OperationResp_OperationReturnCode", OperationResp_OperationReturnCode_name, OperationResp_OperationReturnCode_value)
-	proto.RegisterType((*Key)(nil), "common.Key")
-	proto.RegisterType((*ID)(nil), "common.ID")
-	proto.RegisterType((*IDs)(nil), "common.IDs")
-	proto.RegisterType((*Connection)(nil), "common.Connection")
-	proto.RegisterType((*AdminState)(nil), "common.AdminState")
-	proto.RegisterType((*OperStatus)(nil), "common.OperStatus")
-	proto.RegisterType((*ConnectStatus)(nil), "common.ConnectStatus")
-	proto.RegisterType((*OperationResp)(nil), "common.OperationResp")
-	proto.RegisterType((*PortStatistics)(nil), "common.PortStatistics")
+func (x *PortStatistics) GetRxUcastFrames() uint64 {
+	if x != nil {
+		return x.RxUcastFrames
+	}
+	return 0
 }
 
-func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
+func (x *PortStatistics) GetRxMcastFrames() uint64 {
+	if x != nil {
+		return x.RxMcastFrames
+	}
+	return 0
+}
 
-var fileDescriptor_c2e3fd231961e826 = []byte{
-	// 1463 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x97, 0x5d, 0x53, 0xe2, 0xc8,
-	0x1a, 0xc7, 0x07, 0x51, 0xd4, 0x47, 0x45, 0x6c, 0xdf, 0x7a, 0xde, 0xce, 0xf1, 0x70, 0x76, 0x47,
-	0xe7, 0x0d, 0x49, 0x24, 0xa8, 0xbb, 0x3b, 0x5b, 0x85, 0x90, 0x71, 0x53, 0xa3, 0x84, 0x0a, 0xe0,
-	0x54, 0xcd, 0x4d, 0x0a, 0x49, 0x8f, 0xa6, 0x06, 0x92, 0x54, 0xa7, 0xb1, 0x70, 0x3e, 0xc5, 0xde,
-	0xef, 0xc5, 0x7e, 0xc7, 0xfd, 0x04, 0x5b, 0xdd, 0x9d, 0x00, 0x01, 0xe6, 0x8e, 0xe7, 0xff, 0xff,
-	0x91, 0x74, 0xfa, 0x79, 0xfa, 0x0f, 0x81, 0x67, 0x0f, 0x7e, 0x8f, 0xdd, 0x77, 0xec, 0x80, 0xfa,
-	0xcc, 0x0f, 0x8f, 0xbb, 0x7e, 0xbf, 0xef, 0x7b, 0x05, 0x51, 0xa1, 0x8c, 0xac, 0xf2, 0xfb, 0x90,
-	0xfe, 0x44, 0x1e, 0x51, 0x0e, 0xd2, 0xdf, 0xc8, 0x23, 0x4e, 0x1d, 0xa4, 0x8e, 0x56, 0x2d, 0xfe,
-	0x31, 0xbf, 0x03, 0x0b, 0x46, 0x0d, 0x65, 0x61, 0xc1, 0x75, 0x22, 0x79, 0xc1, 0x75, 0xf2, 0x87,
-	0x90, 0x36, 0x6a, 0x21, 0x3a, 0x80, 0x25, 0x97, 0x91, 0x7e, 0x88, 0x53, 0x07, 0xe9, 0xa3, 0x35,
-	0x15, 0x0a, 0xd1, 0xb5, 0x8d, 0x9a, 0x25, 0x8d, 0xfc, 0x77, 0x80, 0xaa, 0xef, 0x79, 0xa4, 0xcb,
-	0x5c, 0xdf, 0x43, 0xcf, 0x60, 0x85, 0x78, 0x4e, 0xe0, 0xbb, 0x1e, 0x8b, 0x2e, 0x36, 0xaa, 0xd1,
-	0x01, 0xac, 0x75, 0x7d, 0x8f, 0x91, 0x21, 0x33, 0xbc, 0xaf, 0x3e, 0x5e, 0x10, 0xf6, 0xa4, 0x84,
-	0x0a, 0xb0, 0xfd, 0x8d, 0x90, 0xc0, 0xee, 0xf4, 0xdc, 0x07, 0x62, 0xbb, 0x1e, 0x23, 0xf4, 0xa1,
-	0xd3, 0xc3, 0xe9, 0x83, 0xd4, 0x51, 0xda, 0xda, 0xe2, 0x56, 0x85, 0x3b, 0x46, 0x64, 0xe4, 0xef,
-	0x01, 0x2a, 0x4e, 0xdf, 0xf5, 0x9a, 0xac, 0xc3, 0x48, 0xfe, 0x0b, 0x2c, 0xb5, 0x1e, 0x03, 0x12,
-	0xa2, 0x35, 0x58, 0x6e, 0xd7, 0x3f, 0xd5, 0xcd, 0xcf, 0xf5, 0xdc, 0x13, 0x84, 0x20, 0xdb, 0xb0,
-	0xf4, 0x86, 0x65, 0xde, 0x18, 0x4d, 0xc3, 0xac, 0xeb, 0xb5, 0x5c, 0x8a, 0x03, 0x7a, 0xbd, 0x72,
-	0x71, 0xa5, 0xd7, 0x72, 0x0b, 0x68, 0x1d, 0x56, 0x6a, 0x46, 0x53, 0x56, 0x69, 0xb4, 0x0b, 0x5b,
-	0x35, 0xf3, 0x73, 0xfd, 0xca, 0xac, 0xd4, 0x8c, 0xfa, 0xa5, 0x6d, 0x5c, 0x57, 0x2e, 0xf5, 0xdc,
-	0x62, 0xfe, 0xef, 0x14, 0x80, 0x19, 0x10, 0xca, 0xef, 0x34, 0x08, 0xf3, 0x7f, 0xa6, 0xe6, 0xde,
-	0x2b, 0x0b, 0x50, 0x33, 0x9a, 0x55, 0xf3, 0x46, 0xb7, 0xc4, 0x7d, 0xb2, 0x00, 0x95, 0x6a, 0xcb,
-	0xb8, 0xa9, 0xb4, 0x8c, 0xfa, 0x65, 0x6e, 0x81, 0xc3, 0x2d, 0xbd, 0x29, 0x8a, 0x34, 0x02, 0xc8,
-	0x08, 0x53, 0xcf, 0x2d, 0xf2, 0xcf, 0x1f, 0x2b, 0x06, 0x5f, 0xc1, 0x12, 0xda, 0x84, 0x35, 0x4b,
-	0xaf, 0x9a, 0xf5, 0xaa, 0x71, 0xc5, 0xc1, 0x0c, 0xda, 0x03, 0x34, 0x21, 0xd8, 0x11, 0xb8, 0xcc,
-	0x17, 0x6e, 0xe9, 0x17, 0xa6, 0xd9, 0xd2, 0x6b, 0xb9, 0x95, 0xbc, 0x0e, 0x1b, 0x51, 0x1f, 0xa2,
-	0x35, 0x96, 0xe6, 0x2e, 0x71, 0x13, 0xd6, 0xda, 0x75, 0x4b, 0xaf, 0x54, 0xff, 0xe0, 0x4f, 0x9c,
-	0x4b, 0xa1, 0x0d, 0x58, 0x1d, 0x97, 0x0b, 0xf9, 0x7f, 0x52, 0xb0, 0xc1, 0x1f, 0xb4, 0xc3, 0xdb,
-	0x69, 0x91, 0x30, 0x40, 0x1f, 0x60, 0xb1, 0xeb, 0x3b, 0x44, 0xb4, 0x33, 0xab, 0xbe, 0x8e, 0x27,
-	0x20, 0x01, 0x4d, 0x56, 0x6c, 0x40, 0xbd, 0xaa, 0xef, 0x10, 0x4b, 0x7c, 0x0d, 0x1d, 0xc2, 0x66,
-	0xc7, 0x71, 0x5c, 0xee, 0x75, 0x7a, 0xb6, 0x3b, 0xee, 0x7c, 0x76, 0x2c, 0xf3, 0xe6, 0xe7, 0x1f,
-	0x61, 0x7b, 0xce, 0x55, 0x78, 0x43, 0xcc, 0x86, 0x6e, 0x55, 0x5a, 0x86, 0x59, 0xb7, 0x9b, 0xed,
-	0x6a, 0x55, 0x6f, 0x36, 0x73, 0x4f, 0x92, 0x32, 0xdf, 0x92, 0xb6, 0xc5, 0x9f, 0xe6, 0x29, 0xec,
-	0x8e, 0xe5, 0x76, 0xbd, 0xd9, 0x6e, 0x34, 0x4c, 0xab, 0x25, 0xfa, 0x9c, 0xb0, 0x8c, 0xba, 0xdd,
-	0xb0, 0xcc, 0x4b, 0x8b, 0x5f, 0x2c, 0x9d, 0xff, 0x6b, 0x1b, 0xb2, 0x0d, 0x9f, 0x8a, 0x9d, 0x73,
-	0x43, 0xe6, 0x76, 0x43, 0xb4, 0x0f, 0xcb, 0xae, 0xc7, 0xbe, 0xda, 0xd1, 0xa1, 0x58, 0xb6, 0x32,
-	0xbc, 0x34, 0x1c, 0xf4, 0x14, 0x56, 0xe8, 0xd0, 0xbe, 0x7d, 0x64, 0x24, 0x14, 0x0f, 0x92, 0xb1,
-	0x96, 0xe9, 0xf0, 0x82, 0x97, 0xe8, 0x25, 0x00, 0x1d, 0xda, 0x41, 0xa7, 0xfb, 0x8d, 0xb0, 0x50,
-	0x4c, 0x6d, 0xc6, 0x5a, 0xa5, 0xc3, 0x86, 0x14, 0xd0, 0x11, 0xe4, 0xe8, 0xd0, 0x1e, 0x74, 0x3b,
-	0x21, 0x1b, 0x41, 0x8b, 0x02, 0xca, 0xd2, 0x61, 0x9b, 0xcb, 0x49, 0xb2, 0x9f, 0x20, 0x97, 0x62,
-	0xf2, 0x7a, 0x96, 0xbc, 0x4d, 0x90, 0x99, 0x98, 0xbc, 0x98, 0x25, 0x09, 0xa5, 0x3e, 0x1d, 0x91,
-	0xcb, 0x31, 0xa9, 0x73, 0x39, 0x26, 0x9f, 0xc3, 0x2a, 0x1d, 0xda, 0x5f, 0x69, 0xa7, 0x4f, 0x42,
-	0xbc, 0x25, 0x90, 0x15, 0x3a, 0xfc, 0x28, 0x6a, 0x74, 0x00, 0xeb, 0x23, 0xd3, 0x2e, 0x97, 0x30,
-	0x12, 0x3e, 0xc4, 0x7e, 0xb9, 0x84, 0x0e, 0xc5, 0x8d, 0x62, 0x42, 0xb3, 0x15, 0xf5, 0x14, 0x6f,
-	0x0b, 0x6a, 0x63, 0x44, 0x69, 0x8a, 0x7a, 0x8a, 0x5e, 0xc3, 0xd6, 0x18, 0x54, 0xd4, 0x33, 0x5b,
-	0xd5, 0x34, 0xbc, 0x13, 0x2f, 0x49, 0x92, 0x8a, 0x7a, 0xa6, 0x6a, 0x5a, 0x12, 0x55, 0xb5, 0xb2,
-	0xad, 0x29, 0x0a, 0xde, 0x4d, 0xa2, 0xaa, 0x56, 0xd6, 0x14, 0x05, 0xbd, 0x05, 0x34, 0x46, 0x35,
-	0x45, 0xb5, 0x95, 0xa2, 0x7a, 0x82, 0xf7, 0x04, 0xbb, 0x19, 0xb3, 0x9a, 0xa2, 0x72, 0x19, 0xbd,
-	0x87, 0xed, 0x89, 0x25, 0x14, 0xd5, 0x92, 0xad, 0x68, 0xca, 0x19, 0xde, 0x17, 0x74, 0x6e, 0xb4,
-	0x88, 0xa2, 0x5a, 0xe2, 0xfa, 0x14, 0xae, 0x29, 0xe7, 0xb6, 0x5a, 0x2c, 0x9d, 0x62, 0x3c, 0x85,
-	0x6b, 0xca, 0x39, 0xd7, 0x93, 0xb8, 0x5a, 0x2c, 0x9d, 0xd9, 0xa5, 0xe2, 0xb9, 0x86, 0x9f, 0x26,
-	0x71, 0x6e, 0x70, 0x3d, 0x89, 0x97, 0x8a, 0xe7, 0x65, 0xfb, 0x5c, 0x55, 0xca, 0xf8, 0x59, 0x12,
-	0xe7, 0x06, 0xd7, 0xd1, 0x31, 0xec, 0x8c, 0xf1, 0x73, 0x55, 0x39, 0xb5, 0x95, 0xf2, 0xc9, 0xd9,
-	0x09, 0x7e, 0x2e, 0xf8, 0xad, 0x98, 0xe7, 0x8e, 0x30, 0x50, 0x1e, 0x36, 0xe8, 0xd0, 0xee, 0xd2,
-	0xae, 0x9c, 0x82, 0x10, 0x67, 0x05, 0xb9, 0x46, 0x87, 0x55, 0xda, 0x15, 0x13, 0x10, 0xa2, 0x02,
-	0xdf, 0xbd, 0xb6, 0xe7, 0x10, 0x1a, 0xba, 0xdf, 0x49, 0x34, 0x11, 0xf8, 0x50, 0x80, 0x73, 0x1c,
-	0xf4, 0x8e, 0x37, 0xc6, 0x7c, 0x48, 0xe2, 0x47, 0xf1, 0x0a, 0xa6, 0x0c, 0xb4, 0x03, 0x4b, 0x74,
-	0x78, 0x49, 0xfa, 0xf8, 0xad, 0x20, 0x64, 0x81, 0xf2, 0x7c, 0xa4, 0x2e, 0x49, 0xbf, 0x46, 0xfd,
-	0x20, 0x20, 0x0e, 0x7e, 0x27, 0xcc, 0x84, 0x86, 0x5e, 0xf0, 0x99, 0xbc, 0x24, 0x7d, 0xc3, 0xe9,
-	0x11, 0xfc, 0x3e, 0x3e, 0x59, 0x91, 0x80, 0x5e, 0x41, 0x56, 0x14, 0x55, 0x9f, 0x52, 0xd2, 0x65,
-	0xc4, 0xc1, 0x85, 0x78, 0x36, 0x26, 0xd5, 0xd1, 0x9d, 0x8c, 0x5e, 0x8f, 0xdc, 0x75, 0x7a, 0xf8,
-	0x78, 0xe2, 0x4e, 0x91, 0x86, 0x8e, 0x40, 0x4e, 0xc9, 0x5d, 0x9f, 0x78, 0x4c, 0xec, 0x0a, 0x2e,
-	0x4e, 0x0c, 0xcf, 0x58, 0x46, 0x6f, 0xf8, 0xa0, 0x47, 0x8f, 0x16, 0xaf, 0x5d, 0x89, 0x9b, 0x95,
-	0xd4, 0xd1, 0x19, 0xec, 0xd3, 0x61, 0x35, 0x18, 0x98, 0xfd, 0xae, 0x3b, 0xf5, 0x15, 0x55, 0x7c,
-	0xe5, 0x47, 0xb6, 0xdc, 0xb3, 0x6a, 0x30, 0xc0, 0x27, 0xf1, 0x9e, 0x55, 0x83, 0x01, 0xda, 0x83,
-	0x0c, 0x1d, 0x72, 0x1a, 0x97, 0x84, 0x1c, 0x55, 0xa8, 0x04, 0xbb, 0xf2, 0x53, 0x74, 0x95, 0xb8,
-	0xb3, 0x58, 0x13, 0xd8, 0x7c, 0x53, 0x76, 0xf1, 0x63, 0x37, 0x9c, 0x8c, 0x01, 0xfc, 0xfb, 0x68,
-	0x8e, 0x92, 0x06, 0x4f, 0x40, 0x16, 0x27, 0xe0, 0x8a, 0x4c, 0x40, 0x36, 0x4e, 0x40, 0x36, 0x4e,
-	0xc0, 0x55, 0xd9, 0x27, 0x36, 0x99, 0x80, 0x6c, 0x3a, 0x01, 0x41, 0x76, 0x8a, 0xcd, 0x24, 0x20,
-	0x9b, 0x4e, 0xc0, 0xb5, 0x98, 0xbc, 0x9e, 0x25, 0x93, 0x09, 0xb8, 0x1e, 0x93, 0x17, 0xb3, 0x64,
-	0x32, 0x01, 0x37, 0x62, 0x72, 0x3a, 0x01, 0xd9, 0x28, 0x01, 0x5f, 0xc8, 0x04, 0x64, 0x13, 0x09,
-	0xc8, 0x26, 0x13, 0xf0, 0xa5, 0x4c, 0x40, 0x96, 0x48, 0x40, 0x36, 0x9d, 0x80, 0xff, 0x91, 0x09,
-	0xc8, 0xa6, 0x13, 0x90, 0xcd, 0x24, 0xe0, 0x7f, 0xe3, 0x25, 0x4d, 0x27, 0x20, 0x9b, 0x49, 0xc0,
-	0x83, 0x24, 0x3a, 0x4e, 0x40, 0x36, 0x9b, 0x80, 0xff, 0x93, 0x43, 0xcc, 0x66, 0x13, 0x90, 0xcd,
-	0x49, 0xc0, 0xbc, 0x9c, 0x63, 0x36, 0x27, 0x01, 0xd9, 0x9c, 0x04, 0xfc, 0xff, 0x14, 0x3e, 0x91,
-	0x80, 0x6c, 0x4e, 0x02, 0xfe, 0x94, 0xc4, 0x27, 0x13, 0x90, 0xcd, 0x49, 0xc0, 0x9f, 0x93, 0xf8,
-	0x64, 0x02, 0xb2, 0x79, 0x09, 0xf8, 0x4a, 0x4e, 0x2e, 0x9b, 0x49, 0xc0, 0x02, 0xdf, 0x99, 0x99,
-	0x74, 0x7b, 0x2d, 0xd3, 0x8d, 0xcd, 0x4d, 0x37, 0x36, 0x93, 0x6e, 0x6f, 0xe2, 0xab, 0xcf, 0x49,
-	0x37, 0x26, 0xd2, 0xad, 0x2c, 0x4f, 0xaa, 0x28, 0xa4, 0xca, 0xcf, 0xef, 0x69, 0xac, 0x46, 0xe7,
-	0x97, 0xc9, 0xf3, 0x7b, 0x26, 0xcf, 0xaf, 0xac, 0x50, 0x19, 0xf6, 0xd8, 0x30, 0x3a, 0xfa, 0x51,
-	0x22, 0x5d, 0x11, 0xef, 0x8e, 0xdd, 0xe3, 0x73, 0xc1, 0xfd, 0xc0, 0x95, 0x2b, 0x8d, 0x9c, 0x56,
-	0xe0, 0x3a, 0xd7, 0x6e, 0x18, 0xe2, 0x5f, 0xe2, 0x95, 0x4e, 0x19, 0x3c, 0xb9, 0x46, 0xe2, 0x4d,
-	0x04, 0xff, 0x1a, 0x6f, 0x72, 0x52, 0xe7, 0xd9, 0x3a, 0xbe, 0x80, 0xcf, 0x3a, 0x3d, 0xfc, 0x5b,
-	0x3c, 0x75, 0x93, 0x2a, 0x3f, 0xfa, 0xb7, 0x6e, 0x10, 0xff, 0xb4, 0x6c, 0xca, 0xa3, 0x7f, 0xeb,
-	0x06, 0xd1, 0x0f, 0xcb, 0x73, 0xe0, 0x85, 0x3d, 0xf0, 0x5c, 0x16, 0xe2, 0x0f, 0xf2, 0x48, 0xdd,
-	0xba, 0x41, 0x9b, 0xd7, 0x3c, 0xdd, 0x99, 0xdb, 0x27, 0x21, 0xeb, 0xf4, 0x03, 0x9c, 0x13, 0x7f,
-	0xb7, 0xc6, 0xc2, 0x9b, 0x17, 0xb0, 0xde, 0x22, 0x21, 0xbb, 0xf6, 0x1d, 0xf2, 0x89, 0x3c, 0x86,
-	0xfc, 0x7f, 0x6f, 0x27, 0x70, 0x6d, 0x46, 0x42, 0x96, 0x7b, 0x72, 0xa1, 0xc3, 0xb6, 0x4f, 0xef,
-	0x0a, 0x7e, 0x40, 0xbc, 0xae, 0x4f, 0x9d, 0x82, 0x7c, 0x15, 0xfa, 0x52, 0xb8, 0x73, 0xd9, 0xfd,
-	0xe0, 0x96, 0xff, 0x5b, 0x3d, 0x8e, 0xbd, 0x63, 0xe9, 0xbd, 0x8f, 0x5e, 0x93, 0x1e, 0xb4, 0xe3,
-	0x3b, 0x3f, 0x7a, 0x59, 0xba, 0xcd, 0x08, 0xf1, 0xe4, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa8,
-	0x11, 0x5a, 0xa3, 0x4b, 0x0d, 0x00, 0x00,
+func (x *PortStatistics) GetRxBcastFrames() uint64 {
+	if x != nil {
+		return x.RxBcastFrames
+	}
+	return 0
+}
+
+func (x *PortStatistics) GetRxErrorFrames() uint64 {
+	if x != nil {
+		return x.RxErrorFrames
+	}
+	return 0
+}
+
+func (x *PortStatistics) GetRxRightFrames() uint64 {
+	if x != nil {
+		return x.RxRightFrames
+	}
+	return 0
+}
+
+func (x *PortStatistics) GetTxUcastFrames() uint64 {
+	if x != nil {
+		return x.TxUcastFrames
+	}
+	return 0
+}
+
+func (x *PortStatistics) GetTxMcastFrames() uint64 {
+	if x != nil {
+		return x.TxMcastFrames
+	}
+	return 0
+}
+
+func (x *PortStatistics) GetTxBcastFrames() uint64 {
+	if x != nil {
+		return x.TxBcastFrames
+	}
+	return 0
+}
+
+func (x *PortStatistics) GetTxErrorFrames() uint64 {
+	if x != nil {
+		return x.TxErrorFrames
+	}
+	return 0
+}
+
+func (x *PortStatistics) GetRxDiscardedFrames() uint64 {
+	if x != nil {
+		return x.RxDiscardedFrames
+	}
+	return 0
+}
+
+var File_voltha_protos_common_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_common_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/common.proto\x12\x06common\"\x17\n" +
+	"\x03Key\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\"\x14\n" +
+	"\x02ID\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\"'\n" +
+	"\x03IDs\x12 \n" +
+	"\x05items\x18\x01 \x03(\v2\n" +
+	".common.IDR\x05items\"z\n" +
+	"\n" +
+	"Connection\x12\x1a\n" +
+	"\bendpoint\x18\x01 \x01(\tR\bendpoint\x12 \n" +
+	"\vcontextInfo\x18\x02 \x01(\tR\vcontextInfo\x12.\n" +
+	"\x13keep_alive_interval\x18\x03 \x01(\x03R\x11keepAliveInterval\"h\n" +
+	"\n" +
+	"AdminState\"Z\n" +
+	"\x05Types\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x12\n" +
+	"\x0ePREPROVISIONED\x10\x01\x12\v\n" +
+	"\aENABLED\x10\x02\x12\f\n" +
+	"\bDISABLED\x10\x03\x12\x15\n" +
+	"\x11DOWNLOADING_IMAGE\x10\x04\"\x9f\x01\n" +
+	"\n" +
+	"OperStatus\"\x90\x01\n" +
+	"\x05Types\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x0e\n" +
+	"\n" +
+	"DISCOVERED\x10\x01\x12\x0e\n" +
+	"\n" +
+	"ACTIVATING\x10\x02\x12\v\n" +
+	"\aTESTING\x10\x03\x12\n" +
+	"\n" +
+	"\x06ACTIVE\x10\x04\x12\n" +
+	"\n" +
+	"\x06FAILED\x10\x05\x12\x0f\n" +
+	"\vRECONCILING\x10\x06\x12\x16\n" +
+	"\x12RECONCILING_FAILED\x10\a\x12\f\n" +
+	"\bREBOOTED\x10\b\"E\n" +
+	"\rConnectStatus\"4\n" +
+	"\x05Types\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x0f\n" +
+	"\vUNREACHABLE\x10\x01\x12\r\n" +
+	"\tREACHABLE\x10\x02\"\xf2\x01\n" +
+	"\rOperationResp\x12=\n" +
+	"\x04code\x18\x01 \x01(\x0e2).common.OperationResp.OperationReturnCodeR\x04code\x12'\n" +
+	"\x0fadditional_info\x18\x02 \x01(\tR\x0eadditionalInfo\"y\n" +
+	"\x13OperationReturnCode\x12\x15\n" +
+	"\x11OPERATION_SUCCESS\x10\x00\x12\x15\n" +
+	"\x11OPERATION_FAILURE\x10\x01\x12\x19\n" +
+	"\x15OPERATION_UNSUPPORTED\x10\x02\x12\x19\n" +
+	"\x15OPERATION_IN_PROGRESS\x10\x03\"\xdb\x16\n" +
+	"\x0ePortStatistics\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x19\n" +
+	"\brx_bytes\x18\x02 \x01(\x06R\arxBytes\x12!\n" +
+	"\n" +
+	"rx_packets\x18\x03 \x01(\x06B\x02\x18\x01R\trxPackets\x12,\n" +
+	"\x10rx_ucast_packets\x18\x04 \x01(\x06B\x02\x18\x01R\x0erxUcastPackets\x12,\n" +
+	"\x10rx_mcast_packets\x18\x05 \x01(\x06B\x02\x18\x01R\x0erxMcastPackets\x12,\n" +
+	"\x10rx_bcast_packets\x18\x06 \x01(\x06B\x02\x18\x01R\x0erxBcastPackets\x12,\n" +
+	"\x10rx_error_packets\x18\a \x01(\x06B\x02\x18\x01R\x0erxErrorPackets\x12\x1b\n" +
+	"\trx_frames\x18\x11 \x01(\x06R\brxFrames\x12 \n" +
+	"\frx_frames_64\x18\x12 \x01(\x06R\n" +
+	"rxFrames64\x12'\n" +
+	"\x10rx_frames_65_127\x18\x13 \x01(\x06R\rrxFrames65127\x12)\n" +
+	"\x11rx_frames_128_255\x18\x14 \x01(\x06R\x0erxFrames128255\x12)\n" +
+	"\x11rx_frames_256_511\x18\x15 \x01(\x06R\x0erxFrames256511\x12+\n" +
+	"\x12rx_frames_512_1023\x18\x16 \x01(\x06R\x0frxFrames5121023\x12-\n" +
+	"\x13rx_frames_1024_1518\x18\x17 \x01(\x06R\x10rxFrames10241518\x12-\n" +
+	"\x13rx_frames_1519_2047\x18\x18 \x01(\x06R\x10rxFrames15192047\x12-\n" +
+	"\x13rx_frames_2048_4095\x18\x19 \x01(\x06R\x10rxFrames20484095\x12-\n" +
+	"\x13rx_frames_4096_9216\x18\x1a \x01(\x06R\x10rxFrames40969216\x12/\n" +
+	"\x14rx_frames_9217_16383\x18\x1b \x01(\x06R\x11rxFrames921716383\x12\"\n" +
+	"\rrx_crc_errors\x18\x0e \x01(\x06R\vrxCrcErrors\x12.\n" +
+	"\x12rxUndersizePackets\x18' \x01(\x06R\x12rxUndersizePackets\x12,\n" +
+	"\x11rxOversizePackets\x18( \x01(\x06R\x11rxOversizePackets\x12\x14\n" +
+	"\x05rxGem\x18+ \x01(\x06R\x05rxGem\x12\"\n" +
+	"\frxGemDropped\x18, \x01(\x06R\frxGemDropped\x12\x1c\n" +
+	"\trxGemIdle\x18- \x01(\x06R\trxGemIdle\x12&\n" +
+	"\x0erxGemCorrected\x18. \x01(\x06R\x0erxGemCorrected\x12\"\n" +
+	"\frxGemIllegal\x18/ \x01(\x06R\frxGemIllegal\x12(\n" +
+	"\x0frxFragmentError\x180 \x01(\x06R\x0frxFragmentError\x12*\n" +
+	"\x10rxPacketsDropped\x181 \x01(\x06R\x10rxPacketsDropped\x128\n" +
+	"\x17rxCpuOmciPacketsDropped\x182 \x01(\x06R\x17rxCpuOmciPacketsDropped\x12\x14\n" +
+	"\x05rxCpu\x183 \x01(\x06R\x05rxCpu\x12\x16\n" +
+	"\x06rxOmci\x184 \x01(\x06R\x06rxOmci\x124\n" +
+	"\x15rxOmciPacketsCrcError\x185 \x01(\x06R\x15rxOmciPacketsCrcError\x12,\n" +
+	"\x11rxFcsErrorPackets\x18> \x01(\x06R\x11rxFcsErrorPackets\x12\x19\n" +
+	"\btx_bytes\x18\b \x01(\x06R\atxBytes\x12!\n" +
+	"\n" +
+	"tx_packets\x18\t \x01(\x06B\x02\x18\x01R\ttxPackets\x12,\n" +
+	"\x10tx_ucast_packets\x18\n" +
+	" \x01(\x06B\x02\x18\x01R\x0etxUcastPackets\x12,\n" +
+	"\x10tx_mcast_packets\x18\v \x01(\x06B\x02\x18\x01R\x0etxMcastPackets\x12,\n" +
+	"\x10tx_bcast_packets\x18\f \x01(\x06B\x02\x18\x01R\x0etxBcastPackets\x12,\n" +
+	"\x10tx_error_packets\x18\r \x01(\x06B\x02\x18\x01R\x0etxErrorPackets\x12\x1b\n" +
+	"\ttx_frames\x18\x1c \x01(\x06R\btxFrames\x12 \n" +
+	"\ftx_frames_64\x18\x1d \x01(\x06R\n" +
+	"txFrames64\x12'\n" +
+	"\x10tx_frames_65_127\x18\x1e \x01(\x06R\rtxFrames65127\x12)\n" +
+	"\x11tx_frames_128_255\x18\x1f \x01(\x06R\x0etxFrames128255\x12)\n" +
+	"\x11tx_frames_256_511\x18  \x01(\x06R\x0etxFrames256511\x12+\n" +
+	"\x12tx_frames_512_1023\x18! \x01(\x06R\x0ftxFrames5121023\x12-\n" +
+	"\x13tx_frames_1024_1518\x18\" \x01(\x06R\x10txFrames10241518\x12-\n" +
+	"\x13tx_frames_1519_2047\x18# \x01(\x06R\x10txFrames15192047\x12-\n" +
+	"\x13tx_frames_2048_4095\x18$ \x01(\x06R\x10txFrames20484095\x12-\n" +
+	"\x13tx_frames_4096_9216\x18% \x01(\x06R\x10txFrames40969216\x12/\n" +
+	"\x14tx_frames_9217_16383\x18& \x01(\x06R\x11txFrames921716383\x12.\n" +
+	"\x12txUndersizePackets\x18) \x01(\x06R\x12txUndersizePackets\x12,\n" +
+	"\x11txOversizePackets\x18* \x01(\x06R\x11txOversizePackets\x12\x14\n" +
+	"\x05txGem\x186 \x01(\x06R\x05txGem\x12\x14\n" +
+	"\x05txCpu\x187 \x01(\x06R\x05txCpu\x12\x16\n" +
+	"\x06txOmci\x188 \x01(\x06R\x06txOmci\x126\n" +
+	"\x16txDroppedIllegalLength\x189 \x01(\x06R\x16txDroppedIllegalLength\x12,\n" +
+	"\x11txDroppedTpidMiss\x18: \x01(\x06R\x11txDroppedTpidMiss\x12*\n" +
+	"\x10txDroppedVidMiss\x18; \x01(\x06R\x10txDroppedVidMiss\x12&\n" +
+	"\x0etxDroppedTotal\x18< \x01(\x06R\x0etxDroppedTotal\x12\x1d\n" +
+	"\n" +
+	"bip_errors\x18\x0f \x01(\x06R\tbipErrors\x12\x1b\n" +
+	"\tbip_units\x18= \x01(\x06R\bbipUnits\x12\x1c\n" +
+	"\ttimestamp\x18\x10 \x01(\aR\ttimestamp\x12&\n" +
+	"\x0frx_ucast_frames\x18? \x01(\x06R\rrxUcastFrames\x12&\n" +
+	"\x0frx_mcast_frames\x18@ \x01(\x06R\rrxMcastFrames\x12&\n" +
+	"\x0frx_bcast_frames\x18A \x01(\x06R\rrxBcastFrames\x12&\n" +
+	"\x0frx_error_frames\x18B \x01(\x06R\rrxErrorFrames\x12&\n" +
+	"\x0frx_right_frames\x18C \x01(\x06R\rrxRightFrames\x12&\n" +
+	"\x0ftx_ucast_frames\x18D \x01(\x06R\rtxUcastFrames\x12&\n" +
+	"\x0ftx_mcast_frames\x18E \x01(\x06R\rtxMcastFrames\x12&\n" +
+	"\x0ftx_bcast_frames\x18F \x01(\x06R\rtxBcastFrames\x12&\n" +
+	"\x0ftx_error_frames\x18G \x01(\x06R\rtxErrorFrames\x12.\n" +
+	"\x13rx_discarded_frames\x18H \x01(\x06R\x11rxDiscardedFrames*\x1c\n" +
+	"\fTestModeKeys\x12\f\n" +
+	"\bapi_test\x10\x00BE\n" +
+	"\x13org.opencord.volthaZ.github.com/opencord/voltha-protos/v5/go/commonb\x06proto3"
+
+var (
+	file_voltha_protos_common_proto_rawDescOnce sync.Once
+	file_voltha_protos_common_proto_rawDescData []byte
+)
+
+func file_voltha_protos_common_proto_rawDescGZIP() []byte {
+	file_voltha_protos_common_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_common_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_common_proto_rawDesc), len(file_voltha_protos_common_proto_rawDesc)))
+	})
+	return file_voltha_protos_common_proto_rawDescData
+}
+
+var file_voltha_protos_common_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
+var file_voltha_protos_common_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_voltha_protos_common_proto_goTypes = []any{
+	(TestModeKeys)(0),                      // 0: common.TestModeKeys
+	(AdminState_Types)(0),                  // 1: common.AdminState.Types
+	(OperStatus_Types)(0),                  // 2: common.OperStatus.Types
+	(ConnectStatus_Types)(0),               // 3: common.ConnectStatus.Types
+	(OperationResp_OperationReturnCode)(0), // 4: common.OperationResp.OperationReturnCode
+	(*Key)(nil),                            // 5: common.Key
+	(*ID)(nil),                             // 6: common.ID
+	(*IDs)(nil),                            // 7: common.IDs
+	(*Connection)(nil),                     // 8: common.Connection
+	(*AdminState)(nil),                     // 9: common.AdminState
+	(*OperStatus)(nil),                     // 10: common.OperStatus
+	(*ConnectStatus)(nil),                  // 11: common.ConnectStatus
+	(*OperationResp)(nil),                  // 12: common.OperationResp
+	(*PortStatistics)(nil),                 // 13: common.PortStatistics
+}
+var file_voltha_protos_common_proto_depIdxs = []int32{
+	6, // 0: common.IDs.items:type_name -> common.ID
+	4, // 1: common.OperationResp.code:type_name -> common.OperationResp.OperationReturnCode
+	2, // [2:2] is the sub-list for method output_type
+	2, // [2:2] is the sub-list for method input_type
+	2, // [2:2] is the sub-list for extension type_name
+	2, // [2:2] is the sub-list for extension extendee
+	0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_common_proto_init() }
+func file_voltha_protos_common_proto_init() {
+	if File_voltha_protos_common_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_common_proto_rawDesc), len(file_voltha_protos_common_proto_rawDesc)),
+			NumEnums:      5,
+			NumMessages:   9,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_common_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_common_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_common_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_common_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_common_proto = out.File
+	file_voltha_protos_common_proto_goTypes = nil
+	file_voltha_protos_common_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/ext/config/ext_config.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/ext/config/ext_config.pb.go
index 2db2ed1..06b5dd3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/ext/config/ext_config.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/ext/config/ext_config.pb.go
@@ -1,108 +1,187 @@
+// Copyright 2020-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at:
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/ext_config.proto
 
 package config
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type OnuItuPonAlarm_AlarmID int32
 
 const (
-	OnuItuPonAlarm_RDI_ERRORS OnuItuPonAlarm_AlarmID = 0
+	OnuItuPonAlarm_RDI_ERRORS OnuItuPonAlarm_AlarmID = 0 // RDI errors
 )
 
-var OnuItuPonAlarm_AlarmID_name = map[int32]string{
-	0: "RDI_ERRORS",
-}
+// Enum value maps for OnuItuPonAlarm_AlarmID.
+var (
+	OnuItuPonAlarm_AlarmID_name = map[int32]string{
+		0: "RDI_ERRORS",
+	}
+	OnuItuPonAlarm_AlarmID_value = map[string]int32{
+		"RDI_ERRORS": 0,
+	}
+)
 
-var OnuItuPonAlarm_AlarmID_value = map[string]int32{
-	"RDI_ERRORS": 0,
+func (x OnuItuPonAlarm_AlarmID) Enum() *OnuItuPonAlarm_AlarmID {
+	p := new(OnuItuPonAlarm_AlarmID)
+	*p = x
+	return p
 }
 
 func (x OnuItuPonAlarm_AlarmID) String() string {
-	return proto.EnumName(OnuItuPonAlarm_AlarmID_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OnuItuPonAlarm_AlarmID) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_ext_config_proto_enumTypes[0].Descriptor()
+}
+
+func (OnuItuPonAlarm_AlarmID) Type() protoreflect.EnumType {
+	return &file_voltha_protos_ext_config_proto_enumTypes[0]
+}
+
+func (x OnuItuPonAlarm_AlarmID) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_AlarmID.Descriptor instead.
 func (OnuItuPonAlarm_AlarmID) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 0}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []int{1, 0}
 }
 
 type OnuItuPonAlarm_AlarmReportingCondition int32
 
 const (
-	OnuItuPonAlarm_RATE_THRESHOLD  OnuItuPonAlarm_AlarmReportingCondition = 0
-	OnuItuPonAlarm_RATE_RANGE      OnuItuPonAlarm_AlarmReportingCondition = 1
-	OnuItuPonAlarm_VALUE_THRESHOLD OnuItuPonAlarm_AlarmReportingCondition = 2
+	OnuItuPonAlarm_RATE_THRESHOLD  OnuItuPonAlarm_AlarmReportingCondition = 0 // The alarm is triggered if the stats delta value between samples crosses the configured threshold boundary
+	OnuItuPonAlarm_RATE_RANGE      OnuItuPonAlarm_AlarmReportingCondition = 1 // The alarm is triggered if the stats delta value between samples deviates from the configured range
+	OnuItuPonAlarm_VALUE_THRESHOLD OnuItuPonAlarm_AlarmReportingCondition = 2 // The alarm is raised if the stats sample value becomes greater than this level.  The alarm is cleared when the host read the stats
 )
 
-var OnuItuPonAlarm_AlarmReportingCondition_name = map[int32]string{
-	0: "RATE_THRESHOLD",
-	1: "RATE_RANGE",
-	2: "VALUE_THRESHOLD",
-}
+// Enum value maps for OnuItuPonAlarm_AlarmReportingCondition.
+var (
+	OnuItuPonAlarm_AlarmReportingCondition_name = map[int32]string{
+		0: "RATE_THRESHOLD",
+		1: "RATE_RANGE",
+		2: "VALUE_THRESHOLD",
+	}
+	OnuItuPonAlarm_AlarmReportingCondition_value = map[string]int32{
+		"RATE_THRESHOLD":  0,
+		"RATE_RANGE":      1,
+		"VALUE_THRESHOLD": 2,
+	}
+)
 
-var OnuItuPonAlarm_AlarmReportingCondition_value = map[string]int32{
-	"RATE_THRESHOLD":  0,
-	"RATE_RANGE":      1,
-	"VALUE_THRESHOLD": 2,
+func (x OnuItuPonAlarm_AlarmReportingCondition) Enum() *OnuItuPonAlarm_AlarmReportingCondition {
+	p := new(OnuItuPonAlarm_AlarmReportingCondition)
+	*p = x
+	return p
 }
 
 func (x OnuItuPonAlarm_AlarmReportingCondition) String() string {
-	return proto.EnumName(OnuItuPonAlarm_AlarmReportingCondition_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OnuItuPonAlarm_AlarmReportingCondition) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_ext_config_proto_enumTypes[1].Descriptor()
+}
+
+func (OnuItuPonAlarm_AlarmReportingCondition) Type() protoreflect.EnumType {
+	return &file_voltha_protos_ext_config_proto_enumTypes[1]
+}
+
+func (x OnuItuPonAlarm_AlarmReportingCondition) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_AlarmReportingCondition.Descriptor instead.
 func (OnuItuPonAlarm_AlarmReportingCondition) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 1}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []int{1, 1}
 }
 
 type AlarmConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to Config:
+	//
 	//	*AlarmConfig_OnuItuPonAlarmConfig
-	Config               isAlarmConfig_Config `protobuf_oneof:"config"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Config        isAlarmConfig_Config `protobuf_oneof:"config"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmConfig) Reset()         { *m = AlarmConfig{} }
-func (m *AlarmConfig) String() string { return proto.CompactTextString(m) }
-func (*AlarmConfig) ProtoMessage()    {}
+func (x *AlarmConfig) Reset() {
+	*x = AlarmConfig{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmConfig) ProtoMessage() {}
+
+func (x *AlarmConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmConfig.ProtoReflect.Descriptor instead.
 func (*AlarmConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{0}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *AlarmConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmConfig.Unmarshal(m, b)
-}
-func (m *AlarmConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmConfig.Marshal(b, m, deterministic)
-}
-func (m *AlarmConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmConfig.Merge(m, src)
-}
-func (m *AlarmConfig) XXX_Size() int {
-	return xxx_messageInfo_AlarmConfig.Size(m)
-}
-func (m *AlarmConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmConfig.DiscardUnknown(m)
+func (x *AlarmConfig) GetConfig() isAlarmConfig_Config {
+	if x != nil {
+		return x.Config
+	}
+	return nil
 }
 
-var xxx_messageInfo_AlarmConfig proto.InternalMessageInfo
+func (x *AlarmConfig) GetOnuItuPonAlarmConfig() *OnuItuPonAlarm {
+	if x != nil {
+		if x, ok := x.Config.(*AlarmConfig_OnuItuPonAlarmConfig); ok {
+			return x.OnuItuPonAlarmConfig
+		}
+	}
+	return nil
+}
 
 type isAlarmConfig_Config interface {
 	isAlarmConfig_Config()
@@ -114,95 +193,114 @@
 
 func (*AlarmConfig_OnuItuPonAlarmConfig) isAlarmConfig_Config() {}
 
-func (m *AlarmConfig) GetConfig() isAlarmConfig_Config {
-	if m != nil {
-		return m.Config
-	}
-	return nil
-}
-
-func (m *AlarmConfig) GetOnuItuPonAlarmConfig() *OnuItuPonAlarm {
-	if x, ok := m.GetConfig().(*AlarmConfig_OnuItuPonAlarmConfig); ok {
-		return x.OnuItuPonAlarmConfig
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*AlarmConfig) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*AlarmConfig_OnuItuPonAlarmConfig)(nil),
-	}
-}
-
 type OnuItuPonAlarm struct {
+	state                   protoimpl.MessageState                 `protogen:"open.v1"`
 	PonNi                   uint32                                 `protobuf:"fixed32,1,opt,name=pon_ni,json=ponNi,proto3" json:"pon_ni,omitempty"`
 	OnuId                   uint32                                 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
 	AlarmId                 OnuItuPonAlarm_AlarmID                 `protobuf:"varint,3,opt,name=alarm_id,json=alarmId,proto3,enum=config.OnuItuPonAlarm_AlarmID" json:"alarm_id,omitempty"`
 	AlarmReportingCondition OnuItuPonAlarm_AlarmReportingCondition `protobuf:"varint,4,opt,name=alarm_reporting_condition,json=alarmReportingCondition,proto3,enum=config.OnuItuPonAlarm_AlarmReportingCondition" json:"alarm_reporting_condition,omitempty"`
 	// Types that are valid to be assigned to Config:
+	//
 	//	*OnuItuPonAlarm_RateThresholdConfig_
 	//	*OnuItuPonAlarm_RateRangeConfig_
 	//	*OnuItuPonAlarm_ValueThresholdConfig_
-	Config               isOnuItuPonAlarm_Config `protobuf_oneof:"config"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	Config        isOnuItuPonAlarm_Config `protobuf_oneof:"config"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm) Reset()         { *m = OnuItuPonAlarm{} }
-func (m *OnuItuPonAlarm) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm) ProtoMessage()    {}
+func (x *OnuItuPonAlarm) Reset() {
+	*x = OnuItuPonAlarm{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *OnuItuPonAlarm) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuItuPonAlarm.Unmarshal(m, b)
-}
-func (m *OnuItuPonAlarm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuItuPonAlarm.Marshal(b, m, deterministic)
-}
-func (m *OnuItuPonAlarm) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuItuPonAlarm.Merge(m, src)
-}
-func (m *OnuItuPonAlarm) XXX_Size() int {
-	return xxx_messageInfo_OnuItuPonAlarm.Size(m)
-}
-func (m *OnuItuPonAlarm) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuItuPonAlarm.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuItuPonAlarm proto.InternalMessageInfo
-
-func (m *OnuItuPonAlarm) GetPonNi() uint32 {
-	if m != nil {
-		return m.PonNi
+func (x *OnuItuPonAlarm) GetPonNi() uint32 {
+	if x != nil {
+		return x.PonNi
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *OnuItuPonAlarm) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm) GetAlarmId() OnuItuPonAlarm_AlarmID {
-	if m != nil {
-		return m.AlarmId
+func (x *OnuItuPonAlarm) GetAlarmId() OnuItuPonAlarm_AlarmID {
+	if x != nil {
+		return x.AlarmId
 	}
 	return OnuItuPonAlarm_RDI_ERRORS
 }
 
-func (m *OnuItuPonAlarm) GetAlarmReportingCondition() OnuItuPonAlarm_AlarmReportingCondition {
-	if m != nil {
-		return m.AlarmReportingCondition
+func (x *OnuItuPonAlarm) GetAlarmReportingCondition() OnuItuPonAlarm_AlarmReportingCondition {
+	if x != nil {
+		return x.AlarmReportingCondition
 	}
 	return OnuItuPonAlarm_RATE_THRESHOLD
 }
 
+func (x *OnuItuPonAlarm) GetConfig() isOnuItuPonAlarm_Config {
+	if x != nil {
+		return x.Config
+	}
+	return nil
+}
+
+func (x *OnuItuPonAlarm) GetRateThresholdConfig() *OnuItuPonAlarm_RateThresholdConfig {
+	if x != nil {
+		if x, ok := x.Config.(*OnuItuPonAlarm_RateThresholdConfig_); ok {
+			return x.RateThresholdConfig
+		}
+	}
+	return nil
+}
+
+func (x *OnuItuPonAlarm) GetRateRangeConfig() *OnuItuPonAlarm_RateRangeConfig {
+	if x != nil {
+		if x, ok := x.Config.(*OnuItuPonAlarm_RateRangeConfig_); ok {
+			return x.RateRangeConfig
+		}
+	}
+	return nil
+}
+
+func (x *OnuItuPonAlarm) GetValueThresholdConfig() *OnuItuPonAlarm_ValueThresholdConfig {
+	if x != nil {
+		if x, ok := x.Config.(*OnuItuPonAlarm_ValueThresholdConfig_); ok {
+			return x.ValueThresholdConfig
+		}
+	}
+	return nil
+}
+
 type isOnuItuPonAlarm_Config interface {
 	isOnuItuPonAlarm_Config()
 }
@@ -225,299 +323,341 @@
 
 func (*OnuItuPonAlarm_ValueThresholdConfig_) isOnuItuPonAlarm_Config() {}
 
-func (m *OnuItuPonAlarm) GetConfig() isOnuItuPonAlarm_Config {
-	if m != nil {
-		return m.Config
-	}
-	return nil
-}
-
-func (m *OnuItuPonAlarm) GetRateThresholdConfig() *OnuItuPonAlarm_RateThresholdConfig {
-	if x, ok := m.GetConfig().(*OnuItuPonAlarm_RateThresholdConfig_); ok {
-		return x.RateThresholdConfig
-	}
-	return nil
-}
-
-func (m *OnuItuPonAlarm) GetRateRangeConfig() *OnuItuPonAlarm_RateRangeConfig {
-	if x, ok := m.GetConfig().(*OnuItuPonAlarm_RateRangeConfig_); ok {
-		return x.RateRangeConfig
-	}
-	return nil
-}
-
-func (m *OnuItuPonAlarm) GetValueThresholdConfig() *OnuItuPonAlarm_ValueThresholdConfig {
-	if x, ok := m.GetConfig().(*OnuItuPonAlarm_ValueThresholdConfig_); ok {
-		return x.ValueThresholdConfig
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OnuItuPonAlarm) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*OnuItuPonAlarm_RateThresholdConfig_)(nil),
-		(*OnuItuPonAlarm_RateRangeConfig_)(nil),
-		(*OnuItuPonAlarm_ValueThresholdConfig_)(nil),
-	}
-}
-
 type OnuItuPonAlarm_SoakTime struct {
-	ActiveSoakTime       uint32   `protobuf:"fixed32,1,opt,name=active_soak_time,json=activeSoakTime,proto3" json:"active_soak_time,omitempty"`
-	ClearSoakTime        uint32   `protobuf:"fixed32,2,opt,name=clear_soak_time,json=clearSoakTime,proto3" json:"clear_soak_time,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	ActiveSoakTime uint32                 `protobuf:"fixed32,1,opt,name=active_soak_time,json=activeSoakTime,proto3" json:"active_soak_time,omitempty"`
+	ClearSoakTime  uint32                 `protobuf:"fixed32,2,opt,name=clear_soak_time,json=clearSoakTime,proto3" json:"clear_soak_time,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm_SoakTime) Reset()         { *m = OnuItuPonAlarm_SoakTime{} }
-func (m *OnuItuPonAlarm_SoakTime) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm_SoakTime) ProtoMessage()    {}
+func (x *OnuItuPonAlarm_SoakTime) Reset() {
+	*x = OnuItuPonAlarm_SoakTime{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm_SoakTime) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm_SoakTime) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm_SoakTime) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_SoakTime.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm_SoakTime) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 0}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []int{1, 0}
 }
 
-func (m *OnuItuPonAlarm_SoakTime) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuItuPonAlarm_SoakTime.Unmarshal(m, b)
-}
-func (m *OnuItuPonAlarm_SoakTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuItuPonAlarm_SoakTime.Marshal(b, m, deterministic)
-}
-func (m *OnuItuPonAlarm_SoakTime) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuItuPonAlarm_SoakTime.Merge(m, src)
-}
-func (m *OnuItuPonAlarm_SoakTime) XXX_Size() int {
-	return xxx_messageInfo_OnuItuPonAlarm_SoakTime.Size(m)
-}
-func (m *OnuItuPonAlarm_SoakTime) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuItuPonAlarm_SoakTime.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuItuPonAlarm_SoakTime proto.InternalMessageInfo
-
-func (m *OnuItuPonAlarm_SoakTime) GetActiveSoakTime() uint32 {
-	if m != nil {
-		return m.ActiveSoakTime
+func (x *OnuItuPonAlarm_SoakTime) GetActiveSoakTime() uint32 {
+	if x != nil {
+		return x.ActiveSoakTime
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_SoakTime) GetClearSoakTime() uint32 {
-	if m != nil {
-		return m.ClearSoakTime
+func (x *OnuItuPonAlarm_SoakTime) GetClearSoakTime() uint32 {
+	if x != nil {
+		return x.ClearSoakTime
 	}
 	return 0
 }
 
 type OnuItuPonAlarm_RateThresholdConfig struct {
+	state                protoimpl.MessageState   `protogen:"open.v1"`
 	RateThresholdRising  uint64                   `protobuf:"fixed64,1,opt,name=rate_threshold_rising,json=rateThresholdRising,proto3" json:"rate_threshold_rising,omitempty"`
 	RateThresholdFalling uint64                   `protobuf:"fixed64,2,opt,name=rate_threshold_falling,json=rateThresholdFalling,proto3" json:"rate_threshold_falling,omitempty"`
 	SoakTime             *OnuItuPonAlarm_SoakTime `protobuf:"bytes,3,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm_RateThresholdConfig) Reset()         { *m = OnuItuPonAlarm_RateThresholdConfig{} }
-func (m *OnuItuPonAlarm_RateThresholdConfig) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm_RateThresholdConfig) ProtoMessage()    {}
+func (x *OnuItuPonAlarm_RateThresholdConfig) Reset() {
+	*x = OnuItuPonAlarm_RateThresholdConfig{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm_RateThresholdConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm_RateThresholdConfig) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm_RateThresholdConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_RateThresholdConfig.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm_RateThresholdConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 1}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []int{1, 1}
 }
 
-func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Unmarshal(m, b)
-}
-func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Marshal(b, m, deterministic)
-}
-func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Merge(m, src)
-}
-func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Size() int {
-	return xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Size(m)
-}
-func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig proto.InternalMessageInfo
-
-func (m *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdRising() uint64 {
-	if m != nil {
-		return m.RateThresholdRising
+func (x *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdRising() uint64 {
+	if x != nil {
+		return x.RateThresholdRising
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdFalling() uint64 {
-	if m != nil {
-		return m.RateThresholdFalling
+func (x *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdFalling() uint64 {
+	if x != nil {
+		return x.RateThresholdFalling
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_RateThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
-	if m != nil {
-		return m.SoakTime
+func (x *OnuItuPonAlarm_RateThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if x != nil {
+		return x.SoakTime
 	}
 	return nil
 }
 
 type OnuItuPonAlarm_RateRangeConfig struct {
-	RateRangeLower       uint64                   `protobuf:"fixed64,1,opt,name=rate_range_lower,json=rateRangeLower,proto3" json:"rate_range_lower,omitempty"`
-	RateRangeUpper       uint64                   `protobuf:"fixed64,2,opt,name=rate_range_upper,json=rateRangeUpper,proto3" json:"rate_range_upper,omitempty"`
-	SoakTime             *OnuItuPonAlarm_SoakTime `protobuf:"bytes,3,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	state          protoimpl.MessageState   `protogen:"open.v1"`
+	RateRangeLower uint64                   `protobuf:"fixed64,1,opt,name=rate_range_lower,json=rateRangeLower,proto3" json:"rate_range_lower,omitempty"`
+	RateRangeUpper uint64                   `protobuf:"fixed64,2,opt,name=rate_range_upper,json=rateRangeUpper,proto3" json:"rate_range_upper,omitempty"`
+	SoakTime       *OnuItuPonAlarm_SoakTime `protobuf:"bytes,3,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm_RateRangeConfig) Reset()         { *m = OnuItuPonAlarm_RateRangeConfig{} }
-func (m *OnuItuPonAlarm_RateRangeConfig) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm_RateRangeConfig) ProtoMessage()    {}
+func (x *OnuItuPonAlarm_RateRangeConfig) Reset() {
+	*x = OnuItuPonAlarm_RateRangeConfig{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm_RateRangeConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm_RateRangeConfig) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm_RateRangeConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_RateRangeConfig.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm_RateRangeConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 2}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []int{1, 2}
 }
 
-func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Unmarshal(m, b)
-}
-func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Marshal(b, m, deterministic)
-}
-func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Merge(m, src)
-}
-func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Size() int {
-	return xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Size(m)
-}
-func (m *OnuItuPonAlarm_RateRangeConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig proto.InternalMessageInfo
-
-func (m *OnuItuPonAlarm_RateRangeConfig) GetRateRangeLower() uint64 {
-	if m != nil {
-		return m.RateRangeLower
+func (x *OnuItuPonAlarm_RateRangeConfig) GetRateRangeLower() uint64 {
+	if x != nil {
+		return x.RateRangeLower
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_RateRangeConfig) GetRateRangeUpper() uint64 {
-	if m != nil {
-		return m.RateRangeUpper
+func (x *OnuItuPonAlarm_RateRangeConfig) GetRateRangeUpper() uint64 {
+	if x != nil {
+		return x.RateRangeUpper
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_RateRangeConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
-	if m != nil {
-		return m.SoakTime
+func (x *OnuItuPonAlarm_RateRangeConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if x != nil {
+		return x.SoakTime
 	}
 	return nil
 }
 
 type OnuItuPonAlarm_ValueThresholdConfig struct {
-	ThresholdLimit       uint64                   `protobuf:"fixed64,1,opt,name=threshold_limit,json=thresholdLimit,proto3" json:"threshold_limit,omitempty"`
-	SoakTime             *OnuItuPonAlarm_SoakTime `protobuf:"bytes,2,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	state          protoimpl.MessageState   `protogen:"open.v1"`
+	ThresholdLimit uint64                   `protobuf:"fixed64,1,opt,name=threshold_limit,json=thresholdLimit,proto3" json:"threshold_limit,omitempty"`
+	SoakTime       *OnuItuPonAlarm_SoakTime `protobuf:"bytes,2,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm_ValueThresholdConfig) Reset()         { *m = OnuItuPonAlarm_ValueThresholdConfig{} }
-func (m *OnuItuPonAlarm_ValueThresholdConfig) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm_ValueThresholdConfig) ProtoMessage()    {}
+func (x *OnuItuPonAlarm_ValueThresholdConfig) Reset() {
+	*x = OnuItuPonAlarm_ValueThresholdConfig{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm_ValueThresholdConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm_ValueThresholdConfig) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm_ValueThresholdConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_ValueThresholdConfig.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm_ValueThresholdConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 3}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []int{1, 3}
 }
 
-func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Unmarshal(m, b)
-}
-func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Marshal(b, m, deterministic)
-}
-func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Merge(m, src)
-}
-func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Size() int {
-	return xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Size(m)
-}
-func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig proto.InternalMessageInfo
-
-func (m *OnuItuPonAlarm_ValueThresholdConfig) GetThresholdLimit() uint64 {
-	if m != nil {
-		return m.ThresholdLimit
+func (x *OnuItuPonAlarm_ValueThresholdConfig) GetThresholdLimit() uint64 {
+	if x != nil {
+		return x.ThresholdLimit
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_ValueThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
-	if m != nil {
-		return m.SoakTime
+func (x *OnuItuPonAlarm_ValueThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if x != nil {
+		return x.SoakTime
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("config.OnuItuPonAlarm_AlarmID", OnuItuPonAlarm_AlarmID_name, OnuItuPonAlarm_AlarmID_value)
-	proto.RegisterEnum("config.OnuItuPonAlarm_AlarmReportingCondition", OnuItuPonAlarm_AlarmReportingCondition_name, OnuItuPonAlarm_AlarmReportingCondition_value)
-	proto.RegisterType((*AlarmConfig)(nil), "config.AlarmConfig")
-	proto.RegisterType((*OnuItuPonAlarm)(nil), "config.OnuItuPonAlarm")
-	proto.RegisterType((*OnuItuPonAlarm_SoakTime)(nil), "config.OnuItuPonAlarm.SoakTime")
-	proto.RegisterType((*OnuItuPonAlarm_RateThresholdConfig)(nil), "config.OnuItuPonAlarm.RateThresholdConfig")
-	proto.RegisterType((*OnuItuPonAlarm_RateRangeConfig)(nil), "config.OnuItuPonAlarm.RateRangeConfig")
-	proto.RegisterType((*OnuItuPonAlarm_ValueThresholdConfig)(nil), "config.OnuItuPonAlarm.ValueThresholdConfig")
+var File_voltha_protos_ext_config_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_ext_config_proto_rawDesc = "" +
+	"\n" +
+	"\x1evoltha_protos/ext_config.proto\x12\x06config\"i\n" +
+	"\vAlarmConfig\x12P\n" +
+	"\x18onu_itu_pon_alarm_config\x18\x01 \x01(\v2\x16.config.OnuItuPonAlarmH\x00R\x14onuItuPonAlarmConfigB\b\n" +
+	"\x06config\"\xbe\t\n" +
+	"\x0eOnuItuPonAlarm\x12\x15\n" +
+	"\x06pon_ni\x18\x01 \x01(\aR\x05ponNi\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x129\n" +
+	"\balarm_id\x18\x03 \x01(\x0e2\x1e.config.OnuItuPonAlarm.AlarmIDR\aalarmId\x12j\n" +
+	"\x19alarm_reporting_condition\x18\x04 \x01(\x0e2..config.OnuItuPonAlarm.AlarmReportingConditionR\x17alarmReportingCondition\x12`\n" +
+	"\x15rate_threshold_config\x18\x05 \x01(\v2*.config.OnuItuPonAlarm.RateThresholdConfigH\x00R\x13rateThresholdConfig\x12T\n" +
+	"\x11rate_range_config\x18\x06 \x01(\v2&.config.OnuItuPonAlarm.RateRangeConfigH\x00R\x0frateRangeConfig\x12c\n" +
+	"\x16value_threshold_config\x18\a \x01(\v2+.config.OnuItuPonAlarm.ValueThresholdConfigH\x00R\x14valueThresholdConfig\x1a\\\n" +
+	"\bSoakTime\x12(\n" +
+	"\x10active_soak_time\x18\x01 \x01(\aR\x0eactiveSoakTime\x12&\n" +
+	"\x0fclear_soak_time\x18\x02 \x01(\aR\rclearSoakTime\x1a\xbd\x01\n" +
+	"\x13RateThresholdConfig\x122\n" +
+	"\x15rate_threshold_rising\x18\x01 \x01(\x06R\x13rateThresholdRising\x124\n" +
+	"\x16rate_threshold_falling\x18\x02 \x01(\x06R\x14rateThresholdFalling\x12<\n" +
+	"\tsoak_time\x18\x03 \x01(\v2\x1f.config.OnuItuPonAlarm.SoakTimeR\bsoakTime\x1a\xa3\x01\n" +
+	"\x0fRateRangeConfig\x12(\n" +
+	"\x10rate_range_lower\x18\x01 \x01(\x06R\x0erateRangeLower\x12(\n" +
+	"\x10rate_range_upper\x18\x02 \x01(\x06R\x0erateRangeUpper\x12<\n" +
+	"\tsoak_time\x18\x03 \x01(\v2\x1f.config.OnuItuPonAlarm.SoakTimeR\bsoakTime\x1a}\n" +
+	"\x14ValueThresholdConfig\x12'\n" +
+	"\x0fthreshold_limit\x18\x01 \x01(\x06R\x0ethresholdLimit\x12<\n" +
+	"\tsoak_time\x18\x02 \x01(\v2\x1f.config.OnuItuPonAlarm.SoakTimeR\bsoakTime\"\x19\n" +
+	"\aAlarmID\x12\x0e\n" +
+	"\n" +
+	"RDI_ERRORS\x10\x00\"R\n" +
+	"\x17AlarmReportingCondition\x12\x12\n" +
+	"\x0eRATE_THRESHOLD\x10\x00\x12\x0e\n" +
+	"\n" +
+	"RATE_RANGE\x10\x01\x12\x13\n" +
+	"\x0fVALUE_THRESHOLD\x10\x02B\b\n" +
+	"\x06configBI\n" +
+	"\x13org.opencord.volthaZ2github.com/opencord/voltha-protos/v5/go/ext/configb\x06proto3"
+
+var (
+	file_voltha_protos_ext_config_proto_rawDescOnce sync.Once
+	file_voltha_protos_ext_config_proto_rawDescData []byte
+)
+
+func file_voltha_protos_ext_config_proto_rawDescGZIP() []byte {
+	file_voltha_protos_ext_config_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_ext_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_ext_config_proto_rawDesc), len(file_voltha_protos_ext_config_proto_rawDesc)))
+	})
+	return file_voltha_protos_ext_config_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/ext_config.proto", fileDescriptor_fb43b44b7fa3aba9) }
+var file_voltha_protos_ext_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_voltha_protos_ext_config_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_voltha_protos_ext_config_proto_goTypes = []any{
+	(OnuItuPonAlarm_AlarmID)(0),                 // 0: config.OnuItuPonAlarm.AlarmID
+	(OnuItuPonAlarm_AlarmReportingCondition)(0), // 1: config.OnuItuPonAlarm.AlarmReportingCondition
+	(*AlarmConfig)(nil),                         // 2: config.AlarmConfig
+	(*OnuItuPonAlarm)(nil),                      // 3: config.OnuItuPonAlarm
+	(*OnuItuPonAlarm_SoakTime)(nil),             // 4: config.OnuItuPonAlarm.SoakTime
+	(*OnuItuPonAlarm_RateThresholdConfig)(nil),  // 5: config.OnuItuPonAlarm.RateThresholdConfig
+	(*OnuItuPonAlarm_RateRangeConfig)(nil),      // 6: config.OnuItuPonAlarm.RateRangeConfig
+	(*OnuItuPonAlarm_ValueThresholdConfig)(nil), // 7: config.OnuItuPonAlarm.ValueThresholdConfig
+}
+var file_voltha_protos_ext_config_proto_depIdxs = []int32{
+	3, // 0: config.AlarmConfig.onu_itu_pon_alarm_config:type_name -> config.OnuItuPonAlarm
+	0, // 1: config.OnuItuPonAlarm.alarm_id:type_name -> config.OnuItuPonAlarm.AlarmID
+	1, // 2: config.OnuItuPonAlarm.alarm_reporting_condition:type_name -> config.OnuItuPonAlarm.AlarmReportingCondition
+	5, // 3: config.OnuItuPonAlarm.rate_threshold_config:type_name -> config.OnuItuPonAlarm.RateThresholdConfig
+	6, // 4: config.OnuItuPonAlarm.rate_range_config:type_name -> config.OnuItuPonAlarm.RateRangeConfig
+	7, // 5: config.OnuItuPonAlarm.value_threshold_config:type_name -> config.OnuItuPonAlarm.ValueThresholdConfig
+	4, // 6: config.OnuItuPonAlarm.RateThresholdConfig.soak_time:type_name -> config.OnuItuPonAlarm.SoakTime
+	4, // 7: config.OnuItuPonAlarm.RateRangeConfig.soak_time:type_name -> config.OnuItuPonAlarm.SoakTime
+	4, // 8: config.OnuItuPonAlarm.ValueThresholdConfig.soak_time:type_name -> config.OnuItuPonAlarm.SoakTime
+	9, // [9:9] is the sub-list for method output_type
+	9, // [9:9] is the sub-list for method input_type
+	9, // [9:9] is the sub-list for extension type_name
+	9, // [9:9] is the sub-list for extension extendee
+	0, // [0:9] is the sub-list for field type_name
+}
 
-var fileDescriptor_fb43b44b7fa3aba9 = []byte{
-	// 610 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xd1, 0x6e, 0x12, 0x41,
-	0x14, 0x05, 0x6a, 0x81, 0xde, 0x46, 0xc0, 0x81, 0xb6, 0xb4, 0x0f, 0xb5, 0xe9, 0x43, 0x6d, 0x34,
-	0x2e, 0x09, 0xea, 0x83, 0x89, 0x2f, 0xb4, 0x45, 0x21, 0x21, 0x6d, 0x33, 0xa5, 0x7d, 0x30, 0x26,
-	0xeb, 0x94, 0x9d, 0x2e, 0x63, 0x97, 0x99, 0xcd, 0x30, 0x8b, 0xbe, 0xf8, 0x35, 0x7e, 0x87, 0x7e,
-	0x9b, 0x99, 0x99, 0x5d, 0x28, 0xb0, 0x34, 0x31, 0xbe, 0x90, 0xec, 0xb9, 0xf7, 0x9c, 0x7b, 0x38,
-	0x77, 0x66, 0x60, 0x7f, 0x22, 0x02, 0x35, 0x24, 0x6e, 0x28, 0x85, 0x12, 0xe3, 0x06, 0xfd, 0xa1,
-	0xdc, 0x81, 0xe0, 0x77, 0xcc, 0x77, 0x0c, 0x82, 0xf2, 0xf6, 0xeb, 0x90, 0xc1, 0x66, 0x2b, 0x20,
-	0x72, 0x74, 0x6a, 0x3e, 0xd1, 0x25, 0xd4, 0x05, 0x8f, 0x5c, 0xa6, 0x22, 0x37, 0x14, 0xdc, 0x25,
-	0xba, 0x14, 0x13, 0xeb, 0xd9, 0x83, 0xec, 0xf1, 0x66, 0x73, 0xdb, 0x89, 0x75, 0x2e, 0x78, 0xd4,
-	0x55, 0xd1, 0xa5, 0xe0, 0x86, 0xdf, 0xc9, 0xe0, 0x9a, 0x98, 0x43, 0xac, 0xe2, 0x49, 0x11, 0x92,
-	0x51, 0x7f, 0x36, 0xa0, 0x34, 0x4f, 0x42, 0x5b, 0x90, 0xd7, 0x63, 0x38, 0x33, 0xe2, 0x05, 0xbc,
-	0x1e, 0x0a, 0x7e, 0xce, 0x34, 0x6c, 0x5c, 0x78, 0xf5, 0x9c, 0x85, 0xb5, 0xb2, 0x87, 0xde, 0x43,
-	0xd1, 0x1a, 0x62, 0x5e, 0x7d, 0xed, 0x20, 0x7b, 0x5c, 0x6a, 0xee, 0xa7, 0x9b, 0x71, 0xcc, 0x6f,
-	0xf7, 0x0c, 0x17, 0x4c, 0x7f, 0xd7, 0x43, 0xdf, 0x60, 0xd7, 0x52, 0x25, 0x0d, 0x85, 0x54, 0x8c,
-	0xfb, 0xfa, 0x5f, 0x79, 0x4c, 0x31, 0xc1, 0xeb, 0x4f, 0x8c, 0x96, 0xf3, 0x98, 0x16, 0x4e, 0x68,
-	0xa7, 0x09, 0x0b, 0xef, 0x90, 0xf4, 0x02, 0xfa, 0x0a, 0x5b, 0x92, 0x28, 0xea, 0xaa, 0xa1, 0xa4,
-	0xe3, 0xa1, 0x08, 0xbc, 0x24, 0xc0, 0x75, 0x13, 0xe0, 0xcb, 0x15, 0x73, 0x30, 0x51, 0xb4, 0x9f,
-	0x50, 0x6c, 0x78, 0x9d, 0x0c, 0xae, 0xca, 0x65, 0x18, 0xf5, 0xe1, 0x99, 0x99, 0x20, 0x09, 0xf7,
-	0x69, 0xa2, 0x9e, 0x37, 0xea, 0x47, 0x8f, 0xa8, 0x63, 0xdd, 0x3e, 0x55, 0x2e, 0xcb, 0x79, 0x08,
-	0x0d, 0x60, 0x7b, 0x42, 0x82, 0x28, 0xc5, 0x78, 0xc1, 0x48, 0xbf, 0x5a, 0x21, 0x7d, 0xa3, 0x49,
-	0xcb, 0xce, 0x6b, 0x93, 0x14, 0x7c, 0xef, 0x0b, 0x14, 0xaf, 0x04, 0xb9, 0xef, 0xb3, 0x11, 0x45,
-	0xc7, 0x50, 0x21, 0x03, 0xc5, 0x26, 0xd4, 0x1d, 0x0b, 0x72, 0xef, 0x2a, 0x36, 0xa2, 0xf1, 0x39,
-	0x28, 0x59, 0x7c, 0xda, 0x79, 0x04, 0xe5, 0x41, 0x40, 0x89, 0x7c, 0xd0, 0x68, 0x4f, 0xc6, 0x53,
-	0x03, 0x27, 0x7d, 0x7b, 0xbf, 0xb3, 0x50, 0x4d, 0xc9, 0x11, 0x35, 0x97, 0x56, 0x22, 0xd9, 0x98,
-	0x71, 0x7b, 0xa6, 0xf3, 0x0b, 0x21, 0x63, 0x53, 0x42, 0x6f, 0x61, 0x7b, 0x81, 0x73, 0x47, 0x82,
-	0x40, 0x93, 0x72, 0x86, 0x54, 0x9b, 0x23, 0x7d, 0xb4, 0x35, 0xf4, 0x01, 0x36, 0x66, 0x1e, 0xd7,
-	0x4c, 0x6e, 0xcf, 0x57, 0xe4, 0x96, 0xb8, 0xc6, 0xc5, 0x71, 0xe2, 0xff, 0x57, 0x16, 0xca, 0x0b,
-	0x9b, 0xd2, 0x29, 0x3d, 0x58, 0x76, 0x20, 0xbe, 0x53, 0x19, 0xdb, 0x2e, 0x4d, 0x37, 0xd8, 0xd3,
-	0xe8, 0x42, 0x67, 0x14, 0x86, 0x54, 0xc6, 0x5e, 0x67, 0x9d, 0xd7, 0x1a, 0xfd, 0x4f, 0x97, 0x3f,
-	0xa1, 0x96, 0xb6, 0x73, 0xf4, 0x02, 0xca, 0xb3, 0xb0, 0x02, 0x36, 0x62, 0x2a, 0x31, 0x3a, 0x85,
-	0x7b, 0x1a, 0x9d, 0x1f, 0x9f, 0xfb, 0xc7, 0xf1, 0x87, 0xbb, 0x50, 0x88, 0xef, 0x37, 0x2a, 0x01,
-	0xe0, 0xb3, 0xae, 0xdb, 0xc6, 0xf8, 0x02, 0x5f, 0x55, 0x32, 0x87, 0x18, 0x76, 0x56, 0x5c, 0x57,
-	0x84, 0xa0, 0x84, 0x5b, 0xfd, 0xb6, 0xdb, 0xef, 0xe0, 0xf6, 0x55, 0xe7, 0xa2, 0x77, 0x56, 0xc9,
-	0x18, 0xba, 0xc6, 0x70, 0xeb, 0xfc, 0x53, 0xbb, 0x92, 0x45, 0x55, 0x28, 0xdf, 0xb4, 0x7a, 0xd7,
-	0x0f, 0x9b, 0x72, 0xb3, 0x07, 0xec, 0xa4, 0x0b, 0x55, 0x21, 0x7d, 0x47, 0x84, 0x94, 0x0f, 0x84,
-	0xf4, 0x1c, 0xfb, 0xc4, 0x7e, 0x6e, 0xfa, 0x4c, 0x0d, 0xa3, 0x5b, 0x67, 0x20, 0x46, 0x8d, 0xa4,
-	0xd6, 0xb0, 0xb5, 0xd7, 0xf1, 0xf3, 0x3b, 0x79, 0xd7, 0xf0, 0x85, 0x7e, 0x84, 0x1b, 0x56, 0xea,
-	0x36, 0x6f, 0x0a, 0x6f, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0x36, 0x9d, 0x64, 0x93, 0xa7, 0x05,
-	0x00, 0x00,
+func init() { file_voltha_protos_ext_config_proto_init() }
+func file_voltha_protos_ext_config_proto_init() {
+	if File_voltha_protos_ext_config_proto != nil {
+		return
+	}
+	file_voltha_protos_ext_config_proto_msgTypes[0].OneofWrappers = []any{
+		(*AlarmConfig_OnuItuPonAlarmConfig)(nil),
+	}
+	file_voltha_protos_ext_config_proto_msgTypes[1].OneofWrappers = []any{
+		(*OnuItuPonAlarm_RateThresholdConfig_)(nil),
+		(*OnuItuPonAlarm_RateRangeConfig_)(nil),
+		(*OnuItuPonAlarm_ValueThresholdConfig_)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_ext_config_proto_rawDesc), len(file_voltha_protos_ext_config_proto_rawDesc)),
+			NumEnums:      2,
+			NumMessages:   6,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_ext_config_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_ext_config_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_ext_config_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_ext_config_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_ext_config_proto = out.File
+	file_voltha_protos_ext_config_proto_goTypes = nil
+	file_voltha_protos_ext_config_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
index c10d471..883a391 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
@@ -1,31 +1,42 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at:
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/extensions.proto
 
 package extension
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	config "github.com/opencord/voltha-protos/v5/go/ext/config"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type ValueType_Type int32
 
@@ -34,22 +45,43 @@
 	ValueType_DISTANCE ValueType_Type = 1
 )
 
-var ValueType_Type_name = map[int32]string{
-	0: "EMPTY",
-	1: "DISTANCE",
-}
+// Enum value maps for ValueType_Type.
+var (
+	ValueType_Type_name = map[int32]string{
+		0: "EMPTY",
+		1: "DISTANCE",
+	}
+	ValueType_Type_value = map[string]int32{
+		"EMPTY":    0,
+		"DISTANCE": 1,
+	}
+)
 
-var ValueType_Type_value = map[string]int32{
-	"EMPTY":    0,
-	"DISTANCE": 1,
+func (x ValueType_Type) Enum() *ValueType_Type {
+	p := new(ValueType_Type)
+	*p = x
+	return p
 }
 
 func (x ValueType_Type) String() string {
-	return proto.EnumName(ValueType_Type_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ValueType_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[0].Descriptor()
+}
+
+func (ValueType_Type) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[0]
+}
+
+func (x ValueType_Type) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ValueType_Type.Descriptor instead.
 func (ValueType_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{1, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{1, 0}
 }
 
 type GetOnuUniInfoResponse_ConfigurationInd int32
@@ -65,34 +97,55 @@
 	GetOnuUniInfoResponse_GIGABIT_ETHERNET_HDX GetOnuUniInfoResponse_ConfigurationInd = 7
 )
 
-var GetOnuUniInfoResponse_ConfigurationInd_name = map[int32]string{
-	0: "UNKOWN",
-	1: "TEN_BASE_T_FDX",
-	2: "HUNDRED_BASE_T_FDX",
-	3: "GIGABIT_ETHERNET_FDX",
-	4: "TEN_G_ETHERNET_FDX",
-	5: "TEN_BASE_T_HDX",
-	6: "HUNDRED_BASE_T_HDX",
-	7: "GIGABIT_ETHERNET_HDX",
-}
+// Enum value maps for GetOnuUniInfoResponse_ConfigurationInd.
+var (
+	GetOnuUniInfoResponse_ConfigurationInd_name = map[int32]string{
+		0: "UNKOWN",
+		1: "TEN_BASE_T_FDX",
+		2: "HUNDRED_BASE_T_FDX",
+		3: "GIGABIT_ETHERNET_FDX",
+		4: "TEN_G_ETHERNET_FDX",
+		5: "TEN_BASE_T_HDX",
+		6: "HUNDRED_BASE_T_HDX",
+		7: "GIGABIT_ETHERNET_HDX",
+	}
+	GetOnuUniInfoResponse_ConfigurationInd_value = map[string]int32{
+		"UNKOWN":               0,
+		"TEN_BASE_T_FDX":       1,
+		"HUNDRED_BASE_T_FDX":   2,
+		"GIGABIT_ETHERNET_FDX": 3,
+		"TEN_G_ETHERNET_FDX":   4,
+		"TEN_BASE_T_HDX":       5,
+		"HUNDRED_BASE_T_HDX":   6,
+		"GIGABIT_ETHERNET_HDX": 7,
+	}
+)
 
-var GetOnuUniInfoResponse_ConfigurationInd_value = map[string]int32{
-	"UNKOWN":               0,
-	"TEN_BASE_T_FDX":       1,
-	"HUNDRED_BASE_T_FDX":   2,
-	"GIGABIT_ETHERNET_FDX": 3,
-	"TEN_G_ETHERNET_FDX":   4,
-	"TEN_BASE_T_HDX":       5,
-	"HUNDRED_BASE_T_HDX":   6,
-	"GIGABIT_ETHERNET_HDX": 7,
+func (x GetOnuUniInfoResponse_ConfigurationInd) Enum() *GetOnuUniInfoResponse_ConfigurationInd {
+	p := new(GetOnuUniInfoResponse_ConfigurationInd)
+	*p = x
+	return p
 }
 
 func (x GetOnuUniInfoResponse_ConfigurationInd) String() string {
-	return proto.EnumName(GetOnuUniInfoResponse_ConfigurationInd_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOnuUniInfoResponse_ConfigurationInd) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[1].Descriptor()
+}
+
+func (GetOnuUniInfoResponse_ConfigurationInd) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[1]
+}
+
+func (x GetOnuUniInfoResponse_ConfigurationInd) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOnuUniInfoResponse_ConfigurationInd.Descriptor instead.
 func (GetOnuUniInfoResponse_ConfigurationInd) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{7, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{7, 0}
 }
 
 type GetOnuUniInfoResponse_AdministrativeState int32
@@ -103,24 +156,45 @@
 	GetOnuUniInfoResponse_UNLOCKED           GetOnuUniInfoResponse_AdministrativeState = 2
 )
 
-var GetOnuUniInfoResponse_AdministrativeState_name = map[int32]string{
-	0: "ADMSTATE_UNDEFINED",
-	1: "LOCKED",
-	2: "UNLOCKED",
-}
+// Enum value maps for GetOnuUniInfoResponse_AdministrativeState.
+var (
+	GetOnuUniInfoResponse_AdministrativeState_name = map[int32]string{
+		0: "ADMSTATE_UNDEFINED",
+		1: "LOCKED",
+		2: "UNLOCKED",
+	}
+	GetOnuUniInfoResponse_AdministrativeState_value = map[string]int32{
+		"ADMSTATE_UNDEFINED": 0,
+		"LOCKED":             1,
+		"UNLOCKED":           2,
+	}
+)
 
-var GetOnuUniInfoResponse_AdministrativeState_value = map[string]int32{
-	"ADMSTATE_UNDEFINED": 0,
-	"LOCKED":             1,
-	"UNLOCKED":           2,
+func (x GetOnuUniInfoResponse_AdministrativeState) Enum() *GetOnuUniInfoResponse_AdministrativeState {
+	p := new(GetOnuUniInfoResponse_AdministrativeState)
+	*p = x
+	return p
 }
 
 func (x GetOnuUniInfoResponse_AdministrativeState) String() string {
-	return proto.EnumName(GetOnuUniInfoResponse_AdministrativeState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOnuUniInfoResponse_AdministrativeState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[2].Descriptor()
+}
+
+func (GetOnuUniInfoResponse_AdministrativeState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[2]
+}
+
+func (x GetOnuUniInfoResponse_AdministrativeState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOnuUniInfoResponse_AdministrativeState.Descriptor instead.
 func (GetOnuUniInfoResponse_AdministrativeState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{7, 1}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{7, 1}
 }
 
 type GetOnuUniInfoResponse_OperationalState int32
@@ -131,24 +205,45 @@
 	GetOnuUniInfoResponse_DISABLED            GetOnuUniInfoResponse_OperationalState = 2
 )
 
-var GetOnuUniInfoResponse_OperationalState_name = map[int32]string{
-	0: "OPERSTATE_UNDEFINED",
-	1: "ENABLED",
-	2: "DISABLED",
-}
+// Enum value maps for GetOnuUniInfoResponse_OperationalState.
+var (
+	GetOnuUniInfoResponse_OperationalState_name = map[int32]string{
+		0: "OPERSTATE_UNDEFINED",
+		1: "ENABLED",
+		2: "DISABLED",
+	}
+	GetOnuUniInfoResponse_OperationalState_value = map[string]int32{
+		"OPERSTATE_UNDEFINED": 0,
+		"ENABLED":             1,
+		"DISABLED":            2,
+	}
+)
 
-var GetOnuUniInfoResponse_OperationalState_value = map[string]int32{
-	"OPERSTATE_UNDEFINED": 0,
-	"ENABLED":             1,
-	"DISABLED":            2,
+func (x GetOnuUniInfoResponse_OperationalState) Enum() *GetOnuUniInfoResponse_OperationalState {
+	p := new(GetOnuUniInfoResponse_OperationalState)
+	*p = x
+	return p
 }
 
 func (x GetOnuUniInfoResponse_OperationalState) String() string {
-	return proto.EnumName(GetOnuUniInfoResponse_OperationalState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOnuUniInfoResponse_OperationalState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[3].Descriptor()
+}
+
+func (GetOnuUniInfoResponse_OperationalState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[3]
+}
+
+func (x GetOnuUniInfoResponse_OperationalState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOnuUniInfoResponse_OperationalState.Descriptor instead.
 func (GetOnuUniInfoResponse_OperationalState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{7, 2}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{7, 2}
 }
 
 type GetOltPortCounters_PortType int32
@@ -159,24 +254,45 @@
 	GetOltPortCounters_Port_PON_OLT      GetOltPortCounters_PortType = 2
 )
 
-var GetOltPortCounters_PortType_name = map[int32]string{
-	0: "Port_UNKNOWN",
-	1: "Port_ETHERNET_NNI",
-	2: "Port_PON_OLT",
-}
+// Enum value maps for GetOltPortCounters_PortType.
+var (
+	GetOltPortCounters_PortType_name = map[int32]string{
+		0: "Port_UNKNOWN",
+		1: "Port_ETHERNET_NNI",
+		2: "Port_PON_OLT",
+	}
+	GetOltPortCounters_PortType_value = map[string]int32{
+		"Port_UNKNOWN":      0,
+		"Port_ETHERNET_NNI": 1,
+		"Port_PON_OLT":      2,
+	}
+)
 
-var GetOltPortCounters_PortType_value = map[string]int32{
-	"Port_UNKNOWN":      0,
-	"Port_ETHERNET_NNI": 1,
-	"Port_PON_OLT":      2,
+func (x GetOltPortCounters_PortType) Enum() *GetOltPortCounters_PortType {
+	p := new(GetOltPortCounters_PortType)
+	*p = x
+	return p
 }
 
 func (x GetOltPortCounters_PortType) String() string {
-	return proto.EnumName(GetOltPortCounters_PortType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOltPortCounters_PortType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[4].Descriptor()
+}
+
+func (GetOltPortCounters_PortType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[4]
+}
+
+func (x GetOltPortCounters_PortType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOltPortCounters_PortType.Descriptor instead.
 func (GetOltPortCounters_PortType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{8, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{8, 0}
 }
 
 type GetOnuEthernetBridgePortHistory_Direction int32
@@ -187,24 +303,45 @@
 	GetOnuEthernetBridgePortHistory_DOWNSTREAM GetOnuEthernetBridgePortHistory_Direction = 2
 )
 
-var GetOnuEthernetBridgePortHistory_Direction_name = map[int32]string{
-	0: "UNDEFINED",
-	1: "UPSTREAM",
-	2: "DOWNSTREAM",
-}
+// Enum value maps for GetOnuEthernetBridgePortHistory_Direction.
+var (
+	GetOnuEthernetBridgePortHistory_Direction_name = map[int32]string{
+		0: "UNDEFINED",
+		1: "UPSTREAM",
+		2: "DOWNSTREAM",
+	}
+	GetOnuEthernetBridgePortHistory_Direction_value = map[string]int32{
+		"UNDEFINED":  0,
+		"UPSTREAM":   1,
+		"DOWNSTREAM": 2,
+	}
+)
 
-var GetOnuEthernetBridgePortHistory_Direction_value = map[string]int32{
-	"UNDEFINED":  0,
-	"UPSTREAM":   1,
-	"DOWNSTREAM": 2,
+func (x GetOnuEthernetBridgePortHistory_Direction) Enum() *GetOnuEthernetBridgePortHistory_Direction {
+	p := new(GetOnuEthernetBridgePortHistory_Direction)
+	*p = x
+	return p
 }
 
 func (x GetOnuEthernetBridgePortHistory_Direction) String() string {
-	return proto.EnumName(GetOnuEthernetBridgePortHistory_Direction_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOnuEthernetBridgePortHistory_Direction) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[5].Descriptor()
+}
+
+func (GetOnuEthernetBridgePortHistory_Direction) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[5]
+}
+
+func (x GetOnuEthernetBridgePortHistory_Direction) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOnuEthernetBridgePortHistory_Direction.Descriptor instead.
 func (GetOnuEthernetBridgePortHistory_Direction) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{12, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{12, 0}
 }
 
 type GetOmciEthernetFrameExtendedPmResponse_Format int32
@@ -214,22 +351,43 @@
 	GetOmciEthernetFrameExtendedPmResponse_SIXTY_FOUR_BIT GetOmciEthernetFrameExtendedPmResponse_Format = 1
 )
 
-var GetOmciEthernetFrameExtendedPmResponse_Format_name = map[int32]string{
-	0: "THIRTY_TWO_BIT",
-	1: "SIXTY_FOUR_BIT",
-}
+// Enum value maps for GetOmciEthernetFrameExtendedPmResponse_Format.
+var (
+	GetOmciEthernetFrameExtendedPmResponse_Format_name = map[int32]string{
+		0: "THIRTY_TWO_BIT",
+		1: "SIXTY_FOUR_BIT",
+	}
+	GetOmciEthernetFrameExtendedPmResponse_Format_value = map[string]int32{
+		"THIRTY_TWO_BIT": 0,
+		"SIXTY_FOUR_BIT": 1,
+	}
+)
 
-var GetOmciEthernetFrameExtendedPmResponse_Format_value = map[string]int32{
-	"THIRTY_TWO_BIT": 0,
-	"SIXTY_FOUR_BIT": 1,
+func (x GetOmciEthernetFrameExtendedPmResponse_Format) Enum() *GetOmciEthernetFrameExtendedPmResponse_Format {
+	p := new(GetOmciEthernetFrameExtendedPmResponse_Format)
+	*p = x
+	return p
 }
 
 func (x GetOmciEthernetFrameExtendedPmResponse_Format) String() string {
-	return proto.EnumName(GetOmciEthernetFrameExtendedPmResponse_Format_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOmciEthernetFrameExtendedPmResponse_Format) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[6].Descriptor()
+}
+
+func (GetOmciEthernetFrameExtendedPmResponse_Format) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[6]
+}
+
+func (x GetOmciEthernetFrameExtendedPmResponse_Format) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOmciEthernetFrameExtendedPmResponse_Format.Descriptor instead.
 func (GetOmciEthernetFrameExtendedPmResponse_Format) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{36, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{36, 0}
 }
 
 type GetOffloadedAppsStatisticsRequest_OffloadedApp int32
@@ -241,26 +399,47 @@
 	GetOffloadedAppsStatisticsRequest_DHCPv6RA  GetOffloadedAppsStatisticsRequest_OffloadedApp = 3
 )
 
-var GetOffloadedAppsStatisticsRequest_OffloadedApp_name = map[int32]string{
-	0: "UNDEFINED",
-	1: "PPPoeIA",
-	2: "DHCPv4RA",
-	3: "DHCPv6RA",
-}
+// Enum value maps for GetOffloadedAppsStatisticsRequest_OffloadedApp.
+var (
+	GetOffloadedAppsStatisticsRequest_OffloadedApp_name = map[int32]string{
+		0: "UNDEFINED",
+		1: "PPPoeIA",
+		2: "DHCPv4RA",
+		3: "DHCPv6RA",
+	}
+	GetOffloadedAppsStatisticsRequest_OffloadedApp_value = map[string]int32{
+		"UNDEFINED": 0,
+		"PPPoeIA":   1,
+		"DHCPv4RA":  2,
+		"DHCPv6RA":  3,
+	}
+)
 
-var GetOffloadedAppsStatisticsRequest_OffloadedApp_value = map[string]int32{
-	"UNDEFINED": 0,
-	"PPPoeIA":   1,
-	"DHCPv4RA":  2,
-	"DHCPv6RA":  3,
+func (x GetOffloadedAppsStatisticsRequest_OffloadedApp) Enum() *GetOffloadedAppsStatisticsRequest_OffloadedApp {
+	p := new(GetOffloadedAppsStatisticsRequest_OffloadedApp)
+	*p = x
+	return p
 }
 
 func (x GetOffloadedAppsStatisticsRequest_OffloadedApp) String() string {
-	return proto.EnumName(GetOffloadedAppsStatisticsRequest_OffloadedApp_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOffloadedAppsStatisticsRequest_OffloadedApp) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[7].Descriptor()
+}
+
+func (GetOffloadedAppsStatisticsRequest_OffloadedApp) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[7]
+}
+
+func (x GetOffloadedAppsStatisticsRequest_OffloadedApp) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsRequest_OffloadedApp.Descriptor instead.
 func (GetOffloadedAppsStatisticsRequest_OffloadedApp) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{45, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{45, 0}
 }
 
 type GetValueResponse_Status int32
@@ -271,24 +450,45 @@
 	GetValueResponse_ERROR            GetValueResponse_Status = 2
 )
 
-var GetValueResponse_Status_name = map[int32]string{
-	0: "STATUS_UNDEFINED",
-	1: "OK",
-	2: "ERROR",
-}
+// Enum value maps for GetValueResponse_Status.
+var (
+	GetValueResponse_Status_name = map[int32]string{
+		0: "STATUS_UNDEFINED",
+		1: "OK",
+		2: "ERROR",
+	}
+	GetValueResponse_Status_value = map[string]int32{
+		"STATUS_UNDEFINED": 0,
+		"OK":               1,
+		"ERROR":            2,
+	}
+)
 
-var GetValueResponse_Status_value = map[string]int32{
-	"STATUS_UNDEFINED": 0,
-	"OK":               1,
-	"ERROR":            2,
+func (x GetValueResponse_Status) Enum() *GetValueResponse_Status {
+	p := new(GetValueResponse_Status)
+	*p = x
+	return p
 }
 
 func (x GetValueResponse_Status) String() string {
-	return proto.EnumName(GetValueResponse_Status_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetValueResponse_Status) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[8].Descriptor()
+}
+
+func (GetValueResponse_Status) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[8]
+}
+
+func (x GetValueResponse_Status) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetValueResponse_Status.Descriptor instead.
 func (GetValueResponse_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{48, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{48, 0}
 }
 
 type GetValueResponse_ErrorReason int32
@@ -304,34 +504,55 @@
 	GetValueResponse_INVALID_DEVICE    GetValueResponse_ErrorReason = 7
 )
 
-var GetValueResponse_ErrorReason_name = map[int32]string{
-	0: "REASON_UNDEFINED",
-	1: "UNSUPPORTED",
-	2: "INVALID_DEVICE_ID",
-	3: "INVALID_PORT_TYPE",
-	4: "TIMEOUT",
-	5: "INVALID_REQ_TYPE",
-	6: "INTERNAL_ERROR",
-	7: "INVALID_DEVICE",
-}
+// Enum value maps for GetValueResponse_ErrorReason.
+var (
+	GetValueResponse_ErrorReason_name = map[int32]string{
+		0: "REASON_UNDEFINED",
+		1: "UNSUPPORTED",
+		2: "INVALID_DEVICE_ID",
+		3: "INVALID_PORT_TYPE",
+		4: "TIMEOUT",
+		5: "INVALID_REQ_TYPE",
+		6: "INTERNAL_ERROR",
+		7: "INVALID_DEVICE",
+	}
+	GetValueResponse_ErrorReason_value = map[string]int32{
+		"REASON_UNDEFINED":  0,
+		"UNSUPPORTED":       1,
+		"INVALID_DEVICE_ID": 2,
+		"INVALID_PORT_TYPE": 3,
+		"TIMEOUT":           4,
+		"INVALID_REQ_TYPE":  5,
+		"INTERNAL_ERROR":    6,
+		"INVALID_DEVICE":    7,
+	}
+)
 
-var GetValueResponse_ErrorReason_value = map[string]int32{
-	"REASON_UNDEFINED":  0,
-	"UNSUPPORTED":       1,
-	"INVALID_DEVICE_ID": 2,
-	"INVALID_PORT_TYPE": 3,
-	"TIMEOUT":           4,
-	"INVALID_REQ_TYPE":  5,
-	"INTERNAL_ERROR":    6,
-	"INVALID_DEVICE":    7,
+func (x GetValueResponse_ErrorReason) Enum() *GetValueResponse_ErrorReason {
+	p := new(GetValueResponse_ErrorReason)
+	*p = x
+	return p
 }
 
 func (x GetValueResponse_ErrorReason) String() string {
-	return proto.EnumName(GetValueResponse_ErrorReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetValueResponse_ErrorReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[9].Descriptor()
+}
+
+func (GetValueResponse_ErrorReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[9]
+}
+
+func (x GetValueResponse_ErrorReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetValueResponse_ErrorReason.Descriptor instead.
 func (GetValueResponse_ErrorReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{48, 1}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{48, 1}
 }
 
 type SetValueResponse_Status int32
@@ -342,24 +563,45 @@
 	SetValueResponse_ERROR            SetValueResponse_Status = 2
 )
 
-var SetValueResponse_Status_name = map[int32]string{
-	0: "STATUS_UNDEFINED",
-	1: "OK",
-	2: "ERROR",
-}
+// Enum value maps for SetValueResponse_Status.
+var (
+	SetValueResponse_Status_name = map[int32]string{
+		0: "STATUS_UNDEFINED",
+		1: "OK",
+		2: "ERROR",
+	}
+	SetValueResponse_Status_value = map[string]int32{
+		"STATUS_UNDEFINED": 0,
+		"OK":               1,
+		"ERROR":            2,
+	}
+)
 
-var SetValueResponse_Status_value = map[string]int32{
-	"STATUS_UNDEFINED": 0,
-	"OK":               1,
-	"ERROR":            2,
+func (x SetValueResponse_Status) Enum() *SetValueResponse_Status {
+	p := new(SetValueResponse_Status)
+	*p = x
+	return p
 }
 
 func (x SetValueResponse_Status) String() string {
-	return proto.EnumName(SetValueResponse_Status_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SetValueResponse_Status) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[10].Descriptor()
+}
+
+func (SetValueResponse_Status) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[10]
+}
+
+func (x SetValueResponse_Status) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SetValueResponse_Status.Descriptor instead.
 func (SetValueResponse_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{52, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{52, 0}
 }
 
 type SetValueResponse_ErrorReason int32
@@ -372,72 +614,115 @@
 	SetValueResponse_INVALID_UNI_ID        SetValueResponse_ErrorReason = 4
 )
 
-var SetValueResponse_ErrorReason_name = map[int32]string{
-	0: "REASON_UNDEFINED",
-	1: "UNSUPPORTED",
-	2: "INVALID_DEVICE_ID",
-	3: "INVALID_ONU_DEVICE_ID",
-	4: "INVALID_UNI_ID",
-}
+// Enum value maps for SetValueResponse_ErrorReason.
+var (
+	SetValueResponse_ErrorReason_name = map[int32]string{
+		0: "REASON_UNDEFINED",
+		1: "UNSUPPORTED",
+		2: "INVALID_DEVICE_ID",
+		3: "INVALID_ONU_DEVICE_ID",
+		4: "INVALID_UNI_ID",
+	}
+	SetValueResponse_ErrorReason_value = map[string]int32{
+		"REASON_UNDEFINED":      0,
+		"UNSUPPORTED":           1,
+		"INVALID_DEVICE_ID":     2,
+		"INVALID_ONU_DEVICE_ID": 3,
+		"INVALID_UNI_ID":        4,
+	}
+)
 
-var SetValueResponse_ErrorReason_value = map[string]int32{
-	"REASON_UNDEFINED":      0,
-	"UNSUPPORTED":           1,
-	"INVALID_DEVICE_ID":     2,
-	"INVALID_ONU_DEVICE_ID": 3,
-	"INVALID_UNI_ID":        4,
+func (x SetValueResponse_ErrorReason) Enum() *SetValueResponse_ErrorReason {
+	p := new(SetValueResponse_ErrorReason)
+	*p = x
+	return p
 }
 
 func (x SetValueResponse_ErrorReason) String() string {
-	return proto.EnumName(SetValueResponse_ErrorReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SetValueResponse_ErrorReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[11].Descriptor()
+}
+
+func (SetValueResponse_ErrorReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[11]
+}
+
+func (x SetValueResponse_ErrorReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SetValueResponse_ErrorReason.Descriptor instead.
 func (SetValueResponse_ErrorReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{52, 1}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{52, 1}
 }
 
 type ValueSet struct {
-	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Id    string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Types that are valid to be assigned to Value:
+	//
 	//	*ValueSet_AlarmConfig
-	Value                isValueSet_Value `protobuf_oneof:"value"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	Value         isValueSet_Value `protobuf_oneof:"value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ValueSet) Reset()         { *m = ValueSet{} }
-func (m *ValueSet) String() string { return proto.CompactTextString(m) }
-func (*ValueSet) ProtoMessage()    {}
+func (x *ValueSet) Reset() {
+	*x = ValueSet{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ValueSet) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValueSet) ProtoMessage() {}
+
+func (x *ValueSet) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ValueSet.ProtoReflect.Descriptor instead.
 func (*ValueSet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *ValueSet) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ValueSet.Unmarshal(m, b)
-}
-func (m *ValueSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ValueSet.Marshal(b, m, deterministic)
-}
-func (m *ValueSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ValueSet.Merge(m, src)
-}
-func (m *ValueSet) XXX_Size() int {
-	return xxx_messageInfo_ValueSet.Size(m)
-}
-func (m *ValueSet) XXX_DiscardUnknown() {
-	xxx_messageInfo_ValueSet.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ValueSet proto.InternalMessageInfo
-
-func (m *ValueSet) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *ValueSet) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
+func (x *ValueSet) GetValue() isValueSet_Value {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *ValueSet) GetAlarmConfig() *config.AlarmConfig {
+	if x != nil {
+		if x, ok := x.Value.(*ValueSet_AlarmConfig); ok {
+			return x.AlarmConfig
+		}
+	}
+	return nil
+}
+
 type isValueSet_Value interface {
 	isValueSet_Value()
 }
@@ -448,549 +733,578 @@
 
 func (*ValueSet_AlarmConfig) isValueSet_Value() {}
 
-func (m *ValueSet) GetValue() isValueSet_Value {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-func (m *ValueSet) GetAlarmConfig() *config.AlarmConfig {
-	if x, ok := m.GetValue().(*ValueSet_AlarmConfig); ok {
-		return x.AlarmConfig
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ValueSet) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ValueSet_AlarmConfig)(nil),
-	}
-}
-
 type ValueType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ValueType) Reset()         { *m = ValueType{} }
-func (m *ValueType) String() string { return proto.CompactTextString(m) }
-func (*ValueType) ProtoMessage()    {}
+func (x *ValueType) Reset() {
+	*x = ValueType{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ValueType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValueType) ProtoMessage() {}
+
+func (x *ValueType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ValueType.ProtoReflect.Descriptor instead.
 func (*ValueType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{1}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *ValueType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ValueType.Unmarshal(m, b)
-}
-func (m *ValueType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ValueType.Marshal(b, m, deterministic)
-}
-func (m *ValueType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ValueType.Merge(m, src)
-}
-func (m *ValueType) XXX_Size() int {
-	return xxx_messageInfo_ValueType.Size(m)
-}
-func (m *ValueType) XXX_DiscardUnknown() {
-	xxx_messageInfo_ValueType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ValueType proto.InternalMessageInfo
-
 type ValueSpecifier struct {
-	Id                   string         `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Value                ValueType_Type `protobuf:"varint,2,opt,name=value,proto3,enum=extension.ValueType_Type" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Value         ValueType_Type         `protobuf:"varint,2,opt,name=value,proto3,enum=extension.ValueType_Type" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ValueSpecifier) Reset()         { *m = ValueSpecifier{} }
-func (m *ValueSpecifier) String() string { return proto.CompactTextString(m) }
-func (*ValueSpecifier) ProtoMessage()    {}
+func (x *ValueSpecifier) Reset() {
+	*x = ValueSpecifier{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ValueSpecifier) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValueSpecifier) ProtoMessage() {}
+
+func (x *ValueSpecifier) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ValueSpecifier.ProtoReflect.Descriptor instead.
 func (*ValueSpecifier) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{2}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ValueSpecifier) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ValueSpecifier.Unmarshal(m, b)
-}
-func (m *ValueSpecifier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ValueSpecifier.Marshal(b, m, deterministic)
-}
-func (m *ValueSpecifier) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ValueSpecifier.Merge(m, src)
-}
-func (m *ValueSpecifier) XXX_Size() int {
-	return xxx_messageInfo_ValueSpecifier.Size(m)
-}
-func (m *ValueSpecifier) XXX_DiscardUnknown() {
-	xxx_messageInfo_ValueSpecifier.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ValueSpecifier proto.InternalMessageInfo
-
-func (m *ValueSpecifier) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *ValueSpecifier) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *ValueSpecifier) GetValue() ValueType_Type {
-	if m != nil {
-		return m.Value
+func (x *ValueSpecifier) GetValue() ValueType_Type {
+	if x != nil {
+		return x.Value
 	}
 	return ValueType_EMPTY
 }
 
 type ReturnValues struct {
-	Set                  uint32   `protobuf:"varint,1,opt,name=Set,proto3" json:"Set,omitempty"`
-	Unsupported          uint32   `protobuf:"varint,2,opt,name=Unsupported,proto3" json:"Unsupported,omitempty"`
-	Error                uint32   `protobuf:"varint,3,opt,name=Error,proto3" json:"Error,omitempty"`
-	Distance             uint32   `protobuf:"varint,4,opt,name=Distance,proto3" json:"Distance,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Set           uint32                 `protobuf:"varint,1,opt,name=Set,proto3" json:"Set,omitempty"`                 // Specifies what values are
+	Unsupported   uint32                 `protobuf:"varint,2,opt,name=Unsupported,proto3" json:"Unsupported,omitempty"` // Specifies requested values not
+	Error         uint32                 `protobuf:"varint,3,opt,name=Error,proto3" json:"Error,omitempty"`             // Specifies requested values not
+	Distance      uint32                 `protobuf:"varint,4,opt,name=Distance,proto3" json:"Distance,omitempty"`       // Value of distance Set includes
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ReturnValues) Reset()         { *m = ReturnValues{} }
-func (m *ReturnValues) String() string { return proto.CompactTextString(m) }
-func (*ReturnValues) ProtoMessage()    {}
+func (x *ReturnValues) Reset() {
+	*x = ReturnValues{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ReturnValues) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReturnValues) ProtoMessage() {}
+
+func (x *ReturnValues) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReturnValues.ProtoReflect.Descriptor instead.
 func (*ReturnValues) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{3}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ReturnValues) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ReturnValues.Unmarshal(m, b)
-}
-func (m *ReturnValues) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ReturnValues.Marshal(b, m, deterministic)
-}
-func (m *ReturnValues) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ReturnValues.Merge(m, src)
-}
-func (m *ReturnValues) XXX_Size() int {
-	return xxx_messageInfo_ReturnValues.Size(m)
-}
-func (m *ReturnValues) XXX_DiscardUnknown() {
-	xxx_messageInfo_ReturnValues.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ReturnValues proto.InternalMessageInfo
-
-func (m *ReturnValues) GetSet() uint32 {
-	if m != nil {
-		return m.Set
+func (x *ReturnValues) GetSet() uint32 {
+	if x != nil {
+		return x.Set
 	}
 	return 0
 }
 
-func (m *ReturnValues) GetUnsupported() uint32 {
-	if m != nil {
-		return m.Unsupported
+func (x *ReturnValues) GetUnsupported() uint32 {
+	if x != nil {
+		return x.Unsupported
 	}
 	return 0
 }
 
-func (m *ReturnValues) GetError() uint32 {
-	if m != nil {
-		return m.Error
+func (x *ReturnValues) GetError() uint32 {
+	if x != nil {
+		return x.Error
 	}
 	return 0
 }
 
-func (m *ReturnValues) GetDistance() uint32 {
-	if m != nil {
-		return m.Distance
+func (x *ReturnValues) GetDistance() uint32 {
+	if x != nil {
+		return x.Distance
 	}
 	return 0
 }
 
 type GetDistanceRequest struct {
-	OnuDeviceId          string   `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OnuDeviceId   string                 `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetDistanceRequest) Reset()         { *m = GetDistanceRequest{} }
-func (m *GetDistanceRequest) String() string { return proto.CompactTextString(m) }
-func (*GetDistanceRequest) ProtoMessage()    {}
+func (x *GetDistanceRequest) Reset() {
+	*x = GetDistanceRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetDistanceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDistanceRequest) ProtoMessage() {}
+
+func (x *GetDistanceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetDistanceRequest.ProtoReflect.Descriptor instead.
 func (*GetDistanceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{4}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *GetDistanceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetDistanceRequest.Unmarshal(m, b)
-}
-func (m *GetDistanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetDistanceRequest.Marshal(b, m, deterministic)
-}
-func (m *GetDistanceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetDistanceRequest.Merge(m, src)
-}
-func (m *GetDistanceRequest) XXX_Size() int {
-	return xxx_messageInfo_GetDistanceRequest.Size(m)
-}
-func (m *GetDistanceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetDistanceRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetDistanceRequest proto.InternalMessageInfo
-
-func (m *GetDistanceRequest) GetOnuDeviceId() string {
-	if m != nil {
-		return m.OnuDeviceId
+func (x *GetDistanceRequest) GetOnuDeviceId() string {
+	if x != nil {
+		return x.OnuDeviceId
 	}
 	return ""
 }
 
 type GetDistanceResponse struct {
-	Distance             uint32   `protobuf:"varint,1,opt,name=distance,proto3" json:"distance,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Distance      uint32                 `protobuf:"varint,1,opt,name=distance,proto3" json:"distance,omitempty"` // distance in meters
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetDistanceResponse) Reset()         { *m = GetDistanceResponse{} }
-func (m *GetDistanceResponse) String() string { return proto.CompactTextString(m) }
-func (*GetDistanceResponse) ProtoMessage()    {}
+func (x *GetDistanceResponse) Reset() {
+	*x = GetDistanceResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetDistanceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDistanceResponse) ProtoMessage() {}
+
+func (x *GetDistanceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetDistanceResponse.ProtoReflect.Descriptor instead.
 func (*GetDistanceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{5}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *GetDistanceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetDistanceResponse.Unmarshal(m, b)
-}
-func (m *GetDistanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetDistanceResponse.Marshal(b, m, deterministic)
-}
-func (m *GetDistanceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetDistanceResponse.Merge(m, src)
-}
-func (m *GetDistanceResponse) XXX_Size() int {
-	return xxx_messageInfo_GetDistanceResponse.Size(m)
-}
-func (m *GetDistanceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetDistanceResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetDistanceResponse proto.InternalMessageInfo
-
-func (m *GetDistanceResponse) GetDistance() uint32 {
-	if m != nil {
-		return m.Distance
+func (x *GetDistanceResponse) GetDistance() uint32 {
+	if x != nil {
+		return x.Distance
 	}
 	return 0
 }
 
 type GetOnuUniInfoRequest struct {
-	UniIndex             uint32   `protobuf:"varint,1,opt,name=uniIndex,proto3" json:"uniIndex,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	UniIndex      uint32                 `protobuf:"varint,1,opt,name=uniIndex,proto3" json:"uniIndex,omitempty"` // Index of the uni starting from 0
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuUniInfoRequest) Reset()         { *m = GetOnuUniInfoRequest{} }
-func (m *GetOnuUniInfoRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuUniInfoRequest) ProtoMessage()    {}
+func (x *GetOnuUniInfoRequest) Reset() {
+	*x = GetOnuUniInfoRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuUniInfoRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuUniInfoRequest) ProtoMessage() {}
+
+func (x *GetOnuUniInfoRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuUniInfoRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuUniInfoRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{6}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *GetOnuUniInfoRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuUniInfoRequest.Unmarshal(m, b)
-}
-func (m *GetOnuUniInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuUniInfoRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuUniInfoRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuUniInfoRequest.Merge(m, src)
-}
-func (m *GetOnuUniInfoRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuUniInfoRequest.Size(m)
-}
-func (m *GetOnuUniInfoRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuUniInfoRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuUniInfoRequest proto.InternalMessageInfo
-
-func (m *GetOnuUniInfoRequest) GetUniIndex() uint32 {
-	if m != nil {
-		return m.UniIndex
+func (x *GetOnuUniInfoRequest) GetUniIndex() uint32 {
+	if x != nil {
+		return x.UniIndex
 	}
 	return 0
 }
 
 type GetOnuUniInfoResponse struct {
-	AdmState             GetOnuUniInfoResponse_AdministrativeState `protobuf:"varint,1,opt,name=admState,proto3,enum=extension.GetOnuUniInfoResponse_AdministrativeState" json:"admState,omitempty"`
-	OperState            GetOnuUniInfoResponse_OperationalState    `protobuf:"varint,2,opt,name=operState,proto3,enum=extension.GetOnuUniInfoResponse_OperationalState" json:"operState,omitempty"`
-	ConfigInd            GetOnuUniInfoResponse_ConfigurationInd    `protobuf:"varint,3,opt,name=configInd,proto3,enum=extension.GetOnuUniInfoResponse_ConfigurationInd" json:"configInd,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
-	XXX_unrecognized     []byte                                    `json:"-"`
-	XXX_sizecache        int32                                     `json:"-"`
+	state         protoimpl.MessageState                    `protogen:"open.v1"`
+	AdmState      GetOnuUniInfoResponse_AdministrativeState `protobuf:"varint,1,opt,name=admState,proto3,enum=extension.GetOnuUniInfoResponse_AdministrativeState" json:"admState,omitempty"`
+	OperState     GetOnuUniInfoResponse_OperationalState    `protobuf:"varint,2,opt,name=operState,proto3,enum=extension.GetOnuUniInfoResponse_OperationalState" json:"operState,omitempty"`
+	ConfigInd     GetOnuUniInfoResponse_ConfigurationInd    `protobuf:"varint,3,opt,name=configInd,proto3,enum=extension.GetOnuUniInfoResponse_ConfigurationInd" json:"configInd,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuUniInfoResponse) Reset()         { *m = GetOnuUniInfoResponse{} }
-func (m *GetOnuUniInfoResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuUniInfoResponse) ProtoMessage()    {}
+func (x *GetOnuUniInfoResponse) Reset() {
+	*x = GetOnuUniInfoResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuUniInfoResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuUniInfoResponse) ProtoMessage() {}
+
+func (x *GetOnuUniInfoResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuUniInfoResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuUniInfoResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{7}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *GetOnuUniInfoResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuUniInfoResponse.Unmarshal(m, b)
-}
-func (m *GetOnuUniInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuUniInfoResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuUniInfoResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuUniInfoResponse.Merge(m, src)
-}
-func (m *GetOnuUniInfoResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuUniInfoResponse.Size(m)
-}
-func (m *GetOnuUniInfoResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuUniInfoResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuUniInfoResponse proto.InternalMessageInfo
-
-func (m *GetOnuUniInfoResponse) GetAdmState() GetOnuUniInfoResponse_AdministrativeState {
-	if m != nil {
-		return m.AdmState
+func (x *GetOnuUniInfoResponse) GetAdmState() GetOnuUniInfoResponse_AdministrativeState {
+	if x != nil {
+		return x.AdmState
 	}
 	return GetOnuUniInfoResponse_ADMSTATE_UNDEFINED
 }
 
-func (m *GetOnuUniInfoResponse) GetOperState() GetOnuUniInfoResponse_OperationalState {
-	if m != nil {
-		return m.OperState
+func (x *GetOnuUniInfoResponse) GetOperState() GetOnuUniInfoResponse_OperationalState {
+	if x != nil {
+		return x.OperState
 	}
 	return GetOnuUniInfoResponse_OPERSTATE_UNDEFINED
 }
 
-func (m *GetOnuUniInfoResponse) GetConfigInd() GetOnuUniInfoResponse_ConfigurationInd {
-	if m != nil {
-		return m.ConfigInd
+func (x *GetOnuUniInfoResponse) GetConfigInd() GetOnuUniInfoResponse_ConfigurationInd {
+	if x != nil {
+		return x.ConfigInd
 	}
 	return GetOnuUniInfoResponse_UNKOWN
 }
 
 type GetOltPortCounters struct {
-	PortNo               uint32                      `protobuf:"varint,1,opt,name=portNo,proto3" json:"portNo,omitempty"`
-	PortType             GetOltPortCounters_PortType `protobuf:"varint,2,opt,name=portType,proto3,enum=extension.GetOltPortCounters_PortType" json:"portType,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
-	XXX_unrecognized     []byte                      `json:"-"`
-	XXX_sizecache        int32                       `json:"-"`
+	state         protoimpl.MessageState      `protogen:"open.v1"`
+	PortNo        uint32                      `protobuf:"varint,1,opt,name=portNo,proto3" json:"portNo,omitempty"` // Device-unique port number
+	PortType      GetOltPortCounters_PortType `protobuf:"varint,2,opt,name=portType,proto3,enum=extension.GetOltPortCounters_PortType" json:"portType,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOltPortCounters) Reset()         { *m = GetOltPortCounters{} }
-func (m *GetOltPortCounters) String() string { return proto.CompactTextString(m) }
-func (*GetOltPortCounters) ProtoMessage()    {}
+func (x *GetOltPortCounters) Reset() {
+	*x = GetOltPortCounters{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOltPortCounters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOltPortCounters) ProtoMessage() {}
+
+func (x *GetOltPortCounters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOltPortCounters.ProtoReflect.Descriptor instead.
 func (*GetOltPortCounters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{8}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *GetOltPortCounters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOltPortCounters.Unmarshal(m, b)
-}
-func (m *GetOltPortCounters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOltPortCounters.Marshal(b, m, deterministic)
-}
-func (m *GetOltPortCounters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOltPortCounters.Merge(m, src)
-}
-func (m *GetOltPortCounters) XXX_Size() int {
-	return xxx_messageInfo_GetOltPortCounters.Size(m)
-}
-func (m *GetOltPortCounters) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOltPortCounters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOltPortCounters proto.InternalMessageInfo
-
-func (m *GetOltPortCounters) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *GetOltPortCounters) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *GetOltPortCounters) GetPortType() GetOltPortCounters_PortType {
-	if m != nil {
-		return m.PortType
+func (x *GetOltPortCounters) GetPortType() GetOltPortCounters_PortType {
+	if x != nil {
+		return x.PortType
 	}
 	return GetOltPortCounters_Port_UNKNOWN
 }
 
 type GetOltPortCountersResponse struct {
-	TxBytes              uint64   `protobuf:"varint,1,opt,name=txBytes,proto3" json:"txBytes,omitempty"`
-	RxBytes              uint64   `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,3,opt,name=txPackets,proto3" json:"txPackets,omitempty"`
-	RxPackets            uint64   `protobuf:"varint,4,opt,name=rxPackets,proto3" json:"rxPackets,omitempty"`
-	TxErrorPackets       uint64   `protobuf:"varint,5,opt,name=txErrorPackets,proto3" json:"txErrorPackets,omitempty"`
-	RxErrorPackets       uint64   `protobuf:"varint,6,opt,name=rxErrorPackets,proto3" json:"rxErrorPackets,omitempty"`
-	TxBcastPackets       uint64   `protobuf:"varint,7,opt,name=txBcastPackets,proto3" json:"txBcastPackets,omitempty"`
-	RxBcastPackets       uint64   `protobuf:"varint,8,opt,name=rxBcastPackets,proto3" json:"rxBcastPackets,omitempty"`
-	TxUcastPackets       uint64   `protobuf:"varint,9,opt,name=txUcastPackets,proto3" json:"txUcastPackets,omitempty"`
-	RxUcastPackets       uint64   `protobuf:"varint,10,opt,name=rxUcastPackets,proto3" json:"rxUcastPackets,omitempty"`
-	TxMcastPackets       uint64   `protobuf:"varint,11,opt,name=txMcastPackets,proto3" json:"txMcastPackets,omitempty"`
-	RxMcastPackets       uint64   `protobuf:"varint,12,opt,name=rxMcastPackets,proto3" json:"rxMcastPackets,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	TxBytes        uint64                 `protobuf:"varint,1,opt,name=txBytes,proto3" json:"txBytes,omitempty"`
+	RxBytes        uint64                 `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
+	TxPackets      uint64                 `protobuf:"varint,3,opt,name=txPackets,proto3" json:"txPackets,omitempty"`
+	RxPackets      uint64                 `protobuf:"varint,4,opt,name=rxPackets,proto3" json:"rxPackets,omitempty"`
+	TxErrorPackets uint64                 `protobuf:"varint,5,opt,name=txErrorPackets,proto3" json:"txErrorPackets,omitempty"`
+	RxErrorPackets uint64                 `protobuf:"varint,6,opt,name=rxErrorPackets,proto3" json:"rxErrorPackets,omitempty"`
+	TxBcastPackets uint64                 `protobuf:"varint,7,opt,name=txBcastPackets,proto3" json:"txBcastPackets,omitempty"`
+	RxBcastPackets uint64                 `protobuf:"varint,8,opt,name=rxBcastPackets,proto3" json:"rxBcastPackets,omitempty"`
+	TxUcastPackets uint64                 `protobuf:"varint,9,opt,name=txUcastPackets,proto3" json:"txUcastPackets,omitempty"`
+	RxUcastPackets uint64                 `protobuf:"varint,10,opt,name=rxUcastPackets,proto3" json:"rxUcastPackets,omitempty"`
+	TxMcastPackets uint64                 `protobuf:"varint,11,opt,name=txMcastPackets,proto3" json:"txMcastPackets,omitempty"`
+	RxMcastPackets uint64                 `protobuf:"varint,12,opt,name=rxMcastPackets,proto3" json:"rxMcastPackets,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *GetOltPortCountersResponse) Reset()         { *m = GetOltPortCountersResponse{} }
-func (m *GetOltPortCountersResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOltPortCountersResponse) ProtoMessage()    {}
+func (x *GetOltPortCountersResponse) Reset() {
+	*x = GetOltPortCountersResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOltPortCountersResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOltPortCountersResponse) ProtoMessage() {}
+
+func (x *GetOltPortCountersResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOltPortCountersResponse.ProtoReflect.Descriptor instead.
 func (*GetOltPortCountersResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{9}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *GetOltPortCountersResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOltPortCountersResponse.Unmarshal(m, b)
-}
-func (m *GetOltPortCountersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOltPortCountersResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOltPortCountersResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOltPortCountersResponse.Merge(m, src)
-}
-func (m *GetOltPortCountersResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOltPortCountersResponse.Size(m)
-}
-func (m *GetOltPortCountersResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOltPortCountersResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOltPortCountersResponse proto.InternalMessageInfo
-
-func (m *GetOltPortCountersResponse) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
+func (x *GetOltPortCountersResponse) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *GetOltPortCountersResponse) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
+func (x *GetOltPortCountersResponse) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
+func (x *GetOltPortCountersResponse) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxErrorPackets() uint64 {
-	if m != nil {
-		return m.TxErrorPackets
+func (x *GetOltPortCountersResponse) GetTxErrorPackets() uint64 {
+	if x != nil {
+		return x.TxErrorPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxErrorPackets() uint64 {
-	if m != nil {
-		return m.RxErrorPackets
+func (x *GetOltPortCountersResponse) GetRxErrorPackets() uint64 {
+	if x != nil {
+		return x.RxErrorPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxBcastPackets() uint64 {
-	if m != nil {
-		return m.TxBcastPackets
+func (x *GetOltPortCountersResponse) GetTxBcastPackets() uint64 {
+	if x != nil {
+		return x.TxBcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxBcastPackets() uint64 {
-	if m != nil {
-		return m.RxBcastPackets
+func (x *GetOltPortCountersResponse) GetRxBcastPackets() uint64 {
+	if x != nil {
+		return x.RxBcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxUcastPackets() uint64 {
-	if m != nil {
-		return m.TxUcastPackets
+func (x *GetOltPortCountersResponse) GetTxUcastPackets() uint64 {
+	if x != nil {
+		return x.TxUcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxUcastPackets() uint64 {
-	if m != nil {
-		return m.RxUcastPackets
+func (x *GetOltPortCountersResponse) GetRxUcastPackets() uint64 {
+	if x != nil {
+		return x.RxUcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxMcastPackets() uint64 {
-	if m != nil {
-		return m.TxMcastPackets
+func (x *GetOltPortCountersResponse) GetTxMcastPackets() uint64 {
+	if x != nil {
+		return x.TxMcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxMcastPackets() uint64 {
-	if m != nil {
-		return m.RxMcastPackets
+func (x *GetOltPortCountersResponse) GetRxMcastPackets() uint64 {
+	if x != nil {
+		return x.RxMcastPackets
 	}
 	return 0
 }
 
 type GetOnuPonOpticalInfo struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuPonOpticalInfo) Reset()         { *m = GetOnuPonOpticalInfo{} }
-func (m *GetOnuPonOpticalInfo) String() string { return proto.CompactTextString(m) }
-func (*GetOnuPonOpticalInfo) ProtoMessage()    {}
+func (x *GetOnuPonOpticalInfo) Reset() {
+	*x = GetOnuPonOpticalInfo{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuPonOpticalInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuPonOpticalInfo) ProtoMessage() {}
+
+func (x *GetOnuPonOpticalInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuPonOpticalInfo.ProtoReflect.Descriptor instead.
 func (*GetOnuPonOpticalInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{10}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *GetOnuPonOpticalInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuPonOpticalInfo.Unmarshal(m, b)
-}
-func (m *GetOnuPonOpticalInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuPonOpticalInfo.Marshal(b, m, deterministic)
-}
-func (m *GetOnuPonOpticalInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuPonOpticalInfo.Merge(m, src)
-}
-func (m *GetOnuPonOpticalInfo) XXX_Size() int {
-	return xxx_messageInfo_GetOnuPonOpticalInfo.Size(m)
-}
-func (m *GetOnuPonOpticalInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuPonOpticalInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuPonOpticalInfo proto.InternalMessageInfo
-
-func (m *GetOnuPonOpticalInfo) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuPonOpticalInfo) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
@@ -998,884 +1312,1057 @@
 // These values correspond to the Optical Line Supervision Test results
 // described in section A3.39.5 of ITU-T G.988 (11/2017) specification.
 type GetOnuPonOpticalInfoResponse struct {
-	PowerFeedVoltage       float32  `protobuf:"fixed32,1,opt,name=powerFeedVoltage,proto3" json:"powerFeedVoltage,omitempty"`
-	ReceivedOpticalPower   float32  `protobuf:"fixed32,2,opt,name=receivedOpticalPower,proto3" json:"receivedOpticalPower,omitempty"`
-	MeanOpticalLaunchPower float32  `protobuf:"fixed32,3,opt,name=meanOpticalLaunchPower,proto3" json:"meanOpticalLaunchPower,omitempty"`
-	LaserBiasCurrent       float32  `protobuf:"fixed32,4,opt,name=laserBiasCurrent,proto3" json:"laserBiasCurrent,omitempty"`
-	Temperature            float32  `protobuf:"fixed32,5,opt,name=temperature,proto3" json:"temperature,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
-	XXX_unrecognized       []byte   `json:"-"`
-	XXX_sizecache          int32    `json:"-"`
+	state                  protoimpl.MessageState `protogen:"open.v1"`
+	PowerFeedVoltage       float32                `protobuf:"fixed32,1,opt,name=powerFeedVoltage,proto3" json:"powerFeedVoltage,omitempty"`             // unit of value is voltage
+	ReceivedOpticalPower   float32                `protobuf:"fixed32,2,opt,name=receivedOpticalPower,proto3" json:"receivedOpticalPower,omitempty"`     // unit of value is dBm
+	MeanOpticalLaunchPower float32                `protobuf:"fixed32,3,opt,name=meanOpticalLaunchPower,proto3" json:"meanOpticalLaunchPower,omitempty"` // unit of value is dBm
+	LaserBiasCurrent       float32                `protobuf:"fixed32,4,opt,name=laserBiasCurrent,proto3" json:"laserBiasCurrent,omitempty"`             // unit of value is milli-amphere (mA)
+	Temperature            float32                `protobuf:"fixed32,5,opt,name=temperature,proto3" json:"temperature,omitempty"`                       // unit of value is degree celsius
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
 }
 
-func (m *GetOnuPonOpticalInfoResponse) Reset()         { *m = GetOnuPonOpticalInfoResponse{} }
-func (m *GetOnuPonOpticalInfoResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuPonOpticalInfoResponse) ProtoMessage()    {}
+func (x *GetOnuPonOpticalInfoResponse) Reset() {
+	*x = GetOnuPonOpticalInfoResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuPonOpticalInfoResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuPonOpticalInfoResponse) ProtoMessage() {}
+
+func (x *GetOnuPonOpticalInfoResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuPonOpticalInfoResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuPonOpticalInfoResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{11}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *GetOnuPonOpticalInfoResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuPonOpticalInfoResponse.Unmarshal(m, b)
-}
-func (m *GetOnuPonOpticalInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuPonOpticalInfoResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuPonOpticalInfoResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuPonOpticalInfoResponse.Merge(m, src)
-}
-func (m *GetOnuPonOpticalInfoResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuPonOpticalInfoResponse.Size(m)
-}
-func (m *GetOnuPonOpticalInfoResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuPonOpticalInfoResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuPonOpticalInfoResponse proto.InternalMessageInfo
-
-func (m *GetOnuPonOpticalInfoResponse) GetPowerFeedVoltage() float32 {
-	if m != nil {
-		return m.PowerFeedVoltage
+func (x *GetOnuPonOpticalInfoResponse) GetPowerFeedVoltage() float32 {
+	if x != nil {
+		return x.PowerFeedVoltage
 	}
 	return 0
 }
 
-func (m *GetOnuPonOpticalInfoResponse) GetReceivedOpticalPower() float32 {
-	if m != nil {
-		return m.ReceivedOpticalPower
+func (x *GetOnuPonOpticalInfoResponse) GetReceivedOpticalPower() float32 {
+	if x != nil {
+		return x.ReceivedOpticalPower
 	}
 	return 0
 }
 
-func (m *GetOnuPonOpticalInfoResponse) GetMeanOpticalLaunchPower() float32 {
-	if m != nil {
-		return m.MeanOpticalLaunchPower
+func (x *GetOnuPonOpticalInfoResponse) GetMeanOpticalLaunchPower() float32 {
+	if x != nil {
+		return x.MeanOpticalLaunchPower
 	}
 	return 0
 }
 
-func (m *GetOnuPonOpticalInfoResponse) GetLaserBiasCurrent() float32 {
-	if m != nil {
-		return m.LaserBiasCurrent
+func (x *GetOnuPonOpticalInfoResponse) GetLaserBiasCurrent() float32 {
+	if x != nil {
+		return x.LaserBiasCurrent
 	}
 	return 0
 }
 
-func (m *GetOnuPonOpticalInfoResponse) GetTemperature() float32 {
-	if m != nil {
-		return m.Temperature
+func (x *GetOnuPonOpticalInfoResponse) GetTemperature() float32 {
+	if x != nil {
+		return x.Temperature
 	}
 	return 0
 }
 
 type GetOnuEthernetBridgePortHistory struct {
-	Direction            GetOnuEthernetBridgePortHistory_Direction `protobuf:"varint,1,opt,name=direction,proto3,enum=extension.GetOnuEthernetBridgePortHistory_Direction" json:"direction,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
-	XXX_unrecognized     []byte                                    `json:"-"`
-	XXX_sizecache        int32                                     `json:"-"`
+	state         protoimpl.MessageState                    `protogen:"open.v1"`
+	Direction     GetOnuEthernetBridgePortHistory_Direction `protobuf:"varint,1,opt,name=direction,proto3,enum=extension.GetOnuEthernetBridgePortHistory_Direction" json:"direction,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuEthernetBridgePortHistory) Reset()         { *m = GetOnuEthernetBridgePortHistory{} }
-func (m *GetOnuEthernetBridgePortHistory) String() string { return proto.CompactTextString(m) }
-func (*GetOnuEthernetBridgePortHistory) ProtoMessage()    {}
+func (x *GetOnuEthernetBridgePortHistory) Reset() {
+	*x = GetOnuEthernetBridgePortHistory{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuEthernetBridgePortHistory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuEthernetBridgePortHistory) ProtoMessage() {}
+
+func (x *GetOnuEthernetBridgePortHistory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuEthernetBridgePortHistory.ProtoReflect.Descriptor instead.
 func (*GetOnuEthernetBridgePortHistory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{12}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *GetOnuEthernetBridgePortHistory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistory.Unmarshal(m, b)
-}
-func (m *GetOnuEthernetBridgePortHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistory.Marshal(b, m, deterministic)
-}
-func (m *GetOnuEthernetBridgePortHistory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuEthernetBridgePortHistory.Merge(m, src)
-}
-func (m *GetOnuEthernetBridgePortHistory) XXX_Size() int {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistory.Size(m)
-}
-func (m *GetOnuEthernetBridgePortHistory) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuEthernetBridgePortHistory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuEthernetBridgePortHistory proto.InternalMessageInfo
-
-func (m *GetOnuEthernetBridgePortHistory) GetDirection() GetOnuEthernetBridgePortHistory_Direction {
-	if m != nil {
-		return m.Direction
+func (x *GetOnuEthernetBridgePortHistory) GetDirection() GetOnuEthernetBridgePortHistory_Direction {
+	if x != nil {
+		return x.Direction
 	}
 	return GetOnuEthernetBridgePortHistory_UNDEFINED
 }
 
 type GetOnuEthernetBridgePortHistoryResponse struct {
-	DropEvents              uint32   `protobuf:"varint,1,opt,name=dropEvents,proto3" json:"dropEvents,omitempty"`
-	Octets                  uint32   `protobuf:"varint,2,opt,name=octets,proto3" json:"octets,omitempty"`
-	Packets                 uint32   `protobuf:"varint,3,opt,name=packets,proto3" json:"packets,omitempty"`
-	BroadcastPackets        uint32   `protobuf:"varint,4,opt,name=broadcastPackets,proto3" json:"broadcastPackets,omitempty"`
-	MulticastPackets        uint32   `protobuf:"varint,5,opt,name=multicastPackets,proto3" json:"multicastPackets,omitempty"`
-	CrcErroredPackets       uint32   `protobuf:"varint,6,opt,name=crcErroredPackets,proto3" json:"crcErroredPackets,omitempty"`
-	UndersizePackets        uint32   `protobuf:"varint,7,opt,name=undersizePackets,proto3" json:"undersizePackets,omitempty"`
-	OversizePackets         uint32   `protobuf:"varint,8,opt,name=oversizePackets,proto3" json:"oversizePackets,omitempty"`
-	Packets64Octets         uint32   `protobuf:"varint,9,opt,name=packets64octets,proto3" json:"packets64octets,omitempty"`
-	Packets65To127Octets    uint32   `protobuf:"varint,10,opt,name=packets65To127octets,proto3" json:"packets65To127octets,omitempty"`
-	Packets128To255Octets   uint32   `protobuf:"varint,11,opt,name=packets128To255Octets,proto3" json:"packets128To255Octets,omitempty"`
-	Packets256To511Octets   uint32   `protobuf:"varint,12,opt,name=packets256To511octets,proto3" json:"packets256To511octets,omitempty"`
-	Packets512To1023Octets  uint32   `protobuf:"varint,13,opt,name=packets512To1023octets,proto3" json:"packets512To1023octets,omitempty"`
-	Packets1024To1518Octets uint32   `protobuf:"varint,14,opt,name=packets1024To1518octets,proto3" json:"packets1024To1518octets,omitempty"`
-	XXX_NoUnkeyedLiteral    struct{} `json:"-"`
-	XXX_unrecognized        []byte   `json:"-"`
-	XXX_sizecache           int32    `json:"-"`
+	state                   protoimpl.MessageState `protogen:"open.v1"`
+	DropEvents              uint32                 `protobuf:"varint,1,opt,name=dropEvents,proto3" json:"dropEvents,omitempty"`
+	Octets                  uint32                 `protobuf:"varint,2,opt,name=octets,proto3" json:"octets,omitempty"`
+	Packets                 uint32                 `protobuf:"varint,3,opt,name=packets,proto3" json:"packets,omitempty"`
+	BroadcastPackets        uint32                 `protobuf:"varint,4,opt,name=broadcastPackets,proto3" json:"broadcastPackets,omitempty"`
+	MulticastPackets        uint32                 `protobuf:"varint,5,opt,name=multicastPackets,proto3" json:"multicastPackets,omitempty"`
+	CrcErroredPackets       uint32                 `protobuf:"varint,6,opt,name=crcErroredPackets,proto3" json:"crcErroredPackets,omitempty"`
+	UndersizePackets        uint32                 `protobuf:"varint,7,opt,name=undersizePackets,proto3" json:"undersizePackets,omitempty"`
+	OversizePackets         uint32                 `protobuf:"varint,8,opt,name=oversizePackets,proto3" json:"oversizePackets,omitempty"`
+	Packets64Octets         uint32                 `protobuf:"varint,9,opt,name=packets64octets,proto3" json:"packets64octets,omitempty"`
+	Packets65To127Octets    uint32                 `protobuf:"varint,10,opt,name=packets65To127octets,proto3" json:"packets65To127octets,omitempty"`
+	Packets128To255Octets   uint32                 `protobuf:"varint,11,opt,name=packets128To255Octets,proto3" json:"packets128To255Octets,omitempty"`
+	Packets256To511Octets   uint32                 `protobuf:"varint,12,opt,name=packets256To511octets,proto3" json:"packets256To511octets,omitempty"`
+	Packets512To1023Octets  uint32                 `protobuf:"varint,13,opt,name=packets512To1023octets,proto3" json:"packets512To1023octets,omitempty"`
+	Packets1024To1518Octets uint32                 `protobuf:"varint,14,opt,name=packets1024To1518octets,proto3" json:"packets1024To1518octets,omitempty"`
+	unknownFields           protoimpl.UnknownFields
+	sizeCache               protoimpl.SizeCache
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) Reset() {
-	*m = GetOnuEthernetBridgePortHistoryResponse{}
+func (x *GetOnuEthernetBridgePortHistoryResponse) Reset() {
+	*x = GetOnuEthernetBridgePortHistoryResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
 }
-func (m *GetOnuEthernetBridgePortHistoryResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuEthernetBridgePortHistoryResponse) ProtoMessage()    {}
+
+func (x *GetOnuEthernetBridgePortHistoryResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuEthernetBridgePortHistoryResponse) ProtoMessage() {}
+
+func (x *GetOnuEthernetBridgePortHistoryResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuEthernetBridgePortHistoryResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuEthernetBridgePortHistoryResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{13}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.Unmarshal(m, b)
-}
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.Merge(m, src)
-}
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.Size(m)
-}
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse proto.InternalMessageInfo
-
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetDropEvents() uint32 {
-	if m != nil {
-		return m.DropEvents
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetDropEvents() uint32 {
+	if x != nil {
+		return x.DropEvents
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetOctets() uint32 {
-	if m != nil {
-		return m.Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetOctets() uint32 {
+	if x != nil {
+		return x.Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets() uint32 {
-	if m != nil {
-		return m.Packets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets() uint32 {
+	if x != nil {
+		return x.Packets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetBroadcastPackets() uint32 {
-	if m != nil {
-		return m.BroadcastPackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetBroadcastPackets() uint32 {
+	if x != nil {
+		return x.BroadcastPackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetMulticastPackets() uint32 {
-	if m != nil {
-		return m.MulticastPackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetMulticastPackets() uint32 {
+	if x != nil {
+		return x.MulticastPackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetCrcErroredPackets() uint32 {
-	if m != nil {
-		return m.CrcErroredPackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetCrcErroredPackets() uint32 {
+	if x != nil {
+		return x.CrcErroredPackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetUndersizePackets() uint32 {
-	if m != nil {
-		return m.UndersizePackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetUndersizePackets() uint32 {
+	if x != nil {
+		return x.UndersizePackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetOversizePackets() uint32 {
-	if m != nil {
-		return m.OversizePackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetOversizePackets() uint32 {
+	if x != nil {
+		return x.OversizePackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets64Octets() uint32 {
-	if m != nil {
-		return m.Packets64Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets64Octets() uint32 {
+	if x != nil {
+		return x.Packets64Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets65To127Octets() uint32 {
-	if m != nil {
-		return m.Packets65To127Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets65To127Octets() uint32 {
+	if x != nil {
+		return x.Packets65To127Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets128To255Octets() uint32 {
-	if m != nil {
-		return m.Packets128To255Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets128To255Octets() uint32 {
+	if x != nil {
+		return x.Packets128To255Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets256To511Octets() uint32 {
-	if m != nil {
-		return m.Packets256To511Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets256To511Octets() uint32 {
+	if x != nil {
+		return x.Packets256To511Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets512To1023Octets() uint32 {
-	if m != nil {
-		return m.Packets512To1023Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets512To1023Octets() uint32 {
+	if x != nil {
+		return x.Packets512To1023Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets1024To1518Octets() uint32 {
-	if m != nil {
-		return m.Packets1024To1518Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets1024To1518Octets() uint32 {
+	if x != nil {
+		return x.Packets1024To1518Octets
 	}
 	return 0
 }
 
 // GetOnuAllocGemHistoryRequest collects GEM and AllocId stats from ONU
 type GetOnuAllocGemHistoryRequest struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuAllocGemHistoryRequest) Reset()         { *m = GetOnuAllocGemHistoryRequest{} }
-func (m *GetOnuAllocGemHistoryRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuAllocGemHistoryRequest) ProtoMessage()    {}
+func (x *GetOnuAllocGemHistoryRequest) Reset() {
+	*x = GetOnuAllocGemHistoryRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuAllocGemHistoryRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuAllocGemHistoryRequest) ProtoMessage() {}
+
+func (x *GetOnuAllocGemHistoryRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuAllocGemHistoryRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuAllocGemHistoryRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{14}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *GetOnuAllocGemHistoryRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuAllocGemHistoryRequest.Unmarshal(m, b)
-}
-func (m *GetOnuAllocGemHistoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuAllocGemHistoryRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuAllocGemHistoryRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuAllocGemHistoryRequest.Merge(m, src)
-}
-func (m *GetOnuAllocGemHistoryRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuAllocGemHistoryRequest.Size(m)
-}
-func (m *GetOnuAllocGemHistoryRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuAllocGemHistoryRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuAllocGemHistoryRequest proto.InternalMessageInfo
-
-func (m *GetOnuAllocGemHistoryRequest) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuAllocGemHistoryRequest) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
 
 type OnuGemPortHistoryData struct {
-	GemId                   uint32   `protobuf:"varint,1,opt,name=gemId,proto3" json:"gemId,omitempty"`
-	TransmittedGEMFrames    uint32   `protobuf:"varint,2,opt,name=transmittedGEMFrames,proto3" json:"transmittedGEMFrames,omitempty"`
-	ReceivedGEMFrames       uint32   `protobuf:"varint,3,opt,name=receivedGEMFrames,proto3" json:"receivedGEMFrames,omitempty"`
-	ReceivedPayloadBytes    uint32   `protobuf:"varint,4,opt,name=receivedPayloadBytes,proto3" json:"receivedPayloadBytes,omitempty"`
-	TransmittedPayloadBytes uint32   `protobuf:"varint,5,opt,name=transmittedPayloadBytes,proto3" json:"transmittedPayloadBytes,omitempty"`
-	EncryptionKeyErrors     uint32   `protobuf:"varint,6,opt,name=encryptionKeyErrors,proto3" json:"encryptionKeyErrors,omitempty"`
-	XXX_NoUnkeyedLiteral    struct{} `json:"-"`
-	XXX_unrecognized        []byte   `json:"-"`
-	XXX_sizecache           int32    `json:"-"`
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	GemId                uint32                 `protobuf:"varint,1,opt,name=gemId,proto3" json:"gemId,omitempty"`
+	TransmittedGEMFrames uint32                 `protobuf:"varint,2,opt,name=transmittedGEMFrames,proto3" json:"transmittedGEMFrames,omitempty"`
+	ReceivedGEMFrames    uint32                 `protobuf:"varint,3,opt,name=receivedGEMFrames,proto3" json:"receivedGEMFrames,omitempty"`
+	// Deprecated: uint32 cannot handle large byte counters and will overflow after ~4GB.
+	// Use received_payload_bytes_64 instead for full 64-bit precision.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	ReceivedPayloadBytes uint32 `protobuf:"varint,4,opt,name=receivedPayloadBytes,proto3" json:"receivedPayloadBytes,omitempty"`
+	// Deprecated: uint32 cannot handle large byte counters and will overflow after ~4GB.
+	// Use transmitted_payload_bytes_64 instead for full 64-bit precision.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	TransmittedPayloadBytes    uint32 `protobuf:"varint,5,opt,name=transmittedPayloadBytes,proto3" json:"transmittedPayloadBytes,omitempty"`
+	EncryptionKeyErrors        uint32 `protobuf:"varint,6,opt,name=encryptionKeyErrors,proto3" json:"encryptionKeyErrors,omitempty"`
+	ReceivedPayloadBytes_64    uint64 `protobuf:"fixed64,7,opt,name=received_payload_bytes_64,json=receivedPayloadBytes64,proto3" json:"received_payload_bytes_64,omitempty"`
+	TransmittedPayloadBytes_64 uint64 `protobuf:"fixed64,8,opt,name=transmitted_payload_bytes_64,json=transmittedPayloadBytes64,proto3" json:"transmitted_payload_bytes_64,omitempty"`
+	unknownFields              protoimpl.UnknownFields
+	sizeCache                  protoimpl.SizeCache
 }
 
-func (m *OnuGemPortHistoryData) Reset()         { *m = OnuGemPortHistoryData{} }
-func (m *OnuGemPortHistoryData) String() string { return proto.CompactTextString(m) }
-func (*OnuGemPortHistoryData) ProtoMessage()    {}
+func (x *OnuGemPortHistoryData) Reset() {
+	*x = OnuGemPortHistoryData{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuGemPortHistoryData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuGemPortHistoryData) ProtoMessage() {}
+
+func (x *OnuGemPortHistoryData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuGemPortHistoryData.ProtoReflect.Descriptor instead.
 func (*OnuGemPortHistoryData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{15}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *OnuGemPortHistoryData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuGemPortHistoryData.Unmarshal(m, b)
-}
-func (m *OnuGemPortHistoryData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuGemPortHistoryData.Marshal(b, m, deterministic)
-}
-func (m *OnuGemPortHistoryData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuGemPortHistoryData.Merge(m, src)
-}
-func (m *OnuGemPortHistoryData) XXX_Size() int {
-	return xxx_messageInfo_OnuGemPortHistoryData.Size(m)
-}
-func (m *OnuGemPortHistoryData) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuGemPortHistoryData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuGemPortHistoryData proto.InternalMessageInfo
-
-func (m *OnuGemPortHistoryData) GetGemId() uint32 {
-	if m != nil {
-		return m.GemId
+func (x *OnuGemPortHistoryData) GetGemId() uint32 {
+	if x != nil {
+		return x.GemId
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetTransmittedGEMFrames() uint32 {
-	if m != nil {
-		return m.TransmittedGEMFrames
+func (x *OnuGemPortHistoryData) GetTransmittedGEMFrames() uint32 {
+	if x != nil {
+		return x.TransmittedGEMFrames
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetReceivedGEMFrames() uint32 {
-	if m != nil {
-		return m.ReceivedGEMFrames
+func (x *OnuGemPortHistoryData) GetReceivedGEMFrames() uint32 {
+	if x != nil {
+		return x.ReceivedGEMFrames
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetReceivedPayloadBytes() uint32 {
-	if m != nil {
-		return m.ReceivedPayloadBytes
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *OnuGemPortHistoryData) GetReceivedPayloadBytes() uint32 {
+	if x != nil {
+		return x.ReceivedPayloadBytes
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetTransmittedPayloadBytes() uint32 {
-	if m != nil {
-		return m.TransmittedPayloadBytes
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *OnuGemPortHistoryData) GetTransmittedPayloadBytes() uint32 {
+	if x != nil {
+		return x.TransmittedPayloadBytes
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetEncryptionKeyErrors() uint32 {
-	if m != nil {
-		return m.EncryptionKeyErrors
+func (x *OnuGemPortHistoryData) GetEncryptionKeyErrors() uint32 {
+	if x != nil {
+		return x.EncryptionKeyErrors
+	}
+	return 0
+}
+
+func (x *OnuGemPortHistoryData) GetReceivedPayloadBytes_64() uint64 {
+	if x != nil {
+		return x.ReceivedPayloadBytes_64
+	}
+	return 0
+}
+
+func (x *OnuGemPortHistoryData) GetTransmittedPayloadBytes_64() uint64 {
+	if x != nil {
+		return x.TransmittedPayloadBytes_64
 	}
 	return 0
 }
 
 type OnuAllocHistoryData struct {
-	AllocId              uint32   `protobuf:"varint,1,opt,name=allocId,proto3" json:"allocId,omitempty"`
-	RxBytes              uint32   `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	AllocId       uint32                 `protobuf:"varint,1,opt,name=allocId,proto3" json:"allocId,omitempty"`
+	RxBytes       uint32                 `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuAllocHistoryData) Reset()         { *m = OnuAllocHistoryData{} }
-func (m *OnuAllocHistoryData) String() string { return proto.CompactTextString(m) }
-func (*OnuAllocHistoryData) ProtoMessage()    {}
+func (x *OnuAllocHistoryData) Reset() {
+	*x = OnuAllocHistoryData{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAllocHistoryData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAllocHistoryData) ProtoMessage() {}
+
+func (x *OnuAllocHistoryData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAllocHistoryData.ProtoReflect.Descriptor instead.
 func (*OnuAllocHistoryData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{16}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *OnuAllocHistoryData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAllocHistoryData.Unmarshal(m, b)
-}
-func (m *OnuAllocHistoryData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAllocHistoryData.Marshal(b, m, deterministic)
-}
-func (m *OnuAllocHistoryData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAllocHistoryData.Merge(m, src)
-}
-func (m *OnuAllocHistoryData) XXX_Size() int {
-	return xxx_messageInfo_OnuAllocHistoryData.Size(m)
-}
-func (m *OnuAllocHistoryData) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAllocHistoryData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAllocHistoryData proto.InternalMessageInfo
-
-func (m *OnuAllocHistoryData) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
+func (x *OnuAllocHistoryData) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
 	}
 	return 0
 }
 
-func (m *OnuAllocHistoryData) GetRxBytes() uint32 {
-	if m != nil {
-		return m.RxBytes
+func (x *OnuAllocHistoryData) GetRxBytes() uint32 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
 type OnuAllocGemHistoryData struct {
-	OnuAllocIdInfo       *OnuAllocHistoryData     `protobuf:"bytes,1,opt,name=onuAllocIdInfo,proto3" json:"onuAllocIdInfo,omitempty"`
-	GemPortInfo          []*OnuGemPortHistoryData `protobuf:"bytes,2,rep,name=gemPortInfo,proto3" json:"gemPortInfo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	state          protoimpl.MessageState   `protogen:"open.v1"`
+	OnuAllocIdInfo *OnuAllocHistoryData     `protobuf:"bytes,1,opt,name=onuAllocIdInfo,proto3" json:"onuAllocIdInfo,omitempty"`
+	GemPortInfo    []*OnuGemPortHistoryData `protobuf:"bytes,2,rep,name=gemPortInfo,proto3" json:"gemPortInfo,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OnuAllocGemHistoryData) Reset()         { *m = OnuAllocGemHistoryData{} }
-func (m *OnuAllocGemHistoryData) String() string { return proto.CompactTextString(m) }
-func (*OnuAllocGemHistoryData) ProtoMessage()    {}
+func (x *OnuAllocGemHistoryData) Reset() {
+	*x = OnuAllocGemHistoryData{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAllocGemHistoryData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAllocGemHistoryData) ProtoMessage() {}
+
+func (x *OnuAllocGemHistoryData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAllocGemHistoryData.ProtoReflect.Descriptor instead.
 func (*OnuAllocGemHistoryData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{17}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *OnuAllocGemHistoryData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAllocGemHistoryData.Unmarshal(m, b)
-}
-func (m *OnuAllocGemHistoryData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAllocGemHistoryData.Marshal(b, m, deterministic)
-}
-func (m *OnuAllocGemHistoryData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAllocGemHistoryData.Merge(m, src)
-}
-func (m *OnuAllocGemHistoryData) XXX_Size() int {
-	return xxx_messageInfo_OnuAllocGemHistoryData.Size(m)
-}
-func (m *OnuAllocGemHistoryData) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAllocGemHistoryData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAllocGemHistoryData proto.InternalMessageInfo
-
-func (m *OnuAllocGemHistoryData) GetOnuAllocIdInfo() *OnuAllocHistoryData {
-	if m != nil {
-		return m.OnuAllocIdInfo
+func (x *OnuAllocGemHistoryData) GetOnuAllocIdInfo() *OnuAllocHistoryData {
+	if x != nil {
+		return x.OnuAllocIdInfo
 	}
 	return nil
 }
 
-func (m *OnuAllocGemHistoryData) GetGemPortInfo() []*OnuGemPortHistoryData {
-	if m != nil {
-		return m.GemPortInfo
+func (x *OnuAllocGemHistoryData) GetGemPortInfo() []*OnuGemPortHistoryData {
+	if x != nil {
+		return x.GemPortInfo
 	}
 	return nil
 }
 
 type GetOnuAllocGemHistoryResponse struct {
+	state                  protoimpl.MessageState    `protogen:"open.v1"`
 	OnuAllocGemHistoryData []*OnuAllocGemHistoryData `protobuf:"bytes,1,rep,name=onuAllocGemHistoryData,proto3" json:"onuAllocGemHistoryData,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{}                  `json:"-"`
-	XXX_unrecognized       []byte                    `json:"-"`
-	XXX_sizecache          int32                     `json:"-"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
 }
 
-func (m *GetOnuAllocGemHistoryResponse) Reset()         { *m = GetOnuAllocGemHistoryResponse{} }
-func (m *GetOnuAllocGemHistoryResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuAllocGemHistoryResponse) ProtoMessage()    {}
+func (x *GetOnuAllocGemHistoryResponse) Reset() {
+	*x = GetOnuAllocGemHistoryResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuAllocGemHistoryResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuAllocGemHistoryResponse) ProtoMessage() {}
+
+func (x *GetOnuAllocGemHistoryResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuAllocGemHistoryResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuAllocGemHistoryResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{18}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *GetOnuAllocGemHistoryResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuAllocGemHistoryResponse.Unmarshal(m, b)
-}
-func (m *GetOnuAllocGemHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuAllocGemHistoryResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuAllocGemHistoryResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuAllocGemHistoryResponse.Merge(m, src)
-}
-func (m *GetOnuAllocGemHistoryResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuAllocGemHistoryResponse.Size(m)
-}
-func (m *GetOnuAllocGemHistoryResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuAllocGemHistoryResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuAllocGemHistoryResponse proto.InternalMessageInfo
-
-func (m *GetOnuAllocGemHistoryResponse) GetOnuAllocGemHistoryData() []*OnuAllocGemHistoryData {
-	if m != nil {
-		return m.OnuAllocGemHistoryData
+func (x *GetOnuAllocGemHistoryResponse) GetOnuAllocGemHistoryData() []*OnuAllocGemHistoryData {
+	if x != nil {
+		return x.OnuAllocGemHistoryData
 	}
 	return nil
 }
 
 type GetOnuFecHistory struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuFecHistory) Reset()         { *m = GetOnuFecHistory{} }
-func (m *GetOnuFecHistory) String() string { return proto.CompactTextString(m) }
-func (*GetOnuFecHistory) ProtoMessage()    {}
+func (x *GetOnuFecHistory) Reset() {
+	*x = GetOnuFecHistory{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuFecHistory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuFecHistory) ProtoMessage() {}
+
+func (x *GetOnuFecHistory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuFecHistory.ProtoReflect.Descriptor instead.
 func (*GetOnuFecHistory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{19}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *GetOnuFecHistory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuFecHistory.Unmarshal(m, b)
-}
-func (m *GetOnuFecHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuFecHistory.Marshal(b, m, deterministic)
-}
-func (m *GetOnuFecHistory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuFecHistory.Merge(m, src)
-}
-func (m *GetOnuFecHistory) XXX_Size() int {
-	return xxx_messageInfo_GetOnuFecHistory.Size(m)
-}
-func (m *GetOnuFecHistory) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuFecHistory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuFecHistory proto.InternalMessageInfo
-
-func (m *GetOnuFecHistory) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuFecHistory) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
 
 type GetOnuFecHistoryResponse struct {
-	CorrectedBytes         uint32   `protobuf:"varint,1,opt,name=correctedBytes,proto3" json:"correctedBytes,omitempty"`
-	CorrectedCodeWords     uint32   `protobuf:"varint,2,opt,name=correctedCodeWords,proto3" json:"correctedCodeWords,omitempty"`
-	FecSeconds             uint32   `protobuf:"varint,3,opt,name=fecSeconds,proto3" json:"fecSeconds,omitempty"`
-	TotalCodeWords         uint32   `protobuf:"varint,4,opt,name=totalCodeWords,proto3" json:"totalCodeWords,omitempty"`
-	UncorrectableCodeWords uint32   `protobuf:"varint,5,opt,name=uncorrectableCodeWords,proto3" json:"uncorrectableCodeWords,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
-	XXX_unrecognized       []byte   `json:"-"`
-	XXX_sizecache          int32    `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Deprecated: uint32 cannot handle large counter values and will overflow.
+	// Use fec_corrected_bytes_64 instead for full 64-bit precision.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	CorrectedBytes uint32 `protobuf:"varint,1,opt,name=correctedBytes,proto3" json:"correctedBytes,omitempty"`
+	// Deprecated: uint32 cannot handle large counter values and will overflow.
+	// Use fec_corrected_code_words_64 instead for full 64-bit precision.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	CorrectedCodeWords uint32 `protobuf:"varint,2,opt,name=correctedCodeWords,proto3" json:"correctedCodeWords,omitempty"`
+	FecSeconds         uint32 `protobuf:"varint,3,opt,name=fecSeconds,proto3" json:"fecSeconds,omitempty"`
+	// Deprecated: uint32 cannot handle large counter values and will overflow.
+	// Use total_code_words_64 instead for full 64-bit precision.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	TotalCodeWords uint32 `protobuf:"varint,4,opt,name=totalCodeWords,proto3" json:"totalCodeWords,omitempty"`
+	// Deprecated: uint32 cannot handle large counter values and will overflow.
+	// Use uncorrectable_code_words_64 instead for full 64-bit precision.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	UncorrectableCodeWords    uint32 `protobuf:"varint,5,opt,name=uncorrectableCodeWords,proto3" json:"uncorrectableCodeWords,omitempty"`
+	FecCorrectedBytes_64      uint64 `protobuf:"fixed64,6,opt,name=fec_corrected_bytes_64,json=fecCorrectedBytes64,proto3" json:"fec_corrected_bytes_64,omitempty"`
+	FecCorrectedCodeWords_64  uint64 `protobuf:"fixed64,7,opt,name=fec_corrected_code_words_64,json=fecCorrectedCodeWords64,proto3" json:"fec_corrected_code_words_64,omitempty"`
+	TotalCodeWords_64         uint64 `protobuf:"fixed64,8,opt,name=total_code_words_64,json=totalCodeWords64,proto3" json:"total_code_words_64,omitempty"`
+	UncorrectableCodeWords_64 uint64 `protobuf:"fixed64,9,opt,name=uncorrectable_code_words_64,json=uncorrectableCodeWords64,proto3" json:"uncorrectable_code_words_64,omitempty"`
+	unknownFields             protoimpl.UnknownFields
+	sizeCache                 protoimpl.SizeCache
 }
 
-func (m *GetOnuFecHistoryResponse) Reset()         { *m = GetOnuFecHistoryResponse{} }
-func (m *GetOnuFecHistoryResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuFecHistoryResponse) ProtoMessage()    {}
+func (x *GetOnuFecHistoryResponse) Reset() {
+	*x = GetOnuFecHistoryResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuFecHistoryResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuFecHistoryResponse) ProtoMessage() {}
+
+func (x *GetOnuFecHistoryResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuFecHistoryResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuFecHistoryResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{20}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *GetOnuFecHistoryResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuFecHistoryResponse.Unmarshal(m, b)
-}
-func (m *GetOnuFecHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuFecHistoryResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuFecHistoryResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuFecHistoryResponse.Merge(m, src)
-}
-func (m *GetOnuFecHistoryResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuFecHistoryResponse.Size(m)
-}
-func (m *GetOnuFecHistoryResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuFecHistoryResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuFecHistoryResponse proto.InternalMessageInfo
-
-func (m *GetOnuFecHistoryResponse) GetCorrectedBytes() uint32 {
-	if m != nil {
-		return m.CorrectedBytes
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *GetOnuFecHistoryResponse) GetCorrectedBytes() uint32 {
+	if x != nil {
+		return x.CorrectedBytes
 	}
 	return 0
 }
 
-func (m *GetOnuFecHistoryResponse) GetCorrectedCodeWords() uint32 {
-	if m != nil {
-		return m.CorrectedCodeWords
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *GetOnuFecHistoryResponse) GetCorrectedCodeWords() uint32 {
+	if x != nil {
+		return x.CorrectedCodeWords
 	}
 	return 0
 }
 
-func (m *GetOnuFecHistoryResponse) GetFecSeconds() uint32 {
-	if m != nil {
-		return m.FecSeconds
+func (x *GetOnuFecHistoryResponse) GetFecSeconds() uint32 {
+	if x != nil {
+		return x.FecSeconds
 	}
 	return 0
 }
 
-func (m *GetOnuFecHistoryResponse) GetTotalCodeWords() uint32 {
-	if m != nil {
-		return m.TotalCodeWords
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *GetOnuFecHistoryResponse) GetTotalCodeWords() uint32 {
+	if x != nil {
+		return x.TotalCodeWords
 	}
 	return 0
 }
 
-func (m *GetOnuFecHistoryResponse) GetUncorrectableCodeWords() uint32 {
-	if m != nil {
-		return m.UncorrectableCodeWords
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *GetOnuFecHistoryResponse) GetUncorrectableCodeWords() uint32 {
+	if x != nil {
+		return x.UncorrectableCodeWords
+	}
+	return 0
+}
+
+func (x *GetOnuFecHistoryResponse) GetFecCorrectedBytes_64() uint64 {
+	if x != nil {
+		return x.FecCorrectedBytes_64
+	}
+	return 0
+}
+
+func (x *GetOnuFecHistoryResponse) GetFecCorrectedCodeWords_64() uint64 {
+	if x != nil {
+		return x.FecCorrectedCodeWords_64
+	}
+	return 0
+}
+
+func (x *GetOnuFecHistoryResponse) GetTotalCodeWords_64() uint64 {
+	if x != nil {
+		return x.TotalCodeWords_64
+	}
+	return 0
+}
+
+func (x *GetOnuFecHistoryResponse) GetUncorrectableCodeWords_64() uint64 {
+	if x != nil {
+		return x.UncorrectableCodeWords_64
 	}
 	return 0
 }
 
 type GetOnuCountersRequest struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId         uint32                 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuCountersRequest) Reset()         { *m = GetOnuCountersRequest{} }
-func (m *GetOnuCountersRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuCountersRequest) ProtoMessage()    {}
+func (x *GetOnuCountersRequest) Reset() {
+	*x = GetOnuCountersRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuCountersRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuCountersRequest) ProtoMessage() {}
+
+func (x *GetOnuCountersRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuCountersRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuCountersRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{21}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{21}
 }
 
-func (m *GetOnuCountersRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuCountersRequest.Unmarshal(m, b)
-}
-func (m *GetOnuCountersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuCountersRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuCountersRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuCountersRequest.Merge(m, src)
-}
-func (m *GetOnuCountersRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuCountersRequest.Size(m)
-}
-func (m *GetOnuCountersRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuCountersRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuCountersRequest proto.InternalMessageInfo
-
-func (m *GetOnuCountersRequest) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *GetOnuCountersRequest) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *GetOnuCountersRequest) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *GetOnuCountersRequest) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
 type GetOmciEthernetFrameExtendedPmRequest struct {
-	OnuDeviceId string `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
+	state       protoimpl.MessageState `protogen:"open.v1"`
+	OnuDeviceId string                 `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
 	// Types that are valid to be assigned to IsUniIndex:
+	//
 	//	*GetOmciEthernetFrameExtendedPmRequest_UniIndex
-	IsUniIndex           isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex `protobuf_oneof:"is_uni_index"`
-	Reset_               bool                                               `protobuf:"varint,3,opt,name=reset,proto3" json:"reset,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                           `json:"-"`
-	XXX_unrecognized     []byte                                             `json:"-"`
-	XXX_sizecache        int32                                              `json:"-"`
+	IsUniIndex    isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex `protobuf_oneof:"is_uni_index"`
+	Reset_        bool                                               `protobuf:"varint,3,opt,name=reset,proto3" json:"reset,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOmciEthernetFrameExtendedPmRequest) Reset()         { *m = GetOmciEthernetFrameExtendedPmRequest{} }
-func (m *GetOmciEthernetFrameExtendedPmRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOmciEthernetFrameExtendedPmRequest) ProtoMessage()    {}
+func (x *GetOmciEthernetFrameExtendedPmRequest) Reset() {
+	*x = GetOmciEthernetFrameExtendedPmRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOmciEthernetFrameExtendedPmRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOmciEthernetFrameExtendedPmRequest) ProtoMessage() {}
+
+func (x *GetOmciEthernetFrameExtendedPmRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOmciEthernetFrameExtendedPmRequest.ProtoReflect.Descriptor instead.
 func (*GetOmciEthernetFrameExtendedPmRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{22}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{22}
 }
 
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.Unmarshal(m, b)
-}
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.Merge(m, src)
-}
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.Size(m)
-}
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest proto.InternalMessageInfo
-
-func (m *GetOmciEthernetFrameExtendedPmRequest) GetOnuDeviceId() string {
-	if m != nil {
-		return m.OnuDeviceId
+func (x *GetOmciEthernetFrameExtendedPmRequest) GetOnuDeviceId() string {
+	if x != nil {
+		return x.OnuDeviceId
 	}
 	return ""
 }
 
+func (x *GetOmciEthernetFrameExtendedPmRequest) GetIsUniIndex() isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex {
+	if x != nil {
+		return x.IsUniIndex
+	}
+	return nil
+}
+
+func (x *GetOmciEthernetFrameExtendedPmRequest) GetUniIndex() uint32 {
+	if x != nil {
+		if x, ok := x.IsUniIndex.(*GetOmciEthernetFrameExtendedPmRequest_UniIndex); ok {
+			return x.UniIndex
+		}
+	}
+	return 0
+}
+
+func (x *GetOmciEthernetFrameExtendedPmRequest) GetReset_() bool {
+	if x != nil {
+		return x.Reset_
+	}
+	return false
+}
+
 type isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex interface {
 	isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex()
 }
 
 type GetOmciEthernetFrameExtendedPmRequest_UniIndex struct {
-	UniIndex uint32 `protobuf:"varint,2,opt,name=uniIndex,proto3,oneof"`
+	UniIndex uint32 `protobuf:"varint,2,opt,name=uniIndex,proto3,oneof"` // Index of the uni starting from 0
 }
 
 func (*GetOmciEthernetFrameExtendedPmRequest_UniIndex) isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex() {
 }
 
-func (m *GetOmciEthernetFrameExtendedPmRequest) GetIsUniIndex() isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex {
-	if m != nil {
-		return m.IsUniIndex
-	}
-	return nil
-}
-
-func (m *GetOmciEthernetFrameExtendedPmRequest) GetUniIndex() uint32 {
-	if x, ok := m.GetIsUniIndex().(*GetOmciEthernetFrameExtendedPmRequest_UniIndex); ok {
-		return x.UniIndex
-	}
-	return 0
-}
-
-func (m *GetOmciEthernetFrameExtendedPmRequest) GetReset_() bool {
-	if m != nil {
-		return m.Reset_
-	}
-	return false
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetOmciEthernetFrameExtendedPmRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetOmciEthernetFrameExtendedPmRequest_UniIndex)(nil),
-	}
-}
-
 // DEPRECATED
 type GetRxPowerRequest struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId         uint32                 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetRxPowerRequest) Reset()         { *m = GetRxPowerRequest{} }
-func (m *GetRxPowerRequest) String() string { return proto.CompactTextString(m) }
-func (*GetRxPowerRequest) ProtoMessage()    {}
+func (x *GetRxPowerRequest) Reset() {
+	*x = GetRxPowerRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetRxPowerRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRxPowerRequest) ProtoMessage() {}
+
+func (x *GetRxPowerRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetRxPowerRequest.ProtoReflect.Descriptor instead.
 func (*GetRxPowerRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{23}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{23}
 }
 
-func (m *GetRxPowerRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetRxPowerRequest.Unmarshal(m, b)
-}
-func (m *GetRxPowerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetRxPowerRequest.Marshal(b, m, deterministic)
-}
-func (m *GetRxPowerRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetRxPowerRequest.Merge(m, src)
-}
-func (m *GetRxPowerRequest) XXX_Size() int {
-	return xxx_messageInfo_GetRxPowerRequest.Size(m)
-}
-func (m *GetRxPowerRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetRxPowerRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetRxPowerRequest proto.InternalMessageInfo
-
-func (m *GetRxPowerRequest) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *GetRxPowerRequest) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *GetRxPowerRequest) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *GetRxPowerRequest) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
 type GetOltRxPowerRequest struct {
-	PortLabel string `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
+	state     protoimpl.MessageState `protogen:"open.v1"`
+	PortLabel string                 `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
 	// onu_sn is optional and if onu_sn is an empty string and the label is
 	// of a PON port then it means that the Rx Power corresponding to all
 	// the ONUs on that PON port is requested. In case the port_label is not
 	// of a PON port, the onu_sn does not have any significance
-	OnuSn                string   `protobuf:"bytes,2,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	OnuSn         string `protobuf:"bytes,2,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOltRxPowerRequest) Reset()         { *m = GetOltRxPowerRequest{} }
-func (m *GetOltRxPowerRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOltRxPowerRequest) ProtoMessage()    {}
+func (x *GetOltRxPowerRequest) Reset() {
+	*x = GetOltRxPowerRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOltRxPowerRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOltRxPowerRequest) ProtoMessage() {}
+
+func (x *GetOltRxPowerRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOltRxPowerRequest.ProtoReflect.Descriptor instead.
 func (*GetOltRxPowerRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{24}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{24}
 }
 
-func (m *GetOltRxPowerRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOltRxPowerRequest.Unmarshal(m, b)
-}
-func (m *GetOltRxPowerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOltRxPowerRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOltRxPowerRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOltRxPowerRequest.Merge(m, src)
-}
-func (m *GetOltRxPowerRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOltRxPowerRequest.Size(m)
-}
-func (m *GetOltRxPowerRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOltRxPowerRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOltRxPowerRequest proto.InternalMessageInfo
-
-func (m *GetOltRxPowerRequest) GetPortLabel() string {
-	if m != nil {
-		return m.PortLabel
+func (x *GetOltRxPowerRequest) GetPortLabel() string {
+	if x != nil {
+		return x.PortLabel
 	}
 	return ""
 }
 
-func (m *GetOltRxPowerRequest) GetOnuSn() string {
-	if m != nil {
-		return m.OnuSn
+func (x *GetOltRxPowerRequest) GetOnuSn() string {
+	if x != nil {
+		return x.OnuSn
 	}
 	return ""
 }
 
 type GetPonStatsRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to PortInfo:
+	//
 	//	*GetPonStatsRequest_PortLabel
 	//	*GetPonStatsRequest_PortId
-	PortInfo             isGetPonStatsRequest_PortInfo `protobuf_oneof:"portInfo"`
-	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
-	XXX_unrecognized     []byte                        `json:"-"`
-	XXX_sizecache        int32                         `json:"-"`
+	PortInfo      isGetPonStatsRequest_PortInfo `protobuf_oneof:"portInfo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetPonStatsRequest) Reset()         { *m = GetPonStatsRequest{} }
-func (m *GetPonStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetPonStatsRequest) ProtoMessage()    {}
+func (x *GetPonStatsRequest) Reset() {
+	*x = GetPonStatsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[25]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetPonStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetPonStatsRequest) ProtoMessage() {}
+
+func (x *GetPonStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[25]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetPonStatsRequest.ProtoReflect.Descriptor instead.
 func (*GetPonStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{25}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{25}
 }
 
-func (m *GetPonStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetPonStatsRequest.Unmarshal(m, b)
-}
-func (m *GetPonStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetPonStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetPonStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetPonStatsRequest.Merge(m, src)
-}
-func (m *GetPonStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetPonStatsRequest.Size(m)
-}
-func (m *GetPonStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetPonStatsRequest.DiscardUnknown(m)
+func (x *GetPonStatsRequest) GetPortInfo() isGetPonStatsRequest_PortInfo {
+	if x != nil {
+		return x.PortInfo
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetPonStatsRequest proto.InternalMessageInfo
+func (x *GetPonStatsRequest) GetPortLabel() string {
+	if x != nil {
+		if x, ok := x.PortInfo.(*GetPonStatsRequest_PortLabel); ok {
+			return x.PortLabel
+		}
+	}
+	return ""
+}
+
+func (x *GetPonStatsRequest) GetPortId() uint32 {
+	if x != nil {
+		if x, ok := x.PortInfo.(*GetPonStatsRequest_PortId); ok {
+			return x.PortId
+		}
+	}
+	return 0
+}
 
 type isGetPonStatsRequest_PortInfo interface {
 	isGetPonStatsRequest_PortInfo()
@@ -1893,116 +2380,123 @@
 
 func (*GetPonStatsRequest_PortId) isGetPonStatsRequest_PortInfo() {}
 
-func (m *GetPonStatsRequest) GetPortInfo() isGetPonStatsRequest_PortInfo {
-	if m != nil {
-		return m.PortInfo
-	}
-	return nil
-}
-
-func (m *GetPonStatsRequest) GetPortLabel() string {
-	if x, ok := m.GetPortInfo().(*GetPonStatsRequest_PortLabel); ok {
-		return x.PortLabel
-	}
-	return ""
-}
-
-func (m *GetPonStatsRequest) GetPortId() uint32 {
-	if x, ok := m.GetPortInfo().(*GetPonStatsRequest_PortId); ok {
-		return x.PortId
-	}
-	return 0
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetPonStatsRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetPonStatsRequest_PortLabel)(nil),
-		(*GetPonStatsRequest_PortId)(nil),
-	}
-}
-
 type GetPonStatsResponse struct {
-	PonPort              uint32                 `protobuf:"varint,1,opt,name=ponPort,proto3" json:"ponPort,omitempty"`
-	PortStatistics       *common.PortStatistics `protobuf:"bytes,2,opt,name=portStatistics,proto3" json:"portStatistics,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	PonPort        uint32                 `protobuf:"varint,1,opt,name=ponPort,proto3" json:"ponPort,omitempty"`
+	PortStatistics *common.PortStatistics `protobuf:"bytes,2,opt,name=portStatistics,proto3" json:"portStatistics,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *GetPonStatsResponse) Reset()         { *m = GetPonStatsResponse{} }
-func (m *GetPonStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetPonStatsResponse) ProtoMessage()    {}
+func (x *GetPonStatsResponse) Reset() {
+	*x = GetPonStatsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[26]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetPonStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetPonStatsResponse) ProtoMessage() {}
+
+func (x *GetPonStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[26]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetPonStatsResponse.ProtoReflect.Descriptor instead.
 func (*GetPonStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{26}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{26}
 }
 
-func (m *GetPonStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetPonStatsResponse.Unmarshal(m, b)
-}
-func (m *GetPonStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetPonStatsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetPonStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetPonStatsResponse.Merge(m, src)
-}
-func (m *GetPonStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetPonStatsResponse.Size(m)
-}
-func (m *GetPonStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetPonStatsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetPonStatsResponse proto.InternalMessageInfo
-
-func (m *GetPonStatsResponse) GetPonPort() uint32 {
-	if m != nil {
-		return m.PonPort
+func (x *GetPonStatsResponse) GetPonPort() uint32 {
+	if x != nil {
+		return x.PonPort
 	}
 	return 0
 }
 
-func (m *GetPonStatsResponse) GetPortStatistics() *common.PortStatistics {
-	if m != nil {
-		return m.PortStatistics
+func (x *GetPonStatsResponse) GetPortStatistics() *common.PortStatistics {
+	if x != nil {
+		return x.PortStatistics
 	}
 	return nil
 }
 
 type GetNNIStatsRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to PortInfo:
+	//
 	//	*GetNNIStatsRequest_PortLabel
 	//	*GetNNIStatsRequest_PortId
-	PortInfo             isGetNNIStatsRequest_PortInfo `protobuf_oneof:"portInfo"`
-	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
-	XXX_unrecognized     []byte                        `json:"-"`
-	XXX_sizecache        int32                         `json:"-"`
+	PortInfo      isGetNNIStatsRequest_PortInfo `protobuf_oneof:"portInfo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetNNIStatsRequest) Reset()         { *m = GetNNIStatsRequest{} }
-func (m *GetNNIStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetNNIStatsRequest) ProtoMessage()    {}
+func (x *GetNNIStatsRequest) Reset() {
+	*x = GetNNIStatsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[27]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetNNIStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNNIStatsRequest) ProtoMessage() {}
+
+func (x *GetNNIStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[27]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNNIStatsRequest.ProtoReflect.Descriptor instead.
 func (*GetNNIStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{27}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{27}
 }
 
-func (m *GetNNIStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetNNIStatsRequest.Unmarshal(m, b)
-}
-func (m *GetNNIStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetNNIStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetNNIStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetNNIStatsRequest.Merge(m, src)
-}
-func (m *GetNNIStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetNNIStatsRequest.Size(m)
-}
-func (m *GetNNIStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetNNIStatsRequest.DiscardUnknown(m)
+func (x *GetNNIStatsRequest) GetPortInfo() isGetNNIStatsRequest_PortInfo {
+	if x != nil {
+		return x.PortInfo
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetNNIStatsRequest proto.InternalMessageInfo
+func (x *GetNNIStatsRequest) GetPortLabel() string {
+	if x != nil {
+		if x, ok := x.PortInfo.(*GetNNIStatsRequest_PortLabel); ok {
+			return x.PortLabel
+		}
+	}
+	return ""
+}
+
+func (x *GetNNIStatsRequest) GetPortId() uint32 {
+	if x != nil {
+		if x, ok := x.PortInfo.(*GetNNIStatsRequest_PortId); ok {
+			return x.PortId
+		}
+	}
+	return 0
+}
 
 type isGetNNIStatsRequest_PortInfo interface {
 	isGetNNIStatsRequest_PortInfo()
@@ -2020,445 +2514,930 @@
 
 func (*GetNNIStatsRequest_PortId) isGetNNIStatsRequest_PortInfo() {}
 
-func (m *GetNNIStatsRequest) GetPortInfo() isGetNNIStatsRequest_PortInfo {
-	if m != nil {
-		return m.PortInfo
-	}
-	return nil
-}
-
-func (m *GetNNIStatsRequest) GetPortLabel() string {
-	if x, ok := m.GetPortInfo().(*GetNNIStatsRequest_PortLabel); ok {
-		return x.PortLabel
-	}
-	return ""
-}
-
-func (m *GetNNIStatsRequest) GetPortId() uint32 {
-	if x, ok := m.GetPortInfo().(*GetNNIStatsRequest_PortId); ok {
-		return x.PortId
-	}
-	return 0
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetNNIStatsRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetNNIStatsRequest_PortLabel)(nil),
-		(*GetNNIStatsRequest_PortId)(nil),
-	}
-}
-
 type GetNNIStatsResponse struct {
-	NniPort              uint32                 `protobuf:"varint,1,opt,name=nniPort,proto3" json:"nniPort,omitempty"`
-	PortStatistics       *common.PortStatistics `protobuf:"bytes,2,opt,name=portStatistics,proto3" json:"portStatistics,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	NniPort        uint32                 `protobuf:"varint,1,opt,name=nniPort,proto3" json:"nniPort,omitempty"`
+	PortStatistics *common.PortStatistics `protobuf:"bytes,2,opt,name=portStatistics,proto3" json:"portStatistics,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *GetNNIStatsResponse) Reset()         { *m = GetNNIStatsResponse{} }
-func (m *GetNNIStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetNNIStatsResponse) ProtoMessage()    {}
+func (x *GetNNIStatsResponse) Reset() {
+	*x = GetNNIStatsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[28]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetNNIStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNNIStatsResponse) ProtoMessage() {}
+
+func (x *GetNNIStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[28]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNNIStatsResponse.ProtoReflect.Descriptor instead.
 func (*GetNNIStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{28}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{28}
 }
 
-func (m *GetNNIStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetNNIStatsResponse.Unmarshal(m, b)
-}
-func (m *GetNNIStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetNNIStatsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetNNIStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetNNIStatsResponse.Merge(m, src)
-}
-func (m *GetNNIStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetNNIStatsResponse.Size(m)
-}
-func (m *GetNNIStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetNNIStatsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetNNIStatsResponse proto.InternalMessageInfo
-
-func (m *GetNNIStatsResponse) GetNniPort() uint32 {
-	if m != nil {
-		return m.NniPort
+func (x *GetNNIStatsResponse) GetNniPort() uint32 {
+	if x != nil {
+		return x.NniPort
 	}
 	return 0
 }
 
-func (m *GetNNIStatsResponse) GetPortStatistics() *common.PortStatistics {
-	if m != nil {
-		return m.PortStatistics
+func (x *GetNNIStatsResponse) GetPortStatistics() *common.PortStatistics {
+	if x != nil {
+		return x.PortStatistics
 	}
 	return nil
 }
 
 // GetOnuStatsFromOltRequest collects GEM and AllocId stats from the OLT for a particular ONU.
 type GetOnuStatsFromOltRequest struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intfId,proto3" json:"intfId,omitempty"`
-	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onuId,proto3" json:"onuId,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intfId,proto3" json:"intfId,omitempty"`
+	OnuId         uint32                 `protobuf:"fixed32,2,opt,name=onuId,proto3" json:"onuId,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuStatsFromOltRequest) Reset()         { *m = GetOnuStatsFromOltRequest{} }
-func (m *GetOnuStatsFromOltRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuStatsFromOltRequest) ProtoMessage()    {}
+func (x *GetOnuStatsFromOltRequest) Reset() {
+	*x = GetOnuStatsFromOltRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[29]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuStatsFromOltRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuStatsFromOltRequest) ProtoMessage() {}
+
+func (x *GetOnuStatsFromOltRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[29]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuStatsFromOltRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuStatsFromOltRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{29}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{29}
 }
 
-func (m *GetOnuStatsFromOltRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuStatsFromOltRequest.Unmarshal(m, b)
-}
-func (m *GetOnuStatsFromOltRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuStatsFromOltRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuStatsFromOltRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuStatsFromOltRequest.Merge(m, src)
-}
-func (m *GetOnuStatsFromOltRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuStatsFromOltRequest.Size(m)
-}
-func (m *GetOnuStatsFromOltRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuStatsFromOltRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuStatsFromOltRequest proto.InternalMessageInfo
-
-func (m *GetOnuStatsFromOltRequest) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *GetOnuStatsFromOltRequest) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *GetOnuStatsFromOltRequest) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *GetOnuStatsFromOltRequest) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
 type OnuGemPortInfoFromOlt struct {
-	GemId                uint32   `protobuf:"varint,1,opt,name=gemId,proto3" json:"gemId,omitempty"`
-	RxPackets            uint64   `protobuf:"varint,2,opt,name=rxPackets,proto3" json:"rxPackets,omitempty"`
-	RxBytes              uint64   `protobuf:"varint,3,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,4,opt,name=txPackets,proto3" json:"txPackets,omitempty"`
-	TxBytes              uint64   `protobuf:"varint,5,opt,name=txBytes,proto3" json:"txBytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GemId         uint32                 `protobuf:"varint,1,opt,name=gemId,proto3" json:"gemId,omitempty"`
+	RxPackets     uint64                 `protobuf:"varint,2,opt,name=rxPackets,proto3" json:"rxPackets,omitempty"`
+	RxBytes       uint64                 `protobuf:"varint,3,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
+	TxPackets     uint64                 `protobuf:"varint,4,opt,name=txPackets,proto3" json:"txPackets,omitempty"`
+	TxBytes       uint64                 `protobuf:"varint,5,opt,name=txBytes,proto3" json:"txBytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuGemPortInfoFromOlt) Reset()         { *m = OnuGemPortInfoFromOlt{} }
-func (m *OnuGemPortInfoFromOlt) String() string { return proto.CompactTextString(m) }
-func (*OnuGemPortInfoFromOlt) ProtoMessage()    {}
+func (x *OnuGemPortInfoFromOlt) Reset() {
+	*x = OnuGemPortInfoFromOlt{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[30]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuGemPortInfoFromOlt) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuGemPortInfoFromOlt) ProtoMessage() {}
+
+func (x *OnuGemPortInfoFromOlt) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[30]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuGemPortInfoFromOlt.ProtoReflect.Descriptor instead.
 func (*OnuGemPortInfoFromOlt) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{30}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{30}
 }
 
-func (m *OnuGemPortInfoFromOlt) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuGemPortInfoFromOlt.Unmarshal(m, b)
-}
-func (m *OnuGemPortInfoFromOlt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuGemPortInfoFromOlt.Marshal(b, m, deterministic)
-}
-func (m *OnuGemPortInfoFromOlt) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuGemPortInfoFromOlt.Merge(m, src)
-}
-func (m *OnuGemPortInfoFromOlt) XXX_Size() int {
-	return xxx_messageInfo_OnuGemPortInfoFromOlt.Size(m)
-}
-func (m *OnuGemPortInfoFromOlt) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuGemPortInfoFromOlt.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuGemPortInfoFromOlt proto.InternalMessageInfo
-
-func (m *OnuGemPortInfoFromOlt) GetGemId() uint32 {
-	if m != nil {
-		return m.GemId
+func (x *OnuGemPortInfoFromOlt) GetGemId() uint32 {
+	if x != nil {
+		return x.GemId
 	}
 	return 0
 }
 
-func (m *OnuGemPortInfoFromOlt) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
+func (x *OnuGemPortInfoFromOlt) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
 	}
 	return 0
 }
 
-func (m *OnuGemPortInfoFromOlt) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *OnuGemPortInfoFromOlt) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
-func (m *OnuGemPortInfoFromOlt) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
+func (x *OnuGemPortInfoFromOlt) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
 	}
 	return 0
 }
 
-func (m *OnuGemPortInfoFromOlt) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
+func (x *OnuGemPortInfoFromOlt) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
 	}
 	return 0
 }
 
 type OnuAllocIdInfoFromOlt struct {
-	AllocId              uint32   `protobuf:"varint,1,opt,name=allocId,proto3" json:"allocId,omitempty"`
-	RxBytes              uint64   `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	AllocId       uint32                 `protobuf:"varint,1,opt,name=allocId,proto3" json:"allocId,omitempty"`
+	RxBytes       uint64                 `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuAllocIdInfoFromOlt) Reset()         { *m = OnuAllocIdInfoFromOlt{} }
-func (m *OnuAllocIdInfoFromOlt) String() string { return proto.CompactTextString(m) }
-func (*OnuAllocIdInfoFromOlt) ProtoMessage()    {}
+func (x *OnuAllocIdInfoFromOlt) Reset() {
+	*x = OnuAllocIdInfoFromOlt{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[31]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAllocIdInfoFromOlt) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAllocIdInfoFromOlt) ProtoMessage() {}
+
+func (x *OnuAllocIdInfoFromOlt) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[31]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAllocIdInfoFromOlt.ProtoReflect.Descriptor instead.
 func (*OnuAllocIdInfoFromOlt) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{31}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{31}
 }
 
-func (m *OnuAllocIdInfoFromOlt) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAllocIdInfoFromOlt.Unmarshal(m, b)
-}
-func (m *OnuAllocIdInfoFromOlt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAllocIdInfoFromOlt.Marshal(b, m, deterministic)
-}
-func (m *OnuAllocIdInfoFromOlt) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAllocIdInfoFromOlt.Merge(m, src)
-}
-func (m *OnuAllocIdInfoFromOlt) XXX_Size() int {
-	return xxx_messageInfo_OnuAllocIdInfoFromOlt.Size(m)
-}
-func (m *OnuAllocIdInfoFromOlt) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAllocIdInfoFromOlt.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAllocIdInfoFromOlt proto.InternalMessageInfo
-
-func (m *OnuAllocIdInfoFromOlt) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
+func (x *OnuAllocIdInfoFromOlt) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
 	}
 	return 0
 }
 
-func (m *OnuAllocIdInfoFromOlt) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *OnuAllocIdInfoFromOlt) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
 type OnuAllocGemStatsFromOltResponse struct {
-	AllocIdInfo          *OnuAllocIdInfoFromOlt   `protobuf:"bytes,1,opt,name=allocIdInfo,proto3" json:"allocIdInfo,omitempty"`
-	GemPortInfo          []*OnuGemPortInfoFromOlt `protobuf:"bytes,2,rep,name=gemPortInfo,proto3" json:"gemPortInfo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	state         protoimpl.MessageState   `protogen:"open.v1"`
+	AllocIdInfo   *OnuAllocIdInfoFromOlt   `protobuf:"bytes,1,opt,name=allocIdInfo,proto3" json:"allocIdInfo,omitempty"`
+	GemPortInfo   []*OnuGemPortInfoFromOlt `protobuf:"bytes,2,rep,name=gemPortInfo,proto3" json:"gemPortInfo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuAllocGemStatsFromOltResponse) Reset()         { *m = OnuAllocGemStatsFromOltResponse{} }
-func (m *OnuAllocGemStatsFromOltResponse) String() string { return proto.CompactTextString(m) }
-func (*OnuAllocGemStatsFromOltResponse) ProtoMessage()    {}
+func (x *OnuAllocGemStatsFromOltResponse) Reset() {
+	*x = OnuAllocGemStatsFromOltResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[32]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAllocGemStatsFromOltResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAllocGemStatsFromOltResponse) ProtoMessage() {}
+
+func (x *OnuAllocGemStatsFromOltResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[32]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAllocGemStatsFromOltResponse.ProtoReflect.Descriptor instead.
 func (*OnuAllocGemStatsFromOltResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{32}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{32}
 }
 
-func (m *OnuAllocGemStatsFromOltResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAllocGemStatsFromOltResponse.Unmarshal(m, b)
-}
-func (m *OnuAllocGemStatsFromOltResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAllocGemStatsFromOltResponse.Marshal(b, m, deterministic)
-}
-func (m *OnuAllocGemStatsFromOltResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAllocGemStatsFromOltResponse.Merge(m, src)
-}
-func (m *OnuAllocGemStatsFromOltResponse) XXX_Size() int {
-	return xxx_messageInfo_OnuAllocGemStatsFromOltResponse.Size(m)
-}
-func (m *OnuAllocGemStatsFromOltResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAllocGemStatsFromOltResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAllocGemStatsFromOltResponse proto.InternalMessageInfo
-
-func (m *OnuAllocGemStatsFromOltResponse) GetAllocIdInfo() *OnuAllocIdInfoFromOlt {
-	if m != nil {
-		return m.AllocIdInfo
+func (x *OnuAllocGemStatsFromOltResponse) GetAllocIdInfo() *OnuAllocIdInfoFromOlt {
+	if x != nil {
+		return x.AllocIdInfo
 	}
 	return nil
 }
 
-func (m *OnuAllocGemStatsFromOltResponse) GetGemPortInfo() []*OnuGemPortInfoFromOlt {
-	if m != nil {
-		return m.GemPortInfo
+func (x *OnuAllocGemStatsFromOltResponse) GetGemPortInfo() []*OnuGemPortInfoFromOlt {
+	if x != nil {
+		return x.GemPortInfo
 	}
 	return nil
 }
 
 type GetOnuStatsFromOltResponse struct {
-	AllocGemStatsInfo    []*OnuAllocGemStatsFromOltResponse `protobuf:"bytes,1,rep,name=allocGemStatsInfo,proto3" json:"allocGemStatsInfo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
-	XXX_unrecognized     []byte                             `json:"-"`
-	XXX_sizecache        int32                              `json:"-"`
+	state             protoimpl.MessageState             `protogen:"open.v1"`
+	AllocGemStatsInfo []*OnuAllocGemStatsFromOltResponse `protobuf:"bytes,1,rep,name=allocGemStatsInfo,proto3" json:"allocGemStatsInfo,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *GetOnuStatsFromOltResponse) Reset()         { *m = GetOnuStatsFromOltResponse{} }
-func (m *GetOnuStatsFromOltResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuStatsFromOltResponse) ProtoMessage()    {}
+func (x *GetOnuStatsFromOltResponse) Reset() {
+	*x = GetOnuStatsFromOltResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[33]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuStatsFromOltResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuStatsFromOltResponse) ProtoMessage() {}
+
+func (x *GetOnuStatsFromOltResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[33]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuStatsFromOltResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuStatsFromOltResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{33}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{33}
 }
 
-func (m *GetOnuStatsFromOltResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuStatsFromOltResponse.Unmarshal(m, b)
-}
-func (m *GetOnuStatsFromOltResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuStatsFromOltResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuStatsFromOltResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuStatsFromOltResponse.Merge(m, src)
-}
-func (m *GetOnuStatsFromOltResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuStatsFromOltResponse.Size(m)
-}
-func (m *GetOnuStatsFromOltResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuStatsFromOltResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuStatsFromOltResponse proto.InternalMessageInfo
-
-func (m *GetOnuStatsFromOltResponse) GetAllocGemStatsInfo() []*OnuAllocGemStatsFromOltResponse {
-	if m != nil {
-		return m.AllocGemStatsInfo
+func (x *GetOnuStatsFromOltResponse) GetAllocGemStatsInfo() []*OnuAllocGemStatsFromOltResponse {
+	if x != nil {
+		return x.AllocGemStatsInfo
 	}
 	return nil
 }
 
 type GetOnuCountersResponse struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to IsIntfId:
+	//
 	//	*GetOnuCountersResponse_IntfId
 	IsIntfId isGetOnuCountersResponse_IsIntfId `protobuf_oneof:"is_intf_id"`
 	// Types that are valid to be assigned to IsOnuId:
+	//
 	//	*GetOnuCountersResponse_OnuId
 	IsOnuId isGetOnuCountersResponse_IsOnuId `protobuf_oneof:"is_onu_id"`
 	// Types that are valid to be assigned to IsPositiveDrift:
+	//
 	//	*GetOnuCountersResponse_PositiveDrift
 	IsPositiveDrift isGetOnuCountersResponse_IsPositiveDrift `protobuf_oneof:"is_positive_drift"`
 	// Types that are valid to be assigned to IsNegativeDrift:
+	//
 	//	*GetOnuCountersResponse_NegativeDrift
 	IsNegativeDrift isGetOnuCountersResponse_IsNegativeDrift `protobuf_oneof:"is_negative_drift"`
 	// Types that are valid to be assigned to IsDelimiterMissDetection:
+	//
 	//	*GetOnuCountersResponse_DelimiterMissDetection
 	IsDelimiterMissDetection isGetOnuCountersResponse_IsDelimiterMissDetection `protobuf_oneof:"is_delimiter_miss_detection"`
 	// Types that are valid to be assigned to IsBipErrors:
+	//
 	//	*GetOnuCountersResponse_BipErrors
 	IsBipErrors isGetOnuCountersResponse_IsBipErrors `protobuf_oneof:"is_bip_errors"`
 	// Types that are valid to be assigned to IsBipUnits:
+	//
 	//	*GetOnuCountersResponse_BipUnits
 	IsBipUnits isGetOnuCountersResponse_IsBipUnits `protobuf_oneof:"is_bip_units"`
 	// Types that are valid to be assigned to IsFecCorrectedSymbols:
+	//
 	//	*GetOnuCountersResponse_FecCorrectedSymbols
 	IsFecCorrectedSymbols isGetOnuCountersResponse_IsFecCorrectedSymbols `protobuf_oneof:"is_fec_corrected_symbols"`
 	// Types that are valid to be assigned to IsFecCodewordsCorrected:
+	//
 	//	*GetOnuCountersResponse_FecCodewordsCorrected
 	IsFecCodewordsCorrected isGetOnuCountersResponse_IsFecCodewordsCorrected `protobuf_oneof:"is_fec_codewords_corrected"`
 	// Types that are valid to be assigned to IsFecCodewordsUncorrectable:
+	//
 	//	*GetOnuCountersResponse_FecCodewordsUncorrectable
 	IsFecCodewordsUncorrectable isGetOnuCountersResponse_IsFecCodewordsUncorrectable `protobuf_oneof:"is_fec_codewords_uncorrectable"`
 	// Types that are valid to be assigned to IsFecCodewords:
+	//
 	//	*GetOnuCountersResponse_FecCodewords
 	IsFecCodewords isGetOnuCountersResponse_IsFecCodewords `protobuf_oneof:"is_fec_codewords"`
 	// Types that are valid to be assigned to IsFecCorrectedUnits:
+	//
 	//	*GetOnuCountersResponse_FecCorrectedUnits
 	IsFecCorrectedUnits isGetOnuCountersResponse_IsFecCorrectedUnits `protobuf_oneof:"is_fec_corrected_units"`
 	// Types that are valid to be assigned to IsXgemKeyErrors:
+	//
 	//	*GetOnuCountersResponse_XgemKeyErrors
 	IsXgemKeyErrors isGetOnuCountersResponse_IsXgemKeyErrors `protobuf_oneof:"is_xgem_key_errors"`
 	// Types that are valid to be assigned to IsXgemLoss:
+	//
 	//	*GetOnuCountersResponse_XgemLoss
 	IsXgemLoss isGetOnuCountersResponse_IsXgemLoss `protobuf_oneof:"is_xgem_loss"`
 	// Types that are valid to be assigned to IsRxPloamsError:
+	//
 	//	*GetOnuCountersResponse_RxPloamsError
 	IsRxPloamsError isGetOnuCountersResponse_IsRxPloamsError `protobuf_oneof:"is_rx_ploams_error"`
 	// Types that are valid to be assigned to IsRxPloamsNonIdle:
+	//
 	//	*GetOnuCountersResponse_RxPloamsNonIdle
 	IsRxPloamsNonIdle isGetOnuCountersResponse_IsRxPloamsNonIdle `protobuf_oneof:"is_rx_ploams_non_idle"`
 	// Types that are valid to be assigned to IsRxOmci:
+	//
 	//	*GetOnuCountersResponse_RxOmci
 	IsRxOmci isGetOnuCountersResponse_IsRxOmci `protobuf_oneof:"is_rx_omci"`
 	// Types that are valid to be assigned to IsTxOmci:
+	//
 	//	*GetOnuCountersResponse_TxOmci
 	IsTxOmci isGetOnuCountersResponse_IsTxOmci `protobuf_oneof:"is_tx_omci"`
 	// Types that are valid to be assigned to IsRxOmciPacketsCrcError:
+	//
 	//	*GetOnuCountersResponse_RxOmciPacketsCrcError
 	IsRxOmciPacketsCrcError isGetOnuCountersResponse_IsRxOmciPacketsCrcError `protobuf_oneof:"is_rx_omci_packets_crc_error"`
 	// Types that are valid to be assigned to IsRxBytes:
+	//
 	//	*GetOnuCountersResponse_RxBytes
 	IsRxBytes isGetOnuCountersResponse_IsRxBytes `protobuf_oneof:"is_rx_bytes"`
 	// Types that are valid to be assigned to IsRxPackets:
+	//
 	//	*GetOnuCountersResponse_RxPackets
 	IsRxPackets isGetOnuCountersResponse_IsRxPackets `protobuf_oneof:"is_rx_packets"`
 	// Types that are valid to be assigned to IsTxBytes:
+	//
 	//	*GetOnuCountersResponse_TxBytes
 	IsTxBytes isGetOnuCountersResponse_IsTxBytes `protobuf_oneof:"is_tx_bytes"`
 	// Types that are valid to be assigned to IsTxPackets:
+	//
 	//	*GetOnuCountersResponse_TxPackets
 	IsTxPackets isGetOnuCountersResponse_IsTxPackets `protobuf_oneof:"is_tx_packets"`
 	// Types that are valid to be assigned to IsBerReported:
+	//
 	//	*GetOnuCountersResponse_BerReported
 	IsBerReported isGetOnuCountersResponse_IsBerReported `protobuf_oneof:"is_ber_reported"`
 	// Types that are valid to be assigned to IsLcdgErrors:
+	//
 	//	*GetOnuCountersResponse_LcdgErrors
 	IsLcdgErrors isGetOnuCountersResponse_IsLcdgErrors `protobuf_oneof:"is_lcdg_errors"`
 	// Types that are valid to be assigned to IsRdiErrors:
+	//
 	//	*GetOnuCountersResponse_RdiErrors
 	IsRdiErrors isGetOnuCountersResponse_IsRdiErrors `protobuf_oneof:"is_rdi_errors"`
 	// Types that are valid to be assigned to IsTimestamp:
+	//
 	//	*GetOnuCountersResponse_Timestamp
-	IsTimestamp          isGetOnuCountersResponse_IsTimestamp `protobuf_oneof:"is_timestamp"`
-	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
-	XXX_unrecognized     []byte                               `json:"-"`
-	XXX_sizecache        int32                                `json:"-"`
+	IsTimestamp isGetOnuCountersResponse_IsTimestamp `protobuf_oneof:"is_timestamp"`
+	// Types that are valid to be assigned to IsHecErrors:
+	//
+	//	*GetOnuCountersResponse_HecErrors
+	IsHecErrors   isGetOnuCountersResponse_IsHecErrors `protobuf_oneof:"is_hec_errors"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuCountersResponse) Reset()         { *m = GetOnuCountersResponse{} }
-func (m *GetOnuCountersResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuCountersResponse) ProtoMessage()    {}
+func (x *GetOnuCountersResponse) Reset() {
+	*x = GetOnuCountersResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[34]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuCountersResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuCountersResponse) ProtoMessage() {}
+
+func (x *GetOnuCountersResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[34]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuCountersResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuCountersResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{34}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{34}
 }
 
-func (m *GetOnuCountersResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuCountersResponse.Unmarshal(m, b)
-}
-func (m *GetOnuCountersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuCountersResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuCountersResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuCountersResponse.Merge(m, src)
-}
-func (m *GetOnuCountersResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuCountersResponse.Size(m)
-}
-func (m *GetOnuCountersResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuCountersResponse.DiscardUnknown(m)
+func (x *GetOnuCountersResponse) GetIsIntfId() isGetOnuCountersResponse_IsIntfId {
+	if x != nil {
+		return x.IsIntfId
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetOnuCountersResponse proto.InternalMessageInfo
+func (x *GetOnuCountersResponse) GetIntfId() uint32 {
+	if x != nil {
+		if x, ok := x.IsIntfId.(*GetOnuCountersResponse_IntfId); ok {
+			return x.IntfId
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsOnuId() isGetOnuCountersResponse_IsOnuId {
+	if x != nil {
+		return x.IsOnuId
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetOnuId() uint32 {
+	if x != nil {
+		if x, ok := x.IsOnuId.(*GetOnuCountersResponse_OnuId); ok {
+			return x.OnuId
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsPositiveDrift() isGetOnuCountersResponse_IsPositiveDrift {
+	if x != nil {
+		return x.IsPositiveDrift
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetPositiveDrift() uint64 {
+	if x != nil {
+		if x, ok := x.IsPositiveDrift.(*GetOnuCountersResponse_PositiveDrift); ok {
+			return x.PositiveDrift
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsNegativeDrift() isGetOnuCountersResponse_IsNegativeDrift {
+	if x != nil {
+		return x.IsNegativeDrift
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetNegativeDrift() uint64 {
+	if x != nil {
+		if x, ok := x.IsNegativeDrift.(*GetOnuCountersResponse_NegativeDrift); ok {
+			return x.NegativeDrift
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsDelimiterMissDetection() isGetOnuCountersResponse_IsDelimiterMissDetection {
+	if x != nil {
+		return x.IsDelimiterMissDetection
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetDelimiterMissDetection() uint64 {
+	if x != nil {
+		if x, ok := x.IsDelimiterMissDetection.(*GetOnuCountersResponse_DelimiterMissDetection); ok {
+			return x.DelimiterMissDetection
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsBipErrors() isGetOnuCountersResponse_IsBipErrors {
+	if x != nil {
+		return x.IsBipErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetBipErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsBipErrors.(*GetOnuCountersResponse_BipErrors); ok {
+			return x.BipErrors
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsBipUnits() isGetOnuCountersResponse_IsBipUnits {
+	if x != nil {
+		return x.IsBipUnits
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetBipUnits() uint64 {
+	if x != nil {
+		if x, ok := x.IsBipUnits.(*GetOnuCountersResponse_BipUnits); ok {
+			return x.BipUnits
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCorrectedSymbols() isGetOnuCountersResponse_IsFecCorrectedSymbols {
+	if x != nil {
+		return x.IsFecCorrectedSymbols
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCorrectedSymbols() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCorrectedSymbols.(*GetOnuCountersResponse_FecCorrectedSymbols); ok {
+			return x.FecCorrectedSymbols
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCodewordsCorrected() isGetOnuCountersResponse_IsFecCodewordsCorrected {
+	if x != nil {
+		return x.IsFecCodewordsCorrected
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCodewordsCorrected() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCodewordsCorrected.(*GetOnuCountersResponse_FecCodewordsCorrected); ok {
+			return x.FecCodewordsCorrected
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCodewordsUncorrectable() isGetOnuCountersResponse_IsFecCodewordsUncorrectable {
+	if x != nil {
+		return x.IsFecCodewordsUncorrectable
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCodewordsUncorrectable() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCodewordsUncorrectable.(*GetOnuCountersResponse_FecCodewordsUncorrectable); ok {
+			return x.FecCodewordsUncorrectable
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCodewords() isGetOnuCountersResponse_IsFecCodewords {
+	if x != nil {
+		return x.IsFecCodewords
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCodewords() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCodewords.(*GetOnuCountersResponse_FecCodewords); ok {
+			return x.FecCodewords
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCorrectedUnits() isGetOnuCountersResponse_IsFecCorrectedUnits {
+	if x != nil {
+		return x.IsFecCorrectedUnits
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCorrectedUnits() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCorrectedUnits.(*GetOnuCountersResponse_FecCorrectedUnits); ok {
+			return x.FecCorrectedUnits
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsXgemKeyErrors() isGetOnuCountersResponse_IsXgemKeyErrors {
+	if x != nil {
+		return x.IsXgemKeyErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetXgemKeyErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsXgemKeyErrors.(*GetOnuCountersResponse_XgemKeyErrors); ok {
+			return x.XgemKeyErrors
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsXgemLoss() isGetOnuCountersResponse_IsXgemLoss {
+	if x != nil {
+		return x.IsXgemLoss
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetXgemLoss() uint64 {
+	if x != nil {
+		if x, ok := x.IsXgemLoss.(*GetOnuCountersResponse_XgemLoss); ok {
+			return x.XgemLoss
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxPloamsError() isGetOnuCountersResponse_IsRxPloamsError {
+	if x != nil {
+		return x.IsRxPloamsError
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxPloamsError() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxPloamsError.(*GetOnuCountersResponse_RxPloamsError); ok {
+			return x.RxPloamsError
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxPloamsNonIdle() isGetOnuCountersResponse_IsRxPloamsNonIdle {
+	if x != nil {
+		return x.IsRxPloamsNonIdle
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxPloamsNonIdle() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxPloamsNonIdle.(*GetOnuCountersResponse_RxPloamsNonIdle); ok {
+			return x.RxPloamsNonIdle
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxOmci() isGetOnuCountersResponse_IsRxOmci {
+	if x != nil {
+		return x.IsRxOmci
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxOmci() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxOmci.(*GetOnuCountersResponse_RxOmci); ok {
+			return x.RxOmci
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsTxOmci() isGetOnuCountersResponse_IsTxOmci {
+	if x != nil {
+		return x.IsTxOmci
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetTxOmci() uint64 {
+	if x != nil {
+		if x, ok := x.IsTxOmci.(*GetOnuCountersResponse_TxOmci); ok {
+			return x.TxOmci
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxOmciPacketsCrcError() isGetOnuCountersResponse_IsRxOmciPacketsCrcError {
+	if x != nil {
+		return x.IsRxOmciPacketsCrcError
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxOmciPacketsCrcError() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxOmciPacketsCrcError.(*GetOnuCountersResponse_RxOmciPacketsCrcError); ok {
+			return x.RxOmciPacketsCrcError
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxBytes() isGetOnuCountersResponse_IsRxBytes {
+	if x != nil {
+		return x.IsRxBytes
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxBytes() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxBytes.(*GetOnuCountersResponse_RxBytes); ok {
+			return x.RxBytes
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxPackets() isGetOnuCountersResponse_IsRxPackets {
+	if x != nil {
+		return x.IsRxPackets
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxPackets() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxPackets.(*GetOnuCountersResponse_RxPackets); ok {
+			return x.RxPackets
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsTxBytes() isGetOnuCountersResponse_IsTxBytes {
+	if x != nil {
+		return x.IsTxBytes
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetTxBytes() uint64 {
+	if x != nil {
+		if x, ok := x.IsTxBytes.(*GetOnuCountersResponse_TxBytes); ok {
+			return x.TxBytes
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsTxPackets() isGetOnuCountersResponse_IsTxPackets {
+	if x != nil {
+		return x.IsTxPackets
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetTxPackets() uint64 {
+	if x != nil {
+		if x, ok := x.IsTxPackets.(*GetOnuCountersResponse_TxPackets); ok {
+			return x.TxPackets
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsBerReported() isGetOnuCountersResponse_IsBerReported {
+	if x != nil {
+		return x.IsBerReported
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetBerReported() uint64 {
+	if x != nil {
+		if x, ok := x.IsBerReported.(*GetOnuCountersResponse_BerReported); ok {
+			return x.BerReported
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsLcdgErrors() isGetOnuCountersResponse_IsLcdgErrors {
+	if x != nil {
+		return x.IsLcdgErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetLcdgErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsLcdgErrors.(*GetOnuCountersResponse_LcdgErrors); ok {
+			return x.LcdgErrors
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRdiErrors() isGetOnuCountersResponse_IsRdiErrors {
+	if x != nil {
+		return x.IsRdiErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRdiErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsRdiErrors.(*GetOnuCountersResponse_RdiErrors); ok {
+			return x.RdiErrors
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsTimestamp() isGetOnuCountersResponse_IsTimestamp {
+	if x != nil {
+		return x.IsTimestamp
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetTimestamp() uint32 {
+	if x != nil {
+		if x, ok := x.IsTimestamp.(*GetOnuCountersResponse_Timestamp); ok {
+			return x.Timestamp
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsHecErrors() isGetOnuCountersResponse_IsHecErrors {
+	if x != nil {
+		return x.IsHecErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetHecErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsHecErrors.(*GetOnuCountersResponse_HecErrors); ok {
+			return x.HecErrors
+		}
+	}
+	return 0
+}
 
 type isGetOnuCountersResponse_IsIntfId interface {
 	isGetOnuCountersResponse_IsIntfId()
@@ -2470,20 +3449,6 @@
 
 func (*GetOnuCountersResponse_IntfId) isGetOnuCountersResponse_IsIntfId() {}
 
-func (m *GetOnuCountersResponse) GetIsIntfId() isGetOnuCountersResponse_IsIntfId {
-	if m != nil {
-		return m.IsIntfId
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetIntfId() uint32 {
-	if x, ok := m.GetIsIntfId().(*GetOnuCountersResponse_IntfId); ok {
-		return x.IntfId
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsOnuId interface {
 	isGetOnuCountersResponse_IsOnuId()
 }
@@ -2494,20 +3459,6 @@
 
 func (*GetOnuCountersResponse_OnuId) isGetOnuCountersResponse_IsOnuId() {}
 
-func (m *GetOnuCountersResponse) GetIsOnuId() isGetOnuCountersResponse_IsOnuId {
-	if m != nil {
-		return m.IsOnuId
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetOnuId() uint32 {
-	if x, ok := m.GetIsOnuId().(*GetOnuCountersResponse_OnuId); ok {
-		return x.OnuId
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsPositiveDrift interface {
 	isGetOnuCountersResponse_IsPositiveDrift()
 }
@@ -2518,20 +3469,6 @@
 
 func (*GetOnuCountersResponse_PositiveDrift) isGetOnuCountersResponse_IsPositiveDrift() {}
 
-func (m *GetOnuCountersResponse) GetIsPositiveDrift() isGetOnuCountersResponse_IsPositiveDrift {
-	if m != nil {
-		return m.IsPositiveDrift
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetPositiveDrift() uint64 {
-	if x, ok := m.GetIsPositiveDrift().(*GetOnuCountersResponse_PositiveDrift); ok {
-		return x.PositiveDrift
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsNegativeDrift interface {
 	isGetOnuCountersResponse_IsNegativeDrift()
 }
@@ -2542,20 +3479,6 @@
 
 func (*GetOnuCountersResponse_NegativeDrift) isGetOnuCountersResponse_IsNegativeDrift() {}
 
-func (m *GetOnuCountersResponse) GetIsNegativeDrift() isGetOnuCountersResponse_IsNegativeDrift {
-	if m != nil {
-		return m.IsNegativeDrift
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetNegativeDrift() uint64 {
-	if x, ok := m.GetIsNegativeDrift().(*GetOnuCountersResponse_NegativeDrift); ok {
-		return x.NegativeDrift
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsDelimiterMissDetection interface {
 	isGetOnuCountersResponse_IsDelimiterMissDetection()
 }
@@ -2567,20 +3490,6 @@
 func (*GetOnuCountersResponse_DelimiterMissDetection) isGetOnuCountersResponse_IsDelimiterMissDetection() {
 }
 
-func (m *GetOnuCountersResponse) GetIsDelimiterMissDetection() isGetOnuCountersResponse_IsDelimiterMissDetection {
-	if m != nil {
-		return m.IsDelimiterMissDetection
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetDelimiterMissDetection() uint64 {
-	if x, ok := m.GetIsDelimiterMissDetection().(*GetOnuCountersResponse_DelimiterMissDetection); ok {
-		return x.DelimiterMissDetection
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsBipErrors interface {
 	isGetOnuCountersResponse_IsBipErrors()
 }
@@ -2591,20 +3500,6 @@
 
 func (*GetOnuCountersResponse_BipErrors) isGetOnuCountersResponse_IsBipErrors() {}
 
-func (m *GetOnuCountersResponse) GetIsBipErrors() isGetOnuCountersResponse_IsBipErrors {
-	if m != nil {
-		return m.IsBipErrors
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetBipErrors() uint64 {
-	if x, ok := m.GetIsBipErrors().(*GetOnuCountersResponse_BipErrors); ok {
-		return x.BipErrors
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsBipUnits interface {
 	isGetOnuCountersResponse_IsBipUnits()
 }
@@ -2615,20 +3510,6 @@
 
 func (*GetOnuCountersResponse_BipUnits) isGetOnuCountersResponse_IsBipUnits() {}
 
-func (m *GetOnuCountersResponse) GetIsBipUnits() isGetOnuCountersResponse_IsBipUnits {
-	if m != nil {
-		return m.IsBipUnits
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetBipUnits() uint64 {
-	if x, ok := m.GetIsBipUnits().(*GetOnuCountersResponse_BipUnits); ok {
-		return x.BipUnits
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCorrectedSymbols interface {
 	isGetOnuCountersResponse_IsFecCorrectedSymbols()
 }
@@ -2639,20 +3520,6 @@
 
 func (*GetOnuCountersResponse_FecCorrectedSymbols) isGetOnuCountersResponse_IsFecCorrectedSymbols() {}
 
-func (m *GetOnuCountersResponse) GetIsFecCorrectedSymbols() isGetOnuCountersResponse_IsFecCorrectedSymbols {
-	if m != nil {
-		return m.IsFecCorrectedSymbols
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCorrectedSymbols() uint64 {
-	if x, ok := m.GetIsFecCorrectedSymbols().(*GetOnuCountersResponse_FecCorrectedSymbols); ok {
-		return x.FecCorrectedSymbols
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCodewordsCorrected interface {
 	isGetOnuCountersResponse_IsFecCodewordsCorrected()
 }
@@ -2664,20 +3531,6 @@
 func (*GetOnuCountersResponse_FecCodewordsCorrected) isGetOnuCountersResponse_IsFecCodewordsCorrected() {
 }
 
-func (m *GetOnuCountersResponse) GetIsFecCodewordsCorrected() isGetOnuCountersResponse_IsFecCodewordsCorrected {
-	if m != nil {
-		return m.IsFecCodewordsCorrected
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCodewordsCorrected() uint64 {
-	if x, ok := m.GetIsFecCodewordsCorrected().(*GetOnuCountersResponse_FecCodewordsCorrected); ok {
-		return x.FecCodewordsCorrected
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCodewordsUncorrectable interface {
 	isGetOnuCountersResponse_IsFecCodewordsUncorrectable()
 }
@@ -2689,20 +3542,6 @@
 func (*GetOnuCountersResponse_FecCodewordsUncorrectable) isGetOnuCountersResponse_IsFecCodewordsUncorrectable() {
 }
 
-func (m *GetOnuCountersResponse) GetIsFecCodewordsUncorrectable() isGetOnuCountersResponse_IsFecCodewordsUncorrectable {
-	if m != nil {
-		return m.IsFecCodewordsUncorrectable
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCodewordsUncorrectable() uint64 {
-	if x, ok := m.GetIsFecCodewordsUncorrectable().(*GetOnuCountersResponse_FecCodewordsUncorrectable); ok {
-		return x.FecCodewordsUncorrectable
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCodewords interface {
 	isGetOnuCountersResponse_IsFecCodewords()
 }
@@ -2713,20 +3552,6 @@
 
 func (*GetOnuCountersResponse_FecCodewords) isGetOnuCountersResponse_IsFecCodewords() {}
 
-func (m *GetOnuCountersResponse) GetIsFecCodewords() isGetOnuCountersResponse_IsFecCodewords {
-	if m != nil {
-		return m.IsFecCodewords
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCodewords() uint64 {
-	if x, ok := m.GetIsFecCodewords().(*GetOnuCountersResponse_FecCodewords); ok {
-		return x.FecCodewords
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCorrectedUnits interface {
 	isGetOnuCountersResponse_IsFecCorrectedUnits()
 }
@@ -2737,20 +3562,6 @@
 
 func (*GetOnuCountersResponse_FecCorrectedUnits) isGetOnuCountersResponse_IsFecCorrectedUnits() {}
 
-func (m *GetOnuCountersResponse) GetIsFecCorrectedUnits() isGetOnuCountersResponse_IsFecCorrectedUnits {
-	if m != nil {
-		return m.IsFecCorrectedUnits
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCorrectedUnits() uint64 {
-	if x, ok := m.GetIsFecCorrectedUnits().(*GetOnuCountersResponse_FecCorrectedUnits); ok {
-		return x.FecCorrectedUnits
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsXgemKeyErrors interface {
 	isGetOnuCountersResponse_IsXgemKeyErrors()
 }
@@ -2761,20 +3572,6 @@
 
 func (*GetOnuCountersResponse_XgemKeyErrors) isGetOnuCountersResponse_IsXgemKeyErrors() {}
 
-func (m *GetOnuCountersResponse) GetIsXgemKeyErrors() isGetOnuCountersResponse_IsXgemKeyErrors {
-	if m != nil {
-		return m.IsXgemKeyErrors
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetXgemKeyErrors() uint64 {
-	if x, ok := m.GetIsXgemKeyErrors().(*GetOnuCountersResponse_XgemKeyErrors); ok {
-		return x.XgemKeyErrors
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsXgemLoss interface {
 	isGetOnuCountersResponse_IsXgemLoss()
 }
@@ -2785,20 +3582,6 @@
 
 func (*GetOnuCountersResponse_XgemLoss) isGetOnuCountersResponse_IsXgemLoss() {}
 
-func (m *GetOnuCountersResponse) GetIsXgemLoss() isGetOnuCountersResponse_IsXgemLoss {
-	if m != nil {
-		return m.IsXgemLoss
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetXgemLoss() uint64 {
-	if x, ok := m.GetIsXgemLoss().(*GetOnuCountersResponse_XgemLoss); ok {
-		return x.XgemLoss
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxPloamsError interface {
 	isGetOnuCountersResponse_IsRxPloamsError()
 }
@@ -2809,20 +3592,6 @@
 
 func (*GetOnuCountersResponse_RxPloamsError) isGetOnuCountersResponse_IsRxPloamsError() {}
 
-func (m *GetOnuCountersResponse) GetIsRxPloamsError() isGetOnuCountersResponse_IsRxPloamsError {
-	if m != nil {
-		return m.IsRxPloamsError
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxPloamsError() uint64 {
-	if x, ok := m.GetIsRxPloamsError().(*GetOnuCountersResponse_RxPloamsError); ok {
-		return x.RxPloamsError
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxPloamsNonIdle interface {
 	isGetOnuCountersResponse_IsRxPloamsNonIdle()
 }
@@ -2833,20 +3602,6 @@
 
 func (*GetOnuCountersResponse_RxPloamsNonIdle) isGetOnuCountersResponse_IsRxPloamsNonIdle() {}
 
-func (m *GetOnuCountersResponse) GetIsRxPloamsNonIdle() isGetOnuCountersResponse_IsRxPloamsNonIdle {
-	if m != nil {
-		return m.IsRxPloamsNonIdle
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxPloamsNonIdle() uint64 {
-	if x, ok := m.GetIsRxPloamsNonIdle().(*GetOnuCountersResponse_RxPloamsNonIdle); ok {
-		return x.RxPloamsNonIdle
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxOmci interface {
 	isGetOnuCountersResponse_IsRxOmci()
 }
@@ -2857,20 +3612,6 @@
 
 func (*GetOnuCountersResponse_RxOmci) isGetOnuCountersResponse_IsRxOmci() {}
 
-func (m *GetOnuCountersResponse) GetIsRxOmci() isGetOnuCountersResponse_IsRxOmci {
-	if m != nil {
-		return m.IsRxOmci
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxOmci() uint64 {
-	if x, ok := m.GetIsRxOmci().(*GetOnuCountersResponse_RxOmci); ok {
-		return x.RxOmci
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsTxOmci interface {
 	isGetOnuCountersResponse_IsTxOmci()
 }
@@ -2881,20 +3622,6 @@
 
 func (*GetOnuCountersResponse_TxOmci) isGetOnuCountersResponse_IsTxOmci() {}
 
-func (m *GetOnuCountersResponse) GetIsTxOmci() isGetOnuCountersResponse_IsTxOmci {
-	if m != nil {
-		return m.IsTxOmci
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetTxOmci() uint64 {
-	if x, ok := m.GetIsTxOmci().(*GetOnuCountersResponse_TxOmci); ok {
-		return x.TxOmci
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxOmciPacketsCrcError interface {
 	isGetOnuCountersResponse_IsRxOmciPacketsCrcError()
 }
@@ -2906,20 +3633,6 @@
 func (*GetOnuCountersResponse_RxOmciPacketsCrcError) isGetOnuCountersResponse_IsRxOmciPacketsCrcError() {
 }
 
-func (m *GetOnuCountersResponse) GetIsRxOmciPacketsCrcError() isGetOnuCountersResponse_IsRxOmciPacketsCrcError {
-	if m != nil {
-		return m.IsRxOmciPacketsCrcError
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxOmciPacketsCrcError() uint64 {
-	if x, ok := m.GetIsRxOmciPacketsCrcError().(*GetOnuCountersResponse_RxOmciPacketsCrcError); ok {
-		return x.RxOmciPacketsCrcError
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxBytes interface {
 	isGetOnuCountersResponse_IsRxBytes()
 }
@@ -2930,20 +3643,6 @@
 
 func (*GetOnuCountersResponse_RxBytes) isGetOnuCountersResponse_IsRxBytes() {}
 
-func (m *GetOnuCountersResponse) GetIsRxBytes() isGetOnuCountersResponse_IsRxBytes {
-	if m != nil {
-		return m.IsRxBytes
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxBytes() uint64 {
-	if x, ok := m.GetIsRxBytes().(*GetOnuCountersResponse_RxBytes); ok {
-		return x.RxBytes
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxPackets interface {
 	isGetOnuCountersResponse_IsRxPackets()
 }
@@ -2954,20 +3653,6 @@
 
 func (*GetOnuCountersResponse_RxPackets) isGetOnuCountersResponse_IsRxPackets() {}
 
-func (m *GetOnuCountersResponse) GetIsRxPackets() isGetOnuCountersResponse_IsRxPackets {
-	if m != nil {
-		return m.IsRxPackets
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxPackets() uint64 {
-	if x, ok := m.GetIsRxPackets().(*GetOnuCountersResponse_RxPackets); ok {
-		return x.RxPackets
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsTxBytes interface {
 	isGetOnuCountersResponse_IsTxBytes()
 }
@@ -2978,20 +3663,6 @@
 
 func (*GetOnuCountersResponse_TxBytes) isGetOnuCountersResponse_IsTxBytes() {}
 
-func (m *GetOnuCountersResponse) GetIsTxBytes() isGetOnuCountersResponse_IsTxBytes {
-	if m != nil {
-		return m.IsTxBytes
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetTxBytes() uint64 {
-	if x, ok := m.GetIsTxBytes().(*GetOnuCountersResponse_TxBytes); ok {
-		return x.TxBytes
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsTxPackets interface {
 	isGetOnuCountersResponse_IsTxPackets()
 }
@@ -3002,20 +3673,6 @@
 
 func (*GetOnuCountersResponse_TxPackets) isGetOnuCountersResponse_IsTxPackets() {}
 
-func (m *GetOnuCountersResponse) GetIsTxPackets() isGetOnuCountersResponse_IsTxPackets {
-	if m != nil {
-		return m.IsTxPackets
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetTxPackets() uint64 {
-	if x, ok := m.GetIsTxPackets().(*GetOnuCountersResponse_TxPackets); ok {
-		return x.TxPackets
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsBerReported interface {
 	isGetOnuCountersResponse_IsBerReported()
 }
@@ -3026,20 +3683,6 @@
 
 func (*GetOnuCountersResponse_BerReported) isGetOnuCountersResponse_IsBerReported() {}
 
-func (m *GetOnuCountersResponse) GetIsBerReported() isGetOnuCountersResponse_IsBerReported {
-	if m != nil {
-		return m.IsBerReported
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetBerReported() uint64 {
-	if x, ok := m.GetIsBerReported().(*GetOnuCountersResponse_BerReported); ok {
-		return x.BerReported
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsLcdgErrors interface {
 	isGetOnuCountersResponse_IsLcdgErrors()
 }
@@ -3050,20 +3693,6 @@
 
 func (*GetOnuCountersResponse_LcdgErrors) isGetOnuCountersResponse_IsLcdgErrors() {}
 
-func (m *GetOnuCountersResponse) GetIsLcdgErrors() isGetOnuCountersResponse_IsLcdgErrors {
-	if m != nil {
-		return m.IsLcdgErrors
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetLcdgErrors() uint64 {
-	if x, ok := m.GetIsLcdgErrors().(*GetOnuCountersResponse_LcdgErrors); ok {
-		return x.LcdgErrors
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRdiErrors interface {
 	isGetOnuCountersResponse_IsRdiErrors()
 }
@@ -3074,500 +3703,479 @@
 
 func (*GetOnuCountersResponse_RdiErrors) isGetOnuCountersResponse_IsRdiErrors() {}
 
-func (m *GetOnuCountersResponse) GetIsRdiErrors() isGetOnuCountersResponse_IsRdiErrors {
-	if m != nil {
-		return m.IsRdiErrors
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRdiErrors() uint64 {
-	if x, ok := m.GetIsRdiErrors().(*GetOnuCountersResponse_RdiErrors); ok {
-		return x.RdiErrors
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsTimestamp interface {
 	isGetOnuCountersResponse_IsTimestamp()
 }
 
 type GetOnuCountersResponse_Timestamp struct {
+	// reported timestamp in seconds since epoch
 	Timestamp uint32 `protobuf:"fixed32,27,opt,name=timestamp,proto3,oneof"`
 }
 
 func (*GetOnuCountersResponse_Timestamp) isGetOnuCountersResponse_IsTimestamp() {}
 
-func (m *GetOnuCountersResponse) GetIsTimestamp() isGetOnuCountersResponse_IsTimestamp {
-	if m != nil {
-		return m.IsTimestamp
-	}
-	return nil
+type isGetOnuCountersResponse_IsHecErrors interface {
+	isGetOnuCountersResponse_IsHecErrors()
 }
 
-func (m *GetOnuCountersResponse) GetTimestamp() uint32 {
-	if x, ok := m.GetIsTimestamp().(*GetOnuCountersResponse_Timestamp); ok {
-		return x.Timestamp
-	}
-	return 0
+type GetOnuCountersResponse_HecErrors struct {
+	HecErrors uint64 `protobuf:"fixed64,28,opt,name=hec_errors,json=hecErrors,proto3,oneof"`
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetOnuCountersResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetOnuCountersResponse_IntfId)(nil),
-		(*GetOnuCountersResponse_OnuId)(nil),
-		(*GetOnuCountersResponse_PositiveDrift)(nil),
-		(*GetOnuCountersResponse_NegativeDrift)(nil),
-		(*GetOnuCountersResponse_DelimiterMissDetection)(nil),
-		(*GetOnuCountersResponse_BipErrors)(nil),
-		(*GetOnuCountersResponse_BipUnits)(nil),
-		(*GetOnuCountersResponse_FecCorrectedSymbols)(nil),
-		(*GetOnuCountersResponse_FecCodewordsCorrected)(nil),
-		(*GetOnuCountersResponse_FecCodewordsUncorrectable)(nil),
-		(*GetOnuCountersResponse_FecCodewords)(nil),
-		(*GetOnuCountersResponse_FecCorrectedUnits)(nil),
-		(*GetOnuCountersResponse_XgemKeyErrors)(nil),
-		(*GetOnuCountersResponse_XgemLoss)(nil),
-		(*GetOnuCountersResponse_RxPloamsError)(nil),
-		(*GetOnuCountersResponse_RxPloamsNonIdle)(nil),
-		(*GetOnuCountersResponse_RxOmci)(nil),
-		(*GetOnuCountersResponse_TxOmci)(nil),
-		(*GetOnuCountersResponse_RxOmciPacketsCrcError)(nil),
-		(*GetOnuCountersResponse_RxBytes)(nil),
-		(*GetOnuCountersResponse_RxPackets)(nil),
-		(*GetOnuCountersResponse_TxBytes)(nil),
-		(*GetOnuCountersResponse_TxPackets)(nil),
-		(*GetOnuCountersResponse_BerReported)(nil),
-		(*GetOnuCountersResponse_LcdgErrors)(nil),
-		(*GetOnuCountersResponse_RdiErrors)(nil),
-		(*GetOnuCountersResponse_Timestamp)(nil),
-	}
-}
+func (*GetOnuCountersResponse_HecErrors) isGetOnuCountersResponse_IsHecErrors() {}
 
 type OmciEthernetFrameExtendedPm struct {
-	DropEvents               uint64   `protobuf:"fixed64,1,opt,name=drop_events,json=dropEvents,proto3" json:"drop_events,omitempty"`
-	Octets                   uint64   `protobuf:"fixed64,2,opt,name=octets,proto3" json:"octets,omitempty"`
-	Frames                   uint64   `protobuf:"fixed64,3,opt,name=frames,proto3" json:"frames,omitempty"`
-	BroadcastFrames          uint64   `protobuf:"fixed64,4,opt,name=broadcast_frames,json=broadcastFrames,proto3" json:"broadcast_frames,omitempty"`
-	MulticastFrames          uint64   `protobuf:"fixed64,5,opt,name=multicast_frames,json=multicastFrames,proto3" json:"multicast_frames,omitempty"`
-	CrcErroredFrames         uint64   `protobuf:"fixed64,6,opt,name=crc_errored_frames,json=crcErroredFrames,proto3" json:"crc_errored_frames,omitempty"`
-	UndersizeFrames          uint64   `protobuf:"fixed64,7,opt,name=undersize_frames,json=undersizeFrames,proto3" json:"undersize_frames,omitempty"`
-	OversizeFrames           uint64   `protobuf:"fixed64,8,opt,name=oversize_frames,json=oversizeFrames,proto3" json:"oversize_frames,omitempty"`
-	Frames_64Octets          uint64   `protobuf:"fixed64,9,opt,name=frames_64_octets,json=frames64Octets,proto3" json:"frames_64_octets,omitempty"`
-	Frames_65To_127Octets    uint64   `protobuf:"fixed64,10,opt,name=frames_65_to_127_octets,json=frames65To127Octets,proto3" json:"frames_65_to_127_octets,omitempty"`
-	Frames_128To_255Octets   uint64   `protobuf:"fixed64,11,opt,name=frames_128_to_255_octets,json=frames128To255Octets,proto3" json:"frames_128_to_255_octets,omitempty"`
-	Frames_256To_511Octets   uint64   `protobuf:"fixed64,12,opt,name=frames_256_to_511_octets,json=frames256To511Octets,proto3" json:"frames_256_to_511_octets,omitempty"`
-	Frames_512To_1023Octets  uint64   `protobuf:"fixed64,13,opt,name=frames_512_to_1023_octets,json=frames512To1023Octets,proto3" json:"frames_512_to_1023_octets,omitempty"`
-	Frames_1024To_1518Octets uint64   `protobuf:"fixed64,14,opt,name=frames_1024_to_1518_octets,json=frames1024To1518Octets,proto3" json:"frames_1024_to_1518_octets,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{} `json:"-"`
-	XXX_unrecognized         []byte   `json:"-"`
-	XXX_sizecache            int32    `json:"-"`
+	state                    protoimpl.MessageState `protogen:"open.v1"`
+	DropEvents               uint64                 `protobuf:"fixed64,1,opt,name=drop_events,json=dropEvents,proto3" json:"drop_events,omitempty"`
+	Octets                   uint64                 `protobuf:"fixed64,2,opt,name=octets,proto3" json:"octets,omitempty"`
+	Frames                   uint64                 `protobuf:"fixed64,3,opt,name=frames,proto3" json:"frames,omitempty"`
+	BroadcastFrames          uint64                 `protobuf:"fixed64,4,opt,name=broadcast_frames,json=broadcastFrames,proto3" json:"broadcast_frames,omitempty"`
+	MulticastFrames          uint64                 `protobuf:"fixed64,5,opt,name=multicast_frames,json=multicastFrames,proto3" json:"multicast_frames,omitempty"`
+	CrcErroredFrames         uint64                 `protobuf:"fixed64,6,opt,name=crc_errored_frames,json=crcErroredFrames,proto3" json:"crc_errored_frames,omitempty"`
+	UndersizeFrames          uint64                 `protobuf:"fixed64,7,opt,name=undersize_frames,json=undersizeFrames,proto3" json:"undersize_frames,omitempty"`
+	OversizeFrames           uint64                 `protobuf:"fixed64,8,opt,name=oversize_frames,json=oversizeFrames,proto3" json:"oversize_frames,omitempty"`
+	Frames_64Octets          uint64                 `protobuf:"fixed64,9,opt,name=frames_64_octets,json=frames64Octets,proto3" json:"frames_64_octets,omitempty"`
+	Frames_65To_127Octets    uint64                 `protobuf:"fixed64,10,opt,name=frames_65_to_127_octets,json=frames65To127Octets,proto3" json:"frames_65_to_127_octets,omitempty"`
+	Frames_128To_255Octets   uint64                 `protobuf:"fixed64,11,opt,name=frames_128_to_255_octets,json=frames128To255Octets,proto3" json:"frames_128_to_255_octets,omitempty"`
+	Frames_256To_511Octets   uint64                 `protobuf:"fixed64,12,opt,name=frames_256_to_511_octets,json=frames256To511Octets,proto3" json:"frames_256_to_511_octets,omitempty"`
+	Frames_512To_1023Octets  uint64                 `protobuf:"fixed64,13,opt,name=frames_512_to_1023_octets,json=frames512To1023Octets,proto3" json:"frames_512_to_1023_octets,omitempty"`
+	Frames_1024To_1518Octets uint64                 `protobuf:"fixed64,14,opt,name=frames_1024_to_1518_octets,json=frames1024To1518Octets,proto3" json:"frames_1024_to_1518_octets,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
 }
 
-func (m *OmciEthernetFrameExtendedPm) Reset()         { *m = OmciEthernetFrameExtendedPm{} }
-func (m *OmciEthernetFrameExtendedPm) String() string { return proto.CompactTextString(m) }
-func (*OmciEthernetFrameExtendedPm) ProtoMessage()    {}
+func (x *OmciEthernetFrameExtendedPm) Reset() {
+	*x = OmciEthernetFrameExtendedPm{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[35]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OmciEthernetFrameExtendedPm) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OmciEthernetFrameExtendedPm) ProtoMessage() {}
+
+func (x *OmciEthernetFrameExtendedPm) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[35]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OmciEthernetFrameExtendedPm.ProtoReflect.Descriptor instead.
 func (*OmciEthernetFrameExtendedPm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{35}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{35}
 }
 
-func (m *OmciEthernetFrameExtendedPm) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OmciEthernetFrameExtendedPm.Unmarshal(m, b)
-}
-func (m *OmciEthernetFrameExtendedPm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OmciEthernetFrameExtendedPm.Marshal(b, m, deterministic)
-}
-func (m *OmciEthernetFrameExtendedPm) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OmciEthernetFrameExtendedPm.Merge(m, src)
-}
-func (m *OmciEthernetFrameExtendedPm) XXX_Size() int {
-	return xxx_messageInfo_OmciEthernetFrameExtendedPm.Size(m)
-}
-func (m *OmciEthernetFrameExtendedPm) XXX_DiscardUnknown() {
-	xxx_messageInfo_OmciEthernetFrameExtendedPm.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OmciEthernetFrameExtendedPm proto.InternalMessageInfo
-
-func (m *OmciEthernetFrameExtendedPm) GetDropEvents() uint64 {
-	if m != nil {
-		return m.DropEvents
+func (x *OmciEthernetFrameExtendedPm) GetDropEvents() uint64 {
+	if x != nil {
+		return x.DropEvents
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetOctets() uint64 {
-	if m != nil {
-		return m.Octets
+func (x *OmciEthernetFrameExtendedPm) GetOctets() uint64 {
+	if x != nil {
+		return x.Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames() uint64 {
-	if m != nil {
-		return m.Frames
+func (x *OmciEthernetFrameExtendedPm) GetFrames() uint64 {
+	if x != nil {
+		return x.Frames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetBroadcastFrames() uint64 {
-	if m != nil {
-		return m.BroadcastFrames
+func (x *OmciEthernetFrameExtendedPm) GetBroadcastFrames() uint64 {
+	if x != nil {
+		return x.BroadcastFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetMulticastFrames() uint64 {
-	if m != nil {
-		return m.MulticastFrames
+func (x *OmciEthernetFrameExtendedPm) GetMulticastFrames() uint64 {
+	if x != nil {
+		return x.MulticastFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetCrcErroredFrames() uint64 {
-	if m != nil {
-		return m.CrcErroredFrames
+func (x *OmciEthernetFrameExtendedPm) GetCrcErroredFrames() uint64 {
+	if x != nil {
+		return x.CrcErroredFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetUndersizeFrames() uint64 {
-	if m != nil {
-		return m.UndersizeFrames
+func (x *OmciEthernetFrameExtendedPm) GetUndersizeFrames() uint64 {
+	if x != nil {
+		return x.UndersizeFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetOversizeFrames() uint64 {
-	if m != nil {
-		return m.OversizeFrames
+func (x *OmciEthernetFrameExtendedPm) GetOversizeFrames() uint64 {
+	if x != nil {
+		return x.OversizeFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_64Octets() uint64 {
-	if m != nil {
-		return m.Frames_64Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_64Octets() uint64 {
+	if x != nil {
+		return x.Frames_64Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_65To_127Octets() uint64 {
-	if m != nil {
-		return m.Frames_65To_127Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_65To_127Octets() uint64 {
+	if x != nil {
+		return x.Frames_65To_127Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_128To_255Octets() uint64 {
-	if m != nil {
-		return m.Frames_128To_255Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_128To_255Octets() uint64 {
+	if x != nil {
+		return x.Frames_128To_255Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_256To_511Octets() uint64 {
-	if m != nil {
-		return m.Frames_256To_511Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_256To_511Octets() uint64 {
+	if x != nil {
+		return x.Frames_256To_511Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_512To_1023Octets() uint64 {
-	if m != nil {
-		return m.Frames_512To_1023Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_512To_1023Octets() uint64 {
+	if x != nil {
+		return x.Frames_512To_1023Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_1024To_1518Octets() uint64 {
-	if m != nil {
-		return m.Frames_1024To_1518Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_1024To_1518Octets() uint64 {
+	if x != nil {
+		return x.Frames_1024To_1518Octets
 	}
 	return 0
 }
 
 type GetOmciEthernetFrameExtendedPmResponse struct {
+	state                             protoimpl.MessageState                        `protogen:"open.v1"`
 	Upstream                          *OmciEthernetFrameExtendedPm                  `protobuf:"bytes,1,opt,name=upstream,proto3" json:"upstream,omitempty"`
 	Downstream                        *OmciEthernetFrameExtendedPm                  `protobuf:"bytes,2,opt,name=downstream,proto3" json:"downstream,omitempty"`
 	OmciEthernetFrameExtendedPmFormat GetOmciEthernetFrameExtendedPmResponse_Format `protobuf:"varint,3,opt,name=omci_ethernet_frame_extended_pm_format,json=omciEthernetFrameExtendedPmFormat,proto3,enum=extension.GetOmciEthernetFrameExtendedPmResponse_Format" json:"omci_ethernet_frame_extended_pm_format,omitempty"`
-	XXX_NoUnkeyedLiteral              struct{}                                      `json:"-"`
-	XXX_unrecognized                  []byte                                        `json:"-"`
-	XXX_sizecache                     int32                                         `json:"-"`
+	unknownFields                     protoimpl.UnknownFields
+	sizeCache                         protoimpl.SizeCache
 }
 
-func (m *GetOmciEthernetFrameExtendedPmResponse) Reset() {
-	*m = GetOmciEthernetFrameExtendedPmResponse{}
+func (x *GetOmciEthernetFrameExtendedPmResponse) Reset() {
+	*x = GetOmciEthernetFrameExtendedPmResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[36]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
 }
-func (m *GetOmciEthernetFrameExtendedPmResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOmciEthernetFrameExtendedPmResponse) ProtoMessage()    {}
+
+func (x *GetOmciEthernetFrameExtendedPmResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOmciEthernetFrameExtendedPmResponse) ProtoMessage() {}
+
+func (x *GetOmciEthernetFrameExtendedPmResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[36]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOmciEthernetFrameExtendedPmResponse.ProtoReflect.Descriptor instead.
 func (*GetOmciEthernetFrameExtendedPmResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{36}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{36}
 }
 
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.Unmarshal(m, b)
-}
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.Merge(m, src)
-}
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.Size(m)
-}
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse proto.InternalMessageInfo
-
-func (m *GetOmciEthernetFrameExtendedPmResponse) GetUpstream() *OmciEthernetFrameExtendedPm {
-	if m != nil {
-		return m.Upstream
+func (x *GetOmciEthernetFrameExtendedPmResponse) GetUpstream() *OmciEthernetFrameExtendedPm {
+	if x != nil {
+		return x.Upstream
 	}
 	return nil
 }
 
-func (m *GetOmciEthernetFrameExtendedPmResponse) GetDownstream() *OmciEthernetFrameExtendedPm {
-	if m != nil {
-		return m.Downstream
+func (x *GetOmciEthernetFrameExtendedPmResponse) GetDownstream() *OmciEthernetFrameExtendedPm {
+	if x != nil {
+		return x.Downstream
 	}
 	return nil
 }
 
-func (m *GetOmciEthernetFrameExtendedPmResponse) GetOmciEthernetFrameExtendedPmFormat() GetOmciEthernetFrameExtendedPmResponse_Format {
-	if m != nil {
-		return m.OmciEthernetFrameExtendedPmFormat
+func (x *GetOmciEthernetFrameExtendedPmResponse) GetOmciEthernetFrameExtendedPmFormat() GetOmciEthernetFrameExtendedPmResponse_Format {
+	if x != nil {
+		return x.OmciEthernetFrameExtendedPmFormat
 	}
 	return GetOmciEthernetFrameExtendedPmResponse_THIRTY_TWO_BIT
 }
 
 type RxPower struct {
-	OnuSn                string   `protobuf:"bytes,1,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
-	Status               string   `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
-	FailReason           string   `protobuf:"bytes,3,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
-	RxPower              float64  `protobuf:"fixed64,4,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OnuSn         string                 `protobuf:"bytes,1,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"` // if the port on which RxPower is measured is not a PON port this will be empty ("") string
+	Status        string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
+	FailReason    string                 `protobuf:"bytes,3,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
+	RxPower       float64                `protobuf:"fixed64,4,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *RxPower) Reset()         { *m = RxPower{} }
-func (m *RxPower) String() string { return proto.CompactTextString(m) }
-func (*RxPower) ProtoMessage()    {}
+func (x *RxPower) Reset() {
+	*x = RxPower{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[37]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RxPower) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RxPower) ProtoMessage() {}
+
+func (x *RxPower) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[37]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RxPower.ProtoReflect.Descriptor instead.
 func (*RxPower) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{37}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{37}
 }
 
-func (m *RxPower) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RxPower.Unmarshal(m, b)
-}
-func (m *RxPower) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RxPower.Marshal(b, m, deterministic)
-}
-func (m *RxPower) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RxPower.Merge(m, src)
-}
-func (m *RxPower) XXX_Size() int {
-	return xxx_messageInfo_RxPower.Size(m)
-}
-func (m *RxPower) XXX_DiscardUnknown() {
-	xxx_messageInfo_RxPower.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RxPower proto.InternalMessageInfo
-
-func (m *RxPower) GetOnuSn() string {
-	if m != nil {
-		return m.OnuSn
+func (x *RxPower) GetOnuSn() string {
+	if x != nil {
+		return x.OnuSn
 	}
 	return ""
 }
 
-func (m *RxPower) GetStatus() string {
-	if m != nil {
-		return m.Status
+func (x *RxPower) GetStatus() string {
+	if x != nil {
+		return x.Status
 	}
 	return ""
 }
 
-func (m *RxPower) GetFailReason() string {
-	if m != nil {
-		return m.FailReason
+func (x *RxPower) GetFailReason() string {
+	if x != nil {
+		return x.FailReason
 	}
 	return ""
 }
 
-func (m *RxPower) GetRxPower() float64 {
-	if m != nil {
-		return m.RxPower
+func (x *RxPower) GetRxPower() float64 {
+	if x != nil {
+		return x.RxPower
 	}
 	return 0
 }
 
 type GetOltRxPowerResponse struct {
-	PortLabel            string     `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
-	RxPower              []*RxPower `protobuf:"bytes,2,rep,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortLabel     string                 `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
+	RxPower       []*RxPower             `protobuf:"bytes,2,rep,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOltRxPowerResponse) Reset()         { *m = GetOltRxPowerResponse{} }
-func (m *GetOltRxPowerResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOltRxPowerResponse) ProtoMessage()    {}
+func (x *GetOltRxPowerResponse) Reset() {
+	*x = GetOltRxPowerResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[38]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOltRxPowerResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOltRxPowerResponse) ProtoMessage() {}
+
+func (x *GetOltRxPowerResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[38]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOltRxPowerResponse.ProtoReflect.Descriptor instead.
 func (*GetOltRxPowerResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{38}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{38}
 }
 
-func (m *GetOltRxPowerResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOltRxPowerResponse.Unmarshal(m, b)
-}
-func (m *GetOltRxPowerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOltRxPowerResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOltRxPowerResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOltRxPowerResponse.Merge(m, src)
-}
-func (m *GetOltRxPowerResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOltRxPowerResponse.Size(m)
-}
-func (m *GetOltRxPowerResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOltRxPowerResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOltRxPowerResponse proto.InternalMessageInfo
-
-func (m *GetOltRxPowerResponse) GetPortLabel() string {
-	if m != nil {
-		return m.PortLabel
+func (x *GetOltRxPowerResponse) GetPortLabel() string {
+	if x != nil {
+		return x.PortLabel
 	}
 	return ""
 }
 
-func (m *GetOltRxPowerResponse) GetRxPower() []*RxPower {
-	if m != nil {
-		return m.RxPower
+func (x *GetOltRxPowerResponse) GetRxPower() []*RxPower {
+	if x != nil {
+		return x.RxPower
 	}
 	return nil
 }
 
 // DEPRECATED
 type GetRxPowerResponse struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
-	FailReason           string   `protobuf:"bytes,4,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
-	RxPower              float64  `protobuf:"fixed64,5,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId         uint32                 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status        string                 `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	FailReason    string                 `protobuf:"bytes,4,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
+	RxPower       float64                `protobuf:"fixed64,5,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetRxPowerResponse) Reset()         { *m = GetRxPowerResponse{} }
-func (m *GetRxPowerResponse) String() string { return proto.CompactTextString(m) }
-func (*GetRxPowerResponse) ProtoMessage()    {}
+func (x *GetRxPowerResponse) Reset() {
+	*x = GetRxPowerResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[39]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetRxPowerResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRxPowerResponse) ProtoMessage() {}
+
+func (x *GetRxPowerResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[39]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetRxPowerResponse.ProtoReflect.Descriptor instead.
 func (*GetRxPowerResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{39}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{39}
 }
 
-func (m *GetRxPowerResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetRxPowerResponse.Unmarshal(m, b)
-}
-func (m *GetRxPowerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetRxPowerResponse.Marshal(b, m, deterministic)
-}
-func (m *GetRxPowerResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetRxPowerResponse.Merge(m, src)
-}
-func (m *GetRxPowerResponse) XXX_Size() int {
-	return xxx_messageInfo_GetRxPowerResponse.Size(m)
-}
-func (m *GetRxPowerResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetRxPowerResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetRxPowerResponse proto.InternalMessageInfo
-
-func (m *GetRxPowerResponse) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *GetRxPowerResponse) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *GetRxPowerResponse) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *GetRxPowerResponse) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
-func (m *GetRxPowerResponse) GetStatus() string {
-	if m != nil {
-		return m.Status
+func (x *GetRxPowerResponse) GetStatus() string {
+	if x != nil {
+		return x.Status
 	}
 	return ""
 }
 
-func (m *GetRxPowerResponse) GetFailReason() string {
-	if m != nil {
-		return m.FailReason
+func (x *GetRxPowerResponse) GetFailReason() string {
+	if x != nil {
+		return x.FailReason
 	}
 	return ""
 }
 
-func (m *GetRxPowerResponse) GetRxPower() float64 {
-	if m != nil {
-		return m.RxPower
+func (x *GetRxPowerResponse) GetRxPower() float64 {
+	if x != nil {
+		return x.RxPower
 	}
 	return 0
 }
 
 type GetOnuOmciTxRxStatsRequest struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuOmciTxRxStatsRequest) Reset()         { *m = GetOnuOmciTxRxStatsRequest{} }
-func (m *GetOnuOmciTxRxStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuOmciTxRxStatsRequest) ProtoMessage()    {}
+func (x *GetOnuOmciTxRxStatsRequest) Reset() {
+	*x = GetOnuOmciTxRxStatsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[40]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuOmciTxRxStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuOmciTxRxStatsRequest) ProtoMessage() {}
+
+func (x *GetOnuOmciTxRxStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[40]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuOmciTxRxStatsRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuOmciTxRxStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{40}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{40}
 }
 
-func (m *GetOnuOmciTxRxStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Unmarshal(m, b)
-}
-func (m *GetOnuOmciTxRxStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuOmciTxRxStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Merge(m, src)
-}
-func (m *GetOnuOmciTxRxStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Size(m)
-}
-func (m *GetOnuOmciTxRxStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuOmciTxRxStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuOmciTxRxStatsRequest proto.InternalMessageInfo
-
-func (m *GetOnuOmciTxRxStatsRequest) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuOmciTxRxStatsRequest) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
 
 // see ITU-T G.988 clause 11.2.2
 type GetOnuOmciTxRxStatsResponse struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// OMCI baseline Tx frames with AR bit set
 	BaseTxArFrames uint32 `protobuf:"varint,1,opt,name=base_tx_ar_frames,json=baseTxArFrames,proto3" json:"base_tx_ar_frames,omitempty"`
 	// OMCI baseline Rx frames with AK bit set
@@ -3587,323 +4195,387 @@
 	// Number of retries of requests (tx) due to not received responses (Rx)
 	TxOmciCounterRetries uint32 `protobuf:"varint,9,opt,name=tx_omci_counter_retries,json=txOmciCounterRetries,proto3" json:"tx_omci_counter_retries,omitempty"`
 	// Number of timeouts of requests (tx) due to not received responses (Rx) after configured number of retries
-	TxOmciCounterTimeouts uint32   `protobuf:"varint,10,opt,name=tx_omci_counter_timeouts,json=txOmciCounterTimeouts,proto3" json:"tx_omci_counter_timeouts,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	TxOmciCounterTimeouts uint32 `protobuf:"varint,10,opt,name=tx_omci_counter_timeouts,json=txOmciCounterTimeouts,proto3" json:"tx_omci_counter_timeouts,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) Reset()         { *m = GetOnuOmciTxRxStatsResponse{} }
-func (m *GetOnuOmciTxRxStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuOmciTxRxStatsResponse) ProtoMessage()    {}
+func (x *GetOnuOmciTxRxStatsResponse) Reset() {
+	*x = GetOnuOmciTxRxStatsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[41]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuOmciTxRxStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuOmciTxRxStatsResponse) ProtoMessage() {}
+
+func (x *GetOnuOmciTxRxStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[41]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuOmciTxRxStatsResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuOmciTxRxStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{41}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{41}
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Unmarshal(m, b)
-}
-func (m *GetOnuOmciTxRxStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuOmciTxRxStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Merge(m, src)
-}
-func (m *GetOnuOmciTxRxStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Size(m)
-}
-func (m *GetOnuOmciTxRxStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuOmciTxRxStatsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuOmciTxRxStatsResponse proto.InternalMessageInfo
-
-func (m *GetOnuOmciTxRxStatsResponse) GetBaseTxArFrames() uint32 {
-	if m != nil {
-		return m.BaseTxArFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetBaseTxArFrames() uint32 {
+	if x != nil {
+		return x.BaseTxArFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetBaseRxAkFrames() uint32 {
-	if m != nil {
-		return m.BaseRxAkFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetBaseRxAkFrames() uint32 {
+	if x != nil {
+		return x.BaseRxAkFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetBaseTxNoArFrames() uint32 {
-	if m != nil {
-		return m.BaseTxNoArFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetBaseTxNoArFrames() uint32 {
+	if x != nil {
+		return x.BaseTxNoArFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetBaseRxNoAkFrames() uint32 {
-	if m != nil {
-		return m.BaseRxNoAkFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetBaseRxNoAkFrames() uint32 {
+	if x != nil {
+		return x.BaseRxNoAkFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetExtTxArFrames() uint32 {
-	if m != nil {
-		return m.ExtTxArFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetExtTxArFrames() uint32 {
+	if x != nil {
+		return x.ExtTxArFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetExtRxAkFrames() uint32 {
-	if m != nil {
-		return m.ExtRxAkFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetExtRxAkFrames() uint32 {
+	if x != nil {
+		return x.ExtRxAkFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetExtTxNoArFrames() uint32 {
-	if m != nil {
-		return m.ExtTxNoArFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetExtTxNoArFrames() uint32 {
+	if x != nil {
+		return x.ExtTxNoArFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetExtRxNoAkFrames() uint32 {
-	if m != nil {
-		return m.ExtRxNoAkFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetExtRxNoAkFrames() uint32 {
+	if x != nil {
+		return x.ExtRxNoAkFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterRetries() uint32 {
-	if m != nil {
-		return m.TxOmciCounterRetries
+func (x *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterRetries() uint32 {
+	if x != nil {
+		return x.TxOmciCounterRetries
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterTimeouts() uint32 {
-	if m != nil {
-		return m.TxOmciCounterTimeouts
+func (x *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterTimeouts() uint32 {
+	if x != nil {
+		return x.TxOmciCounterTimeouts
 	}
 	return 0
 }
 
 type GetOnuOmciActiveAlarmsRequest struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuOmciActiveAlarmsRequest) Reset()         { *m = GetOnuOmciActiveAlarmsRequest{} }
-func (m *GetOnuOmciActiveAlarmsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuOmciActiveAlarmsRequest) ProtoMessage()    {}
+func (x *GetOnuOmciActiveAlarmsRequest) Reset() {
+	*x = GetOnuOmciActiveAlarmsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[42]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuOmciActiveAlarmsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuOmciActiveAlarmsRequest) ProtoMessage() {}
+
+func (x *GetOnuOmciActiveAlarmsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[42]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuOmciActiveAlarmsRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuOmciActiveAlarmsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{42}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{42}
 }
 
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Unmarshal(m, b)
-}
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Merge(m, src)
-}
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Size(m)
-}
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuOmciActiveAlarmsRequest proto.InternalMessageInfo
-
-func (m *GetOnuOmciActiveAlarmsRequest) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuOmciActiveAlarmsRequest) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
 
 type AlarmData struct {
-	ClassId              uint32   `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	InstanceId           uint32   `protobuf:"varint,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
-	Name                 string   `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
-	Description          string   `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	InstanceId    uint32                 `protobuf:"varint,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Name          string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+	Description   string                 `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmData) Reset()         { *m = AlarmData{} }
-func (m *AlarmData) String() string { return proto.CompactTextString(m) }
-func (*AlarmData) ProtoMessage()    {}
+func (x *AlarmData) Reset() {
+	*x = AlarmData{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[43]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmData) ProtoMessage() {}
+
+func (x *AlarmData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[43]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmData.ProtoReflect.Descriptor instead.
 func (*AlarmData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{43}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{43}
 }
 
-func (m *AlarmData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmData.Unmarshal(m, b)
-}
-func (m *AlarmData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmData.Marshal(b, m, deterministic)
-}
-func (m *AlarmData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmData.Merge(m, src)
-}
-func (m *AlarmData) XXX_Size() int {
-	return xxx_messageInfo_AlarmData.Size(m)
-}
-func (m *AlarmData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmData proto.InternalMessageInfo
-
-func (m *AlarmData) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *AlarmData) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *AlarmData) GetInstanceId() uint32 {
-	if m != nil {
-		return m.InstanceId
+func (x *AlarmData) GetInstanceId() uint32 {
+	if x != nil {
+		return x.InstanceId
 	}
 	return 0
 }
 
-func (m *AlarmData) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *AlarmData) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *AlarmData) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *AlarmData) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
 type GetOnuOmciActiveAlarmsResponse struct {
-	ActiveAlarms         []*AlarmData `protobuf:"bytes,1,rep,name=active_alarms,json=activeAlarms,proto3" json:"active_alarms,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ActiveAlarms  []*AlarmData           `protobuf:"bytes,1,rep,name=active_alarms,json=activeAlarms,proto3" json:"active_alarms,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuOmciActiveAlarmsResponse) Reset()         { *m = GetOnuOmciActiveAlarmsResponse{} }
-func (m *GetOnuOmciActiveAlarmsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuOmciActiveAlarmsResponse) ProtoMessage()    {}
+func (x *GetOnuOmciActiveAlarmsResponse) Reset() {
+	*x = GetOnuOmciActiveAlarmsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[44]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuOmciActiveAlarmsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuOmciActiveAlarmsResponse) ProtoMessage() {}
+
+func (x *GetOnuOmciActiveAlarmsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[44]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuOmciActiveAlarmsResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuOmciActiveAlarmsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{44}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{44}
 }
 
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Unmarshal(m, b)
-}
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Merge(m, src)
-}
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Size(m)
-}
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuOmciActiveAlarmsResponse proto.InternalMessageInfo
-
-func (m *GetOnuOmciActiveAlarmsResponse) GetActiveAlarms() []*AlarmData {
-	if m != nil {
-		return m.ActiveAlarms
+func (x *GetOnuOmciActiveAlarmsResponse) GetActiveAlarms() []*AlarmData {
+	if x != nil {
+		return x.ActiveAlarms
 	}
 	return nil
 }
 
 type GetOffloadedAppsStatisticsRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The offloaded application whose statistics are requested
-	StatsFor             GetOffloadedAppsStatisticsRequest_OffloadedApp `protobuf:"varint,1,opt,name=statsFor,proto3,enum=extension.GetOffloadedAppsStatisticsRequest_OffloadedApp" json:"statsFor,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                       `json:"-"`
-	XXX_unrecognized     []byte                                         `json:"-"`
-	XXX_sizecache        int32                                          `json:"-"`
+	StatsFor      GetOffloadedAppsStatisticsRequest_OffloadedApp `protobuf:"varint,1,opt,name=statsFor,proto3,enum=extension.GetOffloadedAppsStatisticsRequest_OffloadedApp" json:"statsFor,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOffloadedAppsStatisticsRequest) Reset()         { *m = GetOffloadedAppsStatisticsRequest{} }
-func (m *GetOffloadedAppsStatisticsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOffloadedAppsStatisticsRequest) ProtoMessage()    {}
+func (x *GetOffloadedAppsStatisticsRequest) Reset() {
+	*x = GetOffloadedAppsStatisticsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[45]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOffloadedAppsStatisticsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOffloadedAppsStatisticsRequest) ProtoMessage() {}
+
+func (x *GetOffloadedAppsStatisticsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[45]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsRequest.ProtoReflect.Descriptor instead.
 func (*GetOffloadedAppsStatisticsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{45}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{45}
 }
 
-func (m *GetOffloadedAppsStatisticsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsRequest.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsRequest.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsRequest.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOffloadedAppsStatisticsRequest proto.InternalMessageInfo
-
-func (m *GetOffloadedAppsStatisticsRequest) GetStatsFor() GetOffloadedAppsStatisticsRequest_OffloadedApp {
-	if m != nil {
-		return m.StatsFor
+func (x *GetOffloadedAppsStatisticsRequest) GetStatsFor() GetOffloadedAppsStatisticsRequest_OffloadedApp {
+	if x != nil {
+		return x.StatsFor
 	}
 	return GetOffloadedAppsStatisticsRequest_UNDEFINED
 }
 
 type GetOffloadedAppsStatisticsResponse struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to Stats:
+	//
 	//	*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats
 	//	*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats
 	//	*GetOffloadedAppsStatisticsResponse_PppoeIaStats
-	Stats                isGetOffloadedAppsStatisticsResponse_Stats `protobuf_oneof:"stats"`
-	XXX_NoUnkeyedLiteral struct{}                                   `json:"-"`
-	XXX_unrecognized     []byte                                     `json:"-"`
-	XXX_sizecache        int32                                      `json:"-"`
+	Stats         isGetOffloadedAppsStatisticsResponse_Stats `protobuf_oneof:"stats"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOffloadedAppsStatisticsResponse) Reset()         { *m = GetOffloadedAppsStatisticsResponse{} }
-func (m *GetOffloadedAppsStatisticsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOffloadedAppsStatisticsResponse) ProtoMessage()    {}
+func (x *GetOffloadedAppsStatisticsResponse) Reset() {
+	*x = GetOffloadedAppsStatisticsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[46]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOffloadedAppsStatisticsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOffloadedAppsStatisticsResponse) ProtoMessage() {}
+
+func (x *GetOffloadedAppsStatisticsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[46]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsResponse.ProtoReflect.Descriptor instead.
 func (*GetOffloadedAppsStatisticsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{46}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{46}
 }
 
-func (m *GetOffloadedAppsStatisticsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse.DiscardUnknown(m)
+func (x *GetOffloadedAppsStatisticsResponse) GetStats() isGetOffloadedAppsStatisticsResponse_Stats {
+	if x != nil {
+		return x.Stats
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetOffloadedAppsStatisticsResponse proto.InternalMessageInfo
+func (x *GetOffloadedAppsStatisticsResponse) GetDhcpv4RaStats() *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats {
+	if x != nil {
+		if x, ok := x.Stats.(*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats); ok {
+			return x.Dhcpv4RaStats
+		}
+	}
+	return nil
+}
+
+func (x *GetOffloadedAppsStatisticsResponse) GetDhcpv6RaStats() *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats {
+	if x != nil {
+		if x, ok := x.Stats.(*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats); ok {
+			return x.Dhcpv6RaStats
+		}
+	}
+	return nil
+}
+
+func (x *GetOffloadedAppsStatisticsResponse) GetPppoeIaStats() *GetOffloadedAppsStatisticsResponse_PPPoeIAStats {
+	if x != nil {
+		if x, ok := x.Stats.(*GetOffloadedAppsStatisticsResponse_PppoeIaStats); ok {
+			return x.PppoeIaStats
+		}
+	}
+	return nil
+}
 
 type isGetOffloadedAppsStatisticsResponse_Stats interface {
 	isGetOffloadedAppsStatisticsResponse_Stats()
@@ -3930,396 +4602,10 @@
 func (*GetOffloadedAppsStatisticsResponse_PppoeIaStats) isGetOffloadedAppsStatisticsResponse_Stats() {
 }
 
-func (m *GetOffloadedAppsStatisticsResponse) GetStats() isGetOffloadedAppsStatisticsResponse_Stats {
-	if m != nil {
-		return m.Stats
-	}
-	return nil
-}
-
-func (m *GetOffloadedAppsStatisticsResponse) GetDhcpv4RaStats() *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats {
-	if x, ok := m.GetStats().(*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats); ok {
-		return x.Dhcpv4RaStats
-	}
-	return nil
-}
-
-func (m *GetOffloadedAppsStatisticsResponse) GetDhcpv6RaStats() *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats {
-	if x, ok := m.GetStats().(*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats); ok {
-		return x.Dhcpv6RaStats
-	}
-	return nil
-}
-
-func (m *GetOffloadedAppsStatisticsResponse) GetPppoeIaStats() *GetOffloadedAppsStatisticsResponse_PPPoeIAStats {
-	if x, ok := m.GetStats().(*GetOffloadedAppsStatisticsResponse_PppoeIaStats); ok {
-		return x.PppoeIaStats
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetOffloadedAppsStatisticsResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats)(nil),
-		(*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats)(nil),
-		(*GetOffloadedAppsStatisticsResponse_PppoeIaStats)(nil),
-	}
-}
-
-type GetOffloadedAppsStatisticsResponse_DHCPv4RAStats struct {
-	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-l2-dhcpv4-relay.yang
-	InBadPacketsFromClient           uint32 `protobuf:"varint,1,opt,name=in_bad_packets_from_client,json=inBadPacketsFromClient,proto3" json:"in_bad_packets_from_client,omitempty"`
-	InBadPacketsFromServer           uint32 `protobuf:"varint,2,opt,name=in_bad_packets_from_server,json=inBadPacketsFromServer,proto3" json:"in_bad_packets_from_server,omitempty"`
-	InPacketsFromClient              uint32 `protobuf:"varint,3,opt,name=in_packets_from_client,json=inPacketsFromClient,proto3" json:"in_packets_from_client,omitempty"`
-	InPacketsFromServer              uint32 `protobuf:"varint,4,opt,name=in_packets_from_server,json=inPacketsFromServer,proto3" json:"in_packets_from_server,omitempty"`
-	OutPacketsToServer               uint32 `protobuf:"varint,5,opt,name=out_packets_to_server,json=outPacketsToServer,proto3" json:"out_packets_to_server,omitempty"`
-	OutPacketsToClient               uint32 `protobuf:"varint,6,opt,name=out_packets_to_client,json=outPacketsToClient,proto3" json:"out_packets_to_client,omitempty"`
-	Option_82InsertedPacketsToServer uint32 `protobuf:"varint,7,opt,name=option_82_inserted_packets_to_server,json=option82InsertedPacketsToServer,proto3" json:"option_82_inserted_packets_to_server,omitempty"`
-	Option_82RemovedPacketsToClient  uint32 `protobuf:"varint,8,opt,name=option_82_removed_packets_to_client,json=option82RemovedPacketsToClient,proto3" json:"option_82_removed_packets_to_client,omitempty"`
-	Option_82NotInsertedToServer     uint32 `protobuf:"varint,9,opt,name=option_82_not_inserted_to_server,json=option82NotInsertedToServer,proto3" json:"option_82_not_inserted_to_server,omitempty"`
-	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
-	AdditionalStats      map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) Reset() {
-	*m = GetOffloadedAppsStatisticsResponse_DHCPv4RAStats{}
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) String() string {
-	return proto.CompactTextString(m)
-}
-func (*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) ProtoMessage() {}
-func (*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{46, 0}
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats proto.InternalMessageInfo
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInBadPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InBadPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInBadPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InBadPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOutPacketsToServer() uint32 {
-	if m != nil {
-		return m.OutPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOutPacketsToClient() uint32 {
-	if m != nil {
-		return m.OutPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82InsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.Option_82InsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82RemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.Option_82RemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82NotInsertedToServer() uint32 {
-	if m != nil {
-		return m.Option_82NotInsertedToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetAdditionalStats() map[string]string {
-	if m != nil {
-		return m.AdditionalStats
-	}
-	return nil
-}
-
-type GetOffloadedAppsStatisticsResponse_DHCPv6RAStats struct {
-	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-ldra.yang
-	InBadPacketsFromClient               uint32 `protobuf:"varint,1,opt,name=in_bad_packets_from_client,json=inBadPacketsFromClient,proto3" json:"in_bad_packets_from_client,omitempty"`
-	InBadPacketsFromServer               uint32 `protobuf:"varint,2,opt,name=in_bad_packets_from_server,json=inBadPacketsFromServer,proto3" json:"in_bad_packets_from_server,omitempty"`
-	Option_17InsertedPacketsToServer     uint32 `protobuf:"varint,3,opt,name=option_17_inserted_packets_to_server,json=option17InsertedPacketsToServer,proto3" json:"option_17_inserted_packets_to_server,omitempty"`
-	Option_17RemovedPacketsToClient      uint32 `protobuf:"varint,4,opt,name=option_17_removed_packets_to_client,json=option17RemovedPacketsToClient,proto3" json:"option_17_removed_packets_to_client,omitempty"`
-	Option_18InsertedPacketsToServer     uint32 `protobuf:"varint,5,opt,name=option_18_inserted_packets_to_server,json=option18InsertedPacketsToServer,proto3" json:"option_18_inserted_packets_to_server,omitempty"`
-	Option_18RemovedPacketsToClient      uint32 `protobuf:"varint,6,opt,name=option_18_removed_packets_to_client,json=option18RemovedPacketsToClient,proto3" json:"option_18_removed_packets_to_client,omitempty"`
-	Option_37InsertedPacketsToServer     uint32 `protobuf:"varint,7,opt,name=option_37_inserted_packets_to_server,json=option37InsertedPacketsToServer,proto3" json:"option_37_inserted_packets_to_server,omitempty"`
-	Option_37RemovedPacketsToClient      uint32 `protobuf:"varint,8,opt,name=option_37_removed_packets_to_client,json=option37RemovedPacketsToClient,proto3" json:"option_37_removed_packets_to_client,omitempty"`
-	OutgoingMtuExceededPacketsFromClient uint32 `protobuf:"varint,9,opt,name=outgoing_mtu_exceeded_packets_from_client,json=outgoingMtuExceededPacketsFromClient,proto3" json:"outgoing_mtu_exceeded_packets_from_client,omitempty"`
-	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
-	AdditionalStats      map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) Reset() {
-	*m = GetOffloadedAppsStatisticsResponse_DHCPv6RAStats{}
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) String() string {
-	return proto.CompactTextString(m)
-}
-func (*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) ProtoMessage() {}
-func (*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{46, 1}
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats proto.InternalMessageInfo
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetInBadPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InBadPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetInBadPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InBadPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_17InsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.Option_17InsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_17RemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.Option_17RemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_18InsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.Option_18InsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_18RemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.Option_18RemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_37InsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.Option_37InsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_37RemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.Option_37RemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOutgoingMtuExceededPacketsFromClient() uint32 {
-	if m != nil {
-		return m.OutgoingMtuExceededPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetAdditionalStats() map[string]string {
-	if m != nil {
-		return m.AdditionalStats
-	}
-	return nil
-}
-
-type GetOffloadedAppsStatisticsResponse_PPPoeIAStats struct {
-	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent.yang
-	InErrorPacketsFromClient                 uint32 `protobuf:"varint,1,opt,name=in_error_packets_from_client,json=inErrorPacketsFromClient,proto3" json:"in_error_packets_from_client,omitempty"`
-	InErrorPacketsFromServer                 uint32 `protobuf:"varint,2,opt,name=in_error_packets_from_server,json=inErrorPacketsFromServer,proto3" json:"in_error_packets_from_server,omitempty"`
-	InPacketsFromClient                      uint32 `protobuf:"varint,3,opt,name=in_packets_from_client,json=inPacketsFromClient,proto3" json:"in_packets_from_client,omitempty"`
-	InPacketsFromServer                      uint32 `protobuf:"varint,4,opt,name=in_packets_from_server,json=inPacketsFromServer,proto3" json:"in_packets_from_server,omitempty"`
-	OutPacketsToServer                       uint32 `protobuf:"varint,5,opt,name=out_packets_to_server,json=outPacketsToServer,proto3" json:"out_packets_to_server,omitempty"`
-	OutPacketsToClient                       uint32 `protobuf:"varint,6,opt,name=out_packets_to_client,json=outPacketsToClient,proto3" json:"out_packets_to_client,omitempty"`
-	VendorSpecificTagInsertedPacketsToServer uint32 `protobuf:"varint,7,opt,name=vendor_specific_tag_inserted_packets_to_server,json=vendorSpecificTagInsertedPacketsToServer,proto3" json:"vendor_specific_tag_inserted_packets_to_server,omitempty"`
-	VendorSpecificTagRemovedPacketsToClient  uint32 `protobuf:"varint,8,opt,name=vendor_specific_tag_removed_packets_to_client,json=vendorSpecificTagRemovedPacketsToClient,proto3" json:"vendor_specific_tag_removed_packets_to_client,omitempty"`
-	OutgoingMtuExceededPacketsFromClient     uint32 `protobuf:"varint,9,opt,name=outgoing_mtu_exceeded_packets_from_client,json=outgoingMtuExceededPacketsFromClient,proto3" json:"outgoing_mtu_exceeded_packets_from_client,omitempty"`
-	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
-	AdditionalStats      map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) Reset() {
-	*m = GetOffloadedAppsStatisticsResponse_PPPoeIAStats{}
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) String() string {
-	return proto.CompactTextString(m)
-}
-func (*GetOffloadedAppsStatisticsResponse_PPPoeIAStats) ProtoMessage() {}
-func (*GetOffloadedAppsStatisticsResponse_PPPoeIAStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{46, 2}
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats proto.InternalMessageInfo
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInErrorPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InErrorPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInErrorPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InErrorPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutPacketsToServer() uint32 {
-	if m != nil {
-		return m.OutPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutPacketsToClient() uint32 {
-	if m != nil {
-		return m.OutPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetVendorSpecificTagInsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.VendorSpecificTagInsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetVendorSpecificTagRemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.VendorSpecificTagRemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutgoingMtuExceededPacketsFromClient() uint32 {
-	if m != nil {
-		return m.OutgoingMtuExceededPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetAdditionalStats() map[string]string {
-	if m != nil {
-		return m.AdditionalStats
-	}
-	return nil
-}
-
 type GetValueRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to Request:
+	//
 	//	*GetValueRequest_Distance
 	//	*GetValueRequest_UniInfo
 	//	*GetValueRequest_OltPortInfo
@@ -4337,36 +4623,200 @@
 	//	*GetValueRequest_OnuStatsFromOlt
 	//	*GetValueRequest_OltPonStats
 	//	*GetValueRequest_OltNniStats
-	Request              isGetValueRequest_Request `protobuf_oneof:"request"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	Request       isGetValueRequest_Request `protobuf_oneof:"request"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetValueRequest) Reset()         { *m = GetValueRequest{} }
-func (m *GetValueRequest) String() string { return proto.CompactTextString(m) }
-func (*GetValueRequest) ProtoMessage()    {}
+func (x *GetValueRequest) Reset() {
+	*x = GetValueRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[47]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetValueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetValueRequest) ProtoMessage() {}
+
+func (x *GetValueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[47]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetValueRequest.ProtoReflect.Descriptor instead.
 func (*GetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{47}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{47}
 }
 
-func (m *GetValueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetValueRequest.Unmarshal(m, b)
-}
-func (m *GetValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetValueRequest.Marshal(b, m, deterministic)
-}
-func (m *GetValueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetValueRequest.Merge(m, src)
-}
-func (m *GetValueRequest) XXX_Size() int {
-	return xxx_messageInfo_GetValueRequest.Size(m)
-}
-func (m *GetValueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetValueRequest.DiscardUnknown(m)
+func (x *GetValueRequest) GetRequest() isGetValueRequest_Request {
+	if x != nil {
+		return x.Request
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetValueRequest proto.InternalMessageInfo
+func (x *GetValueRequest) GetDistance() *GetDistanceRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_Distance); ok {
+			return x.Distance
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetUniInfo() *GetOnuUniInfoRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_UniInfo); ok {
+			return x.UniInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOltPortInfo() *GetOltPortCounters {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OltPortInfo); ok {
+			return x.OltPortInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuOpticalInfo() *GetOnuPonOpticalInfo {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuOpticalInfo); ok {
+			return x.OnuOpticalInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetEthBridgePort() *GetOnuEthernetBridgePortHistory {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_EthBridgePort); ok {
+			return x.EthBridgePort
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetFecHistory() *GetOnuFecHistory {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_FecHistory); ok {
+			return x.FecHistory
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuPonInfo() *GetOnuCountersRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuPonInfo); ok {
+			return x.OnuPonInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuInfo() *GetOmciEthernetFrameExtendedPmRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuInfo); ok {
+			return x.OnuInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetRxPower() *GetRxPowerRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_RxPower); ok {
+			return x.RxPower
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuOmciStats() *GetOnuOmciTxRxStatsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuOmciStats); ok {
+			return x.OnuOmciStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOltRxPower() *GetOltRxPowerRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OltRxPower); ok {
+			return x.OltRxPower
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuActiveAlarms); ok {
+			return x.OnuActiveAlarms
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOffloadedAppsStats() *GetOffloadedAppsStatisticsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OffloadedAppsStats); ok {
+			return x.OffloadedAppsStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuAllocGemStats() *GetOnuAllocGemHistoryRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuAllocGemStats); ok {
+			return x.OnuAllocGemStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuStatsFromOlt() *GetOnuStatsFromOltRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuStatsFromOlt); ok {
+			return x.OnuStatsFromOlt
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOltPonStats() *GetPonStatsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OltPonStats); ok {
+			return x.OltPonStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOltNniStats() *GetNNIStatsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OltNniStats); ok {
+			return x.OltNniStats
+		}
+	}
+	return nil
+}
 
 type isGetValueRequest_Request interface {
 	isGetValueRequest_Request()
@@ -4381,18 +4831,22 @@
 }
 
 type GetValueRequest_OltPortInfo struct {
+	// Corresponds to PmMetricId.PON_PORT_COUNTERS, PmMetricId.NNI_PORT_COUNTERS
 	OltPortInfo *GetOltPortCounters `protobuf:"bytes,3,opt,name=oltPortInfo,proto3,oneof"`
 }
 
 type GetValueRequest_OnuOpticalInfo struct {
+	// Corresponds to PmMetricId.PON_OPTICAL
 	OnuOpticalInfo *GetOnuPonOpticalInfo `protobuf:"bytes,4,opt,name=onuOpticalInfo,proto3,oneof"`
 }
 
 type GetValueRequest_EthBridgePort struct {
+	// Corresponds to PmMetricId.ETHERNET_BRIDGE_PORT_HISTORY
 	EthBridgePort *GetOnuEthernetBridgePortHistory `protobuf:"bytes,5,opt,name=ethBridgePort,proto3,oneof"`
 }
 
 type GetValueRequest_FecHistory struct {
+	// Corresponds to PmMetricId.FEC_HISTORY
 	FecHistory *GetOnuFecHistory `protobuf:"bytes,6,opt,name=fecHistory,proto3,oneof"`
 }
 
@@ -4405,7 +4859,7 @@
 }
 
 type GetValueRequest_RxPower struct {
-	RxPower *GetRxPowerRequest `protobuf:"bytes,9,opt,name=rxPower,proto3,oneof"`
+	RxPower *GetRxPowerRequest `protobuf:"bytes,9,opt,name=rxPower,proto3,oneof"` // This is deprecated
 }
 
 type GetValueRequest_OnuOmciStats struct {
@@ -4474,159 +4928,12 @@
 
 func (*GetValueRequest_OltNniStats) isGetValueRequest_Request() {}
 
-func (m *GetValueRequest) GetRequest() isGetValueRequest_Request {
-	if m != nil {
-		return m.Request
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetDistance() *GetDistanceRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_Distance); ok {
-		return x.Distance
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetUniInfo() *GetOnuUniInfoRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_UniInfo); ok {
-		return x.UniInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOltPortInfo() *GetOltPortCounters {
-	if x, ok := m.GetRequest().(*GetValueRequest_OltPortInfo); ok {
-		return x.OltPortInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuOpticalInfo() *GetOnuPonOpticalInfo {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuOpticalInfo); ok {
-		return x.OnuOpticalInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetEthBridgePort() *GetOnuEthernetBridgePortHistory {
-	if x, ok := m.GetRequest().(*GetValueRequest_EthBridgePort); ok {
-		return x.EthBridgePort
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetFecHistory() *GetOnuFecHistory {
-	if x, ok := m.GetRequest().(*GetValueRequest_FecHistory); ok {
-		return x.FecHistory
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuPonInfo() *GetOnuCountersRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuPonInfo); ok {
-		return x.OnuPonInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuInfo() *GetOmciEthernetFrameExtendedPmRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuInfo); ok {
-		return x.OnuInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetRxPower() *GetRxPowerRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_RxPower); ok {
-		return x.RxPower
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuOmciStats() *GetOnuOmciTxRxStatsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuOmciStats); ok {
-		return x.OnuOmciStats
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOltRxPower() *GetOltRxPowerRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OltRxPower); ok {
-		return x.OltRxPower
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuActiveAlarms); ok {
-		return x.OnuActiveAlarms
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOffloadedAppsStats() *GetOffloadedAppsStatisticsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OffloadedAppsStats); ok {
-		return x.OffloadedAppsStats
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuAllocGemStats() *GetOnuAllocGemHistoryRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuAllocGemStats); ok {
-		return x.OnuAllocGemStats
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuStatsFromOlt() *GetOnuStatsFromOltRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuStatsFromOlt); ok {
-		return x.OnuStatsFromOlt
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOltPonStats() *GetPonStatsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OltPonStats); ok {
-		return x.OltPonStats
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOltNniStats() *GetNNIStatsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OltNniStats); ok {
-		return x.OltNniStats
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetValueRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetValueRequest_Distance)(nil),
-		(*GetValueRequest_UniInfo)(nil),
-		(*GetValueRequest_OltPortInfo)(nil),
-		(*GetValueRequest_OnuOpticalInfo)(nil),
-		(*GetValueRequest_EthBridgePort)(nil),
-		(*GetValueRequest_FecHistory)(nil),
-		(*GetValueRequest_OnuPonInfo)(nil),
-		(*GetValueRequest_OnuInfo)(nil),
-		(*GetValueRequest_RxPower)(nil),
-		(*GetValueRequest_OnuOmciStats)(nil),
-		(*GetValueRequest_OltRxPower)(nil),
-		(*GetValueRequest_OnuActiveAlarms)(nil),
-		(*GetValueRequest_OffloadedAppsStats)(nil),
-		(*GetValueRequest_OnuAllocGemStats)(nil),
-		(*GetValueRequest_OnuStatsFromOlt)(nil),
-		(*GetValueRequest_OltPonStats)(nil),
-		(*GetValueRequest_OltNniStats)(nil),
-	}
-}
-
 type GetValueResponse struct {
+	state     protoimpl.MessageState       `protogen:"open.v1"`
 	Status    GetValueResponse_Status      `protobuf:"varint,1,opt,name=status,proto3,enum=extension.GetValueResponse_Status" json:"status,omitempty"`
 	ErrReason GetValueResponse_ErrorReason `protobuf:"varint,2,opt,name=errReason,proto3,enum=extension.GetValueResponse_ErrorReason" json:"errReason,omitempty"`
 	// Types that are valid to be assigned to Response:
+	//
 	//	*GetValueResponse_Distance
 	//	*GetValueResponse_UniInfo
 	//	*GetValueResponse_PortCoutners
@@ -4644,51 +4951,215 @@
 	//	*GetValueResponse_OnuStatsFromOltResponse
 	//	*GetValueResponse_OltPonStatsResponse
 	//	*GetValueResponse_OltNniStatsResponse
-	Response             isGetValueResponse_Response `protobuf_oneof:"response"`
-	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
-	XXX_unrecognized     []byte                      `json:"-"`
-	XXX_sizecache        int32                       `json:"-"`
+	Response      isGetValueResponse_Response `protobuf_oneof:"response"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetValueResponse) Reset()         { *m = GetValueResponse{} }
-func (m *GetValueResponse) String() string { return proto.CompactTextString(m) }
-func (*GetValueResponse) ProtoMessage()    {}
+func (x *GetValueResponse) Reset() {
+	*x = GetValueResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[48]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetValueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetValueResponse) ProtoMessage() {}
+
+func (x *GetValueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[48]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetValueResponse.ProtoReflect.Descriptor instead.
 func (*GetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{48}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{48}
 }
 
-func (m *GetValueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetValueResponse.Unmarshal(m, b)
-}
-func (m *GetValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetValueResponse.Marshal(b, m, deterministic)
-}
-func (m *GetValueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetValueResponse.Merge(m, src)
-}
-func (m *GetValueResponse) XXX_Size() int {
-	return xxx_messageInfo_GetValueResponse.Size(m)
-}
-func (m *GetValueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetValueResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetValueResponse proto.InternalMessageInfo
-
-func (m *GetValueResponse) GetStatus() GetValueResponse_Status {
-	if m != nil {
-		return m.Status
+func (x *GetValueResponse) GetStatus() GetValueResponse_Status {
+	if x != nil {
+		return x.Status
 	}
 	return GetValueResponse_STATUS_UNDEFINED
 }
 
-func (m *GetValueResponse) GetErrReason() GetValueResponse_ErrorReason {
-	if m != nil {
-		return m.ErrReason
+func (x *GetValueResponse) GetErrReason() GetValueResponse_ErrorReason {
+	if x != nil {
+		return x.ErrReason
 	}
 	return GetValueResponse_REASON_UNDEFINED
 }
 
+func (x *GetValueResponse) GetResponse() isGetValueResponse_Response {
+	if x != nil {
+		return x.Response
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetDistance() *GetDistanceResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_Distance); ok {
+			return x.Distance
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetUniInfo() *GetOnuUniInfoResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_UniInfo); ok {
+			return x.UniInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetPortCoutners() *GetOltPortCountersResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_PortCoutners); ok {
+			return x.PortCoutners
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuOpticalInfo() *GetOnuPonOpticalInfoResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuOpticalInfo); ok {
+			return x.OnuOpticalInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetEthBridgePortInfo() *GetOnuEthernetBridgePortHistoryResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_EthBridgePortInfo); ok {
+			return x.EthBridgePortInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetFecHistory() *GetOnuFecHistoryResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_FecHistory); ok {
+			return x.FecHistory
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuPonCounters() *GetOnuCountersResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuPonCounters); ok {
+			return x.OnuPonCounters
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuCounters() *GetOmciEthernetFrameExtendedPmResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuCounters); ok {
+			return x.OnuCounters
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetRxPower() *GetRxPowerResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_RxPower); ok {
+			return x.RxPower
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuOmciStats() *GetOnuOmciTxRxStatsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuOmciStats); ok {
+			return x.OnuOmciStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOltRxPower() *GetOltRxPowerResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OltRxPower); ok {
+			return x.OltRxPower
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuActiveAlarms); ok {
+			return x.OnuActiveAlarms
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOffloadedAppsStats() *GetOffloadedAppsStatisticsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OffloadedAppsStats); ok {
+			return x.OffloadedAppsStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuAllocGemStatsResponse() *GetOnuAllocGemHistoryResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuAllocGemStatsResponse); ok {
+			return x.OnuAllocGemStatsResponse
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuStatsFromOltResponse() *GetOnuStatsFromOltResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuStatsFromOltResponse); ok {
+			return x.OnuStatsFromOltResponse
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOltPonStatsResponse() *GetPonStatsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OltPonStatsResponse); ok {
+			return x.OltPonStatsResponse
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOltNniStatsResponse() *GetNNIStatsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OltNniStatsResponse); ok {
+			return x.OltNniStatsResponse
+		}
+	}
+	return nil
+}
+
 type isGetValueResponse_Response interface {
 	isGetValueResponse_Response()
 }
@@ -4726,7 +5197,7 @@
 }
 
 type GetValueResponse_RxPower struct {
-	RxPower *GetRxPowerResponse `protobuf:"bytes,11,opt,name=rxPower,proto3,oneof"`
+	RxPower *GetRxPowerResponse `protobuf:"bytes,11,opt,name=rxPower,proto3,oneof"` // This is DEPRECATED
 }
 
 type GetValueResponse_OnuOmciStats struct {
@@ -4795,361 +5266,204 @@
 
 func (*GetValueResponse_OltNniStatsResponse) isGetValueResponse_Response() {}
 
-func (m *GetValueResponse) GetResponse() isGetValueResponse_Response {
-	if m != nil {
-		return m.Response
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetDistance() *GetDistanceResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_Distance); ok {
-		return x.Distance
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetUniInfo() *GetOnuUniInfoResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_UniInfo); ok {
-		return x.UniInfo
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetPortCoutners() *GetOltPortCountersResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_PortCoutners); ok {
-		return x.PortCoutners
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuOpticalInfo() *GetOnuPonOpticalInfoResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuOpticalInfo); ok {
-		return x.OnuOpticalInfo
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetEthBridgePortInfo() *GetOnuEthernetBridgePortHistoryResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_EthBridgePortInfo); ok {
-		return x.EthBridgePortInfo
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetFecHistory() *GetOnuFecHistoryResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_FecHistory); ok {
-		return x.FecHistory
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuPonCounters() *GetOnuCountersResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuPonCounters); ok {
-		return x.OnuPonCounters
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuCounters() *GetOmciEthernetFrameExtendedPmResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuCounters); ok {
-		return x.OnuCounters
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetRxPower() *GetRxPowerResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_RxPower); ok {
-		return x.RxPower
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuOmciStats() *GetOnuOmciTxRxStatsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuOmciStats); ok {
-		return x.OnuOmciStats
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOltRxPower() *GetOltRxPowerResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OltRxPower); ok {
-		return x.OltRxPower
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuActiveAlarms); ok {
-		return x.OnuActiveAlarms
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOffloadedAppsStats() *GetOffloadedAppsStatisticsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OffloadedAppsStats); ok {
-		return x.OffloadedAppsStats
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuAllocGemStatsResponse() *GetOnuAllocGemHistoryResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuAllocGemStatsResponse); ok {
-		return x.OnuAllocGemStatsResponse
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuStatsFromOltResponse() *GetOnuStatsFromOltResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuStatsFromOltResponse); ok {
-		return x.OnuStatsFromOltResponse
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOltPonStatsResponse() *GetPonStatsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OltPonStatsResponse); ok {
-		return x.OltPonStatsResponse
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOltNniStatsResponse() *GetNNIStatsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OltNniStatsResponse); ok {
-		return x.OltNniStatsResponse
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetValueResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetValueResponse_Distance)(nil),
-		(*GetValueResponse_UniInfo)(nil),
-		(*GetValueResponse_PortCoutners)(nil),
-		(*GetValueResponse_OnuOpticalInfo)(nil),
-		(*GetValueResponse_EthBridgePortInfo)(nil),
-		(*GetValueResponse_FecHistory)(nil),
-		(*GetValueResponse_OnuPonCounters)(nil),
-		(*GetValueResponse_OnuCounters)(nil),
-		(*GetValueResponse_RxPower)(nil),
-		(*GetValueResponse_OnuOmciStats)(nil),
-		(*GetValueResponse_OltRxPower)(nil),
-		(*GetValueResponse_OnuActiveAlarms)(nil),
-		(*GetValueResponse_OffloadedAppsStats)(nil),
-		(*GetValueResponse_OnuAllocGemStatsResponse)(nil),
-		(*GetValueResponse_OnuStatsFromOltResponse)(nil),
-		(*GetValueResponse_OltPonStatsResponse)(nil),
-		(*GetValueResponse_OltNniStatsResponse)(nil),
-	}
-}
-
 // AppOffloadConfig is the configuration for offloading applications to the OLT and has OLT wide configuration.
 type AppOffloadConfig struct {
-	EnableDHCPv4RA bool `protobuf:"varint,1,opt,name=enableDHCPv4RA,proto3" json:"enableDHCPv4RA,omitempty"`
-	EnableDHCPv6RA bool `protobuf:"varint,2,opt,name=enableDHCPv6RA,proto3" json:"enableDHCPv6RA,omitempty"`
-	EnablePPPoEIA  bool `protobuf:"varint,3,opt,name=enablePPPoEIA,proto3" json:"enablePPPoEIA,omitempty"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	EnableDHCPv4RA bool                   `protobuf:"varint,1,opt,name=enableDHCPv4RA,proto3" json:"enableDHCPv4RA,omitempty"`
+	EnableDHCPv6RA bool                   `protobuf:"varint,2,opt,name=enableDHCPv6RA,proto3" json:"enableDHCPv6RA,omitempty"`
+	EnablePPPoEIA  bool                   `protobuf:"varint,3,opt,name=enablePPPoEIA,proto3" json:"enablePPPoEIA,omitempty"`
 	// Follows the same as the BBF Access Node Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-subscriber-profiles.yang
-	AccessNodeID         string   `protobuf:"bytes,4,opt,name=accessNodeID,proto3" json:"accessNodeID,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AccessNodeID  string `protobuf:"bytes,4,opt,name=accessNodeID,proto3" json:"accessNodeID,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AppOffloadConfig) Reset()         { *m = AppOffloadConfig{} }
-func (m *AppOffloadConfig) String() string { return proto.CompactTextString(m) }
-func (*AppOffloadConfig) ProtoMessage()    {}
+func (x *AppOffloadConfig) Reset() {
+	*x = AppOffloadConfig{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[49]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AppOffloadConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AppOffloadConfig) ProtoMessage() {}
+
+func (x *AppOffloadConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[49]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AppOffloadConfig.ProtoReflect.Descriptor instead.
 func (*AppOffloadConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{49}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{49}
 }
 
-func (m *AppOffloadConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AppOffloadConfig.Unmarshal(m, b)
-}
-func (m *AppOffloadConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AppOffloadConfig.Marshal(b, m, deterministic)
-}
-func (m *AppOffloadConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AppOffloadConfig.Merge(m, src)
-}
-func (m *AppOffloadConfig) XXX_Size() int {
-	return xxx_messageInfo_AppOffloadConfig.Size(m)
-}
-func (m *AppOffloadConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AppOffloadConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AppOffloadConfig proto.InternalMessageInfo
-
-func (m *AppOffloadConfig) GetEnableDHCPv4RA() bool {
-	if m != nil {
-		return m.EnableDHCPv4RA
+func (x *AppOffloadConfig) GetEnableDHCPv4RA() bool {
+	if x != nil {
+		return x.EnableDHCPv4RA
 	}
 	return false
 }
 
-func (m *AppOffloadConfig) GetEnableDHCPv6RA() bool {
-	if m != nil {
-		return m.EnableDHCPv6RA
+func (x *AppOffloadConfig) GetEnableDHCPv6RA() bool {
+	if x != nil {
+		return x.EnableDHCPv6RA
 	}
 	return false
 }
 
-func (m *AppOffloadConfig) GetEnablePPPoEIA() bool {
-	if m != nil {
-		return m.EnablePPPoEIA
+func (x *AppOffloadConfig) GetEnablePPPoEIA() bool {
+	if x != nil {
+		return x.EnablePPPoEIA
 	}
 	return false
 }
 
-func (m *AppOffloadConfig) GetAccessNodeID() string {
-	if m != nil {
-		return m.AccessNodeID
+func (x *AppOffloadConfig) GetAccessNodeID() string {
+	if x != nil {
+		return x.AccessNodeID
 	}
 	return ""
 }
 
 // AppOffloadOnuConfig has Onu specfic configuration which the OLT runs applications which have been offloaded.
 type AppOffloadOnuConfig struct {
-	OnuDeviceId          string                              `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
-	PerUniInfo           []*AppOffloadOnuConfig_PerUniConfig `protobuf:"bytes,5,rep,name=perUniInfo,proto3" json:"perUniInfo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                            `json:"-"`
-	XXX_unrecognized     []byte                              `json:"-"`
-	XXX_sizecache        int32                               `json:"-"`
+	state         protoimpl.MessageState              `protogen:"open.v1"`
+	OnuDeviceId   string                              `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
+	PerUniInfo    []*AppOffloadOnuConfig_PerUniConfig `protobuf:"bytes,5,rep,name=perUniInfo,proto3" json:"perUniInfo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AppOffloadOnuConfig) Reset()         { *m = AppOffloadOnuConfig{} }
-func (m *AppOffloadOnuConfig) String() string { return proto.CompactTextString(m) }
-func (*AppOffloadOnuConfig) ProtoMessage()    {}
+func (x *AppOffloadOnuConfig) Reset() {
+	*x = AppOffloadOnuConfig{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[50]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AppOffloadOnuConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AppOffloadOnuConfig) ProtoMessage() {}
+
+func (x *AppOffloadOnuConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[50]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AppOffloadOnuConfig.ProtoReflect.Descriptor instead.
 func (*AppOffloadOnuConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{50}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{50}
 }
 
-func (m *AppOffloadOnuConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AppOffloadOnuConfig.Unmarshal(m, b)
-}
-func (m *AppOffloadOnuConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AppOffloadOnuConfig.Marshal(b, m, deterministic)
-}
-func (m *AppOffloadOnuConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AppOffloadOnuConfig.Merge(m, src)
-}
-func (m *AppOffloadOnuConfig) XXX_Size() int {
-	return xxx_messageInfo_AppOffloadOnuConfig.Size(m)
-}
-func (m *AppOffloadOnuConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AppOffloadOnuConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AppOffloadOnuConfig proto.InternalMessageInfo
-
-func (m *AppOffloadOnuConfig) GetOnuDeviceId() string {
-	if m != nil {
-		return m.OnuDeviceId
+func (x *AppOffloadOnuConfig) GetOnuDeviceId() string {
+	if x != nil {
+		return x.OnuDeviceId
 	}
 	return ""
 }
 
-func (m *AppOffloadOnuConfig) GetPerUniInfo() []*AppOffloadOnuConfig_PerUniConfig {
-	if m != nil {
-		return m.PerUniInfo
+func (x *AppOffloadOnuConfig) GetPerUniInfo() []*AppOffloadOnuConfig_PerUniConfig {
+	if x != nil {
+		return x.PerUniInfo
 	}
 	return nil
 }
 
-type AppOffloadOnuConfig_PerUniConfig struct {
-	// As per the BBF Agent Remote Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
-	AgentRemoteID string `protobuf:"bytes,2,opt,name=agentRemoteID,proto3" json:"agentRemoteID,omitempty"`
-	// As per the BBF Agent Circuit Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
-	AgentCircuitID string `protobuf:"bytes,3,opt,name=agentCircuitID,proto3" json:"agentCircuitID,omitempty"`
-	// The id of the UNI on the Onu for which this configuration is relevant. The UNI ids are numbered from 0 to n depending on the number of UNI ports on the ONU.
-	OnuUniId             uint32   `protobuf:"varint,4,opt,name=onuUniId,proto3" json:"onuUniId,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *AppOffloadOnuConfig_PerUniConfig) Reset()         { *m = AppOffloadOnuConfig_PerUniConfig{} }
-func (m *AppOffloadOnuConfig_PerUniConfig) String() string { return proto.CompactTextString(m) }
-func (*AppOffloadOnuConfig_PerUniConfig) ProtoMessage()    {}
-func (*AppOffloadOnuConfig_PerUniConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{50, 0}
-}
-
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.Unmarshal(m, b)
-}
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.Marshal(b, m, deterministic)
-}
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.Merge(m, src)
-}
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_Size() int {
-	return xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.Size(m)
-}
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig proto.InternalMessageInfo
-
-func (m *AppOffloadOnuConfig_PerUniConfig) GetAgentRemoteID() string {
-	if m != nil {
-		return m.AgentRemoteID
-	}
-	return ""
-}
-
-func (m *AppOffloadOnuConfig_PerUniConfig) GetAgentCircuitID() string {
-	if m != nil {
-		return m.AgentCircuitID
-	}
-	return ""
-}
-
-func (m *AppOffloadOnuConfig_PerUniConfig) GetOnuUniId() uint32 {
-	if m != nil {
-		return m.OnuUniId
-	}
-	return 0
-}
-
 type SetValueRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to Request:
+	//
 	//	*SetValueRequest_AlarmConfig
 	//	*SetValueRequest_AppOffloadConfig
 	//	*SetValueRequest_AppOffloadOnuConfig
-	Request              isSetValueRequest_Request `protobuf_oneof:"request"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	Request       isSetValueRequest_Request `protobuf_oneof:"request"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SetValueRequest) Reset()         { *m = SetValueRequest{} }
-func (m *SetValueRequest) String() string { return proto.CompactTextString(m) }
-func (*SetValueRequest) ProtoMessage()    {}
+func (x *SetValueRequest) Reset() {
+	*x = SetValueRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[51]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SetValueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetValueRequest) ProtoMessage() {}
+
+func (x *SetValueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[51]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SetValueRequest.ProtoReflect.Descriptor instead.
 func (*SetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{51}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{51}
 }
 
-func (m *SetValueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetValueRequest.Unmarshal(m, b)
-}
-func (m *SetValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetValueRequest.Marshal(b, m, deterministic)
-}
-func (m *SetValueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetValueRequest.Merge(m, src)
-}
-func (m *SetValueRequest) XXX_Size() int {
-	return xxx_messageInfo_SetValueRequest.Size(m)
-}
-func (m *SetValueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetValueRequest.DiscardUnknown(m)
+func (x *SetValueRequest) GetRequest() isSetValueRequest_Request {
+	if x != nil {
+		return x.Request
+	}
+	return nil
 }
 
-var xxx_messageInfo_SetValueRequest proto.InternalMessageInfo
+func (x *SetValueRequest) GetAlarmConfig() *config.AlarmConfig {
+	if x != nil {
+		if x, ok := x.Request.(*SetValueRequest_AlarmConfig); ok {
+			return x.AlarmConfig
+		}
+	}
+	return nil
+}
+
+func (x *SetValueRequest) GetAppOffloadConfig() *AppOffloadConfig {
+	if x != nil {
+		if x, ok := x.Request.(*SetValueRequest_AppOffloadConfig); ok {
+			return x.AppOffloadConfig
+		}
+	}
+	return nil
+}
+
+func (x *SetValueRequest) GetAppOffloadOnuConfig() *AppOffloadOnuConfig {
+	if x != nil {
+		if x, ok := x.Request.(*SetValueRequest_AppOffloadOnuConfig); ok {
+			return x.AppOffloadOnuConfig
+		}
+	}
+	return nil
+}
 
 type isSetValueRequest_Request interface {
 	isSetValueRequest_Request()
@@ -5173,787 +5487,1455 @@
 
 func (*SetValueRequest_AppOffloadOnuConfig) isSetValueRequest_Request() {}
 
-func (m *SetValueRequest) GetRequest() isSetValueRequest_Request {
-	if m != nil {
-		return m.Request
-	}
-	return nil
-}
-
-func (m *SetValueRequest) GetAlarmConfig() *config.AlarmConfig {
-	if x, ok := m.GetRequest().(*SetValueRequest_AlarmConfig); ok {
-		return x.AlarmConfig
-	}
-	return nil
-}
-
-func (m *SetValueRequest) GetAppOffloadConfig() *AppOffloadConfig {
-	if x, ok := m.GetRequest().(*SetValueRequest_AppOffloadConfig); ok {
-		return x.AppOffloadConfig
-	}
-	return nil
-}
-
-func (m *SetValueRequest) GetAppOffloadOnuConfig() *AppOffloadOnuConfig {
-	if x, ok := m.GetRequest().(*SetValueRequest_AppOffloadOnuConfig); ok {
-		return x.AppOffloadOnuConfig
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*SetValueRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*SetValueRequest_AlarmConfig)(nil),
-		(*SetValueRequest_AppOffloadConfig)(nil),
-		(*SetValueRequest_AppOffloadOnuConfig)(nil),
-	}
-}
-
 type SetValueResponse struct {
-	Status               SetValueResponse_Status      `protobuf:"varint,1,opt,name=status,proto3,enum=extension.SetValueResponse_Status" json:"status,omitempty"`
-	ErrReason            SetValueResponse_ErrorReason `protobuf:"varint,2,opt,name=errReason,proto3,enum=extension.SetValueResponse_ErrorReason" json:"errReason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	state         protoimpl.MessageState       `protogen:"open.v1"`
+	Status        SetValueResponse_Status      `protobuf:"varint,1,opt,name=status,proto3,enum=extension.SetValueResponse_Status" json:"status,omitempty"`
+	ErrReason     SetValueResponse_ErrorReason `protobuf:"varint,2,opt,name=errReason,proto3,enum=extension.SetValueResponse_ErrorReason" json:"errReason,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SetValueResponse) Reset()         { *m = SetValueResponse{} }
-func (m *SetValueResponse) String() string { return proto.CompactTextString(m) }
-func (*SetValueResponse) ProtoMessage()    {}
+func (x *SetValueResponse) Reset() {
+	*x = SetValueResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[52]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SetValueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetValueResponse) ProtoMessage() {}
+
+func (x *SetValueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[52]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SetValueResponse.ProtoReflect.Descriptor instead.
 func (*SetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{52}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{52}
 }
 
-func (m *SetValueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetValueResponse.Unmarshal(m, b)
-}
-func (m *SetValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetValueResponse.Marshal(b, m, deterministic)
-}
-func (m *SetValueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetValueResponse.Merge(m, src)
-}
-func (m *SetValueResponse) XXX_Size() int {
-	return xxx_messageInfo_SetValueResponse.Size(m)
-}
-func (m *SetValueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetValueResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SetValueResponse proto.InternalMessageInfo
-
-func (m *SetValueResponse) GetStatus() SetValueResponse_Status {
-	if m != nil {
-		return m.Status
+func (x *SetValueResponse) GetStatus() SetValueResponse_Status {
+	if x != nil {
+		return x.Status
 	}
 	return SetValueResponse_STATUS_UNDEFINED
 }
 
-func (m *SetValueResponse) GetErrReason() SetValueResponse_ErrorReason {
-	if m != nil {
-		return m.ErrReason
+func (x *SetValueResponse) GetErrReason() SetValueResponse_ErrorReason {
+	if x != nil {
+		return x.ErrReason
 	}
 	return SetValueResponse_REASON_UNDEFINED
 }
 
 type SingleGetValueRequest struct {
-	TargetId             string           `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"`
-	Request              *GetValueRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TargetId      string                 `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"`
+	Request       *GetValueRequest       `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SingleGetValueRequest) Reset()         { *m = SingleGetValueRequest{} }
-func (m *SingleGetValueRequest) String() string { return proto.CompactTextString(m) }
-func (*SingleGetValueRequest) ProtoMessage()    {}
+func (x *SingleGetValueRequest) Reset() {
+	*x = SingleGetValueRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[53]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SingleGetValueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SingleGetValueRequest) ProtoMessage() {}
+
+func (x *SingleGetValueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[53]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SingleGetValueRequest.ProtoReflect.Descriptor instead.
 func (*SingleGetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{53}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{53}
 }
 
-func (m *SingleGetValueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SingleGetValueRequest.Unmarshal(m, b)
-}
-func (m *SingleGetValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SingleGetValueRequest.Marshal(b, m, deterministic)
-}
-func (m *SingleGetValueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SingleGetValueRequest.Merge(m, src)
-}
-func (m *SingleGetValueRequest) XXX_Size() int {
-	return xxx_messageInfo_SingleGetValueRequest.Size(m)
-}
-func (m *SingleGetValueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SingleGetValueRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SingleGetValueRequest proto.InternalMessageInfo
-
-func (m *SingleGetValueRequest) GetTargetId() string {
-	if m != nil {
-		return m.TargetId
+func (x *SingleGetValueRequest) GetTargetId() string {
+	if x != nil {
+		return x.TargetId
 	}
 	return ""
 }
 
-func (m *SingleGetValueRequest) GetRequest() *GetValueRequest {
-	if m != nil {
-		return m.Request
+func (x *SingleGetValueRequest) GetRequest() *GetValueRequest {
+	if x != nil {
+		return x.Request
 	}
 	return nil
 }
 
 type SingleGetValueResponse struct {
-	Response             *GetValueResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Response      *GetValueResponse      `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SingleGetValueResponse) Reset()         { *m = SingleGetValueResponse{} }
-func (m *SingleGetValueResponse) String() string { return proto.CompactTextString(m) }
-func (*SingleGetValueResponse) ProtoMessage()    {}
+func (x *SingleGetValueResponse) Reset() {
+	*x = SingleGetValueResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[54]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SingleGetValueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SingleGetValueResponse) ProtoMessage() {}
+
+func (x *SingleGetValueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[54]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SingleGetValueResponse.ProtoReflect.Descriptor instead.
 func (*SingleGetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{54}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{54}
 }
 
-func (m *SingleGetValueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SingleGetValueResponse.Unmarshal(m, b)
-}
-func (m *SingleGetValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SingleGetValueResponse.Marshal(b, m, deterministic)
-}
-func (m *SingleGetValueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SingleGetValueResponse.Merge(m, src)
-}
-func (m *SingleGetValueResponse) XXX_Size() int {
-	return xxx_messageInfo_SingleGetValueResponse.Size(m)
-}
-func (m *SingleGetValueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SingleGetValueResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SingleGetValueResponse proto.InternalMessageInfo
-
-func (m *SingleGetValueResponse) GetResponse() *GetValueResponse {
-	if m != nil {
-		return m.Response
+func (x *SingleGetValueResponse) GetResponse() *GetValueResponse {
+	if x != nil {
+		return x.Response
 	}
 	return nil
 }
 
 type SingleSetValueRequest struct {
-	TargetId             string           `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"`
-	Request              *SetValueRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TargetId      string                 `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"`
+	Request       *SetValueRequest       `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SingleSetValueRequest) Reset()         { *m = SingleSetValueRequest{} }
-func (m *SingleSetValueRequest) String() string { return proto.CompactTextString(m) }
-func (*SingleSetValueRequest) ProtoMessage()    {}
+func (x *SingleSetValueRequest) Reset() {
+	*x = SingleSetValueRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[55]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SingleSetValueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SingleSetValueRequest) ProtoMessage() {}
+
+func (x *SingleSetValueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[55]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SingleSetValueRequest.ProtoReflect.Descriptor instead.
 func (*SingleSetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{55}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{55}
 }
 
-func (m *SingleSetValueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SingleSetValueRequest.Unmarshal(m, b)
-}
-func (m *SingleSetValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SingleSetValueRequest.Marshal(b, m, deterministic)
-}
-func (m *SingleSetValueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SingleSetValueRequest.Merge(m, src)
-}
-func (m *SingleSetValueRequest) XXX_Size() int {
-	return xxx_messageInfo_SingleSetValueRequest.Size(m)
-}
-func (m *SingleSetValueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SingleSetValueRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SingleSetValueRequest proto.InternalMessageInfo
-
-func (m *SingleSetValueRequest) GetTargetId() string {
-	if m != nil {
-		return m.TargetId
+func (x *SingleSetValueRequest) GetTargetId() string {
+	if x != nil {
+		return x.TargetId
 	}
 	return ""
 }
 
-func (m *SingleSetValueRequest) GetRequest() *SetValueRequest {
-	if m != nil {
-		return m.Request
+func (x *SingleSetValueRequest) GetRequest() *SetValueRequest {
+	if x != nil {
+		return x.Request
 	}
 	return nil
 }
 
 type SingleSetValueResponse struct {
-	Response             *SetValueResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Response      *SetValueResponse      `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SingleSetValueResponse) Reset()         { *m = SingleSetValueResponse{} }
-func (m *SingleSetValueResponse) String() string { return proto.CompactTextString(m) }
-func (*SingleSetValueResponse) ProtoMessage()    {}
+func (x *SingleSetValueResponse) Reset() {
+	*x = SingleSetValueResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[56]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SingleSetValueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SingleSetValueResponse) ProtoMessage() {}
+
+func (x *SingleSetValueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[56]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SingleSetValueResponse.ProtoReflect.Descriptor instead.
 func (*SingleSetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{56}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{56}
 }
 
-func (m *SingleSetValueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SingleSetValueResponse.Unmarshal(m, b)
-}
-func (m *SingleSetValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SingleSetValueResponse.Marshal(b, m, deterministic)
-}
-func (m *SingleSetValueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SingleSetValueResponse.Merge(m, src)
-}
-func (m *SingleSetValueResponse) XXX_Size() int {
-	return xxx_messageInfo_SingleSetValueResponse.Size(m)
-}
-func (m *SingleSetValueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SingleSetValueResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SingleSetValueResponse proto.InternalMessageInfo
-
-func (m *SingleSetValueResponse) GetResponse() *SetValueResponse {
-	if m != nil {
-		return m.Response
+func (x *SingleSetValueResponse) GetResponse() *SetValueResponse {
+	if x != nil {
+		return x.Response
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("extension.ValueType_Type", ValueType_Type_name, ValueType_Type_value)
-	proto.RegisterEnum("extension.GetOnuUniInfoResponse_ConfigurationInd", GetOnuUniInfoResponse_ConfigurationInd_name, GetOnuUniInfoResponse_ConfigurationInd_value)
-	proto.RegisterEnum("extension.GetOnuUniInfoResponse_AdministrativeState", GetOnuUniInfoResponse_AdministrativeState_name, GetOnuUniInfoResponse_AdministrativeState_value)
-	proto.RegisterEnum("extension.GetOnuUniInfoResponse_OperationalState", GetOnuUniInfoResponse_OperationalState_name, GetOnuUniInfoResponse_OperationalState_value)
-	proto.RegisterEnum("extension.GetOltPortCounters_PortType", GetOltPortCounters_PortType_name, GetOltPortCounters_PortType_value)
-	proto.RegisterEnum("extension.GetOnuEthernetBridgePortHistory_Direction", GetOnuEthernetBridgePortHistory_Direction_name, GetOnuEthernetBridgePortHistory_Direction_value)
-	proto.RegisterEnum("extension.GetOmciEthernetFrameExtendedPmResponse_Format", GetOmciEthernetFrameExtendedPmResponse_Format_name, GetOmciEthernetFrameExtendedPmResponse_Format_value)
-	proto.RegisterEnum("extension.GetOffloadedAppsStatisticsRequest_OffloadedApp", GetOffloadedAppsStatisticsRequest_OffloadedApp_name, GetOffloadedAppsStatisticsRequest_OffloadedApp_value)
-	proto.RegisterEnum("extension.GetValueResponse_Status", GetValueResponse_Status_name, GetValueResponse_Status_value)
-	proto.RegisterEnum("extension.GetValueResponse_ErrorReason", GetValueResponse_ErrorReason_name, GetValueResponse_ErrorReason_value)
-	proto.RegisterEnum("extension.SetValueResponse_Status", SetValueResponse_Status_name, SetValueResponse_Status_value)
-	proto.RegisterEnum("extension.SetValueResponse_ErrorReason", SetValueResponse_ErrorReason_name, SetValueResponse_ErrorReason_value)
-	proto.RegisterType((*ValueSet)(nil), "extension.ValueSet")
-	proto.RegisterType((*ValueType)(nil), "extension.ValueType")
-	proto.RegisterType((*ValueSpecifier)(nil), "extension.ValueSpecifier")
-	proto.RegisterType((*ReturnValues)(nil), "extension.ReturnValues")
-	proto.RegisterType((*GetDistanceRequest)(nil), "extension.GetDistanceRequest")
-	proto.RegisterType((*GetDistanceResponse)(nil), "extension.GetDistanceResponse")
-	proto.RegisterType((*GetOnuUniInfoRequest)(nil), "extension.GetOnuUniInfoRequest")
-	proto.RegisterType((*GetOnuUniInfoResponse)(nil), "extension.GetOnuUniInfoResponse")
-	proto.RegisterType((*GetOltPortCounters)(nil), "extension.GetOltPortCounters")
-	proto.RegisterType((*GetOltPortCountersResponse)(nil), "extension.GetOltPortCountersResponse")
-	proto.RegisterType((*GetOnuPonOpticalInfo)(nil), "extension.GetOnuPonOpticalInfo")
-	proto.RegisterType((*GetOnuPonOpticalInfoResponse)(nil), "extension.GetOnuPonOpticalInfoResponse")
-	proto.RegisterType((*GetOnuEthernetBridgePortHistory)(nil), "extension.GetOnuEthernetBridgePortHistory")
-	proto.RegisterType((*GetOnuEthernetBridgePortHistoryResponse)(nil), "extension.GetOnuEthernetBridgePortHistoryResponse")
-	proto.RegisterType((*GetOnuAllocGemHistoryRequest)(nil), "extension.GetOnuAllocGemHistoryRequest")
-	proto.RegisterType((*OnuGemPortHistoryData)(nil), "extension.OnuGemPortHistoryData")
-	proto.RegisterType((*OnuAllocHistoryData)(nil), "extension.OnuAllocHistoryData")
-	proto.RegisterType((*OnuAllocGemHistoryData)(nil), "extension.OnuAllocGemHistoryData")
-	proto.RegisterType((*GetOnuAllocGemHistoryResponse)(nil), "extension.GetOnuAllocGemHistoryResponse")
-	proto.RegisterType((*GetOnuFecHistory)(nil), "extension.GetOnuFecHistory")
-	proto.RegisterType((*GetOnuFecHistoryResponse)(nil), "extension.GetOnuFecHistoryResponse")
-	proto.RegisterType((*GetOnuCountersRequest)(nil), "extension.GetOnuCountersRequest")
-	proto.RegisterType((*GetOmciEthernetFrameExtendedPmRequest)(nil), "extension.GetOmciEthernetFrameExtendedPmRequest")
-	proto.RegisterType((*GetRxPowerRequest)(nil), "extension.GetRxPowerRequest")
-	proto.RegisterType((*GetOltRxPowerRequest)(nil), "extension.GetOltRxPowerRequest")
-	proto.RegisterType((*GetPonStatsRequest)(nil), "extension.GetPonStatsRequest")
-	proto.RegisterType((*GetPonStatsResponse)(nil), "extension.GetPonStatsResponse")
-	proto.RegisterType((*GetNNIStatsRequest)(nil), "extension.GetNNIStatsRequest")
-	proto.RegisterType((*GetNNIStatsResponse)(nil), "extension.GetNNIStatsResponse")
-	proto.RegisterType((*GetOnuStatsFromOltRequest)(nil), "extension.GetOnuStatsFromOltRequest")
-	proto.RegisterType((*OnuGemPortInfoFromOlt)(nil), "extension.OnuGemPortInfoFromOlt")
-	proto.RegisterType((*OnuAllocIdInfoFromOlt)(nil), "extension.OnuAllocIdInfoFromOlt")
-	proto.RegisterType((*OnuAllocGemStatsFromOltResponse)(nil), "extension.OnuAllocGemStatsFromOltResponse")
-	proto.RegisterType((*GetOnuStatsFromOltResponse)(nil), "extension.GetOnuStatsFromOltResponse")
-	proto.RegisterType((*GetOnuCountersResponse)(nil), "extension.GetOnuCountersResponse")
-	proto.RegisterType((*OmciEthernetFrameExtendedPm)(nil), "extension.OmciEthernetFrameExtendedPm")
-	proto.RegisterType((*GetOmciEthernetFrameExtendedPmResponse)(nil), "extension.GetOmciEthernetFrameExtendedPmResponse")
-	proto.RegisterType((*RxPower)(nil), "extension.RxPower")
-	proto.RegisterType((*GetOltRxPowerResponse)(nil), "extension.GetOltRxPowerResponse")
-	proto.RegisterType((*GetRxPowerResponse)(nil), "extension.GetRxPowerResponse")
-	proto.RegisterType((*GetOnuOmciTxRxStatsRequest)(nil), "extension.GetOnuOmciTxRxStatsRequest")
-	proto.RegisterType((*GetOnuOmciTxRxStatsResponse)(nil), "extension.GetOnuOmciTxRxStatsResponse")
-	proto.RegisterType((*GetOnuOmciActiveAlarmsRequest)(nil), "extension.GetOnuOmciActiveAlarmsRequest")
-	proto.RegisterType((*AlarmData)(nil), "extension.AlarmData")
-	proto.RegisterType((*GetOnuOmciActiveAlarmsResponse)(nil), "extension.GetOnuOmciActiveAlarmsResponse")
-	proto.RegisterType((*GetOffloadedAppsStatisticsRequest)(nil), "extension.GetOffloadedAppsStatisticsRequest")
-	proto.RegisterType((*GetOffloadedAppsStatisticsResponse)(nil), "extension.GetOffloadedAppsStatisticsResponse")
-	proto.RegisterType((*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats)(nil), "extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats")
-	proto.RegisterMapType((map[string]string)(nil), "extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.AdditionalStatsEntry")
-	proto.RegisterType((*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats)(nil), "extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats")
-	proto.RegisterMapType((map[string]string)(nil), "extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.AdditionalStatsEntry")
-	proto.RegisterType((*GetOffloadedAppsStatisticsResponse_PPPoeIAStats)(nil), "extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats")
-	proto.RegisterMapType((map[string]string)(nil), "extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.AdditionalStatsEntry")
-	proto.RegisterType((*GetValueRequest)(nil), "extension.GetValueRequest")
-	proto.RegisterType((*GetValueResponse)(nil), "extension.GetValueResponse")
-	proto.RegisterType((*AppOffloadConfig)(nil), "extension.AppOffloadConfig")
-	proto.RegisterType((*AppOffloadOnuConfig)(nil), "extension.AppOffloadOnuConfig")
-	proto.RegisterType((*AppOffloadOnuConfig_PerUniConfig)(nil), "extension.AppOffloadOnuConfig.PerUniConfig")
-	proto.RegisterType((*SetValueRequest)(nil), "extension.SetValueRequest")
-	proto.RegisterType((*SetValueResponse)(nil), "extension.SetValueResponse")
-	proto.RegisterType((*SingleGetValueRequest)(nil), "extension.SingleGetValueRequest")
-	proto.RegisterType((*SingleGetValueResponse)(nil), "extension.SingleGetValueResponse")
-	proto.RegisterType((*SingleSetValueRequest)(nil), "extension.SingleSetValueRequest")
-	proto.RegisterType((*SingleSetValueResponse)(nil), "extension.SingleSetValueResponse")
+type GetOffloadedAppsStatisticsResponse_DHCPv4RAStats struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-l2-dhcpv4-relay.yang
+	InBadPacketsFromClient           uint32 `protobuf:"varint,1,opt,name=in_bad_packets_from_client,json=inBadPacketsFromClient,proto3" json:"in_bad_packets_from_client,omitempty"`
+	InBadPacketsFromServer           uint32 `protobuf:"varint,2,opt,name=in_bad_packets_from_server,json=inBadPacketsFromServer,proto3" json:"in_bad_packets_from_server,omitempty"`
+	InPacketsFromClient              uint32 `protobuf:"varint,3,opt,name=in_packets_from_client,json=inPacketsFromClient,proto3" json:"in_packets_from_client,omitempty"`
+	InPacketsFromServer              uint32 `protobuf:"varint,4,opt,name=in_packets_from_server,json=inPacketsFromServer,proto3" json:"in_packets_from_server,omitempty"`
+	OutPacketsToServer               uint32 `protobuf:"varint,5,opt,name=out_packets_to_server,json=outPacketsToServer,proto3" json:"out_packets_to_server,omitempty"`
+	OutPacketsToClient               uint32 `protobuf:"varint,6,opt,name=out_packets_to_client,json=outPacketsToClient,proto3" json:"out_packets_to_client,omitempty"`
+	Option_82InsertedPacketsToServer uint32 `protobuf:"varint,7,opt,name=option_82_inserted_packets_to_server,json=option82InsertedPacketsToServer,proto3" json:"option_82_inserted_packets_to_server,omitempty"`
+	Option_82RemovedPacketsToClient  uint32 `protobuf:"varint,8,opt,name=option_82_removed_packets_to_client,json=option82RemovedPacketsToClient,proto3" json:"option_82_removed_packets_to_client,omitempty"`
+	Option_82NotInsertedToServer     uint32 `protobuf:"varint,9,opt,name=option_82_not_inserted_to_server,json=option82NotInsertedToServer,proto3" json:"option_82_not_inserted_to_server,omitempty"`
+	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
+	AdditionalStats map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func init() { proto.RegisterFile("voltha_protos/extensions.proto", fileDescriptor_7ecf6e9799a9202d) }
-
-var fileDescriptor_7ecf6e9799a9202d = []byte{
-	// 5177 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5c, 0xcd, 0x6f, 0x1b, 0x49,
-	0x76, 0x17, 0x29, 0x89, 0x12, 0x1f, 0x45, 0x89, 0x2a, 0x7d, 0x98, 0x96, 0x3d, 0xb6, 0xa7, 0x77,
-	0x3e, 0x3c, 0x9b, 0x19, 0xd9, 0xa2, 0x2d, 0x59, 0x3b, 0xbb, 0x59, 0x2c, 0x29, 0x51, 0x22, 0x63,
-	0x9b, 0xe2, 0x14, 0xa9, 0xf9, 0xd8, 0x20, 0xdb, 0xdb, 0x62, 0x97, 0x34, 0x0d, 0x93, 0x5d, 0x4c,
-	0x77, 0x53, 0x4b, 0x4f, 0x90, 0x5b, 0x6e, 0x9b, 0x9c, 0x72, 0xc9, 0x25, 0xb7, 0x5c, 0x02, 0x24,
-	0xd8, 0x43, 0x0e, 0x41, 0xae, 0x8b, 0x1c, 0xf3, 0x4f, 0x04, 0x08, 0x90, 0x73, 0x82, 0x04, 0x08,
-	0x12, 0x20, 0x08, 0xea, 0xab, 0xbb, 0xba, 0xd9, 0xd4, 0xc7, 0xec, 0x66, 0x03, 0xe4, 0x32, 0xa3,
-	0x7a, 0x1f, 0xbf, 0x7a, 0x55, 0xf5, 0xde, 0xab, 0x7a, 0xd5, 0x45, 0xc3, 0x83, 0x4b, 0xda, 0x0f,
-	0xbe, 0xb6, 0xcc, 0xa1, 0x47, 0x03, 0xea, 0x3f, 0x21, 0xe3, 0x80, 0xb8, 0xbe, 0x43, 0x5d, 0x7f,
-	0x9b, 0x53, 0x50, 0x3e, 0xa4, 0x6c, 0x4d, 0x8a, 0x9a, 0x3d, 0xea, 0x9e, 0x3b, 0x17, 0x42, 0x74,
-	0xeb, 0xde, 0x05, 0xa5, 0x17, 0x7d, 0xf2, 0x84, 0xb7, 0xce, 0x46, 0xe7, 0x4f, 0xc8, 0x60, 0x18,
-	0xbc, 0x95, 0xcc, 0xad, 0xb8, 0x72, 0x8f, 0x0e, 0x06, 0xd4, 0x15, 0x3c, 0xe3, 0xf7, 0x60, 0xf1,
-	0x73, 0xab, 0x3f, 0x22, 0x1d, 0x12, 0xa0, 0x65, 0xc8, 0x3a, 0x76, 0x39, 0xf3, 0x28, 0xf3, 0x38,
-	0x8f, 0xb3, 0x8e, 0x8d, 0xf6, 0x61, 0xc9, 0xea, 0x5b, 0xde, 0x40, 0x76, 0x55, 0xce, 0x3e, 0xca,
-	0x3c, 0x2e, 0x54, 0xd6, 0xb6, 0x65, 0xcf, 0x55, 0xc6, 0x3b, 0xe0, 0x7f, 0x37, 0x66, 0x70, 0xc1,
-	0x8a, 0x9a, 0xb5, 0x05, 0x98, 0xbf, 0x64, 0xa8, 0xc6, 0xc7, 0x90, 0xe7, 0xf0, 0xdd, 0xb7, 0x43,
-	0x62, 0x3c, 0x84, 0x39, 0xf6, 0x7f, 0x94, 0x87, 0xf9, 0xfa, 0xeb, 0x76, 0xf7, 0xab, 0xd2, 0x0c,
-	0x5a, 0x82, 0xc5, 0xc3, 0x66, 0xa7, 0x5b, 0x6d, 0x1d, 0xd4, 0x4b, 0x19, 0xe3, 0x33, 0x58, 0x16,
-	0xc6, 0x0c, 0x49, 0xcf, 0x39, 0x77, 0x88, 0x37, 0x61, 0xd2, 0x13, 0x09, 0xcc, 0x6d, 0x59, 0xae,
-	0xdc, 0xdd, 0x0e, 0xa7, 0x68, 0x3b, 0xec, 0x67, 0x9b, 0xfd, 0x07, 0x4b, 0x03, 0x02, 0x58, 0xc2,
-	0x24, 0x18, 0x79, 0x2e, 0x67, 0xfb, 0xa8, 0x04, 0xb3, 0x1d, 0x12, 0x70, 0xc4, 0x22, 0x66, 0x7f,
-	0xa2, 0x47, 0x50, 0x38, 0x75, 0xfd, 0xd1, 0x70, 0x48, 0xbd, 0x80, 0xd8, 0x1c, 0xb8, 0x88, 0x75,
-	0x12, 0x5a, 0x87, 0xf9, 0xba, 0xe7, 0x51, 0xaf, 0x3c, 0xcb, 0x79, 0xa2, 0x81, 0xb6, 0x60, 0xf1,
-	0xd0, 0xf1, 0x03, 0xcb, 0xed, 0x91, 0xf2, 0x1c, 0x67, 0x84, 0x6d, 0x63, 0x0f, 0xd0, 0x31, 0x09,
-	0x54, 0x13, 0x93, 0xdf, 0x1f, 0x11, 0x9f, 0xf7, 0x44, 0xdd, 0xd1, 0x21, 0xb9, 0x74, 0x7a, 0xa4,
-	0xa9, 0x46, 0xa5, 0x93, 0x8c, 0x1d, 0x58, 0x8b, 0xe9, 0xf9, 0x43, 0xea, 0xfa, 0x84, 0x75, 0x65,
-	0xab, 0xae, 0x84, 0xe5, 0x61, 0xdb, 0xa8, 0xc0, 0xfa, 0x31, 0x09, 0x4e, 0xdc, 0xd1, 0xa9, 0xeb,
-	0x34, 0xdd, 0x73, 0xaa, 0x3a, 0xdb, 0x82, 0xc5, 0x11, 0xa3, 0xd8, 0x64, 0xac, 0x74, 0x54, 0xdb,
-	0xf8, 0xc7, 0x39, 0xd8, 0x48, 0x28, 0xc9, 0x9e, 0xda, 0xb0, 0x68, 0xd9, 0x83, 0x4e, 0x60, 0x05,
-	0xa2, 0xa7, 0xe5, 0xca, 0x73, 0x6d, 0x8a, 0x53, 0x75, 0xb6, 0xab, 0xf6, 0xc0, 0x71, 0x1d, 0x3f,
-	0xf0, 0xac, 0xc0, 0xb9, 0x24, 0x5c, 0x17, 0x87, 0x28, 0xe8, 0x04, 0xf2, 0x74, 0x48, 0x3c, 0x01,
-	0x29, 0x56, 0x6d, 0xe7, 0x5a, 0xc8, 0x93, 0x21, 0x61, 0x68, 0xd4, 0xb5, 0xfa, 0x02, 0x2f, 0xc2,
-	0x60, 0x80, 0xc2, 0x01, 0x9b, 0xae, 0xcd, 0x57, 0xe4, 0x26, 0x80, 0xc2, 0x2f, 0x47, 0x02, 0xb4,
-	0xe9, 0xda, 0x38, 0xc2, 0x30, 0x7e, 0x99, 0x81, 0x52, 0x92, 0x8f, 0x00, 0x72, 0xa7, 0xad, 0x97,
-	0x27, 0x5f, 0xb4, 0x4a, 0x33, 0x08, 0xc1, 0x72, 0xb7, 0xde, 0x32, 0x6b, 0xd5, 0x4e, 0xdd, 0xec,
-	0x9a, 0x47, 0x87, 0x5f, 0x96, 0x32, 0x68, 0x13, 0x50, 0xe3, 0xb4, 0x75, 0x88, 0xeb, 0x87, 0x3a,
-	0x3d, 0x8b, 0xca, 0xb0, 0x7e, 0xdc, 0x3c, 0xae, 0xd6, 0x9a, 0x5d, 0xb3, 0xde, 0x6d, 0xd4, 0x71,
-	0xab, 0x2e, 0x38, 0xb3, 0x4c, 0x83, 0xa1, 0x1c, 0xc7, 0xe9, 0x73, 0x09, 0xf4, 0xc6, 0xe1, 0x97,
-	0xa5, 0xf9, 0x14, 0x74, 0x46, 0xcf, 0xa5, 0xa2, 0x33, 0xce, 0x82, 0x71, 0x0c, 0x6b, 0x29, 0xeb,
-	0xc0, 0x80, 0xaa, 0x87, 0xaf, 0x3b, 0xdd, 0x6a, 0xb7, 0x6e, 0x9e, 0xb6, 0x0e, 0xeb, 0x47, 0xcd,
-	0x56, 0xfd, 0xb0, 0x34, 0xc3, 0x86, 0xf7, 0xea, 0xe4, 0xe0, 0x65, 0xfd, 0xb0, 0x94, 0x61, 0x31,
-	0x78, 0xda, 0x92, 0xad, 0xac, 0x71, 0x04, 0xa5, 0xe4, 0xec, 0xa3, 0x3b, 0xb0, 0x76, 0xd2, 0xae,
-	0xe3, 0x49, 0x98, 0x02, 0x2c, 0xd4, 0x5b, 0xd5, 0xda, 0x2b, 0x85, 0x73, 0xd8, 0xec, 0x88, 0x56,
-	0xd6, 0xf8, 0xdb, 0x0c, 0x8f, 0x81, 0x93, 0x7e, 0xd0, 0xa6, 0x5e, 0x70, 0x40, 0x47, 0x6e, 0x40,
-	0x3c, 0x1f, 0x6d, 0x42, 0x8e, 0x45, 0x55, 0x8b, 0x4a, 0xa7, 0x94, 0x2d, 0x54, 0x83, 0x45, 0xf6,
-	0x17, 0x0b, 0x5d, 0xe9, 0x25, 0x1f, 0x24, 0x16, 0x35, 0x0e, 0xb4, 0xdd, 0x96, 0xd2, 0x38, 0xd4,
-	0x33, 0xea, 0xb0, 0xa8, 0xa8, 0xa8, 0x04, 0x4b, 0xec, 0x6f, 0xf3, 0xb4, 0xf5, 0xb2, 0x25, 0x56,
-	0x71, 0x03, 0x56, 0x39, 0x25, 0x9c, 0xb8, 0x56, 0xab, 0x59, 0xca, 0x84, 0x82, 0xed, 0x93, 0x96,
-	0x79, 0xf2, 0xaa, 0x5b, 0xca, 0x1a, 0xff, 0x30, 0x0b, 0x5b, 0x93, 0x1d, 0x86, 0x21, 0x52, 0x86,
-	0x85, 0x60, 0x5c, 0x7b, 0x1b, 0x10, 0x9f, 0x0f, 0x61, 0x0e, 0xab, 0x26, 0xe3, 0x78, 0x92, 0x93,
-	0x15, 0x1c, 0xd9, 0x44, 0xf7, 0x21, 0x1f, 0x8c, 0xdb, 0x56, 0xef, 0x0d, 0x09, 0x7c, 0xee, 0xb3,
-	0x73, 0x38, 0x22, 0x30, 0xae, 0x17, 0x72, 0xe7, 0x04, 0x37, 0x24, 0xa0, 0x0f, 0x60, 0x39, 0x18,
-	0xf3, 0x94, 0xa3, 0x44, 0xe6, 0xb9, 0x48, 0x82, 0xca, 0xe4, 0xbc, 0xb8, 0x5c, 0x4e, 0xc8, 0x79,
-	0x13, 0x72, 0xc1, 0xb8, 0xd6, 0xb3, 0xfc, 0x40, 0xc9, 0x2d, 0x28, 0x3c, 0x9d, 0x2a, 0xf0, 0x62,
-	0x72, 0x8b, 0x0a, 0x2f, 0x29, 0x17, 0x8c, 0x4f, 0x75, 0xb9, 0xbc, 0xc2, 0x3b, 0x9d, 0xc0, 0x8b,
-	0xc9, 0x81, 0xc2, 0x3b, 0x9d, 0xc0, 0x7b, 0xad, 0xcb, 0x15, 0x14, 0xde, 0xeb, 0x09, 0xbc, 0x98,
-	0xdc, 0x92, 0xc2, 0xd3, 0xa9, 0xc6, 0xa1, 0x4a, 0x90, 0x6d, 0xea, 0x9e, 0x0c, 0x03, 0xa7, 0x67,
-	0xf5, 0x59, 0x6a, 0x40, 0x1f, 0xc3, 0x3c, 0xdf, 0x24, 0xf9, 0x2a, 0x16, 0x2a, 0x9b, 0xdb, 0x62,
-	0x0b, 0xdd, 0x56, 0x5b, 0xe8, 0x76, 0x9d, 0x71, 0xb1, 0x10, 0x32, 0xfe, 0x28, 0x0b, 0xf7, 0xd3,
-	0x60, 0x42, 0xb7, 0xf8, 0x2e, 0x94, 0x86, 0xf4, 0x67, 0xc4, 0x3b, 0x22, 0xc4, 0xfe, 0x9c, 0xf6,
-	0x03, 0xeb, 0x42, 0x64, 0xd0, 0x2c, 0x9e, 0xa0, 0xa3, 0x0a, 0xac, 0x7b, 0xa4, 0x47, 0x9c, 0x4b,
-	0x62, 0x4b, 0xa8, 0x36, 0x13, 0xe1, 0x5e, 0x93, 0xc5, 0xa9, 0x3c, 0xb4, 0x07, 0x9b, 0x03, 0x62,
-	0xa9, 0xae, 0x5f, 0x59, 0x23, 0xb7, 0xf7, 0xb5, 0xd0, 0x9a, 0xe5, 0x5a, 0x53, 0xb8, 0xcc, 0xae,
-	0xbe, 0xe5, 0x13, 0xaf, 0xe6, 0x58, 0xfe, 0xc1, 0xc8, 0xf3, 0x88, 0x1b, 0x70, 0x1f, 0xcb, 0xe2,
-	0x09, 0x3a, 0xdb, 0xa0, 0x02, 0x32, 0xe0, 0xd1, 0x3f, 0xf2, 0x08, 0xf7, 0xb3, 0x2c, 0xd6, 0x49,
-	0xc6, 0x2f, 0x32, 0xf0, 0x50, 0x4c, 0x43, 0x3d, 0xf8, 0x9a, 0x78, 0x2e, 0x09, 0x6a, 0x9e, 0x63,
-	0x5f, 0x10, 0x16, 0x29, 0x0d, 0xc7, 0x0f, 0xa8, 0xf7, 0x16, 0x61, 0xc8, 0xdb, 0x8e, 0x47, 0x7a,
-	0x2c, 0x83, 0x4c, 0xdd, 0x44, 0xa6, 0xaa, 0x6f, 0x1f, 0x2a, 0x5d, 0x1c, 0xc1, 0x18, 0xfb, 0x90,
-	0x0f, 0xe9, 0xa8, 0x08, 0x79, 0x3d, 0x09, 0xb1, 0xfc, 0xd5, 0xee, 0x74, 0x71, 0xbd, 0xfa, 0xba,
-	0x94, 0x41, 0xcb, 0x00, 0x87, 0x27, 0x5f, 0xb4, 0x64, 0x3b, 0x6b, 0xfc, 0xe9, 0x3c, 0x7c, 0x78,
-	0x4d, 0x97, 0xe1, 0x1a, 0x3e, 0x00, 0xb0, 0x3d, 0x3a, 0xac, 0x5f, 0x12, 0x37, 0xf0, 0x65, 0x82,
-	0xd2, 0x28, 0x2c, 0x79, 0xd1, 0x5e, 0xc0, 0x5c, 0x4d, 0x9c, 0x12, 0x64, 0x8b, 0x05, 0xfe, 0x50,
-	0x0b, 0xee, 0x22, 0x56, 0x4d, 0x36, 0xfb, 0x67, 0x1e, 0xb5, 0x6c, 0xdd, 0x4d, 0xc5, 0x61, 0x61,
-	0x82, 0xce, 0x64, 0x07, 0xa3, 0x3e, 0x5b, 0xc0, 0x48, 0x76, 0x5e, 0xc8, 0x26, 0xe9, 0xe8, 0x63,
-	0x58, 0xed, 0x79, 0x3d, 0x1e, 0xd7, 0xc4, 0xd6, 0xe3, 0xbd, 0x88, 0x27, 0x19, 0x0c, 0x79, 0xe4,
-	0xda, 0xc4, 0xf3, 0x9d, 0x6f, 0x88, 0x1e, 0xf4, 0x45, 0x3c, 0x41, 0x47, 0x8f, 0x61, 0x85, 0x5e,
-	0xc6, 0x45, 0x17, 0xb9, 0x68, 0x92, 0xcc, 0x24, 0xe5, 0x30, 0xf7, 0x9e, 0xcb, 0x69, 0xc9, 0x0b,
-	0xc9, 0x04, 0x99, 0xf9, 0xbb, 0x22, 0xed, 0x76, 0xe9, 0x4e, 0xe5, 0x85, 0x14, 0x07, 0x2e, 0x9e,
-	0xca, 0x43, 0xcf, 0x61, 0x43, 0xd2, 0x77, 0x2a, 0xfb, 0x5d, 0x5a, 0xd9, 0xdd, 0x3d, 0x11, 0x4a,
-	0x05, 0xae, 0x94, 0xce, 0xd4, 0xb4, 0x2a, 0xbb, 0x7b, 0x5d, 0xba, 0xbb, 0xb3, 0x23, 0xbb, 0x5a,
-	0x8a, 0x69, 0xc5, 0x99, 0x2c, 0xb6, 0x24, 0x63, 0x77, 0xa7, 0xd2, 0xa5, 0x3b, 0x4f, 0x2b, 0xcf,
-	0xa4, 0x5a, 0x91, 0xab, 0x4d, 0xe1, 0xa2, 0x7d, 0xb8, 0xa3, 0xcc, 0x78, 0x5a, 0x79, 0xde, 0xa5,
-	0x3b, 0xbb, 0x3b, 0xfb, 0x52, 0x71, 0x99, 0x2b, 0x4e, 0x63, 0x1b, 0xaf, 0x54, 0x36, 0xa9, 0xf6,
-	0xfb, 0xb4, 0x77, 0x4c, 0x06, 0xa1, 0x2b, 0x8a, 0xd3, 0xdb, 0xed, 0x92, 0xd3, 0x2f, 0xb2, 0xb0,
-	0x71, 0xe2, 0x8e, 0x8e, 0xc9, 0x40, 0xf3, 0xea, 0x43, 0x2b, 0xb0, 0xd8, 0xd1, 0xf5, 0x82, 0x0c,
-	0xe4, 0x61, 0xb3, 0x88, 0x45, 0x83, 0xad, 0x47, 0xe0, 0x59, 0xae, 0x3f, 0x70, 0x82, 0x80, 0xd8,
-	0xc7, 0xf5, 0xd7, 0x47, 0x9e, 0x35, 0x20, 0xca, 0xab, 0x53, 0x79, 0xcc, 0xe3, 0x54, 0x5e, 0x8a,
-	0x14, 0x84, 0xb7, 0x4f, 0x32, 0xf4, 0x0c, 0xd7, 0xb6, 0xde, 0xf6, 0xa9, 0x65, 0x8b, 0x7d, 0x51,
-	0xf8, 0x7e, 0x2a, 0x8f, 0xcd, 0xa6, 0xd6, 0x73, 0x4c, 0x4d, 0x84, 0xc1, 0x34, 0x36, 0x7a, 0x0a,
-	0x6b, 0xc4, 0xed, 0x79, 0x6f, 0x87, 0x2c, 0x3d, 0xbc, 0x24, 0x6f, 0xb9, 0xfb, 0xab, 0x78, 0x48,
-	0x63, 0x19, 0x4d, 0x58, 0x53, 0x93, 0xaf, 0x4f, 0x57, 0x19, 0x16, 0x2c, 0x46, 0x0b, 0x27, 0x4c,
-	0x35, 0x93, 0x7b, 0x7b, 0x31, 0xdc, 0xdb, 0x8d, 0xbf, 0xc8, 0xc0, 0xe6, 0xe4, 0x42, 0x72, 0xb8,
-	0x23, 0x58, 0xa6, 0x92, 0xd3, 0xb4, 0xd9, 0x6e, 0x21, 0x97, 0xf3, 0x81, 0x96, 0x0e, 0x53, 0xcc,
-	0xc0, 0x09, 0x2d, 0x54, 0x83, 0xc2, 0x85, 0x58, 0x5b, 0x0e, 0x92, 0x7d, 0x34, 0xfb, 0xb8, 0x50,
-	0x79, 0x14, 0x07, 0x99, 0x5c, 0x7c, 0xac, 0x2b, 0x19, 0xdf, 0xc0, 0x3b, 0x53, 0x3c, 0x4e, 0x26,
-	0xbf, 0xaf, 0x60, 0x93, 0xa6, 0x0e, 0xa3, 0x9c, 0xe1, 0xfd, 0xbd, 0x9b, 0x62, 0x74, 0x5c, 0x10,
-	0x4f, 0x01, 0x30, 0x7e, 0x04, 0x25, 0xd1, 0xf7, 0x11, 0x51, 0xe3, 0xbc, 0xa5, 0x87, 0xff, 0x6b,
-	0x06, 0xca, 0x49, 0x88, 0xd0, 0xf2, 0x0f, 0x60, 0xb9, 0x47, 0x3d, 0xb6, 0x3b, 0x10, 0x3b, 0x3a,
-	0x98, 0x15, 0x71, 0x82, 0x8a, 0xb6, 0x01, 0x85, 0x94, 0x03, 0x6a, 0x93, 0x2f, 0xa8, 0x67, 0xab,
-	0xe5, 0x4c, 0xe1, 0xb0, 0xed, 0xe0, 0x9c, 0xf4, 0x3a, 0xa4, 0x47, 0x5d, 0x5b, 0xf9, 0xba, 0x46,
-	0xe1, 0x27, 0x15, 0x1a, 0x58, 0xfd, 0x08, 0x4b, 0xb8, 0x77, 0x82, 0xca, 0xd2, 0xcb, 0xc8, 0x95,
-	0xf8, 0xd6, 0x59, 0x9f, 0x44, 0xf2, 0xc2, 0xaf, 0xa7, 0x70, 0x8d, 0x63, 0x55, 0xa5, 0x45, 0x67,
-	0x50, 0x91, 0x1d, 0xee, 0xc0, 0x82, 0xe3, 0x06, 0xe7, 0xa6, 0x2c, 0x8d, 0x17, 0x70, 0x8e, 0x35,
-	0x9b, 0x36, 0xda, 0x80, 0x1c, 0x75, 0x47, 0x8c, 0x9e, 0xe5, 0xf4, 0x79, 0xea, 0x8e, 0x9a, 0xb6,
-	0xf1, 0x27, 0x19, 0x78, 0x9f, 0x21, 0x0d, 0x7a, 0x8e, 0xda, 0x04, 0x79, 0x9c, 0xd6, 0xd9, 0x82,
-	0xda, 0xc4, 0x6e, 0x0f, 0x6e, 0x5c, 0xa2, 0xa2, 0xfb, 0x5a, 0x5d, 0xc9, 0xa7, 0xae, 0x31, 0x13,
-	0x55, 0x96, 0x2c, 0xdf, 0x78, 0xc4, 0x27, 0x01, 0x9f, 0xad, 0x45, 0x2c, 0x1a, 0xb5, 0x65, 0x58,
-	0x72, 0x7c, 0x73, 0xe4, 0x3a, 0xa6, 0xc3, 0xeb, 0xcf, 0x03, 0x58, 0x3d, 0x26, 0x01, 0x1e, 0xf3,
-	0x13, 0xca, 0xb7, 0x1d, 0xd4, 0x2b, 0x71, 0xae, 0xeb, 0x27, 0x71, 0xde, 0x01, 0x60, 0x15, 0x81,
-	0xd9, 0xb7, 0xce, 0x48, 0x5f, 0x8e, 0x20, 0xcf, 0x28, 0xaf, 0x18, 0x41, 0xa1, 0xf9, 0x2e, 0x47,
-	0xcb, 0x73, 0xb4, 0x8e, 0x6b, 0xfc, 0x98, 0x57, 0x2b, 0x6d, 0xea, 0xb2, 0x8a, 0x27, 0x9c, 0xe8,
-	0x07, 0x10, 0x69, 0x0a, 0xa8, 0xc6, 0x8c, 0x0e, 0x56, 0x16, 0xd5, 0x4c, 0x53, 0x9a, 0xd6, 0x98,
-	0xc1, 0xb2, 0x5d, 0x03, 0x51, 0xcf, 0xf0, 0xd0, 0xa3, 0xbc, 0xaa, 0x8f, 0xb0, 0xa3, 0x42, 0x62,
-	0x48, 0x5d, 0x16, 0xa0, 0x2a, 0xd9, 0xc8, 0x26, 0xfa, 0x21, 0x2c, 0x33, 0x65, 0x26, 0xee, 0xf8,
-	0x81, 0xd3, 0xf3, 0xe5, 0xd5, 0xcb, 0xe6, 0xb6, 0xbc, 0xbb, 0x69, 0xc7, 0xb8, 0x38, 0x21, 0x2d,
-	0x07, 0xd3, 0x6a, 0x35, 0xff, 0xd7, 0x06, 0x13, 0x61, 0x47, 0x83, 0x71, 0x5d, 0x47, 0x1f, 0x8c,
-	0x6c, 0xfe, 0xca, 0x83, 0x69, 0xc2, 0x5d, 0x11, 0x05, 0xbc, 0xc3, 0x23, 0x8f, 0x0e, 0xd8, 0x9a,
-	0xcb, 0x31, 0x6d, 0x82, 0xf4, 0x92, 0x84, 0xcf, 0xac, 0x83, 0xf0, 0x92, 0xb8, 0xcb, 0xfc, 0x79,
-	0x46, 0xdf, 0x27, 0xd9, 0x70, 0x24, 0xdc, 0x94, 0x7d, 0x32, 0x56, 0x98, 0x65, 0x93, 0x85, 0x99,
-	0xb6, 0x25, 0xcc, 0x5e, 0x51, 0xee, 0xcd, 0x25, 0xcb, 0x3d, 0xad, 0x80, 0x9c, 0x8f, 0x15, 0x90,
-	0xc6, 0x4b, 0x6e, 0x9e, 0x96, 0xf9, 0x95, 0x79, 0x37, 0xde, 0x97, 0x22, 0x23, 0x8c, 0xbf, 0xcc,
-	0xc0, 0x43, 0x2d, 0x4f, 0xc7, 0x67, 0x4f, 0xae, 0x5a, 0x0d, 0x0a, 0xd6, 0xc4, 0xee, 0xf4, 0x28,
-	0x25, 0xd1, 0xc7, 0xcc, 0xc1, 0xba, 0xd2, 0x6d, 0x36, 0xa7, 0x18, 0x86, 0xbe, 0x39, 0x5d, 0x8a,
-	0x8a, 0x3b, 0xb9, 0xc6, 0xd2, 0xca, 0x2f, 0x61, 0xd5, 0xd2, 0x47, 0x21, 0x6d, 0x65, 0xfd, 0x7c,
-	0x37, 0x7d, 0x53, 0x4a, 0x83, 0xc1, 0x93, 0x20, 0xc6, 0x3f, 0x2d, 0xc1, 0x66, 0x32, 0xc5, 0xca,
-	0x4e, 0xef, 0x26, 0xd2, 0x11, 0x0b, 0x07, 0xe9, 0x5c, 0x77, 0xe2, 0x09, 0xa9, 0x91, 0x91, 0xfe,
-	0x85, 0x3e, 0x64, 0xae, 0xee, 0x3b, 0x81, 0x73, 0x49, 0x4c, 0xdb, 0x73, 0xce, 0x45, 0x1a, 0xcc,
-	0x35, 0xb2, 0xb8, 0xa8, 0xe8, 0x87, 0x8c, 0xcc, 0x04, 0x5d, 0x72, 0x61, 0x69, 0x82, 0x73, 0x5c,
-	0x70, 0x16, 0x17, 0x15, 0x5d, 0x08, 0x7e, 0x0a, 0x65, 0x9b, 0xf4, 0x9d, 0x81, 0x13, 0x10, 0xcf,
-	0x1c, 0x38, 0xbe, 0x6f, 0xda, 0x24, 0x90, 0xa5, 0xd5, 0x3c, 0x57, 0x99, 0xc3, 0x9b, 0xa1, 0xc4,
-	0x6b, 0xc7, 0xf7, 0x0f, 0x15, 0x1f, 0x3d, 0x04, 0x38, 0x73, 0x86, 0x26, 0x89, 0x0e, 0x43, 0xb9,
-	0xc6, 0x3c, 0xce, 0x9f, 0x39, 0x43, 0x71, 0x08, 0x42, 0xef, 0x00, 0x6b, 0xb0, 0xbc, 0x2c, 0xeb,
-	0x81, 0x5c, 0x23, 0x87, 0x17, 0xcf, 0x9c, 0xe1, 0x29, 0xa3, 0xb0, 0xb3, 0xf4, 0x39, 0xe9, 0x99,
-	0xe1, 0xc6, 0x68, 0xfa, 0x6f, 0x07, 0x67, 0xb4, 0x2f, 0xea, 0x81, 0x5c, 0x63, 0x01, 0xaf, 0x9d,
-	0x93, 0xde, 0x81, 0xe2, 0x76, 0x04, 0x93, 0x9d, 0xe2, 0x84, 0x96, 0x4d, 0x7e, 0xc6, 0x76, 0xb1,
-	0x48, 0x9f, 0x57, 0x07, 0xb9, 0xc6, 0x22, 0xde, 0xe0, 0x7a, 0x92, 0x1f, 0x02, 0xa0, 0x1f, 0xc1,
-	0xbd, 0xb8, 0x66, 0x6c, 0x5b, 0xe4, 0xc5, 0x42, 0xae, 0x91, 0xc7, 0x77, 0x75, 0xed, 0x53, 0x5d,
-	0x04, 0xbd, 0x0f, 0xc5, 0x18, 0x02, 0xaf, 0x15, 0x72, 0x0d, 0xc0, 0x4b, 0xba, 0x0e, 0x3b, 0x2e,
-	0xc6, 0x07, 0x26, 0x66, 0x60, 0x89, 0x0b, 0x17, 0xf0, 0xaa, 0x3e, 0x2c, 0x31, 0x15, 0x8f, 0x61,
-	0x65, 0x7c, 0x41, 0x06, 0xe6, 0x1b, 0xf2, 0x56, 0xcd, 0x67, 0x91, 0x4b, 0x2f, 0xe1, 0x22, 0x63,
-	0x84, 0x07, 0x4b, 0x36, 0xa7, 0x5c, 0xb2, 0x4f, 0x7d, 0x51, 0x04, 0xe4, 0x1a, 0x45, 0xbc, 0xc8,
-	0x48, 0xaf, 0xa8, 0xcf, 0x81, 0xbc, 0xb1, 0x39, 0xec, 0x53, 0x6b, 0xe0, 0x0b, 0xa4, 0xf2, 0x0a,
-	0x17, 0x5a, 0xc6, 0x45, 0x6f, 0xdc, 0xe6, 0x74, 0x71, 0xbd, 0xfc, 0x09, 0xa0, 0x48, 0xd2, 0xa5,
-	0xae, 0xe9, 0xd8, 0x7d, 0x52, 0x2e, 0x71, 0xe1, 0x15, 0xbc, 0xa2, 0x84, 0x5b, 0xd4, 0x6d, 0xda,
-	0x7d, 0xee, 0xae, 0xde, 0xd8, 0xa4, 0x83, 0x9e, 0x53, 0x5e, 0xe5, 0x32, 0x25, 0x9c, 0xf3, 0xc6,
-	0x6c, 0xc7, 0x67, 0xac, 0x40, 0xb2, 0x10, 0x67, 0xad, 0xe2, 0x5c, 0x20, 0x58, 0x9f, 0xc2, 0x5d,
-	0xa9, 0x65, 0xca, 0x4a, 0xc5, 0xec, 0x79, 0x3d, 0x69, 0xd8, 0x1a, 0x17, 0x46, 0x78, 0x43, 0xe0,
-	0xc8, 0xf4, 0x75, 0x20, 0xab, 0x4b, 0x74, 0x0f, 0x16, 0xbd, 0xb1, 0x79, 0xc6, 0x53, 0xcf, 0x3a,
-	0x17, 0x5d, 0x8b, 0x32, 0xe0, 0x43, 0x00, 0x66, 0xbd, 0x4c, 0x81, 0x1b, 0x9c, 0xbd, 0xae, 0x27,
-	0xcf, 0x7b, 0xb0, 0x18, 0x28, 0xed, 0x4d, 0xce, 0xde, 0x88, 0x2e, 0xd2, 0x1e, 0x02, 0x04, 0x91,
-	0xf6, 0x1d, 0xce, 0xde, 0xd4, 0x53, 0xe8, 0x77, 0x60, 0xe9, 0x8c, 0x78, 0xa6, 0x47, 0xe4, 0xa5,
-	0x7d, 0x99, 0x8b, 0xdc, 0xc1, 0x85, 0x33, 0x76, 0x0e, 0x90, 0xd7, 0xf6, 0xef, 0x42, 0xa1, 0xdf,
-	0xb3, 0x2f, 0xd4, 0x82, 0xdd, 0xe5, 0x32, 0x65, 0x0c, 0x8c, 0x28, 0x57, 0x8b, 0x99, 0x69, 0x3b,
-	0x4a, 0x62, 0x8b, 0x4b, 0xdc, 0xc5, 0x79, 0xcf, 0x76, 0xa4, 0xc0, 0x03, 0xc8, 0x07, 0xce, 0x80,
-	0xf8, 0x81, 0x35, 0x18, 0x96, 0xef, 0xf1, 0x68, 0xdf, 0xc2, 0x11, 0xa9, 0xb6, 0x04, 0xe0, 0xf8,
-	0xa6, 0x4c, 0x14, 0xb5, 0x02, 0xe4, 0x1d, 0xdf, 0x14, 0xb9, 0xa1, 0xb6, 0x06, 0xab, 0x8e, 0x6f,
-	0xc6, 0xf3, 0x81, 0x24, 0xc6, 0x63, 0xbf, 0xf6, 0x0e, 0xdc, 0x73, 0x58, 0x60, 0xa7, 0xc7, 0x79,
-	0x6d, 0x05, 0x8a, 0x8e, 0x6f, 0x46, 0xa1, 0x2c, 0x8f, 0x53, 0x61, 0xe8, 0xd6, 0xb6, 0xa0, 0xec,
-	0xf8, 0x66, 0x6a, 0xac, 0xd6, 0xee, 0xc3, 0x56, 0xc8, 0x9b, 0x88, 0xc8, 0xda, 0x23, 0x78, 0x30,
-	0xc1, 0x8d, 0x45, 0x5d, 0x0d, 0x41, 0x29, 0x29, 0x51, 0x2b, 0xc3, 0xe6, 0x44, 0x7f, 0xc2, 0x92,
-	0x75, 0x40, 0x8e, 0x6f, 0x26, 0x42, 0x45, 0xda, 0x1b, 0x86, 0x85, 0x94, 0x4a, 0xc4, 0x41, 0xed,
-	0x0e, 0x6c, 0xc4, 0xa8, 0xca, 0xe7, 0xe5, 0x1c, 0x4b, 0x3f, 0x95, 0x2d, 0xe9, 0xd0, 0xb5, 0x07,
-	0x70, 0x3f, 0xe2, 0x4d, 0xfa, 0x70, 0xad, 0x08, 0x05, 0xc1, 0xe7, 0x9e, 0x26, 0xa7, 0x32, 0xf2,
-	0x4c, 0xc9, 0x0f, 0xe2, 0xfc, 0xc8, 0xf7, 0x6a, 0xab, 0xb0, 0xc2, 0xa6, 0x5a, 0xf3, 0xb5, 0x5a,
-	0x09, 0x96, 0x1d, 0xdf, 0xd4, 0x3c, 0x4b, 0xa1, 0x86, 0x8e, 0x24, 0x07, 0x1c, 0x7a, 0x89, 0xf1,
-	0xc7, 0xf3, 0x70, 0xef, 0x8a, 0xc3, 0x37, 0x7a, 0x08, 0x05, 0xdb, 0xa3, 0x43, 0x93, 0x44, 0x17,
-	0x4f, 0xb9, 0x2b, 0x2e, 0x9e, 0x72, 0xe1, 0xc5, 0xd3, 0x26, 0xe4, 0xce, 0xa3, 0x4a, 0x3c, 0x87,
-	0x65, 0x0b, 0x7d, 0xa4, 0x5d, 0x3b, 0x99, 0x52, 0x82, 0xef, 0x30, 0x78, 0x25, 0xa4, 0x1f, 0x85,
-	0xa2, 0xe1, 0xed, 0x92, 0x12, 0x9d, 0x17, 0xa2, 0x21, 0x3d, 0xbc, 0x02, 0x40, 0xe1, 0xcc, 0x12,
-	0x5b, 0x09, 0xf3, 0x8d, 0x05, 0x97, 0xa2, 0x5b, 0xa7, 0x08, 0x38, 0xbc, 0x5c, 0x52, 0xb2, 0x0b,
-	0x02, 0x38, 0xa4, 0x4b, 0xd1, 0x0f, 0xa3, 0x3b, 0x27, 0x25, 0xc9, 0xf7, 0x18, 0xbc, 0xac, 0xc8,
-	0x52, 0xf0, 0x31, 0x94, 0x04, 0xdf, 0xdc, 0x7b, 0x6e, 0x6a, 0x77, 0x4e, 0x39, 0xbc, 0x2c, 0xe8,
-	0x7b, 0xcf, 0xc3, 0x8b, 0xa0, 0x3b, 0x4a, 0x72, 0xd7, 0x0c, 0xa8, 0xb9, 0x53, 0x79, 0x61, 0x6a,
-	0xb7, 0x4e, 0x39, 0xbc, 0x26, 0x15, 0xc4, 0xa5, 0xd3, 0x89, 0xba, 0x08, 0x2a, 0x4b, 0xad, 0x9d,
-	0xca, 0x3e, 0x53, 0xab, 0xec, 0xee, 0x2a, 0x35, 0xbe, 0x97, 0xe0, 0x75, 0xc1, 0x4f, 0x5c, 0x3b,
-	0x45, 0x7a, 0x95, 0xdd, 0x3d, 0xa6, 0xb7, 0xbb, 0xb3, 0x63, 0x6a, 0x37, 0x4f, 0xa1, 0x9e, 0xba,
-	0x78, 0x3a, 0x51, 0x17, 0x48, 0x77, 0xa5, 0xde, 0xee, 0x4e, 0x85, 0x9b, 0xf9, 0xb4, 0xf2, 0xcc,
-	0xd4, 0xee, 0x9e, 0x72, 0x78, 0x43, 0x08, 0x84, 0x57, 0x4f, 0x52, 0xf3, 0x53, 0xd8, 0x52, 0x96,
-	0x3e, 0xad, 0x3c, 0xe7, 0xaa, 0xbb, 0x3b, 0xfb, 0xa6, 0x76, 0xfb, 0x94, 0xc3, 0x9b, 0xd2, 0xd6,
-	0xf0, 0xf2, 0x49, 0xe8, 0x1a, 0xff, 0x96, 0x85, 0x0f, 0xae, 0x2b, 0x07, 0xc3, 0x03, 0xe2, 0xe2,
-	0x68, 0xe8, 0x07, 0x1e, 0xb1, 0x06, 0xf2, 0x74, 0xa8, 0x7f, 0x96, 0xb9, 0x0a, 0x21, 0xd4, 0x43,
-	0x47, 0x00, 0x36, 0xfd, 0x99, 0x2b, 0x51, 0xb2, 0xb7, 0x42, 0xd1, 0x34, 0xd1, 0xcf, 0x33, 0xf0,
-	0x01, 0x0f, 0x73, 0x22, 0x85, 0x85, 0xaf, 0x98, 0x44, 0x8a, 0x9b, 0xc3, 0x81, 0x79, 0x4e, 0xbd,
-	0x81, 0x15, 0xc8, 0xcf, 0x82, 0xfb, 0x89, 0x5b, 0xe7, 0xeb, 0xc7, 0xbb, 0x7d, 0xc4, 0xf5, 0xf1,
-	0xbb, 0x74, 0xba, 0xac, 0x10, 0x31, 0x9e, 0x42, 0x4e, 0xfc, 0xc5, 0x3f, 0xe0, 0x35, 0x9a, 0xb8,
-	0xfb, 0x95, 0xd9, 0xfd, 0xe2, 0xc4, 0xac, 0x35, 0xbb, 0xe2, 0x93, 0x61, 0xa7, 0xf9, 0x65, 0xf7,
-	0x2b, 0xf3, 0xe8, 0xe4, 0x14, 0x73, 0x5a, 0xc6, 0x08, 0x60, 0x41, 0x96, 0xaa, 0x5a, 0x11, 0x9a,
-	0xd1, 0x8a, 0x50, 0x16, 0xce, 0x7e, 0x60, 0x05, 0x23, 0x5f, 0xd6, 0xa6, 0xb2, 0xc5, 0xf2, 0xc3,
-	0xb9, 0xe5, 0xf4, 0x4d, 0x8f, 0x58, 0x3e, 0x75, 0xf9, 0xe8, 0xf2, 0x18, 0x18, 0x09, 0x73, 0x0a,
-	0xba, 0xcb, 0xf7, 0x62, 0xfe, 0x9d, 0x81, 0xc7, 0x79, 0x86, 0xed, 0xc4, 0xbc, 0x2b, 0x83, 0x88,
-	0x4b, 0x04, 0xad, 0x4c, 0x96, 0x4b, 0x7b, 0x4d, 0x9d, 0xfc, 0x89, 0x06, 0x29, 0xce, 0xf4, 0x48,
-	0x9b, 0x4e, 0x05, 0x16, 0x76, 0xf3, 0x67, 0xe2, 0x73, 0x5f, 0xb2, 0x93, 0x5b, 0x16, 0xf5, 0xda,
-	0x0c, 0xcc, 0x5e, 0x35, 0x03, 0x73, 0x57, 0xce, 0xc0, 0x7c, 0x7c, 0x06, 0x7e, 0x47, 0x15, 0x17,
-	0xcc, 0x01, 0xba, 0x63, 0x3c, 0x8e, 0x55, 0xc5, 0xb7, 0xbb, 0x87, 0xfa, 0x97, 0x59, 0xb8, 0x97,
-	0x0a, 0x26, 0xc7, 0xfb, 0x11, 0xac, 0x9e, 0x59, 0x3e, 0x61, 0x5b, 0x88, 0xe5, 0xa9, 0x5c, 0x26,
-	0x6f, 0xa3, 0x18, 0xa3, 0x3b, 0xae, 0x7a, 0x61, 0x7e, 0x14, 0xa2, 0xde, 0xd8, 0xb4, 0xde, 0x28,
-	0xd1, 0x6c, 0x24, 0x8a, 0xc7, 0xd5, 0x37, 0x52, 0x74, 0x1b, 0xd6, 0x15, 0xaa, 0x4b, 0x35, 0xe0,
-	0x59, 0xf9, 0x25, 0x81, 0x03, 0xb7, 0x68, 0x08, 0xad, 0xe4, 0x3d, 0x21, 0xff, 0x46, 0xdf, 0x02,
-	0xa4, 0x3c, 0x66, 0xf2, 0x6f, 0xc2, 0xfc, 0x5b, 0x22, 0xe3, 0x20, 0x6e, 0xb4, 0xb8, 0x9a, 0x2a,
-	0x92, 0x71, 0xa0, 0xd9, 0x2c, 0x05, 0x63, 0x26, 0xe7, 0x42, 0x41, 0xcd, 0xe2, 0x8f, 0x61, 0x4d,
-	0x22, 0xc6, 0x0c, 0x16, 0x1f, 0x1d, 0x56, 0x38, 0xa8, 0x66, 0xaf, 0x94, 0x4e, 0x9a, 0xbb, 0x18,
-	0x4a, 0xc7, 0xac, 0xdd, 0x85, 0x3b, 0x72, 0xfb, 0x37, 0x7b, 0xa2, 0x6a, 0x33, 0x3d, 0x12, 0x78,
-	0x0e, 0x51, 0xdf, 0x1f, 0xd6, 0xc5, 0xe9, 0x56, 0x96, 0x74, 0x58, 0xf0, 0xd0, 0x0b, 0x28, 0x27,
-	0xd5, 0xd8, 0x0e, 0x4d, 0x47, 0xe1, 0x87, 0x88, 0x8d, 0x98, 0x5e, 0x57, 0x32, 0x8d, 0xd7, 0xea,
-	0xe6, 0x94, 0x31, 0xab, 0x3d, 0x76, 0x70, 0xe3, 0x4f, 0x5f, 0xbe, 0xa5, 0x0b, 0xfd, 0x21, 0xe4,
-	0xb9, 0x3a, 0xbf, 0x21, 0xbe, 0x0b, 0x8b, 0xbd, 0xbe, 0xe5, 0xfb, 0x2a, 0x40, 0x8a, 0x78, 0x81,
-	0xb7, 0x9b, 0x36, 0x73, 0x79, 0xc7, 0x15, 0x8f, 0x3c, 0x54, 0x98, 0x14, 0x31, 0x28, 0x52, 0xd3,
-	0x46, 0x08, 0xe6, 0x5c, 0x6b, 0x40, 0x64, 0xa4, 0xf0, 0xbf, 0xd1, 0x23, 0x28, 0xd8, 0xc4, 0xef,
-	0x79, 0x0e, 0xbf, 0xef, 0x96, 0x71, 0xa2, 0x93, 0x8c, 0xdf, 0x85, 0x07, 0xd3, 0x46, 0x23, 0x7d,
-	0xf8, 0x7b, 0x50, 0xb4, 0x38, 0xdd, 0xe4, 0x4f, 0x7a, 0x7c, 0x59, 0x6a, 0xaf, 0x6b, 0xe1, 0x1f,
-	0x0e, 0x00, 0x2f, 0x59, 0x1a, 0x84, 0xf1, 0xcb, 0x0c, 0xbc, 0xcb, 0xd0, 0xcf, 0xcf, 0xfb, 0xd4,
-	0xb2, 0x89, 0x5d, 0x1d, 0x0e, 0x7d, 0xed, 0x6a, 0x47, 0xce, 0xd7, 0x29, 0x2c, 0xfa, 0xbc, 0x40,
-	0xa7, 0x9e, 0xfc, 0x3e, 0xf8, 0xbd, 0x44, 0xa6, 0xbe, 0x52, 0x7f, 0x5b, 0x67, 0xe3, 0x10, 0xca,
-	0x38, 0x82, 0x25, 0x9d, 0x93, 0xfc, 0x4c, 0x58, 0x80, 0x85, 0x76, 0xbb, 0x4d, 0x49, 0xb3, 0x2a,
-	0xdf, 0x2a, 0x34, 0x0e, 0xda, 0x97, 0xcf, 0x71, 0xb5, 0x94, 0x0d, 0x5b, 0x7b, 0xb8, 0x5a, 0x9a,
-	0x35, 0x7e, 0xbe, 0x09, 0xc6, 0x55, 0x46, 0xc8, 0x69, 0xea, 0x41, 0xd1, 0xfe, 0xba, 0x37, 0xbc,
-	0x7c, 0x8e, 0x2d, 0x9e, 0x03, 0xe4, 0xea, 0x7f, 0xff, 0x86, 0x43, 0x91, 0x1b, 0x8e, 0xb2, 0x82,
-	0x43, 0x34, 0x66, 0x70, 0x1c, 0x33, 0xec, 0x64, 0x4f, 0x75, 0x92, 0xfd, 0xd6, 0x9d, 0xec, 0x25,
-	0x3b, 0x51, 0x98, 0xe8, 0xa7, 0xb0, 0x34, 0x1c, 0x0e, 0x29, 0x69, 0xca, 0x3e, 0x66, 0x79, 0x1f,
-	0x9f, 0xde, 0xae, 0x0f, 0x39, 0xb7, 0xaa, 0x8b, 0x18, 0xe2, 0xd6, 0x7f, 0xcd, 0x43, 0x31, 0x36,
-	0x52, 0x76, 0x7e, 0x71, 0x5c, 0xf3, 0xcc, 0xb2, 0xc3, 0x43, 0xfb, 0xb9, 0x47, 0x07, 0x66, 0xaf,
-	0xef, 0x10, 0x57, 0x5d, 0x21, 0x6e, 0x3a, 0x6e, 0xcd, 0x52, 0x1f, 0x31, 0x8f, 0x3c, 0x3a, 0x38,
-	0xe0, 0xdc, 0x69, 0xba, 0x3e, 0xf1, 0x2e, 0xe5, 0x47, 0xf4, 0x14, 0xdd, 0x0e, 0xe7, 0xa2, 0x67,
-	0xb0, 0xe9, 0xb8, 0xa9, 0x7d, 0x8a, 0x64, 0xba, 0xe6, 0xb8, 0x93, 0x1d, 0xa6, 0x28, 0xc9, 0xce,
-	0xe6, 0x52, 0x94, 0x64, 0x4f, 0x3b, 0xb0, 0x41, 0x47, 0x41, 0xa8, 0x15, 0x50, 0xa5, 0x23, 0x32,
-	0x2b, 0xa2, 0x23, 0xf5, 0x35, 0xb7, 0x4b, 0xa7, 0xaa, 0x48, 0xdb, 0x72, 0x93, 0x2a, 0xd2, 0xb4,
-	0xd7, 0xf0, 0x1e, 0xe5, 0x81, 0x6d, 0xee, 0x57, 0x4c, 0xc7, 0xf5, 0x09, 0xab, 0x51, 0x52, 0x3a,
-	0x15, 0x99, 0xf7, 0xa1, 0x90, 0xdd, 0xaf, 0x34, 0xa5, 0x64, 0xd2, 0x82, 0x97, 0xf0, 0x9d, 0x08,
-	0xce, 0x23, 0x03, 0x7a, 0x19, 0x47, 0x93, 0xf6, 0x88, 0xcc, 0xfc, 0x40, 0xa1, 0x61, 0x21, 0x98,
-	0xb4, 0xad, 0x0e, 0x8f, 0x22, 0x30, 0x97, 0x06, 0x91, 0x7d, 0x91, 0x5d, 0x22, 0x63, 0xdf, 0x53,
-	0x48, 0x2d, 0x1a, 0x28, 0xd3, 0x42, 0x9b, 0xfe, 0x00, 0x4a, 0x96, 0x6d, 0x3b, 0xe2, 0x41, 0x92,
-	0xc9, 0xc3, 0xbd, 0x0c, 0x3c, 0x25, 0xb5, 0x7f, 0x85, 0x58, 0xdb, 0xae, 0x86, 0x98, 0xbc, 0x5d,
-	0x77, 0x03, 0xef, 0x2d, 0x5e, 0xb1, 0xe2, 0xd4, 0xad, 0x1a, 0xac, 0xa7, 0x09, 0xa2, 0x12, 0xcc,
-	0xbe, 0x21, 0x6f, 0xe5, 0xb1, 0x89, 0xfd, 0x89, 0xd6, 0xf5, 0xa7, 0x89, 0x79, 0xf9, 0xfe, 0xf0,
-	0xd3, 0xec, 0x7e, 0x66, 0xeb, 0xdf, 0x73, 0xd2, 0xfb, 0xf7, 0xfe, 0xaf, 0xbd, 0x3f, 0xf2, 0x96,
-	0x9d, 0x17, 0x57, 0x79, 0xcb, 0xac, 0xee, 0x2d, 0x3b, 0x2f, 0xae, 0xf7, 0x96, 0x9d, 0x17, 0x57,
-	0x78, 0xcb, 0x9c, 0xee, 0x2d, 0x3b, 0x2f, 0xa6, 0x78, 0x8b, 0x66, 0xdb, 0xfe, 0x55, 0xb6, 0xcd,
-	0xc7, 0x6c, 0xdb, 0xbf, 0x81, 0x6d, 0xfb, 0x57, 0xd8, 0x96, 0x8b, 0xd9, 0xb6, 0x7f, 0xad, 0x6d,
-	0xcf, 0x5e, 0xdc, 0x38, 0xca, 0x9e, 0xdd, 0x60, 0xde, 0x9e, 0xbd, 0xb8, 0x69, 0x94, 0x3d, 0x9b,
-	0x36, 0x6f, 0x5f, 0xc0, 0x47, 0x74, 0x14, 0x5c, 0x50, 0xc7, 0xbd, 0x30, 0x07, 0xc1, 0xc8, 0x24,
-	0xe3, 0x1e, 0x21, 0x36, 0x49, 0x77, 0x2d, 0x11, 0x6e, 0xef, 0x29, 0x85, 0xd7, 0xc1, 0xa8, 0x2e,
-	0xc5, 0x27, 0x1d, 0xed, 0xd7, 0x1b, 0x77, 0x7b, 0xbf, 0xf9, 0xb8, 0xfb, 0xbb, 0x1c, 0x2c, 0xe9,
-	0xdb, 0x12, 0xfa, 0x21, 0xdc, 0x77, 0x5c, 0x71, 0x7f, 0x71, 0x45, 0xe0, 0x95, 0x1d, 0x57, 0x7f,
-	0x30, 0xa7, 0xcd, 0xc8, 0x54, 0xfd, 0x58, 0xf0, 0xa5, 0xe8, 0xff, 0x3f, 0xdd, 0x7c, 0x7e, 0x0a,
-	0xdb, 0x97, 0xc4, 0xb5, 0xa9, 0x67, 0xfa, 0xe2, 0xc5, 0x76, 0xcf, 0x0c, 0xac, 0x8b, 0xeb, 0x03,
-	0xe4, 0xb1, 0xd0, 0x92, 0xcf, 0xbc, 0x7b, 0x5d, 0xeb, 0x62, 0x5a, 0xa4, 0xfc, 0x04, 0x3e, 0x49,
-	0xeb, 0xe1, 0xba, 0x98, 0xf9, 0x70, 0xa2, 0x83, 0xdf, 0x74, 0xf0, 0x7c, 0x33, 0x35, 0x78, 0x4e,
-	0xbe, 0xfd, 0xb9, 0xea, 0x37, 0x17, 0x3b, 0xb5, 0x05, 0x98, 0xe7, 0x46, 0x1b, 0xff, 0x91, 0x87,
-	0x95, 0x63, 0x12, 0xf0, 0xe7, 0xf3, 0xea, 0x00, 0xff, 0xfd, 0xc4, 0x7b, 0xf4, 0x42, 0xe5, 0x9d,
-	0xf8, 0xa0, 0x12, 0x2f, 0xdf, 0x1b, 0x33, 0xd1, 0x83, 0x75, 0xf4, 0x7d, 0x58, 0x18, 0x89, 0xd7,
-	0xd9, 0xf2, 0x30, 0xfb, 0x70, 0xfa, 0xeb, 0x6d, 0xa5, 0xad, 0x34, 0x50, 0x15, 0x0a, 0x54, 0xbc,
-	0xcb, 0xe5, 0x00, 0xb3, 0x69, 0x9d, 0x27, 0x1e, 0xee, 0x36, 0x66, 0xb0, 0xae, 0x83, 0x9a, 0xfc,
-	0x51, 0x8e, 0xf6, 0x84, 0x93, 0xc7, 0x51, 0x9a, 0x19, 0xf1, 0x97, 0x9e, 0x8d, 0x19, 0x9c, 0x50,
-	0x44, 0x18, 0x8a, 0x24, 0xf8, 0x3a, 0x7a, 0x4f, 0xc8, 0xa3, 0x2b, 0xfe, 0x51, 0xf2, 0x9a, 0xa7,
-	0x87, 0xec, 0x30, 0x1e, 0x83, 0x40, 0xbf, 0xcd, 0x1f, 0x9d, 0x48, 0x36, 0x8f, 0xbd, 0x42, 0xe5,
-	0xde, 0x04, 0x60, 0xf4, 0x0a, 0xa6, 0x31, 0x83, 0x35, 0x05, 0x54, 0x03, 0xa0, 0xdc, 0x72, 0x3e,
-	0xb2, 0x85, 0x89, 0x0f, 0xba, 0xa9, 0x0f, 0x4a, 0x18, 0x46, 0xa4, 0x85, 0x5e, 0xc1, 0x02, 0x75,
-	0x47, 0x1c, 0x60, 0x91, 0x03, 0x3c, 0xbd, 0xc5, 0x45, 0x5a, 0xb8, 0x64, 0x12, 0x02, 0xed, 0x83,
-	0xba, 0x89, 0xe1, 0x01, 0x54, 0xa8, 0xdc, 0x8f, 0xa3, 0xc5, 0x9f, 0x6f, 0x30, 0x4d, 0x29, 0x8e,
-	0x5e, 0xc2, 0x12, 0x15, 0x75, 0x6a, 0x47, 0xc6, 0x0f, 0x53, 0x7f, 0x7f, 0x62, 0x34, 0x69, 0xf7,
-	0x3a, 0xac, 0x04, 0xd1, 0x95, 0x51, 0x15, 0x80, 0x86, 0x97, 0x60, 0xfc, 0x32, 0x77, 0x72, 0xc9,
-	0xfb, 0x93, 0xc6, 0x68, 0x4a, 0xa8, 0x0b, 0x2b, 0xd4, 0x1d, 0xe9, 0x35, 0x33, 0xbf, 0xdc, 0x2d,
-	0x54, 0x1e, 0xa7, 0x9a, 0x94, 0x72, 0x55, 0xd0, 0x98, 0xc1, 0x49, 0x08, 0xf4, 0x13, 0x40, 0x34,
-	0x99, 0x03, 0xc4, 0xe5, 0x6f, 0xa1, 0xf2, 0xf1, 0x6d, 0xea, 0xe2, 0xc6, 0x0c, 0x4e, 0x41, 0x42,
-	0xa7, 0x50, 0xa2, 0x89, 0x2f, 0xe3, 0xfc, 0x7e, 0xb8, 0x50, 0xf9, 0x70, 0xc2, 0xec, 0xf4, 0xd7,
-	0x88, 0x8d, 0x19, 0x3c, 0x01, 0x81, 0xda, 0x7c, 0x32, 0xf4, 0x0f, 0xed, 0xfc, 0x4b, 0x66, 0xa1,
-	0xf2, 0xde, 0x04, 0x6a, 0xca, 0xc3, 0x0d, 0x39, 0x11, 0x3a, 0x27, 0x8c, 0x6d, 0xf1, 0x4c, 0x86,
-	0x7f, 0xea, 0x9c, 0x88, 0xed, 0xc4, 0x03, 0x9d, 0x30, 0xb6, 0x5d, 0xb5, 0xc8, 0xac, 0xd9, 0x72,
-	0xa5, 0xc3, 0xac, 0xa6, 0x41, 0x24, 0x9e, 0xc5, 0x48, 0x08, 0xa5, 0x53, 0xcb, 0xc3, 0x82, 0x27,
-	0x38, 0xc6, 0x3f, 0x17, 0xf9, 0xbb, 0x35, 0x99, 0xfa, 0x64, 0xd9, 0xff, 0x69, 0x78, 0x43, 0x29,
-	0xae, 0x2e, 0x8c, 0x38, 0x7a, 0x4c, 0x78, 0xbb, 0xc3, 0x25, 0xc3, 0x5b, 0xcc, 0x3a, 0xe4, 0x89,
-	0xe7, 0x89, 0x1b, 0x4b, 0xf9, 0x2b, 0x87, 0x0f, 0xaf, 0x52, 0xe7, 0xc7, 0x08, 0x21, 0x8e, 0x23,
-	0x4d, 0xf4, 0x03, 0x2d, 0xfd, 0xce, 0x4e, 0x3c, 0x28, 0x4c, 0xf9, 0x01, 0x51, 0x2c, 0xff, 0xfe,
-	0x20, 0xca, 0xbf, 0x73, 0x53, 0xd2, 0x43, 0xe2, 0xd7, 0x33, 0x7a, 0x02, 0x7e, 0x09, 0x4b, 0x43,
-	0x91, 0x5c, 0x03, 0x97, 0x78, 0xbe, 0xcc, 0x78, 0xef, 0x5f, 0x99, 0x81, 0x35, 0x9c, 0x98, 0x32,
-	0xfa, 0x6c, 0x22, 0x15, 0xe7, 0xa6, 0x38, 0x66, 0xfa, 0xa3, 0xfb, 0x94, 0x94, 0x7c, 0x06, 0xab,
-	0xb1, 0x7c, 0xaa, 0xa5, 0xc1, 0xca, 0xcd, 0xd3, 0xb2, 0xd6, 0xc1, 0x24, 0x1c, 0xaa, 0xc7, 0x52,
-	0xb4, 0x48, 0x91, 0xdf, 0xb9, 0x22, 0x45, 0x6b, 0x68, 0x7a, 0xaa, 0x7e, 0xc9, 0x47, 0xdf, 0xa6,
-	0xae, 0x9a, 0x27, 0x99, 0x1f, 0xdf, 0xbd, 0x22, 0x5d, 0xc7, 0xc6, 0xad, 0xa9, 0xa2, 0x53, 0xfe,
-	0x70, 0x2f, 0x44, 0x12, 0xa9, 0x72, 0xe7, 0xd6, 0x1f, 0x40, 0x78, 0x34, 0x44, 0x38, 0xe8, 0x7b,
-	0x51, 0xf2, 0x2e, 0xa4, 0x05, 0x53, 0xe2, 0xbe, 0x5f, 0xcf, 0xde, 0xaf, 0x12, 0xd9, 0x7b, 0x69,
-	0xe2, 0xc3, 0xcf, 0x15, 0x17, 0xe9, 0x13, 0xe9, 0xbb, 0x16, 0x4b, 0xdf, 0xc5, 0x54, 0xc7, 0xed,
-	0xa7, 0x98, 0xa3, 0xe7, 0xef, 0xd3, 0xc9, 0xfc, 0x2d, 0x12, 0xe1, 0x47, 0x37, 0xc8, 0xdf, 0x21,
-	0xe2, 0x44, 0x02, 0x37, 0x53, 0x13, 0xb8, 0x48, 0x86, 0x9f, 0xdc, 0xea, 0xb0, 0x37, 0x25, 0x83,
-	0x9f, 0x43, 0x39, 0x99, 0x7e, 0x95, 0x86, 0xcc, 0x92, 0x8f, 0xaf, 0xcf, 0xe4, 0x61, 0x0f, 0x53,
-	0xb1, 0x90, 0x05, 0x77, 0x68, 0xfa, 0x13, 0x2c, 0x99, 0x49, 0xdf, 0xbf, 0x26, 0xb5, 0x87, 0x7d,
-	0x4c, 0xc3, 0x41, 0x18, 0xd6, 0xb4, 0x7c, 0x1d, 0xc2, 0xa3, 0xb4, 0x2c, 0x96, 0x94, 0x6a, 0xcc,
-	0xe0, 0x34, 0x65, 0x89, 0xa9, 0x12, 0x78, 0x88, 0xb9, 0x96, 0x86, 0x99, 0x7c, 0xb7, 0x28, 0x31,
-	0x93, 0xca, 0xc6, 0x0e, 0xe4, 0x44, 0xee, 0x46, 0xeb, 0x50, 0xea, 0x74, 0xab, 0xdd, 0xd3, 0x4e,
-	0xec, 0x87, 0x6f, 0x39, 0xc8, 0x9e, 0xbc, 0x2c, 0x65, 0xf8, 0x4f, 0x59, 0x31, 0x3e, 0xc1, 0xa5,
-	0xac, 0xf1, 0xd7, 0x19, 0x28, 0x68, 0x09, 0x9b, 0x29, 0xe2, 0x7a, 0xb5, 0x73, 0xd2, 0x8a, 0x29,
-	0xae, 0x40, 0xe1, 0xb4, 0xd5, 0x39, 0x6d, 0xb7, 0x4f, 0x70, 0x97, 0xff, 0x6a, 0x6e, 0x03, 0x56,
-	0x9b, 0xad, 0xcf, 0xab, 0xaf, 0x9a, 0x87, 0xe6, 0x61, 0xfd, 0xf3, 0xe6, 0x41, 0xdd, 0x6c, 0x1e,
-	0x96, 0xb2, 0x3a, 0x99, 0x89, 0x9a, 0xdd, 0xaf, 0xda, 0xf5, 0xd2, 0x2c, 0x2a, 0xc0, 0x42, 0xb7,
-	0xf9, 0xba, 0x7e, 0x72, 0xda, 0x2d, 0xcd, 0xb1, 0x1e, 0x94, 0x0c, 0xae, 0x7f, 0x26, 0x44, 0xe6,
-	0x11, 0x82, 0xe5, 0x66, 0xab, 0x5b, 0xc7, 0xad, 0xea, 0x2b, 0x53, 0xd8, 0x96, 0x13, 0x34, 0xbd,
-	0x93, 0xd2, 0x42, 0x0d, 0x60, 0xd1, 0x53, 0xc3, 0xfd, 0xab, 0x0c, 0x94, 0xaa, 0xc3, 0xa1, 0x74,
-	0x4f, 0xf1, 0x63, 0x48, 0xf4, 0x01, 0x2c, 0x13, 0xd7, 0x3a, 0xeb, 0x13, 0x75, 0x6f, 0xc6, 0x77,
-	0xbc, 0x45, 0x9c, 0xa0, 0x26, 0xe4, 0xf6, 0x70, 0x95, 0x6f, 0x6d, 0x71, 0xb9, 0x3d, 0x5c, 0x45,
-	0xef, 0x41, 0x51, 0x50, 0x58, 0x49, 0x53, 0x6f, 0x56, 0xe5, 0x1b, 0xe1, 0x38, 0x11, 0x19, 0xb0,
-	0x64, 0xf5, 0x7a, 0xc4, 0xf7, 0x5b, 0xd4, 0x26, 0xcd, 0x43, 0xf9, 0x09, 0x23, 0x46, 0x33, 0xfe,
-	0x3b, 0x03, 0x6b, 0x91, 0xb9, 0x3c, 0x41, 0x72, 0x8b, 0xaf, 0x7f, 0xbd, 0xfc, 0x12, 0x60, 0x48,
-	0x3c, 0xb9, 0xbf, 0x95, 0xe7, 0x79, 0x41, 0xf6, 0x5b, 0xfa, 0x87, 0x8d, 0x49, 0xd4, 0xed, 0x36,
-	0x57, 0x10, 0x0d, 0xac, 0xa9, 0x6f, 0x8d, 0x61, 0x49, 0xe7, 0xb1, 0x01, 0x5a, 0x17, 0xc4, 0x0d,
-	0x58, 0xad, 0x19, 0x30, 0xdb, 0x45, 0x55, 0x15, 0x27, 0xb2, 0xe9, 0xe2, 0x84, 0x03, 0xc7, 0xeb,
-	0x8d, 0x9c, 0xa0, 0x79, 0x28, 0x3f, 0xe0, 0x24, 0xa8, 0x68, 0x0b, 0x16, 0xa9, 0xd8, 0x8a, 0x6d,
-	0xf5, 0xfb, 0x62, 0xd5, 0x36, 0xfe, 0x33, 0x03, 0x2b, 0x9d, 0x44, 0x51, 0x96, 0xfc, 0xb5, 0x76,
-	0xe6, 0xa6, 0xbf, 0xd6, 0x46, 0x2f, 0x01, 0x59, 0xc3, 0xa1, 0x29, 0x33, 0x4f, 0xfc, 0xd7, 0xde,
-	0xf7, 0x52, 0x27, 0x27, 0xc4, 0x29, 0x59, 0x49, 0xaf, 0x39, 0x85, 0x4d, 0x1d, 0x8c, 0xba, 0x23,
-	0x05, 0x38, 0x79, 0x54, 0x49, 0x99, 0x6d, 0x16, 0x90, 0xd6, 0x24, 0x59, 0x3f, 0x96, 0xfd, 0x7d,
-	0x16, 0x4a, 0x9d, 0xdb, 0x1c, 0xcb, 0x3a, 0xbf, 0xda, 0xb1, 0xac, 0x73, 0xb3, 0x63, 0xd9, 0xb7,
-	0xc9, 0x19, 0xdf, 0xfc, 0x3a, 0x53, 0xc6, 0x5d, 0xd8, 0x50, 0xe4, 0x93, 0xd6, 0xa9, 0xc6, 0x9a,
-	0xd5, 0xe3, 0xff, 0xb4, 0xd5, 0x64, 0xb4, 0x39, 0xc3, 0x81, 0x8d, 0x8e, 0xe3, 0x5e, 0xf4, 0x49,
-	0xb2, 0xba, 0xdf, 0x82, 0xc5, 0xc0, 0xf2, 0x2e, 0x48, 0x10, 0x86, 0x50, 0xd8, 0x46, 0xcf, 0xc3,
-	0x65, 0x90, 0xfe, 0xb1, 0x95, 0x7a, 0x7e, 0xe5, 0x12, 0x38, 0x5c, 0xb1, 0xcf, 0x60, 0x33, 0xd9,
-	0x95, 0x5c, 0xb6, 0x17, 0x51, 0x12, 0x92, 0x0e, 0x7b, 0xef, 0x8a, 0x03, 0x31, 0x8e, 0x32, 0x56,
-	0x68, 0x7d, 0xe7, 0xd7, 0x65, 0x7d, 0xe7, 0x5a, 0xeb, 0x3b, 0xb7, 0xb3, 0xbe, 0x33, 0xd5, 0xfa,
-	0xca, 0xdf, 0x64, 0x20, 0x5f, 0x57, 0x82, 0x08, 0x43, 0xe1, 0x98, 0x04, 0xf5, 0xb1, 0x10, 0x47,
-	0xfa, 0xb1, 0x26, 0x75, 0x85, 0xb6, 0xde, 0xbd, 0x42, 0x22, 0xdc, 0x14, 0x0b, 0x9d, 0x2b, 0x31,
-	0x3b, 0xd7, 0x62, 0x26, 0xed, 0xaf, 0x61, 0x78, 0x87, 0x7a, 0x17, 0xdb, 0x74, 0x48, 0xdc, 0x1e,
-	0xf5, 0xec, 0x6d, 0xf1, 0xcf, 0x4a, 0x44, 0x7a, 0x3f, 0xde, 0xb9, 0x70, 0x82, 0xaf, 0x47, 0x67,
-	0xdb, 0x3d, 0x3a, 0x78, 0xa2, 0xa4, 0x9e, 0x08, 0xa9, 0x4f, 0xe4, 0x3f, 0x3e, 0x71, 0xb9, 0xfb,
-	0xe4, 0x82, 0x46, 0xff, 0xd4, 0xc5, 0x59, 0x8e, 0xd3, 0x9f, 0xfd, 0x4f, 0x00, 0x00, 0x00, 0xff,
-	0xff, 0xa2, 0xb9, 0x08, 0xdb, 0x0c, 0x43, 0x00, 0x00,
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) Reset() {
+	*x = GetOffloadedAppsStatisticsResponse_DHCPv4RAStats{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[57]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
 }
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// ExtensionClient is the client API for Extension service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type ExtensionClient interface {
-	// Get a single attribute
-	GetExtValue(ctx context.Context, in *SingleGetValueRequest, opts ...grpc.CallOption) (*SingleGetValueResponse, error)
-	// Set a single attribute
-	SetExtValue(ctx context.Context, in *SingleSetValueRequest, opts ...grpc.CallOption) (*SingleSetValueResponse, error)
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-type extensionClient struct {
-	cc *grpc.ClientConn
-}
+func (*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) ProtoMessage() {}
 
-func NewExtensionClient(cc *grpc.ClientConn) ExtensionClient {
-	return &extensionClient{cc}
-}
-
-func (c *extensionClient) GetExtValue(ctx context.Context, in *SingleGetValueRequest, opts ...grpc.CallOption) (*SingleGetValueResponse, error) {
-	out := new(SingleGetValueResponse)
-	err := c.cc.Invoke(ctx, "/extension.Extension/GetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[57]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return out, nil
+	return mi.MessageOf(x)
 }
 
-func (c *extensionClient) SetExtValue(ctx context.Context, in *SingleSetValueRequest, opts ...grpc.CallOption) (*SingleSetValueResponse, error) {
-	out := new(SingleSetValueResponse)
-	err := c.cc.Invoke(ctx, "/extension.Extension/SetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
+// Deprecated: Use GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.ProtoReflect.Descriptor instead.
+func (*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{46, 0}
 }
 
-// ExtensionServer is the server API for Extension service.
-type ExtensionServer interface {
-	// Get a single attribute
-	GetExtValue(context.Context, *SingleGetValueRequest) (*SingleGetValueResponse, error)
-	// Set a single attribute
-	SetExtValue(context.Context, *SingleSetValueRequest) (*SingleSetValueResponse, error)
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInBadPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InBadPacketsFromClient
+	}
+	return 0
 }
 
-// UnimplementedExtensionServer can be embedded to have forward compatible implementations.
-type UnimplementedExtensionServer struct {
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInBadPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InBadPacketsFromServer
+	}
+	return 0
 }
 
-func (*UnimplementedExtensionServer) GetExtValue(ctx context.Context, req *SingleGetValueRequest) (*SingleGetValueResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetExtValue not implemented")
-}
-func (*UnimplementedExtensionServer) SetExtValue(ctx context.Context, req *SingleSetValueRequest) (*SingleSetValueResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetExtValue not implemented")
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InPacketsFromClient
+	}
+	return 0
 }
 
-func RegisterExtensionServer(s *grpc.Server, srv ExtensionServer) {
-	s.RegisterService(&_Extension_serviceDesc, srv)
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InPacketsFromServer
+	}
+	return 0
 }
 
-func _Extension_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SingleGetValueRequest)
-	if err := dec(in); err != nil {
-		return nil, err
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOutPacketsToServer() uint32 {
+	if x != nil {
+		return x.OutPacketsToServer
 	}
-	if interceptor == nil {
-		return srv.(ExtensionServer).GetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/extension.Extension/GetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ExtensionServer).GetExtValue(ctx, req.(*SingleGetValueRequest))
-	}
-	return interceptor(ctx, in, info, handler)
+	return 0
 }
 
-func _Extension_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SingleSetValueRequest)
-	if err := dec(in); err != nil {
-		return nil, err
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOutPacketsToClient() uint32 {
+	if x != nil {
+		return x.OutPacketsToClient
 	}
-	if interceptor == nil {
-		return srv.(ExtensionServer).SetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/extension.Extension/SetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ExtensionServer).SetExtValue(ctx, req.(*SingleSetValueRequest))
-	}
-	return interceptor(ctx, in, info, handler)
+	return 0
 }
 
-var _Extension_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "extension.Extension",
-	HandlerType: (*ExtensionServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "GetExtValue",
-			Handler:    _Extension_GetExtValue_Handler,
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82InsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.Option_82InsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82RemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.Option_82RemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82NotInsertedToServer() uint32 {
+	if x != nil {
+		return x.Option_82NotInsertedToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetAdditionalStats() map[string]string {
+	if x != nil {
+		return x.AdditionalStats
+	}
+	return nil
+}
+
+type GetOffloadedAppsStatisticsResponse_DHCPv6RAStats struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-ldra.yang
+	InBadPacketsFromClient               uint32 `protobuf:"varint,1,opt,name=in_bad_packets_from_client,json=inBadPacketsFromClient,proto3" json:"in_bad_packets_from_client,omitempty"`
+	InBadPacketsFromServer               uint32 `protobuf:"varint,2,opt,name=in_bad_packets_from_server,json=inBadPacketsFromServer,proto3" json:"in_bad_packets_from_server,omitempty"`
+	Option_17InsertedPacketsToServer     uint32 `protobuf:"varint,3,opt,name=option_17_inserted_packets_to_server,json=option17InsertedPacketsToServer,proto3" json:"option_17_inserted_packets_to_server,omitempty"`
+	Option_17RemovedPacketsToClient      uint32 `protobuf:"varint,4,opt,name=option_17_removed_packets_to_client,json=option17RemovedPacketsToClient,proto3" json:"option_17_removed_packets_to_client,omitempty"`
+	Option_18InsertedPacketsToServer     uint32 `protobuf:"varint,5,opt,name=option_18_inserted_packets_to_server,json=option18InsertedPacketsToServer,proto3" json:"option_18_inserted_packets_to_server,omitempty"`
+	Option_18RemovedPacketsToClient      uint32 `protobuf:"varint,6,opt,name=option_18_removed_packets_to_client,json=option18RemovedPacketsToClient,proto3" json:"option_18_removed_packets_to_client,omitempty"`
+	Option_37InsertedPacketsToServer     uint32 `protobuf:"varint,7,opt,name=option_37_inserted_packets_to_server,json=option37InsertedPacketsToServer,proto3" json:"option_37_inserted_packets_to_server,omitempty"`
+	Option_37RemovedPacketsToClient      uint32 `protobuf:"varint,8,opt,name=option_37_removed_packets_to_client,json=option37RemovedPacketsToClient,proto3" json:"option_37_removed_packets_to_client,omitempty"`
+	OutgoingMtuExceededPacketsFromClient uint32 `protobuf:"varint,9,opt,name=outgoing_mtu_exceeded_packets_from_client,json=outgoingMtuExceededPacketsFromClient,proto3" json:"outgoing_mtu_exceeded_packets_from_client,omitempty"`
+	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
+	AdditionalStats map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) Reset() {
+	*x = GetOffloadedAppsStatisticsResponse_DHCPv6RAStats{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[58]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) ProtoMessage() {}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[58]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.ProtoReflect.Descriptor instead.
+func (*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{46, 1}
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetInBadPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InBadPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetInBadPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InBadPacketsFromServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_17InsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.Option_17InsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_17RemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.Option_17RemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_18InsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.Option_18InsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_18RemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.Option_18RemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_37InsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.Option_37InsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_37RemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.Option_37RemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOutgoingMtuExceededPacketsFromClient() uint32 {
+	if x != nil {
+		return x.OutgoingMtuExceededPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetAdditionalStats() map[string]string {
+	if x != nil {
+		return x.AdditionalStats
+	}
+	return nil
+}
+
+type GetOffloadedAppsStatisticsResponse_PPPoeIAStats struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent.yang
+	InErrorPacketsFromClient                 uint32 `protobuf:"varint,1,opt,name=in_error_packets_from_client,json=inErrorPacketsFromClient,proto3" json:"in_error_packets_from_client,omitempty"`
+	InErrorPacketsFromServer                 uint32 `protobuf:"varint,2,opt,name=in_error_packets_from_server,json=inErrorPacketsFromServer,proto3" json:"in_error_packets_from_server,omitempty"`
+	InPacketsFromClient                      uint32 `protobuf:"varint,3,opt,name=in_packets_from_client,json=inPacketsFromClient,proto3" json:"in_packets_from_client,omitempty"`
+	InPacketsFromServer                      uint32 `protobuf:"varint,4,opt,name=in_packets_from_server,json=inPacketsFromServer,proto3" json:"in_packets_from_server,omitempty"`
+	OutPacketsToServer                       uint32 `protobuf:"varint,5,opt,name=out_packets_to_server,json=outPacketsToServer,proto3" json:"out_packets_to_server,omitempty"`
+	OutPacketsToClient                       uint32 `protobuf:"varint,6,opt,name=out_packets_to_client,json=outPacketsToClient,proto3" json:"out_packets_to_client,omitempty"`
+	VendorSpecificTagInsertedPacketsToServer uint32 `protobuf:"varint,7,opt,name=vendor_specific_tag_inserted_packets_to_server,json=vendorSpecificTagInsertedPacketsToServer,proto3" json:"vendor_specific_tag_inserted_packets_to_server,omitempty"`
+	VendorSpecificTagRemovedPacketsToClient  uint32 `protobuf:"varint,8,opt,name=vendor_specific_tag_removed_packets_to_client,json=vendorSpecificTagRemovedPacketsToClient,proto3" json:"vendor_specific_tag_removed_packets_to_client,omitempty"`
+	OutgoingMtuExceededPacketsFromClient     uint32 `protobuf:"varint,9,opt,name=outgoing_mtu_exceeded_packets_from_client,json=outgoingMtuExceededPacketsFromClient,proto3" json:"outgoing_mtu_exceeded_packets_from_client,omitempty"`
+	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
+	AdditionalStats map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) Reset() {
+	*x = GetOffloadedAppsStatisticsResponse_PPPoeIAStats{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[59]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOffloadedAppsStatisticsResponse_PPPoeIAStats) ProtoMessage() {}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[59]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsResponse_PPPoeIAStats.ProtoReflect.Descriptor instead.
+func (*GetOffloadedAppsStatisticsResponse_PPPoeIAStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{46, 2}
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInErrorPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InErrorPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInErrorPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InErrorPacketsFromServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InPacketsFromServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutPacketsToServer() uint32 {
+	if x != nil {
+		return x.OutPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutPacketsToClient() uint32 {
+	if x != nil {
+		return x.OutPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetVendorSpecificTagInsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.VendorSpecificTagInsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetVendorSpecificTagRemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.VendorSpecificTagRemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutgoingMtuExceededPacketsFromClient() uint32 {
+	if x != nil {
+		return x.OutgoingMtuExceededPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetAdditionalStats() map[string]string {
+	if x != nil {
+		return x.AdditionalStats
+	}
+	return nil
+}
+
+type AppOffloadOnuConfig_PerUniConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// As per the BBF Agent Remote Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
+	AgentRemoteID string `protobuf:"bytes,2,opt,name=agentRemoteID,proto3" json:"agentRemoteID,omitempty"`
+	// As per the BBF Agent Circuit Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
+	AgentCircuitID string `protobuf:"bytes,3,opt,name=agentCircuitID,proto3" json:"agentCircuitID,omitempty"`
+	// The id of the UNI on the Onu for which this configuration is relevant. The UNI ids are numbered from 0 to n depending on the number of UNI ports on the ONU.
+	OnuUniId      uint32 `protobuf:"varint,4,opt,name=onuUniId,proto3" json:"onuUniId,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) Reset() {
+	*x = AppOffloadOnuConfig_PerUniConfig{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[63]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AppOffloadOnuConfig_PerUniConfig) ProtoMessage() {}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[63]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AppOffloadOnuConfig_PerUniConfig.ProtoReflect.Descriptor instead.
+func (*AppOffloadOnuConfig_PerUniConfig) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{50, 0}
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) GetAgentRemoteID() string {
+	if x != nil {
+		return x.AgentRemoteID
+	}
+	return ""
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) GetAgentCircuitID() string {
+	if x != nil {
+		return x.AgentCircuitID
+	}
+	return ""
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) GetOnuUniId() uint32 {
+	if x != nil {
+		return x.OnuUniId
+	}
+	return 0
+}
+
+var File_voltha_protos_extensions_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_extensions_proto_rawDesc = "" +
+	"\n" +
+	"\x1evoltha_protos/extensions.proto\x12\textension\x1a\x1evoltha_protos/ext_config.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1avoltha_protos/common.proto\"]\n" +
+	"\bValueSet\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x128\n" +
+	"\falarm_config\x18\x02 \x01(\v2\x13.config.AlarmConfigH\x00R\valarmConfigB\a\n" +
+	"\x05value\",\n" +
+	"\tValueType\"\x1f\n" +
+	"\x04Type\x12\t\n" +
+	"\x05EMPTY\x10\x00\x12\f\n" +
+	"\bDISTANCE\x10\x01\"Q\n" +
+	"\x0eValueSpecifier\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12/\n" +
+	"\x05value\x18\x02 \x01(\x0e2\x19.extension.ValueType.TypeR\x05value\"t\n" +
+	"\fReturnValues\x12\x10\n" +
+	"\x03Set\x18\x01 \x01(\rR\x03Set\x12 \n" +
+	"\vUnsupported\x18\x02 \x01(\rR\vUnsupported\x12\x14\n" +
+	"\x05Error\x18\x03 \x01(\rR\x05Error\x12\x1a\n" +
+	"\bDistance\x18\x04 \x01(\rR\bDistance\"6\n" +
+	"\x12GetDistanceRequest\x12 \n" +
+	"\vonuDeviceId\x18\x01 \x01(\tR\vonuDeviceId\"1\n" +
+	"\x13GetDistanceResponse\x12\x1a\n" +
+	"\bdistance\x18\x01 \x01(\rR\bdistance\"2\n" +
+	"\x14GetOnuUniInfoRequest\x12\x1a\n" +
+	"\buniIndex\x18\x01 \x01(\rR\buniIndex\"\xe1\x04\n" +
+	"\x15GetOnuUniInfoResponse\x12P\n" +
+	"\badmState\x18\x01 \x01(\x0e24.extension.GetOnuUniInfoResponse.AdministrativeStateR\badmState\x12O\n" +
+	"\toperState\x18\x02 \x01(\x0e21.extension.GetOnuUniInfoResponse.OperationalStateR\toperState\x12O\n" +
+	"\tconfigInd\x18\x03 \x01(\x0e21.extension.GetOnuUniInfoResponse.ConfigurationIndR\tconfigInd\"\xc2\x01\n" +
+	"\x10ConfigurationInd\x12\n" +
+	"\n" +
+	"\x06UNKOWN\x10\x00\x12\x12\n" +
+	"\x0eTEN_BASE_T_FDX\x10\x01\x12\x16\n" +
+	"\x12HUNDRED_BASE_T_FDX\x10\x02\x12\x18\n" +
+	"\x14GIGABIT_ETHERNET_FDX\x10\x03\x12\x16\n" +
+	"\x12TEN_G_ETHERNET_FDX\x10\x04\x12\x12\n" +
+	"\x0eTEN_BASE_T_HDX\x10\x05\x12\x16\n" +
+	"\x12HUNDRED_BASE_T_HDX\x10\x06\x12\x18\n" +
+	"\x14GIGABIT_ETHERNET_HDX\x10\a\"G\n" +
+	"\x13AdministrativeState\x12\x16\n" +
+	"\x12ADMSTATE_UNDEFINED\x10\x00\x12\n" +
+	"\n" +
+	"\x06LOCKED\x10\x01\x12\f\n" +
+	"\bUNLOCKED\x10\x02\"F\n" +
+	"\x10OperationalState\x12\x17\n" +
+	"\x13OPERSTATE_UNDEFINED\x10\x00\x12\v\n" +
+	"\aENABLED\x10\x01\x12\f\n" +
+	"\bDISABLED\x10\x02\"\xb7\x01\n" +
+	"\x12GetOltPortCounters\x12\x16\n" +
+	"\x06portNo\x18\x01 \x01(\rR\x06portNo\x12B\n" +
+	"\bportType\x18\x02 \x01(\x0e2&.extension.GetOltPortCounters.PortTypeR\bportType\"E\n" +
+	"\bPortType\x12\x10\n" +
+	"\fPort_UNKNOWN\x10\x00\x12\x15\n" +
+	"\x11Port_ETHERNET_NNI\x10\x01\x12\x10\n" +
+	"\fPort_PON_OLT\x10\x02\"\xcc\x03\n" +
+	"\x1aGetOltPortCountersResponse\x12\x18\n" +
+	"\atxBytes\x18\x01 \x01(\x04R\atxBytes\x12\x18\n" +
+	"\arxBytes\x18\x02 \x01(\x04R\arxBytes\x12\x1c\n" +
+	"\ttxPackets\x18\x03 \x01(\x04R\ttxPackets\x12\x1c\n" +
+	"\trxPackets\x18\x04 \x01(\x04R\trxPackets\x12&\n" +
+	"\x0etxErrorPackets\x18\x05 \x01(\x04R\x0etxErrorPackets\x12&\n" +
+	"\x0erxErrorPackets\x18\x06 \x01(\x04R\x0erxErrorPackets\x12&\n" +
+	"\x0etxBcastPackets\x18\a \x01(\x04R\x0etxBcastPackets\x12&\n" +
+	"\x0erxBcastPackets\x18\b \x01(\x04R\x0erxBcastPackets\x12&\n" +
+	"\x0etxUcastPackets\x18\t \x01(\x04R\x0etxUcastPackets\x12&\n" +
+	"\x0erxUcastPackets\x18\n" +
+	" \x01(\x04R\x0erxUcastPackets\x12&\n" +
+	"\x0etxMcastPackets\x18\v \x01(\x04R\x0etxMcastPackets\x12&\n" +
+	"\x0erxMcastPackets\x18\f \x01(\x04R\x0erxMcastPackets\"D\n" +
+	"\x14GetOnuPonOpticalInfo\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"\x84\x02\n" +
+	"\x1cGetOnuPonOpticalInfoResponse\x12*\n" +
+	"\x10powerFeedVoltage\x18\x01 \x01(\x02R\x10powerFeedVoltage\x122\n" +
+	"\x14receivedOpticalPower\x18\x02 \x01(\x02R\x14receivedOpticalPower\x126\n" +
+	"\x16meanOpticalLaunchPower\x18\x03 \x01(\x02R\x16meanOpticalLaunchPower\x12*\n" +
+	"\x10laserBiasCurrent\x18\x04 \x01(\x02R\x10laserBiasCurrent\x12 \n" +
+	"\vtemperature\x18\x05 \x01(\x02R\vtemperature\"\xaf\x01\n" +
+	"\x1fGetOnuEthernetBridgePortHistory\x12R\n" +
+	"\tdirection\x18\x01 \x01(\x0e24.extension.GetOnuEthernetBridgePortHistory.DirectionR\tdirection\"8\n" +
+	"\tDirection\x12\r\n" +
+	"\tUNDEFINED\x10\x00\x12\f\n" +
+	"\bUPSTREAM\x10\x01\x12\x0e\n" +
+	"\n" +
+	"DOWNSTREAM\x10\x02\"\x93\x05\n" +
+	"'GetOnuEthernetBridgePortHistoryResponse\x12\x1e\n" +
+	"\n" +
+	"dropEvents\x18\x01 \x01(\rR\n" +
+	"dropEvents\x12\x16\n" +
+	"\x06octets\x18\x02 \x01(\rR\x06octets\x12\x18\n" +
+	"\apackets\x18\x03 \x01(\rR\apackets\x12*\n" +
+	"\x10broadcastPackets\x18\x04 \x01(\rR\x10broadcastPackets\x12*\n" +
+	"\x10multicastPackets\x18\x05 \x01(\rR\x10multicastPackets\x12,\n" +
+	"\x11crcErroredPackets\x18\x06 \x01(\rR\x11crcErroredPackets\x12*\n" +
+	"\x10undersizePackets\x18\a \x01(\rR\x10undersizePackets\x12(\n" +
+	"\x0foversizePackets\x18\b \x01(\rR\x0foversizePackets\x12(\n" +
+	"\x0fpackets64octets\x18\t \x01(\rR\x0fpackets64octets\x122\n" +
+	"\x14packets65To127octets\x18\n" +
+	" \x01(\rR\x14packets65To127octets\x124\n" +
+	"\x15packets128To255Octets\x18\v \x01(\rR\x15packets128To255Octets\x124\n" +
+	"\x15packets256To511octets\x18\f \x01(\rR\x15packets256To511octets\x126\n" +
+	"\x16packets512To1023octets\x18\r \x01(\rR\x16packets512To1023octets\x128\n" +
+	"\x17packets1024To1518octets\x18\x0e \x01(\rR\x17packets1024To1518octets\"L\n" +
+	"\x1cGetOnuAllocGemHistoryRequest\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"\xb3\x03\n" +
+	"\x15OnuGemPortHistoryData\x12\x14\n" +
+	"\x05gemId\x18\x01 \x01(\rR\x05gemId\x122\n" +
+	"\x14transmittedGEMFrames\x18\x02 \x01(\rR\x14transmittedGEMFrames\x12,\n" +
+	"\x11receivedGEMFrames\x18\x03 \x01(\rR\x11receivedGEMFrames\x126\n" +
+	"\x14receivedPayloadBytes\x18\x04 \x01(\rB\x02\x18\x01R\x14receivedPayloadBytes\x12<\n" +
+	"\x17transmittedPayloadBytes\x18\x05 \x01(\rB\x02\x18\x01R\x17transmittedPayloadBytes\x120\n" +
+	"\x13encryptionKeyErrors\x18\x06 \x01(\rR\x13encryptionKeyErrors\x129\n" +
+	"\x19received_payload_bytes_64\x18\a \x01(\x06R\x16receivedPayloadBytes64\x12?\n" +
+	"\x1ctransmitted_payload_bytes_64\x18\b \x01(\x06R\x19transmittedPayloadBytes64\"I\n" +
+	"\x13OnuAllocHistoryData\x12\x18\n" +
+	"\aallocId\x18\x01 \x01(\rR\aallocId\x12\x18\n" +
+	"\arxBytes\x18\x02 \x01(\rR\arxBytes\"\xa4\x01\n" +
+	"\x16OnuAllocGemHistoryData\x12F\n" +
+	"\x0eonuAllocIdInfo\x18\x01 \x01(\v2\x1e.extension.OnuAllocHistoryDataR\x0eonuAllocIdInfo\x12B\n" +
+	"\vgemPortInfo\x18\x02 \x03(\v2 .extension.OnuGemPortHistoryDataR\vgemPortInfo\"z\n" +
+	"\x1dGetOnuAllocGemHistoryResponse\x12Y\n" +
+	"\x16onuAllocGemHistoryData\x18\x01 \x03(\v2!.extension.OnuAllocGemHistoryDataR\x16onuAllocGemHistoryData\"@\n" +
+	"\x10GetOnuFecHistory\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"\xe3\x03\n" +
+	"\x18GetOnuFecHistoryResponse\x12*\n" +
+	"\x0ecorrectedBytes\x18\x01 \x01(\rB\x02\x18\x01R\x0ecorrectedBytes\x122\n" +
+	"\x12correctedCodeWords\x18\x02 \x01(\rB\x02\x18\x01R\x12correctedCodeWords\x12\x1e\n" +
+	"\n" +
+	"fecSeconds\x18\x03 \x01(\rR\n" +
+	"fecSeconds\x12*\n" +
+	"\x0etotalCodeWords\x18\x04 \x01(\rB\x02\x18\x01R\x0etotalCodeWords\x12:\n" +
+	"\x16uncorrectableCodeWords\x18\x05 \x01(\rB\x02\x18\x01R\x16uncorrectableCodeWords\x123\n" +
+	"\x16fec_corrected_bytes_64\x18\x06 \x01(\x06R\x13fecCorrectedBytes64\x12<\n" +
+	"\x1bfec_corrected_code_words_64\x18\a \x01(\x06R\x17fecCorrectedCodeWords64\x12-\n" +
+	"\x13total_code_words_64\x18\b \x01(\x06R\x10totalCodeWords64\x12=\n" +
+	"\x1buncorrectable_code_words_64\x18\t \x01(\x06R\x18uncorrectableCodeWords64\"G\n" +
+	"\x15GetOnuCountersRequest\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\"\x8d\x01\n" +
+	"%GetOmciEthernetFrameExtendedPmRequest\x12 \n" +
+	"\vonuDeviceId\x18\x01 \x01(\tR\vonuDeviceId\x12\x1c\n" +
+	"\buniIndex\x18\x02 \x01(\rH\x00R\buniIndex\x12\x14\n" +
+	"\x05reset\x18\x03 \x01(\bR\x05resetB\x0e\n" +
+	"\fis_uni_index\"C\n" +
+	"\x11GetRxPowerRequest\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\"L\n" +
+	"\x14GetOltRxPowerRequest\x12\x1d\n" +
+	"\n" +
+	"port_label\x18\x01 \x01(\tR\tportLabel\x12\x15\n" +
+	"\x06onu_sn\x18\x02 \x01(\tR\x05onuSn\"Z\n" +
+	"\x12GetPonStatsRequest\x12\x1e\n" +
+	"\tportLabel\x18\x01 \x01(\tH\x00R\tportLabel\x12\x18\n" +
+	"\x06portId\x18\x02 \x01(\aH\x00R\x06portIdB\n" +
+	"\n" +
+	"\bportInfo\"o\n" +
+	"\x13GetPonStatsResponse\x12\x18\n" +
+	"\aponPort\x18\x01 \x01(\rR\aponPort\x12>\n" +
+	"\x0eportStatistics\x18\x02 \x01(\v2\x16.common.PortStatisticsR\x0eportStatistics\"Z\n" +
+	"\x12GetNNIStatsRequest\x12\x1e\n" +
+	"\tportLabel\x18\x01 \x01(\tH\x00R\tportLabel\x12\x18\n" +
+	"\x06portId\x18\x02 \x01(\aH\x00R\x06portIdB\n" +
+	"\n" +
+	"\bportInfo\"o\n" +
+	"\x13GetNNIStatsResponse\x12\x18\n" +
+	"\anniPort\x18\x01 \x01(\rR\anniPort\x12>\n" +
+	"\x0eportStatistics\x18\x02 \x01(\v2\x16.common.PortStatisticsR\x0eportStatistics\"I\n" +
+	"\x19GetOnuStatsFromOltRequest\x12\x16\n" +
+	"\x06intfId\x18\x01 \x01(\aR\x06intfId\x12\x14\n" +
+	"\x05onuId\x18\x02 \x01(\aR\x05onuId\"\x9d\x01\n" +
+	"\x15OnuGemPortInfoFromOlt\x12\x14\n" +
+	"\x05gemId\x18\x01 \x01(\rR\x05gemId\x12\x1c\n" +
+	"\trxPackets\x18\x02 \x01(\x04R\trxPackets\x12\x18\n" +
+	"\arxBytes\x18\x03 \x01(\x04R\arxBytes\x12\x1c\n" +
+	"\ttxPackets\x18\x04 \x01(\x04R\ttxPackets\x12\x18\n" +
+	"\atxBytes\x18\x05 \x01(\x04R\atxBytes\"K\n" +
+	"\x15OnuAllocIdInfoFromOlt\x12\x18\n" +
+	"\aallocId\x18\x01 \x01(\rR\aallocId\x12\x18\n" +
+	"\arxBytes\x18\x02 \x01(\x04R\arxBytes\"\xa9\x01\n" +
+	"\x1fOnuAllocGemStatsFromOltResponse\x12B\n" +
+	"\vallocIdInfo\x18\x01 \x01(\v2 .extension.OnuAllocIdInfoFromOltR\vallocIdInfo\x12B\n" +
+	"\vgemPortInfo\x18\x02 \x03(\v2 .extension.OnuGemPortInfoFromOltR\vgemPortInfo\"v\n" +
+	"\x1aGetOnuStatsFromOltResponse\x12X\n" +
+	"\x11allocGemStatsInfo\x18\x01 \x03(\v2*.extension.OnuAllocGemStatsFromOltResponseR\x11allocGemStatsInfo\"\x96\r\n" +
+	"\x16GetOnuCountersResponse\x12\x19\n" +
+	"\aintf_id\x18\x01 \x01(\aH\x00R\x06intfId\x12\x17\n" +
+	"\x06onu_id\x18\x02 \x01(\aH\x01R\x05onuId\x12'\n" +
+	"\x0epositive_drift\x18\x03 \x01(\x06H\x02R\rpositiveDrift\x12'\n" +
+	"\x0enegative_drift\x18\x04 \x01(\x06H\x03R\rnegativeDrift\x12:\n" +
+	"\x18delimiter_miss_detection\x18\x05 \x01(\x06H\x04R\x16delimiterMissDetection\x12\x1f\n" +
+	"\n" +
+	"bip_errors\x18\x06 \x01(\x06H\x05R\tbipErrors\x12\x1d\n" +
+	"\tbip_units\x18\a \x01(\x06H\x06R\bbipUnits\x124\n" +
+	"\x15fec_corrected_symbols\x18\b \x01(\x06H\aR\x13fecCorrectedSymbols\x128\n" +
+	"\x17fec_codewords_corrected\x18\t \x01(\x06H\bR\x15fecCodewordsCorrected\x12@\n" +
+	"\x1bfec_codewords_uncorrectable\x18\n" +
+	" \x01(\x06H\tR\x19fecCodewordsUncorrectable\x12%\n" +
+	"\rfec_codewords\x18\v \x01(\x06H\n" +
+	"R\ffecCodewords\x120\n" +
+	"\x13fec_corrected_units\x18\f \x01(\x06H\vR\x11fecCorrectedUnits\x12(\n" +
+	"\x0fxgem_key_errors\x18\r \x01(\x06H\fR\rxgemKeyErrors\x12\x1d\n" +
+	"\txgem_loss\x18\x0e \x01(\x06H\rR\bxgemLoss\x12(\n" +
+	"\x0frx_ploams_error\x18\x0f \x01(\x06H\x0eR\rrxPloamsError\x12-\n" +
+	"\x12rx_ploams_non_idle\x18\x10 \x01(\x06H\x0fR\x0frxPloamsNonIdle\x12\x19\n" +
+	"\arx_omci\x18\x11 \x01(\x06H\x10R\x06rxOmci\x12\x19\n" +
+	"\atx_omci\x18\x12 \x01(\x06H\x11R\x06txOmci\x12:\n" +
+	"\x19rx_omci_packets_crc_error\x18\x13 \x01(\x06H\x12R\x15rxOmciPacketsCrcError\x12\x1b\n" +
+	"\brx_bytes\x18\x14 \x01(\x06H\x13R\arxBytes\x12\x1f\n" +
+	"\n" +
+	"rx_packets\x18\x15 \x01(\x06H\x14R\trxPackets\x12\x1b\n" +
+	"\btx_bytes\x18\x16 \x01(\x06H\x15R\atxBytes\x12\x1f\n" +
+	"\n" +
+	"tx_packets\x18\x17 \x01(\x06H\x16R\ttxPackets\x12#\n" +
+	"\fber_reported\x18\x18 \x01(\x06H\x17R\vberReported\x12!\n" +
+	"\vlcdg_errors\x18\x19 \x01(\x06H\x18R\n" +
+	"lcdgErrors\x12\x1f\n" +
+	"\n" +
+	"rdi_errors\x18\x1a \x01(\x06H\x19R\trdiErrors\x12\x1e\n" +
+	"\ttimestamp\x18\x1b \x01(\aH\x1aR\ttimestamp\x12\x1f\n" +
+	"\n" +
+	"hec_errors\x18\x1c \x01(\x06H\x1bR\thecErrorsB\f\n" +
+	"\n" +
+	"is_intf_idB\v\n" +
+	"\tis_onu_idB\x13\n" +
+	"\x11is_positive_driftB\x13\n" +
+	"\x11is_negative_driftB\x1d\n" +
+	"\x1bis_delimiter_miss_detectionB\x0f\n" +
+	"\ris_bip_errorsB\x0e\n" +
+	"\fis_bip_unitsB\x1a\n" +
+	"\x18is_fec_corrected_symbolsB\x1c\n" +
+	"\x1ais_fec_codewords_correctedB \n" +
+	"\x1eis_fec_codewords_uncorrectableB\x12\n" +
+	"\x10is_fec_codewordsB\x18\n" +
+	"\x16is_fec_corrected_unitsB\x14\n" +
+	"\x12is_xgem_key_errorsB\x0e\n" +
+	"\fis_xgem_lossB\x14\n" +
+	"\x12is_rx_ploams_errorB\x17\n" +
+	"\x15is_rx_ploams_non_idleB\f\n" +
+	"\n" +
+	"is_rx_omciB\f\n" +
+	"\n" +
+	"is_tx_omciB\x1e\n" +
+	"\x1cis_rx_omci_packets_crc_errorB\r\n" +
+	"\vis_rx_bytesB\x0f\n" +
+	"\ris_rx_packetsB\r\n" +
+	"\vis_tx_bytesB\x0f\n" +
+	"\ris_tx_packetsB\x11\n" +
+	"\x0fis_ber_reportedB\x10\n" +
+	"\x0eis_lcdg_errorsB\x0f\n" +
+	"\ris_rdi_errorsB\x0e\n" +
+	"\fis_timestampB\x0f\n" +
+	"\ris_hec_errors\"\x8c\x05\n" +
+	"\x1bOmciEthernetFrameExtendedPm\x12\x1f\n" +
+	"\vdrop_events\x18\x01 \x01(\x06R\n" +
+	"dropEvents\x12\x16\n" +
+	"\x06octets\x18\x02 \x01(\x06R\x06octets\x12\x16\n" +
+	"\x06frames\x18\x03 \x01(\x06R\x06frames\x12)\n" +
+	"\x10broadcast_frames\x18\x04 \x01(\x06R\x0fbroadcastFrames\x12)\n" +
+	"\x10multicast_frames\x18\x05 \x01(\x06R\x0fmulticastFrames\x12,\n" +
+	"\x12crc_errored_frames\x18\x06 \x01(\x06R\x10crcErroredFrames\x12)\n" +
+	"\x10undersize_frames\x18\a \x01(\x06R\x0fundersizeFrames\x12'\n" +
+	"\x0foversize_frames\x18\b \x01(\x06R\x0eoversizeFrames\x12(\n" +
+	"\x10frames_64_octets\x18\t \x01(\x06R\x0eframes64Octets\x124\n" +
+	"\x17frames_65_to_127_octets\x18\n" +
+	" \x01(\x06R\x13frames65To127Octets\x126\n" +
+	"\x18frames_128_to_255_octets\x18\v \x01(\x06R\x14frames128To255Octets\x126\n" +
+	"\x18frames_256_to_511_octets\x18\f \x01(\x06R\x14frames256To511Octets\x128\n" +
+	"\x19frames_512_to_1023_octets\x18\r \x01(\x06R\x15frames512To1023Octets\x12:\n" +
+	"\x1aframes_1024_to_1518_octets\x18\x0e \x01(\x06R\x16frames1024To1518Octets\"\xf4\x02\n" +
+	"&GetOmciEthernetFrameExtendedPmResponse\x12B\n" +
+	"\bupstream\x18\x01 \x01(\v2&.extension.OmciEthernetFrameExtendedPmR\bupstream\x12F\n" +
+	"\n" +
+	"downstream\x18\x02 \x01(\v2&.extension.OmciEthernetFrameExtendedPmR\n" +
+	"downstream\x12\x8b\x01\n" +
+	"&omci_ethernet_frame_extended_pm_format\x18\x03 \x01(\x0e28.extension.GetOmciEthernetFrameExtendedPmResponse.FormatR!omciEthernetFrameExtendedPmFormat\"0\n" +
+	"\x06Format\x12\x12\n" +
+	"\x0eTHIRTY_TWO_BIT\x10\x00\x12\x12\n" +
+	"\x0eSIXTY_FOUR_BIT\x10\x01\"t\n" +
+	"\aRxPower\x12\x15\n" +
+	"\x06onu_sn\x18\x01 \x01(\tR\x05onuSn\x12\x16\n" +
+	"\x06status\x18\x02 \x01(\tR\x06status\x12\x1f\n" +
+	"\vfail_reason\x18\x03 \x01(\tR\n" +
+	"failReason\x12\x19\n" +
+	"\brx_power\x18\x04 \x01(\x01R\arxPower\"e\n" +
+	"\x15GetOltRxPowerResponse\x12\x1d\n" +
+	"\n" +
+	"port_label\x18\x01 \x01(\tR\tportLabel\x12-\n" +
+	"\brx_power\x18\x02 \x03(\v2\x12.extension.RxPowerR\arxPower\"\x98\x01\n" +
+	"\x12GetRxPowerResponse\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\x12\x1f\n" +
+	"\vfail_reason\x18\x04 \x01(\tR\n" +
+	"failReason\x12\x19\n" +
+	"\brx_power\x18\x05 \x01(\x01R\arxPower\"J\n" +
+	"\x1aGetOnuOmciTxRxStatsRequest\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"\xf1\x03\n" +
+	"\x1bGetOnuOmciTxRxStatsResponse\x12)\n" +
+	"\x11base_tx_ar_frames\x18\x01 \x01(\rR\x0ebaseTxArFrames\x12)\n" +
+	"\x11base_rx_ak_frames\x18\x02 \x01(\rR\x0ebaseRxAkFrames\x12.\n" +
+	"\x14base_tx_no_ar_frames\x18\x03 \x01(\rR\x10baseTxNoArFrames\x12.\n" +
+	"\x14base_rx_no_ak_frames\x18\x04 \x01(\rR\x10baseRxNoAkFrames\x12'\n" +
+	"\x10ext_tx_ar_frames\x18\x05 \x01(\rR\rextTxArFrames\x12'\n" +
+	"\x10ext_rx_ak_frames\x18\x06 \x01(\rR\rextRxAkFrames\x12,\n" +
+	"\x13ext_tx_no_ar_frames\x18\a \x01(\rR\x0fextTxNoArFrames\x12,\n" +
+	"\x13ext_rx_no_ak_frames\x18\b \x01(\rR\x0fextRxNoAkFrames\x125\n" +
+	"\x17tx_omci_counter_retries\x18\t \x01(\rR\x14txOmciCounterRetries\x127\n" +
+	"\x18tx_omci_counter_timeouts\x18\n" +
+	" \x01(\rR\x15txOmciCounterTimeouts\"M\n" +
+	"\x1dGetOnuOmciActiveAlarmsRequest\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"}\n" +
+	"\tAlarmData\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x12\x1f\n" +
+	"\vinstance_id\x18\x02 \x01(\rR\n" +
+	"instanceId\x12\x12\n" +
+	"\x04name\x18\x03 \x01(\tR\x04name\x12 \n" +
+	"\vdescription\x18\x04 \x01(\tR\vdescription\"[\n" +
+	"\x1eGetOnuOmciActiveAlarmsResponse\x129\n" +
+	"\ractive_alarms\x18\x01 \x03(\v2\x14.extension.AlarmDataR\factiveAlarms\"\xc2\x01\n" +
+	"!GetOffloadedAppsStatisticsRequest\x12U\n" +
+	"\bstatsFor\x18\x01 \x01(\x0e29.extension.GetOffloadedAppsStatisticsRequest.OffloadedAppR\bstatsFor\"F\n" +
+	"\fOffloadedApp\x12\r\n" +
+	"\tUNDEFINED\x10\x00\x12\v\n" +
+	"\aPPPoeIA\x10\x01\x12\f\n" +
+	"\bDHCPv4RA\x10\x02\x12\f\n" +
+	"\bDHCPv6RA\x10\x03\"\x8b\x16\n" +
+	"\"GetOffloadedAppsStatisticsResponse\x12c\n" +
+	"\rdhcpv4RaStats\x18\x01 \x01(\v2;.extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStatsH\x00R\rdhcpv4RaStats\x12c\n" +
+	"\rdhcpv6RaStats\x18\x02 \x01(\v2;.extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStatsH\x00R\rdhcpv6RaStats\x12`\n" +
+	"\fpppoeIaStats\x18\x03 \x01(\v2:.extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStatsH\x00R\fpppoeIaStats\x1a\xfb\x05\n" +
+	"\rDHCPv4RAStats\x12:\n" +
+	"\x1ain_bad_packets_from_client\x18\x01 \x01(\rR\x16inBadPacketsFromClient\x12:\n" +
+	"\x1ain_bad_packets_from_server\x18\x02 \x01(\rR\x16inBadPacketsFromServer\x123\n" +
+	"\x16in_packets_from_client\x18\x03 \x01(\rR\x13inPacketsFromClient\x123\n" +
+	"\x16in_packets_from_server\x18\x04 \x01(\rR\x13inPacketsFromServer\x121\n" +
+	"\x15out_packets_to_server\x18\x05 \x01(\rR\x12outPacketsToServer\x121\n" +
+	"\x15out_packets_to_client\x18\x06 \x01(\rR\x12outPacketsToClient\x12M\n" +
+	"$option_82_inserted_packets_to_server\x18\a \x01(\rR\x1foption82InsertedPacketsToServer\x12K\n" +
+	"#option_82_removed_packets_to_client\x18\b \x01(\rR\x1eoption82RemovedPacketsToClient\x12E\n" +
+	" option_82_not_inserted_to_server\x18\t \x01(\rR\x1boption82NotInsertedToServer\x12{\n" +
+	"\x10additional_stats\x18\n" +
+	" \x03(\v2P.extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.AdditionalStatsEntryR\x0fadditionalStats\x1aB\n" +
+	"\x14AdditionalStatsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\xf5\x06\n" +
+	"\rDHCPv6RAStats\x12:\n" +
+	"\x1ain_bad_packets_from_client\x18\x01 \x01(\rR\x16inBadPacketsFromClient\x12:\n" +
+	"\x1ain_bad_packets_from_server\x18\x02 \x01(\rR\x16inBadPacketsFromServer\x12M\n" +
+	"$option_17_inserted_packets_to_server\x18\x03 \x01(\rR\x1foption17InsertedPacketsToServer\x12K\n" +
+	"#option_17_removed_packets_to_client\x18\x04 \x01(\rR\x1eoption17RemovedPacketsToClient\x12M\n" +
+	"$option_18_inserted_packets_to_server\x18\x05 \x01(\rR\x1foption18InsertedPacketsToServer\x12K\n" +
+	"#option_18_removed_packets_to_client\x18\x06 \x01(\rR\x1eoption18RemovedPacketsToClient\x12M\n" +
+	"$option_37_inserted_packets_to_server\x18\a \x01(\rR\x1foption37InsertedPacketsToServer\x12K\n" +
+	"#option_37_removed_packets_to_client\x18\b \x01(\rR\x1eoption37RemovedPacketsToClient\x12W\n" +
+	")outgoing_mtu_exceeded_packets_from_client\x18\t \x01(\rR$outgoingMtuExceededPacketsFromClient\x12{\n" +
+	"\x10additional_stats\x18\n" +
+	" \x03(\v2P.extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.AdditionalStatsEntryR\x0fadditionalStats\x1aB\n" +
+	"\x14AdditionalStatsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\xb9\x06\n" +
+	"\fPPPoeIAStats\x12>\n" +
+	"\x1cin_error_packets_from_client\x18\x01 \x01(\rR\x18inErrorPacketsFromClient\x12>\n" +
+	"\x1cin_error_packets_from_server\x18\x02 \x01(\rR\x18inErrorPacketsFromServer\x123\n" +
+	"\x16in_packets_from_client\x18\x03 \x01(\rR\x13inPacketsFromClient\x123\n" +
+	"\x16in_packets_from_server\x18\x04 \x01(\rR\x13inPacketsFromServer\x121\n" +
+	"\x15out_packets_to_server\x18\x05 \x01(\rR\x12outPacketsToServer\x121\n" +
+	"\x15out_packets_to_client\x18\x06 \x01(\rR\x12outPacketsToClient\x12`\n" +
+	".vendor_specific_tag_inserted_packets_to_server\x18\a \x01(\rR(vendorSpecificTagInsertedPacketsToServer\x12^\n" +
+	"-vendor_specific_tag_removed_packets_to_client\x18\b \x01(\rR'vendorSpecificTagRemovedPacketsToClient\x12W\n" +
+	")outgoing_mtu_exceeded_packets_from_client\x18\t \x01(\rR$outgoingMtuExceededPacketsFromClient\x12z\n" +
+	"\x10additional_stats\x18\n" +
+	" \x03(\v2O.extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.AdditionalStatsEntryR\x0fadditionalStats\x1aB\n" +
+	"\x14AdditionalStatsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
+	"\x05stats\"\xf8\t\n" +
+	"\x0fGetValueRequest\x12;\n" +
+	"\bdistance\x18\x01 \x01(\v2\x1d.extension.GetDistanceRequestH\x00R\bdistance\x12;\n" +
+	"\auniInfo\x18\x02 \x01(\v2\x1f.extension.GetOnuUniInfoRequestH\x00R\auniInfo\x12A\n" +
+	"\voltPortInfo\x18\x03 \x01(\v2\x1d.extension.GetOltPortCountersH\x00R\voltPortInfo\x12I\n" +
+	"\x0eonuOpticalInfo\x18\x04 \x01(\v2\x1f.extension.GetOnuPonOpticalInfoH\x00R\x0eonuOpticalInfo\x12R\n" +
+	"\rethBridgePort\x18\x05 \x01(\v2*.extension.GetOnuEthernetBridgePortHistoryH\x00R\rethBridgePort\x12=\n" +
+	"\n" +
+	"fecHistory\x18\x06 \x01(\v2\x1b.extension.GetOnuFecHistoryH\x00R\n" +
+	"fecHistory\x12B\n" +
+	"\n" +
+	"onuPonInfo\x18\a \x01(\v2 .extension.GetOnuCountersRequestH\x00R\n" +
+	"onuPonInfo\x12L\n" +
+	"\aonuInfo\x18\b \x01(\v20.extension.GetOmciEthernetFrameExtendedPmRequestH\x00R\aonuInfo\x128\n" +
+	"\arxPower\x18\t \x01(\v2\x1c.extension.GetRxPowerRequestH\x00R\arxPower\x12K\n" +
+	"\fonuOmciStats\x18\n" +
+	" \x01(\v2%.extension.GetOnuOmciTxRxStatsRequestH\x00R\fonuOmciStats\x12A\n" +
+	"\n" +
+	"oltRxPower\x18\v \x01(\v2\x1f.extension.GetOltRxPowerRequestH\x00R\n" +
+	"oltRxPower\x12T\n" +
+	"\x0fonuActiveAlarms\x18\f \x01(\v2(.extension.GetOnuOmciActiveAlarmsRequestH\x00R\x0fonuActiveAlarms\x12^\n" +
+	"\x12offloadedAppsStats\x18\r \x01(\v2,.extension.GetOffloadedAppsStatisticsRequestH\x00R\x12offloadedAppsStats\x12U\n" +
+	"\x10onuAllocGemStats\x18\x0e \x01(\v2'.extension.GetOnuAllocGemHistoryRequestH\x00R\x10onuAllocGemStats\x12P\n" +
+	"\x0fonuStatsFromOlt\x18\x0f \x01(\v2$.extension.GetOnuStatsFromOltRequestH\x00R\x0fonuStatsFromOlt\x12A\n" +
+	"\voltPonStats\x18\x10 \x01(\v2\x1d.extension.GetPonStatsRequestH\x00R\voltPonStats\x12A\n" +
+	"\voltNniStats\x18\x11 \x01(\v2\x1d.extension.GetNNIStatsRequestH\x00R\voltNniStatsB\t\n" +
+	"\arequest\"\xe7\r\n" +
+	"\x10GetValueResponse\x12:\n" +
+	"\x06status\x18\x01 \x01(\x0e2\".extension.GetValueResponse.StatusR\x06status\x12E\n" +
+	"\terrReason\x18\x02 \x01(\x0e2'.extension.GetValueResponse.ErrorReasonR\terrReason\x12<\n" +
+	"\bdistance\x18\x03 \x01(\v2\x1e.extension.GetDistanceResponseH\x00R\bdistance\x12<\n" +
+	"\auniInfo\x18\x04 \x01(\v2 .extension.GetOnuUniInfoResponseH\x00R\auniInfo\x12K\n" +
+	"\fportCoutners\x18\x05 \x01(\v2%.extension.GetOltPortCountersResponseH\x00R\fportCoutners\x12Q\n" +
+	"\x0eonuOpticalInfo\x18\x06 \x01(\v2'.extension.GetOnuPonOpticalInfoResponseH\x00R\x0eonuOpticalInfo\x12b\n" +
+	"\x11ethBridgePortInfo\x18\a \x01(\v22.extension.GetOnuEthernetBridgePortHistoryResponseH\x00R\x11ethBridgePortInfo\x12E\n" +
+	"\n" +
+	"fecHistory\x18\b \x01(\v2#.extension.GetOnuFecHistoryResponseH\x00R\n" +
+	"fecHistory\x12K\n" +
+	"\x0eonuPonCounters\x18\t \x01(\v2!.extension.GetOnuCountersResponseH\x00R\x0eonuPonCounters\x12U\n" +
+	"\vonuCounters\x18\n" +
+	" \x01(\v21.extension.GetOmciEthernetFrameExtendedPmResponseH\x00R\vonuCounters\x129\n" +
+	"\arxPower\x18\v \x01(\v2\x1d.extension.GetRxPowerResponseH\x00R\arxPower\x12L\n" +
+	"\fonuOmciStats\x18\f \x01(\v2&.extension.GetOnuOmciTxRxStatsResponseH\x00R\fonuOmciStats\x12B\n" +
+	"\n" +
+	"oltRxPower\x18\r \x01(\v2 .extension.GetOltRxPowerResponseH\x00R\n" +
+	"oltRxPower\x12U\n" +
+	"\x0fonuActiveAlarms\x18\x0e \x01(\v2).extension.GetOnuOmciActiveAlarmsResponseH\x00R\x0fonuActiveAlarms\x12_\n" +
+	"\x12offloadedAppsStats\x18\x0f \x01(\v2-.extension.GetOffloadedAppsStatisticsResponseH\x00R\x12offloadedAppsStats\x12f\n" +
+	"\x18onuAllocGemStatsResponse\x18\x10 \x01(\v2(.extension.GetOnuAllocGemHistoryResponseH\x00R\x18onuAllocGemStatsResponse\x12a\n" +
+	"\x17onuStatsFromOltResponse\x18\x11 \x01(\v2%.extension.GetOnuStatsFromOltResponseH\x00R\x17onuStatsFromOltResponse\x12R\n" +
+	"\x13oltPonStatsResponse\x18\x12 \x01(\v2\x1e.extension.GetPonStatsResponseH\x00R\x13oltPonStatsResponse\x12R\n" +
+	"\x13oltNniStatsResponse\x18\x13 \x01(\v2\x1e.extension.GetNNIStatsResponseH\x00R\x13oltNniStatsResponse\"1\n" +
+	"\x06Status\x12\x14\n" +
+	"\x10STATUS_UNDEFINED\x10\x00\x12\x06\n" +
+	"\x02OK\x10\x01\x12\t\n" +
+	"\x05ERROR\x10\x02\"\xad\x01\n" +
+	"\vErrorReason\x12\x14\n" +
+	"\x10REASON_UNDEFINED\x10\x00\x12\x0f\n" +
+	"\vUNSUPPORTED\x10\x01\x12\x15\n" +
+	"\x11INVALID_DEVICE_ID\x10\x02\x12\x15\n" +
+	"\x11INVALID_PORT_TYPE\x10\x03\x12\v\n" +
+	"\aTIMEOUT\x10\x04\x12\x14\n" +
+	"\x10INVALID_REQ_TYPE\x10\x05\x12\x12\n" +
+	"\x0eINTERNAL_ERROR\x10\x06\x12\x12\n" +
+	"\x0eINVALID_DEVICE\x10\aB\n" +
+	"\n" +
+	"\bresponse\"\xac\x01\n" +
+	"\x10AppOffloadConfig\x12&\n" +
+	"\x0eenableDHCPv4RA\x18\x01 \x01(\bR\x0eenableDHCPv4RA\x12&\n" +
+	"\x0eenableDHCPv6RA\x18\x02 \x01(\bR\x0eenableDHCPv6RA\x12$\n" +
+	"\renablePPPoEIA\x18\x03 \x01(\bR\renablePPPoEIA\x12\"\n" +
+	"\faccessNodeID\x18\x04 \x01(\tR\faccessNodeID\"\xfe\x01\n" +
+	"\x13AppOffloadOnuConfig\x12 \n" +
+	"\vonuDeviceId\x18\x01 \x01(\tR\vonuDeviceId\x12K\n" +
+	"\n" +
+	"perUniInfo\x18\x05 \x03(\v2+.extension.AppOffloadOnuConfig.PerUniConfigR\n" +
+	"perUniInfo\x1ax\n" +
+	"\fPerUniConfig\x12$\n" +
+	"\ragentRemoteID\x18\x02 \x01(\tR\ragentRemoteID\x12&\n" +
+	"\x0eagentCircuitID\x18\x03 \x01(\tR\x0eagentCircuitID\x12\x1a\n" +
+	"\bonuUniId\x18\x04 \x01(\rR\bonuUniId\"\xfa\x01\n" +
+	"\x0fSetValueRequest\x128\n" +
+	"\falarm_config\x18\x01 \x01(\v2\x13.config.AlarmConfigH\x00R\valarmConfig\x12K\n" +
+	"\x12app_offload_config\x18\x02 \x01(\v2\x1b.extension.AppOffloadConfigH\x00R\x10appOffloadConfig\x12U\n" +
+	"\x16app_offload_onu_config\x18\x03 \x01(\v2\x1e.extension.AppOffloadOnuConfigH\x00R\x13appOffloadOnuConfigB\t\n" +
+	"\arequest\"\xc4\x02\n" +
+	"\x10SetValueResponse\x12:\n" +
+	"\x06status\x18\x01 \x01(\x0e2\".extension.SetValueResponse.StatusR\x06status\x12E\n" +
+	"\terrReason\x18\x02 \x01(\x0e2'.extension.SetValueResponse.ErrorReasonR\terrReason\"1\n" +
+	"\x06Status\x12\x14\n" +
+	"\x10STATUS_UNDEFINED\x10\x00\x12\x06\n" +
+	"\x02OK\x10\x01\x12\t\n" +
+	"\x05ERROR\x10\x02\"z\n" +
+	"\vErrorReason\x12\x14\n" +
+	"\x10REASON_UNDEFINED\x10\x00\x12\x0f\n" +
+	"\vUNSUPPORTED\x10\x01\x12\x15\n" +
+	"\x11INVALID_DEVICE_ID\x10\x02\x12\x19\n" +
+	"\x15INVALID_ONU_DEVICE_ID\x10\x03\x12\x12\n" +
+	"\x0eINVALID_UNI_ID\x10\x04\"i\n" +
+	"\x15SingleGetValueRequest\x12\x1a\n" +
+	"\btargetId\x18\x01 \x01(\tR\btargetId\x124\n" +
+	"\arequest\x18\x02 \x01(\v2\x1a.extension.GetValueRequestR\arequest\"Q\n" +
+	"\x16SingleGetValueResponse\x127\n" +
+	"\bresponse\x18\x01 \x01(\v2\x1b.extension.GetValueResponseR\bresponse\"i\n" +
+	"\x15SingleSetValueRequest\x12\x1a\n" +
+	"\btargetId\x18\x01 \x01(\tR\btargetId\x124\n" +
+	"\arequest\x18\x02 \x01(\v2\x1a.extension.SetValueRequestR\arequest\"Q\n" +
+	"\x16SingleSetValueResponse\x127\n" +
+	"\bresponse\x18\x01 \x01(\v2\x1b.extension.SetValueResponseR\bresponse2\xb3\x01\n" +
+	"\tExtension\x12R\n" +
+	"\vGetExtValue\x12 .extension.SingleGetValueRequest\x1a!.extension.SingleGetValueResponse\x12R\n" +
+	"\vSetExtValue\x12 .extension.SingleSetValueRequest\x1a!.extension.SingleSetValueResponseBR\n" +
+	"\x1dorg.opencord.voltha.extensionZ1github.com/opencord/voltha-protos/v5/go/extensionb\x06proto3"
+
+var (
+	file_voltha_protos_extensions_proto_rawDescOnce sync.Once
+	file_voltha_protos_extensions_proto_rawDescData []byte
+)
+
+func file_voltha_protos_extensions_proto_rawDescGZIP() []byte {
+	file_voltha_protos_extensions_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_extensions_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_extensions_proto_rawDesc), len(file_voltha_protos_extensions_proto_rawDesc)))
+	})
+	return file_voltha_protos_extensions_proto_rawDescData
+}
+
+var file_voltha_protos_extensions_proto_enumTypes = make([]protoimpl.EnumInfo, 12)
+var file_voltha_protos_extensions_proto_msgTypes = make([]protoimpl.MessageInfo, 64)
+var file_voltha_protos_extensions_proto_goTypes = []any{
+	(ValueType_Type)(0),                                      // 0: extension.ValueType.Type
+	(GetOnuUniInfoResponse_ConfigurationInd)(0),              // 1: extension.GetOnuUniInfoResponse.ConfigurationInd
+	(GetOnuUniInfoResponse_AdministrativeState)(0),           // 2: extension.GetOnuUniInfoResponse.AdministrativeState
+	(GetOnuUniInfoResponse_OperationalState)(0),              // 3: extension.GetOnuUniInfoResponse.OperationalState
+	(GetOltPortCounters_PortType)(0),                         // 4: extension.GetOltPortCounters.PortType
+	(GetOnuEthernetBridgePortHistory_Direction)(0),           // 5: extension.GetOnuEthernetBridgePortHistory.Direction
+	(GetOmciEthernetFrameExtendedPmResponse_Format)(0),       // 6: extension.GetOmciEthernetFrameExtendedPmResponse.Format
+	(GetOffloadedAppsStatisticsRequest_OffloadedApp)(0),      // 7: extension.GetOffloadedAppsStatisticsRequest.OffloadedApp
+	(GetValueResponse_Status)(0),                             // 8: extension.GetValueResponse.Status
+	(GetValueResponse_ErrorReason)(0),                        // 9: extension.GetValueResponse.ErrorReason
+	(SetValueResponse_Status)(0),                             // 10: extension.SetValueResponse.Status
+	(SetValueResponse_ErrorReason)(0),                        // 11: extension.SetValueResponse.ErrorReason
+	(*ValueSet)(nil),                                         // 12: extension.ValueSet
+	(*ValueType)(nil),                                        // 13: extension.ValueType
+	(*ValueSpecifier)(nil),                                   // 14: extension.ValueSpecifier
+	(*ReturnValues)(nil),                                     // 15: extension.ReturnValues
+	(*GetDistanceRequest)(nil),                               // 16: extension.GetDistanceRequest
+	(*GetDistanceResponse)(nil),                              // 17: extension.GetDistanceResponse
+	(*GetOnuUniInfoRequest)(nil),                             // 18: extension.GetOnuUniInfoRequest
+	(*GetOnuUniInfoResponse)(nil),                            // 19: extension.GetOnuUniInfoResponse
+	(*GetOltPortCounters)(nil),                               // 20: extension.GetOltPortCounters
+	(*GetOltPortCountersResponse)(nil),                       // 21: extension.GetOltPortCountersResponse
+	(*GetOnuPonOpticalInfo)(nil),                             // 22: extension.GetOnuPonOpticalInfo
+	(*GetOnuPonOpticalInfoResponse)(nil),                     // 23: extension.GetOnuPonOpticalInfoResponse
+	(*GetOnuEthernetBridgePortHistory)(nil),                  // 24: extension.GetOnuEthernetBridgePortHistory
+	(*GetOnuEthernetBridgePortHistoryResponse)(nil),          // 25: extension.GetOnuEthernetBridgePortHistoryResponse
+	(*GetOnuAllocGemHistoryRequest)(nil),                     // 26: extension.GetOnuAllocGemHistoryRequest
+	(*OnuGemPortHistoryData)(nil),                            // 27: extension.OnuGemPortHistoryData
+	(*OnuAllocHistoryData)(nil),                              // 28: extension.OnuAllocHistoryData
+	(*OnuAllocGemHistoryData)(nil),                           // 29: extension.OnuAllocGemHistoryData
+	(*GetOnuAllocGemHistoryResponse)(nil),                    // 30: extension.GetOnuAllocGemHistoryResponse
+	(*GetOnuFecHistory)(nil),                                 // 31: extension.GetOnuFecHistory
+	(*GetOnuFecHistoryResponse)(nil),                         // 32: extension.GetOnuFecHistoryResponse
+	(*GetOnuCountersRequest)(nil),                            // 33: extension.GetOnuCountersRequest
+	(*GetOmciEthernetFrameExtendedPmRequest)(nil),            // 34: extension.GetOmciEthernetFrameExtendedPmRequest
+	(*GetRxPowerRequest)(nil),                                // 35: extension.GetRxPowerRequest
+	(*GetOltRxPowerRequest)(nil),                             // 36: extension.GetOltRxPowerRequest
+	(*GetPonStatsRequest)(nil),                               // 37: extension.GetPonStatsRequest
+	(*GetPonStatsResponse)(nil),                              // 38: extension.GetPonStatsResponse
+	(*GetNNIStatsRequest)(nil),                               // 39: extension.GetNNIStatsRequest
+	(*GetNNIStatsResponse)(nil),                              // 40: extension.GetNNIStatsResponse
+	(*GetOnuStatsFromOltRequest)(nil),                        // 41: extension.GetOnuStatsFromOltRequest
+	(*OnuGemPortInfoFromOlt)(nil),                            // 42: extension.OnuGemPortInfoFromOlt
+	(*OnuAllocIdInfoFromOlt)(nil),                            // 43: extension.OnuAllocIdInfoFromOlt
+	(*OnuAllocGemStatsFromOltResponse)(nil),                  // 44: extension.OnuAllocGemStatsFromOltResponse
+	(*GetOnuStatsFromOltResponse)(nil),                       // 45: extension.GetOnuStatsFromOltResponse
+	(*GetOnuCountersResponse)(nil),                           // 46: extension.GetOnuCountersResponse
+	(*OmciEthernetFrameExtendedPm)(nil),                      // 47: extension.OmciEthernetFrameExtendedPm
+	(*GetOmciEthernetFrameExtendedPmResponse)(nil),           // 48: extension.GetOmciEthernetFrameExtendedPmResponse
+	(*RxPower)(nil),                                          // 49: extension.RxPower
+	(*GetOltRxPowerResponse)(nil),                            // 50: extension.GetOltRxPowerResponse
+	(*GetRxPowerResponse)(nil),                               // 51: extension.GetRxPowerResponse
+	(*GetOnuOmciTxRxStatsRequest)(nil),                       // 52: extension.GetOnuOmciTxRxStatsRequest
+	(*GetOnuOmciTxRxStatsResponse)(nil),                      // 53: extension.GetOnuOmciTxRxStatsResponse
+	(*GetOnuOmciActiveAlarmsRequest)(nil),                    // 54: extension.GetOnuOmciActiveAlarmsRequest
+	(*AlarmData)(nil),                                        // 55: extension.AlarmData
+	(*GetOnuOmciActiveAlarmsResponse)(nil),                   // 56: extension.GetOnuOmciActiveAlarmsResponse
+	(*GetOffloadedAppsStatisticsRequest)(nil),                // 57: extension.GetOffloadedAppsStatisticsRequest
+	(*GetOffloadedAppsStatisticsResponse)(nil),               // 58: extension.GetOffloadedAppsStatisticsResponse
+	(*GetValueRequest)(nil),                                  // 59: extension.GetValueRequest
+	(*GetValueResponse)(nil),                                 // 60: extension.GetValueResponse
+	(*AppOffloadConfig)(nil),                                 // 61: extension.AppOffloadConfig
+	(*AppOffloadOnuConfig)(nil),                              // 62: extension.AppOffloadOnuConfig
+	(*SetValueRequest)(nil),                                  // 63: extension.SetValueRequest
+	(*SetValueResponse)(nil),                                 // 64: extension.SetValueResponse
+	(*SingleGetValueRequest)(nil),                            // 65: extension.SingleGetValueRequest
+	(*SingleGetValueResponse)(nil),                           // 66: extension.SingleGetValueResponse
+	(*SingleSetValueRequest)(nil),                            // 67: extension.SingleSetValueRequest
+	(*SingleSetValueResponse)(nil),                           // 68: extension.SingleSetValueResponse
+	(*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats)(nil), // 69: extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats
+	(*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats)(nil), // 70: extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats
+	(*GetOffloadedAppsStatisticsResponse_PPPoeIAStats)(nil),  // 71: extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats
+	nil,                                      // 72: extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.AdditionalStatsEntry
+	nil,                                      // 73: extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.AdditionalStatsEntry
+	nil,                                      // 74: extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.AdditionalStatsEntry
+	(*AppOffloadOnuConfig_PerUniConfig)(nil), // 75: extension.AppOffloadOnuConfig.PerUniConfig
+	(*config.AlarmConfig)(nil),               // 76: config.AlarmConfig
+	(*emptypb.Empty)(nil),                    // 77: google.protobuf.Empty
+	(*common.PortStatistics)(nil),            // 78: common.PortStatistics
+}
+var file_voltha_protos_extensions_proto_depIdxs = []int32{
+	76, // 0: extension.ValueSet.alarm_config:type_name -> config.AlarmConfig
+	0,  // 1: extension.ValueSpecifier.value:type_name -> extension.ValueType.Type
+	2,  // 2: extension.GetOnuUniInfoResponse.admState:type_name -> extension.GetOnuUniInfoResponse.AdministrativeState
+	3,  // 3: extension.GetOnuUniInfoResponse.operState:type_name -> extension.GetOnuUniInfoResponse.OperationalState
+	1,  // 4: extension.GetOnuUniInfoResponse.configInd:type_name -> extension.GetOnuUniInfoResponse.ConfigurationInd
+	4,  // 5: extension.GetOltPortCounters.portType:type_name -> extension.GetOltPortCounters.PortType
+	77, // 6: extension.GetOnuPonOpticalInfo.empty:type_name -> google.protobuf.Empty
+	5,  // 7: extension.GetOnuEthernetBridgePortHistory.direction:type_name -> extension.GetOnuEthernetBridgePortHistory.Direction
+	77, // 8: extension.GetOnuAllocGemHistoryRequest.empty:type_name -> google.protobuf.Empty
+	28, // 9: extension.OnuAllocGemHistoryData.onuAllocIdInfo:type_name -> extension.OnuAllocHistoryData
+	27, // 10: extension.OnuAllocGemHistoryData.gemPortInfo:type_name -> extension.OnuGemPortHistoryData
+	29, // 11: extension.GetOnuAllocGemHistoryResponse.onuAllocGemHistoryData:type_name -> extension.OnuAllocGemHistoryData
+	77, // 12: extension.GetOnuFecHistory.empty:type_name -> google.protobuf.Empty
+	78, // 13: extension.GetPonStatsResponse.portStatistics:type_name -> common.PortStatistics
+	78, // 14: extension.GetNNIStatsResponse.portStatistics:type_name -> common.PortStatistics
+	43, // 15: extension.OnuAllocGemStatsFromOltResponse.allocIdInfo:type_name -> extension.OnuAllocIdInfoFromOlt
+	42, // 16: extension.OnuAllocGemStatsFromOltResponse.gemPortInfo:type_name -> extension.OnuGemPortInfoFromOlt
+	44, // 17: extension.GetOnuStatsFromOltResponse.allocGemStatsInfo:type_name -> extension.OnuAllocGemStatsFromOltResponse
+	47, // 18: extension.GetOmciEthernetFrameExtendedPmResponse.upstream:type_name -> extension.OmciEthernetFrameExtendedPm
+	47, // 19: extension.GetOmciEthernetFrameExtendedPmResponse.downstream:type_name -> extension.OmciEthernetFrameExtendedPm
+	6,  // 20: extension.GetOmciEthernetFrameExtendedPmResponse.omci_ethernet_frame_extended_pm_format:type_name -> extension.GetOmciEthernetFrameExtendedPmResponse.Format
+	49, // 21: extension.GetOltRxPowerResponse.rx_power:type_name -> extension.RxPower
+	77, // 22: extension.GetOnuOmciTxRxStatsRequest.empty:type_name -> google.protobuf.Empty
+	77, // 23: extension.GetOnuOmciActiveAlarmsRequest.empty:type_name -> google.protobuf.Empty
+	55, // 24: extension.GetOnuOmciActiveAlarmsResponse.active_alarms:type_name -> extension.AlarmData
+	7,  // 25: extension.GetOffloadedAppsStatisticsRequest.statsFor:type_name -> extension.GetOffloadedAppsStatisticsRequest.OffloadedApp
+	69, // 26: extension.GetOffloadedAppsStatisticsResponse.dhcpv4RaStats:type_name -> extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats
+	70, // 27: extension.GetOffloadedAppsStatisticsResponse.dhcpv6RaStats:type_name -> extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats
+	71, // 28: extension.GetOffloadedAppsStatisticsResponse.pppoeIaStats:type_name -> extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats
+	16, // 29: extension.GetValueRequest.distance:type_name -> extension.GetDistanceRequest
+	18, // 30: extension.GetValueRequest.uniInfo:type_name -> extension.GetOnuUniInfoRequest
+	20, // 31: extension.GetValueRequest.oltPortInfo:type_name -> extension.GetOltPortCounters
+	22, // 32: extension.GetValueRequest.onuOpticalInfo:type_name -> extension.GetOnuPonOpticalInfo
+	24, // 33: extension.GetValueRequest.ethBridgePort:type_name -> extension.GetOnuEthernetBridgePortHistory
+	31, // 34: extension.GetValueRequest.fecHistory:type_name -> extension.GetOnuFecHistory
+	33, // 35: extension.GetValueRequest.onuPonInfo:type_name -> extension.GetOnuCountersRequest
+	34, // 36: extension.GetValueRequest.onuInfo:type_name -> extension.GetOmciEthernetFrameExtendedPmRequest
+	35, // 37: extension.GetValueRequest.rxPower:type_name -> extension.GetRxPowerRequest
+	52, // 38: extension.GetValueRequest.onuOmciStats:type_name -> extension.GetOnuOmciTxRxStatsRequest
+	36, // 39: extension.GetValueRequest.oltRxPower:type_name -> extension.GetOltRxPowerRequest
+	54, // 40: extension.GetValueRequest.onuActiveAlarms:type_name -> extension.GetOnuOmciActiveAlarmsRequest
+	57, // 41: extension.GetValueRequest.offloadedAppsStats:type_name -> extension.GetOffloadedAppsStatisticsRequest
+	26, // 42: extension.GetValueRequest.onuAllocGemStats:type_name -> extension.GetOnuAllocGemHistoryRequest
+	41, // 43: extension.GetValueRequest.onuStatsFromOlt:type_name -> extension.GetOnuStatsFromOltRequest
+	37, // 44: extension.GetValueRequest.oltPonStats:type_name -> extension.GetPonStatsRequest
+	39, // 45: extension.GetValueRequest.oltNniStats:type_name -> extension.GetNNIStatsRequest
+	8,  // 46: extension.GetValueResponse.status:type_name -> extension.GetValueResponse.Status
+	9,  // 47: extension.GetValueResponse.errReason:type_name -> extension.GetValueResponse.ErrorReason
+	17, // 48: extension.GetValueResponse.distance:type_name -> extension.GetDistanceResponse
+	19, // 49: extension.GetValueResponse.uniInfo:type_name -> extension.GetOnuUniInfoResponse
+	21, // 50: extension.GetValueResponse.portCoutners:type_name -> extension.GetOltPortCountersResponse
+	23, // 51: extension.GetValueResponse.onuOpticalInfo:type_name -> extension.GetOnuPonOpticalInfoResponse
+	25, // 52: extension.GetValueResponse.ethBridgePortInfo:type_name -> extension.GetOnuEthernetBridgePortHistoryResponse
+	32, // 53: extension.GetValueResponse.fecHistory:type_name -> extension.GetOnuFecHistoryResponse
+	46, // 54: extension.GetValueResponse.onuPonCounters:type_name -> extension.GetOnuCountersResponse
+	48, // 55: extension.GetValueResponse.onuCounters:type_name -> extension.GetOmciEthernetFrameExtendedPmResponse
+	51, // 56: extension.GetValueResponse.rxPower:type_name -> extension.GetRxPowerResponse
+	53, // 57: extension.GetValueResponse.onuOmciStats:type_name -> extension.GetOnuOmciTxRxStatsResponse
+	50, // 58: extension.GetValueResponse.oltRxPower:type_name -> extension.GetOltRxPowerResponse
+	56, // 59: extension.GetValueResponse.onuActiveAlarms:type_name -> extension.GetOnuOmciActiveAlarmsResponse
+	58, // 60: extension.GetValueResponse.offloadedAppsStats:type_name -> extension.GetOffloadedAppsStatisticsResponse
+	30, // 61: extension.GetValueResponse.onuAllocGemStatsResponse:type_name -> extension.GetOnuAllocGemHistoryResponse
+	45, // 62: extension.GetValueResponse.onuStatsFromOltResponse:type_name -> extension.GetOnuStatsFromOltResponse
+	38, // 63: extension.GetValueResponse.oltPonStatsResponse:type_name -> extension.GetPonStatsResponse
+	40, // 64: extension.GetValueResponse.oltNniStatsResponse:type_name -> extension.GetNNIStatsResponse
+	75, // 65: extension.AppOffloadOnuConfig.perUniInfo:type_name -> extension.AppOffloadOnuConfig.PerUniConfig
+	76, // 66: extension.SetValueRequest.alarm_config:type_name -> config.AlarmConfig
+	61, // 67: extension.SetValueRequest.app_offload_config:type_name -> extension.AppOffloadConfig
+	62, // 68: extension.SetValueRequest.app_offload_onu_config:type_name -> extension.AppOffloadOnuConfig
+	10, // 69: extension.SetValueResponse.status:type_name -> extension.SetValueResponse.Status
+	11, // 70: extension.SetValueResponse.errReason:type_name -> extension.SetValueResponse.ErrorReason
+	59, // 71: extension.SingleGetValueRequest.request:type_name -> extension.GetValueRequest
+	60, // 72: extension.SingleGetValueResponse.response:type_name -> extension.GetValueResponse
+	63, // 73: extension.SingleSetValueRequest.request:type_name -> extension.SetValueRequest
+	64, // 74: extension.SingleSetValueResponse.response:type_name -> extension.SetValueResponse
+	72, // 75: extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.additional_stats:type_name -> extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.AdditionalStatsEntry
+	73, // 76: extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.additional_stats:type_name -> extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.AdditionalStatsEntry
+	74, // 77: extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.additional_stats:type_name -> extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.AdditionalStatsEntry
+	65, // 78: extension.Extension.GetExtValue:input_type -> extension.SingleGetValueRequest
+	67, // 79: extension.Extension.SetExtValue:input_type -> extension.SingleSetValueRequest
+	66, // 80: extension.Extension.GetExtValue:output_type -> extension.SingleGetValueResponse
+	68, // 81: extension.Extension.SetExtValue:output_type -> extension.SingleSetValueResponse
+	80, // [80:82] is the sub-list for method output_type
+	78, // [78:80] is the sub-list for method input_type
+	78, // [78:78] is the sub-list for extension type_name
+	78, // [78:78] is the sub-list for extension extendee
+	0,  // [0:78] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_extensions_proto_init() }
+func file_voltha_protos_extensions_proto_init() {
+	if File_voltha_protos_extensions_proto != nil {
+		return
+	}
+	file_voltha_protos_extensions_proto_msgTypes[0].OneofWrappers = []any{
+		(*ValueSet_AlarmConfig)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[22].OneofWrappers = []any{
+		(*GetOmciEthernetFrameExtendedPmRequest_UniIndex)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[25].OneofWrappers = []any{
+		(*GetPonStatsRequest_PortLabel)(nil),
+		(*GetPonStatsRequest_PortId)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[27].OneofWrappers = []any{
+		(*GetNNIStatsRequest_PortLabel)(nil),
+		(*GetNNIStatsRequest_PortId)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[34].OneofWrappers = []any{
+		(*GetOnuCountersResponse_IntfId)(nil),
+		(*GetOnuCountersResponse_OnuId)(nil),
+		(*GetOnuCountersResponse_PositiveDrift)(nil),
+		(*GetOnuCountersResponse_NegativeDrift)(nil),
+		(*GetOnuCountersResponse_DelimiterMissDetection)(nil),
+		(*GetOnuCountersResponse_BipErrors)(nil),
+		(*GetOnuCountersResponse_BipUnits)(nil),
+		(*GetOnuCountersResponse_FecCorrectedSymbols)(nil),
+		(*GetOnuCountersResponse_FecCodewordsCorrected)(nil),
+		(*GetOnuCountersResponse_FecCodewordsUncorrectable)(nil),
+		(*GetOnuCountersResponse_FecCodewords)(nil),
+		(*GetOnuCountersResponse_FecCorrectedUnits)(nil),
+		(*GetOnuCountersResponse_XgemKeyErrors)(nil),
+		(*GetOnuCountersResponse_XgemLoss)(nil),
+		(*GetOnuCountersResponse_RxPloamsError)(nil),
+		(*GetOnuCountersResponse_RxPloamsNonIdle)(nil),
+		(*GetOnuCountersResponse_RxOmci)(nil),
+		(*GetOnuCountersResponse_TxOmci)(nil),
+		(*GetOnuCountersResponse_RxOmciPacketsCrcError)(nil),
+		(*GetOnuCountersResponse_RxBytes)(nil),
+		(*GetOnuCountersResponse_RxPackets)(nil),
+		(*GetOnuCountersResponse_TxBytes)(nil),
+		(*GetOnuCountersResponse_TxPackets)(nil),
+		(*GetOnuCountersResponse_BerReported)(nil),
+		(*GetOnuCountersResponse_LcdgErrors)(nil),
+		(*GetOnuCountersResponse_RdiErrors)(nil),
+		(*GetOnuCountersResponse_Timestamp)(nil),
+		(*GetOnuCountersResponse_HecErrors)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[46].OneofWrappers = []any{
+		(*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats)(nil),
+		(*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats)(nil),
+		(*GetOffloadedAppsStatisticsResponse_PppoeIaStats)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[47].OneofWrappers = []any{
+		(*GetValueRequest_Distance)(nil),
+		(*GetValueRequest_UniInfo)(nil),
+		(*GetValueRequest_OltPortInfo)(nil),
+		(*GetValueRequest_OnuOpticalInfo)(nil),
+		(*GetValueRequest_EthBridgePort)(nil),
+		(*GetValueRequest_FecHistory)(nil),
+		(*GetValueRequest_OnuPonInfo)(nil),
+		(*GetValueRequest_OnuInfo)(nil),
+		(*GetValueRequest_RxPower)(nil),
+		(*GetValueRequest_OnuOmciStats)(nil),
+		(*GetValueRequest_OltRxPower)(nil),
+		(*GetValueRequest_OnuActiveAlarms)(nil),
+		(*GetValueRequest_OffloadedAppsStats)(nil),
+		(*GetValueRequest_OnuAllocGemStats)(nil),
+		(*GetValueRequest_OnuStatsFromOlt)(nil),
+		(*GetValueRequest_OltPonStats)(nil),
+		(*GetValueRequest_OltNniStats)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[48].OneofWrappers = []any{
+		(*GetValueResponse_Distance)(nil),
+		(*GetValueResponse_UniInfo)(nil),
+		(*GetValueResponse_PortCoutners)(nil),
+		(*GetValueResponse_OnuOpticalInfo)(nil),
+		(*GetValueResponse_EthBridgePortInfo)(nil),
+		(*GetValueResponse_FecHistory)(nil),
+		(*GetValueResponse_OnuPonCounters)(nil),
+		(*GetValueResponse_OnuCounters)(nil),
+		(*GetValueResponse_RxPower)(nil),
+		(*GetValueResponse_OnuOmciStats)(nil),
+		(*GetValueResponse_OltRxPower)(nil),
+		(*GetValueResponse_OnuActiveAlarms)(nil),
+		(*GetValueResponse_OffloadedAppsStats)(nil),
+		(*GetValueResponse_OnuAllocGemStatsResponse)(nil),
+		(*GetValueResponse_OnuStatsFromOltResponse)(nil),
+		(*GetValueResponse_OltPonStatsResponse)(nil),
+		(*GetValueResponse_OltNniStatsResponse)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[51].OneofWrappers = []any{
+		(*SetValueRequest_AlarmConfig)(nil),
+		(*SetValueRequest_AppOffloadConfig)(nil),
+		(*SetValueRequest_AppOffloadOnuConfig)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_extensions_proto_rawDesc), len(file_voltha_protos_extensions_proto_rawDesc)),
+			NumEnums:      12,
+			NumMessages:   64,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-		{
-			MethodName: "SetExtValue",
-			Handler:    _Extension_SetExtValue_Handler,
-		},
-	},
-	Streams:  []grpc.StreamDesc{},
-	Metadata: "voltha_protos/extensions.proto",
+		GoTypes:           file_voltha_protos_extensions_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_extensions_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_extensions_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_extensions_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_extensions_proto = out.File
+	file_voltha_protos_extensions_proto_goTypes = nil
+	file_voltha_protos_extensions_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions_grpc.pb.go
new file mode 100644
index 0000000..94626cc
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions_grpc.pb.go
@@ -0,0 +1,181 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at:
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/extensions.proto
+
+package extension
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	Extension_GetExtValue_FullMethodName = "/extension.Extension/GetExtValue"
+	Extension_SetExtValue_FullMethodName = "/extension.Extension/SetExtValue"
+)
+
+// ExtensionClient is the client API for Extension service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// Extension is a service to get and set specific attributes
+type ExtensionClient interface {
+	// Get a single attribute
+	GetExtValue(ctx context.Context, in *SingleGetValueRequest, opts ...grpc.CallOption) (*SingleGetValueResponse, error)
+	// Set a single attribute
+	SetExtValue(ctx context.Context, in *SingleSetValueRequest, opts ...grpc.CallOption) (*SingleSetValueResponse, error)
+}
+
+type extensionClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewExtensionClient(cc grpc.ClientConnInterface) ExtensionClient {
+	return &extensionClient{cc}
+}
+
+func (c *extensionClient) GetExtValue(ctx context.Context, in *SingleGetValueRequest, opts ...grpc.CallOption) (*SingleGetValueResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(SingleGetValueResponse)
+	err := c.cc.Invoke(ctx, Extension_GetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *extensionClient) SetExtValue(ctx context.Context, in *SingleSetValueRequest, opts ...grpc.CallOption) (*SingleSetValueResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(SingleSetValueResponse)
+	err := c.cc.Invoke(ctx, Extension_SetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// ExtensionServer is the server API for Extension service.
+// All implementations must embed UnimplementedExtensionServer
+// for forward compatibility.
+//
+// Extension is a service to get and set specific attributes
+type ExtensionServer interface {
+	// Get a single attribute
+	GetExtValue(context.Context, *SingleGetValueRequest) (*SingleGetValueResponse, error)
+	// Set a single attribute
+	SetExtValue(context.Context, *SingleSetValueRequest) (*SingleSetValueResponse, error)
+	mustEmbedUnimplementedExtensionServer()
+}
+
+// UnimplementedExtensionServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedExtensionServer struct{}
+
+func (UnimplementedExtensionServer) GetExtValue(context.Context, *SingleGetValueRequest) (*SingleGetValueResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetExtValue not implemented")
+}
+func (UnimplementedExtensionServer) SetExtValue(context.Context, *SingleSetValueRequest) (*SingleSetValueResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method SetExtValue not implemented")
+}
+func (UnimplementedExtensionServer) mustEmbedUnimplementedExtensionServer() {}
+func (UnimplementedExtensionServer) testEmbeddedByValue()                   {}
+
+// UnsafeExtensionServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to ExtensionServer will
+// result in compilation errors.
+type UnsafeExtensionServer interface {
+	mustEmbedUnimplementedExtensionServer()
+}
+
+func RegisterExtensionServer(s grpc.ServiceRegistrar, srv ExtensionServer) {
+	// If the following call panics, it indicates UnimplementedExtensionServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&Extension_ServiceDesc, srv)
+}
+
+func _Extension_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SingleGetValueRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ExtensionServer).GetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Extension_GetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ExtensionServer).GetExtValue(ctx, req.(*SingleGetValueRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Extension_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SingleSetValueRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ExtensionServer).SetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Extension_SetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ExtensionServer).SetExtValue(ctx, req.(*SingleSetValueRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// Extension_ServiceDesc is the grpc.ServiceDesc for Extension service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Extension_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "extension.Extension",
+	HandlerType: (*ExtensionServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetExtValue",
+			Handler:    _Extension_GetExtValue_Handler,
+		},
+		{
+			MethodName: "SetExtValue",
+			Handler:    _Extension_SetExtValue_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "voltha_protos/extensions.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/health/health.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/health/health.pb.go
index 8b26126..c9c77f3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/health/health.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/health/health.pb.go
@@ -1,208 +1,191 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/health.proto
 
 package health
 
 import (
-	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"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 // Health states
 type HealthStatus_HealthState int32
 
 const (
-	HealthStatus_HEALTHY    HealthStatus_HealthState = 0
-	HealthStatus_OVERLOADED HealthStatus_HealthState = 1
-	HealthStatus_DYING      HealthStatus_HealthState = 2
+	HealthStatus_HEALTHY    HealthStatus_HealthState = 0 // The instance is healthy
+	HealthStatus_OVERLOADED HealthStatus_HealthState = 1 // The instance is overloaded, decrease query rate
+	HealthStatus_DYING      HealthStatus_HealthState = 2 // The instance is in a critical condition, do not use it
 )
 
-var HealthStatus_HealthState_name = map[int32]string{
-	0: "HEALTHY",
-	1: "OVERLOADED",
-	2: "DYING",
-}
+// Enum value maps for HealthStatus_HealthState.
+var (
+	HealthStatus_HealthState_name = map[int32]string{
+		0: "HEALTHY",
+		1: "OVERLOADED",
+		2: "DYING",
+	}
+	HealthStatus_HealthState_value = map[string]int32{
+		"HEALTHY":    0,
+		"OVERLOADED": 1,
+		"DYING":      2,
+	}
+)
 
-var HealthStatus_HealthState_value = map[string]int32{
-	"HEALTHY":    0,
-	"OVERLOADED": 1,
-	"DYING":      2,
+func (x HealthStatus_HealthState) Enum() *HealthStatus_HealthState {
+	p := new(HealthStatus_HealthState)
+	*p = x
+	return p
 }
 
 func (x HealthStatus_HealthState) String() string {
-	return proto.EnumName(HealthStatus_HealthState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (HealthStatus_HealthState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_health_proto_enumTypes[0].Descriptor()
+}
+
+func (HealthStatus_HealthState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_health_proto_enumTypes[0]
+}
+
+func (x HealthStatus_HealthState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use HealthStatus_HealthState.Descriptor instead.
 func (HealthStatus_HealthState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_dd1fc2b2d96d69b8, []int{0, 0}
+	return file_voltha_protos_health_proto_rawDescGZIP(), []int{0, 0}
 }
 
 // Encode health status of a Voltha instance
 type HealthStatus struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Current state of health of this Voltha instance
-	State                HealthStatus_HealthState `protobuf:"varint,1,opt,name=state,proto3,enum=health.HealthStatus_HealthState" json:"state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	State         HealthStatus_HealthState `protobuf:"varint,1,opt,name=state,proto3,enum=health.HealthStatus_HealthState" json:"state,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *HealthStatus) Reset()         { *m = HealthStatus{} }
-func (m *HealthStatus) String() string { return proto.CompactTextString(m) }
-func (*HealthStatus) ProtoMessage()    {}
+func (x *HealthStatus) Reset() {
+	*x = HealthStatus{}
+	mi := &file_voltha_protos_health_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *HealthStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HealthStatus) ProtoMessage() {}
+
+func (x *HealthStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_health_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HealthStatus.ProtoReflect.Descriptor instead.
 func (*HealthStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_dd1fc2b2d96d69b8, []int{0}
+	return file_voltha_protos_health_proto_rawDescGZIP(), []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 (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)
-}
-func (m *HealthStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_HealthStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HealthStatus proto.InternalMessageInfo
-
-func (m *HealthStatus) GetState() HealthStatus_HealthState {
-	if m != nil {
-		return m.State
+func (x *HealthStatus) GetState() HealthStatus_HealthState {
+	if x != nil {
+		return x.State
 	}
 	return HealthStatus_HEALTHY
 }
 
-func init() {
-	proto.RegisterEnum("health.HealthStatus_HealthState", HealthStatus_HealthState_name, HealthStatus_HealthState_value)
-	proto.RegisterType((*HealthStatus)(nil), "health.HealthStatus")
+var File_voltha_protos_health_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_health_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/health.proto\x12\x06health\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\"}\n" +
+	"\fHealthStatus\x126\n" +
+	"\x05state\x18\x01 \x01(\x0e2 .health.HealthStatus.HealthStateR\x05state\"5\n" +
+	"\vHealthState\x12\v\n" +
+	"\aHEALTHY\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OVERLOADED\x10\x01\x12\t\n" +
+	"\x05DYING\x10\x022a\n" +
+	"\rHealthService\x12P\n" +
+	"\x0fGetHealthStatus\x12\x16.google.protobuf.Empty\x1a\x14.health.HealthStatus\"\x0f\x82\xd3\xe4\x93\x02\t\x12\a/healthBL\n" +
+	"\x1aorg.opencord.voltha.healthZ.github.com/opencord/voltha-protos/v5/go/healthb\x06proto3"
+
+var (
+	file_voltha_protos_health_proto_rawDescOnce sync.Once
+	file_voltha_protos_health_proto_rawDescData []byte
+)
+
+func file_voltha_protos_health_proto_rawDescGZIP() []byte {
+	file_voltha_protos_health_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_health_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_health_proto_rawDesc), len(file_voltha_protos_health_proto_rawDesc)))
+	})
+	return file_voltha_protos_health_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/health.proto", fileDescriptor_dd1fc2b2d96d69b8) }
-
-var fileDescriptor_dd1fc2b2d96d69b8 = []byte{
-	// 287 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, 0x3c, 0x29, 0x99, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, 0x54, 0xfd,
-	0xc4, 0x82, 0x4c, 0xfd, 0xc4, 0xbc, 0xbc, 0xfc, 0x92, 0xc4, 0x92, 0xcc, 0xfc, 0xbc, 0x62, 0x88,
-	0x2a, 0x29, 0x69, 0xa8, 0x2c, 0x98, 0x97, 0x54, 0x9a, 0xa6, 0x9f, 0x9a, 0x5b, 0x50, 0x52, 0x09,
-	0x91, 0x54, 0xaa, 0xe5, 0xe2, 0xf1, 0x00, 0x1b, 0x12, 0x5c, 0x92, 0x58, 0x52, 0x5a, 0x2c, 0x64,
-	0xc6, 0xc5, 0x5a, 0x5c, 0x92, 0x58, 0x92, 0x2a, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x67, 0xa4, 0xa0,
-	0x07, 0xb5, 0x10, 0x59, 0x11, 0x12, 0x27, 0x35, 0x08, 0xa2, 0x5c, 0xc9, 0x94, 0x8b, 0x1b, 0x49,
-	0x54, 0x88, 0x9b, 0x8b, 0xdd, 0xc3, 0xd5, 0xd1, 0x27, 0xc4, 0x23, 0x52, 0x80, 0x41, 0x88, 0x8f,
-	0x8b, 0xcb, 0x3f, 0xcc, 0x35, 0xc8, 0xc7, 0xdf, 0xd1, 0xc5, 0xd5, 0x45, 0x80, 0x51, 0x88, 0x93,
-	0x8b, 0xd5, 0x25, 0xd2, 0xd3, 0xcf, 0x5d, 0x80, 0xc9, 0x28, 0x91, 0x8b, 0x17, 0xaa, 0x2d, 0xb5,
-	0xa8, 0x2c, 0x33, 0x39, 0x55, 0x28, 0x80, 0x8b, 0xdf, 0x3d, 0xb5, 0x04, 0xc5, 0x49, 0x62, 0x7a,
-	0x10, 0x0f, 0xe8, 0xc1, 0x3c, 0xa0, 0xe7, 0x0a, 0xf2, 0x80, 0x94, 0x08, 0x36, 0xb7, 0x29, 0xf1,
-	0x37, 0x5d, 0x7e, 0x32, 0x99, 0x89, 0x53, 0x88, 0x1d, 0x1a, 0x54, 0x4e, 0x3e, 0x5c, 0x52, 0xf9,
-	0x45, 0xe9, 0x7a, 0xf9, 0x05, 0xa9, 0x79, 0xc9, 0xf9, 0x45, 0x29, 0x7a, 0x90, 0xf0, 0x84, 0xea,
-	0x8d, 0xd2, 0x4b, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0x29, 0xd1,
-	0x87, 0x28, 0xd1, 0x85, 0x06, 0x79, 0x99, 0xa9, 0x7e, 0x7a, 0x3e, 0xd4, 0xb4, 0x24, 0x36, 0xb0,
-	0xa0, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x83, 0x1f, 0x28, 0x85, 0x97, 0x01, 0x00, 0x00,
+var file_voltha_protos_health_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_voltha_protos_health_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_voltha_protos_health_proto_goTypes = []any{
+	(HealthStatus_HealthState)(0), // 0: health.HealthStatus.HealthState
+	(*HealthStatus)(nil),          // 1: health.HealthStatus
+	(*emptypb.Empty)(nil),         // 2: google.protobuf.Empty
+}
+var file_voltha_protos_health_proto_depIdxs = []int32{
+	0, // 0: health.HealthStatus.state:type_name -> health.HealthStatus.HealthState
+	2, // 1: health.HealthService.GetHealthStatus:input_type -> google.protobuf.Empty
+	1, // 2: health.HealthService.GetHealthStatus:output_type -> health.HealthStatus
+	2, // [2:3] is the sub-list for method output_type
+	1, // [1:2] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
 }
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// HealthServiceClient is the client API for HealthService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type HealthServiceClient interface {
-	// Return current health status of a Voltha instance
-	GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*HealthStatus, error)
-}
-
-type healthServiceClient struct {
-	cc *grpc.ClientConn
-}
-
-func NewHealthServiceClient(cc *grpc.ClientConn) HealthServiceClient {
-	return &healthServiceClient{cc}
-}
-
-func (c *healthServiceClient) GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*HealthStatus, error) {
-	out := new(HealthStatus)
-	err := c.cc.Invoke(ctx, "/health.HealthService/GetHealthStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
+func init() { file_voltha_protos_health_proto_init() }
+func file_voltha_protos_health_proto_init() {
+	if File_voltha_protos_health_proto != nil {
+		return
 	}
-	return out, nil
-}
-
-// HealthServiceServer is the server API for HealthService service.
-type HealthServiceServer interface {
-	// Return current health status of a Voltha instance
-	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)
-}
-
-func _HealthService_GetHealthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(HealthServiceServer).GetHealthStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/health.HealthService/GetHealthStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(HealthServiceServer).GetHealthStatus(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _HealthService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "health.HealthService",
-	HandlerType: (*HealthServiceServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "GetHealthStatus",
-			Handler:    _HealthService_GetHealthStatus_Handler,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_health_proto_rawDesc), len(file_voltha_protos_health_proto_rawDesc)),
+			NumEnums:      1,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-	},
-	Streams:  []grpc.StreamDesc{},
-	Metadata: "voltha_protos/health.proto",
+		GoTypes:           file_voltha_protos_health_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_health_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_health_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_health_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_health_proto = out.File
+	file_voltha_protos_health_proto_goTypes = nil
+	file_voltha_protos_health_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/health/health_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/health/health_grpc.pb.go
new file mode 100644
index 0000000..d4b6f89
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/health/health_grpc.pb.go
@@ -0,0 +1,128 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/health.proto
+
+package health
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	HealthService_GetHealthStatus_FullMethodName = "/health.HealthService/GetHealthStatus"
+)
+
+// HealthServiceClient is the client API for HealthService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// Health related services
+type HealthServiceClient interface {
+	// Return current health status of a Voltha instance
+	GetHealthStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*HealthStatus, error)
+}
+
+type healthServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewHealthServiceClient(cc grpc.ClientConnInterface) HealthServiceClient {
+	return &healthServiceClient{cc}
+}
+
+func (c *healthServiceClient) GetHealthStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*HealthStatus, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(HealthStatus)
+	err := c.cc.Invoke(ctx, HealthService_GetHealthStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// HealthServiceServer is the server API for HealthService service.
+// All implementations must embed UnimplementedHealthServiceServer
+// for forward compatibility.
+//
+// Health related services
+type HealthServiceServer interface {
+	// Return current health status of a Voltha instance
+	GetHealthStatus(context.Context, *emptypb.Empty) (*HealthStatus, error)
+	mustEmbedUnimplementedHealthServiceServer()
+}
+
+// UnimplementedHealthServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedHealthServiceServer struct{}
+
+func (UnimplementedHealthServiceServer) GetHealthStatus(context.Context, *emptypb.Empty) (*HealthStatus, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetHealthStatus not implemented")
+}
+func (UnimplementedHealthServiceServer) mustEmbedUnimplementedHealthServiceServer() {}
+func (UnimplementedHealthServiceServer) testEmbeddedByValue()                       {}
+
+// UnsafeHealthServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to HealthServiceServer will
+// result in compilation errors.
+type UnsafeHealthServiceServer interface {
+	mustEmbedUnimplementedHealthServiceServer()
+}
+
+func RegisterHealthServiceServer(s grpc.ServiceRegistrar, srv HealthServiceServer) {
+	// If the following call panics, it indicates UnimplementedHealthServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&HealthService_ServiceDesc, srv)
+}
+
+func _HealthService_GetHealthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(HealthServiceServer).GetHealthStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: HealthService_GetHealthStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(HealthServiceServer).GetHealthStatus(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// HealthService_ServiceDesc is the grpc.ServiceDesc for HealthService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var HealthService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "health.HealthService",
+	HandlerType: (*HealthServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetHealthStatus",
+			Handler:    _HealthService_GetHealthStatus_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "voltha_protos/health.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_alarm_db.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_alarm_db.pb.go
index b585bbb..ad59db3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_alarm_db.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_alarm_db.pb.go
@@ -1,512 +1,642 @@
+//
+// Copyright 2018 - present the original author or authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/omci_alarm_db.proto
 
 package omci
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type AlarmOpenOmciEventType_OpenOmciEventType int32
 
 const (
-	AlarmOpenOmciEventType_state_change AlarmOpenOmciEventType_OpenOmciEventType = 0
+	AlarmOpenOmciEventType_state_change AlarmOpenOmciEventType_OpenOmciEventType = 0 // A state machine has transitioned to a new state
 )
 
-var AlarmOpenOmciEventType_OpenOmciEventType_name = map[int32]string{
-	0: "state_change",
-}
+// Enum value maps for AlarmOpenOmciEventType_OpenOmciEventType.
+var (
+	AlarmOpenOmciEventType_OpenOmciEventType_name = map[int32]string{
+		0: "state_change",
+	}
+	AlarmOpenOmciEventType_OpenOmciEventType_value = map[string]int32{
+		"state_change": 0,
+	}
+)
 
-var AlarmOpenOmciEventType_OpenOmciEventType_value = map[string]int32{
-	"state_change": 0,
+func (x AlarmOpenOmciEventType_OpenOmciEventType) Enum() *AlarmOpenOmciEventType_OpenOmciEventType {
+	p := new(AlarmOpenOmciEventType_OpenOmciEventType)
+	*p = x
+	return p
 }
 
 func (x AlarmOpenOmciEventType_OpenOmciEventType) String() string {
-	return proto.EnumName(AlarmOpenOmciEventType_OpenOmciEventType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (AlarmOpenOmciEventType_OpenOmciEventType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_omci_alarm_db_proto_enumTypes[0].Descriptor()
+}
+
+func (AlarmOpenOmciEventType_OpenOmciEventType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_omci_alarm_db_proto_enumTypes[0]
+}
+
+func (x AlarmOpenOmciEventType_OpenOmciEventType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AlarmOpenOmciEventType_OpenOmciEventType.Descriptor instead.
 func (AlarmOpenOmciEventType_OpenOmciEventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{6, 0}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type AlarmAttributeData struct {
-	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Value                string   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Value         string                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmAttributeData) Reset()         { *m = AlarmAttributeData{} }
-func (m *AlarmAttributeData) String() string { return proto.CompactTextString(m) }
-func (*AlarmAttributeData) ProtoMessage()    {}
+func (x *AlarmAttributeData) Reset() {
+	*x = AlarmAttributeData{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmAttributeData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmAttributeData) ProtoMessage() {}
+
+func (x *AlarmAttributeData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmAttributeData.ProtoReflect.Descriptor instead.
 func (*AlarmAttributeData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{0}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *AlarmAttributeData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmAttributeData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmAttributeData proto.InternalMessageInfo
-
-func (m *AlarmAttributeData) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *AlarmAttributeData) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *AlarmAttributeData) GetValue() string {
-	if m != nil {
-		return m.Value
+func (x *AlarmAttributeData) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
 type AlarmInstanceData struct {
-	InstanceId           uint32                `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
-	Created              string                `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
-	Modified             string                `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
-	Attributes           []*AlarmAttributeData `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	InstanceId    uint32                 `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Created       string                 `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+	Modified      string                 `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
+	Attributes    []*AlarmAttributeData  `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmInstanceData) Reset()         { *m = AlarmInstanceData{} }
-func (m *AlarmInstanceData) String() string { return proto.CompactTextString(m) }
-func (*AlarmInstanceData) ProtoMessage()    {}
+func (x *AlarmInstanceData) Reset() {
+	*x = AlarmInstanceData{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmInstanceData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmInstanceData) ProtoMessage() {}
+
+func (x *AlarmInstanceData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmInstanceData.ProtoReflect.Descriptor instead.
 func (*AlarmInstanceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{1}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *AlarmInstanceData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmInstanceData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmInstanceData proto.InternalMessageInfo
-
-func (m *AlarmInstanceData) GetInstanceId() uint32 {
-	if m != nil {
-		return m.InstanceId
+func (x *AlarmInstanceData) GetInstanceId() uint32 {
+	if x != nil {
+		return x.InstanceId
 	}
 	return 0
 }
 
-func (m *AlarmInstanceData) GetCreated() string {
-	if m != nil {
-		return m.Created
+func (x *AlarmInstanceData) GetCreated() string {
+	if x != nil {
+		return x.Created
 	}
 	return ""
 }
 
-func (m *AlarmInstanceData) GetModified() string {
-	if m != nil {
-		return m.Modified
+func (x *AlarmInstanceData) GetModified() string {
+	if x != nil {
+		return x.Modified
 	}
 	return ""
 }
 
-func (m *AlarmInstanceData) GetAttributes() []*AlarmAttributeData {
-	if m != nil {
-		return m.Attributes
+func (x *AlarmInstanceData) GetAttributes() []*AlarmAttributeData {
+	if x != nil {
+		return x.Attributes
 	}
 	return nil
 }
 
 type AlarmClassData struct {
-	ClassId              uint32               `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	Instances            []*AlarmInstanceData `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	Instances     []*AlarmInstanceData   `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmClassData) Reset()         { *m = AlarmClassData{} }
-func (m *AlarmClassData) String() string { return proto.CompactTextString(m) }
-func (*AlarmClassData) ProtoMessage()    {}
+func (x *AlarmClassData) Reset() {
+	*x = AlarmClassData{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmClassData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmClassData) ProtoMessage() {}
+
+func (x *AlarmClassData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmClassData.ProtoReflect.Descriptor instead.
 func (*AlarmClassData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{2}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *AlarmClassData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmClassData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmClassData proto.InternalMessageInfo
-
-func (m *AlarmClassData) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *AlarmClassData) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *AlarmClassData) GetInstances() []*AlarmInstanceData {
-	if m != nil {
-		return m.Instances
+func (x *AlarmClassData) GetInstances() []*AlarmInstanceData {
+	if x != nil {
+		return x.Instances
 	}
 	return nil
 }
 
 type AlarmManagedEntity struct {
-	ClassId              uint32   `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmManagedEntity) Reset()         { *m = AlarmManagedEntity{} }
-func (m *AlarmManagedEntity) String() string { return proto.CompactTextString(m) }
-func (*AlarmManagedEntity) ProtoMessage()    {}
+func (x *AlarmManagedEntity) Reset() {
+	*x = AlarmManagedEntity{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmManagedEntity) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmManagedEntity) ProtoMessage() {}
+
+func (x *AlarmManagedEntity) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmManagedEntity.ProtoReflect.Descriptor instead.
 func (*AlarmManagedEntity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{3}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *AlarmManagedEntity) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmManagedEntity.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmManagedEntity proto.InternalMessageInfo
-
-func (m *AlarmManagedEntity) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *AlarmManagedEntity) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *AlarmManagedEntity) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *AlarmManagedEntity) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 type AlarmMessageType struct {
-	MessageType          uint32   `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MessageType   uint32                 `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmMessageType) Reset()         { *m = AlarmMessageType{} }
-func (m *AlarmMessageType) String() string { return proto.CompactTextString(m) }
-func (*AlarmMessageType) ProtoMessage()    {}
+func (x *AlarmMessageType) Reset() {
+	*x = AlarmMessageType{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmMessageType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmMessageType) ProtoMessage() {}
+
+func (x *AlarmMessageType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmMessageType.ProtoReflect.Descriptor instead.
 func (*AlarmMessageType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{4}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *AlarmMessageType) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmMessageType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmMessageType proto.InternalMessageInfo
-
-func (m *AlarmMessageType) GetMessageType() uint32 {
-	if m != nil {
-		return m.MessageType
+func (x *AlarmMessageType) GetMessageType() uint32 {
+	if x != nil {
+		return x.MessageType
 	}
 	return 0
 }
 
 type AlarmDeviceData struct {
-	DeviceId             string                `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Created              string                `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
-	LastAlarmSequence    uint32                `protobuf:"varint,3,opt,name=last_alarm_sequence,json=lastAlarmSequence,proto3" json:"last_alarm_sequence,omitempty"`
-	LastSyncTime         string                `protobuf:"bytes,4,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
-	Version              uint32                `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
-	Classes              []*AlarmClassData     `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
-	ManagedEntities      []*AlarmManagedEntity `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
-	MessageTypes         []*AlarmMessageType   `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId          string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	Created           string                 `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+	LastAlarmSequence uint32                 `protobuf:"varint,3,opt,name=last_alarm_sequence,json=lastAlarmSequence,proto3" json:"last_alarm_sequence,omitempty"`
+	LastSyncTime      string                 `protobuf:"bytes,4,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
+	Version           uint32                 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
+	Classes           []*AlarmClassData      `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
+	ManagedEntities   []*AlarmManagedEntity  `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
+	MessageTypes      []*AlarmMessageType    `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *AlarmDeviceData) Reset()         { *m = AlarmDeviceData{} }
-func (m *AlarmDeviceData) String() string { return proto.CompactTextString(m) }
-func (*AlarmDeviceData) ProtoMessage()    {}
+func (x *AlarmDeviceData) Reset() {
+	*x = AlarmDeviceData{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmDeviceData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmDeviceData) ProtoMessage() {}
+
+func (x *AlarmDeviceData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmDeviceData.ProtoReflect.Descriptor instead.
 func (*AlarmDeviceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{5}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *AlarmDeviceData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmDeviceData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmDeviceData proto.InternalMessageInfo
-
-func (m *AlarmDeviceData) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *AlarmDeviceData) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *AlarmDeviceData) GetCreated() string {
-	if m != nil {
-		return m.Created
+func (x *AlarmDeviceData) GetCreated() string {
+	if x != nil {
+		return x.Created
 	}
 	return ""
 }
 
-func (m *AlarmDeviceData) GetLastAlarmSequence() uint32 {
-	if m != nil {
-		return m.LastAlarmSequence
+func (x *AlarmDeviceData) GetLastAlarmSequence() uint32 {
+	if x != nil {
+		return x.LastAlarmSequence
 	}
 	return 0
 }
 
-func (m *AlarmDeviceData) GetLastSyncTime() string {
-	if m != nil {
-		return m.LastSyncTime
+func (x *AlarmDeviceData) GetLastSyncTime() string {
+	if x != nil {
+		return x.LastSyncTime
 	}
 	return ""
 }
 
-func (m *AlarmDeviceData) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *AlarmDeviceData) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *AlarmDeviceData) GetClasses() []*AlarmClassData {
-	if m != nil {
-		return m.Classes
+func (x *AlarmDeviceData) GetClasses() []*AlarmClassData {
+	if x != nil {
+		return x.Classes
 	}
 	return nil
 }
 
-func (m *AlarmDeviceData) GetManagedEntities() []*AlarmManagedEntity {
-	if m != nil {
-		return m.ManagedEntities
+func (x *AlarmDeviceData) GetManagedEntities() []*AlarmManagedEntity {
+	if x != nil {
+		return x.ManagedEntities
 	}
 	return nil
 }
 
-func (m *AlarmDeviceData) GetMessageTypes() []*AlarmMessageType {
-	if m != nil {
-		return m.MessageTypes
+func (x *AlarmDeviceData) GetMessageTypes() []*AlarmMessageType {
+	if x != nil {
+		return x.MessageTypes
 	}
 	return nil
 }
 
 type AlarmOpenOmciEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmOpenOmciEventType) Reset()         { *m = AlarmOpenOmciEventType{} }
-func (m *AlarmOpenOmciEventType) String() string { return proto.CompactTextString(m) }
-func (*AlarmOpenOmciEventType) ProtoMessage()    {}
+func (x *AlarmOpenOmciEventType) Reset() {
+	*x = AlarmOpenOmciEventType{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmOpenOmciEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmOpenOmciEventType) ProtoMessage() {}
+
+func (x *AlarmOpenOmciEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmOpenOmciEventType.ProtoReflect.Descriptor instead.
 func (*AlarmOpenOmciEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{6}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *AlarmOpenOmciEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmOpenOmciEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmOpenOmciEventType proto.InternalMessageInfo
-
 type AlarmOpenOmciEvent struct {
-	Type                 AlarmOpenOmciEventType_OpenOmciEventType `protobuf:"varint,1,opt,name=type,proto3,enum=omci.AlarmOpenOmciEventType_OpenOmciEventType" json:"type,omitempty"`
-	Data                 string                                   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                 `json:"-"`
-	XXX_unrecognized     []byte                                   `json:"-"`
-	XXX_sizecache        int32                                    `json:"-"`
+	state         protoimpl.MessageState                   `protogen:"open.v1"`
+	Type          AlarmOpenOmciEventType_OpenOmciEventType `protobuf:"varint,1,opt,name=type,proto3,enum=omci.AlarmOpenOmciEventType_OpenOmciEventType" json:"type,omitempty"`
+	Data          string                                   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // associated data, in json format
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmOpenOmciEvent) Reset()         { *m = AlarmOpenOmciEvent{} }
-func (m *AlarmOpenOmciEvent) String() string { return proto.CompactTextString(m) }
-func (*AlarmOpenOmciEvent) ProtoMessage()    {}
+func (x *AlarmOpenOmciEvent) Reset() {
+	*x = AlarmOpenOmciEvent{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmOpenOmciEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmOpenOmciEvent) ProtoMessage() {}
+
+func (x *AlarmOpenOmciEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmOpenOmciEvent.ProtoReflect.Descriptor instead.
 func (*AlarmOpenOmciEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{7}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *AlarmOpenOmciEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmOpenOmciEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmOpenOmciEvent proto.InternalMessageInfo
-
-func (m *AlarmOpenOmciEvent) GetType() AlarmOpenOmciEventType_OpenOmciEventType {
-	if m != nil {
-		return m.Type
+func (x *AlarmOpenOmciEvent) GetType() AlarmOpenOmciEventType_OpenOmciEventType {
+	if x != nil {
+		return x.Type
 	}
 	return AlarmOpenOmciEventType_state_change
 }
 
-func (m *AlarmOpenOmciEvent) GetData() string {
-	if m != nil {
-		return m.Data
+func (x *AlarmOpenOmciEvent) GetData() string {
+	if x != nil {
+		return x.Data
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterEnum("omci.AlarmOpenOmciEventType_OpenOmciEventType", AlarmOpenOmciEventType_OpenOmciEventType_name, AlarmOpenOmciEventType_OpenOmciEventType_value)
-	proto.RegisterType((*AlarmAttributeData)(nil), "omci.AlarmAttributeData")
-	proto.RegisterType((*AlarmInstanceData)(nil), "omci.AlarmInstanceData")
-	proto.RegisterType((*AlarmClassData)(nil), "omci.AlarmClassData")
-	proto.RegisterType((*AlarmManagedEntity)(nil), "omci.AlarmManagedEntity")
-	proto.RegisterType((*AlarmMessageType)(nil), "omci.AlarmMessageType")
-	proto.RegisterType((*AlarmDeviceData)(nil), "omci.AlarmDeviceData")
-	proto.RegisterType((*AlarmOpenOmciEventType)(nil), "omci.AlarmOpenOmciEventType")
-	proto.RegisterType((*AlarmOpenOmciEvent)(nil), "omci.AlarmOpenOmciEvent")
+var File_voltha_protos_omci_alarm_db_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_omci_alarm_db_proto_rawDesc = "" +
+	"\n" +
+	"!voltha_protos/omci_alarm_db.proto\x12\x04omci\">\n" +
+	"\x12AlarmAttributeData\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value\"\xa4\x01\n" +
+	"\x11AlarmInstanceData\x12\x1f\n" +
+	"\vinstance_id\x18\x01 \x01(\rR\n" +
+	"instanceId\x12\x18\n" +
+	"\acreated\x18\x02 \x01(\tR\acreated\x12\x1a\n" +
+	"\bmodified\x18\x03 \x01(\tR\bmodified\x128\n" +
+	"\n" +
+	"attributes\x18\x04 \x03(\v2\x18.omci.AlarmAttributeDataR\n" +
+	"attributes\"b\n" +
+	"\x0eAlarmClassData\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x125\n" +
+	"\tinstances\x18\x02 \x03(\v2\x17.omci.AlarmInstanceDataR\tinstances\"C\n" +
+	"\x12AlarmManagedEntity\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\"5\n" +
+	"\x10AlarmMessageType\x12!\n" +
+	"\fmessage_type\x18\x01 \x01(\rR\vmessageType\"\xea\x02\n" +
+	"\x0fAlarmDeviceData\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x18\n" +
+	"\acreated\x18\x02 \x01(\tR\acreated\x12.\n" +
+	"\x13last_alarm_sequence\x18\x03 \x01(\rR\x11lastAlarmSequence\x12$\n" +
+	"\x0elast_sync_time\x18\x04 \x01(\tR\flastSyncTime\x12\x18\n" +
+	"\aversion\x18\x05 \x01(\rR\aversion\x12.\n" +
+	"\aclasses\x18\x06 \x03(\v2\x14.omci.AlarmClassDataR\aclasses\x12C\n" +
+	"\x10managed_entities\x18\a \x03(\v2\x18.omci.AlarmManagedEntityR\x0fmanagedEntities\x12;\n" +
+	"\rmessage_types\x18\b \x03(\v2\x16.omci.AlarmMessageTypeR\fmessageTypes\"?\n" +
+	"\x16AlarmOpenOmciEventType\"%\n" +
+	"\x11OpenOmciEventType\x12\x10\n" +
+	"\fstate_change\x10\x00\"l\n" +
+	"\x12AlarmOpenOmciEvent\x12B\n" +
+	"\x04type\x18\x01 \x01(\x0e2..omci.AlarmOpenOmciEventType.OpenOmciEventTypeR\x04type\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\tR\x04dataBH\n" +
+	"\x18org.opencord.voltha.omciZ,github.com/opencord/voltha-protos/v5/go/omcib\x06proto3"
+
+var (
+	file_voltha_protos_omci_alarm_db_proto_rawDescOnce sync.Once
+	file_voltha_protos_omci_alarm_db_proto_rawDescData []byte
+)
+
+func file_voltha_protos_omci_alarm_db_proto_rawDescGZIP() []byte {
+	file_voltha_protos_omci_alarm_db_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_omci_alarm_db_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_alarm_db_proto_rawDesc), len(file_voltha_protos_omci_alarm_db_proto_rawDesc)))
+	})
+	return file_voltha_protos_omci_alarm_db_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/omci_alarm_db.proto", fileDescriptor_8d41f1e38aadb08d) }
+var file_voltha_protos_omci_alarm_db_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_voltha_protos_omci_alarm_db_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_voltha_protos_omci_alarm_db_proto_goTypes = []any{
+	(AlarmOpenOmciEventType_OpenOmciEventType)(0), // 0: omci.AlarmOpenOmciEventType.OpenOmciEventType
+	(*AlarmAttributeData)(nil),                    // 1: omci.AlarmAttributeData
+	(*AlarmInstanceData)(nil),                     // 2: omci.AlarmInstanceData
+	(*AlarmClassData)(nil),                        // 3: omci.AlarmClassData
+	(*AlarmManagedEntity)(nil),                    // 4: omci.AlarmManagedEntity
+	(*AlarmMessageType)(nil),                      // 5: omci.AlarmMessageType
+	(*AlarmDeviceData)(nil),                       // 6: omci.AlarmDeviceData
+	(*AlarmOpenOmciEventType)(nil),                // 7: omci.AlarmOpenOmciEventType
+	(*AlarmOpenOmciEvent)(nil),                    // 8: omci.AlarmOpenOmciEvent
+}
+var file_voltha_protos_omci_alarm_db_proto_depIdxs = []int32{
+	1, // 0: omci.AlarmInstanceData.attributes:type_name -> omci.AlarmAttributeData
+	2, // 1: omci.AlarmClassData.instances:type_name -> omci.AlarmInstanceData
+	3, // 2: omci.AlarmDeviceData.classes:type_name -> omci.AlarmClassData
+	4, // 3: omci.AlarmDeviceData.managed_entities:type_name -> omci.AlarmManagedEntity
+	5, // 4: omci.AlarmDeviceData.message_types:type_name -> omci.AlarmMessageType
+	0, // 5: omci.AlarmOpenOmciEvent.type:type_name -> omci.AlarmOpenOmciEventType.OpenOmciEventType
+	6, // [6:6] is the sub-list for method output_type
+	6, // [6:6] is the sub-list for method input_type
+	6, // [6:6] is the sub-list for extension type_name
+	6, // [6:6] is the sub-list for extension extendee
+	0, // [0:6] is the sub-list for field type_name
+}
 
-var fileDescriptor_8d41f1e38aadb08d = []byte{
-	// 557 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xc1, 0x6a, 0xdb, 0x40,
-	0x10, 0x6d, 0x1c, 0x27, 0xb1, 0x27, 0xb6, 0x63, 0x6f, 0x43, 0xba, 0x6d, 0x0f, 0x4d, 0x44, 0x0b,
-	0x39, 0xb4, 0x32, 0xa4, 0x18, 0x0a, 0x85, 0x96, 0xc4, 0x09, 0xd4, 0x87, 0x12, 0x50, 0x72, 0xea,
-	0x45, 0xac, 0xa5, 0xa9, 0xbc, 0xa0, 0xdd, 0x75, 0xb5, 0x6b, 0x81, 0xff, 0xa7, 0x5f, 0xd7, 0xaf,
-	0x28, 0x1a, 0x49, 0xb6, 0x82, 0x21, 0x37, 0xbd, 0xa7, 0xb7, 0x6f, 0x66, 0xdf, 0x0c, 0x0b, 0x17,
-	0xb9, 0x49, 0xdd, 0x42, 0x84, 0xcb, 0xcc, 0x38, 0x63, 0xc7, 0x46, 0x45, 0x32, 0x14, 0xa9, 0xc8,
-	0x54, 0x18, 0xcf, 0x7d, 0x22, 0x59, 0xbb, 0x20, 0xbd, 0x6f, 0xc0, 0xae, 0x0b, 0xfe, 0xda, 0xb9,
-	0x4c, 0xce, 0x57, 0x0e, 0x6f, 0x85, 0x13, 0x8c, 0x41, 0x5b, 0x0b, 0x85, 0x7c, 0xef, 0x7c, 0xef,
-	0xb2, 0x1b, 0xd0, 0x37, 0x3b, 0x85, 0x83, 0x5c, 0xa4, 0x2b, 0xe4, 0x2d, 0x22, 0x4b, 0xe0, 0xfd,
-	0xdd, 0x83, 0x11, 0x19, 0xcc, 0xb4, 0x75, 0x42, 0x47, 0xe5, 0xf9, 0x77, 0x70, 0x2c, 0x2b, 0x1c,
-	0xca, 0x98, 0x6c, 0xfa, 0x01, 0xd4, 0xd4, 0x2c, 0x66, 0x1c, 0x8e, 0xa2, 0x0c, 0x85, 0xc3, 0xb8,
-	0xb2, 0xab, 0x21, 0x7b, 0x03, 0x1d, 0x65, 0x62, 0xf9, 0x5b, 0x62, 0xcc, 0xf7, 0xe9, 0xd7, 0x06,
-	0xb3, 0x2f, 0x00, 0xa2, 0xee, 0xd3, 0xf2, 0xf6, 0xf9, 0xfe, 0xe5, 0xf1, 0x15, 0xf7, 0x8b, 0x7b,
-	0xf8, 0xbb, 0x97, 0x08, 0x1a, 0x5a, 0x6f, 0x0e, 0x03, 0x52, 0x4c, 0x53, 0x61, 0x2d, 0xb5, 0xf8,
-	0x1a, 0x3a, 0x51, 0x01, 0xb6, 0xfd, 0x1d, 0x11, 0x9e, 0xc5, 0x6c, 0x02, 0xdd, 0xba, 0x55, 0xcb,
-	0x5b, 0x54, 0xe5, 0x55, 0xa3, 0x4a, 0xf3, 0xa6, 0xc1, 0x56, 0xe9, 0x4d, 0xab, 0x28, 0x7f, 0x0a,
-	0x2d, 0x12, 0x8c, 0xef, 0xb4, 0x93, 0x6e, 0xfd, 0x5c, 0x9d, 0x3a, 0xe5, 0xd6, 0x36, 0x65, 0x6f,
-	0x02, 0xc3, 0xd2, 0x04, 0xad, 0x15, 0x09, 0x3e, 0xae, 0x97, 0xc8, 0x2e, 0xa0, 0xa7, 0x4a, 0x18,
-	0xba, 0xf5, 0x12, 0x2b, 0x9b, 0x63, 0xb5, 0x95, 0x78, 0xff, 0x5a, 0x70, 0x42, 0xe7, 0x6e, 0x31,
-	0x97, 0xd5, 0x10, 0xde, 0x42, 0x37, 0x26, 0x54, 0x97, 0xee, 0x06, 0x9d, 0x92, 0x78, 0x76, 0x00,
-	0x3e, 0xbc, 0x4c, 0x85, 0x75, 0xd5, 0xba, 0x58, 0xfc, 0xb3, 0x42, 0x1d, 0x21, 0xcd, 0xa2, 0x1f,
-	0x8c, 0x8a, 0x5f, 0x54, 0xe8, 0xa1, 0xfa, 0xc1, 0xde, 0xc3, 0x80, 0xf4, 0x76, 0xad, 0xa3, 0xd0,
-	0x49, 0x85, 0xbc, 0x4d, 0x86, 0xbd, 0x82, 0x7d, 0x58, 0xeb, 0xe8, 0x51, 0x2a, 0x2c, 0xea, 0xe5,
-	0x98, 0x59, 0x69, 0x34, 0x3f, 0x28, 0x53, 0xa8, 0x20, 0xf3, 0xa1, 0x0c, 0x04, 0x2d, 0x3f, 0xa4,
-	0xac, 0x4f, 0x1b, 0x59, 0x6f, 0xe6, 0x15, 0xd4, 0x22, 0x36, 0x85, 0xa1, 0x2a, 0x13, 0x0e, 0xb1,
-	0x88, 0x58, 0xa2, 0xe5, 0x47, 0x3b, 0xab, 0xf0, 0x64, 0x08, 0xc1, 0x89, 0x6a, 0x40, 0x89, 0x96,
-	0x7d, 0x85, 0x7e, 0x33, 0x52, 0xcb, 0x3b, 0xe4, 0x70, 0xd6, 0x74, 0xd8, 0xc6, 0x1b, 0xf4, 0x1a,
-	0x59, 0x5b, 0xef, 0x3b, 0x9c, 0x91, 0xe2, 0x7e, 0x89, 0xfa, 0x5e, 0x45, 0xf2, 0x2e, 0x47, 0xed,
-	0x68, 0x0c, 0x1f, 0x60, 0xb4, 0x43, 0xb2, 0x21, 0xf4, 0xac, 0x13, 0x0e, 0xc3, 0x68, 0x21, 0x74,
-	0x82, 0xc3, 0x17, 0x5e, 0x5a, 0x6d, 0xca, 0x13, 0x2d, 0xbb, 0x81, 0xf6, 0x66, 0xbc, 0x83, 0x2b,
-	0xbf, 0xd1, 0xca, 0x8e, 0xa7, 0xbf, 0xc3, 0x04, 0x74, 0xb6, 0x58, 0xa9, 0x58, 0x38, 0x51, 0xaf,
-	0x54, 0xf1, 0x7d, 0xf3, 0x03, 0xb8, 0xc9, 0x12, 0xdf, 0x2c, 0x51, 0x47, 0x26, 0x8b, 0xfd, 0xf2,
-	0x69, 0x20, 0xfb, 0x5f, 0x1f, 0x13, 0xe9, 0x16, 0xab, 0xb9, 0x1f, 0x19, 0x35, 0xae, 0x05, 0xe3,
-	0x52, 0xf0, 0xa9, 0x7a, 0x3b, 0xf2, 0xc9, 0x38, 0x31, 0xf4, 0x82, 0xcc, 0x0f, 0x89, 0xfa, 0xfc,
-	0x3f, 0x00, 0x00, 0xff, 0xff, 0x2f, 0xc0, 0x0c, 0x6c, 0x5e, 0x04, 0x00, 0x00,
+func init() { file_voltha_protos_omci_alarm_db_proto_init() }
+func file_voltha_protos_omci_alarm_db_proto_init() {
+	if File_voltha_protos_omci_alarm_db_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_alarm_db_proto_rawDesc), len(file_voltha_protos_omci_alarm_db_proto_rawDesc)),
+			NumEnums:      1,
+			NumMessages:   8,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_omci_alarm_db_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_omci_alarm_db_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_omci_alarm_db_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_omci_alarm_db_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_omci_alarm_db_proto = out.File
+	file_voltha_protos_omci_alarm_db_proto_goTypes = nil
+	file_voltha_protos_omci_alarm_db_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_mib_db.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_mib_db.pb.go
index 05b146a..fba1737 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_mib_db.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_mib_db.pb.go
@@ -1,512 +1,642 @@
+//
+// Copyright 2018 - present the original author or authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/omci_mib_db.proto
 
 package omci
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type OpenOmciEventType_Types int32
 
 const (
-	OpenOmciEventType_state_change OpenOmciEventType_Types = 0
+	OpenOmciEventType_state_change OpenOmciEventType_Types = 0 // A state machine has transitioned to a new state
 )
 
-var OpenOmciEventType_Types_name = map[int32]string{
-	0: "state_change",
-}
+// Enum value maps for OpenOmciEventType_Types.
+var (
+	OpenOmciEventType_Types_name = map[int32]string{
+		0: "state_change",
+	}
+	OpenOmciEventType_Types_value = map[string]int32{
+		"state_change": 0,
+	}
+)
 
-var OpenOmciEventType_Types_value = map[string]int32{
-	"state_change": 0,
+func (x OpenOmciEventType_Types) Enum() *OpenOmciEventType_Types {
+	p := new(OpenOmciEventType_Types)
+	*p = x
+	return p
 }
 
 func (x OpenOmciEventType_Types) String() string {
-	return proto.EnumName(OpenOmciEventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OpenOmciEventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_omci_mib_db_proto_enumTypes[0].Descriptor()
+}
+
+func (OpenOmciEventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_omci_mib_db_proto_enumTypes[0]
+}
+
+func (x OpenOmciEventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OpenOmciEventType_Types.Descriptor instead.
 func (OpenOmciEventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{6, 0}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type MibAttributeData struct {
-	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Value                string   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Value         string                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MibAttributeData) Reset()         { *m = MibAttributeData{} }
-func (m *MibAttributeData) String() string { return proto.CompactTextString(m) }
-func (*MibAttributeData) ProtoMessage()    {}
+func (x *MibAttributeData) Reset() {
+	*x = MibAttributeData{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MibAttributeData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MibAttributeData) ProtoMessage() {}
+
+func (x *MibAttributeData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MibAttributeData.ProtoReflect.Descriptor instead.
 func (*MibAttributeData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{0}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *MibAttributeData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MibAttributeData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MibAttributeData proto.InternalMessageInfo
-
-func (m *MibAttributeData) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *MibAttributeData) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *MibAttributeData) GetValue() string {
-	if m != nil {
-		return m.Value
+func (x *MibAttributeData) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
 type MibInstanceData struct {
-	InstanceId           uint32              `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
-	Created              string              `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
-	Modified             string              `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
-	Attributes           []*MibAttributeData `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	InstanceId    uint32                 `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Created       string                 `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+	Modified      string                 `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
+	Attributes    []*MibAttributeData    `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MibInstanceData) Reset()         { *m = MibInstanceData{} }
-func (m *MibInstanceData) String() string { return proto.CompactTextString(m) }
-func (*MibInstanceData) ProtoMessage()    {}
+func (x *MibInstanceData) Reset() {
+	*x = MibInstanceData{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MibInstanceData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MibInstanceData) ProtoMessage() {}
+
+func (x *MibInstanceData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MibInstanceData.ProtoReflect.Descriptor instead.
 func (*MibInstanceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{1}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *MibInstanceData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MibInstanceData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MibInstanceData proto.InternalMessageInfo
-
-func (m *MibInstanceData) GetInstanceId() uint32 {
-	if m != nil {
-		return m.InstanceId
+func (x *MibInstanceData) GetInstanceId() uint32 {
+	if x != nil {
+		return x.InstanceId
 	}
 	return 0
 }
 
-func (m *MibInstanceData) GetCreated() string {
-	if m != nil {
-		return m.Created
+func (x *MibInstanceData) GetCreated() string {
+	if x != nil {
+		return x.Created
 	}
 	return ""
 }
 
-func (m *MibInstanceData) GetModified() string {
-	if m != nil {
-		return m.Modified
+func (x *MibInstanceData) GetModified() string {
+	if x != nil {
+		return x.Modified
 	}
 	return ""
 }
 
-func (m *MibInstanceData) GetAttributes() []*MibAttributeData {
-	if m != nil {
-		return m.Attributes
+func (x *MibInstanceData) GetAttributes() []*MibAttributeData {
+	if x != nil {
+		return x.Attributes
 	}
 	return nil
 }
 
 type MibClassData struct {
-	ClassId              uint32             `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	Instances            []*MibInstanceData `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	Instances     []*MibInstanceData     `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MibClassData) Reset()         { *m = MibClassData{} }
-func (m *MibClassData) String() string { return proto.CompactTextString(m) }
-func (*MibClassData) ProtoMessage()    {}
+func (x *MibClassData) Reset() {
+	*x = MibClassData{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MibClassData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MibClassData) ProtoMessage() {}
+
+func (x *MibClassData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MibClassData.ProtoReflect.Descriptor instead.
 func (*MibClassData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{2}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *MibClassData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MibClassData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MibClassData proto.InternalMessageInfo
-
-func (m *MibClassData) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *MibClassData) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *MibClassData) GetInstances() []*MibInstanceData {
-	if m != nil {
-		return m.Instances
+func (x *MibClassData) GetInstances() []*MibInstanceData {
+	if x != nil {
+		return x.Instances
 	}
 	return nil
 }
 
 type ManagedEntity struct {
-	ClassId              uint32   `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ManagedEntity) Reset()         { *m = ManagedEntity{} }
-func (m *ManagedEntity) String() string { return proto.CompactTextString(m) }
-func (*ManagedEntity) ProtoMessage()    {}
+func (x *ManagedEntity) Reset() {
+	*x = ManagedEntity{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ManagedEntity) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ManagedEntity) ProtoMessage() {}
+
+func (x *ManagedEntity) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ManagedEntity.ProtoReflect.Descriptor instead.
 func (*ManagedEntity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{3}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *ManagedEntity) XXX_DiscardUnknown() {
-	xxx_messageInfo_ManagedEntity.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ManagedEntity proto.InternalMessageInfo
-
-func (m *ManagedEntity) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *ManagedEntity) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *ManagedEntity) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ManagedEntity) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 type MessageType struct {
-	MessageType          uint32   `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MessageType   uint32                 `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MessageType) Reset()         { *m = MessageType{} }
-func (m *MessageType) String() string { return proto.CompactTextString(m) }
-func (*MessageType) ProtoMessage()    {}
+func (x *MessageType) Reset() {
+	*x = MessageType{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageType) ProtoMessage() {}
+
+func (x *MessageType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MessageType.ProtoReflect.Descriptor instead.
 func (*MessageType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{4}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *MessageType) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageType proto.InternalMessageInfo
-
-func (m *MessageType) GetMessageType() uint32 {
-	if m != nil {
-		return m.MessageType
+func (x *MessageType) GetMessageType() uint32 {
+	if x != nil {
+		return x.MessageType
 	}
 	return 0
 }
 
 type MibDeviceData struct {
-	DeviceId             string           `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Created              string           `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
-	LastSyncTime         string           `protobuf:"bytes,3,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
-	MibDataSync          uint32           `protobuf:"varint,4,opt,name=mib_data_sync,json=mibDataSync,proto3" json:"mib_data_sync,omitempty"`
-	Version              uint32           `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
-	Classes              []*MibClassData  `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
-	ManagedEntities      []*ManagedEntity `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
-	MessageTypes         []*MessageType   `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId        string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	Created         string                 `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+	LastSyncTime    string                 `protobuf:"bytes,3,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
+	MibDataSync     uint32                 `protobuf:"varint,4,opt,name=mib_data_sync,json=mibDataSync,proto3" json:"mib_data_sync,omitempty"`
+	Version         uint32                 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
+	Classes         []*MibClassData        `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
+	ManagedEntities []*ManagedEntity       `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
+	MessageTypes    []*MessageType         `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *MibDeviceData) Reset()         { *m = MibDeviceData{} }
-func (m *MibDeviceData) String() string { return proto.CompactTextString(m) }
-func (*MibDeviceData) ProtoMessage()    {}
+func (x *MibDeviceData) Reset() {
+	*x = MibDeviceData{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MibDeviceData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MibDeviceData) ProtoMessage() {}
+
+func (x *MibDeviceData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MibDeviceData.ProtoReflect.Descriptor instead.
 func (*MibDeviceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{5}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *MibDeviceData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MibDeviceData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MibDeviceData proto.InternalMessageInfo
-
-func (m *MibDeviceData) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *MibDeviceData) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *MibDeviceData) GetCreated() string {
-	if m != nil {
-		return m.Created
+func (x *MibDeviceData) GetCreated() string {
+	if x != nil {
+		return x.Created
 	}
 	return ""
 }
 
-func (m *MibDeviceData) GetLastSyncTime() string {
-	if m != nil {
-		return m.LastSyncTime
+func (x *MibDeviceData) GetLastSyncTime() string {
+	if x != nil {
+		return x.LastSyncTime
 	}
 	return ""
 }
 
-func (m *MibDeviceData) GetMibDataSync() uint32 {
-	if m != nil {
-		return m.MibDataSync
+func (x *MibDeviceData) GetMibDataSync() uint32 {
+	if x != nil {
+		return x.MibDataSync
 	}
 	return 0
 }
 
-func (m *MibDeviceData) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *MibDeviceData) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *MibDeviceData) GetClasses() []*MibClassData {
-	if m != nil {
-		return m.Classes
+func (x *MibDeviceData) GetClasses() []*MibClassData {
+	if x != nil {
+		return x.Classes
 	}
 	return nil
 }
 
-func (m *MibDeviceData) GetManagedEntities() []*ManagedEntity {
-	if m != nil {
-		return m.ManagedEntities
+func (x *MibDeviceData) GetManagedEntities() []*ManagedEntity {
+	if x != nil {
+		return x.ManagedEntities
 	}
 	return nil
 }
 
-func (m *MibDeviceData) GetMessageTypes() []*MessageType {
-	if m != nil {
-		return m.MessageTypes
+func (x *MibDeviceData) GetMessageTypes() []*MessageType {
+	if x != nil {
+		return x.MessageTypes
 	}
 	return nil
 }
 
 type OpenOmciEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OpenOmciEventType) Reset()         { *m = OpenOmciEventType{} }
-func (m *OpenOmciEventType) String() string { return proto.CompactTextString(m) }
-func (*OpenOmciEventType) ProtoMessage()    {}
+func (x *OpenOmciEventType) Reset() {
+	*x = OpenOmciEventType{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OpenOmciEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OpenOmciEventType) ProtoMessage() {}
+
+func (x *OpenOmciEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OpenOmciEventType.ProtoReflect.Descriptor instead.
 func (*OpenOmciEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{6}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *OpenOmciEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_OpenOmciEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OpenOmciEventType proto.InternalMessageInfo
-
 type OpenOmciEvent struct {
-	Type                 OpenOmciEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=omci.OpenOmciEventType_Types" json:"type,omitempty"`
-	Data                 string                  `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	state         protoimpl.MessageState  `protogen:"open.v1"`
+	Type          OpenOmciEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=omci.OpenOmciEventType_Types" json:"type,omitempty"`
+	Data          string                  `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // associated data, in json format
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OpenOmciEvent) Reset()         { *m = OpenOmciEvent{} }
-func (m *OpenOmciEvent) String() string { return proto.CompactTextString(m) }
-func (*OpenOmciEvent) ProtoMessage()    {}
+func (x *OpenOmciEvent) Reset() {
+	*x = OpenOmciEvent{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OpenOmciEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OpenOmciEvent) ProtoMessage() {}
+
+func (x *OpenOmciEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OpenOmciEvent.ProtoReflect.Descriptor instead.
 func (*OpenOmciEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{7}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []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 (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)
-}
-func (m *OpenOmciEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_OpenOmciEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OpenOmciEvent proto.InternalMessageInfo
-
-func (m *OpenOmciEvent) GetType() OpenOmciEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *OpenOmciEvent) GetType() OpenOmciEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return OpenOmciEventType_state_change
 }
 
-func (m *OpenOmciEvent) GetData() string {
-	if m != nil {
-		return m.Data
+func (x *OpenOmciEvent) GetData() string {
+	if x != nil {
+		return x.Data
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterEnum("omci.OpenOmciEventType_Types", OpenOmciEventType_Types_name, OpenOmciEventType_Types_value)
-	proto.RegisterType((*MibAttributeData)(nil), "omci.MibAttributeData")
-	proto.RegisterType((*MibInstanceData)(nil), "omci.MibInstanceData")
-	proto.RegisterType((*MibClassData)(nil), "omci.MibClassData")
-	proto.RegisterType((*ManagedEntity)(nil), "omci.ManagedEntity")
-	proto.RegisterType((*MessageType)(nil), "omci.MessageType")
-	proto.RegisterType((*MibDeviceData)(nil), "omci.MibDeviceData")
-	proto.RegisterType((*OpenOmciEventType)(nil), "omci.OpenOmciEventType")
-	proto.RegisterType((*OpenOmciEvent)(nil), "omci.OpenOmciEvent")
+var File_voltha_protos_omci_mib_db_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_omci_mib_db_proto_rawDesc = "" +
+	"\n" +
+	"\x1fvoltha_protos/omci_mib_db.proto\x12\x04omci\"<\n" +
+	"\x10MibAttributeData\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value\"\xa0\x01\n" +
+	"\x0fMibInstanceData\x12\x1f\n" +
+	"\vinstance_id\x18\x01 \x01(\rR\n" +
+	"instanceId\x12\x18\n" +
+	"\acreated\x18\x02 \x01(\tR\acreated\x12\x1a\n" +
+	"\bmodified\x18\x03 \x01(\tR\bmodified\x126\n" +
+	"\n" +
+	"attributes\x18\x04 \x03(\v2\x16.omci.MibAttributeDataR\n" +
+	"attributes\"^\n" +
+	"\fMibClassData\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x123\n" +
+	"\tinstances\x18\x02 \x03(\v2\x15.omci.MibInstanceDataR\tinstances\">\n" +
+	"\rManagedEntity\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\"0\n" +
+	"\vMessageType\x12!\n" +
+	"\fmessage_type\x18\x01 \x01(\rR\vmessageType\"\xd0\x02\n" +
+	"\rMibDeviceData\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x18\n" +
+	"\acreated\x18\x02 \x01(\tR\acreated\x12$\n" +
+	"\x0elast_sync_time\x18\x03 \x01(\tR\flastSyncTime\x12\"\n" +
+	"\rmib_data_sync\x18\x04 \x01(\rR\vmibDataSync\x12\x18\n" +
+	"\aversion\x18\x05 \x01(\rR\aversion\x12,\n" +
+	"\aclasses\x18\x06 \x03(\v2\x12.omci.MibClassDataR\aclasses\x12>\n" +
+	"\x10managed_entities\x18\a \x03(\v2\x13.omci.ManagedEntityR\x0fmanagedEntities\x126\n" +
+	"\rmessage_types\x18\b \x03(\v2\x11.omci.MessageTypeR\fmessageTypes\".\n" +
+	"\x11OpenOmciEventType\"\x19\n" +
+	"\x05Types\x12\x10\n" +
+	"\fstate_change\x10\x00\"V\n" +
+	"\rOpenOmciEvent\x121\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1d.omci.OpenOmciEventType.TypesR\x04type\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\tR\x04dataBH\n" +
+	"\x18org.opencord.voltha.omciZ,github.com/opencord/voltha-protos/v5/go/omcib\x06proto3"
+
+var (
+	file_voltha_protos_omci_mib_db_proto_rawDescOnce sync.Once
+	file_voltha_protos_omci_mib_db_proto_rawDescData []byte
+)
+
+func file_voltha_protos_omci_mib_db_proto_rawDescGZIP() []byte {
+	file_voltha_protos_omci_mib_db_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_omci_mib_db_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_mib_db_proto_rawDesc), len(file_voltha_protos_omci_mib_db_proto_rawDesc)))
+	})
+	return file_voltha_protos_omci_mib_db_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/omci_mib_db.proto", fileDescriptor_4fa402a2df36dcc1) }
+var file_voltha_protos_omci_mib_db_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_voltha_protos_omci_mib_db_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_voltha_protos_omci_mib_db_proto_goTypes = []any{
+	(OpenOmciEventType_Types)(0), // 0: omci.OpenOmciEventType.Types
+	(*MibAttributeData)(nil),     // 1: omci.MibAttributeData
+	(*MibInstanceData)(nil),      // 2: omci.MibInstanceData
+	(*MibClassData)(nil),         // 3: omci.MibClassData
+	(*ManagedEntity)(nil),        // 4: omci.ManagedEntity
+	(*MessageType)(nil),          // 5: omci.MessageType
+	(*MibDeviceData)(nil),        // 6: omci.MibDeviceData
+	(*OpenOmciEventType)(nil),    // 7: omci.OpenOmciEventType
+	(*OpenOmciEvent)(nil),        // 8: omci.OpenOmciEvent
+}
+var file_voltha_protos_omci_mib_db_proto_depIdxs = []int32{
+	1, // 0: omci.MibInstanceData.attributes:type_name -> omci.MibAttributeData
+	2, // 1: omci.MibClassData.instances:type_name -> omci.MibInstanceData
+	3, // 2: omci.MibDeviceData.classes:type_name -> omci.MibClassData
+	4, // 3: omci.MibDeviceData.managed_entities:type_name -> omci.ManagedEntity
+	5, // 4: omci.MibDeviceData.message_types:type_name -> omci.MessageType
+	0, // 5: omci.OpenOmciEvent.type:type_name -> omci.OpenOmciEventType.Types
+	6, // [6:6] is the sub-list for method output_type
+	6, // [6:6] is the sub-list for method input_type
+	6, // [6:6] is the sub-list for extension type_name
+	6, // [6:6] is the sub-list for extension extendee
+	0, // [0:6] is the sub-list for field type_name
+}
 
-var fileDescriptor_4fa402a2df36dcc1 = []byte{
-	// 548 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x4d, 0x6f, 0xd3, 0x30,
-	0x18, 0xc7, 0x69, 0xd7, 0xae, 0xed, 0xd3, 0x66, 0xeb, 0xcc, 0x8b, 0x3c, 0x10, 0xda, 0x88, 0x38,
-	0xec, 0x30, 0x52, 0xd8, 0xc4, 0x4e, 0x68, 0x12, 0xb0, 0x49, 0xf4, 0x10, 0x4d, 0x0a, 0x13, 0x07,
-	0x0e, 0x44, 0x4e, 0xf2, 0x90, 0x5a, 0xaa, 0xed, 0x2a, 0x76, 0x23, 0xf5, 0xdb, 0xf0, 0x91, 0xf8,
-	0x48, 0xc8, 0x4e, 0xd2, 0x06, 0x90, 0x76, 0xcb, 0xff, 0xc9, 0xff, 0x79, 0xfb, 0xd9, 0x86, 0x93,
-	0x52, 0x2d, 0xcd, 0x82, 0xc5, 0xab, 0x42, 0x19, 0xa5, 0x67, 0x4a, 0xa4, 0x3c, 0x16, 0x3c, 0x89,
-	0xb3, 0x24, 0x70, 0x21, 0xd2, 0xb3, 0x21, 0xff, 0x03, 0x4c, 0x43, 0x9e, 0x7c, 0x34, 0xa6, 0xe0,
-	0xc9, 0xda, 0xe0, 0x0d, 0x33, 0x8c, 0x10, 0xe8, 0x49, 0x26, 0x90, 0x76, 0x4e, 0x3b, 0x67, 0xa3,
-	0xc8, 0x7d, 0x93, 0x27, 0xd0, 0x2f, 0xd9, 0x72, 0x8d, 0xb4, 0xeb, 0x82, 0x95, 0xf0, 0x7f, 0x75,
-	0xe0, 0x30, 0xe4, 0xc9, 0x5c, 0x6a, 0xc3, 0x64, 0x5a, 0x65, 0x9f, 0xc0, 0x98, 0xd7, 0x3a, 0xe6,
-	0x99, 0x2b, 0xe2, 0x45, 0xd0, 0x84, 0xe6, 0x19, 0xa1, 0x30, 0x48, 0x0b, 0x64, 0x06, 0xb3, 0xba,
-	0x58, 0x23, 0xc9, 0x73, 0x18, 0x0a, 0x95, 0xf1, 0x9f, 0x1c, 0x33, 0xba, 0xe7, 0x7e, 0x6d, 0x35,
-	0xb9, 0x02, 0x60, 0xcd, 0x94, 0x9a, 0xf6, 0x4e, 0xf7, 0xce, 0xc6, 0x17, 0xcf, 0x02, 0xbb, 0x43,
-	0xf0, 0xef, 0x02, 0x51, 0xcb, 0xe9, 0xff, 0x80, 0x49, 0xc8, 0x93, 0xcf, 0x4b, 0xa6, 0xb5, 0x1b,
-	0xef, 0x18, 0x86, 0xa9, 0x15, 0xbb, 0xd9, 0x06, 0x4e, 0xcf, 0x33, 0x72, 0x09, 0xa3, 0x66, 0x4c,
-	0x4d, 0xbb, 0xae, 0xc3, 0xd3, 0x6d, 0x87, 0xf6, 0x8e, 0xd1, 0xce, 0xe7, 0x5f, 0x83, 0x17, 0x32,
-	0xc9, 0x72, 0xcc, 0x6e, 0xa5, 0xe1, 0x66, 0xf3, 0x50, 0x83, 0x06, 0x6c, 0x77, 0x07, 0xd6, 0x7f,
-	0x0b, 0xe3, 0x10, 0xb5, 0x66, 0x39, 0xde, 0x6f, 0x56, 0x48, 0x5e, 0xc1, 0x44, 0x54, 0x32, 0x36,
-	0x9b, 0x15, 0xd6, 0x15, 0xc6, 0x62, 0x67, 0xf1, 0x7f, 0x77, 0xc1, 0x0b, 0x79, 0x72, 0x83, 0x25,
-	0xaf, 0x91, 0xbf, 0x80, 0x51, 0xe6, 0x54, 0xd3, 0x73, 0x14, 0x0d, 0xab, 0xc0, 0x83, 0xb8, 0x5f,
-	0xc3, 0xc1, 0x92, 0x69, 0x13, 0xeb, 0x8d, 0x4c, 0x63, 0xc3, 0x05, 0xd6, 0xd0, 0x27, 0x36, 0xfa,
-	0x75, 0x23, 0xd3, 0x7b, 0x2e, 0x90, 0xf8, 0xe0, 0xb9, 0x7b, 0xc3, 0x0c, 0x73, 0x4e, 0xda, 0xab,
-	0x47, 0xe2, 0x89, 0x6d, 0x6e, 0x7d, 0xb6, 0x47, 0x89, 0x85, 0xe6, 0x4a, 0xd2, 0x7e, 0xb5, 0x72,
-	0x2d, 0xc9, 0x39, 0x54, 0xdb, 0xa3, 0xa6, 0xfb, 0x8e, 0x28, 0xd9, 0x12, 0xdd, 0x9e, 0x49, 0xd4,
-	0x58, 0xc8, 0x35, 0x4c, 0x45, 0x05, 0x33, 0x46, 0x4b, 0x93, 0xa3, 0xa6, 0x03, 0x97, 0xf6, 0xb8,
-	0x4e, 0x6b, 0xa3, 0x8e, 0x0e, 0x45, 0x4b, 0x72, 0xd4, 0xe4, 0x0a, 0xbc, 0x36, 0x3d, 0x4d, 0x87,
-	0x2e, 0xf9, 0xa8, 0x4e, 0xde, 0x41, 0x8c, 0x26, 0x2d, 0xa2, 0xda, 0x0f, 0xe0, 0xe8, 0x6e, 0x85,
-	0xf2, 0x4e, 0xa4, 0xfc, 0xb6, 0x44, 0x69, 0x1c, 0xe7, 0x63, 0xe8, 0xbb, 0xbf, 0x64, 0x0a, 0x13,
-	0x6d, 0x98, 0xc1, 0x38, 0x5d, 0x30, 0x99, 0xe3, 0xf4, 0x91, 0xff, 0x0d, 0xbc, 0xbf, 0xfc, 0xe4,
-	0x1d, 0xf4, 0xb6, 0xc7, 0x75, 0x70, 0xf1, 0xb2, 0xea, 0xf7, 0x5f, 0xc9, 0xc0, 0xd5, 0x8b, 0x9c,
-	0xd5, 0x5e, 0x06, 0xcb, 0xb4, 0xb9, 0x0c, 0xf6, 0xfb, 0xd3, 0x17, 0xa0, 0xaa, 0xc8, 0x03, 0xb5,
-	0x42, 0x99, 0xaa, 0x22, 0x0b, 0xaa, 0x37, 0xec, 0xaa, 0x7d, 0x3f, 0xcf, 0xb9, 0x59, 0xac, 0x93,
-	0x20, 0x55, 0x62, 0xd6, 0x18, 0x66, 0x95, 0xe1, 0x4d, 0xfd, 0xc8, 0xcb, 0xf7, 0xb3, 0x5c, 0xb9,
-	0xa7, 0x9e, 0xec, 0xbb, 0xd0, 0xe5, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc6, 0x6b, 0x99, 0x13,
-	0x07, 0x04, 0x00, 0x00,
+func init() { file_voltha_protos_omci_mib_db_proto_init() }
+func file_voltha_protos_omci_mib_db_proto_init() {
+	if File_voltha_protos_omci_mib_db_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_mib_db_proto_rawDesc), len(file_voltha_protos_omci_mib_db_proto_rawDesc)),
+			NumEnums:      1,
+			NumMessages:   8,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_omci_mib_db_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_omci_mib_db_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_omci_mib_db_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_omci_mib_db_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_omci_mib_db_proto = out.File
+	file_voltha_protos_omci_mib_db_proto_goTypes = nil
+	file_voltha_protos_omci_mib_db_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_test.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_test.pb.go
index 6d32ae0..15c7e0b 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_test.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_test.pb.go
@@ -1,24 +1,25 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/omci_test.proto
 
 package omci
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type TestResponse_TestResponseResult int32
 
@@ -27,133 +28,205 @@
 	TestResponse_FAILURE TestResponse_TestResponseResult = 1
 )
 
-var TestResponse_TestResponseResult_name = map[int32]string{
-	0: "SUCCESS",
-	1: "FAILURE",
-}
+// Enum value maps for TestResponse_TestResponseResult.
+var (
+	TestResponse_TestResponseResult_name = map[int32]string{
+		0: "SUCCESS",
+		1: "FAILURE",
+	}
+	TestResponse_TestResponseResult_value = map[string]int32{
+		"SUCCESS": 0,
+		"FAILURE": 1,
+	}
+)
 
-var TestResponse_TestResponseResult_value = map[string]int32{
-	"SUCCESS": 0,
-	"FAILURE": 1,
+func (x TestResponse_TestResponseResult) Enum() *TestResponse_TestResponseResult {
+	p := new(TestResponse_TestResponseResult)
+	*p = x
+	return p
 }
 
 func (x TestResponse_TestResponseResult) String() string {
-	return proto.EnumName(TestResponse_TestResponseResult_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (TestResponse_TestResponseResult) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_omci_test_proto_enumTypes[0].Descriptor()
+}
+
+func (TestResponse_TestResponseResult) Type() protoreflect.EnumType {
+	return &file_voltha_protos_omci_test_proto_enumTypes[0]
+}
+
+func (x TestResponse_TestResponseResult) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use TestResponse_TestResponseResult.Descriptor instead.
 func (TestResponse_TestResponseResult) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_146dc5f97baf9397, []int{1, 0}
+	return file_voltha_protos_omci_test_proto_rawDescGZIP(), []int{1, 0}
 }
 
 type OmciTestRequest struct {
-	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Uuid                 string   `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Uuid          string                 `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OmciTestRequest) Reset()         { *m = OmciTestRequest{} }
-func (m *OmciTestRequest) String() string { return proto.CompactTextString(m) }
-func (*OmciTestRequest) ProtoMessage()    {}
+func (x *OmciTestRequest) Reset() {
+	*x = OmciTestRequest{}
+	mi := &file_voltha_protos_omci_test_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OmciTestRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OmciTestRequest) ProtoMessage() {}
+
+func (x *OmciTestRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_test_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OmciTestRequest.ProtoReflect.Descriptor instead.
 func (*OmciTestRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_146dc5f97baf9397, []int{0}
+	return file_voltha_protos_omci_test_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *OmciTestRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OmciTestRequest.Unmarshal(m, b)
-}
-func (m *OmciTestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OmciTestRequest.Marshal(b, m, deterministic)
-}
-func (m *OmciTestRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OmciTestRequest.Merge(m, src)
-}
-func (m *OmciTestRequest) XXX_Size() int {
-	return xxx_messageInfo_OmciTestRequest.Size(m)
-}
-func (m *OmciTestRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OmciTestRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OmciTestRequest proto.InternalMessageInfo
-
-func (m *OmciTestRequest) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *OmciTestRequest) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *OmciTestRequest) GetUuid() string {
-	if m != nil {
-		return m.Uuid
+func (x *OmciTestRequest) GetUuid() string {
+	if x != nil {
+		return x.Uuid
 	}
 	return ""
 }
 
 type TestResponse struct {
-	Result               TestResponse_TestResponseResult `protobuf:"varint,1,opt,name=result,proto3,enum=omci.TestResponse_TestResponseResult" json:"result,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+	state         protoimpl.MessageState          `protogen:"open.v1"`
+	Result        TestResponse_TestResponseResult `protobuf:"varint,1,opt,name=result,proto3,enum=omci.TestResponse_TestResponseResult" json:"result,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *TestResponse) Reset()         { *m = TestResponse{} }
-func (m *TestResponse) String() string { return proto.CompactTextString(m) }
-func (*TestResponse) ProtoMessage()    {}
+func (x *TestResponse) Reset() {
+	*x = TestResponse{}
+	mi := &file_voltha_protos_omci_test_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestResponse) ProtoMessage() {}
+
+func (x *TestResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_test_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TestResponse.ProtoReflect.Descriptor instead.
 func (*TestResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_146dc5f97baf9397, []int{1}
+	return file_voltha_protos_omci_test_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *TestResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestResponse.Unmarshal(m, b)
-}
-func (m *TestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestResponse.Marshal(b, m, deterministic)
-}
-func (m *TestResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestResponse.Merge(m, src)
-}
-func (m *TestResponse) XXX_Size() int {
-	return xxx_messageInfo_TestResponse.Size(m)
-}
-func (m *TestResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestResponse proto.InternalMessageInfo
-
-func (m *TestResponse) GetResult() TestResponse_TestResponseResult {
-	if m != nil {
-		return m.Result
+func (x *TestResponse) GetResult() TestResponse_TestResponseResult {
+	if x != nil {
+		return x.Result
 	}
 	return TestResponse_SUCCESS
 }
 
-func init() {
-	proto.RegisterEnum("omci.TestResponse_TestResponseResult", TestResponse_TestResponseResult_name, TestResponse_TestResponseResult_value)
-	proto.RegisterType((*OmciTestRequest)(nil), "omci.OmciTestRequest")
-	proto.RegisterType((*TestResponse)(nil), "omci.TestResponse")
+var File_voltha_protos_omci_test_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_omci_test_proto_rawDesc = "" +
+	"\n" +
+	"\x1dvoltha_protos/omci_test.proto\x12\x04omci\"5\n" +
+	"\x0fOmciTestRequest\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
+	"\x04uuid\x18\x02 \x01(\tR\x04uuid\"}\n" +
+	"\fTestResponse\x12=\n" +
+	"\x06result\x18\x01 \x01(\x0e2%.omci.TestResponse.TestResponseResultR\x06result\".\n" +
+	"\x12TestResponseResult\x12\v\n" +
+	"\aSUCCESS\x10\x00\x12\v\n" +
+	"\aFAILURE\x10\x01BH\n" +
+	"\x18org.opencord.voltha.omciZ,github.com/opencord/voltha-protos/v5/go/omcib\x06proto3"
+
+var (
+	file_voltha_protos_omci_test_proto_rawDescOnce sync.Once
+	file_voltha_protos_omci_test_proto_rawDescData []byte
+)
+
+func file_voltha_protos_omci_test_proto_rawDescGZIP() []byte {
+	file_voltha_protos_omci_test_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_omci_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_test_proto_rawDesc), len(file_voltha_protos_omci_test_proto_rawDesc)))
+	})
+	return file_voltha_protos_omci_test_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/omci_test.proto", fileDescriptor_146dc5f97baf9397) }
+var file_voltha_protos_omci_test_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_voltha_protos_omci_test_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_voltha_protos_omci_test_proto_goTypes = []any{
+	(TestResponse_TestResponseResult)(0), // 0: omci.TestResponse.TestResponseResult
+	(*OmciTestRequest)(nil),              // 1: omci.OmciTestRequest
+	(*TestResponse)(nil),                 // 2: omci.TestResponse
+}
+var file_voltha_protos_omci_test_proto_depIdxs = []int32{
+	0, // 0: omci.TestResponse.result:type_name -> omci.TestResponse.TestResponseResult
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
 
-var fileDescriptor_146dc5f97baf9397 = []byte{
-	// 230 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2d, 0xcb, 0xcf, 0x29,
-	0xc9, 0x48, 0x8c, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x2f, 0xd6, 0xcf, 0xcf, 0x4d, 0xce, 0x8c, 0x2f,
-	0x49, 0x2d, 0x2e, 0xd1, 0x03, 0x0b, 0x08, 0xb1, 0x80, 0x04, 0x94, 0x4c, 0xb9, 0xf8, 0xfd, 0x73,
-	0x93, 0x33, 0x43, 0x52, 0x8b, 0x4b, 0x82, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84, 0xf8, 0xb8,
-	0x98, 0x32, 0x53, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0x98, 0x32, 0x53, 0x84, 0x84, 0xb8,
-	0x58, 0x4a, 0x4b, 0x33, 0x53, 0x24, 0x98, 0xc0, 0x22, 0x60, 0xb6, 0x52, 0x2d, 0x17, 0x0f, 0x44,
-	0x4b, 0x71, 0x41, 0x7e, 0x5e, 0x71, 0xaa, 0x90, 0x2d, 0x17, 0x5b, 0x51, 0x6a, 0x71, 0x69, 0x4e,
-	0x09, 0x58, 0x1f, 0x9f, 0x91, 0xaa, 0x1e, 0xc8, 0x74, 0x3d, 0x64, 0x35, 0x28, 0x9c, 0x20, 0xb0,
-	0xe2, 0x20, 0xa8, 0x26, 0x25, 0x3d, 0x2e, 0x21, 0x4c, 0x59, 0x21, 0x6e, 0x2e, 0xf6, 0xe0, 0x50,
-	0x67, 0x67, 0xd7, 0xe0, 0x60, 0x01, 0x06, 0x10, 0xc7, 0xcd, 0xd1, 0xd3, 0x27, 0x34, 0xc8, 0x55,
-	0x80, 0xd1, 0xc9, 0x83, 0x4b, 0x22, 0xbf, 0x28, 0x5d, 0x2f, 0xbf, 0x20, 0x35, 0x2f, 0x39, 0xbf,
-	0x28, 0x45, 0x0f, 0xe2, 0x53, 0xb0, 0x9d, 0x51, 0x3a, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a,
-	0xc9, 0xf9, 0xb9, 0xfa, 0x30, 0x05, 0xfa, 0x10, 0x05, 0xba, 0xd0, 0xa0, 0x28, 0x33, 0xd5, 0x4f,
-	0xcf, 0x07, 0x07, 0x48, 0x12, 0x1b, 0x58, 0xc8, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x85, 0xc9,
-	0x07, 0x50, 0x2d, 0x01, 0x00, 0x00,
+func init() { file_voltha_protos_omci_test_proto_init() }
+func file_voltha_protos_omci_test_proto_init() {
+	if File_voltha_protos_omci_test_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_test_proto_rawDesc), len(file_voltha_protos_omci_test_proto_rawDesc)),
+			NumEnums:      1,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_omci_test_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_omci_test_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_omci_test_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_omci_test_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_omci_test_proto = out.File
+	file_voltha_protos_omci_test_proto_goTypes = nil
+	file_voltha_protos_omci_test_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/openflow_13/openflow_13.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/openflow_13/openflow_13.pb.go
index 18505f0..4c107e9 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/openflow_13/openflow_13.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/openflow_13/openflow_13.pb.go
@@ -1,25 +1,82 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford
+// Junior University
+// Copyright 2011-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// We are making the OpenFlow specification and associated documentation
+// (Software) available for public use and benefit with the expectation
+// that others will use, modify and enhance the Software and contribute
+// those enhancements back to the community. However, since we would
+// like to make the Software available for broadest use, with as few
+// restrictions as possible permission is hereby granted, free of
+// charge, to any person obtaining a copy of this Software to deal in
+// the Software under the copyrights without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+//
+// The name and trademarks of copyright holder(s) may NOT be used in
+// advertising or publicity pertaining to the Software or any
+// derivatives without specific, written prior permission.
+
+// OpenFlow: protocol between controller and datapath.
+
+//
+// This is a relatively straightforward rendering of OpenFlow message
+// definitions into protocol buffer messages. We preserved the snake
+// case syntax, and made the following changes:
+// - all pad fields dropped
+// - for each enum value above 0x7fffffff the MSB is dropped. For example,
+//   0xffffffff is now 0x7fffffff.
+// - '<type> thing[...]' is replaced with 'repeated <type> thing'
+// - 'char thing[...]' is replaced with 'string thing'
+// - 'uint8_t data[...]' is replaced with 'bytes data'
+// - the following systematic changes are done to various integer types:
+//   uint8_t  -> uint32
+//   uint16_t -> uint32
+//   uint32_t -> uint32
+//   uint64_t -> uint64
+// - removed most length, len, size fields where these values can be determined
+//   from the explicitly encoded length of "repeated" protobuf fields.
+// - explicit use of enum types whereever it is unambigous (and not used as
+//   bitmask/flags value.
+//
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/openflow_13.proto
 
 package openflow_13
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 // Port numbering. Ports are numbered starting from 1.
 type OfpPortNo int32
@@ -31,165 +88,207 @@
 	// Reserved OpenFlow Port (fake output "ports").
 	OfpPortNo_OFPP_IN_PORT    OfpPortNo = 2147483640
 	OfpPortNo_OFPP_TABLE      OfpPortNo = 2147483641
-	OfpPortNo_OFPP_NORMAL     OfpPortNo = 2147483642
-	OfpPortNo_OFPP_FLOOD      OfpPortNo = 2147483643
-	OfpPortNo_OFPP_ALL        OfpPortNo = 2147483644
-	OfpPortNo_OFPP_CONTROLLER OfpPortNo = 2147483645
-	OfpPortNo_OFPP_LOCAL      OfpPortNo = 2147483646
+	OfpPortNo_OFPP_NORMAL     OfpPortNo = 2147483642 // Forward using non-OpenFlow pipeline.
+	OfpPortNo_OFPP_FLOOD      OfpPortNo = 2147483643 // Flood using non-OpenFlow pipeline.
+	OfpPortNo_OFPP_ALL        OfpPortNo = 2147483644 // All standard ports except input port.
+	OfpPortNo_OFPP_CONTROLLER OfpPortNo = 2147483645 // Send to controller.
+	OfpPortNo_OFPP_LOCAL      OfpPortNo = 2147483646 // Local openflow "port".
 	OfpPortNo_OFPP_ANY        OfpPortNo = 2147483647
 )
 
-var OfpPortNo_name = map[int32]string{
-	0:          "OFPP_INVALID",
-	2147483392: "OFPP_MAX",
-	2147483640: "OFPP_IN_PORT",
-	2147483641: "OFPP_TABLE",
-	2147483642: "OFPP_NORMAL",
-	2147483643: "OFPP_FLOOD",
-	2147483644: "OFPP_ALL",
-	2147483645: "OFPP_CONTROLLER",
-	2147483646: "OFPP_LOCAL",
-	2147483647: "OFPP_ANY",
-}
+// Enum value maps for OfpPortNo.
+var (
+	OfpPortNo_name = map[int32]string{
+		0:          "OFPP_INVALID",
+		2147483392: "OFPP_MAX",
+		2147483640: "OFPP_IN_PORT",
+		2147483641: "OFPP_TABLE",
+		2147483642: "OFPP_NORMAL",
+		2147483643: "OFPP_FLOOD",
+		2147483644: "OFPP_ALL",
+		2147483645: "OFPP_CONTROLLER",
+		2147483646: "OFPP_LOCAL",
+		2147483647: "OFPP_ANY",
+	}
+	OfpPortNo_value = map[string]int32{
+		"OFPP_INVALID":    0,
+		"OFPP_MAX":        2147483392,
+		"OFPP_IN_PORT":    2147483640,
+		"OFPP_TABLE":      2147483641,
+		"OFPP_NORMAL":     2147483642,
+		"OFPP_FLOOD":      2147483643,
+		"OFPP_ALL":        2147483644,
+		"OFPP_CONTROLLER": 2147483645,
+		"OFPP_LOCAL":      2147483646,
+		"OFPP_ANY":        2147483647,
+	}
+)
 
-var OfpPortNo_value = map[string]int32{
-	"OFPP_INVALID":    0,
-	"OFPP_MAX":        2147483392,
-	"OFPP_IN_PORT":    2147483640,
-	"OFPP_TABLE":      2147483641,
-	"OFPP_NORMAL":     2147483642,
-	"OFPP_FLOOD":      2147483643,
-	"OFPP_ALL":        2147483644,
-	"OFPP_CONTROLLER": 2147483645,
-	"OFPP_LOCAL":      2147483646,
-	"OFPP_ANY":        2147483647,
+func (x OfpPortNo) Enum() *OfpPortNo {
+	p := new(OfpPortNo)
+	*p = x
+	return p
 }
 
 func (x OfpPortNo) String() string {
-	return proto.EnumName(OfpPortNo_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortNo) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[0].Descriptor()
+}
+
+func (OfpPortNo) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[0]
+}
+
+func (x OfpPortNo) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortNo.Descriptor instead.
 func (OfpPortNo) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{0}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{0}
 }
 
 type OfpType int32
 
 const (
 	// Immutable messages.
-	OfpType_OFPT_HELLO        OfpType = 0
-	OfpType_OFPT_ERROR        OfpType = 1
-	OfpType_OFPT_ECHO_REQUEST OfpType = 2
-	OfpType_OFPT_ECHO_REPLY   OfpType = 3
-	OfpType_OFPT_EXPERIMENTER OfpType = 4
+	OfpType_OFPT_HELLO        OfpType = 0 // Symmetric message
+	OfpType_OFPT_ERROR        OfpType = 1 // Symmetric message
+	OfpType_OFPT_ECHO_REQUEST OfpType = 2 // Symmetric message
+	OfpType_OFPT_ECHO_REPLY   OfpType = 3 // Symmetric message
+	OfpType_OFPT_EXPERIMENTER OfpType = 4 // Symmetric message
 	// Switch configuration messages.
-	OfpType_OFPT_FEATURES_REQUEST   OfpType = 5
-	OfpType_OFPT_FEATURES_REPLY     OfpType = 6
-	OfpType_OFPT_GET_CONFIG_REQUEST OfpType = 7
-	OfpType_OFPT_GET_CONFIG_REPLY   OfpType = 8
-	OfpType_OFPT_SET_CONFIG         OfpType = 9
+	OfpType_OFPT_FEATURES_REQUEST   OfpType = 5 // Controller/switch message
+	OfpType_OFPT_FEATURES_REPLY     OfpType = 6 // Controller/switch message
+	OfpType_OFPT_GET_CONFIG_REQUEST OfpType = 7 // Controller/switch message
+	OfpType_OFPT_GET_CONFIG_REPLY   OfpType = 8 // Controller/switch message
+	OfpType_OFPT_SET_CONFIG         OfpType = 9 // Controller/switch message
 	// Asynchronous messages.
-	OfpType_OFPT_PACKET_IN    OfpType = 10
-	OfpType_OFPT_FLOW_REMOVED OfpType = 11
-	OfpType_OFPT_PORT_STATUS  OfpType = 12
+	OfpType_OFPT_PACKET_IN    OfpType = 10 // Async message
+	OfpType_OFPT_FLOW_REMOVED OfpType = 11 // Async message
+	OfpType_OFPT_PORT_STATUS  OfpType = 12 // Async message
 	// Controller command messages.
-	OfpType_OFPT_PACKET_OUT OfpType = 13
-	OfpType_OFPT_FLOW_MOD   OfpType = 14
-	OfpType_OFPT_GROUP_MOD  OfpType = 15
-	OfpType_OFPT_PORT_MOD   OfpType = 16
-	OfpType_OFPT_TABLE_MOD  OfpType = 17
+	OfpType_OFPT_PACKET_OUT OfpType = 13 // Controller/switch message
+	OfpType_OFPT_FLOW_MOD   OfpType = 14 // Controller/switch message
+	OfpType_OFPT_GROUP_MOD  OfpType = 15 // Controller/switch message
+	OfpType_OFPT_PORT_MOD   OfpType = 16 // Controller/switch message
+	OfpType_OFPT_TABLE_MOD  OfpType = 17 // Controller/switch message
 	// Multipart messages.
-	OfpType_OFPT_MULTIPART_REQUEST OfpType = 18
-	OfpType_OFPT_MULTIPART_REPLY   OfpType = 19
+	OfpType_OFPT_MULTIPART_REQUEST OfpType = 18 // Controller/switch message
+	OfpType_OFPT_MULTIPART_REPLY   OfpType = 19 // Controller/switch message
 	// Barrier messages.
-	OfpType_OFPT_BARRIER_REQUEST OfpType = 20
-	OfpType_OFPT_BARRIER_REPLY   OfpType = 21
+	OfpType_OFPT_BARRIER_REQUEST OfpType = 20 // Controller/switch message
+	OfpType_OFPT_BARRIER_REPLY   OfpType = 21 // Controller/switch message
 	// Queue Configuration messages.
-	OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST OfpType = 22
-	OfpType_OFPT_QUEUE_GET_CONFIG_REPLY   OfpType = 23
+	OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST OfpType = 22 // Controller/switch message
+	OfpType_OFPT_QUEUE_GET_CONFIG_REPLY   OfpType = 23 // Controller/switch message
 	// Controller role change request messages.
-	OfpType_OFPT_ROLE_REQUEST OfpType = 24
-	OfpType_OFPT_ROLE_REPLY   OfpType = 25
+	OfpType_OFPT_ROLE_REQUEST OfpType = 24 // Controller/switch message
+	OfpType_OFPT_ROLE_REPLY   OfpType = 25 // Controller/switch message
 	// Asynchronous message configuration.
-	OfpType_OFPT_GET_ASYNC_REQUEST OfpType = 26
-	OfpType_OFPT_GET_ASYNC_REPLY   OfpType = 27
-	OfpType_OFPT_SET_ASYNC         OfpType = 28
+	OfpType_OFPT_GET_ASYNC_REQUEST OfpType = 26 // Controller/switch message
+	OfpType_OFPT_GET_ASYNC_REPLY   OfpType = 27 // Controller/switch message
+	OfpType_OFPT_SET_ASYNC         OfpType = 28 // Controller/switch message
 	// Meters and rate limiters configuration messages.
-	OfpType_OFPT_METER_MOD OfpType = 29
+	OfpType_OFPT_METER_MOD OfpType = 29 // Controller/switch message
 )
 
-var OfpType_name = map[int32]string{
-	0:  "OFPT_HELLO",
-	1:  "OFPT_ERROR",
-	2:  "OFPT_ECHO_REQUEST",
-	3:  "OFPT_ECHO_REPLY",
-	4:  "OFPT_EXPERIMENTER",
-	5:  "OFPT_FEATURES_REQUEST",
-	6:  "OFPT_FEATURES_REPLY",
-	7:  "OFPT_GET_CONFIG_REQUEST",
-	8:  "OFPT_GET_CONFIG_REPLY",
-	9:  "OFPT_SET_CONFIG",
-	10: "OFPT_PACKET_IN",
-	11: "OFPT_FLOW_REMOVED",
-	12: "OFPT_PORT_STATUS",
-	13: "OFPT_PACKET_OUT",
-	14: "OFPT_FLOW_MOD",
-	15: "OFPT_GROUP_MOD",
-	16: "OFPT_PORT_MOD",
-	17: "OFPT_TABLE_MOD",
-	18: "OFPT_MULTIPART_REQUEST",
-	19: "OFPT_MULTIPART_REPLY",
-	20: "OFPT_BARRIER_REQUEST",
-	21: "OFPT_BARRIER_REPLY",
-	22: "OFPT_QUEUE_GET_CONFIG_REQUEST",
-	23: "OFPT_QUEUE_GET_CONFIG_REPLY",
-	24: "OFPT_ROLE_REQUEST",
-	25: "OFPT_ROLE_REPLY",
-	26: "OFPT_GET_ASYNC_REQUEST",
-	27: "OFPT_GET_ASYNC_REPLY",
-	28: "OFPT_SET_ASYNC",
-	29: "OFPT_METER_MOD",
-}
+// Enum value maps for OfpType.
+var (
+	OfpType_name = map[int32]string{
+		0:  "OFPT_HELLO",
+		1:  "OFPT_ERROR",
+		2:  "OFPT_ECHO_REQUEST",
+		3:  "OFPT_ECHO_REPLY",
+		4:  "OFPT_EXPERIMENTER",
+		5:  "OFPT_FEATURES_REQUEST",
+		6:  "OFPT_FEATURES_REPLY",
+		7:  "OFPT_GET_CONFIG_REQUEST",
+		8:  "OFPT_GET_CONFIG_REPLY",
+		9:  "OFPT_SET_CONFIG",
+		10: "OFPT_PACKET_IN",
+		11: "OFPT_FLOW_REMOVED",
+		12: "OFPT_PORT_STATUS",
+		13: "OFPT_PACKET_OUT",
+		14: "OFPT_FLOW_MOD",
+		15: "OFPT_GROUP_MOD",
+		16: "OFPT_PORT_MOD",
+		17: "OFPT_TABLE_MOD",
+		18: "OFPT_MULTIPART_REQUEST",
+		19: "OFPT_MULTIPART_REPLY",
+		20: "OFPT_BARRIER_REQUEST",
+		21: "OFPT_BARRIER_REPLY",
+		22: "OFPT_QUEUE_GET_CONFIG_REQUEST",
+		23: "OFPT_QUEUE_GET_CONFIG_REPLY",
+		24: "OFPT_ROLE_REQUEST",
+		25: "OFPT_ROLE_REPLY",
+		26: "OFPT_GET_ASYNC_REQUEST",
+		27: "OFPT_GET_ASYNC_REPLY",
+		28: "OFPT_SET_ASYNC",
+		29: "OFPT_METER_MOD",
+	}
+	OfpType_value = map[string]int32{
+		"OFPT_HELLO":                    0,
+		"OFPT_ERROR":                    1,
+		"OFPT_ECHO_REQUEST":             2,
+		"OFPT_ECHO_REPLY":               3,
+		"OFPT_EXPERIMENTER":             4,
+		"OFPT_FEATURES_REQUEST":         5,
+		"OFPT_FEATURES_REPLY":           6,
+		"OFPT_GET_CONFIG_REQUEST":       7,
+		"OFPT_GET_CONFIG_REPLY":         8,
+		"OFPT_SET_CONFIG":               9,
+		"OFPT_PACKET_IN":                10,
+		"OFPT_FLOW_REMOVED":             11,
+		"OFPT_PORT_STATUS":              12,
+		"OFPT_PACKET_OUT":               13,
+		"OFPT_FLOW_MOD":                 14,
+		"OFPT_GROUP_MOD":                15,
+		"OFPT_PORT_MOD":                 16,
+		"OFPT_TABLE_MOD":                17,
+		"OFPT_MULTIPART_REQUEST":        18,
+		"OFPT_MULTIPART_REPLY":          19,
+		"OFPT_BARRIER_REQUEST":          20,
+		"OFPT_BARRIER_REPLY":            21,
+		"OFPT_QUEUE_GET_CONFIG_REQUEST": 22,
+		"OFPT_QUEUE_GET_CONFIG_REPLY":   23,
+		"OFPT_ROLE_REQUEST":             24,
+		"OFPT_ROLE_REPLY":               25,
+		"OFPT_GET_ASYNC_REQUEST":        26,
+		"OFPT_GET_ASYNC_REPLY":          27,
+		"OFPT_SET_ASYNC":                28,
+		"OFPT_METER_MOD":                29,
+	}
+)
 
-var OfpType_value = map[string]int32{
-	"OFPT_HELLO":                    0,
-	"OFPT_ERROR":                    1,
-	"OFPT_ECHO_REQUEST":             2,
-	"OFPT_ECHO_REPLY":               3,
-	"OFPT_EXPERIMENTER":             4,
-	"OFPT_FEATURES_REQUEST":         5,
-	"OFPT_FEATURES_REPLY":           6,
-	"OFPT_GET_CONFIG_REQUEST":       7,
-	"OFPT_GET_CONFIG_REPLY":         8,
-	"OFPT_SET_CONFIG":               9,
-	"OFPT_PACKET_IN":                10,
-	"OFPT_FLOW_REMOVED":             11,
-	"OFPT_PORT_STATUS":              12,
-	"OFPT_PACKET_OUT":               13,
-	"OFPT_FLOW_MOD":                 14,
-	"OFPT_GROUP_MOD":                15,
-	"OFPT_PORT_MOD":                 16,
-	"OFPT_TABLE_MOD":                17,
-	"OFPT_MULTIPART_REQUEST":        18,
-	"OFPT_MULTIPART_REPLY":          19,
-	"OFPT_BARRIER_REQUEST":          20,
-	"OFPT_BARRIER_REPLY":            21,
-	"OFPT_QUEUE_GET_CONFIG_REQUEST": 22,
-	"OFPT_QUEUE_GET_CONFIG_REPLY":   23,
-	"OFPT_ROLE_REQUEST":             24,
-	"OFPT_ROLE_REPLY":               25,
-	"OFPT_GET_ASYNC_REQUEST":        26,
-	"OFPT_GET_ASYNC_REPLY":          27,
-	"OFPT_SET_ASYNC":                28,
-	"OFPT_METER_MOD":                29,
+func (x OfpType) Enum() *OfpType {
+	p := new(OfpType)
+	*p = x
+	return p
 }
 
 func (x OfpType) String() string {
-	return proto.EnumName(OfpType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[1].Descriptor()
+}
+
+func (OfpType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[1]
+}
+
+func (x OfpType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpType.Descriptor instead.
 func (OfpType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{1}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{1}
 }
 
 // Hello elements types.
@@ -197,57 +296,99 @@
 
 const (
 	OfpHelloElemType_OFPHET_INVALID       OfpHelloElemType = 0
-	OfpHelloElemType_OFPHET_VERSIONBITMAP OfpHelloElemType = 1
+	OfpHelloElemType_OFPHET_VERSIONBITMAP OfpHelloElemType = 1 // Bitmap of version supported.
 )
 
-var OfpHelloElemType_name = map[int32]string{
-	0: "OFPHET_INVALID",
-	1: "OFPHET_VERSIONBITMAP",
-}
+// Enum value maps for OfpHelloElemType.
+var (
+	OfpHelloElemType_name = map[int32]string{
+		0: "OFPHET_INVALID",
+		1: "OFPHET_VERSIONBITMAP",
+	}
+	OfpHelloElemType_value = map[string]int32{
+		"OFPHET_INVALID":       0,
+		"OFPHET_VERSIONBITMAP": 1,
+	}
+)
 
-var OfpHelloElemType_value = map[string]int32{
-	"OFPHET_INVALID":       0,
-	"OFPHET_VERSIONBITMAP": 1,
+func (x OfpHelloElemType) Enum() *OfpHelloElemType {
+	p := new(OfpHelloElemType)
+	*p = x
+	return p
 }
 
 func (x OfpHelloElemType) String() string {
-	return proto.EnumName(OfpHelloElemType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpHelloElemType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[2].Descriptor()
+}
+
+func (OfpHelloElemType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[2]
+}
+
+func (x OfpHelloElemType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpHelloElemType.Descriptor instead.
 func (OfpHelloElemType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{2}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{2}
 }
 
 type OfpConfigFlags int32
 
 const (
 	// Handling of IP fragments.
-	OfpConfigFlags_OFPC_FRAG_NORMAL OfpConfigFlags = 0
-	OfpConfigFlags_OFPC_FRAG_DROP   OfpConfigFlags = 1
-	OfpConfigFlags_OFPC_FRAG_REASM  OfpConfigFlags = 2
-	OfpConfigFlags_OFPC_FRAG_MASK   OfpConfigFlags = 3
+	OfpConfigFlags_OFPC_FRAG_NORMAL OfpConfigFlags = 0 // No special handling for fragments.
+	OfpConfigFlags_OFPC_FRAG_DROP   OfpConfigFlags = 1 // Drop fragments.
+	OfpConfigFlags_OFPC_FRAG_REASM  OfpConfigFlags = 2 // Reassemble (only if OFPC_IP_REASM set).
+	OfpConfigFlags_OFPC_FRAG_MASK   OfpConfigFlags = 3 // Bitmask of flags dealing with frag.
 )
 
-var OfpConfigFlags_name = map[int32]string{
-	0: "OFPC_FRAG_NORMAL",
-	1: "OFPC_FRAG_DROP",
-	2: "OFPC_FRAG_REASM",
-	3: "OFPC_FRAG_MASK",
-}
+// Enum value maps for OfpConfigFlags.
+var (
+	OfpConfigFlags_name = map[int32]string{
+		0: "OFPC_FRAG_NORMAL",
+		1: "OFPC_FRAG_DROP",
+		2: "OFPC_FRAG_REASM",
+		3: "OFPC_FRAG_MASK",
+	}
+	OfpConfigFlags_value = map[string]int32{
+		"OFPC_FRAG_NORMAL": 0,
+		"OFPC_FRAG_DROP":   1,
+		"OFPC_FRAG_REASM":  2,
+		"OFPC_FRAG_MASK":   3,
+	}
+)
 
-var OfpConfigFlags_value = map[string]int32{
-	"OFPC_FRAG_NORMAL": 0,
-	"OFPC_FRAG_DROP":   1,
-	"OFPC_FRAG_REASM":  2,
-	"OFPC_FRAG_MASK":   3,
+func (x OfpConfigFlags) Enum() *OfpConfigFlags {
+	p := new(OfpConfigFlags)
+	*p = x
+	return p
 }
 
 func (x OfpConfigFlags) String() string {
-	return proto.EnumName(OfpConfigFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpConfigFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[3].Descriptor()
+}
+
+func (OfpConfigFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[3]
+}
+
+func (x OfpConfigFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpConfigFlags.Descriptor instead.
 func (OfpConfigFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{3}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{3}
 }
 
 // Flags to configure the table. Reserved for future use.
@@ -255,25 +396,46 @@
 
 const (
 	OfpTableConfig_OFPTC_INVALID         OfpTableConfig = 0
-	OfpTableConfig_OFPTC_DEPRECATED_MASK OfpTableConfig = 3
+	OfpTableConfig_OFPTC_DEPRECATED_MASK OfpTableConfig = 3 // Deprecated bits
 )
 
-var OfpTableConfig_name = map[int32]string{
-	0: "OFPTC_INVALID",
-	3: "OFPTC_DEPRECATED_MASK",
-}
+// Enum value maps for OfpTableConfig.
+var (
+	OfpTableConfig_name = map[int32]string{
+		0: "OFPTC_INVALID",
+		3: "OFPTC_DEPRECATED_MASK",
+	}
+	OfpTableConfig_value = map[string]int32{
+		"OFPTC_INVALID":         0,
+		"OFPTC_DEPRECATED_MASK": 3,
+	}
+)
 
-var OfpTableConfig_value = map[string]int32{
-	"OFPTC_INVALID":         0,
-	"OFPTC_DEPRECATED_MASK": 3,
+func (x OfpTableConfig) Enum() *OfpTableConfig {
+	p := new(OfpTableConfig)
+	*p = x
+	return p
 }
 
 func (x OfpTableConfig) String() string {
-	return proto.EnumName(OfpTableConfig_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableConfig) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[4].Descriptor()
+}
+
+func (OfpTableConfig) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[4]
+}
+
+func (x OfpTableConfig) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableConfig.Descriptor instead.
 func (OfpTableConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{4}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{4}
 }
 
 // Table numbering. Tables can use any number up to OFPT_MAX.
@@ -287,24 +449,45 @@
 	OfpTable_OFPTT_ALL OfpTable = 255
 )
 
-var OfpTable_name = map[int32]string{
-	0:   "OFPTT_INVALID",
-	254: "OFPTT_MAX",
-	255: "OFPTT_ALL",
-}
+// Enum value maps for OfpTable.
+var (
+	OfpTable_name = map[int32]string{
+		0:   "OFPTT_INVALID",
+		254: "OFPTT_MAX",
+		255: "OFPTT_ALL",
+	}
+	OfpTable_value = map[string]int32{
+		"OFPTT_INVALID": 0,
+		"OFPTT_MAX":     254,
+		"OFPTT_ALL":     255,
+	}
+)
 
-var OfpTable_value = map[string]int32{
-	"OFPTT_INVALID": 0,
-	"OFPTT_MAX":     254,
-	"OFPTT_ALL":     255,
+func (x OfpTable) Enum() *OfpTable {
+	p := new(OfpTable)
+	*p = x
+	return p
 }
 
 func (x OfpTable) String() string {
-	return proto.EnumName(OfpTable_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTable) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[5].Descriptor()
+}
+
+func (OfpTable) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[5]
+}
+
+func (x OfpTable) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTable.Descriptor instead.
 func (OfpTable) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{5}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{5}
 }
 
 // Capabilities supported by the datapath.
@@ -312,43 +495,64 @@
 
 const (
 	OfpCapabilities_OFPC_INVALID      OfpCapabilities = 0
-	OfpCapabilities_OFPC_FLOW_STATS   OfpCapabilities = 1
-	OfpCapabilities_OFPC_TABLE_STATS  OfpCapabilities = 2
-	OfpCapabilities_OFPC_PORT_STATS   OfpCapabilities = 4
-	OfpCapabilities_OFPC_GROUP_STATS  OfpCapabilities = 8
-	OfpCapabilities_OFPC_IP_REASM     OfpCapabilities = 32
-	OfpCapabilities_OFPC_QUEUE_STATS  OfpCapabilities = 64
-	OfpCapabilities_OFPC_PORT_BLOCKED OfpCapabilities = 256
+	OfpCapabilities_OFPC_FLOW_STATS   OfpCapabilities = 1   // Flow statistics.
+	OfpCapabilities_OFPC_TABLE_STATS  OfpCapabilities = 2   // Table statistics.
+	OfpCapabilities_OFPC_PORT_STATS   OfpCapabilities = 4   // Port statistics.
+	OfpCapabilities_OFPC_GROUP_STATS  OfpCapabilities = 8   // Group statistics.
+	OfpCapabilities_OFPC_IP_REASM     OfpCapabilities = 32  // Can reassemble IP fragments.
+	OfpCapabilities_OFPC_QUEUE_STATS  OfpCapabilities = 64  // Queue statistics.
+	OfpCapabilities_OFPC_PORT_BLOCKED OfpCapabilities = 256 // Switch will block looping ports.
 )
 
-var OfpCapabilities_name = map[int32]string{
-	0:   "OFPC_INVALID",
-	1:   "OFPC_FLOW_STATS",
-	2:   "OFPC_TABLE_STATS",
-	4:   "OFPC_PORT_STATS",
-	8:   "OFPC_GROUP_STATS",
-	32:  "OFPC_IP_REASM",
-	64:  "OFPC_QUEUE_STATS",
-	256: "OFPC_PORT_BLOCKED",
-}
+// Enum value maps for OfpCapabilities.
+var (
+	OfpCapabilities_name = map[int32]string{
+		0:   "OFPC_INVALID",
+		1:   "OFPC_FLOW_STATS",
+		2:   "OFPC_TABLE_STATS",
+		4:   "OFPC_PORT_STATS",
+		8:   "OFPC_GROUP_STATS",
+		32:  "OFPC_IP_REASM",
+		64:  "OFPC_QUEUE_STATS",
+		256: "OFPC_PORT_BLOCKED",
+	}
+	OfpCapabilities_value = map[string]int32{
+		"OFPC_INVALID":      0,
+		"OFPC_FLOW_STATS":   1,
+		"OFPC_TABLE_STATS":  2,
+		"OFPC_PORT_STATS":   4,
+		"OFPC_GROUP_STATS":  8,
+		"OFPC_IP_REASM":     32,
+		"OFPC_QUEUE_STATS":  64,
+		"OFPC_PORT_BLOCKED": 256,
+	}
+)
 
-var OfpCapabilities_value = map[string]int32{
-	"OFPC_INVALID":      0,
-	"OFPC_FLOW_STATS":   1,
-	"OFPC_TABLE_STATS":  2,
-	"OFPC_PORT_STATS":   4,
-	"OFPC_GROUP_STATS":  8,
-	"OFPC_IP_REASM":     32,
-	"OFPC_QUEUE_STATS":  64,
-	"OFPC_PORT_BLOCKED": 256,
+func (x OfpCapabilities) Enum() *OfpCapabilities {
+	p := new(OfpCapabilities)
+	*p = x
+	return p
 }
 
 func (x OfpCapabilities) String() string {
-	return proto.EnumName(OfpCapabilities_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpCapabilities) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[6].Descriptor()
+}
+
+func (OfpCapabilities) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[6]
+}
+
+func (x OfpCapabilities) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpCapabilities.Descriptor instead.
 func (OfpCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{6}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{6}
 }
 
 // Flags to indicate behavior of the physical port.  These flags are
@@ -358,34 +562,55 @@
 
 const (
 	OfpPortConfig_OFPPC_INVALID      OfpPortConfig = 0
-	OfpPortConfig_OFPPC_PORT_DOWN    OfpPortConfig = 1
-	OfpPortConfig_OFPPC_NO_RECV      OfpPortConfig = 4
-	OfpPortConfig_OFPPC_NO_FWD       OfpPortConfig = 32
-	OfpPortConfig_OFPPC_NO_PACKET_IN OfpPortConfig = 64
+	OfpPortConfig_OFPPC_PORT_DOWN    OfpPortConfig = 1  // Port is administratively down.
+	OfpPortConfig_OFPPC_NO_RECV      OfpPortConfig = 4  // Drop all packets received by port.
+	OfpPortConfig_OFPPC_NO_FWD       OfpPortConfig = 32 // Drop packets forwarded to port.
+	OfpPortConfig_OFPPC_NO_PACKET_IN OfpPortConfig = 64 // Do not send packet-in msgs for port.
 )
 
-var OfpPortConfig_name = map[int32]string{
-	0:  "OFPPC_INVALID",
-	1:  "OFPPC_PORT_DOWN",
-	4:  "OFPPC_NO_RECV",
-	32: "OFPPC_NO_FWD",
-	64: "OFPPC_NO_PACKET_IN",
-}
+// Enum value maps for OfpPortConfig.
+var (
+	OfpPortConfig_name = map[int32]string{
+		0:  "OFPPC_INVALID",
+		1:  "OFPPC_PORT_DOWN",
+		4:  "OFPPC_NO_RECV",
+		32: "OFPPC_NO_FWD",
+		64: "OFPPC_NO_PACKET_IN",
+	}
+	OfpPortConfig_value = map[string]int32{
+		"OFPPC_INVALID":      0,
+		"OFPPC_PORT_DOWN":    1,
+		"OFPPC_NO_RECV":      4,
+		"OFPPC_NO_FWD":       32,
+		"OFPPC_NO_PACKET_IN": 64,
+	}
+)
 
-var OfpPortConfig_value = map[string]int32{
-	"OFPPC_INVALID":      0,
-	"OFPPC_PORT_DOWN":    1,
-	"OFPPC_NO_RECV":      4,
-	"OFPPC_NO_FWD":       32,
-	"OFPPC_NO_PACKET_IN": 64,
+func (x OfpPortConfig) Enum() *OfpPortConfig {
+	p := new(OfpPortConfig)
+	*p = x
+	return p
 }
 
 func (x OfpPortConfig) String() string {
-	return proto.EnumName(OfpPortConfig_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortConfig) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[7].Descriptor()
+}
+
+func (OfpPortConfig) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[7]
+}
+
+func (x OfpPortConfig) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortConfig.Descriptor instead.
 func (OfpPortConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{7}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{7}
 }
 
 // Current state of the physical port.  These are not configurable from
@@ -394,31 +619,52 @@
 
 const (
 	OfpPortState_OFPPS_INVALID   OfpPortState = 0
-	OfpPortState_OFPPS_LINK_DOWN OfpPortState = 1
-	OfpPortState_OFPPS_BLOCKED   OfpPortState = 2
-	OfpPortState_OFPPS_LIVE      OfpPortState = 4
+	OfpPortState_OFPPS_LINK_DOWN OfpPortState = 1 // No physical link present.
+	OfpPortState_OFPPS_BLOCKED   OfpPortState = 2 // Port is blocked
+	OfpPortState_OFPPS_LIVE      OfpPortState = 4 // Live for Fast Failover Group.
 )
 
-var OfpPortState_name = map[int32]string{
-	0: "OFPPS_INVALID",
-	1: "OFPPS_LINK_DOWN",
-	2: "OFPPS_BLOCKED",
-	4: "OFPPS_LIVE",
-}
+// Enum value maps for OfpPortState.
+var (
+	OfpPortState_name = map[int32]string{
+		0: "OFPPS_INVALID",
+		1: "OFPPS_LINK_DOWN",
+		2: "OFPPS_BLOCKED",
+		4: "OFPPS_LIVE",
+	}
+	OfpPortState_value = map[string]int32{
+		"OFPPS_INVALID":   0,
+		"OFPPS_LINK_DOWN": 1,
+		"OFPPS_BLOCKED":   2,
+		"OFPPS_LIVE":      4,
+	}
+)
 
-var OfpPortState_value = map[string]int32{
-	"OFPPS_INVALID":   0,
-	"OFPPS_LINK_DOWN": 1,
-	"OFPPS_BLOCKED":   2,
-	"OFPPS_LIVE":      4,
+func (x OfpPortState) Enum() *OfpPortState {
+	p := new(OfpPortState)
+	*p = x
+	return p
 }
 
 func (x OfpPortState) String() string {
-	return proto.EnumName(OfpPortState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[8].Descriptor()
+}
+
+func (OfpPortState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[8]
+}
+
+func (x OfpPortState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortState.Descriptor instead.
 func (OfpPortState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{8}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{8}
 }
 
 // Features of ports available in a datapath.
@@ -426,125 +672,188 @@
 
 const (
 	OfpPortFeatures_OFPPF_INVALID    OfpPortFeatures = 0
-	OfpPortFeatures_OFPPF_10MB_HD    OfpPortFeatures = 1
-	OfpPortFeatures_OFPPF_10MB_FD    OfpPortFeatures = 2
-	OfpPortFeatures_OFPPF_100MB_HD   OfpPortFeatures = 4
-	OfpPortFeatures_OFPPF_100MB_FD   OfpPortFeatures = 8
-	OfpPortFeatures_OFPPF_1GB_HD     OfpPortFeatures = 16
-	OfpPortFeatures_OFPPF_1GB_FD     OfpPortFeatures = 32
-	OfpPortFeatures_OFPPF_10GB_FD    OfpPortFeatures = 64
-	OfpPortFeatures_OFPPF_40GB_FD    OfpPortFeatures = 128
-	OfpPortFeatures_OFPPF_100GB_FD   OfpPortFeatures = 256
-	OfpPortFeatures_OFPPF_1TB_FD     OfpPortFeatures = 512
-	OfpPortFeatures_OFPPF_OTHER      OfpPortFeatures = 1024
-	OfpPortFeatures_OFPPF_COPPER     OfpPortFeatures = 2048
-	OfpPortFeatures_OFPPF_FIBER      OfpPortFeatures = 4096
-	OfpPortFeatures_OFPPF_AUTONEG    OfpPortFeatures = 8192
-	OfpPortFeatures_OFPPF_PAUSE      OfpPortFeatures = 16384
-	OfpPortFeatures_OFPPF_PAUSE_ASYM OfpPortFeatures = 32768
+	OfpPortFeatures_OFPPF_10MB_HD    OfpPortFeatures = 1     // 10 Mb half-duplex rate support.
+	OfpPortFeatures_OFPPF_10MB_FD    OfpPortFeatures = 2     // 10 Mb full-duplex rate support.
+	OfpPortFeatures_OFPPF_100MB_HD   OfpPortFeatures = 4     // 100 Mb half-duplex rate support.
+	OfpPortFeatures_OFPPF_100MB_FD   OfpPortFeatures = 8     // 100 Mb full-duplex rate support.
+	OfpPortFeatures_OFPPF_1GB_HD     OfpPortFeatures = 16    // 1 Gb half-duplex rate support.
+	OfpPortFeatures_OFPPF_1GB_FD     OfpPortFeatures = 32    // 1 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_10GB_FD    OfpPortFeatures = 64    // 10 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_40GB_FD    OfpPortFeatures = 128   // 40 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_100GB_FD   OfpPortFeatures = 256   // 100 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_1TB_FD     OfpPortFeatures = 512   // 1 Tb full-duplex rate support.
+	OfpPortFeatures_OFPPF_OTHER      OfpPortFeatures = 1024  // Other rate, not in the list.
+	OfpPortFeatures_OFPPF_COPPER     OfpPortFeatures = 2048  // Copper medium.
+	OfpPortFeatures_OFPPF_FIBER      OfpPortFeatures = 4096  // Fiber medium.
+	OfpPortFeatures_OFPPF_AUTONEG    OfpPortFeatures = 8192  // Auto-negotiation.
+	OfpPortFeatures_OFPPF_PAUSE      OfpPortFeatures = 16384 // Pause.
+	OfpPortFeatures_OFPPF_PAUSE_ASYM OfpPortFeatures = 32768 // Asymmetric pause.
 )
 
-var OfpPortFeatures_name = map[int32]string{
-	0:     "OFPPF_INVALID",
-	1:     "OFPPF_10MB_HD",
-	2:     "OFPPF_10MB_FD",
-	4:     "OFPPF_100MB_HD",
-	8:     "OFPPF_100MB_FD",
-	16:    "OFPPF_1GB_HD",
-	32:    "OFPPF_1GB_FD",
-	64:    "OFPPF_10GB_FD",
-	128:   "OFPPF_40GB_FD",
-	256:   "OFPPF_100GB_FD",
-	512:   "OFPPF_1TB_FD",
-	1024:  "OFPPF_OTHER",
-	2048:  "OFPPF_COPPER",
-	4096:  "OFPPF_FIBER",
-	8192:  "OFPPF_AUTONEG",
-	16384: "OFPPF_PAUSE",
-	32768: "OFPPF_PAUSE_ASYM",
-}
+// Enum value maps for OfpPortFeatures.
+var (
+	OfpPortFeatures_name = map[int32]string{
+		0:     "OFPPF_INVALID",
+		1:     "OFPPF_10MB_HD",
+		2:     "OFPPF_10MB_FD",
+		4:     "OFPPF_100MB_HD",
+		8:     "OFPPF_100MB_FD",
+		16:    "OFPPF_1GB_HD",
+		32:    "OFPPF_1GB_FD",
+		64:    "OFPPF_10GB_FD",
+		128:   "OFPPF_40GB_FD",
+		256:   "OFPPF_100GB_FD",
+		512:   "OFPPF_1TB_FD",
+		1024:  "OFPPF_OTHER",
+		2048:  "OFPPF_COPPER",
+		4096:  "OFPPF_FIBER",
+		8192:  "OFPPF_AUTONEG",
+		16384: "OFPPF_PAUSE",
+		32768: "OFPPF_PAUSE_ASYM",
+	}
+	OfpPortFeatures_value = map[string]int32{
+		"OFPPF_INVALID":    0,
+		"OFPPF_10MB_HD":    1,
+		"OFPPF_10MB_FD":    2,
+		"OFPPF_100MB_HD":   4,
+		"OFPPF_100MB_FD":   8,
+		"OFPPF_1GB_HD":     16,
+		"OFPPF_1GB_FD":     32,
+		"OFPPF_10GB_FD":    64,
+		"OFPPF_40GB_FD":    128,
+		"OFPPF_100GB_FD":   256,
+		"OFPPF_1TB_FD":     512,
+		"OFPPF_OTHER":      1024,
+		"OFPPF_COPPER":     2048,
+		"OFPPF_FIBER":      4096,
+		"OFPPF_AUTONEG":    8192,
+		"OFPPF_PAUSE":      16384,
+		"OFPPF_PAUSE_ASYM": 32768,
+	}
+)
 
-var OfpPortFeatures_value = map[string]int32{
-	"OFPPF_INVALID":    0,
-	"OFPPF_10MB_HD":    1,
-	"OFPPF_10MB_FD":    2,
-	"OFPPF_100MB_HD":   4,
-	"OFPPF_100MB_FD":   8,
-	"OFPPF_1GB_HD":     16,
-	"OFPPF_1GB_FD":     32,
-	"OFPPF_10GB_FD":    64,
-	"OFPPF_40GB_FD":    128,
-	"OFPPF_100GB_FD":   256,
-	"OFPPF_1TB_FD":     512,
-	"OFPPF_OTHER":      1024,
-	"OFPPF_COPPER":     2048,
-	"OFPPF_FIBER":      4096,
-	"OFPPF_AUTONEG":    8192,
-	"OFPPF_PAUSE":      16384,
-	"OFPPF_PAUSE_ASYM": 32768,
+func (x OfpPortFeatures) Enum() *OfpPortFeatures {
+	p := new(OfpPortFeatures)
+	*p = x
+	return p
 }
 
 func (x OfpPortFeatures) String() string {
-	return proto.EnumName(OfpPortFeatures_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortFeatures) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[9].Descriptor()
+}
+
+func (OfpPortFeatures) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[9]
+}
+
+func (x OfpPortFeatures) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortFeatures.Descriptor instead.
 func (OfpPortFeatures) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{9}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{9}
 }
 
 // What changed about the physical port
 type OfpPortReason int32
 
 const (
-	OfpPortReason_OFPPR_ADD    OfpPortReason = 0
-	OfpPortReason_OFPPR_DELETE OfpPortReason = 1
-	OfpPortReason_OFPPR_MODIFY OfpPortReason = 2
+	OfpPortReason_OFPPR_ADD    OfpPortReason = 0 // The port was added.
+	OfpPortReason_OFPPR_DELETE OfpPortReason = 1 // The port was removed.
+	OfpPortReason_OFPPR_MODIFY OfpPortReason = 2 // Some attribute of the port has changed.
 )
 
-var OfpPortReason_name = map[int32]string{
-	0: "OFPPR_ADD",
-	1: "OFPPR_DELETE",
-	2: "OFPPR_MODIFY",
-}
+// Enum value maps for OfpPortReason.
+var (
+	OfpPortReason_name = map[int32]string{
+		0: "OFPPR_ADD",
+		1: "OFPPR_DELETE",
+		2: "OFPPR_MODIFY",
+	}
+	OfpPortReason_value = map[string]int32{
+		"OFPPR_ADD":    0,
+		"OFPPR_DELETE": 1,
+		"OFPPR_MODIFY": 2,
+	}
+)
 
-var OfpPortReason_value = map[string]int32{
-	"OFPPR_ADD":    0,
-	"OFPPR_DELETE": 1,
-	"OFPPR_MODIFY": 2,
+func (x OfpPortReason) Enum() *OfpPortReason {
+	p := new(OfpPortReason)
+	*p = x
+	return p
 }
 
 func (x OfpPortReason) String() string {
-	return proto.EnumName(OfpPortReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[10].Descriptor()
+}
+
+func (OfpPortReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[10]
+}
+
+func (x OfpPortReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortReason.Descriptor instead.
 func (OfpPortReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{10}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{10}
 }
 
 // What changed about the physical device
 type OfpDeviceConnection int32
 
 const (
-	OfpDeviceConnection_OFPDEV_CONNECTED    OfpDeviceConnection = 0
-	OfpDeviceConnection_OFPDEV_DISCONNECTED OfpDeviceConnection = 1
+	OfpDeviceConnection_OFPDEV_CONNECTED    OfpDeviceConnection = 0 // The device connected.
+	OfpDeviceConnection_OFPDEV_DISCONNECTED OfpDeviceConnection = 1 // The device disconnected.
 )
 
-var OfpDeviceConnection_name = map[int32]string{
-	0: "OFPDEV_CONNECTED",
-	1: "OFPDEV_DISCONNECTED",
-}
+// Enum value maps for OfpDeviceConnection.
+var (
+	OfpDeviceConnection_name = map[int32]string{
+		0: "OFPDEV_CONNECTED",
+		1: "OFPDEV_DISCONNECTED",
+	}
+	OfpDeviceConnection_value = map[string]int32{
+		"OFPDEV_CONNECTED":    0,
+		"OFPDEV_DISCONNECTED": 1,
+	}
+)
 
-var OfpDeviceConnection_value = map[string]int32{
-	"OFPDEV_CONNECTED":    0,
-	"OFPDEV_DISCONNECTED": 1,
+func (x OfpDeviceConnection) Enum() *OfpDeviceConnection {
+	p := new(OfpDeviceConnection)
+	*p = x
+	return p
 }
 
 func (x OfpDeviceConnection) String() string {
-	return proto.EnumName(OfpDeviceConnection_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpDeviceConnection) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[11].Descriptor()
+}
+
+func (OfpDeviceConnection) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[11]
+}
+
+func (x OfpDeviceConnection) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpDeviceConnection.Descriptor instead.
 func (OfpDeviceConnection) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{11}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{11}
 }
 
 // The match type indicates the match structure (set of fields that compose the
@@ -556,26 +865,47 @@
 type OfpMatchType int32
 
 const (
-	OfpMatchType_OFPMT_STANDARD OfpMatchType = 0
-	OfpMatchType_OFPMT_OXM      OfpMatchType = 1
+	OfpMatchType_OFPMT_STANDARD OfpMatchType = 0 // Deprecated.
+	OfpMatchType_OFPMT_OXM      OfpMatchType = 1 // OpenFlow Extensible Match
 )
 
-var OfpMatchType_name = map[int32]string{
-	0: "OFPMT_STANDARD",
-	1: "OFPMT_OXM",
-}
+// Enum value maps for OfpMatchType.
+var (
+	OfpMatchType_name = map[int32]string{
+		0: "OFPMT_STANDARD",
+		1: "OFPMT_OXM",
+	}
+	OfpMatchType_value = map[string]int32{
+		"OFPMT_STANDARD": 0,
+		"OFPMT_OXM":      1,
+	}
+)
 
-var OfpMatchType_value = map[string]int32{
-	"OFPMT_STANDARD": 0,
-	"OFPMT_OXM":      1,
+func (x OfpMatchType) Enum() *OfpMatchType {
+	p := new(OfpMatchType)
+	*p = x
+	return p
 }
 
 func (x OfpMatchType) String() string {
-	return proto.EnumName(OfpMatchType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMatchType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[12].Descriptor()
+}
+
+func (OfpMatchType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[12]
+}
+
+func (x OfpMatchType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMatchType.Descriptor instead.
 func (OfpMatchType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{12}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{12}
 }
 
 // OXM Class IDs.
@@ -585,172 +915,214 @@
 type OfpOxmClass int32
 
 const (
-	OfpOxmClass_OFPXMC_NXM_0          OfpOxmClass = 0
-	OfpOxmClass_OFPXMC_NXM_1          OfpOxmClass = 1
-	OfpOxmClass_OFPXMC_OPENFLOW_BASIC OfpOxmClass = 32768
-	OfpOxmClass_OFPXMC_EXPERIMENTER   OfpOxmClass = 65535
+	OfpOxmClass_OFPXMC_NXM_0          OfpOxmClass = 0     // Backward compatibility with NXM
+	OfpOxmClass_OFPXMC_NXM_1          OfpOxmClass = 1     // Backward compatibility with NXM
+	OfpOxmClass_OFPXMC_OPENFLOW_BASIC OfpOxmClass = 32768 // Basic class for OpenFlow
+	OfpOxmClass_OFPXMC_EXPERIMENTER   OfpOxmClass = 65535 // Experimenter class
 )
 
-var OfpOxmClass_name = map[int32]string{
-	0:     "OFPXMC_NXM_0",
-	1:     "OFPXMC_NXM_1",
-	32768: "OFPXMC_OPENFLOW_BASIC",
-	65535: "OFPXMC_EXPERIMENTER",
-}
+// Enum value maps for OfpOxmClass.
+var (
+	OfpOxmClass_name = map[int32]string{
+		0:     "OFPXMC_NXM_0",
+		1:     "OFPXMC_NXM_1",
+		32768: "OFPXMC_OPENFLOW_BASIC",
+		65535: "OFPXMC_EXPERIMENTER",
+	}
+	OfpOxmClass_value = map[string]int32{
+		"OFPXMC_NXM_0":          0,
+		"OFPXMC_NXM_1":          1,
+		"OFPXMC_OPENFLOW_BASIC": 32768,
+		"OFPXMC_EXPERIMENTER":   65535,
+	}
+)
 
-var OfpOxmClass_value = map[string]int32{
-	"OFPXMC_NXM_0":          0,
-	"OFPXMC_NXM_1":          1,
-	"OFPXMC_OPENFLOW_BASIC": 32768,
-	"OFPXMC_EXPERIMENTER":   65535,
+func (x OfpOxmClass) Enum() *OfpOxmClass {
+	p := new(OfpOxmClass)
+	*p = x
+	return p
 }
 
 func (x OfpOxmClass) String() string {
-	return proto.EnumName(OfpOxmClass_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpOxmClass) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[13].Descriptor()
+}
+
+func (OfpOxmClass) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[13]
+}
+
+func (x OfpOxmClass) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpOxmClass.Descriptor instead.
 func (OfpOxmClass) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{13}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{13}
 }
 
 // OXM Flow field types for OpenFlow basic class.
 type OxmOfbFieldTypes int32
 
 const (
-	OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT        OxmOfbFieldTypes = 0
-	OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT    OxmOfbFieldTypes = 1
-	OxmOfbFieldTypes_OFPXMT_OFB_METADATA       OxmOfbFieldTypes = 2
-	OxmOfbFieldTypes_OFPXMT_OFB_ETH_DST        OxmOfbFieldTypes = 3
-	OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC        OxmOfbFieldTypes = 4
-	OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE       OxmOfbFieldTypes = 5
-	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID       OxmOfbFieldTypes = 6
-	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_PCP       OxmOfbFieldTypes = 7
-	OxmOfbFieldTypes_OFPXMT_OFB_IP_DSCP        OxmOfbFieldTypes = 8
-	OxmOfbFieldTypes_OFPXMT_OFB_IP_ECN         OxmOfbFieldTypes = 9
-	OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO       OxmOfbFieldTypes = 10
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_SRC       OxmOfbFieldTypes = 11
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_DST       OxmOfbFieldTypes = 12
-	OxmOfbFieldTypes_OFPXMT_OFB_TCP_SRC        OxmOfbFieldTypes = 13
-	OxmOfbFieldTypes_OFPXMT_OFB_TCP_DST        OxmOfbFieldTypes = 14
-	OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC        OxmOfbFieldTypes = 15
-	OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST        OxmOfbFieldTypes = 16
-	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_SRC       OxmOfbFieldTypes = 17
-	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_DST       OxmOfbFieldTypes = 18
-	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_TYPE    OxmOfbFieldTypes = 19
-	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_CODE    OxmOfbFieldTypes = 20
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_OP         OxmOfbFieldTypes = 21
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SPA        OxmOfbFieldTypes = 22
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_TPA        OxmOfbFieldTypes = 23
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SHA        OxmOfbFieldTypes = 24
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_THA        OxmOfbFieldTypes = 25
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_SRC       OxmOfbFieldTypes = 26
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_DST       OxmOfbFieldTypes = 27
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_FLABEL    OxmOfbFieldTypes = 28
-	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_TYPE    OxmOfbFieldTypes = 29
-	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_CODE    OxmOfbFieldTypes = 30
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TARGET OxmOfbFieldTypes = 31
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_SLL    OxmOfbFieldTypes = 32
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TLL    OxmOfbFieldTypes = 33
-	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL     OxmOfbFieldTypes = 34
-	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC        OxmOfbFieldTypes = 35
-	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS       OxmOfbFieldTypes = 36
-	OxmOfbFieldTypes_OFPXMT_OFB_PBB_ISID       OxmOfbFieldTypes = 37
-	OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID      OxmOfbFieldTypes = 38
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR    OxmOfbFieldTypes = 39
+	OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT        OxmOfbFieldTypes = 0  // Switch input port.
+	OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT    OxmOfbFieldTypes = 1  // Switch physical input port.
+	OxmOfbFieldTypes_OFPXMT_OFB_METADATA       OxmOfbFieldTypes = 2  // Metadata passed between tables.
+	OxmOfbFieldTypes_OFPXMT_OFB_ETH_DST        OxmOfbFieldTypes = 3  // Ethernet destination address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC        OxmOfbFieldTypes = 4  // Ethernet source address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE       OxmOfbFieldTypes = 5  // Ethernet frame type.
+	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID       OxmOfbFieldTypes = 6  // VLAN id.
+	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_PCP       OxmOfbFieldTypes = 7  // VLAN priority.
+	OxmOfbFieldTypes_OFPXMT_OFB_IP_DSCP        OxmOfbFieldTypes = 8  // IP DSCP (6 bits in ToS field).
+	OxmOfbFieldTypes_OFPXMT_OFB_IP_ECN         OxmOfbFieldTypes = 9  // IP ECN (2 bits in ToS field).
+	OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO       OxmOfbFieldTypes = 10 // IP protocol.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_SRC       OxmOfbFieldTypes = 11 // IPv4 source address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_DST       OxmOfbFieldTypes = 12 // IPv4 destination address.
+	OxmOfbFieldTypes_OFPXMT_OFB_TCP_SRC        OxmOfbFieldTypes = 13 // TCP source port.
+	OxmOfbFieldTypes_OFPXMT_OFB_TCP_DST        OxmOfbFieldTypes = 14 // TCP destination port.
+	OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC        OxmOfbFieldTypes = 15 // UDP source port.
+	OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST        OxmOfbFieldTypes = 16 // UDP destination port.
+	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_SRC       OxmOfbFieldTypes = 17 // SCTP source port.
+	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_DST       OxmOfbFieldTypes = 18 // SCTP destination port.
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_TYPE    OxmOfbFieldTypes = 19 // ICMP type.
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_CODE    OxmOfbFieldTypes = 20 // ICMP code.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_OP         OxmOfbFieldTypes = 21 // ARP opcode.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SPA        OxmOfbFieldTypes = 22 // ARP source IPv4 address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_TPA        OxmOfbFieldTypes = 23 // ARP target IPv4 address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SHA        OxmOfbFieldTypes = 24 // ARP source hardware address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_THA        OxmOfbFieldTypes = 25 // ARP target hardware address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_SRC       OxmOfbFieldTypes = 26 // IPv6 source address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_DST       OxmOfbFieldTypes = 27 // IPv6 destination address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_FLABEL    OxmOfbFieldTypes = 28 // IPv6 Flow Label
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_TYPE    OxmOfbFieldTypes = 29 // ICMPv6 type.
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_CODE    OxmOfbFieldTypes = 30 // ICMPv6 code.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TARGET OxmOfbFieldTypes = 31 // Target address for ND.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_SLL    OxmOfbFieldTypes = 32 // Source link-layer for ND.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TLL    OxmOfbFieldTypes = 33 // Target link-layer for ND.
+	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL     OxmOfbFieldTypes = 34 // MPLS label.
+	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC        OxmOfbFieldTypes = 35 // MPLS TC.
+	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS       OxmOfbFieldTypes = 36 // MPLS BoS bit.
+	OxmOfbFieldTypes_OFPXMT_OFB_PBB_ISID       OxmOfbFieldTypes = 37 // PBB I-SID.
+	OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID      OxmOfbFieldTypes = 38 // Logical Port Metadata.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR    OxmOfbFieldTypes = 39 // IPv6 Extension Header pseudo-field
 )
 
-var OxmOfbFieldTypes_name = map[int32]string{
-	0:  "OFPXMT_OFB_IN_PORT",
-	1:  "OFPXMT_OFB_IN_PHY_PORT",
-	2:  "OFPXMT_OFB_METADATA",
-	3:  "OFPXMT_OFB_ETH_DST",
-	4:  "OFPXMT_OFB_ETH_SRC",
-	5:  "OFPXMT_OFB_ETH_TYPE",
-	6:  "OFPXMT_OFB_VLAN_VID",
-	7:  "OFPXMT_OFB_VLAN_PCP",
-	8:  "OFPXMT_OFB_IP_DSCP",
-	9:  "OFPXMT_OFB_IP_ECN",
-	10: "OFPXMT_OFB_IP_PROTO",
-	11: "OFPXMT_OFB_IPV4_SRC",
-	12: "OFPXMT_OFB_IPV4_DST",
-	13: "OFPXMT_OFB_TCP_SRC",
-	14: "OFPXMT_OFB_TCP_DST",
-	15: "OFPXMT_OFB_UDP_SRC",
-	16: "OFPXMT_OFB_UDP_DST",
-	17: "OFPXMT_OFB_SCTP_SRC",
-	18: "OFPXMT_OFB_SCTP_DST",
-	19: "OFPXMT_OFB_ICMPV4_TYPE",
-	20: "OFPXMT_OFB_ICMPV4_CODE",
-	21: "OFPXMT_OFB_ARP_OP",
-	22: "OFPXMT_OFB_ARP_SPA",
-	23: "OFPXMT_OFB_ARP_TPA",
-	24: "OFPXMT_OFB_ARP_SHA",
-	25: "OFPXMT_OFB_ARP_THA",
-	26: "OFPXMT_OFB_IPV6_SRC",
-	27: "OFPXMT_OFB_IPV6_DST",
-	28: "OFPXMT_OFB_IPV6_FLABEL",
-	29: "OFPXMT_OFB_ICMPV6_TYPE",
-	30: "OFPXMT_OFB_ICMPV6_CODE",
-	31: "OFPXMT_OFB_IPV6_ND_TARGET",
-	32: "OFPXMT_OFB_IPV6_ND_SLL",
-	33: "OFPXMT_OFB_IPV6_ND_TLL",
-	34: "OFPXMT_OFB_MPLS_LABEL",
-	35: "OFPXMT_OFB_MPLS_TC",
-	36: "OFPXMT_OFB_MPLS_BOS",
-	37: "OFPXMT_OFB_PBB_ISID",
-	38: "OFPXMT_OFB_TUNNEL_ID",
-	39: "OFPXMT_OFB_IPV6_EXTHDR",
-}
+// Enum value maps for OxmOfbFieldTypes.
+var (
+	OxmOfbFieldTypes_name = map[int32]string{
+		0:  "OFPXMT_OFB_IN_PORT",
+		1:  "OFPXMT_OFB_IN_PHY_PORT",
+		2:  "OFPXMT_OFB_METADATA",
+		3:  "OFPXMT_OFB_ETH_DST",
+		4:  "OFPXMT_OFB_ETH_SRC",
+		5:  "OFPXMT_OFB_ETH_TYPE",
+		6:  "OFPXMT_OFB_VLAN_VID",
+		7:  "OFPXMT_OFB_VLAN_PCP",
+		8:  "OFPXMT_OFB_IP_DSCP",
+		9:  "OFPXMT_OFB_IP_ECN",
+		10: "OFPXMT_OFB_IP_PROTO",
+		11: "OFPXMT_OFB_IPV4_SRC",
+		12: "OFPXMT_OFB_IPV4_DST",
+		13: "OFPXMT_OFB_TCP_SRC",
+		14: "OFPXMT_OFB_TCP_DST",
+		15: "OFPXMT_OFB_UDP_SRC",
+		16: "OFPXMT_OFB_UDP_DST",
+		17: "OFPXMT_OFB_SCTP_SRC",
+		18: "OFPXMT_OFB_SCTP_DST",
+		19: "OFPXMT_OFB_ICMPV4_TYPE",
+		20: "OFPXMT_OFB_ICMPV4_CODE",
+		21: "OFPXMT_OFB_ARP_OP",
+		22: "OFPXMT_OFB_ARP_SPA",
+		23: "OFPXMT_OFB_ARP_TPA",
+		24: "OFPXMT_OFB_ARP_SHA",
+		25: "OFPXMT_OFB_ARP_THA",
+		26: "OFPXMT_OFB_IPV6_SRC",
+		27: "OFPXMT_OFB_IPV6_DST",
+		28: "OFPXMT_OFB_IPV6_FLABEL",
+		29: "OFPXMT_OFB_ICMPV6_TYPE",
+		30: "OFPXMT_OFB_ICMPV6_CODE",
+		31: "OFPXMT_OFB_IPV6_ND_TARGET",
+		32: "OFPXMT_OFB_IPV6_ND_SLL",
+		33: "OFPXMT_OFB_IPV6_ND_TLL",
+		34: "OFPXMT_OFB_MPLS_LABEL",
+		35: "OFPXMT_OFB_MPLS_TC",
+		36: "OFPXMT_OFB_MPLS_BOS",
+		37: "OFPXMT_OFB_PBB_ISID",
+		38: "OFPXMT_OFB_TUNNEL_ID",
+		39: "OFPXMT_OFB_IPV6_EXTHDR",
+	}
+	OxmOfbFieldTypes_value = map[string]int32{
+		"OFPXMT_OFB_IN_PORT":        0,
+		"OFPXMT_OFB_IN_PHY_PORT":    1,
+		"OFPXMT_OFB_METADATA":       2,
+		"OFPXMT_OFB_ETH_DST":        3,
+		"OFPXMT_OFB_ETH_SRC":        4,
+		"OFPXMT_OFB_ETH_TYPE":       5,
+		"OFPXMT_OFB_VLAN_VID":       6,
+		"OFPXMT_OFB_VLAN_PCP":       7,
+		"OFPXMT_OFB_IP_DSCP":        8,
+		"OFPXMT_OFB_IP_ECN":         9,
+		"OFPXMT_OFB_IP_PROTO":       10,
+		"OFPXMT_OFB_IPV4_SRC":       11,
+		"OFPXMT_OFB_IPV4_DST":       12,
+		"OFPXMT_OFB_TCP_SRC":        13,
+		"OFPXMT_OFB_TCP_DST":        14,
+		"OFPXMT_OFB_UDP_SRC":        15,
+		"OFPXMT_OFB_UDP_DST":        16,
+		"OFPXMT_OFB_SCTP_SRC":       17,
+		"OFPXMT_OFB_SCTP_DST":       18,
+		"OFPXMT_OFB_ICMPV4_TYPE":    19,
+		"OFPXMT_OFB_ICMPV4_CODE":    20,
+		"OFPXMT_OFB_ARP_OP":         21,
+		"OFPXMT_OFB_ARP_SPA":        22,
+		"OFPXMT_OFB_ARP_TPA":        23,
+		"OFPXMT_OFB_ARP_SHA":        24,
+		"OFPXMT_OFB_ARP_THA":        25,
+		"OFPXMT_OFB_IPV6_SRC":       26,
+		"OFPXMT_OFB_IPV6_DST":       27,
+		"OFPXMT_OFB_IPV6_FLABEL":    28,
+		"OFPXMT_OFB_ICMPV6_TYPE":    29,
+		"OFPXMT_OFB_ICMPV6_CODE":    30,
+		"OFPXMT_OFB_IPV6_ND_TARGET": 31,
+		"OFPXMT_OFB_IPV6_ND_SLL":    32,
+		"OFPXMT_OFB_IPV6_ND_TLL":    33,
+		"OFPXMT_OFB_MPLS_LABEL":     34,
+		"OFPXMT_OFB_MPLS_TC":        35,
+		"OFPXMT_OFB_MPLS_BOS":       36,
+		"OFPXMT_OFB_PBB_ISID":       37,
+		"OFPXMT_OFB_TUNNEL_ID":      38,
+		"OFPXMT_OFB_IPV6_EXTHDR":    39,
+	}
+)
 
-var OxmOfbFieldTypes_value = map[string]int32{
-	"OFPXMT_OFB_IN_PORT":        0,
-	"OFPXMT_OFB_IN_PHY_PORT":    1,
-	"OFPXMT_OFB_METADATA":       2,
-	"OFPXMT_OFB_ETH_DST":        3,
-	"OFPXMT_OFB_ETH_SRC":        4,
-	"OFPXMT_OFB_ETH_TYPE":       5,
-	"OFPXMT_OFB_VLAN_VID":       6,
-	"OFPXMT_OFB_VLAN_PCP":       7,
-	"OFPXMT_OFB_IP_DSCP":        8,
-	"OFPXMT_OFB_IP_ECN":         9,
-	"OFPXMT_OFB_IP_PROTO":       10,
-	"OFPXMT_OFB_IPV4_SRC":       11,
-	"OFPXMT_OFB_IPV4_DST":       12,
-	"OFPXMT_OFB_TCP_SRC":        13,
-	"OFPXMT_OFB_TCP_DST":        14,
-	"OFPXMT_OFB_UDP_SRC":        15,
-	"OFPXMT_OFB_UDP_DST":        16,
-	"OFPXMT_OFB_SCTP_SRC":       17,
-	"OFPXMT_OFB_SCTP_DST":       18,
-	"OFPXMT_OFB_ICMPV4_TYPE":    19,
-	"OFPXMT_OFB_ICMPV4_CODE":    20,
-	"OFPXMT_OFB_ARP_OP":         21,
-	"OFPXMT_OFB_ARP_SPA":        22,
-	"OFPXMT_OFB_ARP_TPA":        23,
-	"OFPXMT_OFB_ARP_SHA":        24,
-	"OFPXMT_OFB_ARP_THA":        25,
-	"OFPXMT_OFB_IPV6_SRC":       26,
-	"OFPXMT_OFB_IPV6_DST":       27,
-	"OFPXMT_OFB_IPV6_FLABEL":    28,
-	"OFPXMT_OFB_ICMPV6_TYPE":    29,
-	"OFPXMT_OFB_ICMPV6_CODE":    30,
-	"OFPXMT_OFB_IPV6_ND_TARGET": 31,
-	"OFPXMT_OFB_IPV6_ND_SLL":    32,
-	"OFPXMT_OFB_IPV6_ND_TLL":    33,
-	"OFPXMT_OFB_MPLS_LABEL":     34,
-	"OFPXMT_OFB_MPLS_TC":        35,
-	"OFPXMT_OFB_MPLS_BOS":       36,
-	"OFPXMT_OFB_PBB_ISID":       37,
-	"OFPXMT_OFB_TUNNEL_ID":      38,
-	"OFPXMT_OFB_IPV6_EXTHDR":    39,
+func (x OxmOfbFieldTypes) Enum() *OxmOfbFieldTypes {
+	p := new(OxmOfbFieldTypes)
+	*p = x
+	return p
 }
 
 func (x OxmOfbFieldTypes) String() string {
-	return proto.EnumName(OxmOfbFieldTypes_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OxmOfbFieldTypes) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[14].Descriptor()
+}
+
+func (OxmOfbFieldTypes) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[14]
+}
+
+func (x OxmOfbFieldTypes) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OxmOfbFieldTypes.Descriptor instead.
 func (OxmOfbFieldTypes) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{14}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{14}
 }
 
 // The VLAN id is 12-bits, so we can use the entire 16 bits to indicate
@@ -758,26 +1130,47 @@
 type OfpVlanId int32
 
 const (
-	OfpVlanId_OFPVID_NONE    OfpVlanId = 0
-	OfpVlanId_OFPVID_PRESENT OfpVlanId = 4096
+	OfpVlanId_OFPVID_NONE    OfpVlanId = 0    // No VLAN id was set.
+	OfpVlanId_OFPVID_PRESENT OfpVlanId = 4096 // Bit that indicate that a VLAN id is set
 )
 
-var OfpVlanId_name = map[int32]string{
-	0:    "OFPVID_NONE",
-	4096: "OFPVID_PRESENT",
-}
+// Enum value maps for OfpVlanId.
+var (
+	OfpVlanId_name = map[int32]string{
+		0:    "OFPVID_NONE",
+		4096: "OFPVID_PRESENT",
+	}
+	OfpVlanId_value = map[string]int32{
+		"OFPVID_NONE":    0,
+		"OFPVID_PRESENT": 4096,
+	}
+)
 
-var OfpVlanId_value = map[string]int32{
-	"OFPVID_NONE":    0,
-	"OFPVID_PRESENT": 4096,
+func (x OfpVlanId) Enum() *OfpVlanId {
+	p := new(OfpVlanId)
+	*p = x
+	return p
 }
 
 func (x OfpVlanId) String() string {
-	return proto.EnumName(OfpVlanId_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpVlanId) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[15].Descriptor()
+}
+
+func (OfpVlanId) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[15]
+}
+
+func (x OfpVlanId) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpVlanId.Descriptor instead.
 func (OfpVlanId) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{15}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{15}
 }
 
 // Bit definitions for IPv6 Extension Header pseudo-field.
@@ -785,119 +1178,161 @@
 
 const (
 	OfpIpv6ExthdrFlags_OFPIEH_INVALID OfpIpv6ExthdrFlags = 0
-	OfpIpv6ExthdrFlags_OFPIEH_NONEXT  OfpIpv6ExthdrFlags = 1
-	OfpIpv6ExthdrFlags_OFPIEH_ESP     OfpIpv6ExthdrFlags = 2
-	OfpIpv6ExthdrFlags_OFPIEH_AUTH    OfpIpv6ExthdrFlags = 4
-	OfpIpv6ExthdrFlags_OFPIEH_DEST    OfpIpv6ExthdrFlags = 8
-	OfpIpv6ExthdrFlags_OFPIEH_FRAG    OfpIpv6ExthdrFlags = 16
-	OfpIpv6ExthdrFlags_OFPIEH_ROUTER  OfpIpv6ExthdrFlags = 32
-	OfpIpv6ExthdrFlags_OFPIEH_HOP     OfpIpv6ExthdrFlags = 64
-	OfpIpv6ExthdrFlags_OFPIEH_UNREP   OfpIpv6ExthdrFlags = 128
-	OfpIpv6ExthdrFlags_OFPIEH_UNSEQ   OfpIpv6ExthdrFlags = 256
+	OfpIpv6ExthdrFlags_OFPIEH_NONEXT  OfpIpv6ExthdrFlags = 1   // "No next header" encountered.
+	OfpIpv6ExthdrFlags_OFPIEH_ESP     OfpIpv6ExthdrFlags = 2   // Encrypted Sec Payload header present.
+	OfpIpv6ExthdrFlags_OFPIEH_AUTH    OfpIpv6ExthdrFlags = 4   // Authentication header present.
+	OfpIpv6ExthdrFlags_OFPIEH_DEST    OfpIpv6ExthdrFlags = 8   // 1 or 2 dest headers present.
+	OfpIpv6ExthdrFlags_OFPIEH_FRAG    OfpIpv6ExthdrFlags = 16  // Fragment header present.
+	OfpIpv6ExthdrFlags_OFPIEH_ROUTER  OfpIpv6ExthdrFlags = 32  // Router header present.
+	OfpIpv6ExthdrFlags_OFPIEH_HOP     OfpIpv6ExthdrFlags = 64  // Hop-by-hop header present.
+	OfpIpv6ExthdrFlags_OFPIEH_UNREP   OfpIpv6ExthdrFlags = 128 // Unexpected repeats encountered.
+	OfpIpv6ExthdrFlags_OFPIEH_UNSEQ   OfpIpv6ExthdrFlags = 256 // Unexpected sequencing encountered.
 )
 
-var OfpIpv6ExthdrFlags_name = map[int32]string{
-	0:   "OFPIEH_INVALID",
-	1:   "OFPIEH_NONEXT",
-	2:   "OFPIEH_ESP",
-	4:   "OFPIEH_AUTH",
-	8:   "OFPIEH_DEST",
-	16:  "OFPIEH_FRAG",
-	32:  "OFPIEH_ROUTER",
-	64:  "OFPIEH_HOP",
-	128: "OFPIEH_UNREP",
-	256: "OFPIEH_UNSEQ",
-}
+// Enum value maps for OfpIpv6ExthdrFlags.
+var (
+	OfpIpv6ExthdrFlags_name = map[int32]string{
+		0:   "OFPIEH_INVALID",
+		1:   "OFPIEH_NONEXT",
+		2:   "OFPIEH_ESP",
+		4:   "OFPIEH_AUTH",
+		8:   "OFPIEH_DEST",
+		16:  "OFPIEH_FRAG",
+		32:  "OFPIEH_ROUTER",
+		64:  "OFPIEH_HOP",
+		128: "OFPIEH_UNREP",
+		256: "OFPIEH_UNSEQ",
+	}
+	OfpIpv6ExthdrFlags_value = map[string]int32{
+		"OFPIEH_INVALID": 0,
+		"OFPIEH_NONEXT":  1,
+		"OFPIEH_ESP":     2,
+		"OFPIEH_AUTH":    4,
+		"OFPIEH_DEST":    8,
+		"OFPIEH_FRAG":    16,
+		"OFPIEH_ROUTER":  32,
+		"OFPIEH_HOP":     64,
+		"OFPIEH_UNREP":   128,
+		"OFPIEH_UNSEQ":   256,
+	}
+)
 
-var OfpIpv6ExthdrFlags_value = map[string]int32{
-	"OFPIEH_INVALID": 0,
-	"OFPIEH_NONEXT":  1,
-	"OFPIEH_ESP":     2,
-	"OFPIEH_AUTH":    4,
-	"OFPIEH_DEST":    8,
-	"OFPIEH_FRAG":    16,
-	"OFPIEH_ROUTER":  32,
-	"OFPIEH_HOP":     64,
-	"OFPIEH_UNREP":   128,
-	"OFPIEH_UNSEQ":   256,
+func (x OfpIpv6ExthdrFlags) Enum() *OfpIpv6ExthdrFlags {
+	p := new(OfpIpv6ExthdrFlags)
+	*p = x
+	return p
 }
 
 func (x OfpIpv6ExthdrFlags) String() string {
-	return proto.EnumName(OfpIpv6ExthdrFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpIpv6ExthdrFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[16].Descriptor()
+}
+
+func (OfpIpv6ExthdrFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[16]
+}
+
+func (x OfpIpv6ExthdrFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpIpv6ExthdrFlags.Descriptor instead.
 func (OfpIpv6ExthdrFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{16}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{16}
 }
 
 type OfpActionType int32
 
 const (
-	OfpActionType_OFPAT_OUTPUT       OfpActionType = 0
+	OfpActionType_OFPAT_OUTPUT       OfpActionType = 0 // Output to switch port.
 	OfpActionType_OFPAT_COPY_TTL_OUT OfpActionType = 11
 	OfpActionType_OFPAT_COPY_TTL_IN  OfpActionType = 12
-	OfpActionType_OFPAT_SET_MPLS_TTL OfpActionType = 15
-	OfpActionType_OFPAT_DEC_MPLS_TTL OfpActionType = 16
-	OfpActionType_OFPAT_PUSH_VLAN    OfpActionType = 17
-	OfpActionType_OFPAT_POP_VLAN     OfpActionType = 18
-	OfpActionType_OFPAT_PUSH_MPLS    OfpActionType = 19
-	OfpActionType_OFPAT_POP_MPLS     OfpActionType = 20
-	OfpActionType_OFPAT_SET_QUEUE    OfpActionType = 21
-	OfpActionType_OFPAT_GROUP        OfpActionType = 22
-	OfpActionType_OFPAT_SET_NW_TTL   OfpActionType = 23
-	OfpActionType_OFPAT_DEC_NW_TTL   OfpActionType = 24
-	OfpActionType_OFPAT_SET_FIELD    OfpActionType = 25
-	OfpActionType_OFPAT_PUSH_PBB     OfpActionType = 26
-	OfpActionType_OFPAT_POP_PBB      OfpActionType = 27
+	OfpActionType_OFPAT_SET_MPLS_TTL OfpActionType = 15 // MPLS TTL
+	OfpActionType_OFPAT_DEC_MPLS_TTL OfpActionType = 16 // Decrement MPLS TTL
+	OfpActionType_OFPAT_PUSH_VLAN    OfpActionType = 17 // Push a new VLAN tag
+	OfpActionType_OFPAT_POP_VLAN     OfpActionType = 18 // Pop the outer VLAN tag
+	OfpActionType_OFPAT_PUSH_MPLS    OfpActionType = 19 // Push a new MPLS tag
+	OfpActionType_OFPAT_POP_MPLS     OfpActionType = 20 // Pop the outer MPLS tag
+	OfpActionType_OFPAT_SET_QUEUE    OfpActionType = 21 // Set queue id when outputting to a port
+	OfpActionType_OFPAT_GROUP        OfpActionType = 22 // Apply group.
+	OfpActionType_OFPAT_SET_NW_TTL   OfpActionType = 23 // IP TTL.
+	OfpActionType_OFPAT_DEC_NW_TTL   OfpActionType = 24 // Decrement IP TTL.
+	OfpActionType_OFPAT_SET_FIELD    OfpActionType = 25 // Set a header field using OXM TLV format.
+	OfpActionType_OFPAT_PUSH_PBB     OfpActionType = 26 // Push a new PBB service tag (I-TAG)
+	OfpActionType_OFPAT_POP_PBB      OfpActionType = 27 // Pop the outer PBB service tag (I-TAG)
 	OfpActionType_OFPAT_EXPERIMENTER OfpActionType = 65535
 )
 
-var OfpActionType_name = map[int32]string{
-	0:     "OFPAT_OUTPUT",
-	11:    "OFPAT_COPY_TTL_OUT",
-	12:    "OFPAT_COPY_TTL_IN",
-	15:    "OFPAT_SET_MPLS_TTL",
-	16:    "OFPAT_DEC_MPLS_TTL",
-	17:    "OFPAT_PUSH_VLAN",
-	18:    "OFPAT_POP_VLAN",
-	19:    "OFPAT_PUSH_MPLS",
-	20:    "OFPAT_POP_MPLS",
-	21:    "OFPAT_SET_QUEUE",
-	22:    "OFPAT_GROUP",
-	23:    "OFPAT_SET_NW_TTL",
-	24:    "OFPAT_DEC_NW_TTL",
-	25:    "OFPAT_SET_FIELD",
-	26:    "OFPAT_PUSH_PBB",
-	27:    "OFPAT_POP_PBB",
-	65535: "OFPAT_EXPERIMENTER",
-}
+// Enum value maps for OfpActionType.
+var (
+	OfpActionType_name = map[int32]string{
+		0:     "OFPAT_OUTPUT",
+		11:    "OFPAT_COPY_TTL_OUT",
+		12:    "OFPAT_COPY_TTL_IN",
+		15:    "OFPAT_SET_MPLS_TTL",
+		16:    "OFPAT_DEC_MPLS_TTL",
+		17:    "OFPAT_PUSH_VLAN",
+		18:    "OFPAT_POP_VLAN",
+		19:    "OFPAT_PUSH_MPLS",
+		20:    "OFPAT_POP_MPLS",
+		21:    "OFPAT_SET_QUEUE",
+		22:    "OFPAT_GROUP",
+		23:    "OFPAT_SET_NW_TTL",
+		24:    "OFPAT_DEC_NW_TTL",
+		25:    "OFPAT_SET_FIELD",
+		26:    "OFPAT_PUSH_PBB",
+		27:    "OFPAT_POP_PBB",
+		65535: "OFPAT_EXPERIMENTER",
+	}
+	OfpActionType_value = map[string]int32{
+		"OFPAT_OUTPUT":       0,
+		"OFPAT_COPY_TTL_OUT": 11,
+		"OFPAT_COPY_TTL_IN":  12,
+		"OFPAT_SET_MPLS_TTL": 15,
+		"OFPAT_DEC_MPLS_TTL": 16,
+		"OFPAT_PUSH_VLAN":    17,
+		"OFPAT_POP_VLAN":     18,
+		"OFPAT_PUSH_MPLS":    19,
+		"OFPAT_POP_MPLS":     20,
+		"OFPAT_SET_QUEUE":    21,
+		"OFPAT_GROUP":        22,
+		"OFPAT_SET_NW_TTL":   23,
+		"OFPAT_DEC_NW_TTL":   24,
+		"OFPAT_SET_FIELD":    25,
+		"OFPAT_PUSH_PBB":     26,
+		"OFPAT_POP_PBB":      27,
+		"OFPAT_EXPERIMENTER": 65535,
+	}
+)
 
-var OfpActionType_value = map[string]int32{
-	"OFPAT_OUTPUT":       0,
-	"OFPAT_COPY_TTL_OUT": 11,
-	"OFPAT_COPY_TTL_IN":  12,
-	"OFPAT_SET_MPLS_TTL": 15,
-	"OFPAT_DEC_MPLS_TTL": 16,
-	"OFPAT_PUSH_VLAN":    17,
-	"OFPAT_POP_VLAN":     18,
-	"OFPAT_PUSH_MPLS":    19,
-	"OFPAT_POP_MPLS":     20,
-	"OFPAT_SET_QUEUE":    21,
-	"OFPAT_GROUP":        22,
-	"OFPAT_SET_NW_TTL":   23,
-	"OFPAT_DEC_NW_TTL":   24,
-	"OFPAT_SET_FIELD":    25,
-	"OFPAT_PUSH_PBB":     26,
-	"OFPAT_POP_PBB":      27,
-	"OFPAT_EXPERIMENTER": 65535,
+func (x OfpActionType) Enum() *OfpActionType {
+	p := new(OfpActionType)
+	*p = x
+	return p
 }
 
 func (x OfpActionType) String() string {
-	return proto.EnumName(OfpActionType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpActionType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[17].Descriptor()
+}
+
+func (OfpActionType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[17]
+}
+
+func (x OfpActionType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpActionType.Descriptor instead.
 func (OfpActionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{17}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{17}
 }
 
 type OfpControllerMaxLen int32
@@ -908,24 +1343,45 @@
 	OfpControllerMaxLen_OFPCML_NO_BUFFER OfpControllerMaxLen = 65535
 )
 
-var OfpControllerMaxLen_name = map[int32]string{
-	0:     "OFPCML_INVALID",
-	65509: "OFPCML_MAX",
-	65535: "OFPCML_NO_BUFFER",
-}
+// Enum value maps for OfpControllerMaxLen.
+var (
+	OfpControllerMaxLen_name = map[int32]string{
+		0:     "OFPCML_INVALID",
+		65509: "OFPCML_MAX",
+		65535: "OFPCML_NO_BUFFER",
+	}
+	OfpControllerMaxLen_value = map[string]int32{
+		"OFPCML_INVALID":   0,
+		"OFPCML_MAX":       65509,
+		"OFPCML_NO_BUFFER": 65535,
+	}
+)
 
-var OfpControllerMaxLen_value = map[string]int32{
-	"OFPCML_INVALID":   0,
-	"OFPCML_MAX":       65509,
-	"OFPCML_NO_BUFFER": 65535,
+func (x OfpControllerMaxLen) Enum() *OfpControllerMaxLen {
+	p := new(OfpControllerMaxLen)
+	*p = x
+	return p
 }
 
 func (x OfpControllerMaxLen) String() string {
-	return proto.EnumName(OfpControllerMaxLen_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpControllerMaxLen) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[18].Descriptor()
+}
+
+func (OfpControllerMaxLen) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[18]
+}
+
+func (x OfpControllerMaxLen) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpControllerMaxLen.Descriptor instead.
 func (OfpControllerMaxLen) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{18}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{18}
 }
 
 type OfpInstructionType int32
@@ -935,74 +1391,116 @@
 	OfpInstructionType_OFPIT_GOTO_TABLE     OfpInstructionType = 1
 	OfpInstructionType_OFPIT_WRITE_METADATA OfpInstructionType = 2
 	OfpInstructionType_OFPIT_WRITE_ACTIONS  OfpInstructionType = 3
-	OfpInstructionType_OFPIT_APPLY_ACTIONS  OfpInstructionType = 4
+	OfpInstructionType_OFPIT_APPLY_ACTIONS  OfpInstructionType = 4 // Applies the action(s) immediately
 	OfpInstructionType_OFPIT_CLEAR_ACTIONS  OfpInstructionType = 5
-	OfpInstructionType_OFPIT_METER          OfpInstructionType = 6
-	OfpInstructionType_OFPIT_EXPERIMENTER   OfpInstructionType = 65535
+	OfpInstructionType_OFPIT_METER          OfpInstructionType = 6     // Apply meter (rate limiter)
+	OfpInstructionType_OFPIT_EXPERIMENTER   OfpInstructionType = 65535 // Experimenter instruction
 )
 
-var OfpInstructionType_name = map[int32]string{
-	0:     "OFPIT_INVALID",
-	1:     "OFPIT_GOTO_TABLE",
-	2:     "OFPIT_WRITE_METADATA",
-	3:     "OFPIT_WRITE_ACTIONS",
-	4:     "OFPIT_APPLY_ACTIONS",
-	5:     "OFPIT_CLEAR_ACTIONS",
-	6:     "OFPIT_METER",
-	65535: "OFPIT_EXPERIMENTER",
-}
+// Enum value maps for OfpInstructionType.
+var (
+	OfpInstructionType_name = map[int32]string{
+		0:     "OFPIT_INVALID",
+		1:     "OFPIT_GOTO_TABLE",
+		2:     "OFPIT_WRITE_METADATA",
+		3:     "OFPIT_WRITE_ACTIONS",
+		4:     "OFPIT_APPLY_ACTIONS",
+		5:     "OFPIT_CLEAR_ACTIONS",
+		6:     "OFPIT_METER",
+		65535: "OFPIT_EXPERIMENTER",
+	}
+	OfpInstructionType_value = map[string]int32{
+		"OFPIT_INVALID":        0,
+		"OFPIT_GOTO_TABLE":     1,
+		"OFPIT_WRITE_METADATA": 2,
+		"OFPIT_WRITE_ACTIONS":  3,
+		"OFPIT_APPLY_ACTIONS":  4,
+		"OFPIT_CLEAR_ACTIONS":  5,
+		"OFPIT_METER":          6,
+		"OFPIT_EXPERIMENTER":   65535,
+	}
+)
 
-var OfpInstructionType_value = map[string]int32{
-	"OFPIT_INVALID":        0,
-	"OFPIT_GOTO_TABLE":     1,
-	"OFPIT_WRITE_METADATA": 2,
-	"OFPIT_WRITE_ACTIONS":  3,
-	"OFPIT_APPLY_ACTIONS":  4,
-	"OFPIT_CLEAR_ACTIONS":  5,
-	"OFPIT_METER":          6,
-	"OFPIT_EXPERIMENTER":   65535,
+func (x OfpInstructionType) Enum() *OfpInstructionType {
+	p := new(OfpInstructionType)
+	*p = x
+	return p
 }
 
 func (x OfpInstructionType) String() string {
-	return proto.EnumName(OfpInstructionType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpInstructionType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[19].Descriptor()
+}
+
+func (OfpInstructionType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[19]
+}
+
+func (x OfpInstructionType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpInstructionType.Descriptor instead.
 func (OfpInstructionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{19}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{19}
 }
 
 type OfpFlowModCommand int32
 
 const (
-	OfpFlowModCommand_OFPFC_ADD           OfpFlowModCommand = 0
-	OfpFlowModCommand_OFPFC_MODIFY        OfpFlowModCommand = 1
+	OfpFlowModCommand_OFPFC_ADD           OfpFlowModCommand = 0 // New flow.
+	OfpFlowModCommand_OFPFC_MODIFY        OfpFlowModCommand = 1 // Modify all matching flows.
 	OfpFlowModCommand_OFPFC_MODIFY_STRICT OfpFlowModCommand = 2
-	OfpFlowModCommand_OFPFC_DELETE        OfpFlowModCommand = 3
+	OfpFlowModCommand_OFPFC_DELETE        OfpFlowModCommand = 3 // Delete all matching flows.
 	OfpFlowModCommand_OFPFC_DELETE_STRICT OfpFlowModCommand = 4
 )
 
-var OfpFlowModCommand_name = map[int32]string{
-	0: "OFPFC_ADD",
-	1: "OFPFC_MODIFY",
-	2: "OFPFC_MODIFY_STRICT",
-	3: "OFPFC_DELETE",
-	4: "OFPFC_DELETE_STRICT",
-}
+// Enum value maps for OfpFlowModCommand.
+var (
+	OfpFlowModCommand_name = map[int32]string{
+		0: "OFPFC_ADD",
+		1: "OFPFC_MODIFY",
+		2: "OFPFC_MODIFY_STRICT",
+		3: "OFPFC_DELETE",
+		4: "OFPFC_DELETE_STRICT",
+	}
+	OfpFlowModCommand_value = map[string]int32{
+		"OFPFC_ADD":           0,
+		"OFPFC_MODIFY":        1,
+		"OFPFC_MODIFY_STRICT": 2,
+		"OFPFC_DELETE":        3,
+		"OFPFC_DELETE_STRICT": 4,
+	}
+)
 
-var OfpFlowModCommand_value = map[string]int32{
-	"OFPFC_ADD":           0,
-	"OFPFC_MODIFY":        1,
-	"OFPFC_MODIFY_STRICT": 2,
-	"OFPFC_DELETE":        3,
-	"OFPFC_DELETE_STRICT": 4,
+func (x OfpFlowModCommand) Enum() *OfpFlowModCommand {
+	p := new(OfpFlowModCommand)
+	*p = x
+	return p
 }
 
 func (x OfpFlowModCommand) String() string {
-	return proto.EnumName(OfpFlowModCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowModCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[20].Descriptor()
+}
+
+func (OfpFlowModCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[20]
+}
+
+func (x OfpFlowModCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowModCommand.Descriptor instead.
 func (OfpFlowModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{20}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{20}
 }
 
 type OfpFlowModFlags int32
@@ -1010,36 +1508,57 @@
 const (
 	OfpFlowModFlags_OFPFF_INVALID       OfpFlowModFlags = 0
 	OfpFlowModFlags_OFPFF_SEND_FLOW_REM OfpFlowModFlags = 1
-	OfpFlowModFlags_OFPFF_CHECK_OVERLAP OfpFlowModFlags = 2
-	OfpFlowModFlags_OFPFF_RESET_COUNTS  OfpFlowModFlags = 4
-	OfpFlowModFlags_OFPFF_NO_PKT_COUNTS OfpFlowModFlags = 8
-	OfpFlowModFlags_OFPFF_NO_BYT_COUNTS OfpFlowModFlags = 16
+	OfpFlowModFlags_OFPFF_CHECK_OVERLAP OfpFlowModFlags = 2  // Check for overlapping entries first.
+	OfpFlowModFlags_OFPFF_RESET_COUNTS  OfpFlowModFlags = 4  // Reset flow packet and byte counts.
+	OfpFlowModFlags_OFPFF_NO_PKT_COUNTS OfpFlowModFlags = 8  // Don't keep track of packet count.
+	OfpFlowModFlags_OFPFF_NO_BYT_COUNTS OfpFlowModFlags = 16 // Don't keep track of byte count.
 )
 
-var OfpFlowModFlags_name = map[int32]string{
-	0:  "OFPFF_INVALID",
-	1:  "OFPFF_SEND_FLOW_REM",
-	2:  "OFPFF_CHECK_OVERLAP",
-	4:  "OFPFF_RESET_COUNTS",
-	8:  "OFPFF_NO_PKT_COUNTS",
-	16: "OFPFF_NO_BYT_COUNTS",
-}
+// Enum value maps for OfpFlowModFlags.
+var (
+	OfpFlowModFlags_name = map[int32]string{
+		0:  "OFPFF_INVALID",
+		1:  "OFPFF_SEND_FLOW_REM",
+		2:  "OFPFF_CHECK_OVERLAP",
+		4:  "OFPFF_RESET_COUNTS",
+		8:  "OFPFF_NO_PKT_COUNTS",
+		16: "OFPFF_NO_BYT_COUNTS",
+	}
+	OfpFlowModFlags_value = map[string]int32{
+		"OFPFF_INVALID":       0,
+		"OFPFF_SEND_FLOW_REM": 1,
+		"OFPFF_CHECK_OVERLAP": 2,
+		"OFPFF_RESET_COUNTS":  4,
+		"OFPFF_NO_PKT_COUNTS": 8,
+		"OFPFF_NO_BYT_COUNTS": 16,
+	}
+)
 
-var OfpFlowModFlags_value = map[string]int32{
-	"OFPFF_INVALID":       0,
-	"OFPFF_SEND_FLOW_REM": 1,
-	"OFPFF_CHECK_OVERLAP": 2,
-	"OFPFF_RESET_COUNTS":  4,
-	"OFPFF_NO_PKT_COUNTS": 8,
-	"OFPFF_NO_BYT_COUNTS": 16,
+func (x OfpFlowModFlags) Enum() *OfpFlowModFlags {
+	p := new(OfpFlowModFlags)
+	*p = x
+	return p
 }
 
 func (x OfpFlowModFlags) String() string {
-	return proto.EnumName(OfpFlowModFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowModFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[21].Descriptor()
+}
+
+func (OfpFlowModFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[21]
+}
+
+func (x OfpFlowModFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowModFlags.Descriptor instead.
 func (OfpFlowModFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{21}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{21}
 }
 
 // Group numbering. Groups can use any number up to OFPG_MAX.
@@ -1051,58 +1570,100 @@
 	OfpGroup_OFPG_MAX OfpGroup = 2147483392
 	// Fake groups.
 	OfpGroup_OFPG_ALL OfpGroup = 2147483644
-	OfpGroup_OFPG_ANY OfpGroup = 2147483647
+	OfpGroup_OFPG_ANY OfpGroup = 2147483647 // Special wildcard: no group specified.
 )
 
-var OfpGroup_name = map[int32]string{
-	0:          "OFPG_INVALID",
-	2147483392: "OFPG_MAX",
-	2147483644: "OFPG_ALL",
-	2147483647: "OFPG_ANY",
-}
+// Enum value maps for OfpGroup.
+var (
+	OfpGroup_name = map[int32]string{
+		0:          "OFPG_INVALID",
+		2147483392: "OFPG_MAX",
+		2147483644: "OFPG_ALL",
+		2147483647: "OFPG_ANY",
+	}
+	OfpGroup_value = map[string]int32{
+		"OFPG_INVALID": 0,
+		"OFPG_MAX":     2147483392,
+		"OFPG_ALL":     2147483644,
+		"OFPG_ANY":     2147483647,
+	}
+)
 
-var OfpGroup_value = map[string]int32{
-	"OFPG_INVALID": 0,
-	"OFPG_MAX":     2147483392,
-	"OFPG_ALL":     2147483644,
-	"OFPG_ANY":     2147483647,
+func (x OfpGroup) Enum() *OfpGroup {
+	p := new(OfpGroup)
+	*p = x
+	return p
 }
 
 func (x OfpGroup) String() string {
-	return proto.EnumName(OfpGroup_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroup) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[22].Descriptor()
+}
+
+func (OfpGroup) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[22]
+}
+
+func (x OfpGroup) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroup.Descriptor instead.
 func (OfpGroup) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{22}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{22}
 }
 
 // Group commands
 type OfpGroupModCommand int32
 
 const (
-	OfpGroupModCommand_OFPGC_ADD    OfpGroupModCommand = 0
-	OfpGroupModCommand_OFPGC_MODIFY OfpGroupModCommand = 1
-	OfpGroupModCommand_OFPGC_DELETE OfpGroupModCommand = 2
+	OfpGroupModCommand_OFPGC_ADD    OfpGroupModCommand = 0 // New group.
+	OfpGroupModCommand_OFPGC_MODIFY OfpGroupModCommand = 1 // Modify all matching groups.
+	OfpGroupModCommand_OFPGC_DELETE OfpGroupModCommand = 2 // Delete all matching groups.
 )
 
-var OfpGroupModCommand_name = map[int32]string{
-	0: "OFPGC_ADD",
-	1: "OFPGC_MODIFY",
-	2: "OFPGC_DELETE",
-}
+// Enum value maps for OfpGroupModCommand.
+var (
+	OfpGroupModCommand_name = map[int32]string{
+		0: "OFPGC_ADD",
+		1: "OFPGC_MODIFY",
+		2: "OFPGC_DELETE",
+	}
+	OfpGroupModCommand_value = map[string]int32{
+		"OFPGC_ADD":    0,
+		"OFPGC_MODIFY": 1,
+		"OFPGC_DELETE": 2,
+	}
+)
 
-var OfpGroupModCommand_value = map[string]int32{
-	"OFPGC_ADD":    0,
-	"OFPGC_MODIFY": 1,
-	"OFPGC_DELETE": 2,
+func (x OfpGroupModCommand) Enum() *OfpGroupModCommand {
+	p := new(OfpGroupModCommand)
+	*p = x
+	return p
 }
 
 func (x OfpGroupModCommand) String() string {
-	return proto.EnumName(OfpGroupModCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupModCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[23].Descriptor()
+}
+
+func (OfpGroupModCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[23]
+}
+
+func (x OfpGroupModCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupModCommand.Descriptor instead.
 func (OfpGroupModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{23}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{23}
 }
 
 // Group types.  Values in the range [128; 255] are reserved for experimental
@@ -1110,96 +1671,159 @@
 type OfpGroupType int32
 
 const (
-	OfpGroupType_OFPGT_ALL      OfpGroupType = 0
-	OfpGroupType_OFPGT_SELECT   OfpGroupType = 1
-	OfpGroupType_OFPGT_INDIRECT OfpGroupType = 2
-	OfpGroupType_OFPGT_FF       OfpGroupType = 3
+	OfpGroupType_OFPGT_ALL      OfpGroupType = 0 // All (multicast/broadcast) group.
+	OfpGroupType_OFPGT_SELECT   OfpGroupType = 1 // Select group.
+	OfpGroupType_OFPGT_INDIRECT OfpGroupType = 2 // Indirect group.
+	OfpGroupType_OFPGT_FF       OfpGroupType = 3 // Fast failover group.
 )
 
-var OfpGroupType_name = map[int32]string{
-	0: "OFPGT_ALL",
-	1: "OFPGT_SELECT",
-	2: "OFPGT_INDIRECT",
-	3: "OFPGT_FF",
-}
+// Enum value maps for OfpGroupType.
+var (
+	OfpGroupType_name = map[int32]string{
+		0: "OFPGT_ALL",
+		1: "OFPGT_SELECT",
+		2: "OFPGT_INDIRECT",
+		3: "OFPGT_FF",
+	}
+	OfpGroupType_value = map[string]int32{
+		"OFPGT_ALL":      0,
+		"OFPGT_SELECT":   1,
+		"OFPGT_INDIRECT": 2,
+		"OFPGT_FF":       3,
+	}
+)
 
-var OfpGroupType_value = map[string]int32{
-	"OFPGT_ALL":      0,
-	"OFPGT_SELECT":   1,
-	"OFPGT_INDIRECT": 2,
-	"OFPGT_FF":       3,
+func (x OfpGroupType) Enum() *OfpGroupType {
+	p := new(OfpGroupType)
+	*p = x
+	return p
 }
 
 func (x OfpGroupType) String() string {
-	return proto.EnumName(OfpGroupType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[24].Descriptor()
+}
+
+func (OfpGroupType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[24]
+}
+
+func (x OfpGroupType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupType.Descriptor instead.
 func (OfpGroupType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{24}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{24}
 }
 
 // Why is this packet being sent to the controller?
 type OfpPacketInReason int32
 
 const (
-	OfpPacketInReason_OFPR_NO_MATCH    OfpPacketInReason = 0
-	OfpPacketInReason_OFPR_ACTION      OfpPacketInReason = 1
-	OfpPacketInReason_OFPR_INVALID_TTL OfpPacketInReason = 2
+	OfpPacketInReason_OFPR_NO_MATCH    OfpPacketInReason = 0 // No matching flow (table-miss flow entry).
+	OfpPacketInReason_OFPR_ACTION      OfpPacketInReason = 1 // Action explicitly output to controller.
+	OfpPacketInReason_OFPR_INVALID_TTL OfpPacketInReason = 2 // Packet has invalid TTL
 )
 
-var OfpPacketInReason_name = map[int32]string{
-	0: "OFPR_NO_MATCH",
-	1: "OFPR_ACTION",
-	2: "OFPR_INVALID_TTL",
-}
+// Enum value maps for OfpPacketInReason.
+var (
+	OfpPacketInReason_name = map[int32]string{
+		0: "OFPR_NO_MATCH",
+		1: "OFPR_ACTION",
+		2: "OFPR_INVALID_TTL",
+	}
+	OfpPacketInReason_value = map[string]int32{
+		"OFPR_NO_MATCH":    0,
+		"OFPR_ACTION":      1,
+		"OFPR_INVALID_TTL": 2,
+	}
+)
 
-var OfpPacketInReason_value = map[string]int32{
-	"OFPR_NO_MATCH":    0,
-	"OFPR_ACTION":      1,
-	"OFPR_INVALID_TTL": 2,
+func (x OfpPacketInReason) Enum() *OfpPacketInReason {
+	p := new(OfpPacketInReason)
+	*p = x
+	return p
 }
 
 func (x OfpPacketInReason) String() string {
-	return proto.EnumName(OfpPacketInReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPacketInReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[25].Descriptor()
+}
+
+func (OfpPacketInReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[25]
+}
+
+func (x OfpPacketInReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPacketInReason.Descriptor instead.
 func (OfpPacketInReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{25}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{25}
 }
 
 // Why was this flow removed?
 type OfpFlowRemovedReason int32
 
 const (
-	OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT OfpFlowRemovedReason = 0
-	OfpFlowRemovedReason_OFPRR_HARD_TIMEOUT OfpFlowRemovedReason = 1
-	OfpFlowRemovedReason_OFPRR_DELETE       OfpFlowRemovedReason = 2
-	OfpFlowRemovedReason_OFPRR_GROUP_DELETE OfpFlowRemovedReason = 3
-	OfpFlowRemovedReason_OFPRR_METER_DELETE OfpFlowRemovedReason = 4
+	OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT OfpFlowRemovedReason = 0 // Flow idle time exceeded idle_timeout.
+	OfpFlowRemovedReason_OFPRR_HARD_TIMEOUT OfpFlowRemovedReason = 1 // Time exceeded hard_timeout.
+	OfpFlowRemovedReason_OFPRR_DELETE       OfpFlowRemovedReason = 2 // Evicted by a DELETE flow mod.
+	OfpFlowRemovedReason_OFPRR_GROUP_DELETE OfpFlowRemovedReason = 3 // Group was removed.
+	OfpFlowRemovedReason_OFPRR_METER_DELETE OfpFlowRemovedReason = 4 // Meter was removed
 )
 
-var OfpFlowRemovedReason_name = map[int32]string{
-	0: "OFPRR_IDLE_TIMEOUT",
-	1: "OFPRR_HARD_TIMEOUT",
-	2: "OFPRR_DELETE",
-	3: "OFPRR_GROUP_DELETE",
-	4: "OFPRR_METER_DELETE",
-}
+// Enum value maps for OfpFlowRemovedReason.
+var (
+	OfpFlowRemovedReason_name = map[int32]string{
+		0: "OFPRR_IDLE_TIMEOUT",
+		1: "OFPRR_HARD_TIMEOUT",
+		2: "OFPRR_DELETE",
+		3: "OFPRR_GROUP_DELETE",
+		4: "OFPRR_METER_DELETE",
+	}
+	OfpFlowRemovedReason_value = map[string]int32{
+		"OFPRR_IDLE_TIMEOUT": 0,
+		"OFPRR_HARD_TIMEOUT": 1,
+		"OFPRR_DELETE":       2,
+		"OFPRR_GROUP_DELETE": 3,
+		"OFPRR_METER_DELETE": 4,
+	}
+)
 
-var OfpFlowRemovedReason_value = map[string]int32{
-	"OFPRR_IDLE_TIMEOUT": 0,
-	"OFPRR_HARD_TIMEOUT": 1,
-	"OFPRR_DELETE":       2,
-	"OFPRR_GROUP_DELETE": 3,
-	"OFPRR_METER_DELETE": 4,
+func (x OfpFlowRemovedReason) Enum() *OfpFlowRemovedReason {
+	p := new(OfpFlowRemovedReason)
+	*p = x
+	return p
 }
 
 func (x OfpFlowRemovedReason) String() string {
-	return proto.EnumName(OfpFlowRemovedReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowRemovedReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[26].Descriptor()
+}
+
+func (OfpFlowRemovedReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[26]
+}
+
+func (x OfpFlowRemovedReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowRemovedReason.Descriptor instead.
 func (OfpFlowRemovedReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{26}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{26}
 }
 
 // Meter numbering. Flow meters can use any number up to OFPM_MAX.
@@ -1210,33 +1834,54 @@
 	// Last usable meter.
 	OfpMeter_OFPM_MAX OfpMeter = 2147418112
 	// Virtual meters.
-	OfpMeter_OFPM_SLOWPATH   OfpMeter = 2147483645
-	OfpMeter_OFPM_CONTROLLER OfpMeter = 2147483646
+	OfpMeter_OFPM_SLOWPATH   OfpMeter = 2147483645 // Meter for slow datapath.
+	OfpMeter_OFPM_CONTROLLER OfpMeter = 2147483646 // Meter for controller connection.
 	OfpMeter_OFPM_ALL        OfpMeter = 2147483647
 )
 
-var OfpMeter_name = map[int32]string{
-	0:          "OFPM_ZERO",
-	2147418112: "OFPM_MAX",
-	2147483645: "OFPM_SLOWPATH",
-	2147483646: "OFPM_CONTROLLER",
-	2147483647: "OFPM_ALL",
-}
+// Enum value maps for OfpMeter.
+var (
+	OfpMeter_name = map[int32]string{
+		0:          "OFPM_ZERO",
+		2147418112: "OFPM_MAX",
+		2147483645: "OFPM_SLOWPATH",
+		2147483646: "OFPM_CONTROLLER",
+		2147483647: "OFPM_ALL",
+	}
+	OfpMeter_value = map[string]int32{
+		"OFPM_ZERO":       0,
+		"OFPM_MAX":        2147418112,
+		"OFPM_SLOWPATH":   2147483645,
+		"OFPM_CONTROLLER": 2147483646,
+		"OFPM_ALL":        2147483647,
+	}
+)
 
-var OfpMeter_value = map[string]int32{
-	"OFPM_ZERO":       0,
-	"OFPM_MAX":        2147418112,
-	"OFPM_SLOWPATH":   2147483645,
-	"OFPM_CONTROLLER": 2147483646,
-	"OFPM_ALL":        2147483647,
+func (x OfpMeter) Enum() *OfpMeter {
+	p := new(OfpMeter)
+	*p = x
+	return p
 }
 
 func (x OfpMeter) String() string {
-	return proto.EnumName(OfpMeter_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeter) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[27].Descriptor()
+}
+
+func (OfpMeter) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[27]
+}
+
+func (x OfpMeter) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeter.Descriptor instead.
 func (OfpMeter) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{27}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{27}
 }
 
 // Meter band types
@@ -1244,60 +1889,102 @@
 
 const (
 	OfpMeterBandType_OFPMBT_INVALID      OfpMeterBandType = 0
-	OfpMeterBandType_OFPMBT_DROP         OfpMeterBandType = 1
-	OfpMeterBandType_OFPMBT_DSCP_REMARK  OfpMeterBandType = 2
-	OfpMeterBandType_OFPMBT_EXPERIMENTER OfpMeterBandType = 65535
+	OfpMeterBandType_OFPMBT_DROP         OfpMeterBandType = 1     // Drop packet.
+	OfpMeterBandType_OFPMBT_DSCP_REMARK  OfpMeterBandType = 2     // Remark DSCP in the IP header.
+	OfpMeterBandType_OFPMBT_EXPERIMENTER OfpMeterBandType = 65535 // Experimenter meter band.
 )
 
-var OfpMeterBandType_name = map[int32]string{
-	0:     "OFPMBT_INVALID",
-	1:     "OFPMBT_DROP",
-	2:     "OFPMBT_DSCP_REMARK",
-	65535: "OFPMBT_EXPERIMENTER",
-}
+// Enum value maps for OfpMeterBandType.
+var (
+	OfpMeterBandType_name = map[int32]string{
+		0:     "OFPMBT_INVALID",
+		1:     "OFPMBT_DROP",
+		2:     "OFPMBT_DSCP_REMARK",
+		65535: "OFPMBT_EXPERIMENTER",
+	}
+	OfpMeterBandType_value = map[string]int32{
+		"OFPMBT_INVALID":      0,
+		"OFPMBT_DROP":         1,
+		"OFPMBT_DSCP_REMARK":  2,
+		"OFPMBT_EXPERIMENTER": 65535,
+	}
+)
 
-var OfpMeterBandType_value = map[string]int32{
-	"OFPMBT_INVALID":      0,
-	"OFPMBT_DROP":         1,
-	"OFPMBT_DSCP_REMARK":  2,
-	"OFPMBT_EXPERIMENTER": 65535,
+func (x OfpMeterBandType) Enum() *OfpMeterBandType {
+	p := new(OfpMeterBandType)
+	*p = x
+	return p
 }
 
 func (x OfpMeterBandType) String() string {
-	return proto.EnumName(OfpMeterBandType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterBandType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[28].Descriptor()
+}
+
+func (OfpMeterBandType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[28]
+}
+
+func (x OfpMeterBandType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterBandType.Descriptor instead.
 func (OfpMeterBandType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{28}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{28}
 }
 
 // Meter commands
 type OfpMeterModCommand int32
 
 const (
-	OfpMeterModCommand_OFPMC_ADD    OfpMeterModCommand = 0
-	OfpMeterModCommand_OFPMC_MODIFY OfpMeterModCommand = 1
-	OfpMeterModCommand_OFPMC_DELETE OfpMeterModCommand = 2
+	OfpMeterModCommand_OFPMC_ADD    OfpMeterModCommand = 0 // New meter.
+	OfpMeterModCommand_OFPMC_MODIFY OfpMeterModCommand = 1 // Modify specified meter.
+	OfpMeterModCommand_OFPMC_DELETE OfpMeterModCommand = 2 // Delete specified meter.
 )
 
-var OfpMeterModCommand_name = map[int32]string{
-	0: "OFPMC_ADD",
-	1: "OFPMC_MODIFY",
-	2: "OFPMC_DELETE",
-}
+// Enum value maps for OfpMeterModCommand.
+var (
+	OfpMeterModCommand_name = map[int32]string{
+		0: "OFPMC_ADD",
+		1: "OFPMC_MODIFY",
+		2: "OFPMC_DELETE",
+	}
+	OfpMeterModCommand_value = map[string]int32{
+		"OFPMC_ADD":    0,
+		"OFPMC_MODIFY": 1,
+		"OFPMC_DELETE": 2,
+	}
+)
 
-var OfpMeterModCommand_value = map[string]int32{
-	"OFPMC_ADD":    0,
-	"OFPMC_MODIFY": 1,
-	"OFPMC_DELETE": 2,
+func (x OfpMeterModCommand) Enum() *OfpMeterModCommand {
+	p := new(OfpMeterModCommand)
+	*p = x
+	return p
 }
 
 func (x OfpMeterModCommand) String() string {
-	return proto.EnumName(OfpMeterModCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterModCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[29].Descriptor()
+}
+
+func (OfpMeterModCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[29]
+}
+
+func (x OfpMeterModCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterModCommand.Descriptor instead.
 func (OfpMeterModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{29}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{29}
 }
 
 // Meter configuration flags
@@ -1305,34 +1992,55 @@
 
 const (
 	OfpMeterFlags_OFPMF_INVALID OfpMeterFlags = 0
-	OfpMeterFlags_OFPMF_KBPS    OfpMeterFlags = 1
-	OfpMeterFlags_OFPMF_PKTPS   OfpMeterFlags = 2
-	OfpMeterFlags_OFPMF_BURST   OfpMeterFlags = 4
-	OfpMeterFlags_OFPMF_STATS   OfpMeterFlags = 8
+	OfpMeterFlags_OFPMF_KBPS    OfpMeterFlags = 1 // Rate value in kb/s (kilo-bit per second).
+	OfpMeterFlags_OFPMF_PKTPS   OfpMeterFlags = 2 // Rate value in packet/sec.
+	OfpMeterFlags_OFPMF_BURST   OfpMeterFlags = 4 // Do burst size.
+	OfpMeterFlags_OFPMF_STATS   OfpMeterFlags = 8 // Collect statistics.
 )
 
-var OfpMeterFlags_name = map[int32]string{
-	0: "OFPMF_INVALID",
-	1: "OFPMF_KBPS",
-	2: "OFPMF_PKTPS",
-	4: "OFPMF_BURST",
-	8: "OFPMF_STATS",
-}
+// Enum value maps for OfpMeterFlags.
+var (
+	OfpMeterFlags_name = map[int32]string{
+		0: "OFPMF_INVALID",
+		1: "OFPMF_KBPS",
+		2: "OFPMF_PKTPS",
+		4: "OFPMF_BURST",
+		8: "OFPMF_STATS",
+	}
+	OfpMeterFlags_value = map[string]int32{
+		"OFPMF_INVALID": 0,
+		"OFPMF_KBPS":    1,
+		"OFPMF_PKTPS":   2,
+		"OFPMF_BURST":   4,
+		"OFPMF_STATS":   8,
+	}
+)
 
-var OfpMeterFlags_value = map[string]int32{
-	"OFPMF_INVALID": 0,
-	"OFPMF_KBPS":    1,
-	"OFPMF_PKTPS":   2,
-	"OFPMF_BURST":   4,
-	"OFPMF_STATS":   8,
+func (x OfpMeterFlags) Enum() *OfpMeterFlags {
+	p := new(OfpMeterFlags)
+	*p = x
+	return p
 }
 
 func (x OfpMeterFlags) String() string {
-	return proto.EnumName(OfpMeterFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[30].Descriptor()
+}
+
+func (OfpMeterFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[30]
+}
+
+func (x OfpMeterFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterFlags.Descriptor instead.
 func (OfpMeterFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{30}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{30}
 }
 
 // Values for 'type' in ofp_error_message.  These values are immutable: they
@@ -1341,65 +2049,86 @@
 type OfpErrorType int32
 
 const (
-	OfpErrorType_OFPET_HELLO_FAILED          OfpErrorType = 0
-	OfpErrorType_OFPET_BAD_REQUEST           OfpErrorType = 1
-	OfpErrorType_OFPET_BAD_ACTION            OfpErrorType = 2
-	OfpErrorType_OFPET_BAD_INSTRUCTION       OfpErrorType = 3
-	OfpErrorType_OFPET_BAD_MATCH             OfpErrorType = 4
-	OfpErrorType_OFPET_FLOW_MOD_FAILED       OfpErrorType = 5
-	OfpErrorType_OFPET_GROUP_MOD_FAILED      OfpErrorType = 6
-	OfpErrorType_OFPET_PORT_MOD_FAILED       OfpErrorType = 7
-	OfpErrorType_OFPET_TABLE_MOD_FAILED      OfpErrorType = 8
-	OfpErrorType_OFPET_QUEUE_OP_FAILED       OfpErrorType = 9
-	OfpErrorType_OFPET_SWITCH_CONFIG_FAILED  OfpErrorType = 10
-	OfpErrorType_OFPET_ROLE_REQUEST_FAILED   OfpErrorType = 11
-	OfpErrorType_OFPET_METER_MOD_FAILED      OfpErrorType = 12
-	OfpErrorType_OFPET_TABLE_FEATURES_FAILED OfpErrorType = 13
-	OfpErrorType_OFPET_EXPERIMENTER          OfpErrorType = 65535
+	OfpErrorType_OFPET_HELLO_FAILED          OfpErrorType = 0     // Hello protocol failed.
+	OfpErrorType_OFPET_BAD_REQUEST           OfpErrorType = 1     // Request was not understood.
+	OfpErrorType_OFPET_BAD_ACTION            OfpErrorType = 2     // Error in action description.
+	OfpErrorType_OFPET_BAD_INSTRUCTION       OfpErrorType = 3     // Error in instruction list.
+	OfpErrorType_OFPET_BAD_MATCH             OfpErrorType = 4     // Error in match.
+	OfpErrorType_OFPET_FLOW_MOD_FAILED       OfpErrorType = 5     // Problem modifying flow entry.
+	OfpErrorType_OFPET_GROUP_MOD_FAILED      OfpErrorType = 6     // Problem modifying group entry.
+	OfpErrorType_OFPET_PORT_MOD_FAILED       OfpErrorType = 7     // Port mod request failed.
+	OfpErrorType_OFPET_TABLE_MOD_FAILED      OfpErrorType = 8     // Table mod request failed.
+	OfpErrorType_OFPET_QUEUE_OP_FAILED       OfpErrorType = 9     // Queue operation failed.
+	OfpErrorType_OFPET_SWITCH_CONFIG_FAILED  OfpErrorType = 10    // Switch config request failed.
+	OfpErrorType_OFPET_ROLE_REQUEST_FAILED   OfpErrorType = 11    // Controller Role request failed.
+	OfpErrorType_OFPET_METER_MOD_FAILED      OfpErrorType = 12    // Error in meter.
+	OfpErrorType_OFPET_TABLE_FEATURES_FAILED OfpErrorType = 13    // Setting table features failed.
+	OfpErrorType_OFPET_EXPERIMENTER          OfpErrorType = 65535 // Experimenter error messages.
 )
 
-var OfpErrorType_name = map[int32]string{
-	0:     "OFPET_HELLO_FAILED",
-	1:     "OFPET_BAD_REQUEST",
-	2:     "OFPET_BAD_ACTION",
-	3:     "OFPET_BAD_INSTRUCTION",
-	4:     "OFPET_BAD_MATCH",
-	5:     "OFPET_FLOW_MOD_FAILED",
-	6:     "OFPET_GROUP_MOD_FAILED",
-	7:     "OFPET_PORT_MOD_FAILED",
-	8:     "OFPET_TABLE_MOD_FAILED",
-	9:     "OFPET_QUEUE_OP_FAILED",
-	10:    "OFPET_SWITCH_CONFIG_FAILED",
-	11:    "OFPET_ROLE_REQUEST_FAILED",
-	12:    "OFPET_METER_MOD_FAILED",
-	13:    "OFPET_TABLE_FEATURES_FAILED",
-	65535: "OFPET_EXPERIMENTER",
-}
+// Enum value maps for OfpErrorType.
+var (
+	OfpErrorType_name = map[int32]string{
+		0:     "OFPET_HELLO_FAILED",
+		1:     "OFPET_BAD_REQUEST",
+		2:     "OFPET_BAD_ACTION",
+		3:     "OFPET_BAD_INSTRUCTION",
+		4:     "OFPET_BAD_MATCH",
+		5:     "OFPET_FLOW_MOD_FAILED",
+		6:     "OFPET_GROUP_MOD_FAILED",
+		7:     "OFPET_PORT_MOD_FAILED",
+		8:     "OFPET_TABLE_MOD_FAILED",
+		9:     "OFPET_QUEUE_OP_FAILED",
+		10:    "OFPET_SWITCH_CONFIG_FAILED",
+		11:    "OFPET_ROLE_REQUEST_FAILED",
+		12:    "OFPET_METER_MOD_FAILED",
+		13:    "OFPET_TABLE_FEATURES_FAILED",
+		65535: "OFPET_EXPERIMENTER",
+	}
+	OfpErrorType_value = map[string]int32{
+		"OFPET_HELLO_FAILED":          0,
+		"OFPET_BAD_REQUEST":           1,
+		"OFPET_BAD_ACTION":            2,
+		"OFPET_BAD_INSTRUCTION":       3,
+		"OFPET_BAD_MATCH":             4,
+		"OFPET_FLOW_MOD_FAILED":       5,
+		"OFPET_GROUP_MOD_FAILED":      6,
+		"OFPET_PORT_MOD_FAILED":       7,
+		"OFPET_TABLE_MOD_FAILED":      8,
+		"OFPET_QUEUE_OP_FAILED":       9,
+		"OFPET_SWITCH_CONFIG_FAILED":  10,
+		"OFPET_ROLE_REQUEST_FAILED":   11,
+		"OFPET_METER_MOD_FAILED":      12,
+		"OFPET_TABLE_FEATURES_FAILED": 13,
+		"OFPET_EXPERIMENTER":          65535,
+	}
+)
 
-var OfpErrorType_value = map[string]int32{
-	"OFPET_HELLO_FAILED":          0,
-	"OFPET_BAD_REQUEST":           1,
-	"OFPET_BAD_ACTION":            2,
-	"OFPET_BAD_INSTRUCTION":       3,
-	"OFPET_BAD_MATCH":             4,
-	"OFPET_FLOW_MOD_FAILED":       5,
-	"OFPET_GROUP_MOD_FAILED":      6,
-	"OFPET_PORT_MOD_FAILED":       7,
-	"OFPET_TABLE_MOD_FAILED":      8,
-	"OFPET_QUEUE_OP_FAILED":       9,
-	"OFPET_SWITCH_CONFIG_FAILED":  10,
-	"OFPET_ROLE_REQUEST_FAILED":   11,
-	"OFPET_METER_MOD_FAILED":      12,
-	"OFPET_TABLE_FEATURES_FAILED": 13,
-	"OFPET_EXPERIMENTER":          65535,
+func (x OfpErrorType) Enum() *OfpErrorType {
+	p := new(OfpErrorType)
+	*p = x
+	return p
 }
 
 func (x OfpErrorType) String() string {
-	return proto.EnumName(OfpErrorType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpErrorType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[31].Descriptor()
+}
+
+func (OfpErrorType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[31]
+}
+
+func (x OfpErrorType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpErrorType.Descriptor instead.
 func (OfpErrorType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{31}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{31}
 }
 
 // ofp_error_msg 'code' values for OFPET_HELLO_FAILED.  'data' contains an
@@ -1407,26 +2136,47 @@
 type OfpHelloFailedCode int32
 
 const (
-	OfpHelloFailedCode_OFPHFC_INCOMPATIBLE OfpHelloFailedCode = 0
-	OfpHelloFailedCode_OFPHFC_EPERM        OfpHelloFailedCode = 1
+	OfpHelloFailedCode_OFPHFC_INCOMPATIBLE OfpHelloFailedCode = 0 // No compatible version.
+	OfpHelloFailedCode_OFPHFC_EPERM        OfpHelloFailedCode = 1 // Permissions error.
 )
 
-var OfpHelloFailedCode_name = map[int32]string{
-	0: "OFPHFC_INCOMPATIBLE",
-	1: "OFPHFC_EPERM",
-}
+// Enum value maps for OfpHelloFailedCode.
+var (
+	OfpHelloFailedCode_name = map[int32]string{
+		0: "OFPHFC_INCOMPATIBLE",
+		1: "OFPHFC_EPERM",
+	}
+	OfpHelloFailedCode_value = map[string]int32{
+		"OFPHFC_INCOMPATIBLE": 0,
+		"OFPHFC_EPERM":        1,
+	}
+)
 
-var OfpHelloFailedCode_value = map[string]int32{
-	"OFPHFC_INCOMPATIBLE": 0,
-	"OFPHFC_EPERM":        1,
+func (x OfpHelloFailedCode) Enum() *OfpHelloFailedCode {
+	p := new(OfpHelloFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpHelloFailedCode) String() string {
-	return proto.EnumName(OfpHelloFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpHelloFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[32].Descriptor()
+}
+
+func (OfpHelloFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[32]
+}
+
+func (x OfpHelloFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpHelloFailedCode.Descriptor instead.
 func (OfpHelloFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{32}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{32}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_REQUEST.  'data' contains at least
@@ -1434,62 +2184,83 @@
 type OfpBadRequestCode int32
 
 const (
-	OfpBadRequestCode_OFPBRC_BAD_VERSION               OfpBadRequestCode = 0
-	OfpBadRequestCode_OFPBRC_BAD_TYPE                  OfpBadRequestCode = 1
-	OfpBadRequestCode_OFPBRC_BAD_MULTIPART             OfpBadRequestCode = 2
+	OfpBadRequestCode_OFPBRC_BAD_VERSION               OfpBadRequestCode = 0 // ofp_header.version not supported.
+	OfpBadRequestCode_OFPBRC_BAD_TYPE                  OfpBadRequestCode = 1 // ofp_header.type not supported.
+	OfpBadRequestCode_OFPBRC_BAD_MULTIPART             OfpBadRequestCode = 2 // ofp_multipart_request.type not supported.
 	OfpBadRequestCode_OFPBRC_BAD_EXPERIMENTER          OfpBadRequestCode = 3
-	OfpBadRequestCode_OFPBRC_BAD_EXP_TYPE              OfpBadRequestCode = 4
-	OfpBadRequestCode_OFPBRC_EPERM                     OfpBadRequestCode = 5
-	OfpBadRequestCode_OFPBRC_BAD_LEN                   OfpBadRequestCode = 6
-	OfpBadRequestCode_OFPBRC_BUFFER_EMPTY              OfpBadRequestCode = 7
-	OfpBadRequestCode_OFPBRC_BUFFER_UNKNOWN            OfpBadRequestCode = 8
+	OfpBadRequestCode_OFPBRC_BAD_EXP_TYPE              OfpBadRequestCode = 4 // Experimenter type not supported.
+	OfpBadRequestCode_OFPBRC_EPERM                     OfpBadRequestCode = 5 // Permissions error.
+	OfpBadRequestCode_OFPBRC_BAD_LEN                   OfpBadRequestCode = 6 // Wrong request length for type.
+	OfpBadRequestCode_OFPBRC_BUFFER_EMPTY              OfpBadRequestCode = 7 // Specified buffer has already been used.
+	OfpBadRequestCode_OFPBRC_BUFFER_UNKNOWN            OfpBadRequestCode = 8 // Specified buffer does not exist.
 	OfpBadRequestCode_OFPBRC_BAD_TABLE_ID              OfpBadRequestCode = 9
-	OfpBadRequestCode_OFPBRC_IS_SLAVE                  OfpBadRequestCode = 10
-	OfpBadRequestCode_OFPBRC_BAD_PORT                  OfpBadRequestCode = 11
-	OfpBadRequestCode_OFPBRC_BAD_PACKET                OfpBadRequestCode = 12
+	OfpBadRequestCode_OFPBRC_IS_SLAVE                  OfpBadRequestCode = 10 // Denied because controller is slave.
+	OfpBadRequestCode_OFPBRC_BAD_PORT                  OfpBadRequestCode = 11 // Invalid port.
+	OfpBadRequestCode_OFPBRC_BAD_PACKET                OfpBadRequestCode = 12 // Invalid packet in packet-out.
 	OfpBadRequestCode_OFPBRC_MULTIPART_BUFFER_OVERFLOW OfpBadRequestCode = 13
 )
 
-var OfpBadRequestCode_name = map[int32]string{
-	0:  "OFPBRC_BAD_VERSION",
-	1:  "OFPBRC_BAD_TYPE",
-	2:  "OFPBRC_BAD_MULTIPART",
-	3:  "OFPBRC_BAD_EXPERIMENTER",
-	4:  "OFPBRC_BAD_EXP_TYPE",
-	5:  "OFPBRC_EPERM",
-	6:  "OFPBRC_BAD_LEN",
-	7:  "OFPBRC_BUFFER_EMPTY",
-	8:  "OFPBRC_BUFFER_UNKNOWN",
-	9:  "OFPBRC_BAD_TABLE_ID",
-	10: "OFPBRC_IS_SLAVE",
-	11: "OFPBRC_BAD_PORT",
-	12: "OFPBRC_BAD_PACKET",
-	13: "OFPBRC_MULTIPART_BUFFER_OVERFLOW",
-}
+// Enum value maps for OfpBadRequestCode.
+var (
+	OfpBadRequestCode_name = map[int32]string{
+		0:  "OFPBRC_BAD_VERSION",
+		1:  "OFPBRC_BAD_TYPE",
+		2:  "OFPBRC_BAD_MULTIPART",
+		3:  "OFPBRC_BAD_EXPERIMENTER",
+		4:  "OFPBRC_BAD_EXP_TYPE",
+		5:  "OFPBRC_EPERM",
+		6:  "OFPBRC_BAD_LEN",
+		7:  "OFPBRC_BUFFER_EMPTY",
+		8:  "OFPBRC_BUFFER_UNKNOWN",
+		9:  "OFPBRC_BAD_TABLE_ID",
+		10: "OFPBRC_IS_SLAVE",
+		11: "OFPBRC_BAD_PORT",
+		12: "OFPBRC_BAD_PACKET",
+		13: "OFPBRC_MULTIPART_BUFFER_OVERFLOW",
+	}
+	OfpBadRequestCode_value = map[string]int32{
+		"OFPBRC_BAD_VERSION":               0,
+		"OFPBRC_BAD_TYPE":                  1,
+		"OFPBRC_BAD_MULTIPART":             2,
+		"OFPBRC_BAD_EXPERIMENTER":          3,
+		"OFPBRC_BAD_EXP_TYPE":              4,
+		"OFPBRC_EPERM":                     5,
+		"OFPBRC_BAD_LEN":                   6,
+		"OFPBRC_BUFFER_EMPTY":              7,
+		"OFPBRC_BUFFER_UNKNOWN":            8,
+		"OFPBRC_BAD_TABLE_ID":              9,
+		"OFPBRC_IS_SLAVE":                  10,
+		"OFPBRC_BAD_PORT":                  11,
+		"OFPBRC_BAD_PACKET":                12,
+		"OFPBRC_MULTIPART_BUFFER_OVERFLOW": 13,
+	}
+)
 
-var OfpBadRequestCode_value = map[string]int32{
-	"OFPBRC_BAD_VERSION":               0,
-	"OFPBRC_BAD_TYPE":                  1,
-	"OFPBRC_BAD_MULTIPART":             2,
-	"OFPBRC_BAD_EXPERIMENTER":          3,
-	"OFPBRC_BAD_EXP_TYPE":              4,
-	"OFPBRC_EPERM":                     5,
-	"OFPBRC_BAD_LEN":                   6,
-	"OFPBRC_BUFFER_EMPTY":              7,
-	"OFPBRC_BUFFER_UNKNOWN":            8,
-	"OFPBRC_BAD_TABLE_ID":              9,
-	"OFPBRC_IS_SLAVE":                  10,
-	"OFPBRC_BAD_PORT":                  11,
-	"OFPBRC_BAD_PACKET":                12,
-	"OFPBRC_MULTIPART_BUFFER_OVERFLOW": 13,
+func (x OfpBadRequestCode) Enum() *OfpBadRequestCode {
+	p := new(OfpBadRequestCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadRequestCode) String() string {
-	return proto.EnumName(OfpBadRequestCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadRequestCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[33].Descriptor()
+}
+
+func (OfpBadRequestCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[33]
+}
+
+func (x OfpBadRequestCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadRequestCode.Descriptor instead.
 func (OfpBadRequestCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{33}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{33}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_ACTION.  'data' contains at least
@@ -1497,68 +2268,89 @@
 type OfpBadActionCode int32
 
 const (
-	OfpBadActionCode_OFPBAC_BAD_TYPE           OfpBadActionCode = 0
-	OfpBadActionCode_OFPBAC_BAD_LEN            OfpBadActionCode = 1
-	OfpBadActionCode_OFPBAC_BAD_EXPERIMENTER   OfpBadActionCode = 2
-	OfpBadActionCode_OFPBAC_BAD_EXP_TYPE       OfpBadActionCode = 3
-	OfpBadActionCode_OFPBAC_BAD_OUT_PORT       OfpBadActionCode = 4
-	OfpBadActionCode_OFPBAC_BAD_ARGUMENT       OfpBadActionCode = 5
-	OfpBadActionCode_OFPBAC_EPERM              OfpBadActionCode = 6
-	OfpBadActionCode_OFPBAC_TOO_MANY           OfpBadActionCode = 7
-	OfpBadActionCode_OFPBAC_BAD_QUEUE          OfpBadActionCode = 8
-	OfpBadActionCode_OFPBAC_BAD_OUT_GROUP      OfpBadActionCode = 9
+	OfpBadActionCode_OFPBAC_BAD_TYPE           OfpBadActionCode = 0 // Unknown or unsupported action type.
+	OfpBadActionCode_OFPBAC_BAD_LEN            OfpBadActionCode = 1 // Length problem in actions.
+	OfpBadActionCode_OFPBAC_BAD_EXPERIMENTER   OfpBadActionCode = 2 // Unknown experimenter id specified.
+	OfpBadActionCode_OFPBAC_BAD_EXP_TYPE       OfpBadActionCode = 3 // Unknown action for experimenter id.
+	OfpBadActionCode_OFPBAC_BAD_OUT_PORT       OfpBadActionCode = 4 // Problem validating output port.
+	OfpBadActionCode_OFPBAC_BAD_ARGUMENT       OfpBadActionCode = 5 // Bad action argument.
+	OfpBadActionCode_OFPBAC_EPERM              OfpBadActionCode = 6 // Permissions error.
+	OfpBadActionCode_OFPBAC_TOO_MANY           OfpBadActionCode = 7 // Can't handle this many actions.
+	OfpBadActionCode_OFPBAC_BAD_QUEUE          OfpBadActionCode = 8 // Problem validating output queue.
+	OfpBadActionCode_OFPBAC_BAD_OUT_GROUP      OfpBadActionCode = 9 // Invalid group id in forward action.
 	OfpBadActionCode_OFPBAC_MATCH_INCONSISTENT OfpBadActionCode = 10
 	OfpBadActionCode_OFPBAC_UNSUPPORTED_ORDER  OfpBadActionCode = 11
 	OfpBadActionCode_OFPBAC_BAD_TAG            OfpBadActionCode = 12
-	OfpBadActionCode_OFPBAC_BAD_SET_TYPE       OfpBadActionCode = 13
-	OfpBadActionCode_OFPBAC_BAD_SET_LEN        OfpBadActionCode = 14
-	OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT   OfpBadActionCode = 15
+	OfpBadActionCode_OFPBAC_BAD_SET_TYPE       OfpBadActionCode = 13 // Unsupported type in SET_FIELD action.
+	OfpBadActionCode_OFPBAC_BAD_SET_LEN        OfpBadActionCode = 14 // Length problem in SET_FIELD action.
+	OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT   OfpBadActionCode = 15 // Bad argument in SET_FIELD action.
 )
 
-var OfpBadActionCode_name = map[int32]string{
-	0:  "OFPBAC_BAD_TYPE",
-	1:  "OFPBAC_BAD_LEN",
-	2:  "OFPBAC_BAD_EXPERIMENTER",
-	3:  "OFPBAC_BAD_EXP_TYPE",
-	4:  "OFPBAC_BAD_OUT_PORT",
-	5:  "OFPBAC_BAD_ARGUMENT",
-	6:  "OFPBAC_EPERM",
-	7:  "OFPBAC_TOO_MANY",
-	8:  "OFPBAC_BAD_QUEUE",
-	9:  "OFPBAC_BAD_OUT_GROUP",
-	10: "OFPBAC_MATCH_INCONSISTENT",
-	11: "OFPBAC_UNSUPPORTED_ORDER",
-	12: "OFPBAC_BAD_TAG",
-	13: "OFPBAC_BAD_SET_TYPE",
-	14: "OFPBAC_BAD_SET_LEN",
-	15: "OFPBAC_BAD_SET_ARGUMENT",
-}
+// Enum value maps for OfpBadActionCode.
+var (
+	OfpBadActionCode_name = map[int32]string{
+		0:  "OFPBAC_BAD_TYPE",
+		1:  "OFPBAC_BAD_LEN",
+		2:  "OFPBAC_BAD_EXPERIMENTER",
+		3:  "OFPBAC_BAD_EXP_TYPE",
+		4:  "OFPBAC_BAD_OUT_PORT",
+		5:  "OFPBAC_BAD_ARGUMENT",
+		6:  "OFPBAC_EPERM",
+		7:  "OFPBAC_TOO_MANY",
+		8:  "OFPBAC_BAD_QUEUE",
+		9:  "OFPBAC_BAD_OUT_GROUP",
+		10: "OFPBAC_MATCH_INCONSISTENT",
+		11: "OFPBAC_UNSUPPORTED_ORDER",
+		12: "OFPBAC_BAD_TAG",
+		13: "OFPBAC_BAD_SET_TYPE",
+		14: "OFPBAC_BAD_SET_LEN",
+		15: "OFPBAC_BAD_SET_ARGUMENT",
+	}
+	OfpBadActionCode_value = map[string]int32{
+		"OFPBAC_BAD_TYPE":           0,
+		"OFPBAC_BAD_LEN":            1,
+		"OFPBAC_BAD_EXPERIMENTER":   2,
+		"OFPBAC_BAD_EXP_TYPE":       3,
+		"OFPBAC_BAD_OUT_PORT":       4,
+		"OFPBAC_BAD_ARGUMENT":       5,
+		"OFPBAC_EPERM":              6,
+		"OFPBAC_TOO_MANY":           7,
+		"OFPBAC_BAD_QUEUE":          8,
+		"OFPBAC_BAD_OUT_GROUP":      9,
+		"OFPBAC_MATCH_INCONSISTENT": 10,
+		"OFPBAC_UNSUPPORTED_ORDER":  11,
+		"OFPBAC_BAD_TAG":            12,
+		"OFPBAC_BAD_SET_TYPE":       13,
+		"OFPBAC_BAD_SET_LEN":        14,
+		"OFPBAC_BAD_SET_ARGUMENT":   15,
+	}
+)
 
-var OfpBadActionCode_value = map[string]int32{
-	"OFPBAC_BAD_TYPE":           0,
-	"OFPBAC_BAD_LEN":            1,
-	"OFPBAC_BAD_EXPERIMENTER":   2,
-	"OFPBAC_BAD_EXP_TYPE":       3,
-	"OFPBAC_BAD_OUT_PORT":       4,
-	"OFPBAC_BAD_ARGUMENT":       5,
-	"OFPBAC_EPERM":              6,
-	"OFPBAC_TOO_MANY":           7,
-	"OFPBAC_BAD_QUEUE":          8,
-	"OFPBAC_BAD_OUT_GROUP":      9,
-	"OFPBAC_MATCH_INCONSISTENT": 10,
-	"OFPBAC_UNSUPPORTED_ORDER":  11,
-	"OFPBAC_BAD_TAG":            12,
-	"OFPBAC_BAD_SET_TYPE":       13,
-	"OFPBAC_BAD_SET_LEN":        14,
-	"OFPBAC_BAD_SET_ARGUMENT":   15,
+func (x OfpBadActionCode) Enum() *OfpBadActionCode {
+	p := new(OfpBadActionCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadActionCode) String() string {
-	return proto.EnumName(OfpBadActionCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadActionCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[34].Descriptor()
+}
+
+func (OfpBadActionCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[34]
+}
+
+func (x OfpBadActionCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadActionCode.Descriptor instead.
 func (OfpBadActionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{34}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{34}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_INSTRUCTION.  'data' contains at
@@ -1566,47 +2358,68 @@
 type OfpBadInstructionCode int32
 
 const (
-	OfpBadInstructionCode_OFPBIC_UNKNOWN_INST        OfpBadInstructionCode = 0
+	OfpBadInstructionCode_OFPBIC_UNKNOWN_INST        OfpBadInstructionCode = 0 // Unknown instruction.
 	OfpBadInstructionCode_OFPBIC_UNSUP_INST          OfpBadInstructionCode = 1
-	OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID        OfpBadInstructionCode = 2
-	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA      OfpBadInstructionCode = 3
+	OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID        OfpBadInstructionCode = 2 // Invalid Table-ID specified.
+	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA      OfpBadInstructionCode = 3 // Metadata value unsupported by datapath.
 	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA_MASK OfpBadInstructionCode = 4
-	OfpBadInstructionCode_OFPBIC_BAD_EXPERIMENTER    OfpBadInstructionCode = 5
-	OfpBadInstructionCode_OFPBIC_BAD_EXP_TYPE        OfpBadInstructionCode = 6
-	OfpBadInstructionCode_OFPBIC_BAD_LEN             OfpBadInstructionCode = 7
-	OfpBadInstructionCode_OFPBIC_EPERM               OfpBadInstructionCode = 8
+	OfpBadInstructionCode_OFPBIC_BAD_EXPERIMENTER    OfpBadInstructionCode = 5 // Unknown experimenter id specified.
+	OfpBadInstructionCode_OFPBIC_BAD_EXP_TYPE        OfpBadInstructionCode = 6 // Unknown instruction for experimenter id.
+	OfpBadInstructionCode_OFPBIC_BAD_LEN             OfpBadInstructionCode = 7 // Length problem in instructions.
+	OfpBadInstructionCode_OFPBIC_EPERM               OfpBadInstructionCode = 8 // Permissions error.
 )
 
-var OfpBadInstructionCode_name = map[int32]string{
-	0: "OFPBIC_UNKNOWN_INST",
-	1: "OFPBIC_UNSUP_INST",
-	2: "OFPBIC_BAD_TABLE_ID",
-	3: "OFPBIC_UNSUP_METADATA",
-	4: "OFPBIC_UNSUP_METADATA_MASK",
-	5: "OFPBIC_BAD_EXPERIMENTER",
-	6: "OFPBIC_BAD_EXP_TYPE",
-	7: "OFPBIC_BAD_LEN",
-	8: "OFPBIC_EPERM",
-}
+// Enum value maps for OfpBadInstructionCode.
+var (
+	OfpBadInstructionCode_name = map[int32]string{
+		0: "OFPBIC_UNKNOWN_INST",
+		1: "OFPBIC_UNSUP_INST",
+		2: "OFPBIC_BAD_TABLE_ID",
+		3: "OFPBIC_UNSUP_METADATA",
+		4: "OFPBIC_UNSUP_METADATA_MASK",
+		5: "OFPBIC_BAD_EXPERIMENTER",
+		6: "OFPBIC_BAD_EXP_TYPE",
+		7: "OFPBIC_BAD_LEN",
+		8: "OFPBIC_EPERM",
+	}
+	OfpBadInstructionCode_value = map[string]int32{
+		"OFPBIC_UNKNOWN_INST":        0,
+		"OFPBIC_UNSUP_INST":          1,
+		"OFPBIC_BAD_TABLE_ID":        2,
+		"OFPBIC_UNSUP_METADATA":      3,
+		"OFPBIC_UNSUP_METADATA_MASK": 4,
+		"OFPBIC_BAD_EXPERIMENTER":    5,
+		"OFPBIC_BAD_EXP_TYPE":        6,
+		"OFPBIC_BAD_LEN":             7,
+		"OFPBIC_EPERM":               8,
+	}
+)
 
-var OfpBadInstructionCode_value = map[string]int32{
-	"OFPBIC_UNKNOWN_INST":        0,
-	"OFPBIC_UNSUP_INST":          1,
-	"OFPBIC_BAD_TABLE_ID":        2,
-	"OFPBIC_UNSUP_METADATA":      3,
-	"OFPBIC_UNSUP_METADATA_MASK": 4,
-	"OFPBIC_BAD_EXPERIMENTER":    5,
-	"OFPBIC_BAD_EXP_TYPE":        6,
-	"OFPBIC_BAD_LEN":             7,
-	"OFPBIC_EPERM":               8,
+func (x OfpBadInstructionCode) Enum() *OfpBadInstructionCode {
+	p := new(OfpBadInstructionCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadInstructionCode) String() string {
-	return proto.EnumName(OfpBadInstructionCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadInstructionCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[35].Descriptor()
+}
+
+func (OfpBadInstructionCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[35]
+}
+
+func (x OfpBadInstructionCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadInstructionCode.Descriptor instead.
 func (OfpBadInstructionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{35}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{35}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_MATCH.  'data' contains at least
@@ -1615,55 +2428,76 @@
 
 const (
 	OfpBadMatchCode_OFPBMC_BAD_TYPE         OfpBadMatchCode = 0
-	OfpBadMatchCode_OFPBMC_BAD_LEN          OfpBadMatchCode = 1
-	OfpBadMatchCode_OFPBMC_BAD_TAG          OfpBadMatchCode = 2
+	OfpBadMatchCode_OFPBMC_BAD_LEN          OfpBadMatchCode = 1 // Length problem in match.
+	OfpBadMatchCode_OFPBMC_BAD_TAG          OfpBadMatchCode = 2 // Match uses an unsupported tag/encap.
 	OfpBadMatchCode_OFPBMC_BAD_DL_ADDR_MASK OfpBadMatchCode = 3
 	OfpBadMatchCode_OFPBMC_BAD_NW_ADDR_MASK OfpBadMatchCode = 4
 	OfpBadMatchCode_OFPBMC_BAD_WILDCARDS    OfpBadMatchCode = 5
-	OfpBadMatchCode_OFPBMC_BAD_FIELD        OfpBadMatchCode = 6
-	OfpBadMatchCode_OFPBMC_BAD_VALUE        OfpBadMatchCode = 7
+	OfpBadMatchCode_OFPBMC_BAD_FIELD        OfpBadMatchCode = 6 // Unsupported field type in the match.
+	OfpBadMatchCode_OFPBMC_BAD_VALUE        OfpBadMatchCode = 7 // Unsupported value in a match field.
 	OfpBadMatchCode_OFPBMC_BAD_MASK         OfpBadMatchCode = 8
-	OfpBadMatchCode_OFPBMC_BAD_PREREQ       OfpBadMatchCode = 9
-	OfpBadMatchCode_OFPBMC_DUP_FIELD        OfpBadMatchCode = 10
-	OfpBadMatchCode_OFPBMC_EPERM            OfpBadMatchCode = 11
+	OfpBadMatchCode_OFPBMC_BAD_PREREQ       OfpBadMatchCode = 9  // A prerequisite was not met.
+	OfpBadMatchCode_OFPBMC_DUP_FIELD        OfpBadMatchCode = 10 // A field type was duplicated.
+	OfpBadMatchCode_OFPBMC_EPERM            OfpBadMatchCode = 11 // Permissions error.
 )
 
-var OfpBadMatchCode_name = map[int32]string{
-	0:  "OFPBMC_BAD_TYPE",
-	1:  "OFPBMC_BAD_LEN",
-	2:  "OFPBMC_BAD_TAG",
-	3:  "OFPBMC_BAD_DL_ADDR_MASK",
-	4:  "OFPBMC_BAD_NW_ADDR_MASK",
-	5:  "OFPBMC_BAD_WILDCARDS",
-	6:  "OFPBMC_BAD_FIELD",
-	7:  "OFPBMC_BAD_VALUE",
-	8:  "OFPBMC_BAD_MASK",
-	9:  "OFPBMC_BAD_PREREQ",
-	10: "OFPBMC_DUP_FIELD",
-	11: "OFPBMC_EPERM",
-}
+// Enum value maps for OfpBadMatchCode.
+var (
+	OfpBadMatchCode_name = map[int32]string{
+		0:  "OFPBMC_BAD_TYPE",
+		1:  "OFPBMC_BAD_LEN",
+		2:  "OFPBMC_BAD_TAG",
+		3:  "OFPBMC_BAD_DL_ADDR_MASK",
+		4:  "OFPBMC_BAD_NW_ADDR_MASK",
+		5:  "OFPBMC_BAD_WILDCARDS",
+		6:  "OFPBMC_BAD_FIELD",
+		7:  "OFPBMC_BAD_VALUE",
+		8:  "OFPBMC_BAD_MASK",
+		9:  "OFPBMC_BAD_PREREQ",
+		10: "OFPBMC_DUP_FIELD",
+		11: "OFPBMC_EPERM",
+	}
+	OfpBadMatchCode_value = map[string]int32{
+		"OFPBMC_BAD_TYPE":         0,
+		"OFPBMC_BAD_LEN":          1,
+		"OFPBMC_BAD_TAG":          2,
+		"OFPBMC_BAD_DL_ADDR_MASK": 3,
+		"OFPBMC_BAD_NW_ADDR_MASK": 4,
+		"OFPBMC_BAD_WILDCARDS":    5,
+		"OFPBMC_BAD_FIELD":        6,
+		"OFPBMC_BAD_VALUE":        7,
+		"OFPBMC_BAD_MASK":         8,
+		"OFPBMC_BAD_PREREQ":       9,
+		"OFPBMC_DUP_FIELD":        10,
+		"OFPBMC_EPERM":            11,
+	}
+)
 
-var OfpBadMatchCode_value = map[string]int32{
-	"OFPBMC_BAD_TYPE":         0,
-	"OFPBMC_BAD_LEN":          1,
-	"OFPBMC_BAD_TAG":          2,
-	"OFPBMC_BAD_DL_ADDR_MASK": 3,
-	"OFPBMC_BAD_NW_ADDR_MASK": 4,
-	"OFPBMC_BAD_WILDCARDS":    5,
-	"OFPBMC_BAD_FIELD":        6,
-	"OFPBMC_BAD_VALUE":        7,
-	"OFPBMC_BAD_MASK":         8,
-	"OFPBMC_BAD_PREREQ":       9,
-	"OFPBMC_DUP_FIELD":        10,
-	"OFPBMC_EPERM":            11,
+func (x OfpBadMatchCode) Enum() *OfpBadMatchCode {
+	p := new(OfpBadMatchCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadMatchCode) String() string {
-	return proto.EnumName(OfpBadMatchCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadMatchCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[36].Descriptor()
+}
+
+func (OfpBadMatchCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[36]
+}
+
+func (x OfpBadMatchCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadMatchCode.Descriptor instead.
 func (OfpBadMatchCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{36}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{36}
 }
 
 // ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED.  'data' contains
@@ -1671,44 +2505,65 @@
 type OfpFlowModFailedCode int32
 
 const (
-	OfpFlowModFailedCode_OFPFMFC_UNKNOWN      OfpFlowModFailedCode = 0
-	OfpFlowModFailedCode_OFPFMFC_TABLE_FULL   OfpFlowModFailedCode = 1
-	OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID OfpFlowModFailedCode = 2
+	OfpFlowModFailedCode_OFPFMFC_UNKNOWN      OfpFlowModFailedCode = 0 // Unspecified error.
+	OfpFlowModFailedCode_OFPFMFC_TABLE_FULL   OfpFlowModFailedCode = 1 // Flow not added because table was full.
+	OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID OfpFlowModFailedCode = 2 // Table does not exist
 	OfpFlowModFailedCode_OFPFMFC_OVERLAP      OfpFlowModFailedCode = 3
-	OfpFlowModFailedCode_OFPFMFC_EPERM        OfpFlowModFailedCode = 4
+	OfpFlowModFailedCode_OFPFMFC_EPERM        OfpFlowModFailedCode = 4 // Permissions error.
 	OfpFlowModFailedCode_OFPFMFC_BAD_TIMEOUT  OfpFlowModFailedCode = 5
-	OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND  OfpFlowModFailedCode = 6
-	OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS    OfpFlowModFailedCode = 7
+	OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND  OfpFlowModFailedCode = 6 // Unsupported or unknown command.
+	OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS    OfpFlowModFailedCode = 7 // Unsupported or unknown flags.
 )
 
-var OfpFlowModFailedCode_name = map[int32]string{
-	0: "OFPFMFC_UNKNOWN",
-	1: "OFPFMFC_TABLE_FULL",
-	2: "OFPFMFC_BAD_TABLE_ID",
-	3: "OFPFMFC_OVERLAP",
-	4: "OFPFMFC_EPERM",
-	5: "OFPFMFC_BAD_TIMEOUT",
-	6: "OFPFMFC_BAD_COMMAND",
-	7: "OFPFMFC_BAD_FLAGS",
-}
+// Enum value maps for OfpFlowModFailedCode.
+var (
+	OfpFlowModFailedCode_name = map[int32]string{
+		0: "OFPFMFC_UNKNOWN",
+		1: "OFPFMFC_TABLE_FULL",
+		2: "OFPFMFC_BAD_TABLE_ID",
+		3: "OFPFMFC_OVERLAP",
+		4: "OFPFMFC_EPERM",
+		5: "OFPFMFC_BAD_TIMEOUT",
+		6: "OFPFMFC_BAD_COMMAND",
+		7: "OFPFMFC_BAD_FLAGS",
+	}
+	OfpFlowModFailedCode_value = map[string]int32{
+		"OFPFMFC_UNKNOWN":      0,
+		"OFPFMFC_TABLE_FULL":   1,
+		"OFPFMFC_BAD_TABLE_ID": 2,
+		"OFPFMFC_OVERLAP":      3,
+		"OFPFMFC_EPERM":        4,
+		"OFPFMFC_BAD_TIMEOUT":  5,
+		"OFPFMFC_BAD_COMMAND":  6,
+		"OFPFMFC_BAD_FLAGS":    7,
+	}
+)
 
-var OfpFlowModFailedCode_value = map[string]int32{
-	"OFPFMFC_UNKNOWN":      0,
-	"OFPFMFC_TABLE_FULL":   1,
-	"OFPFMFC_BAD_TABLE_ID": 2,
-	"OFPFMFC_OVERLAP":      3,
-	"OFPFMFC_EPERM":        4,
-	"OFPFMFC_BAD_TIMEOUT":  5,
-	"OFPFMFC_BAD_COMMAND":  6,
-	"OFPFMFC_BAD_FLAGS":    7,
+func (x OfpFlowModFailedCode) Enum() *OfpFlowModFailedCode {
+	p := new(OfpFlowModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpFlowModFailedCode) String() string {
-	return proto.EnumName(OfpFlowModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[37].Descriptor()
+}
+
+func (OfpFlowModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[37]
+}
+
+func (x OfpFlowModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowModFailedCode.Descriptor instead.
 func (OfpFlowModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{37}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{37}
 }
 
 // ofp_error_msg 'code' values for OFPET_GROUP_MOD_FAILED.  'data' contains
@@ -1719,62 +2574,83 @@
 	OfpGroupModFailedCode_OFPGMFC_GROUP_EXISTS         OfpGroupModFailedCode = 0
 	OfpGroupModFailedCode_OFPGMFC_INVALID_GROUP        OfpGroupModFailedCode = 1
 	OfpGroupModFailedCode_OFPGMFC_WEIGHT_UNSUPPORTED   OfpGroupModFailedCode = 2
-	OfpGroupModFailedCode_OFPGMFC_OUT_OF_GROUPS        OfpGroupModFailedCode = 3
+	OfpGroupModFailedCode_OFPGMFC_OUT_OF_GROUPS        OfpGroupModFailedCode = 3 // The group table is full.
 	OfpGroupModFailedCode_OFPGMFC_OUT_OF_BUCKETS       OfpGroupModFailedCode = 4
 	OfpGroupModFailedCode_OFPGMFC_CHAINING_UNSUPPORTED OfpGroupModFailedCode = 5
 	OfpGroupModFailedCode_OFPGMFC_WATCH_UNSUPPORTED    OfpGroupModFailedCode = 6
-	OfpGroupModFailedCode_OFPGMFC_LOOP                 OfpGroupModFailedCode = 7
+	OfpGroupModFailedCode_OFPGMFC_LOOP                 OfpGroupModFailedCode = 7 // Group entry would cause a loop.
 	OfpGroupModFailedCode_OFPGMFC_UNKNOWN_GROUP        OfpGroupModFailedCode = 8
 	OfpGroupModFailedCode_OFPGMFC_CHAINED_GROUP        OfpGroupModFailedCode = 9
-	OfpGroupModFailedCode_OFPGMFC_BAD_TYPE             OfpGroupModFailedCode = 10
-	OfpGroupModFailedCode_OFPGMFC_BAD_COMMAND          OfpGroupModFailedCode = 11
-	OfpGroupModFailedCode_OFPGMFC_BAD_BUCKET           OfpGroupModFailedCode = 12
-	OfpGroupModFailedCode_OFPGMFC_BAD_WATCH            OfpGroupModFailedCode = 13
-	OfpGroupModFailedCode_OFPGMFC_EPERM                OfpGroupModFailedCode = 14
+	OfpGroupModFailedCode_OFPGMFC_BAD_TYPE             OfpGroupModFailedCode = 10 // Unsupported or unknown group type.
+	OfpGroupModFailedCode_OFPGMFC_BAD_COMMAND          OfpGroupModFailedCode = 11 // Unsupported or unknown command.
+	OfpGroupModFailedCode_OFPGMFC_BAD_BUCKET           OfpGroupModFailedCode = 12 // Error in bucket.
+	OfpGroupModFailedCode_OFPGMFC_BAD_WATCH            OfpGroupModFailedCode = 13 // Error in watch port/group.
+	OfpGroupModFailedCode_OFPGMFC_EPERM                OfpGroupModFailedCode = 14 // Permissions error.
 )
 
-var OfpGroupModFailedCode_name = map[int32]string{
-	0:  "OFPGMFC_GROUP_EXISTS",
-	1:  "OFPGMFC_INVALID_GROUP",
-	2:  "OFPGMFC_WEIGHT_UNSUPPORTED",
-	3:  "OFPGMFC_OUT_OF_GROUPS",
-	4:  "OFPGMFC_OUT_OF_BUCKETS",
-	5:  "OFPGMFC_CHAINING_UNSUPPORTED",
-	6:  "OFPGMFC_WATCH_UNSUPPORTED",
-	7:  "OFPGMFC_LOOP",
-	8:  "OFPGMFC_UNKNOWN_GROUP",
-	9:  "OFPGMFC_CHAINED_GROUP",
-	10: "OFPGMFC_BAD_TYPE",
-	11: "OFPGMFC_BAD_COMMAND",
-	12: "OFPGMFC_BAD_BUCKET",
-	13: "OFPGMFC_BAD_WATCH",
-	14: "OFPGMFC_EPERM",
-}
+// Enum value maps for OfpGroupModFailedCode.
+var (
+	OfpGroupModFailedCode_name = map[int32]string{
+		0:  "OFPGMFC_GROUP_EXISTS",
+		1:  "OFPGMFC_INVALID_GROUP",
+		2:  "OFPGMFC_WEIGHT_UNSUPPORTED",
+		3:  "OFPGMFC_OUT_OF_GROUPS",
+		4:  "OFPGMFC_OUT_OF_BUCKETS",
+		5:  "OFPGMFC_CHAINING_UNSUPPORTED",
+		6:  "OFPGMFC_WATCH_UNSUPPORTED",
+		7:  "OFPGMFC_LOOP",
+		8:  "OFPGMFC_UNKNOWN_GROUP",
+		9:  "OFPGMFC_CHAINED_GROUP",
+		10: "OFPGMFC_BAD_TYPE",
+		11: "OFPGMFC_BAD_COMMAND",
+		12: "OFPGMFC_BAD_BUCKET",
+		13: "OFPGMFC_BAD_WATCH",
+		14: "OFPGMFC_EPERM",
+	}
+	OfpGroupModFailedCode_value = map[string]int32{
+		"OFPGMFC_GROUP_EXISTS":         0,
+		"OFPGMFC_INVALID_GROUP":        1,
+		"OFPGMFC_WEIGHT_UNSUPPORTED":   2,
+		"OFPGMFC_OUT_OF_GROUPS":        3,
+		"OFPGMFC_OUT_OF_BUCKETS":       4,
+		"OFPGMFC_CHAINING_UNSUPPORTED": 5,
+		"OFPGMFC_WATCH_UNSUPPORTED":    6,
+		"OFPGMFC_LOOP":                 7,
+		"OFPGMFC_UNKNOWN_GROUP":        8,
+		"OFPGMFC_CHAINED_GROUP":        9,
+		"OFPGMFC_BAD_TYPE":             10,
+		"OFPGMFC_BAD_COMMAND":          11,
+		"OFPGMFC_BAD_BUCKET":           12,
+		"OFPGMFC_BAD_WATCH":            13,
+		"OFPGMFC_EPERM":                14,
+	}
+)
 
-var OfpGroupModFailedCode_value = map[string]int32{
-	"OFPGMFC_GROUP_EXISTS":         0,
-	"OFPGMFC_INVALID_GROUP":        1,
-	"OFPGMFC_WEIGHT_UNSUPPORTED":   2,
-	"OFPGMFC_OUT_OF_GROUPS":        3,
-	"OFPGMFC_OUT_OF_BUCKETS":       4,
-	"OFPGMFC_CHAINING_UNSUPPORTED": 5,
-	"OFPGMFC_WATCH_UNSUPPORTED":    6,
-	"OFPGMFC_LOOP":                 7,
-	"OFPGMFC_UNKNOWN_GROUP":        8,
-	"OFPGMFC_CHAINED_GROUP":        9,
-	"OFPGMFC_BAD_TYPE":             10,
-	"OFPGMFC_BAD_COMMAND":          11,
-	"OFPGMFC_BAD_BUCKET":           12,
-	"OFPGMFC_BAD_WATCH":            13,
-	"OFPGMFC_EPERM":                14,
+func (x OfpGroupModFailedCode) Enum() *OfpGroupModFailedCode {
+	p := new(OfpGroupModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpGroupModFailedCode) String() string {
-	return proto.EnumName(OfpGroupModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[38].Descriptor()
+}
+
+func (OfpGroupModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[38]
+}
+
+func (x OfpGroupModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupModFailedCode.Descriptor instead.
 func (OfpGroupModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{38}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{38}
 }
 
 // ofp_error_msg 'code' values for OFPET_PORT_MOD_FAILED.  'data' contains
@@ -1782,35 +2658,56 @@
 type OfpPortModFailedCode int32
 
 const (
-	OfpPortModFailedCode_OFPPMFC_BAD_PORT      OfpPortModFailedCode = 0
+	OfpPortModFailedCode_OFPPMFC_BAD_PORT      OfpPortModFailedCode = 0 // Specified port number does not exist.
 	OfpPortModFailedCode_OFPPMFC_BAD_HW_ADDR   OfpPortModFailedCode = 1
-	OfpPortModFailedCode_OFPPMFC_BAD_CONFIG    OfpPortModFailedCode = 2
-	OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE OfpPortModFailedCode = 3
-	OfpPortModFailedCode_OFPPMFC_EPERM         OfpPortModFailedCode = 4
+	OfpPortModFailedCode_OFPPMFC_BAD_CONFIG    OfpPortModFailedCode = 2 // Specified config is invalid.
+	OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE OfpPortModFailedCode = 3 // Specified advertise is invalid.
+	OfpPortModFailedCode_OFPPMFC_EPERM         OfpPortModFailedCode = 4 // Permissions error.
 )
 
-var OfpPortModFailedCode_name = map[int32]string{
-	0: "OFPPMFC_BAD_PORT",
-	1: "OFPPMFC_BAD_HW_ADDR",
-	2: "OFPPMFC_BAD_CONFIG",
-	3: "OFPPMFC_BAD_ADVERTISE",
-	4: "OFPPMFC_EPERM",
-}
+// Enum value maps for OfpPortModFailedCode.
+var (
+	OfpPortModFailedCode_name = map[int32]string{
+		0: "OFPPMFC_BAD_PORT",
+		1: "OFPPMFC_BAD_HW_ADDR",
+		2: "OFPPMFC_BAD_CONFIG",
+		3: "OFPPMFC_BAD_ADVERTISE",
+		4: "OFPPMFC_EPERM",
+	}
+	OfpPortModFailedCode_value = map[string]int32{
+		"OFPPMFC_BAD_PORT":      0,
+		"OFPPMFC_BAD_HW_ADDR":   1,
+		"OFPPMFC_BAD_CONFIG":    2,
+		"OFPPMFC_BAD_ADVERTISE": 3,
+		"OFPPMFC_EPERM":         4,
+	}
+)
 
-var OfpPortModFailedCode_value = map[string]int32{
-	"OFPPMFC_BAD_PORT":      0,
-	"OFPPMFC_BAD_HW_ADDR":   1,
-	"OFPPMFC_BAD_CONFIG":    2,
-	"OFPPMFC_BAD_ADVERTISE": 3,
-	"OFPPMFC_EPERM":         4,
+func (x OfpPortModFailedCode) Enum() *OfpPortModFailedCode {
+	p := new(OfpPortModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpPortModFailedCode) String() string {
-	return proto.EnumName(OfpPortModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[39].Descriptor()
+}
+
+func (OfpPortModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[39]
+}
+
+func (x OfpPortModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortModFailedCode.Descriptor instead.
 func (OfpPortModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{39}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{39}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_MOD_FAILED.  'data' contains
@@ -1818,29 +2715,50 @@
 type OfpTableModFailedCode int32
 
 const (
-	OfpTableModFailedCode_OFPTMFC_BAD_TABLE  OfpTableModFailedCode = 0
-	OfpTableModFailedCode_OFPTMFC_BAD_CONFIG OfpTableModFailedCode = 1
-	OfpTableModFailedCode_OFPTMFC_EPERM      OfpTableModFailedCode = 2
+	OfpTableModFailedCode_OFPTMFC_BAD_TABLE  OfpTableModFailedCode = 0 // Specified table does not exist.
+	OfpTableModFailedCode_OFPTMFC_BAD_CONFIG OfpTableModFailedCode = 1 // Specified config is invalid.
+	OfpTableModFailedCode_OFPTMFC_EPERM      OfpTableModFailedCode = 2 // Permissions error.
 )
 
-var OfpTableModFailedCode_name = map[int32]string{
-	0: "OFPTMFC_BAD_TABLE",
-	1: "OFPTMFC_BAD_CONFIG",
-	2: "OFPTMFC_EPERM",
-}
+// Enum value maps for OfpTableModFailedCode.
+var (
+	OfpTableModFailedCode_name = map[int32]string{
+		0: "OFPTMFC_BAD_TABLE",
+		1: "OFPTMFC_BAD_CONFIG",
+		2: "OFPTMFC_EPERM",
+	}
+	OfpTableModFailedCode_value = map[string]int32{
+		"OFPTMFC_BAD_TABLE":  0,
+		"OFPTMFC_BAD_CONFIG": 1,
+		"OFPTMFC_EPERM":      2,
+	}
+)
 
-var OfpTableModFailedCode_value = map[string]int32{
-	"OFPTMFC_BAD_TABLE":  0,
-	"OFPTMFC_BAD_CONFIG": 1,
-	"OFPTMFC_EPERM":      2,
+func (x OfpTableModFailedCode) Enum() *OfpTableModFailedCode {
+	p := new(OfpTableModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpTableModFailedCode) String() string {
-	return proto.EnumName(OfpTableModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[40].Descriptor()
+}
+
+func (OfpTableModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[40]
+}
+
+func (x OfpTableModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableModFailedCode.Descriptor instead.
 func (OfpTableModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{40}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{40}
 }
 
 // ofp_error msg 'code' values for OFPET_QUEUE_OP_FAILED. 'data' contains
@@ -1848,29 +2766,50 @@
 type OfpQueueOpFailedCode int32
 
 const (
-	OfpQueueOpFailedCode_OFPQOFC_BAD_PORT  OfpQueueOpFailedCode = 0
-	OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE OfpQueueOpFailedCode = 1
-	OfpQueueOpFailedCode_OFPQOFC_EPERM     OfpQueueOpFailedCode = 2
+	OfpQueueOpFailedCode_OFPQOFC_BAD_PORT  OfpQueueOpFailedCode = 0 // Invalid port (or port does not exist).
+	OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE OfpQueueOpFailedCode = 1 // Queue does not exist.
+	OfpQueueOpFailedCode_OFPQOFC_EPERM     OfpQueueOpFailedCode = 2 // Permissions error.
 )
 
-var OfpQueueOpFailedCode_name = map[int32]string{
-	0: "OFPQOFC_BAD_PORT",
-	1: "OFPQOFC_BAD_QUEUE",
-	2: "OFPQOFC_EPERM",
-}
+// Enum value maps for OfpQueueOpFailedCode.
+var (
+	OfpQueueOpFailedCode_name = map[int32]string{
+		0: "OFPQOFC_BAD_PORT",
+		1: "OFPQOFC_BAD_QUEUE",
+		2: "OFPQOFC_EPERM",
+	}
+	OfpQueueOpFailedCode_value = map[string]int32{
+		"OFPQOFC_BAD_PORT":  0,
+		"OFPQOFC_BAD_QUEUE": 1,
+		"OFPQOFC_EPERM":     2,
+	}
+)
 
-var OfpQueueOpFailedCode_value = map[string]int32{
-	"OFPQOFC_BAD_PORT":  0,
-	"OFPQOFC_BAD_QUEUE": 1,
-	"OFPQOFC_EPERM":     2,
+func (x OfpQueueOpFailedCode) Enum() *OfpQueueOpFailedCode {
+	p := new(OfpQueueOpFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpQueueOpFailedCode) String() string {
-	return proto.EnumName(OfpQueueOpFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpQueueOpFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[41].Descriptor()
+}
+
+func (OfpQueueOpFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[41]
+}
+
+func (x OfpQueueOpFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpQueueOpFailedCode.Descriptor instead.
 func (OfpQueueOpFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{41}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{41}
 }
 
 // ofp_error_msg 'code' values for OFPET_SWITCH_CONFIG_FAILED. 'data' contains
@@ -1878,29 +2817,50 @@
 type OfpSwitchConfigFailedCode int32
 
 const (
-	OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS OfpSwitchConfigFailedCode = 0
-	OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN   OfpSwitchConfigFailedCode = 1
-	OfpSwitchConfigFailedCode_OFPSCFC_EPERM     OfpSwitchConfigFailedCode = 2
+	OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS OfpSwitchConfigFailedCode = 0 // Specified flags is invalid.
+	OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN   OfpSwitchConfigFailedCode = 1 // Specified len is invalid.
+	OfpSwitchConfigFailedCode_OFPSCFC_EPERM     OfpSwitchConfigFailedCode = 2 // Permissions error.
 )
 
-var OfpSwitchConfigFailedCode_name = map[int32]string{
-	0: "OFPSCFC_BAD_FLAGS",
-	1: "OFPSCFC_BAD_LEN",
-	2: "OFPSCFC_EPERM",
-}
+// Enum value maps for OfpSwitchConfigFailedCode.
+var (
+	OfpSwitchConfigFailedCode_name = map[int32]string{
+		0: "OFPSCFC_BAD_FLAGS",
+		1: "OFPSCFC_BAD_LEN",
+		2: "OFPSCFC_EPERM",
+	}
+	OfpSwitchConfigFailedCode_value = map[string]int32{
+		"OFPSCFC_BAD_FLAGS": 0,
+		"OFPSCFC_BAD_LEN":   1,
+		"OFPSCFC_EPERM":     2,
+	}
+)
 
-var OfpSwitchConfigFailedCode_value = map[string]int32{
-	"OFPSCFC_BAD_FLAGS": 0,
-	"OFPSCFC_BAD_LEN":   1,
-	"OFPSCFC_EPERM":     2,
+func (x OfpSwitchConfigFailedCode) Enum() *OfpSwitchConfigFailedCode {
+	p := new(OfpSwitchConfigFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpSwitchConfigFailedCode) String() string {
-	return proto.EnumName(OfpSwitchConfigFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpSwitchConfigFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[42].Descriptor()
+}
+
+func (OfpSwitchConfigFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[42]
+}
+
+func (x OfpSwitchConfigFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpSwitchConfigFailedCode.Descriptor instead.
 func (OfpSwitchConfigFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{42}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{42}
 }
 
 // ofp_error_msg 'code' values for OFPET_ROLE_REQUEST_FAILED. 'data' contains
@@ -1908,29 +2868,50 @@
 type OfpRoleRequestFailedCode int32
 
 const (
-	OfpRoleRequestFailedCode_OFPRRFC_STALE    OfpRoleRequestFailedCode = 0
-	OfpRoleRequestFailedCode_OFPRRFC_UNSUP    OfpRoleRequestFailedCode = 1
-	OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE OfpRoleRequestFailedCode = 2
+	OfpRoleRequestFailedCode_OFPRRFC_STALE    OfpRoleRequestFailedCode = 0 // Stale Message: old generation_id.
+	OfpRoleRequestFailedCode_OFPRRFC_UNSUP    OfpRoleRequestFailedCode = 1 // Controller role change unsupported.
+	OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE OfpRoleRequestFailedCode = 2 // Invalid role.
 )
 
-var OfpRoleRequestFailedCode_name = map[int32]string{
-	0: "OFPRRFC_STALE",
-	1: "OFPRRFC_UNSUP",
-	2: "OFPRRFC_BAD_ROLE",
-}
+// Enum value maps for OfpRoleRequestFailedCode.
+var (
+	OfpRoleRequestFailedCode_name = map[int32]string{
+		0: "OFPRRFC_STALE",
+		1: "OFPRRFC_UNSUP",
+		2: "OFPRRFC_BAD_ROLE",
+	}
+	OfpRoleRequestFailedCode_value = map[string]int32{
+		"OFPRRFC_STALE":    0,
+		"OFPRRFC_UNSUP":    1,
+		"OFPRRFC_BAD_ROLE": 2,
+	}
+)
 
-var OfpRoleRequestFailedCode_value = map[string]int32{
-	"OFPRRFC_STALE":    0,
-	"OFPRRFC_UNSUP":    1,
-	"OFPRRFC_BAD_ROLE": 2,
+func (x OfpRoleRequestFailedCode) Enum() *OfpRoleRequestFailedCode {
+	p := new(OfpRoleRequestFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpRoleRequestFailedCode) String() string {
-	return proto.EnumName(OfpRoleRequestFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpRoleRequestFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[43].Descriptor()
+}
+
+func (OfpRoleRequestFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[43]
+}
+
+func (x OfpRoleRequestFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpRoleRequestFailedCode.Descriptor instead.
 func (OfpRoleRequestFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{43}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{43}
 }
 
 // ofp_error_msg 'code' values for OFPET_METER_MOD_FAILED.  'data' contains
@@ -1938,56 +2919,77 @@
 type OfpMeterModFailedCode int32
 
 const (
-	OfpMeterModFailedCode_OFPMMFC_UNKNOWN         OfpMeterModFailedCode = 0
+	OfpMeterModFailedCode_OFPMMFC_UNKNOWN         OfpMeterModFailedCode = 0 // Unspecified error.
 	OfpMeterModFailedCode_OFPMMFC_METER_EXISTS    OfpMeterModFailedCode = 1
 	OfpMeterModFailedCode_OFPMMFC_INVALID_METER   OfpMeterModFailedCode = 2
 	OfpMeterModFailedCode_OFPMMFC_UNKNOWN_METER   OfpMeterModFailedCode = 3
-	OfpMeterModFailedCode_OFPMMFC_BAD_COMMAND     OfpMeterModFailedCode = 4
-	OfpMeterModFailedCode_OFPMMFC_BAD_FLAGS       OfpMeterModFailedCode = 5
-	OfpMeterModFailedCode_OFPMMFC_BAD_RATE        OfpMeterModFailedCode = 6
-	OfpMeterModFailedCode_OFPMMFC_BAD_BURST       OfpMeterModFailedCode = 7
-	OfpMeterModFailedCode_OFPMMFC_BAD_BAND        OfpMeterModFailedCode = 8
-	OfpMeterModFailedCode_OFPMMFC_BAD_BAND_DETAIL OfpMeterModFailedCode = 9
-	OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS   OfpMeterModFailedCode = 10
+	OfpMeterModFailedCode_OFPMMFC_BAD_COMMAND     OfpMeterModFailedCode = 4  // Unsupported or unknown command.
+	OfpMeterModFailedCode_OFPMMFC_BAD_FLAGS       OfpMeterModFailedCode = 5  // Flag configuration unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_RATE        OfpMeterModFailedCode = 6  // Rate unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_BURST       OfpMeterModFailedCode = 7  // Burst size unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_BAND        OfpMeterModFailedCode = 8  // Band unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_BAND_DETAIL OfpMeterModFailedCode = 9  // Band value unsupported.
+	OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS   OfpMeterModFailedCode = 10 // No more meters available.
 	OfpMeterModFailedCode_OFPMMFC_OUT_OF_BANDS    OfpMeterModFailedCode = 11
 )
 
-var OfpMeterModFailedCode_name = map[int32]string{
-	0:  "OFPMMFC_UNKNOWN",
-	1:  "OFPMMFC_METER_EXISTS",
-	2:  "OFPMMFC_INVALID_METER",
-	3:  "OFPMMFC_UNKNOWN_METER",
-	4:  "OFPMMFC_BAD_COMMAND",
-	5:  "OFPMMFC_BAD_FLAGS",
-	6:  "OFPMMFC_BAD_RATE",
-	7:  "OFPMMFC_BAD_BURST",
-	8:  "OFPMMFC_BAD_BAND",
-	9:  "OFPMMFC_BAD_BAND_DETAIL",
-	10: "OFPMMFC_OUT_OF_METERS",
-	11: "OFPMMFC_OUT_OF_BANDS",
-}
+// Enum value maps for OfpMeterModFailedCode.
+var (
+	OfpMeterModFailedCode_name = map[int32]string{
+		0:  "OFPMMFC_UNKNOWN",
+		1:  "OFPMMFC_METER_EXISTS",
+		2:  "OFPMMFC_INVALID_METER",
+		3:  "OFPMMFC_UNKNOWN_METER",
+		4:  "OFPMMFC_BAD_COMMAND",
+		5:  "OFPMMFC_BAD_FLAGS",
+		6:  "OFPMMFC_BAD_RATE",
+		7:  "OFPMMFC_BAD_BURST",
+		8:  "OFPMMFC_BAD_BAND",
+		9:  "OFPMMFC_BAD_BAND_DETAIL",
+		10: "OFPMMFC_OUT_OF_METERS",
+		11: "OFPMMFC_OUT_OF_BANDS",
+	}
+	OfpMeterModFailedCode_value = map[string]int32{
+		"OFPMMFC_UNKNOWN":         0,
+		"OFPMMFC_METER_EXISTS":    1,
+		"OFPMMFC_INVALID_METER":   2,
+		"OFPMMFC_UNKNOWN_METER":   3,
+		"OFPMMFC_BAD_COMMAND":     4,
+		"OFPMMFC_BAD_FLAGS":       5,
+		"OFPMMFC_BAD_RATE":        6,
+		"OFPMMFC_BAD_BURST":       7,
+		"OFPMMFC_BAD_BAND":        8,
+		"OFPMMFC_BAD_BAND_DETAIL": 9,
+		"OFPMMFC_OUT_OF_METERS":   10,
+		"OFPMMFC_OUT_OF_BANDS":    11,
+	}
+)
 
-var OfpMeterModFailedCode_value = map[string]int32{
-	"OFPMMFC_UNKNOWN":         0,
-	"OFPMMFC_METER_EXISTS":    1,
-	"OFPMMFC_INVALID_METER":   2,
-	"OFPMMFC_UNKNOWN_METER":   3,
-	"OFPMMFC_BAD_COMMAND":     4,
-	"OFPMMFC_BAD_FLAGS":       5,
-	"OFPMMFC_BAD_RATE":        6,
-	"OFPMMFC_BAD_BURST":       7,
-	"OFPMMFC_BAD_BAND":        8,
-	"OFPMMFC_BAD_BAND_DETAIL": 9,
-	"OFPMMFC_OUT_OF_METERS":   10,
-	"OFPMMFC_OUT_OF_BANDS":    11,
+func (x OfpMeterModFailedCode) Enum() *OfpMeterModFailedCode {
+	p := new(OfpMeterModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpMeterModFailedCode) String() string {
-	return proto.EnumName(OfpMeterModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[44].Descriptor()
+}
+
+func (OfpMeterModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[44]
+}
+
+func (x OfpMeterModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterModFailedCode.Descriptor instead.
 func (OfpMeterModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{44}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{44}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_FEATURES_FAILED. 'data' contains
@@ -1995,38 +2997,59 @@
 type OfpTableFeaturesFailedCode int32
 
 const (
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TABLE    OfpTableFeaturesFailedCode = 0
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_METADATA OfpTableFeaturesFailedCode = 1
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TYPE     OfpTableFeaturesFailedCode = 2
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_LEN      OfpTableFeaturesFailedCode = 3
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT OfpTableFeaturesFailedCode = 4
-	OfpTableFeaturesFailedCode_OFPTFFC_EPERM        OfpTableFeaturesFailedCode = 5
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TABLE    OfpTableFeaturesFailedCode = 0 // Specified table does not exist.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_METADATA OfpTableFeaturesFailedCode = 1 // Invalid metadata mask.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TYPE     OfpTableFeaturesFailedCode = 2 // Unknown property type.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_LEN      OfpTableFeaturesFailedCode = 3 // Length problem in properties.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT OfpTableFeaturesFailedCode = 4 // Unsupported property value.
+	OfpTableFeaturesFailedCode_OFPTFFC_EPERM        OfpTableFeaturesFailedCode = 5 // Permissions error.
 )
 
-var OfpTableFeaturesFailedCode_name = map[int32]string{
-	0: "OFPTFFC_BAD_TABLE",
-	1: "OFPTFFC_BAD_METADATA",
-	2: "OFPTFFC_BAD_TYPE",
-	3: "OFPTFFC_BAD_LEN",
-	4: "OFPTFFC_BAD_ARGUMENT",
-	5: "OFPTFFC_EPERM",
-}
+// Enum value maps for OfpTableFeaturesFailedCode.
+var (
+	OfpTableFeaturesFailedCode_name = map[int32]string{
+		0: "OFPTFFC_BAD_TABLE",
+		1: "OFPTFFC_BAD_METADATA",
+		2: "OFPTFFC_BAD_TYPE",
+		3: "OFPTFFC_BAD_LEN",
+		4: "OFPTFFC_BAD_ARGUMENT",
+		5: "OFPTFFC_EPERM",
+	}
+	OfpTableFeaturesFailedCode_value = map[string]int32{
+		"OFPTFFC_BAD_TABLE":    0,
+		"OFPTFFC_BAD_METADATA": 1,
+		"OFPTFFC_BAD_TYPE":     2,
+		"OFPTFFC_BAD_LEN":      3,
+		"OFPTFFC_BAD_ARGUMENT": 4,
+		"OFPTFFC_EPERM":        5,
+	}
+)
 
-var OfpTableFeaturesFailedCode_value = map[string]int32{
-	"OFPTFFC_BAD_TABLE":    0,
-	"OFPTFFC_BAD_METADATA": 1,
-	"OFPTFFC_BAD_TYPE":     2,
-	"OFPTFFC_BAD_LEN":      3,
-	"OFPTFFC_BAD_ARGUMENT": 4,
-	"OFPTFFC_EPERM":        5,
+func (x OfpTableFeaturesFailedCode) Enum() *OfpTableFeaturesFailedCode {
+	p := new(OfpTableFeaturesFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpTableFeaturesFailedCode) String() string {
-	return proto.EnumName(OfpTableFeaturesFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableFeaturesFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[45].Descriptor()
+}
+
+func (OfpTableFeaturesFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[45]
+}
+
+func (x OfpTableFeaturesFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableFeaturesFailedCode.Descriptor instead.
 func (OfpTableFeaturesFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{45}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{45}
 }
 
 type OfpMultipartType int32
@@ -2098,98 +3121,161 @@
 	OfpMultipartType_OFPMP_EXPERIMENTER OfpMultipartType = 65535
 )
 
-var OfpMultipartType_name = map[int32]string{
-	0:     "OFPMP_DESC",
-	1:     "OFPMP_FLOW",
-	2:     "OFPMP_AGGREGATE",
-	3:     "OFPMP_TABLE",
-	4:     "OFPMP_PORT_STATS",
-	5:     "OFPMP_QUEUE",
-	6:     "OFPMP_GROUP",
-	7:     "OFPMP_GROUP_DESC",
-	8:     "OFPMP_GROUP_FEATURES",
-	9:     "OFPMP_METER",
-	10:    "OFPMP_METER_CONFIG",
-	11:    "OFPMP_METER_FEATURES",
-	12:    "OFPMP_TABLE_FEATURES",
-	13:    "OFPMP_PORT_DESC",
-	65535: "OFPMP_EXPERIMENTER",
-}
+// Enum value maps for OfpMultipartType.
+var (
+	OfpMultipartType_name = map[int32]string{
+		0:     "OFPMP_DESC",
+		1:     "OFPMP_FLOW",
+		2:     "OFPMP_AGGREGATE",
+		3:     "OFPMP_TABLE",
+		4:     "OFPMP_PORT_STATS",
+		5:     "OFPMP_QUEUE",
+		6:     "OFPMP_GROUP",
+		7:     "OFPMP_GROUP_DESC",
+		8:     "OFPMP_GROUP_FEATURES",
+		9:     "OFPMP_METER",
+		10:    "OFPMP_METER_CONFIG",
+		11:    "OFPMP_METER_FEATURES",
+		12:    "OFPMP_TABLE_FEATURES",
+		13:    "OFPMP_PORT_DESC",
+		65535: "OFPMP_EXPERIMENTER",
+	}
+	OfpMultipartType_value = map[string]int32{
+		"OFPMP_DESC":           0,
+		"OFPMP_FLOW":           1,
+		"OFPMP_AGGREGATE":      2,
+		"OFPMP_TABLE":          3,
+		"OFPMP_PORT_STATS":     4,
+		"OFPMP_QUEUE":          5,
+		"OFPMP_GROUP":          6,
+		"OFPMP_GROUP_DESC":     7,
+		"OFPMP_GROUP_FEATURES": 8,
+		"OFPMP_METER":          9,
+		"OFPMP_METER_CONFIG":   10,
+		"OFPMP_METER_FEATURES": 11,
+		"OFPMP_TABLE_FEATURES": 12,
+		"OFPMP_PORT_DESC":      13,
+		"OFPMP_EXPERIMENTER":   65535,
+	}
+)
 
-var OfpMultipartType_value = map[string]int32{
-	"OFPMP_DESC":           0,
-	"OFPMP_FLOW":           1,
-	"OFPMP_AGGREGATE":      2,
-	"OFPMP_TABLE":          3,
-	"OFPMP_PORT_STATS":     4,
-	"OFPMP_QUEUE":          5,
-	"OFPMP_GROUP":          6,
-	"OFPMP_GROUP_DESC":     7,
-	"OFPMP_GROUP_FEATURES": 8,
-	"OFPMP_METER":          9,
-	"OFPMP_METER_CONFIG":   10,
-	"OFPMP_METER_FEATURES": 11,
-	"OFPMP_TABLE_FEATURES": 12,
-	"OFPMP_PORT_DESC":      13,
-	"OFPMP_EXPERIMENTER":   65535,
+func (x OfpMultipartType) Enum() *OfpMultipartType {
+	p := new(OfpMultipartType)
+	*p = x
+	return p
 }
 
 func (x OfpMultipartType) String() string {
-	return proto.EnumName(OfpMultipartType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMultipartType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[46].Descriptor()
+}
+
+func (OfpMultipartType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[46]
+}
+
+func (x OfpMultipartType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMultipartType.Descriptor instead.
 func (OfpMultipartType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{46}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{46}
 }
 
 type OfpMultipartRequestFlags int32
 
 const (
 	OfpMultipartRequestFlags_OFPMPF_REQ_INVALID OfpMultipartRequestFlags = 0
-	OfpMultipartRequestFlags_OFPMPF_REQ_MORE    OfpMultipartRequestFlags = 1
+	OfpMultipartRequestFlags_OFPMPF_REQ_MORE    OfpMultipartRequestFlags = 1 // More requests to follow.
 )
 
-var OfpMultipartRequestFlags_name = map[int32]string{
-	0: "OFPMPF_REQ_INVALID",
-	1: "OFPMPF_REQ_MORE",
-}
+// Enum value maps for OfpMultipartRequestFlags.
+var (
+	OfpMultipartRequestFlags_name = map[int32]string{
+		0: "OFPMPF_REQ_INVALID",
+		1: "OFPMPF_REQ_MORE",
+	}
+	OfpMultipartRequestFlags_value = map[string]int32{
+		"OFPMPF_REQ_INVALID": 0,
+		"OFPMPF_REQ_MORE":    1,
+	}
+)
 
-var OfpMultipartRequestFlags_value = map[string]int32{
-	"OFPMPF_REQ_INVALID": 0,
-	"OFPMPF_REQ_MORE":    1,
+func (x OfpMultipartRequestFlags) Enum() *OfpMultipartRequestFlags {
+	p := new(OfpMultipartRequestFlags)
+	*p = x
+	return p
 }
 
 func (x OfpMultipartRequestFlags) String() string {
-	return proto.EnumName(OfpMultipartRequestFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMultipartRequestFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[47].Descriptor()
+}
+
+func (OfpMultipartRequestFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[47]
+}
+
+func (x OfpMultipartRequestFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMultipartRequestFlags.Descriptor instead.
 func (OfpMultipartRequestFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{47}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{47}
 }
 
 type OfpMultipartReplyFlags int32
 
 const (
 	OfpMultipartReplyFlags_OFPMPF_REPLY_INVALID OfpMultipartReplyFlags = 0
-	OfpMultipartReplyFlags_OFPMPF_REPLY_MORE    OfpMultipartReplyFlags = 1
+	OfpMultipartReplyFlags_OFPMPF_REPLY_MORE    OfpMultipartReplyFlags = 1 // More replies to follow.
 )
 
-var OfpMultipartReplyFlags_name = map[int32]string{
-	0: "OFPMPF_REPLY_INVALID",
-	1: "OFPMPF_REPLY_MORE",
-}
+// Enum value maps for OfpMultipartReplyFlags.
+var (
+	OfpMultipartReplyFlags_name = map[int32]string{
+		0: "OFPMPF_REPLY_INVALID",
+		1: "OFPMPF_REPLY_MORE",
+	}
+	OfpMultipartReplyFlags_value = map[string]int32{
+		"OFPMPF_REPLY_INVALID": 0,
+		"OFPMPF_REPLY_MORE":    1,
+	}
+)
 
-var OfpMultipartReplyFlags_value = map[string]int32{
-	"OFPMPF_REPLY_INVALID": 0,
-	"OFPMPF_REPLY_MORE":    1,
+func (x OfpMultipartReplyFlags) Enum() *OfpMultipartReplyFlags {
+	p := new(OfpMultipartReplyFlags)
+	*p = x
+	return p
 }
 
 func (x OfpMultipartReplyFlags) String() string {
-	return proto.EnumName(OfpMultipartReplyFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMultipartReplyFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[48].Descriptor()
+}
+
+func (OfpMultipartReplyFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[48]
+}
+
+func (x OfpMultipartReplyFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMultipartReplyFlags.Descriptor instead.
 func (OfpMultipartReplyFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{48}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{48}
 }
 
 // Table Feature property types.
@@ -2198,68 +3284,89 @@
 type OfpTableFeaturePropType int32
 
 const (
-	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS        OfpTableFeaturePropType = 0
-	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS_MISS   OfpTableFeaturePropType = 1
-	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES         OfpTableFeaturePropType = 2
-	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES_MISS    OfpTableFeaturePropType = 3
-	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS       OfpTableFeaturePropType = 4
-	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS_MISS  OfpTableFeaturePropType = 5
-	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS       OfpTableFeaturePropType = 6
-	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS_MISS  OfpTableFeaturePropType = 7
-	OfpTableFeaturePropType_OFPTFPT_MATCH               OfpTableFeaturePropType = 8
-	OfpTableFeaturePropType_OFPTFPT_WILDCARDS           OfpTableFeaturePropType = 10
-	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD      OfpTableFeaturePropType = 12
-	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD_MISS OfpTableFeaturePropType = 13
-	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD      OfpTableFeaturePropType = 14
-	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD_MISS OfpTableFeaturePropType = 15
-	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER        OfpTableFeaturePropType = 65534
-	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS   OfpTableFeaturePropType = 65535
+	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS        OfpTableFeaturePropType = 0     // Instructions property.
+	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS_MISS   OfpTableFeaturePropType = 1     // Instructions for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES         OfpTableFeaturePropType = 2     // Next Table property.
+	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES_MISS    OfpTableFeaturePropType = 3     // Next Table for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS       OfpTableFeaturePropType = 4     // Write Actions property.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS_MISS  OfpTableFeaturePropType = 5     // Write Actions for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS       OfpTableFeaturePropType = 6     // Apply Actions property.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS_MISS  OfpTableFeaturePropType = 7     // Apply Actions for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_MATCH               OfpTableFeaturePropType = 8     // Match property.
+	OfpTableFeaturePropType_OFPTFPT_WILDCARDS           OfpTableFeaturePropType = 10    // Wildcards property.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD      OfpTableFeaturePropType = 12    // Write Set-Field property.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD_MISS OfpTableFeaturePropType = 13    // Write Set-Field for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD      OfpTableFeaturePropType = 14    // Apply Set-Field property.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD_MISS OfpTableFeaturePropType = 15    // Apply Set-Field for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER        OfpTableFeaturePropType = 65534 // Experimenter property.
+	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS   OfpTableFeaturePropType = 65535 // Experimenter for table-miss.
 )
 
-var OfpTableFeaturePropType_name = map[int32]string{
-	0:     "OFPTFPT_INSTRUCTIONS",
-	1:     "OFPTFPT_INSTRUCTIONS_MISS",
-	2:     "OFPTFPT_NEXT_TABLES",
-	3:     "OFPTFPT_NEXT_TABLES_MISS",
-	4:     "OFPTFPT_WRITE_ACTIONS",
-	5:     "OFPTFPT_WRITE_ACTIONS_MISS",
-	6:     "OFPTFPT_APPLY_ACTIONS",
-	7:     "OFPTFPT_APPLY_ACTIONS_MISS",
-	8:     "OFPTFPT_MATCH",
-	10:    "OFPTFPT_WILDCARDS",
-	12:    "OFPTFPT_WRITE_SETFIELD",
-	13:    "OFPTFPT_WRITE_SETFIELD_MISS",
-	14:    "OFPTFPT_APPLY_SETFIELD",
-	15:    "OFPTFPT_APPLY_SETFIELD_MISS",
-	65534: "OFPTFPT_EXPERIMENTER",
-	65535: "OFPTFPT_EXPERIMENTER_MISS",
-}
+// Enum value maps for OfpTableFeaturePropType.
+var (
+	OfpTableFeaturePropType_name = map[int32]string{
+		0:     "OFPTFPT_INSTRUCTIONS",
+		1:     "OFPTFPT_INSTRUCTIONS_MISS",
+		2:     "OFPTFPT_NEXT_TABLES",
+		3:     "OFPTFPT_NEXT_TABLES_MISS",
+		4:     "OFPTFPT_WRITE_ACTIONS",
+		5:     "OFPTFPT_WRITE_ACTIONS_MISS",
+		6:     "OFPTFPT_APPLY_ACTIONS",
+		7:     "OFPTFPT_APPLY_ACTIONS_MISS",
+		8:     "OFPTFPT_MATCH",
+		10:    "OFPTFPT_WILDCARDS",
+		12:    "OFPTFPT_WRITE_SETFIELD",
+		13:    "OFPTFPT_WRITE_SETFIELD_MISS",
+		14:    "OFPTFPT_APPLY_SETFIELD",
+		15:    "OFPTFPT_APPLY_SETFIELD_MISS",
+		65534: "OFPTFPT_EXPERIMENTER",
+		65535: "OFPTFPT_EXPERIMENTER_MISS",
+	}
+	OfpTableFeaturePropType_value = map[string]int32{
+		"OFPTFPT_INSTRUCTIONS":        0,
+		"OFPTFPT_INSTRUCTIONS_MISS":   1,
+		"OFPTFPT_NEXT_TABLES":         2,
+		"OFPTFPT_NEXT_TABLES_MISS":    3,
+		"OFPTFPT_WRITE_ACTIONS":       4,
+		"OFPTFPT_WRITE_ACTIONS_MISS":  5,
+		"OFPTFPT_APPLY_ACTIONS":       6,
+		"OFPTFPT_APPLY_ACTIONS_MISS":  7,
+		"OFPTFPT_MATCH":               8,
+		"OFPTFPT_WILDCARDS":           10,
+		"OFPTFPT_WRITE_SETFIELD":      12,
+		"OFPTFPT_WRITE_SETFIELD_MISS": 13,
+		"OFPTFPT_APPLY_SETFIELD":      14,
+		"OFPTFPT_APPLY_SETFIELD_MISS": 15,
+		"OFPTFPT_EXPERIMENTER":        65534,
+		"OFPTFPT_EXPERIMENTER_MISS":   65535,
+	}
+)
 
-var OfpTableFeaturePropType_value = map[string]int32{
-	"OFPTFPT_INSTRUCTIONS":        0,
-	"OFPTFPT_INSTRUCTIONS_MISS":   1,
-	"OFPTFPT_NEXT_TABLES":         2,
-	"OFPTFPT_NEXT_TABLES_MISS":    3,
-	"OFPTFPT_WRITE_ACTIONS":       4,
-	"OFPTFPT_WRITE_ACTIONS_MISS":  5,
-	"OFPTFPT_APPLY_ACTIONS":       6,
-	"OFPTFPT_APPLY_ACTIONS_MISS":  7,
-	"OFPTFPT_MATCH":               8,
-	"OFPTFPT_WILDCARDS":           10,
-	"OFPTFPT_WRITE_SETFIELD":      12,
-	"OFPTFPT_WRITE_SETFIELD_MISS": 13,
-	"OFPTFPT_APPLY_SETFIELD":      14,
-	"OFPTFPT_APPLY_SETFIELD_MISS": 15,
-	"OFPTFPT_EXPERIMENTER":        65534,
-	"OFPTFPT_EXPERIMENTER_MISS":   65535,
+func (x OfpTableFeaturePropType) Enum() *OfpTableFeaturePropType {
+	p := new(OfpTableFeaturePropType)
+	*p = x
+	return p
 }
 
 func (x OfpTableFeaturePropType) String() string {
-	return proto.EnumName(OfpTableFeaturePropType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableFeaturePropType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[49].Descriptor()
+}
+
+func (OfpTableFeaturePropType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[49]
+}
+
+func (x OfpTableFeaturePropType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropType.Descriptor instead.
 func (OfpTableFeaturePropType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{49}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{49}
 }
 
 // Group configuration flags
@@ -2267,198 +3374,288 @@
 
 const (
 	OfpGroupCapabilities_OFPGFC_INVALID         OfpGroupCapabilities = 0
-	OfpGroupCapabilities_OFPGFC_SELECT_WEIGHT   OfpGroupCapabilities = 1
-	OfpGroupCapabilities_OFPGFC_SELECT_LIVENESS OfpGroupCapabilities = 2
-	OfpGroupCapabilities_OFPGFC_CHAINING        OfpGroupCapabilities = 4
-	OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS OfpGroupCapabilities = 8
+	OfpGroupCapabilities_OFPGFC_SELECT_WEIGHT   OfpGroupCapabilities = 1 // Support weight for select groups
+	OfpGroupCapabilities_OFPGFC_SELECT_LIVENESS OfpGroupCapabilities = 2 // Support liveness for select groups
+	OfpGroupCapabilities_OFPGFC_CHAINING        OfpGroupCapabilities = 4 // Support chaining groups
+	OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS OfpGroupCapabilities = 8 // Check chaining for loops and delete
 )
 
-var OfpGroupCapabilities_name = map[int32]string{
-	0: "OFPGFC_INVALID",
-	1: "OFPGFC_SELECT_WEIGHT",
-	2: "OFPGFC_SELECT_LIVENESS",
-	4: "OFPGFC_CHAINING",
-	8: "OFPGFC_CHAINING_CHECKS",
-}
+// Enum value maps for OfpGroupCapabilities.
+var (
+	OfpGroupCapabilities_name = map[int32]string{
+		0: "OFPGFC_INVALID",
+		1: "OFPGFC_SELECT_WEIGHT",
+		2: "OFPGFC_SELECT_LIVENESS",
+		4: "OFPGFC_CHAINING",
+		8: "OFPGFC_CHAINING_CHECKS",
+	}
+	OfpGroupCapabilities_value = map[string]int32{
+		"OFPGFC_INVALID":         0,
+		"OFPGFC_SELECT_WEIGHT":   1,
+		"OFPGFC_SELECT_LIVENESS": 2,
+		"OFPGFC_CHAINING":        4,
+		"OFPGFC_CHAINING_CHECKS": 8,
+	}
+)
 
-var OfpGroupCapabilities_value = map[string]int32{
-	"OFPGFC_INVALID":         0,
-	"OFPGFC_SELECT_WEIGHT":   1,
-	"OFPGFC_SELECT_LIVENESS": 2,
-	"OFPGFC_CHAINING":        4,
-	"OFPGFC_CHAINING_CHECKS": 8,
+func (x OfpGroupCapabilities) Enum() *OfpGroupCapabilities {
+	p := new(OfpGroupCapabilities)
+	*p = x
+	return p
 }
 
 func (x OfpGroupCapabilities) String() string {
-	return proto.EnumName(OfpGroupCapabilities_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupCapabilities) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[50].Descriptor()
+}
+
+func (OfpGroupCapabilities) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[50]
+}
+
+func (x OfpGroupCapabilities) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupCapabilities.Descriptor instead.
 func (OfpGroupCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{50}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{50}
 }
 
 type OfpQueueProperties int32
 
 const (
 	OfpQueueProperties_OFPQT_INVALID      OfpQueueProperties = 0
-	OfpQueueProperties_OFPQT_MIN_RATE     OfpQueueProperties = 1
-	OfpQueueProperties_OFPQT_MAX_RATE     OfpQueueProperties = 2
-	OfpQueueProperties_OFPQT_EXPERIMENTER OfpQueueProperties = 65535
+	OfpQueueProperties_OFPQT_MIN_RATE     OfpQueueProperties = 1     // Minimum datarate guaranteed.
+	OfpQueueProperties_OFPQT_MAX_RATE     OfpQueueProperties = 2     // Maximum datarate.
+	OfpQueueProperties_OFPQT_EXPERIMENTER OfpQueueProperties = 65535 // Experimenter defined property.
 )
 
-var OfpQueueProperties_name = map[int32]string{
-	0:     "OFPQT_INVALID",
-	1:     "OFPQT_MIN_RATE",
-	2:     "OFPQT_MAX_RATE",
-	65535: "OFPQT_EXPERIMENTER",
-}
+// Enum value maps for OfpQueueProperties.
+var (
+	OfpQueueProperties_name = map[int32]string{
+		0:     "OFPQT_INVALID",
+		1:     "OFPQT_MIN_RATE",
+		2:     "OFPQT_MAX_RATE",
+		65535: "OFPQT_EXPERIMENTER",
+	}
+	OfpQueueProperties_value = map[string]int32{
+		"OFPQT_INVALID":      0,
+		"OFPQT_MIN_RATE":     1,
+		"OFPQT_MAX_RATE":     2,
+		"OFPQT_EXPERIMENTER": 65535,
+	}
+)
 
-var OfpQueueProperties_value = map[string]int32{
-	"OFPQT_INVALID":      0,
-	"OFPQT_MIN_RATE":     1,
-	"OFPQT_MAX_RATE":     2,
-	"OFPQT_EXPERIMENTER": 65535,
+func (x OfpQueueProperties) Enum() *OfpQueueProperties {
+	p := new(OfpQueueProperties)
+	*p = x
+	return p
 }
 
 func (x OfpQueueProperties) String() string {
-	return proto.EnumName(OfpQueueProperties_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpQueueProperties) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[51].Descriptor()
+}
+
+func (OfpQueueProperties) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[51]
+}
+
+func (x OfpQueueProperties) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpQueueProperties.Descriptor instead.
 func (OfpQueueProperties) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{51}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{51}
 }
 
 // Controller roles.
 type OfpControllerRole int32
 
 const (
-	OfpControllerRole_OFPCR_ROLE_NOCHANGE OfpControllerRole = 0
-	OfpControllerRole_OFPCR_ROLE_EQUAL    OfpControllerRole = 1
-	OfpControllerRole_OFPCR_ROLE_MASTER   OfpControllerRole = 2
-	OfpControllerRole_OFPCR_ROLE_SLAVE    OfpControllerRole = 3
+	OfpControllerRole_OFPCR_ROLE_NOCHANGE OfpControllerRole = 0 // Don't change current role.
+	OfpControllerRole_OFPCR_ROLE_EQUAL    OfpControllerRole = 1 // Default role, full access.
+	OfpControllerRole_OFPCR_ROLE_MASTER   OfpControllerRole = 2 // Full access, at most one master.
+	OfpControllerRole_OFPCR_ROLE_SLAVE    OfpControllerRole = 3 // Read-only access.
 )
 
-var OfpControllerRole_name = map[int32]string{
-	0: "OFPCR_ROLE_NOCHANGE",
-	1: "OFPCR_ROLE_EQUAL",
-	2: "OFPCR_ROLE_MASTER",
-	3: "OFPCR_ROLE_SLAVE",
-}
+// Enum value maps for OfpControllerRole.
+var (
+	OfpControllerRole_name = map[int32]string{
+		0: "OFPCR_ROLE_NOCHANGE",
+		1: "OFPCR_ROLE_EQUAL",
+		2: "OFPCR_ROLE_MASTER",
+		3: "OFPCR_ROLE_SLAVE",
+	}
+	OfpControllerRole_value = map[string]int32{
+		"OFPCR_ROLE_NOCHANGE": 0,
+		"OFPCR_ROLE_EQUAL":    1,
+		"OFPCR_ROLE_MASTER":   2,
+		"OFPCR_ROLE_SLAVE":    3,
+	}
+)
 
-var OfpControllerRole_value = map[string]int32{
-	"OFPCR_ROLE_NOCHANGE": 0,
-	"OFPCR_ROLE_EQUAL":    1,
-	"OFPCR_ROLE_MASTER":   2,
-	"OFPCR_ROLE_SLAVE":    3,
+func (x OfpControllerRole) Enum() *OfpControllerRole {
+	p := new(OfpControllerRole)
+	*p = x
+	return p
 }
 
 func (x OfpControllerRole) String() string {
-	return proto.EnumName(OfpControllerRole_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpControllerRole) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[52].Descriptor()
+}
+
+func (OfpControllerRole) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[52]
+}
+
+func (x OfpControllerRole) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpControllerRole.Descriptor instead.
 func (OfpControllerRole) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{52}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{52}
 }
 
 // Header on all OpenFlow packets.
 type OfpHeader struct {
-	Version              uint32   `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
-	Type                 OfpType  `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpType" json:"type,omitempty"`
-	Xid                  uint32   `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Version       uint32                 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`                    // OFP_VERSION.
+	Type          OfpType                `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpType" json:"type,omitempty"` // One of the OFPT_ constants.
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHeader) Reset()         { *m = OfpHeader{} }
-func (m *OfpHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpHeader) ProtoMessage()    {}
+func (x *OfpHeader) Reset() {
+	*x = OfpHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHeader) ProtoMessage() {}
+
+func (x *OfpHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHeader.ProtoReflect.Descriptor instead.
 func (*OfpHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{0}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *OfpHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHeader.Unmarshal(m, b)
-}
-func (m *OfpHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHeader.Merge(m, src)
-}
-func (m *OfpHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpHeader.Size(m)
-}
-func (m *OfpHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHeader proto.InternalMessageInfo
-
-func (m *OfpHeader) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *OfpHeader) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *OfpHeader) GetType() OfpType {
-	if m != nil {
-		return m.Type
+func (x *OfpHeader) GetType() OfpType {
+	if x != nil {
+		return x.Type
 	}
 	return OfpType_OFPT_HELLO
 }
 
-func (m *OfpHeader) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
+func (x *OfpHeader) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
 	}
 	return 0
 }
 
 // Common header for all Hello Elements
 type OfpHelloElemHeader struct {
-	Type OfpHelloElemType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpHelloElemType" json:"type,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Type  OfpHelloElemType       `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpHelloElemType" json:"type,omitempty"` // One of OFPHET_*.
 	// Types that are valid to be assigned to Element:
+	//
 	//	*OfpHelloElemHeader_Versionbitmap
-	Element              isOfpHelloElemHeader_Element `protobuf_oneof:"element"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	Element       isOfpHelloElemHeader_Element `protobuf_oneof:"element"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHelloElemHeader) Reset()         { *m = OfpHelloElemHeader{} }
-func (m *OfpHelloElemHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpHelloElemHeader) ProtoMessage()    {}
+func (x *OfpHelloElemHeader) Reset() {
+	*x = OfpHelloElemHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHelloElemHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHelloElemHeader) ProtoMessage() {}
+
+func (x *OfpHelloElemHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHelloElemHeader.ProtoReflect.Descriptor instead.
 func (*OfpHelloElemHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{1}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *OfpHelloElemHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHelloElemHeader.Unmarshal(m, b)
-}
-func (m *OfpHelloElemHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHelloElemHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpHelloElemHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemHeader.Merge(m, src)
-}
-func (m *OfpHelloElemHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpHelloElemHeader.Size(m)
-}
-func (m *OfpHelloElemHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHelloElemHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHelloElemHeader proto.InternalMessageInfo
-
-func (m *OfpHelloElemHeader) GetType() OfpHelloElemType {
-	if m != nil {
-		return m.Type
+func (x *OfpHelloElemHeader) GetType() OfpHelloElemType {
+	if x != nil {
+		return x.Type
 	}
 	return OfpHelloElemType_OFPHET_INVALID
 }
 
+func (x *OfpHelloElemHeader) GetElement() isOfpHelloElemHeader_Element {
+	if x != nil {
+		return x.Element
+	}
+	return nil
+}
+
+func (x *OfpHelloElemHeader) GetVersionbitmap() *OfpHelloElemVersionbitmap {
+	if x != nil {
+		if x, ok := x.Element.(*OfpHelloElemHeader_Versionbitmap); ok {
+			return x.Versionbitmap
+		}
+	}
+	return nil
+}
+
 type isOfpHelloElemHeader_Element interface {
 	isOfpHelloElemHeader_Element()
 }
@@ -2469,63 +3666,47 @@
 
 func (*OfpHelloElemHeader_Versionbitmap) isOfpHelloElemHeader_Element() {}
 
-func (m *OfpHelloElemHeader) GetElement() isOfpHelloElemHeader_Element {
-	if m != nil {
-		return m.Element
-	}
-	return nil
-}
-
-func (m *OfpHelloElemHeader) GetVersionbitmap() *OfpHelloElemVersionbitmap {
-	if x, ok := m.GetElement().(*OfpHelloElemHeader_Versionbitmap); ok {
-		return x.Versionbitmap
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpHelloElemHeader) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*OfpHelloElemHeader_Versionbitmap)(nil),
-	}
-}
-
 // Version bitmap Hello Element
 type OfpHelloElemVersionbitmap struct {
-	Bitmaps              []uint32 `protobuf:"varint,2,rep,packed,name=bitmaps,proto3" json:"bitmaps,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Bitmaps       []uint32               `protobuf:"varint,2,rep,packed,name=bitmaps,proto3" json:"bitmaps,omitempty"` // List of bitmaps - supported versions
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHelloElemVersionbitmap) Reset()         { *m = OfpHelloElemVersionbitmap{} }
-func (m *OfpHelloElemVersionbitmap) String() string { return proto.CompactTextString(m) }
-func (*OfpHelloElemVersionbitmap) ProtoMessage()    {}
+func (x *OfpHelloElemVersionbitmap) Reset() {
+	*x = OfpHelloElemVersionbitmap{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHelloElemVersionbitmap) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHelloElemVersionbitmap) ProtoMessage() {}
+
+func (x *OfpHelloElemVersionbitmap) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHelloElemVersionbitmap.ProtoReflect.Descriptor instead.
 func (*OfpHelloElemVersionbitmap) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{2}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *OfpHelloElemVersionbitmap) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHelloElemVersionbitmap.Unmarshal(m, b)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHelloElemVersionbitmap.Marshal(b, m, deterministic)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemVersionbitmap.Merge(m, src)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_Size() int {
-	return xxx_messageInfo_OfpHelloElemVersionbitmap.Size(m)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHelloElemVersionbitmap.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHelloElemVersionbitmap proto.InternalMessageInfo
-
-func (m *OfpHelloElemVersionbitmap) GetBitmaps() []uint32 {
-	if m != nil {
-		return m.Bitmaps
+func (x *OfpHelloElemVersionbitmap) GetBitmaps() []uint32 {
+	if x != nil {
+		return x.Bitmaps
 	}
 	return nil
 }
@@ -2534,604 +3715,681 @@
 // variable size. Unknown elements types must be ignored/skipped, to allow
 // for future extensions.
 type OfpHello struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Hello element list
-	Elements             []*OfpHelloElemHeader `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Elements      []*OfpHelloElemHeader `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"` // 0 or more
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHello) Reset()         { *m = OfpHello{} }
-func (m *OfpHello) String() string { return proto.CompactTextString(m) }
-func (*OfpHello) ProtoMessage()    {}
+func (x *OfpHello) Reset() {
+	*x = OfpHello{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHello) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHello) ProtoMessage() {}
+
+func (x *OfpHello) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHello.ProtoReflect.Descriptor instead.
 func (*OfpHello) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{3}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *OfpHello) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHello.Unmarshal(m, b)
-}
-func (m *OfpHello) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHello.Marshal(b, m, deterministic)
-}
-func (m *OfpHello) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHello.Merge(m, src)
-}
-func (m *OfpHello) XXX_Size() int {
-	return xxx_messageInfo_OfpHello.Size(m)
-}
-func (m *OfpHello) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHello.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHello proto.InternalMessageInfo
-
-func (m *OfpHello) GetElements() []*OfpHelloElemHeader {
-	if m != nil {
-		return m.Elements
+func (x *OfpHello) GetElements() []*OfpHelloElemHeader {
+	if x != nil {
+		return x.Elements
 	}
 	return nil
 }
 
 // Switch configuration.
 type OfpSwitchConfig struct {
-	//ofp_header header;
-	Flags                uint32   `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
-	MissSendLen          uint32   `protobuf:"varint,2,opt,name=miss_send_len,json=missSendLen,proto3" json:"miss_send_len,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Flags         uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"` // Bitmap of OFPC_* flags.
+	MissSendLen   uint32 `protobuf:"varint,2,opt,name=miss_send_len,json=missSendLen,proto3" json:"miss_send_len,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpSwitchConfig) Reset()         { *m = OfpSwitchConfig{} }
-func (m *OfpSwitchConfig) String() string { return proto.CompactTextString(m) }
-func (*OfpSwitchConfig) ProtoMessage()    {}
+func (x *OfpSwitchConfig) Reset() {
+	*x = OfpSwitchConfig{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpSwitchConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpSwitchConfig) ProtoMessage() {}
+
+func (x *OfpSwitchConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpSwitchConfig.ProtoReflect.Descriptor instead.
 func (*OfpSwitchConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{4}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *OfpSwitchConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpSwitchConfig.Unmarshal(m, b)
-}
-func (m *OfpSwitchConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpSwitchConfig.Marshal(b, m, deterministic)
-}
-func (m *OfpSwitchConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchConfig.Merge(m, src)
-}
-func (m *OfpSwitchConfig) XXX_Size() int {
-	return xxx_messageInfo_OfpSwitchConfig.Size(m)
-}
-func (m *OfpSwitchConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpSwitchConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpSwitchConfig proto.InternalMessageInfo
-
-func (m *OfpSwitchConfig) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
+func (x *OfpSwitchConfig) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
 	}
 	return 0
 }
 
-func (m *OfpSwitchConfig) GetMissSendLen() uint32 {
-	if m != nil {
-		return m.MissSendLen
+func (x *OfpSwitchConfig) GetMissSendLen() uint32 {
+	if x != nil {
+		return x.MissSendLen
 	}
 	return 0
 }
 
 // Configure/Modify behavior of a flow table
 type OfpTableMod struct {
-	//ofp_header header;
-	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Config               uint32   `protobuf:"varint,2,opt,name=config,proto3" json:"config,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	TableId       uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"` // ID of the table, OFPTT_ALL indicates all tables
+	Config        uint32 `protobuf:"varint,2,opt,name=config,proto3" json:"config,omitempty"`                  // Bitmap of OFPTC_* flags
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpTableMod) Reset()         { *m = OfpTableMod{} }
-func (m *OfpTableMod) String() string { return proto.CompactTextString(m) }
-func (*OfpTableMod) ProtoMessage()    {}
+func (x *OfpTableMod) Reset() {
+	*x = OfpTableMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableMod) ProtoMessage() {}
+
+func (x *OfpTableMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableMod.ProtoReflect.Descriptor instead.
 func (*OfpTableMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{5}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *OfpTableMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableMod.Unmarshal(m, b)
-}
-func (m *OfpTableMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableMod.Marshal(b, m, deterministic)
-}
-func (m *OfpTableMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableMod.Merge(m, src)
-}
-func (m *OfpTableMod) XXX_Size() int {
-	return xxx_messageInfo_OfpTableMod.Size(m)
-}
-func (m *OfpTableMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableMod proto.InternalMessageInfo
-
-func (m *OfpTableMod) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
+func (x *OfpTableMod) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
 	}
 	return 0
 }
 
-func (m *OfpTableMod) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
+func (x *OfpTableMod) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
 	}
 	return 0
 }
 
 // Description of a port
 type OfpPort struct {
-	PortNo uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"`
-	Name   string   `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
-	Config uint32   `protobuf:"varint,4,opt,name=config,proto3" json:"config,omitempty"`
-	State  uint32   `protobuf:"varint,5,opt,name=state,proto3" json:"state,omitempty"`
+	state  protoimpl.MessageState `protogen:"open.v1"`
+	PortNo uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	HwAddr []uint32               `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"` // [OFP_ETH_ALEN];
+	Name   string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`                           // Null-terminated
+	Config uint32                 `protobuf:"varint,4,opt,name=config,proto3" json:"config,omitempty"`                      // Bitmap of OFPPC_* flags.
+	State  uint32                 `protobuf:"varint,5,opt,name=state,proto3" json:"state,omitempty"`                        // Bitmap of OFPPS_* flags.
 	// Bitmaps of OFPPF_* that describe features.  All bits zeroed if
 	// unsupported or unavailable.
-	Curr                 uint32   `protobuf:"varint,6,opt,name=curr,proto3" json:"curr,omitempty"`
-	Advertised           uint32   `protobuf:"varint,7,opt,name=advertised,proto3" json:"advertised,omitempty"`
-	Supported            uint32   `protobuf:"varint,8,opt,name=supported,proto3" json:"supported,omitempty"`
-	Peer                 uint32   `protobuf:"varint,9,opt,name=peer,proto3" json:"peer,omitempty"`
-	CurrSpeed            uint32   `protobuf:"varint,10,opt,name=curr_speed,json=currSpeed,proto3" json:"curr_speed,omitempty"`
-	MaxSpeed             uint32   `protobuf:"varint,11,opt,name=max_speed,json=maxSpeed,proto3" json:"max_speed,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Curr          uint32 `protobuf:"varint,6,opt,name=curr,proto3" json:"curr,omitempty"`                             // Current features.
+	Advertised    uint32 `protobuf:"varint,7,opt,name=advertised,proto3" json:"advertised,omitempty"`                 // Features being advertised by the port.
+	Supported     uint32 `protobuf:"varint,8,opt,name=supported,proto3" json:"supported,omitempty"`                   // Features supported by the port.
+	Peer          uint32 `protobuf:"varint,9,opt,name=peer,proto3" json:"peer,omitempty"`                             // Features advertised by peer.
+	CurrSpeed     uint32 `protobuf:"varint,10,opt,name=curr_speed,json=currSpeed,proto3" json:"curr_speed,omitempty"` // Current port bitrate in kbps.
+	MaxSpeed      uint32 `protobuf:"varint,11,opt,name=max_speed,json=maxSpeed,proto3" json:"max_speed,omitempty"`    // Max port bitrate in kbps
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpPort) Reset()         { *m = OfpPort{} }
-func (m *OfpPort) String() string { return proto.CompactTextString(m) }
-func (*OfpPort) ProtoMessage()    {}
+func (x *OfpPort) Reset() {
+	*x = OfpPort{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPort) ProtoMessage() {}
+
+func (x *OfpPort) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPort.ProtoReflect.Descriptor instead.
 func (*OfpPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{6}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *OfpPort) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPort.Unmarshal(m, b)
-}
-func (m *OfpPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPort.Marshal(b, m, deterministic)
-}
-func (m *OfpPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPort.Merge(m, src)
-}
-func (m *OfpPort) XXX_Size() int {
-	return xxx_messageInfo_OfpPort.Size(m)
-}
-func (m *OfpPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPort proto.InternalMessageInfo
-
-func (m *OfpPort) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *OfpPort) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *OfpPort) GetHwAddr() []uint32 {
-	if m != nil {
-		return m.HwAddr
+func (x *OfpPort) GetHwAddr() []uint32 {
+	if x != nil {
+		return x.HwAddr
 	}
 	return nil
 }
 
-func (m *OfpPort) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *OfpPort) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *OfpPort) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
+func (x *OfpPort) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
 	}
 	return 0
 }
 
-func (m *OfpPort) GetState() uint32 {
-	if m != nil {
-		return m.State
+func (x *OfpPort) GetState() uint32 {
+	if x != nil {
+		return x.State
 	}
 	return 0
 }
 
-func (m *OfpPort) GetCurr() uint32 {
-	if m != nil {
-		return m.Curr
+func (x *OfpPort) GetCurr() uint32 {
+	if x != nil {
+		return x.Curr
 	}
 	return 0
 }
 
-func (m *OfpPort) GetAdvertised() uint32 {
-	if m != nil {
-		return m.Advertised
+func (x *OfpPort) GetAdvertised() uint32 {
+	if x != nil {
+		return x.Advertised
 	}
 	return 0
 }
 
-func (m *OfpPort) GetSupported() uint32 {
-	if m != nil {
-		return m.Supported
+func (x *OfpPort) GetSupported() uint32 {
+	if x != nil {
+		return x.Supported
 	}
 	return 0
 }
 
-func (m *OfpPort) GetPeer() uint32 {
-	if m != nil {
-		return m.Peer
+func (x *OfpPort) GetPeer() uint32 {
+	if x != nil {
+		return x.Peer
 	}
 	return 0
 }
 
-func (m *OfpPort) GetCurrSpeed() uint32 {
-	if m != nil {
-		return m.CurrSpeed
+func (x *OfpPort) GetCurrSpeed() uint32 {
+	if x != nil {
+		return x.CurrSpeed
 	}
 	return 0
 }
 
-func (m *OfpPort) GetMaxSpeed() uint32 {
-	if m != nil {
-		return m.MaxSpeed
+func (x *OfpPort) GetMaxSpeed() uint32 {
+	if x != nil {
+		return x.MaxSpeed
 	}
 	return 0
 }
 
 // Switch features.
 type OfpSwitchFeatures struct {
-	//ofp_header header;
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
 	DatapathId  uint64 `protobuf:"varint,1,opt,name=datapath_id,json=datapathId,proto3" json:"datapath_id,omitempty"`
-	NBuffers    uint32 `protobuf:"varint,2,opt,name=n_buffers,json=nBuffers,proto3" json:"n_buffers,omitempty"`
-	NTables     uint32 `protobuf:"varint,3,opt,name=n_tables,json=nTables,proto3" json:"n_tables,omitempty"`
-	AuxiliaryId uint32 `protobuf:"varint,4,opt,name=auxiliary_id,json=auxiliaryId,proto3" json:"auxiliary_id,omitempty"`
+	NBuffers    uint32 `protobuf:"varint,2,opt,name=n_buffers,json=nBuffers,proto3" json:"n_buffers,omitempty"`          // Max packets buffered at once.
+	NTables     uint32 `protobuf:"varint,3,opt,name=n_tables,json=nTables,proto3" json:"n_tables,omitempty"`             // Number of tables supported by datapath.
+	AuxiliaryId uint32 `protobuf:"varint,4,opt,name=auxiliary_id,json=auxiliaryId,proto3" json:"auxiliary_id,omitempty"` // Identify auxiliary connections
 	// Features.
-	Capabilities         uint32   `protobuf:"varint,5,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Capabilities  uint32 `protobuf:"varint,5,opt,name=capabilities,proto3" json:"capabilities,omitempty"` // Bitmap of support "ofp_capabilities".
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpSwitchFeatures) Reset()         { *m = OfpSwitchFeatures{} }
-func (m *OfpSwitchFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpSwitchFeatures) ProtoMessage()    {}
+func (x *OfpSwitchFeatures) Reset() {
+	*x = OfpSwitchFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpSwitchFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpSwitchFeatures) ProtoMessage() {}
+
+func (x *OfpSwitchFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpSwitchFeatures.ProtoReflect.Descriptor instead.
 func (*OfpSwitchFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{7}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *OfpSwitchFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpSwitchFeatures.Unmarshal(m, b)
-}
-func (m *OfpSwitchFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpSwitchFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpSwitchFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchFeatures.Merge(m, src)
-}
-func (m *OfpSwitchFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpSwitchFeatures.Size(m)
-}
-func (m *OfpSwitchFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpSwitchFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpSwitchFeatures proto.InternalMessageInfo
-
-func (m *OfpSwitchFeatures) GetDatapathId() uint64 {
-	if m != nil {
-		return m.DatapathId
+func (x *OfpSwitchFeatures) GetDatapathId() uint64 {
+	if x != nil {
+		return x.DatapathId
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetNBuffers() uint32 {
-	if m != nil {
-		return m.NBuffers
+func (x *OfpSwitchFeatures) GetNBuffers() uint32 {
+	if x != nil {
+		return x.NBuffers
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetNTables() uint32 {
-	if m != nil {
-		return m.NTables
+func (x *OfpSwitchFeatures) GetNTables() uint32 {
+	if x != nil {
+		return x.NTables
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetAuxiliaryId() uint32 {
-	if m != nil {
-		return m.AuxiliaryId
+func (x *OfpSwitchFeatures) GetAuxiliaryId() uint32 {
+	if x != nil {
+		return x.AuxiliaryId
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetCapabilities() uint32 {
-	if m != nil {
-		return m.Capabilities
+func (x *OfpSwitchFeatures) GetCapabilities() uint32 {
+	if x != nil {
+		return x.Capabilities
 	}
 	return 0
 }
 
 // A physical port has changed in the datapath
 type OfpPortStatus struct {
-	//ofp_header header;
-	Reason               OfpPortReason `protobuf:"varint,1,opt,name=reason,proto3,enum=openflow_13.OfpPortReason" json:"reason,omitempty"`
-	Desc                 *OfpPort      `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Reason        OfpPortReason `protobuf:"varint,1,opt,name=reason,proto3,enum=openflow_13.OfpPortReason" json:"reason,omitempty"` // One of OFPPR_*.
+	Desc          *OfpPort      `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpPortStatus) Reset()         { *m = OfpPortStatus{} }
-func (m *OfpPortStatus) String() string { return proto.CompactTextString(m) }
-func (*OfpPortStatus) ProtoMessage()    {}
+func (x *OfpPortStatus) Reset() {
+	*x = OfpPortStatus{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortStatus) ProtoMessage() {}
+
+func (x *OfpPortStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortStatus.ProtoReflect.Descriptor instead.
 func (*OfpPortStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{8}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *OfpPortStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortStatus.Unmarshal(m, b)
-}
-func (m *OfpPortStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortStatus.Marshal(b, m, deterministic)
-}
-func (m *OfpPortStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatus.Merge(m, src)
-}
-func (m *OfpPortStatus) XXX_Size() int {
-	return xxx_messageInfo_OfpPortStatus.Size(m)
-}
-func (m *OfpPortStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortStatus proto.InternalMessageInfo
-
-func (m *OfpPortStatus) GetReason() OfpPortReason {
-	if m != nil {
-		return m.Reason
+func (x *OfpPortStatus) GetReason() OfpPortReason {
+	if x != nil {
+		return x.Reason
 	}
 	return OfpPortReason_OFPPR_ADD
 }
 
-func (m *OfpPortStatus) GetDesc() *OfpPort {
-	if m != nil {
-		return m.Desc
+func (x *OfpPortStatus) GetDesc() *OfpPort {
+	if x != nil {
+		return x.Desc
 	}
 	return nil
 }
 
 // A physical device has changed in the datapath
 type OfpDeviceStatus struct {
-	//ofp_header header;
-	Status               OfpDeviceConnection `protobuf:"varint,1,opt,name=status,proto3,enum=openflow_13.OfpDeviceConnection" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Status        OfpDeviceConnection `protobuf:"varint,1,opt,name=status,proto3,enum=openflow_13.OfpDeviceConnection" json:"status,omitempty"` // One of OFPDEV_*.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpDeviceStatus) Reset()         { *m = OfpDeviceStatus{} }
-func (m *OfpDeviceStatus) String() string { return proto.CompactTextString(m) }
-func (*OfpDeviceStatus) ProtoMessage()    {}
+func (x *OfpDeviceStatus) Reset() {
+	*x = OfpDeviceStatus{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpDeviceStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpDeviceStatus) ProtoMessage() {}
+
+func (x *OfpDeviceStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpDeviceStatus.ProtoReflect.Descriptor instead.
 func (*OfpDeviceStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{9}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *OfpDeviceStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpDeviceStatus.Unmarshal(m, b)
-}
-func (m *OfpDeviceStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpDeviceStatus.Marshal(b, m, deterministic)
-}
-func (m *OfpDeviceStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpDeviceStatus.Merge(m, src)
-}
-func (m *OfpDeviceStatus) XXX_Size() int {
-	return xxx_messageInfo_OfpDeviceStatus.Size(m)
-}
-func (m *OfpDeviceStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpDeviceStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpDeviceStatus proto.InternalMessageInfo
-
-func (m *OfpDeviceStatus) GetStatus() OfpDeviceConnection {
-	if m != nil {
-		return m.Status
+func (x *OfpDeviceStatus) GetStatus() OfpDeviceConnection {
+	if x != nil {
+		return x.Status
 	}
 	return OfpDeviceConnection_OFPDEV_CONNECTED
 }
 
 // Modify behavior of the physical port
 type OfpPortMod struct {
-	//ofp_header header;
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
 	PortNo uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"`
+	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"` //[OFP_ETH_ALEN];
 	// The hardware address is not
-	//configurable.  This is used to
-	//sanity-check the request, so it must
-	//be the same as returned in an
-	//ofp_port struct.
-	Config               uint32   `protobuf:"varint,3,opt,name=config,proto3" json:"config,omitempty"`
-	Mask                 uint32   `protobuf:"varint,4,opt,name=mask,proto3" json:"mask,omitempty"`
-	Advertise            uint32   `protobuf:"varint,5,opt,name=advertise,proto3" json:"advertise,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	// configurable.  This is used to
+	// sanity-check the request, so it must
+	// be the same as returned in an
+	// ofp_port struct.
+	Config        uint32 `protobuf:"varint,3,opt,name=config,proto3" json:"config,omitempty"` // Bitmap of OFPPC_* flags.
+	Mask          uint32 `protobuf:"varint,4,opt,name=mask,proto3" json:"mask,omitempty"`     // Bitmap of OFPPC_* flags to be changed.
+	Advertise     uint32 `protobuf:"varint,5,opt,name=advertise,proto3" json:"advertise,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpPortMod) Reset()         { *m = OfpPortMod{} }
-func (m *OfpPortMod) String() string { return proto.CompactTextString(m) }
-func (*OfpPortMod) ProtoMessage()    {}
+func (x *OfpPortMod) Reset() {
+	*x = OfpPortMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortMod) ProtoMessage() {}
+
+func (x *OfpPortMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortMod.ProtoReflect.Descriptor instead.
 func (*OfpPortMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{10}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *OfpPortMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortMod.Unmarshal(m, b)
-}
-func (m *OfpPortMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortMod.Marshal(b, m, deterministic)
-}
-func (m *OfpPortMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortMod.Merge(m, src)
-}
-func (m *OfpPortMod) XXX_Size() int {
-	return xxx_messageInfo_OfpPortMod.Size(m)
-}
-func (m *OfpPortMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortMod proto.InternalMessageInfo
-
-func (m *OfpPortMod) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *OfpPortMod) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *OfpPortMod) GetHwAddr() []uint32 {
-	if m != nil {
-		return m.HwAddr
+func (x *OfpPortMod) GetHwAddr() []uint32 {
+	if x != nil {
+		return x.HwAddr
 	}
 	return nil
 }
 
-func (m *OfpPortMod) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
+func (x *OfpPortMod) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
 	}
 	return 0
 }
 
-func (m *OfpPortMod) GetMask() uint32 {
-	if m != nil {
-		return m.Mask
+func (x *OfpPortMod) GetMask() uint32 {
+	if x != nil {
+		return x.Mask
 	}
 	return 0
 }
 
-func (m *OfpPortMod) GetAdvertise() uint32 {
-	if m != nil {
-		return m.Advertise
+func (x *OfpPortMod) GetAdvertise() uint32 {
+	if x != nil {
+		return x.Advertise
 	}
 	return 0
 }
 
 // Fields to match against flows
 type OfpMatch struct {
-	Type                 OfpMatchType   `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMatchType" json:"type,omitempty"`
-	OxmFields            []*OfpOxmField `protobuf:"bytes,2,rep,name=oxm_fields,json=oxmFields,proto3" json:"oxm_fields,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          OfpMatchType           `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMatchType" json:"type,omitempty"` // One of OFPMT_*
+	OxmFields     []*OfpOxmField         `protobuf:"bytes,2,rep,name=oxm_fields,json=oxmFields,proto3" json:"oxm_fields,omitempty"`     // 0 or more
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpMatch) Reset()         { *m = OfpMatch{} }
-func (m *OfpMatch) String() string { return proto.CompactTextString(m) }
-func (*OfpMatch) ProtoMessage()    {}
+func (x *OfpMatch) Reset() {
+	*x = OfpMatch{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMatch) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMatch) ProtoMessage() {}
+
+func (x *OfpMatch) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMatch.ProtoReflect.Descriptor instead.
 func (*OfpMatch) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{11}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *OfpMatch) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMatch.Unmarshal(m, b)
-}
-func (m *OfpMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMatch.Marshal(b, m, deterministic)
-}
-func (m *OfpMatch) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMatch.Merge(m, src)
-}
-func (m *OfpMatch) XXX_Size() int {
-	return xxx_messageInfo_OfpMatch.Size(m)
-}
-func (m *OfpMatch) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMatch.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMatch proto.InternalMessageInfo
-
-func (m *OfpMatch) GetType() OfpMatchType {
-	if m != nil {
-		return m.Type
+func (x *OfpMatch) GetType() OfpMatchType {
+	if x != nil {
+		return x.Type
 	}
 	return OfpMatchType_OFPMT_STANDARD
 }
 
-func (m *OfpMatch) GetOxmFields() []*OfpOxmField {
-	if m != nil {
-		return m.OxmFields
+func (x *OfpMatch) GetOxmFields() []*OfpOxmField {
+	if x != nil {
+		return x.OxmFields
 	}
 	return nil
 }
 
 // OXM Flow match fields
 type OfpOxmField struct {
-	OxmClass OfpOxmClass `protobuf:"varint,1,opt,name=oxm_class,json=oxmClass,proto3,enum=openflow_13.OfpOxmClass" json:"oxm_class,omitempty"`
+	state    protoimpl.MessageState `protogen:"open.v1"`
+	OxmClass OfpOxmClass            `protobuf:"varint,1,opt,name=oxm_class,json=oxmClass,proto3,enum=openflow_13.OfpOxmClass" json:"oxm_class,omitempty"`
 	// Types that are valid to be assigned to Field:
+	//
 	//	*OfpOxmField_OfbField
 	//	*OfpOxmField_ExperimenterField
-	Field                isOfpOxmField_Field `protobuf_oneof:"field"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	Field         isOfpOxmField_Field `protobuf_oneof:"field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpOxmField) Reset()         { *m = OfpOxmField{} }
-func (m *OfpOxmField) String() string { return proto.CompactTextString(m) }
-func (*OfpOxmField) ProtoMessage()    {}
+func (x *OfpOxmField) Reset() {
+	*x = OfpOxmField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpOxmField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpOxmField) ProtoMessage() {}
+
+func (x *OfpOxmField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpOxmField.ProtoReflect.Descriptor instead.
 func (*OfpOxmField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{12}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *OfpOxmField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpOxmField.Unmarshal(m, b)
-}
-func (m *OfpOxmField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpOxmField.Marshal(b, m, deterministic)
-}
-func (m *OfpOxmField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmField.Merge(m, src)
-}
-func (m *OfpOxmField) XXX_Size() int {
-	return xxx_messageInfo_OfpOxmField.Size(m)
-}
-func (m *OfpOxmField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpOxmField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpOxmField proto.InternalMessageInfo
-
-func (m *OfpOxmField) GetOxmClass() OfpOxmClass {
-	if m != nil {
-		return m.OxmClass
+func (x *OfpOxmField) GetOxmClass() OfpOxmClass {
+	if x != nil {
+		return x.OxmClass
 	}
 	return OfpOxmClass_OFPXMC_NXM_0
 }
 
+func (x *OfpOxmField) GetField() isOfpOxmField_Field {
+	if x != nil {
+		return x.Field
+	}
+	return nil
+}
+
+func (x *OfpOxmField) GetOfbField() *OfpOxmOfbField {
+	if x != nil {
+		if x, ok := x.Field.(*OfpOxmField_OfbField); ok {
+			return x.OfbField
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmField) GetExperimenterField() *OfpOxmExperimenterField {
+	if x != nil {
+		if x, ok := x.Field.(*OfpOxmField_ExperimenterField); ok {
+			return x.ExperimenterField
+		}
+	}
+	return nil
+}
+
 type isOfpOxmField_Field interface {
 	isOfpOxmField_Field()
 }
 
 type OfpOxmField_OfbField struct {
+	// 2 and 3 reserved for NXM_0 and NXM-1 OXM classes
 	OfbField *OfpOxmOfbField `protobuf:"bytes,4,opt,name=ofb_field,json=ofbField,proto3,oneof"`
 }
 
@@ -3143,40 +4401,13 @@
 
 func (*OfpOxmField_ExperimenterField) isOfpOxmField_Field() {}
 
-func (m *OfpOxmField) GetField() isOfpOxmField_Field {
-	if m != nil {
-		return m.Field
-	}
-	return nil
-}
-
-func (m *OfpOxmField) GetOfbField() *OfpOxmOfbField {
-	if x, ok := m.GetField().(*OfpOxmField_OfbField); ok {
-		return x.OfbField
-	}
-	return nil
-}
-
-func (m *OfpOxmField) GetExperimenterField() *OfpOxmExperimenterField {
-	if x, ok := m.GetField().(*OfpOxmField_ExperimenterField); ok {
-		return x.ExperimenterField
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpOxmField) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*OfpOxmField_OfbField)(nil),
-		(*OfpOxmField_ExperimenterField)(nil),
-	}
-}
-
 // OXM OpenFlow Basic Match Field
 type OfpOxmOfbField struct {
-	Type    OxmOfbFieldTypes `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
-	HasMask bool             `protobuf:"varint,2,opt,name=has_mask,json=hasMask,proto3" json:"has_mask,omitempty"`
+	state   protoimpl.MessageState `protogen:"open.v1"`
+	Type    OxmOfbFieldTypes       `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
+	HasMask bool                   `protobuf:"varint,2,opt,name=has_mask,json=hasMask,proto3" json:"has_mask,omitempty"`
 	// Types that are valid to be assigned to Value:
+	//
 	//	*OfpOxmOfbField_Port
 	//	*OfpOxmOfbField_PhysicalPort
 	//	*OfpOxmOfbField_TableMetadata
@@ -3219,8 +4450,8 @@
 	//	*OfpOxmOfbField_Ipv6Exthdr
 	Value isOfpOxmOfbField_Value `protobuf_oneof:"value"`
 	// Optional mask values (must be present when has_mask is true
-	//
 	// Types that are valid to be assigned to Mask:
+	//
 	//	*OfpOxmOfbField_TableMetadataMask
 	//	*OfpOxmOfbField_EthDstMask
 	//	*OfpOxmOfbField_EthSrcMask
@@ -3235,213 +4466,774 @@
 	//	*OfpOxmOfbField_PbbIsidMask
 	//	*OfpOxmOfbField_TunnelIdMask
 	//	*OfpOxmOfbField_Ipv6ExthdrMask
-	Mask                 isOfpOxmOfbField_Mask `protobuf_oneof:"mask"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Mask          isOfpOxmOfbField_Mask `protobuf_oneof:"mask"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpOxmOfbField) Reset()         { *m = OfpOxmOfbField{} }
-func (m *OfpOxmOfbField) String() string { return proto.CompactTextString(m) }
-func (*OfpOxmOfbField) ProtoMessage()    {}
+func (x *OfpOxmOfbField) Reset() {
+	*x = OfpOxmOfbField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpOxmOfbField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpOxmOfbField) ProtoMessage() {}
+
+func (x *OfpOxmOfbField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpOxmOfbField.ProtoReflect.Descriptor instead.
 func (*OfpOxmOfbField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{13}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *OfpOxmOfbField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpOxmOfbField.Unmarshal(m, b)
-}
-func (m *OfpOxmOfbField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpOxmOfbField.Marshal(b, m, deterministic)
-}
-func (m *OfpOxmOfbField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmOfbField.Merge(m, src)
-}
-func (m *OfpOxmOfbField) XXX_Size() int {
-	return xxx_messageInfo_OfpOxmOfbField.Size(m)
-}
-func (m *OfpOxmOfbField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpOxmOfbField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpOxmOfbField proto.InternalMessageInfo
-
-func (m *OfpOxmOfbField) GetType() OxmOfbFieldTypes {
-	if m != nil {
-		return m.Type
+func (x *OfpOxmOfbField) GetType() OxmOfbFieldTypes {
+	if x != nil {
+		return x.Type
 	}
 	return OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT
 }
 
-func (m *OfpOxmOfbField) GetHasMask() bool {
-	if m != nil {
-		return m.HasMask
+func (x *OfpOxmOfbField) GetHasMask() bool {
+	if x != nil {
+		return x.HasMask
 	}
 	return false
 }
 
+func (x *OfpOxmOfbField) GetValue() isOfpOxmOfbField_Value {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetPort() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Port); ok {
+			return x.Port
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetPhysicalPort() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_PhysicalPort); ok {
+			return x.PhysicalPort
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTableMetadata() uint64 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TableMetadata); ok {
+			return x.TableMetadata
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetEthDst() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_EthDst); ok {
+			return x.EthDst
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetEthSrc() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_EthSrc); ok {
+			return x.EthSrc
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetEthType() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_EthType); ok {
+			return x.EthType
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetVlanVid() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_VlanVid); ok {
+			return x.VlanVid
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetVlanPcp() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_VlanPcp); ok {
+			return x.VlanPcp
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpDscp() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_IpDscp); ok {
+			return x.IpDscp
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpEcn() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_IpEcn); ok {
+			return x.IpEcn
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpProto() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_IpProto); ok {
+			return x.IpProto
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4Src() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv4Src); ok {
+			return x.Ipv4Src
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4Dst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv4Dst); ok {
+			return x.Ipv4Dst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTcpSrc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TcpSrc); ok {
+			return x.TcpSrc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTcpDst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TcpDst); ok {
+			return x.TcpDst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetUdpSrc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_UdpSrc); ok {
+			return x.UdpSrc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetUdpDst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_UdpDst); ok {
+			return x.UdpDst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetSctpSrc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_SctpSrc); ok {
+			return x.SctpSrc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetSctpDst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_SctpDst); ok {
+			return x.SctpDst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv4Type() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv4Type); ok {
+			return x.Icmpv4Type
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv4Code() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv4Code); ok {
+			return x.Icmpv4Code
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpOp() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpOp); ok {
+			return x.ArpOp
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpSpa() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpSpa); ok {
+			return x.ArpSpa
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpTpa() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpTpa); ok {
+			return x.ArpTpa
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpSha() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpSha); ok {
+			return x.ArpSha
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetArpTha() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpTha); ok {
+			return x.ArpTha
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6Src() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Src); ok {
+			return x.Ipv6Src
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6Dst() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Dst); ok {
+			return x.Ipv6Dst
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6Flabel() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Flabel); ok {
+			return x.Ipv6Flabel
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv6Type() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv6Type); ok {
+			return x.Icmpv6Type
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv6Code() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv6Code); ok {
+			return x.Icmpv6Code
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6NdTarget() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6NdTarget); ok {
+			return x.Ipv6NdTarget
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6NdSsl() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6NdSsl); ok {
+			return x.Ipv6NdSsl
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6NdTll() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6NdTll); ok {
+			return x.Ipv6NdTll
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetMplsLabel() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_MplsLabel); ok {
+			return x.MplsLabel
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetMplsTc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_MplsTc); ok {
+			return x.MplsTc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetMplsBos() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_MplsBos); ok {
+			return x.MplsBos
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetPbbIsid() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_PbbIsid); ok {
+			return x.PbbIsid
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTunnelId() uint64 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TunnelId); ok {
+			return x.TunnelId
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6Exthdr() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Exthdr); ok {
+			return x.Ipv6Exthdr
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetMask() isOfpOxmOfbField_Mask {
+	if x != nil {
+		return x.Mask
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetTableMetadataMask() uint64 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_TableMetadataMask); ok {
+			return x.TableMetadataMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetEthDstMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_EthDstMask); ok {
+			return x.EthDstMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetEthSrcMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_EthSrcMask); ok {
+			return x.EthSrcMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetVlanVidMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_VlanVidMask); ok {
+			return x.VlanVidMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4SrcMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv4SrcMask); ok {
+			return x.Ipv4SrcMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4DstMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv4DstMask); ok {
+			return x.Ipv4DstMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpSpaMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_ArpSpaMask); ok {
+			return x.ArpSpaMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpTpaMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_ArpTpaMask); ok {
+			return x.ArpTpaMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6SrcMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6SrcMask); ok {
+			return x.Ipv6SrcMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6DstMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6DstMask); ok {
+			return x.Ipv6DstMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6FlabelMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6FlabelMask); ok {
+			return x.Ipv6FlabelMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetPbbIsidMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_PbbIsidMask); ok {
+			return x.PbbIsidMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTunnelIdMask() uint64 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_TunnelIdMask); ok {
+			return x.TunnelIdMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6ExthdrMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6ExthdrMask); ok {
+			return x.Ipv6ExthdrMask
+		}
+	}
+	return 0
+}
+
 type isOfpOxmOfbField_Value interface {
 	isOfpOxmOfbField_Value()
 }
 
 type OfpOxmOfbField_Port struct {
-	Port uint32 `protobuf:"varint,3,opt,name=port,proto3,oneof"`
+	// #define OXM_OF_IN_PORT    OXM_HEADER  (0x8000, OFPXMT_OFB_IN_PORT, 4)
+	Port uint32 `protobuf:"varint,3,opt,name=port,proto3,oneof"` // Used for OFPXMT_OFB_IN_PORT
 }
 
 type OfpOxmOfbField_PhysicalPort struct {
-	PhysicalPort uint32 `protobuf:"varint,4,opt,name=physical_port,json=physicalPort,proto3,oneof"`
+	// #define OXM_OF_IN_PHY_PORT OXM_HEADER  (0x8000, OFPXMT_OFB_IN_PHY_PORT, 4)
+	PhysicalPort uint32 `protobuf:"varint,4,opt,name=physical_port,json=physicalPort,proto3,oneof"` // Used for OFPXMT_OF_IN_PHY_PORT
 }
 
 type OfpOxmOfbField_TableMetadata struct {
-	TableMetadata uint64 `protobuf:"varint,5,opt,name=table_metadata,json=tableMetadata,proto3,oneof"`
+	// #define OXM_OF_METADATA   OXM_HEADER  (0x8000, OFPXMT_OFB_METADATA, 8)
+	// #define OXM_OF_METADATA_W OXM_HEADER_W(0x8000, OFPXMT_OFB_METADATA, 8)
+	TableMetadata uint64 `protobuf:"varint,5,opt,name=table_metadata,json=tableMetadata,proto3,oneof"` // Used for OFPXMT_OFB_METADATA
 }
 
 type OfpOxmOfbField_EthDst struct {
-	EthDst []byte `protobuf:"bytes,6,opt,name=eth_dst,json=ethDst,proto3,oneof"`
+	// #define OXM_OF_ETH_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_ETH_DST, 6)
+	// #define OXM_OF_ETH_DST_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ETH_DST, 6)
+	// #define OXM_OF_ETH_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_ETH_SRC, 6)
+	// #define OXM_OF_ETH_SRC_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ETH_SRC, 6)
+	EthDst []byte `protobuf:"bytes,6,opt,name=eth_dst,json=ethDst,proto3,oneof"` // Used for OFPXMT_OFB_ETH_DST (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_EthSrc struct {
-	EthSrc []byte `protobuf:"bytes,7,opt,name=eth_src,json=ethSrc,proto3,oneof"`
+	EthSrc []byte `protobuf:"bytes,7,opt,name=eth_src,json=ethSrc,proto3,oneof"` // Used for OFPXMT_OFB_ETH_SRC (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_EthType struct {
-	EthType uint32 `protobuf:"varint,8,opt,name=eth_type,json=ethType,proto3,oneof"`
+	// #define OXM_OF_ETH_TYPE   OXM_HEADER  (0x8000, OFPXMT_OFB_ETH_TYPE,2)
+	EthType uint32 `protobuf:"varint,8,opt,name=eth_type,json=ethType,proto3,oneof"` // Used for OFPXMT_OFB_ETH_TYPE
 }
 
 type OfpOxmOfbField_VlanVid struct {
-	VlanVid uint32 `protobuf:"varint,9,opt,name=vlan_vid,json=vlanVid,proto3,oneof"`
+	// #define OXM_OF_VLAN_VID   OXM_HEADER  (0x8000, OFPXMT_OFB_VLAN_VID, 2)
+	// #define OXM_OF_VLAN_VID_W OXM_HEADER_W(0x8000, OFPXMT_OFB_VLAN_VID, 2)
+	VlanVid uint32 `protobuf:"varint,9,opt,name=vlan_vid,json=vlanVid,proto3,oneof"` // Used for OFPXMT_OFB_VLAN_VID
 }
 
 type OfpOxmOfbField_VlanPcp struct {
-	VlanPcp uint32 `protobuf:"varint,10,opt,name=vlan_pcp,json=vlanPcp,proto3,oneof"`
+	// #define OXM_OF_VLAN_PCP   OXM_HEADER  (0x8000, OFPXMT_OFB_VLAN_PCP, 1)
+	VlanPcp uint32 `protobuf:"varint,10,opt,name=vlan_pcp,json=vlanPcp,proto3,oneof"` // Used for OFPXMT_OFB_VLAN_PCP
 }
 
 type OfpOxmOfbField_IpDscp struct {
-	IpDscp uint32 `protobuf:"varint,11,opt,name=ip_dscp,json=ipDscp,proto3,oneof"`
+	// #define OXM_OF_IP_DSCP     OXM_HEADER  (0x8000, OFPXMT_OFB_IP_DSCP, 1)
+	IpDscp uint32 `protobuf:"varint,11,opt,name=ip_dscp,json=ipDscp,proto3,oneof"` // Used for OFPXMT_OFB_IP_DSCP
 }
 
 type OfpOxmOfbField_IpEcn struct {
-	IpEcn uint32 `protobuf:"varint,12,opt,name=ip_ecn,json=ipEcn,proto3,oneof"`
+	// #define OXM_OF_IP_ECN     OXM_HEADER  (0x8000, OFPXMT_OFB_IP_ECN, 1)
+	IpEcn uint32 `protobuf:"varint,12,opt,name=ip_ecn,json=ipEcn,proto3,oneof"` // Used for OFPXMT_OFB_IP_ECN
 }
 
 type OfpOxmOfbField_IpProto struct {
-	IpProto uint32 `protobuf:"varint,13,opt,name=ip_proto,json=ipProto,proto3,oneof"`
+	// #define OXM_OF_IP_PROTO   OXM_HEADER  (0x8000, OFPXMT_OFB_IP_PROTO, 1)
+	IpProto uint32 `protobuf:"varint,13,opt,name=ip_proto,json=ipProto,proto3,oneof"` // Used for OFPXMT_OFB_IP_PROTO
 }
 
 type OfpOxmOfbField_Ipv4Src struct {
-	Ipv4Src uint32 `protobuf:"varint,14,opt,name=ipv4_src,json=ipv4Src,proto3,oneof"`
+	// #define OXM_OF_IPV4_SRC     OXM_HEADER  (0x8000, OFPXMT_OFB_IPV4_SRC, 4)
+	// #define OXM_OF_IPV4_SRC_W   OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV4_SRC, 4)
+	// #define OXM_OF_IPV4_DST     OXM_HEADER  (0x8000, OFPXMT_OFB_IPV4_DST, 4)
+	// #define OXM_OF_IPV4_DST_W   OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV4_DST, 4)
+	Ipv4Src uint32 `protobuf:"varint,14,opt,name=ipv4_src,json=ipv4Src,proto3,oneof"` // Used for OFPXMT_OFB_IPV4_SRC
 }
 
 type OfpOxmOfbField_Ipv4Dst struct {
-	Ipv4Dst uint32 `protobuf:"varint,15,opt,name=ipv4_dst,json=ipv4Dst,proto3,oneof"`
+	Ipv4Dst uint32 `protobuf:"varint,15,opt,name=ipv4_dst,json=ipv4Dst,proto3,oneof"` // Used for OFPXMT_OFB_IPV4_DST
 }
 
 type OfpOxmOfbField_TcpSrc struct {
-	TcpSrc uint32 `protobuf:"varint,16,opt,name=tcp_src,json=tcpSrc,proto3,oneof"`
+	// #define OXM_OF_TCP_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_TCP_SRC, 2)
+	// #define OXM_OF_TCP_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_TCP_DST, 2)
+	TcpSrc uint32 `protobuf:"varint,16,opt,name=tcp_src,json=tcpSrc,proto3,oneof"` // Used for OFPXMT_OFB_TCP_SRC
 }
 
 type OfpOxmOfbField_TcpDst struct {
-	TcpDst uint32 `protobuf:"varint,17,opt,name=tcp_dst,json=tcpDst,proto3,oneof"`
+	TcpDst uint32 `protobuf:"varint,17,opt,name=tcp_dst,json=tcpDst,proto3,oneof"` // Used for OFPXMT_OFB_TCP_DST
 }
 
 type OfpOxmOfbField_UdpSrc struct {
-	UdpSrc uint32 `protobuf:"varint,18,opt,name=udp_src,json=udpSrc,proto3,oneof"`
+	// #define OXM_OF_UDP_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_UDP_SRC, 2)
+	// #define OXM_OF_UDP_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_UDP_DST, 2)
+	UdpSrc uint32 `protobuf:"varint,18,opt,name=udp_src,json=udpSrc,proto3,oneof"` // Used for OFPXMT_OFB_UDP_SRC
 }
 
 type OfpOxmOfbField_UdpDst struct {
-	UdpDst uint32 `protobuf:"varint,19,opt,name=udp_dst,json=udpDst,proto3,oneof"`
+	UdpDst uint32 `protobuf:"varint,19,opt,name=udp_dst,json=udpDst,proto3,oneof"` // Used for OFPXMT_OFB_UDP_DST
 }
 
 type OfpOxmOfbField_SctpSrc struct {
-	SctpSrc uint32 `protobuf:"varint,20,opt,name=sctp_src,json=sctpSrc,proto3,oneof"`
+	// #define OXM_OF_SCTP_SRC   OXM_HEADER  (0x8000, OFPXMT_OFB_SCTP_SRC, 2)
+	// #define OXM_OF_SCTP_DST   OXM_HEADER  (0x8000, OFPXMT_OFB_SCTP_DST, 2)
+	SctpSrc uint32 `protobuf:"varint,20,opt,name=sctp_src,json=sctpSrc,proto3,oneof"` // Used for OFPXMT_OFB_SCTP_SRC
 }
 
 type OfpOxmOfbField_SctpDst struct {
-	SctpDst uint32 `protobuf:"varint,21,opt,name=sctp_dst,json=sctpDst,proto3,oneof"`
+	SctpDst uint32 `protobuf:"varint,21,opt,name=sctp_dst,json=sctpDst,proto3,oneof"` // Used for OFPXMT_OFB_SCTP_DST
 }
 
 type OfpOxmOfbField_Icmpv4Type struct {
-	Icmpv4Type uint32 `protobuf:"varint,22,opt,name=icmpv4_type,json=icmpv4Type,proto3,oneof"`
+	// #define OXM_OF_ICMPV4_TYPE  OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV4_TYPE, 1)
+	// #define OXM_OF_ICMPV4_CODE  OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV4_CODE, 1)
+	Icmpv4Type uint32 `protobuf:"varint,22,opt,name=icmpv4_type,json=icmpv4Type,proto3,oneof"` // Used for OFPXMT_OFB_ICMPV4_TYPE
 }
 
 type OfpOxmOfbField_Icmpv4Code struct {
-	Icmpv4Code uint32 `protobuf:"varint,23,opt,name=icmpv4_code,json=icmpv4Code,proto3,oneof"`
+	Icmpv4Code uint32 `protobuf:"varint,23,opt,name=icmpv4_code,json=icmpv4Code,proto3,oneof"` // Used for OFPXMT_OFB_ICMPV4_CODE
 }
 
 type OfpOxmOfbField_ArpOp struct {
-	ArpOp uint32 `protobuf:"varint,24,opt,name=arp_op,json=arpOp,proto3,oneof"`
+	// #define OXM_OF_ARP_OP     OXM_HEADER  (0x8000, OFPXMT_OFB_ARP_OP, 2)
+	ArpOp uint32 `protobuf:"varint,24,opt,name=arp_op,json=arpOp,proto3,oneof"` // Used for OFPXMT_OFB_ARP_OP
 }
 
 type OfpOxmOfbField_ArpSpa struct {
-	ArpSpa uint32 `protobuf:"varint,25,opt,name=arp_spa,json=arpSpa,proto3,oneof"`
+	// #define OXM_OF_ARP_SPA    OXM_HEADER  (0x8000, OFPXMT_OFB_ARP_SPA, 4)
+	// #define OXM_OF_ARP_SPA_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ARP_SPA, 4)
+	// #define OXM_OF_ARP_TPA    OXM_HEADER  (0x8000, OFPXMT_OFB_ARP_TPA, 4)
+	// #define OXM_OF_ARP_TPA_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ARP_TPA, 4)
+	ArpSpa uint32 `protobuf:"varint,25,opt,name=arp_spa,json=arpSpa,proto3,oneof"` // For OFPXMT_OFB_ARP_SPA
 }
 
 type OfpOxmOfbField_ArpTpa struct {
-	ArpTpa uint32 `protobuf:"varint,26,opt,name=arp_tpa,json=arpTpa,proto3,oneof"`
+	ArpTpa uint32 `protobuf:"varint,26,opt,name=arp_tpa,json=arpTpa,proto3,oneof"` // For OFPXMT_OFB_ARP_TPA
 }
 
 type OfpOxmOfbField_ArpSha struct {
-	ArpSha []byte `protobuf:"bytes,27,opt,name=arp_sha,json=arpSha,proto3,oneof"`
+	// #define OXM_OF_ARP_SHA    OXM_HEADER   (0x8000, OFPXMT_OFB_ARP_SHA, 6)
+	// #define OXM_OF_ARP_SHA_W  OXM_HEADER_W (0x8000, OFPXMT_OFB_ARP_SHA, 6)
+	// #define OXM_OF_ARP_THA    OXM_HEADER   (0x8000, OFPXMT_OFB_ARP_THA, 6)
+	// #define OXM_OF_ARP_THA_W  OXM_HEADER_W (0x8000, OFPXMT_OFB_ARP_THA, 6)
+	ArpSha []byte `protobuf:"bytes,27,opt,name=arp_sha,json=arpSha,proto3,oneof"` // For OFPXMT_OFB_ARP_SHA (6 bytes)
 }
 
 type OfpOxmOfbField_ArpTha struct {
-	ArpTha []byte `protobuf:"bytes,28,opt,name=arp_tha,json=arpTha,proto3,oneof"`
+	ArpTha []byte `protobuf:"bytes,28,opt,name=arp_tha,json=arpTha,proto3,oneof"` // For OFPXMT_OFB_ARP_THA (6 bytes)
 }
 
 type OfpOxmOfbField_Ipv6Src struct {
-	Ipv6Src []byte `protobuf:"bytes,29,opt,name=ipv6_src,json=ipv6Src,proto3,oneof"`
+	// #define OXM_OF_IPV6_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_SRC, 16)
+	// #define OXM_OF_IPV6_SRC_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_SRC, 16)
+	// #define OXM_OF_IPV6_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_DST, 16)
+	// #define OXM_OF_IPV6_DST_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_DST, 16)
+	Ipv6Src []byte `protobuf:"bytes,29,opt,name=ipv6_src,json=ipv6Src,proto3,oneof"` // For OFPXMT_OFB_IPV6_SRC
 }
 
 type OfpOxmOfbField_Ipv6Dst struct {
-	Ipv6Dst []byte `protobuf:"bytes,30,opt,name=ipv6_dst,json=ipv6Dst,proto3,oneof"`
+	Ipv6Dst []byte `protobuf:"bytes,30,opt,name=ipv6_dst,json=ipv6Dst,proto3,oneof"` // For OFPXMT_OFB_IPV6_DST
 }
 
 type OfpOxmOfbField_Ipv6Flabel struct {
-	Ipv6Flabel uint32 `protobuf:"varint,31,opt,name=ipv6_flabel,json=ipv6Flabel,proto3,oneof"`
+	// #define OXM_OF_IPV6_FLABEL   OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_FLABEL, 4)
+	// #define OXM_OF_IPV6_FLABEL_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_FLABEL, 4)
+	Ipv6Flabel uint32 `protobuf:"varint,31,opt,name=ipv6_flabel,json=ipv6Flabel,proto3,oneof"` // For OFPXMT_OFB_IPV6_FLABEL
 }
 
 type OfpOxmOfbField_Icmpv6Type struct {
-	Icmpv6Type uint32 `protobuf:"varint,32,opt,name=icmpv6_type,json=icmpv6Type,proto3,oneof"`
+	// #define OXM_OF_ICMPV6_TYPE OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV6_TYPE, 1)
+	// #define OXM_OF_ICMPV6_CODE OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV6_CODE, 1)
+	Icmpv6Type uint32 `protobuf:"varint,32,opt,name=icmpv6_type,json=icmpv6Type,proto3,oneof"` // For OFPXMT_OFB_ICMPV6_TYPE
 }
 
 type OfpOxmOfbField_Icmpv6Code struct {
-	Icmpv6Code uint32 `protobuf:"varint,33,opt,name=icmpv6_code,json=icmpv6Code,proto3,oneof"`
+	Icmpv6Code uint32 `protobuf:"varint,33,opt,name=icmpv6_code,json=icmpv6Code,proto3,oneof"` // For OFPXMT_OFB_ICMPV6_CODE
 }
 
 type OfpOxmOfbField_Ipv6NdTarget struct {
-	Ipv6NdTarget []byte `protobuf:"bytes,34,opt,name=ipv6_nd_target,json=ipv6NdTarget,proto3,oneof"`
+	//	#define OXM_OF_IPV6_ND_TARGET OXM_HEADER \
+	//	   (0x8000, OFPXMT_OFB_IPV6_ND_TARGET, 16)
+	Ipv6NdTarget []byte `protobuf:"bytes,34,opt,name=ipv6_nd_target,json=ipv6NdTarget,proto3,oneof"` // For OFPXMT_OFB_IPV6_ND_TARGET
 }
 
 type OfpOxmOfbField_Ipv6NdSsl struct {
-	Ipv6NdSsl []byte `protobuf:"bytes,35,opt,name=ipv6_nd_ssl,json=ipv6NdSsl,proto3,oneof"`
+	// #define OXM_OF_IPV6_ND_SLL  OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_ND_SLL, 6)
+	Ipv6NdSsl []byte `protobuf:"bytes,35,opt,name=ipv6_nd_ssl,json=ipv6NdSsl,proto3,oneof"` // For OFPXMT_OFB_IPV6_ND_SLL
 }
 
 type OfpOxmOfbField_Ipv6NdTll struct {
-	Ipv6NdTll []byte `protobuf:"bytes,36,opt,name=ipv6_nd_tll,json=ipv6NdTll,proto3,oneof"`
+	// #define OXM_OF_IPV6_ND_TLL  OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_ND_TLL, 6)
+	Ipv6NdTll []byte `protobuf:"bytes,36,opt,name=ipv6_nd_tll,json=ipv6NdTll,proto3,oneof"` // For OFPXMT_OFB_IPV6_ND_TLL
 }
 
 type OfpOxmOfbField_MplsLabel struct {
-	MplsLabel uint32 `protobuf:"varint,37,opt,name=mpls_label,json=mplsLabel,proto3,oneof"`
+	// #define OXM_OF_MPLS_LABEL  OXM_HEADER  (0x8000, OFPXMT_OFB_MPLS_LABEL, 4)
+	MplsLabel uint32 `protobuf:"varint,37,opt,name=mpls_label,json=mplsLabel,proto3,oneof"` // For OFPXMT_OFB_MPLS_LABEL
 }
 
 type OfpOxmOfbField_MplsTc struct {
-	MplsTc uint32 `protobuf:"varint,38,opt,name=mpls_tc,json=mplsTc,proto3,oneof"`
+	// #define OXM_OF_MPLS_TC     OXM_HEADER  (0x8000, OFPXMT_OFB_MPLS_TC, 1)
+	MplsTc uint32 `protobuf:"varint,38,opt,name=mpls_tc,json=mplsTc,proto3,oneof"` // For OFPXMT_OFB_MPLS_TC
 }
 
 type OfpOxmOfbField_MplsBos struct {
-	MplsBos uint32 `protobuf:"varint,39,opt,name=mpls_bos,json=mplsBos,proto3,oneof"`
+	// #define OXM_OF_MPLS_BOS     OXM_HEADER  (0x8000, OFPXMT_OFB_MPLS_BOS, 1)
+	MplsBos uint32 `protobuf:"varint,39,opt,name=mpls_bos,json=mplsBos,proto3,oneof"` // For OFPXMT_OFB_MPLS_BOS
 }
 
 type OfpOxmOfbField_PbbIsid struct {
-	PbbIsid uint32 `protobuf:"varint,40,opt,name=pbb_isid,json=pbbIsid,proto3,oneof"`
+	// #define OXM_OF_PBB_ISID   OXM_HEADER  (0x8000, OFPXMT_OFB_PBB_ISID, 3)
+	// #define OXM_OF_PBB_ISID_W OXM_HEADER_W(0x8000, OFPXMT_OFB_PBB_ISID, 3)
+	PbbIsid uint32 `protobuf:"varint,40,opt,name=pbb_isid,json=pbbIsid,proto3,oneof"` // For OFPXMT_OFB_PBB_ISID
 }
 
 type OfpOxmOfbField_TunnelId struct {
-	TunnelId uint64 `protobuf:"varint,41,opt,name=tunnel_id,json=tunnelId,proto3,oneof"`
+	// #define OXM_OF_TUNNEL_ID    OXM_HEADER  (0x8000, OFPXMT_OFB_TUNNEL_ID, 8)
+	// #define OXM_OF_TUNNEL_ID_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_TUNNEL_ID, 8)
+	TunnelId uint64 `protobuf:"varint,41,opt,name=tunnel_id,json=tunnelId,proto3,oneof"` // For OFPXMT_OFB_TUNNEL_ID
 }
 
 type OfpOxmOfbField_Ipv6Exthdr struct {
-	Ipv6Exthdr uint32 `protobuf:"varint,42,opt,name=ipv6_exthdr,json=ipv6Exthdr,proto3,oneof"`
+	// #define OXM_OF_IPV6_EXTHDR   OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_EXTHDR, 2)
+	// #define OXM_OF_IPV6_EXTHDR_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_EXTHDR, 2)
+	Ipv6Exthdr uint32 `protobuf:"varint,42,opt,name=ipv6_exthdr,json=ipv6Exthdr,proto3,oneof"` // For OFPXMT_OFB_IPV6_EXTHDR
 }
 
 func (*OfpOxmOfbField_Port) isOfpOxmOfbField_Value() {}
@@ -3524,351 +5316,64 @@
 
 func (*OfpOxmOfbField_Ipv6Exthdr) isOfpOxmOfbField_Value() {}
 
-func (m *OfpOxmOfbField) GetValue() isOfpOxmOfbField_Value {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetPort() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Port); ok {
-		return x.Port
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetPhysicalPort() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_PhysicalPort); ok {
-		return x.PhysicalPort
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetTableMetadata() uint64 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_TableMetadata); ok {
-		return x.TableMetadata
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetEthDst() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_EthDst); ok {
-		return x.EthDst
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetEthSrc() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_EthSrc); ok {
-		return x.EthSrc
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetEthType() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_EthType); ok {
-		return x.EthType
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetVlanVid() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_VlanVid); ok {
-		return x.VlanVid
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetVlanPcp() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_VlanPcp); ok {
-		return x.VlanPcp
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpDscp() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_IpDscp); ok {
-		return x.IpDscp
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpEcn() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_IpEcn); ok {
-		return x.IpEcn
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpProto() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_IpProto); ok {
-		return x.IpProto
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv4Src() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv4Src); ok {
-		return x.Ipv4Src
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv4Dst() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv4Dst); ok {
-		return x.Ipv4Dst
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetTcpSrc() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_TcpSrc); ok {
-		return x.TcpSrc
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetTcpDst() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_TcpDst); ok {
-		return x.TcpDst
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetUdpSrc() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_UdpSrc); ok {
-		return x.UdpSrc
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetUdpDst() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_UdpDst); ok {
-		return x.UdpDst
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetSctpSrc() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_SctpSrc); ok {
-		return x.SctpSrc
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetSctpDst() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_SctpDst); ok {
-		return x.SctpDst
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIcmpv4Type() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv4Type); ok {
-		return x.Icmpv4Type
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIcmpv4Code() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv4Code); ok {
-		return x.Icmpv4Code
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpOp() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpOp); ok {
-		return x.ArpOp
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpSpa() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpSpa); ok {
-		return x.ArpSpa
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpTpa() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpTpa); ok {
-		return x.ArpTpa
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpSha() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpSha); ok {
-		return x.ArpSha
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetArpTha() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpTha); ok {
-		return x.ArpTha
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6Src() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Src); ok {
-		return x.Ipv6Src
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6Dst() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Dst); ok {
-		return x.Ipv6Dst
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6Flabel() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Flabel); ok {
-		return x.Ipv6Flabel
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIcmpv6Type() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv6Type); ok {
-		return x.Icmpv6Type
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIcmpv6Code() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv6Code); ok {
-		return x.Icmpv6Code
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv6NdTarget() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdTarget); ok {
-		return x.Ipv6NdTarget
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6NdSsl() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdSsl); ok {
-		return x.Ipv6NdSsl
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6NdTll() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdTll); ok {
-		return x.Ipv6NdTll
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetMplsLabel() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_MplsLabel); ok {
-		return x.MplsLabel
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetMplsTc() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_MplsTc); ok {
-		return x.MplsTc
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetMplsBos() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_MplsBos); ok {
-		return x.MplsBos
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetPbbIsid() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_PbbIsid); ok {
-		return x.PbbIsid
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetTunnelId() uint64 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_TunnelId); ok {
-		return x.TunnelId
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv6Exthdr() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Exthdr); ok {
-		return x.Ipv6Exthdr
-	}
-	return 0
-}
-
 type isOfpOxmOfbField_Mask interface {
 	isOfpOxmOfbField_Mask()
 }
 
 type OfpOxmOfbField_TableMetadataMask struct {
-	TableMetadataMask uint64 `protobuf:"varint,105,opt,name=table_metadata_mask,json=tableMetadataMask,proto3,oneof"`
+	TableMetadataMask uint64 `protobuf:"varint,105,opt,name=table_metadata_mask,json=tableMetadataMask,proto3,oneof"` // For OFPXMT_OFB_METADATA
 }
 
 type OfpOxmOfbField_EthDstMask struct {
-	EthDstMask []byte `protobuf:"bytes,106,opt,name=eth_dst_mask,json=ethDstMask,proto3,oneof"`
+	EthDstMask []byte `protobuf:"bytes,106,opt,name=eth_dst_mask,json=ethDstMask,proto3,oneof"` // For OFPXMT_OFB_ETH_DST (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_EthSrcMask struct {
-	EthSrcMask []byte `protobuf:"bytes,107,opt,name=eth_src_mask,json=ethSrcMask,proto3,oneof"`
+	EthSrcMask []byte `protobuf:"bytes,107,opt,name=eth_src_mask,json=ethSrcMask,proto3,oneof"` // For OFPXMT_OFB_ETH_SRC (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_VlanVidMask struct {
-	VlanVidMask uint32 `protobuf:"varint,109,opt,name=vlan_vid_mask,json=vlanVidMask,proto3,oneof"`
+	VlanVidMask uint32 `protobuf:"varint,109,opt,name=vlan_vid_mask,json=vlanVidMask,proto3,oneof"` // For OFPXMT_OFB_VLAN_VID
 }
 
 type OfpOxmOfbField_Ipv4SrcMask struct {
-	Ipv4SrcMask uint32 `protobuf:"varint,114,opt,name=ipv4_src_mask,json=ipv4SrcMask,proto3,oneof"`
+	Ipv4SrcMask uint32 `protobuf:"varint,114,opt,name=ipv4_src_mask,json=ipv4SrcMask,proto3,oneof"` // For OFPXMT_OFB_IPV4_SRC
 }
 
 type OfpOxmOfbField_Ipv4DstMask struct {
-	Ipv4DstMask uint32 `protobuf:"varint,115,opt,name=ipv4_dst_mask,json=ipv4DstMask,proto3,oneof"`
+	Ipv4DstMask uint32 `protobuf:"varint,115,opt,name=ipv4_dst_mask,json=ipv4DstMask,proto3,oneof"` // For OFPXMT_OFB_IPV4_DST
 }
 
 type OfpOxmOfbField_ArpSpaMask struct {
-	ArpSpaMask uint32 `protobuf:"varint,125,opt,name=arp_spa_mask,json=arpSpaMask,proto3,oneof"`
+	ArpSpaMask uint32 `protobuf:"varint,125,opt,name=arp_spa_mask,json=arpSpaMask,proto3,oneof"` // For OFPXMT_OFB_ARP_SPA
 }
 
 type OfpOxmOfbField_ArpTpaMask struct {
-	ArpTpaMask uint32 `protobuf:"varint,126,opt,name=arp_tpa_mask,json=arpTpaMask,proto3,oneof"`
+	ArpTpaMask uint32 `protobuf:"varint,126,opt,name=arp_tpa_mask,json=arpTpaMask,proto3,oneof"` // For OFPXMT_OFB_ARP_TPA
 }
 
 type OfpOxmOfbField_Ipv6SrcMask struct {
-	Ipv6SrcMask []byte `protobuf:"bytes,129,opt,name=ipv6_src_mask,json=ipv6SrcMask,proto3,oneof"`
+	Ipv6SrcMask []byte `protobuf:"bytes,129,opt,name=ipv6_src_mask,json=ipv6SrcMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_SRC
 }
 
 type OfpOxmOfbField_Ipv6DstMask struct {
-	Ipv6DstMask []byte `protobuf:"bytes,130,opt,name=ipv6_dst_mask,json=ipv6DstMask,proto3,oneof"`
+	Ipv6DstMask []byte `protobuf:"bytes,130,opt,name=ipv6_dst_mask,json=ipv6DstMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_DST
 }
 
 type OfpOxmOfbField_Ipv6FlabelMask struct {
-	Ipv6FlabelMask uint32 `protobuf:"varint,131,opt,name=ipv6_flabel_mask,json=ipv6FlabelMask,proto3,oneof"`
+	Ipv6FlabelMask uint32 `protobuf:"varint,131,opt,name=ipv6_flabel_mask,json=ipv6FlabelMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_FLABEL
 }
 
 type OfpOxmOfbField_PbbIsidMask struct {
-	PbbIsidMask uint32 `protobuf:"varint,140,opt,name=pbb_isid_mask,json=pbbIsidMask,proto3,oneof"`
+	PbbIsidMask uint32 `protobuf:"varint,140,opt,name=pbb_isid_mask,json=pbbIsidMask,proto3,oneof"` // For OFPXMT_OFB_PBB_ISID
 }
 
 type OfpOxmOfbField_TunnelIdMask struct {
-	TunnelIdMask uint64 `protobuf:"varint,141,opt,name=tunnel_id_mask,json=tunnelIdMask,proto3,oneof"`
+	TunnelIdMask uint64 `protobuf:"varint,141,opt,name=tunnel_id_mask,json=tunnelIdMask,proto3,oneof"` // For OFPXMT_OFB_TUNNEL_ID
 }
 
 type OfpOxmOfbField_Ipv6ExthdrMask struct {
-	Ipv6ExthdrMask uint32 `protobuf:"varint,142,opt,name=ipv6_exthdr_mask,json=ipv6ExthdrMask,proto3,oneof"`
+	Ipv6ExthdrMask uint32 `protobuf:"varint,142,opt,name=ipv6_exthdr_mask,json=ipv6ExthdrMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_EXTHDR
 }
 
 func (*OfpOxmOfbField_TableMetadataMask) isOfpOxmOfbField_Mask() {}
@@ -3899,114 +5404,6977 @@
 
 func (*OfpOxmOfbField_Ipv6ExthdrMask) isOfpOxmOfbField_Mask() {}
 
-func (m *OfpOxmOfbField) GetMask() isOfpOxmOfbField_Mask {
-	if m != nil {
-		return m.Mask
+// Header for OXM experimenter match fields.
+// The experimenter class should not use OXM_HEADER() macros for defining
+// fields due to this extra header.
+type OfpOxmExperimenterField struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OxmHeader     uint32                 `protobuf:"varint,1,opt,name=oxm_header,json=oxmHeader,proto3" json:"oxm_header,omitempty"` // oxm_class = OFPXMC_EXPERIMENTER
+	Experimenter  uint32                 `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpOxmExperimenterField) Reset() {
+	*x = OfpOxmExperimenterField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpOxmExperimenterField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpOxmExperimenterField) ProtoMessage() {}
+
+func (x *OfpOxmExperimenterField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpOxmExperimenterField.ProtoReflect.Descriptor instead.
+func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *OfpOxmExperimenterField) GetOxmHeader() uint32 {
+	if x != nil {
+		return x.OxmHeader
+	}
+	return 0
+}
+
+func (x *OfpOxmExperimenterField) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+// Action header that is common to all actions.  The length includes the
+// header and any padding used to make the action 64-bit aligned.
+// NB: The length of an action *must* always be a multiple of eight.
+type OfpAction struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Type  OfpActionType          `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpActionType" json:"type,omitempty"` // One of OFPAT_*.
+	// Types that are valid to be assigned to Action:
+	//
+	//	*OfpAction_Output
+	//	*OfpAction_MplsTtl
+	//	*OfpAction_Push
+	//	*OfpAction_PopMpls
+	//	*OfpAction_Group
+	//	*OfpAction_NwTtl
+	//	*OfpAction_SetField
+	//	*OfpAction_Experimenter
+	Action        isOfpAction_Action `protobuf_oneof:"action"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpAction) Reset() {
+	*x = OfpAction{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAction) ProtoMessage() {}
+
+func (x *OfpAction) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAction.ProtoReflect.Descriptor instead.
+func (*OfpAction) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *OfpAction) GetType() OfpActionType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpActionType_OFPAT_OUTPUT
+}
+
+func (x *OfpAction) GetAction() isOfpAction_Action {
+	if x != nil {
+		return x.Action
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetTableMetadataMask() uint64 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_TableMetadataMask); ok {
-		return x.TableMetadataMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetEthDstMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_EthDstMask); ok {
-		return x.EthDstMask
+func (x *OfpAction) GetOutput() *OfpActionOutput {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Output); ok {
+			return x.Output
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetEthSrcMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_EthSrcMask); ok {
-		return x.EthSrcMask
+func (x *OfpAction) GetMplsTtl() *OfpActionMplsTtl {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_MplsTtl); ok {
+			return x.MplsTtl
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetVlanVidMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_VlanVidMask); ok {
-		return x.VlanVidMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv4SrcMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv4SrcMask); ok {
-		return x.Ipv4SrcMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv4DstMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv4DstMask); ok {
-		return x.Ipv4DstMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpSpaMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_ArpSpaMask); ok {
-		return x.ArpSpaMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpTpaMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_ArpTpaMask); ok {
-		return x.ArpTpaMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv6SrcMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6SrcMask); ok {
-		return x.Ipv6SrcMask
+func (x *OfpAction) GetPush() *OfpActionPush {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Push); ok {
+			return x.Push
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetIpv6DstMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6DstMask); ok {
-		return x.Ipv6DstMask
+func (x *OfpAction) GetPopMpls() *OfpActionPopMpls {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_PopMpls); ok {
+			return x.PopMpls
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetIpv6FlabelMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6FlabelMask); ok {
-		return x.Ipv6FlabelMask
+func (x *OfpAction) GetGroup() *OfpActionGroup {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Group); ok {
+			return x.Group
+		}
+	}
+	return nil
+}
+
+func (x *OfpAction) GetNwTtl() *OfpActionNwTtl {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_NwTtl); ok {
+			return x.NwTtl
+		}
+	}
+	return nil
+}
+
+func (x *OfpAction) GetSetField() *OfpActionSetField {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_SetField); ok {
+			return x.SetField
+		}
+	}
+	return nil
+}
+
+func (x *OfpAction) GetExperimenter() *OfpActionExperimenter {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpAction_Action interface {
+	isOfpAction_Action()
+}
+
+type OfpAction_Output struct {
+	Output *OfpActionOutput `protobuf:"bytes,2,opt,name=output,proto3,oneof"`
+}
+
+type OfpAction_MplsTtl struct {
+	MplsTtl *OfpActionMplsTtl `protobuf:"bytes,3,opt,name=mpls_ttl,json=mplsTtl,proto3,oneof"`
+}
+
+type OfpAction_Push struct {
+	Push *OfpActionPush `protobuf:"bytes,4,opt,name=push,proto3,oneof"`
+}
+
+type OfpAction_PopMpls struct {
+	PopMpls *OfpActionPopMpls `protobuf:"bytes,5,opt,name=pop_mpls,json=popMpls,proto3,oneof"`
+}
+
+type OfpAction_Group struct {
+	Group *OfpActionGroup `protobuf:"bytes,6,opt,name=group,proto3,oneof"`
+}
+
+type OfpAction_NwTtl struct {
+	NwTtl *OfpActionNwTtl `protobuf:"bytes,7,opt,name=nw_ttl,json=nwTtl,proto3,oneof"`
+}
+
+type OfpAction_SetField struct {
+	SetField *OfpActionSetField `protobuf:"bytes,8,opt,name=set_field,json=setField,proto3,oneof"`
+}
+
+type OfpAction_Experimenter struct {
+	Experimenter *OfpActionExperimenter `protobuf:"bytes,9,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpAction_Output) isOfpAction_Action() {}
+
+func (*OfpAction_MplsTtl) isOfpAction_Action() {}
+
+func (*OfpAction_Push) isOfpAction_Action() {}
+
+func (*OfpAction_PopMpls) isOfpAction_Action() {}
+
+func (*OfpAction_Group) isOfpAction_Action() {}
+
+func (*OfpAction_NwTtl) isOfpAction_Action() {}
+
+func (*OfpAction_SetField) isOfpAction_Action() {}
+
+func (*OfpAction_Experimenter) isOfpAction_Action() {}
+
+// Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
+// When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
+// number of bytes to send.  A 'max_len' of zero means no bytes of the
+// packet should be sent. A 'max_len' of OFPCML_NO_BUFFER means that
+// the packet is not buffered and the complete packet is to be sent to
+// the controller.
+type OfpActionOutput struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Port          uint32                 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`                   // Output port.
+	MaxLen        uint32                 `protobuf:"varint,2,opt,name=max_len,json=maxLen,proto3" json:"max_len,omitempty"` // Max length to send to controller.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionOutput) Reset() {
+	*x = OfpActionOutput{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionOutput) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionOutput) ProtoMessage() {}
+
+func (x *OfpActionOutput) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionOutput.ProtoReflect.Descriptor instead.
+func (*OfpActionOutput) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *OfpActionOutput) GetPort() uint32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *OfpOxmOfbField) GetPbbIsidMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_PbbIsidMask); ok {
-		return x.PbbIsidMask
+func (x *OfpActionOutput) GetMaxLen() uint32 {
+	if x != nil {
+		return x.MaxLen
 	}
 	return 0
 }
 
-func (m *OfpOxmOfbField) GetTunnelIdMask() uint64 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_TunnelIdMask); ok {
-		return x.TunnelIdMask
+// Action structure for OFPAT_SET_MPLS_TTL.
+type OfpActionMplsTtl struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MplsTtl       uint32                 `protobuf:"varint,1,opt,name=mpls_ttl,json=mplsTtl,proto3" json:"mpls_ttl,omitempty"` // MPLS TTL
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionMplsTtl) Reset() {
+	*x = OfpActionMplsTtl{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionMplsTtl) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionMplsTtl) ProtoMessage() {}
+
+func (x *OfpActionMplsTtl) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionMplsTtl.ProtoReflect.Descriptor instead.
+func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *OfpActionMplsTtl) GetMplsTtl() uint32 {
+	if x != nil {
+		return x.MplsTtl
 	}
 	return 0
 }
 
-func (m *OfpOxmOfbField) GetIpv6ExthdrMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6ExthdrMask); ok {
-		return x.Ipv6ExthdrMask
+// Action structure for OFPAT_PUSH_VLAN/MPLS/PBB.
+type OfpActionPush struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Ethertype     uint32                 `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"` // Ethertype
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionPush) Reset() {
+	*x = OfpActionPush{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionPush) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionPush) ProtoMessage() {}
+
+func (x *OfpActionPush) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionPush.ProtoReflect.Descriptor instead.
+func (*OfpActionPush) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *OfpActionPush) GetEthertype() uint32 {
+	if x != nil {
+		return x.Ethertype
 	}
 	return 0
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpOxmOfbField) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+// Action structure for OFPAT_POP_MPLS.
+type OfpActionPopMpls struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Ethertype     uint32                 `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"` // Ethertype
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionPopMpls) Reset() {
+	*x = OfpActionPopMpls{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionPopMpls) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionPopMpls) ProtoMessage() {}
+
+func (x *OfpActionPopMpls) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionPopMpls.ProtoReflect.Descriptor instead.
+func (*OfpActionPopMpls) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *OfpActionPopMpls) GetEthertype() uint32 {
+	if x != nil {
+		return x.Ethertype
+	}
+	return 0
+}
+
+// Action structure for OFPAT_GROUP.
+type OfpActionGroup struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupId       uint32                 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // Group identifier.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionGroup) Reset() {
+	*x = OfpActionGroup{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionGroup) ProtoMessage() {}
+
+func (x *OfpActionGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionGroup.ProtoReflect.Descriptor instead.
+func (*OfpActionGroup) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *OfpActionGroup) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+// Action structure for OFPAT_SET_NW_TTL.
+type OfpActionNwTtl struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	NwTtl         uint32                 `protobuf:"varint,1,opt,name=nw_ttl,json=nwTtl,proto3" json:"nw_ttl,omitempty"` // IP TTL
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionNwTtl) Reset() {
+	*x = OfpActionNwTtl{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionNwTtl) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionNwTtl) ProtoMessage() {}
+
+func (x *OfpActionNwTtl) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionNwTtl.ProtoReflect.Descriptor instead.
+func (*OfpActionNwTtl) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *OfpActionNwTtl) GetNwTtl() uint32 {
+	if x != nil {
+		return x.NwTtl
+	}
+	return 0
+}
+
+// Action structure for OFPAT_SET_FIELD.
+type OfpActionSetField struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Field         *OfpOxmField           `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionSetField) Reset() {
+	*x = OfpActionSetField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionSetField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionSetField) ProtoMessage() {}
+
+func (x *OfpActionSetField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionSetField.ProtoReflect.Descriptor instead.
+func (*OfpActionSetField) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *OfpActionSetField) GetField() *OfpOxmField {
+	if x != nil {
+		return x.Field
+	}
+	return nil
+}
+
+// Action header for OFPAT_EXPERIMENTER.
+// The rest of the body is experimenter-defined.
+type OfpActionExperimenter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter  uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	Data          []byte                 `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionExperimenter) Reset() {
+	*x = OfpActionExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionExperimenter) ProtoMessage() {}
+
+func (x *OfpActionExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpActionExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *OfpActionExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpActionExperimenter) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Instruction header that is common to all instructions.  The length includes
+// the header and any padding used to make the instruction 64-bit aligned.
+// NB: The length of an instruction *must* always be a multiple of eight.
+type OfpInstruction struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Type  uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` // Instruction type
+	// Types that are valid to be assigned to Data:
+	//
+	//	*OfpInstruction_GotoTable
+	//	*OfpInstruction_WriteMetadata
+	//	*OfpInstruction_Actions
+	//	*OfpInstruction_Meter
+	//	*OfpInstruction_Experimenter
+	Data          isOfpInstruction_Data `protobuf_oneof:"data"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstruction) Reset() {
+	*x = OfpInstruction{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstruction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstruction) ProtoMessage() {}
+
+func (x *OfpInstruction) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstruction.ProtoReflect.Descriptor instead.
+func (*OfpInstruction) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *OfpInstruction) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpInstruction) GetData() isOfpInstruction_Data {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetGotoTable() *OfpInstructionGotoTable {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_GotoTable); ok {
+			return x.GotoTable
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetWriteMetadata() *OfpInstructionWriteMetadata {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_WriteMetadata); ok {
+			return x.WriteMetadata
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetActions() *OfpInstructionActions {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_Actions); ok {
+			return x.Actions
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetMeter() *OfpInstructionMeter {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_Meter); ok {
+			return x.Meter
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetExperimenter() *OfpInstructionExperimenter {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpInstruction_Data interface {
+	isOfpInstruction_Data()
+}
+
+type OfpInstruction_GotoTable struct {
+	GotoTable *OfpInstructionGotoTable `protobuf:"bytes,2,opt,name=goto_table,json=gotoTable,proto3,oneof"`
+}
+
+type OfpInstruction_WriteMetadata struct {
+	WriteMetadata *OfpInstructionWriteMetadata `protobuf:"bytes,3,opt,name=write_metadata,json=writeMetadata,proto3,oneof"`
+}
+
+type OfpInstruction_Actions struct {
+	Actions *OfpInstructionActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
+}
+
+type OfpInstruction_Meter struct {
+	Meter *OfpInstructionMeter `protobuf:"bytes,5,opt,name=meter,proto3,oneof"`
+}
+
+type OfpInstruction_Experimenter struct {
+	Experimenter *OfpInstructionExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpInstruction_GotoTable) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_WriteMetadata) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_Actions) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_Meter) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_Experimenter) isOfpInstruction_Data() {}
+
+// Instruction structure for OFPIT_GOTO_TABLE
+type OfpInstructionGotoTable struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"` // Set next table in the lookup pipeline
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionGotoTable) Reset() {
+	*x = OfpInstructionGotoTable{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[25]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionGotoTable) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionGotoTable) ProtoMessage() {}
+
+func (x *OfpInstructionGotoTable) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[25]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionGotoTable.ProtoReflect.Descriptor instead.
+func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *OfpInstructionGotoTable) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+// Instruction structure for OFPIT_WRITE_METADATA
+type OfpInstructionWriteMetadata struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Metadata      uint64                 `protobuf:"varint,1,opt,name=metadata,proto3" json:"metadata,omitempty"`                             // Metadata value to write
+	MetadataMask  uint64                 `protobuf:"varint,2,opt,name=metadata_mask,json=metadataMask,proto3" json:"metadata_mask,omitempty"` // Metadata write bitmask
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionWriteMetadata) Reset() {
+	*x = OfpInstructionWriteMetadata{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[26]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionWriteMetadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionWriteMetadata) ProtoMessage() {}
+
+func (x *OfpInstructionWriteMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[26]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionWriteMetadata.ProtoReflect.Descriptor instead.
+func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *OfpInstructionWriteMetadata) GetMetadata() uint64 {
+	if x != nil {
+		return x.Metadata
+	}
+	return 0
+}
+
+func (x *OfpInstructionWriteMetadata) GetMetadataMask() uint64 {
+	if x != nil {
+		return x.MetadataMask
+	}
+	return 0
+}
+
+// Instruction structure for OFPIT_WRITE/APPLY/CLEAR_ACTIONS
+type OfpInstructionActions struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Actions       []*OfpAction           `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionActions) Reset() {
+	*x = OfpInstructionActions{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[27]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionActions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionActions) ProtoMessage() {}
+
+func (x *OfpInstructionActions) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[27]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionActions.ProtoReflect.Descriptor instead.
+func (*OfpInstructionActions) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *OfpInstructionActions) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Instruction structure for OFPIT_METER
+type OfpInstructionMeter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterId       uint32                 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"` // Meter instance.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionMeter) Reset() {
+	*x = OfpInstructionMeter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[28]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionMeter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionMeter) ProtoMessage() {}
+
+func (x *OfpInstructionMeter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[28]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionMeter.ProtoReflect.Descriptor instead.
+func (*OfpInstructionMeter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *OfpInstructionMeter) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+// Instruction structure for experimental instructions
+type OfpInstructionExperimenter struct {
+	state        protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	// Experimenter-defined arbitrary additional data.
+	Data          []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionExperimenter) Reset() {
+	*x = OfpInstructionExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[29]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionExperimenter) ProtoMessage() {}
+
+func (x *OfpInstructionExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[29]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *OfpInstructionExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpInstructionExperimenter) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Flow setup and teardown (controller -> datapath).
+type OfpFlowMod struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Cookie        uint64            `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"` // Opaque controller-issued identifier.
+	CookieMask    uint64            `protobuf:"varint,2,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+	TableId       uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	Command       OfpFlowModCommand `protobuf:"varint,4,opt,name=command,proto3,enum=openflow_13.OfpFlowModCommand" json:"command,omitempty"` // One of OFPFC_*.
+	IdleTimeout   uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`         // Idle time before discarding (seconds).
+	HardTimeout   uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`         // Max time before discarding (seconds).
+	Priority      uint32            `protobuf:"varint,7,opt,name=priority,proto3" json:"priority,omitempty"`                                  // Priority level of flow entry.
+	BufferId      uint32            `protobuf:"varint,8,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
+	OutPort       uint32            `protobuf:"varint,9,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+	OutGroup      uint32            `protobuf:"varint,10,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+	Flags         uint32            `protobuf:"varint,11,opt,name=flags,proto3" json:"flags,omitempty"`              // Bitmap of OFPFF_* flags.
+	Match         *OfpMatch         `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`               // Fields to match. Variable size.
+	Instructions  []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"` // 0 or more.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowMod) Reset() {
+	*x = OfpFlowMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[30]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowMod) ProtoMessage() {}
+
+func (x *OfpFlowMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[30]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowMod.ProtoReflect.Descriptor instead.
+func (*OfpFlowMod) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *OfpFlowMod) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetCookieMask() uint64 {
+	if x != nil {
+		return x.CookieMask
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetCommand() OfpFlowModCommand {
+	if x != nil {
+		return x.Command
+	}
+	return OfpFlowModCommand_OFPFC_ADD
+}
+
+func (x *OfpFlowMod) GetIdleTimeout() uint32 {
+	if x != nil {
+		return x.IdleTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetHardTimeout() uint32 {
+	if x != nil {
+		return x.HardTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetBufferId() uint32 {
+	if x != nil {
+		return x.BufferId
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetOutPort() uint32 {
+	if x != nil {
+		return x.OutPort
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetOutGroup() uint32 {
+	if x != nil {
+		return x.OutGroup
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+func (x *OfpFlowMod) GetInstructions() []*OfpInstruction {
+	if x != nil {
+		return x.Instructions
+	}
+	return nil
+}
+
+// Bucket for use in groups.
+type OfpBucket struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Weight        uint32                 `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"`
+	WatchPort     uint32                 `protobuf:"varint,2,opt,name=watch_port,json=watchPort,proto3" json:"watch_port,omitempty"`
+	WatchGroup    uint32                 `protobuf:"varint,3,opt,name=watch_group,json=watchGroup,proto3" json:"watch_group,omitempty"`
+	Actions       []*OfpAction           `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpBucket) Reset() {
+	*x = OfpBucket{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[31]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpBucket) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpBucket) ProtoMessage() {}
+
+func (x *OfpBucket) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[31]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpBucket.ProtoReflect.Descriptor instead.
+func (*OfpBucket) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *OfpBucket) GetWeight() uint32 {
+	if x != nil {
+		return x.Weight
+	}
+	return 0
+}
+
+func (x *OfpBucket) GetWatchPort() uint32 {
+	if x != nil {
+		return x.WatchPort
+	}
+	return 0
+}
+
+func (x *OfpBucket) GetWatchGroup() uint32 {
+	if x != nil {
+		return x.WatchGroup
+	}
+	return 0
+}
+
+func (x *OfpBucket) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Group setup and teardown (controller -> datapath).
+type OfpGroupMod struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Command       OfpGroupModCommand `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpGroupModCommand" json:"command,omitempty"` // One of OFPGC_*.
+	Type          OfpGroupType       `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`             // One of OFPGT_*.
+	GroupId       uint32             `protobuf:"varint,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`                      // Group identifier.
+	Buckets       []*OfpBucket       `protobuf:"bytes,4,rep,name=buckets,proto3" json:"buckets,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupMod) Reset() {
+	*x = OfpGroupMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[32]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupMod) ProtoMessage() {}
+
+func (x *OfpGroupMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[32]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupMod.ProtoReflect.Descriptor instead.
+func (*OfpGroupMod) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{32}
+}
+
+func (x *OfpGroupMod) GetCommand() OfpGroupModCommand {
+	if x != nil {
+		return x.Command
+	}
+	return OfpGroupModCommand_OFPGC_ADD
+}
+
+func (x *OfpGroupMod) GetType() OfpGroupType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpGroupType_OFPGT_ALL
+}
+
+func (x *OfpGroupMod) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *OfpGroupMod) GetBuckets() []*OfpBucket {
+	if x != nil {
+		return x.Buckets
+	}
+	return nil
+}
+
+// Send packet (controller -> datapath).
+type OfpPacketOut struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	BufferId uint32       `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
+	InPort   uint32       `protobuf:"varint,2,opt,name=in_port,json=inPort,proto3" json:"in_port,omitempty"` // Packet's input port or OFPP_CONTROLLER.
+	Actions  []*OfpAction `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`              // Action list - 0 or more.
+	// The variable size action list is optionally followed by packet data.
+	// This data is only present and meaningful if buffer_id == -1.
+	Data          []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` // Packet data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPacketOut) Reset() {
+	*x = OfpPacketOut{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[33]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPacketOut) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPacketOut) ProtoMessage() {}
+
+func (x *OfpPacketOut) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[33]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPacketOut.ProtoReflect.Descriptor instead.
+func (*OfpPacketOut) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *OfpPacketOut) GetBufferId() uint32 {
+	if x != nil {
+		return x.BufferId
+	}
+	return 0
+}
+
+func (x *OfpPacketOut) GetInPort() uint32 {
+	if x != nil {
+		return x.InPort
+	}
+	return 0
+}
+
+func (x *OfpPacketOut) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+func (x *OfpPacketOut) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Packet received on port (datapath -> controller).
+type OfpPacketIn struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	BufferId      uint32            `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`                // ID assigned by datapath.
+	Reason        OfpPacketInReason `protobuf:"varint,2,opt,name=reason,proto3,enum=openflow_13.OfpPacketInReason" json:"reason,omitempty"` // Reason packet is being sent
+	TableId       uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`                   // ID of the table that was looked up
+	Cookie        uint64            `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`                                    // Cookie of the flow entry that was looked up.
+	Match         *OfpMatch         `protobuf:"bytes,5,opt,name=match,proto3" json:"match,omitempty"`                                       // Packet metadata. Variable size.
+	Data          []byte            `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`                                         // Ethernet frame
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPacketIn) Reset() {
+	*x = OfpPacketIn{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[34]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPacketIn) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPacketIn) ProtoMessage() {}
+
+func (x *OfpPacketIn) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[34]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPacketIn.ProtoReflect.Descriptor instead.
+func (*OfpPacketIn) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *OfpPacketIn) GetBufferId() uint32 {
+	if x != nil {
+		return x.BufferId
+	}
+	return 0
+}
+
+func (x *OfpPacketIn) GetReason() OfpPacketInReason {
+	if x != nil {
+		return x.Reason
+	}
+	return OfpPacketInReason_OFPR_NO_MATCH
+}
+
+func (x *OfpPacketIn) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpPacketIn) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpPacketIn) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+func (x *OfpPacketIn) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Flow removed (datapath -> controller).
+type OfpFlowRemoved struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Cookie        uint64               `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`                                       // Opaque controller-issued identifier.
+	Priority      uint32               `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`                                   // Priority level of flow entry.
+	Reason        OfpFlowRemovedReason `protobuf:"varint,3,opt,name=reason,proto3,enum=openflow_13.OfpFlowRemovedReason" json:"reason,omitempty"` // One of OFPRR_*.
+	TableId       uint32               `protobuf:"varint,4,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`                      // ID of the table
+	DurationSec   uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`          // Time flow was alive in seconds.
+	DurationNsec  uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	IdleTimeout   uint32               `protobuf:"varint,7,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` // Idle timeout from original flow mod.
+	HardTimeout   uint32               `protobuf:"varint,8,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"` // Hard timeout from original flow mod.
+	PacketCount   uint64               `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
+	ByteCount     uint64               `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
+	Match         *OfpMatch            `protobuf:"bytes,121,opt,name=match,proto3" json:"match,omitempty"` // Description of fields. Variable size.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowRemoved) Reset() {
+	*x = OfpFlowRemoved{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[35]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowRemoved) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowRemoved) ProtoMessage() {}
+
+func (x *OfpFlowRemoved) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[35]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowRemoved.ProtoReflect.Descriptor instead.
+func (*OfpFlowRemoved) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *OfpFlowRemoved) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetReason() OfpFlowRemovedReason {
+	if x != nil {
+		return x.Reason
+	}
+	return OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT
+}
+
+func (x *OfpFlowRemoved) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetIdleTimeout() uint32 {
+	if x != nil {
+		return x.IdleTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetHardTimeout() uint32 {
+	if x != nil {
+		return x.HardTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+// Common header for all meter bands
+type OfpMeterBandHeader struct {
+	state     protoimpl.MessageState `protogen:"open.v1"`
+	Type      OfpMeterBandType       `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMeterBandType" json:"type,omitempty"` // One of OFPMBT_*.
+	Rate      uint32                 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`                                   // Rate for this band.
+	BurstSize uint32                 `protobuf:"varint,3,opt,name=burst_size,json=burstSize,proto3" json:"burst_size,omitempty"`        // Size of bursts.
+	// Types that are valid to be assigned to Data:
+	//
+	//	*OfpMeterBandHeader_Drop
+	//	*OfpMeterBandHeader_DscpRemark
+	//	*OfpMeterBandHeader_Experimenter
+	Data          isOfpMeterBandHeader_Data `protobuf_oneof:"data"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandHeader) Reset() {
+	*x = OfpMeterBandHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[36]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandHeader) ProtoMessage() {}
+
+func (x *OfpMeterBandHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[36]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandHeader.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{36}
+}
+
+func (x *OfpMeterBandHeader) GetType() OfpMeterBandType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpMeterBandType_OFPMBT_INVALID
+}
+
+func (x *OfpMeterBandHeader) GetRate() uint32 {
+	if x != nil {
+		return x.Rate
+	}
+	return 0
+}
+
+func (x *OfpMeterBandHeader) GetBurstSize() uint32 {
+	if x != nil {
+		return x.BurstSize
+	}
+	return 0
+}
+
+func (x *OfpMeterBandHeader) GetData() isOfpMeterBandHeader_Data {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+func (x *OfpMeterBandHeader) GetDrop() *OfpMeterBandDrop {
+	if x != nil {
+		if x, ok := x.Data.(*OfpMeterBandHeader_Drop); ok {
+			return x.Drop
+		}
+	}
+	return nil
+}
+
+func (x *OfpMeterBandHeader) GetDscpRemark() *OfpMeterBandDscpRemark {
+	if x != nil {
+		if x, ok := x.Data.(*OfpMeterBandHeader_DscpRemark); ok {
+			return x.DscpRemark
+		}
+	}
+	return nil
+}
+
+func (x *OfpMeterBandHeader) GetExperimenter() *OfpMeterBandExperimenter {
+	if x != nil {
+		if x, ok := x.Data.(*OfpMeterBandHeader_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpMeterBandHeader_Data interface {
+	isOfpMeterBandHeader_Data()
+}
+
+type OfpMeterBandHeader_Drop struct {
+	Drop *OfpMeterBandDrop `protobuf:"bytes,4,opt,name=drop,proto3,oneof"`
+}
+
+type OfpMeterBandHeader_DscpRemark struct {
+	DscpRemark *OfpMeterBandDscpRemark `protobuf:"bytes,5,opt,name=dscp_remark,json=dscpRemark,proto3,oneof"`
+}
+
+type OfpMeterBandHeader_Experimenter struct {
+	Experimenter *OfpMeterBandExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpMeterBandHeader_Drop) isOfpMeterBandHeader_Data() {}
+
+func (*OfpMeterBandHeader_DscpRemark) isOfpMeterBandHeader_Data() {}
+
+func (*OfpMeterBandHeader_Experimenter) isOfpMeterBandHeader_Data() {}
+
+// OFPMBT_DROP band - drop packets
+type OfpMeterBandDrop struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandDrop) Reset() {
+	*x = OfpMeterBandDrop{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[37]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandDrop) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandDrop) ProtoMessage() {}
+
+func (x *OfpMeterBandDrop) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[37]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandDrop.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{37}
+}
+
+// OFPMBT_DSCP_REMARK band - Remark DSCP in the IP header
+type OfpMeterBandDscpRemark struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PrecLevel     uint32                 `protobuf:"varint,1,opt,name=prec_level,json=precLevel,proto3" json:"prec_level,omitempty"` // Number of drop precedence level to add.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandDscpRemark) Reset() {
+	*x = OfpMeterBandDscpRemark{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[38]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandDscpRemark) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandDscpRemark) ProtoMessage() {}
+
+func (x *OfpMeterBandDscpRemark) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[38]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandDscpRemark.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{38}
+}
+
+func (x *OfpMeterBandDscpRemark) GetPrecLevel() uint32 {
+	if x != nil {
+		return x.PrecLevel
+	}
+	return 0
+}
+
+// OFPMBT_EXPERIMENTER band - Experimenter type.
+// The rest of the band is experimenter-defined.
+type OfpMeterBandExperimenter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter  uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandExperimenter) Reset() {
+	*x = OfpMeterBandExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[39]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandExperimenter) ProtoMessage() {}
+
+func (x *OfpMeterBandExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[39]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{39}
+}
+
+func (x *OfpMeterBandExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+// Meter configuration. OFPT_METER_MOD.
+type OfpMeterMod struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Command       OfpMeterModCommand     `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpMeterModCommand" json:"command,omitempty"` // One of OFPMC_*.
+	Flags         uint32                 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`                                         // Bitmap of OFPMF_* flags.
+	MeterId       uint32                 `protobuf:"varint,3,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`                      // Meter instance.
+	Bands         []*OfpMeterBandHeader  `protobuf:"bytes,4,rep,name=bands,proto3" json:"bands,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterMod) Reset() {
+	*x = OfpMeterMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[40]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterMod) ProtoMessage() {}
+
+func (x *OfpMeterMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[40]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterMod.ProtoReflect.Descriptor instead.
+func (*OfpMeterMod) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{40}
+}
+
+func (x *OfpMeterMod) GetCommand() OfpMeterModCommand {
+	if x != nil {
+		return x.Command
+	}
+	return OfpMeterModCommand_OFPMC_ADD
+}
+
+func (x *OfpMeterMod) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMeterMod) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+func (x *OfpMeterMod) GetBands() []*OfpMeterBandHeader {
+	if x != nil {
+		return x.Bands
+	}
+	return nil
+}
+
+// OFPT_ERROR: Error message (datapath -> controller).
+type OfpErrorMsg struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Header        *OfpHeader             `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
+	Type          uint32                 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
+	Code          uint32                 `protobuf:"varint,3,opt,name=code,proto3" json:"code,omitempty"`
+	Data          []byte                 `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpErrorMsg) Reset() {
+	*x = OfpErrorMsg{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[41]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpErrorMsg) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpErrorMsg) ProtoMessage() {}
+
+func (x *OfpErrorMsg) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[41]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpErrorMsg.ProtoReflect.Descriptor instead.
+func (*OfpErrorMsg) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{41}
+}
+
+func (x *OfpErrorMsg) GetHeader() *OfpHeader {
+	if x != nil {
+		return x.Header
+	}
+	return nil
+}
+
+func (x *OfpErrorMsg) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpErrorMsg) GetCode() uint32 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *OfpErrorMsg) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// OFPET_EXPERIMENTER: Error message (datapath -> controller).
+type OfpErrorExperimenterMsg struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`                      // OFPET_EXPERIMENTER.
+	ExpType       uint32                 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	Experimenter  uint32                 `protobuf:"varint,3,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	Data          []byte                 `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpErrorExperimenterMsg) Reset() {
+	*x = OfpErrorExperimenterMsg{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[42]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpErrorExperimenterMsg) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpErrorExperimenterMsg) ProtoMessage() {}
+
+func (x *OfpErrorExperimenterMsg) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[42]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpErrorExperimenterMsg.ProtoReflect.Descriptor instead.
+func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{42}
+}
+
+func (x *OfpErrorExperimenterMsg) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpErrorExperimenterMsg) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpErrorExperimenterMsg) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpErrorExperimenterMsg) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+type OfpMultipartRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Type          OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"` // One of the OFPMP_* constants.
+	Flags         uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`                                 // OFPMPF_REQ_* flags.
+	Body          []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`                                    // Body of the request. 0 or more bytes.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMultipartRequest) Reset() {
+	*x = OfpMultipartRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[43]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMultipartRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMultipartRequest) ProtoMessage() {}
+
+func (x *OfpMultipartRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[43]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMultipartRequest.ProtoReflect.Descriptor instead.
+func (*OfpMultipartRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{43}
+}
+
+func (x *OfpMultipartRequest) GetType() OfpMultipartType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpMultipartType_OFPMP_DESC
+}
+
+func (x *OfpMultipartRequest) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMultipartRequest) GetBody() []byte {
+	if x != nil {
+		return x.Body
+	}
+	return nil
+}
+
+type OfpMultipartReply struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Type          OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"` // One of the OFPMP_* constants.
+	Flags         uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`                                 // OFPMPF_REPLY_* flags.
+	Body          []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`                                    // Body of the reply. 0 or more bytes.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMultipartReply) Reset() {
+	*x = OfpMultipartReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[44]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMultipartReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMultipartReply) ProtoMessage() {}
+
+func (x *OfpMultipartReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[44]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMultipartReply.ProtoReflect.Descriptor instead.
+func (*OfpMultipartReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{44}
+}
+
+func (x *OfpMultipartReply) GetType() OfpMultipartType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpMultipartType_OFPMP_DESC
+}
+
+func (x *OfpMultipartReply) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMultipartReply) GetBody() []byte {
+	if x != nil {
+		return x.Body
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_DESC request.  Each entry is a NULL-terminated
+// ASCII string.
+type OfpDesc struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MfrDesc       string                 `protobuf:"bytes,1,opt,name=mfr_desc,json=mfrDesc,proto3" json:"mfr_desc,omitempty"`       // Manufacturer description.
+	HwDesc        string                 `protobuf:"bytes,2,opt,name=hw_desc,json=hwDesc,proto3" json:"hw_desc,omitempty"`          // Hardware description.
+	SwDesc        string                 `protobuf:"bytes,3,opt,name=sw_desc,json=swDesc,proto3" json:"sw_desc,omitempty"`          // Software description.
+	SerialNum     string                 `protobuf:"bytes,4,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"` // Serial number.
+	DpDesc        string                 `protobuf:"bytes,5,opt,name=dp_desc,json=dpDesc,proto3" json:"dp_desc,omitempty"`          // Human readable description of datapath.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpDesc) Reset() {
+	*x = OfpDesc{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[45]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpDesc) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpDesc) ProtoMessage() {}
+
+func (x *OfpDesc) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[45]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpDesc.ProtoReflect.Descriptor instead.
+func (*OfpDesc) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{45}
+}
+
+func (x *OfpDesc) GetMfrDesc() string {
+	if x != nil {
+		return x.MfrDesc
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetHwDesc() string {
+	if x != nil {
+		return x.HwDesc
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetSwDesc() string {
+	if x != nil {
+		return x.SwDesc
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetSerialNum() string {
+	if x != nil {
+		return x.SerialNum
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetDpDesc() string {
+	if x != nil {
+		return x.DpDesc
+	}
+	return ""
+}
+
+// Body for ofp_multipart_request of type OFPMP_FLOW.
+type OfpFlowStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	OutPort       uint32                 `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+	OutGroup      uint32                 `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+	Cookie        uint64                 `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
+	CookieMask    uint64                 `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+	Match         *OfpMatch              `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"` // Fields to match. Variable size.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowStatsRequest) Reset() {
+	*x = OfpFlowStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[46]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowStatsRequest) ProtoMessage() {}
+
+func (x *OfpFlowStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[46]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{46}
+}
+
+func (x *OfpFlowStatsRequest) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetOutPort() uint32 {
+	if x != nil {
+		return x.OutPort
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetOutGroup() uint32 {
+	if x != nil {
+		return x.OutGroup
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetCookieMask() uint64 {
+	if x != nil {
+		return x.CookieMask
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_FLOW request.
+type OfpFlowStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            uint64                 `protobuf:"varint,14,opt,name=id,proto3" json:"id,omitempty"`                                     // Unique ID of flow within device.
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`             // ID of table flow came from.
+	DurationSec   uint32                 `protobuf:"varint,2,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time flow has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,3,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	Priority      uint32                 `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`                          // Priority of the entry.
+	IdleTimeout   uint32                 `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` // Number of seconds idle before expiration.
+	HardTimeout   uint32                 `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"` // Number of seconds before expiration.
+	Flags         uint32                 `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"`                                // Bitmap of OFPFF_* flags.
+	Cookie        uint64                 `protobuf:"varint,8,opt,name=cookie,proto3" json:"cookie,omitempty"`                              // Opaque controller-issued identifier.
+	PacketCount   uint64                 `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets in flow.
+	ByteCount     uint64                 `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`      // Number of bytes in flow.
+	Match         *OfpMatch              `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`                                // Description of fields. Variable size.
+	Instructions  []*OfpInstruction      `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowStats) Reset() {
+	*x = OfpFlowStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[47]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowStats) ProtoMessage() {}
+
+func (x *OfpFlowStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[47]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowStats.ProtoReflect.Descriptor instead.
+func (*OfpFlowStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{47}
+}
+
+func (x *OfpFlowStats) GetId() uint64 {
+	if x != nil {
+		return x.Id
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetIdleTimeout() uint32 {
+	if x != nil {
+		return x.IdleTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetHardTimeout() uint32 {
+	if x != nil {
+		return x.HardTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+func (x *OfpFlowStats) GetInstructions() []*OfpInstruction {
+	if x != nil {
+		return x.Instructions
+	}
+	return nil
+}
+
+// Body for ofp_multipart_request of type OFPMP_AGGREGATE.
+type OfpAggregateStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	OutPort       uint32                 `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+	OutGroup      uint32                 `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+	Cookie        uint64                 `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
+	CookieMask    uint64                 `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+	Match         *OfpMatch              `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"` // Fields to match. Variable size.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpAggregateStatsRequest) Reset() {
+	*x = OfpAggregateStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[48]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAggregateStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAggregateStatsRequest) ProtoMessage() {}
+
+func (x *OfpAggregateStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[48]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAggregateStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{48}
+}
+
+func (x *OfpAggregateStatsRequest) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetOutPort() uint32 {
+	if x != nil {
+		return x.OutPort
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetOutGroup() uint32 {
+	if x != nil {
+		return x.OutGroup
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetCookieMask() uint64 {
+	if x != nil {
+		return x.CookieMask
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_AGGREGATE request.
+type OfpAggregateStatsReply struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PacketCount   uint64                 `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets in flows.
+	ByteCount     uint64                 `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`       // Number of bytes in flows.
+	FlowCount     uint32                 `protobuf:"varint,3,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`       // Number of flows.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpAggregateStatsReply) Reset() {
+	*x = OfpAggregateStatsReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[49]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAggregateStatsReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAggregateStatsReply) ProtoMessage() {}
+
+func (x *OfpAggregateStatsReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[49]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAggregateStatsReply.ProtoReflect.Descriptor instead.
+func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{49}
+}
+
+func (x *OfpAggregateStatsReply) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsReply) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsReply) GetFlowCount() uint32 {
+	if x != nil {
+		return x.FlowCount
+	}
+	return 0
+}
+
+// Common header for all Table Feature Properties
+type OfpTableFeatureProperty struct {
+	state protoimpl.MessageState  `protogen:"open.v1"`
+	Type  OfpTableFeaturePropType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpTableFeaturePropType" json:"type,omitempty"` // One of OFPTFPT_*.
+	// Types that are valid to be assigned to Value:
+	//
+	//	*OfpTableFeatureProperty_Instructions
+	//	*OfpTableFeatureProperty_NextTables
+	//	*OfpTableFeatureProperty_Actions
+	//	*OfpTableFeatureProperty_Oxm
+	//	*OfpTableFeatureProperty_Experimenter
+	Value         isOfpTableFeatureProperty_Value `protobuf_oneof:"value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeatureProperty) Reset() {
+	*x = OfpTableFeatureProperty{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[50]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeatureProperty) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeatureProperty) ProtoMessage() {}
+
+func (x *OfpTableFeatureProperty) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[50]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeatureProperty.ProtoReflect.Descriptor instead.
+func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{50}
+}
+
+func (x *OfpTableFeatureProperty) GetType() OfpTableFeaturePropType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS
+}
+
+func (x *OfpTableFeatureProperty) GetValue() isOfpTableFeatureProperty_Value {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetInstructions() *OfpTableFeaturePropInstructions {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Instructions); ok {
+			return x.Instructions
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetNextTables() *OfpTableFeaturePropNextTables {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_NextTables); ok {
+			return x.NextTables
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetActions() *OfpTableFeaturePropActions {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Actions); ok {
+			return x.Actions
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetOxm() *OfpTableFeaturePropOxm {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Oxm); ok {
+			return x.Oxm
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetExperimenter() *OfpTableFeaturePropExperimenter {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpTableFeatureProperty_Value interface {
+	isOfpTableFeatureProperty_Value()
+}
+
+type OfpTableFeatureProperty_Instructions struct {
+	Instructions *OfpTableFeaturePropInstructions `protobuf:"bytes,2,opt,name=instructions,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_NextTables struct {
+	NextTables *OfpTableFeaturePropNextTables `protobuf:"bytes,3,opt,name=next_tables,json=nextTables,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Actions struct {
+	Actions *OfpTableFeaturePropActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Oxm struct {
+	Oxm *OfpTableFeaturePropOxm `protobuf:"bytes,5,opt,name=oxm,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Experimenter struct {
+	Experimenter *OfpTableFeaturePropExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpTableFeatureProperty_Instructions) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_NextTables) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_Actions) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_Oxm) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_Experimenter) isOfpTableFeatureProperty_Value() {}
+
+// Instructions property
+type OfpTableFeaturePropInstructions struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_INSTRUCTIONS,
+	// OFPTFPT_INSTRUCTIONS_MISS.
+	Instructions  []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions,proto3" json:"instructions,omitempty"` // List of instructions
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropInstructions) Reset() {
+	*x = OfpTableFeaturePropInstructions{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[51]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropInstructions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropInstructions) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropInstructions) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[51]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropInstructions.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{51}
+}
+
+func (x *OfpTableFeaturePropInstructions) GetInstructions() []*OfpInstruction {
+	if x != nil {
+		return x.Instructions
+	}
+	return nil
+}
+
+// Next Tables property
+type OfpTableFeaturePropNextTables struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_NEXT_TABLES,
+	// OFPTFPT_NEXT_TABLES_MISS.
+	NextTableIds  []uint32 `protobuf:"varint,1,rep,packed,name=next_table_ids,json=nextTableIds,proto3" json:"next_table_ids,omitempty"` // List of table ids.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropNextTables) Reset() {
+	*x = OfpTableFeaturePropNextTables{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[52]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropNextTables) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropNextTables) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropNextTables) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[52]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropNextTables.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{52}
+}
+
+func (x *OfpTableFeaturePropNextTables) GetNextTableIds() []uint32 {
+	if x != nil {
+		return x.NextTableIds
+	}
+	return nil
+}
+
+// Actions property
+type OfpTableFeaturePropActions struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_WRITE_ACTIONS,
+	// OFPTFPT_WRITE_ACTIONS_MISS,
+	// OFPTFPT_APPLY_ACTIONS,
+	// OFPTFPT_APPLY_ACTIONS_MISS.
+	Actions       []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"` // List of actions
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropActions) Reset() {
+	*x = OfpTableFeaturePropActions{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[53]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropActions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropActions) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropActions) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[53]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropActions.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{53}
+}
+
+func (x *OfpTableFeaturePropActions) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Match, Wildcard or Set-Field property
+type OfpTableFeaturePropOxm struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// TODO is this a uint32???
+	OxmIds        []uint32 `protobuf:"varint,3,rep,packed,name=oxm_ids,json=oxmIds,proto3" json:"oxm_ids,omitempty"` // Array of OXM headers
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropOxm) Reset() {
+	*x = OfpTableFeaturePropOxm{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[54]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropOxm) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropOxm) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropOxm) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[54]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropOxm.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{54}
+}
+
+func (x *OfpTableFeaturePropOxm) GetOxmIds() []uint32 {
+	if x != nil {
+		return x.OxmIds
+	}
+	return nil
+}
+
+// Experimenter table feature property
+type OfpTableFeaturePropExperimenter struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_EXPERIMENTER,
+	// OFPTFPT_EXPERIMENTER_MISS.
+	Experimenter     uint32   `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	ExpType          uint32   `protobuf:"varint,3,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	ExperimenterData []uint32 `protobuf:"varint,4,rep,packed,name=experimenter_data,json=experimenterData,proto3" json:"experimenter_data,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropExperimenter) Reset() {
+	*x = OfpTableFeaturePropExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[55]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropExperimenter) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[55]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{55}
+}
+
+func (x *OfpTableFeaturePropExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpTableFeaturePropExperimenter) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpTableFeaturePropExperimenter) GetExperimenterData() []uint32 {
+	if x != nil {
+		return x.ExperimenterData
+	}
+	return nil
+}
+
+// Body for ofp_multipart_request of type OFPMP_TABLE_FEATURES./
+// Body of reply to OFPMP_TABLE_FEATURES request.
+type OfpTableFeatures struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	MetadataMatch uint64                 `protobuf:"varint,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"` // Bits of metadata table can match.
+	MetadataWrite uint64                 `protobuf:"varint,4,opt,name=metadata_write,json=metadataWrite,proto3" json:"metadata_write,omitempty"` // Bits of metadata table can write.
+	Config        uint32                 `protobuf:"varint,5,opt,name=config,proto3" json:"config,omitempty"`                                    // Bitmap of OFPTC_* values
+	MaxEntries    uint32                 `protobuf:"varint,6,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"`          // Max number of entries supported.
+	// Table Feature Property list
+	Properties    []*OfpTableFeatureProperty `protobuf:"bytes,7,rep,name=properties,proto3" json:"properties,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeatures) Reset() {
+	*x = OfpTableFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[56]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeatures) ProtoMessage() {}
+
+func (x *OfpTableFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[56]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeatures.ProtoReflect.Descriptor instead.
+func (*OfpTableFeatures) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{56}
+}
+
+func (x *OfpTableFeatures) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+func (x *OfpTableFeatures) GetMetadataMatch() uint64 {
+	if x != nil {
+		return x.MetadataMatch
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetMetadataWrite() uint64 {
+	if x != nil {
+		return x.MetadataWrite
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetMaxEntries() uint32 {
+	if x != nil {
+		return x.MaxEntries
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetProperties() []*OfpTableFeatureProperty {
+	if x != nil {
+		return x.Properties
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_TABLE request.
+type OfpTableStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	ActiveCount   uint32                 `protobuf:"varint,2,opt,name=active_count,json=activeCount,proto3" json:"active_count,omitempty"`    // Number of active entries.
+	LookupCount   uint64                 `protobuf:"varint,3,opt,name=lookup_count,json=lookupCount,proto3" json:"lookup_count,omitempty"`    // Number of packets looked up in table.
+	MatchedCount  uint64                 `protobuf:"varint,4,opt,name=matched_count,json=matchedCount,proto3" json:"matched_count,omitempty"` // Number of packets that hit table.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableStats) Reset() {
+	*x = OfpTableStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[57]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableStats) ProtoMessage() {}
+
+func (x *OfpTableStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[57]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableStats.ProtoReflect.Descriptor instead.
+func (*OfpTableStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{57}
+}
+
+func (x *OfpTableStats) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpTableStats) GetActiveCount() uint32 {
+	if x != nil {
+		return x.ActiveCount
+	}
+	return 0
+}
+
+func (x *OfpTableStats) GetLookupCount() uint64 {
+	if x != nil {
+		return x.LookupCount
+	}
+	return 0
+}
+
+func (x *OfpTableStats) GetMatchedCount() uint64 {
+	if x != nil {
+		return x.MatchedCount
+	}
+	return 0
+}
+
+// Body for ofp_multipart_request of type OFPMP_PORT.
+type OfpPortStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPortStatsRequest) Reset() {
+	*x = OfpPortStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[58]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortStatsRequest) ProtoMessage() {}
+
+func (x *OfpPortStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[58]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{58}
+}
+
+func (x *OfpPortStatsRequest) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+// Body of reply to OFPMP_PORT request. If a counter is unsupported, set
+// the field to all ones.
+type OfpPortStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	RxPackets     uint64                 `protobuf:"varint,2,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"` // Number of received packets.
+	TxPackets     uint64                 `protobuf:"varint,3,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"` // Number of transmitted packets.
+	RxBytes       uint64                 `protobuf:"varint,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`       // Number of received bytes.
+	TxBytes       uint64                 `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`       // Number of transmitted bytes.
+	RxDropped     uint64                 `protobuf:"varint,6,opt,name=rx_dropped,json=rxDropped,proto3" json:"rx_dropped,omitempty"` // Number of packets dropped by RX.
+	TxDropped     uint64                 `protobuf:"varint,7,opt,name=tx_dropped,json=txDropped,proto3" json:"tx_dropped,omitempty"` // Number of packets dropped by TX.
+	RxErrors      uint64                 `protobuf:"varint,8,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"`
+	TxErrors      uint64                 `protobuf:"varint,9,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
+	RxFrameErr    uint64                 `protobuf:"varint,10,opt,name=rx_frame_err,json=rxFrameErr,proto3" json:"rx_frame_err,omitempty"`  // Number of frame alignment errors.
+	RxOverErr     uint64                 `protobuf:"varint,11,opt,name=rx_over_err,json=rxOverErr,proto3" json:"rx_over_err,omitempty"`     // Number of packets with RX overrun.
+	RxCrcErr      uint64                 `protobuf:"varint,12,opt,name=rx_crc_err,json=rxCrcErr,proto3" json:"rx_crc_err,omitempty"`        // Number of CRC errors.
+	Collisions    uint64                 `protobuf:"varint,13,opt,name=collisions,proto3" json:"collisions,omitempty"`                      // Number of collisions.
+	DurationSec   uint32                 `protobuf:"varint,14,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time port has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,15,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPortStats) Reset() {
+	*x = OfpPortStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[59]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortStats) ProtoMessage() {}
+
+func (x *OfpPortStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[59]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortStats.ProtoReflect.Descriptor instead.
+func (*OfpPortStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{59}
+}
+
+func (x *OfpPortStats) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxDropped() uint64 {
+	if x != nil {
+		return x.RxDropped
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxDropped() uint64 {
+	if x != nil {
+		return x.TxDropped
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxErrors() uint64 {
+	if x != nil {
+		return x.RxErrors
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxErrors() uint64 {
+	if x != nil {
+		return x.TxErrors
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxFrameErr() uint64 {
+	if x != nil {
+		return x.RxFrameErr
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxOverErr() uint64 {
+	if x != nil {
+		return x.RxOverErr
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxCrcErr() uint64 {
+	if x != nil {
+		return x.RxCrcErr
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetCollisions() uint64 {
+	if x != nil {
+		return x.Collisions
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+// Body of OFPMP_GROUP request.
+type OfpGroupStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupId       uint32                 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // All groups if OFPG_ALL.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupStatsRequest) Reset() {
+	*x = OfpGroupStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[60]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupStatsRequest) ProtoMessage() {}
+
+func (x *OfpGroupStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[60]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{60}
+}
+
+func (x *OfpGroupStatsRequest) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+// Used in group stats replies.
+type OfpBucketCounter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PacketCount   uint64                 `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets processed by bucket.
+	ByteCount     uint64                 `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`       // Number of bytes processed by bucket.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpBucketCounter) Reset() {
+	*x = OfpBucketCounter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[61]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpBucketCounter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpBucketCounter) ProtoMessage() {}
+
+func (x *OfpBucketCounter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[61]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpBucketCounter.ProtoReflect.Descriptor instead.
+func (*OfpBucketCounter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{61}
+}
+
+func (x *OfpBucketCounter) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpBucketCounter) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+// Body of reply to OFPMP_GROUP request.
+type OfpGroupStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupId       uint32                 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // Group identifier.
+	RefCount      uint32                 `protobuf:"varint,2,opt,name=ref_count,json=refCount,proto3" json:"ref_count,omitempty"`
+	PacketCount   uint64                 `protobuf:"varint,3,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets processed by group.
+	ByteCount     uint64                 `protobuf:"varint,4,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`       // Number of bytes processed by group.
+	DurationSec   uint32                 `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time group has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	BucketStats   []*OfpBucketCounter    `protobuf:"bytes,7,rep,name=bucket_stats,json=bucketStats,proto3" json:"bucket_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupStats) Reset() {
+	*x = OfpGroupStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[62]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupStats) ProtoMessage() {}
+
+func (x *OfpGroupStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[62]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupStats.ProtoReflect.Descriptor instead.
+func (*OfpGroupStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{62}
+}
+
+func (x *OfpGroupStats) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetRefCount() uint32 {
+	if x != nil {
+		return x.RefCount
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetBucketStats() []*OfpBucketCounter {
+	if x != nil {
+		return x.BucketStats
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_GROUP_DESC request.
+type OfpGroupDesc struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          OfpGroupType           `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"` // One of OFPGT_*.
+	GroupId       uint32                 `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`          // Group identifier.
+	Buckets       []*OfpBucket           `protobuf:"bytes,3,rep,name=buckets,proto3" json:"buckets,omitempty"`                          // List of buckets - 0 or more.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupDesc) Reset() {
+	*x = OfpGroupDesc{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[63]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupDesc) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupDesc) ProtoMessage() {}
+
+func (x *OfpGroupDesc) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[63]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupDesc.ProtoReflect.Descriptor instead.
+func (*OfpGroupDesc) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{63}
+}
+
+func (x *OfpGroupDesc) GetType() OfpGroupType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpGroupType_OFPGT_ALL
+}
+
+func (x *OfpGroupDesc) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *OfpGroupDesc) GetBuckets() []*OfpBucket {
+	if x != nil {
+		return x.Buckets
+	}
+	return nil
+}
+
+type OfpGroupEntry struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Desc          *OfpGroupDesc          `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
+	Stats         *OfpGroupStats         `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupEntry) Reset() {
+	*x = OfpGroupEntry{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[64]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupEntry) ProtoMessage() {}
+
+func (x *OfpGroupEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[64]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupEntry.ProtoReflect.Descriptor instead.
+func (*OfpGroupEntry) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{64}
+}
+
+func (x *OfpGroupEntry) GetDesc() *OfpGroupDesc {
+	if x != nil {
+		return x.Desc
+	}
+	return nil
+}
+
+func (x *OfpGroupEntry) GetStats() *OfpGroupStats {
+	if x != nil {
+		return x.Stats
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_GROUP_FEATURES request. Group features.
+type OfpGroupFeatures struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Types         uint32                 `protobuf:"varint,1,opt,name=types,proto3" json:"types,omitempty"`                                 // Bitmap of (1 << OFPGT_*) values supported.
+	Capabilities  uint32                 `protobuf:"varint,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"`                   // Bitmap of OFPGFC_* capability supported.
+	MaxGroups     []uint32               `protobuf:"varint,3,rep,packed,name=max_groups,json=maxGroups,proto3" json:"max_groups,omitempty"` // Maximum number of groups for each type.
+	Actions       []uint32               `protobuf:"varint,4,rep,packed,name=actions,proto3" json:"actions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupFeatures) Reset() {
+	*x = OfpGroupFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[65]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupFeatures) ProtoMessage() {}
+
+func (x *OfpGroupFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[65]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupFeatures.ProtoReflect.Descriptor instead.
+func (*OfpGroupFeatures) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{65}
+}
+
+func (x *OfpGroupFeatures) GetTypes() uint32 {
+	if x != nil {
+		return x.Types
+	}
+	return 0
+}
+
+func (x *OfpGroupFeatures) GetCapabilities() uint32 {
+	if x != nil {
+		return x.Capabilities
+	}
+	return 0
+}
+
+func (x *OfpGroupFeatures) GetMaxGroups() []uint32 {
+	if x != nil {
+		return x.MaxGroups
+	}
+	return nil
+}
+
+func (x *OfpGroupFeatures) GetActions() []uint32 {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Body of OFPMP_METER and OFPMP_METER_CONFIG requests.
+type OfpMeterMultipartRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterId       uint32                 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"` // Meter instance, or OFPM_ALL.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterMultipartRequest) Reset() {
+	*x = OfpMeterMultipartRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[66]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterMultipartRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterMultipartRequest) ProtoMessage() {}
+
+func (x *OfpMeterMultipartRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[66]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterMultipartRequest.ProtoReflect.Descriptor instead.
+func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{66}
+}
+
+func (x *OfpMeterMultipartRequest) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+// Statistics for each meter band
+type OfpMeterBandStats struct {
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	PacketBandCount uint64                 `protobuf:"varint,1,opt,name=packet_band_count,json=packetBandCount,proto3" json:"packet_band_count,omitempty"` // Number of packets in band.
+	ByteBandCount   uint64                 `protobuf:"varint,2,opt,name=byte_band_count,json=byteBandCount,proto3" json:"byte_band_count,omitempty"`       // Number of bytes in band.
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandStats) Reset() {
+	*x = OfpMeterBandStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[67]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandStats) ProtoMessage() {}
+
+func (x *OfpMeterBandStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[67]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandStats.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{67}
+}
+
+func (x *OfpMeterBandStats) GetPacketBandCount() uint64 {
+	if x != nil {
+		return x.PacketBandCount
+	}
+	return 0
+}
+
+func (x *OfpMeterBandStats) GetByteBandCount() uint64 {
+	if x != nil {
+		return x.ByteBandCount
+	}
+	return 0
+}
+
+// Body of reply to OFPMP_METER request. Meter statistics.
+type OfpMeterStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterId       uint32                 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`                     // Meter instance.
+	FlowCount     uint32                 `protobuf:"varint,2,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`               // Number of flows bound to meter.
+	PacketInCount uint64                 `protobuf:"varint,3,opt,name=packet_in_count,json=packetInCount,proto3" json:"packet_in_count,omitempty"` // Number of packets in input.
+	ByteInCount   uint64                 `protobuf:"varint,4,opt,name=byte_in_count,json=byteInCount,proto3" json:"byte_in_count,omitempty"`       // Number of bytes in input.
+	DurationSec   uint32                 `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`         // Time meter has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	BandStats     []*OfpMeterBandStats   `protobuf:"bytes,7,rep,name=band_stats,json=bandStats,proto3" json:"band_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterStats) Reset() {
+	*x = OfpMeterStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[68]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterStats) ProtoMessage() {}
+
+func (x *OfpMeterStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[68]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterStats.ProtoReflect.Descriptor instead.
+func (*OfpMeterStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{68}
+}
+
+func (x *OfpMeterStats) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetFlowCount() uint32 {
+	if x != nil {
+		return x.FlowCount
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetPacketInCount() uint64 {
+	if x != nil {
+		return x.PacketInCount
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetByteInCount() uint64 {
+	if x != nil {
+		return x.ByteInCount
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetBandStats() []*OfpMeterBandStats {
+	if x != nil {
+		return x.BandStats
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_METER_CONFIG request. Meter configuration.
+type OfpMeterConfig struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Flags         uint32                 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`                    // All OFPMF_* that apply.
+	MeterId       uint32                 `protobuf:"varint,2,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"` // Meter instance.
+	Bands         []*OfpMeterBandHeader  `protobuf:"bytes,3,rep,name=bands,proto3" json:"bands,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterConfig) Reset() {
+	*x = OfpMeterConfig{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[69]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterConfig) ProtoMessage() {}
+
+func (x *OfpMeterConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[69]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterConfig.ProtoReflect.Descriptor instead.
+func (*OfpMeterConfig) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{69}
+}
+
+func (x *OfpMeterConfig) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMeterConfig) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+func (x *OfpMeterConfig) GetBands() []*OfpMeterBandHeader {
+	if x != nil {
+		return x.Bands
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_METER_FEATURES request. Meter features.
+type OfpMeterFeatures struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MaxMeter      uint32                 `protobuf:"varint,1,opt,name=max_meter,json=maxMeter,proto3" json:"max_meter,omitempty"`    // Maximum number of meters.
+	BandTypes     uint32                 `protobuf:"varint,2,opt,name=band_types,json=bandTypes,proto3" json:"band_types,omitempty"` // Bitmaps of (1 << OFPMBT_*) values supported.
+	Capabilities  uint32                 `protobuf:"varint,3,opt,name=capabilities,proto3" json:"capabilities,omitempty"`            // Bitmaps of "ofp_meter_flags".
+	MaxBands      uint32                 `protobuf:"varint,4,opt,name=max_bands,json=maxBands,proto3" json:"max_bands,omitempty"`    // Maximum bands per meters
+	MaxColor      uint32                 `protobuf:"varint,5,opt,name=max_color,json=maxColor,proto3" json:"max_color,omitempty"`    // Maximum color value
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterFeatures) Reset() {
+	*x = OfpMeterFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[70]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterFeatures) ProtoMessage() {}
+
+func (x *OfpMeterFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[70]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterFeatures.ProtoReflect.Descriptor instead.
+func (*OfpMeterFeatures) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{70}
+}
+
+func (x *OfpMeterFeatures) GetMaxMeter() uint32 {
+	if x != nil {
+		return x.MaxMeter
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetBandTypes() uint32 {
+	if x != nil {
+		return x.BandTypes
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetCapabilities() uint32 {
+	if x != nil {
+		return x.Capabilities
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetMaxBands() uint32 {
+	if x != nil {
+		return x.MaxBands
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetMaxColor() uint32 {
+	if x != nil {
+		return x.MaxColor
+	}
+	return 0
+}
+
+type OfpMeterEntry struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Config        *OfpMeterConfig        `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
+	Stats         *OfpMeterStats         `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterEntry) Reset() {
+	*x = OfpMeterEntry{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[71]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterEntry) ProtoMessage() {}
+
+func (x *OfpMeterEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[71]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterEntry.ProtoReflect.Descriptor instead.
+func (*OfpMeterEntry) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{71}
+}
+
+func (x *OfpMeterEntry) GetConfig() *OfpMeterConfig {
+	if x != nil {
+		return x.Config
+	}
+	return nil
+}
+
+func (x *OfpMeterEntry) GetStats() *OfpMeterStats {
+	if x != nil {
+		return x.Stats
+	}
+	return nil
+}
+
+// Body for ofp_multipart_request/reply of type OFPMP_EXPERIMENTER.
+type OfpExperimenterMultipartHeader struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter  uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	ExpType       uint32                 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	Data          []byte                 `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`                       // Experimenter-defined arbitrary additional data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpExperimenterMultipartHeader) Reset() {
+	*x = OfpExperimenterMultipartHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[72]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpExperimenterMultipartHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpExperimenterMultipartHeader) ProtoMessage() {}
+
+func (x *OfpExperimenterMultipartHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[72]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpExperimenterMultipartHeader.ProtoReflect.Descriptor instead.
+func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{72}
+}
+
+func (x *OfpExperimenterMultipartHeader) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpExperimenterMultipartHeader) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpExperimenterMultipartHeader) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Experimenter extension.
+type OfpExperimenterHeader struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;  /* Type OFPT_EXPERIMENTER. */
+	Experimenter  uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	ExpType       uint32 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	Data          []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`                       // Experimenter-defined arbitrary additional data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpExperimenterHeader) Reset() {
+	*x = OfpExperimenterHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[73]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpExperimenterHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpExperimenterHeader) ProtoMessage() {}
+
+func (x *OfpExperimenterHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[73]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpExperimenterHeader.ProtoReflect.Descriptor instead.
+func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{73}
+}
+
+func (x *OfpExperimenterHeader) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpExperimenterHeader) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpExperimenterHeader) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Common description for a queue.
+type OfpQueuePropHeader struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Property      uint32                 `protobuf:"varint,1,opt,name=property,proto3" json:"property,omitempty"` // One of OFPQT_.
+	Len           uint32                 `protobuf:"varint,2,opt,name=len,proto3" json:"len,omitempty"`           // Length of property, including this header.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropHeader) Reset() {
+	*x = OfpQueuePropHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[74]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropHeader) ProtoMessage() {}
+
+func (x *OfpQueuePropHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[74]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropHeader.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{74}
+}
+
+func (x *OfpQueuePropHeader) GetProperty() uint32 {
+	if x != nil {
+		return x.Property
+	}
+	return 0
+}
+
+func (x *OfpQueuePropHeader) GetLen() uint32 {
+	if x != nil {
+		return x.Len
+	}
+	return 0
+}
+
+// Min-Rate queue property description.
+type OfpQueuePropMinRate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PropHeader    *OfpQueuePropHeader    `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"` // prop: OFPQT_MIN, len: 16.
+	Rate          uint32                 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`                              // In 1/10 of a percent = 0;>1000 -> disabled.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropMinRate) Reset() {
+	*x = OfpQueuePropMinRate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[75]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropMinRate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropMinRate) ProtoMessage() {}
+
+func (x *OfpQueuePropMinRate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[75]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropMinRate.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{75}
+}
+
+func (x *OfpQueuePropMinRate) GetPropHeader() *OfpQueuePropHeader {
+	if x != nil {
+		return x.PropHeader
+	}
+	return nil
+}
+
+func (x *OfpQueuePropMinRate) GetRate() uint32 {
+	if x != nil {
+		return x.Rate
+	}
+	return 0
+}
+
+// Max-Rate queue property description.
+type OfpQueuePropMaxRate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PropHeader    *OfpQueuePropHeader    `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"` // prop: OFPQT_MAX, len: 16.
+	Rate          uint32                 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`                              // In 1/10 of a percent = 0;>1000 -> disabled.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropMaxRate) Reset() {
+	*x = OfpQueuePropMaxRate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[76]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropMaxRate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropMaxRate) ProtoMessage() {}
+
+func (x *OfpQueuePropMaxRate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[76]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropMaxRate.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{76}
+}
+
+func (x *OfpQueuePropMaxRate) GetPropHeader() *OfpQueuePropHeader {
+	if x != nil {
+		return x.PropHeader
+	}
+	return nil
+}
+
+func (x *OfpQueuePropMaxRate) GetRate() uint32 {
+	if x != nil {
+		return x.Rate
+	}
+	return 0
+}
+
+// Experimenter queue property description.
+type OfpQueuePropExperimenter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PropHeader    *OfpQueuePropHeader    `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"` // prop: OFPQT_EXPERIMENTER
+	Experimenter  uint32                 `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	Data          []byte                 `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` // Experimenter defined data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropExperimenter) Reset() {
+	*x = OfpQueuePropExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[77]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropExperimenter) ProtoMessage() {}
+
+func (x *OfpQueuePropExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[77]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{77}
+}
+
+func (x *OfpQueuePropExperimenter) GetPropHeader() *OfpQueuePropHeader {
+	if x != nil {
+		return x.PropHeader
+	}
+	return nil
+}
+
+func (x *OfpQueuePropExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpQueuePropExperimenter) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Full description for a queue.
+type OfpPacketQueue struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	QueueId       uint32                 `protobuf:"varint,1,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"` // id for the specific queue.
+	Port          uint32                 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`                      // Port this queue is attached to.
+	Properties    []*OfpQueuePropHeader  `protobuf:"bytes,4,rep,name=properties,proto3" json:"properties,omitempty"`           // List of properties.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPacketQueue) Reset() {
+	*x = OfpPacketQueue{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[78]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPacketQueue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPacketQueue) ProtoMessage() {}
+
+func (x *OfpPacketQueue) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[78]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPacketQueue.ProtoReflect.Descriptor instead.
+func (*OfpPacketQueue) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{78}
+}
+
+func (x *OfpPacketQueue) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+func (x *OfpPacketQueue) GetPort() uint32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+func (x *OfpPacketQueue) GetProperties() []*OfpQueuePropHeader {
+	if x != nil {
+		return x.Properties
+	}
+	return nil
+}
+
+// Query for port queue configuration.
+type OfpQueueGetConfigRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Port          uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueGetConfigRequest) Reset() {
+	*x = OfpQueueGetConfigRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[79]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueGetConfigRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueGetConfigRequest) ProtoMessage() {}
+
+func (x *OfpQueueGetConfigRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[79]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueGetConfigRequest.ProtoReflect.Descriptor instead.
+func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{79}
+}
+
+func (x *OfpQueueGetConfigRequest) GetPort() uint32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+// Queue configuration for a given port.
+type OfpQueueGetConfigReply struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Port          uint32            `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+	Queues        []*OfpPacketQueue `protobuf:"bytes,2,rep,name=queues,proto3" json:"queues,omitempty"` // List of configured queues.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueGetConfigReply) Reset() {
+	*x = OfpQueueGetConfigReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[80]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueGetConfigReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueGetConfigReply) ProtoMessage() {}
+
+func (x *OfpQueueGetConfigReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[80]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueGetConfigReply.ProtoReflect.Descriptor instead.
+func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{80}
+}
+
+func (x *OfpQueueGetConfigReply) GetPort() uint32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+func (x *OfpQueueGetConfigReply) GetQueues() []*OfpPacketQueue {
+	if x != nil {
+		return x.Queues
+	}
+	return nil
+}
+
+// OFPAT_SET_QUEUE action struct: send packets to given queue on port.
+type OfpActionSetQueue struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`                      // OFPAT_SET_QUEUE.
+	QueueId       uint32                 `protobuf:"varint,3,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"` // Queue id for the packets.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionSetQueue) Reset() {
+	*x = OfpActionSetQueue{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[81]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionSetQueue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionSetQueue) ProtoMessage() {}
+
+func (x *OfpActionSetQueue) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[81]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionSetQueue.ProtoReflect.Descriptor instead.
+func (*OfpActionSetQueue) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{81}
+}
+
+func (x *OfpActionSetQueue) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpActionSetQueue) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+type OfpQueueStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`    // All ports if OFPP_ANY.
+	QueueId       uint32                 `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"` // All queues if OFPQ_ALL.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueStatsRequest) Reset() {
+	*x = OfpQueueStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[82]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueStatsRequest) ProtoMessage() {}
+
+func (x *OfpQueueStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[82]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{82}
+}
+
+func (x *OfpQueueStatsRequest) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OfpQueueStatsRequest) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+type OfpQueueStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	QueueId       uint32                 `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`             // Queue i.d
+	TxBytes       uint64                 `protobuf:"varint,3,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`             // Number of transmitted bytes.
+	TxPackets     uint64                 `protobuf:"varint,4,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`       // Number of transmitted packets.
+	TxErrors      uint64                 `protobuf:"varint,5,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`          // Number of packets dropped due to overrun.
+	DurationSec   uint32                 `protobuf:"varint,6,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time queue has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,7,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueStats) Reset() {
+	*x = OfpQueueStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[83]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueStats) ProtoMessage() {}
+
+func (x *OfpQueueStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[83]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueStats.ProtoReflect.Descriptor instead.
+func (*OfpQueueStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{83}
+}
+
+func (x *OfpQueueStats) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetTxErrors() uint64 {
+	if x != nil {
+		return x.TxErrors
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+// Role request and reply message.
+type OfpRoleRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;        /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
+	Role          OfpControllerRole `protobuf:"varint,1,opt,name=role,proto3,enum=openflow_13.OfpControllerRole" json:"role,omitempty"`  // One of OFPCR_ROLE_*.
+	GenerationId  uint64            `protobuf:"varint,2,opt,name=generation_id,json=generationId,proto3" json:"generation_id,omitempty"` // Master Election Generation Id
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpRoleRequest) Reset() {
+	*x = OfpRoleRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[84]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpRoleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpRoleRequest) ProtoMessage() {}
+
+func (x *OfpRoleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[84]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpRoleRequest.ProtoReflect.Descriptor instead.
+func (*OfpRoleRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{84}
+}
+
+func (x *OfpRoleRequest) GetRole() OfpControllerRole {
+	if x != nil {
+		return x.Role
+	}
+	return OfpControllerRole_OFPCR_ROLE_NOCHANGE
+}
+
+func (x *OfpRoleRequest) GetGenerationId() uint64 {
+	if x != nil {
+		return x.GenerationId
+	}
+	return 0
+}
+
+// Asynchronous message configuration.
+type OfpAsyncConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;    /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
+	PacketInMask    []uint32 `protobuf:"varint,1,rep,packed,name=packet_in_mask,json=packetInMask,proto3" json:"packet_in_mask,omitempty"`          // Bitmasks of OFPR_* values.
+	PortStatusMask  []uint32 `protobuf:"varint,2,rep,packed,name=port_status_mask,json=portStatusMask,proto3" json:"port_status_mask,omitempty"`    // Bitmasks of OFPPR_* values.
+	FlowRemovedMask []uint32 `protobuf:"varint,3,rep,packed,name=flow_removed_mask,json=flowRemovedMask,proto3" json:"flow_removed_mask,omitempty"` // Bitmasks of OFPRR_* values.
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *OfpAsyncConfig) Reset() {
+	*x = OfpAsyncConfig{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[85]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAsyncConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAsyncConfig) ProtoMessage() {}
+
+func (x *OfpAsyncConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[85]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAsyncConfig.ProtoReflect.Descriptor instead.
+func (*OfpAsyncConfig) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{85}
+}
+
+func (x *OfpAsyncConfig) GetPacketInMask() []uint32 {
+	if x != nil {
+		return x.PacketInMask
+	}
+	return nil
+}
+
+func (x *OfpAsyncConfig) GetPortStatusMask() []uint32 {
+	if x != nil {
+		return x.PortStatusMask
+	}
+	return nil
+}
+
+func (x *OfpAsyncConfig) GetFlowRemovedMask() []uint32 {
+	if x != nil {
+		return x.FlowRemovedMask
+	}
+	return nil
+}
+
+type MeterModUpdate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Device.id or LogicalDevice.id
+	MeterMod      *OfpMeterMod           `protobuf:"bytes,2,opt,name=meter_mod,json=meterMod,proto3" json:"meter_mod,omitempty"`
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"` //Transaction id associated with this request.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *MeterModUpdate) Reset() {
+	*x = MeterModUpdate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[86]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MeterModUpdate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MeterModUpdate) ProtoMessage() {}
+
+func (x *MeterModUpdate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[86]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MeterModUpdate.ProtoReflect.Descriptor instead.
+func (*MeterModUpdate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{86}
+}
+
+func (x *MeterModUpdate) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *MeterModUpdate) GetMeterMod() *OfpMeterMod {
+	if x != nil {
+		return x.MeterMod
+	}
+	return nil
+}
+
+func (x *MeterModUpdate) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
+	}
+	return 0
+}
+
+type MeterStatsReply struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterStats    []*OfpMeterStats       `protobuf:"bytes,1,rep,name=meter_stats,json=meterStats,proto3" json:"meter_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *MeterStatsReply) Reset() {
+	*x = MeterStatsReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[87]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MeterStatsReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MeterStatsReply) ProtoMessage() {}
+
+func (x *MeterStatsReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[87]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MeterStatsReply.ProtoReflect.Descriptor instead.
+func (*MeterStatsReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{87}
+}
+
+func (x *MeterStatsReply) GetMeterStats() []*OfpMeterStats {
+	if x != nil {
+		return x.MeterStats
+	}
+	return nil
+}
+
+type FlowTableUpdate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Device.id or LogicalDevice.id
+	FlowMod       *OfpFlowMod            `protobuf:"bytes,2,opt,name=flow_mod,json=flowMod,proto3" json:"flow_mod,omitempty"`
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"` //Transaction id associated with this request.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowTableUpdate) Reset() {
+	*x = FlowTableUpdate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[88]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowTableUpdate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowTableUpdate) ProtoMessage() {}
+
+func (x *FlowTableUpdate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[88]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowTableUpdate.ProtoReflect.Descriptor instead.
+func (*FlowTableUpdate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{88}
+}
+
+func (x *FlowTableUpdate) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *FlowTableUpdate) GetFlowMod() *OfpFlowMod {
+	if x != nil {
+		return x.FlowMod
+	}
+	return nil
+}
+
+func (x *FlowTableUpdate) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
+	}
+	return 0
+}
+
+type FlowGroupTableUpdate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Device.id or LogicalDevice.id
+	GroupMod      *OfpGroupMod           `protobuf:"bytes,2,opt,name=group_mod,json=groupMod,proto3" json:"group_mod,omitempty"`
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"` //Transaction id associated with this request.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowGroupTableUpdate) Reset() {
+	*x = FlowGroupTableUpdate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[89]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowGroupTableUpdate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowGroupTableUpdate) ProtoMessage() {}
+
+func (x *FlowGroupTableUpdate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[89]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowGroupTableUpdate.ProtoReflect.Descriptor instead.
+func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{89}
+}
+
+func (x *FlowGroupTableUpdate) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *FlowGroupTableUpdate) GetGroupMod() *OfpGroupMod {
+	if x != nil {
+		return x.GroupMod
+	}
+	return nil
+}
+
+func (x *FlowGroupTableUpdate) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
+	}
+	return 0
+}
+
+type Flows struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OfpFlowStats        `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Flows) Reset() {
+	*x = Flows{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[90]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Flows) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Flows) ProtoMessage() {}
+
+func (x *Flows) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[90]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Flows.ProtoReflect.Descriptor instead.
+func (*Flows) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{90}
+}
+
+func (x *Flows) GetItems() []*OfpFlowStats {
+	if x != nil {
+		return x.Items
+	}
+	return nil
+}
+
+type Meters struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OfpMeterEntry       `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Meters) Reset() {
+	*x = Meters{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[91]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Meters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Meters) ProtoMessage() {}
+
+func (x *Meters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[91]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Meters.ProtoReflect.Descriptor instead.
+func (*Meters) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{91}
+}
+
+func (x *Meters) GetItems() []*OfpMeterEntry {
+	if x != nil {
+		return x.Items
+	}
+	return nil
+}
+
+type FlowGroups struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OfpGroupEntry       `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowGroups) Reset() {
+	*x = FlowGroups{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[92]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowGroups) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowGroups) ProtoMessage() {}
+
+func (x *FlowGroups) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[92]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowGroups.ProtoReflect.Descriptor instead.
+func (*FlowGroups) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{92}
+}
+
+func (x *FlowGroups) GetItems() []*OfpGroupEntry {
+	if x != nil {
+		return x.Items
+	}
+	return nil
+}
+
+type FlowChanges struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ToAdd         *Flows                 `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
+	ToRemove      *Flows                 `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowChanges) Reset() {
+	*x = FlowChanges{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[93]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowChanges) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowChanges) ProtoMessage() {}
+
+func (x *FlowChanges) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[93]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowChanges.ProtoReflect.Descriptor instead.
+func (*FlowChanges) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{93}
+}
+
+func (x *FlowChanges) GetToAdd() *Flows {
+	if x != nil {
+		return x.ToAdd
+	}
+	return nil
+}
+
+func (x *FlowChanges) GetToRemove() *Flows {
+	if x != nil {
+		return x.ToRemove
+	}
+	return nil
+}
+
+type FlowGroupChanges struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ToAdd         *FlowGroups            `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
+	ToRemove      *FlowGroups            `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
+	ToUpdate      *FlowGroups            `protobuf:"bytes,3,opt,name=to_update,json=toUpdate,proto3" json:"to_update,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowGroupChanges) Reset() {
+	*x = FlowGroupChanges{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[94]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowGroupChanges) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowGroupChanges) ProtoMessage() {}
+
+func (x *FlowGroupChanges) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[94]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowGroupChanges.ProtoReflect.Descriptor instead.
+func (*FlowGroupChanges) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{94}
+}
+
+func (x *FlowGroupChanges) GetToAdd() *FlowGroups {
+	if x != nil {
+		return x.ToAdd
+	}
+	return nil
+}
+
+func (x *FlowGroupChanges) GetToRemove() *FlowGroups {
+	if x != nil {
+		return x.ToRemove
+	}
+	return nil
+}
+
+func (x *FlowGroupChanges) GetToUpdate() *FlowGroups {
+	if x != nil {
+		return x.ToUpdate
+	}
+	return nil
+}
+
+type PacketIn struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // LogicalDevice.id
+	PacketIn      *OfpPacketIn           `protobuf:"bytes,2,opt,name=packet_in,json=packetIn,proto3" json:"packet_in,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *PacketIn) Reset() {
+	*x = PacketIn{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[95]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PacketIn) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PacketIn) ProtoMessage() {}
+
+func (x *PacketIn) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[95]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PacketIn.ProtoReflect.Descriptor instead.
+func (*PacketIn) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{95}
+}
+
+func (x *PacketIn) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *PacketIn) GetPacketIn() *OfpPacketIn {
+	if x != nil {
+		return x.PacketIn
+	}
+	return nil
+}
+
+type PacketOut struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // LogicalDevice.id
+	PacketOut     *OfpPacketOut          `protobuf:"bytes,2,opt,name=packet_out,json=packetOut,proto3" json:"packet_out,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *PacketOut) Reset() {
+	*x = PacketOut{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[96]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PacketOut) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PacketOut) ProtoMessage() {}
+
+func (x *PacketOut) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[96]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PacketOut.ProtoReflect.Descriptor instead.
+func (*PacketOut) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{96}
+}
+
+func (x *PacketOut) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *PacketOut) GetPacketOut() *OfpPacketOut {
+	if x != nil {
+		return x.PacketOut
+	}
+	return nil
+}
+
+type ChangeEvent struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Id    string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // LogicalDevice.id
+	// Types that are valid to be assigned to Event:
+	//
+	//	*ChangeEvent_PortStatus
+	//	*ChangeEvent_Error
+	//	*ChangeEvent_DeviceStatus
+	Event         isChangeEvent_Event `protobuf_oneof:"event"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ChangeEvent) Reset() {
+	*x = ChangeEvent{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[97]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ChangeEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangeEvent) ProtoMessage() {}
+
+func (x *ChangeEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[97]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangeEvent.ProtoReflect.Descriptor instead.
+func (*ChangeEvent) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{97}
+}
+
+func (x *ChangeEvent) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *ChangeEvent) GetEvent() isChangeEvent_Event {
+	if x != nil {
+		return x.Event
+	}
+	return nil
+}
+
+func (x *ChangeEvent) GetPortStatus() *OfpPortStatus {
+	if x != nil {
+		if x, ok := x.Event.(*ChangeEvent_PortStatus); ok {
+			return x.PortStatus
+		}
+	}
+	return nil
+}
+
+func (x *ChangeEvent) GetError() *OfpErrorMsg {
+	if x != nil {
+		if x, ok := x.Event.(*ChangeEvent_Error); ok {
+			return x.Error
+		}
+	}
+	return nil
+}
+
+func (x *ChangeEvent) GetDeviceStatus() *OfpDeviceStatus {
+	if x != nil {
+		if x, ok := x.Event.(*ChangeEvent_DeviceStatus); ok {
+			return x.DeviceStatus
+		}
+	}
+	return nil
+}
+
+type isChangeEvent_Event interface {
+	isChangeEvent_Event()
+}
+
+type ChangeEvent_PortStatus struct {
+	PortStatus *OfpPortStatus `protobuf:"bytes,2,opt,name=port_status,json=portStatus,proto3,oneof"`
+}
+
+type ChangeEvent_Error struct {
+	Error *OfpErrorMsg `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
+}
+
+type ChangeEvent_DeviceStatus struct {
+	DeviceStatus *OfpDeviceStatus `protobuf:"bytes,4,opt,name=device_status,json=deviceStatus,proto3,oneof"`
+}
+
+func (*ChangeEvent_PortStatus) isChangeEvent_Event() {}
+
+func (*ChangeEvent_Error) isChangeEvent_Event() {}
+
+func (*ChangeEvent_DeviceStatus) isChangeEvent_Event() {}
+
+// Additional information required to process flow at device adapters
+type FlowMetadata struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Meters associated with flow-update to adapter
+	Meters        []*OfpMeterConfig `protobuf:"bytes,1,rep,name=meters,proto3" json:"meters,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowMetadata) Reset() {
+	*x = FlowMetadata{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[98]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowMetadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowMetadata) ProtoMessage() {}
+
+func (x *FlowMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[98]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowMetadata.ProtoReflect.Descriptor instead.
+func (*FlowMetadata) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{98}
+}
+
+func (x *FlowMetadata) GetMeters() []*OfpMeterConfig {
+	if x != nil {
+		return x.Meters
+	}
+	return nil
+}
+
+var File_voltha_protos_openflow_13_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_openflow_13_proto_rawDesc = "" +
+	"\n" +
+	"\x1fvoltha_protos/openflow_13.proto\x12\vopenflow_13\x1a\x1cgoogle/api/annotations.proto\"c\n" +
+	"\n" +
+	"ofp_header\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\rR\aversion\x12)\n" +
+	"\x04type\x18\x02 \x01(\x0e2\x15.openflow_13.ofp_typeR\x04type\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\"\xab\x01\n" +
+	"\x15ofp_hello_elem_header\x124\n" +
+	"\x04type\x18\x01 \x01(\x0e2 .openflow_13.ofp_hello_elem_typeR\x04type\x12Q\n" +
+	"\rversionbitmap\x18\x02 \x01(\v2).openflow_13.ofp_hello_elem_versionbitmapH\x00R\rversionbitmapB\t\n" +
+	"\aelement\"8\n" +
+	"\x1cofp_hello_elem_versionbitmap\x12\x18\n" +
+	"\abitmaps\x18\x02 \x03(\rR\abitmaps\"K\n" +
+	"\tofp_hello\x12>\n" +
+	"\belements\x18\x01 \x03(\v2\".openflow_13.ofp_hello_elem_headerR\belements\"M\n" +
+	"\x11ofp_switch_config\x12\x14\n" +
+	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\"\n" +
+	"\rmiss_send_len\x18\x02 \x01(\rR\vmissSendLen\"B\n" +
+	"\rofp_table_mod\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x16\n" +
+	"\x06config\x18\x02 \x01(\rR\x06config\"\xa0\x02\n" +
+	"\bofp_port\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x17\n" +
+	"\ahw_addr\x18\x02 \x03(\rR\x06hwAddr\x12\x12\n" +
+	"\x04name\x18\x03 \x01(\tR\x04name\x12\x16\n" +
+	"\x06config\x18\x04 \x01(\rR\x06config\x12\x14\n" +
+	"\x05state\x18\x05 \x01(\rR\x05state\x12\x12\n" +
+	"\x04curr\x18\x06 \x01(\rR\x04curr\x12\x1e\n" +
+	"\n" +
+	"advertised\x18\a \x01(\rR\n" +
+	"advertised\x12\x1c\n" +
+	"\tsupported\x18\b \x01(\rR\tsupported\x12\x12\n" +
+	"\x04peer\x18\t \x01(\rR\x04peer\x12\x1d\n" +
+	"\n" +
+	"curr_speed\x18\n" +
+	" \x01(\rR\tcurrSpeed\x12\x1b\n" +
+	"\tmax_speed\x18\v \x01(\rR\bmaxSpeed\"\xb5\x01\n" +
+	"\x13ofp_switch_features\x12\x1f\n" +
+	"\vdatapath_id\x18\x01 \x01(\x04R\n" +
+	"datapathId\x12\x1b\n" +
+	"\tn_buffers\x18\x02 \x01(\rR\bnBuffers\x12\x19\n" +
+	"\bn_tables\x18\x03 \x01(\rR\anTables\x12!\n" +
+	"\fauxiliary_id\x18\x04 \x01(\rR\vauxiliaryId\x12\"\n" +
+	"\fcapabilities\x18\x05 \x01(\rR\fcapabilities\"r\n" +
+	"\x0fofp_port_status\x124\n" +
+	"\x06reason\x18\x01 \x01(\x0e2\x1c.openflow_13.ofp_port_reasonR\x06reason\x12)\n" +
+	"\x04desc\x18\x02 \x01(\v2\x15.openflow_13.ofp_portR\x04desc\"O\n" +
+	"\x11ofp_device_status\x12:\n" +
+	"\x06status\x18\x01 \x01(\x0e2\".openflow_13.ofp_device_connectionR\x06status\"\x8a\x01\n" +
+	"\fofp_port_mod\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x17\n" +
+	"\ahw_addr\x18\x02 \x03(\rR\x06hwAddr\x12\x16\n" +
+	"\x06config\x18\x03 \x01(\rR\x06config\x12\x12\n" +
+	"\x04mask\x18\x04 \x01(\rR\x04mask\x12\x1c\n" +
+	"\tadvertise\x18\x05 \x01(\rR\tadvertise\"w\n" +
+	"\tofp_match\x12/\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1b.openflow_13.ofp_match_typeR\x04type\x129\n" +
+	"\n" +
+	"oxm_fields\x18\x02 \x03(\v2\x1a.openflow_13.ofp_oxm_fieldR\toxmFields\"\xea\x01\n" +
+	"\rofp_oxm_field\x127\n" +
+	"\toxm_class\x18\x01 \x01(\x0e2\x1a.openflow_13.ofp_oxm_classR\boxmClass\x12=\n" +
+	"\tofb_field\x18\x04 \x01(\v2\x1e.openflow_13.ofp_oxm_ofb_fieldH\x00R\bofbField\x12X\n" +
+	"\x12experimenter_field\x18\x05 \x01(\v2'.openflow_13.ofp_oxm_experimenter_fieldH\x00R\x11experimenterFieldB\a\n" +
+	"\x05field\"\xd7\x0e\n" +
+	"\x11ofp_oxm_ofb_field\x124\n" +
+	"\x04type\x18\x01 \x01(\x0e2 .openflow_13.oxm_ofb_field_typesR\x04type\x12\x19\n" +
+	"\bhas_mask\x18\x02 \x01(\bR\ahasMask\x12\x14\n" +
+	"\x04port\x18\x03 \x01(\rH\x00R\x04port\x12%\n" +
+	"\rphysical_port\x18\x04 \x01(\rH\x00R\fphysicalPort\x12'\n" +
+	"\x0etable_metadata\x18\x05 \x01(\x04H\x00R\rtableMetadata\x12\x19\n" +
+	"\aeth_dst\x18\x06 \x01(\fH\x00R\x06ethDst\x12\x19\n" +
+	"\aeth_src\x18\a \x01(\fH\x00R\x06ethSrc\x12\x1b\n" +
+	"\beth_type\x18\b \x01(\rH\x00R\aethType\x12\x1b\n" +
+	"\bvlan_vid\x18\t \x01(\rH\x00R\avlanVid\x12\x1b\n" +
+	"\bvlan_pcp\x18\n" +
+	" \x01(\rH\x00R\avlanPcp\x12\x19\n" +
+	"\aip_dscp\x18\v \x01(\rH\x00R\x06ipDscp\x12\x17\n" +
+	"\x06ip_ecn\x18\f \x01(\rH\x00R\x05ipEcn\x12\x1b\n" +
+	"\bip_proto\x18\r \x01(\rH\x00R\aipProto\x12\x1b\n" +
+	"\bipv4_src\x18\x0e \x01(\rH\x00R\aipv4Src\x12\x1b\n" +
+	"\bipv4_dst\x18\x0f \x01(\rH\x00R\aipv4Dst\x12\x19\n" +
+	"\atcp_src\x18\x10 \x01(\rH\x00R\x06tcpSrc\x12\x19\n" +
+	"\atcp_dst\x18\x11 \x01(\rH\x00R\x06tcpDst\x12\x19\n" +
+	"\audp_src\x18\x12 \x01(\rH\x00R\x06udpSrc\x12\x19\n" +
+	"\audp_dst\x18\x13 \x01(\rH\x00R\x06udpDst\x12\x1b\n" +
+	"\bsctp_src\x18\x14 \x01(\rH\x00R\asctpSrc\x12\x1b\n" +
+	"\bsctp_dst\x18\x15 \x01(\rH\x00R\asctpDst\x12!\n" +
+	"\vicmpv4_type\x18\x16 \x01(\rH\x00R\n" +
+	"icmpv4Type\x12!\n" +
+	"\vicmpv4_code\x18\x17 \x01(\rH\x00R\n" +
+	"icmpv4Code\x12\x17\n" +
+	"\x06arp_op\x18\x18 \x01(\rH\x00R\x05arpOp\x12\x19\n" +
+	"\aarp_spa\x18\x19 \x01(\rH\x00R\x06arpSpa\x12\x19\n" +
+	"\aarp_tpa\x18\x1a \x01(\rH\x00R\x06arpTpa\x12\x19\n" +
+	"\aarp_sha\x18\x1b \x01(\fH\x00R\x06arpSha\x12\x19\n" +
+	"\aarp_tha\x18\x1c \x01(\fH\x00R\x06arpTha\x12\x1b\n" +
+	"\bipv6_src\x18\x1d \x01(\fH\x00R\aipv6Src\x12\x1b\n" +
+	"\bipv6_dst\x18\x1e \x01(\fH\x00R\aipv6Dst\x12!\n" +
+	"\vipv6_flabel\x18\x1f \x01(\rH\x00R\n" +
+	"ipv6Flabel\x12!\n" +
+	"\vicmpv6_type\x18  \x01(\rH\x00R\n" +
+	"icmpv6Type\x12!\n" +
+	"\vicmpv6_code\x18! \x01(\rH\x00R\n" +
+	"icmpv6Code\x12&\n" +
+	"\x0eipv6_nd_target\x18\" \x01(\fH\x00R\fipv6NdTarget\x12 \n" +
+	"\vipv6_nd_ssl\x18# \x01(\fH\x00R\tipv6NdSsl\x12 \n" +
+	"\vipv6_nd_tll\x18$ \x01(\fH\x00R\tipv6NdTll\x12\x1f\n" +
+	"\n" +
+	"mpls_label\x18% \x01(\rH\x00R\tmplsLabel\x12\x19\n" +
+	"\ampls_tc\x18& \x01(\rH\x00R\x06mplsTc\x12\x1b\n" +
+	"\bmpls_bos\x18' \x01(\rH\x00R\amplsBos\x12\x1b\n" +
+	"\bpbb_isid\x18( \x01(\rH\x00R\apbbIsid\x12\x1d\n" +
+	"\ttunnel_id\x18) \x01(\x04H\x00R\btunnelId\x12!\n" +
+	"\vipv6_exthdr\x18* \x01(\rH\x00R\n" +
+	"ipv6Exthdr\x120\n" +
+	"\x13table_metadata_mask\x18i \x01(\x04H\x01R\x11tableMetadataMask\x12\"\n" +
+	"\feth_dst_mask\x18j \x01(\fH\x01R\n" +
+	"ethDstMask\x12\"\n" +
+	"\feth_src_mask\x18k \x01(\fH\x01R\n" +
+	"ethSrcMask\x12$\n" +
+	"\rvlan_vid_mask\x18m \x01(\rH\x01R\vvlanVidMask\x12$\n" +
+	"\ripv4_src_mask\x18r \x01(\rH\x01R\vipv4SrcMask\x12$\n" +
+	"\ripv4_dst_mask\x18s \x01(\rH\x01R\vipv4DstMask\x12\"\n" +
+	"\farp_spa_mask\x18} \x01(\rH\x01R\n" +
+	"arpSpaMask\x12\"\n" +
+	"\farp_tpa_mask\x18~ \x01(\rH\x01R\n" +
+	"arpTpaMask\x12%\n" +
+	"\ripv6_src_mask\x18\x81\x01 \x01(\fH\x01R\vipv6SrcMask\x12%\n" +
+	"\ripv6_dst_mask\x18\x82\x01 \x01(\fH\x01R\vipv6DstMask\x12+\n" +
+	"\x10ipv6_flabel_mask\x18\x83\x01 \x01(\rH\x01R\x0eipv6FlabelMask\x12%\n" +
+	"\rpbb_isid_mask\x18\x8c\x01 \x01(\rH\x01R\vpbbIsidMask\x12'\n" +
+	"\x0etunnel_id_mask\x18\x8d\x01 \x01(\x04H\x01R\ftunnelIdMask\x12+\n" +
+	"\x10ipv6_exthdr_mask\x18\x8e\x01 \x01(\rH\x01R\x0eipv6ExthdrMaskB\a\n" +
+	"\x05valueB\x06\n" +
+	"\x04mask\"_\n" +
+	"\x1aofp_oxm_experimenter_field\x12\x1d\n" +
+	"\n" +
+	"oxm_header\x18\x01 \x01(\rR\toxmHeader\x12\"\n" +
+	"\fexperimenter\x18\x02 \x01(\rR\fexperimenter\"\xb2\x04\n" +
+	"\n" +
+	"ofp_action\x120\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1c.openflow_13.ofp_action_typeR\x04type\x128\n" +
+	"\x06output\x18\x02 \x01(\v2\x1e.openflow_13.ofp_action_outputH\x00R\x06output\x12=\n" +
+	"\bmpls_ttl\x18\x03 \x01(\v2 .openflow_13.ofp_action_mpls_ttlH\x00R\amplsTtl\x122\n" +
+	"\x04push\x18\x04 \x01(\v2\x1c.openflow_13.ofp_action_pushH\x00R\x04push\x12=\n" +
+	"\bpop_mpls\x18\x05 \x01(\v2 .openflow_13.ofp_action_pop_mplsH\x00R\apopMpls\x125\n" +
+	"\x05group\x18\x06 \x01(\v2\x1d.openflow_13.ofp_action_groupH\x00R\x05group\x127\n" +
+	"\x06nw_ttl\x18\a \x01(\v2\x1e.openflow_13.ofp_action_nw_ttlH\x00R\x05nwTtl\x12@\n" +
+	"\tset_field\x18\b \x01(\v2!.openflow_13.ofp_action_set_fieldH\x00R\bsetField\x12J\n" +
+	"\fexperimenter\x18\t \x01(\v2$.openflow_13.ofp_action_experimenterH\x00R\fexperimenterB\b\n" +
+	"\x06action\"@\n" +
+	"\x11ofp_action_output\x12\x12\n" +
+	"\x04port\x18\x01 \x01(\rR\x04port\x12\x17\n" +
+	"\amax_len\x18\x02 \x01(\rR\x06maxLen\"0\n" +
+	"\x13ofp_action_mpls_ttl\x12\x19\n" +
+	"\bmpls_ttl\x18\x01 \x01(\rR\amplsTtl\"/\n" +
+	"\x0fofp_action_push\x12\x1c\n" +
+	"\tethertype\x18\x01 \x01(\rR\tethertype\"3\n" +
+	"\x13ofp_action_pop_mpls\x12\x1c\n" +
+	"\tethertype\x18\x01 \x01(\rR\tethertype\"-\n" +
+	"\x10ofp_action_group\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\"*\n" +
+	"\x11ofp_action_nw_ttl\x12\x15\n" +
+	"\x06nw_ttl\x18\x01 \x01(\rR\x05nwTtl\"H\n" +
+	"\x14ofp_action_set_field\x120\n" +
+	"\x05field\x18\x01 \x01(\v2\x1a.openflow_13.ofp_oxm_fieldR\x05field\"Q\n" +
+	"\x17ofp_action_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\fR\x04data\"\x9c\x03\n" +
+	"\x0fofp_instruction\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\rR\x04type\x12H\n" +
+	"\n" +
+	"goto_table\x18\x02 \x01(\v2'.openflow_13.ofp_instruction_goto_tableH\x00R\tgotoTable\x12T\n" +
+	"\x0ewrite_metadata\x18\x03 \x01(\v2+.openflow_13.ofp_instruction_write_metadataH\x00R\rwriteMetadata\x12@\n" +
+	"\aactions\x18\x04 \x01(\v2$.openflow_13.ofp_instruction_actionsH\x00R\aactions\x12:\n" +
+	"\x05meter\x18\x05 \x01(\v2\".openflow_13.ofp_instruction_meterH\x00R\x05meter\x12O\n" +
+	"\fexperimenter\x18\x06 \x01(\v2).openflow_13.ofp_instruction_experimenterH\x00R\fexperimenterB\x06\n" +
+	"\x04data\"7\n" +
+	"\x1aofp_instruction_goto_table\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\"a\n" +
+	"\x1eofp_instruction_write_metadata\x12\x1a\n" +
+	"\bmetadata\x18\x01 \x01(\x04R\bmetadata\x12#\n" +
+	"\rmetadata_mask\x18\x02 \x01(\x04R\fmetadataMask\"L\n" +
+	"\x17ofp_instruction_actions\x121\n" +
+	"\aactions\x18\x01 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\"2\n" +
+	"\x15ofp_instruction_meter\x12\x19\n" +
+	"\bmeter_id\x18\x01 \x01(\rR\ameterId\"V\n" +
+	"\x1cofp_instruction_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\fR\x04data\"\xdc\x03\n" +
+	"\fofp_flow_mod\x12\x16\n" +
+	"\x06cookie\x18\x01 \x01(\x04R\x06cookie\x12\x1f\n" +
+	"\vcookie_mask\x18\x02 \x01(\x04R\n" +
+	"cookieMask\x12\x19\n" +
+	"\btable_id\x18\x03 \x01(\rR\atableId\x12;\n" +
+	"\acommand\x18\x04 \x01(\x0e2!.openflow_13.ofp_flow_mod_commandR\acommand\x12!\n" +
+	"\fidle_timeout\x18\x05 \x01(\rR\vidleTimeout\x12!\n" +
+	"\fhard_timeout\x18\x06 \x01(\rR\vhardTimeout\x12\x1a\n" +
+	"\bpriority\x18\a \x01(\rR\bpriority\x12\x1b\n" +
+	"\tbuffer_id\x18\b \x01(\rR\bbufferId\x12\x19\n" +
+	"\bout_port\x18\t \x01(\rR\aoutPort\x12\x1b\n" +
+	"\tout_group\x18\n" +
+	" \x01(\rR\boutGroup\x12\x14\n" +
+	"\x05flags\x18\v \x01(\rR\x05flags\x12,\n" +
+	"\x05match\x18\f \x01(\v2\x16.openflow_13.ofp_matchR\x05match\x12@\n" +
+	"\finstructions\x18\r \x03(\v2\x1c.openflow_13.ofp_instructionR\finstructions\"\x97\x01\n" +
+	"\n" +
+	"ofp_bucket\x12\x16\n" +
+	"\x06weight\x18\x01 \x01(\rR\x06weight\x12\x1d\n" +
+	"\n" +
+	"watch_port\x18\x02 \x01(\rR\twatchPort\x12\x1f\n" +
+	"\vwatch_group\x18\x03 \x01(\rR\n" +
+	"watchGroup\x121\n" +
+	"\aactions\x18\x04 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\"\xcc\x01\n" +
+	"\rofp_group_mod\x12<\n" +
+	"\acommand\x18\x01 \x01(\x0e2\".openflow_13.ofp_group_mod_commandR\acommand\x12/\n" +
+	"\x04type\x18\x02 \x01(\x0e2\x1b.openflow_13.ofp_group_typeR\x04type\x12\x19\n" +
+	"\bgroup_id\x18\x03 \x01(\rR\agroupId\x121\n" +
+	"\abuckets\x18\x04 \x03(\v2\x17.openflow_13.ofp_bucketR\abuckets\"\x8d\x01\n" +
+	"\x0eofp_packet_out\x12\x1b\n" +
+	"\tbuffer_id\x18\x01 \x01(\rR\bbufferId\x12\x17\n" +
+	"\ain_port\x18\x02 \x01(\rR\x06inPort\x121\n" +
+	"\aactions\x18\x03 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\x12\x12\n" +
+	"\x04data\x18\x04 \x01(\fR\x04data\"\xdc\x01\n" +
+	"\rofp_packet_in\x12\x1b\n" +
+	"\tbuffer_id\x18\x01 \x01(\rR\bbufferId\x129\n" +
+	"\x06reason\x18\x02 \x01(\x0e2!.openflow_13.ofp_packet_in_reasonR\x06reason\x12\x19\n" +
+	"\btable_id\x18\x03 \x01(\rR\atableId\x12\x16\n" +
+	"\x06cookie\x18\x04 \x01(\x04R\x06cookie\x12,\n" +
+	"\x05match\x18\x05 \x01(\v2\x16.openflow_13.ofp_matchR\x05match\x12\x12\n" +
+	"\x04data\x18\x06 \x01(\fR\x04data\"\x9d\x03\n" +
+	"\x10ofp_flow_removed\x12\x16\n" +
+	"\x06cookie\x18\x01 \x01(\x04R\x06cookie\x12\x1a\n" +
+	"\bpriority\x18\x02 \x01(\rR\bpriority\x12<\n" +
+	"\x06reason\x18\x03 \x01(\x0e2$.openflow_13.ofp_flow_removed_reasonR\x06reason\x12\x19\n" +
+	"\btable_id\x18\x04 \x01(\rR\atableId\x12!\n" +
+	"\fduration_sec\x18\x05 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x06 \x01(\rR\fdurationNsec\x12!\n" +
+	"\fidle_timeout\x18\a \x01(\rR\vidleTimeout\x12!\n" +
+	"\fhard_timeout\x18\b \x01(\rR\vhardTimeout\x12!\n" +
+	"\fpacket_count\x18\t \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\n" +
+	" \x01(\x04R\tbyteCount\x12,\n" +
+	"\x05match\x18y \x01(\v2\x16.openflow_13.ofp_matchR\x05match\"\xdc\x02\n" +
+	"\x15ofp_meter_band_header\x124\n" +
+	"\x04type\x18\x01 \x01(\x0e2 .openflow_13.ofp_meter_band_typeR\x04type\x12\x12\n" +
+	"\x04rate\x18\x02 \x01(\rR\x04rate\x12\x1d\n" +
+	"\n" +
+	"burst_size\x18\x03 \x01(\rR\tburstSize\x126\n" +
+	"\x04drop\x18\x04 \x01(\v2 .openflow_13.ofp_meter_band_dropH\x00R\x04drop\x12J\n" +
+	"\vdscp_remark\x18\x05 \x01(\v2'.openflow_13.ofp_meter_band_dscp_remarkH\x00R\n" +
+	"dscpRemark\x12N\n" +
+	"\fexperimenter\x18\x06 \x01(\v2(.openflow_13.ofp_meter_band_experimenterH\x00R\fexperimenterB\x06\n" +
+	"\x04data\"\x15\n" +
+	"\x13ofp_meter_band_drop\";\n" +
+	"\x1aofp_meter_band_dscp_remark\x12\x1d\n" +
+	"\n" +
+	"prec_level\x18\x01 \x01(\rR\tprecLevel\"A\n" +
+	"\x1bofp_meter_band_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\"\xb8\x01\n" +
+	"\rofp_meter_mod\x12<\n" +
+	"\acommand\x18\x01 \x01(\x0e2\".openflow_13.ofp_meter_mod_commandR\acommand\x12\x14\n" +
+	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x19\n" +
+	"\bmeter_id\x18\x03 \x01(\rR\ameterId\x128\n" +
+	"\x05bands\x18\x04 \x03(\v2\".openflow_13.ofp_meter_band_headerR\x05bands\"|\n" +
+	"\rofp_error_msg\x12/\n" +
+	"\x06header\x18\x01 \x01(\v2\x17.openflow_13.ofp_headerR\x06header\x12\x12\n" +
+	"\x04type\x18\x02 \x01(\rR\x04type\x12\x12\n" +
+	"\x04code\x18\x03 \x01(\rR\x04code\x12\x12\n" +
+	"\x04data\x18\x04 \x01(\fR\x04data\"\x83\x01\n" +
+	"\x1aofp_error_experimenter_msg\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\rR\x04type\x12\x19\n" +
+	"\bexp_type\x18\x02 \x01(\rR\aexpType\x12\"\n" +
+	"\fexperimenter\x18\x03 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x04 \x01(\fR\x04data\"v\n" +
+	"\x15ofp_multipart_request\x123\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1f.openflow_13.ofp_multipart_typeR\x04type\x12\x14\n" +
+	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x12\n" +
+	"\x04body\x18\x03 \x01(\fR\x04body\"t\n" +
+	"\x13ofp_multipart_reply\x123\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1f.openflow_13.ofp_multipart_typeR\x04type\x12\x14\n" +
+	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x12\n" +
+	"\x04body\x18\x03 \x01(\fR\x04body\"\x8f\x01\n" +
+	"\bofp_desc\x12\x19\n" +
+	"\bmfr_desc\x18\x01 \x01(\tR\amfrDesc\x12\x17\n" +
+	"\ahw_desc\x18\x02 \x01(\tR\x06hwDesc\x12\x17\n" +
+	"\asw_desc\x18\x03 \x01(\tR\x06swDesc\x12\x1d\n" +
+	"\n" +
+	"serial_num\x18\x04 \x01(\tR\tserialNum\x12\x17\n" +
+	"\adp_desc\x18\x05 \x01(\tR\x06dpDesc\"\xd2\x01\n" +
+	"\x16ofp_flow_stats_request\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x19\n" +
+	"\bout_port\x18\x02 \x01(\rR\aoutPort\x12\x1b\n" +
+	"\tout_group\x18\x03 \x01(\rR\boutGroup\x12\x16\n" +
+	"\x06cookie\x18\x04 \x01(\x04R\x06cookie\x12\x1f\n" +
+	"\vcookie_mask\x18\x05 \x01(\x04R\n" +
+	"cookieMask\x12,\n" +
+	"\x05match\x18\x06 \x01(\v2\x16.openflow_13.ofp_matchR\x05match\"\xc5\x03\n" +
+	"\x0eofp_flow_stats\x12\x0e\n" +
+	"\x02id\x18\x0e \x01(\x04R\x02id\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12!\n" +
+	"\fduration_sec\x18\x02 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x03 \x01(\rR\fdurationNsec\x12\x1a\n" +
+	"\bpriority\x18\x04 \x01(\rR\bpriority\x12!\n" +
+	"\fidle_timeout\x18\x05 \x01(\rR\vidleTimeout\x12!\n" +
+	"\fhard_timeout\x18\x06 \x01(\rR\vhardTimeout\x12\x14\n" +
+	"\x05flags\x18\a \x01(\rR\x05flags\x12\x16\n" +
+	"\x06cookie\x18\b \x01(\x04R\x06cookie\x12!\n" +
+	"\fpacket_count\x18\t \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\n" +
+	" \x01(\x04R\tbyteCount\x12,\n" +
+	"\x05match\x18\f \x01(\v2\x16.openflow_13.ofp_matchR\x05match\x12@\n" +
+	"\finstructions\x18\r \x03(\v2\x1c.openflow_13.ofp_instructionR\finstructions\"\xd7\x01\n" +
+	"\x1bofp_aggregate_stats_request\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x19\n" +
+	"\bout_port\x18\x02 \x01(\rR\aoutPort\x12\x1b\n" +
+	"\tout_group\x18\x03 \x01(\rR\boutGroup\x12\x16\n" +
+	"\x06cookie\x18\x04 \x01(\x04R\x06cookie\x12\x1f\n" +
+	"\vcookie_mask\x18\x05 \x01(\x04R\n" +
+	"cookieMask\x12,\n" +
+	"\x05match\x18\x06 \x01(\v2\x16.openflow_13.ofp_matchR\x05match\"|\n" +
+	"\x19ofp_aggregate_stats_reply\x12!\n" +
+	"\fpacket_count\x18\x01 \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\x02 \x01(\x04R\tbyteCount\x12\x1d\n" +
+	"\n" +
+	"flow_count\x18\x03 \x01(\rR\tflowCount\"\xed\x03\n" +
+	"\x1aofp_table_feature_property\x12<\n" +
+	"\x04type\x18\x01 \x01(\x0e2(.openflow_13.ofp_table_feature_prop_typeR\x04type\x12V\n" +
+	"\finstructions\x18\x02 \x01(\v20.openflow_13.ofp_table_feature_prop_instructionsH\x00R\finstructions\x12R\n" +
+	"\vnext_tables\x18\x03 \x01(\v2/.openflow_13.ofp_table_feature_prop_next_tablesH\x00R\n" +
+	"nextTables\x12G\n" +
+	"\aactions\x18\x04 \x01(\v2+.openflow_13.ofp_table_feature_prop_actionsH\x00R\aactions\x12;\n" +
+	"\x03oxm\x18\x05 \x01(\v2'.openflow_13.ofp_table_feature_prop_oxmH\x00R\x03oxm\x12V\n" +
+	"\fexperimenter\x18\x06 \x01(\v20.openflow_13.ofp_table_feature_prop_experimenterH\x00R\fexperimenterB\a\n" +
+	"\x05value\"g\n" +
+	"#ofp_table_feature_prop_instructions\x12@\n" +
+	"\finstructions\x18\x01 \x03(\v2\x1c.openflow_13.ofp_instructionR\finstructions\"J\n" +
+	"\"ofp_table_feature_prop_next_tables\x12$\n" +
+	"\x0enext_table_ids\x18\x01 \x03(\rR\fnextTableIds\"S\n" +
+	"\x1eofp_table_feature_prop_actions\x121\n" +
+	"\aactions\x18\x01 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\"5\n" +
+	"\x1aofp_table_feature_prop_oxm\x12\x17\n" +
+	"\aoxm_ids\x18\x03 \x03(\rR\x06oxmIds\"\x91\x01\n" +
+	"#ofp_table_feature_prop_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x02 \x01(\rR\fexperimenter\x12\x19\n" +
+	"\bexp_type\x18\x03 \x01(\rR\aexpType\x12+\n" +
+	"\x11experimenter_data\x18\x04 \x03(\rR\x10experimenterData\"\x93\x02\n" +
+	"\x12ofp_table_features\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\x12%\n" +
+	"\x0emetadata_match\x18\x03 \x01(\x04R\rmetadataMatch\x12%\n" +
+	"\x0emetadata_write\x18\x04 \x01(\x04R\rmetadataWrite\x12\x16\n" +
+	"\x06config\x18\x05 \x01(\rR\x06config\x12\x1f\n" +
+	"\vmax_entries\x18\x06 \x01(\rR\n" +
+	"maxEntries\x12G\n" +
+	"\n" +
+	"properties\x18\a \x03(\v2'.openflow_13.ofp_table_feature_propertyR\n" +
+	"properties\"\x97\x01\n" +
+	"\x0fofp_table_stats\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12!\n" +
+	"\factive_count\x18\x02 \x01(\rR\vactiveCount\x12!\n" +
+	"\flookup_count\x18\x03 \x01(\x04R\vlookupCount\x12#\n" +
+	"\rmatched_count\x18\x04 \x01(\x04R\fmatchedCount\"1\n" +
+	"\x16ofp_port_stats_request\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\"\xdd\x03\n" +
+	"\x0eofp_port_stats\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x1d\n" +
+	"\n" +
+	"rx_packets\x18\x02 \x01(\x04R\trxPackets\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\x03 \x01(\x04R\ttxPackets\x12\x19\n" +
+	"\brx_bytes\x18\x04 \x01(\x04R\arxBytes\x12\x19\n" +
+	"\btx_bytes\x18\x05 \x01(\x04R\atxBytes\x12\x1d\n" +
+	"\n" +
+	"rx_dropped\x18\x06 \x01(\x04R\trxDropped\x12\x1d\n" +
+	"\n" +
+	"tx_dropped\x18\a \x01(\x04R\ttxDropped\x12\x1b\n" +
+	"\trx_errors\x18\b \x01(\x04R\brxErrors\x12\x1b\n" +
+	"\ttx_errors\x18\t \x01(\x04R\btxErrors\x12 \n" +
+	"\frx_frame_err\x18\n" +
+	" \x01(\x04R\n" +
+	"rxFrameErr\x12\x1e\n" +
+	"\vrx_over_err\x18\v \x01(\x04R\trxOverErr\x12\x1c\n" +
+	"\n" +
+	"rx_crc_err\x18\f \x01(\x04R\brxCrcErr\x12\x1e\n" +
+	"\n" +
+	"collisions\x18\r \x01(\x04R\n" +
+	"collisions\x12!\n" +
+	"\fduration_sec\x18\x0e \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x0f \x01(\rR\fdurationNsec\"4\n" +
+	"\x17ofp_group_stats_request\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\"V\n" +
+	"\x12ofp_bucket_counter\x12!\n" +
+	"\fpacket_count\x18\x01 \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\x02 \x01(\x04R\tbyteCount\"\x97\x02\n" +
+	"\x0fofp_group_stats\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\x12\x1b\n" +
+	"\tref_count\x18\x02 \x01(\rR\brefCount\x12!\n" +
+	"\fpacket_count\x18\x03 \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\x04 \x01(\x04R\tbyteCount\x12!\n" +
+	"\fduration_sec\x18\x05 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x06 \x01(\rR\fdurationNsec\x12B\n" +
+	"\fbucket_stats\x18\a \x03(\v2\x1f.openflow_13.ofp_bucket_counterR\vbucketStats\"\x8f\x01\n" +
+	"\x0eofp_group_desc\x12/\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1b.openflow_13.ofp_group_typeR\x04type\x12\x19\n" +
+	"\bgroup_id\x18\x02 \x01(\rR\agroupId\x121\n" +
+	"\abuckets\x18\x03 \x03(\v2\x17.openflow_13.ofp_bucketR\abuckets\"v\n" +
+	"\x0fofp_group_entry\x12/\n" +
+	"\x04desc\x18\x01 \x01(\v2\x1b.openflow_13.ofp_group_descR\x04desc\x122\n" +
+	"\x05stats\x18\x02 \x01(\v2\x1c.openflow_13.ofp_group_statsR\x05stats\"\x87\x01\n" +
+	"\x12ofp_group_features\x12\x14\n" +
+	"\x05types\x18\x01 \x01(\rR\x05types\x12\"\n" +
+	"\fcapabilities\x18\x02 \x01(\rR\fcapabilities\x12\x1d\n" +
+	"\n" +
+	"max_groups\x18\x03 \x03(\rR\tmaxGroups\x12\x18\n" +
+	"\aactions\x18\x04 \x03(\rR\aactions\"8\n" +
+	"\x1bofp_meter_multipart_request\x12\x19\n" +
+	"\bmeter_id\x18\x01 \x01(\rR\ameterId\"j\n" +
+	"\x14ofp_meter_band_stats\x12*\n" +
+	"\x11packet_band_count\x18\x01 \x01(\x04R\x0fpacketBandCount\x12&\n" +
+	"\x0fbyte_band_count\x18\x02 \x01(\x04R\rbyteBandCount\"\xa1\x02\n" +
+	"\x0fofp_meter_stats\x12\x19\n" +
+	"\bmeter_id\x18\x01 \x01(\rR\ameterId\x12\x1d\n" +
+	"\n" +
+	"flow_count\x18\x02 \x01(\rR\tflowCount\x12&\n" +
+	"\x0fpacket_in_count\x18\x03 \x01(\x04R\rpacketInCount\x12\"\n" +
+	"\rbyte_in_count\x18\x04 \x01(\x04R\vbyteInCount\x12!\n" +
+	"\fduration_sec\x18\x05 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x06 \x01(\rR\fdurationNsec\x12@\n" +
+	"\n" +
+	"band_stats\x18\a \x03(\v2!.openflow_13.ofp_meter_band_statsR\tbandStats\"}\n" +
+	"\x10ofp_meter_config\x12\x14\n" +
+	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\x19\n" +
+	"\bmeter_id\x18\x02 \x01(\rR\ameterId\x128\n" +
+	"\x05bands\x18\x03 \x03(\v2\".openflow_13.ofp_meter_band_headerR\x05bands\"\xae\x01\n" +
+	"\x12ofp_meter_features\x12\x1b\n" +
+	"\tmax_meter\x18\x01 \x01(\rR\bmaxMeter\x12\x1d\n" +
+	"\n" +
+	"band_types\x18\x02 \x01(\rR\tbandTypes\x12\"\n" +
+	"\fcapabilities\x18\x03 \x01(\rR\fcapabilities\x12\x1b\n" +
+	"\tmax_bands\x18\x04 \x01(\rR\bmaxBands\x12\x1b\n" +
+	"\tmax_color\x18\x05 \x01(\rR\bmaxColor\"|\n" +
+	"\x0fofp_meter_entry\x125\n" +
+	"\x06config\x18\x01 \x01(\v2\x1d.openflow_13.ofp_meter_configR\x06config\x122\n" +
+	"\x05stats\x18\x02 \x01(\v2\x1c.openflow_13.ofp_meter_statsR\x05stats\"v\n" +
+	"!ofp_experimenter_multipart_header\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x19\n" +
+	"\bexp_type\x18\x02 \x01(\rR\aexpType\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\fR\x04data\"l\n" +
+	"\x17ofp_experimenter_header\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x19\n" +
+	"\bexp_type\x18\x02 \x01(\rR\aexpType\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\fR\x04data\"E\n" +
+	"\x15ofp_queue_prop_header\x12\x1a\n" +
+	"\bproperty\x18\x01 \x01(\rR\bproperty\x12\x10\n" +
+	"\x03len\x18\x02 \x01(\rR\x03len\"r\n" +
+	"\x17ofp_queue_prop_min_rate\x12C\n" +
+	"\vprop_header\x18\x01 \x01(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"propHeader\x12\x12\n" +
+	"\x04rate\x18\x02 \x01(\rR\x04rate\"r\n" +
+	"\x17ofp_queue_prop_max_rate\x12C\n" +
+	"\vprop_header\x18\x01 \x01(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"propHeader\x12\x12\n" +
+	"\x04rate\x18\x02 \x01(\rR\x04rate\"\x9a\x01\n" +
+	"\x1bofp_queue_prop_experimenter\x12C\n" +
+	"\vprop_header\x18\x01 \x01(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"propHeader\x12\"\n" +
+	"\fexperimenter\x18\x02 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\fR\x04data\"\x85\x01\n" +
+	"\x10ofp_packet_queue\x12\x19\n" +
+	"\bqueue_id\x18\x01 \x01(\rR\aqueueId\x12\x12\n" +
+	"\x04port\x18\x02 \x01(\rR\x04port\x12B\n" +
+	"\n" +
+	"properties\x18\x04 \x03(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"properties\"2\n" +
+	"\x1cofp_queue_get_config_request\x12\x12\n" +
+	"\x04port\x18\x01 \x01(\rR\x04port\"g\n" +
+	"\x1aofp_queue_get_config_reply\x12\x12\n" +
+	"\x04port\x18\x01 \x01(\rR\x04port\x125\n" +
+	"\x06queues\x18\x02 \x03(\v2\x1d.openflow_13.ofp_packet_queueR\x06queues\"E\n" +
+	"\x14ofp_action_set_queue\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\rR\x04type\x12\x19\n" +
+	"\bqueue_id\x18\x03 \x01(\rR\aqueueId\"M\n" +
+	"\x17ofp_queue_stats_request\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x19\n" +
+	"\bqueue_id\x18\x02 \x01(\rR\aqueueId\"\xe4\x01\n" +
+	"\x0fofp_queue_stats\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x19\n" +
+	"\bqueue_id\x18\x02 \x01(\rR\aqueueId\x12\x19\n" +
+	"\btx_bytes\x18\x03 \x01(\x04R\atxBytes\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\x04 \x01(\x04R\ttxPackets\x12\x1b\n" +
+	"\ttx_errors\x18\x05 \x01(\x04R\btxErrors\x12!\n" +
+	"\fduration_sec\x18\x06 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\a \x01(\rR\fdurationNsec\"m\n" +
+	"\x10ofp_role_request\x124\n" +
+	"\x04role\x18\x01 \x01(\x0e2 .openflow_13.ofp_controller_roleR\x04role\x12#\n" +
+	"\rgeneration_id\x18\x02 \x01(\x04R\fgenerationId\"\x8e\x01\n" +
+	"\x10ofp_async_config\x12$\n" +
+	"\x0epacket_in_mask\x18\x01 \x03(\rR\fpacketInMask\x12(\n" +
+	"\x10port_status_mask\x18\x02 \x03(\rR\x0eportStatusMask\x12*\n" +
+	"\x11flow_removed_mask\x18\x03 \x03(\rR\x0fflowRemovedMask\"k\n" +
+	"\x0eMeterModUpdate\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x127\n" +
+	"\tmeter_mod\x18\x02 \x01(\v2\x1a.openflow_13.ofp_meter_modR\bmeterMod\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\"P\n" +
+	"\x0fMeterStatsReply\x12=\n" +
+	"\vmeter_stats\x18\x01 \x03(\v2\x1c.openflow_13.ofp_meter_statsR\n" +
+	"meterStats\"i\n" +
+	"\x0fFlowTableUpdate\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x124\n" +
+	"\bflow_mod\x18\x02 \x01(\v2\x19.openflow_13.ofp_flow_modR\aflowMod\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\"q\n" +
+	"\x14FlowGroupTableUpdate\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x127\n" +
+	"\tgroup_mod\x18\x02 \x01(\v2\x1a.openflow_13.ofp_group_modR\bgroupMod\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\":\n" +
+	"\x05Flows\x121\n" +
+	"\x05items\x18\x01 \x03(\v2\x1b.openflow_13.ofp_flow_statsR\x05items\"<\n" +
+	"\x06Meters\x122\n" +
+	"\x05items\x18\x01 \x03(\v2\x1c.openflow_13.ofp_meter_entryR\x05items\"@\n" +
+	"\n" +
+	"FlowGroups\x122\n" +
+	"\x05items\x18\x01 \x03(\v2\x1c.openflow_13.ofp_group_entryR\x05items\"i\n" +
+	"\vFlowChanges\x12)\n" +
+	"\x06to_add\x18\x01 \x01(\v2\x12.openflow_13.FlowsR\x05toAdd\x12/\n" +
+	"\tto_remove\x18\x02 \x01(\v2\x12.openflow_13.FlowsR\btoRemove\"\xae\x01\n" +
+	"\x10FlowGroupChanges\x12.\n" +
+	"\x06to_add\x18\x01 \x01(\v2\x17.openflow_13.FlowGroupsR\x05toAdd\x124\n" +
+	"\tto_remove\x18\x02 \x01(\v2\x17.openflow_13.FlowGroupsR\btoRemove\x124\n" +
+	"\tto_update\x18\x03 \x01(\v2\x17.openflow_13.FlowGroupsR\btoUpdate\"S\n" +
+	"\bPacketIn\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x127\n" +
+	"\tpacket_in\x18\x02 \x01(\v2\x1a.openflow_13.ofp_packet_inR\bpacketIn\"W\n" +
+	"\tPacketOut\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12:\n" +
+	"\n" +
+	"packet_out\x18\x02 \x01(\v2\x1b.openflow_13.ofp_packet_outR\tpacketOut\"\xe2\x01\n" +
+	"\vChangeEvent\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12?\n" +
+	"\vport_status\x18\x02 \x01(\v2\x1c.openflow_13.ofp_port_statusH\x00R\n" +
+	"portStatus\x122\n" +
+	"\x05error\x18\x03 \x01(\v2\x1a.openflow_13.ofp_error_msgH\x00R\x05error\x12E\n" +
+	"\rdevice_status\x18\x04 \x01(\v2\x1e.openflow_13.ofp_device_statusH\x00R\fdeviceStatusB\a\n" +
+	"\x05event\"E\n" +
+	"\fFlowMetadata\x125\n" +
+	"\x06meters\x18\x01 \x03(\v2\x1d.openflow_13.ofp_meter_configR\x06meters*\xd5\x01\n" +
+	"\vofp_port_no\x12\x10\n" +
+	"\fOFPP_INVALID\x10\x00\x12\x10\n" +
+	"\bOFPP_MAX\x10\x80\xfe\xff\xff\a\x12\x14\n" +
+	"\fOFPP_IN_PORT\x10\xf8\xff\xff\xff\a\x12\x12\n" +
+	"\n" +
+	"OFPP_TABLE\x10\xf9\xff\xff\xff\a\x12\x13\n" +
+	"\vOFPP_NORMAL\x10\xfa\xff\xff\xff\a\x12\x12\n" +
+	"\n" +
+	"OFPP_FLOOD\x10\xfb\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPP_ALL\x10\xfc\xff\xff\xff\a\x12\x17\n" +
+	"\x0fOFPP_CONTROLLER\x10\xfd\xff\xff\xff\a\x12\x12\n" +
+	"\n" +
+	"OFPP_LOCAL\x10\xfe\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPP_ANY\x10\xff\xff\xff\xff\a*\xc8\x05\n" +
+	"\bofp_type\x12\x0e\n" +
+	"\n" +
+	"OFPT_HELLO\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OFPT_ERROR\x10\x01\x12\x15\n" +
+	"\x11OFPT_ECHO_REQUEST\x10\x02\x12\x13\n" +
+	"\x0fOFPT_ECHO_REPLY\x10\x03\x12\x15\n" +
+	"\x11OFPT_EXPERIMENTER\x10\x04\x12\x19\n" +
+	"\x15OFPT_FEATURES_REQUEST\x10\x05\x12\x17\n" +
+	"\x13OFPT_FEATURES_REPLY\x10\x06\x12\x1b\n" +
+	"\x17OFPT_GET_CONFIG_REQUEST\x10\a\x12\x19\n" +
+	"\x15OFPT_GET_CONFIG_REPLY\x10\b\x12\x13\n" +
+	"\x0fOFPT_SET_CONFIG\x10\t\x12\x12\n" +
+	"\x0eOFPT_PACKET_IN\x10\n" +
+	"\x12\x15\n" +
+	"\x11OFPT_FLOW_REMOVED\x10\v\x12\x14\n" +
+	"\x10OFPT_PORT_STATUS\x10\f\x12\x13\n" +
+	"\x0fOFPT_PACKET_OUT\x10\r\x12\x11\n" +
+	"\rOFPT_FLOW_MOD\x10\x0e\x12\x12\n" +
+	"\x0eOFPT_GROUP_MOD\x10\x0f\x12\x11\n" +
+	"\rOFPT_PORT_MOD\x10\x10\x12\x12\n" +
+	"\x0eOFPT_TABLE_MOD\x10\x11\x12\x1a\n" +
+	"\x16OFPT_MULTIPART_REQUEST\x10\x12\x12\x18\n" +
+	"\x14OFPT_MULTIPART_REPLY\x10\x13\x12\x18\n" +
+	"\x14OFPT_BARRIER_REQUEST\x10\x14\x12\x16\n" +
+	"\x12OFPT_BARRIER_REPLY\x10\x15\x12!\n" +
+	"\x1dOFPT_QUEUE_GET_CONFIG_REQUEST\x10\x16\x12\x1f\n" +
+	"\x1bOFPT_QUEUE_GET_CONFIG_REPLY\x10\x17\x12\x15\n" +
+	"\x11OFPT_ROLE_REQUEST\x10\x18\x12\x13\n" +
+	"\x0fOFPT_ROLE_REPLY\x10\x19\x12\x1a\n" +
+	"\x16OFPT_GET_ASYNC_REQUEST\x10\x1a\x12\x18\n" +
+	"\x14OFPT_GET_ASYNC_REPLY\x10\x1b\x12\x12\n" +
+	"\x0eOFPT_SET_ASYNC\x10\x1c\x12\x12\n" +
+	"\x0eOFPT_METER_MOD\x10\x1d*C\n" +
+	"\x13ofp_hello_elem_type\x12\x12\n" +
+	"\x0eOFPHET_INVALID\x10\x00\x12\x18\n" +
+	"\x14OFPHET_VERSIONBITMAP\x10\x01*e\n" +
+	"\x10ofp_config_flags\x12\x14\n" +
+	"\x10OFPC_FRAG_NORMAL\x10\x00\x12\x12\n" +
+	"\x0eOFPC_FRAG_DROP\x10\x01\x12\x13\n" +
+	"\x0fOFPC_FRAG_REASM\x10\x02\x12\x12\n" +
+	"\x0eOFPC_FRAG_MASK\x10\x03*@\n" +
+	"\x10ofp_table_config\x12\x11\n" +
+	"\rOFPTC_INVALID\x10\x00\x12\x19\n" +
+	"\x15OFPTC_DEPRECATED_MASK\x10\x03*>\n" +
+	"\tofp_table\x12\x11\n" +
+	"\rOFPTT_INVALID\x10\x00\x12\x0e\n" +
+	"\tOFPTT_MAX\x10\xfe\x01\x12\x0e\n" +
+	"\tOFPTT_ALL\x10\xff\x01*\xbb\x01\n" +
+	"\x10ofp_capabilities\x12\x10\n" +
+	"\fOFPC_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPC_FLOW_STATS\x10\x01\x12\x14\n" +
+	"\x10OFPC_TABLE_STATS\x10\x02\x12\x13\n" +
+	"\x0fOFPC_PORT_STATS\x10\x04\x12\x14\n" +
+	"\x10OFPC_GROUP_STATS\x10\b\x12\x11\n" +
+	"\rOFPC_IP_REASM\x10 \x12\x14\n" +
+	"\x10OFPC_QUEUE_STATS\x10@\x12\x16\n" +
+	"\x11OFPC_PORT_BLOCKED\x10\x80\x02*v\n" +
+	"\x0fofp_port_config\x12\x11\n" +
+	"\rOFPPC_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPPC_PORT_DOWN\x10\x01\x12\x11\n" +
+	"\rOFPPC_NO_RECV\x10\x04\x12\x10\n" +
+	"\fOFPPC_NO_FWD\x10 \x12\x16\n" +
+	"\x12OFPPC_NO_PACKET_IN\x10@*[\n" +
+	"\x0eofp_port_state\x12\x11\n" +
+	"\rOFPPS_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPPS_LINK_DOWN\x10\x01\x12\x11\n" +
+	"\rOFPPS_BLOCKED\x10\x02\x12\x0e\n" +
+	"\n" +
+	"OFPPS_LIVE\x10\x04*\xdd\x02\n" +
+	"\x11ofp_port_features\x12\x11\n" +
+	"\rOFPPF_INVALID\x10\x00\x12\x11\n" +
+	"\rOFPPF_10MB_HD\x10\x01\x12\x11\n" +
+	"\rOFPPF_10MB_FD\x10\x02\x12\x12\n" +
+	"\x0eOFPPF_100MB_HD\x10\x04\x12\x12\n" +
+	"\x0eOFPPF_100MB_FD\x10\b\x12\x10\n" +
+	"\fOFPPF_1GB_HD\x10\x10\x12\x10\n" +
+	"\fOFPPF_1GB_FD\x10 \x12\x11\n" +
+	"\rOFPPF_10GB_FD\x10@\x12\x12\n" +
+	"\rOFPPF_40GB_FD\x10\x80\x01\x12\x13\n" +
+	"\x0eOFPPF_100GB_FD\x10\x80\x02\x12\x11\n" +
+	"\fOFPPF_1TB_FD\x10\x80\x04\x12\x10\n" +
+	"\vOFPPF_OTHER\x10\x80\b\x12\x11\n" +
+	"\fOFPPF_COPPER\x10\x80\x10\x12\x10\n" +
+	"\vOFPPF_FIBER\x10\x80 \x12\x12\n" +
+	"\rOFPPF_AUTONEG\x10\x80@\x12\x11\n" +
+	"\vOFPPF_PAUSE\x10\x80\x80\x01\x12\x16\n" +
+	"\x10OFPPF_PAUSE_ASYM\x10\x80\x80\x02*D\n" +
+	"\x0fofp_port_reason\x12\r\n" +
+	"\tOFPPR_ADD\x10\x00\x12\x10\n" +
+	"\fOFPPR_DELETE\x10\x01\x12\x10\n" +
+	"\fOFPPR_MODIFY\x10\x02*F\n" +
+	"\x15ofp_device_connection\x12\x14\n" +
+	"\x10OFPDEV_CONNECTED\x10\x00\x12\x17\n" +
+	"\x13OFPDEV_DISCONNECTED\x10\x01*3\n" +
+	"\x0eofp_match_type\x12\x12\n" +
+	"\x0eOFPMT_STANDARD\x10\x00\x12\r\n" +
+	"\tOFPMT_OXM\x10\x01*k\n" +
+	"\rofp_oxm_class\x12\x10\n" +
+	"\fOFPXMC_NXM_0\x10\x00\x12\x10\n" +
+	"\fOFPXMC_NXM_1\x10\x01\x12\x1b\n" +
+	"\x15OFPXMC_OPENFLOW_BASIC\x10\x80\x80\x02\x12\x19\n" +
+	"\x13OFPXMC_EXPERIMENTER\x10\xff\xff\x03*\x90\b\n" +
+	"\x13oxm_ofb_field_types\x12\x16\n" +
+	"\x12OFPXMT_OFB_IN_PORT\x10\x00\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IN_PHY_PORT\x10\x01\x12\x17\n" +
+	"\x13OFPXMT_OFB_METADATA\x10\x02\x12\x16\n" +
+	"\x12OFPXMT_OFB_ETH_DST\x10\x03\x12\x16\n" +
+	"\x12OFPXMT_OFB_ETH_SRC\x10\x04\x12\x17\n" +
+	"\x13OFPXMT_OFB_ETH_TYPE\x10\x05\x12\x17\n" +
+	"\x13OFPXMT_OFB_VLAN_VID\x10\x06\x12\x17\n" +
+	"\x13OFPXMT_OFB_VLAN_PCP\x10\a\x12\x16\n" +
+	"\x12OFPXMT_OFB_IP_DSCP\x10\b\x12\x15\n" +
+	"\x11OFPXMT_OFB_IP_ECN\x10\t\x12\x17\n" +
+	"\x13OFPXMT_OFB_IP_PROTO\x10\n" +
+	"\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV4_SRC\x10\v\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV4_DST\x10\f\x12\x16\n" +
+	"\x12OFPXMT_OFB_TCP_SRC\x10\r\x12\x16\n" +
+	"\x12OFPXMT_OFB_TCP_DST\x10\x0e\x12\x16\n" +
+	"\x12OFPXMT_OFB_UDP_SRC\x10\x0f\x12\x16\n" +
+	"\x12OFPXMT_OFB_UDP_DST\x10\x10\x12\x17\n" +
+	"\x13OFPXMT_OFB_SCTP_SRC\x10\x11\x12\x17\n" +
+	"\x13OFPXMT_OFB_SCTP_DST\x10\x12\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV4_TYPE\x10\x13\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV4_CODE\x10\x14\x12\x15\n" +
+	"\x11OFPXMT_OFB_ARP_OP\x10\x15\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_SPA\x10\x16\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_TPA\x10\x17\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_SHA\x10\x18\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_THA\x10\x19\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV6_SRC\x10\x1a\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV6_DST\x10\x1b\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_FLABEL\x10\x1c\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV6_TYPE\x10\x1d\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV6_CODE\x10\x1e\x12\x1d\n" +
+	"\x19OFPXMT_OFB_IPV6_ND_TARGET\x10\x1f\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_ND_SLL\x10 \x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_ND_TLL\x10!\x12\x19\n" +
+	"\x15OFPXMT_OFB_MPLS_LABEL\x10\"\x12\x16\n" +
+	"\x12OFPXMT_OFB_MPLS_TC\x10#\x12\x17\n" +
+	"\x13OFPXMT_OFB_MPLS_BOS\x10$\x12\x17\n" +
+	"\x13OFPXMT_OFB_PBB_ISID\x10%\x12\x18\n" +
+	"\x14OFPXMT_OFB_TUNNEL_ID\x10&\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_EXTHDR\x10'*3\n" +
+	"\vofp_vlan_id\x12\x0f\n" +
+	"\vOFPVID_NONE\x10\x00\x12\x13\n" +
+	"\x0eOFPVID_PRESENT\x10\x80 *\xc9\x01\n" +
+	"\x14ofp_ipv6exthdr_flags\x12\x12\n" +
+	"\x0eOFPIEH_INVALID\x10\x00\x12\x11\n" +
+	"\rOFPIEH_NONEXT\x10\x01\x12\x0e\n" +
+	"\n" +
+	"OFPIEH_ESP\x10\x02\x12\x0f\n" +
+	"\vOFPIEH_AUTH\x10\x04\x12\x0f\n" +
+	"\vOFPIEH_DEST\x10\b\x12\x0f\n" +
+	"\vOFPIEH_FRAG\x10\x10\x12\x11\n" +
+	"\rOFPIEH_ROUTER\x10 \x12\x0e\n" +
+	"\n" +
+	"OFPIEH_HOP\x10@\x12\x11\n" +
+	"\fOFPIEH_UNREP\x10\x80\x01\x12\x11\n" +
+	"\fOFPIEH_UNSEQ\x10\x80\x02*\xfc\x02\n" +
+	"\x0fofp_action_type\x12\x10\n" +
+	"\fOFPAT_OUTPUT\x10\x00\x12\x16\n" +
+	"\x12OFPAT_COPY_TTL_OUT\x10\v\x12\x15\n" +
+	"\x11OFPAT_COPY_TTL_IN\x10\f\x12\x16\n" +
+	"\x12OFPAT_SET_MPLS_TTL\x10\x0f\x12\x16\n" +
+	"\x12OFPAT_DEC_MPLS_TTL\x10\x10\x12\x13\n" +
+	"\x0fOFPAT_PUSH_VLAN\x10\x11\x12\x12\n" +
+	"\x0eOFPAT_POP_VLAN\x10\x12\x12\x13\n" +
+	"\x0fOFPAT_PUSH_MPLS\x10\x13\x12\x12\n" +
+	"\x0eOFPAT_POP_MPLS\x10\x14\x12\x13\n" +
+	"\x0fOFPAT_SET_QUEUE\x10\x15\x12\x0f\n" +
+	"\vOFPAT_GROUP\x10\x16\x12\x14\n" +
+	"\x10OFPAT_SET_NW_TTL\x10\x17\x12\x14\n" +
+	"\x10OFPAT_DEC_NW_TTL\x10\x18\x12\x13\n" +
+	"\x0fOFPAT_SET_FIELD\x10\x19\x12\x12\n" +
+	"\x0eOFPAT_PUSH_PBB\x10\x1a\x12\x11\n" +
+	"\rOFPAT_POP_PBB\x10\x1b\x12\x18\n" +
+	"\x12OFPAT_EXPERIMENTER\x10\xff\xff\x03*V\n" +
+	"\x16ofp_controller_max_len\x12\x12\n" +
+	"\x0eOFPCML_INVALID\x10\x00\x12\x10\n" +
+	"\n" +
+	"OFPCML_MAX\x10\xe5\xff\x03\x12\x16\n" +
+	"\x10OFPCML_NO_BUFFER\x10\xff\xff\x03*\xcf\x01\n" +
+	"\x14ofp_instruction_type\x12\x11\n" +
+	"\rOFPIT_INVALID\x10\x00\x12\x14\n" +
+	"\x10OFPIT_GOTO_TABLE\x10\x01\x12\x18\n" +
+	"\x14OFPIT_WRITE_METADATA\x10\x02\x12\x17\n" +
+	"\x13OFPIT_WRITE_ACTIONS\x10\x03\x12\x17\n" +
+	"\x13OFPIT_APPLY_ACTIONS\x10\x04\x12\x17\n" +
+	"\x13OFPIT_CLEAR_ACTIONS\x10\x05\x12\x0f\n" +
+	"\vOFPIT_METER\x10\x06\x12\x18\n" +
+	"\x12OFPIT_EXPERIMENTER\x10\xff\xff\x03*{\n" +
+	"\x14ofp_flow_mod_command\x12\r\n" +
+	"\tOFPFC_ADD\x10\x00\x12\x10\n" +
+	"\fOFPFC_MODIFY\x10\x01\x12\x17\n" +
+	"\x13OFPFC_MODIFY_STRICT\x10\x02\x12\x10\n" +
+	"\fOFPFC_DELETE\x10\x03\x12\x17\n" +
+	"\x13OFPFC_DELETE_STRICT\x10\x04*\xa3\x01\n" +
+	"\x12ofp_flow_mod_flags\x12\x11\n" +
+	"\rOFPFF_INVALID\x10\x00\x12\x17\n" +
+	"\x13OFPFF_SEND_FLOW_REM\x10\x01\x12\x17\n" +
+	"\x13OFPFF_CHECK_OVERLAP\x10\x02\x12\x16\n" +
+	"\x12OFPFF_RESET_COUNTS\x10\x04\x12\x17\n" +
+	"\x13OFPFF_NO_PKT_COUNTS\x10\b\x12\x17\n" +
+	"\x13OFPFF_NO_BYT_COUNTS\x10\x10*S\n" +
+	"\tofp_group\x12\x10\n" +
+	"\fOFPG_INVALID\x10\x00\x12\x10\n" +
+	"\bOFPG_MAX\x10\x80\xfe\xff\xff\a\x12\x10\n" +
+	"\bOFPG_ALL\x10\xfc\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPG_ANY\x10\xff\xff\xff\xff\a*J\n" +
+	"\x15ofp_group_mod_command\x12\r\n" +
+	"\tOFPGC_ADD\x10\x00\x12\x10\n" +
+	"\fOFPGC_MODIFY\x10\x01\x12\x10\n" +
+	"\fOFPGC_DELETE\x10\x02*S\n" +
+	"\x0eofp_group_type\x12\r\n" +
+	"\tOFPGT_ALL\x10\x00\x12\x10\n" +
+	"\fOFPGT_SELECT\x10\x01\x12\x12\n" +
+	"\x0eOFPGT_INDIRECT\x10\x02\x12\f\n" +
+	"\bOFPGT_FF\x10\x03*P\n" +
+	"\x14ofp_packet_in_reason\x12\x11\n" +
+	"\rOFPR_NO_MATCH\x10\x00\x12\x0f\n" +
+	"\vOFPR_ACTION\x10\x01\x12\x14\n" +
+	"\x10OFPR_INVALID_TTL\x10\x02*\x8b\x01\n" +
+	"\x17ofp_flow_removed_reason\x12\x16\n" +
+	"\x12OFPRR_IDLE_TIMEOUT\x10\x00\x12\x16\n" +
+	"\x12OFPRR_HARD_TIMEOUT\x10\x01\x12\x10\n" +
+	"\fOFPRR_DELETE\x10\x02\x12\x16\n" +
+	"\x12OFPRR_GROUP_DELETE\x10\x03\x12\x16\n" +
+	"\x12OFPRR_METER_DELETE\x10\x04*n\n" +
+	"\tofp_meter\x12\r\n" +
+	"\tOFPM_ZERO\x10\x00\x12\x10\n" +
+	"\bOFPM_MAX\x10\x80\x80\xfc\xff\a\x12\x15\n" +
+	"\rOFPM_SLOWPATH\x10\xfd\xff\xff\xff\a\x12\x17\n" +
+	"\x0fOFPM_CONTROLLER\x10\xfe\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPM_ALL\x10\xff\xff\xff\xff\a*m\n" +
+	"\x13ofp_meter_band_type\x12\x12\n" +
+	"\x0eOFPMBT_INVALID\x10\x00\x12\x0f\n" +
+	"\vOFPMBT_DROP\x10\x01\x12\x16\n" +
+	"\x12OFPMBT_DSCP_REMARK\x10\x02\x12\x19\n" +
+	"\x13OFPMBT_EXPERIMENTER\x10\xff\xff\x03*J\n" +
+	"\x15ofp_meter_mod_command\x12\r\n" +
+	"\tOFPMC_ADD\x10\x00\x12\x10\n" +
+	"\fOFPMC_MODIFY\x10\x01\x12\x10\n" +
+	"\fOFPMC_DELETE\x10\x02*g\n" +
+	"\x0fofp_meter_flags\x12\x11\n" +
+	"\rOFPMF_INVALID\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OFPMF_KBPS\x10\x01\x12\x0f\n" +
+	"\vOFPMF_PKTPS\x10\x02\x12\x0f\n" +
+	"\vOFPMF_BURST\x10\x04\x12\x0f\n" +
+	"\vOFPMF_STATS\x10\b*\xa4\x03\n" +
+	"\x0eofp_error_type\x12\x16\n" +
+	"\x12OFPET_HELLO_FAILED\x10\x00\x12\x15\n" +
+	"\x11OFPET_BAD_REQUEST\x10\x01\x12\x14\n" +
+	"\x10OFPET_BAD_ACTION\x10\x02\x12\x19\n" +
+	"\x15OFPET_BAD_INSTRUCTION\x10\x03\x12\x13\n" +
+	"\x0fOFPET_BAD_MATCH\x10\x04\x12\x19\n" +
+	"\x15OFPET_FLOW_MOD_FAILED\x10\x05\x12\x1a\n" +
+	"\x16OFPET_GROUP_MOD_FAILED\x10\x06\x12\x19\n" +
+	"\x15OFPET_PORT_MOD_FAILED\x10\a\x12\x1a\n" +
+	"\x16OFPET_TABLE_MOD_FAILED\x10\b\x12\x19\n" +
+	"\x15OFPET_QUEUE_OP_FAILED\x10\t\x12\x1e\n" +
+	"\x1aOFPET_SWITCH_CONFIG_FAILED\x10\n" +
+	"\x12\x1d\n" +
+	"\x19OFPET_ROLE_REQUEST_FAILED\x10\v\x12\x1a\n" +
+	"\x16OFPET_METER_MOD_FAILED\x10\f\x12\x1f\n" +
+	"\x1bOFPET_TABLE_FEATURES_FAILED\x10\r\x12\x18\n" +
+	"\x12OFPET_EXPERIMENTER\x10\xff\xff\x03*B\n" +
+	"\x15ofp_hello_failed_code\x12\x17\n" +
+	"\x13OFPHFC_INCOMPATIBLE\x10\x00\x12\x10\n" +
+	"\fOFPHFC_EPERM\x10\x01*\xed\x02\n" +
+	"\x14ofp_bad_request_code\x12\x16\n" +
+	"\x12OFPBRC_BAD_VERSION\x10\x00\x12\x13\n" +
+	"\x0fOFPBRC_BAD_TYPE\x10\x01\x12\x18\n" +
+	"\x14OFPBRC_BAD_MULTIPART\x10\x02\x12\x1b\n" +
+	"\x17OFPBRC_BAD_EXPERIMENTER\x10\x03\x12\x17\n" +
+	"\x13OFPBRC_BAD_EXP_TYPE\x10\x04\x12\x10\n" +
+	"\fOFPBRC_EPERM\x10\x05\x12\x12\n" +
+	"\x0eOFPBRC_BAD_LEN\x10\x06\x12\x17\n" +
+	"\x13OFPBRC_BUFFER_EMPTY\x10\a\x12\x19\n" +
+	"\x15OFPBRC_BUFFER_UNKNOWN\x10\b\x12\x17\n" +
+	"\x13OFPBRC_BAD_TABLE_ID\x10\t\x12\x13\n" +
+	"\x0fOFPBRC_IS_SLAVE\x10\n" +
+	"\x12\x13\n" +
+	"\x0fOFPBRC_BAD_PORT\x10\v\x12\x15\n" +
+	"\x11OFPBRC_BAD_PACKET\x10\f\x12$\n" +
+	" OFPBRC_MULTIPART_BUFFER_OVERFLOW\x10\r*\x9c\x03\n" +
+	"\x13ofp_bad_action_code\x12\x13\n" +
+	"\x0fOFPBAC_BAD_TYPE\x10\x00\x12\x12\n" +
+	"\x0eOFPBAC_BAD_LEN\x10\x01\x12\x1b\n" +
+	"\x17OFPBAC_BAD_EXPERIMENTER\x10\x02\x12\x17\n" +
+	"\x13OFPBAC_BAD_EXP_TYPE\x10\x03\x12\x17\n" +
+	"\x13OFPBAC_BAD_OUT_PORT\x10\x04\x12\x17\n" +
+	"\x13OFPBAC_BAD_ARGUMENT\x10\x05\x12\x10\n" +
+	"\fOFPBAC_EPERM\x10\x06\x12\x13\n" +
+	"\x0fOFPBAC_TOO_MANY\x10\a\x12\x14\n" +
+	"\x10OFPBAC_BAD_QUEUE\x10\b\x12\x18\n" +
+	"\x14OFPBAC_BAD_OUT_GROUP\x10\t\x12\x1d\n" +
+	"\x19OFPBAC_MATCH_INCONSISTENT\x10\n" +
+	"\x12\x1c\n" +
+	"\x18OFPBAC_UNSUPPORTED_ORDER\x10\v\x12\x12\n" +
+	"\x0eOFPBAC_BAD_TAG\x10\f\x12\x17\n" +
+	"\x13OFPBAC_BAD_SET_TYPE\x10\r\x12\x16\n" +
+	"\x12OFPBAC_BAD_SET_LEN\x10\x0e\x12\x1b\n" +
+	"\x17OFPBAC_BAD_SET_ARGUMENT\x10\x0f*\xfa\x01\n" +
+	"\x18ofp_bad_instruction_code\x12\x17\n" +
+	"\x13OFPBIC_UNKNOWN_INST\x10\x00\x12\x15\n" +
+	"\x11OFPBIC_UNSUP_INST\x10\x01\x12\x17\n" +
+	"\x13OFPBIC_BAD_TABLE_ID\x10\x02\x12\x19\n" +
+	"\x15OFPBIC_UNSUP_METADATA\x10\x03\x12\x1e\n" +
+	"\x1aOFPBIC_UNSUP_METADATA_MASK\x10\x04\x12\x1b\n" +
+	"\x17OFPBIC_BAD_EXPERIMENTER\x10\x05\x12\x17\n" +
+	"\x13OFPBIC_BAD_EXP_TYPE\x10\x06\x12\x12\n" +
+	"\x0eOFPBIC_BAD_LEN\x10\a\x12\x10\n" +
+	"\fOFPBIC_EPERM\x10\b*\xa5\x02\n" +
+	"\x12ofp_bad_match_code\x12\x13\n" +
+	"\x0fOFPBMC_BAD_TYPE\x10\x00\x12\x12\n" +
+	"\x0eOFPBMC_BAD_LEN\x10\x01\x12\x12\n" +
+	"\x0eOFPBMC_BAD_TAG\x10\x02\x12\x1b\n" +
+	"\x17OFPBMC_BAD_DL_ADDR_MASK\x10\x03\x12\x1b\n" +
+	"\x17OFPBMC_BAD_NW_ADDR_MASK\x10\x04\x12\x18\n" +
+	"\x14OFPBMC_BAD_WILDCARDS\x10\x05\x12\x14\n" +
+	"\x10OFPBMC_BAD_FIELD\x10\x06\x12\x14\n" +
+	"\x10OFPBMC_BAD_VALUE\x10\a\x12\x13\n" +
+	"\x0fOFPBMC_BAD_MASK\x10\b\x12\x15\n" +
+	"\x11OFPBMC_BAD_PREREQ\x10\t\x12\x14\n" +
+	"\x10OFPBMC_DUP_FIELD\x10\n" +
+	"\x12\x10\n" +
+	"\fOFPBMC_EPERM\x10\v*\xd2\x01\n" +
+	"\x18ofp_flow_mod_failed_code\x12\x13\n" +
+	"\x0fOFPFMFC_UNKNOWN\x10\x00\x12\x16\n" +
+	"\x12OFPFMFC_TABLE_FULL\x10\x01\x12\x18\n" +
+	"\x14OFPFMFC_BAD_TABLE_ID\x10\x02\x12\x13\n" +
+	"\x0fOFPFMFC_OVERLAP\x10\x03\x12\x11\n" +
+	"\rOFPFMFC_EPERM\x10\x04\x12\x17\n" +
+	"\x13OFPFMFC_BAD_TIMEOUT\x10\x05\x12\x17\n" +
+	"\x13OFPFMFC_BAD_COMMAND\x10\x06\x12\x15\n" +
+	"\x11OFPFMFC_BAD_FLAGS\x10\a*\xa1\x03\n" +
+	"\x19ofp_group_mod_failed_code\x12\x18\n" +
+	"\x14OFPGMFC_GROUP_EXISTS\x10\x00\x12\x19\n" +
+	"\x15OFPGMFC_INVALID_GROUP\x10\x01\x12\x1e\n" +
+	"\x1aOFPGMFC_WEIGHT_UNSUPPORTED\x10\x02\x12\x19\n" +
+	"\x15OFPGMFC_OUT_OF_GROUPS\x10\x03\x12\x1a\n" +
+	"\x16OFPGMFC_OUT_OF_BUCKETS\x10\x04\x12 \n" +
+	"\x1cOFPGMFC_CHAINING_UNSUPPORTED\x10\x05\x12\x1d\n" +
+	"\x19OFPGMFC_WATCH_UNSUPPORTED\x10\x06\x12\x10\n" +
+	"\fOFPGMFC_LOOP\x10\a\x12\x19\n" +
+	"\x15OFPGMFC_UNKNOWN_GROUP\x10\b\x12\x19\n" +
+	"\x15OFPGMFC_CHAINED_GROUP\x10\t\x12\x14\n" +
+	"\x10OFPGMFC_BAD_TYPE\x10\n" +
+	"\x12\x17\n" +
+	"\x13OFPGMFC_BAD_COMMAND\x10\v\x12\x16\n" +
+	"\x12OFPGMFC_BAD_BUCKET\x10\f\x12\x15\n" +
+	"\x11OFPGMFC_BAD_WATCH\x10\r\x12\x11\n" +
+	"\rOFPGMFC_EPERM\x10\x0e*\x8f\x01\n" +
+	"\x18ofp_port_mod_failed_code\x12\x14\n" +
+	"\x10OFPPMFC_BAD_PORT\x10\x00\x12\x17\n" +
+	"\x13OFPPMFC_BAD_HW_ADDR\x10\x01\x12\x16\n" +
+	"\x12OFPPMFC_BAD_CONFIG\x10\x02\x12\x19\n" +
+	"\x15OFPPMFC_BAD_ADVERTISE\x10\x03\x12\x11\n" +
+	"\rOFPPMFC_EPERM\x10\x04*]\n" +
+	"\x19ofp_table_mod_failed_code\x12\x15\n" +
+	"\x11OFPTMFC_BAD_TABLE\x10\x00\x12\x16\n" +
+	"\x12OFPTMFC_BAD_CONFIG\x10\x01\x12\x11\n" +
+	"\rOFPTMFC_EPERM\x10\x02*Z\n" +
+	"\x18ofp_queue_op_failed_code\x12\x14\n" +
+	"\x10OFPQOFC_BAD_PORT\x10\x00\x12\x15\n" +
+	"\x11OFPQOFC_BAD_QUEUE\x10\x01\x12\x11\n" +
+	"\rOFPQOFC_EPERM\x10\x02*^\n" +
+	"\x1dofp_switch_config_failed_code\x12\x15\n" +
+	"\x11OFPSCFC_BAD_FLAGS\x10\x00\x12\x13\n" +
+	"\x0fOFPSCFC_BAD_LEN\x10\x01\x12\x11\n" +
+	"\rOFPSCFC_EPERM\x10\x02*Z\n" +
+	"\x1cofp_role_request_failed_code\x12\x11\n" +
+	"\rOFPRRFC_STALE\x10\x00\x12\x11\n" +
+	"\rOFPRRFC_UNSUP\x10\x01\x12\x14\n" +
+	"\x10OFPRRFC_BAD_ROLE\x10\x02*\xc5\x02\n" +
+	"\x19ofp_meter_mod_failed_code\x12\x13\n" +
+	"\x0fOFPMMFC_UNKNOWN\x10\x00\x12\x18\n" +
+	"\x14OFPMMFC_METER_EXISTS\x10\x01\x12\x19\n" +
+	"\x15OFPMMFC_INVALID_METER\x10\x02\x12\x19\n" +
+	"\x15OFPMMFC_UNKNOWN_METER\x10\x03\x12\x17\n" +
+	"\x13OFPMMFC_BAD_COMMAND\x10\x04\x12\x15\n" +
+	"\x11OFPMMFC_BAD_FLAGS\x10\x05\x12\x14\n" +
+	"\x10OFPMMFC_BAD_RATE\x10\x06\x12\x15\n" +
+	"\x11OFPMMFC_BAD_BURST\x10\a\x12\x14\n" +
+	"\x10OFPMMFC_BAD_BAND\x10\b\x12\x1b\n" +
+	"\x17OFPMMFC_BAD_BAND_DETAIL\x10\t\x12\x19\n" +
+	"\x15OFPMMFC_OUT_OF_METERS\x10\n" +
+	"\x12\x18\n" +
+	"\x14OFPMMFC_OUT_OF_BANDS\x10\v*\xa9\x01\n" +
+	"\x1eofp_table_features_failed_code\x12\x15\n" +
+	"\x11OFPTFFC_BAD_TABLE\x10\x00\x12\x18\n" +
+	"\x14OFPTFFC_BAD_METADATA\x10\x01\x12\x14\n" +
+	"\x10OFPTFFC_BAD_TYPE\x10\x02\x12\x13\n" +
+	"\x0fOFPTFFC_BAD_LEN\x10\x03\x12\x18\n" +
+	"\x14OFPTFFC_BAD_ARGUMENT\x10\x04\x12\x11\n" +
+	"\rOFPTFFC_EPERM\x10\x05*\xce\x02\n" +
+	"\x12ofp_multipart_type\x12\x0e\n" +
+	"\n" +
+	"OFPMP_DESC\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OFPMP_FLOW\x10\x01\x12\x13\n" +
+	"\x0fOFPMP_AGGREGATE\x10\x02\x12\x0f\n" +
+	"\vOFPMP_TABLE\x10\x03\x12\x14\n" +
+	"\x10OFPMP_PORT_STATS\x10\x04\x12\x0f\n" +
+	"\vOFPMP_QUEUE\x10\x05\x12\x0f\n" +
+	"\vOFPMP_GROUP\x10\x06\x12\x14\n" +
+	"\x10OFPMP_GROUP_DESC\x10\a\x12\x18\n" +
+	"\x14OFPMP_GROUP_FEATURES\x10\b\x12\x0f\n" +
+	"\vOFPMP_METER\x10\t\x12\x16\n" +
+	"\x12OFPMP_METER_CONFIG\x10\n" +
+	"\x12\x18\n" +
+	"\x14OFPMP_METER_FEATURES\x10\v\x12\x18\n" +
+	"\x14OFPMP_TABLE_FEATURES\x10\f\x12\x13\n" +
+	"\x0fOFPMP_PORT_DESC\x10\r\x12\x18\n" +
+	"\x12OFPMP_EXPERIMENTER\x10\xff\xff\x03*J\n" +
+	"\x1bofp_multipart_request_flags\x12\x16\n" +
+	"\x12OFPMPF_REQ_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPMPF_REQ_MORE\x10\x01*L\n" +
+	"\x19ofp_multipart_reply_flags\x12\x18\n" +
+	"\x14OFPMPF_REPLY_INVALID\x10\x00\x12\x15\n" +
+	"\x11OFPMPF_REPLY_MORE\x10\x01*\xe4\x03\n" +
+	"\x1bofp_table_feature_prop_type\x12\x18\n" +
+	"\x14OFPTFPT_INSTRUCTIONS\x10\x00\x12\x1d\n" +
+	"\x19OFPTFPT_INSTRUCTIONS_MISS\x10\x01\x12\x17\n" +
+	"\x13OFPTFPT_NEXT_TABLES\x10\x02\x12\x1c\n" +
+	"\x18OFPTFPT_NEXT_TABLES_MISS\x10\x03\x12\x19\n" +
+	"\x15OFPTFPT_WRITE_ACTIONS\x10\x04\x12\x1e\n" +
+	"\x1aOFPTFPT_WRITE_ACTIONS_MISS\x10\x05\x12\x19\n" +
+	"\x15OFPTFPT_APPLY_ACTIONS\x10\x06\x12\x1e\n" +
+	"\x1aOFPTFPT_APPLY_ACTIONS_MISS\x10\a\x12\x11\n" +
+	"\rOFPTFPT_MATCH\x10\b\x12\x15\n" +
+	"\x11OFPTFPT_WILDCARDS\x10\n" +
+	"\x12\x1a\n" +
+	"\x16OFPTFPT_WRITE_SETFIELD\x10\f\x12\x1f\n" +
+	"\x1bOFPTFPT_WRITE_SETFIELD_MISS\x10\r\x12\x1a\n" +
+	"\x16OFPTFPT_APPLY_SETFIELD\x10\x0e\x12\x1f\n" +
+	"\x1bOFPTFPT_APPLY_SETFIELD_MISS\x10\x0f\x12\x1a\n" +
+	"\x14OFPTFPT_EXPERIMENTER\x10\xfe\xff\x03\x12\x1f\n" +
+	"\x19OFPTFPT_EXPERIMENTER_MISS\x10\xff\xff\x03*\x93\x01\n" +
+	"\x16ofp_group_capabilities\x12\x12\n" +
+	"\x0eOFPGFC_INVALID\x10\x00\x12\x18\n" +
+	"\x14OFPGFC_SELECT_WEIGHT\x10\x01\x12\x1a\n" +
+	"\x16OFPGFC_SELECT_LIVENESS\x10\x02\x12\x13\n" +
+	"\x0fOFPGFC_CHAINING\x10\x04\x12\x1a\n" +
+	"\x16OFPGFC_CHAINING_CHECKS\x10\b*k\n" +
+	"\x14ofp_queue_properties\x12\x11\n" +
+	"\rOFPQT_INVALID\x10\x00\x12\x12\n" +
+	"\x0eOFPQT_MIN_RATE\x10\x01\x12\x12\n" +
+	"\x0eOFPQT_MAX_RATE\x10\x02\x12\x18\n" +
+	"\x12OFPQT_EXPERIMENTER\x10\xff\xff\x03*q\n" +
+	"\x13ofp_controller_role\x12\x17\n" +
+	"\x13OFPCR_ROLE_NOCHANGE\x10\x00\x12\x14\n" +
+	"\x10OFPCR_ROLE_EQUAL\x10\x01\x12\x15\n" +
+	"\x11OFPCR_ROLE_MASTER\x10\x02\x12\x14\n" +
+	"\x10OFPCR_ROLE_SLAVE\x10\x03BU\n" +
+	"\x1eorg.opencord.voltha.openflow13Z3github.com/opencord/voltha-protos/v5/go/openflow_13b\x06proto3"
+
+var (
+	file_voltha_protos_openflow_13_proto_rawDescOnce sync.Once
+	file_voltha_protos_openflow_13_proto_rawDescData []byte
+)
+
+func file_voltha_protos_openflow_13_proto_rawDescGZIP() []byte {
+	file_voltha_protos_openflow_13_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_openflow_13_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_openflow_13_proto_rawDesc), len(file_voltha_protos_openflow_13_proto_rawDesc)))
+	})
+	return file_voltha_protos_openflow_13_proto_rawDescData
+}
+
+var file_voltha_protos_openflow_13_proto_enumTypes = make([]protoimpl.EnumInfo, 53)
+var file_voltha_protos_openflow_13_proto_msgTypes = make([]protoimpl.MessageInfo, 99)
+var file_voltha_protos_openflow_13_proto_goTypes = []any{
+	(OfpPortNo)(0),                          // 0: openflow_13.ofp_port_no
+	(OfpType)(0),                            // 1: openflow_13.ofp_type
+	(OfpHelloElemType)(0),                   // 2: openflow_13.ofp_hello_elem_type
+	(OfpConfigFlags)(0),                     // 3: openflow_13.ofp_config_flags
+	(OfpTableConfig)(0),                     // 4: openflow_13.ofp_table_config
+	(OfpTable)(0),                           // 5: openflow_13.ofp_table
+	(OfpCapabilities)(0),                    // 6: openflow_13.ofp_capabilities
+	(OfpPortConfig)(0),                      // 7: openflow_13.ofp_port_config
+	(OfpPortState)(0),                       // 8: openflow_13.ofp_port_state
+	(OfpPortFeatures)(0),                    // 9: openflow_13.ofp_port_features
+	(OfpPortReason)(0),                      // 10: openflow_13.ofp_port_reason
+	(OfpDeviceConnection)(0),                // 11: openflow_13.ofp_device_connection
+	(OfpMatchType)(0),                       // 12: openflow_13.ofp_match_type
+	(OfpOxmClass)(0),                        // 13: openflow_13.ofp_oxm_class
+	(OxmOfbFieldTypes)(0),                   // 14: openflow_13.oxm_ofb_field_types
+	(OfpVlanId)(0),                          // 15: openflow_13.ofp_vlan_id
+	(OfpIpv6ExthdrFlags)(0),                 // 16: openflow_13.ofp_ipv6exthdr_flags
+	(OfpActionType)(0),                      // 17: openflow_13.ofp_action_type
+	(OfpControllerMaxLen)(0),                // 18: openflow_13.ofp_controller_max_len
+	(OfpInstructionType)(0),                 // 19: openflow_13.ofp_instruction_type
+	(OfpFlowModCommand)(0),                  // 20: openflow_13.ofp_flow_mod_command
+	(OfpFlowModFlags)(0),                    // 21: openflow_13.ofp_flow_mod_flags
+	(OfpGroup)(0),                           // 22: openflow_13.ofp_group
+	(OfpGroupModCommand)(0),                 // 23: openflow_13.ofp_group_mod_command
+	(OfpGroupType)(0),                       // 24: openflow_13.ofp_group_type
+	(OfpPacketInReason)(0),                  // 25: openflow_13.ofp_packet_in_reason
+	(OfpFlowRemovedReason)(0),               // 26: openflow_13.ofp_flow_removed_reason
+	(OfpMeter)(0),                           // 27: openflow_13.ofp_meter
+	(OfpMeterBandType)(0),                   // 28: openflow_13.ofp_meter_band_type
+	(OfpMeterModCommand)(0),                 // 29: openflow_13.ofp_meter_mod_command
+	(OfpMeterFlags)(0),                      // 30: openflow_13.ofp_meter_flags
+	(OfpErrorType)(0),                       // 31: openflow_13.ofp_error_type
+	(OfpHelloFailedCode)(0),                 // 32: openflow_13.ofp_hello_failed_code
+	(OfpBadRequestCode)(0),                  // 33: openflow_13.ofp_bad_request_code
+	(OfpBadActionCode)(0),                   // 34: openflow_13.ofp_bad_action_code
+	(OfpBadInstructionCode)(0),              // 35: openflow_13.ofp_bad_instruction_code
+	(OfpBadMatchCode)(0),                    // 36: openflow_13.ofp_bad_match_code
+	(OfpFlowModFailedCode)(0),               // 37: openflow_13.ofp_flow_mod_failed_code
+	(OfpGroupModFailedCode)(0),              // 38: openflow_13.ofp_group_mod_failed_code
+	(OfpPortModFailedCode)(0),               // 39: openflow_13.ofp_port_mod_failed_code
+	(OfpTableModFailedCode)(0),              // 40: openflow_13.ofp_table_mod_failed_code
+	(OfpQueueOpFailedCode)(0),               // 41: openflow_13.ofp_queue_op_failed_code
+	(OfpSwitchConfigFailedCode)(0),          // 42: openflow_13.ofp_switch_config_failed_code
+	(OfpRoleRequestFailedCode)(0),           // 43: openflow_13.ofp_role_request_failed_code
+	(OfpMeterModFailedCode)(0),              // 44: openflow_13.ofp_meter_mod_failed_code
+	(OfpTableFeaturesFailedCode)(0),         // 45: openflow_13.ofp_table_features_failed_code
+	(OfpMultipartType)(0),                   // 46: openflow_13.ofp_multipart_type
+	(OfpMultipartRequestFlags)(0),           // 47: openflow_13.ofp_multipart_request_flags
+	(OfpMultipartReplyFlags)(0),             // 48: openflow_13.ofp_multipart_reply_flags
+	(OfpTableFeaturePropType)(0),            // 49: openflow_13.ofp_table_feature_prop_type
+	(OfpGroupCapabilities)(0),               // 50: openflow_13.ofp_group_capabilities
+	(OfpQueueProperties)(0),                 // 51: openflow_13.ofp_queue_properties
+	(OfpControllerRole)(0),                  // 52: openflow_13.ofp_controller_role
+	(*OfpHeader)(nil),                       // 53: openflow_13.ofp_header
+	(*OfpHelloElemHeader)(nil),              // 54: openflow_13.ofp_hello_elem_header
+	(*OfpHelloElemVersionbitmap)(nil),       // 55: openflow_13.ofp_hello_elem_versionbitmap
+	(*OfpHello)(nil),                        // 56: openflow_13.ofp_hello
+	(*OfpSwitchConfig)(nil),                 // 57: openflow_13.ofp_switch_config
+	(*OfpTableMod)(nil),                     // 58: openflow_13.ofp_table_mod
+	(*OfpPort)(nil),                         // 59: openflow_13.ofp_port
+	(*OfpSwitchFeatures)(nil),               // 60: openflow_13.ofp_switch_features
+	(*OfpPortStatus)(nil),                   // 61: openflow_13.ofp_port_status
+	(*OfpDeviceStatus)(nil),                 // 62: openflow_13.ofp_device_status
+	(*OfpPortMod)(nil),                      // 63: openflow_13.ofp_port_mod
+	(*OfpMatch)(nil),                        // 64: openflow_13.ofp_match
+	(*OfpOxmField)(nil),                     // 65: openflow_13.ofp_oxm_field
+	(*OfpOxmOfbField)(nil),                  // 66: openflow_13.ofp_oxm_ofb_field
+	(*OfpOxmExperimenterField)(nil),         // 67: openflow_13.ofp_oxm_experimenter_field
+	(*OfpAction)(nil),                       // 68: openflow_13.ofp_action
+	(*OfpActionOutput)(nil),                 // 69: openflow_13.ofp_action_output
+	(*OfpActionMplsTtl)(nil),                // 70: openflow_13.ofp_action_mpls_ttl
+	(*OfpActionPush)(nil),                   // 71: openflow_13.ofp_action_push
+	(*OfpActionPopMpls)(nil),                // 72: openflow_13.ofp_action_pop_mpls
+	(*OfpActionGroup)(nil),                  // 73: openflow_13.ofp_action_group
+	(*OfpActionNwTtl)(nil),                  // 74: openflow_13.ofp_action_nw_ttl
+	(*OfpActionSetField)(nil),               // 75: openflow_13.ofp_action_set_field
+	(*OfpActionExperimenter)(nil),           // 76: openflow_13.ofp_action_experimenter
+	(*OfpInstruction)(nil),                  // 77: openflow_13.ofp_instruction
+	(*OfpInstructionGotoTable)(nil),         // 78: openflow_13.ofp_instruction_goto_table
+	(*OfpInstructionWriteMetadata)(nil),     // 79: openflow_13.ofp_instruction_write_metadata
+	(*OfpInstructionActions)(nil),           // 80: openflow_13.ofp_instruction_actions
+	(*OfpInstructionMeter)(nil),             // 81: openflow_13.ofp_instruction_meter
+	(*OfpInstructionExperimenter)(nil),      // 82: openflow_13.ofp_instruction_experimenter
+	(*OfpFlowMod)(nil),                      // 83: openflow_13.ofp_flow_mod
+	(*OfpBucket)(nil),                       // 84: openflow_13.ofp_bucket
+	(*OfpGroupMod)(nil),                     // 85: openflow_13.ofp_group_mod
+	(*OfpPacketOut)(nil),                    // 86: openflow_13.ofp_packet_out
+	(*OfpPacketIn)(nil),                     // 87: openflow_13.ofp_packet_in
+	(*OfpFlowRemoved)(nil),                  // 88: openflow_13.ofp_flow_removed
+	(*OfpMeterBandHeader)(nil),              // 89: openflow_13.ofp_meter_band_header
+	(*OfpMeterBandDrop)(nil),                // 90: openflow_13.ofp_meter_band_drop
+	(*OfpMeterBandDscpRemark)(nil),          // 91: openflow_13.ofp_meter_band_dscp_remark
+	(*OfpMeterBandExperimenter)(nil),        // 92: openflow_13.ofp_meter_band_experimenter
+	(*OfpMeterMod)(nil),                     // 93: openflow_13.ofp_meter_mod
+	(*OfpErrorMsg)(nil),                     // 94: openflow_13.ofp_error_msg
+	(*OfpErrorExperimenterMsg)(nil),         // 95: openflow_13.ofp_error_experimenter_msg
+	(*OfpMultipartRequest)(nil),             // 96: openflow_13.ofp_multipart_request
+	(*OfpMultipartReply)(nil),               // 97: openflow_13.ofp_multipart_reply
+	(*OfpDesc)(nil),                         // 98: openflow_13.ofp_desc
+	(*OfpFlowStatsRequest)(nil),             // 99: openflow_13.ofp_flow_stats_request
+	(*OfpFlowStats)(nil),                    // 100: openflow_13.ofp_flow_stats
+	(*OfpAggregateStatsRequest)(nil),        // 101: openflow_13.ofp_aggregate_stats_request
+	(*OfpAggregateStatsReply)(nil),          // 102: openflow_13.ofp_aggregate_stats_reply
+	(*OfpTableFeatureProperty)(nil),         // 103: openflow_13.ofp_table_feature_property
+	(*OfpTableFeaturePropInstructions)(nil), // 104: openflow_13.ofp_table_feature_prop_instructions
+	(*OfpTableFeaturePropNextTables)(nil),   // 105: openflow_13.ofp_table_feature_prop_next_tables
+	(*OfpTableFeaturePropActions)(nil),      // 106: openflow_13.ofp_table_feature_prop_actions
+	(*OfpTableFeaturePropOxm)(nil),          // 107: openflow_13.ofp_table_feature_prop_oxm
+	(*OfpTableFeaturePropExperimenter)(nil), // 108: openflow_13.ofp_table_feature_prop_experimenter
+	(*OfpTableFeatures)(nil),                // 109: openflow_13.ofp_table_features
+	(*OfpTableStats)(nil),                   // 110: openflow_13.ofp_table_stats
+	(*OfpPortStatsRequest)(nil),             // 111: openflow_13.ofp_port_stats_request
+	(*OfpPortStats)(nil),                    // 112: openflow_13.ofp_port_stats
+	(*OfpGroupStatsRequest)(nil),            // 113: openflow_13.ofp_group_stats_request
+	(*OfpBucketCounter)(nil),                // 114: openflow_13.ofp_bucket_counter
+	(*OfpGroupStats)(nil),                   // 115: openflow_13.ofp_group_stats
+	(*OfpGroupDesc)(nil),                    // 116: openflow_13.ofp_group_desc
+	(*OfpGroupEntry)(nil),                   // 117: openflow_13.ofp_group_entry
+	(*OfpGroupFeatures)(nil),                // 118: openflow_13.ofp_group_features
+	(*OfpMeterMultipartRequest)(nil),        // 119: openflow_13.ofp_meter_multipart_request
+	(*OfpMeterBandStats)(nil),               // 120: openflow_13.ofp_meter_band_stats
+	(*OfpMeterStats)(nil),                   // 121: openflow_13.ofp_meter_stats
+	(*OfpMeterConfig)(nil),                  // 122: openflow_13.ofp_meter_config
+	(*OfpMeterFeatures)(nil),                // 123: openflow_13.ofp_meter_features
+	(*OfpMeterEntry)(nil),                   // 124: openflow_13.ofp_meter_entry
+	(*OfpExperimenterMultipartHeader)(nil),  // 125: openflow_13.ofp_experimenter_multipart_header
+	(*OfpExperimenterHeader)(nil),           // 126: openflow_13.ofp_experimenter_header
+	(*OfpQueuePropHeader)(nil),              // 127: openflow_13.ofp_queue_prop_header
+	(*OfpQueuePropMinRate)(nil),             // 128: openflow_13.ofp_queue_prop_min_rate
+	(*OfpQueuePropMaxRate)(nil),             // 129: openflow_13.ofp_queue_prop_max_rate
+	(*OfpQueuePropExperimenter)(nil),        // 130: openflow_13.ofp_queue_prop_experimenter
+	(*OfpPacketQueue)(nil),                  // 131: openflow_13.ofp_packet_queue
+	(*OfpQueueGetConfigRequest)(nil),        // 132: openflow_13.ofp_queue_get_config_request
+	(*OfpQueueGetConfigReply)(nil),          // 133: openflow_13.ofp_queue_get_config_reply
+	(*OfpActionSetQueue)(nil),               // 134: openflow_13.ofp_action_set_queue
+	(*OfpQueueStatsRequest)(nil),            // 135: openflow_13.ofp_queue_stats_request
+	(*OfpQueueStats)(nil),                   // 136: openflow_13.ofp_queue_stats
+	(*OfpRoleRequest)(nil),                  // 137: openflow_13.ofp_role_request
+	(*OfpAsyncConfig)(nil),                  // 138: openflow_13.ofp_async_config
+	(*MeterModUpdate)(nil),                  // 139: openflow_13.MeterModUpdate
+	(*MeterStatsReply)(nil),                 // 140: openflow_13.MeterStatsReply
+	(*FlowTableUpdate)(nil),                 // 141: openflow_13.FlowTableUpdate
+	(*FlowGroupTableUpdate)(nil),            // 142: openflow_13.FlowGroupTableUpdate
+	(*Flows)(nil),                           // 143: openflow_13.Flows
+	(*Meters)(nil),                          // 144: openflow_13.Meters
+	(*FlowGroups)(nil),                      // 145: openflow_13.FlowGroups
+	(*FlowChanges)(nil),                     // 146: openflow_13.FlowChanges
+	(*FlowGroupChanges)(nil),                // 147: openflow_13.FlowGroupChanges
+	(*PacketIn)(nil),                        // 148: openflow_13.PacketIn
+	(*PacketOut)(nil),                       // 149: openflow_13.PacketOut
+	(*ChangeEvent)(nil),                     // 150: openflow_13.ChangeEvent
+	(*FlowMetadata)(nil),                    // 151: openflow_13.FlowMetadata
+}
+var file_voltha_protos_openflow_13_proto_depIdxs = []int32{
+	1,   // 0: openflow_13.ofp_header.type:type_name -> openflow_13.ofp_type
+	2,   // 1: openflow_13.ofp_hello_elem_header.type:type_name -> openflow_13.ofp_hello_elem_type
+	55,  // 2: openflow_13.ofp_hello_elem_header.versionbitmap:type_name -> openflow_13.ofp_hello_elem_versionbitmap
+	54,  // 3: openflow_13.ofp_hello.elements:type_name -> openflow_13.ofp_hello_elem_header
+	10,  // 4: openflow_13.ofp_port_status.reason:type_name -> openflow_13.ofp_port_reason
+	59,  // 5: openflow_13.ofp_port_status.desc:type_name -> openflow_13.ofp_port
+	11,  // 6: openflow_13.ofp_device_status.status:type_name -> openflow_13.ofp_device_connection
+	12,  // 7: openflow_13.ofp_match.type:type_name -> openflow_13.ofp_match_type
+	65,  // 8: openflow_13.ofp_match.oxm_fields:type_name -> openflow_13.ofp_oxm_field
+	13,  // 9: openflow_13.ofp_oxm_field.oxm_class:type_name -> openflow_13.ofp_oxm_class
+	66,  // 10: openflow_13.ofp_oxm_field.ofb_field:type_name -> openflow_13.ofp_oxm_ofb_field
+	67,  // 11: openflow_13.ofp_oxm_field.experimenter_field:type_name -> openflow_13.ofp_oxm_experimenter_field
+	14,  // 12: openflow_13.ofp_oxm_ofb_field.type:type_name -> openflow_13.oxm_ofb_field_types
+	17,  // 13: openflow_13.ofp_action.type:type_name -> openflow_13.ofp_action_type
+	69,  // 14: openflow_13.ofp_action.output:type_name -> openflow_13.ofp_action_output
+	70,  // 15: openflow_13.ofp_action.mpls_ttl:type_name -> openflow_13.ofp_action_mpls_ttl
+	71,  // 16: openflow_13.ofp_action.push:type_name -> openflow_13.ofp_action_push
+	72,  // 17: openflow_13.ofp_action.pop_mpls:type_name -> openflow_13.ofp_action_pop_mpls
+	73,  // 18: openflow_13.ofp_action.group:type_name -> openflow_13.ofp_action_group
+	74,  // 19: openflow_13.ofp_action.nw_ttl:type_name -> openflow_13.ofp_action_nw_ttl
+	75,  // 20: openflow_13.ofp_action.set_field:type_name -> openflow_13.ofp_action_set_field
+	76,  // 21: openflow_13.ofp_action.experimenter:type_name -> openflow_13.ofp_action_experimenter
+	65,  // 22: openflow_13.ofp_action_set_field.field:type_name -> openflow_13.ofp_oxm_field
+	78,  // 23: openflow_13.ofp_instruction.goto_table:type_name -> openflow_13.ofp_instruction_goto_table
+	79,  // 24: openflow_13.ofp_instruction.write_metadata:type_name -> openflow_13.ofp_instruction_write_metadata
+	80,  // 25: openflow_13.ofp_instruction.actions:type_name -> openflow_13.ofp_instruction_actions
+	81,  // 26: openflow_13.ofp_instruction.meter:type_name -> openflow_13.ofp_instruction_meter
+	82,  // 27: openflow_13.ofp_instruction.experimenter:type_name -> openflow_13.ofp_instruction_experimenter
+	68,  // 28: openflow_13.ofp_instruction_actions.actions:type_name -> openflow_13.ofp_action
+	20,  // 29: openflow_13.ofp_flow_mod.command:type_name -> openflow_13.ofp_flow_mod_command
+	64,  // 30: openflow_13.ofp_flow_mod.match:type_name -> openflow_13.ofp_match
+	77,  // 31: openflow_13.ofp_flow_mod.instructions:type_name -> openflow_13.ofp_instruction
+	68,  // 32: openflow_13.ofp_bucket.actions:type_name -> openflow_13.ofp_action
+	23,  // 33: openflow_13.ofp_group_mod.command:type_name -> openflow_13.ofp_group_mod_command
+	24,  // 34: openflow_13.ofp_group_mod.type:type_name -> openflow_13.ofp_group_type
+	84,  // 35: openflow_13.ofp_group_mod.buckets:type_name -> openflow_13.ofp_bucket
+	68,  // 36: openflow_13.ofp_packet_out.actions:type_name -> openflow_13.ofp_action
+	25,  // 37: openflow_13.ofp_packet_in.reason:type_name -> openflow_13.ofp_packet_in_reason
+	64,  // 38: openflow_13.ofp_packet_in.match:type_name -> openflow_13.ofp_match
+	26,  // 39: openflow_13.ofp_flow_removed.reason:type_name -> openflow_13.ofp_flow_removed_reason
+	64,  // 40: openflow_13.ofp_flow_removed.match:type_name -> openflow_13.ofp_match
+	28,  // 41: openflow_13.ofp_meter_band_header.type:type_name -> openflow_13.ofp_meter_band_type
+	90,  // 42: openflow_13.ofp_meter_band_header.drop:type_name -> openflow_13.ofp_meter_band_drop
+	91,  // 43: openflow_13.ofp_meter_band_header.dscp_remark:type_name -> openflow_13.ofp_meter_band_dscp_remark
+	92,  // 44: openflow_13.ofp_meter_band_header.experimenter:type_name -> openflow_13.ofp_meter_band_experimenter
+	29,  // 45: openflow_13.ofp_meter_mod.command:type_name -> openflow_13.ofp_meter_mod_command
+	89,  // 46: openflow_13.ofp_meter_mod.bands:type_name -> openflow_13.ofp_meter_band_header
+	53,  // 47: openflow_13.ofp_error_msg.header:type_name -> openflow_13.ofp_header
+	46,  // 48: openflow_13.ofp_multipart_request.type:type_name -> openflow_13.ofp_multipart_type
+	46,  // 49: openflow_13.ofp_multipart_reply.type:type_name -> openflow_13.ofp_multipart_type
+	64,  // 50: openflow_13.ofp_flow_stats_request.match:type_name -> openflow_13.ofp_match
+	64,  // 51: openflow_13.ofp_flow_stats.match:type_name -> openflow_13.ofp_match
+	77,  // 52: openflow_13.ofp_flow_stats.instructions:type_name -> openflow_13.ofp_instruction
+	64,  // 53: openflow_13.ofp_aggregate_stats_request.match:type_name -> openflow_13.ofp_match
+	49,  // 54: openflow_13.ofp_table_feature_property.type:type_name -> openflow_13.ofp_table_feature_prop_type
+	104, // 55: openflow_13.ofp_table_feature_property.instructions:type_name -> openflow_13.ofp_table_feature_prop_instructions
+	105, // 56: openflow_13.ofp_table_feature_property.next_tables:type_name -> openflow_13.ofp_table_feature_prop_next_tables
+	106, // 57: openflow_13.ofp_table_feature_property.actions:type_name -> openflow_13.ofp_table_feature_prop_actions
+	107, // 58: openflow_13.ofp_table_feature_property.oxm:type_name -> openflow_13.ofp_table_feature_prop_oxm
+	108, // 59: openflow_13.ofp_table_feature_property.experimenter:type_name -> openflow_13.ofp_table_feature_prop_experimenter
+	77,  // 60: openflow_13.ofp_table_feature_prop_instructions.instructions:type_name -> openflow_13.ofp_instruction
+	68,  // 61: openflow_13.ofp_table_feature_prop_actions.actions:type_name -> openflow_13.ofp_action
+	103, // 62: openflow_13.ofp_table_features.properties:type_name -> openflow_13.ofp_table_feature_property
+	114, // 63: openflow_13.ofp_group_stats.bucket_stats:type_name -> openflow_13.ofp_bucket_counter
+	24,  // 64: openflow_13.ofp_group_desc.type:type_name -> openflow_13.ofp_group_type
+	84,  // 65: openflow_13.ofp_group_desc.buckets:type_name -> openflow_13.ofp_bucket
+	116, // 66: openflow_13.ofp_group_entry.desc:type_name -> openflow_13.ofp_group_desc
+	115, // 67: openflow_13.ofp_group_entry.stats:type_name -> openflow_13.ofp_group_stats
+	120, // 68: openflow_13.ofp_meter_stats.band_stats:type_name -> openflow_13.ofp_meter_band_stats
+	89,  // 69: openflow_13.ofp_meter_config.bands:type_name -> openflow_13.ofp_meter_band_header
+	122, // 70: openflow_13.ofp_meter_entry.config:type_name -> openflow_13.ofp_meter_config
+	121, // 71: openflow_13.ofp_meter_entry.stats:type_name -> openflow_13.ofp_meter_stats
+	127, // 72: openflow_13.ofp_queue_prop_min_rate.prop_header:type_name -> openflow_13.ofp_queue_prop_header
+	127, // 73: openflow_13.ofp_queue_prop_max_rate.prop_header:type_name -> openflow_13.ofp_queue_prop_header
+	127, // 74: openflow_13.ofp_queue_prop_experimenter.prop_header:type_name -> openflow_13.ofp_queue_prop_header
+	127, // 75: openflow_13.ofp_packet_queue.properties:type_name -> openflow_13.ofp_queue_prop_header
+	131, // 76: openflow_13.ofp_queue_get_config_reply.queues:type_name -> openflow_13.ofp_packet_queue
+	52,  // 77: openflow_13.ofp_role_request.role:type_name -> openflow_13.ofp_controller_role
+	93,  // 78: openflow_13.MeterModUpdate.meter_mod:type_name -> openflow_13.ofp_meter_mod
+	121, // 79: openflow_13.MeterStatsReply.meter_stats:type_name -> openflow_13.ofp_meter_stats
+	83,  // 80: openflow_13.FlowTableUpdate.flow_mod:type_name -> openflow_13.ofp_flow_mod
+	85,  // 81: openflow_13.FlowGroupTableUpdate.group_mod:type_name -> openflow_13.ofp_group_mod
+	100, // 82: openflow_13.Flows.items:type_name -> openflow_13.ofp_flow_stats
+	124, // 83: openflow_13.Meters.items:type_name -> openflow_13.ofp_meter_entry
+	117, // 84: openflow_13.FlowGroups.items:type_name -> openflow_13.ofp_group_entry
+	143, // 85: openflow_13.FlowChanges.to_add:type_name -> openflow_13.Flows
+	143, // 86: openflow_13.FlowChanges.to_remove:type_name -> openflow_13.Flows
+	145, // 87: openflow_13.FlowGroupChanges.to_add:type_name -> openflow_13.FlowGroups
+	145, // 88: openflow_13.FlowGroupChanges.to_remove:type_name -> openflow_13.FlowGroups
+	145, // 89: openflow_13.FlowGroupChanges.to_update:type_name -> openflow_13.FlowGroups
+	87,  // 90: openflow_13.PacketIn.packet_in:type_name -> openflow_13.ofp_packet_in
+	86,  // 91: openflow_13.PacketOut.packet_out:type_name -> openflow_13.ofp_packet_out
+	61,  // 92: openflow_13.ChangeEvent.port_status:type_name -> openflow_13.ofp_port_status
+	94,  // 93: openflow_13.ChangeEvent.error:type_name -> openflow_13.ofp_error_msg
+	62,  // 94: openflow_13.ChangeEvent.device_status:type_name -> openflow_13.ofp_device_status
+	122, // 95: openflow_13.FlowMetadata.meters:type_name -> openflow_13.ofp_meter_config
+	96,  // [96:96] is the sub-list for method output_type
+	96,  // [96:96] is the sub-list for method input_type
+	96,  // [96:96] is the sub-list for extension type_name
+	96,  // [96:96] is the sub-list for extension extendee
+	0,   // [0:96] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_openflow_13_proto_init() }
+func file_voltha_protos_openflow_13_proto_init() {
+	if File_voltha_protos_openflow_13_proto != nil {
+		return
+	}
+	file_voltha_protos_openflow_13_proto_msgTypes[1].OneofWrappers = []any{
+		(*OfpHelloElemHeader_Versionbitmap)(nil),
+	}
+	file_voltha_protos_openflow_13_proto_msgTypes[12].OneofWrappers = []any{
+		(*OfpOxmField_OfbField)(nil),
+		(*OfpOxmField_ExperimenterField)(nil),
+	}
+	file_voltha_protos_openflow_13_proto_msgTypes[13].OneofWrappers = []any{
 		(*OfpOxmOfbField_Port)(nil),
 		(*OfpOxmOfbField_PhysicalPort)(nil),
 		(*OfpOxmOfbField_TableMetadata)(nil),
@@ -4062,228 +12430,7 @@
 		(*OfpOxmOfbField_TunnelIdMask)(nil),
 		(*OfpOxmOfbField_Ipv6ExthdrMask)(nil),
 	}
-}
-
-// Header for OXM experimenter match fields.
-// The experimenter class should not use OXM_HEADER() macros for defining
-// fields due to this extra header.
-type OfpOxmExperimenterField struct {
-	OxmHeader            uint32   `protobuf:"varint,1,opt,name=oxm_header,json=oxmHeader,proto3" json:"oxm_header,omitempty"`
-	Experimenter         uint32   `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpOxmExperimenterField) Reset()         { *m = OfpOxmExperimenterField{} }
-func (m *OfpOxmExperimenterField) String() string { return proto.CompactTextString(m) }
-func (*OfpOxmExperimenterField) ProtoMessage()    {}
-func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{14}
-}
-
-func (m *OfpOxmExperimenterField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpOxmExperimenterField.Unmarshal(m, b)
-}
-func (m *OfpOxmExperimenterField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpOxmExperimenterField.Marshal(b, m, deterministic)
-}
-func (m *OfpOxmExperimenterField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmExperimenterField.Merge(m, src)
-}
-func (m *OfpOxmExperimenterField) XXX_Size() int {
-	return xxx_messageInfo_OfpOxmExperimenterField.Size(m)
-}
-func (m *OfpOxmExperimenterField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpOxmExperimenterField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpOxmExperimenterField proto.InternalMessageInfo
-
-func (m *OfpOxmExperimenterField) GetOxmHeader() uint32 {
-	if m != nil {
-		return m.OxmHeader
-	}
-	return 0
-}
-
-func (m *OfpOxmExperimenterField) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-// Action header that is common to all actions.  The length includes the
-// header and any padding used to make the action 64-bit aligned.
-// NB: The length of an action *must* always be a multiple of eight.
-type OfpAction struct {
-	Type OfpActionType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpActionType" json:"type,omitempty"`
-	// Types that are valid to be assigned to Action:
-	//	*OfpAction_Output
-	//	*OfpAction_MplsTtl
-	//	*OfpAction_Push
-	//	*OfpAction_PopMpls
-	//	*OfpAction_Group
-	//	*OfpAction_NwTtl
-	//	*OfpAction_SetField
-	//	*OfpAction_Experimenter
-	Action               isOfpAction_Action `protobuf_oneof:"action"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
-
-func (m *OfpAction) Reset()         { *m = OfpAction{} }
-func (m *OfpAction) String() string { return proto.CompactTextString(m) }
-func (*OfpAction) ProtoMessage()    {}
-func (*OfpAction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{15}
-}
-
-func (m *OfpAction) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAction.Unmarshal(m, b)
-}
-func (m *OfpAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAction.Marshal(b, m, deterministic)
-}
-func (m *OfpAction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAction.Merge(m, src)
-}
-func (m *OfpAction) XXX_Size() int {
-	return xxx_messageInfo_OfpAction.Size(m)
-}
-func (m *OfpAction) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAction.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAction proto.InternalMessageInfo
-
-func (m *OfpAction) GetType() OfpActionType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpActionType_OFPAT_OUTPUT
-}
-
-type isOfpAction_Action interface {
-	isOfpAction_Action()
-}
-
-type OfpAction_Output struct {
-	Output *OfpActionOutput `protobuf:"bytes,2,opt,name=output,proto3,oneof"`
-}
-
-type OfpAction_MplsTtl struct {
-	MplsTtl *OfpActionMplsTtl `protobuf:"bytes,3,opt,name=mpls_ttl,json=mplsTtl,proto3,oneof"`
-}
-
-type OfpAction_Push struct {
-	Push *OfpActionPush `protobuf:"bytes,4,opt,name=push,proto3,oneof"`
-}
-
-type OfpAction_PopMpls struct {
-	PopMpls *OfpActionPopMpls `protobuf:"bytes,5,opt,name=pop_mpls,json=popMpls,proto3,oneof"`
-}
-
-type OfpAction_Group struct {
-	Group *OfpActionGroup `protobuf:"bytes,6,opt,name=group,proto3,oneof"`
-}
-
-type OfpAction_NwTtl struct {
-	NwTtl *OfpActionNwTtl `protobuf:"bytes,7,opt,name=nw_ttl,json=nwTtl,proto3,oneof"`
-}
-
-type OfpAction_SetField struct {
-	SetField *OfpActionSetField `protobuf:"bytes,8,opt,name=set_field,json=setField,proto3,oneof"`
-}
-
-type OfpAction_Experimenter struct {
-	Experimenter *OfpActionExperimenter `protobuf:"bytes,9,opt,name=experimenter,proto3,oneof"`
-}
-
-func (*OfpAction_Output) isOfpAction_Action() {}
-
-func (*OfpAction_MplsTtl) isOfpAction_Action() {}
-
-func (*OfpAction_Push) isOfpAction_Action() {}
-
-func (*OfpAction_PopMpls) isOfpAction_Action() {}
-
-func (*OfpAction_Group) isOfpAction_Action() {}
-
-func (*OfpAction_NwTtl) isOfpAction_Action() {}
-
-func (*OfpAction_SetField) isOfpAction_Action() {}
-
-func (*OfpAction_Experimenter) isOfpAction_Action() {}
-
-func (m *OfpAction) GetAction() isOfpAction_Action {
-	if m != nil {
-		return m.Action
-	}
-	return nil
-}
-
-func (m *OfpAction) GetOutput() *OfpActionOutput {
-	if x, ok := m.GetAction().(*OfpAction_Output); ok {
-		return x.Output
-	}
-	return nil
-}
-
-func (m *OfpAction) GetMplsTtl() *OfpActionMplsTtl {
-	if x, ok := m.GetAction().(*OfpAction_MplsTtl); ok {
-		return x.MplsTtl
-	}
-	return nil
-}
-
-func (m *OfpAction) GetPush() *OfpActionPush {
-	if x, ok := m.GetAction().(*OfpAction_Push); ok {
-		return x.Push
-	}
-	return nil
-}
-
-func (m *OfpAction) GetPopMpls() *OfpActionPopMpls {
-	if x, ok := m.GetAction().(*OfpAction_PopMpls); ok {
-		return x.PopMpls
-	}
-	return nil
-}
-
-func (m *OfpAction) GetGroup() *OfpActionGroup {
-	if x, ok := m.GetAction().(*OfpAction_Group); ok {
-		return x.Group
-	}
-	return nil
-}
-
-func (m *OfpAction) GetNwTtl() *OfpActionNwTtl {
-	if x, ok := m.GetAction().(*OfpAction_NwTtl); ok {
-		return x.NwTtl
-	}
-	return nil
-}
-
-func (m *OfpAction) GetSetField() *OfpActionSetField {
-	if x, ok := m.GetAction().(*OfpAction_SetField); ok {
-		return x.SetField
-	}
-	return nil
-}
-
-func (m *OfpAction) GetExperimenter() *OfpActionExperimenter {
-	if x, ok := m.GetAction().(*OfpAction_Experimenter); ok {
-		return x.Experimenter
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpAction) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[15].OneofWrappers = []any{
 		(*OfpAction_Output)(nil),
 		(*OfpAction_MplsTtl)(nil),
 		(*OfpAction_Push)(nil),
@@ -4293,5703 +12440,46 @@
 		(*OfpAction_SetField)(nil),
 		(*OfpAction_Experimenter)(nil),
 	}
-}
-
-// Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
-// When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
-// number of bytes to send.  A 'max_len' of zero means no bytes of the
-// packet should be sent. A 'max_len' of OFPCML_NO_BUFFER means that
-// the packet is not buffered and the complete packet is to be sent to
-// the controller.
-type OfpActionOutput struct {
-	Port                 uint32   `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
-	MaxLen               uint32   `protobuf:"varint,2,opt,name=max_len,json=maxLen,proto3" json:"max_len,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionOutput) Reset()         { *m = OfpActionOutput{} }
-func (m *OfpActionOutput) String() string { return proto.CompactTextString(m) }
-func (*OfpActionOutput) ProtoMessage()    {}
-func (*OfpActionOutput) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{16}
-}
-
-func (m *OfpActionOutput) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionOutput.Unmarshal(m, b)
-}
-func (m *OfpActionOutput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionOutput.Marshal(b, m, deterministic)
-}
-func (m *OfpActionOutput) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionOutput.Merge(m, src)
-}
-func (m *OfpActionOutput) XXX_Size() int {
-	return xxx_messageInfo_OfpActionOutput.Size(m)
-}
-func (m *OfpActionOutput) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionOutput.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionOutput proto.InternalMessageInfo
-
-func (m *OfpActionOutput) GetPort() uint32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-func (m *OfpActionOutput) GetMaxLen() uint32 {
-	if m != nil {
-		return m.MaxLen
-	}
-	return 0
-}
-
-// Action structure for OFPAT_SET_MPLS_TTL.
-type OfpActionMplsTtl struct {
-	MplsTtl              uint32   `protobuf:"varint,1,opt,name=mpls_ttl,json=mplsTtl,proto3" json:"mpls_ttl,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionMplsTtl) Reset()         { *m = OfpActionMplsTtl{} }
-func (m *OfpActionMplsTtl) String() string { return proto.CompactTextString(m) }
-func (*OfpActionMplsTtl) ProtoMessage()    {}
-func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{17}
-}
-
-func (m *OfpActionMplsTtl) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionMplsTtl.Unmarshal(m, b)
-}
-func (m *OfpActionMplsTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionMplsTtl.Marshal(b, m, deterministic)
-}
-func (m *OfpActionMplsTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionMplsTtl.Merge(m, src)
-}
-func (m *OfpActionMplsTtl) XXX_Size() int {
-	return xxx_messageInfo_OfpActionMplsTtl.Size(m)
-}
-func (m *OfpActionMplsTtl) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionMplsTtl.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionMplsTtl proto.InternalMessageInfo
-
-func (m *OfpActionMplsTtl) GetMplsTtl() uint32 {
-	if m != nil {
-		return m.MplsTtl
-	}
-	return 0
-}
-
-// Action structure for OFPAT_PUSH_VLAN/MPLS/PBB.
-type OfpActionPush struct {
-	Ethertype            uint32   `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionPush) Reset()         { *m = OfpActionPush{} }
-func (m *OfpActionPush) String() string { return proto.CompactTextString(m) }
-func (*OfpActionPush) ProtoMessage()    {}
-func (*OfpActionPush) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{18}
-}
-
-func (m *OfpActionPush) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionPush.Unmarshal(m, b)
-}
-func (m *OfpActionPush) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionPush.Marshal(b, m, deterministic)
-}
-func (m *OfpActionPush) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPush.Merge(m, src)
-}
-func (m *OfpActionPush) XXX_Size() int {
-	return xxx_messageInfo_OfpActionPush.Size(m)
-}
-func (m *OfpActionPush) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionPush.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionPush proto.InternalMessageInfo
-
-func (m *OfpActionPush) GetEthertype() uint32 {
-	if m != nil {
-		return m.Ethertype
-	}
-	return 0
-}
-
-// Action structure for OFPAT_POP_MPLS.
-type OfpActionPopMpls struct {
-	Ethertype            uint32   `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionPopMpls) Reset()         { *m = OfpActionPopMpls{} }
-func (m *OfpActionPopMpls) String() string { return proto.CompactTextString(m) }
-func (*OfpActionPopMpls) ProtoMessage()    {}
-func (*OfpActionPopMpls) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{19}
-}
-
-func (m *OfpActionPopMpls) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionPopMpls.Unmarshal(m, b)
-}
-func (m *OfpActionPopMpls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionPopMpls.Marshal(b, m, deterministic)
-}
-func (m *OfpActionPopMpls) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPopMpls.Merge(m, src)
-}
-func (m *OfpActionPopMpls) XXX_Size() int {
-	return xxx_messageInfo_OfpActionPopMpls.Size(m)
-}
-func (m *OfpActionPopMpls) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionPopMpls.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionPopMpls proto.InternalMessageInfo
-
-func (m *OfpActionPopMpls) GetEthertype() uint32 {
-	if m != nil {
-		return m.Ethertype
-	}
-	return 0
-}
-
-// Action structure for OFPAT_GROUP.
-type OfpActionGroup struct {
-	GroupId              uint32   `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionGroup) Reset()         { *m = OfpActionGroup{} }
-func (m *OfpActionGroup) String() string { return proto.CompactTextString(m) }
-func (*OfpActionGroup) ProtoMessage()    {}
-func (*OfpActionGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{20}
-}
-
-func (m *OfpActionGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionGroup.Unmarshal(m, b)
-}
-func (m *OfpActionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionGroup.Marshal(b, m, deterministic)
-}
-func (m *OfpActionGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionGroup.Merge(m, src)
-}
-func (m *OfpActionGroup) XXX_Size() int {
-	return xxx_messageInfo_OfpActionGroup.Size(m)
-}
-func (m *OfpActionGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionGroup proto.InternalMessageInfo
-
-func (m *OfpActionGroup) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-// Action structure for OFPAT_SET_NW_TTL.
-type OfpActionNwTtl struct {
-	NwTtl                uint32   `protobuf:"varint,1,opt,name=nw_ttl,json=nwTtl,proto3" json:"nw_ttl,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionNwTtl) Reset()         { *m = OfpActionNwTtl{} }
-func (m *OfpActionNwTtl) String() string { return proto.CompactTextString(m) }
-func (*OfpActionNwTtl) ProtoMessage()    {}
-func (*OfpActionNwTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{21}
-}
-
-func (m *OfpActionNwTtl) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionNwTtl.Unmarshal(m, b)
-}
-func (m *OfpActionNwTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionNwTtl.Marshal(b, m, deterministic)
-}
-func (m *OfpActionNwTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionNwTtl.Merge(m, src)
-}
-func (m *OfpActionNwTtl) XXX_Size() int {
-	return xxx_messageInfo_OfpActionNwTtl.Size(m)
-}
-func (m *OfpActionNwTtl) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionNwTtl.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionNwTtl proto.InternalMessageInfo
-
-func (m *OfpActionNwTtl) GetNwTtl() uint32 {
-	if m != nil {
-		return m.NwTtl
-	}
-	return 0
-}
-
-// Action structure for OFPAT_SET_FIELD.
-type OfpActionSetField struct {
-	Field                *OfpOxmField `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpActionSetField) Reset()         { *m = OfpActionSetField{} }
-func (m *OfpActionSetField) String() string { return proto.CompactTextString(m) }
-func (*OfpActionSetField) ProtoMessage()    {}
-func (*OfpActionSetField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{22}
-}
-
-func (m *OfpActionSetField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionSetField.Unmarshal(m, b)
-}
-func (m *OfpActionSetField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionSetField.Marshal(b, m, deterministic)
-}
-func (m *OfpActionSetField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetField.Merge(m, src)
-}
-func (m *OfpActionSetField) XXX_Size() int {
-	return xxx_messageInfo_OfpActionSetField.Size(m)
-}
-func (m *OfpActionSetField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionSetField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionSetField proto.InternalMessageInfo
-
-func (m *OfpActionSetField) GetField() *OfpOxmField {
-	if m != nil {
-		return m.Field
-	}
-	return nil
-}
-
-// Action header for OFPAT_EXPERIMENTER.
-// The rest of the body is experimenter-defined.
-type OfpActionExperimenter struct {
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionExperimenter) Reset()         { *m = OfpActionExperimenter{} }
-func (m *OfpActionExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpActionExperimenter) ProtoMessage()    {}
-func (*OfpActionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{23}
-}
-
-func (m *OfpActionExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionExperimenter.Unmarshal(m, b)
-}
-func (m *OfpActionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpActionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionExperimenter.Merge(m, src)
-}
-func (m *OfpActionExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpActionExperimenter.Size(m)
-}
-func (m *OfpActionExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionExperimenter proto.InternalMessageInfo
-
-func (m *OfpActionExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpActionExperimenter) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Instruction header that is common to all instructions.  The length includes
-// the header and any padding used to make the instruction 64-bit aligned.
-// NB: The length of an instruction *must* always be a multiple of eight.
-type OfpInstruction struct {
-	Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
-	// Types that are valid to be assigned to Data:
-	//	*OfpInstruction_GotoTable
-	//	*OfpInstruction_WriteMetadata
-	//	*OfpInstruction_Actions
-	//	*OfpInstruction_Meter
-	//	*OfpInstruction_Experimenter
-	Data                 isOfpInstruction_Data `protobuf_oneof:"data"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpInstruction) Reset()         { *m = OfpInstruction{} }
-func (m *OfpInstruction) String() string { return proto.CompactTextString(m) }
-func (*OfpInstruction) ProtoMessage()    {}
-func (*OfpInstruction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{24}
-}
-
-func (m *OfpInstruction) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstruction.Unmarshal(m, b)
-}
-func (m *OfpInstruction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstruction.Marshal(b, m, deterministic)
-}
-func (m *OfpInstruction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstruction.Merge(m, src)
-}
-func (m *OfpInstruction) XXX_Size() int {
-	return xxx_messageInfo_OfpInstruction.Size(m)
-}
-func (m *OfpInstruction) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstruction.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstruction proto.InternalMessageInfo
-
-func (m *OfpInstruction) GetType() uint32 {
-	if m != nil {
-		return m.Type
-	}
-	return 0
-}
-
-type isOfpInstruction_Data interface {
-	isOfpInstruction_Data()
-}
-
-type OfpInstruction_GotoTable struct {
-	GotoTable *OfpInstructionGotoTable `protobuf:"bytes,2,opt,name=goto_table,json=gotoTable,proto3,oneof"`
-}
-
-type OfpInstruction_WriteMetadata struct {
-	WriteMetadata *OfpInstructionWriteMetadata `protobuf:"bytes,3,opt,name=write_metadata,json=writeMetadata,proto3,oneof"`
-}
-
-type OfpInstruction_Actions struct {
-	Actions *OfpInstructionActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
-}
-
-type OfpInstruction_Meter struct {
-	Meter *OfpInstructionMeter `protobuf:"bytes,5,opt,name=meter,proto3,oneof"`
-}
-
-type OfpInstruction_Experimenter struct {
-	Experimenter *OfpInstructionExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
-}
-
-func (*OfpInstruction_GotoTable) isOfpInstruction_Data() {}
-
-func (*OfpInstruction_WriteMetadata) isOfpInstruction_Data() {}
-
-func (*OfpInstruction_Actions) isOfpInstruction_Data() {}
-
-func (*OfpInstruction_Meter) isOfpInstruction_Data() {}
-
-func (*OfpInstruction_Experimenter) isOfpInstruction_Data() {}
-
-func (m *OfpInstruction) GetData() isOfpInstruction_Data {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetGotoTable() *OfpInstructionGotoTable {
-	if x, ok := m.GetData().(*OfpInstruction_GotoTable); ok {
-		return x.GotoTable
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetWriteMetadata() *OfpInstructionWriteMetadata {
-	if x, ok := m.GetData().(*OfpInstruction_WriteMetadata); ok {
-		return x.WriteMetadata
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetActions() *OfpInstructionActions {
-	if x, ok := m.GetData().(*OfpInstruction_Actions); ok {
-		return x.Actions
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetMeter() *OfpInstructionMeter {
-	if x, ok := m.GetData().(*OfpInstruction_Meter); ok {
-		return x.Meter
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetExperimenter() *OfpInstructionExperimenter {
-	if x, ok := m.GetData().(*OfpInstruction_Experimenter); ok {
-		return x.Experimenter
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpInstruction) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[24].OneofWrappers = []any{
 		(*OfpInstruction_GotoTable)(nil),
 		(*OfpInstruction_WriteMetadata)(nil),
 		(*OfpInstruction_Actions)(nil),
 		(*OfpInstruction_Meter)(nil),
 		(*OfpInstruction_Experimenter)(nil),
 	}
-}
-
-// Instruction structure for OFPIT_GOTO_TABLE
-type OfpInstructionGotoTable struct {
-	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionGotoTable) Reset()         { *m = OfpInstructionGotoTable{} }
-func (m *OfpInstructionGotoTable) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionGotoTable) ProtoMessage()    {}
-func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{25}
-}
-
-func (m *OfpInstructionGotoTable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionGotoTable.Unmarshal(m, b)
-}
-func (m *OfpInstructionGotoTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionGotoTable.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionGotoTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionGotoTable.Merge(m, src)
-}
-func (m *OfpInstructionGotoTable) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionGotoTable.Size(m)
-}
-func (m *OfpInstructionGotoTable) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionGotoTable.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionGotoTable proto.InternalMessageInfo
-
-func (m *OfpInstructionGotoTable) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-// Instruction structure for OFPIT_WRITE_METADATA
-type OfpInstructionWriteMetadata struct {
-	Metadata             uint64   `protobuf:"varint,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	MetadataMask         uint64   `protobuf:"varint,2,opt,name=metadata_mask,json=metadataMask,proto3" json:"metadata_mask,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionWriteMetadata) Reset()         { *m = OfpInstructionWriteMetadata{} }
-func (m *OfpInstructionWriteMetadata) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionWriteMetadata) ProtoMessage()    {}
-func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{26}
-}
-
-func (m *OfpInstructionWriteMetadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionWriteMetadata.Unmarshal(m, b)
-}
-func (m *OfpInstructionWriteMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionWriteMetadata.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionWriteMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionWriteMetadata.Merge(m, src)
-}
-func (m *OfpInstructionWriteMetadata) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionWriteMetadata.Size(m)
-}
-func (m *OfpInstructionWriteMetadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionWriteMetadata.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionWriteMetadata proto.InternalMessageInfo
-
-func (m *OfpInstructionWriteMetadata) GetMetadata() uint64 {
-	if m != nil {
-		return m.Metadata
-	}
-	return 0
-}
-
-func (m *OfpInstructionWriteMetadata) GetMetadataMask() uint64 {
-	if m != nil {
-		return m.MetadataMask
-	}
-	return 0
-}
-
-// Instruction structure for OFPIT_WRITE/APPLY/CLEAR_ACTIONS
-type OfpInstructionActions struct {
-	Actions              []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpInstructionActions) Reset()         { *m = OfpInstructionActions{} }
-func (m *OfpInstructionActions) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionActions) ProtoMessage()    {}
-func (*OfpInstructionActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{27}
-}
-
-func (m *OfpInstructionActions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionActions.Unmarshal(m, b)
-}
-func (m *OfpInstructionActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionActions.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionActions.Merge(m, src)
-}
-func (m *OfpInstructionActions) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionActions.Size(m)
-}
-func (m *OfpInstructionActions) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionActions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionActions proto.InternalMessageInfo
-
-func (m *OfpInstructionActions) GetActions() []*OfpAction {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-// Instruction structure for OFPIT_METER
-type OfpInstructionMeter struct {
-	MeterId              uint32   `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionMeter) Reset()         { *m = OfpInstructionMeter{} }
-func (m *OfpInstructionMeter) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionMeter) ProtoMessage()    {}
-func (*OfpInstructionMeter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{28}
-}
-
-func (m *OfpInstructionMeter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionMeter.Unmarshal(m, b)
-}
-func (m *OfpInstructionMeter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionMeter.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionMeter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionMeter.Merge(m, src)
-}
-func (m *OfpInstructionMeter) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionMeter.Size(m)
-}
-func (m *OfpInstructionMeter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionMeter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionMeter proto.InternalMessageInfo
-
-func (m *OfpInstructionMeter) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-// Instruction structure for experimental instructions
-type OfpInstructionExperimenter struct {
-	Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	// Experimenter-defined arbitrary additional data.
-	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionExperimenter) Reset()         { *m = OfpInstructionExperimenter{} }
-func (m *OfpInstructionExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionExperimenter) ProtoMessage()    {}
-func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{29}
-}
-
-func (m *OfpInstructionExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionExperimenter.Unmarshal(m, b)
-}
-func (m *OfpInstructionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionExperimenter.Merge(m, src)
-}
-func (m *OfpInstructionExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionExperimenter.Size(m)
-}
-func (m *OfpInstructionExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionExperimenter proto.InternalMessageInfo
-
-func (m *OfpInstructionExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpInstructionExperimenter) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Flow setup and teardown (controller -> datapath).
-type OfpFlowMod struct {
-	//ofp_header header;
-	Cookie               uint64            `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	CookieMask           uint64            `protobuf:"varint,2,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
-	TableId              uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Command              OfpFlowModCommand `protobuf:"varint,4,opt,name=command,proto3,enum=openflow_13.OfpFlowModCommand" json:"command,omitempty"`
-	IdleTimeout          uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
-	HardTimeout          uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
-	Priority             uint32            `protobuf:"varint,7,opt,name=priority,proto3" json:"priority,omitempty"`
-	BufferId             uint32            `protobuf:"varint,8,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
-	OutPort              uint32            `protobuf:"varint,9,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
-	OutGroup             uint32            `protobuf:"varint,10,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
-	Flags                uint32            `protobuf:"varint,11,opt,name=flags,proto3" json:"flags,omitempty"`
-	Match                *OfpMatch         `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`
-	Instructions         []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpFlowMod) Reset()         { *m = OfpFlowMod{} }
-func (m *OfpFlowMod) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowMod) ProtoMessage()    {}
-func (*OfpFlowMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{30}
-}
-
-func (m *OfpFlowMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowMod.Unmarshal(m, b)
-}
-func (m *OfpFlowMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowMod.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowMod.Merge(m, src)
-}
-func (m *OfpFlowMod) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowMod.Size(m)
-}
-func (m *OfpFlowMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowMod proto.InternalMessageInfo
-
-func (m *OfpFlowMod) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetCookieMask() uint64 {
-	if m != nil {
-		return m.CookieMask
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetCommand() OfpFlowModCommand {
-	if m != nil {
-		return m.Command
-	}
-	return OfpFlowModCommand_OFPFC_ADD
-}
-
-func (m *OfpFlowMod) GetIdleTimeout() uint32 {
-	if m != nil {
-		return m.IdleTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetHardTimeout() uint32 {
-	if m != nil {
-		return m.HardTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetPriority() uint32 {
-	if m != nil {
-		return m.Priority
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetBufferId() uint32 {
-	if m != nil {
-		return m.BufferId
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetOutPort() uint32 {
-	if m != nil {
-		return m.OutPort
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetOutGroup() uint32 {
-	if m != nil {
-		return m.OutGroup
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-func (m *OfpFlowMod) GetInstructions() []*OfpInstruction {
-	if m != nil {
-		return m.Instructions
-	}
-	return nil
-}
-
-// Bucket for use in groups.
-type OfpBucket struct {
-	Weight               uint32       `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"`
-	WatchPort            uint32       `protobuf:"varint,2,opt,name=watch_port,json=watchPort,proto3" json:"watch_port,omitempty"`
-	WatchGroup           uint32       `protobuf:"varint,3,opt,name=watch_group,json=watchGroup,proto3" json:"watch_group,omitempty"`
-	Actions              []*OfpAction `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpBucket) Reset()         { *m = OfpBucket{} }
-func (m *OfpBucket) String() string { return proto.CompactTextString(m) }
-func (*OfpBucket) ProtoMessage()    {}
-func (*OfpBucket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{31}
-}
-
-func (m *OfpBucket) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpBucket.Unmarshal(m, b)
-}
-func (m *OfpBucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpBucket.Marshal(b, m, deterministic)
-}
-func (m *OfpBucket) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucket.Merge(m, src)
-}
-func (m *OfpBucket) XXX_Size() int {
-	return xxx_messageInfo_OfpBucket.Size(m)
-}
-func (m *OfpBucket) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpBucket.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpBucket proto.InternalMessageInfo
-
-func (m *OfpBucket) GetWeight() uint32 {
-	if m != nil {
-		return m.Weight
-	}
-	return 0
-}
-
-func (m *OfpBucket) GetWatchPort() uint32 {
-	if m != nil {
-		return m.WatchPort
-	}
-	return 0
-}
-
-func (m *OfpBucket) GetWatchGroup() uint32 {
-	if m != nil {
-		return m.WatchGroup
-	}
-	return 0
-}
-
-func (m *OfpBucket) GetActions() []*OfpAction {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-// Group setup and teardown (controller -> datapath).
-type OfpGroupMod struct {
-	//ofp_header header;
-	Command              OfpGroupModCommand `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpGroupModCommand" json:"command,omitempty"`
-	Type                 OfpGroupType       `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
-	GroupId              uint32             `protobuf:"varint,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	Buckets              []*OfpBucket       `protobuf:"bytes,4,rep,name=buckets,proto3" json:"buckets,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
-
-func (m *OfpGroupMod) Reset()         { *m = OfpGroupMod{} }
-func (m *OfpGroupMod) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupMod) ProtoMessage()    {}
-func (*OfpGroupMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{32}
-}
-
-func (m *OfpGroupMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupMod.Unmarshal(m, b)
-}
-func (m *OfpGroupMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupMod.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupMod.Merge(m, src)
-}
-func (m *OfpGroupMod) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupMod.Size(m)
-}
-func (m *OfpGroupMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupMod proto.InternalMessageInfo
-
-func (m *OfpGroupMod) GetCommand() OfpGroupModCommand {
-	if m != nil {
-		return m.Command
-	}
-	return OfpGroupModCommand_OFPGC_ADD
-}
-
-func (m *OfpGroupMod) GetType() OfpGroupType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpGroupType_OFPGT_ALL
-}
-
-func (m *OfpGroupMod) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-func (m *OfpGroupMod) GetBuckets() []*OfpBucket {
-	if m != nil {
-		return m.Buckets
-	}
-	return nil
-}
-
-// Send packet (controller -> datapath).
-type OfpPacketOut struct {
-	//ofp_header header;
-	BufferId uint32       `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
-	InPort   uint32       `protobuf:"varint,2,opt,name=in_port,json=inPort,proto3" json:"in_port,omitempty"`
-	Actions  []*OfpAction `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`
-	// The variable size action list is optionally followed by packet data.
-	// This data is only present and meaningful if buffer_id == -1.
-	Data                 []byte   `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpPacketOut) Reset()         { *m = OfpPacketOut{} }
-func (m *OfpPacketOut) String() string { return proto.CompactTextString(m) }
-func (*OfpPacketOut) ProtoMessage()    {}
-func (*OfpPacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{33}
-}
-
-func (m *OfpPacketOut) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPacketOut.Unmarshal(m, b)
-}
-func (m *OfpPacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPacketOut.Marshal(b, m, deterministic)
-}
-func (m *OfpPacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketOut.Merge(m, src)
-}
-func (m *OfpPacketOut) XXX_Size() int {
-	return xxx_messageInfo_OfpPacketOut.Size(m)
-}
-func (m *OfpPacketOut) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPacketOut.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPacketOut proto.InternalMessageInfo
-
-func (m *OfpPacketOut) GetBufferId() uint32 {
-	if m != nil {
-		return m.BufferId
-	}
-	return 0
-}
-
-func (m *OfpPacketOut) GetInPort() uint32 {
-	if m != nil {
-		return m.InPort
-	}
-	return 0
-}
-
-func (m *OfpPacketOut) GetActions() []*OfpAction {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-func (m *OfpPacketOut) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Packet received on port (datapath -> controller).
-type OfpPacketIn struct {
-	//ofp_header header;
-	BufferId             uint32            `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
-	Reason               OfpPacketInReason `protobuf:"varint,2,opt,name=reason,proto3,enum=openflow_13.OfpPacketInReason" json:"reason,omitempty"`
-	TableId              uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Cookie               uint64            `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	Match                *OfpMatch         `protobuf:"bytes,5,opt,name=match,proto3" json:"match,omitempty"`
-	Data                 []byte            `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpPacketIn) Reset()         { *m = OfpPacketIn{} }
-func (m *OfpPacketIn) String() string { return proto.CompactTextString(m) }
-func (*OfpPacketIn) ProtoMessage()    {}
-func (*OfpPacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{34}
-}
-
-func (m *OfpPacketIn) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPacketIn.Unmarshal(m, b)
-}
-func (m *OfpPacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPacketIn.Marshal(b, m, deterministic)
-}
-func (m *OfpPacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketIn.Merge(m, src)
-}
-func (m *OfpPacketIn) XXX_Size() int {
-	return xxx_messageInfo_OfpPacketIn.Size(m)
-}
-func (m *OfpPacketIn) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPacketIn.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPacketIn proto.InternalMessageInfo
-
-func (m *OfpPacketIn) GetBufferId() uint32 {
-	if m != nil {
-		return m.BufferId
-	}
-	return 0
-}
-
-func (m *OfpPacketIn) GetReason() OfpPacketInReason {
-	if m != nil {
-		return m.Reason
-	}
-	return OfpPacketInReason_OFPR_NO_MATCH
-}
-
-func (m *OfpPacketIn) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpPacketIn) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpPacketIn) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-func (m *OfpPacketIn) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Flow removed (datapath -> controller).
-type OfpFlowRemoved struct {
-	//ofp_header header;
-	Cookie               uint64               `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	Priority             uint32               `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
-	Reason               OfpFlowRemovedReason `protobuf:"varint,3,opt,name=reason,proto3,enum=openflow_13.OfpFlowRemovedReason" json:"reason,omitempty"`
-	TableId              uint32               `protobuf:"varint,4,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	DurationSec          uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	IdleTimeout          uint32               `protobuf:"varint,7,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
-	HardTimeout          uint32               `protobuf:"varint,8,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
-	PacketCount          uint64               `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64               `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	Match                *OfpMatch            `protobuf:"bytes,121,opt,name=match,proto3" json:"match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
-
-func (m *OfpFlowRemoved) Reset()         { *m = OfpFlowRemoved{} }
-func (m *OfpFlowRemoved) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowRemoved) ProtoMessage()    {}
-func (*OfpFlowRemoved) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{35}
-}
-
-func (m *OfpFlowRemoved) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowRemoved.Unmarshal(m, b)
-}
-func (m *OfpFlowRemoved) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowRemoved.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowRemoved) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowRemoved.Merge(m, src)
-}
-func (m *OfpFlowRemoved) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowRemoved.Size(m)
-}
-func (m *OfpFlowRemoved) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowRemoved.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowRemoved proto.InternalMessageInfo
-
-func (m *OfpFlowRemoved) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetPriority() uint32 {
-	if m != nil {
-		return m.Priority
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetReason() OfpFlowRemovedReason {
-	if m != nil {
-		return m.Reason
-	}
-	return OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT
-}
-
-func (m *OfpFlowRemoved) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetIdleTimeout() uint32 {
-	if m != nil {
-		return m.IdleTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetHardTimeout() uint32 {
-	if m != nil {
-		return m.HardTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-// Common header for all meter bands
-type OfpMeterBandHeader struct {
-	Type      OfpMeterBandType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMeterBandType" json:"type,omitempty"`
-	Rate      uint32           `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
-	BurstSize uint32           `protobuf:"varint,3,opt,name=burst_size,json=burstSize,proto3" json:"burst_size,omitempty"`
-	// Types that are valid to be assigned to Data:
-	//	*OfpMeterBandHeader_Drop
-	//	*OfpMeterBandHeader_DscpRemark
-	//	*OfpMeterBandHeader_Experimenter
-	Data                 isOfpMeterBandHeader_Data `protobuf_oneof:"data"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
-}
-
-func (m *OfpMeterBandHeader) Reset()         { *m = OfpMeterBandHeader{} }
-func (m *OfpMeterBandHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandHeader) ProtoMessage()    {}
-func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{36}
-}
-
-func (m *OfpMeterBandHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandHeader.Unmarshal(m, b)
-}
-func (m *OfpMeterBandHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandHeader.Merge(m, src)
-}
-func (m *OfpMeterBandHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandHeader.Size(m)
-}
-func (m *OfpMeterBandHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandHeader proto.InternalMessageInfo
-
-func (m *OfpMeterBandHeader) GetType() OfpMeterBandType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpMeterBandType_OFPMBT_INVALID
-}
-
-func (m *OfpMeterBandHeader) GetRate() uint32 {
-	if m != nil {
-		return m.Rate
-	}
-	return 0
-}
-
-func (m *OfpMeterBandHeader) GetBurstSize() uint32 {
-	if m != nil {
-		return m.BurstSize
-	}
-	return 0
-}
-
-type isOfpMeterBandHeader_Data interface {
-	isOfpMeterBandHeader_Data()
-}
-
-type OfpMeterBandHeader_Drop struct {
-	Drop *OfpMeterBandDrop `protobuf:"bytes,4,opt,name=drop,proto3,oneof"`
-}
-
-type OfpMeterBandHeader_DscpRemark struct {
-	DscpRemark *OfpMeterBandDscpRemark `protobuf:"bytes,5,opt,name=dscp_remark,json=dscpRemark,proto3,oneof"`
-}
-
-type OfpMeterBandHeader_Experimenter struct {
-	Experimenter *OfpMeterBandExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
-}
-
-func (*OfpMeterBandHeader_Drop) isOfpMeterBandHeader_Data() {}
-
-func (*OfpMeterBandHeader_DscpRemark) isOfpMeterBandHeader_Data() {}
-
-func (*OfpMeterBandHeader_Experimenter) isOfpMeterBandHeader_Data() {}
-
-func (m *OfpMeterBandHeader) GetData() isOfpMeterBandHeader_Data {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-func (m *OfpMeterBandHeader) GetDrop() *OfpMeterBandDrop {
-	if x, ok := m.GetData().(*OfpMeterBandHeader_Drop); ok {
-		return x.Drop
-	}
-	return nil
-}
-
-func (m *OfpMeterBandHeader) GetDscpRemark() *OfpMeterBandDscpRemark {
-	if x, ok := m.GetData().(*OfpMeterBandHeader_DscpRemark); ok {
-		return x.DscpRemark
-	}
-	return nil
-}
-
-func (m *OfpMeterBandHeader) GetExperimenter() *OfpMeterBandExperimenter {
-	if x, ok := m.GetData().(*OfpMeterBandHeader_Experimenter); ok {
-		return x.Experimenter
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpMeterBandHeader) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[36].OneofWrappers = []any{
 		(*OfpMeterBandHeader_Drop)(nil),
 		(*OfpMeterBandHeader_DscpRemark)(nil),
 		(*OfpMeterBandHeader_Experimenter)(nil),
 	}
-}
-
-// OFPMBT_DROP band - drop packets
-type OfpMeterBandDrop struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandDrop) Reset()         { *m = OfpMeterBandDrop{} }
-func (m *OfpMeterBandDrop) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandDrop) ProtoMessage()    {}
-func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{37}
-}
-
-func (m *OfpMeterBandDrop) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandDrop.Unmarshal(m, b)
-}
-func (m *OfpMeterBandDrop) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandDrop.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandDrop) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDrop.Merge(m, src)
-}
-func (m *OfpMeterBandDrop) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandDrop.Size(m)
-}
-func (m *OfpMeterBandDrop) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandDrop.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandDrop proto.InternalMessageInfo
-
-// OFPMBT_DSCP_REMARK band - Remark DSCP in the IP header
-type OfpMeterBandDscpRemark struct {
-	PrecLevel            uint32   `protobuf:"varint,1,opt,name=prec_level,json=precLevel,proto3" json:"prec_level,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandDscpRemark) Reset()         { *m = OfpMeterBandDscpRemark{} }
-func (m *OfpMeterBandDscpRemark) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandDscpRemark) ProtoMessage()    {}
-func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{38}
-}
-
-func (m *OfpMeterBandDscpRemark) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandDscpRemark.Unmarshal(m, b)
-}
-func (m *OfpMeterBandDscpRemark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandDscpRemark.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandDscpRemark) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDscpRemark.Merge(m, src)
-}
-func (m *OfpMeterBandDscpRemark) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandDscpRemark.Size(m)
-}
-func (m *OfpMeterBandDscpRemark) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandDscpRemark.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandDscpRemark proto.InternalMessageInfo
-
-func (m *OfpMeterBandDscpRemark) GetPrecLevel() uint32 {
-	if m != nil {
-		return m.PrecLevel
-	}
-	return 0
-}
-
-// OFPMBT_EXPERIMENTER band - Experimenter type.
-// The rest of the band is experimenter-defined.
-type OfpMeterBandExperimenter struct {
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandExperimenter) Reset()         { *m = OfpMeterBandExperimenter{} }
-func (m *OfpMeterBandExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandExperimenter) ProtoMessage()    {}
-func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{39}
-}
-
-func (m *OfpMeterBandExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandExperimenter.Unmarshal(m, b)
-}
-func (m *OfpMeterBandExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandExperimenter.Merge(m, src)
-}
-func (m *OfpMeterBandExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandExperimenter.Size(m)
-}
-func (m *OfpMeterBandExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandExperimenter proto.InternalMessageInfo
-
-func (m *OfpMeterBandExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-// Meter configuration. OFPT_METER_MOD.
-type OfpMeterMod struct {
-	Command              OfpMeterModCommand    `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpMeterModCommand" json:"command,omitempty"`
-	Flags                uint32                `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
-	MeterId              uint32                `protobuf:"varint,3,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	Bands                []*OfpMeterBandHeader `protobuf:"bytes,4,rep,name=bands,proto3" json:"bands,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpMeterMod) Reset()         { *m = OfpMeterMod{} }
-func (m *OfpMeterMod) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterMod) ProtoMessage()    {}
-func (*OfpMeterMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{40}
-}
-
-func (m *OfpMeterMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterMod.Unmarshal(m, b)
-}
-func (m *OfpMeterMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterMod.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMod.Merge(m, src)
-}
-func (m *OfpMeterMod) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterMod.Size(m)
-}
-func (m *OfpMeterMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterMod proto.InternalMessageInfo
-
-func (m *OfpMeterMod) GetCommand() OfpMeterModCommand {
-	if m != nil {
-		return m.Command
-	}
-	return OfpMeterModCommand_OFPMC_ADD
-}
-
-func (m *OfpMeterMod) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpMeterMod) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-func (m *OfpMeterMod) GetBands() []*OfpMeterBandHeader {
-	if m != nil {
-		return m.Bands
-	}
-	return nil
-}
-
-// OFPT_ERROR: Error message (datapath -> controller).
-type OfpErrorMsg struct {
-	Header               *OfpHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
-	Type                 uint32     `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
-	Code                 uint32     `protobuf:"varint,3,opt,name=code,proto3" json:"code,omitempty"`
-	Data                 []byte     `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
-
-func (m *OfpErrorMsg) Reset()         { *m = OfpErrorMsg{} }
-func (m *OfpErrorMsg) String() string { return proto.CompactTextString(m) }
-func (*OfpErrorMsg) ProtoMessage()    {}
-func (*OfpErrorMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{41}
-}
-
-func (m *OfpErrorMsg) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpErrorMsg.Unmarshal(m, b)
-}
-func (m *OfpErrorMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpErrorMsg.Marshal(b, m, deterministic)
-}
-func (m *OfpErrorMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorMsg.Merge(m, src)
-}
-func (m *OfpErrorMsg) XXX_Size() int {
-	return xxx_messageInfo_OfpErrorMsg.Size(m)
-}
-func (m *OfpErrorMsg) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpErrorMsg.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpErrorMsg proto.InternalMessageInfo
-
-func (m *OfpErrorMsg) GetHeader() *OfpHeader {
-	if m != nil {
-		return m.Header
-	}
-	return nil
-}
-
-func (m *OfpErrorMsg) GetType() uint32 {
-	if m != nil {
-		return m.Type
-	}
-	return 0
-}
-
-func (m *OfpErrorMsg) GetCode() uint32 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *OfpErrorMsg) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// OFPET_EXPERIMENTER: Error message (datapath -> controller).
-type OfpErrorExperimenterMsg struct {
-	Type                 uint32   `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
-	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	Experimenter         uint32   `protobuf:"varint,3,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	Data                 []byte   `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpErrorExperimenterMsg) Reset()         { *m = OfpErrorExperimenterMsg{} }
-func (m *OfpErrorExperimenterMsg) String() string { return proto.CompactTextString(m) }
-func (*OfpErrorExperimenterMsg) ProtoMessage()    {}
-func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{42}
-}
-
-func (m *OfpErrorExperimenterMsg) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpErrorExperimenterMsg.Unmarshal(m, b)
-}
-func (m *OfpErrorExperimenterMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpErrorExperimenterMsg.Marshal(b, m, deterministic)
-}
-func (m *OfpErrorExperimenterMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorExperimenterMsg.Merge(m, src)
-}
-func (m *OfpErrorExperimenterMsg) XXX_Size() int {
-	return xxx_messageInfo_OfpErrorExperimenterMsg.Size(m)
-}
-func (m *OfpErrorExperimenterMsg) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpErrorExperimenterMsg.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpErrorExperimenterMsg proto.InternalMessageInfo
-
-func (m *OfpErrorExperimenterMsg) GetType() uint32 {
-	if m != nil {
-		return m.Type
-	}
-	return 0
-}
-
-func (m *OfpErrorExperimenterMsg) GetExpType() uint32 {
-	if m != nil {
-		return m.ExpType
-	}
-	return 0
-}
-
-func (m *OfpErrorExperimenterMsg) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpErrorExperimenterMsg) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-type OfpMultipartRequest struct {
-	//ofp_header header;
-	Type                 OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
-	Flags                uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
-	Body                 []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *OfpMultipartRequest) Reset()         { *m = OfpMultipartRequest{} }
-func (m *OfpMultipartRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpMultipartRequest) ProtoMessage()    {}
-func (*OfpMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{43}
-}
-
-func (m *OfpMultipartRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMultipartRequest.Unmarshal(m, b)
-}
-func (m *OfpMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMultipartRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartRequest.Merge(m, src)
-}
-func (m *OfpMultipartRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpMultipartRequest.Size(m)
-}
-func (m *OfpMultipartRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMultipartRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMultipartRequest proto.InternalMessageInfo
-
-func (m *OfpMultipartRequest) GetType() OfpMultipartType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpMultipartType_OFPMP_DESC
-}
-
-func (m *OfpMultipartRequest) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpMultipartRequest) GetBody() []byte {
-	if m != nil {
-		return m.Body
-	}
-	return nil
-}
-
-type OfpMultipartReply struct {
-	//ofp_header header;
-	Type                 OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
-	Flags                uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
-	Body                 []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *OfpMultipartReply) Reset()         { *m = OfpMultipartReply{} }
-func (m *OfpMultipartReply) String() string { return proto.CompactTextString(m) }
-func (*OfpMultipartReply) ProtoMessage()    {}
-func (*OfpMultipartReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{44}
-}
-
-func (m *OfpMultipartReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMultipartReply.Unmarshal(m, b)
-}
-func (m *OfpMultipartReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMultipartReply.Marshal(b, m, deterministic)
-}
-func (m *OfpMultipartReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartReply.Merge(m, src)
-}
-func (m *OfpMultipartReply) XXX_Size() int {
-	return xxx_messageInfo_OfpMultipartReply.Size(m)
-}
-func (m *OfpMultipartReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMultipartReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMultipartReply proto.InternalMessageInfo
-
-func (m *OfpMultipartReply) GetType() OfpMultipartType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpMultipartType_OFPMP_DESC
-}
-
-func (m *OfpMultipartReply) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpMultipartReply) GetBody() []byte {
-	if m != nil {
-		return m.Body
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_DESC request.  Each entry is a NULL-terminated
-// ASCII string.
-type OfpDesc struct {
-	MfrDesc              string   `protobuf:"bytes,1,opt,name=mfr_desc,json=mfrDesc,proto3" json:"mfr_desc,omitempty"`
-	HwDesc               string   `protobuf:"bytes,2,opt,name=hw_desc,json=hwDesc,proto3" json:"hw_desc,omitempty"`
-	SwDesc               string   `protobuf:"bytes,3,opt,name=sw_desc,json=swDesc,proto3" json:"sw_desc,omitempty"`
-	SerialNum            string   `protobuf:"bytes,4,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"`
-	DpDesc               string   `protobuf:"bytes,5,opt,name=dp_desc,json=dpDesc,proto3" json:"dp_desc,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpDesc) Reset()         { *m = OfpDesc{} }
-func (m *OfpDesc) String() string { return proto.CompactTextString(m) }
-func (*OfpDesc) ProtoMessage()    {}
-func (*OfpDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{45}
-}
-
-func (m *OfpDesc) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpDesc.Unmarshal(m, b)
-}
-func (m *OfpDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpDesc.Marshal(b, m, deterministic)
-}
-func (m *OfpDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpDesc.Merge(m, src)
-}
-func (m *OfpDesc) XXX_Size() int {
-	return xxx_messageInfo_OfpDesc.Size(m)
-}
-func (m *OfpDesc) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpDesc.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpDesc proto.InternalMessageInfo
-
-func (m *OfpDesc) GetMfrDesc() string {
-	if m != nil {
-		return m.MfrDesc
-	}
-	return ""
-}
-
-func (m *OfpDesc) GetHwDesc() string {
-	if m != nil {
-		return m.HwDesc
-	}
-	return ""
-}
-
-func (m *OfpDesc) GetSwDesc() string {
-	if m != nil {
-		return m.SwDesc
-	}
-	return ""
-}
-
-func (m *OfpDesc) GetSerialNum() string {
-	if m != nil {
-		return m.SerialNum
-	}
-	return ""
-}
-
-func (m *OfpDesc) GetDpDesc() string {
-	if m != nil {
-		return m.DpDesc
-	}
-	return ""
-}
-
-// Body for ofp_multipart_request of type OFPMP_FLOW.
-type OfpFlowStatsRequest struct {
-	TableId              uint32    `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	OutPort              uint32    `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
-	OutGroup             uint32    `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
-	Cookie               uint64    `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	CookieMask           uint64    `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
-	Match                *OfpMatch `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *OfpFlowStatsRequest) Reset()         { *m = OfpFlowStatsRequest{} }
-func (m *OfpFlowStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowStatsRequest) ProtoMessage()    {}
-func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{46}
-}
-
-func (m *OfpFlowStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpFlowStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStatsRequest.Merge(m, src)
-}
-func (m *OfpFlowStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowStatsRequest.Size(m)
-}
-func (m *OfpFlowStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowStatsRequest proto.InternalMessageInfo
-
-func (m *OfpFlowStatsRequest) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetOutPort() uint32 {
-	if m != nil {
-		return m.OutPort
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetOutGroup() uint32 {
-	if m != nil {
-		return m.OutGroup
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetCookieMask() uint64 {
-	if m != nil {
-		return m.CookieMask
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_FLOW request.
-type OfpFlowStats struct {
-	Id                   uint64            `protobuf:"varint,14,opt,name=id,proto3" json:"id,omitempty"`
-	TableId              uint32            `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	DurationSec          uint32            `protobuf:"varint,2,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32            `protobuf:"varint,3,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	Priority             uint32            `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`
-	IdleTimeout          uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
-	HardTimeout          uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
-	Flags                uint32            `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"`
-	Cookie               uint64            `protobuf:"varint,8,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	PacketCount          uint64            `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64            `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	Match                *OfpMatch         `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`
-	Instructions         []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpFlowStats) Reset()         { *m = OfpFlowStats{} }
-func (m *OfpFlowStats) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowStats) ProtoMessage()    {}
-func (*OfpFlowStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{47}
-}
-
-func (m *OfpFlowStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowStats.Unmarshal(m, b)
-}
-func (m *OfpFlowStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowStats.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStats.Merge(m, src)
-}
-func (m *OfpFlowStats) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowStats.Size(m)
-}
-func (m *OfpFlowStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowStats proto.InternalMessageInfo
-
-func (m *OfpFlowStats) GetId() uint64 {
-	if m != nil {
-		return m.Id
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetPriority() uint32 {
-	if m != nil {
-		return m.Priority
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetIdleTimeout() uint32 {
-	if m != nil {
-		return m.IdleTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetHardTimeout() uint32 {
-	if m != nil {
-		return m.HardTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-func (m *OfpFlowStats) GetInstructions() []*OfpInstruction {
-	if m != nil {
-		return m.Instructions
-	}
-	return nil
-}
-
-// Body for ofp_multipart_request of type OFPMP_AGGREGATE.
-type OfpAggregateStatsRequest struct {
-	TableId              uint32    `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	OutPort              uint32    `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
-	OutGroup             uint32    `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
-	Cookie               uint64    `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	CookieMask           uint64    `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
-	Match                *OfpMatch `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *OfpAggregateStatsRequest) Reset()         { *m = OfpAggregateStatsRequest{} }
-func (m *OfpAggregateStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpAggregateStatsRequest) ProtoMessage()    {}
-func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{48}
-}
-
-func (m *OfpAggregateStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAggregateStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpAggregateStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAggregateStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpAggregateStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsRequest.Merge(m, src)
-}
-func (m *OfpAggregateStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpAggregateStatsRequest.Size(m)
-}
-func (m *OfpAggregateStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAggregateStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAggregateStatsRequest proto.InternalMessageInfo
-
-func (m *OfpAggregateStatsRequest) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetOutPort() uint32 {
-	if m != nil {
-		return m.OutPort
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetOutGroup() uint32 {
-	if m != nil {
-		return m.OutGroup
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetCookieMask() uint64 {
-	if m != nil {
-		return m.CookieMask
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_AGGREGATE request.
-type OfpAggregateStatsReply struct {
-	PacketCount          uint64   `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64   `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	FlowCount            uint32   `protobuf:"varint,3,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpAggregateStatsReply) Reset()         { *m = OfpAggregateStatsReply{} }
-func (m *OfpAggregateStatsReply) String() string { return proto.CompactTextString(m) }
-func (*OfpAggregateStatsReply) ProtoMessage()    {}
-func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{49}
-}
-
-func (m *OfpAggregateStatsReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAggregateStatsReply.Unmarshal(m, b)
-}
-func (m *OfpAggregateStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAggregateStatsReply.Marshal(b, m, deterministic)
-}
-func (m *OfpAggregateStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsReply.Merge(m, src)
-}
-func (m *OfpAggregateStatsReply) XXX_Size() int {
-	return xxx_messageInfo_OfpAggregateStatsReply.Size(m)
-}
-func (m *OfpAggregateStatsReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAggregateStatsReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAggregateStatsReply proto.InternalMessageInfo
-
-func (m *OfpAggregateStatsReply) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsReply) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsReply) GetFlowCount() uint32 {
-	if m != nil {
-		return m.FlowCount
-	}
-	return 0
-}
-
-// Common header for all Table Feature Properties
-type OfpTableFeatureProperty struct {
-	Type OfpTableFeaturePropType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpTableFeaturePropType" json:"type,omitempty"`
-	// Types that are valid to be assigned to Value:
-	//	*OfpTableFeatureProperty_Instructions
-	//	*OfpTableFeatureProperty_NextTables
-	//	*OfpTableFeatureProperty_Actions
-	//	*OfpTableFeatureProperty_Oxm
-	//	*OfpTableFeatureProperty_Experimenter
-	Value                isOfpTableFeatureProperty_Value `protobuf_oneof:"value"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
-}
-
-func (m *OfpTableFeatureProperty) Reset()         { *m = OfpTableFeatureProperty{} }
-func (m *OfpTableFeatureProperty) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeatureProperty) ProtoMessage()    {}
-func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{50}
-}
-
-func (m *OfpTableFeatureProperty) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeatureProperty.Unmarshal(m, b)
-}
-func (m *OfpTableFeatureProperty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeatureProperty.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeatureProperty) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatureProperty.Merge(m, src)
-}
-func (m *OfpTableFeatureProperty) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeatureProperty.Size(m)
-}
-func (m *OfpTableFeatureProperty) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeatureProperty.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeatureProperty proto.InternalMessageInfo
-
-func (m *OfpTableFeatureProperty) GetType() OfpTableFeaturePropType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS
-}
-
-type isOfpTableFeatureProperty_Value interface {
-	isOfpTableFeatureProperty_Value()
-}
-
-type OfpTableFeatureProperty_Instructions struct {
-	Instructions *OfpTableFeaturePropInstructions `protobuf:"bytes,2,opt,name=instructions,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_NextTables struct {
-	NextTables *OfpTableFeaturePropNextTables `protobuf:"bytes,3,opt,name=next_tables,json=nextTables,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_Actions struct {
-	Actions *OfpTableFeaturePropActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_Oxm struct {
-	Oxm *OfpTableFeaturePropOxm `protobuf:"bytes,5,opt,name=oxm,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_Experimenter struct {
-	Experimenter *OfpTableFeaturePropExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
-}
-
-func (*OfpTableFeatureProperty_Instructions) isOfpTableFeatureProperty_Value() {}
-
-func (*OfpTableFeatureProperty_NextTables) isOfpTableFeatureProperty_Value() {}
-
-func (*OfpTableFeatureProperty_Actions) isOfpTableFeatureProperty_Value() {}
-
-func (*OfpTableFeatureProperty_Oxm) isOfpTableFeatureProperty_Value() {}
-
-func (*OfpTableFeatureProperty_Experimenter) isOfpTableFeatureProperty_Value() {}
-
-func (m *OfpTableFeatureProperty) GetValue() isOfpTableFeatureProperty_Value {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetInstructions() *OfpTableFeaturePropInstructions {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Instructions); ok {
-		return x.Instructions
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetNextTables() *OfpTableFeaturePropNextTables {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_NextTables); ok {
-		return x.NextTables
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetActions() *OfpTableFeaturePropActions {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Actions); ok {
-		return x.Actions
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetOxm() *OfpTableFeaturePropOxm {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Oxm); ok {
-		return x.Oxm
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetExperimenter() *OfpTableFeaturePropExperimenter {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Experimenter); ok {
-		return x.Experimenter
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpTableFeatureProperty) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[50].OneofWrappers = []any{
 		(*OfpTableFeatureProperty_Instructions)(nil),
 		(*OfpTableFeatureProperty_NextTables)(nil),
 		(*OfpTableFeatureProperty_Actions)(nil),
 		(*OfpTableFeatureProperty_Oxm)(nil),
 		(*OfpTableFeatureProperty_Experimenter)(nil),
 	}
-}
-
-// Instructions property
-type OfpTableFeaturePropInstructions struct {
-	// One of OFPTFPT_INSTRUCTIONS,
-	//OFPTFPT_INSTRUCTIONS_MISS.
-	Instructions         []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions,proto3" json:"instructions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpTableFeaturePropInstructions) Reset()         { *m = OfpTableFeaturePropInstructions{} }
-func (m *OfpTableFeaturePropInstructions) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropInstructions) ProtoMessage()    {}
-func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{51}
-}
-
-func (m *OfpTableFeaturePropInstructions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropInstructions.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropInstructions.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropInstructions.Merge(m, src)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropInstructions.Size(m)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropInstructions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropInstructions proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropInstructions) GetInstructions() []*OfpInstruction {
-	if m != nil {
-		return m.Instructions
-	}
-	return nil
-}
-
-// Next Tables property
-type OfpTableFeaturePropNextTables struct {
-	// One of OFPTFPT_NEXT_TABLES,
-	//OFPTFPT_NEXT_TABLES_MISS.
-	NextTableIds         []uint32 `protobuf:"varint,1,rep,packed,name=next_table_ids,json=nextTableIds,proto3" json:"next_table_ids,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableFeaturePropNextTables) Reset()         { *m = OfpTableFeaturePropNextTables{} }
-func (m *OfpTableFeaturePropNextTables) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropNextTables) ProtoMessage()    {}
-func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{52}
-}
-
-func (m *OfpTableFeaturePropNextTables) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropNextTables.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropNextTables.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropNextTables.Merge(m, src)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropNextTables.Size(m)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropNextTables.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropNextTables proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropNextTables) GetNextTableIds() []uint32 {
-	if m != nil {
-		return m.NextTableIds
-	}
-	return nil
-}
-
-// Actions property
-type OfpTableFeaturePropActions struct {
-	// One of OFPTFPT_WRITE_ACTIONS,
-	//OFPTFPT_WRITE_ACTIONS_MISS,
-	//OFPTFPT_APPLY_ACTIONS,
-	//OFPTFPT_APPLY_ACTIONS_MISS.
-	Actions              []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpTableFeaturePropActions) Reset()         { *m = OfpTableFeaturePropActions{} }
-func (m *OfpTableFeaturePropActions) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropActions) ProtoMessage()    {}
-func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{53}
-}
-
-func (m *OfpTableFeaturePropActions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropActions.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropActions.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropActions.Merge(m, src)
-}
-func (m *OfpTableFeaturePropActions) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropActions.Size(m)
-}
-func (m *OfpTableFeaturePropActions) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropActions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropActions proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropActions) GetActions() []*OfpAction {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-// Match, Wildcard or Set-Field property
-type OfpTableFeaturePropOxm struct {
-	// TODO is this a uint32???
-	OxmIds               []uint32 `protobuf:"varint,3,rep,packed,name=oxm_ids,json=oxmIds,proto3" json:"oxm_ids,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableFeaturePropOxm) Reset()         { *m = OfpTableFeaturePropOxm{} }
-func (m *OfpTableFeaturePropOxm) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropOxm) ProtoMessage()    {}
-func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{54}
-}
-
-func (m *OfpTableFeaturePropOxm) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropOxm.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropOxm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropOxm.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropOxm) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropOxm.Merge(m, src)
-}
-func (m *OfpTableFeaturePropOxm) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropOxm.Size(m)
-}
-func (m *OfpTableFeaturePropOxm) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropOxm.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropOxm proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropOxm) GetOxmIds() []uint32 {
-	if m != nil {
-		return m.OxmIds
-	}
-	return nil
-}
-
-// Experimenter table feature property
-type OfpTableFeaturePropExperimenter struct {
-	// One of OFPTFPT_EXPERIMENTER,
-	//OFPTFPT_EXPERIMENTER_MISS.
-	Experimenter         uint32   `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	ExpType              uint32   `protobuf:"varint,3,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	ExperimenterData     []uint32 `protobuf:"varint,4,rep,packed,name=experimenter_data,json=experimenterData,proto3" json:"experimenter_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableFeaturePropExperimenter) Reset()         { *m = OfpTableFeaturePropExperimenter{} }
-func (m *OfpTableFeaturePropExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropExperimenter) ProtoMessage()    {}
-func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{55}
-}
-
-func (m *OfpTableFeaturePropExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropExperimenter.Merge(m, src)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Size(m)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropExperimenter proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpTableFeaturePropExperimenter) GetExpType() uint32 {
-	if m != nil {
-		return m.ExpType
-	}
-	return 0
-}
-
-func (m *OfpTableFeaturePropExperimenter) GetExperimenterData() []uint32 {
-	if m != nil {
-		return m.ExperimenterData
-	}
-	return nil
-}
-
-// Body for ofp_multipart_request of type OFPMP_TABLE_FEATURES./
-// Body of reply to OFPMP_TABLE_FEATURES request.
-type OfpTableFeatures struct {
-	TableId       uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Name          string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	MetadataMatch uint64 `protobuf:"varint,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"`
-	MetadataWrite uint64 `protobuf:"varint,4,opt,name=metadata_write,json=metadataWrite,proto3" json:"metadata_write,omitempty"`
-	Config        uint32 `protobuf:"varint,5,opt,name=config,proto3" json:"config,omitempty"`
-	MaxEntries    uint32 `protobuf:"varint,6,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"`
-	// Table Feature Property list
-	Properties           []*OfpTableFeatureProperty `protobuf:"bytes,7,rep,name=properties,proto3" json:"properties,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
-	XXX_unrecognized     []byte                     `json:"-"`
-	XXX_sizecache        int32                      `json:"-"`
-}
-
-func (m *OfpTableFeatures) Reset()         { *m = OfpTableFeatures{} }
-func (m *OfpTableFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeatures) ProtoMessage()    {}
-func (*OfpTableFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{56}
-}
-
-func (m *OfpTableFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeatures.Unmarshal(m, b)
-}
-func (m *OfpTableFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatures.Merge(m, src)
-}
-func (m *OfpTableFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeatures.Size(m)
-}
-func (m *OfpTableFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeatures proto.InternalMessageInfo
-
-func (m *OfpTableFeatures) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-func (m *OfpTableFeatures) GetMetadataMatch() uint64 {
-	if m != nil {
-		return m.MetadataMatch
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetMetadataWrite() uint64 {
-	if m != nil {
-		return m.MetadataWrite
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetMaxEntries() uint32 {
-	if m != nil {
-		return m.MaxEntries
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetProperties() []*OfpTableFeatureProperty {
-	if m != nil {
-		return m.Properties
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_TABLE request.
-type OfpTableStats struct {
-	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	ActiveCount          uint32   `protobuf:"varint,2,opt,name=active_count,json=activeCount,proto3" json:"active_count,omitempty"`
-	LookupCount          uint64   `protobuf:"varint,3,opt,name=lookup_count,json=lookupCount,proto3" json:"lookup_count,omitempty"`
-	MatchedCount         uint64   `protobuf:"varint,4,opt,name=matched_count,json=matchedCount,proto3" json:"matched_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableStats) Reset()         { *m = OfpTableStats{} }
-func (m *OfpTableStats) String() string { return proto.CompactTextString(m) }
-func (*OfpTableStats) ProtoMessage()    {}
-func (*OfpTableStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{57}
-}
-
-func (m *OfpTableStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableStats.Unmarshal(m, b)
-}
-func (m *OfpTableStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableStats.Marshal(b, m, deterministic)
-}
-func (m *OfpTableStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableStats.Merge(m, src)
-}
-func (m *OfpTableStats) XXX_Size() int {
-	return xxx_messageInfo_OfpTableStats.Size(m)
-}
-func (m *OfpTableStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableStats proto.InternalMessageInfo
-
-func (m *OfpTableStats) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpTableStats) GetActiveCount() uint32 {
-	if m != nil {
-		return m.ActiveCount
-	}
-	return 0
-}
-
-func (m *OfpTableStats) GetLookupCount() uint64 {
-	if m != nil {
-		return m.LookupCount
-	}
-	return 0
-}
-
-func (m *OfpTableStats) GetMatchedCount() uint64 {
-	if m != nil {
-		return m.MatchedCount
-	}
-	return 0
-}
-
-// Body for ofp_multipart_request of type OFPMP_PORT.
-type OfpPortStatsRequest struct {
-	PortNo               uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpPortStatsRequest) Reset()         { *m = OfpPortStatsRequest{} }
-func (m *OfpPortStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpPortStatsRequest) ProtoMessage()    {}
-func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{58}
-}
-
-func (m *OfpPortStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpPortStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpPortStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatsRequest.Merge(m, src)
-}
-func (m *OfpPortStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpPortStatsRequest.Size(m)
-}
-func (m *OfpPortStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortStatsRequest proto.InternalMessageInfo
-
-func (m *OfpPortStatsRequest) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-// Body of reply to OFPMP_PORT request. If a counter is unsupported, set
-// the field to all ones.
-type OfpPortStats struct {
-	PortNo               uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	RxPackets            uint64   `protobuf:"varint,2,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,3,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	RxBytes              uint64   `protobuf:"varint,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
-	TxBytes              uint64   `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	RxDropped            uint64   `protobuf:"varint,6,opt,name=rx_dropped,json=rxDropped,proto3" json:"rx_dropped,omitempty"`
-	TxDropped            uint64   `protobuf:"varint,7,opt,name=tx_dropped,json=txDropped,proto3" json:"tx_dropped,omitempty"`
-	RxErrors             uint64   `protobuf:"varint,8,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"`
-	TxErrors             uint64   `protobuf:"varint,9,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
-	RxFrameErr           uint64   `protobuf:"varint,10,opt,name=rx_frame_err,json=rxFrameErr,proto3" json:"rx_frame_err,omitempty"`
-	RxOverErr            uint64   `protobuf:"varint,11,opt,name=rx_over_err,json=rxOverErr,proto3" json:"rx_over_err,omitempty"`
-	RxCrcErr             uint64   `protobuf:"varint,12,opt,name=rx_crc_err,json=rxCrcErr,proto3" json:"rx_crc_err,omitempty"`
-	Collisions           uint64   `protobuf:"varint,13,opt,name=collisions,proto3" json:"collisions,omitempty"`
-	DurationSec          uint32   `protobuf:"varint,14,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32   `protobuf:"varint,15,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpPortStats) Reset()         { *m = OfpPortStats{} }
-func (m *OfpPortStats) String() string { return proto.CompactTextString(m) }
-func (*OfpPortStats) ProtoMessage()    {}
-func (*OfpPortStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{59}
-}
-
-func (m *OfpPortStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortStats.Unmarshal(m, b)
-}
-func (m *OfpPortStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortStats.Marshal(b, m, deterministic)
-}
-func (m *OfpPortStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStats.Merge(m, src)
-}
-func (m *OfpPortStats) XXX_Size() int {
-	return xxx_messageInfo_OfpPortStats.Size(m)
-}
-func (m *OfpPortStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortStats proto.InternalMessageInfo
-
-func (m *OfpPortStats) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxDropped() uint64 {
-	if m != nil {
-		return m.RxDropped
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetTxDropped() uint64 {
-	if m != nil {
-		return m.TxDropped
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxErrors() uint64 {
-	if m != nil {
-		return m.RxErrors
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetTxErrors() uint64 {
-	if m != nil {
-		return m.TxErrors
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxFrameErr() uint64 {
-	if m != nil {
-		return m.RxFrameErr
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxOverErr() uint64 {
-	if m != nil {
-		return m.RxOverErr
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxCrcErr() uint64 {
-	if m != nil {
-		return m.RxCrcErr
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetCollisions() uint64 {
-	if m != nil {
-		return m.Collisions
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-// Body of OFPMP_GROUP request.
-type OfpGroupStatsRequest struct {
-	GroupId              uint32   `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpGroupStatsRequest) Reset()         { *m = OfpGroupStatsRequest{} }
-func (m *OfpGroupStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupStatsRequest) ProtoMessage()    {}
-func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{60}
-}
-
-func (m *OfpGroupStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpGroupStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStatsRequest.Merge(m, src)
-}
-func (m *OfpGroupStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupStatsRequest.Size(m)
-}
-func (m *OfpGroupStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupStatsRequest proto.InternalMessageInfo
-
-func (m *OfpGroupStatsRequest) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-// Used in group stats replies.
-type OfpBucketCounter struct {
-	PacketCount          uint64   `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64   `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpBucketCounter) Reset()         { *m = OfpBucketCounter{} }
-func (m *OfpBucketCounter) String() string { return proto.CompactTextString(m) }
-func (*OfpBucketCounter) ProtoMessage()    {}
-func (*OfpBucketCounter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{61}
-}
-
-func (m *OfpBucketCounter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpBucketCounter.Unmarshal(m, b)
-}
-func (m *OfpBucketCounter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpBucketCounter.Marshal(b, m, deterministic)
-}
-func (m *OfpBucketCounter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucketCounter.Merge(m, src)
-}
-func (m *OfpBucketCounter) XXX_Size() int {
-	return xxx_messageInfo_OfpBucketCounter.Size(m)
-}
-func (m *OfpBucketCounter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpBucketCounter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpBucketCounter proto.InternalMessageInfo
-
-func (m *OfpBucketCounter) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpBucketCounter) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-// Body of reply to OFPMP_GROUP request.
-type OfpGroupStats struct {
-	GroupId              uint32              `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	RefCount             uint32              `protobuf:"varint,2,opt,name=ref_count,json=refCount,proto3" json:"ref_count,omitempty"`
-	PacketCount          uint64              `protobuf:"varint,3,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64              `protobuf:"varint,4,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	DurationSec          uint32              `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32              `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	BucketStats          []*OfpBucketCounter `protobuf:"bytes,7,rep,name=bucket_stats,json=bucketStats,proto3" json:"bucket_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpGroupStats) Reset()         { *m = OfpGroupStats{} }
-func (m *OfpGroupStats) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupStats) ProtoMessage()    {}
-func (*OfpGroupStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{62}
-}
-
-func (m *OfpGroupStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupStats.Unmarshal(m, b)
-}
-func (m *OfpGroupStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupStats.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStats.Merge(m, src)
-}
-func (m *OfpGroupStats) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupStats.Size(m)
-}
-func (m *OfpGroupStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupStats proto.InternalMessageInfo
-
-func (m *OfpGroupStats) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetRefCount() uint32 {
-	if m != nil {
-		return m.RefCount
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetBucketStats() []*OfpBucketCounter {
-	if m != nil {
-		return m.BucketStats
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_GROUP_DESC request.
-type OfpGroupDesc struct {
-	Type                 OfpGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
-	GroupId              uint32       `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	Buckets              []*OfpBucket `protobuf:"bytes,3,rep,name=buckets,proto3" json:"buckets,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpGroupDesc) Reset()         { *m = OfpGroupDesc{} }
-func (m *OfpGroupDesc) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupDesc) ProtoMessage()    {}
-func (*OfpGroupDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{63}
-}
-
-func (m *OfpGroupDesc) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupDesc.Unmarshal(m, b)
-}
-func (m *OfpGroupDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupDesc.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupDesc.Merge(m, src)
-}
-func (m *OfpGroupDesc) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupDesc.Size(m)
-}
-func (m *OfpGroupDesc) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupDesc.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupDesc proto.InternalMessageInfo
-
-func (m *OfpGroupDesc) GetType() OfpGroupType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpGroupType_OFPGT_ALL
-}
-
-func (m *OfpGroupDesc) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-func (m *OfpGroupDesc) GetBuckets() []*OfpBucket {
-	if m != nil {
-		return m.Buckets
-	}
-	return nil
-}
-
-type OfpGroupEntry struct {
-	Desc                 *OfpGroupDesc  `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
-	Stats                *OfpGroupStats `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
-}
-
-func (m *OfpGroupEntry) Reset()         { *m = OfpGroupEntry{} }
-func (m *OfpGroupEntry) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupEntry) ProtoMessage()    {}
-func (*OfpGroupEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{64}
-}
-
-func (m *OfpGroupEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupEntry.Unmarshal(m, b)
-}
-func (m *OfpGroupEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupEntry.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupEntry.Merge(m, src)
-}
-func (m *OfpGroupEntry) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupEntry.Size(m)
-}
-func (m *OfpGroupEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupEntry proto.InternalMessageInfo
-
-func (m *OfpGroupEntry) GetDesc() *OfpGroupDesc {
-	if m != nil {
-		return m.Desc
-	}
-	return nil
-}
-
-func (m *OfpGroupEntry) GetStats() *OfpGroupStats {
-	if m != nil {
-		return m.Stats
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_GROUP_FEATURES request. Group features.
-type OfpGroupFeatures struct {
-	Types                uint32   `protobuf:"varint,1,opt,name=types,proto3" json:"types,omitempty"`
-	Capabilities         uint32   `protobuf:"varint,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
-	MaxGroups            []uint32 `protobuf:"varint,3,rep,packed,name=max_groups,json=maxGroups,proto3" json:"max_groups,omitempty"`
-	Actions              []uint32 `protobuf:"varint,4,rep,packed,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpGroupFeatures) Reset()         { *m = OfpGroupFeatures{} }
-func (m *OfpGroupFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupFeatures) ProtoMessage()    {}
-func (*OfpGroupFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{65}
-}
-
-func (m *OfpGroupFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupFeatures.Unmarshal(m, b)
-}
-func (m *OfpGroupFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupFeatures.Merge(m, src)
-}
-func (m *OfpGroupFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupFeatures.Size(m)
-}
-func (m *OfpGroupFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupFeatures proto.InternalMessageInfo
-
-func (m *OfpGroupFeatures) GetTypes() uint32 {
-	if m != nil {
-		return m.Types
-	}
-	return 0
-}
-
-func (m *OfpGroupFeatures) GetCapabilities() uint32 {
-	if m != nil {
-		return m.Capabilities
-	}
-	return 0
-}
-
-func (m *OfpGroupFeatures) GetMaxGroups() []uint32 {
-	if m != nil {
-		return m.MaxGroups
-	}
-	return nil
-}
-
-func (m *OfpGroupFeatures) GetActions() []uint32 {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-// Body of OFPMP_METER and OFPMP_METER_CONFIG requests.
-type OfpMeterMultipartRequest struct {
-	MeterId              uint32   `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterMultipartRequest) Reset()         { *m = OfpMeterMultipartRequest{} }
-func (m *OfpMeterMultipartRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterMultipartRequest) ProtoMessage()    {}
-func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{66}
-}
-
-func (m *OfpMeterMultipartRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterMultipartRequest.Unmarshal(m, b)
-}
-func (m *OfpMeterMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterMultipartRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMultipartRequest.Merge(m, src)
-}
-func (m *OfpMeterMultipartRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterMultipartRequest.Size(m)
-}
-func (m *OfpMeterMultipartRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterMultipartRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterMultipartRequest proto.InternalMessageInfo
-
-func (m *OfpMeterMultipartRequest) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-// Statistics for each meter band
-type OfpMeterBandStats struct {
-	PacketBandCount      uint64   `protobuf:"varint,1,opt,name=packet_band_count,json=packetBandCount,proto3" json:"packet_band_count,omitempty"`
-	ByteBandCount        uint64   `protobuf:"varint,2,opt,name=byte_band_count,json=byteBandCount,proto3" json:"byte_band_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandStats) Reset()         { *m = OfpMeterBandStats{} }
-func (m *OfpMeterBandStats) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandStats) ProtoMessage()    {}
-func (*OfpMeterBandStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{67}
-}
-
-func (m *OfpMeterBandStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandStats.Unmarshal(m, b)
-}
-func (m *OfpMeterBandStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandStats.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandStats.Merge(m, src)
-}
-func (m *OfpMeterBandStats) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandStats.Size(m)
-}
-func (m *OfpMeterBandStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandStats proto.InternalMessageInfo
-
-func (m *OfpMeterBandStats) GetPacketBandCount() uint64 {
-	if m != nil {
-		return m.PacketBandCount
-	}
-	return 0
-}
-
-func (m *OfpMeterBandStats) GetByteBandCount() uint64 {
-	if m != nil {
-		return m.ByteBandCount
-	}
-	return 0
-}
-
-// Body of reply to OFPMP_METER request. Meter statistics.
-type OfpMeterStats struct {
-	MeterId              uint32               `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	FlowCount            uint32               `protobuf:"varint,2,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`
-	PacketInCount        uint64               `protobuf:"varint,3,opt,name=packet_in_count,json=packetInCount,proto3" json:"packet_in_count,omitempty"`
-	ByteInCount          uint64               `protobuf:"varint,4,opt,name=byte_in_count,json=byteInCount,proto3" json:"byte_in_count,omitempty"`
-	DurationSec          uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	BandStats            []*OfpMeterBandStats `protobuf:"bytes,7,rep,name=band_stats,json=bandStats,proto3" json:"band_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
-
-func (m *OfpMeterStats) Reset()         { *m = OfpMeterStats{} }
-func (m *OfpMeterStats) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterStats) ProtoMessage()    {}
-func (*OfpMeterStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{68}
-}
-
-func (m *OfpMeterStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterStats.Unmarshal(m, b)
-}
-func (m *OfpMeterStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterStats.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterStats.Merge(m, src)
-}
-func (m *OfpMeterStats) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterStats.Size(m)
-}
-func (m *OfpMeterStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterStats proto.InternalMessageInfo
-
-func (m *OfpMeterStats) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetFlowCount() uint32 {
-	if m != nil {
-		return m.FlowCount
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetPacketInCount() uint64 {
-	if m != nil {
-		return m.PacketInCount
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetByteInCount() uint64 {
-	if m != nil {
-		return m.ByteInCount
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetBandStats() []*OfpMeterBandStats {
-	if m != nil {
-		return m.BandStats
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_METER_CONFIG request. Meter configuration.
-type OfpMeterConfig struct {
-	Flags                uint32                `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
-	MeterId              uint32                `protobuf:"varint,2,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	Bands                []*OfpMeterBandHeader `protobuf:"bytes,3,rep,name=bands,proto3" json:"bands,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpMeterConfig) Reset()         { *m = OfpMeterConfig{} }
-func (m *OfpMeterConfig) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterConfig) ProtoMessage()    {}
-func (*OfpMeterConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{69}
-}
-
-func (m *OfpMeterConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterConfig.Unmarshal(m, b)
-}
-func (m *OfpMeterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterConfig.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterConfig.Merge(m, src)
-}
-func (m *OfpMeterConfig) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterConfig.Size(m)
-}
-func (m *OfpMeterConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterConfig proto.InternalMessageInfo
-
-func (m *OfpMeterConfig) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpMeterConfig) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-func (m *OfpMeterConfig) GetBands() []*OfpMeterBandHeader {
-	if m != nil {
-		return m.Bands
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_METER_FEATURES request. Meter features.
-type OfpMeterFeatures struct {
-	MaxMeter             uint32   `protobuf:"varint,1,opt,name=max_meter,json=maxMeter,proto3" json:"max_meter,omitempty"`
-	BandTypes            uint32   `protobuf:"varint,2,opt,name=band_types,json=bandTypes,proto3" json:"band_types,omitempty"`
-	Capabilities         uint32   `protobuf:"varint,3,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
-	MaxBands             uint32   `protobuf:"varint,4,opt,name=max_bands,json=maxBands,proto3" json:"max_bands,omitempty"`
-	MaxColor             uint32   `protobuf:"varint,5,opt,name=max_color,json=maxColor,proto3" json:"max_color,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterFeatures) Reset()         { *m = OfpMeterFeatures{} }
-func (m *OfpMeterFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterFeatures) ProtoMessage()    {}
-func (*OfpMeterFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{70}
-}
-
-func (m *OfpMeterFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterFeatures.Unmarshal(m, b)
-}
-func (m *OfpMeterFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterFeatures.Merge(m, src)
-}
-func (m *OfpMeterFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterFeatures.Size(m)
-}
-func (m *OfpMeterFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterFeatures proto.InternalMessageInfo
-
-func (m *OfpMeterFeatures) GetMaxMeter() uint32 {
-	if m != nil {
-		return m.MaxMeter
-	}
-	return 0
-}
-
-func (m *OfpMeterFeatures) GetBandTypes() uint32 {
-	if m != nil {
-		return m.BandTypes
-	}
-	return 0
-}
-
-func (m *OfpMeterFeatures) GetCapabilities() uint32 {
-	if m != nil {
-		return m.Capabilities
-	}
-	return 0
-}
-
-func (m *OfpMeterFeatures) GetMaxBands() uint32 {
-	if m != nil {
-		return m.MaxBands
-	}
-	return 0
-}
-
-func (m *OfpMeterFeatures) GetMaxColor() uint32 {
-	if m != nil {
-		return m.MaxColor
-	}
-	return 0
-}
-
-type OfpMeterEntry struct {
-	Config               *OfpMeterConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
-	Stats                *OfpMeterStats  `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *OfpMeterEntry) Reset()         { *m = OfpMeterEntry{} }
-func (m *OfpMeterEntry) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterEntry) ProtoMessage()    {}
-func (*OfpMeterEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{71}
-}
-
-func (m *OfpMeterEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterEntry.Unmarshal(m, b)
-}
-func (m *OfpMeterEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterEntry.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterEntry.Merge(m, src)
-}
-func (m *OfpMeterEntry) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterEntry.Size(m)
-}
-func (m *OfpMeterEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterEntry proto.InternalMessageInfo
-
-func (m *OfpMeterEntry) GetConfig() *OfpMeterConfig {
-	if m != nil {
-		return m.Config
-	}
-	return nil
-}
-
-func (m *OfpMeterEntry) GetStats() *OfpMeterStats {
-	if m != nil {
-		return m.Stats
-	}
-	return nil
-}
-
-// Body for ofp_multipart_request/reply of type OFPMP_EXPERIMENTER.
-type OfpExperimenterMultipartHeader struct {
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpExperimenterMultipartHeader) Reset()         { *m = OfpExperimenterMultipartHeader{} }
-func (m *OfpExperimenterMultipartHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpExperimenterMultipartHeader) ProtoMessage()    {}
-func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{72}
-}
-
-func (m *OfpExperimenterMultipartHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpExperimenterMultipartHeader.Unmarshal(m, b)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpExperimenterMultipartHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterMultipartHeader.Merge(m, src)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpExperimenterMultipartHeader.Size(m)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpExperimenterMultipartHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpExperimenterMultipartHeader proto.InternalMessageInfo
-
-func (m *OfpExperimenterMultipartHeader) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpExperimenterMultipartHeader) GetExpType() uint32 {
-	if m != nil {
-		return m.ExpType
-	}
-	return 0
-}
-
-func (m *OfpExperimenterMultipartHeader) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Experimenter extension.
-type OfpExperimenterHeader struct {
-	//ofp_header header;  /* Type OFPT_EXPERIMENTER. */
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpExperimenterHeader) Reset()         { *m = OfpExperimenterHeader{} }
-func (m *OfpExperimenterHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpExperimenterHeader) ProtoMessage()    {}
-func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{73}
-}
-
-func (m *OfpExperimenterHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpExperimenterHeader.Unmarshal(m, b)
-}
-func (m *OfpExperimenterHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpExperimenterHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpExperimenterHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterHeader.Merge(m, src)
-}
-func (m *OfpExperimenterHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpExperimenterHeader.Size(m)
-}
-func (m *OfpExperimenterHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpExperimenterHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpExperimenterHeader proto.InternalMessageInfo
-
-func (m *OfpExperimenterHeader) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpExperimenterHeader) GetExpType() uint32 {
-	if m != nil {
-		return m.ExpType
-	}
-	return 0
-}
-
-func (m *OfpExperimenterHeader) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Common description for a queue.
-type OfpQueuePropHeader struct {
-	Property             uint32   `protobuf:"varint,1,opt,name=property,proto3" json:"property,omitempty"`
-	Len                  uint32   `protobuf:"varint,2,opt,name=len,proto3" json:"len,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueuePropHeader) Reset()         { *m = OfpQueuePropHeader{} }
-func (m *OfpQueuePropHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropHeader) ProtoMessage()    {}
-func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{74}
-}
-
-func (m *OfpQueuePropHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropHeader.Unmarshal(m, b)
-}
-func (m *OfpQueuePropHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropHeader.Merge(m, src)
-}
-func (m *OfpQueuePropHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropHeader.Size(m)
-}
-func (m *OfpQueuePropHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropHeader proto.InternalMessageInfo
-
-func (m *OfpQueuePropHeader) GetProperty() uint32 {
-	if m != nil {
-		return m.Property
-	}
-	return 0
-}
-
-func (m *OfpQueuePropHeader) GetLen() uint32 {
-	if m != nil {
-		return m.Len
-	}
-	return 0
-}
-
-// Min-Rate queue property description.
-type OfpQueuePropMinRate struct {
-	PropHeader           *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"`
-	Rate                 uint32              `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpQueuePropMinRate) Reset()         { *m = OfpQueuePropMinRate{} }
-func (m *OfpQueuePropMinRate) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropMinRate) ProtoMessage()    {}
-func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{75}
-}
-
-func (m *OfpQueuePropMinRate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropMinRate.Unmarshal(m, b)
-}
-func (m *OfpQueuePropMinRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropMinRate.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropMinRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMinRate.Merge(m, src)
-}
-func (m *OfpQueuePropMinRate) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropMinRate.Size(m)
-}
-func (m *OfpQueuePropMinRate) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropMinRate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropMinRate proto.InternalMessageInfo
-
-func (m *OfpQueuePropMinRate) GetPropHeader() *OfpQueuePropHeader {
-	if m != nil {
-		return m.PropHeader
-	}
-	return nil
-}
-
-func (m *OfpQueuePropMinRate) GetRate() uint32 {
-	if m != nil {
-		return m.Rate
-	}
-	return 0
-}
-
-// Max-Rate queue property description.
-type OfpQueuePropMaxRate struct {
-	PropHeader           *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"`
-	Rate                 uint32              `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpQueuePropMaxRate) Reset()         { *m = OfpQueuePropMaxRate{} }
-func (m *OfpQueuePropMaxRate) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropMaxRate) ProtoMessage()    {}
-func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{76}
-}
-
-func (m *OfpQueuePropMaxRate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropMaxRate.Unmarshal(m, b)
-}
-func (m *OfpQueuePropMaxRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropMaxRate.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropMaxRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMaxRate.Merge(m, src)
-}
-func (m *OfpQueuePropMaxRate) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropMaxRate.Size(m)
-}
-func (m *OfpQueuePropMaxRate) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropMaxRate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropMaxRate proto.InternalMessageInfo
-
-func (m *OfpQueuePropMaxRate) GetPropHeader() *OfpQueuePropHeader {
-	if m != nil {
-		return m.PropHeader
-	}
-	return nil
-}
-
-func (m *OfpQueuePropMaxRate) GetRate() uint32 {
-	if m != nil {
-		return m.Rate
-	}
-	return 0
-}
-
-// Experimenter queue property description.
-type OfpQueuePropExperimenter struct {
-	PropHeader           *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"`
-	Experimenter         uint32              `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	Data                 []byte              `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpQueuePropExperimenter) Reset()         { *m = OfpQueuePropExperimenter{} }
-func (m *OfpQueuePropExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropExperimenter) ProtoMessage()    {}
-func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{77}
-}
-
-func (m *OfpQueuePropExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropExperimenter.Unmarshal(m, b)
-}
-func (m *OfpQueuePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropExperimenter.Merge(m, src)
-}
-func (m *OfpQueuePropExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropExperimenter.Size(m)
-}
-func (m *OfpQueuePropExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropExperimenter proto.InternalMessageInfo
-
-func (m *OfpQueuePropExperimenter) GetPropHeader() *OfpQueuePropHeader {
-	if m != nil {
-		return m.PropHeader
-	}
-	return nil
-}
-
-func (m *OfpQueuePropExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpQueuePropExperimenter) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Full description for a queue.
-type OfpPacketQueue struct {
-	QueueId              uint32                `protobuf:"varint,1,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	Port                 uint32                `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
-	Properties           []*OfpQueuePropHeader `protobuf:"bytes,4,rep,name=properties,proto3" json:"properties,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpPacketQueue) Reset()         { *m = OfpPacketQueue{} }
-func (m *OfpPacketQueue) String() string { return proto.CompactTextString(m) }
-func (*OfpPacketQueue) ProtoMessage()    {}
-func (*OfpPacketQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{78}
-}
-
-func (m *OfpPacketQueue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPacketQueue.Unmarshal(m, b)
-}
-func (m *OfpPacketQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPacketQueue.Marshal(b, m, deterministic)
-}
-func (m *OfpPacketQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketQueue.Merge(m, src)
-}
-func (m *OfpPacketQueue) XXX_Size() int {
-	return xxx_messageInfo_OfpPacketQueue.Size(m)
-}
-func (m *OfpPacketQueue) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPacketQueue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPacketQueue proto.InternalMessageInfo
-
-func (m *OfpPacketQueue) GetQueueId() uint32 {
-	if m != nil {
-		return m.QueueId
-	}
-	return 0
-}
-
-func (m *OfpPacketQueue) GetPort() uint32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-func (m *OfpPacketQueue) GetProperties() []*OfpQueuePropHeader {
-	if m != nil {
-		return m.Properties
-	}
-	return nil
-}
-
-// Query for port queue configuration.
-type OfpQueueGetConfigRequest struct {
-	//ofp_header header;
-	Port                 uint32   `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueueGetConfigRequest) Reset()         { *m = OfpQueueGetConfigRequest{} }
-func (m *OfpQueueGetConfigRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueGetConfigRequest) ProtoMessage()    {}
-func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{79}
-}
-
-func (m *OfpQueueGetConfigRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueGetConfigRequest.Unmarshal(m, b)
-}
-func (m *OfpQueueGetConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueGetConfigRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueGetConfigRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigRequest.Merge(m, src)
-}
-func (m *OfpQueueGetConfigRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueGetConfigRequest.Size(m)
-}
-func (m *OfpQueueGetConfigRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueGetConfigRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueGetConfigRequest proto.InternalMessageInfo
-
-func (m *OfpQueueGetConfigRequest) GetPort() uint32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-// Queue configuration for a given port.
-type OfpQueueGetConfigReply struct {
-	//ofp_header header;
-	Port                 uint32            `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
-	Queues               []*OfpPacketQueue `protobuf:"bytes,2,rep,name=queues,proto3" json:"queues,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpQueueGetConfigReply) Reset()         { *m = OfpQueueGetConfigReply{} }
-func (m *OfpQueueGetConfigReply) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueGetConfigReply) ProtoMessage()    {}
-func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{80}
-}
-
-func (m *OfpQueueGetConfigReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueGetConfigReply.Unmarshal(m, b)
-}
-func (m *OfpQueueGetConfigReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueGetConfigReply.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueGetConfigReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigReply.Merge(m, src)
-}
-func (m *OfpQueueGetConfigReply) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueGetConfigReply.Size(m)
-}
-func (m *OfpQueueGetConfigReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueGetConfigReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueGetConfigReply proto.InternalMessageInfo
-
-func (m *OfpQueueGetConfigReply) GetPort() uint32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-func (m *OfpQueueGetConfigReply) GetQueues() []*OfpPacketQueue {
-	if m != nil {
-		return m.Queues
-	}
-	return nil
-}
-
-// OFPAT_SET_QUEUE action struct: send packets to given queue on port.
-type OfpActionSetQueue struct {
-	Type                 uint32   `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
-	QueueId              uint32   `protobuf:"varint,3,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionSetQueue) Reset()         { *m = OfpActionSetQueue{} }
-func (m *OfpActionSetQueue) String() string { return proto.CompactTextString(m) }
-func (*OfpActionSetQueue) ProtoMessage()    {}
-func (*OfpActionSetQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{81}
-}
-
-func (m *OfpActionSetQueue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionSetQueue.Unmarshal(m, b)
-}
-func (m *OfpActionSetQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionSetQueue.Marshal(b, m, deterministic)
-}
-func (m *OfpActionSetQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetQueue.Merge(m, src)
-}
-func (m *OfpActionSetQueue) XXX_Size() int {
-	return xxx_messageInfo_OfpActionSetQueue.Size(m)
-}
-func (m *OfpActionSetQueue) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionSetQueue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionSetQueue proto.InternalMessageInfo
-
-func (m *OfpActionSetQueue) GetType() uint32 {
-	if m != nil {
-		return m.Type
-	}
-	return 0
-}
-
-func (m *OfpActionSetQueue) GetQueueId() uint32 {
-	if m != nil {
-		return m.QueueId
-	}
-	return 0
-}
-
-type OfpQueueStatsRequest struct {
-	PortNo               uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	QueueId              uint32   `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueueStatsRequest) Reset()         { *m = OfpQueueStatsRequest{} }
-func (m *OfpQueueStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueStatsRequest) ProtoMessage()    {}
-func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{82}
-}
-
-func (m *OfpQueueStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpQueueStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStatsRequest.Merge(m, src)
-}
-func (m *OfpQueueStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueStatsRequest.Size(m)
-}
-func (m *OfpQueueStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueStatsRequest proto.InternalMessageInfo
-
-func (m *OfpQueueStatsRequest) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-func (m *OfpQueueStatsRequest) GetQueueId() uint32 {
-	if m != nil {
-		return m.QueueId
-	}
-	return 0
-}
-
-type OfpQueueStats struct {
-	PortNo               uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	QueueId              uint32   `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	TxBytes              uint64   `protobuf:"varint,3,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,4,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	TxErrors             uint64   `protobuf:"varint,5,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
-	DurationSec          uint32   `protobuf:"varint,6,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32   `protobuf:"varint,7,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueueStats) Reset()         { *m = OfpQueueStats{} }
-func (m *OfpQueueStats) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueStats) ProtoMessage()    {}
-func (*OfpQueueStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{83}
-}
-
-func (m *OfpQueueStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueStats.Unmarshal(m, b)
-}
-func (m *OfpQueueStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueStats.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStats.Merge(m, src)
-}
-func (m *OfpQueueStats) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueStats.Size(m)
-}
-func (m *OfpQueueStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueStats proto.InternalMessageInfo
-
-func (m *OfpQueueStats) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetQueueId() uint32 {
-	if m != nil {
-		return m.QueueId
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetTxErrors() uint64 {
-	if m != nil {
-		return m.TxErrors
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-// Role request and reply message.
-type OfpRoleRequest struct {
-	//ofp_header header;        /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
-	Role                 OfpControllerRole `protobuf:"varint,1,opt,name=role,proto3,enum=openflow_13.OfpControllerRole" json:"role,omitempty"`
-	GenerationId         uint64            `protobuf:"varint,2,opt,name=generation_id,json=generationId,proto3" json:"generation_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpRoleRequest) Reset()         { *m = OfpRoleRequest{} }
-func (m *OfpRoleRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpRoleRequest) ProtoMessage()    {}
-func (*OfpRoleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{84}
-}
-
-func (m *OfpRoleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpRoleRequest.Unmarshal(m, b)
-}
-func (m *OfpRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpRoleRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpRoleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpRoleRequest.Merge(m, src)
-}
-func (m *OfpRoleRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpRoleRequest.Size(m)
-}
-func (m *OfpRoleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpRoleRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpRoleRequest proto.InternalMessageInfo
-
-func (m *OfpRoleRequest) GetRole() OfpControllerRole {
-	if m != nil {
-		return m.Role
-	}
-	return OfpControllerRole_OFPCR_ROLE_NOCHANGE
-}
-
-func (m *OfpRoleRequest) GetGenerationId() uint64 {
-	if m != nil {
-		return m.GenerationId
-	}
-	return 0
-}
-
-// Asynchronous message configuration.
-type OfpAsyncConfig struct {
-	//ofp_header header;    /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
-	PacketInMask         []uint32 `protobuf:"varint,1,rep,packed,name=packet_in_mask,json=packetInMask,proto3" json:"packet_in_mask,omitempty"`
-	PortStatusMask       []uint32 `protobuf:"varint,2,rep,packed,name=port_status_mask,json=portStatusMask,proto3" json:"port_status_mask,omitempty"`
-	FlowRemovedMask      []uint32 `protobuf:"varint,3,rep,packed,name=flow_removed_mask,json=flowRemovedMask,proto3" json:"flow_removed_mask,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpAsyncConfig) Reset()         { *m = OfpAsyncConfig{} }
-func (m *OfpAsyncConfig) String() string { return proto.CompactTextString(m) }
-func (*OfpAsyncConfig) ProtoMessage()    {}
-func (*OfpAsyncConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{85}
-}
-
-func (m *OfpAsyncConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAsyncConfig.Unmarshal(m, b)
-}
-func (m *OfpAsyncConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAsyncConfig.Marshal(b, m, deterministic)
-}
-func (m *OfpAsyncConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAsyncConfig.Merge(m, src)
-}
-func (m *OfpAsyncConfig) XXX_Size() int {
-	return xxx_messageInfo_OfpAsyncConfig.Size(m)
-}
-func (m *OfpAsyncConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAsyncConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAsyncConfig proto.InternalMessageInfo
-
-func (m *OfpAsyncConfig) GetPacketInMask() []uint32 {
-	if m != nil {
-		return m.PacketInMask
-	}
-	return nil
-}
-
-func (m *OfpAsyncConfig) GetPortStatusMask() []uint32 {
-	if m != nil {
-		return m.PortStatusMask
-	}
-	return nil
-}
-
-func (m *OfpAsyncConfig) GetFlowRemovedMask() []uint32 {
-	if m != nil {
-		return m.FlowRemovedMask
-	}
-	return nil
-}
-
-type MeterModUpdate struct {
-	Id                   string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	MeterMod             *OfpMeterMod `protobuf:"bytes,2,opt,name=meter_mod,json=meterMod,proto3" json:"meter_mod,omitempty"`
-	Xid                  uint32       `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *MeterModUpdate) Reset()         { *m = MeterModUpdate{} }
-func (m *MeterModUpdate) String() string { return proto.CompactTextString(m) }
-func (*MeterModUpdate) ProtoMessage()    {}
-func (*MeterModUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{86}
-}
-
-func (m *MeterModUpdate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MeterModUpdate.Unmarshal(m, b)
-}
-func (m *MeterModUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MeterModUpdate.Marshal(b, m, deterministic)
-}
-func (m *MeterModUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterModUpdate.Merge(m, src)
-}
-func (m *MeterModUpdate) XXX_Size() int {
-	return xxx_messageInfo_MeterModUpdate.Size(m)
-}
-func (m *MeterModUpdate) XXX_DiscardUnknown() {
-	xxx_messageInfo_MeterModUpdate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MeterModUpdate proto.InternalMessageInfo
-
-func (m *MeterModUpdate) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *MeterModUpdate) GetMeterMod() *OfpMeterMod {
-	if m != nil {
-		return m.MeterMod
-	}
-	return nil
-}
-
-func (m *MeterModUpdate) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
-	}
-	return 0
-}
-
-type MeterStatsReply struct {
-	MeterStats           []*OfpMeterStats `protobuf:"bytes,1,rep,name=meter_stats,json=meterStats,proto3" json:"meter_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *MeterStatsReply) Reset()         { *m = MeterStatsReply{} }
-func (m *MeterStatsReply) String() string { return proto.CompactTextString(m) }
-func (*MeterStatsReply) ProtoMessage()    {}
-func (*MeterStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{87}
-}
-
-func (m *MeterStatsReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MeterStatsReply.Unmarshal(m, b)
-}
-func (m *MeterStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MeterStatsReply.Marshal(b, m, deterministic)
-}
-func (m *MeterStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterStatsReply.Merge(m, src)
-}
-func (m *MeterStatsReply) XXX_Size() int {
-	return xxx_messageInfo_MeterStatsReply.Size(m)
-}
-func (m *MeterStatsReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_MeterStatsReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MeterStatsReply proto.InternalMessageInfo
-
-func (m *MeterStatsReply) GetMeterStats() []*OfpMeterStats {
-	if m != nil {
-		return m.MeterStats
-	}
-	return nil
-}
-
-type FlowTableUpdate struct {
-	Id                   string      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	FlowMod              *OfpFlowMod `protobuf:"bytes,2,opt,name=flow_mod,json=flowMod,proto3" json:"flow_mod,omitempty"`
-	Xid                  uint32      `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
-
-func (m *FlowTableUpdate) Reset()         { *m = FlowTableUpdate{} }
-func (m *FlowTableUpdate) String() string { return proto.CompactTextString(m) }
-func (*FlowTableUpdate) ProtoMessage()    {}
-func (*FlowTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{88}
-}
-
-func (m *FlowTableUpdate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowTableUpdate.Unmarshal(m, b)
-}
-func (m *FlowTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowTableUpdate.Marshal(b, m, deterministic)
-}
-func (m *FlowTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowTableUpdate.Merge(m, src)
-}
-func (m *FlowTableUpdate) XXX_Size() int {
-	return xxx_messageInfo_FlowTableUpdate.Size(m)
-}
-func (m *FlowTableUpdate) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowTableUpdate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowTableUpdate proto.InternalMessageInfo
-
-func (m *FlowTableUpdate) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *FlowTableUpdate) GetFlowMod() *OfpFlowMod {
-	if m != nil {
-		return m.FlowMod
-	}
-	return nil
-}
-
-func (m *FlowTableUpdate) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
-	}
-	return 0
-}
-
-type FlowGroupTableUpdate struct {
-	Id                   string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	GroupMod             *OfpGroupMod `protobuf:"bytes,2,opt,name=group_mod,json=groupMod,proto3" json:"group_mod,omitempty"`
-	Xid                  uint32       `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *FlowGroupTableUpdate) Reset()         { *m = FlowGroupTableUpdate{} }
-func (m *FlowGroupTableUpdate) String() string { return proto.CompactTextString(m) }
-func (*FlowGroupTableUpdate) ProtoMessage()    {}
-func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{89}
-}
-
-func (m *FlowGroupTableUpdate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowGroupTableUpdate.Unmarshal(m, b)
-}
-func (m *FlowGroupTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowGroupTableUpdate.Marshal(b, m, deterministic)
-}
-func (m *FlowGroupTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupTableUpdate.Merge(m, src)
-}
-func (m *FlowGroupTableUpdate) XXX_Size() int {
-	return xxx_messageInfo_FlowGroupTableUpdate.Size(m)
-}
-func (m *FlowGroupTableUpdate) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowGroupTableUpdate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowGroupTableUpdate proto.InternalMessageInfo
-
-func (m *FlowGroupTableUpdate) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *FlowGroupTableUpdate) GetGroupMod() *OfpGroupMod {
-	if m != nil {
-		return m.GroupMod
-	}
-	return nil
-}
-
-func (m *FlowGroupTableUpdate) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
-	}
-	return 0
-}
-
-type Flows struct {
-	Items                []*OfpFlowStats `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *Flows) Reset()         { *m = Flows{} }
-func (m *Flows) String() string { return proto.CompactTextString(m) }
-func (*Flows) ProtoMessage()    {}
-func (*Flows) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{90}
-}
-
-func (m *Flows) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Flows.Unmarshal(m, b)
-}
-func (m *Flows) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Flows.Marshal(b, m, deterministic)
-}
-func (m *Flows) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Flows.Merge(m, src)
-}
-func (m *Flows) XXX_Size() int {
-	return xxx_messageInfo_Flows.Size(m)
-}
-func (m *Flows) XXX_DiscardUnknown() {
-	xxx_messageInfo_Flows.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Flows proto.InternalMessageInfo
-
-func (m *Flows) GetItems() []*OfpFlowStats {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
-type Meters struct {
-	Items                []*OfpMeterEntry `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *Meters) Reset()         { *m = Meters{} }
-func (m *Meters) String() string { return proto.CompactTextString(m) }
-func (*Meters) ProtoMessage()    {}
-func (*Meters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{91}
-}
-
-func (m *Meters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Meters.Unmarshal(m, b)
-}
-func (m *Meters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Meters.Marshal(b, m, deterministic)
-}
-func (m *Meters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Meters.Merge(m, src)
-}
-func (m *Meters) XXX_Size() int {
-	return xxx_messageInfo_Meters.Size(m)
-}
-func (m *Meters) XXX_DiscardUnknown() {
-	xxx_messageInfo_Meters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Meters proto.InternalMessageInfo
-
-func (m *Meters) GetItems() []*OfpMeterEntry {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
-type FlowGroups struct {
-	Items                []*OfpGroupEntry `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *FlowGroups) Reset()         { *m = FlowGroups{} }
-func (m *FlowGroups) String() string { return proto.CompactTextString(m) }
-func (*FlowGroups) ProtoMessage()    {}
-func (*FlowGroups) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{92}
-}
-
-func (m *FlowGroups) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowGroups.Unmarshal(m, b)
-}
-func (m *FlowGroups) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowGroups.Marshal(b, m, deterministic)
-}
-func (m *FlowGroups) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroups.Merge(m, src)
-}
-func (m *FlowGroups) XXX_Size() int {
-	return xxx_messageInfo_FlowGroups.Size(m)
-}
-func (m *FlowGroups) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowGroups.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowGroups proto.InternalMessageInfo
-
-func (m *FlowGroups) GetItems() []*OfpGroupEntry {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
-type FlowChanges struct {
-	ToAdd                *Flows   `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
-	ToRemove             *Flows   `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *FlowChanges) Reset()         { *m = FlowChanges{} }
-func (m *FlowChanges) String() string { return proto.CompactTextString(m) }
-func (*FlowChanges) ProtoMessage()    {}
-func (*FlowChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{93}
-}
-
-func (m *FlowChanges) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowChanges.Unmarshal(m, b)
-}
-func (m *FlowChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowChanges.Marshal(b, m, deterministic)
-}
-func (m *FlowChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowChanges.Merge(m, src)
-}
-func (m *FlowChanges) XXX_Size() int {
-	return xxx_messageInfo_FlowChanges.Size(m)
-}
-func (m *FlowChanges) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowChanges.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowChanges proto.InternalMessageInfo
-
-func (m *FlowChanges) GetToAdd() *Flows {
-	if m != nil {
-		return m.ToAdd
-	}
-	return nil
-}
-
-func (m *FlowChanges) GetToRemove() *Flows {
-	if m != nil {
-		return m.ToRemove
-	}
-	return nil
-}
-
-type FlowGroupChanges struct {
-	ToAdd                *FlowGroups `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
-	ToRemove             *FlowGroups `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
-	ToUpdate             *FlowGroups `protobuf:"bytes,3,opt,name=to_update,json=toUpdate,proto3" json:"to_update,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
-
-func (m *FlowGroupChanges) Reset()         { *m = FlowGroupChanges{} }
-func (m *FlowGroupChanges) String() string { return proto.CompactTextString(m) }
-func (*FlowGroupChanges) ProtoMessage()    {}
-func (*FlowGroupChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{94}
-}
-
-func (m *FlowGroupChanges) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowGroupChanges.Unmarshal(m, b)
-}
-func (m *FlowGroupChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowGroupChanges.Marshal(b, m, deterministic)
-}
-func (m *FlowGroupChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupChanges.Merge(m, src)
-}
-func (m *FlowGroupChanges) XXX_Size() int {
-	return xxx_messageInfo_FlowGroupChanges.Size(m)
-}
-func (m *FlowGroupChanges) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowGroupChanges.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowGroupChanges proto.InternalMessageInfo
-
-func (m *FlowGroupChanges) GetToAdd() *FlowGroups {
-	if m != nil {
-		return m.ToAdd
-	}
-	return nil
-}
-
-func (m *FlowGroupChanges) GetToRemove() *FlowGroups {
-	if m != nil {
-		return m.ToRemove
-	}
-	return nil
-}
-
-func (m *FlowGroupChanges) GetToUpdate() *FlowGroups {
-	if m != nil {
-		return m.ToUpdate
-	}
-	return nil
-}
-
-type PacketIn struct {
-	Id                   string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	PacketIn             *OfpPacketIn `protobuf:"bytes,2,opt,name=packet_in,json=packetIn,proto3" json:"packet_in,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *PacketIn) Reset()         { *m = PacketIn{} }
-func (m *PacketIn) String() string { return proto.CompactTextString(m) }
-func (*PacketIn) ProtoMessage()    {}
-func (*PacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{95}
-}
-
-func (m *PacketIn) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PacketIn.Unmarshal(m, b)
-}
-func (m *PacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PacketIn.Marshal(b, m, deterministic)
-}
-func (m *PacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketIn.Merge(m, src)
-}
-func (m *PacketIn) XXX_Size() int {
-	return xxx_messageInfo_PacketIn.Size(m)
-}
-func (m *PacketIn) XXX_DiscardUnknown() {
-	xxx_messageInfo_PacketIn.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PacketIn proto.InternalMessageInfo
-
-func (m *PacketIn) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *PacketIn) GetPacketIn() *OfpPacketIn {
-	if m != nil {
-		return m.PacketIn
-	}
-	return nil
-}
-
-type PacketOut struct {
-	Id                   string        `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	PacketOut            *OfpPacketOut `protobuf:"bytes,2,opt,name=packet_out,json=packetOut,proto3" json:"packet_out,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
-}
-
-func (m *PacketOut) Reset()         { *m = PacketOut{} }
-func (m *PacketOut) String() string { return proto.CompactTextString(m) }
-func (*PacketOut) ProtoMessage()    {}
-func (*PacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{96}
-}
-
-func (m *PacketOut) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PacketOut.Unmarshal(m, b)
-}
-func (m *PacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PacketOut.Marshal(b, m, deterministic)
-}
-func (m *PacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketOut.Merge(m, src)
-}
-func (m *PacketOut) XXX_Size() int {
-	return xxx_messageInfo_PacketOut.Size(m)
-}
-func (m *PacketOut) XXX_DiscardUnknown() {
-	xxx_messageInfo_PacketOut.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PacketOut proto.InternalMessageInfo
-
-func (m *PacketOut) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *PacketOut) GetPacketOut() *OfpPacketOut {
-	if m != nil {
-		return m.PacketOut
-	}
-	return nil
-}
-
-type ChangeEvent struct {
-	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	// Types that are valid to be assigned to Event:
-	//	*ChangeEvent_PortStatus
-	//	*ChangeEvent_Error
-	//	*ChangeEvent_DeviceStatus
-	Event                isChangeEvent_Event `protobuf_oneof:"event"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *ChangeEvent) Reset()         { *m = ChangeEvent{} }
-func (m *ChangeEvent) String() string { return proto.CompactTextString(m) }
-func (*ChangeEvent) ProtoMessage()    {}
-func (*ChangeEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{97}
-}
-
-func (m *ChangeEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChangeEvent.Unmarshal(m, b)
-}
-func (m *ChangeEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChangeEvent.Marshal(b, m, deterministic)
-}
-func (m *ChangeEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChangeEvent.Merge(m, src)
-}
-func (m *ChangeEvent) XXX_Size() int {
-	return xxx_messageInfo_ChangeEvent.Size(m)
-}
-func (m *ChangeEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChangeEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChangeEvent proto.InternalMessageInfo
-
-func (m *ChangeEvent) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-type isChangeEvent_Event interface {
-	isChangeEvent_Event()
-}
-
-type ChangeEvent_PortStatus struct {
-	PortStatus *OfpPortStatus `protobuf:"bytes,2,opt,name=port_status,json=portStatus,proto3,oneof"`
-}
-
-type ChangeEvent_Error struct {
-	Error *OfpErrorMsg `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
-}
-
-type ChangeEvent_DeviceStatus struct {
-	DeviceStatus *OfpDeviceStatus `protobuf:"bytes,4,opt,name=device_status,json=deviceStatus,proto3,oneof"`
-}
-
-func (*ChangeEvent_PortStatus) isChangeEvent_Event() {}
-
-func (*ChangeEvent_Error) isChangeEvent_Event() {}
-
-func (*ChangeEvent_DeviceStatus) isChangeEvent_Event() {}
-
-func (m *ChangeEvent) GetEvent() isChangeEvent_Event {
-	if m != nil {
-		return m.Event
-	}
-	return nil
-}
-
-func (m *ChangeEvent) GetPortStatus() *OfpPortStatus {
-	if x, ok := m.GetEvent().(*ChangeEvent_PortStatus); ok {
-		return x.PortStatus
-	}
-	return nil
-}
-
-func (m *ChangeEvent) GetError() *OfpErrorMsg {
-	if x, ok := m.GetEvent().(*ChangeEvent_Error); ok {
-		return x.Error
-	}
-	return nil
-}
-
-func (m *ChangeEvent) GetDeviceStatus() *OfpDeviceStatus {
-	if x, ok := m.GetEvent().(*ChangeEvent_DeviceStatus); ok {
-		return x.DeviceStatus
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ChangeEvent) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[97].OneofWrappers = []any{
 		(*ChangeEvent_PortStatus)(nil),
 		(*ChangeEvent_Error)(nil),
 		(*ChangeEvent_DeviceStatus)(nil),
 	}
-}
-
-// Additional information required to process flow at device adapters
-type FlowMetadata struct {
-	// Meters associated with flow-update to adapter
-	Meters               []*OfpMeterConfig `protobuf:"bytes,1,rep,name=meters,proto3" json:"meters,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *FlowMetadata) Reset()         { *m = FlowMetadata{} }
-func (m *FlowMetadata) String() string { return proto.CompactTextString(m) }
-func (*FlowMetadata) ProtoMessage()    {}
-func (*FlowMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{98}
-}
-
-func (m *FlowMetadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowMetadata.Unmarshal(m, b)
-}
-func (m *FlowMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowMetadata.Marshal(b, m, deterministic)
-}
-func (m *FlowMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowMetadata.Merge(m, src)
-}
-func (m *FlowMetadata) XXX_Size() int {
-	return xxx_messageInfo_FlowMetadata.Size(m)
-}
-func (m *FlowMetadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowMetadata.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowMetadata proto.InternalMessageInfo
-
-func (m *FlowMetadata) GetMeters() []*OfpMeterConfig {
-	if m != nil {
-		return m.Meters
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterEnum("openflow_13.OfpPortNo", OfpPortNo_name, OfpPortNo_value)
-	proto.RegisterEnum("openflow_13.OfpType", OfpType_name, OfpType_value)
-	proto.RegisterEnum("openflow_13.OfpHelloElemType", OfpHelloElemType_name, OfpHelloElemType_value)
-	proto.RegisterEnum("openflow_13.OfpConfigFlags", OfpConfigFlags_name, OfpConfigFlags_value)
-	proto.RegisterEnum("openflow_13.OfpTableConfig", OfpTableConfig_name, OfpTableConfig_value)
-	proto.RegisterEnum("openflow_13.OfpTable", OfpTable_name, OfpTable_value)
-	proto.RegisterEnum("openflow_13.OfpCapabilities", OfpCapabilities_name, OfpCapabilities_value)
-	proto.RegisterEnum("openflow_13.OfpPortConfig", OfpPortConfig_name, OfpPortConfig_value)
-	proto.RegisterEnum("openflow_13.OfpPortState", OfpPortState_name, OfpPortState_value)
-	proto.RegisterEnum("openflow_13.OfpPortFeatures", OfpPortFeatures_name, OfpPortFeatures_value)
-	proto.RegisterEnum("openflow_13.OfpPortReason", OfpPortReason_name, OfpPortReason_value)
-	proto.RegisterEnum("openflow_13.OfpDeviceConnection", OfpDeviceConnection_name, OfpDeviceConnection_value)
-	proto.RegisterEnum("openflow_13.OfpMatchType", OfpMatchType_name, OfpMatchType_value)
-	proto.RegisterEnum("openflow_13.OfpOxmClass", OfpOxmClass_name, OfpOxmClass_value)
-	proto.RegisterEnum("openflow_13.OxmOfbFieldTypes", OxmOfbFieldTypes_name, OxmOfbFieldTypes_value)
-	proto.RegisterEnum("openflow_13.OfpVlanId", OfpVlanId_name, OfpVlanId_value)
-	proto.RegisterEnum("openflow_13.OfpIpv6ExthdrFlags", OfpIpv6ExthdrFlags_name, OfpIpv6ExthdrFlags_value)
-	proto.RegisterEnum("openflow_13.OfpActionType", OfpActionType_name, OfpActionType_value)
-	proto.RegisterEnum("openflow_13.OfpControllerMaxLen", OfpControllerMaxLen_name, OfpControllerMaxLen_value)
-	proto.RegisterEnum("openflow_13.OfpInstructionType", OfpInstructionType_name, OfpInstructionType_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModCommand", OfpFlowModCommand_name, OfpFlowModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModFlags", OfpFlowModFlags_name, OfpFlowModFlags_value)
-	proto.RegisterEnum("openflow_13.OfpGroup", OfpGroup_name, OfpGroup_value)
-	proto.RegisterEnum("openflow_13.OfpGroupModCommand", OfpGroupModCommand_name, OfpGroupModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpGroupType", OfpGroupType_name, OfpGroupType_value)
-	proto.RegisterEnum("openflow_13.OfpPacketInReason", OfpPacketInReason_name, OfpPacketInReason_value)
-	proto.RegisterEnum("openflow_13.OfpFlowRemovedReason", OfpFlowRemovedReason_name, OfpFlowRemovedReason_value)
-	proto.RegisterEnum("openflow_13.OfpMeter", OfpMeter_name, OfpMeter_value)
-	proto.RegisterEnum("openflow_13.OfpMeterBandType", OfpMeterBandType_name, OfpMeterBandType_value)
-	proto.RegisterEnum("openflow_13.OfpMeterModCommand", OfpMeterModCommand_name, OfpMeterModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpMeterFlags", OfpMeterFlags_name, OfpMeterFlags_value)
-	proto.RegisterEnum("openflow_13.OfpErrorType", OfpErrorType_name, OfpErrorType_value)
-	proto.RegisterEnum("openflow_13.OfpHelloFailedCode", OfpHelloFailedCode_name, OfpHelloFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadRequestCode", OfpBadRequestCode_name, OfpBadRequestCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadActionCode", OfpBadActionCode_name, OfpBadActionCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadInstructionCode", OfpBadInstructionCode_name, OfpBadInstructionCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadMatchCode", OfpBadMatchCode_name, OfpBadMatchCode_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModFailedCode", OfpFlowModFailedCode_name, OfpFlowModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpGroupModFailedCode", OfpGroupModFailedCode_name, OfpGroupModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpPortModFailedCode", OfpPortModFailedCode_name, OfpPortModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpTableModFailedCode", OfpTableModFailedCode_name, OfpTableModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpQueueOpFailedCode", OfpQueueOpFailedCode_name, OfpQueueOpFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpSwitchConfigFailedCode", OfpSwitchConfigFailedCode_name, OfpSwitchConfigFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpRoleRequestFailedCode", OfpRoleRequestFailedCode_name, OfpRoleRequestFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpMeterModFailedCode", OfpMeterModFailedCode_name, OfpMeterModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpTableFeaturesFailedCode", OfpTableFeaturesFailedCode_name, OfpTableFeaturesFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartType", OfpMultipartType_name, OfpMultipartType_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartRequestFlags", OfpMultipartRequestFlags_name, OfpMultipartRequestFlags_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartReplyFlags", OfpMultipartReplyFlags_name, OfpMultipartReplyFlags_value)
-	proto.RegisterEnum("openflow_13.OfpTableFeaturePropType", OfpTableFeaturePropType_name, OfpTableFeaturePropType_value)
-	proto.RegisterEnum("openflow_13.OfpGroupCapabilities", OfpGroupCapabilities_name, OfpGroupCapabilities_value)
-	proto.RegisterEnum("openflow_13.OfpQueueProperties", OfpQueueProperties_name, OfpQueueProperties_value)
-	proto.RegisterEnum("openflow_13.OfpControllerRole", OfpControllerRole_name, OfpControllerRole_value)
-	proto.RegisterType((*OfpHeader)(nil), "openflow_13.ofp_header")
-	proto.RegisterType((*OfpHelloElemHeader)(nil), "openflow_13.ofp_hello_elem_header")
-	proto.RegisterType((*OfpHelloElemVersionbitmap)(nil), "openflow_13.ofp_hello_elem_versionbitmap")
-	proto.RegisterType((*OfpHello)(nil), "openflow_13.ofp_hello")
-	proto.RegisterType((*OfpSwitchConfig)(nil), "openflow_13.ofp_switch_config")
-	proto.RegisterType((*OfpTableMod)(nil), "openflow_13.ofp_table_mod")
-	proto.RegisterType((*OfpPort)(nil), "openflow_13.ofp_port")
-	proto.RegisterType((*OfpSwitchFeatures)(nil), "openflow_13.ofp_switch_features")
-	proto.RegisterType((*OfpPortStatus)(nil), "openflow_13.ofp_port_status")
-	proto.RegisterType((*OfpDeviceStatus)(nil), "openflow_13.ofp_device_status")
-	proto.RegisterType((*OfpPortMod)(nil), "openflow_13.ofp_port_mod")
-	proto.RegisterType((*OfpMatch)(nil), "openflow_13.ofp_match")
-	proto.RegisterType((*OfpOxmField)(nil), "openflow_13.ofp_oxm_field")
-	proto.RegisterType((*OfpOxmOfbField)(nil), "openflow_13.ofp_oxm_ofb_field")
-	proto.RegisterType((*OfpOxmExperimenterField)(nil), "openflow_13.ofp_oxm_experimenter_field")
-	proto.RegisterType((*OfpAction)(nil), "openflow_13.ofp_action")
-	proto.RegisterType((*OfpActionOutput)(nil), "openflow_13.ofp_action_output")
-	proto.RegisterType((*OfpActionMplsTtl)(nil), "openflow_13.ofp_action_mpls_ttl")
-	proto.RegisterType((*OfpActionPush)(nil), "openflow_13.ofp_action_push")
-	proto.RegisterType((*OfpActionPopMpls)(nil), "openflow_13.ofp_action_pop_mpls")
-	proto.RegisterType((*OfpActionGroup)(nil), "openflow_13.ofp_action_group")
-	proto.RegisterType((*OfpActionNwTtl)(nil), "openflow_13.ofp_action_nw_ttl")
-	proto.RegisterType((*OfpActionSetField)(nil), "openflow_13.ofp_action_set_field")
-	proto.RegisterType((*OfpActionExperimenter)(nil), "openflow_13.ofp_action_experimenter")
-	proto.RegisterType((*OfpInstruction)(nil), "openflow_13.ofp_instruction")
-	proto.RegisterType((*OfpInstructionGotoTable)(nil), "openflow_13.ofp_instruction_goto_table")
-	proto.RegisterType((*OfpInstructionWriteMetadata)(nil), "openflow_13.ofp_instruction_write_metadata")
-	proto.RegisterType((*OfpInstructionActions)(nil), "openflow_13.ofp_instruction_actions")
-	proto.RegisterType((*OfpInstructionMeter)(nil), "openflow_13.ofp_instruction_meter")
-	proto.RegisterType((*OfpInstructionExperimenter)(nil), "openflow_13.ofp_instruction_experimenter")
-	proto.RegisterType((*OfpFlowMod)(nil), "openflow_13.ofp_flow_mod")
-	proto.RegisterType((*OfpBucket)(nil), "openflow_13.ofp_bucket")
-	proto.RegisterType((*OfpGroupMod)(nil), "openflow_13.ofp_group_mod")
-	proto.RegisterType((*OfpPacketOut)(nil), "openflow_13.ofp_packet_out")
-	proto.RegisterType((*OfpPacketIn)(nil), "openflow_13.ofp_packet_in")
-	proto.RegisterType((*OfpFlowRemoved)(nil), "openflow_13.ofp_flow_removed")
-	proto.RegisterType((*OfpMeterBandHeader)(nil), "openflow_13.ofp_meter_band_header")
-	proto.RegisterType((*OfpMeterBandDrop)(nil), "openflow_13.ofp_meter_band_drop")
-	proto.RegisterType((*OfpMeterBandDscpRemark)(nil), "openflow_13.ofp_meter_band_dscp_remark")
-	proto.RegisterType((*OfpMeterBandExperimenter)(nil), "openflow_13.ofp_meter_band_experimenter")
-	proto.RegisterType((*OfpMeterMod)(nil), "openflow_13.ofp_meter_mod")
-	proto.RegisterType((*OfpErrorMsg)(nil), "openflow_13.ofp_error_msg")
-	proto.RegisterType((*OfpErrorExperimenterMsg)(nil), "openflow_13.ofp_error_experimenter_msg")
-	proto.RegisterType((*OfpMultipartRequest)(nil), "openflow_13.ofp_multipart_request")
-	proto.RegisterType((*OfpMultipartReply)(nil), "openflow_13.ofp_multipart_reply")
-	proto.RegisterType((*OfpDesc)(nil), "openflow_13.ofp_desc")
-	proto.RegisterType((*OfpFlowStatsRequest)(nil), "openflow_13.ofp_flow_stats_request")
-	proto.RegisterType((*OfpFlowStats)(nil), "openflow_13.ofp_flow_stats")
-	proto.RegisterType((*OfpAggregateStatsRequest)(nil), "openflow_13.ofp_aggregate_stats_request")
-	proto.RegisterType((*OfpAggregateStatsReply)(nil), "openflow_13.ofp_aggregate_stats_reply")
-	proto.RegisterType((*OfpTableFeatureProperty)(nil), "openflow_13.ofp_table_feature_property")
-	proto.RegisterType((*OfpTableFeaturePropInstructions)(nil), "openflow_13.ofp_table_feature_prop_instructions")
-	proto.RegisterType((*OfpTableFeaturePropNextTables)(nil), "openflow_13.ofp_table_feature_prop_next_tables")
-	proto.RegisterType((*OfpTableFeaturePropActions)(nil), "openflow_13.ofp_table_feature_prop_actions")
-	proto.RegisterType((*OfpTableFeaturePropOxm)(nil), "openflow_13.ofp_table_feature_prop_oxm")
-	proto.RegisterType((*OfpTableFeaturePropExperimenter)(nil), "openflow_13.ofp_table_feature_prop_experimenter")
-	proto.RegisterType((*OfpTableFeatures)(nil), "openflow_13.ofp_table_features")
-	proto.RegisterType((*OfpTableStats)(nil), "openflow_13.ofp_table_stats")
-	proto.RegisterType((*OfpPortStatsRequest)(nil), "openflow_13.ofp_port_stats_request")
-	proto.RegisterType((*OfpPortStats)(nil), "openflow_13.ofp_port_stats")
-	proto.RegisterType((*OfpGroupStatsRequest)(nil), "openflow_13.ofp_group_stats_request")
-	proto.RegisterType((*OfpBucketCounter)(nil), "openflow_13.ofp_bucket_counter")
-	proto.RegisterType((*OfpGroupStats)(nil), "openflow_13.ofp_group_stats")
-	proto.RegisterType((*OfpGroupDesc)(nil), "openflow_13.ofp_group_desc")
-	proto.RegisterType((*OfpGroupEntry)(nil), "openflow_13.ofp_group_entry")
-	proto.RegisterType((*OfpGroupFeatures)(nil), "openflow_13.ofp_group_features")
-	proto.RegisterType((*OfpMeterMultipartRequest)(nil), "openflow_13.ofp_meter_multipart_request")
-	proto.RegisterType((*OfpMeterBandStats)(nil), "openflow_13.ofp_meter_band_stats")
-	proto.RegisterType((*OfpMeterStats)(nil), "openflow_13.ofp_meter_stats")
-	proto.RegisterType((*OfpMeterConfig)(nil), "openflow_13.ofp_meter_config")
-	proto.RegisterType((*OfpMeterFeatures)(nil), "openflow_13.ofp_meter_features")
-	proto.RegisterType((*OfpMeterEntry)(nil), "openflow_13.ofp_meter_entry")
-	proto.RegisterType((*OfpExperimenterMultipartHeader)(nil), "openflow_13.ofp_experimenter_multipart_header")
-	proto.RegisterType((*OfpExperimenterHeader)(nil), "openflow_13.ofp_experimenter_header")
-	proto.RegisterType((*OfpQueuePropHeader)(nil), "openflow_13.ofp_queue_prop_header")
-	proto.RegisterType((*OfpQueuePropMinRate)(nil), "openflow_13.ofp_queue_prop_min_rate")
-	proto.RegisterType((*OfpQueuePropMaxRate)(nil), "openflow_13.ofp_queue_prop_max_rate")
-	proto.RegisterType((*OfpQueuePropExperimenter)(nil), "openflow_13.ofp_queue_prop_experimenter")
-	proto.RegisterType((*OfpPacketQueue)(nil), "openflow_13.ofp_packet_queue")
-	proto.RegisterType((*OfpQueueGetConfigRequest)(nil), "openflow_13.ofp_queue_get_config_request")
-	proto.RegisterType((*OfpQueueGetConfigReply)(nil), "openflow_13.ofp_queue_get_config_reply")
-	proto.RegisterType((*OfpActionSetQueue)(nil), "openflow_13.ofp_action_set_queue")
-	proto.RegisterType((*OfpQueueStatsRequest)(nil), "openflow_13.ofp_queue_stats_request")
-	proto.RegisterType((*OfpQueueStats)(nil), "openflow_13.ofp_queue_stats")
-	proto.RegisterType((*OfpRoleRequest)(nil), "openflow_13.ofp_role_request")
-	proto.RegisterType((*OfpAsyncConfig)(nil), "openflow_13.ofp_async_config")
-	proto.RegisterType((*MeterModUpdate)(nil), "openflow_13.MeterModUpdate")
-	proto.RegisterType((*MeterStatsReply)(nil), "openflow_13.MeterStatsReply")
-	proto.RegisterType((*FlowTableUpdate)(nil), "openflow_13.FlowTableUpdate")
-	proto.RegisterType((*FlowGroupTableUpdate)(nil), "openflow_13.FlowGroupTableUpdate")
-	proto.RegisterType((*Flows)(nil), "openflow_13.Flows")
-	proto.RegisterType((*Meters)(nil), "openflow_13.Meters")
-	proto.RegisterType((*FlowGroups)(nil), "openflow_13.FlowGroups")
-	proto.RegisterType((*FlowChanges)(nil), "openflow_13.FlowChanges")
-	proto.RegisterType((*FlowGroupChanges)(nil), "openflow_13.FlowGroupChanges")
-	proto.RegisterType((*PacketIn)(nil), "openflow_13.PacketIn")
-	proto.RegisterType((*PacketOut)(nil), "openflow_13.PacketOut")
-	proto.RegisterType((*ChangeEvent)(nil), "openflow_13.ChangeEvent")
-	proto.RegisterType((*FlowMetadata)(nil), "openflow_13.FlowMetadata")
-}
-
-func init() { proto.RegisterFile("voltha_protos/openflow_13.proto", fileDescriptor_08e3a4e375aeddc7) }
-
-var fileDescriptor_08e3a4e375aeddc7 = []byte{
-	// 8566 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x5b, 0x8c, 0x1b, 0x49,
-	0x92, 0x98, 0xf8, 0x68, 0x36, 0x99, 0xec, 0x6e, 0x95, 0x4a, 0x2f, 0x4a, 0x2d, 0x8d, 0x24, 0xee,
-	0xcc, 0xee, 0x2c, 0xd7, 0x37, 0x9a, 0xd1, 0x68, 0xb4, 0x7b, 0xfb, 0x38, 0xab, 0x48, 0x16, 0x9b,
-	0x1c, 0xf1, 0xa5, 0xaa, 0xea, 0x96, 0xb4, 0x86, 0x5d, 0xa0, 0xc8, 0x52, 0x37, 0x6f, 0x48, 0x16,
-	0xb7, 0xaa, 0xba, 0xd5, 0x3a, 0xef, 0x19, 0xb2, 0x0f, 0x86, 0x01, 0xdb, 0x77, 0x67, 0xe3, 0x3e,
-	0x16, 0x30, 0xce, 0x80, 0x0f, 0xb6, 0x3f, 0x0c, 0x03, 0xfe, 0x30, 0x60, 0xc0, 0x80, 0xbf, 0x0f,
-	0xb0, 0x01, 0xc3, 0x06, 0x0e, 0x30, 0xee, 0xe7, 0xee, 0xc7, 0x38, 0xff, 0x18, 0xb8, 0x7f, 0xfb,
-	0xbc, 0x5e, 0x19, 0x91, 0x11, 0x99, 0x95, 0xc5, 0x47, 0x4f, 0xef, 0x7a, 0xd6, 0x1f, 0xfe, 0x12,
-	0x2b, 0x5e, 0x19, 0x19, 0x19, 0x11, 0x19, 0x19, 0x95, 0xd5, 0x62, 0x77, 0x4e, 0xfc, 0x49, 0x74,
-	0x34, 0x70, 0xe7, 0x81, 0x1f, 0xf9, 0xe1, 0x7d, 0x7f, 0xee, 0xcd, 0x5e, 0x4d, 0xfc, 0xd7, 0xee,
-	0x27, 0x9f, 0x7e, 0xc4, 0x41, 0x7a, 0x51, 0x01, 0xdd, 0xbc, 0x75, 0xe8, 0xfb, 0x87, 0x13, 0xef,
-	0xfe, 0x60, 0x3e, 0xbe, 0x3f, 0x98, 0xcd, 0xfc, 0x68, 0x10, 0x8d, 0xfd, 0x59, 0x88, 0xa4, 0xe5,
-	0x21, 0x63, 0xfe, 0xab, 0xb9, 0x7b, 0xe4, 0x0d, 0x46, 0x5e, 0xa0, 0x97, 0xd8, 0xe6, 0x89, 0x17,
-	0x84, 0x63, 0x7f, 0x56, 0x4a, 0xdd, 0x4d, 0x7d, 0xb8, 0x6d, 0x89, 0x47, 0xfd, 0x9b, 0x2c, 0x1b,
-	0xbd, 0x99, 0x7b, 0xa5, 0xf4, 0xdd, 0xd4, 0x87, 0x3b, 0x0f, 0xae, 0x7e, 0xa4, 0x0e, 0x0a, 0x02,
-	0x00, 0x69, 0x71, 0x12, 0x5d, 0x63, 0x99, 0xd3, 0xf1, 0xa8, 0x94, 0xe1, 0x02, 0xe0, 0x67, 0xf9,
-	0x5f, 0xa6, 0xd8, 0x55, 0x1c, 0x65, 0x32, 0xf1, 0x5d, 0x6f, 0xe2, 0x4d, 0xc5, 0x80, 0x0f, 0x49,
-	0x6c, 0x8a, 0x8b, 0xbd, 0xbb, 0x24, 0x56, 0xe1, 0x50, 0x46, 0x78, 0xca, 0xb6, 0x49, 0xaf, 0x97,
-	0xe3, 0x68, 0x3a, 0x98, 0x73, 0xad, 0x8a, 0x0f, 0xbe, 0x79, 0x16, 0x7b, 0x82, 0xa1, 0x79, 0xc1,
-	0x4a, 0x4a, 0xa8, 0x16, 0xd8, 0x26, 0x90, 0x79, 0xb3, 0xa8, 0xfc, 0x1d, 0x76, 0xeb, 0x2c, 0x5e,
-	0x30, 0x12, 0xfe, 0x0a, 0x4b, 0xe9, 0xbb, 0x19, 0x30, 0x12, 0x3d, 0x96, 0x9f, 0xb0, 0x82, 0xe4,
-	0xd4, 0x7f, 0x8d, 0xe5, 0x49, 0x62, 0x58, 0x4a, 0xdd, 0xcd, 0x7c, 0x58, 0x7c, 0x50, 0x3e, 0x4b,
-	0x3f, 0x34, 0x88, 0x25, 0x79, 0xca, 0x1d, 0x76, 0x09, 0x48, 0xc2, 0xd7, 0xe3, 0x68, 0x78, 0xe4,
-	0x0e, 0xfd, 0xd9, 0xab, 0xf1, 0xa1, 0x7e, 0x85, 0x6d, 0xbc, 0x9a, 0x0c, 0x0e, 0x43, 0x5a, 0x1e,
-	0x7c, 0xd0, 0xcb, 0x6c, 0x7b, 0x3a, 0x0e, 0x43, 0x37, 0xf4, 0x66, 0x23, 0x77, 0xe2, 0xcd, 0xb8,
-	0x3d, 0xb6, 0xad, 0x22, 0x00, 0x6d, 0x6f, 0x36, 0x6a, 0x7b, 0xb3, 0x72, 0x95, 0x6d, 0xf3, 0x75,
-	0x1a, 0xbc, 0x9c, 0x78, 0xee, 0xd4, 0x1f, 0xe9, 0x37, 0x58, 0x1e, 0x1f, 0xc6, 0x23, 0xb1, 0xd8,
-	0xfc, 0xb9, 0x35, 0xd2, 0xaf, 0xb1, 0x1c, 0x8e, 0x47, 0x82, 0xe8, 0xa9, 0xfc, 0x4f, 0xd2, 0x2c,
-	0x0f, 0x42, 0xe6, 0x7e, 0x10, 0xe9, 0xd7, 0xd9, 0x26, 0xfc, 0xeb, 0xce, 0x7c, 0x62, 0xcf, 0xc1,
-	0x63, 0xd7, 0x07, 0xc4, 0xd1, 0x6b, 0x77, 0x30, 0x1a, 0x05, 0x64, 0x9f, 0xdc, 0xd1, 0x6b, 0x63,
-	0x34, 0x0a, 0x74, 0x9d, 0x65, 0x67, 0x83, 0xa9, 0xc7, 0x3d, 0xa3, 0x60, 0xf1, 0xdf, 0xca, 0x50,
-	0x59, 0x75, 0x28, 0x98, 0x68, 0x18, 0x0d, 0x22, 0xaf, 0xb4, 0x81, 0x13, 0xe5, 0x0f, 0x20, 0x61,
-	0x78, 0x1c, 0x04, 0xa5, 0x1c, 0x07, 0xf2, 0xdf, 0xfa, 0x7b, 0x8c, 0x0d, 0x46, 0x27, 0x5e, 0x10,
-	0x8d, 0x43, 0x6f, 0x54, 0xda, 0xe4, 0x18, 0x05, 0xa2, 0xdf, 0x62, 0x85, 0xf0, 0x78, 0x0e, 0xba,
-	0x79, 0xa3, 0x52, 0x9e, 0xa3, 0x63, 0x00, 0x48, 0x9c, 0x7b, 0x5e, 0x50, 0x2a, 0xa0, 0x44, 0xf8,
-	0xad, 0xdf, 0x66, 0x0c, 0x24, 0xbb, 0xe1, 0xdc, 0xf3, 0x46, 0x25, 0x86, 0x2c, 0x00, 0xb1, 0x01,
-	0xa0, 0xef, 0xb2, 0xc2, 0x74, 0x70, 0x4a, 0xd8, 0x22, 0xc7, 0xe6, 0xa7, 0x83, 0x53, 0x8e, 0x2c,
-	0xff, 0x9b, 0x14, 0xbb, 0xac, 0x2c, 0xdb, 0x2b, 0x6f, 0x10, 0x1d, 0x07, 0x5e, 0xa8, 0xdf, 0x61,
-	0xc5, 0xd1, 0x20, 0x1a, 0xcc, 0x07, 0xd1, 0x91, 0x30, 0x78, 0xd6, 0x62, 0x02, 0xd4, 0xe2, 0x52,
-	0x67, 0xee, 0xcb, 0xe3, 0x57, 0xaf, 0xbc, 0x20, 0x24, 0xb3, 0xe7, 0x67, 0x55, 0x7c, 0x86, 0xb5,
-	0x9a, 0xe1, 0xd2, 0x85, 0x14, 0x57, 0x9b, 0x33, 0x87, 0x3f, 0xea, 0xf7, 0xd8, 0xd6, 0xe0, 0xf8,
-	0x74, 0x3c, 0x19, 0x0f, 0x82, 0x37, 0x20, 0x19, 0xcd, 0x58, 0x94, 0xb0, 0xd6, 0x48, 0x2f, 0xb3,
-	0xad, 0xe1, 0x60, 0x3e, 0x78, 0x39, 0x9e, 0x8c, 0xa3, 0xb1, 0x17, 0x92, 0x49, 0x13, 0xb0, 0x72,
-	0xc0, 0x2e, 0x8a, 0x95, 0x75, 0xc1, 0xd6, 0xc7, 0xa1, 0xfe, 0x90, 0xe5, 0x02, 0x6f, 0x10, 0x52,
-	0x2e, 0xd8, 0x79, 0x70, 0x6b, 0xc9, 0x7d, 0x39, 0x35, 0xd2, 0x58, 0x44, 0x0b, 0x89, 0x62, 0xe4,
-	0x85, 0x43, 0x0a, 0xc9, 0xab, 0x2b, 0x79, 0x2c, 0x4e, 0x52, 0xee, 0xa1, 0x87, 0x8f, 0xbc, 0x93,
-	0xf1, 0xd0, 0x13, 0xa3, 0x7e, 0x97, 0xe5, 0xf0, 0x17, 0x8d, 0xba, 0x1c, 0x34, 0x44, 0x3f, 0xf4,
-	0x67, 0x33, 0x6f, 0x08, 0xb9, 0xcc, 0x22, 0x8e, 0xf2, 0xdf, 0x4d, 0xb1, 0x2d, 0xa9, 0x17, 0xf8,
-	0xf8, 0xcf, 0xef, 0xa3, 0xb1, 0x3f, 0x66, 0x12, 0xfe, 0xa8, 0xb3, 0xec, 0x74, 0x10, 0x7e, 0x41,
-	0xe6, 0xe5, 0xbf, 0xc1, 0xb3, 0xa4, 0x9f, 0x91, 0x51, 0x63, 0x40, 0xf9, 0x35, 0x26, 0x83, 0xe9,
-	0x20, 0x1a, 0x1e, 0xe9, 0xf7, 0x13, 0x79, 0x6e, 0x77, 0x69, 0x4e, 0x9c, 0x4a, 0x4d, 0x71, 0xbf,
-	0xca, 0x98, 0x7f, 0x3a, 0x75, 0x5f, 0x8d, 0xbd, 0xc9, 0x08, 0xf3, 0x4c, 0xf1, 0xc1, 0xcd, 0x25,
-	0x36, 0x49, 0x62, 0x15, 0xfc, 0xd3, 0x69, 0x83, 0x13, 0x97, 0xff, 0x7b, 0x0a, 0x43, 0x5d, 0x22,
-	0xf5, 0x6f, 0x33, 0x40, 0xbb, 0xc3, 0xc9, 0x20, 0x14, 0x66, 0x5d, 0x2d, 0x8b, 0x53, 0x58, 0x79,
-	0xff, 0x74, 0x5a, 0x83, 0x5f, 0xfa, 0x0f, 0x60, 0x0e, 0x2f, 0x51, 0x0a, 0x9f, 0x7a, 0xf1, 0xc1,
-	0x7b, 0x2b, 0x19, 0x25, 0x55, 0xf3, 0x82, 0x95, 0xf7, 0x5f, 0xbd, 0xe4, 0xaa, 0xe8, 0xcf, 0x99,
-	0xee, 0x9d, 0xce, 0xbd, 0x60, 0x0c, 0x19, 0xcd, 0x0b, 0x48, 0xce, 0x06, 0x97, 0xf3, 0x8d, 0x95,
-	0x72, 0x96, 0xc9, 0x9b, 0x17, 0xac, 0x4b, 0x2a, 0x94, 0x4b, 0xae, 0x6e, 0xb2, 0x0d, 0x8e, 0x2d,
-	0xff, 0xf1, 0x0e, 0x3a, 0x51, 0x42, 0x89, 0xb3, 0xb7, 0x15, 0x95, 0x92, 0x9b, 0x3c, 0x24, 0x9b,
-	0xdf, 0x60, 0xf9, 0xa3, 0x41, 0xe8, 0xf2, 0x75, 0x06, 0xf7, 0xcd, 0x5b, 0x9b, 0x47, 0x83, 0xb0,
-	0x03, 0x4b, 0x7d, 0x85, 0x65, 0xc1, 0x73, 0xd0, 0x29, 0x9a, 0x17, 0x2c, 0xfe, 0xa4, 0x7f, 0xc0,
-	0xb6, 0xe7, 0x47, 0x6f, 0xc2, 0xf1, 0x70, 0x30, 0xe1, 0x3e, 0x87, 0xde, 0xd1, 0xbc, 0x60, 0x6d,
-	0x09, 0x70, 0x1f, 0xc8, 0xbe, 0xc1, 0x76, 0x28, 0xed, 0x7a, 0xd1, 0x00, 0x42, 0x9e, 0x9b, 0x20,
-	0x0b, 0x9b, 0x10, 0x87, 0x77, 0x08, 0xac, 0xdf, 0x60, 0x9b, 0x5e, 0x74, 0xe4, 0x8e, 0xc2, 0x88,
-	0x67, 0xb8, 0xad, 0xe6, 0x05, 0x2b, 0xe7, 0x45, 0x47, 0xf5, 0x30, 0x12, 0xa8, 0x30, 0x18, 0xf2,
-	0x14, 0x27, 0x50, 0x76, 0x30, 0xd4, 0x77, 0x59, 0x1e, 0x50, 0x7c, 0xc2, 0x79, 0x52, 0x00, 0x88,
-	0x1d, 0x98, 0xd3, 0x2e, 0xcb, 0x9f, 0x4c, 0x06, 0x33, 0xf7, 0x64, 0x3c, 0xc2, 0x1c, 0x07, 0x48,
-	0x80, 0x1c, 0x8c, 0x47, 0x12, 0x39, 0x1f, 0xce, 0x31, 0xcd, 0x09, 0x64, 0x7f, 0x38, 0x87, 0x11,
-	0xc7, 0x73, 0x77, 0x14, 0x0e, 0xe7, 0x98, 0xe4, 0x60, 0xc4, 0xf1, 0xbc, 0x1e, 0x0e, 0xe7, 0xfa,
-	0x75, 0x96, 0x1b, 0xcf, 0x5d, 0x6f, 0x38, 0x2b, 0x6d, 0x11, 0x66, 0x63, 0x3c, 0x37, 0x87, 0x33,
-	0x10, 0x38, 0x9e, 0x63, 0x5d, 0x52, 0xda, 0x16, 0x02, 0xc7, 0xf3, 0x3e, 0xaf, 0x4a, 0x38, 0xf2,
-	0xe4, 0x21, 0x9f, 0xc3, 0x4e, 0x8c, 0x3c, 0x79, 0x48, 0x93, 0xe0, 0x48, 0x98, 0xfb, 0x45, 0x15,
-	0x49, 0x93, 0x8f, 0x86, 0x73, 0xce, 0xa8, 0x09, 0x55, 0xa2, 0xe1, 0x1c, 0xf8, 0x08, 0x05, 0x6c,
-	0x97, 0x14, 0x14, 0x71, 0x1d, 0x8f, 0x90, 0x4b, 0x17, 0xa8, 0xe3, 0x91, 0xe0, 0x02, 0x14, 0x70,
-	0x5d, 0x56, 0x50, 0xc0, 0xb5, 0xcb, 0xf2, 0xe1, 0x30, 0x42, 0xb6, 0x2b, 0x42, 0x11, 0x80, 0x90,
-	0x96, 0x1c, 0x09, 0x8c, 0x57, 0x55, 0x24, 0x70, 0xde, 0x63, 0xc5, 0xf1, 0x70, 0x0a, 0x93, 0xe0,
-	0x4b, 0x71, 0x8d, 0xf0, 0x0c, 0x81, 0x7c, 0x35, 0x62, 0x92, 0xa1, 0x3f, 0xf2, 0x4a, 0xd7, 0x93,
-	0x24, 0x35, 0x7f, 0xe4, 0x81, 0x6d, 0x07, 0xc1, 0xdc, 0xf5, 0xe7, 0xa5, 0x92, 0xb0, 0xed, 0x20,
-	0x98, 0xf7, 0xf8, 0x7a, 0x00, 0x22, 0x9c, 0x0f, 0x4a, 0x37, 0x84, 0xce, 0x83, 0x60, 0x6e, 0xcf,
-	0x07, 0x02, 0x15, 0xcd, 0x07, 0xa5, 0x9b, 0x0a, 0xca, 0x89, 0x51, 0xe1, 0xd1, 0xa0, 0xb4, 0x2b,
-	0xfc, 0x06, 0xb8, 0x8e, 0x62, 0xae, 0xa3, 0x41, 0xe9, 0x96, 0x82, 0x72, 0x8e, 0x06, 0xb4, 0x1a,
-	0x8f, 0xb8, 0x11, 0x6e, 0x13, 0x0e, 0x56, 0xe3, 0x51, 0xbc, 0x54, 0x8f, 0xb8, 0x11, 0xde, 0x53,
-	0x91, 0xc2, 0x08, 0x80, 0x7c, 0x35, 0x19, 0xbc, 0xf4, 0x26, 0xa5, 0x3b, 0x72, 0x86, 0xf3, 0x93,
-	0x47, 0x0d, 0x0e, 0x93, 0x46, 0x78, 0x84, 0x76, 0xba, 0x9b, 0x30, 0xc2, 0xa3, 0x84, 0x9d, 0x1e,
-	0xa1, 0x9d, 0xee, 0x25, 0x49, 0xb8, 0x9d, 0xbe, 0xce, 0x76, 0xf8, 0x40, 0xb3, 0x91, 0x1b, 0x0d,
-	0x82, 0x43, 0x2f, 0x2a, 0x95, 0x49, 0x97, 0x2d, 0x80, 0x77, 0x47, 0x0e, 0x87, 0xea, 0x77, 0x49,
-	0xa1, 0xd9, 0xc8, 0x0d, 0xc3, 0x49, 0xe9, 0x6b, 0x44, 0x54, 0x40, 0x22, 0x3b, 0x9c, 0xa8, 0x14,
-	0xd1, 0x64, 0x52, 0x7a, 0x3f, 0x49, 0xe1, 0x4c, 0x26, 0xfa, 0x1d, 0xc6, 0xa6, 0xf3, 0x49, 0xe8,
-	0xe2, 0x9c, 0x3e, 0x20, 0x6d, 0x0a, 0x00, 0x6b, 0xf3, 0x29, 0xdd, 0x60, 0x9b, 0x9c, 0x20, 0x1a,
-	0x96, 0xbe, 0x2e, 0x16, 0x00, 0x00, 0x0e, 0xb7, 0x16, 0x47, 0xbd, 0xf4, 0xc3, 0xd2, 0x37, 0x84,
-	0xcb, 0x00, 0xa4, 0xea, 0x87, 0x80, 0x9c, 0xbf, 0x7c, 0xe9, 0x8e, 0xc3, 0xf1, 0xa8, 0xf4, 0xa1,
-	0x40, 0xce, 0x5f, 0xbe, 0x6c, 0x85, 0xe3, 0x91, 0x7e, 0x9b, 0x15, 0xa2, 0xe3, 0xd9, 0xcc, 0x9b,
-	0xc0, 0xb6, 0xfe, 0x4d, 0xca, 0x18, 0x79, 0x04, 0xb5, 0x46, 0xd2, 0xd2, 0xde, 0x69, 0x74, 0x34,
-	0x0a, 0x4a, 0x15, 0xd5, 0xd2, 0x26, 0x87, 0xe9, 0x1f, 0xb3, 0xcb, 0xc9, 0xc4, 0x83, 0xb9, 0x6d,
-	0xcc, 0x65, 0xa5, 0xac, 0x4b, 0x89, 0xec, 0xc3, 0xf3, 0x5c, 0x99, 0x6d, 0x51, 0x06, 0x42, 0xd2,
-	0x5f, 0xe7, 0xc6, 0x48, 0x59, 0x0c, 0xd3, 0x90, 0x4a, 0x13, 0x06, 0x43, 0xa4, 0xf9, 0x42, 0xa1,
-	0xb1, 0x83, 0x21, 0xa7, 0x79, 0x9f, 0x6d, 0x8b, 0xb4, 0x83, 0x44, 0x53, 0xae, 0x5e, 0xca, 0x2a,
-	0x52, 0xee, 0x11, 0x54, 0x22, 0x23, 0x20, 0x55, 0x20, 0xa8, 0x28, 0x2d, 0x24, 0xa8, 0xa4, 0x52,
-	0xa1, 0x4a, 0xa5, 0x68, 0x45, 0xe1, 0x81, 0x44, 0xbf, 0x49, 0x44, 0x0c, 0x63, 0x44, 0xa5, 0x89,
-	0x04, 0xcd, 0xdf, 0x50, 0x68, 0x1c, 0xa2, 0xf9, 0x80, 0x8f, 0xf6, 0x28, 0xd6, 0xe9, 0x6f, 0xa6,
-	0x68, 0x7e, 0x45, 0x0a, 0x80, 0x04, 0x99, 0x54, 0xea, 0x6f, 0x25, 0xc8, 0x84, 0x56, 0xdf, 0x62,
-	0x9a, 0x12, 0x0e, 0x48, 0xf9, 0x5b, 0x29, 0x1a, 0x76, 0x27, 0x0e, 0x0a, 0x21, 0x53, 0x78, 0x03,
-	0x52, 0xfe, 0x7d, 0x41, 0x59, 0x24, 0x9f, 0xe0, 0x64, 0xb0, 0x9d, 0x08, 0xbf, 0x40, 0xba, 0xdf,
-	0x4e, 0xd1, 0x8a, 0x6e, 0x09, 0xef, 0x48, 0x0c, 0x8e, 0x1e, 0x82, 0xa4, 0xbf, 0x93, 0x18, 0x1c,
-	0xfd, 0x04, 0x88, 0x61, 0x47, 0x3d, 0x19, 0x4c, 0x8e, 0xbd, 0x6a, 0x0e, 0x2b, 0x9d, 0xb2, 0xcb,
-	0x6e, 0xae, 0xdf, 0x95, 0xa1, 0x46, 0x06, 0x0c, 0x9e, 0x5a, 0xa8, 0xb8, 0x82, 0x22, 0xa3, 0x89,
-	0xe7, 0x3a, 0xf0, 0x11, 0x85, 0x89, 0x0a, 0xda, 0x04, 0xac, 0xfc, 0xaf, 0xb3, 0x78, 0xf6, 0x1c,
-	0xf0, 0x22, 0x4e, 0xff, 0x38, 0xb1, 0x67, 0x2f, 0x17, 0x9b, 0x48, 0xa6, 0xd6, 0x48, 0xdf, 0x61,
-	0x39, 0xff, 0x38, 0x9a, 0x1f, 0x47, 0x54, 0x6c, 0xbe, 0xb7, 0x8e, 0x07, 0xa9, 0x20, 0x28, 0xf1,
-	0x97, 0xfe, 0x03, 0x0a, 0xca, 0x28, 0x9a, 0xf0, 0x2d, 0xbd, 0xb8, 0xe2, 0xe8, 0x49, 0xbc, 0x82,
-	0x4e, 0x84, 0xad, 0x13, 0x4d, 0xf4, 0x07, 0x2c, 0x3b, 0x3f, 0x0e, 0x8f, 0xa8, 0x22, 0x5a, 0xab,
-	0x2a, 0xd0, 0xf0, 0x5a, 0xe1, 0x38, 0x3c, 0x82, 0x21, 0xe7, 0xfe, 0x9c, 0x8b, 0xa3, 0x0a, 0x68,
-	0xed, 0x90, 0x82, 0x8e, 0x27, 0x03, 0x7f, 0xde, 0x99, 0x4f, 0x42, 0xfd, 0x33, 0xb6, 0x71, 0x18,
-	0xf8, 0xc7, 0x73, 0x5e, 0x18, 0x14, 0x1f, 0xdc, 0x5e, 0xc7, 0xcb, 0x89, 0x60, 0xd3, 0xe0, 0x3f,
-	0xf4, 0x6f, 0xb3, 0xdc, 0xec, 0x35, 0x9f, 0xe6, 0xe6, 0xd9, 0x26, 0x42, 0x2a, 0x60, 0x9c, 0xbd,
-	0x86, 0x29, 0x3e, 0x66, 0x85, 0xd0, 0x8b, 0xa8, 0x62, 0xcb, 0x73, 0xde, 0x7b, 0xeb, 0x78, 0x25,
-	0x21, 0xe4, 0xa7, 0xd0, 0x8b, 0xb0, 0xf8, 0xfb, 0x7c, 0xc1, 0x05, 0x0a, 0x5c, 0xc8, 0xfb, 0xeb,
-	0x84, 0xa8, 0xb4, 0x90, 0xc4, 0xd5, 0xe7, 0x6a, 0x9e, 0xe5, 0x90, 0xac, 0xfc, 0x18, 0xcb, 0xbd,
-	0xc4, 0xc2, 0xf2, 0x43, 0x1c, 0x94, 0x5f, 0x29, 0x3a, 0xc4, 0xd1, 0xf1, 0x14, 0x4e, 0x69, 0xf1,
-	0x69, 0x38, 0x37, 0x1d, 0x9c, 0xc2, 0x41, 0xf8, 0x63, 0x3c, 0xa0, 0x2d, 0x2c, 0x2f, 0x14, 0x7f,
-	0xd2, 0x25, 0xe8, 0x38, 0x4c, 0xcb, 0x5d, 0xbe, 0x8f, 0x67, 0x23, 0x65, 0x55, 0xa1, 0xf4, 0xf7,
-	0xa2, 0x23, 0x2f, 0x90, 0x1e, 0xbb, 0x6d, 0xc5, 0x80, 0xf2, 0xa7, 0x89, 0x21, 0xc4, 0x72, 0x7e,
-	0x09, 0xd3, 0xaf, 0x30, 0x6d, 0x71, 0x1d, 0x41, 0x29, 0xfe, 0x43, 0x39, 0xa3, 0xf3, 0xe7, 0xd6,
-	0xa8, 0x5c, 0x49, 0x18, 0x02, 0x97, 0x4f, 0xbf, 0x2a, 0x97, 0x9b, 0xfa, 0x03, 0x7c, 0x31, 0xcb,
-	0x4d, 0x76, 0x65, 0xd5, 0x72, 0xe9, 0x1f, 0x53, 0x15, 0xcd, 0xa9, 0xcf, 0x3e, 0x5f, 0x50, 0xb9,
-	0xfd, 0x94, 0x5d, 0x5f, 0xb3, 0x66, 0x4b, 0x21, 0x9f, 0x5a, 0x0e, 0x79, 0x58, 0x28, 0x5e, 0xff,
-	0xc2, 0x8a, 0x6c, 0x59, 0xfc, 0x77, 0xf9, 0xf7, 0x33, 0x68, 0xde, 0xf1, 0x2c, 0x8c, 0x82, 0x63,
-	0xcc, 0x05, 0xba, 0x92, 0x0b, 0xb6, 0x29, 0xda, 0x9b, 0x8c, 0x1d, 0xfa, 0x91, 0x8f, 0xc7, 0x60,
-	0x8a, 0xf8, 0xe5, 0x43, 0x84, 0x22, 0xc5, 0x8d, 0xc9, 0x61, 0xb7, 0x86, 0x27, 0x7e, 0x66, 0xd6,
-	0x1d, 0xb6, 0xf3, 0x3a, 0x18, 0x47, 0x4a, 0x3d, 0x8e, 0x39, 0xe0, 0x5b, 0x67, 0x4a, 0x4b, 0xb2,
-	0x40, 0xf1, 0xce, 0x21, 0xb2, 0x78, 0x7f, 0xcc, 0x36, 0xd1, 0x2c, 0x21, 0xe5, 0x85, 0xf7, 0xcf,
-	0x14, 0x47, 0xb4, 0x10, 0xe3, 0xf4, 0x53, 0xff, 0x2e, 0xdb, 0x98, 0x7a, 0x60, 0x3a, 0xcc, 0x0f,
-	0xe5, 0x33, 0xf9, 0x39, 0x25, 0xc4, 0x2b, 0xff, 0xa1, 0xf7, 0x16, 0xac, 0x9f, 0x5b, 0xd3, 0x11,
-	0x53, 0x45, 0x9c, 0x19, 0x72, 0x39, 0x5c, 0xaa, 0xf2, 0xb7, 0x71, 0x1b, 0x58, 0x6d, 0xd7, 0x33,
-	0x9a, 0x48, 0xe5, 0x01, 0x7b, 0xef, 0x6c, 0x13, 0xea, 0x37, 0x59, 0x5e, 0xae, 0x00, 0x36, 0x44,
-	0xe4, 0xb3, 0xfe, 0x35, 0xb6, 0x9d, 0x2c, 0x5a, 0xd2, 0x9c, 0x60, 0x6b, 0xaa, 0x54, 0x2b, 0xe5,
-	0x36, 0x7a, 0xe3, 0x0a, 0xb3, 0xea, 0x9f, 0xc4, 0xab, 0x81, 0xcd, 0xb7, 0xeb, 0x6b, 0x12, 0x8f,
-	0x34, 0x7f, 0xf9, 0x01, 0x36, 0x29, 0x97, 0x8c, 0xcc, 0x53, 0x03, 0xfc, 0x50, 0x26, 0xc9, 0x9f,
-	0x5b, 0xa3, 0xf2, 0x01, 0xf6, 0x0a, 0xd7, 0x59, 0xf5, 0x17, 0x0e, 0x8a, 0x3f, 0xc9, 0x60, 0x27,
-	0x83, 0xeb, 0x3b, 0xf5, 0xa9, 0x25, 0xe7, 0x7f, 0x31, 0xf6, 0xc8, 0x52, 0xf4, 0xa4, 0xdf, 0x61,
-	0x45, 0xfc, 0xa5, 0x5a, 0x89, 0x21, 0x88, 0x17, 0x01, 0xea, 0x0a, 0x65, 0x92, 0x6d, 0xbe, 0xef,
-	0xb1, 0xcd, 0xa1, 0x3f, 0x9d, 0x0e, 0x66, 0x78, 0xb6, 0xdf, 0x59, 0x91, 0xe1, 0xc5, 0xf8, 0x2e,
-	0x11, 0x5a, 0x82, 0x43, 0xbf, 0xc7, 0xb6, 0xc6, 0xa3, 0x89, 0xe7, 0x46, 0xe3, 0xa9, 0xe7, 0x1f,
-	0x47, 0xd4, 0xff, 0x28, 0x02, 0xcc, 0x41, 0x10, 0x90, 0x1c, 0x0d, 0x82, 0x91, 0x24, 0xc1, 0xae,
-	0x5d, 0x11, 0x60, 0x82, 0xe4, 0x26, 0xcb, 0xcf, 0x83, 0xb1, 0x1f, 0x8c, 0xa3, 0x37, 0xd4, 0xba,
-	0x93, 0xcf, 0xfa, 0x2e, 0x2b, 0x60, 0x3f, 0x0c, 0x54, 0xc7, 0xc6, 0x5d, 0x1e, 0x01, 0x2d, 0xde,
-	0xbd, 0xf4, 0x8f, 0x23, 0x3c, 0x75, 0x63, 0xef, 0x6e, 0xd3, 0x3f, 0x8e, 0xf8, 0x71, 0x7b, 0x97,
-	0x15, 0x00, 0x85, 0xdb, 0x25, 0x76, 0xef, 0x80, 0x76, 0x8f, 0x67, 0x54, 0xd9, 0x40, 0x2d, 0xaa,
-	0x0d, 0xd4, 0xbf, 0xc4, 0x36, 0x78, 0x07, 0x86, 0x9f, 0x67, 0x8b, 0x0f, 0xae, 0xad, 0xee, 0xcf,
-	0x58, 0x48, 0xa4, 0x3f, 0x66, 0x5b, 0xca, 0x82, 0x87, 0xa5, 0x6d, 0xee, 0x60, 0xb7, 0xce, 0x8a,
-	0x35, 0x2b, 0xc1, 0x51, 0xfe, 0x49, 0x0a, 0x4b, 0x9f, 0x97, 0xc7, 0xc3, 0x2f, 0xbc, 0x08, 0x16,
-	0xf7, 0xb5, 0x37, 0x3e, 0x3c, 0x12, 0x3b, 0x18, 0x3d, 0x41, 0x91, 0xf5, 0x9a, 0x37, 0x86, 0xf8,
-	0x34, 0x71, 0x1b, 0x2b, 0x70, 0x08, 0x9f, 0xe8, 0x1d, 0x56, 0x44, 0x34, 0x4e, 0x15, 0x57, 0x17,
-	0x39, 0x70, 0xb2, 0x9f, 0xa8, 0x29, 0xe9, 0x7c, 0x41, 0xf0, 0x1f, 0xa9, 0x79, 0x84, 0xdb, 0x0e,
-	0x78, 0xde, 0xf7, 0x63, 0x2f, 0x59, 0xd7, 0x91, 0x93, 0xc4, 0xcb, 0x6e, 0x72, 0x3f, 0xf1, 0xde,
-	0x60, 0x77, 0x0d, 0xab, 0x52, 0xd4, 0xa9, 0x5b, 0x5e, 0x26, 0xb1, 0xe5, 0xc1, 0x74, 0xd0, 0x60,
-	0xeb, 0xa7, 0x83, 0x78, 0x4b, 0xd0, 0x95, 0x7f, 0x3b, 0xc5, 0x76, 0x78, 0x47, 0x70, 0x00, 0xcf,
-	0x50, 0x2f, 0x24, 0xdd, 0x2a, 0xb5, 0xe0, 0x56, 0xd7, 0xd9, 0xe6, 0x78, 0xa6, 0x9a, 0x3b, 0x37,
-	0x9e, 0x71, 0x5b, 0x2b, 0xa6, 0xcc, 0x9c, 0xcf, 0x94, 0x32, 0xae, 0xb3, 0x6a, 0x5c, 0x93, 0x79,
-	0x49, 0x9f, 0xf1, 0xec, 0x6c, 0x75, 0x7e, 0x55, 0xb6, 0x60, 0xd3, 0x6b, 0x02, 0x54, 0x0a, 0x5a,
-	0xec, 0xc3, 0x9e, 0x11, 0xf7, 0x71, 0x2e, 0xc9, 0x26, 0x72, 0x89, 0x8c, 0x82, 0x8d, 0xf3, 0x44,
-	0x81, 0x98, 0x5e, 0x4e, 0x99, 0xde, 0x3f, 0xce, 0x60, 0x11, 0xc3, 0x99, 0x02, 0x6f, 0xea, 0x9f,
-	0x78, 0xeb, 0x53, 0x97, 0x1a, 0xfb, 0xe9, 0x85, 0xd8, 0xff, 0xbe, 0x9c, 0x78, 0x86, 0x4f, 0xfc,
-	0xfd, 0xd5, 0x99, 0x89, 0x86, 0x38, 0x6b, 0xee, 0xd9, 0xe4, 0xdc, 0xef, 0xb1, 0xad, 0xd1, 0x71,
-	0x30, 0xa0, 0x42, 0x68, 0x28, 0xd2, 0x96, 0x80, 0xd9, 0xde, 0x10, 0xb6, 0x1e, 0x49, 0x32, 0x03,
-	0x1a, 0xcc, 0x5b, 0x92, 0xaf, 0x1b, 0x7a, 0xc3, 0xa5, 0xf4, 0xb7, 0xf9, 0xe5, 0xe9, 0x2f, 0xbf,
-	0x9c, 0xfe, 0xee, 0xb1, 0x2d, 0x5a, 0xc0, 0xa1, 0x7f, 0x3c, 0xc3, 0x4c, 0x96, 0xb5, 0x8a, 0x08,
-	0xab, 0x01, 0x08, 0x72, 0xc0, 0xcb, 0x37, 0x91, 0x47, 0x04, 0x8c, 0x13, 0x14, 0x00, 0x82, 0x68,
-	0xb9, 0x66, 0x6f, 0xce, 0xb1, 0x66, 0xe5, 0x3f, 0x49, 0xe3, 0x1e, 0x87, 0xdb, 0xd9, 0xcb, 0xc1,
-	0x6c, 0x74, 0xde, 0x17, 0x71, 0x0a, 0x87, 0x12, 0xac, 0x3a, 0xcb, 0x06, 0x83, 0xc8, 0xa3, 0xe5,
-	0xe3, 0xbf, 0xb9, 0xc2, 0xc7, 0x41, 0x18, 0xb9, 0xe1, 0xf8, 0x37, 0x3c, 0x72, 0xbd, 0x02, 0x87,
-	0xd8, 0xe3, 0xdf, 0xf0, 0xf4, 0x47, 0x2c, 0x3b, 0x0a, 0xfc, 0x39, 0xd5, 0x48, 0x67, 0x0e, 0x04,
-	0x74, 0x70, 0x7e, 0x82, 0x7f, 0xf5, 0xcf, 0x59, 0x71, 0x14, 0x0e, 0xe7, 0xb0, 0xe4, 0x83, 0xe0,
-	0x8b, 0xb5, 0x4d, 0x64, 0x95, 0x3d, 0x26, 0x6f, 0x5e, 0xb0, 0x18, 0x3c, 0x5a, 0xfc, 0x49, 0xef,
-	0xae, 0x2c, 0x96, 0x3e, 0x3c, 0x4b, 0xd8, 0xb9, 0x6a, 0xa5, 0xab, 0x58, 0xf7, 0x2f, 0x4c, 0xa1,
-	0xfc, 0x3d, 0x2c, 0xa1, 0x56, 0xab, 0x06, 0xf6, 0x9a, 0x07, 0xde, 0xd0, 0x9d, 0x78, 0x27, 0x9e,
-	0xa8, 0xdb, 0x0b, 0x00, 0x69, 0x03, 0xa0, 0x6c, 0xb0, 0xdd, 0x33, 0x54, 0x39, 0x4f, 0x81, 0x51,
-	0xfe, 0xb7, 0x94, 0x74, 0x50, 0xc6, 0x39, 0x73, 0xba, 0x24, 0x5e, 0xce, 0xe9, 0x72, 0x0f, 0x4d,
-	0xab, 0x7b, 0xa8, 0x5a, 0x25, 0x65, 0x12, 0x55, 0x92, 0xfe, 0x1d, 0xb6, 0x01, 0x9a, 0x8b, 0xb4,
-	0x5d, 0x3e, 0xcb, 0xd0, 0xf4, 0x1e, 0x14, 0x19, 0xca, 0x3f, 0x46, 0xcd, 0xbd, 0x20, 0xf0, 0x03,
-	0x77, 0x1a, 0x1e, 0xea, 0xf7, 0x59, 0x4e, 0xe9, 0x39, 0xac, 0x4a, 0xc3, 0x24, 0x80, 0xc8, 0xe4,
-	0x51, 0x22, 0xad, 0x1c, 0x25, 0x74, 0x96, 0xe5, 0x7d, 0xc5, 0x0c, 0xbd, 0x46, 0xf4, 0x47, 0xde,
-	0xca, 0x6c, 0xfd, 0x5b, 0x29, 0x5c, 0x39, 0x1c, 0x3e, 0xd1, 0x05, 0x01, 0x5d, 0x56, 0x9d, 0x52,
-	0x6e, 0xb0, 0xbc, 0x77, 0x8a, 0x1b, 0x1a, 0x0d, 0xb9, 0xe9, 0x9d, 0xce, 0x79, 0x53, 0x73, 0x71,
-	0xa9, 0x32, 0x67, 0xd4, 0x82, 0xaa, 0x16, 0x27, 0x14, 0xb3, 0xc7, 0x93, 0x68, 0x3c, 0x1f, 0xf0,
-	0x37, 0x6e, 0x3f, 0x3a, 0xf6, 0xc2, 0x48, 0xff, 0x34, 0x11, 0xb3, 0x77, 0x96, 0xad, 0x2a, 0x39,
-	0x94, 0x90, 0x5d, 0xbd, 0x78, 0x3a, 0xcb, 0xbe, 0xf4, 0x47, 0x6f, 0xb8, 0x4e, 0x5b, 0x16, 0xff,
-	0x5d, 0x8e, 0xc8, 0x9b, 0x95, 0x71, 0xe7, 0x93, 0x37, 0xbf, 0xec, 0x51, 0x7f, 0x37, 0x85, 0xef,
-	0x98, 0x47, 0x5e, 0x38, 0xe4, 0x3e, 0xf5, 0x2a, 0xe0, 0xbf, 0xf9, 0x78, 0x05, 0x6b, 0x73, 0xfa,
-	0x2a, 0xa8, 0x03, 0x0a, 0xdf, 0xe0, 0xc9, 0x57, 0x8d, 0x05, 0x2b, 0x77, 0xf4, 0x5a, 0x20, 0x42,
-	0x42, 0xe0, 0x8b, 0xe6, 0x5c, 0x88, 0x88, 0xdb, 0x8c, 0x85, 0x5e, 0x30, 0x1e, 0x4c, 0xdc, 0xd9,
-	0xf1, 0x94, 0x5b, 0xb8, 0x60, 0x15, 0x10, 0xd2, 0x3d, 0x9e, 0x02, 0xdf, 0x08, 0x87, 0xe5, 0xc9,
-	0xa5, 0x60, 0xe5, 0x46, 0x73, 0xe0, 0x2b, 0xff, 0x51, 0x8a, 0x5d, 0x93, 0x3b, 0x4e, 0x18, 0x0d,
-	0xa2, 0x50, 0xae, 0xc0, 0x19, 0xef, 0xd0, 0xd5, 0x02, 0x35, 0x7d, 0x46, 0x81, 0x9a, 0x59, 0x28,
-	0x50, 0xd7, 0x6d, 0xce, 0x0b, 0x85, 0xfe, 0xc6, 0x52, 0xa1, 0x2f, 0x77, 0x82, 0xdc, 0x79, 0x76,
-	0x82, 0x3f, 0xcc, 0x60, 0x61, 0x14, 0x4f, 0x4a, 0xdf, 0x61, 0xe9, 0xf1, 0x88, 0xbf, 0x99, 0xc9,
-	0x5a, 0xe9, 0xf1, 0x99, 0x17, 0x04, 0x16, 0x77, 0xd1, 0xf4, 0x39, 0x76, 0xd1, 0xcc, 0x8a, 0x5d,
-	0x54, 0x2d, 0x01, 0xb2, 0x0b, 0x25, 0xc0, 0x57, 0x73, 0xc0, 0x90, 0x8e, 0xb7, 0xa9, 0x3a, 0x5e,
-	0x6c, 0xe4, 0x7c, 0xc2, 0xc8, 0x5f, 0xe1, 0x7e, 0xfc, 0xff, 0xe8, 0x24, 0xf1, 0xc7, 0x29, 0xdc,
-	0x1f, 0x06, 0x87, 0x87, 0x81, 0x77, 0x38, 0x88, 0xbc, 0xff, 0x6f, 0x3c, 0xf4, 0xc7, 0xec, 0xc6,
-	0xea, 0x89, 0x41, 0x12, 0x5a, 0x5c, 0xa8, 0xd4, 0x97, 0x2d, 0x54, 0x7a, 0x71, 0xa1, 0x6e, 0x33,
-	0xc6, 0x87, 0x46, 0x34, 0x95, 0x29, 0x00, 0xe1, 0xe8, 0xf2, 0x9f, 0x67, 0x30, 0xf5, 0xa3, 0xf1,
-	0xe8, 0x1a, 0x87, 0x3b, 0x0f, 0xfc, 0xb9, 0x17, 0xf0, 0xfa, 0x54, 0x4d, 0x82, 0xcb, 0x95, 0xc3,
-	0x32, 0x9b, 0x9a, 0x0d, 0x0f, 0x16, 0x96, 0x1d, 0x9b, 0x59, 0x1f, 0x9f, 0x47, 0x8a, 0xca, 0xc7,
-	0xdf, 0x75, 0x29, 0xcf, 0xba, 0xc5, 0x8a, 0x33, 0xef, 0x34, 0x52, 0x6f, 0x8a, 0x14, 0x1f, 0xdc,
-	0x3f, 0x8f, 0x58, 0x85, 0x0d, 0x6a, 0x25, 0x78, 0xa4, 0xfb, 0x25, 0x7b, 0x8b, 0x6d, 0xad, 0x6f,
-	0x9d, 0x47, 0xde, 0x8a, 0xee, 0xd6, 0xf7, 0x58, 0xc6, 0x3f, 0x9d, 0xae, 0x2d, 0xdc, 0x56, 0x08,
-	0xf1, 0x4f, 0xa7, 0xcd, 0x0b, 0x16, 0x70, 0x81, 0xc5, 0x56, 0x54, 0x6c, 0xe7, 0xb2, 0xd8, 0x99,
-	0x95, 0x9b, 0x78, 0xeb, 0x51, 0x3e, 0x64, 0x5f, 0x3b, 0x87, 0xc5, 0x97, 0x02, 0x36, 0xf5, 0x73,
-	0x07, 0xec, 0xe7, 0xac, 0xfc, 0xe5, 0x6b, 0xa0, 0xbf, 0xcf, 0x76, 0xe2, 0x47, 0x77, 0x3c, 0xc2,
-	0x91, 0xb6, 0xad, 0x2d, 0xb9, 0x32, 0xad, 0x51, 0x58, 0xb6, 0xb1, 0xc5, 0xb6, 0xde, 0xfe, 0xbf,
-	0x48, 0x1b, 0xec, 0xb3, 0x75, 0x8e, 0x0f, 0xeb, 0x01, 0xbb, 0xa4, 0x7f, 0x3a, 0xe5, 0x1a, 0x65,
-	0xf0, 0xe2, 0x8c, 0x7f, 0x3a, 0x05, 0x5d, 0xfe, 0x61, 0x6a, 0xad, 0x05, 0xcf, 0x2c, 0x58, 0x57,
-	0xbc, 0x19, 0x4a, 0x14, 0x51, 0x99, 0x64, 0x11, 0xf5, 0x2d, 0x96, 0xb8, 0x0d, 0xe2, 0x52, 0xb5,
-	0x04, 0x9a, 0x68, 0x2a, 0xa2, 0x0e, 0x95, 0xd3, 0xef, 0xa5, 0x99, 0xbe, 0xa4, 0x53, 0x78, 0x56,
-	0x4e, 0x14, 0x57, 0xd4, 0xd2, 0xca, 0x15, 0xb5, 0x0f, 0xd8, 0x8e, 0xd2, 0x8a, 0x84, 0xfc, 0x95,
-	0xe1, 0xc9, 0x64, 0x3b, 0xee, 0x45, 0x42, 0x2e, 0x57, 0xc9, 0x78, 0xa3, 0x93, 0xd2, 0xa3, 0x24,
-	0x7b, 0x06, 0x40, 0xe5, 0x82, 0xd1, 0x46, 0xe2, 0x82, 0xd1, 0x1d, 0x56, 0x9c, 0x0e, 0x4e, 0x5d,
-	0x6f, 0x16, 0x05, 0x63, 0x2f, 0xa4, 0xad, 0x8c, 0x4d, 0x07, 0xa7, 0x26, 0x42, 0xf4, 0x3d, 0x38,
-	0x27, 0xf0, 0xf4, 0x03, 0xf8, 0x4d, 0xbe, 0x9a, 0xe7, 0x09, 0x23, 0xc8, 0x57, 0x96, 0xc2, 0x5a,
-	0xfe, 0x49, 0x0a, 0x1b, 0xee, 0x48, 0x8a, 0x7b, 0xff, 0xd9, 0x7b, 0x3d, 0xb8, 0xc6, 0x89, 0x9a,
-	0x49, 0xb7, 0xad, 0x22, 0xc2, 0x30, 0x97, 0xde, 0x63, 0x5b, 0x13, 0xdf, 0xff, 0xe2, 0x78, 0xae,
-	0x64, 0xd3, 0xac, 0x55, 0x44, 0x18, 0x92, 0x7c, 0x8d, 0x6d, 0x73, 0xdb, 0x79, 0x23, 0xa2, 0xc9,
-	0x52, 0x3f, 0x17, 0x81, 0x98, 0x74, 0x3f, 0xc1, 0x42, 0x4b, 0x5e, 0x42, 0x8b, 0xb7, 0xb1, 0x75,
-	0x17, 0xb9, 0xca, 0x7f, 0x4a, 0x75, 0x4c, 0xcc, 0xb3, 0xfe, 0xd2, 0xd7, 0x6d, 0xc6, 0x82, 0x53,
-	0xea, 0x98, 0x84, 0x62, 0x47, 0x08, 0x4e, 0xfb, 0x08, 0x00, 0x74, 0x14, 0xa3, 0x71, 0x0e, 0x85,
-	0x48, 0xa2, 0x6f, 0xb0, 0x7c, 0x70, 0xea, 0xc2, 0x06, 0x12, 0x92, 0xf2, 0x9b, 0xc1, 0x69, 0x15,
-	0x1e, 0xb9, 0xf5, 0x04, 0x0a, 0xb7, 0xbd, 0xcd, 0x88, 0x50, 0x38, 0x26, 0x1c, 0x03, 0xe7, 0xde,
-	0x88, 0xaf, 0x2a, 0x1f, 0xb3, 0x8e, 0x00, 0x1a, 0x53, 0xa0, 0x37, 0xc5, 0x98, 0x02, 0xbd, 0xcb,
-	0x0a, 0xc1, 0x29, 0x1e, 0x3f, 0x42, 0x2a, 0x55, 0xf2, 0xc1, 0xa9, 0xc9, 0x9f, 0x01, 0x19, 0x49,
-	0x24, 0x56, 0x2a, 0xf9, 0x48, 0x20, 0xef, 0xb2, 0xad, 0xe0, 0xd4, 0x7d, 0x15, 0x0c, 0xa6, 0x1e,
-	0x90, 0x50, 0xa1, 0xc2, 0x82, 0xd3, 0x06, 0x80, 0x4c, 0x7e, 0x6f, 0xb2, 0x18, 0x9c, 0xba, 0xfe,
-	0x89, 0x17, 0x70, 0x82, 0xa2, 0x50, 0xad, 0x77, 0xe2, 0x05, 0x80, 0xbf, 0xc5, 0x35, 0x1f, 0x06,
-	0x43, 0x8e, 0xde, 0x12, 0x83, 0xd7, 0x82, 0x21, 0x72, 0xb3, 0xa1, 0x3f, 0x99, 0x8c, 0x43, 0xaa,
-	0x5b, 0x68, 0xaf, 0x17, 0x90, 0xa5, 0x0a, 0x71, 0xe7, 0x1c, 0x15, 0xe2, 0xc5, 0xe5, 0x0a, 0xb1,
-	0xfc, 0x10, 0x5b, 0xfc, 0xd8, 0x12, 0x5c, 0x2a, 0x6d, 0xd6, 0xbd, 0x1c, 0x3b, 0xc0, 0xb8, 0xc7,
-	0x2e, 0x20, 0x3a, 0x9c, 0x17, 0xfc, 0xdf, 0x17, 0x0d, 0xe5, 0x9f, 0xa4, 0x31, 0x74, 0x14, 0x75,
-	0xce, 0x50, 0x83, 0x2f, 0x9f, 0xf7, 0x2a, 0x11, 0x37, 0xf9, 0xc0, 0x7b, 0x25, 0x83, 0x26, 0xa1,
-	0x4d, 0xe6, 0xcb, 0xb4, 0xc9, 0x2e, 0x96, 0x30, 0x5f, 0x55, 0x2f, 0xab, 0xca, 0xb6, 0xc8, 0x52,
-	0x7c, 0x46, 0x94, 0x5b, 0xee, 0xac, 0x69, 0xae, 0x0a, 0x73, 0x5a, 0x45, 0x7c, 0xb6, 0x81, 0x07,
-	0x8e, 0x6d, 0x3b, 0xb1, 0x65, 0xf8, 0xe1, 0xed, 0xcb, 0xee, 0x3c, 0x9e, 0xd9, 0xfa, 0x4d, 0xaf,
-	0x6d, 0xfd, 0x66, 0xce, 0xd9, 0xfa, 0x3d, 0x51, 0x97, 0x0a, 0xd2, 0xea, 0x1b, 0xd0, 0x48, 0x1e,
-	0x25, 0x8b, 0x6b, 0x35, 0x02, 0x12, 0xbc, 0xa1, 0xaa, 0x3f, 0xc0, 0x5b, 0xc8, 0xa2, 0x42, 0xbb,
-	0xb5, 0x86, 0x83, 0xd3, 0xe0, 0x1d, 0xe5, 0xb0, 0xfc, 0x77, 0x52, 0xe8, 0x7c, 0x88, 0x92, 0x9b,
-	0xce, 0x15, 0xb6, 0xc1, 0xef, 0x1a, 0x8a, 0x37, 0xb3, 0xfc, 0x61, 0xe9, 0x6a, 0x6e, 0x7a, 0xf9,
-	0x6a, 0x2e, 0x78, 0x01, 0xec, 0x0c, 0x5c, 0x9e, 0xd8, 0x75, 0x0b, 0xd3, 0xc1, 0x29, 0xaf, 0xc6,
-	0x43, 0xbd, 0x94, 0x6c, 0xf2, 0x6f, 0xc7, 0x3b, 0xf9, 0x77, 0xd4, 0xd6, 0xd1, 0x72, 0xfb, 0xe0,
-	0x8c, 0xd7, 0x5a, 0xbf, 0x8e, 0x2f, 0x8c, 0x95, 0xb6, 0x0c, 0xfa, 0x7a, 0x85, 0x5d, 0x22, 0x9f,
-	0xe5, 0x40, 0x35, 0x8c, 0x2e, 0x22, 0xa2, 0x3a, 0x98, 0x61, 0x32, 0xd7, 0xbf, 0xce, 0x2e, 0x72,
-	0xe7, 0x55, 0x28, 0x31, 0x9e, 0xb6, 0x01, 0x2c, 0xe9, 0xca, 0x7f, 0x40, 0x31, 0x85, 0x83, 0xc9,
-	0x98, 0x5a, 0xa3, 0xda, 0x42, 0xdd, 0x9e, 0x5e, 0xa8, 0xdb, 0x61, 0xd4, 0xb8, 0x25, 0xae, 0x06,
-	0xd6, 0x36, 0x82, 0x5b, 0x33, 0xa4, 0x2b, 0x33, 0xae, 0x46, 0x4c, 0x85, 0xd1, 0x55, 0x04, 0xa0,
-	0xa0, 0xf9, 0xaa, 0xe2, 0xeb, 0x31, 0x63, 0xb1, 0x0d, 0x29, 0xba, 0xee, 0x9d, 0xd5, 0x03, 0x43,
-	0x7f, 0x2a, 0xc0, 0x6f, 0x8c, 0xae, 0xdf, 0xc4, 0xb6, 0x3a, 0x92, 0x9c, 0xf9, 0x29, 0x80, 0x6a,
-	0xb9, 0xf4, 0x9a, 0x2e, 0x5c, 0xe6, 0xe7, 0xed, 0xc2, 0xfd, 0x2b, 0x72, 0x69, 0x24, 0x90, 0x2e,
-	0x4d, 0x17, 0xe1, 0xf1, 0x9d, 0x75, 0x4a, 0x5e, 0x84, 0xef, 0xf0, 0x97, 0xa6, 0xb7, 0x69, 0xd2,
-	0xe8, 0xf4, 0xb4, 0x4e, 0x00, 0x71, 0x56, 0x3a, 0x7e, 0x66, 0x85, 0xe3, 0x93, 0x7c, 0xd1, 0x3a,
-	0x14, 0xf2, 0xc1, 0x75, 0x24, 0x72, 0xe8, 0x4f, 0xfc, 0x80, 0x56, 0x06, 0x90, 0x35, 0x78, 0x2e,
-	0xff, 0x58, 0x75, 0x29, 0x8c, 0xfd, 0xcf, 0x64, 0xdd, 0x95, 0x5a, 0x73, 0x83, 0x46, 0xb5, 0xae,
-	0x2c, 0xcb, 0xbe, 0x34, 0x03, 0x28, 0x6e, 0x2b, 0x32, 0xc0, 0x09, 0xbb, 0xc7, 0xbb, 0x86, 0x89,
-	0x7e, 0xa1, 0x0c, 0xbf, 0xa3, 0xd5, 0x37, 0xa4, 0x52, 0x5f, 0x52, 0x07, 0x2f, 0x34, 0x13, 0x45,
-	0xa3, 0x30, 0xa3, 0x34, 0x0a, 0x27, 0xb8, 0x57, 0x26, 0xc6, 0xfd, 0xe5, 0x8d, 0x66, 0x62, 0x5b,
-	0xf2, 0x47, 0xc7, 0xde, 0x31, 0xd5, 0xf9, 0x34, 0x16, 0x6f, 0xea, 0x60, 0xdd, 0x29, 0xbc, 0x42,
-	0x9e, 0x9b, 0x35, 0x96, 0x89, 0x6f, 0xe4, 0xc0, 0xcf, 0x72, 0x80, 0x4a, 0x2b, 0x62, 0xa6, 0xe3,
-	0x99, 0xcb, 0xdf, 0x24, 0xd4, 0x58, 0x51, 0x91, 0x4b, 0xeb, 0xb6, 0xec, 0xb6, 0x4b, 0x1a, 0x60,
-	0xb5, 0xdb, 0x94, 0xfd, 0xdf, 0xc5, 0x57, 0x14, 0xab, 0xc6, 0x1c, 0x9c, 0xfe, 0x92, 0xc7, 0xfc,
-	0x47, 0xd4, 0xa8, 0x51, 0x38, 0x13, 0xd6, 0xff, 0x4a, 0x06, 0x3e, 0xcf, 0xe1, 0x6a, 0xd5, 0x5a,
-	0xfe, 0xed, 0x14, 0x26, 0x18, 0x4a, 0x9d, 0x7c, 0x10, 0xf0, 0x07, 0x1c, 0x2d, 0x4e, 0xc2, 0xfc,
-	0x19, 0x8f, 0x49, 0x4a, 0xdb, 0x08, 0x2f, 0x5c, 0x55, 0x13, 0xe7, 0x93, 0x75, 0x9d, 0xfe, 0x35,
-	0xfa, 0xd3, 0xd1, 0xe4, 0x01, 0x5e, 0xa7, 0x40, 0xa2, 0x43, 0x5e, 0x6b, 0x40, 0x14, 0xca, 0x2d,
-	0x6b, 0xc5, 0x45, 0xaf, 0xf2, 0x21, 0x9e, 0x57, 0x57, 0xf0, 0xcc, 0x27, 0x6f, 0x56, 0x5e, 0x0d,
-	0xfb, 0x8c, 0xe5, 0x38, 0xb5, 0xf8, 0xae, 0xe2, 0xf6, 0xba, 0xb7, 0xaa, 0x9c, 0xca, 0x22, 0xe2,
-	0xb2, 0xb9, 0x74, 0x8b, 0x0a, 0xed, 0xb4, 0xe6, 0x35, 0x80, 0xb4, 0x5d, 0x26, 0x61, 0xbb, 0x72,
-	0x47, 0x75, 0xbe, 0xf3, 0x9d, 0x72, 0x12, 0xe2, 0xd2, 0x49, 0x71, 0x7f, 0x46, 0xa7, 0x39, 0x45,
-	0xde, 0x2f, 0x22, 0x27, 0x71, 0x86, 0xc9, 0x2c, 0x9d, 0x61, 0x94, 0x83, 0x51, 0x76, 0xf1, 0x60,
-	0x94, 0x38, 0x87, 0x6c, 0x2c, 0x9c, 0x43, 0x16, 0xf7, 0xd0, 0xdc, 0x39, 0xf6, 0xd0, 0xcd, 0x15,
-	0xe7, 0x80, 0x29, 0x3a, 0x68, 0xe0, 0x4f, 0x3c, 0x69, 0xae, 0x87, 0x2c, 0x0b, 0xcf, 0x6b, 0xdf,
-	0x59, 0x0e, 0xfd, 0x59, 0x14, 0xf8, 0x93, 0x89, 0x17, 0x70, 0x3e, 0x8b, 0x53, 0xc3, 0x70, 0x87,
-	0xde, 0xcc, 0xa3, 0x01, 0xc9, 0x10, 0x59, 0x6b, 0x2b, 0x06, 0xb6, 0x46, 0xe5, 0xdf, 0xa1, 0x80,
-	0x18, 0x84, 0x6f, 0x66, 0x43, 0xb1, 0xe3, 0xbe, 0xcf, 0x76, 0xe2, 0xda, 0x82, 0xf7, 0x38, 0xa9,
-	0x29, 0x23, 0x4a, 0x0b, 0xde, 0xe5, 0xfc, 0x90, 0x69, 0xca, 0x57, 0x54, 0xe2, 0x5a, 0x0e, 0xd0,
-	0xed, 0x00, 0xdc, 0xe6, 0x60, 0x4e, 0x59, 0x61, 0x97, 0x12, 0x6f, 0xb1, 0x39, 0x29, 0xd6, 0x77,
-	0x17, 0x01, 0x61, 0x21, 0x9c, 0x5f, 0x75, 0xfa, 0x82, 0xed, 0xf0, 0x7d, 0xb5, 0xe3, 0x8f, 0xf6,
-	0xe7, 0x23, 0xc8, 0x54, 0xd8, 0xae, 0xc7, 0xb7, 0x22, 0xe9, 0x31, 0xff, 0xc8, 0x47, 0xbe, 0xb3,
-	0xa3, 0xdd, 0xea, 0xe6, 0xfa, 0xb7, 0x7a, 0x16, 0x96, 0x09, 0x1d, 0x7f, 0xb4, 0xe2, 0x7b, 0xcd,
-	0x3e, 0xbb, 0xc8, 0x07, 0xe3, 0xc5, 0x87, 0xc5, 0xe3, 0xe8, 0x07, 0xac, 0xa8, 0xec, 0x74, 0x6b,
-	0xfb, 0x5e, 0xea, 0x6e, 0xc8, 0xa6, 0x52, 0x46, 0x79, 0xcc, 0x2e, 0x36, 0x26, 0xfe, 0x6b, 0xde,
-	0xb9, 0x5a, 0xa3, 0xff, 0x43, 0x96, 0x17, 0xb7, 0x8d, 0x48, 0xfd, 0x1b, 0x6b, 0xaf, 0x23, 0x59,
-	0x9b, 0xf0, 0x6b, 0xb5, 0xf2, 0x3f, 0x62, 0x57, 0x60, 0x28, 0x5e, 0x1d, 0x9f, 0x35, 0xde, 0xb7,
-	0x59, 0x41, 0xde, 0x5b, 0x59, 0x6b, 0x2f, 0x49, 0x61, 0xe1, 0xd1, 0x64, 0xf5, 0x90, 0xdf, 0x65,
-	0x1b, 0x30, 0x64, 0xa8, 0x7f, 0xc2, 0x36, 0xc6, 0x91, 0x37, 0x15, 0xf6, 0xd9, 0x5d, 0x3d, 0x01,
-	0x2a, 0x16, 0x38, 0x65, 0xf9, 0xfb, 0x2c, 0xc7, 0x6d, 0x1d, 0x42, 0xa9, 0xa1, 0x32, 0xaf, 0x33,
-	0x2e, 0x2f, 0x67, 0x04, 0xf7, 0x63, 0xc6, 0xe4, 0x64, 0xcf, 0x21, 0x41, 0x39, 0x0c, 0x09, 0x09,
-	0x63, 0x56, 0x04, 0x09, 0xb5, 0xa3, 0xc1, 0xec, 0xd0, 0x0b, 0xf5, 0x6f, 0xb2, 0x5c, 0xe4, 0xbb,
-	0x83, 0x91, 0xb8, 0x13, 0xaa, 0x27, 0x64, 0xf0, 0x59, 0x5a, 0x1b, 0x91, 0x6f, 0x8c, 0x46, 0xfa,
-	0x7d, 0x56, 0x88, 0x7c, 0x72, 0x5e, 0x32, 0xe0, 0x2a, 0xea, 0x7c, 0xe4, 0xa3, 0x23, 0x43, 0x19,
-	0xa9, 0x49, 0x6d, 0xc5, 0x80, 0x1f, 0x2d, 0x0c, 0x78, 0x7d, 0x49, 0x04, 0x4e, 0x4e, 0x8c, 0xfa,
-	0x70, 0x79, 0xd4, 0xb5, 0x2c, 0x72, 0x68, 0xe2, 0x3a, 0xe6, 0x9e, 0x40, 0x7d, 0xf1, 0xb3, 0xb8,
-	0xd0, 0x65, 0xca, 0x36, 0xcb, 0xf7, 0x29, 0xb4, 0x57, 0xb9, 0x8f, 0x4c, 0x06, 0x6b, 0xdd, 0x47,
-	0x52, 0x58, 0x79, 0x91, 0x23, 0xca, 0xcf, 0x58, 0x01, 0x85, 0xf6, 0x8e, 0xa3, 0x25, 0xa9, 0xdf,
-	0x65, 0x2c, 0xbe, 0xaa, 0x44, 0x62, 0x77, 0xd7, 0x89, 0xf5, 0x8f, 0x23, 0x8b, 0x94, 0xe8, 0x1d,
-	0x47, 0xe5, 0xff, 0x9a, 0x62, 0x45, 0xb4, 0xaa, 0x79, 0xe2, 0xcd, 0x96, 0x65, 0xff, 0x65, 0x56,
-	0x54, 0x12, 0xd3, 0xda, 0x82, 0x56, 0xa1, 0x69, 0x5e, 0xb0, 0x58, 0x9c, 0xb3, 0xc0, 0xbd, 0x78,
-	0x96, 0x27, 0x03, 0x2e, 0x4f, 0x57, 0xbe, 0xa6, 0x6f, 0x5e, 0xb0, 0x90, 0x54, 0x37, 0xd9, 0x76,
-	0xe2, 0xfb, 0xce, 0xb5, 0x5f, 0x11, 0x26, 0xa8, 0x9a, 0x17, 0xac, 0x2d, 0x04, 0xe0, 0xd0, 0xd5,
-	0x4d, 0xb6, 0xe1, 0xc1, 0xa4, 0xca, 0x26, 0xdb, 0x82, 0xa5, 0x92, 0xb7, 0x6e, 0x3f, 0x63, 0x39,
-	0x1e, 0x16, 0xc2, 0xe7, 0xbf, 0xac, 0xac, 0x47, 0xe2, 0xca, 0x7f, 0x49, 0xb1, 0xa2, 0x9c, 0xec,
-	0xcc, 0xd7, 0x35, 0xb6, 0xd5, 0x6b, 0xf4, 0xfb, 0x6e, 0xab, 0x7b, 0x60, 0xb4, 0x5b, 0x75, 0xed,
-	0x82, 0xae, 0xb1, 0x3c, 0x87, 0x74, 0x8c, 0xe7, 0xda, 0xdb, 0x9f, 0xbd, 0x7b, 0xb7, 0xa9, 0x5f,
-	0x91, 0x34, 0x6e, 0xbf, 0x67, 0x39, 0xda, 0xff, 0x78, 0x07, 0x50, 0x9d, 0x31, 0x0e, 0x75, 0x8c,
-	0x6a, 0xdb, 0xd4, 0xfe, 0x27, 0x87, 0x5d, 0x66, 0x45, 0x0e, 0xeb, 0xf6, 0xac, 0x8e, 0xd1, 0xd6,
-	0xfe, 0x22, 0x41, 0xd8, 0x68, 0xf7, 0x7a, 0x75, 0xed, 0x7f, 0x71, 0x98, 0x18, 0xc4, 0x68, 0xb7,
-	0xb5, 0x9f, 0x72, 0xc8, 0x75, 0x76, 0x91, 0x43, 0x6a, 0xbd, 0xae, 0x63, 0xf5, 0xda, 0x6d, 0xd3,
-	0xd2, 0xfe, 0x77, 0x82, 0xbd, 0xdd, 0xab, 0x19, 0x6d, 0xed, 0x67, 0x49, 0xf6, 0xee, 0x0b, 0xed,
-	0x1d, 0x40, 0x2a, 0xff, 0x7e, 0x03, 0xdf, 0x9e, 0xf3, 0x22, 0x64, 0x87, 0xb3, 0x38, 0x6e, 0xd3,
-	0x6c, 0xb7, 0x7b, 0xda, 0x05, 0xf9, 0x6c, 0x5a, 0x56, 0xcf, 0xd2, 0x52, 0xfa, 0x55, 0x76, 0x09,
-	0x9f, 0x6b, 0xcd, 0x9e, 0x6b, 0x99, 0x4f, 0xf7, 0x4d, 0xdb, 0xd1, 0xd2, 0xfa, 0x65, 0xae, 0x82,
-	0x04, 0xf7, 0xdb, 0x2f, 0xb4, 0x4c, 0x4c, 0xfb, 0xbc, 0x6f, 0x5a, 0xad, 0x8e, 0xd9, 0x75, 0x4c,
-	0x4b, 0xcb, 0xea, 0x37, 0xd8, 0x55, 0x0e, 0x6e, 0x98, 0x86, 0xb3, 0x6f, 0x99, 0xb6, 0x14, 0xb3,
-	0xa1, 0x5f, 0x67, 0x97, 0x17, 0x51, 0x20, 0x2a, 0xa7, 0xef, 0xb2, 0xeb, 0x1c, 0xb1, 0x67, 0x3a,
-	0x30, 0xcd, 0x46, 0x6b, 0x4f, 0x72, 0x6d, 0x4a, 0x81, 0x09, 0x24, 0xf0, 0xe5, 0xa5, 0x5e, 0xb6,
-	0x44, 0x69, 0x05, 0x5d, 0x67, 0x3b, 0x1c, 0xd8, 0x37, 0x6a, 0x4f, 0x4c, 0xc7, 0x6d, 0x75, 0x35,
-	0x26, 0x75, 0x6d, 0xb4, 0x7b, 0xcf, 0x5c, 0xcb, 0xec, 0xf4, 0x0e, 0xcc, 0xba, 0x56, 0xd4, 0xaf,
-	0x30, 0x0d, 0x49, 0x7b, 0x96, 0xe3, 0xda, 0x8e, 0xe1, 0xec, 0xdb, 0xda, 0x96, 0x94, 0x4a, 0x02,
-	0x7a, 0xfb, 0x8e, 0xb6, 0xad, 0x5f, 0x62, 0xdb, 0xb1, 0x84, 0x4e, 0xaf, 0xae, 0xed, 0xc8, 0x81,
-	0xf6, 0xac, 0xde, 0x7e, 0x9f, 0xc3, 0x2e, 0x4a, 0x32, 0x2e, 0x11, 0x40, 0x9a, 0x24, 0xe3, 0xee,
-	0xc0, 0x61, 0x97, 0xf4, 0x9b, 0xec, 0x1a, 0x87, 0x75, 0xf6, 0xdb, 0x4e, 0xab, 0x6f, 0x58, 0x8e,
-	0x9c, 0xaf, 0xae, 0x97, 0xd8, 0x95, 0x25, 0x1c, 0x4c, 0xf7, 0xb2, 0xc4, 0x54, 0x0d, 0xcb, 0x6a,
-	0x99, 0x96, 0xe4, 0xb9, 0xa2, 0x5f, 0x63, 0xfa, 0x02, 0x06, 0x38, 0xae, 0xea, 0xf7, 0xd8, 0x6d,
-	0x0e, 0x7f, 0xba, 0x6f, 0xee, 0x9b, 0xab, 0xcc, 0x7b, 0x4d, 0xbf, 0xc3, 0x76, 0xd7, 0x91, 0x80,
-	0x8c, 0xeb, 0xd2, 0x76, 0x56, 0xaf, 0x6d, 0x4a, 0xbe, 0x92, 0xb4, 0x12, 0x81, 0x81, 0xf6, 0x86,
-	0x9c, 0x17, 0x88, 0x31, 0xec, 0x17, 0xdd, 0x9a, 0x64, 0xb8, 0x29, 0xb5, 0x57, 0x71, 0xc0, 0xb5,
-	0x2b, 0x2d, 0x64, 0x0b, 0x8c, 0x76, 0x4b, 0xc2, 0x3a, 0xa6, 0x63, 0x5a, 0xdc, 0x6a, 0xb7, 0x2b,
-	0x35, 0xbc, 0x7e, 0xb2, 0xf0, 0x17, 0x20, 0x88, 0xb4, 0xc9, 0xd7, 0x5a, 0xc4, 0x2a, 0x0e, 0x06,
-	0xb0, 0x03, 0xd3, 0xb2, 0x5b, 0xbd, 0x6e, 0xb5, 0xe5, 0x74, 0x8c, 0xbe, 0x96, 0xaa, 0x78, 0x58,
-	0xc6, 0xd1, 0x91, 0x00, 0x5b, 0x24, 0xe8, 0x07, 0x35, 0xb7, 0x61, 0x19, 0x7b, 0x22, 0x44, 0x2f,
-	0x90, 0x5c, 0x82, 0xd6, 0xad, 0x5e, 0x5f, 0x4b, 0xd1, 0xac, 0x09, 0x66, 0x99, 0x86, 0xdd, 0xd1,
-	0xd2, 0x49, 0xc2, 0x8e, 0x61, 0x3f, 0xd1, 0x32, 0x95, 0xc7, 0x38, 0x0c, 0xbe, 0x42, 0xa1, 0x6a,
-	0x91, 0x9c, 0xa3, 0xa6, 0xe8, 0x49, 0xce, 0x5d, 0x73, 0xeb, 0x66, 0xdf, 0x32, 0x6b, 0x86, 0x63,
-	0xd6, 0x85, 0x84, 0x5f, 0xc3, 0xaf, 0xc5, 0xf1, 0x56, 0x3d, 0xb1, 0xaa, 0x53, 0xdc, 0x61, 0x05,
-	0x04, 0x41, 0x3e, 0xfa, 0x59, 0x2a, 0x7e, 0x86, 0xd4, 0xf1, 0x2e, 0x55, 0xf9, 0x77, 0x54, 0xb0,
-	0x26, 0x1a, 0x28, 0x98, 0xd5, 0x54, 0x0d, 0xe4, 0x8c, 0xc0, 0xb1, 0x21, 0x06, 0x6c, 0x2d, 0x25,
-	0x0d, 0x82, 0x3e, 0x8b, 0xd0, 0xb4, 0x24, 0x95, 0xe1, 0x62, 0x6b, 0x59, 0x49, 0x8a, 0x51, 0x80,
-	0xd0, 0x3c, 0xe9, 0x5b, 0x73, 0x5b, 0x7d, 0xb2, 0xd2, 0x5d, 0x49, 0x88, 0x8e, 0x86, 0x84, 0x8f,
-	0xf5, 0x6b, 0xdc, 0xbb, 0x48, 0x66, 0xb5, 0xdd, 0xab, 0x3d, 0x31, 0xeb, 0xda, 0xdb, 0x74, 0xe5,
-	0x44, 0xf9, 0xeb, 0x03, 0x09, 0xf3, 0xad, 0x50, 0x5e, 0xb0, 0xd7, 0x7b, 0xcf, 0xba, 0x5a, 0x2a,
-	0xa6, 0xeb, 0x42, 0xb2, 0xaa, 0x1d, 0x68, 0x59, 0x91, 0xcc, 0x39, 0xa8, 0xf1, 0xac, 0xae, 0xdd,
-	0xa5, 0x88, 0x41, 0x48, 0x9c, 0x29, 0x1e, 0x57, 0xfe, 0xca, 0xc2, 0xcb, 0x23, 0x61, 0xfa, 0xbe,
-	0xbd, 0x3c, 0xac, 0xed, 0xb6, 0x5b, 0xdd, 0x27, 0x0b, 0xc3, 0xda, 0x72, 0x16, 0x69, 0x4a, 0xaf,
-	0x9c, 0xee, 0xc0, 0xd4, 0xb2, 0x95, 0x3f, 0x4d, 0xe3, 0x27, 0x3a, 0x5c, 0xba, 0x6c, 0x9a, 0x11,
-	0x63, 0x43, 0x19, 0x40, 0x82, 0x3e, 0xf9, 0xb8, 0x53, 0x75, 0x9b, 0xf5, 0x58, 0x3c, 0x81, 0x1a,
-	0x75, 0xe9, 0x77, 0x1c, 0x44, 0x64, 0xd9, 0x45, 0x58, 0xa3, 0xae, 0xe5, 0xc5, 0xec, 0x1b, 0xee,
-	0x27, 0x7b, 0x9c, 0x4a, 0x4b, 0x42, 0x1a, 0x60, 0x0f, 0x45, 0x3c, 0x82, 0x1e, 0xeb, 0xba, 0x00,
-	0x3d, 0x24, 0xd0, 0x5b, 0xf0, 0xff, 0x58, 0x3c, 0x01, 0xd3, 0xfa, 0x25, 0x29, 0xcd, 0x41, 0x10,
-	0x18, 0xbc, 0x88, 0xa0, 0x9e, 0xd3, 0x34, 0x2d, 0xed, 0x6d, 0x3e, 0x26, 0xaa, 0xf5, 0xfa, 0x7d,
-	0x00, 0x69, 0x31, 0x51, 0xa3, 0x55, 0x05, 0xc8, 0xdd, 0x78, 0x48, 0x63, 0xdf, 0xe9, 0x75, 0xcd,
-	0x3d, 0xed, 0xed, 0x63, 0xfd, 0x92, 0xa0, 0xea, 0x1b, 0xfb, 0xb6, 0xa9, 0xbd, 0x7d, 0x9b, 0xd2,
-	0xaf, 0x71, 0x57, 0x12, 0x20, 0xc8, 0x19, 0x1d, 0xed, 0xed, 0xdb, 0x74, 0xa5, 0xae, 0x38, 0x0d,
-	0x5d, 0xfc, 0xdd, 0xe6, 0x51, 0xd1, 0xb7, 0x5c, 0xa3, 0x8e, 0x7b, 0xf8, 0x16, 0x3e, 0xd6, 0xcd,
-	0xb6, 0xe9, 0x98, 0x5a, 0x2a, 0x86, 0x74, 0x7a, 0xf5, 0x56, 0xe3, 0x85, 0x96, 0xae, 0x34, 0xb0,
-	0x8d, 0xb5, 0xf4, 0x47, 0x25, 0xc8, 0x83, 0xeb, 0xe6, 0x01, 0xa4, 0xc8, 0xae, 0x59, 0x73, 0x4c,
-	0x10, 0x89, 0xbb, 0x1a, 0x40, 0xeb, 0x2d, 0x3b, 0x46, 0xa4, 0x2a, 0x9f, 0xa2, 0x2b, 0xc5, 0x7f,
-	0xc8, 0x81, 0x16, 0xa7, 0xc3, 0x83, 0xa7, 0x5b, 0x37, 0x2c, 0x60, 0x47, 0x05, 0x3b, 0x8e, 0xdb,
-	0x7b, 0xde, 0xd1, 0x52, 0x95, 0x2f, 0xe2, 0xbf, 0xd4, 0xc0, 0xff, 0xf4, 0x02, 0xe9, 0xf7, 0xbc,
-	0x53, 0x73, 0xbb, 0xcf, 0x3b, 0xee, 0xc7, 0x72, 0x0e, 0x02, 0xf2, 0x89, 0x96, 0xd2, 0x77, 0x79,
-	0x16, 0x01, 0x48, 0xaf, 0x6f, 0x76, 0x79, 0x24, 0x57, 0x0d, 0xbb, 0x55, 0x03, 0xa3, 0xe8, 0x37,
-	0xb8, 0x7e, 0x80, 0x4c, 0xec, 0xd4, 0xef, 0xde, 0x65, 0x2a, 0xff, 0x20, 0xcf, 0x2e, 0xaf, 0xf8,
-	0xe3, 0x07, 0x14, 0x1c, 0xcf, 0x41, 0xa9, 0x46, 0x55, 0x56, 0x37, 0x17, 0x28, 0xbd, 0xab, 0xf0,
-	0xe6, 0x0b, 0xc4, 0xa5, 0xc8, 0x0c, 0x02, 0xd7, 0x31, 0x1d, 0xa3, 0x6e, 0x38, 0x86, 0x96, 0x5e,
-	0x10, 0x66, 0x3a, 0x4d, 0xb7, 0x6e, 0x3b, 0x5a, 0x66, 0x05, 0xdc, 0xb6, 0x6a, 0x5a, 0x76, 0x41,
-	0x10, 0xc0, 0x9d, 0x17, 0x7d, 0x53, 0x96, 0x0f, 0x02, 0x71, 0xd0, 0x36, 0xba, 0xee, 0x41, 0xab,
-	0xae, 0xe5, 0x56, 0x21, 0xfa, 0xb5, 0xbe, 0xb6, 0xb9, 0x38, 0x8f, 0xbe, 0x5b, 0xb7, 0x6b, 0x7d,
-	0x2d, 0x4f, 0x5b, 0x9a, 0x02, 0x37, 0x6b, 0x5d, 0xad, 0xb0, 0x20, 0xa7, 0xd5, 0x77, 0xfb, 0x56,
-	0xcf, 0xe9, 0x69, 0x6c, 0x09, 0x71, 0xf0, 0x90, 0xeb, 0x5a, 0x5c, 0x85, 0x80, 0xc9, 0x6d, 0x2d,
-	0x8c, 0xec, 0xd4, 0xfa, 0x9c, 0x61, 0x7b, 0x05, 0x1c, 0xe8, 0x77, 0x16, 0xe0, 0xfb, 0x75, 0xa4,
-	0xbf, 0xb8, 0x02, 0x0e, 0xf4, 0xda, 0xc2, 0xc0, 0x76, 0xcd, 0x41, 0x86, 0x4b, 0xab, 0x10, 0x75,
-	0x5e, 0x56, 0x2c, 0xac, 0x5d, 0xad, 0x03, 0xca, 0x72, 0xcb, 0x5e, 0x5e, 0x8d, 0xab, 0xf5, 0xea,
-	0xa6, 0x76, 0x65, 0xc1, 0x56, 0x86, 0xd5, 0x77, 0x7b, 0x7d, 0xed, 0xea, 0x82, 0x62, 0x00, 0xb6,
-	0xfb, 0x86, 0x76, 0x6d, 0x05, 0xdc, 0xe9, 0x1b, 0xda, 0xf5, 0x55, 0xf4, 0x4d, 0x43, 0x2b, 0xad,
-	0xa2, 0x6f, 0x1a, 0xda, 0x8d, 0x65, 0xcb, 0x3e, 0xe2, 0x13, 0xbc, 0xb9, 0x0a, 0x01, 0x13, 0xdc,
-	0x5d, 0x9c, 0x04, 0x20, 0x1a, 0x6d, 0xa3, 0x6a, 0xb6, 0xb5, 0x5b, 0xab, 0x26, 0xf8, 0x08, 0x27,
-	0x7f, 0x7b, 0x35, 0x8e, 0x4f, 0xfe, 0x3d, 0xfd, 0x36, 0xbb, 0xb1, 0x28, 0xb3, 0x5b, 0x77, 0x1d,
-	0xc3, 0xda, 0x33, 0x1d, 0xed, 0xce, 0xaa, 0x21, 0xbb, 0x75, 0xd7, 0x6e, 0xb7, 0xb5, 0xbb, 0x6b,
-	0x70, 0x4e, 0xbb, 0xad, 0xdd, 0xa3, 0x5d, 0x5f, 0xc6, 0x4a, 0xbf, 0x6d, 0xbb, 0xa8, 0x69, 0x79,
-	0xc1, 0x1e, 0x1c, 0xe5, 0xd4, 0xb4, 0xaf, 0x2d, 0x86, 0x17, 0xc0, 0xab, 0x3d, 0x5b, 0x7b, 0x7f,
-	0x01, 0xd1, 0xaf, 0x56, 0xdd, 0x96, 0xdd, 0xaa, 0x6b, 0x1f, 0x50, 0x09, 0x24, 0x5d, 0x6d, 0xbf,
-	0xdb, 0x35, 0xdb, 0x6e, 0xab, 0xae, 0x7d, 0x7d, 0x95, 0x6a, 0xe6, 0x73, 0xa7, 0x59, 0xb7, 0xb4,
-	0x6f, 0x54, 0x3e, 0xc5, 0x53, 0x10, 0xff, 0x54, 0x7f, 0x3c, 0xd2, 0x2f, 0xf2, 0xe4, 0x7b, 0xd0,
-	0xaa, 0xbb, 0xdd, 0x5e, 0xd7, 0xe4, 0x5b, 0xdf, 0x0e, 0x01, 0xfa, 0x96, 0x69, 0x9b, 0x5d, 0x47,
-	0x7b, 0x7b, 0xb7, 0xf2, 0x1f, 0x52, 0xd8, 0x08, 0x1d, 0xcf, 0x4f, 0x1e, 0xd1, 0xa7, 0xe5, 0xe2,
-	0x3a, 0x2f, 0x50, 0xb7, 0xcc, 0xe6, 0xd2, 0xde, 0x06, 0x30, 0x10, 0xf9, 0x1c, 0x72, 0x07, 0xee,
-	0x93, 0x00, 0x32, 0xed, 0xbe, 0x96, 0xa6, 0x51, 0xe1, 0xd9, 0xd8, 0x77, 0x9a, 0x5a, 0x56, 0x01,
-	0xd4, 0xa1, 0x98, 0xcc, 0x2b, 0x00, 0x28, 0xba, 0x34, 0x4d, 0x91, 0x6a, 0xf5, 0xf6, 0x21, 0xbf,
-	0xdd, 0x55, 0xa4, 0x36, 0x7b, 0x7d, 0xed, 0x31, 0xed, 0x40, 0xf0, 0xbc, 0xdf, 0xb5, 0xcc, 0x3e,
-	0x6c, 0x67, 0x2a, 0xc8, 0x36, 0x9f, 0x42, 0xe1, 0xf1, 0xd3, 0x74, 0xe2, 0xdb, 0x5e, 0xfa, 0xfb,
-	0x65, 0x40, 0x66, 0xf0, 0xb3, 0x40, 0x7f, 0x1f, 0x32, 0x21, 0x2e, 0x93, 0x01, 0xc5, 0x72, 0xff,
-	0x85, 0xeb, 0x38, 0x6d, 0x7e, 0x4c, 0x28, 0x52, 0xb4, 0xa8, 0xf0, 0x56, 0x57, 0xa6, 0x03, 0x03,
-	0x4b, 0x5c, 0x5c, 0x54, 0xa7, 0x2d, 0xc3, 0xdb, 0x70, 0xdc, 0xba, 0x59, 0x8b, 0xe1, 0x1a, 0x15,
-	0x18, 0x86, 0xe3, 0xf6, 0xf7, 0xed, 0x26, 0xcf, 0x68, 0xda, 0x25, 0x32, 0x26, 0x00, 0x7b, 0x7d,
-	0x84, 0xe9, 0x0b, 0x84, 0x20, 0x41, 0xbb, 0x9c, 0x24, 0xe4, 0xb0, 0x2b, 0x31, 0x21, 0x68, 0xc0,
-	0x4b, 0x30, 0xed, 0x2a, 0x59, 0xd1, 0xa0, 0x23, 0x8c, 0x76, 0x8d, 0x76, 0x38, 0xa2, 0xea, 0x3e,
-	0xe3, 0xda, 0x5c, 0x8f, 0xa1, 0xa0, 0x25, 0x41, 0x4b, 0x49, 0x89, 0x8d, 0x96, 0xd9, 0xae, 0x6b,
-	0x37, 0x94, 0xa1, 0x41, 0x9f, 0x7e, 0xb5, 0xaa, 0xdd, 0xa4, 0xa5, 0x21, 0x75, 0x00, 0xb4, 0xab,
-	0x97, 0xc4, 0xbc, 0x97, 0xb6, 0xa4, 0x03, 0xbc, 0xf0, 0xa3, 0x34, 0x6a, 0xe9, 0x9b, 0x6d, 0x51,
-	0x65, 0x77, 0xda, 0x89, 0x23, 0x39, 0x23, 0x18, 0x14, 0xc1, 0xff, 0xed, 0x5d, 0x86, 0x4a, 0x03,
-	0x80, 0x74, 0x7b, 0x6e, 0x75, 0xbf, 0xd1, 0x20, 0xb9, 0xff, 0x59, 0xb8, 0xa8, 0xf2, 0x5d, 0x26,
-	0x5f, 0x5b, 0x72, 0x1c, 0xb5, 0xb2, 0xc6, 0xf9, 0xb6, 0x1c, 0x77, 0xaf, 0xe7, 0xf4, 0xe8, 0x18,
-	0x9f, 0xa2, 0x78, 0x6a, 0x39, 0xee, 0x33, 0xab, 0xe5, 0x98, 0xea, 0x0e, 0x87, 0x21, 0x28, 0x31,
-	0x46, 0xcd, 0x69, 0xf5, 0xba, 0xb6, 0x96, 0x89, 0x11, 0x46, 0xbf, 0xdf, 0x7e, 0x21, 0x11, 0xd9,
-	0x18, 0x51, 0x6b, 0x9b, 0x86, 0x25, 0x11, 0x1b, 0xc2, 0xaf, 0xe9, 0xdc, 0xa3, 0xe5, 0xc8, 0x52,
-	0xad, 0x15, 0x96, 0xfa, 0xeb, 0x38, 0xa1, 0xc5, 0xef, 0x31, 0xa9, 0xa0, 0x68, 0xd4, 0x12, 0x15,
-	0x4f, 0xa3, 0x26, 0xea, 0x1b, 0xb1, 0x53, 0x4b, 0x88, 0x6b, 0x3b, 0x56, 0xab, 0x06, 0xc7, 0x7c,
-	0x49, 0x4a, 0xc5, 0x51, 0x26, 0x26, 0x45, 0x88, 0x20, 0xcd, 0x56, 0xfe, 0x29, 0xbd, 0xff, 0x95,
-	0xa3, 0x63, 0xbc, 0xa3, 0x31, 0x1b, 0x6a, 0x29, 0x4b, 0x22, 0x1a, 0xae, 0x6d, 0x76, 0xeb, 0xf2,
-	0x00, 0x1e, 0xab, 0xd1, 0x70, 0x6b, 0x4d, 0xb3, 0xf6, 0xc4, 0xed, 0x1d, 0x98, 0x56, 0xdb, 0xe8,
-	0xcb, 0x82, 0xa1, 0xd1, 0x70, 0x21, 0xc1, 0x40, 0x24, 0xed, 0x77, 0x9d, 0xd8, 0x68, 0x8d, 0x06,
-	0x2f, 0xd9, 0x9f, 0x48, 0x44, 0x3e, 0x81, 0xa8, 0xbe, 0x90, 0x08, 0xad, 0x62, 0xe3, 0x11, 0x0a,
-	0xbf, 0x9c, 0xc7, 0xd9, 0xed, 0x2d, 0x35, 0x74, 0xf6, 0x94, 0x86, 0x8e, 0x80, 0xc4, 0xdd, 0x17,
-	0x09, 0x91, 0x0d, 0x95, 0xcf, 0xb1, 0x3c, 0x5c, 0xfa, 0xc2, 0x91, 0x0c, 0xbf, 0x97, 0x34, 0xfc,
-	0x9e, 0x62, 0x78, 0x09, 0x21, 0xfb, 0xa6, 0x2b, 0xb6, 0x7a, 0x45, 0x86, 0xbb, 0x23, 0x09, 0xc1,
-	0x53, 0x9c, 0x14, 0x02, 0x41, 0xd6, 0x36, 0x6b, 0x90, 0x2b, 0x31, 0x0c, 0xf6, 0xc0, 0x5f, 0xeb,
-	0x2d, 0xcb, 0xe4, 0x0b, 0xb7, 0x85, 0x4a, 0x3a, 0x6e, 0xa3, 0xa1, 0x65, 0x2a, 0x7d, 0x74, 0x8c,
-	0xc5, 0xef, 0x00, 0x69, 0x71, 0x2c, 0xb0, 0x52, 0xc7, 0x70, 0x6a, 0x4d, 0xed, 0x02, 0xb9, 0x9b,
-	0x70, 0x40, 0x79, 0xf0, 0xb3, 0x84, 0x91, 0x78, 0xa8, 0xa7, 0x2b, 0x7f, 0x2f, 0x85, 0x6f, 0xa8,
-	0x56, 0x7c, 0x61, 0x47, 0xab, 0x65, 0x59, 0x6e, 0xab, 0xde, 0x36, 0x5d, 0xa7, 0xd5, 0x31, 0x7b,
-	0x4a, 0x86, 0xb4, 0x2c, 0xb7, 0x69, 0x58, 0x75, 0x09, 0x17, 0x46, 0xb0, 0x64, 0x05, 0x9e, 0x8e,
-	0x29, 0xf1, 0x08, 0x29, 0x9d, 0x4f, 0xc2, 0xb1, 0x07, 0x40, 0xf0, 0x6c, 0x65, 0x46, 0x7f, 0x46,
-	0x8d, 0x5f, 0x2a, 0xa0, 0xf2, 0xd9, 0xfd, 0xa1, 0x69, 0xf5, 0xe4, 0x92, 0x76, 0x70, 0x49, 0xdf,
-	0xfe, 0xf4, 0xdd, 0xa6, 0x7e, 0x95, 0xcf, 0xba, 0xe3, 0xda, 0xed, 0xde, 0xb3, 0xbe, 0xe1, 0x34,
-	0xa9, 0x79, 0x86, 0x5d, 0xb5, 0x8e, 0xda, 0x55, 0x53, 0x3b, 0x68, 0x1d, 0x3c, 0x45, 0xf3, 0x05,
-	0x9f, 0x2e, 0x7d, 0xc3, 0xa5, 0x16, 0xf3, 0x55, 0x35, 0x73, 0xa0, 0x3d, 0x01, 0x46, 0xfd, 0x02,
-	0x9c, 0x03, 0x07, 0xd8, 0x35, 0x38, 0x0b, 0x77, 0x0c, 0xeb, 0x89, 0x26, 0x8a, 0x72, 0x80, 0x2f,
-	0xc5, 0xf5, 0xe7, 0xea, 0x07, 0x79, 0xcb, 0xfe, 0xd5, 0x49, 0xfa, 0x57, 0x67, 0xc9, 0xbf, 0x3a,
-	0x8a, 0x7f, 0x1d, 0xaa, 0xb7, 0x1e, 0xd4, 0x10, 0xed, 0x34, 0x12, 0x9d, 0x04, 0x86, 0xa0, 0x27,
-	0xd5, 0x3e, 0x9c, 0xfe, 0x69, 0x16, 0x0d, 0x88, 0xb2, 0xbe, 0x2d, 0xf7, 0xe3, 0x4e, 0xc3, 0xad,
-	0xee, 0x5b, 0xb6, 0x23, 0xf7, 0xe3, 0x4e, 0x43, 0x9c, 0xf7, 0x2b, 0xff, 0x8c, 0x2e, 0x5d, 0x62,
-	0xbf, 0x97, 0xdb, 0x07, 0xa7, 0x6e, 0x52, 0xb3, 0xd1, 0x6d, 0x18, 0xad, 0x36, 0x3f, 0x2f, 0xe1,
-	0x16, 0x69, 0x3a, 0x6e, 0xd5, 0xa8, 0xcb, 0xf6, 0x90, 0xf0, 0x3c, 0x02, 0x93, 0x3f, 0xa6, 0xa9,
-	0x52, 0x22, 0x68, 0xab, 0x6b, 0x3b, 0xd6, 0x3e, 0xa2, 0x32, 0xb4, 0xff, 0x10, 0x0a, 0x1d, 0x3a,
-	0x1b, 0xd3, 0x8b, 0x3e, 0x9d, 0x18, 0x77, 0x83, 0xaa, 0x1e, 0x53, 0xe9, 0xd7, 0x09, 0x5c, 0x2e,
-	0x66, 0x13, 0x7d, 0x3b, 0x81, 0xda, 0x8c, 0xd9, 0x64, 0xff, 0x4e, 0xe0, 0xf2, 0x31, 0x1b, 0xf6,
-	0x34, 0x7a, 0x7d, 0x81, 0x2a, 0xe8, 0xef, 0xb1, 0x9b, 0x88, 0xb2, 0x9f, 0xb5, 0x9c, 0x5a, 0x53,
-	0x34, 0xd5, 0x08, 0xcf, 0xa8, 0xb2, 0x34, 0x93, 0x6d, 0x35, 0x81, 0x2e, 0xc6, 0xa3, 0xca, 0xfe,
-	0x97, 0xc0, 0x6d, 0x51, 0xc7, 0x4e, 0x6a, 0x24, 0xbb, 0xa9, 0x44, 0xb0, 0x4d, 0x7b, 0x86, 0xb9,
-	0xc2, 0xb7, 0xaa, 0xea, 0x5f, 0x5d, 0x7d, 0x35, 0x18, 0x4f, 0xf8, 0xe5, 0x5b, 0xfe, 0x37, 0xc6,
-	0xc0, 0x1f, 0x9b, 0x8d, 0x9a, 0xdb, 0xea, 0xd6, 0x7a, 0x9d, 0xbe, 0xe1, 0xb4, 0x60, 0xd7, 0x13,
-	0x5e, 0x06, 0x08, 0xb3, 0x6f, 0x5a, 0x70, 0x42, 0xfd, 0xf3, 0x34, 0xe6, 0x97, 0x97, 0x83, 0x91,
-	0x78, 0xef, 0x8a, 0x32, 0x70, 0xc1, 0xab, 0x56, 0x8d, 0xaf, 0x08, 0xf5, 0xdd, 0x64, 0xb7, 0x44,
-	0xc0, 0x79, 0xd5, 0x2d, 0x76, 0x53, 0x01, 0x94, 0xbd, 0x4e, 0x2d, 0x4d, 0xcd, 0x60, 0x81, 0x49,
-	0x4c, 0x41, 0x6c, 0x48, 0x0a, 0x12, 0xe5, 0x89, 0x0e, 0x0f, 0x20, 0x50, 0xcf, 0x0d, 0x8a, 0x4f,
-	0x41, 0xda, 0x36, 0xbb, 0xf2, 0xa4, 0xc8, 0x61, 0xbc, 0x34, 0x70, 0xcd, 0x4e, 0xdf, 0x79, 0x21,
-	0x9b, 0xcc, 0x0a, 0x62, 0xbf, 0xfb, 0xa4, 0xdb, 0x7b, 0xd6, 0x95, 0xbb, 0x8b, 0x54, 0x9f, 0xdb,
-	0xbc, 0x05, 0x4b, 0x1c, 0xcf, 0xab, 0x65, 0xbb, 0x76, 0xdb, 0x38, 0x30, 0x35, 0xb6, 0x30, 0x59,
-	0x7e, 0x36, 0x16, 0x55, 0xa1, 0x04, 0xf2, 0x76, 0x93, 0xb6, 0xa5, 0xbf, 0xcf, 0xee, 0x12, 0x38,
-	0xee, 0xf5, 0xd2, 0xf0, 0xb0, 0x1b, 0x82, 0x0b, 0x6b, 0xdb, 0x95, 0xdf, 0xcf, 0x60, 0xfe, 0x01,
-	0x7b, 0x53, 0x51, 0xca, 0xcd, 0x4d, 0x23, 0x19, 0x8a, 0x59, 0x45, 0xcf, 0x52, 0x00, 0x61, 0xd2,
-	0x29, 0x61, 0x50, 0x63, 0x85, 0x41, 0x45, 0xed, 0xa2, 0x20, 0x51, 0x52, 0x66, 0x01, 0xd1, 0xdb,
-	0xc7, 0xd8, 0x90, 0xdb, 0xb0, 0x40, 0x18, 0xd6, 0xde, 0x3e, 0x08, 0xd3, 0x36, 0xc4, 0x12, 0x18,
-	0x62, 0x09, 0x72, 0x8a, 0x8a, 0x4e, 0x0f, 0x36, 0x9d, 0x2e, 0x98, 0x1a, 0x03, 0x5d, 0xf0, 0x63,
-	0x29, 0x9a, 0x17, 0xfe, 0xa0, 0x0c, 0x87, 0x35, 0x69, 0x81, 0x22, 0x05, 0x30, 0x3c, 0xc8, 0xb9,
-	0x83, 0x76, 0xed, 0x96, 0xed, 0xc0, 0xa8, 0x4c, 0xbf, 0xc5, 0x4a, 0x84, 0xde, 0xef, 0xda, 0xfb,
-	0x7d, 0x50, 0xd2, 0xac, 0xbb, 0x3d, 0xab, 0x6e, 0x5a, 0x5a, 0x71, 0xc1, 0x1e, 0x8e, 0xb1, 0xa7,
-	0x6d, 0x2d, 0x4c, 0x00, 0x4a, 0x0c, 0x3e, 0x65, 0x71, 0x38, 0x57, 0x11, 0x60, 0xc0, 0x9d, 0x05,
-	0x03, 0xf2, 0x2e, 0xb5, 0x98, 0xf5, 0xc5, 0xca, 0x5f, 0xa4, 0x58, 0x49, 0x2c, 0x8f, 0x5a, 0x5c,
-	0x2a, 0x61, 0x55, 0x6d, 0xd5, 0x84, 0x3f, 0xf1, 0x1c, 0x26, 0x93, 0x20, 0x22, 0xec, 0xfd, 0x3e,
-	0x82, 0x53, 0x0a, 0x7d, 0xc2, 0xd7, 0x44, 0x1e, 0x8c, 0xe9, 0x65, 0xf5, 0x99, 0xa1, 0x4c, 0xb3,
-	0x8c, 0xc2, 0x3e, 0x72, 0x56, 0x68, 0xdf, 0x5a, 0xb1, 0xfc, 0x1b, 0x0b, 0x03, 0xca, 0xe5, 0xcf,
-	0x09, 0xc3, 0xb5, 0x62, 0x47, 0xda, 0x14, 0x0b, 0xdc, 0x12, 0x0b, 0x9c, 0xaf, 0xfc, 0x73, 0xfa,
-	0x9c, 0x02, 0x26, 0x8f, 0x7d, 0x2e, 0xd5, 0x35, 0x3b, 0xab, 0x5c, 0xb3, 0xa3, 0xba, 0x66, 0x12,
-	0x06, 0xcb, 0x23, 0xe3, 0x9f, 0x60, 0xf5, 0x36, 0x6c, 0x77, 0x16, 0x35, 0xc5, 0x17, 0x90, 0xdd,
-	0x67, 0x0a, 0x32, 0x2b, 0x7c, 0x88, 0x90, 0xcf, 0x5a, 0xed, 0x7a, 0xcd, 0xb0, 0xea, 0x50, 0x56,
-	0x93, 0xcf, 0x11, 0x06, 0x0f, 0x2b, 0xb9, 0x05, 0xe8, 0x81, 0xd1, 0xde, 0x37, 0xb5, 0xcd, 0x05,
-	0xe5, 0xb9, 0x68, 0xd1, 0x31, 0x12, 0xc0, 0xbe, 0x65, 0x5a, 0xe6, 0x53, 0xad, 0xa0, 0x48, 0xa8,
-	0xef, 0xf7, 0x49, 0x2e, 0x13, 0x76, 0xea, 0x08, 0x3b, 0x15, 0x2b, 0x7f, 0x44, 0x4e, 0x12, 0x97,
-	0xcb, 0x4a, 0xee, 0xc5, 0x01, 0x1b, 0x9d, 0x86, 0xf4, 0x12, 0x59, 0x3e, 0x71, 0x20, 0xa5, 0xf9,
-	0xfd, 0x76, 0x5b, 0xe6, 0x4d, 0x0e, 0x5f, 0x70, 0x11, 0x45, 0x8c, 0xa8, 0xa5, 0x33, 0xa2, 0x20,
-	0xef, 0xc8, 0xfc, 0x2d, 0xcb, 0x68, 0x29, 0x81, 0x2a, 0xb3, 0x8d, 0x45, 0x44, 0xad, 0xd7, 0xe9,
-	0x18, 0x5d, 0xb0, 0x13, 0x4e, 0x5e, 0x22, 0x1a, 0x6d, 0x63, 0xcf, 0xd6, 0x36, 0x2b, 0x7f, 0x90,
-	0xc1, 0xef, 0xf1, 0xe2, 0x4a, 0x58, 0x9d, 0x15, 0x2a, 0xba, 0x07, 0x4c, 0xb8, 0xe1, 0x9a, 0xcf,
-	0x5b, 0xb6, 0x63, 0xcb, 0x77, 0x1e, 0x1c, 0x23, 0xca, 0x4c, 0x8c, 0xf5, 0x14, 0xf9, 0x32, 0x47,
-	0x3d, 0x33, 0x5b, 0x7b, 0x4d, 0x47, 0x0d, 0x6a, 0x19, 0x06, 0x1c, 0x0f, 0x29, 0xa2, 0xd7, 0x40,
-	0x4e, 0x38, 0x6b, 0xe1, 0x8e, 0xa9, 0xa2, 0xaa, 0xfb, 0x90, 0x67, 0xe1, 0xe4, 0x70, 0x97, 0xdd,
-	0x12, 0xb8, 0x5a, 0xd3, 0x68, 0x75, 0x5b, 0xdd, 0xbd, 0x84, 0xe0, 0x0d, 0x4a, 0x32, 0x38, 0x30,
-	0xcf, 0x32, 0x2a, 0x3a, 0x27, 0xca, 0x70, 0x40, 0xb7, 0x7b, 0xbd, 0xbe, 0xdc, 0x30, 0xf6, 0x94,
-	0x45, 0xa3, 0x49, 0xe4, 0x55, 0x14, 0x1f, 0xcd, 0xac, 0xcb, 0x5c, 0x86, 0xfe, 0xb2, 0x27, 0x6d,
-	0x0f, 0x91, 0x21, 0xda, 0x8b, 0x7b, 0x8b, 0x86, 0x2f, 0x92, 0x13, 0x48, 0x04, 0x4e, 0x48, 0xdb,
-	0xa2, 0x05, 0x91, 0x70, 0xae, 0xb1, 0x7c, 0x47, 0xb9, 0x17, 0x2f, 0xf6, 0x4e, 0xe5, 0x77, 0xc9,
-	0xf1, 0xc4, 0xdf, 0x3f, 0x4e, 0x2c, 0x11, 0x6a, 0xd3, 0x17, 0x62, 0xa8, 0xc9, 0x8b, 0xda, 0x48,
-	0x68, 0x13, 0x63, 0x4c, 0xd6, 0xb2, 0xfd, 0x58, 0x4d, 0xfe, 0xc2, 0x55, 0x2c, 0x8a, 0x84, 0x1b,
-	0xf5, 0x03, 0xd3, 0x72, 0x5a, 0xb6, 0x29, 0xdd, 0xaf, 0xaf, 0xb8, 0x5f, 0xe5, 0xaf, 0xa2, 0xd3,
-	0xc8, 0xbf, 0x3a, 0x9e, 0xd0, 0x88, 0xde, 0x35, 0x26, 0xbc, 0x5b, 0x06, 0x83, 0xb3, 0x30, 0xb2,
-	0x78, 0x27, 0xe2, 0xc4, 0xe2, 0xd3, 0x95, 0x1f, 0xe2, 0x7c, 0xf1, 0x4e, 0x9b, 0x3f, 0x5f, 0x31,
-	0xdf, 0xa7, 0xbd, 0xe4, 0x7c, 0x71, 0x4c, 0x09, 0xc5, 0x0d, 0x49, 0xc8, 0xe6, 0x60, 0x21, 0xfb,
-	0xaf, 0xb1, 0xdb, 0x4b, 0x7f, 0x7f, 0x7d, 0x85, 0xfa, 0x76, 0x2d, 0x11, 0x28, 0xa2, 0x00, 0x92,
-	0x60, 0x4c, 0x7d, 0x28, 0x9f, 0x03, 0x63, 0xdd, 0x6f, 0x2d, 0xde, 0x68, 0x4b, 0x88, 0xa7, 0x03,
-	0x9c, 0xd5, 0xa8, 0x41, 0xdd, 0xcd, 0x2d, 0xa3, 0x80, 0xb8, 0xc7, 0xc6, 0x47, 0x38, 0x8b, 0x46,
-	0x83, 0xfa, 0x52, 0x4b, 0x57, 0xfe, 0x30, 0x8d, 0x76, 0x8f, 0x8f, 0x15, 0xcb, 0x29, 0xa8, 0x93,
-	0x4c, 0x41, 0x18, 0xc1, 0x1c, 0x88, 0x55, 0x28, 0x45, 0x70, 0x8a, 0x56, 0xbc, 0xa3, 0x46, 0x30,
-	0xf6, 0x2b, 0xd2, 0x2a, 0x4a, 0xc4, 0x05, 0xa2, 0x44, 0x45, 0xd1, 0x59, 0x74, 0xf3, 0x2c, 0x99,
-	0xad, 0x93, 0xcc, 0x2f, 0x22, 0x69, 0x4b, 0xb0, 0x65, 0x38, 0xa6, 0x4c, 0x46, 0x9d, 0x38, 0x26,
-	0x2c, 0x7e, 0x4b, 0x60, 0x81, 0xb8, 0x0a, 0x92, 0xf3, 0xb4, 0x5d, 0x24, 0xa0, 0x6e, 0xdd, 0x74,
-	0x8c, 0x56, 0x5b, 0x2b, 0xa8, 0xaa, 0x52, 0xc6, 0xe0, 0x9a, 0xda, 0x1a, 0x53, 0xa7, 0x2e, 0x92,
-	0x89, 0xd1, 0xad, 0xdb, 0x5a, 0xb1, 0xf2, 0x2f, 0x52, 0x2b, 0xbe, 0xb0, 0x0c, 0x57, 0x39, 0x71,
-	0x63, 0xc1, 0x89, 0xe9, 0xfd, 0xb7, 0x00, 0xcb, 0x1d, 0x5c, 0xac, 0x58, 0xcc, 0x00, 0x59, 0x41,
-	0x5e, 0xba, 0x68, 0x28, 0x5e, 0x93, 0x59, 0x14, 0x22, 0xeb, 0x90, 0xac, 0x88, 0x85, 0x86, 0xf4,
-	0xa7, 0x8d, 0xca, 0x7f, 0xa2, 0xdd, 0x39, 0xf9, 0xf7, 0x17, 0xc4, 0x71, 0x0f, 0x4e, 0xda, 0x76,
-	0x2d, 0x3e, 0xfe, 0xf1, 0x7b, 0x28, 0xcf, 0xe4, 0x3b, 0xee, 0x4e, 0xdf, 0x35, 0xf6, 0xf6, 0x2c,
-	0x73, 0xcf, 0xe0, 0x87, 0x74, 0x3a, 0xf1, 0x89, 0x5b, 0x2d, 0x19, 0x61, 0xf0, 0x7e, 0xf2, 0x6d,
-	0xb0, 0x24, 0xc3, 0x30, 0xda, 0x88, 0x01, 0x98, 0x02, 0x73, 0x31, 0x9f, 0x38, 0xed, 0xdb, 0x35,
-	0x6d, 0x53, 0x18, 0x5c, 0x40, 0xc5, 0x99, 0x46, 0x76, 0x7a, 0x3b, 0x7d, 0x72, 0xa3, 0x82, 0x38,
-	0x52, 0x13, 0x40, 0x24, 0x03, 0x16, 0x8b, 0x40, 0xb8, 0x14, 0x51, 0x8c, 0x31, 0xc9, 0x03, 0x93,
-	0xbc, 0xea, 0x21, 0x26, 0xc1, 0x75, 0x11, 0xc7, 0xa7, 0x4e, 0x7f, 0xd5, 0xd1, 0x7c, 0x77, 0xe5,
-	0xdf, 0xdd, 0x70, 0xc5, 0xdf, 0x10, 0x40, 0xc6, 0x06, 0x9c, 0xe7, 0x96, 0x5e, 0x17, 0x0b, 0x78,
-	0xa7, 0x67, 0x99, 0x5a, 0xaa, 0xd2, 0xa6, 0x78, 0x4c, 0xfe, 0x2d, 0x0d, 0x92, 0x24, 0x34, 0x6e,
-	0xe0, 0x1d, 0x09, 0x45, 0x16, 0xb9, 0xbf, 0xc4, 0x90, 0xb4, 0x3f, 0xcb, 0xa0, 0x6a, 0x6b, 0xbe,
-	0x32, 0x97, 0x7e, 0xd3, 0x77, 0xd4, 0x53, 0x34, 0x24, 0x27, 0xdc, 0xf9, 0x96, 0x30, 0x6e, 0xa7,
-	0x65, 0xdb, 0xb2, 0x22, 0xe5, 0xe8, 0xae, 0xf9, 0x9c, 0xce, 0x9c, 0xb6, 0x96, 0xa6, 0xba, 0x7b,
-	0x11, 0x81, 0x6c, 0x19, 0x71, 0xaf, 0x01, 0xb0, 0xc9, 0xa6, 0x68, 0x96, 0xf6, 0xf8, 0x65, 0x14,
-	0xb2, 0x6e, 0xa8, 0xac, 0xc9, 0xb6, 0x69, 0x4e, 0x65, 0x4d, 0xa0, 0x90, 0x75, 0x53, 0xc6, 0x40,
-	0xdf, 0xa1, 0x86, 0x40, 0x5e, 0x06, 0x23, 0x8c, 0x26, 0x0b, 0x42, 0x26, 0x2e, 0xaa, 0xc4, 0x4a,
-	0xd8, 0xa6, 0x83, 0xe5, 0x9b, 0x38, 0x5f, 0xaf, 0xc0, 0xe1, 0x30, 0xdb, 0x2a, 0x33, 0xaa, 0x21,
-	0x99, 0x77, 0x54, 0xe6, 0x24, 0x0e, 0x99, 0x2f, 0xea, 0x37, 0xe3, 0x95, 0x48, 0xf8, 0xd7, 0xcf,
-	0xde, 0x65, 0xf4, 0x3b, 0xf1, 0x5a, 0xa8, 0x38, 0x64, 0x05, 0x07, 0xfc, 0x3d, 0xfa, 0xc3, 0x23,
-	0x58, 0x72, 0x25, 0x6e, 0x76, 0x50, 0x5f, 0xb0, 0x51, 0x5b, 0xba, 0x05, 0x03, 0x30, 0x6c, 0x1f,
-	0x52, 0x51, 0xa5, 0xa5, 0x44, 0xb5, 0x14, 0x63, 0xda, 0xad, 0x03, 0xb3, 0x6b, 0xda, 0xf1, 0x35,
-	0x8f, 0x3d, 0xa5, 0x58, 0xd2, 0xb2, 0x0a, 0x83, 0xac, 0xa0, 0x78, 0xdf, 0xd6, 0xd6, 0xf2, 0x95,
-	0x2f, 0xb0, 0x21, 0x10, 0x5f, 0xe4, 0xc7, 0xbb, 0xfb, 0x62, 0x0b, 0x55, 0x1b, 0x64, 0xa8, 0xe5,
-	0x53, 0xc7, 0xed, 0xb4, 0xba, 0x98, 0xd1, 0x53, 0x0a, 0xcc, 0x78, 0x8e, 0xb0, 0x34, 0xc5, 0xe0,
-	0xd3, 0x15, 0x2d, 0x8c, 0x1f, 0xe1, 0x69, 0x78, 0xe1, 0x26, 0x37, 0xf9, 0x69, 0xcd, 0xc2, 0x7e,
-	0x4a, 0xb7, 0x57, 0x6b, 0x1a, 0xdd, 0x3d, 0x53, 0x36, 0xf3, 0x05, 0xc2, 0x7c, 0xba, 0x6f, 0xb4,
-	0xe5, 0x45, 0x37, 0x01, 0xed, 0x18, 0x36, 0xee, 0x5e, 0x49, 0x62, 0x3c, 0xd3, 0x67, 0xaa, 0xfb,
-	0xec, 0x3d, 0x3f, 0x38, 0xe4, 0xd7, 0x08, 0x87, 0x7e, 0x30, 0xfa, 0x08, 0xff, 0xb3, 0x1d, 0x79,
-	0xad, 0xf0, 0x93, 0x4f, 0x7f, 0xf8, 0xe9, 0xe1, 0x38, 0x3a, 0x3a, 0x7e, 0xf9, 0xd1, 0xd0, 0x9f,
-	0xde, 0x17, 0x64, 0xf7, 0x91, 0xec, 0x57, 0xe8, 0xff, 0xe4, 0x39, 0xf9, 0xec, 0xfe, 0xa1, 0xaf,
-	0xfe, 0xcf, 0x3c, 0x2f, 0x73, 0x1c, 0xf3, 0xe9, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x8e, 0xea,
-	0x36, 0xd9, 0xbd, 0x67, 0x00, 0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_openflow_13_proto_rawDesc), len(file_voltha_protos_openflow_13_proto_rawDesc)),
+			NumEnums:      53,
+			NumMessages:   99,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_openflow_13_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_openflow_13_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_openflow_13_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_openflow_13_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_openflow_13_proto = out.File
+	file_voltha_protos_openflow_13_proto_goTypes = nil
+	file_voltha_protos_openflow_13_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
index b0aeb8e..5ddcfda 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
@@ -1,69 +1,89 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at:
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/voip_system_profile.proto
 
 package voip_system_profile
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type VoipSystemProfileRequest struct {
-	Key                  string             `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
-	VoipSystemProfile    *VoipSystemProfile `protobuf:"bytes,2,opt,name=voipSystemProfile,proto3" json:"voipSystemProfile,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	Key               string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	VoipSystemProfile *VoipSystemProfile     `protobuf:"bytes,2,opt,name=voipSystemProfile,proto3" json:"voipSystemProfile,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *VoipSystemProfileRequest) Reset()         { *m = VoipSystemProfileRequest{} }
-func (m *VoipSystemProfileRequest) String() string { return proto.CompactTextString(m) }
-func (*VoipSystemProfileRequest) ProtoMessage()    {}
+func (x *VoipSystemProfileRequest) Reset() {
+	*x = VoipSystemProfileRequest{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipSystemProfileRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipSystemProfileRequest) ProtoMessage() {}
+
+func (x *VoipSystemProfileRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipSystemProfileRequest.ProtoReflect.Descriptor instead.
 func (*VoipSystemProfileRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{0}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *VoipSystemProfileRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipSystemProfileRequest.Unmarshal(m, b)
-}
-func (m *VoipSystemProfileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipSystemProfileRequest.Marshal(b, m, deterministic)
-}
-func (m *VoipSystemProfileRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipSystemProfileRequest.Merge(m, src)
-}
-func (m *VoipSystemProfileRequest) XXX_Size() int {
-	return xxx_messageInfo_VoipSystemProfileRequest.Size(m)
-}
-func (m *VoipSystemProfileRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipSystemProfileRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipSystemProfileRequest proto.InternalMessageInfo
-
-func (m *VoipSystemProfileRequest) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *VoipSystemProfileRequest) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
-func (m *VoipSystemProfileRequest) GetVoipSystemProfile() *VoipSystemProfile {
-	if m != nil {
-		return m.VoipSystemProfile
+func (x *VoipSystemProfileRequest) GetVoipSystemProfile() *VoipSystemProfile {
+	if x != nil {
+		return x.VoipSystemProfile
 	}
 	return nil
 }
@@ -71,1624 +91,1799 @@
 // A system wide profile for voip service that can be stored into voltha KV anytime.
 // Designed based on G988-2017 (also designed flexible to be able to be modified later on)
 type VoipSystemProfile struct {
-	SipConfig            *SipConfig  `protobuf:"bytes,1,opt,name=sipConfig,proto3" json:"sipConfig,omitempty"`
-	VoipConfig           *VoipConfig `protobuf:"bytes,2,opt,name=voipConfig,proto3" json:"voipConfig,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	SipConfig     *SipConfig             `protobuf:"bytes,1,opt,name=sipConfig,proto3" json:"sipConfig,omitempty"`
+	VoipConfig    *VoipConfig            `protobuf:"bytes,2,opt,name=voipConfig,proto3" json:"voipConfig,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *VoipSystemProfile) Reset()         { *m = VoipSystemProfile{} }
-func (m *VoipSystemProfile) String() string { return proto.CompactTextString(m) }
-func (*VoipSystemProfile) ProtoMessage()    {}
+func (x *VoipSystemProfile) Reset() {
+	*x = VoipSystemProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipSystemProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipSystemProfile) ProtoMessage() {}
+
+func (x *VoipSystemProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipSystemProfile.ProtoReflect.Descriptor instead.
 func (*VoipSystemProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{1}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *VoipSystemProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipSystemProfile.Unmarshal(m, b)
-}
-func (m *VoipSystemProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipSystemProfile.Marshal(b, m, deterministic)
-}
-func (m *VoipSystemProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipSystemProfile.Merge(m, src)
-}
-func (m *VoipSystemProfile) XXX_Size() int {
-	return xxx_messageInfo_VoipSystemProfile.Size(m)
-}
-func (m *VoipSystemProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipSystemProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipSystemProfile proto.InternalMessageInfo
-
-func (m *VoipSystemProfile) GetSipConfig() *SipConfig {
-	if m != nil {
-		return m.SipConfig
+func (x *VoipSystemProfile) GetSipConfig() *SipConfig {
+	if x != nil {
+		return x.SipConfig
 	}
 	return nil
 }
 
-func (m *VoipSystemProfile) GetVoipConfig() *VoipConfig {
-	if m != nil {
-		return m.VoipConfig
+func (x *VoipSystemProfile) GetVoipConfig() *VoipConfig {
+	if x != nil {
+		return x.VoipConfig
 	}
 	return nil
 }
 
 // Common voip fields are grouped here
 type VoipConfig struct {
-	IpHostConfig         *IpHostConfig        `protobuf:"bytes,1,opt,name=ipHostConfig,proto3" json:"ipHostConfig,omitempty"`
-	TcpUdpConfig         *TcpUdpConfig        `protobuf:"bytes,2,opt,name=tcpUdpConfig,proto3" json:"tcpUdpConfig,omitempty"`
-	VoipVoiceCtp         *VoipVoiceCtp        `protobuf:"bytes,3,opt,name=voipVoiceCtp,proto3" json:"voipVoiceCtp,omitempty"`
-	VoipMediaProfile     *VoipMediaProfile    `protobuf:"bytes,4,opt,name=voipMediaProfile,proto3" json:"voipMediaProfile,omitempty"`
-	VoiceServiceProfile  *VoiceServiceProfile `protobuf:"bytes,5,opt,name=voiceServiceProfile,proto3" json:"voiceServiceProfile,omitempty"`
-	RtpProfile           *RtpProfile          `protobuf:"bytes,6,opt,name=rtpProfile,proto3" json:"rtpProfile,omitempty"`
-	PptpPotsUni          *PptpPotsUni         `protobuf:"bytes,7,opt,name=pptpPotsUni,proto3" json:"pptpPotsUni,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	state               protoimpl.MessageState `protogen:"open.v1"`
+	IpHostConfig        *IpHostConfig          `protobuf:"bytes,1,opt,name=ipHostConfig,proto3" json:"ipHostConfig,omitempty"`
+	TcpUdpConfig        *TcpUdpConfig          `protobuf:"bytes,2,opt,name=tcpUdpConfig,proto3" json:"tcpUdpConfig,omitempty"`
+	VoipVoiceCtp        *VoipVoiceCtp          `protobuf:"bytes,3,opt,name=voipVoiceCtp,proto3" json:"voipVoiceCtp,omitempty"`
+	VoipMediaProfile    *VoipMediaProfile      `protobuf:"bytes,4,opt,name=voipMediaProfile,proto3" json:"voipMediaProfile,omitempty"`
+	VoiceServiceProfile *VoiceServiceProfile   `protobuf:"bytes,5,opt,name=voiceServiceProfile,proto3" json:"voiceServiceProfile,omitempty"`
+	RtpProfile          *RtpProfile            `protobuf:"bytes,6,opt,name=rtpProfile,proto3" json:"rtpProfile,omitempty"`
+	PptpPotsUni         *PptpPotsUni           `protobuf:"bytes,7,opt,name=pptpPotsUni,proto3" json:"pptpPotsUni,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
-func (m *VoipConfig) Reset()         { *m = VoipConfig{} }
-func (m *VoipConfig) String() string { return proto.CompactTextString(m) }
-func (*VoipConfig) ProtoMessage()    {}
+func (x *VoipConfig) Reset() {
+	*x = VoipConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipConfig) ProtoMessage() {}
+
+func (x *VoipConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipConfig.ProtoReflect.Descriptor instead.
 func (*VoipConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{2}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *VoipConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipConfig.Unmarshal(m, b)
-}
-func (m *VoipConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipConfig.Marshal(b, m, deterministic)
-}
-func (m *VoipConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipConfig.Merge(m, src)
-}
-func (m *VoipConfig) XXX_Size() int {
-	return xxx_messageInfo_VoipConfig.Size(m)
-}
-func (m *VoipConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipConfig proto.InternalMessageInfo
-
-func (m *VoipConfig) GetIpHostConfig() *IpHostConfig {
-	if m != nil {
-		return m.IpHostConfig
+func (x *VoipConfig) GetIpHostConfig() *IpHostConfig {
+	if x != nil {
+		return x.IpHostConfig
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetTcpUdpConfig() *TcpUdpConfig {
-	if m != nil {
-		return m.TcpUdpConfig
+func (x *VoipConfig) GetTcpUdpConfig() *TcpUdpConfig {
+	if x != nil {
+		return x.TcpUdpConfig
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetVoipVoiceCtp() *VoipVoiceCtp {
-	if m != nil {
-		return m.VoipVoiceCtp
+func (x *VoipConfig) GetVoipVoiceCtp() *VoipVoiceCtp {
+	if x != nil {
+		return x.VoipVoiceCtp
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetVoipMediaProfile() *VoipMediaProfile {
-	if m != nil {
-		return m.VoipMediaProfile
+func (x *VoipConfig) GetVoipMediaProfile() *VoipMediaProfile {
+	if x != nil {
+		return x.VoipMediaProfile
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetVoiceServiceProfile() *VoiceServiceProfile {
-	if m != nil {
-		return m.VoiceServiceProfile
+func (x *VoipConfig) GetVoiceServiceProfile() *VoiceServiceProfile {
+	if x != nil {
+		return x.VoiceServiceProfile
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetRtpProfile() *RtpProfile {
-	if m != nil {
-		return m.RtpProfile
+func (x *VoipConfig) GetRtpProfile() *RtpProfile {
+	if x != nil {
+		return x.RtpProfile
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetPptpPotsUni() *PptpPotsUni {
-	if m != nil {
-		return m.PptpPotsUni
+func (x *VoipConfig) GetPptpPotsUni() *PptpPotsUni {
+	if x != nil {
+		return x.PptpPotsUni
 	}
 	return nil
 }
 
 type IpHostConfig struct {
-	IpOptions            uint32   `protobuf:"varint,1,opt,name=ipOptions,proto3" json:"ipOptions,omitempty"`
-	OnuIdentifier        string   `protobuf:"bytes,2,opt,name=onuIdentifier,proto3" json:"onuIdentifier,omitempty"`
-	IpAddress            string   `protobuf:"bytes,3,opt,name=ipAddress,proto3" json:"ipAddress,omitempty"`
-	Mask                 string   `protobuf:"bytes,4,opt,name=mask,proto3" json:"mask,omitempty"`
-	Gateway              string   `protobuf:"bytes,5,opt,name=gateway,proto3" json:"gateway,omitempty"`
-	PrimaryDns           string   `protobuf:"bytes,6,opt,name=primaryDns,proto3" json:"primaryDns,omitempty"`
-	SecondaryDns         string   `protobuf:"bytes,7,opt,name=secondaryDns,proto3" json:"secondaryDns,omitempty"`
-	RelayAgentOptions    string   `protobuf:"bytes,8,opt,name=relayAgentOptions,proto3" json:"relayAgentOptions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	IpOptions         uint32                 `protobuf:"varint,1,opt,name=ipOptions,proto3" json:"ipOptions,omitempty"`
+	OnuIdentifier     string                 `protobuf:"bytes,2,opt,name=onuIdentifier,proto3" json:"onuIdentifier,omitempty"`
+	IpAddress         string                 `protobuf:"bytes,3,opt,name=ipAddress,proto3" json:"ipAddress,omitempty"`
+	Mask              string                 `protobuf:"bytes,4,opt,name=mask,proto3" json:"mask,omitempty"`
+	Gateway           string                 `protobuf:"bytes,5,opt,name=gateway,proto3" json:"gateway,omitempty"`
+	PrimaryDns        string                 `protobuf:"bytes,6,opt,name=primaryDns,proto3" json:"primaryDns,omitempty"`
+	SecondaryDns      string                 `protobuf:"bytes,7,opt,name=secondaryDns,proto3" json:"secondaryDns,omitempty"`
+	RelayAgentOptions string                 `protobuf:"bytes,8,opt,name=relayAgentOptions,proto3" json:"relayAgentOptions,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *IpHostConfig) Reset()         { *m = IpHostConfig{} }
-func (m *IpHostConfig) String() string { return proto.CompactTextString(m) }
-func (*IpHostConfig) ProtoMessage()    {}
+func (x *IpHostConfig) Reset() {
+	*x = IpHostConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IpHostConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IpHostConfig) ProtoMessage() {}
+
+func (x *IpHostConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IpHostConfig.ProtoReflect.Descriptor instead.
 func (*IpHostConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{3}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *IpHostConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IpHostConfig.Unmarshal(m, b)
-}
-func (m *IpHostConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IpHostConfig.Marshal(b, m, deterministic)
-}
-func (m *IpHostConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IpHostConfig.Merge(m, src)
-}
-func (m *IpHostConfig) XXX_Size() int {
-	return xxx_messageInfo_IpHostConfig.Size(m)
-}
-func (m *IpHostConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_IpHostConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IpHostConfig proto.InternalMessageInfo
-
-func (m *IpHostConfig) GetIpOptions() uint32 {
-	if m != nil {
-		return m.IpOptions
+func (x *IpHostConfig) GetIpOptions() uint32 {
+	if x != nil {
+		return x.IpOptions
 	}
 	return 0
 }
 
-func (m *IpHostConfig) GetOnuIdentifier() string {
-	if m != nil {
-		return m.OnuIdentifier
+func (x *IpHostConfig) GetOnuIdentifier() string {
+	if x != nil {
+		return x.OnuIdentifier
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetIpAddress() string {
-	if m != nil {
-		return m.IpAddress
+func (x *IpHostConfig) GetIpAddress() string {
+	if x != nil {
+		return x.IpAddress
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetMask() string {
-	if m != nil {
-		return m.Mask
+func (x *IpHostConfig) GetMask() string {
+	if x != nil {
+		return x.Mask
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetGateway() string {
-	if m != nil {
-		return m.Gateway
+func (x *IpHostConfig) GetGateway() string {
+	if x != nil {
+		return x.Gateway
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetPrimaryDns() string {
-	if m != nil {
-		return m.PrimaryDns
+func (x *IpHostConfig) GetPrimaryDns() string {
+	if x != nil {
+		return x.PrimaryDns
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetSecondaryDns() string {
-	if m != nil {
-		return m.SecondaryDns
+func (x *IpHostConfig) GetSecondaryDns() string {
+	if x != nil {
+		return x.SecondaryDns
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetRelayAgentOptions() string {
-	if m != nil {
-		return m.RelayAgentOptions
+func (x *IpHostConfig) GetRelayAgentOptions() string {
+	if x != nil {
+		return x.RelayAgentOptions
 	}
 	return ""
 }
 
 type TcpUdpConfig struct {
-	Protocol             uint32   `protobuf:"varint,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
-	TosField             string   `protobuf:"bytes,2,opt,name=tosField,proto3" json:"tosField,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Protocol      uint32                 `protobuf:"varint,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
+	TosField      string                 `protobuf:"bytes,2,opt,name=tosField,proto3" json:"tosField,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *TcpUdpConfig) Reset()         { *m = TcpUdpConfig{} }
-func (m *TcpUdpConfig) String() string { return proto.CompactTextString(m) }
-func (*TcpUdpConfig) ProtoMessage()    {}
+func (x *TcpUdpConfig) Reset() {
+	*x = TcpUdpConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TcpUdpConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TcpUdpConfig) ProtoMessage() {}
+
+func (x *TcpUdpConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TcpUdpConfig.ProtoReflect.Descriptor instead.
 func (*TcpUdpConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{4}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *TcpUdpConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TcpUdpConfig.Unmarshal(m, b)
-}
-func (m *TcpUdpConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TcpUdpConfig.Marshal(b, m, deterministic)
-}
-func (m *TcpUdpConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TcpUdpConfig.Merge(m, src)
-}
-func (m *TcpUdpConfig) XXX_Size() int {
-	return xxx_messageInfo_TcpUdpConfig.Size(m)
-}
-func (m *TcpUdpConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_TcpUdpConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TcpUdpConfig proto.InternalMessageInfo
-
-func (m *TcpUdpConfig) GetProtocol() uint32 {
-	if m != nil {
-		return m.Protocol
+func (x *TcpUdpConfig) GetProtocol() uint32 {
+	if x != nil {
+		return x.Protocol
 	}
 	return 0
 }
 
-func (m *TcpUdpConfig) GetTosField() string {
-	if m != nil {
-		return m.TosField
+func (x *TcpUdpConfig) GetTosField() string {
+	if x != nil {
+		return x.TosField
 	}
 	return ""
 }
 
 type VoipVoiceCtp struct {
-	SignallingCode       uint32   `protobuf:"varint,1,opt,name=signallingCode,proto3" json:"signallingCode,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	SignallingCode uint32                 `protobuf:"varint,1,opt,name=signallingCode,proto3" json:"signallingCode,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *VoipVoiceCtp) Reset()         { *m = VoipVoiceCtp{} }
-func (m *VoipVoiceCtp) String() string { return proto.CompactTextString(m) }
-func (*VoipVoiceCtp) ProtoMessage()    {}
+func (x *VoipVoiceCtp) Reset() {
+	*x = VoipVoiceCtp{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipVoiceCtp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipVoiceCtp) ProtoMessage() {}
+
+func (x *VoipVoiceCtp) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipVoiceCtp.ProtoReflect.Descriptor instead.
 func (*VoipVoiceCtp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{5}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *VoipVoiceCtp) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipVoiceCtp.Unmarshal(m, b)
-}
-func (m *VoipVoiceCtp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipVoiceCtp.Marshal(b, m, deterministic)
-}
-func (m *VoipVoiceCtp) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipVoiceCtp.Merge(m, src)
-}
-func (m *VoipVoiceCtp) XXX_Size() int {
-	return xxx_messageInfo_VoipVoiceCtp.Size(m)
-}
-func (m *VoipVoiceCtp) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipVoiceCtp.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipVoiceCtp proto.InternalMessageInfo
-
-func (m *VoipVoiceCtp) GetSignallingCode() uint32 {
-	if m != nil {
-		return m.SignallingCode
+func (x *VoipVoiceCtp) GetSignallingCode() uint32 {
+	if x != nil {
+		return x.SignallingCode
 	}
 	return 0
 }
 
 type VoipMediaProfile struct {
-	FaxMode                uint32   `protobuf:"varint,1,opt,name=faxMode,proto3" json:"faxMode,omitempty"`
-	CodecSelection1        uint32   `protobuf:"varint,2,opt,name=codecSelection1,proto3" json:"codecSelection1,omitempty"`
-	PacketPeriodSelection1 uint32   `protobuf:"varint,3,opt,name=packetPeriodSelection1,proto3" json:"packetPeriodSelection1,omitempty"`
-	SilenceSuppression1    uint32   `protobuf:"varint,4,opt,name=silenceSuppression1,proto3" json:"silenceSuppression1,omitempty"`
-	CodecSelection2        uint32   `protobuf:"varint,5,opt,name=codecSelection2,proto3" json:"codecSelection2,omitempty"`
-	PacketPeriodSelection2 uint32   `protobuf:"varint,6,opt,name=packetPeriodSelection2,proto3" json:"packetPeriodSelection2,omitempty"`
-	SilenceSuppression2    uint32   `protobuf:"varint,7,opt,name=silenceSuppression2,proto3" json:"silenceSuppression2,omitempty"`
-	CodecSelection3        uint32   `protobuf:"varint,8,opt,name=codecSelection3,proto3" json:"codecSelection3,omitempty"`
-	PacketPeriodSelection3 uint32   `protobuf:"varint,9,opt,name=packetPeriodSelection3,proto3" json:"packetPeriodSelection3,omitempty"`
-	SilenceSuppression3    uint32   `protobuf:"varint,10,opt,name=silenceSuppression3,proto3" json:"silenceSuppression3,omitempty"`
-	CodecSelection4        uint32   `protobuf:"varint,11,opt,name=codecSelection4,proto3" json:"codecSelection4,omitempty"`
-	PacketPeriodSelection4 uint32   `protobuf:"varint,12,opt,name=packetPeriodSelection4,proto3" json:"packetPeriodSelection4,omitempty"`
-	SilenceSuppression4    uint32   `protobuf:"varint,13,opt,name=silenceSuppression4,proto3" json:"silenceSuppression4,omitempty"`
-	OobDtmf                uint32   `protobuf:"varint,14,opt,name=oobDtmf,proto3" json:"oobDtmf,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
-	XXX_unrecognized       []byte   `json:"-"`
-	XXX_sizecache          int32    `json:"-"`
+	state                  protoimpl.MessageState `protogen:"open.v1"`
+	FaxMode                uint32                 `protobuf:"varint,1,opt,name=faxMode,proto3" json:"faxMode,omitempty"`
+	CodecSelection1        uint32                 `protobuf:"varint,2,opt,name=codecSelection1,proto3" json:"codecSelection1,omitempty"`
+	PacketPeriodSelection1 uint32                 `protobuf:"varint,3,opt,name=packetPeriodSelection1,proto3" json:"packetPeriodSelection1,omitempty"`
+	SilenceSuppression1    uint32                 `protobuf:"varint,4,opt,name=silenceSuppression1,proto3" json:"silenceSuppression1,omitempty"`
+	CodecSelection2        uint32                 `protobuf:"varint,5,opt,name=codecSelection2,proto3" json:"codecSelection2,omitempty"`
+	PacketPeriodSelection2 uint32                 `protobuf:"varint,6,opt,name=packetPeriodSelection2,proto3" json:"packetPeriodSelection2,omitempty"`
+	SilenceSuppression2    uint32                 `protobuf:"varint,7,opt,name=silenceSuppression2,proto3" json:"silenceSuppression2,omitempty"`
+	CodecSelection3        uint32                 `protobuf:"varint,8,opt,name=codecSelection3,proto3" json:"codecSelection3,omitempty"`
+	PacketPeriodSelection3 uint32                 `protobuf:"varint,9,opt,name=packetPeriodSelection3,proto3" json:"packetPeriodSelection3,omitempty"`
+	SilenceSuppression3    uint32                 `protobuf:"varint,10,opt,name=silenceSuppression3,proto3" json:"silenceSuppression3,omitempty"`
+	CodecSelection4        uint32                 `protobuf:"varint,11,opt,name=codecSelection4,proto3" json:"codecSelection4,omitempty"`
+	PacketPeriodSelection4 uint32                 `protobuf:"varint,12,opt,name=packetPeriodSelection4,proto3" json:"packetPeriodSelection4,omitempty"`
+	SilenceSuppression4    uint32                 `protobuf:"varint,13,opt,name=silenceSuppression4,proto3" json:"silenceSuppression4,omitempty"`
+	OobDtmf                uint32                 `protobuf:"varint,14,opt,name=oobDtmf,proto3" json:"oobDtmf,omitempty"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
 }
 
-func (m *VoipMediaProfile) Reset()         { *m = VoipMediaProfile{} }
-func (m *VoipMediaProfile) String() string { return proto.CompactTextString(m) }
-func (*VoipMediaProfile) ProtoMessage()    {}
+func (x *VoipMediaProfile) Reset() {
+	*x = VoipMediaProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipMediaProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipMediaProfile) ProtoMessage() {}
+
+func (x *VoipMediaProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipMediaProfile.ProtoReflect.Descriptor instead.
 func (*VoipMediaProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{6}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *VoipMediaProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipMediaProfile.Unmarshal(m, b)
-}
-func (m *VoipMediaProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipMediaProfile.Marshal(b, m, deterministic)
-}
-func (m *VoipMediaProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipMediaProfile.Merge(m, src)
-}
-func (m *VoipMediaProfile) XXX_Size() int {
-	return xxx_messageInfo_VoipMediaProfile.Size(m)
-}
-func (m *VoipMediaProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipMediaProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipMediaProfile proto.InternalMessageInfo
-
-func (m *VoipMediaProfile) GetFaxMode() uint32 {
-	if m != nil {
-		return m.FaxMode
+func (x *VoipMediaProfile) GetFaxMode() uint32 {
+	if x != nil {
+		return x.FaxMode
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetCodecSelection1() uint32 {
-	if m != nil {
-		return m.CodecSelection1
+func (x *VoipMediaProfile) GetCodecSelection1() uint32 {
+	if x != nil {
+		return x.CodecSelection1
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetPacketPeriodSelection1() uint32 {
-	if m != nil {
-		return m.PacketPeriodSelection1
+func (x *VoipMediaProfile) GetPacketPeriodSelection1() uint32 {
+	if x != nil {
+		return x.PacketPeriodSelection1
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetSilenceSuppression1() uint32 {
-	if m != nil {
-		return m.SilenceSuppression1
+func (x *VoipMediaProfile) GetSilenceSuppression1() uint32 {
+	if x != nil {
+		return x.SilenceSuppression1
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetCodecSelection2() uint32 {
-	if m != nil {
-		return m.CodecSelection2
+func (x *VoipMediaProfile) GetCodecSelection2() uint32 {
+	if x != nil {
+		return x.CodecSelection2
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetPacketPeriodSelection2() uint32 {
-	if m != nil {
-		return m.PacketPeriodSelection2
+func (x *VoipMediaProfile) GetPacketPeriodSelection2() uint32 {
+	if x != nil {
+		return x.PacketPeriodSelection2
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetSilenceSuppression2() uint32 {
-	if m != nil {
-		return m.SilenceSuppression2
+func (x *VoipMediaProfile) GetSilenceSuppression2() uint32 {
+	if x != nil {
+		return x.SilenceSuppression2
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetCodecSelection3() uint32 {
-	if m != nil {
-		return m.CodecSelection3
+func (x *VoipMediaProfile) GetCodecSelection3() uint32 {
+	if x != nil {
+		return x.CodecSelection3
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetPacketPeriodSelection3() uint32 {
-	if m != nil {
-		return m.PacketPeriodSelection3
+func (x *VoipMediaProfile) GetPacketPeriodSelection3() uint32 {
+	if x != nil {
+		return x.PacketPeriodSelection3
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetSilenceSuppression3() uint32 {
-	if m != nil {
-		return m.SilenceSuppression3
+func (x *VoipMediaProfile) GetSilenceSuppression3() uint32 {
+	if x != nil {
+		return x.SilenceSuppression3
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetCodecSelection4() uint32 {
-	if m != nil {
-		return m.CodecSelection4
+func (x *VoipMediaProfile) GetCodecSelection4() uint32 {
+	if x != nil {
+		return x.CodecSelection4
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetPacketPeriodSelection4() uint32 {
-	if m != nil {
-		return m.PacketPeriodSelection4
+func (x *VoipMediaProfile) GetPacketPeriodSelection4() uint32 {
+	if x != nil {
+		return x.PacketPeriodSelection4
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetSilenceSuppression4() uint32 {
-	if m != nil {
-		return m.SilenceSuppression4
+func (x *VoipMediaProfile) GetSilenceSuppression4() uint32 {
+	if x != nil {
+		return x.SilenceSuppression4
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetOobDtmf() uint32 {
-	if m != nil {
-		return m.OobDtmf
+func (x *VoipMediaProfile) GetOobDtmf() uint32 {
+	if x != nil {
+		return x.OobDtmf
 	}
 	return 0
 }
 
 type VoiceServiceProfile struct {
-	AnnouncementType     uint32   `protobuf:"varint,1,opt,name=announcementType,proto3" json:"announcementType,omitempty"`
-	JitterTarget         uint32   `protobuf:"varint,2,opt,name=jitterTarget,proto3" json:"jitterTarget,omitempty"`
-	JitterBufferMax      uint32   `protobuf:"varint,3,opt,name=jitterBufferMax,proto3" json:"jitterBufferMax,omitempty"`
-	EchoCancelInd        bool     `protobuf:"varint,4,opt,name=echoCancelInd,proto3" json:"echoCancelInd,omitempty"`
-	PstnProtocolVariant  uint32   `protobuf:"varint,5,opt,name=pstnProtocolVariant,proto3" json:"pstnProtocolVariant,omitempty"`
-	DtmfDigitLevels      uint32   `protobuf:"varint,6,opt,name=dtmfDigitLevels,proto3" json:"dtmfDigitLevels,omitempty"`
-	DtmfDigitDuration    uint32   `protobuf:"varint,7,opt,name=dtmfDigitDuration,proto3" json:"dtmfDigitDuration,omitempty"`
-	HookFlashMinimumTime uint32   `protobuf:"varint,8,opt,name=hookFlashMinimumTime,proto3" json:"hookFlashMinimumTime,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	AnnouncementType     uint32                 `protobuf:"varint,1,opt,name=announcementType,proto3" json:"announcementType,omitempty"`
+	JitterTarget         uint32                 `protobuf:"varint,2,opt,name=jitterTarget,proto3" json:"jitterTarget,omitempty"`
+	JitterBufferMax      uint32                 `protobuf:"varint,3,opt,name=jitterBufferMax,proto3" json:"jitterBufferMax,omitempty"`
+	EchoCancelInd        bool                   `protobuf:"varint,4,opt,name=echoCancelInd,proto3" json:"echoCancelInd,omitempty"`
+	PstnProtocolVariant  uint32                 `protobuf:"varint,5,opt,name=pstnProtocolVariant,proto3" json:"pstnProtocolVariant,omitempty"`
+	DtmfDigitLevels      uint32                 `protobuf:"varint,6,opt,name=dtmfDigitLevels,proto3" json:"dtmfDigitLevels,omitempty"`
+	DtmfDigitDuration    uint32                 `protobuf:"varint,7,opt,name=dtmfDigitDuration,proto3" json:"dtmfDigitDuration,omitempty"`
+	HookFlashMinimumTime uint32                 `protobuf:"varint,8,opt,name=hookFlashMinimumTime,proto3" json:"hookFlashMinimumTime,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
-func (m *VoiceServiceProfile) Reset()         { *m = VoiceServiceProfile{} }
-func (m *VoiceServiceProfile) String() string { return proto.CompactTextString(m) }
-func (*VoiceServiceProfile) ProtoMessage()    {}
+func (x *VoiceServiceProfile) Reset() {
+	*x = VoiceServiceProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoiceServiceProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoiceServiceProfile) ProtoMessage() {}
+
+func (x *VoiceServiceProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoiceServiceProfile.ProtoReflect.Descriptor instead.
 func (*VoiceServiceProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{7}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *VoiceServiceProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoiceServiceProfile.Unmarshal(m, b)
-}
-func (m *VoiceServiceProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoiceServiceProfile.Marshal(b, m, deterministic)
-}
-func (m *VoiceServiceProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoiceServiceProfile.Merge(m, src)
-}
-func (m *VoiceServiceProfile) XXX_Size() int {
-	return xxx_messageInfo_VoiceServiceProfile.Size(m)
-}
-func (m *VoiceServiceProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoiceServiceProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoiceServiceProfile proto.InternalMessageInfo
-
-func (m *VoiceServiceProfile) GetAnnouncementType() uint32 {
-	if m != nil {
-		return m.AnnouncementType
+func (x *VoiceServiceProfile) GetAnnouncementType() uint32 {
+	if x != nil {
+		return x.AnnouncementType
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetJitterTarget() uint32 {
-	if m != nil {
-		return m.JitterTarget
+func (x *VoiceServiceProfile) GetJitterTarget() uint32 {
+	if x != nil {
+		return x.JitterTarget
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetJitterBufferMax() uint32 {
-	if m != nil {
-		return m.JitterBufferMax
+func (x *VoiceServiceProfile) GetJitterBufferMax() uint32 {
+	if x != nil {
+		return x.JitterBufferMax
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetEchoCancelInd() bool {
-	if m != nil {
-		return m.EchoCancelInd
+func (x *VoiceServiceProfile) GetEchoCancelInd() bool {
+	if x != nil {
+		return x.EchoCancelInd
 	}
 	return false
 }
 
-func (m *VoiceServiceProfile) GetPstnProtocolVariant() uint32 {
-	if m != nil {
-		return m.PstnProtocolVariant
+func (x *VoiceServiceProfile) GetPstnProtocolVariant() uint32 {
+	if x != nil {
+		return x.PstnProtocolVariant
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetDtmfDigitLevels() uint32 {
-	if m != nil {
-		return m.DtmfDigitLevels
+func (x *VoiceServiceProfile) GetDtmfDigitLevels() uint32 {
+	if x != nil {
+		return x.DtmfDigitLevels
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetDtmfDigitDuration() uint32 {
-	if m != nil {
-		return m.DtmfDigitDuration
+func (x *VoiceServiceProfile) GetDtmfDigitDuration() uint32 {
+	if x != nil {
+		return x.DtmfDigitDuration
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetHookFlashMinimumTime() uint32 {
-	if m != nil {
-		return m.HookFlashMinimumTime
+func (x *VoiceServiceProfile) GetHookFlashMinimumTime() uint32 {
+	if x != nil {
+		return x.HookFlashMinimumTime
 	}
 	return 0
 }
 
 type RtpProfile struct {
-	LocalPortMin         uint32   `protobuf:"varint,1,opt,name=localPortMin,proto3" json:"localPortMin,omitempty"`
-	LocalPortMax         uint32   `protobuf:"varint,2,opt,name=localPortMax,proto3" json:"localPortMax,omitempty"`
-	DscpMark             string   `protobuf:"bytes,3,opt,name=dscpMark,proto3" json:"dscpMark,omitempty"`
-	PiggyBackEvents      uint32   `protobuf:"varint,4,opt,name=piggyBackEvents,proto3" json:"piggyBackEvents,omitempty"`
-	ToneEvents           uint32   `protobuf:"varint,5,opt,name=toneEvents,proto3" json:"toneEvents,omitempty"`
-	DtmfEvents           uint32   `protobuf:"varint,6,opt,name=dtmfEvents,proto3" json:"dtmfEvents,omitempty"`
-	CasEvents            uint32   `protobuf:"varint,7,opt,name=casEvents,proto3" json:"casEvents,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	LocalPortMin    uint32                 `protobuf:"varint,1,opt,name=localPortMin,proto3" json:"localPortMin,omitempty"`
+	LocalPortMax    uint32                 `protobuf:"varint,2,opt,name=localPortMax,proto3" json:"localPortMax,omitempty"`
+	DscpMark        string                 `protobuf:"bytes,3,opt,name=dscpMark,proto3" json:"dscpMark,omitempty"`
+	PiggyBackEvents uint32                 `protobuf:"varint,4,opt,name=piggyBackEvents,proto3" json:"piggyBackEvents,omitempty"`
+	ToneEvents      uint32                 `protobuf:"varint,5,opt,name=toneEvents,proto3" json:"toneEvents,omitempty"`
+	DtmfEvents      uint32                 `protobuf:"varint,6,opt,name=dtmfEvents,proto3" json:"dtmfEvents,omitempty"`
+	CasEvents       uint32                 `protobuf:"varint,7,opt,name=casEvents,proto3" json:"casEvents,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *RtpProfile) Reset()         { *m = RtpProfile{} }
-func (m *RtpProfile) String() string { return proto.CompactTextString(m) }
-func (*RtpProfile) ProtoMessage()    {}
+func (x *RtpProfile) Reset() {
+	*x = RtpProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RtpProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RtpProfile) ProtoMessage() {}
+
+func (x *RtpProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RtpProfile.ProtoReflect.Descriptor instead.
 func (*RtpProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{8}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *RtpProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RtpProfile.Unmarshal(m, b)
-}
-func (m *RtpProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RtpProfile.Marshal(b, m, deterministic)
-}
-func (m *RtpProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RtpProfile.Merge(m, src)
-}
-func (m *RtpProfile) XXX_Size() int {
-	return xxx_messageInfo_RtpProfile.Size(m)
-}
-func (m *RtpProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_RtpProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RtpProfile proto.InternalMessageInfo
-
-func (m *RtpProfile) GetLocalPortMin() uint32 {
-	if m != nil {
-		return m.LocalPortMin
+func (x *RtpProfile) GetLocalPortMin() uint32 {
+	if x != nil {
+		return x.LocalPortMin
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetLocalPortMax() uint32 {
-	if m != nil {
-		return m.LocalPortMax
+func (x *RtpProfile) GetLocalPortMax() uint32 {
+	if x != nil {
+		return x.LocalPortMax
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetDscpMark() string {
-	if m != nil {
-		return m.DscpMark
+func (x *RtpProfile) GetDscpMark() string {
+	if x != nil {
+		return x.DscpMark
 	}
 	return ""
 }
 
-func (m *RtpProfile) GetPiggyBackEvents() uint32 {
-	if m != nil {
-		return m.PiggyBackEvents
+func (x *RtpProfile) GetPiggyBackEvents() uint32 {
+	if x != nil {
+		return x.PiggyBackEvents
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetToneEvents() uint32 {
-	if m != nil {
-		return m.ToneEvents
+func (x *RtpProfile) GetToneEvents() uint32 {
+	if x != nil {
+		return x.ToneEvents
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetDtmfEvents() uint32 {
-	if m != nil {
-		return m.DtmfEvents
+func (x *RtpProfile) GetDtmfEvents() uint32 {
+	if x != nil {
+		return x.DtmfEvents
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetCasEvents() uint32 {
-	if m != nil {
-		return m.CasEvents
+func (x *RtpProfile) GetCasEvents() uint32 {
+	if x != nil {
+		return x.CasEvents
 	}
 	return 0
 }
 
 type PptpPotsUni struct {
-	Arc                  string   `protobuf:"bytes,1,opt,name=arc,proto3" json:"arc,omitempty"`
-	ArcInterval          string   `protobuf:"bytes,2,opt,name=arcInterval,proto3" json:"arcInterval,omitempty"`
-	Impedance            uint32   `protobuf:"varint,3,opt,name=impedance,proto3" json:"impedance,omitempty"`
-	TransmissionPath     uint32   `protobuf:"varint,4,opt,name=transmissionPath,proto3" json:"transmissionPath,omitempty"`
-	RxGain               int32    `protobuf:"zigzag32,5,opt,name=rxGain,proto3" json:"rxGain,omitempty"`
-	TxGain               int32    `protobuf:"zigzag32,6,opt,name=txGain,proto3" json:"txGain,omitempty"`
-	PotsHoldOverTime     uint32   `protobuf:"varint,7,opt,name=potsHoldOverTime,proto3" json:"potsHoldOverTime,omitempty"`
-	NominalFeedVoltage   uint32   `protobuf:"varint,8,opt,name=nominalFeedVoltage,proto3" json:"nominalFeedVoltage,omitempty"`
-	LossOfSoftSwitch     uint32   `protobuf:"varint,9,opt,name=lossOfSoftSwitch,proto3" json:"lossOfSoftSwitch,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state              protoimpl.MessageState `protogen:"open.v1"`
+	Arc                string                 `protobuf:"bytes,1,opt,name=arc,proto3" json:"arc,omitempty"`
+	ArcInterval        string                 `protobuf:"bytes,2,opt,name=arcInterval,proto3" json:"arcInterval,omitempty"`
+	Impedance          uint32                 `protobuf:"varint,3,opt,name=impedance,proto3" json:"impedance,omitempty"`
+	TransmissionPath   uint32                 `protobuf:"varint,4,opt,name=transmissionPath,proto3" json:"transmissionPath,omitempty"`
+	RxGain             int32                  `protobuf:"zigzag32,5,opt,name=rxGain,proto3" json:"rxGain,omitempty"`
+	TxGain             int32                  `protobuf:"zigzag32,6,opt,name=txGain,proto3" json:"txGain,omitempty"`
+	PotsHoldOverTime   uint32                 `protobuf:"varint,7,opt,name=potsHoldOverTime,proto3" json:"potsHoldOverTime,omitempty"`
+	NominalFeedVoltage uint32                 `protobuf:"varint,8,opt,name=nominalFeedVoltage,proto3" json:"nominalFeedVoltage,omitempty"`
+	LossOfSoftSwitch   uint32                 `protobuf:"varint,9,opt,name=lossOfSoftSwitch,proto3" json:"lossOfSoftSwitch,omitempty"`
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
 }
 
-func (m *PptpPotsUni) Reset()         { *m = PptpPotsUni{} }
-func (m *PptpPotsUni) String() string { return proto.CompactTextString(m) }
-func (*PptpPotsUni) ProtoMessage()    {}
+func (x *PptpPotsUni) Reset() {
+	*x = PptpPotsUni{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PptpPotsUni) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PptpPotsUni) ProtoMessage() {}
+
+func (x *PptpPotsUni) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PptpPotsUni.ProtoReflect.Descriptor instead.
 func (*PptpPotsUni) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{9}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *PptpPotsUni) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PptpPotsUni.Unmarshal(m, b)
-}
-func (m *PptpPotsUni) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PptpPotsUni.Marshal(b, m, deterministic)
-}
-func (m *PptpPotsUni) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PptpPotsUni.Merge(m, src)
-}
-func (m *PptpPotsUni) XXX_Size() int {
-	return xxx_messageInfo_PptpPotsUni.Size(m)
-}
-func (m *PptpPotsUni) XXX_DiscardUnknown() {
-	xxx_messageInfo_PptpPotsUni.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PptpPotsUni proto.InternalMessageInfo
-
-func (m *PptpPotsUni) GetArc() string {
-	if m != nil {
-		return m.Arc
+func (x *PptpPotsUni) GetArc() string {
+	if x != nil {
+		return x.Arc
 	}
 	return ""
 }
 
-func (m *PptpPotsUni) GetArcInterval() string {
-	if m != nil {
-		return m.ArcInterval
+func (x *PptpPotsUni) GetArcInterval() string {
+	if x != nil {
+		return x.ArcInterval
 	}
 	return ""
 }
 
-func (m *PptpPotsUni) GetImpedance() uint32 {
-	if m != nil {
-		return m.Impedance
+func (x *PptpPotsUni) GetImpedance() uint32 {
+	if x != nil {
+		return x.Impedance
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetTransmissionPath() uint32 {
-	if m != nil {
-		return m.TransmissionPath
+func (x *PptpPotsUni) GetTransmissionPath() uint32 {
+	if x != nil {
+		return x.TransmissionPath
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetRxGain() int32 {
-	if m != nil {
-		return m.RxGain
+func (x *PptpPotsUni) GetRxGain() int32 {
+	if x != nil {
+		return x.RxGain
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetTxGain() int32 {
-	if m != nil {
-		return m.TxGain
+func (x *PptpPotsUni) GetTxGain() int32 {
+	if x != nil {
+		return x.TxGain
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetPotsHoldOverTime() uint32 {
-	if m != nil {
-		return m.PotsHoldOverTime
+func (x *PptpPotsUni) GetPotsHoldOverTime() uint32 {
+	if x != nil {
+		return x.PotsHoldOverTime
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetNominalFeedVoltage() uint32 {
-	if m != nil {
-		return m.NominalFeedVoltage
+func (x *PptpPotsUni) GetNominalFeedVoltage() uint32 {
+	if x != nil {
+		return x.NominalFeedVoltage
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetLossOfSoftSwitch() uint32 {
-	if m != nil {
-		return m.LossOfSoftSwitch
+func (x *PptpPotsUni) GetLossOfSoftSwitch() uint32 {
+	if x != nil {
+		return x.LossOfSoftSwitch
 	}
 	return 0
 }
 
 // Sip specific fields are grouped here
 type SipConfig struct {
+	state                         protoimpl.MessageState         `protogen:"open.v1"`
 	SipUserData                   *SipUserData                   `protobuf:"bytes,1,opt,name=sipUserData,proto3" json:"sipUserData,omitempty"`
 	SipAgentConfig                *SipAgentConfig                `protobuf:"bytes,2,opt,name=sipAgentConfig,proto3" json:"sipAgentConfig,omitempty"`
 	NetworkDialPlan               *NetworkDialPlan               `protobuf:"bytes,3,opt,name=networkDialPlan,proto3" json:"networkDialPlan,omitempty"`
 	VoipFeatureAccessCodes        *VoipFeatureAccessCodes        `protobuf:"bytes,4,opt,name=voipFeatureAccessCodes,proto3" json:"voipFeatureAccessCodes,omitempty"`
 	VoipApplicationServiceProfile *VoipApplicationServiceProfile `protobuf:"bytes,5,opt,name=voipApplicationServiceProfile,proto3" json:"voipApplicationServiceProfile,omitempty"`
-	XXX_NoUnkeyedLiteral          struct{}                       `json:"-"`
-	XXX_unrecognized              []byte                         `json:"-"`
-	XXX_sizecache                 int32                          `json:"-"`
+	unknownFields                 protoimpl.UnknownFields
+	sizeCache                     protoimpl.SizeCache
 }
 
-func (m *SipConfig) Reset()         { *m = SipConfig{} }
-func (m *SipConfig) String() string { return proto.CompactTextString(m) }
-func (*SipConfig) ProtoMessage()    {}
+func (x *SipConfig) Reset() {
+	*x = SipConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SipConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SipConfig) ProtoMessage() {}
+
+func (x *SipConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SipConfig.ProtoReflect.Descriptor instead.
 func (*SipConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{10}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *SipConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SipConfig.Unmarshal(m, b)
-}
-func (m *SipConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SipConfig.Marshal(b, m, deterministic)
-}
-func (m *SipConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SipConfig.Merge(m, src)
-}
-func (m *SipConfig) XXX_Size() int {
-	return xxx_messageInfo_SipConfig.Size(m)
-}
-func (m *SipConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_SipConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SipConfig proto.InternalMessageInfo
-
-func (m *SipConfig) GetSipUserData() *SipUserData {
-	if m != nil {
-		return m.SipUserData
+func (x *SipConfig) GetSipUserData() *SipUserData {
+	if x != nil {
+		return x.SipUserData
 	}
 	return nil
 }
 
-func (m *SipConfig) GetSipAgentConfig() *SipAgentConfig {
-	if m != nil {
-		return m.SipAgentConfig
+func (x *SipConfig) GetSipAgentConfig() *SipAgentConfig {
+	if x != nil {
+		return x.SipAgentConfig
 	}
 	return nil
 }
 
-func (m *SipConfig) GetNetworkDialPlan() *NetworkDialPlan {
-	if m != nil {
-		return m.NetworkDialPlan
+func (x *SipConfig) GetNetworkDialPlan() *NetworkDialPlan {
+	if x != nil {
+		return x.NetworkDialPlan
 	}
 	return nil
 }
 
-func (m *SipConfig) GetVoipFeatureAccessCodes() *VoipFeatureAccessCodes {
-	if m != nil {
-		return m.VoipFeatureAccessCodes
+func (x *SipConfig) GetVoipFeatureAccessCodes() *VoipFeatureAccessCodes {
+	if x != nil {
+		return x.VoipFeatureAccessCodes
 	}
 	return nil
 }
 
-func (m *SipConfig) GetVoipApplicationServiceProfile() *VoipApplicationServiceProfile {
-	if m != nil {
-		return m.VoipApplicationServiceProfile
+func (x *SipConfig) GetVoipApplicationServiceProfile() *VoipApplicationServiceProfile {
+	if x != nil {
+		return x.VoipApplicationServiceProfile
 	}
 	return nil
 }
 
 type SipUserData struct {
-	UserPartAor                         string               `protobuf:"bytes,1,opt,name=userPartAor,proto3" json:"userPartAor,omitempty"`
-	UsernameAndPassword                 *UsernameAndPassword `protobuf:"bytes,2,opt,name=usernameAndPassword,proto3" json:"usernameAndPassword,omitempty"`
-	VoicemailServerSipUri               string               `protobuf:"bytes,3,opt,name=voicemailServerSipUri,proto3" json:"voicemailServerSipUri,omitempty"`
-	VoicemailSubscriptionExpirationTime int32                `protobuf:"varint,4,opt,name=voicemailSubscriptionExpirationTime,proto3" json:"voicemailSubscriptionExpirationTime,omitempty"`
-	ReleaseTimer                        int32                `protobuf:"varint,5,opt,name=releaseTimer,proto3" json:"releaseTimer,omitempty"`
-	RohTimer                            int32                `protobuf:"varint,6,opt,name=rohTimer,proto3" json:"rohTimer,omitempty"`
-	XXX_NoUnkeyedLiteral                struct{}             `json:"-"`
-	XXX_unrecognized                    []byte               `json:"-"`
-	XXX_sizecache                       int32                `json:"-"`
+	state                               protoimpl.MessageState `protogen:"open.v1"`
+	UserPartAor                         string                 `protobuf:"bytes,1,opt,name=userPartAor,proto3" json:"userPartAor,omitempty"`
+	UsernameAndPassword                 *UsernameAndPassword   `protobuf:"bytes,2,opt,name=usernameAndPassword,proto3" json:"usernameAndPassword,omitempty"`
+	VoicemailServerSipUri               string                 `protobuf:"bytes,3,opt,name=voicemailServerSipUri,proto3" json:"voicemailServerSipUri,omitempty"`
+	VoicemailSubscriptionExpirationTime int32                  `protobuf:"varint,4,opt,name=voicemailSubscriptionExpirationTime,proto3" json:"voicemailSubscriptionExpirationTime,omitempty"`
+	ReleaseTimer                        int32                  `protobuf:"varint,5,opt,name=releaseTimer,proto3" json:"releaseTimer,omitempty"`
+	RohTimer                            int32                  `protobuf:"varint,6,opt,name=rohTimer,proto3" json:"rohTimer,omitempty"`
+	unknownFields                       protoimpl.UnknownFields
+	sizeCache                           protoimpl.SizeCache
 }
 
-func (m *SipUserData) Reset()         { *m = SipUserData{} }
-func (m *SipUserData) String() string { return proto.CompactTextString(m) }
-func (*SipUserData) ProtoMessage()    {}
+func (x *SipUserData) Reset() {
+	*x = SipUserData{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SipUserData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SipUserData) ProtoMessage() {}
+
+func (x *SipUserData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SipUserData.ProtoReflect.Descriptor instead.
 func (*SipUserData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{11}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *SipUserData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SipUserData.Unmarshal(m, b)
-}
-func (m *SipUserData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SipUserData.Marshal(b, m, deterministic)
-}
-func (m *SipUserData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SipUserData.Merge(m, src)
-}
-func (m *SipUserData) XXX_Size() int {
-	return xxx_messageInfo_SipUserData.Size(m)
-}
-func (m *SipUserData) XXX_DiscardUnknown() {
-	xxx_messageInfo_SipUserData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SipUserData proto.InternalMessageInfo
-
-func (m *SipUserData) GetUserPartAor() string {
-	if m != nil {
-		return m.UserPartAor
+func (x *SipUserData) GetUserPartAor() string {
+	if x != nil {
+		return x.UserPartAor
 	}
 	return ""
 }
 
-func (m *SipUserData) GetUsernameAndPassword() *UsernameAndPassword {
-	if m != nil {
-		return m.UsernameAndPassword
+func (x *SipUserData) GetUsernameAndPassword() *UsernameAndPassword {
+	if x != nil {
+		return x.UsernameAndPassword
 	}
 	return nil
 }
 
-func (m *SipUserData) GetVoicemailServerSipUri() string {
-	if m != nil {
-		return m.VoicemailServerSipUri
+func (x *SipUserData) GetVoicemailServerSipUri() string {
+	if x != nil {
+		return x.VoicemailServerSipUri
 	}
 	return ""
 }
 
-func (m *SipUserData) GetVoicemailSubscriptionExpirationTime() int32 {
-	if m != nil {
-		return m.VoicemailSubscriptionExpirationTime
+func (x *SipUserData) GetVoicemailSubscriptionExpirationTime() int32 {
+	if x != nil {
+		return x.VoicemailSubscriptionExpirationTime
 	}
 	return 0
 }
 
-func (m *SipUserData) GetReleaseTimer() int32 {
-	if m != nil {
-		return m.ReleaseTimer
+func (x *SipUserData) GetReleaseTimer() int32 {
+	if x != nil {
+		return x.ReleaseTimer
 	}
 	return 0
 }
 
-func (m *SipUserData) GetRohTimer() int32 {
-	if m != nil {
-		return m.RohTimer
+func (x *SipUserData) GetRohTimer() int32 {
+	if x != nil {
+		return x.RohTimer
 	}
 	return 0
 }
 
 type SipAgentConfig struct {
-	OutboundProxyAddress     string            `protobuf:"bytes,1,opt,name=outboundProxyAddress,proto3" json:"outboundProxyAddress,omitempty"`
-	PrimarySipDns            string            `protobuf:"bytes,2,opt,name=primarySipDns,proto3" json:"primarySipDns,omitempty"`
-	SecondarySipDns          string            `protobuf:"bytes,3,opt,name=secondarySipDns,proto3" json:"secondarySipDns,omitempty"`
-	SipRegExpTime            int32             `protobuf:"varint,4,opt,name=sipRegExpTime,proto3" json:"sipRegExpTime,omitempty"`
-	SipReregHeadStartTime    int32             `protobuf:"varint,5,opt,name=sipReregHeadStartTime,proto3" json:"sipReregHeadStartTime,omitempty"`
-	SipRegistrar             string            `protobuf:"bytes,6,opt,name=SipRegistrar,proto3" json:"SipRegistrar,omitempty"`
-	SoftSwitch               string            `protobuf:"bytes,7,opt,name=softSwitch,proto3" json:"softSwitch,omitempty"`
-	SipResponseTable         *SipResponseTable `protobuf:"bytes,8,opt,name=sipResponseTable,proto3" json:"sipResponseTable,omitempty"`
-	SipOptionTransmitControl bool              `protobuf:"varint,9,opt,name=sipOptionTransmitControl,proto3" json:"sipOptionTransmitControl,omitempty"`
-	SipUriFormat             string            `protobuf:"bytes,10,opt,name=sipUriFormat,proto3" json:"sipUriFormat,omitempty"`
-	RedundantSipAgentPointer string            `protobuf:"bytes,11,opt,name=redundantSipAgentPointer,proto3" json:"redundantSipAgentPointer,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{}          `json:"-"`
-	XXX_unrecognized         []byte            `json:"-"`
-	XXX_sizecache            int32             `json:"-"`
+	state                    protoimpl.MessageState `protogen:"open.v1"`
+	OutboundProxyAddress     string                 `protobuf:"bytes,1,opt,name=outboundProxyAddress,proto3" json:"outboundProxyAddress,omitempty"`
+	PrimarySipDns            string                 `protobuf:"bytes,2,opt,name=primarySipDns,proto3" json:"primarySipDns,omitempty"`
+	SecondarySipDns          string                 `protobuf:"bytes,3,opt,name=secondarySipDns,proto3" json:"secondarySipDns,omitempty"`
+	SipRegExpTime            int32                  `protobuf:"varint,4,opt,name=sipRegExpTime,proto3" json:"sipRegExpTime,omitempty"`
+	SipReregHeadStartTime    int32                  `protobuf:"varint,5,opt,name=sipReregHeadStartTime,proto3" json:"sipReregHeadStartTime,omitempty"`
+	SipRegistrar             string                 `protobuf:"bytes,6,opt,name=SipRegistrar,proto3" json:"SipRegistrar,omitempty"`
+	SoftSwitch               string                 `protobuf:"bytes,7,opt,name=softSwitch,proto3" json:"softSwitch,omitempty"`
+	SipResponseTable         *SipResponseTable      `protobuf:"bytes,8,opt,name=sipResponseTable,proto3" json:"sipResponseTable,omitempty"`
+	SipOptionTransmitControl bool                   `protobuf:"varint,9,opt,name=sipOptionTransmitControl,proto3" json:"sipOptionTransmitControl,omitempty"`
+	SipUriFormat             string                 `protobuf:"bytes,10,opt,name=sipUriFormat,proto3" json:"sipUriFormat,omitempty"`
+	RedundantSipAgentPointer string                 `protobuf:"bytes,11,opt,name=redundantSipAgentPointer,proto3" json:"redundantSipAgentPointer,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
 }
 
-func (m *SipAgentConfig) Reset()         { *m = SipAgentConfig{} }
-func (m *SipAgentConfig) String() string { return proto.CompactTextString(m) }
-func (*SipAgentConfig) ProtoMessage()    {}
+func (x *SipAgentConfig) Reset() {
+	*x = SipAgentConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SipAgentConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SipAgentConfig) ProtoMessage() {}
+
+func (x *SipAgentConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SipAgentConfig.ProtoReflect.Descriptor instead.
 func (*SipAgentConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{12}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *SipAgentConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SipAgentConfig.Unmarshal(m, b)
-}
-func (m *SipAgentConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SipAgentConfig.Marshal(b, m, deterministic)
-}
-func (m *SipAgentConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SipAgentConfig.Merge(m, src)
-}
-func (m *SipAgentConfig) XXX_Size() int {
-	return xxx_messageInfo_SipAgentConfig.Size(m)
-}
-func (m *SipAgentConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_SipAgentConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SipAgentConfig proto.InternalMessageInfo
-
-func (m *SipAgentConfig) GetOutboundProxyAddress() string {
-	if m != nil {
-		return m.OutboundProxyAddress
+func (x *SipAgentConfig) GetOutboundProxyAddress() string {
+	if x != nil {
+		return x.OutboundProxyAddress
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetPrimarySipDns() string {
-	if m != nil {
-		return m.PrimarySipDns
+func (x *SipAgentConfig) GetPrimarySipDns() string {
+	if x != nil {
+		return x.PrimarySipDns
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetSecondarySipDns() string {
-	if m != nil {
-		return m.SecondarySipDns
+func (x *SipAgentConfig) GetSecondarySipDns() string {
+	if x != nil {
+		return x.SecondarySipDns
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetSipRegExpTime() int32 {
-	if m != nil {
-		return m.SipRegExpTime
+func (x *SipAgentConfig) GetSipRegExpTime() int32 {
+	if x != nil {
+		return x.SipRegExpTime
 	}
 	return 0
 }
 
-func (m *SipAgentConfig) GetSipReregHeadStartTime() int32 {
-	if m != nil {
-		return m.SipReregHeadStartTime
+func (x *SipAgentConfig) GetSipReregHeadStartTime() int32 {
+	if x != nil {
+		return x.SipReregHeadStartTime
 	}
 	return 0
 }
 
-func (m *SipAgentConfig) GetSipRegistrar() string {
-	if m != nil {
-		return m.SipRegistrar
+func (x *SipAgentConfig) GetSipRegistrar() string {
+	if x != nil {
+		return x.SipRegistrar
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetSoftSwitch() string {
-	if m != nil {
-		return m.SoftSwitch
+func (x *SipAgentConfig) GetSoftSwitch() string {
+	if x != nil {
+		return x.SoftSwitch
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetSipResponseTable() *SipResponseTable {
-	if m != nil {
-		return m.SipResponseTable
+func (x *SipAgentConfig) GetSipResponseTable() *SipResponseTable {
+	if x != nil {
+		return x.SipResponseTable
 	}
 	return nil
 }
 
-func (m *SipAgentConfig) GetSipOptionTransmitControl() bool {
-	if m != nil {
-		return m.SipOptionTransmitControl
+func (x *SipAgentConfig) GetSipOptionTransmitControl() bool {
+	if x != nil {
+		return x.SipOptionTransmitControl
 	}
 	return false
 }
 
-func (m *SipAgentConfig) GetSipUriFormat() string {
-	if m != nil {
-		return m.SipUriFormat
+func (x *SipAgentConfig) GetSipUriFormat() string {
+	if x != nil {
+		return x.SipUriFormat
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetRedundantSipAgentPointer() string {
-	if m != nil {
-		return m.RedundantSipAgentPointer
+func (x *SipAgentConfig) GetRedundantSipAgentPointer() string {
+	if x != nil {
+		return x.RedundantSipAgentPointer
 	}
 	return ""
 }
 
 type NetworkDialPlan struct {
-	CriticalDialTimeout  uint32         `protobuf:"varint,1,opt,name=criticalDialTimeout,proto3" json:"criticalDialTimeout,omitempty"`
-	PartialDialTimeout   uint32         `protobuf:"varint,2,opt,name=partialDialTimeout,proto3" json:"partialDialTimeout,omitempty"`
-	DialPlanFormat       uint32         `protobuf:"varint,3,opt,name=dialPlanFormat,proto3" json:"dialPlanFormat,omitempty"`
-	DialPlanTable        *DialPlanTable `protobuf:"bytes,4,opt,name=dialPlanTable,proto3" json:"dialPlanTable,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state               protoimpl.MessageState `protogen:"open.v1"`
+	CriticalDialTimeout uint32                 `protobuf:"varint,1,opt,name=criticalDialTimeout,proto3" json:"criticalDialTimeout,omitempty"`
+	PartialDialTimeout  uint32                 `protobuf:"varint,2,opt,name=partialDialTimeout,proto3" json:"partialDialTimeout,omitempty"`
+	DialPlanFormat      uint32                 `protobuf:"varint,3,opt,name=dialPlanFormat,proto3" json:"dialPlanFormat,omitempty"`
+	DialPlanTable       *DialPlanTable         `protobuf:"bytes,4,opt,name=dialPlanTable,proto3" json:"dialPlanTable,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
-func (m *NetworkDialPlan) Reset()         { *m = NetworkDialPlan{} }
-func (m *NetworkDialPlan) String() string { return proto.CompactTextString(m) }
-func (*NetworkDialPlan) ProtoMessage()    {}
+func (x *NetworkDialPlan) Reset() {
+	*x = NetworkDialPlan{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *NetworkDialPlan) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NetworkDialPlan) ProtoMessage() {}
+
+func (x *NetworkDialPlan) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use NetworkDialPlan.ProtoReflect.Descriptor instead.
 func (*NetworkDialPlan) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{13}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *NetworkDialPlan) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NetworkDialPlan.Unmarshal(m, b)
-}
-func (m *NetworkDialPlan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NetworkDialPlan.Marshal(b, m, deterministic)
-}
-func (m *NetworkDialPlan) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NetworkDialPlan.Merge(m, src)
-}
-func (m *NetworkDialPlan) XXX_Size() int {
-	return xxx_messageInfo_NetworkDialPlan.Size(m)
-}
-func (m *NetworkDialPlan) XXX_DiscardUnknown() {
-	xxx_messageInfo_NetworkDialPlan.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_NetworkDialPlan proto.InternalMessageInfo
-
-func (m *NetworkDialPlan) GetCriticalDialTimeout() uint32 {
-	if m != nil {
-		return m.CriticalDialTimeout
+func (x *NetworkDialPlan) GetCriticalDialTimeout() uint32 {
+	if x != nil {
+		return x.CriticalDialTimeout
 	}
 	return 0
 }
 
-func (m *NetworkDialPlan) GetPartialDialTimeout() uint32 {
-	if m != nil {
-		return m.PartialDialTimeout
+func (x *NetworkDialPlan) GetPartialDialTimeout() uint32 {
+	if x != nil {
+		return x.PartialDialTimeout
 	}
 	return 0
 }
 
-func (m *NetworkDialPlan) GetDialPlanFormat() uint32 {
-	if m != nil {
-		return m.DialPlanFormat
+func (x *NetworkDialPlan) GetDialPlanFormat() uint32 {
+	if x != nil {
+		return x.DialPlanFormat
 	}
 	return 0
 }
 
-func (m *NetworkDialPlan) GetDialPlanTable() *DialPlanTable {
-	if m != nil {
-		return m.DialPlanTable
+func (x *NetworkDialPlan) GetDialPlanTable() *DialPlanTable {
+	if x != nil {
+		return x.DialPlanTable
 	}
 	return nil
 }
 
 type UsernameAndPassword struct {
-	ValidationScheme     int32    `protobuf:"varint,1,opt,name=validationScheme,proto3" json:"validationScheme,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state            protoimpl.MessageState `protogen:"open.v1"`
+	ValidationScheme int32                  `protobuf:"varint,1,opt,name=validationScheme,proto3" json:"validationScheme,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
 }
 
-func (m *UsernameAndPassword) Reset()         { *m = UsernameAndPassword{} }
-func (m *UsernameAndPassword) String() string { return proto.CompactTextString(m) }
-func (*UsernameAndPassword) ProtoMessage()    {}
+func (x *UsernameAndPassword) Reset() {
+	*x = UsernameAndPassword{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *UsernameAndPassword) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UsernameAndPassword) ProtoMessage() {}
+
+func (x *UsernameAndPassword) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UsernameAndPassword.ProtoReflect.Descriptor instead.
 func (*UsernameAndPassword) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{14}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *UsernameAndPassword) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UsernameAndPassword.Unmarshal(m, b)
-}
-func (m *UsernameAndPassword) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UsernameAndPassword.Marshal(b, m, deterministic)
-}
-func (m *UsernameAndPassword) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UsernameAndPassword.Merge(m, src)
-}
-func (m *UsernameAndPassword) XXX_Size() int {
-	return xxx_messageInfo_UsernameAndPassword.Size(m)
-}
-func (m *UsernameAndPassword) XXX_DiscardUnknown() {
-	xxx_messageInfo_UsernameAndPassword.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_UsernameAndPassword proto.InternalMessageInfo
-
-func (m *UsernameAndPassword) GetValidationScheme() int32 {
-	if m != nil {
-		return m.ValidationScheme
+func (x *UsernameAndPassword) GetValidationScheme() int32 {
+	if x != nil {
+		return x.ValidationScheme
 	}
 	return 0
 }
 
 type SipResponseTable struct {
-	SipResponseCode      string   `protobuf:"bytes,1,opt,name=sipResponseCode,proto3" json:"sipResponseCode,omitempty"`
-	Tone                 string   `protobuf:"bytes,2,opt,name=tone,proto3" json:"tone,omitempty"`
-	TextMessage          string   `protobuf:"bytes,3,opt,name=textMessage,proto3" json:"textMessage,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	SipResponseCode string                 `protobuf:"bytes,1,opt,name=sipResponseCode,proto3" json:"sipResponseCode,omitempty"`
+	Tone            string                 `protobuf:"bytes,2,opt,name=tone,proto3" json:"tone,omitempty"`
+	TextMessage     string                 `protobuf:"bytes,3,opt,name=textMessage,proto3" json:"textMessage,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *SipResponseTable) Reset()         { *m = SipResponseTable{} }
-func (m *SipResponseTable) String() string { return proto.CompactTextString(m) }
-func (*SipResponseTable) ProtoMessage()    {}
+func (x *SipResponseTable) Reset() {
+	*x = SipResponseTable{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SipResponseTable) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SipResponseTable) ProtoMessage() {}
+
+func (x *SipResponseTable) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SipResponseTable.ProtoReflect.Descriptor instead.
 func (*SipResponseTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{15}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *SipResponseTable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SipResponseTable.Unmarshal(m, b)
-}
-func (m *SipResponseTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SipResponseTable.Marshal(b, m, deterministic)
-}
-func (m *SipResponseTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SipResponseTable.Merge(m, src)
-}
-func (m *SipResponseTable) XXX_Size() int {
-	return xxx_messageInfo_SipResponseTable.Size(m)
-}
-func (m *SipResponseTable) XXX_DiscardUnknown() {
-	xxx_messageInfo_SipResponseTable.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SipResponseTable proto.InternalMessageInfo
-
-func (m *SipResponseTable) GetSipResponseCode() string {
-	if m != nil {
-		return m.SipResponseCode
+func (x *SipResponseTable) GetSipResponseCode() string {
+	if x != nil {
+		return x.SipResponseCode
 	}
 	return ""
 }
 
-func (m *SipResponseTable) GetTone() string {
-	if m != nil {
-		return m.Tone
+func (x *SipResponseTable) GetTone() string {
+	if x != nil {
+		return x.Tone
 	}
 	return ""
 }
 
-func (m *SipResponseTable) GetTextMessage() string {
-	if m != nil {
-		return m.TextMessage
+func (x *SipResponseTable) GetTextMessage() string {
+	if x != nil {
+		return x.TextMessage
 	}
 	return ""
 }
 
 type DialPlanTable struct {
-	DialPlanId           uint32   `protobuf:"varint,1,opt,name=dialPlanId,proto3" json:"dialPlanId,omitempty"`
-	Action               uint32   `protobuf:"varint,2,opt,name=action,proto3" json:"action,omitempty"`
-	DialPlanToken        string   `protobuf:"bytes,3,opt,name=dialPlanToken,proto3" json:"dialPlanToken,omitempty"`
-	DialPlanTableMaxSize uint32   `protobuf:"varint,4,opt,name=dialPlanTableMaxSize,proto3" json:"dialPlanTableMaxSize,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	DialPlanId           uint32                 `protobuf:"varint,1,opt,name=dialPlanId,proto3" json:"dialPlanId,omitempty"`
+	Action               uint32                 `protobuf:"varint,2,opt,name=action,proto3" json:"action,omitempty"`
+	DialPlanToken        string                 `protobuf:"bytes,3,opt,name=dialPlanToken,proto3" json:"dialPlanToken,omitempty"`
+	DialPlanTableMaxSize uint32                 `protobuf:"varint,4,opt,name=dialPlanTableMaxSize,proto3" json:"dialPlanTableMaxSize,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
-func (m *DialPlanTable) Reset()         { *m = DialPlanTable{} }
-func (m *DialPlanTable) String() string { return proto.CompactTextString(m) }
-func (*DialPlanTable) ProtoMessage()    {}
+func (x *DialPlanTable) Reset() {
+	*x = DialPlanTable{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DialPlanTable) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DialPlanTable) ProtoMessage() {}
+
+func (x *DialPlanTable) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DialPlanTable.ProtoReflect.Descriptor instead.
 func (*DialPlanTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{16}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *DialPlanTable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DialPlanTable.Unmarshal(m, b)
-}
-func (m *DialPlanTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DialPlanTable.Marshal(b, m, deterministic)
-}
-func (m *DialPlanTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DialPlanTable.Merge(m, src)
-}
-func (m *DialPlanTable) XXX_Size() int {
-	return xxx_messageInfo_DialPlanTable.Size(m)
-}
-func (m *DialPlanTable) XXX_DiscardUnknown() {
-	xxx_messageInfo_DialPlanTable.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DialPlanTable proto.InternalMessageInfo
-
-func (m *DialPlanTable) GetDialPlanId() uint32 {
-	if m != nil {
-		return m.DialPlanId
+func (x *DialPlanTable) GetDialPlanId() uint32 {
+	if x != nil {
+		return x.DialPlanId
 	}
 	return 0
 }
 
-func (m *DialPlanTable) GetAction() uint32 {
-	if m != nil {
-		return m.Action
+func (x *DialPlanTable) GetAction() uint32 {
+	if x != nil {
+		return x.Action
 	}
 	return 0
 }
 
-func (m *DialPlanTable) GetDialPlanToken() string {
-	if m != nil {
-		return m.DialPlanToken
+func (x *DialPlanTable) GetDialPlanToken() string {
+	if x != nil {
+		return x.DialPlanToken
 	}
 	return ""
 }
 
-func (m *DialPlanTable) GetDialPlanTableMaxSize() uint32 {
-	if m != nil {
-		return m.DialPlanTableMaxSize
+func (x *DialPlanTable) GetDialPlanTableMaxSize() uint32 {
+	if x != nil {
+		return x.DialPlanTableMaxSize
 	}
 	return 0
 }
 
 type VoipFeatureAccessCodes struct {
-	CancelCallWaiting        string   `protobuf:"bytes,1,opt,name=cancelCallWaiting,proto3" json:"cancelCallWaiting,omitempty"`
-	CallHold                 string   `protobuf:"bytes,2,opt,name=callHold,proto3" json:"callHold,omitempty"`
-	CallPark                 string   `protobuf:"bytes,3,opt,name=callPark,proto3" json:"callPark,omitempty"`
-	CallerIdActivate         string   `protobuf:"bytes,4,opt,name=callerIdActivate,proto3" json:"callerIdActivate,omitempty"`
-	CallerIdDeactivate       string   `protobuf:"bytes,5,opt,name=callerIdDeactivate,proto3" json:"callerIdDeactivate,omitempty"`
-	DoNotDisturbActivation   string   `protobuf:"bytes,6,opt,name=doNotDisturbActivation,proto3" json:"doNotDisturbActivation,omitempty"`
-	DoNotDisturbDeactivation string   `protobuf:"bytes,7,opt,name=doNotDisturbDeactivation,proto3" json:"doNotDisturbDeactivation,omitempty"`
-	DoNotDisturbPinChange    string   `protobuf:"bytes,8,opt,name=doNotDisturbPinChange,proto3" json:"doNotDisturbPinChange,omitempty"`
-	EmergencyServiceNumber   string   `protobuf:"bytes,9,opt,name=emergencyServiceNumber,proto3" json:"emergencyServiceNumber,omitempty"`
-	IntercomService          string   `protobuf:"bytes,10,opt,name=intercomService,proto3" json:"intercomService,omitempty"`
-	UnattendedCallTransfer   string   `protobuf:"bytes,11,opt,name=unattendedCallTransfer,proto3" json:"unattendedCallTransfer,omitempty"`
-	AttendedCallTransfer     string   `protobuf:"bytes,12,opt,name=attendedCallTransfer,proto3" json:"attendedCallTransfer,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{} `json:"-"`
-	XXX_unrecognized         []byte   `json:"-"`
-	XXX_sizecache            int32    `json:"-"`
+	state                    protoimpl.MessageState `protogen:"open.v1"`
+	CancelCallWaiting        string                 `protobuf:"bytes,1,opt,name=cancelCallWaiting,proto3" json:"cancelCallWaiting,omitempty"`
+	CallHold                 string                 `protobuf:"bytes,2,opt,name=callHold,proto3" json:"callHold,omitempty"`
+	CallPark                 string                 `protobuf:"bytes,3,opt,name=callPark,proto3" json:"callPark,omitempty"`
+	CallerIdActivate         string                 `protobuf:"bytes,4,opt,name=callerIdActivate,proto3" json:"callerIdActivate,omitempty"`
+	CallerIdDeactivate       string                 `protobuf:"bytes,5,opt,name=callerIdDeactivate,proto3" json:"callerIdDeactivate,omitempty"`
+	DoNotDisturbActivation   string                 `protobuf:"bytes,6,opt,name=doNotDisturbActivation,proto3" json:"doNotDisturbActivation,omitempty"`
+	DoNotDisturbDeactivation string                 `protobuf:"bytes,7,opt,name=doNotDisturbDeactivation,proto3" json:"doNotDisturbDeactivation,omitempty"`
+	DoNotDisturbPinChange    string                 `protobuf:"bytes,8,opt,name=doNotDisturbPinChange,proto3" json:"doNotDisturbPinChange,omitempty"`
+	EmergencyServiceNumber   string                 `protobuf:"bytes,9,opt,name=emergencyServiceNumber,proto3" json:"emergencyServiceNumber,omitempty"`
+	IntercomService          string                 `protobuf:"bytes,10,opt,name=intercomService,proto3" json:"intercomService,omitempty"`
+	UnattendedCallTransfer   string                 `protobuf:"bytes,11,opt,name=unattendedCallTransfer,proto3" json:"unattendedCallTransfer,omitempty"`
+	AttendedCallTransfer     string                 `protobuf:"bytes,12,opt,name=attendedCallTransfer,proto3" json:"attendedCallTransfer,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
 }
 
-func (m *VoipFeatureAccessCodes) Reset()         { *m = VoipFeatureAccessCodes{} }
-func (m *VoipFeatureAccessCodes) String() string { return proto.CompactTextString(m) }
-func (*VoipFeatureAccessCodes) ProtoMessage()    {}
+func (x *VoipFeatureAccessCodes) Reset() {
+	*x = VoipFeatureAccessCodes{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipFeatureAccessCodes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipFeatureAccessCodes) ProtoMessage() {}
+
+func (x *VoipFeatureAccessCodes) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipFeatureAccessCodes.ProtoReflect.Descriptor instead.
 func (*VoipFeatureAccessCodes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{17}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *VoipFeatureAccessCodes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipFeatureAccessCodes.Unmarshal(m, b)
-}
-func (m *VoipFeatureAccessCodes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipFeatureAccessCodes.Marshal(b, m, deterministic)
-}
-func (m *VoipFeatureAccessCodes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipFeatureAccessCodes.Merge(m, src)
-}
-func (m *VoipFeatureAccessCodes) XXX_Size() int {
-	return xxx_messageInfo_VoipFeatureAccessCodes.Size(m)
-}
-func (m *VoipFeatureAccessCodes) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipFeatureAccessCodes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipFeatureAccessCodes proto.InternalMessageInfo
-
-func (m *VoipFeatureAccessCodes) GetCancelCallWaiting() string {
-	if m != nil {
-		return m.CancelCallWaiting
+func (x *VoipFeatureAccessCodes) GetCancelCallWaiting() string {
+	if x != nil {
+		return x.CancelCallWaiting
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetCallHold() string {
-	if m != nil {
-		return m.CallHold
+func (x *VoipFeatureAccessCodes) GetCallHold() string {
+	if x != nil {
+		return x.CallHold
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetCallPark() string {
-	if m != nil {
-		return m.CallPark
+func (x *VoipFeatureAccessCodes) GetCallPark() string {
+	if x != nil {
+		return x.CallPark
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetCallerIdActivate() string {
-	if m != nil {
-		return m.CallerIdActivate
+func (x *VoipFeatureAccessCodes) GetCallerIdActivate() string {
+	if x != nil {
+		return x.CallerIdActivate
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetCallerIdDeactivate() string {
-	if m != nil {
-		return m.CallerIdDeactivate
+func (x *VoipFeatureAccessCodes) GetCallerIdDeactivate() string {
+	if x != nil {
+		return x.CallerIdDeactivate
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetDoNotDisturbActivation() string {
-	if m != nil {
-		return m.DoNotDisturbActivation
+func (x *VoipFeatureAccessCodes) GetDoNotDisturbActivation() string {
+	if x != nil {
+		return x.DoNotDisturbActivation
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetDoNotDisturbDeactivation() string {
-	if m != nil {
-		return m.DoNotDisturbDeactivation
+func (x *VoipFeatureAccessCodes) GetDoNotDisturbDeactivation() string {
+	if x != nil {
+		return x.DoNotDisturbDeactivation
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetDoNotDisturbPinChange() string {
-	if m != nil {
-		return m.DoNotDisturbPinChange
+func (x *VoipFeatureAccessCodes) GetDoNotDisturbPinChange() string {
+	if x != nil {
+		return x.DoNotDisturbPinChange
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetEmergencyServiceNumber() string {
-	if m != nil {
-		return m.EmergencyServiceNumber
+func (x *VoipFeatureAccessCodes) GetEmergencyServiceNumber() string {
+	if x != nil {
+		return x.EmergencyServiceNumber
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetIntercomService() string {
-	if m != nil {
-		return m.IntercomService
+func (x *VoipFeatureAccessCodes) GetIntercomService() string {
+	if x != nil {
+		return x.IntercomService
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetUnattendedCallTransfer() string {
-	if m != nil {
-		return m.UnattendedCallTransfer
+func (x *VoipFeatureAccessCodes) GetUnattendedCallTransfer() string {
+	if x != nil {
+		return x.UnattendedCallTransfer
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetAttendedCallTransfer() string {
-	if m != nil {
-		return m.AttendedCallTransfer
+func (x *VoipFeatureAccessCodes) GetAttendedCallTransfer() string {
+	if x != nil {
+		return x.AttendedCallTransfer
 	}
 	return ""
 }
 
 type VoipApplicationServiceProfile struct {
-	CidFeatures                    uint32   `protobuf:"varint,1,opt,name=cidFeatures,proto3" json:"cidFeatures,omitempty"`
-	CallWaitingFeatures            uint32   `protobuf:"varint,2,opt,name=callWaitingFeatures,proto3" json:"callWaitingFeatures,omitempty"`
-	CallProgressOrTransferFeatures uint32   `protobuf:"varint,3,opt,name=callProgressOrTransferFeatures,proto3" json:"callProgressOrTransferFeatures,omitempty"`
-	CallPresentationFeatures       uint32   `protobuf:"varint,4,opt,name=callPresentationFeatures,proto3" json:"callPresentationFeatures,omitempty"`
-	DirectConnectFeature           uint32   `protobuf:"varint,5,opt,name=directConnectFeature,proto3" json:"directConnectFeature,omitempty"`
-	DirectConnectUriPointer        string   `protobuf:"bytes,6,opt,name=directConnectUriPointer,proto3" json:"directConnectUriPointer,omitempty"`
-	BridgedLineAgentUriPointer     string   `protobuf:"bytes,7,opt,name=bridgedLineAgentUriPointer,proto3" json:"bridgedLineAgentUriPointer,omitempty"`
-	ConferenceFactoryUriPointer    string   `protobuf:"bytes,8,opt,name=conferenceFactoryUriPointer,proto3" json:"conferenceFactoryUriPointer,omitempty"`
-	DialToneDelayTimer             uint32   `protobuf:"varint,9,opt,name=dialToneDelayTimer,proto3" json:"dialToneDelayTimer,omitempty"`
-	XXX_NoUnkeyedLiteral           struct{} `json:"-"`
-	XXX_unrecognized               []byte   `json:"-"`
-	XXX_sizecache                  int32    `json:"-"`
+	state                          protoimpl.MessageState `protogen:"open.v1"`
+	CidFeatures                    uint32                 `protobuf:"varint,1,opt,name=cidFeatures,proto3" json:"cidFeatures,omitempty"`
+	CallWaitingFeatures            uint32                 `protobuf:"varint,2,opt,name=callWaitingFeatures,proto3" json:"callWaitingFeatures,omitempty"`
+	CallProgressOrTransferFeatures uint32                 `protobuf:"varint,3,opt,name=callProgressOrTransferFeatures,proto3" json:"callProgressOrTransferFeatures,omitempty"`
+	CallPresentationFeatures       uint32                 `protobuf:"varint,4,opt,name=callPresentationFeatures,proto3" json:"callPresentationFeatures,omitempty"`
+	DirectConnectFeature           uint32                 `protobuf:"varint,5,opt,name=directConnectFeature,proto3" json:"directConnectFeature,omitempty"`
+	DirectConnectUriPointer        string                 `protobuf:"bytes,6,opt,name=directConnectUriPointer,proto3" json:"directConnectUriPointer,omitempty"`
+	BridgedLineAgentUriPointer     string                 `protobuf:"bytes,7,opt,name=bridgedLineAgentUriPointer,proto3" json:"bridgedLineAgentUriPointer,omitempty"`
+	ConferenceFactoryUriPointer    string                 `protobuf:"bytes,8,opt,name=conferenceFactoryUriPointer,proto3" json:"conferenceFactoryUriPointer,omitempty"`
+	DialToneDelayTimer             uint32                 `protobuf:"varint,9,opt,name=dialToneDelayTimer,proto3" json:"dialToneDelayTimer,omitempty"`
+	unknownFields                  protoimpl.UnknownFields
+	sizeCache                      protoimpl.SizeCache
 }
 
-func (m *VoipApplicationServiceProfile) Reset()         { *m = VoipApplicationServiceProfile{} }
-func (m *VoipApplicationServiceProfile) String() string { return proto.CompactTextString(m) }
-func (*VoipApplicationServiceProfile) ProtoMessage()    {}
+func (x *VoipApplicationServiceProfile) Reset() {
+	*x = VoipApplicationServiceProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipApplicationServiceProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipApplicationServiceProfile) ProtoMessage() {}
+
+func (x *VoipApplicationServiceProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipApplicationServiceProfile.ProtoReflect.Descriptor instead.
 func (*VoipApplicationServiceProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{18}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *VoipApplicationServiceProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipApplicationServiceProfile.Unmarshal(m, b)
-}
-func (m *VoipApplicationServiceProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipApplicationServiceProfile.Marshal(b, m, deterministic)
-}
-func (m *VoipApplicationServiceProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipApplicationServiceProfile.Merge(m, src)
-}
-func (m *VoipApplicationServiceProfile) XXX_Size() int {
-	return xxx_messageInfo_VoipApplicationServiceProfile.Size(m)
-}
-func (m *VoipApplicationServiceProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipApplicationServiceProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipApplicationServiceProfile proto.InternalMessageInfo
-
-func (m *VoipApplicationServiceProfile) GetCidFeatures() uint32 {
-	if m != nil {
-		return m.CidFeatures
+func (x *VoipApplicationServiceProfile) GetCidFeatures() uint32 {
+	if x != nil {
+		return x.CidFeatures
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetCallWaitingFeatures() uint32 {
-	if m != nil {
-		return m.CallWaitingFeatures
+func (x *VoipApplicationServiceProfile) GetCallWaitingFeatures() uint32 {
+	if x != nil {
+		return x.CallWaitingFeatures
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetCallProgressOrTransferFeatures() uint32 {
-	if m != nil {
-		return m.CallProgressOrTransferFeatures
+func (x *VoipApplicationServiceProfile) GetCallProgressOrTransferFeatures() uint32 {
+	if x != nil {
+		return x.CallProgressOrTransferFeatures
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetCallPresentationFeatures() uint32 {
-	if m != nil {
-		return m.CallPresentationFeatures
+func (x *VoipApplicationServiceProfile) GetCallPresentationFeatures() uint32 {
+	if x != nil {
+		return x.CallPresentationFeatures
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetDirectConnectFeature() uint32 {
-	if m != nil {
-		return m.DirectConnectFeature
+func (x *VoipApplicationServiceProfile) GetDirectConnectFeature() uint32 {
+	if x != nil {
+		return x.DirectConnectFeature
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetDirectConnectUriPointer() string {
-	if m != nil {
-		return m.DirectConnectUriPointer
+func (x *VoipApplicationServiceProfile) GetDirectConnectUriPointer() string {
+	if x != nil {
+		return x.DirectConnectUriPointer
 	}
 	return ""
 }
 
-func (m *VoipApplicationServiceProfile) GetBridgedLineAgentUriPointer() string {
-	if m != nil {
-		return m.BridgedLineAgentUriPointer
+func (x *VoipApplicationServiceProfile) GetBridgedLineAgentUriPointer() string {
+	if x != nil {
+		return x.BridgedLineAgentUriPointer
 	}
 	return ""
 }
 
-func (m *VoipApplicationServiceProfile) GetConferenceFactoryUriPointer() string {
-	if m != nil {
-		return m.ConferenceFactoryUriPointer
+func (x *VoipApplicationServiceProfile) GetConferenceFactoryUriPointer() string {
+	if x != nil {
+		return x.ConferenceFactoryUriPointer
 	}
 	return ""
 }
 
-func (m *VoipApplicationServiceProfile) GetDialToneDelayTimer() uint32 {
-	if m != nil {
-		return m.DialToneDelayTimer
+func (x *VoipApplicationServiceProfile) GetDialToneDelayTimer() uint32 {
+	if x != nil {
+		return x.DialToneDelayTimer
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*VoipSystemProfileRequest)(nil), "voip_system_profile.VoipSystemProfileRequest")
-	proto.RegisterType((*VoipSystemProfile)(nil), "voip_system_profile.VoipSystemProfile")
-	proto.RegisterType((*VoipConfig)(nil), "voip_system_profile.VoipConfig")
-	proto.RegisterType((*IpHostConfig)(nil), "voip_system_profile.IpHostConfig")
-	proto.RegisterType((*TcpUdpConfig)(nil), "voip_system_profile.TcpUdpConfig")
-	proto.RegisterType((*VoipVoiceCtp)(nil), "voip_system_profile.VoipVoiceCtp")
-	proto.RegisterType((*VoipMediaProfile)(nil), "voip_system_profile.VoipMediaProfile")
-	proto.RegisterType((*VoiceServiceProfile)(nil), "voip_system_profile.VoiceServiceProfile")
-	proto.RegisterType((*RtpProfile)(nil), "voip_system_profile.RtpProfile")
-	proto.RegisterType((*PptpPotsUni)(nil), "voip_system_profile.PptpPotsUni")
-	proto.RegisterType((*SipConfig)(nil), "voip_system_profile.SipConfig")
-	proto.RegisterType((*SipUserData)(nil), "voip_system_profile.SipUserData")
-	proto.RegisterType((*SipAgentConfig)(nil), "voip_system_profile.SipAgentConfig")
-	proto.RegisterType((*NetworkDialPlan)(nil), "voip_system_profile.NetworkDialPlan")
-	proto.RegisterType((*UsernameAndPassword)(nil), "voip_system_profile.UsernameAndPassword")
-	proto.RegisterType((*SipResponseTable)(nil), "voip_system_profile.SipResponseTable")
-	proto.RegisterType((*DialPlanTable)(nil), "voip_system_profile.DialPlanTable")
-	proto.RegisterType((*VoipFeatureAccessCodes)(nil), "voip_system_profile.VoipFeatureAccessCodes")
-	proto.RegisterType((*VoipApplicationServiceProfile)(nil), "voip_system_profile.VoipApplicationServiceProfile")
+var File_voltha_protos_voip_system_profile_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_voip_system_profile_proto_rawDesc = "" +
+	"\n" +
+	"'voltha_protos/voip_system_profile.proto\x12\x13voip_system_profile\x1a\x1cgoogle/api/annotations.proto\"\x82\x01\n" +
+	"\x18VoipSystemProfileRequest\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12T\n" +
+	"\x11voipSystemProfile\x18\x02 \x01(\v2&.voip_system_profile.VoipSystemProfileR\x11voipSystemProfile\"\x92\x01\n" +
+	"\x11VoipSystemProfile\x12<\n" +
+	"\tsipConfig\x18\x01 \x01(\v2\x1e.voip_system_profile.SipConfigR\tsipConfig\x12?\n" +
+	"\n" +
+	"voipConfig\x18\x02 \x01(\v2\x1f.voip_system_profile.VoipConfigR\n" +
+	"voipConfig\"\x95\x04\n" +
+	"\n" +
+	"VoipConfig\x12E\n" +
+	"\fipHostConfig\x18\x01 \x01(\v2!.voip_system_profile.IpHostConfigR\fipHostConfig\x12E\n" +
+	"\ftcpUdpConfig\x18\x02 \x01(\v2!.voip_system_profile.TcpUdpConfigR\ftcpUdpConfig\x12E\n" +
+	"\fvoipVoiceCtp\x18\x03 \x01(\v2!.voip_system_profile.VoipVoiceCtpR\fvoipVoiceCtp\x12Q\n" +
+	"\x10voipMediaProfile\x18\x04 \x01(\v2%.voip_system_profile.VoipMediaProfileR\x10voipMediaProfile\x12Z\n" +
+	"\x13voiceServiceProfile\x18\x05 \x01(\v2(.voip_system_profile.VoiceServiceProfileR\x13voiceServiceProfile\x12?\n" +
+	"\n" +
+	"rtpProfile\x18\x06 \x01(\v2\x1f.voip_system_profile.RtpProfileR\n" +
+	"rtpProfile\x12B\n" +
+	"\vpptpPotsUni\x18\a \x01(\v2 .voip_system_profile.PptpPotsUniR\vpptpPotsUni\"\x90\x02\n" +
+	"\fIpHostConfig\x12\x1c\n" +
+	"\tipOptions\x18\x01 \x01(\rR\tipOptions\x12$\n" +
+	"\ronuIdentifier\x18\x02 \x01(\tR\ronuIdentifier\x12\x1c\n" +
+	"\tipAddress\x18\x03 \x01(\tR\tipAddress\x12\x12\n" +
+	"\x04mask\x18\x04 \x01(\tR\x04mask\x12\x18\n" +
+	"\agateway\x18\x05 \x01(\tR\agateway\x12\x1e\n" +
+	"\n" +
+	"primaryDns\x18\x06 \x01(\tR\n" +
+	"primaryDns\x12\"\n" +
+	"\fsecondaryDns\x18\a \x01(\tR\fsecondaryDns\x12,\n" +
+	"\x11relayAgentOptions\x18\b \x01(\tR\x11relayAgentOptions\"F\n" +
+	"\fTcpUdpConfig\x12\x1a\n" +
+	"\bprotocol\x18\x01 \x01(\rR\bprotocol\x12\x1a\n" +
+	"\btosField\x18\x02 \x01(\tR\btosField\"6\n" +
+	"\fVoipVoiceCtp\x12&\n" +
+	"\x0esignallingCode\x18\x01 \x01(\rR\x0esignallingCode\"\x96\x05\n" +
+	"\x10VoipMediaProfile\x12\x18\n" +
+	"\afaxMode\x18\x01 \x01(\rR\afaxMode\x12(\n" +
+	"\x0fcodecSelection1\x18\x02 \x01(\rR\x0fcodecSelection1\x126\n" +
+	"\x16packetPeriodSelection1\x18\x03 \x01(\rR\x16packetPeriodSelection1\x120\n" +
+	"\x13silenceSuppression1\x18\x04 \x01(\rR\x13silenceSuppression1\x12(\n" +
+	"\x0fcodecSelection2\x18\x05 \x01(\rR\x0fcodecSelection2\x126\n" +
+	"\x16packetPeriodSelection2\x18\x06 \x01(\rR\x16packetPeriodSelection2\x120\n" +
+	"\x13silenceSuppression2\x18\a \x01(\rR\x13silenceSuppression2\x12(\n" +
+	"\x0fcodecSelection3\x18\b \x01(\rR\x0fcodecSelection3\x126\n" +
+	"\x16packetPeriodSelection3\x18\t \x01(\rR\x16packetPeriodSelection3\x120\n" +
+	"\x13silenceSuppression3\x18\n" +
+	" \x01(\rR\x13silenceSuppression3\x12(\n" +
+	"\x0fcodecSelection4\x18\v \x01(\rR\x0fcodecSelection4\x126\n" +
+	"\x16packetPeriodSelection4\x18\f \x01(\rR\x16packetPeriodSelection4\x120\n" +
+	"\x13silenceSuppression4\x18\r \x01(\rR\x13silenceSuppression4\x12\x18\n" +
+	"\aoobDtmf\x18\x0e \x01(\rR\aoobDtmf\"\xf3\x02\n" +
+	"\x13VoiceServiceProfile\x12*\n" +
+	"\x10announcementType\x18\x01 \x01(\rR\x10announcementType\x12\"\n" +
+	"\fjitterTarget\x18\x02 \x01(\rR\fjitterTarget\x12(\n" +
+	"\x0fjitterBufferMax\x18\x03 \x01(\rR\x0fjitterBufferMax\x12$\n" +
+	"\rechoCancelInd\x18\x04 \x01(\bR\rechoCancelInd\x120\n" +
+	"\x13pstnProtocolVariant\x18\x05 \x01(\rR\x13pstnProtocolVariant\x12(\n" +
+	"\x0fdtmfDigitLevels\x18\x06 \x01(\rR\x0fdtmfDigitLevels\x12,\n" +
+	"\x11dtmfDigitDuration\x18\a \x01(\rR\x11dtmfDigitDuration\x122\n" +
+	"\x14hookFlashMinimumTime\x18\b \x01(\rR\x14hookFlashMinimumTime\"\xf8\x01\n" +
+	"\n" +
+	"RtpProfile\x12\"\n" +
+	"\flocalPortMin\x18\x01 \x01(\rR\flocalPortMin\x12\"\n" +
+	"\flocalPortMax\x18\x02 \x01(\rR\flocalPortMax\x12\x1a\n" +
+	"\bdscpMark\x18\x03 \x01(\tR\bdscpMark\x12(\n" +
+	"\x0fpiggyBackEvents\x18\x04 \x01(\rR\x0fpiggyBackEvents\x12\x1e\n" +
+	"\n" +
+	"toneEvents\x18\x05 \x01(\rR\n" +
+	"toneEvents\x12\x1e\n" +
+	"\n" +
+	"dtmfEvents\x18\x06 \x01(\rR\n" +
+	"dtmfEvents\x12\x1c\n" +
+	"\tcasEvents\x18\a \x01(\rR\tcasEvents\"\xc3\x02\n" +
+	"\vPptpPotsUni\x12\x10\n" +
+	"\x03arc\x18\x01 \x01(\tR\x03arc\x12 \n" +
+	"\varcInterval\x18\x02 \x01(\tR\varcInterval\x12\x1c\n" +
+	"\timpedance\x18\x03 \x01(\rR\timpedance\x12*\n" +
+	"\x10transmissionPath\x18\x04 \x01(\rR\x10transmissionPath\x12\x16\n" +
+	"\x06rxGain\x18\x05 \x01(\x11R\x06rxGain\x12\x16\n" +
+	"\x06txGain\x18\x06 \x01(\x11R\x06txGain\x12*\n" +
+	"\x10potsHoldOverTime\x18\a \x01(\rR\x10potsHoldOverTime\x12.\n" +
+	"\x12nominalFeedVoltage\x18\b \x01(\rR\x12nominalFeedVoltage\x12*\n" +
+	"\x10lossOfSoftSwitch\x18\t \x01(\rR\x10lossOfSoftSwitch\"\xcb\x03\n" +
+	"\tSipConfig\x12B\n" +
+	"\vsipUserData\x18\x01 \x01(\v2 .voip_system_profile.SipUserDataR\vsipUserData\x12K\n" +
+	"\x0esipAgentConfig\x18\x02 \x01(\v2#.voip_system_profile.SipAgentConfigR\x0esipAgentConfig\x12N\n" +
+	"\x0fnetworkDialPlan\x18\x03 \x01(\v2$.voip_system_profile.NetworkDialPlanR\x0fnetworkDialPlan\x12c\n" +
+	"\x16voipFeatureAccessCodes\x18\x04 \x01(\v2+.voip_system_profile.VoipFeatureAccessCodesR\x16voipFeatureAccessCodes\x12x\n" +
+	"\x1dvoipApplicationServiceProfile\x18\x05 \x01(\v22.voip_system_profile.VoipApplicationServiceProfileR\x1dvoipApplicationServiceProfile\"\xd3\x02\n" +
+	"\vSipUserData\x12 \n" +
+	"\vuserPartAor\x18\x01 \x01(\tR\vuserPartAor\x12Z\n" +
+	"\x13usernameAndPassword\x18\x02 \x01(\v2(.voip_system_profile.UsernameAndPasswordR\x13usernameAndPassword\x124\n" +
+	"\x15voicemailServerSipUri\x18\x03 \x01(\tR\x15voicemailServerSipUri\x12P\n" +
+	"#voicemailSubscriptionExpirationTime\x18\x04 \x01(\x05R#voicemailSubscriptionExpirationTime\x12\"\n" +
+	"\freleaseTimer\x18\x05 \x01(\x05R\freleaseTimer\x12\x1a\n" +
+	"\brohTimer\x18\x06 \x01(\x05R\brohTimer\"\xa3\x04\n" +
+	"\x0eSipAgentConfig\x122\n" +
+	"\x14outboundProxyAddress\x18\x01 \x01(\tR\x14outboundProxyAddress\x12$\n" +
+	"\rprimarySipDns\x18\x02 \x01(\tR\rprimarySipDns\x12(\n" +
+	"\x0fsecondarySipDns\x18\x03 \x01(\tR\x0fsecondarySipDns\x12$\n" +
+	"\rsipRegExpTime\x18\x04 \x01(\x05R\rsipRegExpTime\x124\n" +
+	"\x15sipReregHeadStartTime\x18\x05 \x01(\x05R\x15sipReregHeadStartTime\x12\"\n" +
+	"\fSipRegistrar\x18\x06 \x01(\tR\fSipRegistrar\x12\x1e\n" +
+	"\n" +
+	"softSwitch\x18\a \x01(\tR\n" +
+	"softSwitch\x12Q\n" +
+	"\x10sipResponseTable\x18\b \x01(\v2%.voip_system_profile.SipResponseTableR\x10sipResponseTable\x12:\n" +
+	"\x18sipOptionTransmitControl\x18\t \x01(\bR\x18sipOptionTransmitControl\x12\"\n" +
+	"\fsipUriFormat\x18\n" +
+	" \x01(\tR\fsipUriFormat\x12:\n" +
+	"\x18redundantSipAgentPointer\x18\v \x01(\tR\x18redundantSipAgentPointer\"\xe5\x01\n" +
+	"\x0fNetworkDialPlan\x120\n" +
+	"\x13criticalDialTimeout\x18\x01 \x01(\rR\x13criticalDialTimeout\x12.\n" +
+	"\x12partialDialTimeout\x18\x02 \x01(\rR\x12partialDialTimeout\x12&\n" +
+	"\x0edialPlanFormat\x18\x03 \x01(\rR\x0edialPlanFormat\x12H\n" +
+	"\rdialPlanTable\x18\x04 \x01(\v2\".voip_system_profile.DialPlanTableR\rdialPlanTable\"A\n" +
+	"\x13UsernameAndPassword\x12*\n" +
+	"\x10validationScheme\x18\x01 \x01(\x05R\x10validationScheme\"r\n" +
+	"\x10SipResponseTable\x12(\n" +
+	"\x0fsipResponseCode\x18\x01 \x01(\tR\x0fsipResponseCode\x12\x12\n" +
+	"\x04tone\x18\x02 \x01(\tR\x04tone\x12 \n" +
+	"\vtextMessage\x18\x03 \x01(\tR\vtextMessage\"\xa1\x01\n" +
+	"\rDialPlanTable\x12\x1e\n" +
+	"\n" +
+	"dialPlanId\x18\x01 \x01(\rR\n" +
+	"dialPlanId\x12\x16\n" +
+	"\x06action\x18\x02 \x01(\rR\x06action\x12$\n" +
+	"\rdialPlanToken\x18\x03 \x01(\tR\rdialPlanToken\x122\n" +
+	"\x14dialPlanTableMaxSize\x18\x04 \x01(\rR\x14dialPlanTableMaxSize\"\xd2\x04\n" +
+	"\x16VoipFeatureAccessCodes\x12,\n" +
+	"\x11cancelCallWaiting\x18\x01 \x01(\tR\x11cancelCallWaiting\x12\x1a\n" +
+	"\bcallHold\x18\x02 \x01(\tR\bcallHold\x12\x1a\n" +
+	"\bcallPark\x18\x03 \x01(\tR\bcallPark\x12*\n" +
+	"\x10callerIdActivate\x18\x04 \x01(\tR\x10callerIdActivate\x12.\n" +
+	"\x12callerIdDeactivate\x18\x05 \x01(\tR\x12callerIdDeactivate\x126\n" +
+	"\x16doNotDisturbActivation\x18\x06 \x01(\tR\x16doNotDisturbActivation\x12:\n" +
+	"\x18doNotDisturbDeactivation\x18\a \x01(\tR\x18doNotDisturbDeactivation\x124\n" +
+	"\x15doNotDisturbPinChange\x18\b \x01(\tR\x15doNotDisturbPinChange\x126\n" +
+	"\x16emergencyServiceNumber\x18\t \x01(\tR\x16emergencyServiceNumber\x12(\n" +
+	"\x0fintercomService\x18\n" +
+	" \x01(\tR\x0fintercomService\x126\n" +
+	"\x16unattendedCallTransfer\x18\v \x01(\tR\x16unattendedCallTransfer\x122\n" +
+	"\x14attendedCallTransfer\x18\f \x01(\tR\x14attendedCallTransfer\"\x97\x04\n" +
+	"\x1dVoipApplicationServiceProfile\x12 \n" +
+	"\vcidFeatures\x18\x01 \x01(\rR\vcidFeatures\x120\n" +
+	"\x13callWaitingFeatures\x18\x02 \x01(\rR\x13callWaitingFeatures\x12F\n" +
+	"\x1ecallProgressOrTransferFeatures\x18\x03 \x01(\rR\x1ecallProgressOrTransferFeatures\x12:\n" +
+	"\x18callPresentationFeatures\x18\x04 \x01(\rR\x18callPresentationFeatures\x122\n" +
+	"\x14directConnectFeature\x18\x05 \x01(\rR\x14directConnectFeature\x128\n" +
+	"\x17directConnectUriPointer\x18\x06 \x01(\tR\x17directConnectUriPointer\x12>\n" +
+	"\x1abridgedLineAgentUriPointer\x18\a \x01(\tR\x1abridgedLineAgentUriPointer\x12@\n" +
+	"\x1bconferenceFactoryUriPointer\x18\b \x01(\tR\x1bconferenceFactoryUriPointer\x12.\n" +
+	"\x12dialToneDelayTimer\x18\t \x01(\rR\x12dialToneDelayTimerBf\n" +
+	"'org.opencord.voltha.voip_system_profileZ;github.com/opencord/voltha-protos/v5/go/voip_system_profileb\x06proto3"
+
+var (
+	file_voltha_protos_voip_system_profile_proto_rawDescOnce sync.Once
+	file_voltha_protos_voip_system_profile_proto_rawDescData []byte
+)
+
+func file_voltha_protos_voip_system_profile_proto_rawDescGZIP() []byte {
+	file_voltha_protos_voip_system_profile_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_voip_system_profile_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_voip_system_profile_proto_rawDesc), len(file_voltha_protos_voip_system_profile_proto_rawDesc)))
+	})
+	return file_voltha_protos_voip_system_profile_proto_rawDescData
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/voip_system_profile.proto", fileDescriptor_02a00a136081bca5)
+var file_voltha_protos_voip_system_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
+var file_voltha_protos_voip_system_profile_proto_goTypes = []any{
+	(*VoipSystemProfileRequest)(nil),      // 0: voip_system_profile.VoipSystemProfileRequest
+	(*VoipSystemProfile)(nil),             // 1: voip_system_profile.VoipSystemProfile
+	(*VoipConfig)(nil),                    // 2: voip_system_profile.VoipConfig
+	(*IpHostConfig)(nil),                  // 3: voip_system_profile.IpHostConfig
+	(*TcpUdpConfig)(nil),                  // 4: voip_system_profile.TcpUdpConfig
+	(*VoipVoiceCtp)(nil),                  // 5: voip_system_profile.VoipVoiceCtp
+	(*VoipMediaProfile)(nil),              // 6: voip_system_profile.VoipMediaProfile
+	(*VoiceServiceProfile)(nil),           // 7: voip_system_profile.VoiceServiceProfile
+	(*RtpProfile)(nil),                    // 8: voip_system_profile.RtpProfile
+	(*PptpPotsUni)(nil),                   // 9: voip_system_profile.PptpPotsUni
+	(*SipConfig)(nil),                     // 10: voip_system_profile.SipConfig
+	(*SipUserData)(nil),                   // 11: voip_system_profile.SipUserData
+	(*SipAgentConfig)(nil),                // 12: voip_system_profile.SipAgentConfig
+	(*NetworkDialPlan)(nil),               // 13: voip_system_profile.NetworkDialPlan
+	(*UsernameAndPassword)(nil),           // 14: voip_system_profile.UsernameAndPassword
+	(*SipResponseTable)(nil),              // 15: voip_system_profile.SipResponseTable
+	(*DialPlanTable)(nil),                 // 16: voip_system_profile.DialPlanTable
+	(*VoipFeatureAccessCodes)(nil),        // 17: voip_system_profile.VoipFeatureAccessCodes
+	(*VoipApplicationServiceProfile)(nil), // 18: voip_system_profile.VoipApplicationServiceProfile
+}
+var file_voltha_protos_voip_system_profile_proto_depIdxs = []int32{
+	1,  // 0: voip_system_profile.VoipSystemProfileRequest.voipSystemProfile:type_name -> voip_system_profile.VoipSystemProfile
+	10, // 1: voip_system_profile.VoipSystemProfile.sipConfig:type_name -> voip_system_profile.SipConfig
+	2,  // 2: voip_system_profile.VoipSystemProfile.voipConfig:type_name -> voip_system_profile.VoipConfig
+	3,  // 3: voip_system_profile.VoipConfig.ipHostConfig:type_name -> voip_system_profile.IpHostConfig
+	4,  // 4: voip_system_profile.VoipConfig.tcpUdpConfig:type_name -> voip_system_profile.TcpUdpConfig
+	5,  // 5: voip_system_profile.VoipConfig.voipVoiceCtp:type_name -> voip_system_profile.VoipVoiceCtp
+	6,  // 6: voip_system_profile.VoipConfig.voipMediaProfile:type_name -> voip_system_profile.VoipMediaProfile
+	7,  // 7: voip_system_profile.VoipConfig.voiceServiceProfile:type_name -> voip_system_profile.VoiceServiceProfile
+	8,  // 8: voip_system_profile.VoipConfig.rtpProfile:type_name -> voip_system_profile.RtpProfile
+	9,  // 9: voip_system_profile.VoipConfig.pptpPotsUni:type_name -> voip_system_profile.PptpPotsUni
+	11, // 10: voip_system_profile.SipConfig.sipUserData:type_name -> voip_system_profile.SipUserData
+	12, // 11: voip_system_profile.SipConfig.sipAgentConfig:type_name -> voip_system_profile.SipAgentConfig
+	13, // 12: voip_system_profile.SipConfig.networkDialPlan:type_name -> voip_system_profile.NetworkDialPlan
+	17, // 13: voip_system_profile.SipConfig.voipFeatureAccessCodes:type_name -> voip_system_profile.VoipFeatureAccessCodes
+	18, // 14: voip_system_profile.SipConfig.voipApplicationServiceProfile:type_name -> voip_system_profile.VoipApplicationServiceProfile
+	14, // 15: voip_system_profile.SipUserData.usernameAndPassword:type_name -> voip_system_profile.UsernameAndPassword
+	15, // 16: voip_system_profile.SipAgentConfig.sipResponseTable:type_name -> voip_system_profile.SipResponseTable
+	16, // 17: voip_system_profile.NetworkDialPlan.dialPlanTable:type_name -> voip_system_profile.DialPlanTable
+	18, // [18:18] is the sub-list for method output_type
+	18, // [18:18] is the sub-list for method input_type
+	18, // [18:18] is the sub-list for extension type_name
+	18, // [18:18] is the sub-list for extension extendee
+	0,  // [0:18] is the sub-list for field type_name
 }
 
-var fileDescriptor_02a00a136081bca5 = []byte{
-	// 2057 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0x5f, 0x73, 0x1b, 0x49,
-	0x11, 0x2f, 0x3b, 0x4e, 0x2e, 0x1a, 0xdb, 0xf9, 0x33, 0x81, 0xa0, 0x0a, 0x77, 0x21, 0xec, 0x1d,
-	0x77, 0x29, 0xfe, 0xd8, 0x60, 0x9b, 0x2b, 0x0a, 0x28, 0xc0, 0xb1, 0x62, 0xe2, 0xe2, 0x9c, 0x88,
-	0x95, 0x63, 0xaa, 0xee, 0xe5, 0x6a, 0x3c, 0xdb, 0x5a, 0x0d, 0xde, 0x9d, 0x59, 0x66, 0x46, 0x8a,
-	0xc4, 0x23, 0x9f, 0x80, 0xa2, 0x0a, 0x78, 0xa6, 0xf8, 0x28, 0x3c, 0xf2, 0x06, 0x9f, 0x81, 0x4f,
-	0xc0, 0x0b, 0x8f, 0x54, 0xcf, 0xcc, 0x4a, 0xbb, 0xda, 0x5d, 0xc3, 0x9b, 0xe6, 0xf7, 0xeb, 0x6e,
-	0xb5, 0xba, 0x7b, 0xba, 0x7b, 0x44, 0x3e, 0x99, 0xa9, 0xcc, 0x4e, 0xd8, 0x17, 0x85, 0x56, 0x56,
-	0x99, 0xfd, 0x99, 0x12, 0xc5, 0x17, 0x66, 0x61, 0x2c, 0xe4, 0x08, 0x8d, 0x45, 0x06, 0x7b, 0x8e,
-	0xa2, 0x8f, 0x5a, 0xa8, 0x27, 0xef, 0xa7, 0x4a, 0xa5, 0x19, 0xec, 0xb3, 0x42, 0xec, 0x33, 0x29,
-	0x95, 0x65, 0x56, 0x28, 0x69, 0xbc, 0x4a, 0xf4, 0xbb, 0x0d, 0xd2, 0xbf, 0x54, 0xa2, 0x18, 0x39,
-	0xa5, 0xa1, 0xd7, 0x89, 0xe1, 0x37, 0x53, 0x30, 0x96, 0x3e, 0x20, 0xb7, 0xae, 0x61, 0xd1, 0xdf,
-	0x78, 0xb6, 0xf1, 0xbc, 0x17, 0xe3, 0x47, 0x7a, 0x41, 0x1e, 0xce, 0xd6, 0xa5, 0xfb, 0x9b, 0xcf,
-	0x36, 0x9e, 0x6f, 0x1f, 0x7c, 0xbc, 0xd7, 0xe6, 0x58, 0xd3, 0x76, 0xd3, 0x40, 0xf4, 0x87, 0x0d,
-	0xf2, 0xb0, 0x21, 0x48, 0x7f, 0x4c, 0x7a, 0x46, 0x14, 0x27, 0x4a, 0x8e, 0x45, 0xea, 0x7c, 0xd8,
-	0x3e, 0x78, 0xda, 0xfa, 0x1d, 0xa3, 0x52, 0x2a, 0x5e, 0x29, 0xd0, 0x9f, 0x12, 0x82, 0xb2, 0x41,
-	0xdd, 0xbb, 0xf8, 0xb5, 0x4e, 0x17, 0x83, 0x7e, 0x45, 0x25, 0xfa, 0xe3, 0x16, 0x21, 0x2b, 0x8a,
-	0xbe, 0x24, 0x3b, 0xa2, 0x78, 0xa5, 0x8c, 0xad, 0x39, 0xf4, 0xf5, 0x56, 0x8b, 0x67, 0x15, 0xc1,
-	0xb8, 0xa6, 0x86, 0x66, 0x2c, 0x2f, 0xde, 0x26, 0x75, 0xc7, 0xda, 0xcd, 0x5c, 0x54, 0x04, 0xe3,
-	0x9a, 0x1a, 0x9a, 0x41, 0x8d, 0x4b, 0x25, 0x38, 0x9c, 0xd8, 0xa2, 0x7f, 0xeb, 0x06, 0x33, 0x97,
-	0x15, 0xc1, 0xb8, 0xa6, 0x46, 0x7f, 0x49, 0x1e, 0xe0, 0xf9, 0x1c, 0x12, 0xc1, 0xca, 0x6c, 0x6e,
-	0x39, 0x53, 0xdf, 0xe8, 0x34, 0x55, 0x15, 0x8e, 0x1b, 0xea, 0xf4, 0x73, 0x82, 0x55, 0xc8, 0x61,
-	0x04, 0x7a, 0x26, 0x38, 0x94, 0x56, 0x6f, 0x3b, 0xab, 0xcf, 0xbb, 0xac, 0xae, 0xcb, 0xc7, 0x6d,
-	0x46, 0x30, 0xa7, 0xda, 0x16, 0xa5, 0xc9, 0x3b, 0x37, 0xe4, 0x34, 0x5e, 0x8a, 0xc5, 0x15, 0x15,
-	0xfa, 0x82, 0x6c, 0x17, 0x85, 0x2d, 0x86, 0xca, 0x9a, 0xb7, 0x52, 0xf4, 0xdf, 0x73, 0x16, 0x9e,
-	0xb5, 0x5a, 0x18, 0xae, 0xe4, 0xe2, 0xaa, 0x52, 0xf4, 0xfb, 0x4d, 0xb2, 0x53, 0x4d, 0x30, 0x7d,
-	0x9f, 0xf4, 0x44, 0xf1, 0xa6, 0x70, 0xb7, 0xca, 0x95, 0xc5, 0x6e, 0xbc, 0x02, 0xe8, 0x47, 0x64,
-	0x57, 0xc9, 0xe9, 0x59, 0x02, 0xd2, 0x8a, 0xb1, 0x00, 0xed, 0x32, 0xde, 0x8b, 0xeb, 0xa0, 0xb7,
-	0x71, 0x9c, 0x24, 0x1a, 0x8c, 0x71, 0xc9, 0xec, 0xc5, 0x2b, 0x80, 0x52, 0xb2, 0x95, 0x33, 0x73,
-	0xed, 0x52, 0xd3, 0x8b, 0xdd, 0x67, 0xda, 0x27, 0xef, 0xa5, 0xcc, 0xc2, 0x3b, 0xb6, 0x70, 0xb1,
-	0xed, 0xc5, 0xe5, 0x91, 0x3e, 0x25, 0xa4, 0xd0, 0x22, 0x67, 0x7a, 0x31, 0x90, 0xc6, 0x45, 0xa9,
-	0x17, 0x57, 0x10, 0x1a, 0x91, 0x1d, 0x03, 0x5c, 0xc9, 0x24, 0x48, 0xbc, 0xe7, 0x24, 0x6a, 0x18,
-	0xfd, 0x36, 0x79, 0xa8, 0x21, 0x63, 0x8b, 0xe3, 0x14, 0xa4, 0x2d, 0x7f, 0xdb, 0x5d, 0x27, 0xd8,
-	0x24, 0xa2, 0x53, 0xb2, 0x53, 0xad, 0x55, 0xfa, 0x84, 0xdc, 0x75, 0xdd, 0x85, 0xab, 0x2c, 0x04,
-	0x64, 0x79, 0x46, 0xce, 0x2a, 0x73, 0x2a, 0x20, 0x4b, 0x42, 0x28, 0x96, 0xe7, 0xe8, 0x53, 0xb2,
-	0x53, 0x2d, 0x56, 0xfa, 0x31, 0xb9, 0x67, 0x44, 0x2a, 0x59, 0x96, 0x09, 0x99, 0x9e, 0xa8, 0x04,
-	0x82, 0xb5, 0x35, 0x34, 0xfa, 0xd3, 0x6d, 0xf2, 0x60, 0xbd, 0x34, 0x31, 0x40, 0x63, 0x36, 0x3f,
-	0x5f, 0x69, 0x95, 0x47, 0xfa, 0x9c, 0xdc, 0xe7, 0x2a, 0x01, 0x3e, 0x82, 0x0c, 0x38, 0xfe, 0x82,
-	0xef, 0x39, 0x4f, 0x76, 0xe3, 0x75, 0x98, 0x7e, 0x4a, 0x1e, 0x17, 0x8c, 0x5f, 0x83, 0x1d, 0x82,
-	0x16, 0x2a, 0xa9, 0x28, 0xdc, 0x72, 0x0a, 0x1d, 0x2c, 0xfd, 0x2e, 0x79, 0x64, 0x44, 0x06, 0x92,
-	0xc3, 0x68, 0x5a, 0x14, 0x98, 0x43, 0xa7, 0xb4, 0xe5, 0x94, 0xda, 0xa8, 0xa6, 0x4f, 0x07, 0x2e,
-	0xad, 0x0d, 0x9f, 0x0e, 0x3a, 0x7d, 0x3a, 0x70, 0xa9, 0xee, 0xf2, 0xe9, 0xa0, 0xdd, 0xa7, 0x03,
-	0x97, 0xfd, 0x56, 0x9f, 0x0e, 0x9a, 0x3e, 0x1d, 0xba, 0x12, 0x68, 0xf8, 0x74, 0xd8, 0xe9, 0xd3,
-	0x61, 0xbf, 0x77, 0x83, 0x4f, 0x87, 0xed, 0x3e, 0x1d, 0xf6, 0x49, 0x97, 0x4f, 0x87, 0x4d, 0x9f,
-	0x8e, 0xfa, 0xdb, 0x6d, 0x3e, 0x1d, 0x75, 0xfa, 0x74, 0xd4, 0xdf, 0xb9, 0xc1, 0xa7, 0xa3, 0x76,
-	0x9f, 0x8e, 0xfa, 0xbb, 0x5d, 0x3e, 0x1d, 0x61, 0xa5, 0x29, 0x75, 0x35, 0xb0, 0xf9, 0xb8, 0x7f,
-	0xcf, 0x57, 0x5a, 0x38, 0x46, 0xff, 0xde, 0x24, 0x8f, 0x5a, 0xba, 0x1b, 0xfd, 0x26, 0x79, 0x80,
-	0xa3, 0x78, 0x2a, 0x39, 0xe4, 0x20, 0xed, 0xc5, 0xa2, 0x28, 0x8b, 0xb4, 0x81, 0xe3, 0x75, 0xfd,
-	0xb5, 0xb0, 0x16, 0xf4, 0x05, 0xd3, 0x29, 0xd8, 0x50, 0xaa, 0x35, 0x0c, 0xa3, 0xe2, 0xcf, 0x2f,
-	0xa6, 0xe3, 0x31, 0xe8, 0x73, 0x36, 0x0f, 0x05, 0xba, 0x0e, 0x63, 0x3b, 0x02, 0x3e, 0x51, 0x27,
-	0x4c, 0x72, 0xc8, 0xce, 0x64, 0xe2, 0x6a, 0xf2, 0x6e, 0x5c, 0x07, 0x31, 0x06, 0x85, 0xb1, 0x72,
-	0x18, 0x2e, 0xed, 0x25, 0xd3, 0x82, 0x49, 0x1b, 0x2a, 0xb2, 0x8d, 0x42, 0x0f, 0x12, 0x9b, 0x8f,
-	0x07, 0x22, 0x15, 0xf6, 0x33, 0x98, 0x41, 0x66, 0x42, 0x39, 0xae, 0xc3, 0xd8, 0x5a, 0x96, 0xd0,
-	0x60, 0xaa, 0xdd, 0x36, 0x12, 0xaa, 0xb0, 0x49, 0xd0, 0x03, 0xf2, 0xa5, 0x89, 0x52, 0xd7, 0xa7,
-	0x19, 0x33, 0x93, 0x73, 0x21, 0x45, 0x3e, 0xcd, 0x2f, 0x44, 0x0e, 0xa1, 0x10, 0x5b, 0xb9, 0xe8,
-	0x3f, 0x1b, 0x84, 0xac, 0x06, 0x00, 0x06, 0x30, 0x53, 0x9c, 0x65, 0x43, 0xa5, 0xed, 0xb9, 0x90,
-	0x21, 0xd0, 0x35, 0xac, 0x2e, 0xc3, 0xe6, 0x65, 0x90, 0xab, 0x18, 0x76, 0xae, 0xc4, 0xf0, 0xe2,
-	0x9c, 0xe9, 0xeb, 0xd0, 0xa2, 0x97, 0x67, 0xfc, 0xf9, 0x85, 0x48, 0xd3, 0xc5, 0x0b, 0xc6, 0xaf,
-	0x5f, 0xce, 0x40, 0x5a, 0x13, 0x2e, 0xfb, 0x3a, 0x8c, 0xdd, 0xd9, 0x2a, 0x09, 0x41, 0xc8, 0x47,
-	0xb4, 0x82, 0x20, 0x8f, 0x51, 0x08, 0xbc, 0x8f, 0x61, 0x05, 0xc1, 0x49, 0xc1, 0x99, 0x09, 0xb4,
-	0x0f, 0xdb, 0x0a, 0x88, 0xfe, 0xb6, 0x49, 0xb6, 0x2b, 0x93, 0x0b, 0x37, 0x38, 0xa6, 0x79, 0xb9,
-	0xc1, 0x31, 0xcd, 0xe9, 0x33, 0xb2, 0xcd, 0x34, 0x3f, 0x93, 0x16, 0xf4, 0x8c, 0x65, 0xa1, 0x05,
-	0x57, 0x21, 0x37, 0x8b, 0xf2, 0x02, 0x12, 0xac, 0x86, 0x50, 0x46, 0x2b, 0x00, 0x4b, 0xd7, 0x6a,
-	0x26, 0x4d, 0x2e, 0x5c, 0xf5, 0x0f, 0x99, 0x9d, 0x84, 0x9f, 0xda, 0xc0, 0xe9, 0x63, 0x72, 0x47,
-	0xcf, 0x7f, 0xce, 0x84, 0x74, 0xbf, 0xf3, 0x61, 0x1c, 0x4e, 0x88, 0x5b, 0x8f, 0xdf, 0xf1, 0xb8,
-	0x3f, 0xa1, 0xed, 0x42, 0x59, 0xf3, 0x4a, 0x65, 0xc9, 0x9b, 0x19, 0x68, 0x97, 0x68, 0xff, 0x13,
-	0x1b, 0x38, 0xdd, 0x23, 0x54, 0xaa, 0x5c, 0x48, 0x96, 0x9d, 0x02, 0x24, 0x97, 0x2a, 0xb3, 0x2c,
-	0x2d, 0xcb, 0xa2, 0x85, 0x41, 0xdb, 0x99, 0x32, 0xe6, 0xcd, 0x78, 0xa4, 0xc6, 0x76, 0xf4, 0x4e,
-	0x58, 0x3e, 0x09, 0xcd, 0xa9, 0x81, 0x47, 0x7f, 0xbf, 0x45, 0x7a, 0xcb, 0xa5, 0x12, 0x97, 0x06,
-	0x23, 0x8a, 0xb7, 0x06, 0xf4, 0x80, 0x59, 0x16, 0x16, 0xbf, 0x67, 0x5d, 0x9b, 0x68, 0x29, 0x17,
-	0x57, 0x95, 0xe8, 0x2f, 0x70, 0x92, 0x15, 0x6e, 0x68, 0xd6, 0x16, 0xbf, 0x0f, 0xbb, 0xcc, 0x54,
-	0x44, 0xe3, 0x35, 0x55, 0xfa, 0x9a, 0xdc, 0x97, 0x60, 0xdf, 0x29, 0x7d, 0x3d, 0x10, 0x2c, 0x1b,
-	0x66, 0x4c, 0x86, 0xfd, 0xef, 0xa3, 0x56, 0x6b, 0xaf, 0xeb, 0xb2, 0xf1, 0xba, 0x32, 0xe5, 0xe4,
-	0x31, 0xea, 0x9d, 0x02, 0xb3, 0x53, 0x0d, 0xc7, 0x9c, 0x83, 0x31, 0x38, 0x57, 0x4d, 0xd8, 0x05,
-	0xbf, 0xd5, 0xb9, 0x0b, 0x36, 0x55, 0xe2, 0x0e, 0x53, 0x74, 0x4e, 0x3e, 0x40, 0xe6, 0xb8, 0x28,
-	0x32, 0xc1, 0xdd, 0xdd, 0x6e, 0xdd, 0x10, 0x0f, 0x3a, 0xbf, 0xab, 0x53, 0x33, 0xbe, 0xd9, 0x70,
-	0xf4, 0xcf, 0x4d, 0xb2, 0x5d, 0x49, 0x0c, 0xde, 0x80, 0xa9, 0x01, 0x3d, 0x64, 0xda, 0x1e, 0x2b,
-	0x1d, 0xee, 0x46, 0x15, 0xc2, 0x1d, 0x16, 0x8f, 0x92, 0xe5, 0x70, 0x2c, 0x93, 0x21, 0x33, 0xe6,
-	0x9d, 0xd2, 0x49, 0x48, 0x59, 0xfb, 0x0e, 0xfb, 0xb6, 0x29, 0x1f, 0xb7, 0x19, 0xa1, 0x47, 0xe4,
-	0xcb, 0x6e, 0xb5, 0xcd, 0x99, 0xc8, 0xd0, 0x51, 0xd0, 0xe8, 0x9b, 0x16, 0xa1, 0xa5, 0xb4, 0x93,
-	0x74, 0x48, 0x3e, 0x5c, 0x11, 0xd3, 0x2b, 0xc3, 0xb5, 0x70, 0xbb, 0xd7, 0xcb, 0x79, 0x21, 0x7c,
-	0xa7, 0x74, 0x97, 0x05, 0xf3, 0x75, 0x3b, 0xfe, 0x7f, 0x44, 0xb1, 0xe3, 0x69, 0xc8, 0x80, 0x19,
-	0xc0, 0xa3, 0x76, 0xe1, 0xbf, 0x1d, 0xd7, 0x30, 0xec, 0x78, 0x5a, 0x4d, 0x3c, 0x7f, 0xc7, 0xf1,
-	0xcb, 0x73, 0xf4, 0xd7, 0x2d, 0x72, 0xaf, 0x5e, 0xa7, 0xd8, 0xab, 0xd5, 0xd4, 0x5e, 0xa9, 0xa9,
-	0x4c, 0x86, 0x5a, 0xcd, 0x17, 0xe5, 0x3e, 0xeb, 0x23, 0xdc, 0xca, 0xe1, 0x3c, 0x0a, 0xab, 0xe9,
-	0x48, 0x14, 0xb8, 0x8d, 0x86, 0xf5, 0xb8, 0x06, 0x62, 0x7b, 0x5d, 0xae, 0xa7, 0x41, 0xce, 0x87,
-	0x6b, 0x1d, 0x46, 0x7b, 0x46, 0x14, 0x31, 0xa4, 0x2f, 0xe7, 0x45, 0x25, 0x24, 0x75, 0x10, 0x93,
-	0xe0, 0x00, 0x0d, 0xe9, 0x2b, 0x60, 0xc9, 0xc8, 0x32, 0x6d, 0x9d, 0xb4, 0x8f, 0x42, 0x3b, 0x89,
-	0x21, 0x1b, 0x39, 0x33, 0xc2, 0x58, 0xcd, 0x74, 0x58, 0xad, 0x6b, 0x18, 0xb6, 0x6f, 0xb3, 0x6a,
-	0x30, 0x7e, 0xb5, 0xae, 0x20, 0xf8, 0xe2, 0x72, 0xc6, 0x4d, 0xa1, 0xa4, 0x81, 0x0b, 0x76, 0x95,
-	0xf9, 0xa6, 0xd5, 0xf5, 0xe2, 0x1a, 0xad, 0x09, 0xc7, 0x0d, 0x75, 0xfa, 0x43, 0xd2, 0x37, 0xe5,
-	0x7b, 0xe3, 0xc2, 0xb7, 0x60, 0xcc, 0x88, 0xd5, 0x2a, 0x73, 0x1d, 0xee, 0x6e, 0xdc, 0xc9, 0xbb,
-	0xb7, 0x80, 0xab, 0xb0, 0x53, 0xa5, 0x73, 0x66, 0xdd, 0xe6, 0x85, 0x6f, 0x81, 0x0a, 0x86, 0xf6,
-	0x35, 0x24, 0x53, 0x99, 0x30, 0x69, 0xcb, 0x8c, 0x0f, 0x95, 0xc0, 0x71, 0xe1, 0x76, 0xaf, 0x5e,
-	0xdc, 0xc9, 0x47, 0xff, 0xda, 0x20, 0xf7, 0xd7, 0xfa, 0x0f, 0x2e, 0x17, 0x5c, 0x0b, 0x2b, 0x38,
-	0xcb, 0x10, 0xc3, 0xd0, 0xaa, 0xa9, 0x0d, 0x63, 0xb9, 0x8d, 0xc2, 0x5e, 0x5f, 0x30, 0x6d, 0x45,
-	0x5d, 0xc1, 0xcf, 0xe8, 0x16, 0x06, 0xdf, 0x0d, 0x49, 0xf8, 0xb6, 0xf0, 0xbb, 0xfc, 0x18, 0x5b,
-	0x43, 0xe9, 0x2b, 0xb2, 0x5b, 0x22, 0x3e, 0x13, 0xbe, 0xdf, 0x45, 0xad, 0x99, 0x18, 0x54, 0x25,
-	0xe3, 0xba, 0x62, 0x74, 0x4c, 0x1e, 0xb5, 0x74, 0x00, 0x1c, 0x3a, 0x33, 0x96, 0x89, 0xc4, 0xb7,
-	0x25, 0x3e, 0x81, 0xdc, 0xef, 0x79, 0xb7, 0xe3, 0x06, 0x1e, 0x69, 0xf2, 0x60, 0x3d, 0xd9, 0xae,
-	0xee, 0x57, 0xd8, 0xf2, 0x05, 0x84, 0x75, 0x5f, 0x87, 0xf1, 0x89, 0x88, 0x4b, 0x44, 0xb8, 0x3e,
-	0xee, 0x33, 0x36, 0x3a, 0x0b, 0x73, 0x7b, 0x0e, 0xc6, 0xe0, 0x6c, 0xf4, 0x37, 0xa6, 0x0a, 0x45,
-	0x7f, 0xd9, 0x20, 0xbb, 0xb5, 0xdf, 0xe5, 0xd6, 0x8f, 0x00, 0x9c, 0x25, 0x21, 0x27, 0x15, 0x04,
-	0x47, 0x37, 0x73, 0x8b, 0x72, 0x08, 0x7f, 0x38, 0xe1, 0xbd, 0x5b, 0x46, 0x44, 0x5d, 0x83, 0x0c,
-	0xdf, 0x56, 0x07, 0xb1, 0x43, 0xd4, 0xe2, 0x76, 0xce, 0xe6, 0x23, 0xf1, 0x5b, 0x08, 0x0b, 0x44,
-	0x2b, 0x17, 0xfd, 0x63, 0x8b, 0x3c, 0x6e, 0x9f, 0x35, 0xb8, 0x4a, 0x72, 0xb7, 0xb3, 0x9e, 0xb0,
-	0x2c, 0xfb, 0x15, 0x13, 0x56, 0xc8, 0x34, 0x04, 0xa8, 0x49, 0x60, 0x37, 0xe3, 0x2c, 0xcb, 0x70,
-	0x8b, 0x28, 0x5f, 0x9e, 0xe5, 0xb9, 0xe4, 0x86, 0x95, 0xdd, 0xae, 0x3c, 0x63, 0x12, 0xf1, 0x33,
-	0xe8, 0xb3, 0xe4, 0x98, 0x5b, 0x31, 0x63, 0x16, 0xc2, 0x4b, 0xbc, 0x81, 0x63, 0xa5, 0x96, 0xd8,
-	0x00, 0x58, 0x29, 0xed, 0x1f, 0xe8, 0x2d, 0x0c, 0x3e, 0x52, 0x12, 0xf5, 0x5a, 0xd9, 0x81, 0x30,
-	0x76, 0xaa, 0xaf, 0x82, 0x1d, 0x0c, 0xaf, 0x6f, 0x2e, 0x1d, 0x2c, 0xde, 0xc9, 0x2a, 0xb3, 0xb4,
-	0x58, 0xee, 0xd2, 0xbd, 0xb8, 0x93, 0xc7, 0xe6, 0x57, 0xe5, 0x86, 0x42, 0x9e, 0x4c, 0x98, 0x0c,
-	0xcb, 0x53, 0x2f, 0x6e, 0x27, 0xd1, 0x53, 0xc8, 0x41, 0xa7, 0x20, 0xf9, 0x22, 0x0c, 0xd8, 0xd7,
-	0xd3, 0xfc, 0x0a, 0xb4, 0xeb, 0x31, 0xbd, 0xb8, 0x83, 0xc5, 0x12, 0x76, 0xad, 0x80, 0xab, 0x3c,
-	0x10, 0xa1, 0xc9, 0xac, 0xc3, 0xf8, 0x0d, 0x53, 0xc9, 0xac, 0x05, 0x99, 0x40, 0x82, 0x89, 0x73,
-	0xcd, 0x6a, 0xbc, 0xec, 0x32, 0x1d, 0x2c, 0x16, 0x55, 0xab, 0xd6, 0x8e, 0x1f, 0x3b, 0x6d, 0x5c,
-	0xf4, 0xe7, 0x2d, 0xf2, 0xc1, 0x8d, 0x4b, 0x05, 0x5e, 0x1e, 0x2e, 0x92, 0x50, 0x74, 0xe5, 0xff,
-	0x3a, 0x55, 0xc8, 0xf5, 0xb1, 0x55, 0x79, 0x2d, 0x25, 0x37, 0x43, 0x1f, 0x6b, 0x52, 0xf4, 0x94,
-	0x3c, 0x75, 0x55, 0xa5, 0x55, 0x8a, 0xc3, 0xef, 0x8d, 0x2e, 0xfd, 0x59, 0x2a, 0xfb, 0x3e, 0xf5,
-	0x3f, 0xa4, 0x30, 0xfb, 0x5e, 0x02, 0x0c, 0x48, 0xff, 0x7f, 0xee, 0xd2, 0x82, 0xbf, 0x4a, 0x9d,
-	0xbc, 0xbf, 0x82, 0x1a, 0x38, 0x8e, 0x00, 0x09, 0xdc, 0x06, 0x22, 0xbc, 0x44, 0x5a, 0x39, 0xfa,
-	0x03, 0xf2, 0x95, 0x1a, 0xfe, 0x56, 0x8b, 0x72, 0x00, 0xf8, 0x32, 0xed, 0xa2, 0xe9, 0x4f, 0xc8,
-	0x93, 0x2b, 0x2d, 0x92, 0x14, 0x92, 0xcf, 0x84, 0x04, 0x37, 0x1a, 0x2a, 0xca, 0xbe, 0x52, 0x6f,
-	0x90, 0xa0, 0x3f, 0x23, 0x5f, 0xe5, 0x4a, 0x8e, 0x41, 0xe3, 0xa3, 0xfb, 0x94, 0x71, 0xab, 0xf4,
-	0xa2, 0x62, 0xc0, 0x57, 0xec, 0x4d, 0x22, 0x78, 0x23, 0xb1, 0xad, 0x5c, 0x28, 0x09, 0x03, 0xc8,
-	0xd8, 0xc2, 0x6f, 0x33, 0x7e, 0xf3, 0x6f, 0x61, 0x5e, 0x8c, 0xc9, 0x27, 0x4a, 0xa7, 0x7b, 0xaa,
-	0x00, 0xc9, 0x95, 0x4e, 0xf6, 0xfc, 0x7f, 0xef, 0x6d, 0x13, 0xe1, 0xf3, 0x1f, 0xa5, 0xc2, 0x4e,
-	0xa6, 0x57, 0x7b, 0x5c, 0xe5, 0xfb, 0xa5, 0xfc, 0xbe, 0x97, 0xff, 0x4e, 0xf9, 0x5f, 0xfd, 0xf7,
-	0xf7, 0x53, 0xd5, 0xf6, 0x8f, 0xfd, 0xd5, 0x1d, 0x27, 0x71, 0xf8, 0xdf, 0x00, 0x00, 0x00, 0xff,
-	0xff, 0xac, 0x32, 0x52, 0x2e, 0xdd, 0x17, 0x00, 0x00,
+func init() { file_voltha_protos_voip_system_profile_proto_init() }
+func file_voltha_protos_voip_system_profile_proto_init() {
+	if File_voltha_protos_voip_system_profile_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_voip_system_profile_proto_rawDesc), len(file_voltha_protos_voip_system_profile_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   19,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_voip_system_profile_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_voip_system_profile_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_voip_system_profile_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_voip_system_profile_proto = out.File
+	file_voltha_protos_voip_system_profile_proto_goTypes = nil
+	file_voltha_protos_voip_system_profile_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
index a4f90f7..3219dc8 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
@@ -1,200 +1,260 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at:
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/voip_user_profile.proto
 
 package voip_user_profile
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 // A user specific profile for voip service
 type VoipUserProfileRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// for the path in KV store
-	Key                  string           `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
-	VoipUserProfile      *VoipUserProfile `protobuf:"bytes,2,opt,name=voipUserProfile,proto3" json:"voipUserProfile,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	Key             string           `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	VoipUserProfile *VoipUserProfile `protobuf:"bytes,2,opt,name=voipUserProfile,proto3" json:"voipUserProfile,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *VoipUserProfileRequest) Reset()         { *m = VoipUserProfileRequest{} }
-func (m *VoipUserProfileRequest) String() string { return proto.CompactTextString(m) }
-func (*VoipUserProfileRequest) ProtoMessage()    {}
+func (x *VoipUserProfileRequest) Reset() {
+	*x = VoipUserProfileRequest{}
+	mi := &file_voltha_protos_voip_user_profile_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipUserProfileRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipUserProfileRequest) ProtoMessage() {}
+
+func (x *VoipUserProfileRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_user_profile_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipUserProfileRequest.ProtoReflect.Descriptor instead.
 func (*VoipUserProfileRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ecf0ef501fce1bc, []int{0}
+	return file_voltha_protos_voip_user_profile_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *VoipUserProfileRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipUserProfileRequest.Unmarshal(m, b)
-}
-func (m *VoipUserProfileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipUserProfileRequest.Marshal(b, m, deterministic)
-}
-func (m *VoipUserProfileRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipUserProfileRequest.Merge(m, src)
-}
-func (m *VoipUserProfileRequest) XXX_Size() int {
-	return xxx_messageInfo_VoipUserProfileRequest.Size(m)
-}
-func (m *VoipUserProfileRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipUserProfileRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipUserProfileRequest proto.InternalMessageInfo
-
-func (m *VoipUserProfileRequest) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *VoipUserProfileRequest) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
-func (m *VoipUserProfileRequest) GetVoipUserProfile() *VoipUserProfile {
-	if m != nil {
-		return m.VoipUserProfile
+func (x *VoipUserProfileRequest) GetVoipUserProfile() *VoipUserProfile {
+	if x != nil {
+		return x.VoipUserProfile
 	}
 	return nil
 }
 
 type VoipUserProfile struct {
-	VoipSystemProfileKey string   `protobuf:"bytes,1,opt,name=voipSystemProfileKey,proto3" json:"voipSystemProfileKey,omitempty"`
-	Username             string   `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
-	Password             string   `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
-	Domain               string   `protobuf:"bytes,4,opt,name=domain,proto3" json:"domain,omitempty"`
-	Proxy                string   `protobuf:"bytes,5,opt,name=proxy,proto3" json:"proxy,omitempty"`
-	Port                 uint32   `protobuf:"varint,6,opt,name=port,proto3" json:"port,omitempty"`
-	SipDisplayName       string   `protobuf:"bytes,7,opt,name=sipDisplayName,proto3" json:"sipDisplayName,omitempty"`
-	Realm                string   `protobuf:"bytes,8,opt,name=realm,proto3" json:"realm,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	VoipSystemProfileKey string                 `protobuf:"bytes,1,opt,name=voipSystemProfileKey,proto3" json:"voipSystemProfileKey,omitempty"`
+	Username             string                 `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
+	Password             string                 `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
+	Domain               string                 `protobuf:"bytes,4,opt,name=domain,proto3" json:"domain,omitempty"`
+	Proxy                string                 `protobuf:"bytes,5,opt,name=proxy,proto3" json:"proxy,omitempty"`
+	Port                 uint32                 `protobuf:"varint,6,opt,name=port,proto3" json:"port,omitempty"`
+	SipDisplayName       string                 `protobuf:"bytes,7,opt,name=sipDisplayName,proto3" json:"sipDisplayName,omitempty"`
+	Realm                string                 `protobuf:"bytes,8,opt,name=realm,proto3" json:"realm,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
-func (m *VoipUserProfile) Reset()         { *m = VoipUserProfile{} }
-func (m *VoipUserProfile) String() string { return proto.CompactTextString(m) }
-func (*VoipUserProfile) ProtoMessage()    {}
+func (x *VoipUserProfile) Reset() {
+	*x = VoipUserProfile{}
+	mi := &file_voltha_protos_voip_user_profile_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipUserProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipUserProfile) ProtoMessage() {}
+
+func (x *VoipUserProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_user_profile_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipUserProfile.ProtoReflect.Descriptor instead.
 func (*VoipUserProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ecf0ef501fce1bc, []int{1}
+	return file_voltha_protos_voip_user_profile_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *VoipUserProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipUserProfile.Unmarshal(m, b)
-}
-func (m *VoipUserProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipUserProfile.Marshal(b, m, deterministic)
-}
-func (m *VoipUserProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipUserProfile.Merge(m, src)
-}
-func (m *VoipUserProfile) XXX_Size() int {
-	return xxx_messageInfo_VoipUserProfile.Size(m)
-}
-func (m *VoipUserProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipUserProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipUserProfile proto.InternalMessageInfo
-
-func (m *VoipUserProfile) GetVoipSystemProfileKey() string {
-	if m != nil {
-		return m.VoipSystemProfileKey
+func (x *VoipUserProfile) GetVoipSystemProfileKey() string {
+	if x != nil {
+		return x.VoipSystemProfileKey
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetUsername() string {
-	if m != nil {
-		return m.Username
+func (x *VoipUserProfile) GetUsername() string {
+	if x != nil {
+		return x.Username
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetPassword() string {
-	if m != nil {
-		return m.Password
+func (x *VoipUserProfile) GetPassword() string {
+	if x != nil {
+		return x.Password
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetDomain() string {
-	if m != nil {
-		return m.Domain
+func (x *VoipUserProfile) GetDomain() string {
+	if x != nil {
+		return x.Domain
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetProxy() string {
-	if m != nil {
-		return m.Proxy
+func (x *VoipUserProfile) GetProxy() string {
+	if x != nil {
+		return x.Proxy
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetPort() uint32 {
-	if m != nil {
-		return m.Port
+func (x *VoipUserProfile) GetPort() uint32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *VoipUserProfile) GetSipDisplayName() string {
-	if m != nil {
-		return m.SipDisplayName
+func (x *VoipUserProfile) GetSipDisplayName() string {
+	if x != nil {
+		return x.SipDisplayName
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetRealm() string {
-	if m != nil {
-		return m.Realm
+func (x *VoipUserProfile) GetRealm() string {
+	if x != nil {
+		return x.Realm
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*VoipUserProfileRequest)(nil), "voip_user_profile.VoipUserProfileRequest")
-	proto.RegisterType((*VoipUserProfile)(nil), "voip_user_profile.VoipUserProfile")
+var File_voltha_protos_voip_user_profile_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_voip_user_profile_proto_rawDesc = "" +
+	"\n" +
+	"%voltha_protos/voip_user_profile.proto\x12\x11voip_user_profile\x1a\x1cgoogle/api/annotations.proto\"x\n" +
+	"\x16VoipUserProfileRequest\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12L\n" +
+	"\x0fvoipUserProfile\x18\x02 \x01(\v2\".voip_user_profile.VoipUserProfileR\x0fvoipUserProfile\"\xfd\x01\n" +
+	"\x0fVoipUserProfile\x122\n" +
+	"\x14voipSystemProfileKey\x18\x01 \x01(\tR\x14voipSystemProfileKey\x12\x1a\n" +
+	"\busername\x18\x02 \x01(\tR\busername\x12\x1a\n" +
+	"\bpassword\x18\x03 \x01(\tR\bpassword\x12\x16\n" +
+	"\x06domain\x18\x04 \x01(\tR\x06domain\x12\x14\n" +
+	"\x05proxy\x18\x05 \x01(\tR\x05proxy\x12\x12\n" +
+	"\x04port\x18\x06 \x01(\rR\x04port\x12&\n" +
+	"\x0esipDisplayName\x18\a \x01(\tR\x0esipDisplayName\x12\x14\n" +
+	"\x05realm\x18\b \x01(\tR\x05realmBb\n" +
+	"%org.opencord.voltha.voip_user_profileZ9github.com/opencord/voltha-protos/v5/go/voip_user_profileb\x06proto3"
+
+var (
+	file_voltha_protos_voip_user_profile_proto_rawDescOnce sync.Once
+	file_voltha_protos_voip_user_profile_proto_rawDescData []byte
+)
+
+func file_voltha_protos_voip_user_profile_proto_rawDescGZIP() []byte {
+	file_voltha_protos_voip_user_profile_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_voip_user_profile_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_voip_user_profile_proto_rawDesc), len(file_voltha_protos_voip_user_profile_proto_rawDesc)))
+	})
+	return file_voltha_protos_voip_user_profile_proto_rawDescData
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/voip_user_profile.proto", fileDescriptor_0ecf0ef501fce1bc)
+var file_voltha_protos_voip_user_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_voltha_protos_voip_user_profile_proto_goTypes = []any{
+	(*VoipUserProfileRequest)(nil), // 0: voip_user_profile.VoipUserProfileRequest
+	(*VoipUserProfile)(nil),        // 1: voip_user_profile.VoipUserProfile
+}
+var file_voltha_protos_voip_user_profile_proto_depIdxs = []int32{
+	1, // 0: voip_user_profile.VoipUserProfileRequest.voipUserProfile:type_name -> voip_user_profile.VoipUserProfile
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
 }
 
-var fileDescriptor_0ecf0ef501fce1bc = []byte{
-	// 322 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xcb, 0x4b, 0x33, 0x31,
-	0x10, 0x67, 0xbf, 0x3e, 0xbe, 0x76, 0x44, 0xab, 0xa1, 0x94, 0x50, 0x3c, 0x94, 0x42, 0xa5, 0x17,
-	0x77, 0xa1, 0xe2, 0xc1, 0xab, 0x78, 0x53, 0x44, 0x56, 0xf4, 0xe0, 0xa5, 0xa4, 0x6d, 0xdc, 0x06,
-	0x77, 0x77, 0x62, 0x92, 0xd6, 0xee, 0x1f, 0x2f, 0x48, 0x92, 0x6e, 0xc1, 0x5d, 0x6f, 0xf3, 0x7b,
-	0xcd, 0x0c, 0xc9, 0xc0, 0x64, 0x8b, 0xa9, 0x59, 0xb3, 0xb9, 0x54, 0x68, 0x50, 0x47, 0x5b, 0x14,
-	0x72, 0xbe, 0xd1, 0x5c, 0x59, 0xe2, 0x5d, 0xa4, 0x3c, 0x74, 0x02, 0x39, 0xab, 0x09, 0xc3, 0xf3,
-	0x04, 0x31, 0x49, 0x79, 0xc4, 0xa4, 0x88, 0x58, 0x9e, 0xa3, 0x61, 0x46, 0x60, 0xae, 0x7d, 0x60,
-	0xbc, 0x83, 0xc1, 0x2b, 0x0a, 0xf9, 0xa2, 0xb9, 0x7a, 0xf2, 0x81, 0x98, 0x7f, 0x6e, 0xb8, 0x36,
-	0xe4, 0x14, 0x1a, 0x1f, 0xbc, 0xa0, 0xc1, 0x28, 0x98, 0x76, 0x63, 0x5b, 0x92, 0x07, 0xe8, 0x6d,
-	0x7f, 0x7b, 0xe9, 0xbf, 0x51, 0x30, 0x3d, 0x9a, 0x8d, 0xc3, 0xfa, 0x3e, 0xd5, 0xae, 0xd5, 0xe8,
-	0xf8, 0x3b, 0x80, 0x5e, 0xc5, 0x44, 0x66, 0xd0, 0xb7, 0xb6, 0xe7, 0x42, 0x1b, 0x9e, 0xed, 0xc9,
-	0xfb, 0xc3, 0x12, 0x7f, 0x6a, 0x64, 0x08, 0x1d, 0x3b, 0x38, 0x67, 0x99, 0x5f, 0xa7, 0x1b, 0x1f,
-	0xb0, 0xd5, 0x24, 0xd3, 0xfa, 0x0b, 0xd5, 0x8a, 0x36, 0xbc, 0x56, 0x62, 0x32, 0x80, 0xf6, 0x0a,
-	0x33, 0x26, 0x72, 0xda, 0x74, 0xca, 0x1e, 0x91, 0x3e, 0xb4, 0xa4, 0xc2, 0x5d, 0x41, 0x5b, 0x8e,
-	0xf6, 0x80, 0x10, 0x68, 0x4a, 0x54, 0x86, 0xb6, 0x47, 0xc1, 0xf4, 0x38, 0x76, 0x35, 0xb9, 0x80,
-	0x13, 0x2d, 0xe4, 0x9d, 0xd0, 0x32, 0x65, 0xc5, 0xa3, 0x9d, 0xff, 0xdf, 0x45, 0x2a, 0xac, 0xed,
-	0xa8, 0x38, 0x4b, 0x33, 0xda, 0xf1, 0x1d, 0x1d, 0xb8, 0x5d, 0xc0, 0x04, 0x55, 0x12, 0xa2, 0xe4,
-	0xf9, 0x12, 0xd5, 0x2a, 0xf4, 0x1f, 0x5c, 0x7f, 0xc9, 0xb7, 0x9b, 0x44, 0x98, 0xf5, 0x66, 0x11,
-	0x2e, 0x31, 0x8b, 0x4a, 0x77, 0xe4, 0xdd, 0x97, 0xe5, 0x39, 0x5c, 0x47, 0x09, 0xd6, 0x8f, 0x62,
-	0xd1, 0x76, 0xfa, 0xd5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x23, 0x54, 0x5a, 0x3e, 0x02,
-	0x00, 0x00,
+func init() { file_voltha_protos_voip_user_profile_proto_init() }
+func file_voltha_protos_voip_user_profile_proto_init() {
+	if File_voltha_protos_voip_user_profile_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_voip_user_profile_proto_rawDesc), len(file_voltha_protos_voip_user_profile_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_voip_user_profile_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_voip_user_profile_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_voip_user_profile_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_voip_user_profile_proto = out.File
+	file_voltha_protos_voip_user_profile_proto_goTypes = nil
+	file_voltha_protos_voip_user_profile_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/adapter.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/adapter.pb.go
index 04a40f2..e8ea3df 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/adapter.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/adapter.pb.go
@@ -1,68 +1,75 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/adapter.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	any "github.com/golang/protobuf/ptypes/any"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type AdapterConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Custom (vendor-specific) configuration attributes
-	AdditionalConfig     *any.Any `protobuf:"bytes,64,opt,name=additional_config,json=additionalConfig,proto3" json:"additional_config,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AdditionalConfig *anypb.Any `protobuf:"bytes,64,opt,name=additional_config,json=additionalConfig,proto3" json:"additional_config,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
 }
 
-func (m *AdapterConfig) Reset()         { *m = AdapterConfig{} }
-func (m *AdapterConfig) String() string { return proto.CompactTextString(m) }
-func (*AdapterConfig) ProtoMessage()    {}
+func (x *AdapterConfig) Reset() {
+	*x = AdapterConfig{}
+	mi := &file_voltha_protos_adapter_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AdapterConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AdapterConfig) ProtoMessage() {}
+
+func (x *AdapterConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_adapter_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AdapterConfig.ProtoReflect.Descriptor instead.
 func (*AdapterConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e998ce153307274, []int{0}
+	return file_voltha_protos_adapter_proto_rawDescGZIP(), []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 (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)
-}
-func (m *AdapterConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AdapterConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AdapterConfig proto.InternalMessageInfo
-
-func (m *AdapterConfig) GetAdditionalConfig() *any.Any {
-	if m != nil {
-		return m.AdditionalConfig
+func (x *AdapterConfig) GetAdditionalConfig() *anypb.Any {
+	if x != nil {
+		return x.AdditionalConfig
 	}
 	return nil
 }
 
 // Adapter (software plugin)
 type Adapter struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// the adapter ID has to be unique,
 	// it will be generated as Type + CurrentReplica
 	Id      string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
@@ -71,8 +78,8 @@
 	// Adapter configuration
 	Config *AdapterConfig `protobuf:"bytes,16,opt,name=config,proto3" json:"config,omitempty"`
 	// Custom descriptors and custom configuration
-	AdditionalDescription *any.Any `protobuf:"bytes,64,opt,name=additional_description,json=additionalDescription,proto3" json:"additional_description,omitempty"`
-	LogicalDeviceIds      []string `protobuf:"bytes,4,rep,name=logical_device_ids,json=logicalDeviceIds,proto3" json:"logical_device_ids,omitempty"`
+	AdditionalDescription *anypb.Any `protobuf:"bytes,64,opt,name=additional_description,json=additionalDescription,proto3" json:"additional_description,omitempty"`
+	LogicalDeviceIds      []string   `protobuf:"bytes,4,rep,name=logical_device_ids,json=logicalDeviceIds,proto3" json:"logical_device_ids,omitempty"` // Logical devices "owned"
 	// timestamp when the adapter last sent a message to the core
 	LastCommunication int64  `protobuf:"varint,5,opt,name=last_communication,json=lastCommunication,proto3" json:"last_communication,omitempty"`
 	CurrentReplica    int32  `protobuf:"varint,6,opt,name=currentReplica,proto3" json:"currentReplica,omitempty"`
@@ -80,187 +87,236 @@
 	Endpoint          string `protobuf:"bytes,8,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
 	// all replicas of the same adapter will have the same type
 	// it is used to associate a device to an adapter
-	Type                 string   `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Type          string `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Adapter) Reset()         { *m = Adapter{} }
-func (m *Adapter) String() string { return proto.CompactTextString(m) }
-func (*Adapter) ProtoMessage()    {}
+func (x *Adapter) Reset() {
+	*x = Adapter{}
+	mi := &file_voltha_protos_adapter_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Adapter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Adapter) ProtoMessage() {}
+
+func (x *Adapter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_adapter_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Adapter.ProtoReflect.Descriptor instead.
 func (*Adapter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e998ce153307274, []int{1}
+	return file_voltha_protos_adapter_proto_rawDescGZIP(), []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 (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)
-}
-func (m *Adapter) XXX_DiscardUnknown() {
-	xxx_messageInfo_Adapter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Adapter proto.InternalMessageInfo
-
-func (m *Adapter) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *Adapter) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *Adapter) GetVendor() string {
-	if m != nil {
-		return m.Vendor
+func (x *Adapter) GetVendor() string {
+	if x != nil {
+		return x.Vendor
 	}
 	return ""
 }
 
-func (m *Adapter) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *Adapter) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *Adapter) GetConfig() *AdapterConfig {
-	if m != nil {
-		return m.Config
+func (x *Adapter) GetConfig() *AdapterConfig {
+	if x != nil {
+		return x.Config
 	}
 	return nil
 }
 
-func (m *Adapter) GetAdditionalDescription() *any.Any {
-	if m != nil {
-		return m.AdditionalDescription
+func (x *Adapter) GetAdditionalDescription() *anypb.Any {
+	if x != nil {
+		return x.AdditionalDescription
 	}
 	return nil
 }
 
-func (m *Adapter) GetLogicalDeviceIds() []string {
-	if m != nil {
-		return m.LogicalDeviceIds
+func (x *Adapter) GetLogicalDeviceIds() []string {
+	if x != nil {
+		return x.LogicalDeviceIds
 	}
 	return nil
 }
 
-func (m *Adapter) GetLastCommunication() int64 {
-	if m != nil {
-		return m.LastCommunication
+func (x *Adapter) GetLastCommunication() int64 {
+	if x != nil {
+		return x.LastCommunication
 	}
 	return 0
 }
 
-func (m *Adapter) GetCurrentReplica() int32 {
-	if m != nil {
-		return m.CurrentReplica
+func (x *Adapter) GetCurrentReplica() int32 {
+	if x != nil {
+		return x.CurrentReplica
 	}
 	return 0
 }
 
-func (m *Adapter) GetTotalReplicas() int32 {
-	if m != nil {
-		return m.TotalReplicas
+func (x *Adapter) GetTotalReplicas() int32 {
+	if x != nil {
+		return x.TotalReplicas
 	}
 	return 0
 }
 
-func (m *Adapter) GetEndpoint() string {
-	if m != nil {
-		return m.Endpoint
+func (x *Adapter) GetEndpoint() string {
+	if x != nil {
+		return x.Endpoint
 	}
 	return ""
 }
 
-func (m *Adapter) GetType() string {
-	if m != nil {
-		return m.Type
+func (x *Adapter) GetType() string {
+	if x != nil {
+		return x.Type
 	}
 	return ""
 }
 
 type Adapters struct {
-	Items                []*Adapter `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*Adapter             `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Adapters) Reset()         { *m = Adapters{} }
-func (m *Adapters) String() string { return proto.CompactTextString(m) }
-func (*Adapters) ProtoMessage()    {}
+func (x *Adapters) Reset() {
+	*x = Adapters{}
+	mi := &file_voltha_protos_adapter_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Adapters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Adapters) ProtoMessage() {}
+
+func (x *Adapters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_adapter_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Adapters.ProtoReflect.Descriptor instead.
 func (*Adapters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e998ce153307274, []int{2}
+	return file_voltha_protos_adapter_proto_rawDescGZIP(), []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 (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)
-}
-func (m *Adapters) XXX_DiscardUnknown() {
-	xxx_messageInfo_Adapters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Adapters proto.InternalMessageInfo
-
-func (m *Adapters) GetItems() []*Adapter {
-	if m != nil {
-		return m.Items
+func (x *Adapters) GetItems() []*Adapter {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*AdapterConfig)(nil), "adapter.AdapterConfig")
-	proto.RegisterType((*Adapter)(nil), "adapter.Adapter")
-	proto.RegisterType((*Adapters)(nil), "adapter.Adapters")
+var File_voltha_protos_adapter_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_adapter_proto_rawDesc = "" +
+	"\n" +
+	"\x1bvoltha_protos/adapter.proto\x12\aadapter\x1a\x19google/protobuf/any.proto\"R\n" +
+	"\rAdapterConfig\x12A\n" +
+	"\x11additional_config\x18@ \x01(\v2\x14.google.protobuf.AnyR\x10additionalConfig\"\xa3\x03\n" +
+	"\aAdapter\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
+	"\x06vendor\x18\x02 \x01(\tR\x06vendor\x12\x18\n" +
+	"\aversion\x18\x03 \x01(\tR\aversion\x12.\n" +
+	"\x06config\x18\x10 \x01(\v2\x16.adapter.AdapterConfigR\x06config\x12K\n" +
+	"\x16additional_description\x18@ \x01(\v2\x14.google.protobuf.AnyR\x15additionalDescription\x12,\n" +
+	"\x12logical_device_ids\x18\x04 \x03(\tR\x10logicalDeviceIds\x12-\n" +
+	"\x12last_communication\x18\x05 \x01(\x03R\x11lastCommunication\x12&\n" +
+	"\x0ecurrentReplica\x18\x06 \x01(\x05R\x0ecurrentReplica\x12$\n" +
+	"\rtotalReplicas\x18\a \x01(\x05R\rtotalReplicas\x12\x1a\n" +
+	"\bendpoint\x18\b \x01(\tR\bendpoint\x12\x12\n" +
+	"\x04type\x18\t \x01(\tR\x04type\"2\n" +
+	"\bAdapters\x12&\n" +
+	"\x05items\x18\x01 \x03(\v2\x10.adapter.AdapterR\x05itemsB\\\n" +
+	"\x1borg.opencord.voltha.adapterB\rVolthaAdapterZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_adapter_proto_rawDescOnce sync.Once
+	file_voltha_protos_adapter_proto_rawDescData []byte
+)
+
+func file_voltha_protos_adapter_proto_rawDescGZIP() []byte {
+	file_voltha_protos_adapter_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_adapter_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_adapter_proto_rawDesc), len(file_voltha_protos_adapter_proto_rawDesc)))
+	})
+	return file_voltha_protos_adapter_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/adapter.proto", fileDescriptor_7e998ce153307274) }
+var file_voltha_protos_adapter_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_voltha_protos_adapter_proto_goTypes = []any{
+	(*AdapterConfig)(nil), // 0: adapter.AdapterConfig
+	(*Adapter)(nil),       // 1: adapter.Adapter
+	(*Adapters)(nil),      // 2: adapter.Adapters
+	(*anypb.Any)(nil),     // 3: google.protobuf.Any
+}
+var file_voltha_protos_adapter_proto_depIdxs = []int32{
+	3, // 0: adapter.AdapterConfig.additional_config:type_name -> google.protobuf.Any
+	0, // 1: adapter.Adapter.config:type_name -> adapter.AdapterConfig
+	3, // 2: adapter.Adapter.additional_description:type_name -> google.protobuf.Any
+	1, // 3: adapter.Adapters.items:type_name -> adapter.Adapter
+	4, // [4:4] is the sub-list for method output_type
+	4, // [4:4] is the sub-list for method input_type
+	4, // [4:4] is the sub-list for extension type_name
+	4, // [4:4] is the sub-list for extension extendee
+	0, // [0:4] is the sub-list for field type_name
+}
 
-var fileDescriptor_7e998ce153307274 = []byte{
-	// 413 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0x4f, 0x6b, 0xdb, 0x30,
-	0x14, 0xc7, 0x49, 0xf3, 0xef, 0x95, 0x94, 0x54, 0x6c, 0x41, 0x6b, 0x2f, 0x26, 0x8c, 0xe2, 0xc3,
-	0x2a, 0x43, 0xc6, 0xee, 0x4b, 0xdb, 0xcb, 0xd8, 0x4d, 0x87, 0x1d, 0xc6, 0x20, 0x28, 0x92, 0xea,
-	0x0a, 0x1c, 0x3d, 0x23, 0x29, 0x86, 0x7c, 0x9e, 0x7d, 0xd1, 0x51, 0x59, 0x5e, 0xda, 0x1e, 0x7a,
-	0xf3, 0xef, 0xaf, 0xdf, 0x7b, 0x08, 0xae, 0x5b, 0xac, 0xc3, 0x93, 0xd8, 0x36, 0x0e, 0x03, 0xfa,
-	0x52, 0x28, 0xd1, 0x04, 0xed, 0x58, 0x84, 0x64, 0x92, 0xe0, 0xd5, 0xa7, 0x0a, 0xb1, 0xaa, 0x75,
-	0x19, 0xe9, 0xdd, 0xe1, 0xb1, 0x14, 0xf6, 0xd8, 0x79, 0x56, 0x1c, 0xe6, 0x9b, 0xce, 0x75, 0x8f,
-	0xf6, 0xd1, 0x54, 0x64, 0x03, 0x97, 0x42, 0x29, 0x13, 0x0c, 0x5a, 0x51, 0x6f, 0x65, 0x24, 0xe9,
-	0xf7, 0x3c, 0x2b, 0xce, 0xd7, 0x1f, 0x58, 0xd7, 0xc3, 0xfa, 0x1e, 0xb6, 0xb1, 0x47, 0xbe, 0x38,
-	0xd9, 0xbb, 0x8a, 0xd5, 0xdf, 0x21, 0x4c, 0x52, 0x29, 0xb9, 0x80, 0x81, 0x51, 0x34, 0xcb, 0xb3,
-	0x62, 0xc6, 0x07, 0x46, 0x91, 0x25, 0x8c, 0x5b, 0x6d, 0x15, 0x3a, 0x3a, 0x88, 0x5c, 0x42, 0x84,
-	0xc2, 0xa4, 0xd5, 0xce, 0x1b, 0xb4, 0x74, 0x18, 0x85, 0x1e, 0x12, 0x06, 0xe3, 0x34, 0xc5, 0x22,
-	0x4e, 0xb1, 0x64, 0xfd, 0x96, 0xaf, 0x06, 0xe7, 0xc9, 0x45, 0x7e, 0xc2, 0xf2, 0xc5, 0x02, 0x4a,
-	0x7b, 0xe9, 0x4c, 0xf3, 0x8c, 0xde, 0xdd, 0xe2, 0xe3, 0x29, 0xf3, 0x70, 0x8a, 0x90, 0x2f, 0x40,
-	0x6a, 0xac, 0x8c, 0x8c, 0x4d, 0xad, 0x91, 0x7a, 0x6b, 0x94, 0xa7, 0x67, 0xf9, 0xb0, 0x98, 0xf1,
-	0x45, 0x52, 0x1e, 0xa2, 0xf0, 0x43, 0x79, 0x72, 0x0b, 0xa4, 0x16, 0x3e, 0x6c, 0x25, 0xee, 0xf7,
-	0x07, 0x6b, 0xa4, 0x88, 0xbf, 0x1d, 0xe5, 0x59, 0x31, 0xe4, 0x97, 0xcf, 0xca, 0xfd, 0x4b, 0x81,
-	0xdc, 0xc0, 0x85, 0x3c, 0x38, 0xa7, 0x6d, 0xe0, 0xba, 0xa9, 0x8d, 0x14, 0x74, 0x9c, 0x67, 0xc5,
-	0x88, 0xbf, 0x61, 0xc9, 0x67, 0x98, 0x07, 0x0c, 0xa2, 0x4e, 0xd8, 0xd3, 0x49, 0xb4, 0xbd, 0x26,
-	0xc9, 0x15, 0x4c, 0xb5, 0x55, 0x0d, 0x1a, 0x1b, 0xe8, 0x34, 0x9e, 0xf0, 0x3f, 0x26, 0x04, 0xce,
-	0xc2, 0xb1, 0xd1, 0x74, 0x16, 0xf9, 0xf8, 0xbd, 0x5a, 0xc3, 0x34, 0x1d, 0xd0, 0x93, 0x1b, 0x18,
-	0x99, 0xa0, 0xf7, 0x9e, 0x66, 0xf9, 0xb0, 0x38, 0x5f, 0x2f, 0xde, 0x9e, 0x98, 0x77, 0xf2, 0xdd,
-	0x1f, 0xb8, 0x46, 0x57, 0x31, 0x6c, 0xb4, 0x95, 0xe8, 0x14, 0xeb, 0x5e, 0x5f, 0xef, 0xbe, 0x9b,
-	0xff, 0x8a, 0x38, 0x85, 0x7e, 0xb3, 0xca, 0x84, 0xa7, 0xc3, 0x8e, 0x49, 0xdc, 0x97, 0x7d, 0xa4,
-	0xec, 0x22, 0xb7, 0xe9, 0xc1, 0xb6, 0xdf, 0xca, 0x0a, 0x13, 0xb7, 0x1b, 0x47, 0xf2, 0xeb, 0xbf,
-	0x00, 0x00, 0x00, 0xff, 0xff, 0x41, 0x02, 0xed, 0xf9, 0xd5, 0x02, 0x00, 0x00,
+func init() { file_voltha_protos_adapter_proto_init() }
+func file_voltha_protos_adapter_proto_init() {
+	if File_voltha_protos_adapter_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_adapter_proto_rawDesc), len(file_voltha_protos_adapter_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_adapter_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_adapter_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_adapter_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_adapter_proto = out.File
+	file_voltha_protos_adapter_proto_goTypes = nil
+	file_voltha_protos_adapter_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/device.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/device.pb.go
index c6e47c3..5e46934 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/device.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/device.pb.go
@@ -1,27 +1,28 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/device.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	any "github.com/golang/protobuf/ptypes/any"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type PmConfig_PmType int32
 
@@ -32,26 +33,47 @@
 	PmConfig_CONTEXT PmConfig_PmType = 3
 )
 
-var PmConfig_PmType_name = map[int32]string{
-	0: "COUNTER",
-	1: "GAUGE",
-	2: "STATE",
-	3: "CONTEXT",
-}
+// Enum value maps for PmConfig_PmType.
+var (
+	PmConfig_PmType_name = map[int32]string{
+		0: "COUNTER",
+		1: "GAUGE",
+		2: "STATE",
+		3: "CONTEXT",
+	}
+	PmConfig_PmType_value = map[string]int32{
+		"COUNTER": 0,
+		"GAUGE":   1,
+		"STATE":   2,
+		"CONTEXT": 3,
+	}
+)
 
-var PmConfig_PmType_value = map[string]int32{
-	"COUNTER": 0,
-	"GAUGE":   1,
-	"STATE":   2,
-	"CONTEXT": 3,
+func (x PmConfig_PmType) Enum() *PmConfig_PmType {
+	p := new(PmConfig_PmType)
+	*p = x
+	return p
 }
 
 func (x PmConfig_PmType) String() string {
-	return proto.EnumName(PmConfig_PmType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (PmConfig_PmType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[0].Descriptor()
+}
+
+func (PmConfig_PmType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[0]
+}
+
+func (x PmConfig_PmType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PmConfig_PmType.Descriptor instead.
 func (PmConfig_PmType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{2, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{2, 0}
 }
 
 type ImageDownload_ImageDownloadState int32
@@ -66,32 +88,53 @@
 	ImageDownload_DOWNLOAD_CANCELLED   ImageDownload_ImageDownloadState = 6
 )
 
-var ImageDownload_ImageDownloadState_name = map[int32]string{
-	0: "DOWNLOAD_UNKNOWN",
-	1: "DOWNLOAD_SUCCEEDED",
-	2: "DOWNLOAD_REQUESTED",
-	3: "DOWNLOAD_STARTED",
-	4: "DOWNLOAD_FAILED",
-	5: "DOWNLOAD_UNSUPPORTED",
-	6: "DOWNLOAD_CANCELLED",
-}
+// Enum value maps for ImageDownload_ImageDownloadState.
+var (
+	ImageDownload_ImageDownloadState_name = map[int32]string{
+		0: "DOWNLOAD_UNKNOWN",
+		1: "DOWNLOAD_SUCCEEDED",
+		2: "DOWNLOAD_REQUESTED",
+		3: "DOWNLOAD_STARTED",
+		4: "DOWNLOAD_FAILED",
+		5: "DOWNLOAD_UNSUPPORTED",
+		6: "DOWNLOAD_CANCELLED",
+	}
+	ImageDownload_ImageDownloadState_value = map[string]int32{
+		"DOWNLOAD_UNKNOWN":     0,
+		"DOWNLOAD_SUCCEEDED":   1,
+		"DOWNLOAD_REQUESTED":   2,
+		"DOWNLOAD_STARTED":     3,
+		"DOWNLOAD_FAILED":      4,
+		"DOWNLOAD_UNSUPPORTED": 5,
+		"DOWNLOAD_CANCELLED":   6,
+	}
+)
 
-var ImageDownload_ImageDownloadState_value = map[string]int32{
-	"DOWNLOAD_UNKNOWN":     0,
-	"DOWNLOAD_SUCCEEDED":   1,
-	"DOWNLOAD_REQUESTED":   2,
-	"DOWNLOAD_STARTED":     3,
-	"DOWNLOAD_FAILED":      4,
-	"DOWNLOAD_UNSUPPORTED": 5,
-	"DOWNLOAD_CANCELLED":   6,
+func (x ImageDownload_ImageDownloadState) Enum() *ImageDownload_ImageDownloadState {
+	p := new(ImageDownload_ImageDownloadState)
+	*p = x
+	return p
 }
 
 func (x ImageDownload_ImageDownloadState) String() string {
-	return proto.EnumName(ImageDownload_ImageDownloadState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageDownload_ImageDownloadState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[1].Descriptor()
+}
+
+func (ImageDownload_ImageDownloadState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[1]
+}
+
+func (x ImageDownload_ImageDownloadState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageDownload_ImageDownloadState.Descriptor instead.
 func (ImageDownload_ImageDownloadState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type ImageDownload_ImageDownloadFailureReason int32
@@ -105,30 +148,51 @@
 	ImageDownload_CANCELLED          ImageDownload_ImageDownloadFailureReason = 5
 )
 
-var ImageDownload_ImageDownloadFailureReason_name = map[int32]string{
-	0: "NO_ERROR",
-	1: "INVALID_URL",
-	2: "DEVICE_BUSY",
-	3: "INSUFFICIENT_SPACE",
-	4: "UNKNOWN_ERROR",
-	5: "CANCELLED",
-}
+// Enum value maps for ImageDownload_ImageDownloadFailureReason.
+var (
+	ImageDownload_ImageDownloadFailureReason_name = map[int32]string{
+		0: "NO_ERROR",
+		1: "INVALID_URL",
+		2: "DEVICE_BUSY",
+		3: "INSUFFICIENT_SPACE",
+		4: "UNKNOWN_ERROR",
+		5: "CANCELLED",
+	}
+	ImageDownload_ImageDownloadFailureReason_value = map[string]int32{
+		"NO_ERROR":           0,
+		"INVALID_URL":        1,
+		"DEVICE_BUSY":        2,
+		"INSUFFICIENT_SPACE": 3,
+		"UNKNOWN_ERROR":      4,
+		"CANCELLED":          5,
+	}
+)
 
-var ImageDownload_ImageDownloadFailureReason_value = map[string]int32{
-	"NO_ERROR":           0,
-	"INVALID_URL":        1,
-	"DEVICE_BUSY":        2,
-	"INSUFFICIENT_SPACE": 3,
-	"UNKNOWN_ERROR":      4,
-	"CANCELLED":          5,
+func (x ImageDownload_ImageDownloadFailureReason) Enum() *ImageDownload_ImageDownloadFailureReason {
+	p := new(ImageDownload_ImageDownloadFailureReason)
+	*p = x
+	return p
 }
 
 func (x ImageDownload_ImageDownloadFailureReason) String() string {
-	return proto.EnumName(ImageDownload_ImageDownloadFailureReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageDownload_ImageDownloadFailureReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[2].Descriptor()
+}
+
+func (ImageDownload_ImageDownloadFailureReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[2]
+}
+
+func (x ImageDownload_ImageDownloadFailureReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageDownload_ImageDownloadFailureReason.Descriptor instead.
 func (ImageDownload_ImageDownloadFailureReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6, 1}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6, 1}
 }
 
 type ImageDownload_ImageActivateState int32
@@ -142,30 +206,51 @@
 	ImageDownload_IMAGE_REVERTED   ImageDownload_ImageActivateState = 5
 )
 
-var ImageDownload_ImageActivateState_name = map[int32]string{
-	0: "IMAGE_UNKNOWN",
-	1: "IMAGE_INACTIVE",
-	2: "IMAGE_ACTIVATING",
-	3: "IMAGE_ACTIVE",
-	4: "IMAGE_REVERTING",
-	5: "IMAGE_REVERTED",
-}
+// Enum value maps for ImageDownload_ImageActivateState.
+var (
+	ImageDownload_ImageActivateState_name = map[int32]string{
+		0: "IMAGE_UNKNOWN",
+		1: "IMAGE_INACTIVE",
+		2: "IMAGE_ACTIVATING",
+		3: "IMAGE_ACTIVE",
+		4: "IMAGE_REVERTING",
+		5: "IMAGE_REVERTED",
+	}
+	ImageDownload_ImageActivateState_value = map[string]int32{
+		"IMAGE_UNKNOWN":    0,
+		"IMAGE_INACTIVE":   1,
+		"IMAGE_ACTIVATING": 2,
+		"IMAGE_ACTIVE":     3,
+		"IMAGE_REVERTING":  4,
+		"IMAGE_REVERTED":   5,
+	}
+)
 
-var ImageDownload_ImageActivateState_value = map[string]int32{
-	"IMAGE_UNKNOWN":    0,
-	"IMAGE_INACTIVE":   1,
-	"IMAGE_ACTIVATING": 2,
-	"IMAGE_ACTIVE":     3,
-	"IMAGE_REVERTING":  4,
-	"IMAGE_REVERTED":   5,
+func (x ImageDownload_ImageActivateState) Enum() *ImageDownload_ImageActivateState {
+	p := new(ImageDownload_ImageActivateState)
+	*p = x
+	return p
 }
 
 func (x ImageDownload_ImageActivateState) String() string {
-	return proto.EnumName(ImageDownload_ImageActivateState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageDownload_ImageActivateState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[3].Descriptor()
+}
+
+func (ImageDownload_ImageActivateState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[3]
+}
+
+func (x ImageDownload_ImageActivateState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageDownload_ImageActivateState.Descriptor instead.
 func (ImageDownload_ImageActivateState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6, 2}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6, 2}
 }
 
 type ImageState_ImageDownloadState int32
@@ -181,34 +266,55 @@
 	ImageState_DOWNLOAD_CANCELLED   ImageState_ImageDownloadState = 7
 )
 
-var ImageState_ImageDownloadState_name = map[int32]string{
-	0: "DOWNLOAD_UNKNOWN",
-	1: "DOWNLOAD_SUCCEEDED",
-	2: "DOWNLOAD_REQUESTED",
-	3: "DOWNLOAD_STARTED",
-	4: "DOWNLOAD_FAILED",
-	5: "DOWNLOAD_UNSUPPORTED",
-	6: "DOWNLOAD_CANCELLING",
-	7: "DOWNLOAD_CANCELLED",
-}
+// Enum value maps for ImageState_ImageDownloadState.
+var (
+	ImageState_ImageDownloadState_name = map[int32]string{
+		0: "DOWNLOAD_UNKNOWN",
+		1: "DOWNLOAD_SUCCEEDED",
+		2: "DOWNLOAD_REQUESTED",
+		3: "DOWNLOAD_STARTED",
+		4: "DOWNLOAD_FAILED",
+		5: "DOWNLOAD_UNSUPPORTED",
+		6: "DOWNLOAD_CANCELLING",
+		7: "DOWNLOAD_CANCELLED",
+	}
+	ImageState_ImageDownloadState_value = map[string]int32{
+		"DOWNLOAD_UNKNOWN":     0,
+		"DOWNLOAD_SUCCEEDED":   1,
+		"DOWNLOAD_REQUESTED":   2,
+		"DOWNLOAD_STARTED":     3,
+		"DOWNLOAD_FAILED":      4,
+		"DOWNLOAD_UNSUPPORTED": 5,
+		"DOWNLOAD_CANCELLING":  6,
+		"DOWNLOAD_CANCELLED":   7,
+	}
+)
 
-var ImageState_ImageDownloadState_value = map[string]int32{
-	"DOWNLOAD_UNKNOWN":     0,
-	"DOWNLOAD_SUCCEEDED":   1,
-	"DOWNLOAD_REQUESTED":   2,
-	"DOWNLOAD_STARTED":     3,
-	"DOWNLOAD_FAILED":      4,
-	"DOWNLOAD_UNSUPPORTED": 5,
-	"DOWNLOAD_CANCELLING":  6,
-	"DOWNLOAD_CANCELLED":   7,
+func (x ImageState_ImageDownloadState) Enum() *ImageState_ImageDownloadState {
+	p := new(ImageState_ImageDownloadState)
+	*p = x
+	return p
 }
 
 func (x ImageState_ImageDownloadState) String() string {
-	return proto.EnumName(ImageState_ImageDownloadState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageState_ImageDownloadState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[4].Descriptor()
+}
+
+func (ImageState_ImageDownloadState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[4]
+}
+
+func (x ImageState_ImageDownloadState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageState_ImageDownloadState.Descriptor instead.
 func (ImageState_ImageDownloadState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12, 0}
 }
 
 type ImageState_ImageFailureReason int32
@@ -217,8 +323,8 @@
 	ImageState_NO_ERROR               ImageState_ImageFailureReason = 0
 	ImageState_INVALID_URL            ImageState_ImageFailureReason = 1
 	ImageState_DEVICE_BUSY            ImageState_ImageFailureReason = 2
-	ImageState_INSUFFICIENT_SPACE     ImageState_ImageFailureReason = 3
-	ImageState_UNKNOWN_ERROR          ImageState_ImageFailureReason = 4
+	ImageState_INSUFFICIENT_SPACE     ImageState_ImageFailureReason = 3 // VOLTHA ONU ADAPTER has no more space to store images
+	ImageState_UNKNOWN_ERROR          ImageState_ImageFailureReason = 4 // Used also for Checksum failure on ONU
 	ImageState_CANCELLED_ON_REQUEST   ImageState_ImageFailureReason = 5
 	ImageState_CANCELLED_ON_ONU_STATE ImageState_ImageFailureReason = 6
 	ImageState_VENDOR_DEVICE_MISMATCH ImageState_ImageFailureReason = 7
@@ -226,38 +332,59 @@
 	ImageState_IMAGE_REFUSED_BY_ONU   ImageState_ImageFailureReason = 9
 )
 
-var ImageState_ImageFailureReason_name = map[int32]string{
-	0: "NO_ERROR",
-	1: "INVALID_URL",
-	2: "DEVICE_BUSY",
-	3: "INSUFFICIENT_SPACE",
-	4: "UNKNOWN_ERROR",
-	5: "CANCELLED_ON_REQUEST",
-	6: "CANCELLED_ON_ONU_STATE",
-	7: "VENDOR_DEVICE_MISMATCH",
-	8: "OMCI_TRANSFER_ERROR",
-	9: "IMAGE_REFUSED_BY_ONU",
-}
+// Enum value maps for ImageState_ImageFailureReason.
+var (
+	ImageState_ImageFailureReason_name = map[int32]string{
+		0: "NO_ERROR",
+		1: "INVALID_URL",
+		2: "DEVICE_BUSY",
+		3: "INSUFFICIENT_SPACE",
+		4: "UNKNOWN_ERROR",
+		5: "CANCELLED_ON_REQUEST",
+		6: "CANCELLED_ON_ONU_STATE",
+		7: "VENDOR_DEVICE_MISMATCH",
+		8: "OMCI_TRANSFER_ERROR",
+		9: "IMAGE_REFUSED_BY_ONU",
+	}
+	ImageState_ImageFailureReason_value = map[string]int32{
+		"NO_ERROR":               0,
+		"INVALID_URL":            1,
+		"DEVICE_BUSY":            2,
+		"INSUFFICIENT_SPACE":     3,
+		"UNKNOWN_ERROR":          4,
+		"CANCELLED_ON_REQUEST":   5,
+		"CANCELLED_ON_ONU_STATE": 6,
+		"VENDOR_DEVICE_MISMATCH": 7,
+		"OMCI_TRANSFER_ERROR":    8,
+		"IMAGE_REFUSED_BY_ONU":   9,
+	}
+)
 
-var ImageState_ImageFailureReason_value = map[string]int32{
-	"NO_ERROR":               0,
-	"INVALID_URL":            1,
-	"DEVICE_BUSY":            2,
-	"INSUFFICIENT_SPACE":     3,
-	"UNKNOWN_ERROR":          4,
-	"CANCELLED_ON_REQUEST":   5,
-	"CANCELLED_ON_ONU_STATE": 6,
-	"VENDOR_DEVICE_MISMATCH": 7,
-	"OMCI_TRANSFER_ERROR":    8,
-	"IMAGE_REFUSED_BY_ONU":   9,
+func (x ImageState_ImageFailureReason) Enum() *ImageState_ImageFailureReason {
+	p := new(ImageState_ImageFailureReason)
+	*p = x
+	return p
 }
 
 func (x ImageState_ImageFailureReason) String() string {
-	return proto.EnumName(ImageState_ImageFailureReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageState_ImageFailureReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[5].Descriptor()
+}
+
+func (ImageState_ImageFailureReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[5]
+}
+
+func (x ImageState_ImageFailureReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageState_ImageFailureReason.Descriptor instead.
 func (ImageState_ImageFailureReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12, 1}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12, 1}
 }
 
 type ImageState_ImageActivationState int32
@@ -265,7 +392,7 @@
 const (
 	ImageState_IMAGE_UNKNOWN             ImageState_ImageActivationState = 0
 	ImageState_IMAGE_INACTIVE            ImageState_ImageActivationState = 1
-	ImageState_IMAGE_ACTIVATING          ImageState_ImageActivationState = 2
+	ImageState_IMAGE_ACTIVATING          ImageState_ImageActivationState = 2 // Happens during Reboot of the ONU after activate call.
 	ImageState_IMAGE_ACTIVE              ImageState_ImageActivationState = 3
 	ImageState_IMAGE_COMMITTING          ImageState_ImageActivationState = 4
 	ImageState_IMAGE_COMMITTED           ImageState_ImageActivationState = 5
@@ -277,42 +404,63 @@
 	ImageState_IMAGE_DOWNLOADING_ABORTED ImageState_ImageActivationState = 11
 )
 
-var ImageState_ImageActivationState_name = map[int32]string{
-	0:  "IMAGE_UNKNOWN",
-	1:  "IMAGE_INACTIVE",
-	2:  "IMAGE_ACTIVATING",
-	3:  "IMAGE_ACTIVE",
-	4:  "IMAGE_COMMITTING",
-	5:  "IMAGE_COMMITTED",
-	6:  "IMAGE_ACTIVATION_ABORTING",
-	7:  "IMAGE_ACTIVATION_ABORTED",
-	8:  "IMAGE_COMMIT_ABORTING",
-	9:  "IMAGE_COMMIT_ABORTED",
-	10: "IMAGE_DOWNLOADING",
-	11: "IMAGE_DOWNLOADING_ABORTED",
-}
+// Enum value maps for ImageState_ImageActivationState.
+var (
+	ImageState_ImageActivationState_name = map[int32]string{
+		0:  "IMAGE_UNKNOWN",
+		1:  "IMAGE_INACTIVE",
+		2:  "IMAGE_ACTIVATING",
+		3:  "IMAGE_ACTIVE",
+		4:  "IMAGE_COMMITTING",
+		5:  "IMAGE_COMMITTED",
+		6:  "IMAGE_ACTIVATION_ABORTING",
+		7:  "IMAGE_ACTIVATION_ABORTED",
+		8:  "IMAGE_COMMIT_ABORTING",
+		9:  "IMAGE_COMMIT_ABORTED",
+		10: "IMAGE_DOWNLOADING",
+		11: "IMAGE_DOWNLOADING_ABORTED",
+	}
+	ImageState_ImageActivationState_value = map[string]int32{
+		"IMAGE_UNKNOWN":             0,
+		"IMAGE_INACTIVE":            1,
+		"IMAGE_ACTIVATING":          2,
+		"IMAGE_ACTIVE":              3,
+		"IMAGE_COMMITTING":          4,
+		"IMAGE_COMMITTED":           5,
+		"IMAGE_ACTIVATION_ABORTING": 6,
+		"IMAGE_ACTIVATION_ABORTED":  7,
+		"IMAGE_COMMIT_ABORTING":     8,
+		"IMAGE_COMMIT_ABORTED":      9,
+		"IMAGE_DOWNLOADING":         10,
+		"IMAGE_DOWNLOADING_ABORTED": 11,
+	}
+)
 
-var ImageState_ImageActivationState_value = map[string]int32{
-	"IMAGE_UNKNOWN":             0,
-	"IMAGE_INACTIVE":            1,
-	"IMAGE_ACTIVATING":          2,
-	"IMAGE_ACTIVE":              3,
-	"IMAGE_COMMITTING":          4,
-	"IMAGE_COMMITTED":           5,
-	"IMAGE_ACTIVATION_ABORTING": 6,
-	"IMAGE_ACTIVATION_ABORTED":  7,
-	"IMAGE_COMMIT_ABORTING":     8,
-	"IMAGE_COMMIT_ABORTED":      9,
-	"IMAGE_DOWNLOADING":         10,
-	"IMAGE_DOWNLOADING_ABORTED": 11,
+func (x ImageState_ImageActivationState) Enum() *ImageState_ImageActivationState {
+	p := new(ImageState_ImageActivationState)
+	*p = x
+	return p
 }
 
 func (x ImageState_ImageActivationState) String() string {
-	return proto.EnumName(ImageState_ImageActivationState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageState_ImageActivationState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[6].Descriptor()
+}
+
+func (ImageState_ImageActivationState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[6]
+}
+
+func (x ImageState_ImageActivationState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageState_ImageActivationState.Descriptor instead.
 func (ImageState_ImageActivationState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12, 2}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12, 2}
 }
 
 type Port_PortType int32
@@ -327,32 +475,53 @@
 	Port_VENET_ONU    Port_PortType = 6
 )
 
-var Port_PortType_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "ETHERNET_NNI",
-	2: "ETHERNET_UNI",
-	3: "PON_OLT",
-	4: "PON_ONU",
-	5: "VENET_OLT",
-	6: "VENET_ONU",
-}
+// Enum value maps for Port_PortType.
+var (
+	Port_PortType_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "ETHERNET_NNI",
+		2: "ETHERNET_UNI",
+		3: "PON_OLT",
+		4: "PON_ONU",
+		5: "VENET_OLT",
+		6: "VENET_ONU",
+	}
+	Port_PortType_value = map[string]int32{
+		"UNKNOWN":      0,
+		"ETHERNET_NNI": 1,
+		"ETHERNET_UNI": 2,
+		"PON_OLT":      3,
+		"PON_ONU":      4,
+		"VENET_OLT":    5,
+		"VENET_ONU":    6,
+	}
+)
 
-var Port_PortType_value = map[string]int32{
-	"UNKNOWN":      0,
-	"ETHERNET_NNI": 1,
-	"ETHERNET_UNI": 2,
-	"PON_OLT":      3,
-	"PON_ONU":      4,
-	"VENET_OLT":    5,
-	"VENET_ONU":    6,
+func (x Port_PortType) Enum() *Port_PortType {
+	p := new(Port_PortType)
+	*p = x
+	return p
 }
 
 func (x Port_PortType) String() string {
-	return proto.EnumName(Port_PortType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (Port_PortType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[7].Descriptor()
+}
+
+func (Port_PortType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[7]
+}
+
+func (x Port_PortType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Port_PortType.Descriptor instead.
 func (Port_PortType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{13, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{13, 0}
 }
 
 type SelfTestResponse_SelfTestResult int32
@@ -364,26 +533,47 @@
 	SelfTestResponse_UNKNOWN_ERROR SelfTestResponse_SelfTestResult = 3
 )
 
-var SelfTestResponse_SelfTestResult_name = map[int32]string{
-	0: "SUCCESS",
-	1: "FAILURE",
-	2: "NOT_SUPPORTED",
-	3: "UNKNOWN_ERROR",
-}
+// Enum value maps for SelfTestResponse_SelfTestResult.
+var (
+	SelfTestResponse_SelfTestResult_name = map[int32]string{
+		0: "SUCCESS",
+		1: "FAILURE",
+		2: "NOT_SUPPORTED",
+		3: "UNKNOWN_ERROR",
+	}
+	SelfTestResponse_SelfTestResult_value = map[string]int32{
+		"SUCCESS":       0,
+		"FAILURE":       1,
+		"NOT_SUPPORTED": 2,
+		"UNKNOWN_ERROR": 3,
+	}
+)
 
-var SelfTestResponse_SelfTestResult_value = map[string]int32{
-	"SUCCESS":       0,
-	"FAILURE":       1,
-	"NOT_SUPPORTED": 2,
-	"UNKNOWN_ERROR": 3,
+func (x SelfTestResponse_SelfTestResult) Enum() *SelfTestResponse_SelfTestResult {
+	p := new(SelfTestResponse_SelfTestResult)
+	*p = x
+	return p
 }
 
 func (x SelfTestResponse_SelfTestResult) String() string {
-	return proto.EnumName(SelfTestResponse_SelfTestResult_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SelfTestResponse_SelfTestResult) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[8].Descriptor()
+}
+
+func (SelfTestResponse_SelfTestResult) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[8]
+}
+
+func (x SelfTestResponse_SelfTestResult) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SelfTestResponse_SelfTestResult.Descriptor instead.
 func (SelfTestResponse_SelfTestResult) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{19, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{19, 0}
 }
 
 type SimulateAlarmRequest_OperationType int32
@@ -393,26 +583,48 @@
 	SimulateAlarmRequest_CLEAR SimulateAlarmRequest_OperationType = 1
 )
 
-var SimulateAlarmRequest_OperationType_name = map[int32]string{
-	0: "RAISE",
-	1: "CLEAR",
-}
+// Enum value maps for SimulateAlarmRequest_OperationType.
+var (
+	SimulateAlarmRequest_OperationType_name = map[int32]string{
+		0: "RAISE",
+		1: "CLEAR",
+	}
+	SimulateAlarmRequest_OperationType_value = map[string]int32{
+		"RAISE": 0,
+		"CLEAR": 1,
+	}
+)
 
-var SimulateAlarmRequest_OperationType_value = map[string]int32{
-	"RAISE": 0,
-	"CLEAR": 1,
+func (x SimulateAlarmRequest_OperationType) Enum() *SimulateAlarmRequest_OperationType {
+	p := new(SimulateAlarmRequest_OperationType)
+	*p = x
+	return p
 }
 
 func (x SimulateAlarmRequest_OperationType) String() string {
-	return proto.EnumName(SimulateAlarmRequest_OperationType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SimulateAlarmRequest_OperationType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[9].Descriptor()
+}
+
+func (SimulateAlarmRequest_OperationType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[9]
+}
+
+func (x SimulateAlarmRequest_OperationType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SimulateAlarmRequest_OperationType.Descriptor instead.
 func (SimulateAlarmRequest_OperationType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{21, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{21, 0}
 }
 
 // A Device Type
 type DeviceType struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Unique name for the device type
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Unique vendor id for the device type applicable to ONU
@@ -427,351 +639,376 @@
 	AcceptsAddRemoveFlowUpdates     bool `protobuf:"varint,4,opt,name=accepts_add_remove_flow_updates,json=acceptsAddRemoveFlowUpdates,proto3" json:"accepts_add_remove_flow_updates,omitempty"`
 	AcceptsDirectLogicalFlowsUpdate bool `protobuf:"varint,7,opt,name=accepts_direct_logical_flows_update,json=acceptsDirectLogicalFlowsUpdate,proto3" json:"accepts_direct_logical_flows_update,omitempty"`
 	// Type of adapter that can handle this device type
-	AdapterType          string   `protobuf:"bytes,8,opt,name=adapter_type,json=adapterType,proto3" json:"adapter_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AdapterType   string `protobuf:"bytes,8,opt,name=adapter_type,json=adapterType,proto3" json:"adapter_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceType) Reset()         { *m = DeviceType{} }
-func (m *DeviceType) String() string { return proto.CompactTextString(m) }
-func (*DeviceType) ProtoMessage()    {}
+func (x *DeviceType) Reset() {
+	*x = DeviceType{}
+	mi := &file_voltha_protos_device_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceType) ProtoMessage() {}
+
+func (x *DeviceType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceType.ProtoReflect.Descriptor instead.
 func (*DeviceType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *DeviceType) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceType proto.InternalMessageInfo
-
-func (m *DeviceType) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *DeviceType) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *DeviceType) GetVendorId() string {
-	if m != nil {
-		return m.VendorId
+func (x *DeviceType) GetVendorId() string {
+	if x != nil {
+		return x.VendorId
 	}
 	return ""
 }
 
-func (m *DeviceType) GetVendorIds() []string {
-	if m != nil {
-		return m.VendorIds
+func (x *DeviceType) GetVendorIds() []string {
+	if x != nil {
+		return x.VendorIds
 	}
 	return nil
 }
 
-func (m *DeviceType) GetAdapter() string {
-	if m != nil {
-		return m.Adapter
+func (x *DeviceType) GetAdapter() string {
+	if x != nil {
+		return x.Adapter
 	}
 	return ""
 }
 
-func (m *DeviceType) GetAcceptsBulkFlowUpdate() bool {
-	if m != nil {
-		return m.AcceptsBulkFlowUpdate
+func (x *DeviceType) GetAcceptsBulkFlowUpdate() bool {
+	if x != nil {
+		return x.AcceptsBulkFlowUpdate
 	}
 	return false
 }
 
-func (m *DeviceType) GetAcceptsAddRemoveFlowUpdates() bool {
-	if m != nil {
-		return m.AcceptsAddRemoveFlowUpdates
+func (x *DeviceType) GetAcceptsAddRemoveFlowUpdates() bool {
+	if x != nil {
+		return x.AcceptsAddRemoveFlowUpdates
 	}
 	return false
 }
 
-func (m *DeviceType) GetAcceptsDirectLogicalFlowsUpdate() bool {
-	if m != nil {
-		return m.AcceptsDirectLogicalFlowsUpdate
+func (x *DeviceType) GetAcceptsDirectLogicalFlowsUpdate() bool {
+	if x != nil {
+		return x.AcceptsDirectLogicalFlowsUpdate
 	}
 	return false
 }
 
-func (m *DeviceType) GetAdapterType() string {
-	if m != nil {
-		return m.AdapterType
+func (x *DeviceType) GetAdapterType() string {
+	if x != nil {
+		return x.AdapterType
 	}
 	return ""
 }
 
 // A plurality of device types
 type DeviceTypes struct {
-	Items                []*DeviceType `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*DeviceType          `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceTypes) Reset()         { *m = DeviceTypes{} }
-func (m *DeviceTypes) String() string { return proto.CompactTextString(m) }
-func (*DeviceTypes) ProtoMessage()    {}
+func (x *DeviceTypes) Reset() {
+	*x = DeviceTypes{}
+	mi := &file_voltha_protos_device_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceTypes) ProtoMessage() {}
+
+func (x *DeviceTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceTypes.ProtoReflect.Descriptor instead.
 func (*DeviceTypes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{1}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *DeviceTypes) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceTypes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceTypes proto.InternalMessageInfo
-
-func (m *DeviceTypes) GetItems() []*DeviceType {
-	if m != nil {
-		return m.Items
+func (x *DeviceTypes) GetItems() []*DeviceType {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type PmConfig struct {
-	Name                 string          `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Type                 PmConfig_PmType `protobuf:"varint,2,opt,name=type,proto3,enum=device.PmConfig_PmType" json:"type,omitempty"`
-	Enabled              bool            `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
-	SampleFreq           uint32          `protobuf:"varint,4,opt,name=sample_freq,json=sampleFreq,proto3" json:"sample_freq,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Type          PmConfig_PmType        `protobuf:"varint,2,opt,name=type,proto3,enum=device.PmConfig_PmType" json:"type,omitempty"`
+	Enabled       bool                   `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`                         // Whether or not this metric makes it to Kafka
+	SampleFreq    uint32                 `protobuf:"varint,4,opt,name=sample_freq,json=sampleFreq,proto3" json:"sample_freq,omitempty"` // Sample rate in 10ths of a second
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmConfig) Reset()         { *m = PmConfig{} }
-func (m *PmConfig) String() string { return proto.CompactTextString(m) }
-func (*PmConfig) ProtoMessage()    {}
+func (x *PmConfig) Reset() {
+	*x = PmConfig{}
+	mi := &file_voltha_protos_device_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmConfig) ProtoMessage() {}
+
+func (x *PmConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmConfig.ProtoReflect.Descriptor instead.
 func (*PmConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{2}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *PmConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmConfig proto.InternalMessageInfo
-
-func (m *PmConfig) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *PmConfig) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *PmConfig) GetType() PmConfig_PmType {
-	if m != nil {
-		return m.Type
+func (x *PmConfig) GetType() PmConfig_PmType {
+	if x != nil {
+		return x.Type
 	}
 	return PmConfig_COUNTER
 }
 
-func (m *PmConfig) GetEnabled() bool {
-	if m != nil {
-		return m.Enabled
+func (x *PmConfig) GetEnabled() bool {
+	if x != nil {
+		return x.Enabled
 	}
 	return false
 }
 
-func (m *PmConfig) GetSampleFreq() uint32 {
-	if m != nil {
-		return m.SampleFreq
+func (x *PmConfig) GetSampleFreq() uint32 {
+	if x != nil {
+		return x.SampleFreq
 	}
 	return 0
 }
 
 type PmGroupConfig struct {
-	GroupName            string      `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
-	GroupFreq            uint32      `protobuf:"varint,2,opt,name=group_freq,json=groupFreq,proto3" json:"group_freq,omitempty"`
-	Enabled              bool        `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
-	Metrics              []*PmConfig `protobuf:"bytes,4,rep,name=metrics,proto3" json:"metrics,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupName     string                 `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
+	GroupFreq     uint32                 `protobuf:"varint,2,opt,name=group_freq,json=groupFreq,proto3" json:"group_freq,omitempty"` // Frequency applicable to the grop
+	Enabled       bool                   `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`                      // Enable/disable group level only
+	Metrics       []*PmConfig            `protobuf:"bytes,4,rep,name=metrics,proto3" json:"metrics,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmGroupConfig) Reset()         { *m = PmGroupConfig{} }
-func (m *PmGroupConfig) String() string { return proto.CompactTextString(m) }
-func (*PmGroupConfig) ProtoMessage()    {}
+func (x *PmGroupConfig) Reset() {
+	*x = PmGroupConfig{}
+	mi := &file_voltha_protos_device_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmGroupConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmGroupConfig) ProtoMessage() {}
+
+func (x *PmGroupConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmGroupConfig.ProtoReflect.Descriptor instead.
 func (*PmGroupConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{3}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *PmGroupConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmGroupConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmGroupConfig proto.InternalMessageInfo
-
-func (m *PmGroupConfig) GetGroupName() string {
-	if m != nil {
-		return m.GroupName
+func (x *PmGroupConfig) GetGroupName() string {
+	if x != nil {
+		return x.GroupName
 	}
 	return ""
 }
 
-func (m *PmGroupConfig) GetGroupFreq() uint32 {
-	if m != nil {
-		return m.GroupFreq
+func (x *PmGroupConfig) GetGroupFreq() uint32 {
+	if x != nil {
+		return x.GroupFreq
 	}
 	return 0
 }
 
-func (m *PmGroupConfig) GetEnabled() bool {
-	if m != nil {
-		return m.Enabled
+func (x *PmGroupConfig) GetEnabled() bool {
+	if x != nil {
+		return x.Enabled
 	}
 	return false
 }
 
-func (m *PmGroupConfig) GetMetrics() []*PmConfig {
-	if m != nil {
-		return m.Metrics
+func (x *PmGroupConfig) GetMetrics() []*PmConfig {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
 type PmConfigs struct {
-	Id          string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	DefaultFreq uint32 `protobuf:"varint,2,opt,name=default_freq,json=defaultFreq,proto3" json:"default_freq,omitempty"`
+	state       protoimpl.MessageState `protogen:"open.v1"`
+	Id          string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                                       // To work around a chameleon POST bug
+	DefaultFreq uint32                 `protobuf:"varint,2,opt,name=default_freq,json=defaultFreq,proto3" json:"default_freq,omitempty"` // Default sample rate
 	// Forces group names and group semantics
 	Grouped bool `protobuf:"varint,3,opt,name=grouped,proto3" json:"grouped,omitempty"`
 	// Allows Pm to set an individual sample frequency
-	FreqOverride         bool             `protobuf:"varint,4,opt,name=freq_override,json=freqOverride,proto3" json:"freq_override,omitempty"`
-	Groups               []*PmGroupConfig `protobuf:"bytes,5,rep,name=groups,proto3" json:"groups,omitempty"`
-	Metrics              []*PmConfig      `protobuf:"bytes,6,rep,name=metrics,proto3" json:"metrics,omitempty"`
-	MaxSkew              uint32           `protobuf:"varint,7,opt,name=max_skew,json=maxSkew,proto3" json:"max_skew,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	FreqOverride  bool             `protobuf:"varint,4,opt,name=freq_override,json=freqOverride,proto3" json:"freq_override,omitempty"`
+	Groups        []*PmGroupConfig `protobuf:"bytes,5,rep,name=groups,proto3" json:"groups,omitempty"`                   // The groups if grouped is true
+	Metrics       []*PmConfig      `protobuf:"bytes,6,rep,name=metrics,proto3" json:"metrics,omitempty"`                 // The metrics themselves if grouped is false.
+	MaxSkew       uint32           `protobuf:"varint,7,opt,name=max_skew,json=maxSkew,proto3" json:"max_skew,omitempty"` //Default value is set to 5 seconds
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmConfigs) Reset()         { *m = PmConfigs{} }
-func (m *PmConfigs) String() string { return proto.CompactTextString(m) }
-func (*PmConfigs) ProtoMessage()    {}
+func (x *PmConfigs) Reset() {
+	*x = PmConfigs{}
+	mi := &file_voltha_protos_device_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmConfigs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmConfigs) ProtoMessage() {}
+
+func (x *PmConfigs) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmConfigs.ProtoReflect.Descriptor instead.
 func (*PmConfigs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{4}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *PmConfigs) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmConfigs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmConfigs proto.InternalMessageInfo
-
-func (m *PmConfigs) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *PmConfigs) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *PmConfigs) GetDefaultFreq() uint32 {
-	if m != nil {
-		return m.DefaultFreq
+func (x *PmConfigs) GetDefaultFreq() uint32 {
+	if x != nil {
+		return x.DefaultFreq
 	}
 	return 0
 }
 
-func (m *PmConfigs) GetGrouped() bool {
-	if m != nil {
-		return m.Grouped
+func (x *PmConfigs) GetGrouped() bool {
+	if x != nil {
+		return x.Grouped
 	}
 	return false
 }
 
-func (m *PmConfigs) GetFreqOverride() bool {
-	if m != nil {
-		return m.FreqOverride
+func (x *PmConfigs) GetFreqOverride() bool {
+	if x != nil {
+		return x.FreqOverride
 	}
 	return false
 }
 
-func (m *PmConfigs) GetGroups() []*PmGroupConfig {
-	if m != nil {
-		return m.Groups
+func (x *PmConfigs) GetGroups() []*PmGroupConfig {
+	if x != nil {
+		return x.Groups
 	}
 	return nil
 }
 
-func (m *PmConfigs) GetMetrics() []*PmConfig {
-	if m != nil {
-		return m.Metrics
+func (x *PmConfigs) GetMetrics() []*PmConfig {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-func (m *PmConfigs) GetMaxSkew() uint32 {
-	if m != nil {
-		return m.MaxSkew
+func (x *PmConfigs) GetMaxSkew() uint32 {
+	if x != nil {
+		return x.MaxSkew
 	}
 	return 0
 }
 
-//Object representing an image
+// Object representing an image
 type Image struct {
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // software patch name
 	// Version, this is the sole identifier of the image. it's the vendor specified OMCI version
 	// must be known at the time of initiating a download, activate, commit image on an onu.
 	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
@@ -779,24 +1016,24 @@
 	// Deprecated in voltha 2.8, will be removed
 	Hash uint32 `protobuf:"varint,3,opt,name=hash,proto3" json:"hash,omitempty"`
 	// Deprecated in voltha 2.8, will be removed
-	InstallDatetime string `protobuf:"bytes,4,opt,name=install_datetime,json=installDatetime,proto3" json:"install_datetime,omitempty"`
+	InstallDatetime string `protobuf:"bytes,4,opt,name=install_datetime,json=installDatetime,proto3" json:"install_datetime,omitempty"` // combined date and time expressed in UTC.
 	// The active software image is one that is currently loaded and executing
 	// in the ONU or circuit pack. Under normal operation, one software image
 	// is always active while the other is inactive. Under no circumstances are
 	// both software images allowed to be active at the same time
 	// Deprecated in voltha 2.8, will be removed
-	IsActive bool `protobuf:"varint,5,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"`
+	IsActive bool `protobuf:"varint,5,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` // True if the image is active
 	// The committed software image is loaded and executed upon reboot of the
 	// ONU and/or circuit pack. During normal operation, one software image is
 	// always committed, while the other is uncommitted.
 	// Deprecated in voltha 2.8, will be removed
-	IsCommitted bool `protobuf:"varint,6,opt,name=is_committed,json=isCommitted,proto3" json:"is_committed,omitempty"`
+	IsCommitted bool `protobuf:"varint,6,opt,name=is_committed,json=isCommitted,proto3" json:"is_committed,omitempty"` // True if the image is committed
 	// A software image is valid if it has been verified to be an executable
 	// code image. The verification mechanism is not subject to standardization;
 	// however, it should include at least a data integrity (e.g., CRC) check of
 	// the entire code image.
 	// Deprecated in voltha 2.8, will be removed
-	IsValid bool `protobuf:"varint,7,opt,name=is_valid,json=isValid,proto3" json:"is_valid,omitempty"`
+	IsValid bool `protobuf:"varint,7,opt,name=is_valid,json=isValid,proto3" json:"is_valid,omitempty"` // True if the image is valid
 	// URL where the image is available
 	// URL MUST be fully qualified,
 	// including filename, username and password
@@ -809,103 +1046,107 @@
 	// Default to value 0 if not specified.
 	// If different then 0 it's used to verify the image retrieved from outside before sending it to the ONU.
 	// Calculation of this needs to be done according to ITU-T I.363.5 as per OMCI spec (section A.2.27)
-	Crc32                uint32   `protobuf:"varint,10,opt,name=crc32,proto3" json:"crc32,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Crc32         uint32 `protobuf:"varint,10,opt,name=crc32,proto3" json:"crc32,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Image) Reset()         { *m = Image{} }
-func (m *Image) String() string { return proto.CompactTextString(m) }
-func (*Image) ProtoMessage()    {}
+func (x *Image) Reset() {
+	*x = Image{}
+	mi := &file_voltha_protos_device_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Image) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Image) ProtoMessage() {}
+
+func (x *Image) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Image.ProtoReflect.Descriptor instead.
 func (*Image) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{5}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *Image) XXX_DiscardUnknown() {
-	xxx_messageInfo_Image.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Image proto.InternalMessageInfo
-
-func (m *Image) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *Image) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *Image) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *Image) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *Image) GetHash() uint32 {
-	if m != nil {
-		return m.Hash
+func (x *Image) GetHash() uint32 {
+	if x != nil {
+		return x.Hash
 	}
 	return 0
 }
 
-func (m *Image) GetInstallDatetime() string {
-	if m != nil {
-		return m.InstallDatetime
+func (x *Image) GetInstallDatetime() string {
+	if x != nil {
+		return x.InstallDatetime
 	}
 	return ""
 }
 
-func (m *Image) GetIsActive() bool {
-	if m != nil {
-		return m.IsActive
+func (x *Image) GetIsActive() bool {
+	if x != nil {
+		return x.IsActive
 	}
 	return false
 }
 
-func (m *Image) GetIsCommitted() bool {
-	if m != nil {
-		return m.IsCommitted
+func (x *Image) GetIsCommitted() bool {
+	if x != nil {
+		return x.IsCommitted
 	}
 	return false
 }
 
-func (m *Image) GetIsValid() bool {
-	if m != nil {
-		return m.IsValid
+func (x *Image) GetIsValid() bool {
+	if x != nil {
+		return x.IsValid
 	}
 	return false
 }
 
-func (m *Image) GetUrl() string {
-	if m != nil {
-		return m.Url
+func (x *Image) GetUrl() string {
+	if x != nil {
+		return x.Url
 	}
 	return ""
 }
 
-func (m *Image) GetVendor() string {
-	if m != nil {
-		return m.Vendor
+func (x *Image) GetVendor() string {
+	if x != nil {
+		return x.Vendor
 	}
 	return ""
 }
 
-func (m *Image) GetCrc32() uint32 {
-	if m != nil {
-		return m.Crc32
+func (x *Image) GetCrc32() uint32 {
+	if x != nil {
+		return x.Crc32
 	}
 	return 0
 }
@@ -913,8 +1154,9 @@
 // Older version of the API please see DeviceImageDownloadRequest
 // Deprecated in voltha 2.8, will be removed
 //
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in voltha_protos/device.proto.
 type ImageDownload struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Device Identifier
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Image unique identifier
@@ -941,205 +1183,219 @@
 	// Image activation state
 	ImageState ImageDownload_ImageActivateState `protobuf:"varint,12,opt,name=image_state,json=imageState,proto3,enum=device.ImageDownload_ImageActivateState" json:"image_state,omitempty"`
 	// Image file size
-	FileSize             uint32   `protobuf:"varint,13,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	FileSize      uint32 `protobuf:"varint,13,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageDownload) Reset()         { *m = ImageDownload{} }
-func (m *ImageDownload) String() string { return proto.CompactTextString(m) }
-func (*ImageDownload) ProtoMessage()    {}
+func (x *ImageDownload) Reset() {
+	*x = ImageDownload{}
+	mi := &file_voltha_protos_device_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageDownload) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageDownload) ProtoMessage() {}
+
+func (x *ImageDownload) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageDownload.ProtoReflect.Descriptor instead.
 func (*ImageDownload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6}
 }
 
-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 (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)
-}
-func (m *ImageDownload) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageDownload.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageDownload proto.InternalMessageInfo
-
-func (m *ImageDownload) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *ImageDownload) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ImageDownload) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetUrl() string {
-	if m != nil {
-		return m.Url
+func (x *ImageDownload) GetUrl() string {
+	if x != nil {
+		return x.Url
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetCrc() uint32 {
-	if m != nil {
-		return m.Crc
+func (x *ImageDownload) GetCrc() uint32 {
+	if x != nil {
+		return x.Crc
 	}
 	return 0
 }
 
-func (m *ImageDownload) GetDownloadState() ImageDownload_ImageDownloadState {
-	if m != nil {
-		return m.DownloadState
+func (x *ImageDownload) GetDownloadState() ImageDownload_ImageDownloadState {
+	if x != nil {
+		return x.DownloadState
 	}
 	return ImageDownload_DOWNLOAD_UNKNOWN
 }
 
-func (m *ImageDownload) GetImageVersion() string {
-	if m != nil {
-		return m.ImageVersion
+func (x *ImageDownload) GetImageVersion() string {
+	if x != nil {
+		return x.ImageVersion
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetDownloadedBytes() uint32 {
-	if m != nil {
-		return m.DownloadedBytes
+func (x *ImageDownload) GetDownloadedBytes() uint32 {
+	if x != nil {
+		return x.DownloadedBytes
 	}
 	return 0
 }
 
-func (m *ImageDownload) GetReason() ImageDownload_ImageDownloadFailureReason {
-	if m != nil {
-		return m.Reason
+func (x *ImageDownload) GetReason() ImageDownload_ImageDownloadFailureReason {
+	if x != nil {
+		return x.Reason
 	}
 	return ImageDownload_NO_ERROR
 }
 
-func (m *ImageDownload) GetAdditionalInfo() string {
-	if m != nil {
-		return m.AdditionalInfo
+func (x *ImageDownload) GetAdditionalInfo() string {
+	if x != nil {
+		return x.AdditionalInfo
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetSaveConfig() bool {
-	if m != nil {
-		return m.SaveConfig
+func (x *ImageDownload) GetSaveConfig() bool {
+	if x != nil {
+		return x.SaveConfig
 	}
 	return false
 }
 
-func (m *ImageDownload) GetLocalDir() string {
-	if m != nil {
-		return m.LocalDir
+func (x *ImageDownload) GetLocalDir() string {
+	if x != nil {
+		return x.LocalDir
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetImageState() ImageDownload_ImageActivateState {
-	if m != nil {
-		return m.ImageState
+func (x *ImageDownload) GetImageState() ImageDownload_ImageActivateState {
+	if x != nil {
+		return x.ImageState
 	}
 	return ImageDownload_IMAGE_UNKNOWN
 }
 
-func (m *ImageDownload) GetFileSize() uint32 {
-	if m != nil {
-		return m.FileSize
+func (x *ImageDownload) GetFileSize() uint32 {
+	if x != nil {
+		return x.FileSize
 	}
 	return 0
 }
 
 // Deprecated in voltha 2.8, will be removed
 //
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in voltha_protos/device.proto.
 type ImageDownloads struct {
-	Items                []*ImageDownload `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*ImageDownload       `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageDownloads) Reset()         { *m = ImageDownloads{} }
-func (m *ImageDownloads) String() string { return proto.CompactTextString(m) }
-func (*ImageDownloads) ProtoMessage()    {}
+func (x *ImageDownloads) Reset() {
+	*x = ImageDownloads{}
+	mi := &file_voltha_protos_device_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageDownloads) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageDownloads) ProtoMessage() {}
+
+func (x *ImageDownloads) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageDownloads.ProtoReflect.Descriptor instead.
 func (*ImageDownloads) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{7}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{7}
 }
 
-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 (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)
-}
-func (m *ImageDownloads) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageDownloads.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageDownloads proto.InternalMessageInfo
-
-func (m *ImageDownloads) GetItems() []*ImageDownload {
-	if m != nil {
-		return m.Items
+func (x *ImageDownloads) GetItems() []*ImageDownload {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type Images struct {
-	Image                []*Image `protobuf:"bytes,1,rep,name=image,proto3" json:"image,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Image         []*Image               `protobuf:"bytes,1,rep,name=image,proto3" json:"image,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Images) Reset()         { *m = Images{} }
-func (m *Images) String() string { return proto.CompactTextString(m) }
-func (*Images) ProtoMessage()    {}
+func (x *Images) Reset() {
+	*x = Images{}
+	mi := &file_voltha_protos_device_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Images) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Images) ProtoMessage() {}
+
+func (x *Images) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Images.ProtoReflect.Descriptor instead.
 func (*Images) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{8}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{8}
 }
 
-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 (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)
-}
-func (m *Images) XXX_DiscardUnknown() {
-	xxx_messageInfo_Images.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Images proto.InternalMessageInfo
-
-func (m *Images) GetImage() []*Image {
-	if m != nil {
-		return m.Image
+func (x *Images) GetImage() []*Image {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
@@ -1147,7 +1403,8 @@
 // OnuImage represents the OMCI information as per OMCI spec
 // the information will be populates exactly as extracted from the device.
 type OnuImage struct {
-	//image version
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// image version
 	Version     string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
 	IsCommited  bool   `protobuf:"varint,2,opt,name=isCommited,proto3" json:"isCommited,omitempty"`
 	IsActive    bool   `protobuf:"varint,3,opt,name=isActive,proto3" json:"isActive,omitempty"`
@@ -1155,166 +1412,181 @@
 	ProductCode string `protobuf:"bytes,5,opt,name=productCode,proto3" json:"productCode,omitempty"`
 	// Hash is computed by the ONU and is optional as per OMCI spec (paragraph 9.1.4)
 	// No assumption should be made on the existence of this attribute at any time.
-	Hash                 string   `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Hash          string `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuImage) Reset()         { *m = OnuImage{} }
-func (m *OnuImage) String() string { return proto.CompactTextString(m) }
-func (*OnuImage) ProtoMessage()    {}
+func (x *OnuImage) Reset() {
+	*x = OnuImage{}
+	mi := &file_voltha_protos_device_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuImage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuImage) ProtoMessage() {}
+
+func (x *OnuImage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuImage.ProtoReflect.Descriptor instead.
 func (*OnuImage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{9}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *OnuImage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuImage.Unmarshal(m, b)
-}
-func (m *OnuImage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuImage.Marshal(b, m, deterministic)
-}
-func (m *OnuImage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuImage.Merge(m, src)
-}
-func (m *OnuImage) XXX_Size() int {
-	return xxx_messageInfo_OnuImage.Size(m)
-}
-func (m *OnuImage) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuImage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuImage proto.InternalMessageInfo
-
-func (m *OnuImage) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *OnuImage) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *OnuImage) GetIsCommited() bool {
-	if m != nil {
-		return m.IsCommited
+func (x *OnuImage) GetIsCommited() bool {
+	if x != nil {
+		return x.IsCommited
 	}
 	return false
 }
 
-func (m *OnuImage) GetIsActive() bool {
-	if m != nil {
-		return m.IsActive
+func (x *OnuImage) GetIsActive() bool {
+	if x != nil {
+		return x.IsActive
 	}
 	return false
 }
 
-func (m *OnuImage) GetIsValid() bool {
-	if m != nil {
-		return m.IsValid
+func (x *OnuImage) GetIsValid() bool {
+	if x != nil {
+		return x.IsValid
 	}
 	return false
 }
 
-func (m *OnuImage) GetProductCode() string {
-	if m != nil {
-		return m.ProductCode
+func (x *OnuImage) GetProductCode() string {
+	if x != nil {
+		return x.ProductCode
 	}
 	return ""
 }
 
-func (m *OnuImage) GetHash() string {
-	if m != nil {
-		return m.Hash
+func (x *OnuImage) GetHash() string {
+	if x != nil {
+		return x.Hash
 	}
 	return ""
 }
 
 type OnuImages struct {
-	Items                []*OnuImage `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OnuImage            `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuImages) Reset()         { *m = OnuImages{} }
-func (m *OnuImages) String() string { return proto.CompactTextString(m) }
-func (*OnuImages) ProtoMessage()    {}
+func (x *OnuImages) Reset() {
+	*x = OnuImages{}
+	mi := &file_voltha_protos_device_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuImages) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuImages) ProtoMessage() {}
+
+func (x *OnuImages) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuImages.ProtoReflect.Descriptor instead.
 func (*OnuImages) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{10}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *OnuImages) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuImages.Unmarshal(m, b)
-}
-func (m *OnuImages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuImages.Marshal(b, m, deterministic)
-}
-func (m *OnuImages) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuImages.Merge(m, src)
-}
-func (m *OnuImages) XXX_Size() int {
-	return xxx_messageInfo_OnuImages.Size(m)
-}
-func (m *OnuImages) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuImages.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuImages proto.InternalMessageInfo
-
-func (m *OnuImages) GetItems() []*OnuImage {
-	if m != nil {
-		return m.Items
+func (x *OnuImages) GetItems() []*OnuImage {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type DeviceImageState struct {
-	DeviceId             string      `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	ImageState           *ImageState `protobuf:"bytes,2,opt,name=imageState,proto3" json:"imageState,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	ImageState    *ImageState            `protobuf:"bytes,2,opt,name=imageState,proto3" json:"imageState,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceImageState) Reset()         { *m = DeviceImageState{} }
-func (m *DeviceImageState) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageState) ProtoMessage()    {}
+func (x *DeviceImageState) Reset() {
+	*x = DeviceImageState{}
+	mi := &file_voltha_protos_device_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageState) ProtoMessage() {}
+
+func (x *DeviceImageState) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageState.ProtoReflect.Descriptor instead.
 func (*DeviceImageState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{11}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *DeviceImageState) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageState.Unmarshal(m, b)
-}
-func (m *DeviceImageState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageState.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageState.Merge(m, src)
-}
-func (m *DeviceImageState) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageState.Size(m)
-}
-func (m *DeviceImageState) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageState proto.InternalMessageInfo
-
-func (m *DeviceImageState) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceImageState) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *DeviceImageState) GetImageState() *ImageState {
-	if m != nil {
-		return m.ImageState
+func (x *DeviceImageState) GetImageState() *ImageState {
+	if x != nil {
+		return x.ImageState
 	}
 	return nil
 }
 
 type ImageState struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// image version
 	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
 	// Download state
@@ -1322,72 +1594,77 @@
 	// Image Operation Failure reason (use for both Download and Activate)
 	Reason ImageState_ImageFailureReason `protobuf:"varint,3,opt,name=reason,proto3,enum=device.ImageState_ImageFailureReason" json:"reason,omitempty"`
 	// Image activation state
-	ImageState           ImageState_ImageActivationState `protobuf:"varint,4,opt,name=image_state,json=imageState,proto3,enum=device.ImageState_ImageActivationState" json:"image_state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+	ImageState    ImageState_ImageActivationState `protobuf:"varint,4,opt,name=image_state,json=imageState,proto3,enum=device.ImageState_ImageActivationState" json:"image_state,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageState) Reset()         { *m = ImageState{} }
-func (m *ImageState) String() string { return proto.CompactTextString(m) }
-func (*ImageState) ProtoMessage()    {}
+func (x *ImageState) Reset() {
+	*x = ImageState{}
+	mi := &file_voltha_protos_device_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageState) ProtoMessage() {}
+
+func (x *ImageState) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageState.ProtoReflect.Descriptor instead.
 func (*ImageState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *ImageState) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImageState.Unmarshal(m, b)
-}
-func (m *ImageState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImageState.Marshal(b, m, deterministic)
-}
-func (m *ImageState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageState.Merge(m, src)
-}
-func (m *ImageState) XXX_Size() int {
-	return xxx_messageInfo_ImageState.Size(m)
-}
-func (m *ImageState) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageState proto.InternalMessageInfo
-
-func (m *ImageState) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *ImageState) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *ImageState) GetDownloadState() ImageState_ImageDownloadState {
-	if m != nil {
-		return m.DownloadState
+func (x *ImageState) GetDownloadState() ImageState_ImageDownloadState {
+	if x != nil {
+		return x.DownloadState
 	}
 	return ImageState_DOWNLOAD_UNKNOWN
 }
 
-func (m *ImageState) GetReason() ImageState_ImageFailureReason {
-	if m != nil {
-		return m.Reason
+func (x *ImageState) GetReason() ImageState_ImageFailureReason {
+	if x != nil {
+		return x.Reason
 	}
 	return ImageState_NO_ERROR
 }
 
-func (m *ImageState) GetImageState() ImageState_ImageActivationState {
-	if m != nil {
-		return m.ImageState
+func (x *ImageState) GetImageState() ImageState_ImageActivationState {
+	if x != nil {
+		return x.ImageState
 	}
 	return ImageState_IMAGE_UNKNOWN
 }
 
 type Port struct {
-	PortNo     uint32                  `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	Label      string                  `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
-	Type       Port_PortType           `protobuf:"varint,3,opt,name=type,proto3,enum=device.Port_PortType" json:"type,omitempty"`
+	state      protoimpl.MessageState  `protogen:"open.v1"`
+	PortNo     uint32                  `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`         // Device-unique port number
+	Label      string                  `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`                          // Arbitrary port label
+	Type       Port_PortType           `protobuf:"varint,3,opt,name=type,proto3,enum=device.Port_PortType" json:"type,omitempty"` //  Type of port
 	AdminState common.AdminState_Types `protobuf:"varint,5,opt,name=admin_state,json=adminState,proto3,enum=common.AdminState_Types" json:"admin_state,omitempty"`
 	OperStatus common.OperStatus_Types `protobuf:"varint,6,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
-	DeviceId   string                  `protobuf:"bytes,7,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	DeviceId   string                  `protobuf:"bytes,7,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` // Unique .id of device that owns this port
 	Peers      []*Port_PeerPort        `protobuf:"bytes,8,rep,name=peers,proto3" json:"peers,omitempty"`
 	RxPackets  uint64                  `protobuf:"fixed64,9,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
 	RxBytes    uint64                  `protobuf:"fixed64,10,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
@@ -1398,223 +1675,186 @@
 	// ofp_port represents the characteristics of a port, e.g. hardware
 	// address and supported features.  This field is relevant only for
 	// UNI and NNI ports.   For PON ports, it can be left empty.
-	OfpPort              *openflow_13.OfpPort `protobuf:"bytes,15,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	OfpPort       *openflow_13.OfpPort `protobuf:"bytes,15,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Port) Reset()         { *m = Port{} }
-func (m *Port) String() string { return proto.CompactTextString(m) }
-func (*Port) ProtoMessage()    {}
+func (x *Port) Reset() {
+	*x = Port{}
+	mi := &file_voltha_protos_device_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Port) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Port) ProtoMessage() {}
+
+func (x *Port) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Port.ProtoReflect.Descriptor instead.
 func (*Port) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{13}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{13}
 }
 
-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 (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)
-}
-func (m *Port) XXX_DiscardUnknown() {
-	xxx_messageInfo_Port.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Port proto.InternalMessageInfo
-
-func (m *Port) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *Port) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *Port) GetLabel() string {
-	if m != nil {
-		return m.Label
+func (x *Port) GetLabel() string {
+	if x != nil {
+		return x.Label
 	}
 	return ""
 }
 
-func (m *Port) GetType() Port_PortType {
-	if m != nil {
-		return m.Type
+func (x *Port) GetType() Port_PortType {
+	if x != nil {
+		return x.Type
 	}
 	return Port_UNKNOWN
 }
 
-func (m *Port) GetAdminState() common.AdminState_Types {
-	if m != nil {
-		return m.AdminState
+func (x *Port) GetAdminState() common.AdminState_Types {
+	if x != nil {
+		return x.AdminState
 	}
-	return common.AdminState_UNKNOWN
+	return common.AdminState_Types(0)
 }
 
-func (m *Port) GetOperStatus() common.OperStatus_Types {
-	if m != nil {
-		return m.OperStatus
+func (x *Port) GetOperStatus() common.OperStatus_Types {
+	if x != nil {
+		return x.OperStatus
 	}
-	return common.OperStatus_UNKNOWN
+	return common.OperStatus_Types(0)
 }
 
-func (m *Port) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *Port) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *Port) GetPeers() []*Port_PeerPort {
-	if m != nil {
-		return m.Peers
+func (x *Port) GetPeers() []*Port_PeerPort {
+	if x != nil {
+		return x.Peers
 	}
 	return nil
 }
 
-func (m *Port) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
+func (x *Port) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
 	}
 	return 0
 }
 
-func (m *Port) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *Port) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
-func (m *Port) GetRxErrors() uint64 {
-	if m != nil {
-		return m.RxErrors
+func (x *Port) GetRxErrors() uint64 {
+	if x != nil {
+		return x.RxErrors
 	}
 	return 0
 }
 
-func (m *Port) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
+func (x *Port) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
 	}
 	return 0
 }
 
-func (m *Port) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
+func (x *Port) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
 	}
 	return 0
 }
 
-func (m *Port) GetTxErrors() uint64 {
-	if m != nil {
-		return m.TxErrors
+func (x *Port) GetTxErrors() uint64 {
+	if x != nil {
+		return x.TxErrors
 	}
 	return 0
 }
 
-func (m *Port) GetOfpPort() *openflow_13.OfpPort {
-	if m != nil {
-		return m.OfpPort
+func (x *Port) GetOfpPort() *openflow_13.OfpPort {
+	if x != nil {
+		return x.OfpPort
 	}
 	return nil
 }
 
-type Port_PeerPort struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	PortNo               uint32   `protobuf:"varint,2,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Port_PeerPort) Reset()         { *m = Port_PeerPort{} }
-func (m *Port_PeerPort) String() string { return proto.CompactTextString(m) }
-func (*Port_PeerPort) ProtoMessage()    {}
-func (*Port_PeerPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{13, 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 (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)
-}
-func (m *Port_PeerPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_Port_PeerPort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Port_PeerPort proto.InternalMessageInfo
-
-func (m *Port_PeerPort) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
-	}
-	return ""
-}
-
-func (m *Port_PeerPort) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
 type Ports struct {
-	Items                []*Port  `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*Port                `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Ports) Reset()         { *m = Ports{} }
-func (m *Ports) String() string { return proto.CompactTextString(m) }
-func (*Ports) ProtoMessage()    {}
+func (x *Ports) Reset() {
+	*x = Ports{}
+	mi := &file_voltha_protos_device_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Ports) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Ports) ProtoMessage() {}
+
+func (x *Ports) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Ports.ProtoReflect.Descriptor instead.
 func (*Ports) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{14}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{14}
 }
 
-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 (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)
-}
-func (m *Ports) XXX_DiscardUnknown() {
-	xxx_messageInfo_Ports.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Ports proto.InternalMessageInfo
-
-func (m *Ports) GetItems() []*Port {
-	if m != nil {
-		return m.Items
+func (x *Ports) GetItems() []*Port {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 // A Physical Device instance
 type Device struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Voltha's device identifier
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Device type, refers to one of the registered device types
@@ -1642,165 +1882,270 @@
 	// Device contact MAC address (format: "xx:xx:xx:xx:xx:xx")
 	MacAddress string `protobuf:"bytes,13,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"`
 	// Types that are valid to be assigned to Address:
+	//
 	//	*Device_Ipv4Address
 	//	*Device_Ipv6Address
 	//	*Device_HostAndPort
 	Address       isDevice_Address           `protobuf_oneof:"address"`
-	ExtraArgs     string                     `protobuf:"bytes,23,opt,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"`
+	ExtraArgs     string                     `protobuf:"bytes,23,opt,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"` // Used to pass additional device specific arguments
 	ProxyAddress  *Device_ProxyAddress       `protobuf:"bytes,19,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
 	AdminState    common.AdminState_Types    `protobuf:"varint,16,opt,name=admin_state,json=adminState,proto3,enum=common.AdminState_Types" json:"admin_state,omitempty"`
 	OperStatus    common.OperStatus_Types    `protobuf:"varint,17,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
-	Reason        string                     `protobuf:"bytes,22,opt,name=reason,proto3" json:"reason,omitempty"`
+	Reason        string                     `protobuf:"bytes,22,opt,name=reason,proto3" json:"reason,omitempty"` //  Used in FAILED state
 	ConnectStatus common.ConnectStatus_Types `protobuf:"varint,18,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_Types" json:"connect_status,omitempty"`
 	// Device type specific attributes
-	Custom *any.Any `protobuf:"bytes,64,opt,name=custom,proto3" json:"custom,omitempty"`
+	Custom *anypb.Any `protobuf:"bytes,64,opt,name=custom,proto3" json:"custom,omitempty"`
 	// PmConfigs type
-	PmConfigs            *PmConfigs       `protobuf:"bytes,131,opt,name=pm_configs,json=pmConfigs,proto3" json:"pm_configs,omitempty"`
-	ImageDownloads       []*ImageDownload `protobuf:"bytes,133,rep,name=image_downloads,json=imageDownloads,proto3" json:"image_downloads,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	PmConfigs      *PmConfigs       `protobuf:"bytes,131,opt,name=pm_configs,json=pmConfigs,proto3" json:"pm_configs,omitempty"`
+	ImageDownloads []*ImageDownload `protobuf:"bytes,133,rep,name=image_downloads,json=imageDownloads,proto3" json:"image_downloads,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *Device) Reset()         { *m = Device{} }
-func (m *Device) String() string { return proto.CompactTextString(m) }
-func (*Device) ProtoMessage()    {}
+func (x *Device) Reset() {
+	*x = Device{}
+	mi := &file_voltha_protos_device_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Device) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Device) ProtoMessage() {}
+
+func (x *Device) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Device.ProtoReflect.Descriptor instead.
 func (*Device) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{15}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{15}
 }
 
-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 (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)
-}
-func (m *Device) XXX_DiscardUnknown() {
-	xxx_messageInfo_Device.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Device proto.InternalMessageInfo
-
-func (m *Device) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *Device) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *Device) GetType() string {
-	if m != nil {
-		return m.Type
+func (x *Device) GetType() string {
+	if x != nil {
+		return x.Type
 	}
 	return ""
 }
 
-func (m *Device) GetRoot() bool {
-	if m != nil {
-		return m.Root
+func (x *Device) GetRoot() bool {
+	if x != nil {
+		return x.Root
 	}
 	return false
 }
 
-func (m *Device) GetParentId() string {
-	if m != nil {
-		return m.ParentId
+func (x *Device) GetParentId() string {
+	if x != nil {
+		return x.ParentId
 	}
 	return ""
 }
 
-func (m *Device) GetParentPortNo() uint32 {
-	if m != nil {
-		return m.ParentPortNo
+func (x *Device) GetParentPortNo() uint32 {
+	if x != nil {
+		return x.ParentPortNo
 	}
 	return 0
 }
 
-func (m *Device) GetVendor() string {
-	if m != nil {
-		return m.Vendor
+func (x *Device) GetVendor() string {
+	if x != nil {
+		return x.Vendor
 	}
 	return ""
 }
 
-func (m *Device) GetModel() string {
-	if m != nil {
-		return m.Model
+func (x *Device) GetModel() string {
+	if x != nil {
+		return x.Model
 	}
 	return ""
 }
 
-func (m *Device) GetHardwareVersion() string {
-	if m != nil {
-		return m.HardwareVersion
+func (x *Device) GetHardwareVersion() string {
+	if x != nil {
+		return x.HardwareVersion
 	}
 	return ""
 }
 
-func (m *Device) GetFirmwareVersion() string {
-	if m != nil {
-		return m.FirmwareVersion
+func (x *Device) GetFirmwareVersion() string {
+	if x != nil {
+		return x.FirmwareVersion
 	}
 	return ""
 }
 
-func (m *Device) GetImages() *Images {
-	if m != nil {
-		return m.Images
+func (x *Device) GetImages() *Images {
+	if x != nil {
+		return x.Images
 	}
 	return nil
 }
 
-func (m *Device) GetSerialNumber() string {
-	if m != nil {
-		return m.SerialNumber
+func (x *Device) GetSerialNumber() string {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return ""
 }
 
-func (m *Device) GetVendorId() string {
-	if m != nil {
-		return m.VendorId
+func (x *Device) GetVendorId() string {
+	if x != nil {
+		return x.VendorId
 	}
 	return ""
 }
 
-func (m *Device) GetAdapterEndpoint() string {
-	if m != nil {
-		return m.AdapterEndpoint
+func (x *Device) GetAdapterEndpoint() string {
+	if x != nil {
+		return x.AdapterEndpoint
 	}
 	return ""
 }
 
-func (m *Device) GetVlan() uint32 {
-	if m != nil {
-		return m.Vlan
+func (x *Device) GetVlan() uint32 {
+	if x != nil {
+		return x.Vlan
 	}
 	return 0
 }
 
-func (m *Device) GetMacAddress() string {
-	if m != nil {
-		return m.MacAddress
+func (x *Device) GetMacAddress() string {
+	if x != nil {
+		return x.MacAddress
 	}
 	return ""
 }
 
+func (x *Device) GetAddress() isDevice_Address {
+	if x != nil {
+		return x.Address
+	}
+	return nil
+}
+
+func (x *Device) GetIpv4Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*Device_Ipv4Address); ok {
+			return x.Ipv4Address
+		}
+	}
+	return ""
+}
+
+func (x *Device) GetIpv6Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*Device_Ipv6Address); ok {
+			return x.Ipv6Address
+		}
+	}
+	return ""
+}
+
+func (x *Device) GetHostAndPort() string {
+	if x != nil {
+		if x, ok := x.Address.(*Device_HostAndPort); ok {
+			return x.HostAndPort
+		}
+	}
+	return ""
+}
+
+func (x *Device) GetExtraArgs() string {
+	if x != nil {
+		return x.ExtraArgs
+	}
+	return ""
+}
+
+func (x *Device) GetProxyAddress() *Device_ProxyAddress {
+	if x != nil {
+		return x.ProxyAddress
+	}
+	return nil
+}
+
+func (x *Device) GetAdminState() common.AdminState_Types {
+	if x != nil {
+		return x.AdminState
+	}
+	return common.AdminState_Types(0)
+}
+
+func (x *Device) GetOperStatus() common.OperStatus_Types {
+	if x != nil {
+		return x.OperStatus
+	}
+	return common.OperStatus_Types(0)
+}
+
+func (x *Device) GetReason() string {
+	if x != nil {
+		return x.Reason
+	}
+	return ""
+}
+
+func (x *Device) GetConnectStatus() common.ConnectStatus_Types {
+	if x != nil {
+		return x.ConnectStatus
+	}
+	return common.ConnectStatus_Types(0)
+}
+
+func (x *Device) GetCustom() *anypb.Any {
+	if x != nil {
+		return x.Custom
+	}
+	return nil
+}
+
+func (x *Device) GetPmConfigs() *PmConfigs {
+	if x != nil {
+		return x.PmConfigs
+	}
+	return nil
+}
+
+func (x *Device) GetImageDownloads() []*ImageDownload {
+	if x != nil {
+		return x.ImageDownloads
+	}
+	return nil
+}
+
 type isDevice_Address interface {
 	isDevice_Address()
 }
 
 type Device_Ipv4Address struct {
+	// Device contact IPv4 address (format: "a.b.c.d" or can use hostname too)
 	Ipv4Address string `protobuf:"bytes,14,opt,name=ipv4_address,json=ipv4Address,proto3,oneof"`
 }
 
 type Device_Ipv6Address struct {
+	// Device contact IPv6 address using the canonical string form
+	// ("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx")
 	Ipv6Address string `protobuf:"bytes,15,opt,name=ipv6_address,json=ipv6Address,proto3,oneof"`
 }
 
@@ -1814,838 +2159,1138 @@
 
 func (*Device_HostAndPort) isDevice_Address() {}
 
-func (m *Device) GetAddress() isDevice_Address {
-	if m != nil {
-		return m.Address
-	}
-	return nil
-}
-
-func (m *Device) GetIpv4Address() string {
-	if x, ok := m.GetAddress().(*Device_Ipv4Address); ok {
-		return x.Ipv4Address
-	}
-	return ""
-}
-
-func (m *Device) GetIpv6Address() string {
-	if x, ok := m.GetAddress().(*Device_Ipv6Address); ok {
-		return x.Ipv6Address
-	}
-	return ""
-}
-
-func (m *Device) GetHostAndPort() string {
-	if x, ok := m.GetAddress().(*Device_HostAndPort); ok {
-		return x.HostAndPort
-	}
-	return ""
-}
-
-func (m *Device) GetExtraArgs() string {
-	if m != nil {
-		return m.ExtraArgs
-	}
-	return ""
-}
-
-func (m *Device) GetProxyAddress() *Device_ProxyAddress {
-	if m != nil {
-		return m.ProxyAddress
-	}
-	return nil
-}
-
-func (m *Device) GetAdminState() common.AdminState_Types {
-	if m != nil {
-		return m.AdminState
-	}
-	return common.AdminState_UNKNOWN
-}
-
-func (m *Device) GetOperStatus() common.OperStatus_Types {
-	if m != nil {
-		return m.OperStatus
-	}
-	return common.OperStatus_UNKNOWN
-}
-
-func (m *Device) GetReason() string {
-	if m != nil {
-		return m.Reason
-	}
-	return ""
-}
-
-func (m *Device) GetConnectStatus() common.ConnectStatus_Types {
-	if m != nil {
-		return m.ConnectStatus
-	}
-	return common.ConnectStatus_UNKNOWN
-}
-
-func (m *Device) GetCustom() *any.Any {
-	if m != nil {
-		return m.Custom
-	}
-	return nil
-}
-
-func (m *Device) GetPmConfigs() *PmConfigs {
-	if m != nil {
-		return m.PmConfigs
-	}
-	return nil
-}
-
-func (m *Device) GetImageDownloads() []*ImageDownload {
-	if m != nil {
-		return m.ImageDownloads
-	}
-	return nil
-}
-
-// 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),
-	}
-}
-
-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"`
-	ChannelId            uint32   `protobuf:"varint,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
-	ChannelGroupId       uint32   `protobuf:"varint,4,opt,name=channel_group_id,json=channelGroupId,proto3" json:"channel_group_id,omitempty"`
-	ChannelTermination   string   `protobuf:"bytes,5,opt,name=channel_termination,json=channelTermination,proto3" json:"channel_termination,omitempty"`
-	OnuId                uint32   `protobuf:"varint,6,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	OnuSessionId         uint32   `protobuf:"varint,7,opt,name=onu_session_id,json=onuSessionId,proto3" json:"onu_session_id,omitempty"`
-	AdapterEndpoint      string   `protobuf:"bytes,8,opt,name=adapter_endpoint,json=adapterEndpoint,proto3" json:"adapter_endpoint,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Device_ProxyAddress) Reset()         { *m = Device_ProxyAddress{} }
-func (m *Device_ProxyAddress) String() string { return proto.CompactTextString(m) }
-func (*Device_ProxyAddress) ProtoMessage()    {}
-func (*Device_ProxyAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{15, 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 (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)
-}
-func (m *Device_ProxyAddress) XXX_DiscardUnknown() {
-	xxx_messageInfo_Device_ProxyAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Device_ProxyAddress proto.InternalMessageInfo
-
-func (m *Device_ProxyAddress) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
-	}
-	return ""
-}
-
-func (m *Device_ProxyAddress) GetDeviceType() string {
-	if m != nil {
-		return m.DeviceType
-	}
-	return ""
-}
-
-func (m *Device_ProxyAddress) GetChannelId() uint32 {
-	if m != nil {
-		return m.ChannelId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetChannelGroupId() uint32 {
-	if m != nil {
-		return m.ChannelGroupId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetChannelTermination() string {
-	if m != nil {
-		return m.ChannelTermination
-	}
-	return ""
-}
-
-func (m *Device_ProxyAddress) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetOnuSessionId() uint32 {
-	if m != nil {
-		return m.OnuSessionId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetAdapterEndpoint() string {
-	if m != nil {
-		return m.AdapterEndpoint
-	}
-	return ""
-}
-
 type DeviceImageDownloadRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Device Id
 	// allows for operations on multiple devices.
 	DeviceId []*common.ID `protobuf:"bytes,1,rep,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	//The image for the device containing all the information
+	// The image for the device containing all the information
 	Image *Image `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
-	//Activate the image if the download to the device is successful
+	// Activate the image if the download to the device is successful
 	ActivateOnSuccess bool `protobuf:"varint,3,opt,name=activateOnSuccess,proto3" json:"activateOnSuccess,omitempty"`
-	//Automatically commit the image if the activation on the device is successful
-	CommitOnSuccess      bool     `protobuf:"varint,4,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	// Automatically commit the image if the activation on the device is successful
+	CommitOnSuccess bool `protobuf:"varint,4,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *DeviceImageDownloadRequest) Reset()         { *m = DeviceImageDownloadRequest{} }
-func (m *DeviceImageDownloadRequest) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageDownloadRequest) ProtoMessage()    {}
+func (x *DeviceImageDownloadRequest) Reset() {
+	*x = DeviceImageDownloadRequest{}
+	mi := &file_voltha_protos_device_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageDownloadRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageDownloadRequest) ProtoMessage() {}
+
+func (x *DeviceImageDownloadRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageDownloadRequest.ProtoReflect.Descriptor instead.
 func (*DeviceImageDownloadRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{16}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *DeviceImageDownloadRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageDownloadRequest.Unmarshal(m, b)
-}
-func (m *DeviceImageDownloadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageDownloadRequest.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageDownloadRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageDownloadRequest.Merge(m, src)
-}
-func (m *DeviceImageDownloadRequest) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageDownloadRequest.Size(m)
-}
-func (m *DeviceImageDownloadRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageDownloadRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageDownloadRequest proto.InternalMessageInfo
-
-func (m *DeviceImageDownloadRequest) GetDeviceId() []*common.ID {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceImageDownloadRequest) GetDeviceId() []*common.ID {
+	if x != nil {
+		return x.DeviceId
 	}
 	return nil
 }
 
-func (m *DeviceImageDownloadRequest) GetImage() *Image {
-	if m != nil {
-		return m.Image
+func (x *DeviceImageDownloadRequest) GetImage() *Image {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
 
-func (m *DeviceImageDownloadRequest) GetActivateOnSuccess() bool {
-	if m != nil {
-		return m.ActivateOnSuccess
+func (x *DeviceImageDownloadRequest) GetActivateOnSuccess() bool {
+	if x != nil {
+		return x.ActivateOnSuccess
 	}
 	return false
 }
 
-func (m *DeviceImageDownloadRequest) GetCommitOnSuccess() bool {
-	if m != nil {
-		return m.CommitOnSuccess
+func (x *DeviceImageDownloadRequest) GetCommitOnSuccess() bool {
+	if x != nil {
+		return x.CommitOnSuccess
 	}
 	return false
 }
 
 type DeviceImageRequest struct {
-	//Device Id
-	//allows for operations on multiple adapters.
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Device Id
+	// allows for operations on multiple adapters.
 	DeviceId []*common.ID `protobuf:"bytes,1,rep,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
 	// Image Version, this is the sole identifier of the image. it's the vendor specified OMCI version
 	// must be known at the time of initiating a download, activate, commit image on an onu.
 	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
-	//Automatically commit the image if the activation on the device is successful
-	CommitOnSuccess      bool     `protobuf:"varint,3,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	// Automatically commit the image if the activation on the device is successful
+	CommitOnSuccess bool `protobuf:"varint,3,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *DeviceImageRequest) Reset()         { *m = DeviceImageRequest{} }
-func (m *DeviceImageRequest) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageRequest) ProtoMessage()    {}
+func (x *DeviceImageRequest) Reset() {
+	*x = DeviceImageRequest{}
+	mi := &file_voltha_protos_device_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageRequest) ProtoMessage() {}
+
+func (x *DeviceImageRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageRequest.ProtoReflect.Descriptor instead.
 func (*DeviceImageRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{17}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *DeviceImageRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageRequest.Unmarshal(m, b)
-}
-func (m *DeviceImageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageRequest.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageRequest.Merge(m, src)
-}
-func (m *DeviceImageRequest) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageRequest.Size(m)
-}
-func (m *DeviceImageRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageRequest proto.InternalMessageInfo
-
-func (m *DeviceImageRequest) GetDeviceId() []*common.ID {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceImageRequest) GetDeviceId() []*common.ID {
+	if x != nil {
+		return x.DeviceId
 	}
 	return nil
 }
 
-func (m *DeviceImageRequest) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *DeviceImageRequest) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *DeviceImageRequest) GetCommitOnSuccess() bool {
-	if m != nil {
-		return m.CommitOnSuccess
+func (x *DeviceImageRequest) GetCommitOnSuccess() bool {
+	if x != nil {
+		return x.CommitOnSuccess
 	}
 	return false
 }
 
 type DeviceImageResponse struct {
-	//Image state for the different devices
-	DeviceImageStates    []*DeviceImageState `protobuf:"bytes,1,rep,name=device_image_states,json=deviceImageStates,proto3" json:"device_image_states,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Image state for the different devices
+	DeviceImageStates []*DeviceImageState `protobuf:"bytes,1,rep,name=device_image_states,json=deviceImageStates,proto3" json:"device_image_states,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *DeviceImageResponse) Reset()         { *m = DeviceImageResponse{} }
-func (m *DeviceImageResponse) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageResponse) ProtoMessage()    {}
+func (x *DeviceImageResponse) Reset() {
+	*x = DeviceImageResponse{}
+	mi := &file_voltha_protos_device_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageResponse) ProtoMessage() {}
+
+func (x *DeviceImageResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageResponse.ProtoReflect.Descriptor instead.
 func (*DeviceImageResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{18}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *DeviceImageResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageResponse.Unmarshal(m, b)
-}
-func (m *DeviceImageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageResponse.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageResponse.Merge(m, src)
-}
-func (m *DeviceImageResponse) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageResponse.Size(m)
-}
-func (m *DeviceImageResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageResponse proto.InternalMessageInfo
-
-func (m *DeviceImageResponse) GetDeviceImageStates() []*DeviceImageState {
-	if m != nil {
-		return m.DeviceImageStates
+func (x *DeviceImageResponse) GetDeviceImageStates() []*DeviceImageState {
+	if x != nil {
+		return x.DeviceImageStates
 	}
 	return nil
 }
 
 // Device Self Test Response
 type SelfTestResponse struct {
-	Result               SelfTestResponse_SelfTestResult `protobuf:"varint,1,opt,name=result,proto3,enum=device.SelfTestResponse_SelfTestResult" json:"result,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+	state         protoimpl.MessageState          `protogen:"open.v1"`
+	Result        SelfTestResponse_SelfTestResult `protobuf:"varint,1,opt,name=result,proto3,enum=device.SelfTestResponse_SelfTestResult" json:"result,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SelfTestResponse) Reset()         { *m = SelfTestResponse{} }
-func (m *SelfTestResponse) String() string { return proto.CompactTextString(m) }
-func (*SelfTestResponse) ProtoMessage()    {}
+func (x *SelfTestResponse) Reset() {
+	*x = SelfTestResponse{}
+	mi := &file_voltha_protos_device_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SelfTestResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SelfTestResponse) ProtoMessage() {}
+
+func (x *SelfTestResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SelfTestResponse.ProtoReflect.Descriptor instead.
 func (*SelfTestResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{19}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{19}
 }
 
-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 (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)
-}
-func (m *SelfTestResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SelfTestResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SelfTestResponse proto.InternalMessageInfo
-
-func (m *SelfTestResponse) GetResult() SelfTestResponse_SelfTestResult {
-	if m != nil {
-		return m.Result
+func (x *SelfTestResponse) GetResult() SelfTestResponse_SelfTestResult {
+	if x != nil {
+		return x.Result
 	}
 	return SelfTestResponse_SUCCESS
 }
 
 type Devices struct {
-	Items                []*Device `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*Device              `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Devices) Reset()         { *m = Devices{} }
-func (m *Devices) String() string { return proto.CompactTextString(m) }
-func (*Devices) ProtoMessage()    {}
+func (x *Devices) Reset() {
+	*x = Devices{}
+	mi := &file_voltha_protos_device_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Devices) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Devices) ProtoMessage() {}
+
+func (x *Devices) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Devices.ProtoReflect.Descriptor instead.
 func (*Devices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{20}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{20}
 }
 
-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 (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)
-}
-func (m *Devices) XXX_DiscardUnknown() {
-	xxx_messageInfo_Devices.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Devices proto.InternalMessageInfo
-
-func (m *Devices) GetItems() []*Device {
-	if m != nil {
-		return m.Items
+func (x *Devices) GetItems() []*Device {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type SimulateAlarmRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Device Identifier
-	Id                   string                             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Indicator            string                             `protobuf:"bytes,2,opt,name=indicator,proto3" json:"indicator,omitempty"`
-	IntfId               string                             `protobuf:"bytes,3,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	PortTypeName         string                             `protobuf:"bytes,4,opt,name=port_type_name,json=portTypeName,proto3" json:"port_type_name,omitempty"`
-	OnuDeviceId          string                             `protobuf:"bytes,5,opt,name=onu_device_id,json=onuDeviceId,proto3" json:"onu_device_id,omitempty"`
-	InverseBitErrorRate  int32                              `protobuf:"varint,6,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
-	Drift                int32                              `protobuf:"varint,7,opt,name=drift,proto3" json:"drift,omitempty"`
-	NewEqd               int32                              `protobuf:"varint,8,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
-	OnuSerialNumber      string                             `protobuf:"bytes,9,opt,name=onu_serial_number,json=onuSerialNumber,proto3" json:"onu_serial_number,omitempty"`
-	Operation            SimulateAlarmRequest_OperationType `protobuf:"varint,10,opt,name=operation,proto3,enum=device.SimulateAlarmRequest_OperationType" json:"operation,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
-	XXX_unrecognized     []byte                             `json:"-"`
-	XXX_sizecache        int32                              `json:"-"`
+	Id                  string                             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Indicator           string                             `protobuf:"bytes,2,opt,name=indicator,proto3" json:"indicator,omitempty"`
+	IntfId              string                             `protobuf:"bytes,3,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	PortTypeName        string                             `protobuf:"bytes,4,opt,name=port_type_name,json=portTypeName,proto3" json:"port_type_name,omitempty"`
+	OnuDeviceId         string                             `protobuf:"bytes,5,opt,name=onu_device_id,json=onuDeviceId,proto3" json:"onu_device_id,omitempty"`
+	InverseBitErrorRate int32                              `protobuf:"varint,6,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
+	Drift               int32                              `protobuf:"varint,7,opt,name=drift,proto3" json:"drift,omitempty"`
+	NewEqd              int32                              `protobuf:"varint,8,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
+	OnuSerialNumber     string                             `protobuf:"bytes,9,opt,name=onu_serial_number,json=onuSerialNumber,proto3" json:"onu_serial_number,omitempty"`
+	Operation           SimulateAlarmRequest_OperationType `protobuf:"varint,10,opt,name=operation,proto3,enum=device.SimulateAlarmRequest_OperationType" json:"operation,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
-func (m *SimulateAlarmRequest) Reset()         { *m = SimulateAlarmRequest{} }
-func (m *SimulateAlarmRequest) String() string { return proto.CompactTextString(m) }
-func (*SimulateAlarmRequest) ProtoMessage()    {}
+func (x *SimulateAlarmRequest) Reset() {
+	*x = SimulateAlarmRequest{}
+	mi := &file_voltha_protos_device_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SimulateAlarmRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimulateAlarmRequest) ProtoMessage() {}
+
+func (x *SimulateAlarmRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimulateAlarmRequest.ProtoReflect.Descriptor instead.
 func (*SimulateAlarmRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{21}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{21}
 }
 
-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 (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)
-}
-func (m *SimulateAlarmRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimulateAlarmRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimulateAlarmRequest proto.InternalMessageInfo
-
-func (m *SimulateAlarmRequest) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *SimulateAlarmRequest) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetIndicator() string {
-	if m != nil {
-		return m.Indicator
+func (x *SimulateAlarmRequest) GetIndicator() string {
+	if x != nil {
+		return x.Indicator
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetIntfId() string {
-	if m != nil {
-		return m.IntfId
+func (x *SimulateAlarmRequest) GetIntfId() string {
+	if x != nil {
+		return x.IntfId
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetPortTypeName() string {
-	if m != nil {
-		return m.PortTypeName
+func (x *SimulateAlarmRequest) GetPortTypeName() string {
+	if x != nil {
+		return x.PortTypeName
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetOnuDeviceId() string {
-	if m != nil {
-		return m.OnuDeviceId
+func (x *SimulateAlarmRequest) GetOnuDeviceId() string {
+	if x != nil {
+		return x.OnuDeviceId
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetInverseBitErrorRate() int32 {
-	if m != nil {
-		return m.InverseBitErrorRate
+func (x *SimulateAlarmRequest) GetInverseBitErrorRate() int32 {
+	if x != nil {
+		return x.InverseBitErrorRate
 	}
 	return 0
 }
 
-func (m *SimulateAlarmRequest) GetDrift() int32 {
-	if m != nil {
-		return m.Drift
+func (x *SimulateAlarmRequest) GetDrift() int32 {
+	if x != nil {
+		return x.Drift
 	}
 	return 0
 }
 
-func (m *SimulateAlarmRequest) GetNewEqd() int32 {
-	if m != nil {
-		return m.NewEqd
+func (x *SimulateAlarmRequest) GetNewEqd() int32 {
+	if x != nil {
+		return x.NewEqd
 	}
 	return 0
 }
 
-func (m *SimulateAlarmRequest) GetOnuSerialNumber() string {
-	if m != nil {
-		return m.OnuSerialNumber
+func (x *SimulateAlarmRequest) GetOnuSerialNumber() string {
+	if x != nil {
+		return x.OnuSerialNumber
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetOperation() SimulateAlarmRequest_OperationType {
-	if m != nil {
-		return m.Operation
+func (x *SimulateAlarmRequest) GetOperation() SimulateAlarmRequest_OperationType {
+	if x != nil {
+		return x.Operation
 	}
 	return SimulateAlarmRequest_RAISE
 }
 
 // Represents a serialNumber of a  child device on a olt pon port
 type OnuSerialNumberOnOLTPon struct {
-	OltDeviceId          *common.ID `protobuf:"bytes,1,opt,name=olt_device_id,json=oltDeviceId,proto3" json:"olt_device_id,omitempty"`
-	Port                 *Port      `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"`
-	SerialNumber         string     `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OltDeviceId   *common.ID             `protobuf:"bytes,1,opt,name=olt_device_id,json=oltDeviceId,proto3" json:"olt_device_id,omitempty"`
+	Port          *Port                  `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"`
+	SerialNumber  string                 `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuSerialNumberOnOLTPon) Reset()         { *m = OnuSerialNumberOnOLTPon{} }
-func (m *OnuSerialNumberOnOLTPon) String() string { return proto.CompactTextString(m) }
-func (*OnuSerialNumberOnOLTPon) ProtoMessage()    {}
+func (x *OnuSerialNumberOnOLTPon) Reset() {
+	*x = OnuSerialNumberOnOLTPon{}
+	mi := &file_voltha_protos_device_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuSerialNumberOnOLTPon) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuSerialNumberOnOLTPon) ProtoMessage() {}
+
+func (x *OnuSerialNumberOnOLTPon) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuSerialNumberOnOLTPon.ProtoReflect.Descriptor instead.
 func (*OnuSerialNumberOnOLTPon) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{22}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{22}
 }
 
-func (m *OnuSerialNumberOnOLTPon) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuSerialNumberOnOLTPon.Unmarshal(m, b)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuSerialNumberOnOLTPon.Marshal(b, m, deterministic)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuSerialNumberOnOLTPon.Merge(m, src)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_Size() int {
-	return xxx_messageInfo_OnuSerialNumberOnOLTPon.Size(m)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuSerialNumberOnOLTPon.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuSerialNumberOnOLTPon proto.InternalMessageInfo
-
-func (m *OnuSerialNumberOnOLTPon) GetOltDeviceId() *common.ID {
-	if m != nil {
-		return m.OltDeviceId
+func (x *OnuSerialNumberOnOLTPon) GetOltDeviceId() *common.ID {
+	if x != nil {
+		return x.OltDeviceId
 	}
 	return nil
 }
 
-func (m *OnuSerialNumberOnOLTPon) GetPort() *Port {
-	if m != nil {
-		return m.Port
+func (x *OnuSerialNumberOnOLTPon) GetPort() *Port {
+	if x != nil {
+		return x.Port
 	}
 	return nil
 }
 
-func (m *OnuSerialNumberOnOLTPon) GetSerialNumber() string {
-	if m != nil {
-		return m.SerialNumber
+func (x *OnuSerialNumberOnOLTPon) GetSerialNumber() string {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterEnum("device.PmConfig_PmType", PmConfig_PmType_name, PmConfig_PmType_value)
-	proto.RegisterEnum("device.ImageDownload_ImageDownloadState", ImageDownload_ImageDownloadState_name, ImageDownload_ImageDownloadState_value)
-	proto.RegisterEnum("device.ImageDownload_ImageDownloadFailureReason", ImageDownload_ImageDownloadFailureReason_name, ImageDownload_ImageDownloadFailureReason_value)
-	proto.RegisterEnum("device.ImageDownload_ImageActivateState", ImageDownload_ImageActivateState_name, ImageDownload_ImageActivateState_value)
-	proto.RegisterEnum("device.ImageState_ImageDownloadState", ImageState_ImageDownloadState_name, ImageState_ImageDownloadState_value)
-	proto.RegisterEnum("device.ImageState_ImageFailureReason", ImageState_ImageFailureReason_name, ImageState_ImageFailureReason_value)
-	proto.RegisterEnum("device.ImageState_ImageActivationState", ImageState_ImageActivationState_name, ImageState_ImageActivationState_value)
-	proto.RegisterEnum("device.Port_PortType", Port_PortType_name, Port_PortType_value)
-	proto.RegisterEnum("device.SelfTestResponse_SelfTestResult", SelfTestResponse_SelfTestResult_name, SelfTestResponse_SelfTestResult_value)
-	proto.RegisterEnum("device.SimulateAlarmRequest_OperationType", SimulateAlarmRequest_OperationType_name, SimulateAlarmRequest_OperationType_value)
-	proto.RegisterType((*DeviceType)(nil), "device.DeviceType")
-	proto.RegisterType((*DeviceTypes)(nil), "device.DeviceTypes")
-	proto.RegisterType((*PmConfig)(nil), "device.PmConfig")
-	proto.RegisterType((*PmGroupConfig)(nil), "device.PmGroupConfig")
-	proto.RegisterType((*PmConfigs)(nil), "device.PmConfigs")
-	proto.RegisterType((*Image)(nil), "device.Image")
-	proto.RegisterType((*ImageDownload)(nil), "device.ImageDownload")
-	proto.RegisterType((*ImageDownloads)(nil), "device.ImageDownloads")
-	proto.RegisterType((*Images)(nil), "device.Images")
-	proto.RegisterType((*OnuImage)(nil), "device.OnuImage")
-	proto.RegisterType((*OnuImages)(nil), "device.OnuImages")
-	proto.RegisterType((*DeviceImageState)(nil), "device.DeviceImageState")
-	proto.RegisterType((*ImageState)(nil), "device.ImageState")
-	proto.RegisterType((*Port)(nil), "device.Port")
-	proto.RegisterType((*Port_PeerPort)(nil), "device.Port.PeerPort")
-	proto.RegisterType((*Ports)(nil), "device.Ports")
-	proto.RegisterType((*Device)(nil), "device.Device")
-	proto.RegisterType((*Device_ProxyAddress)(nil), "device.Device.ProxyAddress")
-	proto.RegisterType((*DeviceImageDownloadRequest)(nil), "device.DeviceImageDownloadRequest")
-	proto.RegisterType((*DeviceImageRequest)(nil), "device.DeviceImageRequest")
-	proto.RegisterType((*DeviceImageResponse)(nil), "device.DeviceImageResponse")
-	proto.RegisterType((*SelfTestResponse)(nil), "device.SelfTestResponse")
-	proto.RegisterType((*Devices)(nil), "device.Devices")
-	proto.RegisterType((*SimulateAlarmRequest)(nil), "device.SimulateAlarmRequest")
-	proto.RegisterType((*OnuSerialNumberOnOLTPon)(nil), "device.OnuSerialNumberOnOLTPon")
+type UpdateDevice struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Id    string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` //Device id of the device, for now only updating the OLT device is supported, and only ip address of the OLT
+	// Types that are valid to be assigned to Address:
+	//
+	//	*UpdateDevice_Ipv4Address
+	//	*UpdateDevice_Ipv6Address
+	//	*UpdateDevice_HostAndPort
+	Address       isUpdateDevice_Address `protobuf_oneof:"address"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func init() { proto.RegisterFile("voltha_protos/device.proto", fileDescriptor_200940f73d155856) }
+func (x *UpdateDevice) Reset() {
+	*x = UpdateDevice{}
+	mi := &file_voltha_protos_device_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
 
-var fileDescriptor_200940f73d155856 = []byte{
-	// 2907 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x5b, 0x6f, 0x1b, 0xc7,
-	0x15, 0x36, 0x49, 0xf1, 0xb2, 0x87, 0x17, 0xad, 0xc6, 0xb2, 0xbd, 0x96, 0xe3, 0xda, 0x59, 0xe7,
-	0x22, 0xc7, 0x89, 0x94, 0xd8, 0x6d, 0xd2, 0x16, 0x28, 0x12, 0x8a, 0x5c, 0xd9, 0x6c, 0xe5, 0xa5,
-	0x3a, 0x24, 0x95, 0x26, 0x2f, 0x8b, 0x15, 0x77, 0x28, 0x2d, 0xbc, 0xdc, 0xa1, 0x77, 0x97, 0x92,
-	0x9c, 0xb7, 0xb6, 0x68, 0x9f, 0x0a, 0xb4, 0x40, 0x7f, 0x43, 0x81, 0x3e, 0x15, 0x7d, 0x4b, 0x1f,
-	0x8b, 0xfe, 0x82, 0x3e, 0xf6, 0xb9, 0x2f, 0xfd, 0x01, 0xed, 0x0f, 0x28, 0xe6, 0xb6, 0x17, 0x49,
-	0x76, 0x92, 0xa2, 0x28, 0xfa, 0x42, 0xec, 0x7c, 0xe7, 0xcc, 0x99, 0x99, 0x33, 0x73, 0xbe, 0x39,
-	0x67, 0x08, 0x1b, 0x27, 0x34, 0x48, 0x8e, 0x5d, 0x67, 0x11, 0xd1, 0x84, 0xc6, 0xdb, 0x1e, 0x39,
-	0xf1, 0xa7, 0x64, 0x8b, 0xb7, 0x50, 0x4d, 0xb4, 0x36, 0x6e, 0x1e, 0x51, 0x7a, 0x14, 0x90, 0x6d,
-	0x8e, 0x1e, 0x2e, 0x67, 0xdb, 0x6e, 0xf8, 0x42, 0xa8, 0x6c, 0x9c, 0xeb, 0x3e, 0xa5, 0xf3, 0x39,
-	0x0d, 0xa5, 0xec, 0x4e, 0x51, 0x46, 0x17, 0x24, 0x9c, 0x05, 0xf4, 0xd4, 0xf9, 0xe0, 0x91, 0x50,
-	0x30, 0xff, 0x5e, 0x06, 0xe8, 0xf3, 0x21, 0xc6, 0x2f, 0x16, 0x04, 0x75, 0xa0, 0xec, 0x7b, 0x46,
-	0xe9, 0x6e, 0x69, 0x53, 0xc3, 0x65, 0xdf, 0x43, 0xb7, 0x40, 0x3b, 0x21, 0xa1, 0x47, 0x23, 0xc7,
-	0xf7, 0x8c, 0x2a, 0x87, 0x1b, 0x02, 0x18, 0x78, 0xe8, 0x36, 0x40, 0x2a, 0x8c, 0x8d, 0xda, 0xdd,
-	0xca, 0xa6, 0x86, 0x35, 0x25, 0x8d, 0x91, 0x01, 0x75, 0xd7, 0x73, 0x17, 0x09, 0x89, 0x8c, 0x32,
-	0xef, 0xa9, 0x9a, 0xe8, 0x23, 0x30, 0xdc, 0xe9, 0x94, 0x2c, 0x92, 0xd8, 0x39, 0x5c, 0x06, 0xcf,
-	0x1c, 0x3e, 0xa5, 0xe5, 0xc2, 0x73, 0x13, 0x62, 0x54, 0xee, 0x96, 0x36, 0x1b, 0xf8, 0x9a, 0x94,
-	0xef, 0x2c, 0x83, 0x67, 0xbb, 0x01, 0x3d, 0x9d, 0x70, 0x21, 0xea, 0xc3, 0x1d, 0xd5, 0xd1, 0xf5,
-	0x3c, 0x27, 0x22, 0x73, 0x7a, 0x42, 0xf2, 0xdd, 0x63, 0x63, 0x85, 0xf7, 0xbf, 0x25, 0xd5, 0xba,
-	0x9e, 0x87, 0xb9, 0x52, 0x66, 0x24, 0x46, 0x7b, 0x70, 0x4f, 0x59, 0xf1, 0xfc, 0x88, 0x4c, 0x13,
-	0x27, 0xa0, 0x47, 0xfe, 0xd4, 0x0d, 0xb8, 0xa5, 0x58, 0xcd, 0xa4, 0xce, 0x2d, 0xa9, 0x01, 0xfb,
-	0x5c, 0x73, 0x4f, 0x28, 0x32, 0x6b, 0xb1, 0x9c, 0xd3, 0xeb, 0xd0, 0x92, 0xeb, 0x72, 0x92, 0x17,
-	0x0b, 0x62, 0x34, 0xf8, 0x5a, 0x9b, 0x12, 0x63, 0x5e, 0x35, 0x3f, 0x82, 0x66, 0xe6, 0xe3, 0x18,
-	0x6d, 0x42, 0xd5, 0x4f, 0xc8, 0x3c, 0x36, 0x4a, 0x77, 0x2b, 0x9b, 0xcd, 0x87, 0x68, 0x4b, 0xee,
-	0x78, 0xa6, 0x83, 0x85, 0x82, 0xf9, 0xe7, 0x12, 0x34, 0xf6, 0xe7, 0x3d, 0x1a, 0xce, 0xfc, 0x23,
-	0x84, 0x60, 0x25, 0x74, 0xe7, 0x44, 0xee, 0x0e, 0xff, 0x46, 0x0f, 0x60, 0x85, 0x0f, 0xca, 0x1c,
-	0xdc, 0x79, 0x78, 0x43, 0x59, 0x52, 0x7d, 0xb6, 0xf6, 0xe7, 0xdc, 0x1c, 0x57, 0x62, 0x1b, 0x42,
-	0x42, 0xf7, 0x30, 0x20, 0x9e, 0xf4, 0xb2, 0x6a, 0xa2, 0x3b, 0xd0, 0x8c, 0xdd, 0xf9, 0x22, 0x20,
-	0xce, 0x2c, 0x22, 0xcf, 0xb9, 0x0f, 0xdb, 0x18, 0x04, 0xb4, 0x1b, 0x91, 0xe7, 0xe6, 0x77, 0xa1,
-	0x26, 0x4c, 0xa1, 0x26, 0xd4, 0x7b, 0xc3, 0x89, 0x3d, 0xb6, 0xb0, 0x7e, 0x05, 0x69, 0x50, 0x7d,
-	0xdc, 0x9d, 0x3c, 0xb6, 0xf4, 0x12, 0xfb, 0x1c, 0x8d, 0xbb, 0x63, 0x4b, 0x2f, 0x0b, 0x15, 0x7b,
-	0x6c, 0xfd, 0x64, 0xac, 0x57, 0xcc, 0xdf, 0x96, 0xa0, 0xbd, 0x3f, 0x7f, 0x1c, 0xd1, 0xe5, 0x42,
-	0xae, 0xe3, 0x36, 0xc0, 0x11, 0x6b, 0x3a, 0xb9, 0xd5, 0x68, 0x1c, 0xb1, 0xd9, 0x92, 0x52, 0x31,
-	0x9f, 0x4a, 0x99, 0x4f, 0x45, 0x88, 0xd9, 0x4c, 0x5e, 0xb1, 0x88, 0x77, 0xa0, 0x3e, 0x27, 0x49,
-	0xe4, 0x4f, 0xd9, 0x21, 0x60, 0x8e, 0xd5, 0xcf, 0xbb, 0x03, 0x2b, 0x05, 0xf3, 0x9f, 0x25, 0xd0,
-	0x14, 0x1a, 0x5f, 0x38, 0xf5, 0xaf, 0x43, 0xcb, 0x23, 0x33, 0x77, 0x19, 0x24, 0xf9, 0x49, 0x34,
-	0x25, 0xa6, 0xa6, 0xc1, 0xe7, 0x94, 0x4d, 0x43, 0x36, 0xd1, 0x3d, 0x68, 0xb3, 0x4e, 0x0e, 0x3d,
-	0x21, 0x51, 0xe4, 0x7b, 0x44, 0x9e, 0xc8, 0x16, 0x03, 0x87, 0x12, 0x43, 0xef, 0x41, 0x8d, 0xeb,
-	0xc7, 0x46, 0x95, 0x4f, 0xf5, 0x5a, 0x36, 0xd5, 0x9c, 0xab, 0xb0, 0x54, 0xca, 0x2f, 0xad, 0xf6,
-	0x15, 0x4b, 0x43, 0x37, 0xa1, 0x31, 0x77, 0xcf, 0x9c, 0xf8, 0x19, 0x39, 0xe5, 0x47, 0xb8, 0x8d,
-	0xeb, 0x73, 0xf7, 0x6c, 0xf4, 0x8c, 0x9c, 0x9a, 0xbf, 0x2e, 0x43, 0x75, 0x30, 0x77, 0x8f, 0xc8,
-	0xa5, 0x67, 0xc9, 0x80, 0xfa, 0x09, 0x89, 0x62, 0x9f, 0x86, 0x2a, 0x5e, 0x65, 0x93, 0x69, 0x1f,
-	0xbb, 0xf1, 0x31, 0x5f, 0x69, 0x1b, 0xf3, 0x6f, 0x74, 0x1f, 0x74, 0x3f, 0x8c, 0x13, 0x37, 0x08,
-	0x1c, 0x16, 0x06, 0x89, 0x3f, 0x17, 0x2b, 0xd5, 0xf0, 0xaa, 0xc4, 0xfb, 0x12, 0x66, 0x24, 0xe2,
-	0xc7, 0x8e, 0x3b, 0x4d, 0xfc, 0x13, 0xc2, 0x49, 0xa4, 0x81, 0x1b, 0x7e, 0xdc, 0xe5, 0x6d, 0xe6,
-	0x6b, 0x3f, 0x76, 0x18, 0x69, 0xf9, 0x49, 0x42, 0x3c, 0xa3, 0xc6, 0xe5, 0x4d, 0x3f, 0xee, 0x29,
-	0x88, 0xad, 0xc8, 0x8f, 0x9d, 0x13, 0x37, 0xf0, 0x3d, 0x19, 0x94, 0x75, 0x3f, 0x3e, 0x60, 0x4d,
-	0xa4, 0x43, 0x65, 0x19, 0x05, 0x32, 0xe6, 0xd8, 0x27, 0xba, 0x0e, 0x35, 0x41, 0x41, 0x86, 0xc6,
-	0x41, 0xd9, 0x42, 0xeb, 0x50, 0x9d, 0x46, 0xd3, 0x47, 0x0f, 0x0d, 0xe0, 0x8b, 0x10, 0x0d, 0xf3,
-	0x1f, 0x75, 0x68, 0x73, 0x8f, 0xf4, 0xe9, 0x69, 0x18, 0x50, 0xd7, 0xbb, 0x70, 0x16, 0x94, 0xa7,
-	0xca, 0x39, 0x4f, 0xc9, 0x51, 0x2b, 0xd9, 0xa8, 0x3a, 0x54, 0xa6, 0xd1, 0x54, 0x06, 0x0e, 0xfb,
-	0x44, 0x43, 0xe8, 0x78, 0xd2, 0xa6, 0x13, 0x27, 0x8c, 0x4f, 0xaa, 0x3c, 0x46, 0x37, 0xd5, 0xce,
-	0x15, 0x86, 0x2d, 0xb6, 0x46, 0x4c, 0x1f, 0xb7, 0xbd, 0x7c, 0x93, 0x9d, 0x2b, 0x9f, 0x29, 0x39,
-	0x6a, 0x93, 0x6a, 0x7c, 0xf8, 0x16, 0x07, 0x0f, 0xe4, 0x4e, 0xdd, 0x07, 0x5d, 0xf5, 0x22, 0x9e,
-	0x73, 0xf8, 0x82, 0x31, 0xa2, 0x38, 0x04, 0xab, 0x19, 0xbe, 0xc3, 0x60, 0xf4, 0x04, 0x6a, 0x11,
-	0x71, 0x63, 0x1a, 0x72, 0xef, 0x75, 0x1e, 0xbe, 0xff, 0x35, 0x26, 0xb6, 0xeb, 0xfa, 0xc1, 0x32,
-	0x22, 0x98, 0xf7, 0xc3, 0xb2, 0x3f, 0x7a, 0x1b, 0x56, 0x5d, 0xcf, 0xf3, 0x13, 0x9f, 0x86, 0x6e,
-	0xe0, 0xf8, 0xe1, 0x8c, 0x4a, 0xdf, 0x77, 0x32, 0x78, 0x10, 0xce, 0xa8, 0xa0, 0x99, 0x13, 0xe2,
-	0x4c, 0xf9, 0x91, 0xe5, 0x3b, 0xd1, 0x60, 0x34, 0x73, 0x42, 0x24, 0x35, 0xdc, 0x02, 0x2d, 0xa0,
-	0x8c, 0x88, 0x3d, 0x3f, 0x32, 0x9a, 0xe2, 0xba, 0xe1, 0x40, 0xdf, 0x8f, 0xd0, 0x00, 0x9a, 0xc2,
-	0x01, 0xc2, 0x9d, 0xad, 0xaf, 0x74, 0x27, 0x3f, 0x61, 0x6e, 0x42, 0x84, 0x3b, 0x81, 0x77, 0x16,
-	0xbe, 0xbc, 0x05, 0xda, 0xcc, 0x0f, 0x88, 0x13, 0xfb, 0x5f, 0x10, 0xa3, 0xcd, 0xfd, 0xd3, 0x60,
-	0xc0, 0xc8, 0xff, 0x82, 0x98, 0x5f, 0x96, 0x00, 0x5d, 0xdc, 0x0e, 0xb4, 0x0e, 0x7a, 0x7f, 0xf8,
-	0xa9, 0xbd, 0x37, 0xec, 0xf6, 0x9d, 0x89, 0xfd, 0x23, 0x7b, 0xf8, 0xa9, 0xad, 0x5f, 0x41, 0xd7,
-	0x01, 0xa5, 0xe8, 0x68, 0xd2, 0xeb, 0x59, 0x56, 0xdf, 0xea, 0xeb, 0xa5, 0x02, 0x8e, 0xad, 0x1f,
-	0x4f, 0xac, 0xd1, 0xd8, 0xea, 0xeb, 0xe5, 0x82, 0x95, 0xd1, 0xb8, 0x8b, 0x19, 0x5a, 0x41, 0x57,
-	0x61, 0x35, 0x45, 0x77, 0xbb, 0x83, 0x3d, 0xab, 0xaf, 0xaf, 0x20, 0x03, 0xd6, 0x73, 0x03, 0x8e,
-	0x26, 0xfb, 0xfb, 0x43, 0xae, 0x5e, 0x2d, 0x18, 0xef, 0x75, 0xed, 0x9e, 0xb5, 0xc7, 0x7a, 0xd4,
-	0xcc, 0x5f, 0x96, 0x60, 0xe3, 0xe5, 0xfb, 0x85, 0x5a, 0xd0, 0xb0, 0x87, 0x8e, 0x85, 0xf1, 0x90,
-	0x71, 0xf7, 0x2a, 0x34, 0x07, 0xf6, 0x41, 0x77, 0x6f, 0xd0, 0x77, 0x26, 0x78, 0x4f, 0x2f, 0x31,
-	0xa0, 0x6f, 0x1d, 0x0c, 0x7a, 0x96, 0xb3, 0x33, 0x19, 0x7d, 0xa6, 0x97, 0xd9, 0x30, 0x03, 0x7b,
-	0x34, 0xd9, 0xdd, 0x1d, 0xf4, 0x06, 0x96, 0x3d, 0x76, 0x46, 0xfb, 0xdd, 0x9e, 0xa5, 0x57, 0xd0,
-	0x1a, 0xb4, 0xa5, 0x03, 0xa4, 0xb1, 0x15, 0xd4, 0x06, 0x2d, 0x9b, 0x48, 0xd5, 0xfc, 0x95, 0x72,
-	0x61, 0x61, 0x0b, 0x58, 0xc7, 0xc1, 0xd3, 0xee, 0x63, 0x2b, 0xe7, 0x3f, 0x04, 0x1d, 0x01, 0x0d,
-	0xec, 0x6e, 0x6f, 0x3c, 0x38, 0x60, 0x57, 0xc9, 0x3a, 0xe8, 0x02, 0xe3, 0x48, 0x77, 0x3c, 0xb0,
-	0x1f, 0xeb, 0x65, 0xa4, 0x43, 0x2b, 0x87, 0x5a, 0xc2, 0x6b, 0x02, 0xc1, 0xd6, 0x81, 0x85, 0xb9,
-	0xda, 0x4a, 0x66, 0x50, 0x80, 0x6c, 0x3a, 0xdf, 0x2f, 0x1b, 0x25, 0xb3, 0x0b, 0x9d, 0x82, 0x6b,
-	0x62, 0xf4, 0x40, 0x5d, 0xc3, 0xe5, 0x22, 0x05, 0x17, 0xd4, 0xe4, 0x4d, 0xcc, 0x4d, 0xbc, 0x07,
-	0x35, 0x2e, 0x8b, 0xd1, 0x3d, 0xa8, 0xf2, 0xd3, 0x24, 0x6f, 0xf0, 0x76, 0xa1, 0x2b, 0x16, 0x32,
-	0xf3, 0x8f, 0x25, 0x68, 0x0c, 0xc3, 0xa5, 0x20, 0xdc, 0x1c, 0xb9, 0x96, 0x8a, 0xe4, 0xfa, 0x2d,
-	0x00, 0x45, 0x76, 0xc4, 0xe3, 0x34, 0xd3, 0xc0, 0x39, 0x04, 0x6d, 0x40, 0x4a, 0x96, 0xf2, 0xaa,
-	0xc9, 0xc8, 0xd3, 0x00, 0xc5, 0x84, 0xf2, 0x96, 0x49, 0x89, 0xf1, 0x2e, 0x34, 0x17, 0x11, 0xf5,
-	0x96, 0xd3, 0xa4, 0x47, 0x3d, 0x22, 0x53, 0xb7, 0x3c, 0x94, 0x92, 0xba, 0xa0, 0x11, 0xfe, 0x6d,
-	0x3e, 0x02, 0x4d, 0xcd, 0x38, 0x46, 0x6f, 0x15, 0xd3, 0x94, 0xf4, 0xca, 0x51, 0x1a, 0x2a, 0x49,
-	0x99, 0x82, 0x2e, 0x32, 0x97, 0x41, 0x21, 0xc0, 0x84, 0xb6, 0x93, 0x92, 0x69, 0x43, 0x00, 0x03,
-	0x0f, 0x3d, 0x84, 0x5c, 0x2c, 0xf2, 0x15, 0xe7, 0x92, 0xa0, 0xcc, 0x48, 0x3e, 0x62, 0xcd, 0x9f,
-	0x35, 0x00, 0x72, 0xf6, 0x5f, 0xee, 0xce, 0xbd, 0x0b, 0xbc, 0x2b, 0x72, 0xa3, 0x37, 0x2f, 0x0e,
-	0xf0, 0x35, 0x48, 0xf7, 0x07, 0x29, 0x49, 0x56, 0x5e, 0x6d, 0xe5, 0x72, 0x66, 0x7c, 0x52, 0xa4,
-	0xac, 0x15, 0x6e, 0xe3, 0xed, 0x97, 0xd9, 0x90, 0xc1, 0xe2, 0xd3, 0xf0, 0xe2, 0xfa, 0xff, 0xfa,
-	0x7f, 0x4f, 0x4a, 0x37, 0xe0, 0xea, 0x79, 0x52, 0x62, 0x11, 0x59, 0x7b, 0x09, 0x5b, 0xd5, 0xcd,
-	0x7f, 0xa9, 0x25, 0xfd, 0xcf, 0x58, 0xca, 0x80, 0xf5, 0x74, 0x02, 0xce, 0xd0, 0x56, 0x3e, 0xd0,
-	0xab, 0x68, 0x03, 0xae, 0x17, 0x24, 0x43, 0x7b, 0xe2, 0x88, 0x74, 0xb6, 0xc6, 0x64, 0x07, 0x96,
-	0xdd, 0x1f, 0x62, 0x47, 0x0e, 0xfc, 0x74, 0x30, 0x7a, 0xda, 0x1d, 0xf7, 0x9e, 0xe8, 0x75, 0xb6,
-	0xe8, 0xe1, 0xd3, 0xde, 0xc0, 0x19, 0xe3, 0xae, 0x3d, 0xda, 0xb5, 0xb0, 0x1c, 0xaa, 0xc1, 0x86,
-	0x52, 0x34, 0xb4, 0x3b, 0x19, 0x59, 0x7d, 0x67, 0xe7, 0x33, 0x66, 0x54, 0xd7, 0xcc, 0x3f, 0x95,
-	0x61, 0xfd, 0xb2, 0xed, 0xfe, 0x6f, 0xb3, 0x63, 0xaa, 0xd7, 0x1b, 0x3e, 0x7d, 0x3a, 0x18, 0x4b,
-	0x7a, 0x4c, 0x39, 0x53, 0xa2, 0x7c, 0xeb, 0x6e, 0xc3, 0xcd, 0xa2, 0xc9, 0xa1, 0xed, 0x74, 0x77,
-	0x86, 0x82, 0x52, 0x6b, 0xe8, 0x35, 0x30, 0x2e, 0x17, 0xb3, 0x6d, 0x44, 0x37, 0xe1, 0x5a, 0xde,
-	0x62, 0xd6, 0x31, 0xe7, 0x84, 0xbc, 0xc8, 0xea, 0xeb, 0x1a, 0xba, 0x06, 0x6b, 0x42, 0xa2, 0x4e,
-	0x06, 0xeb, 0x00, 0xd9, 0x44, 0x72, 0x70, 0xda, 0xab, 0x69, 0x7e, 0x59, 0x85, 0x95, 0x7d, 0x1a,
-	0x25, 0xe8, 0x06, 0xd4, 0x17, 0x34, 0x4a, 0x9c, 0x90, 0xf2, 0xf0, 0x6f, 0xe3, 0x1a, 0x6b, 0xda,
-	0x94, 0x65, 0x79, 0x81, 0x7b, 0x48, 0x02, 0x99, 0xae, 0x89, 0x06, 0xba, 0x2f, 0xab, 0x24, 0x11,
-	0xc3, 0x59, 0xae, 0x4d, 0xa3, 0x84, 0xff, 0xe4, 0x6a, 0xa4, 0xef, 0x41, 0xd3, 0xf5, 0xe6, 0x7e,
-	0x58, 0xc8, 0xd9, 0x8c, 0x2d, 0x59, 0x54, 0x77, 0x99, 0x48, 0x44, 0x2c, 0x2f, 0xe5, 0x30, 0xb8,
-	0x29, 0xc2, 0xba, 0xd2, 0x05, 0x89, 0x78, 0xcf, 0x65, 0xcc, 0x79, 0x35, 0xd7, 0x75, 0xb8, 0x20,
-	0xd1, 0x88, 0x4b, 0x54, 0x57, 0x9a, 0x22, 0x45, 0xba, 0xac, 0x9f, 0xa3, 0xcb, 0x07, 0x50, 0x5d,
-	0x10, 0x12, 0xc5, 0x46, 0xe3, 0x5c, 0xa9, 0xc0, 0xa7, 0x4f, 0x48, 0xc4, 0x3e, 0xb0, 0xd0, 0x61,
-	0xd5, 0x53, 0x74, 0xe6, 0x2c, 0xdc, 0xe9, 0x33, 0x92, 0xc4, 0x3c, 0x0d, 0xab, 0x61, 0x2d, 0x3a,
-	0xdb, 0x17, 0x00, 0x4b, 0xa5, 0xa3, 0x33, 0x99, 0x17, 0x02, 0x17, 0xd6, 0xa3, 0x33, 0x91, 0x0f,
-	0xde, 0x02, 0x2d, 0x3a, 0x73, 0x48, 0x14, 0xd1, 0x28, 0xe6, 0xb9, 0x57, 0x0d, 0x37, 0xa2, 0x33,
-	0x8b, 0xb7, 0x99, 0xd9, 0x24, 0x33, 0xdb, 0x12, 0x66, 0x93, 0xbc, 0xd9, 0x44, 0x99, 0x6d, 0x0b,
-	0xb3, 0x49, 0x66, 0x36, 0x49, 0xcd, 0x76, 0x84, 0xd9, 0x44, 0x99, 0x7d, 0x1f, 0x1a, 0x74, 0xb6,
-	0x70, 0xd8, 0xe6, 0x19, 0xab, 0xfc, 0x1e, 0xb8, 0xb6, 0x95, 0x7f, 0xa3, 0x50, 0x42, 0x5c, 0xa7,
-	0xb3, 0x05, 0x5b, 0xe6, 0xc6, 0x27, 0xd0, 0x50, 0x4b, 0x7e, 0xf5, 0x25, 0x93, 0x3b, 0x22, 0xe5,
-	0xfc, 0x11, 0x31, 0x63, 0x68, 0xa8, 0x3d, 0x67, 0x95, 0x6a, 0x16, 0x6c, 0x3a, 0xb4, 0xac, 0xf1,
-	0x13, 0x0b, 0xdb, 0xd6, 0xd8, 0xb1, 0xed, 0x81, 0x5e, 0x2a, 0x20, 0x13, 0x7b, 0x20, 0x4a, 0xdb,
-	0x7d, 0x46, 0x0f, 0x7b, 0x63, 0xbd, 0x92, 0x36, 0xec, 0x89, 0xc8, 0x80, 0x0e, 0x2c, 0xa6, 0xc8,
-	0x64, 0xd5, 0x5c, 0xd3, 0x9e, 0xe8, 0x35, 0xf3, 0x01, 0x54, 0xd9, 0xa0, 0x31, 0x32, 0x8b, 0x97,
-	0x6a, 0x2b, 0xbf, 0x99, 0xea, 0x42, 0xfd, 0x1b, 0x40, 0x4d, 0xdc, 0xa8, 0x97, 0x55, 0x23, 0x69,
-	0xbd, 0xaf, 0xc9, 0x23, 0x8b, 0x60, 0x25, 0xa2, 0x34, 0x91, 0xc9, 0x01, 0xff, 0x66, 0xae, 0x59,
-	0xb8, 0x11, 0x09, 0x13, 0x47, 0xa6, 0x06, 0x1a, 0x6e, 0x08, 0x60, 0xe0, 0xa1, 0x37, 0xa0, 0x23,
-	0x85, 0xca, 0x43, 0xeb, 0xdc, 0x43, 0x2d, 0x81, 0xee, 0x8b, 0x50, 0xca, 0x0a, 0xa9, 0xea, 0xf9,
-	0x42, 0x6a, 0x4e, 0x3d, 0x12, 0xc8, 0xc4, 0x41, 0x34, 0x58, 0xe1, 0x71, 0xec, 0x46, 0xde, 0xa9,
-	0x1b, 0x65, 0x05, 0x8a, 0x38, 0xc8, 0xab, 0x0a, 0xcf, 0xd5, 0x28, 0x33, 0x3f, 0x9a, 0x17, 0x54,
-	0x45, 0x01, 0xb7, 0xaa, 0x70, 0xa5, 0xfa, 0x16, 0xd4, 0xf8, 0x1d, 0x28, 0x4e, 0x72, 0xf3, 0x61,
-	0xa7, 0x70, 0x75, 0xc6, 0x58, 0x4a, 0x59, 0x6d, 0x14, 0x93, 0xc8, 0x77, 0x03, 0x27, 0x5c, 0xce,
-	0x0f, 0x49, 0xc4, 0xcf, 0xb6, 0x86, 0x5b, 0x02, 0xb4, 0x39, 0x56, 0x7c, 0xcb, 0x32, 0xce, 0xbd,
-	0x65, 0xdd, 0x07, 0x5d, 0xbd, 0xe2, 0x90, 0xd0, 0x5b, 0x50, 0x3f, 0x4c, 0x8c, 0x9b, 0x62, 0x52,
-	0x12, 0xb7, 0x24, 0xcc, 0xfc, 0x7d, 0x12, 0xb8, 0x21, 0x8f, 0x82, 0x36, 0xe6, 0xdf, 0xac, 0xb2,
-	0x99, 0xbb, 0x53, 0xc7, 0xf5, 0xbc, 0x88, 0xc4, 0x22, 0x06, 0x34, 0x0c, 0x73, 0x77, 0xda, 0x15,
-	0x08, 0xba, 0x07, 0x2d, 0x7f, 0x71, 0xf2, 0xed, 0x54, 0x83, 0x45, 0x82, 0xf6, 0xe4, 0x0a, 0x6e,
-	0x32, 0xb4, 0xa8, 0xf4, 0x61, 0xaa, 0xb4, 0x9a, 0x53, 0xfa, 0x50, 0x29, 0xbd, 0x01, 0xed, 0x63,
-	0x1a, 0x27, 0x8e, 0x1b, 0x7a, 0x22, 0x70, 0xae, 0x29, 0x2d, 0x06, 0x77, 0x43, 0x8f, 0xc7, 0xc6,
-	0x6d, 0x00, 0x72, 0x96, 0x44, 0xae, 0xe3, 0x46, 0x47, 0xb1, 0x71, 0x43, 0x3c, 0xb2, 0x70, 0xa4,
-	0x1b, 0x1d, 0xc5, 0xe8, 0x13, 0x68, 0x2f, 0x22, 0x7a, 0xf6, 0x22, 0x1d, 0xea, 0x2a, 0xf7, 0xef,
-	0xad, 0xe2, 0x53, 0xd4, 0xd6, 0x3e, 0xd3, 0x91, 0x03, 0xe3, 0xd6, 0x22, 0xd7, 0x3a, 0x4f, 0x94,
-	0xfa, 0x7f, 0x4e, 0x94, 0x6b, 0xdf, 0x80, 0x28, 0xaf, 0xa7, 0xf9, 0xd8, 0x75, 0x71, 0x28, 0x65,
-	0xa2, 0xb5, 0x03, 0x9d, 0x29, 0x0d, 0x43, 0x32, 0x4d, 0x94, 0x55, 0xc4, 0xad, 0xde, 0x52, 0x56,
-	0x7b, 0x42, 0x5a, 0x30, 0xdc, 0x9e, 0xe6, 0x41, 0xf4, 0x2e, 0xd4, 0xa6, 0xcb, 0x38, 0xa1, 0x73,
-	0xe3, 0x13, 0xee, 0x8c, 0xf5, 0x2d, 0xf1, 0xe6, 0xba, 0xa5, 0xde, 0x5c, 0xb7, 0xba, 0xe1, 0x0b,
-	0x2c, 0x75, 0xd0, 0x07, 0x00, 0x8b, 0xb9, 0xac, 0x64, 0x63, 0xe3, 0xe7, 0x25, 0xde, 0x65, 0xed,
-	0xfc, 0xb3, 0x4c, 0x8c, 0xb5, 0x45, 0xfa, 0xcc, 0xf4, 0x31, 0xac, 0x8a, 0x6c, 0x50, 0xe5, 0x98,
-	0xb1, 0xf1, 0x8b, 0xd2, 0xab, 0x6a, 0x8f, 0x8e, 0x5f, 0xa8, 0x58, 0x36, 0xfe, 0x50, 0x86, 0x56,
-	0x7e, 0x4b, 0x5e, 0xcd, 0x80, 0x77, 0xa0, 0x29, 0x85, 0x39, 0xca, 0x00, 0x2f, 0x7b, 0xec, 0xbd,
-	0x0d, 0x30, 0x3d, 0x76, 0xc3, 0x90, 0x04, 0xac, 0xbb, 0x78, 0xdc, 0xd1, 0x24, 0x32, 0xf0, 0xd0,
-	0x26, 0xe8, 0x4a, 0x2c, 0x1e, 0xe4, 0x24, 0x95, 0xb4, 0x71, 0x47, 0xe2, 0xfc, 0xa9, 0x6a, 0xe0,
-	0xa1, 0x6d, 0xb8, 0xaa, 0x34, 0x13, 0x12, 0xcd, 0xfd, 0x90, 0x67, 0x35, 0x92, 0x37, 0x90, 0x14,
-	0x8d, 0x33, 0x09, 0xba, 0x06, 0x35, 0x1a, 0x2e, 0x99, 0xc1, 0x9a, 0x78, 0x8d, 0xa1, 0xe1, 0x52,
-	0x10, 0x13, 0x83, 0x63, 0x12, 0xb3, 0xe8, 0x57, 0x77, 0x61, 0x1b, 0xb7, 0x68, 0xb8, 0x1c, 0x09,
-	0xf0, 0x25, 0xa1, 0xda, 0xb8, 0x34, 0x54, 0x77, 0x34, 0xa8, 0xcb, 0x03, 0xfe, 0xc3, 0x95, 0x46,
-	0x53, 0x6f, 0x99, 0x7f, 0x29, 0xc1, 0x46, 0xae, 0x58, 0x49, 0x3d, 0x4d, 0x9e, 0x2f, 0x49, 0x9c,
-	0xa0, 0xb7, 0x8b, 0xfe, 0x64, 0x5b, 0x03, 0xea, 0x04, 0x0d, 0xfa, 0x39, 0xdf, 0xa6, 0x05, 0xa0,
-	0xa8, 0x5e, 0x2e, 0x2d, 0x00, 0xd1, 0xbb, 0xb0, 0xe6, 0xca, 0xfa, 0x77, 0x18, 0x8e, 0x96, 0xd3,
-	0x29, 0x0b, 0x34, 0xc1, 0xd2, 0x17, 0x05, 0x68, 0x13, 0x56, 0xc5, 0x2b, 0x58, 0xa6, 0x2b, 0x6a,
-	0xba, 0xf3, 0xb0, 0xf9, 0xd3, 0x12, 0xa0, 0xdc, 0x22, 0xbe, 0xf1, 0xe4, 0x5f, 0xfe, 0xd0, 0x77,
-	0xc9, 0x1c, 0x2a, 0x97, 0xcf, 0xc1, 0x81, 0xab, 0x85, 0x29, 0xc4, 0x0b, 0x1a, 0xc6, 0x04, 0x3d,
-	0x81, 0xab, 0x6a, 0x0e, 0x59, 0xdd, 0xa3, 0x2e, 0x3b, 0xa3, 0xc8, 0x2e, 0xb9, 0x4a, 0x6f, 0xcd,
-	0x3b, 0x87, 0xc4, 0xe6, 0xef, 0x4a, 0xa0, 0x8f, 0x48, 0x30, 0x1b, 0x93, 0x38, 0x49, 0xcd, 0x7f,
-	0xcc, 0xc2, 0x3f, 0x5e, 0x06, 0x09, 0x3f, 0xec, 0xb9, 0x52, 0xea, 0xbc, 0x66, 0x1e, 0x58, 0x06,
-	0x09, 0x96, 0xdd, 0xcc, 0x7d, 0xe8, 0x14, 0x25, 0xec, 0x12, 0xe7, 0x25, 0xd2, 0x68, 0xa4, 0x5f,
-	0x61, 0x0d, 0x56, 0xe9, 0x4c, 0x30, 0x4b, 0xb4, 0xd7, 0xa0, 0x6d, 0x0f, 0xc7, 0x4e, 0x56, 0xe3,
-	0x94, 0x2f, 0xd6, 0x14, 0x15, 0x73, 0x1b, 0xea, 0x62, 0x39, 0x8c, 0x99, 0x0b, 0x77, 0x7b, 0xa7,
-	0xb8, 0x5c, 0x75, 0xbb, 0xff, 0xbe, 0x02, 0xeb, 0x23, 0x7f, 0xbe, 0x0c, 0xdc, 0x84, 0x74, 0x03,
-	0x37, 0x9a, 0xab, 0xfd, 0x3b, 0x7f, 0xd7, 0xbf, 0x06, 0x9a, 0x1f, 0x7a, 0xfe, 0xd4, 0x4d, 0xa8,
-	0xfa, 0x07, 0x25, 0x03, 0x58, 0x7e, 0xe3, 0x87, 0xc9, 0x4c, 0x45, 0xae, 0x86, 0x6b, 0xac, 0x29,
-	0x6f, 0x77, 0x76, 0xad, 0xb3, 0xa0, 0x17, 0x4f, 0xec, 0xe2, 0xfe, 0x6f, 0x2d, 0x64, 0xd6, 0xc3,
-	0x5f, 0xd9, 0x4d, 0x68, 0xb3, 0x50, 0xcb, 0x0e, 0x8c, 0x7c, 0x21, 0xa0, 0xe1, 0xb2, 0xaf, 0xce,
-	0xc9, 0x23, 0xb8, 0xee, 0x87, 0xec, 0x68, 0x10, 0xe7, 0xd0, 0x4f, 0x44, 0x0e, 0xe7, 0x44, 0x8c,
-	0xed, 0x59, 0xd4, 0x56, 0xf1, 0x55, 0x29, 0xdd, 0xf1, 0x13, 0x9e, 0xcf, 0x61, 0x51, 0x91, 0x56,
-	0xbd, 0xc8, 0x9f, 0x25, 0x3c, 0x74, 0xab, 0x58, 0x34, 0xd8, 0x6c, 0x43, 0x72, 0xea, 0x90, 0xe7,
-	0x1e, 0x0f, 0xd5, 0x2a, 0xae, 0x85, 0xe4, 0xd4, 0x7a, 0xee, 0xa1, 0x77, 0x60, 0x4d, 0x84, 0x7c,
-	0xfe, 0xf6, 0x16, 0xaf, 0x87, 0xab, 0x3c, 0xea, 0x73, 0x17, 0xf8, 0x13, 0xd0, 0xd8, 0x55, 0x20,
-	0xc8, 0x05, 0xf8, 0x01, 0x78, 0x27, 0x3d, 0x00, 0x97, 0x78, 0x94, 0x5f, 0x25, 0x5c, 0x9b, 0x27,
-	0xf8, 0x59, 0x67, 0xf3, 0x4d, 0x68, 0x17, 0x64, 0x48, 0x83, 0x2a, 0xee, 0x0e, 0x46, 0x96, 0xf8,
-	0x4f, 0xa3, 0xb7, 0x67, 0x75, 0xb1, 0x5e, 0x32, 0x7f, 0x53, 0x82, 0x1b, 0xc3, 0xe2, 0x24, 0x86,
-	0xe1, 0x70, 0x6f, 0xbc, 0x4f, 0x43, 0xb4, 0x05, 0x6d, 0x1a, 0x24, 0x4e, 0x91, 0x7e, 0x8b, 0x11,
-	0xd7, 0xa4, 0x41, 0x92, 0x3a, 0xf3, 0x2e, 0xac, 0xf0, 0xdb, 0x5a, 0x10, 0x46, 0x31, 0xef, 0xe3,
-	0x92, 0x8b, 0x49, 0x4c, 0xe5, 0x62, 0x12, 0xb3, 0xf3, 0x39, 0x6c, 0xd0, 0xe8, 0x88, 0x27, 0xc9,
-	0x53, 0x1a, 0x79, 0x5b, 0xe2, 0xff, 0x3d, 0x69, 0x6d, 0xa7, 0x75, 0xc0, 0x9b, 0x62, 0xd0, 0xcf,
-	0xb7, 0x8e, 0xfc, 0xe4, 0x78, 0x79, 0xc8, 0x66, 0xb4, 0xad, 0x3a, 0x6c, 0x8b, 0x0e, 0xef, 0xc9,
-	0x3f, 0x04, 0x4f, 0xbe, 0xb3, 0x7d, 0x44, 0x25, 0x76, 0x58, 0xe3, 0xe0, 0xa3, 0x7f, 0x07, 0x00,
-	0x00, 0xff, 0xff, 0x7b, 0xe0, 0x98, 0x7b, 0x90, 0x1c, 0x00, 0x00,
+func (x *UpdateDevice) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateDevice) ProtoMessage() {}
+
+func (x *UpdateDevice) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateDevice.ProtoReflect.Descriptor instead.
+func (*UpdateDevice) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *UpdateDevice) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *UpdateDevice) GetAddress() isUpdateDevice_Address {
+	if x != nil {
+		return x.Address
+	}
+	return nil
+}
+
+func (x *UpdateDevice) GetIpv4Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*UpdateDevice_Ipv4Address); ok {
+			return x.Ipv4Address
+		}
+	}
+	return ""
+}
+
+func (x *UpdateDevice) GetIpv6Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*UpdateDevice_Ipv6Address); ok {
+			return x.Ipv6Address
+		}
+	}
+	return ""
+}
+
+func (x *UpdateDevice) GetHostAndPort() string {
+	if x != nil {
+		if x, ok := x.Address.(*UpdateDevice_HostAndPort); ok {
+			return x.HostAndPort
+		}
+	}
+	return ""
+}
+
+type isUpdateDevice_Address interface {
+	isUpdateDevice_Address()
+}
+
+type UpdateDevice_Ipv4Address struct {
+	// Device contact IPv4 address (format: "a.b.c.d" or can use hostname too)
+	Ipv4Address string `protobuf:"bytes,2,opt,name=ipv4_address,json=ipv4Address,proto3,oneof"`
+}
+
+type UpdateDevice_Ipv6Address struct {
+	// Device contact IPv6 address using the canonical string form
+	// ("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx")
+	Ipv6Address string `protobuf:"bytes,3,opt,name=ipv6_address,json=ipv6Address,proto3,oneof"`
+}
+
+type UpdateDevice_HostAndPort struct {
+	HostAndPort string `protobuf:"bytes,4,opt,name=host_and_port,json=hostAndPort,proto3,oneof"`
+}
+
+func (*UpdateDevice_Ipv4Address) isUpdateDevice_Address() {}
+
+func (*UpdateDevice_Ipv6Address) isUpdateDevice_Address() {}
+
+func (*UpdateDevice_HostAndPort) isUpdateDevice_Address() {}
+
+type Port_PeerPort struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	PortNo        uint32                 `protobuf:"varint,2,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Port_PeerPort) Reset() {
+	*x = Port_PeerPort{}
+	mi := &file_voltha_protos_device_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Port_PeerPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Port_PeerPort) ProtoMessage() {}
+
+func (x *Port_PeerPort) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Port_PeerPort.ProtoReflect.Descriptor instead.
+func (*Port_PeerPort) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{13, 0}
+}
+
+func (x *Port_PeerPort) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
+	}
+	return ""
+}
+
+func (x *Port_PeerPort) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+type Device_ProxyAddress struct {
+	state              protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId           string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`                               // Which device to use as proxy to this device
+	DeviceType         string                 `protobuf:"bytes,2,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"`                         // The device type of the proxy device to use as the adapter name
+	ChannelId          uint32                 `protobuf:"varint,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`                           // Sub-address within proxy
+	ChannelGroupId     uint32                 `protobuf:"varint,4,opt,name=channel_group_id,json=channelGroupId,proto3" json:"channel_group_id,omitempty"`          // Channel Group index
+	ChannelTermination string                 `protobuf:"bytes,5,opt,name=channel_termination,json=channelTermination,proto3" json:"channel_termination,omitempty"` // Channel Termination name
+	OnuId              uint32                 `protobuf:"varint,6,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`                                       // onu identifier; optional
+	OnuSessionId       uint32                 `protobuf:"varint,7,opt,name=onu_session_id,json=onuSessionId,proto3" json:"onu_session_id,omitempty"`                // session identifier for the ONU; optional
+	AdapterEndpoint    string                 `protobuf:"bytes,8,opt,name=adapter_endpoint,json=adapterEndpoint,proto3" json:"adapter_endpoint,omitempty"`          // endpoint of the adapter that handles the proxy device
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
+}
+
+func (x *Device_ProxyAddress) Reset() {
+	*x = Device_ProxyAddress{}
+	mi := &file_voltha_protos_device_proto_msgTypes[25]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Device_ProxyAddress) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Device_ProxyAddress) ProtoMessage() {}
+
+func (x *Device_ProxyAddress) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[25]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Device_ProxyAddress.ProtoReflect.Descriptor instead.
+func (*Device_ProxyAddress) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{15, 0}
+}
+
+func (x *Device_ProxyAddress) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
+	}
+	return ""
+}
+
+func (x *Device_ProxyAddress) GetDeviceType() string {
+	if x != nil {
+		return x.DeviceType
+	}
+	return ""
+}
+
+func (x *Device_ProxyAddress) GetChannelId() uint32 {
+	if x != nil {
+		return x.ChannelId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetChannelGroupId() uint32 {
+	if x != nil {
+		return x.ChannelGroupId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetChannelTermination() string {
+	if x != nil {
+		return x.ChannelTermination
+	}
+	return ""
+}
+
+func (x *Device_ProxyAddress) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetOnuSessionId() uint32 {
+	if x != nil {
+		return x.OnuSessionId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetAdapterEndpoint() string {
+	if x != nil {
+		return x.AdapterEndpoint
+	}
+	return ""
+}
+
+var File_voltha_protos_device_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_device_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/device.proto\x12\x06device\x1a\x19google/protobuf/any.proto\x1a\x1avoltha_protos/common.proto\x1a\x1fvoltha_protos/openflow_13.proto\"\xe2\x02\n" +
+	"\n" +
+	"DeviceType\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" +
+	"\tvendor_id\x18\x05 \x01(\tR\bvendorId\x12\x1d\n" +
+	"\n" +
+	"vendor_ids\x18\x06 \x03(\tR\tvendorIds\x12\x18\n" +
+	"\aadapter\x18\x02 \x01(\tR\aadapter\x127\n" +
+	"\x18accepts_bulk_flow_update\x18\x03 \x01(\bR\x15acceptsBulkFlowUpdate\x12D\n" +
+	"\x1faccepts_add_remove_flow_updates\x18\x04 \x01(\bR\x1bacceptsAddRemoveFlowUpdates\x12L\n" +
+	"#accepts_direct_logical_flows_update\x18\a \x01(\bR\x1facceptsDirectLogicalFlowsUpdate\x12!\n" +
+	"\fadapter_type\x18\b \x01(\tR\vadapterType\"7\n" +
+	"\vDeviceTypes\x12(\n" +
+	"\x05items\x18\x01 \x03(\v2\x12.device.DeviceTypeR\x05items\"\xc0\x01\n" +
+	"\bPmConfig\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12+\n" +
+	"\x04type\x18\x02 \x01(\x0e2\x17.device.PmConfig.PmTypeR\x04type\x12\x18\n" +
+	"\aenabled\x18\x03 \x01(\bR\aenabled\x12\x1f\n" +
+	"\vsample_freq\x18\x04 \x01(\rR\n" +
+	"sampleFreq\"8\n" +
+	"\x06PmType\x12\v\n" +
+	"\aCOUNTER\x10\x00\x12\t\n" +
+	"\x05GAUGE\x10\x01\x12\t\n" +
+	"\x05STATE\x10\x02\x12\v\n" +
+	"\aCONTEXT\x10\x03\"\x93\x01\n" +
+	"\rPmGroupConfig\x12\x1d\n" +
+	"\n" +
+	"group_name\x18\x01 \x01(\tR\tgroupName\x12\x1d\n" +
+	"\n" +
+	"group_freq\x18\x02 \x01(\rR\tgroupFreq\x12\x18\n" +
+	"\aenabled\x18\x03 \x01(\bR\aenabled\x12*\n" +
+	"\ametrics\x18\x04 \x03(\v2\x10.device.PmConfigR\ametrics\"\xf3\x01\n" +
+	"\tPmConfigs\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12!\n" +
+	"\fdefault_freq\x18\x02 \x01(\rR\vdefaultFreq\x12\x18\n" +
+	"\agrouped\x18\x03 \x01(\bR\agrouped\x12#\n" +
+	"\rfreq_override\x18\x04 \x01(\bR\ffreqOverride\x12-\n" +
+	"\x06groups\x18\x05 \x03(\v2\x15.device.PmGroupConfigR\x06groups\x12*\n" +
+	"\ametrics\x18\x06 \x03(\v2\x10.device.PmConfigR\ametrics\x12\x19\n" +
+	"\bmax_skew\x18\a \x01(\rR\amaxSkew\"\x8f\x02\n" +
+	"\x05Image\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\tR\aversion\x12\x12\n" +
+	"\x04hash\x18\x03 \x01(\rR\x04hash\x12)\n" +
+	"\x10install_datetime\x18\x04 \x01(\tR\x0finstallDatetime\x12\x1b\n" +
+	"\tis_active\x18\x05 \x01(\bR\bisActive\x12!\n" +
+	"\fis_committed\x18\x06 \x01(\bR\visCommitted\x12\x19\n" +
+	"\bis_valid\x18\a \x01(\bR\aisValid\x12\x10\n" +
+	"\x03url\x18\b \x01(\tR\x03url\x12\x16\n" +
+	"\x06vendor\x18\t \x01(\tR\x06vendor\x12\x14\n" +
+	"\x05crc32\x18\n" +
+	" \x01(\rR\x05crc32\"\xe7\a\n" +
+	"\rImageDownload\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n" +
+	"\x03url\x18\x03 \x01(\tR\x03url\x12\x10\n" +
+	"\x03crc\x18\x04 \x01(\rR\x03crc\x12O\n" +
+	"\x0edownload_state\x18\x05 \x01(\x0e2(.device.ImageDownload.ImageDownloadStateR\rdownloadState\x12#\n" +
+	"\rimage_version\x18\x06 \x01(\tR\fimageVersion\x12)\n" +
+	"\x10downloaded_bytes\x18\a \x01(\rR\x0fdownloadedBytes\x12H\n" +
+	"\x06reason\x18\b \x01(\x0e20.device.ImageDownload.ImageDownloadFailureReasonR\x06reason\x12'\n" +
+	"\x0fadditional_info\x18\t \x01(\tR\x0eadditionalInfo\x12\x1f\n" +
+	"\vsave_config\x18\n" +
+	" \x01(\bR\n" +
+	"saveConfig\x12\x1b\n" +
+	"\tlocal_dir\x18\v \x01(\tR\blocalDir\x12I\n" +
+	"\vimage_state\x18\f \x01(\x0e2(.device.ImageDownload.ImageActivateStateR\n" +
+	"imageState\x12\x1b\n" +
+	"\tfile_size\x18\r \x01(\rR\bfileSize\"\xb7\x01\n" +
+	"\x12ImageDownloadState\x12\x14\n" +
+	"\x10DOWNLOAD_UNKNOWN\x10\x00\x12\x16\n" +
+	"\x12DOWNLOAD_SUCCEEDED\x10\x01\x12\x16\n" +
+	"\x12DOWNLOAD_REQUESTED\x10\x02\x12\x14\n" +
+	"\x10DOWNLOAD_STARTED\x10\x03\x12\x13\n" +
+	"\x0fDOWNLOAD_FAILED\x10\x04\x12\x18\n" +
+	"\x14DOWNLOAD_UNSUPPORTED\x10\x05\x12\x16\n" +
+	"\x12DOWNLOAD_CANCELLED\x10\x06\"\x86\x01\n" +
+	"\x1aImageDownloadFailureReason\x12\f\n" +
+	"\bNO_ERROR\x10\x00\x12\x0f\n" +
+	"\vINVALID_URL\x10\x01\x12\x0f\n" +
+	"\vDEVICE_BUSY\x10\x02\x12\x16\n" +
+	"\x12INSUFFICIENT_SPACE\x10\x03\x12\x11\n" +
+	"\rUNKNOWN_ERROR\x10\x04\x12\r\n" +
+	"\tCANCELLED\x10\x05\"\x8c\x01\n" +
+	"\x12ImageActivateState\x12\x11\n" +
+	"\rIMAGE_UNKNOWN\x10\x00\x12\x12\n" +
+	"\x0eIMAGE_INACTIVE\x10\x01\x12\x14\n" +
+	"\x10IMAGE_ACTIVATING\x10\x02\x12\x10\n" +
+	"\fIMAGE_ACTIVE\x10\x03\x12\x13\n" +
+	"\x0fIMAGE_REVERTING\x10\x04\x12\x12\n" +
+	"\x0eIMAGE_REVERTED\x10\x05:\x02\x18\x01\"A\n" +
+	"\x0eImageDownloads\x12+\n" +
+	"\x05items\x18\x02 \x03(\v2\x15.device.ImageDownloadR\x05items:\x02\x18\x01\"-\n" +
+	"\x06Images\x12#\n" +
+	"\x05image\x18\x01 \x03(\v2\r.device.ImageR\x05image\"\xb0\x01\n" +
+	"\bOnuImage\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\tR\aversion\x12\x1e\n" +
+	"\n" +
+	"isCommited\x18\x02 \x01(\bR\n" +
+	"isCommited\x12\x1a\n" +
+	"\bisActive\x18\x03 \x01(\bR\bisActive\x12\x18\n" +
+	"\aisValid\x18\x04 \x01(\bR\aisValid\x12 \n" +
+	"\vproductCode\x18\x05 \x01(\tR\vproductCode\x12\x12\n" +
+	"\x04hash\x18\x06 \x01(\tR\x04hash\"3\n" +
+	"\tOnuImages\x12&\n" +
+	"\x05items\x18\x01 \x03(\v2\x10.device.OnuImageR\x05items\"c\n" +
+	"\x10DeviceImageState\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x122\n" +
+	"\n" +
+	"imageState\x18\x02 \x01(\v2\x12.device.ImageStateR\n" +
+	"imageState\"\x82\b\n" +
+	"\n" +
+	"ImageState\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\tR\aversion\x12L\n" +
+	"\x0edownload_state\x18\x02 \x01(\x0e2%.device.ImageState.ImageDownloadStateR\rdownloadState\x12=\n" +
+	"\x06reason\x18\x03 \x01(\x0e2%.device.ImageState.ImageFailureReasonR\x06reason\x12H\n" +
+	"\vimage_state\x18\x04 \x01(\x0e2'.device.ImageState.ImageActivationStateR\n" +
+	"imageState\"\xd0\x01\n" +
+	"\x12ImageDownloadState\x12\x14\n" +
+	"\x10DOWNLOAD_UNKNOWN\x10\x00\x12\x16\n" +
+	"\x12DOWNLOAD_SUCCEEDED\x10\x01\x12\x16\n" +
+	"\x12DOWNLOAD_REQUESTED\x10\x02\x12\x14\n" +
+	"\x10DOWNLOAD_STARTED\x10\x03\x12\x13\n" +
+	"\x0fDOWNLOAD_FAILED\x10\x04\x12\x18\n" +
+	"\x14DOWNLOAD_UNSUPPORTED\x10\x05\x12\x17\n" +
+	"\x13DOWNLOAD_CANCELLING\x10\x06\x12\x16\n" +
+	"\x12DOWNLOAD_CANCELLED\x10\a\"\xf4\x01\n" +
+	"\x12ImageFailureReason\x12\f\n" +
+	"\bNO_ERROR\x10\x00\x12\x0f\n" +
+	"\vINVALID_URL\x10\x01\x12\x0f\n" +
+	"\vDEVICE_BUSY\x10\x02\x12\x16\n" +
+	"\x12INSUFFICIENT_SPACE\x10\x03\x12\x11\n" +
+	"\rUNKNOWN_ERROR\x10\x04\x12\x18\n" +
+	"\x14CANCELLED_ON_REQUEST\x10\x05\x12\x1a\n" +
+	"\x16CANCELLED_ON_ONU_STATE\x10\x06\x12\x1a\n" +
+	"\x16VENDOR_DEVICE_MISMATCH\x10\a\x12\x17\n" +
+	"\x13OMCI_TRANSFER_ERROR\x10\b\x12\x18\n" +
+	"\x14IMAGE_REFUSED_BY_ONU\x10\t\"\xb8\x02\n" +
+	"\x14ImageActivationState\x12\x11\n" +
+	"\rIMAGE_UNKNOWN\x10\x00\x12\x12\n" +
+	"\x0eIMAGE_INACTIVE\x10\x01\x12\x14\n" +
+	"\x10IMAGE_ACTIVATING\x10\x02\x12\x10\n" +
+	"\fIMAGE_ACTIVE\x10\x03\x12\x14\n" +
+	"\x10IMAGE_COMMITTING\x10\x04\x12\x13\n" +
+	"\x0fIMAGE_COMMITTED\x10\x05\x12\x1d\n" +
+	"\x19IMAGE_ACTIVATION_ABORTING\x10\x06\x12\x1c\n" +
+	"\x18IMAGE_ACTIVATION_ABORTED\x10\a\x12\x19\n" +
+	"\x15IMAGE_COMMIT_ABORTING\x10\b\x12\x18\n" +
+	"\x14IMAGE_COMMIT_ABORTED\x10\t\x12\x15\n" +
+	"\x11IMAGE_DOWNLOADING\x10\n" +
+	"\x12\x1d\n" +
+	"\x19IMAGE_DOWNLOADING_ABORTED\x10\v\"\xb7\x05\n" +
+	"\x04Port\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x14\n" +
+	"\x05label\x18\x02 \x01(\tR\x05label\x12)\n" +
+	"\x04type\x18\x03 \x01(\x0e2\x15.device.Port.PortTypeR\x04type\x129\n" +
+	"\vadmin_state\x18\x05 \x01(\x0e2\x18.common.AdminState.TypesR\n" +
+	"adminState\x129\n" +
+	"\voper_status\x18\x06 \x01(\x0e2\x18.common.OperStatus.TypesR\n" +
+	"operStatus\x12\x1b\n" +
+	"\tdevice_id\x18\a \x01(\tR\bdeviceId\x12+\n" +
+	"\x05peers\x18\b \x03(\v2\x15.device.Port.PeerPortR\x05peers\x12\x1d\n" +
+	"\n" +
+	"rx_packets\x18\t \x01(\x06R\trxPackets\x12\x19\n" +
+	"\brx_bytes\x18\n" +
+	" \x01(\x06R\arxBytes\x12\x1b\n" +
+	"\trx_errors\x18\v \x01(\x06R\brxErrors\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\f \x01(\x06R\ttxPackets\x12\x19\n" +
+	"\btx_bytes\x18\r \x01(\x06R\atxBytes\x12\x1b\n" +
+	"\ttx_errors\x18\x0e \x01(\x06R\btxErrors\x120\n" +
+	"\bofp_port\x18\x0f \x01(\v2\x15.openflow_13.ofp_portR\aofpPort\x1a@\n" +
+	"\bPeerPort\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x17\n" +
+	"\aport_no\x18\x02 \x01(\rR\x06portNo\"s\n" +
+	"\bPortType\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x10\n" +
+	"\fETHERNET_NNI\x10\x01\x12\x10\n" +
+	"\fETHERNET_UNI\x10\x02\x12\v\n" +
+	"\aPON_OLT\x10\x03\x12\v\n" +
+	"\aPON_ONU\x10\x04\x12\r\n" +
+	"\tVENET_OLT\x10\x05\x12\r\n" +
+	"\tVENET_ONU\x10\x06\"+\n" +
+	"\x05Ports\x12\"\n" +
+	"\x05items\x18\x01 \x03(\v2\f.device.PortR\x05items\"\xd8\n" +
+	"\n" +
+	"\x06Device\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
+	"\x04type\x18\x02 \x01(\tR\x04type\x12\x12\n" +
+	"\x04root\x18\x03 \x01(\bR\x04root\x12\x1b\n" +
+	"\tparent_id\x18\x04 \x01(\tR\bparentId\x12$\n" +
+	"\x0eparent_port_no\x18\x14 \x01(\rR\fparentPortNo\x12\x16\n" +
+	"\x06vendor\x18\x05 \x01(\tR\x06vendor\x12\x14\n" +
+	"\x05model\x18\x06 \x01(\tR\x05model\x12)\n" +
+	"\x10hardware_version\x18\a \x01(\tR\x0fhardwareVersion\x12)\n" +
+	"\x10firmware_version\x18\b \x01(\tR\x0ffirmwareVersion\x12&\n" +
+	"\x06images\x18\t \x01(\v2\x0e.device.ImagesR\x06images\x12#\n" +
+	"\rserial_number\x18\n" +
+	" \x01(\tR\fserialNumber\x12\x1b\n" +
+	"\tvendor_id\x18\x18 \x01(\tR\bvendorId\x12)\n" +
+	"\x10adapter_endpoint\x18\x19 \x01(\tR\x0fadapterEndpoint\x12\x12\n" +
+	"\x04vlan\x18\f \x01(\rR\x04vlan\x12\x1f\n" +
+	"\vmac_address\x18\r \x01(\tR\n" +
+	"macAddress\x12#\n" +
+	"\fipv4_address\x18\x0e \x01(\tH\x00R\vipv4Address\x12#\n" +
+	"\fipv6_address\x18\x0f \x01(\tH\x00R\vipv6Address\x12$\n" +
+	"\rhost_and_port\x18\x15 \x01(\tH\x00R\vhostAndPort\x12\x1d\n" +
+	"\n" +
+	"extra_args\x18\x17 \x01(\tR\textraArgs\x12@\n" +
+	"\rproxy_address\x18\x13 \x01(\v2\x1b.device.Device.ProxyAddressR\fproxyAddress\x129\n" +
+	"\vadmin_state\x18\x10 \x01(\x0e2\x18.common.AdminState.TypesR\n" +
+	"adminState\x129\n" +
+	"\voper_status\x18\x11 \x01(\x0e2\x18.common.OperStatus.TypesR\n" +
+	"operStatus\x12\x16\n" +
+	"\x06reason\x18\x16 \x01(\tR\x06reason\x12B\n" +
+	"\x0econnect_status\x18\x12 \x01(\x0e2\x1b.common.ConnectStatus.TypesR\rconnectStatus\x12,\n" +
+	"\x06custom\x18@ \x01(\v2\x14.google.protobuf.AnyR\x06custom\x121\n" +
+	"\n" +
+	"pm_configs\x18\x83\x01 \x01(\v2\x11.device.PmConfigsR\tpmConfigs\x12?\n" +
+	"\x0fimage_downloads\x18\x85\x01 \x03(\v2\x15.device.ImageDownloadR\x0eimageDownloads\x1a\xae\x02\n" +
+	"\fProxyAddress\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x1f\n" +
+	"\vdevice_type\x18\x02 \x01(\tR\n" +
+	"deviceType\x12\x1d\n" +
+	"\n" +
+	"channel_id\x18\x03 \x01(\rR\tchannelId\x12(\n" +
+	"\x10channel_group_id\x18\x04 \x01(\rR\x0echannelGroupId\x12/\n" +
+	"\x13channel_termination\x18\x05 \x01(\tR\x12channelTermination\x12\x15\n" +
+	"\x06onu_id\x18\x06 \x01(\rR\x05onuId\x12$\n" +
+	"\x0eonu_session_id\x18\a \x01(\rR\fonuSessionId\x12)\n" +
+	"\x10adapter_endpoint\x18\b \x01(\tR\x0fadapterEndpointB\t\n" +
+	"\aaddressJ\x04\b\v\x10\f\"\xc2\x01\n" +
+	"\x1aDeviceImageDownloadRequest\x12'\n" +
+	"\tdevice_id\x18\x01 \x03(\v2\n" +
+	".common.IDR\bdeviceId\x12#\n" +
+	"\x05image\x18\x02 \x01(\v2\r.device.ImageR\x05image\x12,\n" +
+	"\x11activateOnSuccess\x18\x03 \x01(\bR\x11activateOnSuccess\x12(\n" +
+	"\x0fcommitOnSuccess\x18\x04 \x01(\bR\x0fcommitOnSuccess\"\x81\x01\n" +
+	"\x12DeviceImageRequest\x12'\n" +
+	"\tdevice_id\x18\x01 \x03(\v2\n" +
+	".common.IDR\bdeviceId\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\tR\aversion\x12(\n" +
+	"\x0fcommitOnSuccess\x18\x03 \x01(\bR\x0fcommitOnSuccess\"_\n" +
+	"\x13DeviceImageResponse\x12H\n" +
+	"\x13device_image_states\x18\x01 \x03(\v2\x18.device.DeviceImageStateR\x11deviceImageStates\"\xa5\x01\n" +
+	"\x10SelfTestResponse\x12?\n" +
+	"\x06result\x18\x01 \x01(\x0e2'.device.SelfTestResponse.SelfTestResultR\x06result\"P\n" +
+	"\x0eSelfTestResult\x12\v\n" +
+	"\aSUCCESS\x10\x00\x12\v\n" +
+	"\aFAILURE\x10\x01\x12\x11\n" +
+	"\rNOT_SUPPORTED\x10\x02\x12\x11\n" +
+	"\rUNKNOWN_ERROR\x10\x03\"/\n" +
+	"\aDevices\x12$\n" +
+	"\x05items\x18\x01 \x03(\v2\x0e.device.DeviceR\x05items\"\xa8\x03\n" +
+	"\x14SimulateAlarmRequest\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1c\n" +
+	"\tindicator\x18\x02 \x01(\tR\tindicator\x12\x17\n" +
+	"\aintf_id\x18\x03 \x01(\tR\x06intfId\x12$\n" +
+	"\x0eport_type_name\x18\x04 \x01(\tR\fportTypeName\x12\"\n" +
+	"\ronu_device_id\x18\x05 \x01(\tR\vonuDeviceId\x123\n" +
+	"\x16inverse_bit_error_rate\x18\x06 \x01(\x05R\x13inverseBitErrorRate\x12\x14\n" +
+	"\x05drift\x18\a \x01(\x05R\x05drift\x12\x17\n" +
+	"\anew_eqd\x18\b \x01(\x05R\x06newEqd\x12*\n" +
+	"\x11onu_serial_number\x18\t \x01(\tR\x0fonuSerialNumber\x12H\n" +
+	"\toperation\x18\n" +
+	" \x01(\x0e2*.device.SimulateAlarmRequest.OperationTypeR\toperation\"%\n" +
+	"\rOperationType\x12\t\n" +
+	"\x05RAISE\x10\x00\x12\t\n" +
+	"\x05CLEAR\x10\x01\"\x90\x01\n" +
+	"\x17OnuSerialNumberOnOLTPon\x12.\n" +
+	"\rolt_device_id\x18\x01 \x01(\v2\n" +
+	".common.IDR\voltDeviceId\x12 \n" +
+	"\x04port\x18\x02 \x01(\v2\f.device.PortR\x04port\x12#\n" +
+	"\rserial_number\x18\x03 \x01(\tR\fserialNumber\"\x99\x01\n" +
+	"\fUpdateDevice\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12#\n" +
+	"\fipv4_address\x18\x02 \x01(\tH\x00R\vipv4Address\x12#\n" +
+	"\fipv6_address\x18\x03 \x01(\tH\x00R\vipv6Address\x12$\n" +
+	"\rhost_and_port\x18\x04 \x01(\tH\x00R\vhostAndPortB\t\n" +
+	"\aaddressBZ\n" +
+	"\x1aorg.opencord.voltha.deviceB\fVolthaDeviceZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_device_proto_rawDescOnce sync.Once
+	file_voltha_protos_device_proto_rawDescData []byte
+)
+
+func file_voltha_protos_device_proto_rawDescGZIP() []byte {
+	file_voltha_protos_device_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_device_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_device_proto_rawDesc), len(file_voltha_protos_device_proto_rawDesc)))
+	})
+	return file_voltha_protos_device_proto_rawDescData
+}
+
+var file_voltha_protos_device_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
+var file_voltha_protos_device_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
+var file_voltha_protos_device_proto_goTypes = []any{
+	(PmConfig_PmType)(0),                          // 0: device.PmConfig.PmType
+	(ImageDownload_ImageDownloadState)(0),         // 1: device.ImageDownload.ImageDownloadState
+	(ImageDownload_ImageDownloadFailureReason)(0), // 2: device.ImageDownload.ImageDownloadFailureReason
+	(ImageDownload_ImageActivateState)(0),         // 3: device.ImageDownload.ImageActivateState
+	(ImageState_ImageDownloadState)(0),            // 4: device.ImageState.ImageDownloadState
+	(ImageState_ImageFailureReason)(0),            // 5: device.ImageState.ImageFailureReason
+	(ImageState_ImageActivationState)(0),          // 6: device.ImageState.ImageActivationState
+	(Port_PortType)(0),                            // 7: device.Port.PortType
+	(SelfTestResponse_SelfTestResult)(0),          // 8: device.SelfTestResponse.SelfTestResult
+	(SimulateAlarmRequest_OperationType)(0),       // 9: device.SimulateAlarmRequest.OperationType
+	(*DeviceType)(nil),                            // 10: device.DeviceType
+	(*DeviceTypes)(nil),                           // 11: device.DeviceTypes
+	(*PmConfig)(nil),                              // 12: device.PmConfig
+	(*PmGroupConfig)(nil),                         // 13: device.PmGroupConfig
+	(*PmConfigs)(nil),                             // 14: device.PmConfigs
+	(*Image)(nil),                                 // 15: device.Image
+	(*ImageDownload)(nil),                         // 16: device.ImageDownload
+	(*ImageDownloads)(nil),                        // 17: device.ImageDownloads
+	(*Images)(nil),                                // 18: device.Images
+	(*OnuImage)(nil),                              // 19: device.OnuImage
+	(*OnuImages)(nil),                             // 20: device.OnuImages
+	(*DeviceImageState)(nil),                      // 21: device.DeviceImageState
+	(*ImageState)(nil),                            // 22: device.ImageState
+	(*Port)(nil),                                  // 23: device.Port
+	(*Ports)(nil),                                 // 24: device.Ports
+	(*Device)(nil),                                // 25: device.Device
+	(*DeviceImageDownloadRequest)(nil),            // 26: device.DeviceImageDownloadRequest
+	(*DeviceImageRequest)(nil),                    // 27: device.DeviceImageRequest
+	(*DeviceImageResponse)(nil),                   // 28: device.DeviceImageResponse
+	(*SelfTestResponse)(nil),                      // 29: device.SelfTestResponse
+	(*Devices)(nil),                               // 30: device.Devices
+	(*SimulateAlarmRequest)(nil),                  // 31: device.SimulateAlarmRequest
+	(*OnuSerialNumberOnOLTPon)(nil),               // 32: device.OnuSerialNumberOnOLTPon
+	(*UpdateDevice)(nil),                          // 33: device.UpdateDevice
+	(*Port_PeerPort)(nil),                         // 34: device.Port.PeerPort
+	(*Device_ProxyAddress)(nil),                   // 35: device.Device.ProxyAddress
+	(common.AdminState_Types)(0),                  // 36: common.AdminState.Types
+	(common.OperStatus_Types)(0),                  // 37: common.OperStatus.Types
+	(*openflow_13.OfpPort)(nil),                   // 38: openflow_13.ofp_port
+	(common.ConnectStatus_Types)(0),               // 39: common.ConnectStatus.Types
+	(*anypb.Any)(nil),                             // 40: google.protobuf.Any
+	(*common.ID)(nil),                             // 41: common.ID
+}
+var file_voltha_protos_device_proto_depIdxs = []int32{
+	10, // 0: device.DeviceTypes.items:type_name -> device.DeviceType
+	0,  // 1: device.PmConfig.type:type_name -> device.PmConfig.PmType
+	12, // 2: device.PmGroupConfig.metrics:type_name -> device.PmConfig
+	13, // 3: device.PmConfigs.groups:type_name -> device.PmGroupConfig
+	12, // 4: device.PmConfigs.metrics:type_name -> device.PmConfig
+	1,  // 5: device.ImageDownload.download_state:type_name -> device.ImageDownload.ImageDownloadState
+	2,  // 6: device.ImageDownload.reason:type_name -> device.ImageDownload.ImageDownloadFailureReason
+	3,  // 7: device.ImageDownload.image_state:type_name -> device.ImageDownload.ImageActivateState
+	16, // 8: device.ImageDownloads.items:type_name -> device.ImageDownload
+	15, // 9: device.Images.image:type_name -> device.Image
+	19, // 10: device.OnuImages.items:type_name -> device.OnuImage
+	22, // 11: device.DeviceImageState.imageState:type_name -> device.ImageState
+	4,  // 12: device.ImageState.download_state:type_name -> device.ImageState.ImageDownloadState
+	5,  // 13: device.ImageState.reason:type_name -> device.ImageState.ImageFailureReason
+	6,  // 14: device.ImageState.image_state:type_name -> device.ImageState.ImageActivationState
+	7,  // 15: device.Port.type:type_name -> device.Port.PortType
+	36, // 16: device.Port.admin_state:type_name -> common.AdminState.Types
+	37, // 17: device.Port.oper_status:type_name -> common.OperStatus.Types
+	34, // 18: device.Port.peers:type_name -> device.Port.PeerPort
+	38, // 19: device.Port.ofp_port:type_name -> openflow_13.ofp_port
+	23, // 20: device.Ports.items:type_name -> device.Port
+	18, // 21: device.Device.images:type_name -> device.Images
+	35, // 22: device.Device.proxy_address:type_name -> device.Device.ProxyAddress
+	36, // 23: device.Device.admin_state:type_name -> common.AdminState.Types
+	37, // 24: device.Device.oper_status:type_name -> common.OperStatus.Types
+	39, // 25: device.Device.connect_status:type_name -> common.ConnectStatus.Types
+	40, // 26: device.Device.custom:type_name -> google.protobuf.Any
+	14, // 27: device.Device.pm_configs:type_name -> device.PmConfigs
+	16, // 28: device.Device.image_downloads:type_name -> device.ImageDownload
+	41, // 29: device.DeviceImageDownloadRequest.device_id:type_name -> common.ID
+	15, // 30: device.DeviceImageDownloadRequest.image:type_name -> device.Image
+	41, // 31: device.DeviceImageRequest.device_id:type_name -> common.ID
+	21, // 32: device.DeviceImageResponse.device_image_states:type_name -> device.DeviceImageState
+	8,  // 33: device.SelfTestResponse.result:type_name -> device.SelfTestResponse.SelfTestResult
+	25, // 34: device.Devices.items:type_name -> device.Device
+	9,  // 35: device.SimulateAlarmRequest.operation:type_name -> device.SimulateAlarmRequest.OperationType
+	41, // 36: device.OnuSerialNumberOnOLTPon.olt_device_id:type_name -> common.ID
+	23, // 37: device.OnuSerialNumberOnOLTPon.port:type_name -> device.Port
+	38, // [38:38] is the sub-list for method output_type
+	38, // [38:38] is the sub-list for method input_type
+	38, // [38:38] is the sub-list for extension type_name
+	38, // [38:38] is the sub-list for extension extendee
+	0,  // [0:38] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_device_proto_init() }
+func file_voltha_protos_device_proto_init() {
+	if File_voltha_protos_device_proto != nil {
+		return
+	}
+	file_voltha_protos_device_proto_msgTypes[15].OneofWrappers = []any{
+		(*Device_Ipv4Address)(nil),
+		(*Device_Ipv6Address)(nil),
+		(*Device_HostAndPort)(nil),
+	}
+	file_voltha_protos_device_proto_msgTypes[23].OneofWrappers = []any{
+		(*UpdateDevice_Ipv4Address)(nil),
+		(*UpdateDevice_Ipv6Address)(nil),
+		(*UpdateDevice_HostAndPort)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_device_proto_rawDesc), len(file_voltha_protos_device_proto_rawDesc)),
+			NumEnums:      10,
+			NumMessages:   26,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_device_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_device_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_device_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_device_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_device_proto = out.File
+	file_voltha_protos_device_proto_goTypes = nil
+	file_voltha_protos_device_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/events.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/events.pb.go
index 695af06..38bd8c3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/events.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/events.pb.go
@@ -1,27 +1,28 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/events.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	timestamp "github.com/golang/protobuf/ptypes/timestamp"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type EventFilterRuleKey_EventFilterRuleType int32
 
@@ -34,83 +35,146 @@
 	EventFilterRuleKey_device_event_type EventFilterRuleKey_EventFilterRuleType = 5
 )
 
-var EventFilterRuleKey_EventFilterRuleType_name = map[int32]string{
-	0: "filter_all",
-	1: "category",
-	2: "sub_category",
-	3: "kpi_event_type",
-	4: "config_event_type",
-	5: "device_event_type",
-}
+// Enum value maps for EventFilterRuleKey_EventFilterRuleType.
+var (
+	EventFilterRuleKey_EventFilterRuleType_name = map[int32]string{
+		0: "filter_all",
+		1: "category",
+		2: "sub_category",
+		3: "kpi_event_type",
+		4: "config_event_type",
+		5: "device_event_type",
+	}
+	EventFilterRuleKey_EventFilterRuleType_value = map[string]int32{
+		"filter_all":        0,
+		"category":          1,
+		"sub_category":      2,
+		"kpi_event_type":    3,
+		"config_event_type": 4,
+		"device_event_type": 5,
+	}
+)
 
-var EventFilterRuleKey_EventFilterRuleType_value = map[string]int32{
-	"filter_all":        0,
-	"category":          1,
-	"sub_category":      2,
-	"kpi_event_type":    3,
-	"config_event_type": 4,
-	"device_event_type": 5,
+func (x EventFilterRuleKey_EventFilterRuleType) Enum() *EventFilterRuleKey_EventFilterRuleType {
+	p := new(EventFilterRuleKey_EventFilterRuleType)
+	*p = x
+	return p
 }
 
 func (x EventFilterRuleKey_EventFilterRuleType) String() string {
-	return proto.EnumName(EventFilterRuleKey_EventFilterRuleType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventFilterRuleKey_EventFilterRuleType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[0].Descriptor()
+}
+
+func (EventFilterRuleKey_EventFilterRuleType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[0]
+}
+
+func (x EventFilterRuleKey_EventFilterRuleType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventFilterRuleKey_EventFilterRuleType.Descriptor instead.
 func (EventFilterRuleKey_EventFilterRuleType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{0, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type ConfigEventType_Types int32
 
 const (
-	ConfigEventType_add    ConfigEventType_Types = 0
-	ConfigEventType_remove ConfigEventType_Types = 1
-	ConfigEventType_update ConfigEventType_Types = 2
+	ConfigEventType_add    ConfigEventType_Types = 0 // A new config has been added
+	ConfigEventType_remove ConfigEventType_Types = 1 // A config has been removed
+	ConfigEventType_update ConfigEventType_Types = 2 // A config has been updated
 )
 
-var ConfigEventType_Types_name = map[int32]string{
-	0: "add",
-	1: "remove",
-	2: "update",
-}
+// Enum value maps for ConfigEventType_Types.
+var (
+	ConfigEventType_Types_name = map[int32]string{
+		0: "add",
+		1: "remove",
+		2: "update",
+	}
+	ConfigEventType_Types_value = map[string]int32{
+		"add":    0,
+		"remove": 1,
+		"update": 2,
+	}
+)
 
-var ConfigEventType_Types_value = map[string]int32{
-	"add":    0,
-	"remove": 1,
-	"update": 2,
+func (x ConfigEventType_Types) Enum() *ConfigEventType_Types {
+	p := new(ConfigEventType_Types)
+	*p = x
+	return p
 }
 
 func (x ConfigEventType_Types) String() string {
-	return proto.EnumName(ConfigEventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ConfigEventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[1].Descriptor()
+}
+
+func (ConfigEventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[1]
+}
+
+func (x ConfigEventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ConfigEventType_Types.Descriptor instead.
 func (ConfigEventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{4, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{4, 0}
 }
 
 type KpiEventType_Types int32
 
 const (
-	KpiEventType_slice KpiEventType_Types = 0
-	KpiEventType_ts    KpiEventType_Types = 1
+	KpiEventType_slice KpiEventType_Types = 0 // slice: a set of path/metric data for same time-stamp
+	KpiEventType_ts    KpiEventType_Types = 1 // time-series: array of data for same metric
 )
 
-var KpiEventType_Types_name = map[int32]string{
-	0: "slice",
-	1: "ts",
-}
+// Enum value maps for KpiEventType_Types.
+var (
+	KpiEventType_Types_name = map[int32]string{
+		0: "slice",
+		1: "ts",
+	}
+	KpiEventType_Types_value = map[string]int32{
+		"slice": 0,
+		"ts":    1,
+	}
+)
 
-var KpiEventType_Types_value = map[string]int32{
-	"slice": 0,
-	"ts":    1,
+func (x KpiEventType_Types) Enum() *KpiEventType_Types {
+	p := new(KpiEventType_Types)
+	*p = x
+	return p
 }
 
 func (x KpiEventType_Types) String() string {
-	return proto.EnumName(KpiEventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (KpiEventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[2].Descriptor()
+}
+
+func (KpiEventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[2]
+}
+
+func (x KpiEventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use KpiEventType_Types.Descriptor instead.
 func (KpiEventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{6, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type EventCategory_Types int32
@@ -121,33 +185,54 @@
 	EventCategory_EQUIPMENT     EventCategory_Types = 2
 	EventCategory_SERVICE       EventCategory_Types = 3
 	EventCategory_PROCESSING    EventCategory_Types = 4
-	EventCategory_SECURITY      EventCategory_Types = 5
+	EventCategory_SECURITY      EventCategory_Types = 5 // Add new event areas here
 )
 
-var EventCategory_Types_name = map[int32]string{
-	0: "COMMUNICATION",
-	1: "ENVIRONMENT",
-	2: "EQUIPMENT",
-	3: "SERVICE",
-	4: "PROCESSING",
-	5: "SECURITY",
-}
+// Enum value maps for EventCategory_Types.
+var (
+	EventCategory_Types_name = map[int32]string{
+		0: "COMMUNICATION",
+		1: "ENVIRONMENT",
+		2: "EQUIPMENT",
+		3: "SERVICE",
+		4: "PROCESSING",
+		5: "SECURITY",
+	}
+	EventCategory_Types_value = map[string]int32{
+		"COMMUNICATION": 0,
+		"ENVIRONMENT":   1,
+		"EQUIPMENT":     2,
+		"SERVICE":       3,
+		"PROCESSING":    4,
+		"SECURITY":      5,
+	}
+)
 
-var EventCategory_Types_value = map[string]int32{
-	"COMMUNICATION": 0,
-	"ENVIRONMENT":   1,
-	"EQUIPMENT":     2,
-	"SERVICE":       3,
-	"PROCESSING":    4,
-	"SECURITY":      5,
+func (x EventCategory_Types) Enum() *EventCategory_Types {
+	p := new(EventCategory_Types)
+	*p = x
+	return p
 }
 
 func (x EventCategory_Types) String() string {
-	return proto.EnumName(EventCategory_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventCategory_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[3].Descriptor()
+}
+
+func (EventCategory_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[3]
+}
+
+func (x EventCategory_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventCategory_Types.Descriptor instead.
 func (EventCategory_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{14, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{16, 0}
 }
 
 type EventSubCategory_Types int32
@@ -158,33 +243,54 @@
 	EventSubCategory_ONT  EventSubCategory_Types = 2
 	EventSubCategory_ONU  EventSubCategory_Types = 3
 	EventSubCategory_NNI  EventSubCategory_Types = 4
-	EventSubCategory_NONE EventSubCategory_Types = 5
+	EventSubCategory_NONE EventSubCategory_Types = 5 //Adding None for RPC Events
 )
 
-var EventSubCategory_Types_name = map[int32]string{
-	0: "PON",
-	1: "OLT",
-	2: "ONT",
-	3: "ONU",
-	4: "NNI",
-	5: "NONE",
-}
+// Enum value maps for EventSubCategory_Types.
+var (
+	EventSubCategory_Types_name = map[int32]string{
+		0: "PON",
+		1: "OLT",
+		2: "ONT",
+		3: "ONU",
+		4: "NNI",
+		5: "NONE",
+	}
+	EventSubCategory_Types_value = map[string]int32{
+		"PON":  0,
+		"OLT":  1,
+		"ONT":  2,
+		"ONU":  3,
+		"NNI":  4,
+		"NONE": 5,
+	}
+)
 
-var EventSubCategory_Types_value = map[string]int32{
-	"PON":  0,
-	"OLT":  1,
-	"ONT":  2,
-	"ONU":  3,
-	"NNI":  4,
-	"NONE": 5,
+func (x EventSubCategory_Types) Enum() *EventSubCategory_Types {
+	p := new(EventSubCategory_Types)
+	*p = x
+	return p
 }
 
 func (x EventSubCategory_Types) String() string {
-	return proto.EnumName(EventSubCategory_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventSubCategory_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[4].Descriptor()
+}
+
+func (EventSubCategory_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[4]
+}
+
+func (x EventSubCategory_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventSubCategory_Types.Descriptor instead.
 func (EventSubCategory_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{15, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{17, 0}
 }
 
 type EventType_Types int32
@@ -195,641 +301,843 @@
 	EventType_KPI_EVENT2   EventType_Types = 2
 	EventType_DEVICE_EVENT EventType_Types = 3
 	EventType_RPC_EVENT    EventType_Types = 4
+	EventType_KPI_EVENT3   EventType_Types = 5
 )
 
-var EventType_Types_name = map[int32]string{
-	0: "CONFIG_EVENT",
-	1: "KPI_EVENT",
-	2: "KPI_EVENT2",
-	3: "DEVICE_EVENT",
-	4: "RPC_EVENT",
-}
+// Enum value maps for EventType_Types.
+var (
+	EventType_Types_name = map[int32]string{
+		0: "CONFIG_EVENT",
+		1: "KPI_EVENT",
+		2: "KPI_EVENT2",
+		3: "DEVICE_EVENT",
+		4: "RPC_EVENT",
+		5: "KPI_EVENT3",
+	}
+	EventType_Types_value = map[string]int32{
+		"CONFIG_EVENT": 0,
+		"KPI_EVENT":    1,
+		"KPI_EVENT2":   2,
+		"DEVICE_EVENT": 3,
+		"RPC_EVENT":    4,
+		"KPI_EVENT3":   5,
+	}
+)
 
-var EventType_Types_value = map[string]int32{
-	"CONFIG_EVENT": 0,
-	"KPI_EVENT":    1,
-	"KPI_EVENT2":   2,
-	"DEVICE_EVENT": 3,
-	"RPC_EVENT":    4,
+func (x EventType_Types) Enum() *EventType_Types {
+	p := new(EventType_Types)
+	*p = x
+	return p
 }
 
 func (x EventType_Types) String() string {
-	return proto.EnumName(EventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[5].Descriptor()
+}
+
+func (EventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[5]
+}
+
+func (x EventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventType_Types.Descriptor instead.
 func (EventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{16, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{18, 0}
 }
 
 type EventFilterRuleKey struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilterRuleKey) Reset()         { *m = EventFilterRuleKey{} }
-func (m *EventFilterRuleKey) String() string { return proto.CompactTextString(m) }
-func (*EventFilterRuleKey) ProtoMessage()    {}
+func (x *EventFilterRuleKey) Reset() {
+	*x = EventFilterRuleKey{}
+	mi := &file_voltha_protos_events_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilterRuleKey) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilterRuleKey) ProtoMessage() {}
+
+func (x *EventFilterRuleKey) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilterRuleKey.ProtoReflect.Descriptor instead.
 func (*EventFilterRuleKey) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *EventFilterRuleKey) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilterRuleKey.Unmarshal(m, b)
-}
-func (m *EventFilterRuleKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilterRuleKey.Marshal(b, m, deterministic)
-}
-func (m *EventFilterRuleKey) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilterRuleKey.Merge(m, src)
-}
-func (m *EventFilterRuleKey) XXX_Size() int {
-	return xxx_messageInfo_EventFilterRuleKey.Size(m)
-}
-func (m *EventFilterRuleKey) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilterRuleKey.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilterRuleKey proto.InternalMessageInfo
-
 type EventFilterRule struct {
-	Key                  EventFilterRuleKey_EventFilterRuleType `protobuf:"varint,1,opt,name=key,proto3,enum=event.EventFilterRuleKey_EventFilterRuleType" json:"key,omitempty"`
-	Value                string                                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
-	XXX_unrecognized     []byte                                 `json:"-"`
-	XXX_sizecache        int32                                  `json:"-"`
+	state         protoimpl.MessageState                 `protogen:"open.v1"`
+	Key           EventFilterRuleKey_EventFilterRuleType `protobuf:"varint,1,opt,name=key,proto3,enum=event.EventFilterRuleKey_EventFilterRuleType" json:"key,omitempty"`
+	Value         string                                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilterRule) Reset()         { *m = EventFilterRule{} }
-func (m *EventFilterRule) String() string { return proto.CompactTextString(m) }
-func (*EventFilterRule) ProtoMessage()    {}
+func (x *EventFilterRule) Reset() {
+	*x = EventFilterRule{}
+	mi := &file_voltha_protos_events_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilterRule) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilterRule) ProtoMessage() {}
+
+func (x *EventFilterRule) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilterRule.ProtoReflect.Descriptor instead.
 func (*EventFilterRule) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{1}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *EventFilterRule) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilterRule.Unmarshal(m, b)
-}
-func (m *EventFilterRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilterRule.Marshal(b, m, deterministic)
-}
-func (m *EventFilterRule) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilterRule.Merge(m, src)
-}
-func (m *EventFilterRule) XXX_Size() int {
-	return xxx_messageInfo_EventFilterRule.Size(m)
-}
-func (m *EventFilterRule) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilterRule.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilterRule proto.InternalMessageInfo
-
-func (m *EventFilterRule) GetKey() EventFilterRuleKey_EventFilterRuleType {
-	if m != nil {
-		return m.Key
+func (x *EventFilterRule) GetKey() EventFilterRuleKey_EventFilterRuleType {
+	if x != nil {
+		return x.Key
 	}
 	return EventFilterRuleKey_filter_all
 }
 
-func (m *EventFilterRule) GetValue() string {
-	if m != nil {
-		return m.Value
+func (x *EventFilterRule) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
 type EventFilter struct {
-	Id                   string             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Enable               bool               `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`
-	DeviceId             string             `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	EventType            string             `protobuf:"bytes,4,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"`
-	Rules                []*EventFilterRule `protobuf:"bytes,5,rep,name=rules,proto3" json:"rules,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Enable        bool                   `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`
+	DeviceId      string                 `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	EventType     string                 `protobuf:"bytes,4,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"`
+	Rules         []*EventFilterRule     `protobuf:"bytes,5,rep,name=rules,proto3" json:"rules,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilter) Reset()         { *m = EventFilter{} }
-func (m *EventFilter) String() string { return proto.CompactTextString(m) }
-func (*EventFilter) ProtoMessage()    {}
+func (x *EventFilter) Reset() {
+	*x = EventFilter{}
+	mi := &file_voltha_protos_events_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilter) ProtoMessage() {}
+
+func (x *EventFilter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilter.ProtoReflect.Descriptor instead.
 func (*EventFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{2}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *EventFilter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilter.Unmarshal(m, b)
-}
-func (m *EventFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilter.Marshal(b, m, deterministic)
-}
-func (m *EventFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilter.Merge(m, src)
-}
-func (m *EventFilter) XXX_Size() int {
-	return xxx_messageInfo_EventFilter.Size(m)
-}
-func (m *EventFilter) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilter proto.InternalMessageInfo
-
-func (m *EventFilter) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *EventFilter) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *EventFilter) GetEnable() bool {
-	if m != nil {
-		return m.Enable
+func (x *EventFilter) GetEnable() bool {
+	if x != nil {
+		return x.Enable
 	}
 	return false
 }
 
-func (m *EventFilter) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *EventFilter) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *EventFilter) GetEventType() string {
-	if m != nil {
-		return m.EventType
+func (x *EventFilter) GetEventType() string {
+	if x != nil {
+		return x.EventType
 	}
 	return ""
 }
 
-func (m *EventFilter) GetRules() []*EventFilterRule {
-	if m != nil {
-		return m.Rules
+func (x *EventFilter) GetRules() []*EventFilterRule {
+	if x != nil {
+		return x.Rules
 	}
 	return nil
 }
 
 type EventFilters struct {
-	Filters              []*EventFilter `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Filters       []*EventFilter         `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilters) Reset()         { *m = EventFilters{} }
-func (m *EventFilters) String() string { return proto.CompactTextString(m) }
-func (*EventFilters) ProtoMessage()    {}
+func (x *EventFilters) Reset() {
+	*x = EventFilters{}
+	mi := &file_voltha_protos_events_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilters) ProtoMessage() {}
+
+func (x *EventFilters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilters.ProtoReflect.Descriptor instead.
 func (*EventFilters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{3}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *EventFilters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilters.Unmarshal(m, b)
-}
-func (m *EventFilters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilters.Marshal(b, m, deterministic)
-}
-func (m *EventFilters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilters.Merge(m, src)
-}
-func (m *EventFilters) XXX_Size() int {
-	return xxx_messageInfo_EventFilters.Size(m)
-}
-func (m *EventFilters) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilters proto.InternalMessageInfo
-
-func (m *EventFilters) GetFilters() []*EventFilter {
-	if m != nil {
-		return m.Filters
+func (x *EventFilters) GetFilters() []*EventFilter {
+	if x != nil {
+		return x.Filters
 	}
 	return nil
 }
 
 type ConfigEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ConfigEventType) Reset()         { *m = ConfigEventType{} }
-func (m *ConfigEventType) String() string { return proto.CompactTextString(m) }
-func (*ConfigEventType) ProtoMessage()    {}
+func (x *ConfigEventType) Reset() {
+	*x = ConfigEventType{}
+	mi := &file_voltha_protos_events_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ConfigEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConfigEventType) ProtoMessage() {}
+
+func (x *ConfigEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConfigEventType.ProtoReflect.Descriptor instead.
 func (*ConfigEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{4}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{4}
 }
 
-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 (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)
-}
-func (m *ConfigEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConfigEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigEventType proto.InternalMessageInfo
-
 type ConfigEvent struct {
-	Type                 ConfigEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=event.ConfigEventType_Types" json:"type,omitempty"`
-	Hash                 string                `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
-	Data                 string                `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          ConfigEventType_Types  `protobuf:"varint,1,opt,name=type,proto3,enum=event.ConfigEventType_Types" json:"type,omitempty"`
+	Hash          string                 `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` // hash for this change, can be used for quick lookup
+	Data          string                 `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` // the actual new data, in json format
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ConfigEvent) Reset()         { *m = ConfigEvent{} }
-func (m *ConfigEvent) String() string { return proto.CompactTextString(m) }
-func (*ConfigEvent) ProtoMessage()    {}
+func (x *ConfigEvent) Reset() {
+	*x = ConfigEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ConfigEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConfigEvent) ProtoMessage() {}
+
+func (x *ConfigEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConfigEvent.ProtoReflect.Descriptor instead.
 func (*ConfigEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{5}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{5}
 }
 
-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 (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)
-}
-func (m *ConfigEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConfigEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigEvent proto.InternalMessageInfo
-
-func (m *ConfigEvent) GetType() ConfigEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *ConfigEvent) GetType() ConfigEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return ConfigEventType_add
 }
 
-func (m *ConfigEvent) GetHash() string {
-	if m != nil {
-		return m.Hash
+func (x *ConfigEvent) GetHash() string {
+	if x != nil {
+		return x.Hash
 	}
 	return ""
 }
 
-func (m *ConfigEvent) GetData() string {
-	if m != nil {
-		return m.Data
+func (x *ConfigEvent) GetData() string {
+	if x != nil {
+		return x.Data
 	}
 	return ""
 }
 
 type KpiEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEventType) Reset()         { *m = KpiEventType{} }
-func (m *KpiEventType) String() string { return proto.CompactTextString(m) }
-func (*KpiEventType) ProtoMessage()    {}
+func (x *KpiEventType) Reset() {
+	*x = KpiEventType{}
+	mi := &file_voltha_protos_events_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEventType) ProtoMessage() {}
+
+func (x *KpiEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEventType.ProtoReflect.Descriptor instead.
 func (*KpiEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{6}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{6}
 }
 
-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 (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)
-}
-func (m *KpiEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEventType proto.InternalMessageInfo
-
-//
 // Struct to convey a dictionary of metric metadata.
 type MetricMetaData struct {
-	Title           string  `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
-	Ts              float64 `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	LogicalDeviceId string  `protobuf:"bytes,3,opt,name=logical_device_id,json=logicalDeviceId,proto3" json:"logical_device_id,omitempty"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	Title           string                 `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`                                              // Metric group or individual metric name
+	Ts              float64                `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`                                                  // UTC time-stamp of data (seconds since epoch) of
+	LogicalDeviceId string                 `protobuf:"bytes,3,opt,name=logical_device_id,json=logicalDeviceId,proto3" json:"logical_device_id,omitempty"` // The logical device ID of the VOLTHA
 	// (equivalent to the DPID that ONOS has
 	// for the VOLTHA device without the
-	//  'of:' prefix
-	SerialNo             string            `protobuf:"bytes,4,opt,name=serial_no,json=serialNo,proto3" json:"serial_no,omitempty"`
-	DeviceId             string            `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Context              map[string]string `protobuf:"bytes,6,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	Uuid                 string            `protobuf:"bytes,7,opt,name=uuid,proto3" json:"uuid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	//
+	//	'of:' prefix
+	SerialNo      string            `protobuf:"bytes,4,opt,name=serial_no,json=serialNo,proto3" json:"serial_no,omitempty"`                                                         // The OLT, ONU, ... device serial number
+	DeviceId      string            `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`                                                         // The OLT, ONU, ... physical device ID
+	Context       map[string]string `protobuf:"bytes,6,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Name value pairs that provide additional
+	Uuid          string            `protobuf:"bytes,7,opt,name=uuid,proto3" json:"uuid,omitempty"`                                                                                 // Transaction identifier used to match On
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricMetaData) Reset()         { *m = MetricMetaData{} }
-func (m *MetricMetaData) String() string { return proto.CompactTextString(m) }
-func (*MetricMetaData) ProtoMessage()    {}
+func (x *MetricMetaData) Reset() {
+	*x = MetricMetaData{}
+	mi := &file_voltha_protos_events_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricMetaData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricMetaData) ProtoMessage() {}
+
+func (x *MetricMetaData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricMetaData.ProtoReflect.Descriptor instead.
 func (*MetricMetaData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{7}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{7}
 }
 
-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 (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)
-}
-func (m *MetricMetaData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricMetaData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricMetaData proto.InternalMessageInfo
-
-func (m *MetricMetaData) GetTitle() string {
-	if m != nil {
-		return m.Title
+func (x *MetricMetaData) GetTitle() string {
+	if x != nil {
+		return x.Title
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetTs() float64 {
-	if m != nil {
-		return m.Ts
+func (x *MetricMetaData) GetTs() float64 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *MetricMetaData) GetLogicalDeviceId() string {
-	if m != nil {
-		return m.LogicalDeviceId
+func (x *MetricMetaData) GetLogicalDeviceId() string {
+	if x != nil {
+		return x.LogicalDeviceId
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetSerialNo() string {
-	if m != nil {
-		return m.SerialNo
+func (x *MetricMetaData) GetSerialNo() string {
+	if x != nil {
+		return x.SerialNo
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *MetricMetaData) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetContext() map[string]string {
-	if m != nil {
-		return m.Context
+func (x *MetricMetaData) GetContext() map[string]string {
+	if x != nil {
+		return x.Context
 	}
 	return nil
 }
 
-func (m *MetricMetaData) GetUuid() string {
-	if m != nil {
-		return m.Uuid
+func (x *MetricMetaData) GetUuid() string {
+	if x != nil {
+		return x.Uuid
 	}
 	return ""
 }
 
-//
 // Struct to convey a dictionary of metric->value pairs. Typically used in
 // pure shared-timestamp or shared-timestamp + shared object prefix situations.
 type MetricValuePairs struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Metric / value pairs.
-	Metrics              map[string]float32 `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	Metrics       map[string]float32 `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricValuePairs) Reset()         { *m = MetricValuePairs{} }
-func (m *MetricValuePairs) String() string { return proto.CompactTextString(m) }
-func (*MetricValuePairs) ProtoMessage()    {}
+func (x *MetricValuePairs) Reset() {
+	*x = MetricValuePairs{}
+	mi := &file_voltha_protos_events_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricValuePairs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricValuePairs) ProtoMessage() {}
+
+func (x *MetricValuePairs) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricValuePairs.ProtoReflect.Descriptor instead.
 func (*MetricValuePairs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{8}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{8}
 }
 
-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 (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)
-}
-func (m *MetricValuePairs) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricValuePairs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricValuePairs proto.InternalMessageInfo
-
-func (m *MetricValuePairs) GetMetrics() map[string]float32 {
-	if m != nil {
-		return m.Metrics
+func (x *MetricValuePairs) GetMetrics() map[string]float32 {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-//
 // Struct to group metadata for a metric (or group of metrics) with the key-value
 // pairs of collected metrics
 type MetricInformation struct {
-	Metadata             *MetricMetaData    `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	Metrics              map[string]float32 `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Metadata      *MetricMetaData        `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	Metrics       map[string]float32     `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricInformation) Reset()         { *m = MetricInformation{} }
-func (m *MetricInformation) String() string { return proto.CompactTextString(m) }
-func (*MetricInformation) ProtoMessage()    {}
+func (x *MetricInformation) Reset() {
+	*x = MetricInformation{}
+	mi := &file_voltha_protos_events_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricInformation) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricInformation) ProtoMessage() {}
+
+func (x *MetricInformation) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricInformation.ProtoReflect.Descriptor instead.
 func (*MetricInformation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{9}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{9}
 }
 
-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 (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)
-}
-func (m *MetricInformation) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricInformation.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricInformation proto.InternalMessageInfo
-
-func (m *MetricInformation) GetMetadata() *MetricMetaData {
-	if m != nil {
-		return m.Metadata
+func (x *MetricInformation) GetMetadata() *MetricMetaData {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func (m *MetricInformation) GetMetrics() map[string]float32 {
-	if m != nil {
-		return m.Metrics
+func (x *MetricInformation) GetMetrics() map[string]float32 {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-//
+// Struct to group metadata for a metric (or group of metrics) with the key-value
+// pairs of collected metrics using 64-bit double precision floating point.
+// This supports both floating-point metrics and large integer counters up to 2^53
+// (e.g., FEC counters, GEM counters, optical power levels).
+type MetricInformation64 struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Metadata      *MetricMetaData        `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	Metrics       map[string]float64     `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *MetricInformation64) Reset() {
+	*x = MetricInformation64{}
+	mi := &file_voltha_protos_events_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricInformation64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricInformation64) ProtoMessage() {}
+
+func (x *MetricInformation64) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricInformation64.ProtoReflect.Descriptor instead.
+func (*MetricInformation64) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *MetricInformation64) GetMetadata() *MetricMetaData {
+	if x != nil {
+		return x.Metadata
+	}
+	return nil
+}
+
+func (x *MetricInformation64) GetMetrics() map[string]float64 {
+	if x != nil {
+		return x.Metrics
+	}
+	return nil
+}
+
 // Legacy KPI Event structured.  In mid-August, the KPI event format was updated
-//                               to a more easily parsable format. See VOL-1140
-//                               for more information.
+//
+//	to a more easily parsable format. See VOL-1140
+//	for more information.
 type KpiEvent struct {
-	Type                 KpiEventType_Types           `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
-	Ts                   float32                      `protobuf:"fixed32,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	Prefixes             map[string]*MetricValuePairs `protobuf:"bytes,3,rep,name=prefixes,proto3" json:"prefixes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	state         protoimpl.MessageState       `protogen:"open.v1"`
+	Type          KpiEventType_Types           `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
+	Ts            float32                      `protobuf:"fixed32,2,opt,name=ts,proto3" json:"ts,omitempty"` // UTC time-stamp of data in slice mode (seconds since epoc)
+	Prefixes      map[string]*MetricValuePairs `protobuf:"bytes,3,rep,name=prefixes,proto3" json:"prefixes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEvent) Reset()         { *m = KpiEvent{} }
-func (m *KpiEvent) String() string { return proto.CompactTextString(m) }
-func (*KpiEvent) ProtoMessage()    {}
+func (x *KpiEvent) Reset() {
+	*x = KpiEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEvent) ProtoMessage() {}
+
+func (x *KpiEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEvent.ProtoReflect.Descriptor instead.
 func (*KpiEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{10}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{11}
 }
 
-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 (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)
-}
-func (m *KpiEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEvent proto.InternalMessageInfo
-
-func (m *KpiEvent) GetType() KpiEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *KpiEvent) GetType() KpiEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return KpiEventType_slice
 }
 
-func (m *KpiEvent) GetTs() float32 {
-	if m != nil {
-		return m.Ts
+func (x *KpiEvent) GetTs() float32 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *KpiEvent) GetPrefixes() map[string]*MetricValuePairs {
-	if m != nil {
-		return m.Prefixes
+func (x *KpiEvent) GetPrefixes() map[string]*MetricValuePairs {
+	if x != nil {
+		return x.Prefixes
 	}
 	return nil
 }
 
 type KpiEvent2 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Type of KPI Event
 	Type KpiEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
 	// Fields used when for slice:
-	Ts                   float64              `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	SliceData            []*MetricInformation `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Ts            float64              `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"` // UTC time-stamp of data in slice mode (seconds since epoch)
+	SliceData     []*MetricInformation `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEvent2) Reset()         { *m = KpiEvent2{} }
-func (m *KpiEvent2) String() string { return proto.CompactTextString(m) }
-func (*KpiEvent2) ProtoMessage()    {}
+func (x *KpiEvent2) Reset() {
+	*x = KpiEvent2{}
+	mi := &file_voltha_protos_events_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEvent2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEvent2) ProtoMessage() {}
+
+func (x *KpiEvent2) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEvent2.ProtoReflect.Descriptor instead.
 func (*KpiEvent2) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{11}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{12}
 }
 
-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 (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)
-}
-func (m *KpiEvent2) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEvent2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEvent2 proto.InternalMessageInfo
-
-func (m *KpiEvent2) GetType() KpiEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *KpiEvent2) GetType() KpiEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return KpiEventType_slice
 }
 
-func (m *KpiEvent2) GetTs() float64 {
-	if m != nil {
-		return m.Ts
+func (x *KpiEvent2) GetTs() float64 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *KpiEvent2) GetSliceData() []*MetricInformation {
-	if m != nil {
-		return m.SliceData
+func (x *KpiEvent2) GetSliceData() []*MetricInformation {
+	if x != nil {
+		return x.SliceData
 	}
 	return nil
 }
 
-//
+// KpiEvent3 with support for 64-bit unsigned integer counters.
+// Use this for metrics that require full 64-bit precision (e.g., FEC counters, GEM counters).
+type KpiEvent3 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Type of KPI Event
+	Type KpiEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
+	// Fields used when for slice:
+	Ts            float64                `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"` // UTC time-stamp of data in slice mode (seconds since epoch)
+	SliceData     []*MetricInformation64 `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *KpiEvent3) Reset() {
+	*x = KpiEvent3{}
+	mi := &file_voltha_protos_events_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEvent3) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEvent3) ProtoMessage() {}
+
+func (x *KpiEvent3) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEvent3.ProtoReflect.Descriptor instead.
+func (*KpiEvent3) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *KpiEvent3) GetType() KpiEventType_Types {
+	if x != nil {
+		return x.Type
+	}
+	return KpiEventType_slice
+}
+
+func (x *KpiEvent3) GetTs() float64 {
+	if x != nil {
+		return x.Ts
+	}
+	return 0
+}
+
+func (x *KpiEvent3) GetSliceData() []*MetricInformation64 {
+	if x != nil {
+		return x.SliceData
+	}
+	return nil
+}
+
 // Describes the events specific to device
 type DeviceEvent struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Identifier of the originating resource of the event, for ex: device_id
 	ResourceId string `protobuf:"bytes,1,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
 	// device_event_name indicates clearly the name of the device event
@@ -837,68 +1145,72 @@
 	// Textual explanation of the device event
 	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
 	// Key/Value storage for extra information that may give context to the event
-	Context              map[string]string `protobuf:"bytes,4,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Context       map[string]string `protobuf:"bytes,4,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceEvent) Reset()         { *m = DeviceEvent{} }
-func (m *DeviceEvent) String() string { return proto.CompactTextString(m) }
-func (*DeviceEvent) ProtoMessage()    {}
+func (x *DeviceEvent) Reset() {
+	*x = DeviceEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceEvent) ProtoMessage() {}
+
+func (x *DeviceEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceEvent.ProtoReflect.Descriptor instead.
 func (*DeviceEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{12}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *DeviceEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceEvent.Unmarshal(m, b)
-}
-func (m *DeviceEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceEvent.Marshal(b, m, deterministic)
-}
-func (m *DeviceEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceEvent.Merge(m, src)
-}
-func (m *DeviceEvent) XXX_Size() int {
-	return xxx_messageInfo_DeviceEvent.Size(m)
-}
-func (m *DeviceEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceEvent proto.InternalMessageInfo
-
-func (m *DeviceEvent) GetResourceId() string {
-	if m != nil {
-		return m.ResourceId
+func (x *DeviceEvent) GetResourceId() string {
+	if x != nil {
+		return x.ResourceId
 	}
 	return ""
 }
 
-func (m *DeviceEvent) GetDeviceEventName() string {
-	if m != nil {
-		return m.DeviceEventName
+func (x *DeviceEvent) GetDeviceEventName() string {
+	if x != nil {
+		return x.DeviceEventName
 	}
 	return ""
 }
 
-func (m *DeviceEvent) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *DeviceEvent) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
-func (m *DeviceEvent) GetContext() map[string]string {
-	if m != nil {
-		return m.Context
+func (x *DeviceEvent) GetContext() map[string]string {
+	if x != nil {
+		return x.Context
 	}
 	return nil
 }
 
-//
 // Describes the events specific to an RPC request
 type RPCEvent struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// RPC name
 	Rpc string `protobuf:"bytes,1,opt,name=rpc,proto3" json:"rpc,omitempty"`
 	// The operation id of that request.  Can be a log correlation ID
@@ -912,197 +1224,213 @@
 	// Textual explanation of the event
 	Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
 	// Key/Value storage for extra information that may give context to the event
-	Context map[string]string `protobuf:"bytes,7,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Context map[string]string `protobuf:"bytes,7,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// Status of the RPC Event
-	Status               *common.OperationResp `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Status        *common.OperationResp `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *RPCEvent) Reset()         { *m = RPCEvent{} }
-func (m *RPCEvent) String() string { return proto.CompactTextString(m) }
-func (*RPCEvent) ProtoMessage()    {}
+func (x *RPCEvent) Reset() {
+	*x = RPCEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RPCEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RPCEvent) ProtoMessage() {}
+
+func (x *RPCEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RPCEvent.ProtoReflect.Descriptor instead.
 func (*RPCEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{13}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *RPCEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RPCEvent.Unmarshal(m, b)
-}
-func (m *RPCEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RPCEvent.Marshal(b, m, deterministic)
-}
-func (m *RPCEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RPCEvent.Merge(m, src)
-}
-func (m *RPCEvent) XXX_Size() int {
-	return xxx_messageInfo_RPCEvent.Size(m)
-}
-func (m *RPCEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_RPCEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RPCEvent proto.InternalMessageInfo
-
-func (m *RPCEvent) GetRpc() string {
-	if m != nil {
-		return m.Rpc
+func (x *RPCEvent) GetRpc() string {
+	if x != nil {
+		return x.Rpc
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetOperationId() string {
-	if m != nil {
-		return m.OperationId
+func (x *RPCEvent) GetOperationId() string {
+	if x != nil {
+		return x.OperationId
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetService() string {
-	if m != nil {
-		return m.Service
+func (x *RPCEvent) GetService() string {
+	if x != nil {
+		return x.Service
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetStackId() string {
-	if m != nil {
-		return m.StackId
+func (x *RPCEvent) GetStackId() string {
+	if x != nil {
+		return x.StackId
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetResourceId() string {
-	if m != nil {
-		return m.ResourceId
+func (x *RPCEvent) GetResourceId() string {
+	if x != nil {
+		return x.ResourceId
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *RPCEvent) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetContext() map[string]string {
-	if m != nil {
-		return m.Context
+func (x *RPCEvent) GetContext() map[string]string {
+	if x != nil {
+		return x.Context
 	}
 	return nil
 }
 
-func (m *RPCEvent) GetStatus() *common.OperationResp {
-	if m != nil {
-		return m.Status
+func (x *RPCEvent) GetStatus() *common.OperationResp {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
-//
 // Identify the area of the system impacted by the event.
 type EventCategory struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventCategory) Reset()         { *m = EventCategory{} }
-func (m *EventCategory) String() string { return proto.CompactTextString(m) }
-func (*EventCategory) ProtoMessage()    {}
+func (x *EventCategory) Reset() {
+	*x = EventCategory{}
+	mi := &file_voltha_protos_events_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventCategory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventCategory) ProtoMessage() {}
+
+func (x *EventCategory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventCategory.ProtoReflect.Descriptor instead.
 func (*EventCategory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{14}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *EventCategory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventCategory.Unmarshal(m, b)
-}
-func (m *EventCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventCategory.Marshal(b, m, deterministic)
-}
-func (m *EventCategory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventCategory.Merge(m, src)
-}
-func (m *EventCategory) XXX_Size() int {
-	return xxx_messageInfo_EventCategory.Size(m)
-}
-func (m *EventCategory) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventCategory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventCategory proto.InternalMessageInfo
-
-//
 // Identify the functional category originating the event
 type EventSubCategory struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventSubCategory) Reset()         { *m = EventSubCategory{} }
-func (m *EventSubCategory) String() string { return proto.CompactTextString(m) }
-func (*EventSubCategory) ProtoMessage()    {}
+func (x *EventSubCategory) Reset() {
+	*x = EventSubCategory{}
+	mi := &file_voltha_protos_events_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventSubCategory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventSubCategory) ProtoMessage() {}
+
+func (x *EventSubCategory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventSubCategory.ProtoReflect.Descriptor instead.
 func (*EventSubCategory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{15}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *EventSubCategory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventSubCategory.Unmarshal(m, b)
-}
-func (m *EventSubCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventSubCategory.Marshal(b, m, deterministic)
-}
-func (m *EventSubCategory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventSubCategory.Merge(m, src)
-}
-func (m *EventSubCategory) XXX_Size() int {
-	return xxx_messageInfo_EventSubCategory.Size(m)
-}
-func (m *EventSubCategory) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventSubCategory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventSubCategory proto.InternalMessageInfo
-
-//
 // Identify the type of event
 type EventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventType) Reset()         { *m = EventType{} }
-func (m *EventType) String() string { return proto.CompactTextString(m) }
-func (*EventType) ProtoMessage()    {}
+func (x *EventType) Reset() {
+	*x = EventType{}
+	mi := &file_voltha_protos_events_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventType) ProtoMessage() {}
+
+func (x *EventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventType.ProtoReflect.Descriptor instead.
 func (*EventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{16}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *EventType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventType.Unmarshal(m, b)
-}
-func (m *EventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventType.Marshal(b, m, deterministic)
-}
-func (m *EventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventType.Merge(m, src)
-}
-func (m *EventType) XXX_Size() int {
-	return xxx_messageInfo_EventType.Size(m)
-}
-func (m *EventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventType proto.InternalMessageInfo
-
-//
 // Identify the functional category originating the event
 type EventHeader struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Unique ID for this event.  e.g. voltha.some_olt.1234
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Refers to the functional area affect by the event
@@ -1121,139 +1449,210 @@
 	// the event was first raised from the source entity.
 	// If the source entity doesn't send the raised_ts, this shall be set
 	// to timestamp when the event was received.
-	RaisedTs *timestamp.Timestamp `protobuf:"bytes,6,opt,name=raised_ts,json=raisedTs,proto3" json:"raised_ts,omitempty"`
+	RaisedTs *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=raised_ts,json=raisedTs,proto3" json:"raised_ts,omitempty"`
 	// Timestamp at which the event was reported.
 	// This represents the UTC time stamp since epoch (in seconds) when the
 	// the event was reported (this time stamp is >= raised_ts).
 	// If the source entity that reported this event doesn't send the
 	// reported_ts, this shall be set to the same value as raised_ts.
-	ReportedTs           *timestamp.Timestamp `protobuf:"bytes,7,opt,name=reported_ts,json=reportedTs,proto3" json:"reported_ts,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	ReportedTs    *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=reported_ts,json=reportedTs,proto3" json:"reported_ts,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventHeader) Reset()         { *m = EventHeader{} }
-func (m *EventHeader) String() string { return proto.CompactTextString(m) }
-func (*EventHeader) ProtoMessage()    {}
+func (x *EventHeader) Reset() {
+	*x = EventHeader{}
+	mi := &file_voltha_protos_events_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventHeader) ProtoMessage() {}
+
+func (x *EventHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventHeader.ProtoReflect.Descriptor instead.
 func (*EventHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{17}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *EventHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventHeader.Unmarshal(m, b)
-}
-func (m *EventHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventHeader.Marshal(b, m, deterministic)
-}
-func (m *EventHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventHeader.Merge(m, src)
-}
-func (m *EventHeader) XXX_Size() int {
-	return xxx_messageInfo_EventHeader.Size(m)
-}
-func (m *EventHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventHeader proto.InternalMessageInfo
-
-func (m *EventHeader) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *EventHeader) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *EventHeader) GetCategory() EventCategory_Types {
-	if m != nil {
-		return m.Category
+func (x *EventHeader) GetCategory() EventCategory_Types {
+	if x != nil {
+		return x.Category
 	}
 	return EventCategory_COMMUNICATION
 }
 
-func (m *EventHeader) GetSubCategory() EventSubCategory_Types {
-	if m != nil {
-		return m.SubCategory
+func (x *EventHeader) GetSubCategory() EventSubCategory_Types {
+	if x != nil {
+		return x.SubCategory
 	}
 	return EventSubCategory_PON
 }
 
-func (m *EventHeader) GetType() EventType_Types {
-	if m != nil {
-		return m.Type
+func (x *EventHeader) GetType() EventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return EventType_CONFIG_EVENT
 }
 
-func (m *EventHeader) GetTypeVersion() string {
-	if m != nil {
-		return m.TypeVersion
+func (x *EventHeader) GetTypeVersion() string {
+	if x != nil {
+		return x.TypeVersion
 	}
 	return ""
 }
 
-func (m *EventHeader) GetRaisedTs() *timestamp.Timestamp {
-	if m != nil {
-		return m.RaisedTs
+func (x *EventHeader) GetRaisedTs() *timestamppb.Timestamp {
+	if x != nil {
+		return x.RaisedTs
 	}
 	return nil
 }
 
-func (m *EventHeader) GetReportedTs() *timestamp.Timestamp {
-	if m != nil {
-		return m.ReportedTs
+func (x *EventHeader) GetReportedTs() *timestamppb.Timestamp {
+	if x != nil {
+		return x.ReportedTs
 	}
 	return nil
 }
 
-//
 // Event Structure
 type Event struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// event header
 	Header *EventHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
 	// oneof event types referred by EventType.
 	//
 	// Types that are valid to be assigned to EventType:
+	//
 	//	*Event_ConfigEvent
 	//	*Event_KpiEvent
 	//	*Event_KpiEvent2
 	//	*Event_DeviceEvent
 	//	*Event_RpcEvent
-	EventType            isEvent_EventType `protobuf_oneof:"event_type"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	//	*Event_KpiEvent3
+	EventType     isEvent_EventType `protobuf_oneof:"event_type"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Event) Reset()         { *m = Event{} }
-func (m *Event) String() string { return proto.CompactTextString(m) }
-func (*Event) ProtoMessage()    {}
+func (x *Event) Reset() {
+	*x = Event{}
+	mi := &file_voltha_protos_events_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Event) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Event) ProtoMessage() {}
+
+func (x *Event) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Event.ProtoReflect.Descriptor instead.
 func (*Event) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{18}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *Event) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Event.Unmarshal(m, b)
-}
-func (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Event.Marshal(b, m, deterministic)
-}
-func (m *Event) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Event.Merge(m, src)
-}
-func (m *Event) XXX_Size() int {
-	return xxx_messageInfo_Event.Size(m)
-}
-func (m *Event) XXX_DiscardUnknown() {
-	xxx_messageInfo_Event.DiscardUnknown(m)
+func (x *Event) GetHeader() *EventHeader {
+	if x != nil {
+		return x.Header
+	}
+	return nil
 }
 
-var xxx_messageInfo_Event proto.InternalMessageInfo
+func (x *Event) GetEventType() isEvent_EventType {
+	if x != nil {
+		return x.EventType
+	}
+	return nil
+}
 
-func (m *Event) GetHeader() *EventHeader {
-	if m != nil {
-		return m.Header
+func (x *Event) GetConfigEvent() *ConfigEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_ConfigEvent); ok {
+			return x.ConfigEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetKpiEvent() *KpiEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_KpiEvent); ok {
+			return x.KpiEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetKpiEvent2() *KpiEvent2 {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_KpiEvent2); ok {
+			return x.KpiEvent2
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetDeviceEvent() *DeviceEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_DeviceEvent); ok {
+			return x.DeviceEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetRpcEvent() *RPCEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_RpcEvent); ok {
+			return x.RpcEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetKpiEvent3() *KpiEvent3 {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_KpiEvent3); ok {
+			return x.KpiEvent3
+		}
 	}
 	return nil
 }
@@ -1263,25 +1662,35 @@
 }
 
 type Event_ConfigEvent struct {
+	// Refers to ConfigEvent
 	ConfigEvent *ConfigEvent `protobuf:"bytes,2,opt,name=config_event,json=configEvent,proto3,oneof"`
 }
 
 type Event_KpiEvent struct {
+	// Refers to KpiEvent
 	KpiEvent *KpiEvent `protobuf:"bytes,3,opt,name=kpi_event,json=kpiEvent,proto3,oneof"`
 }
 
 type Event_KpiEvent2 struct {
+	// Refers to KpiEvent2
 	KpiEvent2 *KpiEvent2 `protobuf:"bytes,4,opt,name=kpi_event2,json=kpiEvent2,proto3,oneof"`
 }
 
 type Event_DeviceEvent struct {
+	// Refers to DeviceEvent
 	DeviceEvent *DeviceEvent `protobuf:"bytes,5,opt,name=device_event,json=deviceEvent,proto3,oneof"`
 }
 
 type Event_RpcEvent struct {
+	// Refers to an RPC Event
 	RpcEvent *RPCEvent `protobuf:"bytes,6,opt,name=rpc_event,json=rpcEvent,proto3,oneof"`
 }
 
+type Event_KpiEvent3 struct {
+	// Refers to KpiEvent3 (64-bit counter support)
+	KpiEvent3 *KpiEvent3 `protobuf:"bytes,7,opt,name=kpi_event3,json=kpiEvent3,proto3,oneof"`
+}
+
 func (*Event_ConfigEvent) isEvent_EventType() {}
 
 func (*Event_KpiEvent) isEvent_EventType() {}
@@ -1292,185 +1701,287 @@
 
 func (*Event_RpcEvent) isEvent_EventType() {}
 
-func (m *Event) GetEventType() isEvent_EventType {
-	if m != nil {
-		return m.EventType
-	}
-	return nil
+func (*Event_KpiEvent3) isEvent_EventType() {}
+
+var File_voltha_protos_events_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_events_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/events.proto\x12\x05event\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1avoltha_protos/common.proto\"\x9e\x01\n" +
+	"\x12EventFilterRuleKey\"\x87\x01\n" +
+	"\x13EventFilterRuleType\x12\x0e\n" +
+	"\n" +
+	"filter_all\x10\x00\x12\f\n" +
+	"\bcategory\x10\x01\x12\x10\n" +
+	"\fsub_category\x10\x02\x12\x12\n" +
+	"\x0ekpi_event_type\x10\x03\x12\x15\n" +
+	"\x11config_event_type\x10\x04\x12\x15\n" +
+	"\x11device_event_type\x10\x05\"h\n" +
+	"\x0fEventFilterRule\x12?\n" +
+	"\x03key\x18\x01 \x01(\x0e2-.event.EventFilterRuleKey.EventFilterRuleTypeR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value\"\x9f\x01\n" +
+	"\vEventFilter\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
+	"\x06enable\x18\x02 \x01(\bR\x06enable\x12\x1b\n" +
+	"\tdevice_id\x18\x03 \x01(\tR\bdeviceId\x12\x1d\n" +
+	"\n" +
+	"event_type\x18\x04 \x01(\tR\teventType\x12,\n" +
+	"\x05rules\x18\x05 \x03(\v2\x16.event.EventFilterRuleR\x05rules\"<\n" +
+	"\fEventFilters\x12,\n" +
+	"\afilters\x18\x01 \x03(\v2\x12.event.EventFilterR\afilters\";\n" +
+	"\x0fConfigEventType\"(\n" +
+	"\x05Types\x12\a\n" +
+	"\x03add\x10\x00\x12\n" +
+	"\n" +
+	"\x06remove\x10\x01\x12\n" +
+	"\n" +
+	"\x06update\x10\x02\"g\n" +
+	"\vConfigEvent\x120\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1c.event.ConfigEventType.TypesR\x04type\x12\x12\n" +
+	"\x04hash\x18\x02 \x01(\tR\x04hash\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\tR\x04data\"*\n" +
+	"\fKpiEventType\"\x1a\n" +
+	"\x05Types\x12\t\n" +
+	"\x05slice\x10\x00\x12\x06\n" +
+	"\x02ts\x10\x01\"\xaa\x02\n" +
+	"\x0eMetricMetaData\x12\x14\n" +
+	"\x05title\x18\x01 \x01(\tR\x05title\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x01R\x02ts\x12*\n" +
+	"\x11logical_device_id\x18\x03 \x01(\tR\x0flogicalDeviceId\x12\x1b\n" +
+	"\tserial_no\x18\x04 \x01(\tR\bserialNo\x12\x1b\n" +
+	"\tdevice_id\x18\x05 \x01(\tR\bdeviceId\x12<\n" +
+	"\acontext\x18\x06 \x03(\v2\".event.MetricMetaData.ContextEntryR\acontext\x12\x12\n" +
+	"\x04uuid\x18\a \x01(\tR\x04uuid\x1a:\n" +
+	"\fContextEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8e\x01\n" +
+	"\x10MetricValuePairs\x12>\n" +
+	"\ametrics\x18\x01 \x03(\v2$.event.MetricValuePairs.MetricsEntryR\ametrics\x1a:\n" +
+	"\fMetricsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01\"\xc3\x01\n" +
+	"\x11MetricInformation\x121\n" +
+	"\bmetadata\x18\x01 \x01(\v2\x15.event.MetricMetaDataR\bmetadata\x12?\n" +
+	"\ametrics\x18\x02 \x03(\v2%.event.MetricInformation.MetricsEntryR\ametrics\x1a:\n" +
+	"\fMetricsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01\"\xc7\x01\n" +
+	"\x13MetricInformation64\x121\n" +
+	"\bmetadata\x18\x01 \x01(\v2\x15.event.MetricMetaDataR\bmetadata\x12A\n" +
+	"\ametrics\x18\x02 \x03(\v2'.event.MetricInformation64.MetricsEntryR\ametrics\x1a:\n" +
+	"\fMetricsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\"\xda\x01\n" +
+	"\bKpiEvent\x12-\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x19.event.KpiEventType.TypesR\x04type\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x02R\x02ts\x129\n" +
+	"\bprefixes\x18\x03 \x03(\v2\x1d.event.KpiEvent.PrefixesEntryR\bprefixes\x1aT\n" +
+	"\rPrefixesEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12-\n" +
+	"\x05value\x18\x02 \x01(\v2\x17.event.MetricValuePairsR\x05value:\x028\x01\"\x83\x01\n" +
+	"\tKpiEvent2\x12-\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x19.event.KpiEventType.TypesR\x04type\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x01R\x02ts\x127\n" +
+	"\n" +
+	"slice_data\x18\x03 \x03(\v2\x18.event.MetricInformationR\tsliceData\"\x85\x01\n" +
+	"\tKpiEvent3\x12-\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x19.event.KpiEventType.TypesR\x04type\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x01R\x02ts\x129\n" +
+	"\n" +
+	"slice_data\x18\x03 \x03(\v2\x1a.event.MetricInformation64R\tsliceData\"\xf3\x01\n" +
+	"\vDeviceEvent\x12\x1f\n" +
+	"\vresource_id\x18\x01 \x01(\tR\n" +
+	"resourceId\x12*\n" +
+	"\x11device_event_name\x18\x02 \x01(\tR\x0fdeviceEventName\x12 \n" +
+	"\vdescription\x18\x03 \x01(\tR\vdescription\x129\n" +
+	"\acontext\x18\x04 \x03(\v2\x1f.event.DeviceEvent.ContextEntryR\acontext\x1a:\n" +
+	"\fContextEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xda\x02\n" +
+	"\bRPCEvent\x12\x10\n" +
+	"\x03rpc\x18\x01 \x01(\tR\x03rpc\x12!\n" +
+	"\foperation_id\x18\x02 \x01(\tR\voperationId\x12\x18\n" +
+	"\aservice\x18\x03 \x01(\tR\aservice\x12\x19\n" +
+	"\bstack_id\x18\x04 \x01(\tR\astackId\x12\x1f\n" +
+	"\vresource_id\x18\x05 \x01(\tR\n" +
+	"resourceId\x12 \n" +
+	"\vdescription\x18\x06 \x01(\tR\vdescription\x126\n" +
+	"\acontext\x18\a \x03(\v2\x1c.event.RPCEvent.ContextEntryR\acontext\x12-\n" +
+	"\x06status\x18\b \x01(\v2\x15.common.OperationRespR\x06status\x1a:\n" +
+	"\fContextEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"v\n" +
+	"\rEventCategory\"e\n" +
+	"\x05Types\x12\x11\n" +
+	"\rCOMMUNICATION\x10\x00\x12\x0f\n" +
+	"\vENVIRONMENT\x10\x01\x12\r\n" +
+	"\tEQUIPMENT\x10\x02\x12\v\n" +
+	"\aSERVICE\x10\x03\x12\x0e\n" +
+	"\n" +
+	"PROCESSING\x10\x04\x12\f\n" +
+	"\bSECURITY\x10\x05\"R\n" +
+	"\x10EventSubCategory\">\n" +
+	"\x05Types\x12\a\n" +
+	"\x03PON\x10\x00\x12\a\n" +
+	"\x03OLT\x10\x01\x12\a\n" +
+	"\x03ONT\x10\x02\x12\a\n" +
+	"\x03ONU\x10\x03\x12\a\n" +
+	"\x03NNI\x10\x04\x12\b\n" +
+	"\x04NONE\x10\x05\"v\n" +
+	"\tEventType\"i\n" +
+	"\x05Types\x12\x10\n" +
+	"\fCONFIG_EVENT\x10\x00\x12\r\n" +
+	"\tKPI_EVENT\x10\x01\x12\x0e\n" +
+	"\n" +
+	"KPI_EVENT2\x10\x02\x12\x10\n" +
+	"\fDEVICE_EVENT\x10\x03\x12\r\n" +
+	"\tRPC_EVENT\x10\x04\x12\x0e\n" +
+	"\n" +
+	"KPI_EVENT3\x10\x05\"\xdc\x02\n" +
+	"\vEventHeader\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x126\n" +
+	"\bcategory\x18\x02 \x01(\x0e2\x1a.event.EventCategory.TypesR\bcategory\x12@\n" +
+	"\fsub_category\x18\x03 \x01(\x0e2\x1d.event.EventSubCategory.TypesR\vsubCategory\x12*\n" +
+	"\x04type\x18\x04 \x01(\x0e2\x16.event.EventType.TypesR\x04type\x12!\n" +
+	"\ftype_version\x18\x05 \x01(\tR\vtypeVersion\x127\n" +
+	"\traised_ts\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\braisedTs\x12;\n" +
+	"\vreported_ts\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\n" +
+	"reportedTs\"\xf9\x02\n" +
+	"\x05Event\x12*\n" +
+	"\x06header\x18\x01 \x01(\v2\x12.event.EventHeaderR\x06header\x127\n" +
+	"\fconfig_event\x18\x02 \x01(\v2\x12.event.ConfigEventH\x00R\vconfigEvent\x12.\n" +
+	"\tkpi_event\x18\x03 \x01(\v2\x0f.event.KpiEventH\x00R\bkpiEvent\x121\n" +
+	"\n" +
+	"kpi_event2\x18\x04 \x01(\v2\x10.event.KpiEvent2H\x00R\tkpiEvent2\x127\n" +
+	"\fdevice_event\x18\x05 \x01(\v2\x12.event.DeviceEventH\x00R\vdeviceEvent\x12.\n" +
+	"\trpc_event\x18\x06 \x01(\v2\x0f.event.RPCEventH\x00R\brpcEvent\x121\n" +
+	"\n" +
+	"kpi_event3\x18\a \x01(\v2\x10.event.KpiEvent3H\x00R\tkpiEvent3B\f\n" +
+	"\n" +
+	"event_typeBL\n" +
+	"\x1aorg.opencord.voltha.eventsZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_events_proto_rawDescOnce sync.Once
+	file_voltha_protos_events_proto_rawDescData []byte
+)
+
+func file_voltha_protos_events_proto_rawDescGZIP() []byte {
+	file_voltha_protos_events_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_events_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_events_proto_rawDesc), len(file_voltha_protos_events_proto_rawDesc)))
+	})
+	return file_voltha_protos_events_proto_rawDescData
 }
 
-func (m *Event) GetConfigEvent() *ConfigEvent {
-	if x, ok := m.GetEventType().(*Event_ConfigEvent); ok {
-		return x.ConfigEvent
-	}
-	return nil
+var file_voltha_protos_events_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
+var file_voltha_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
+var file_voltha_protos_events_proto_goTypes = []any{
+	(EventFilterRuleKey_EventFilterRuleType)(0), // 0: event.EventFilterRuleKey.EventFilterRuleType
+	(ConfigEventType_Types)(0),                  // 1: event.ConfigEventType.Types
+	(KpiEventType_Types)(0),                     // 2: event.KpiEventType.Types
+	(EventCategory_Types)(0),                    // 3: event.EventCategory.Types
+	(EventSubCategory_Types)(0),                 // 4: event.EventSubCategory.Types
+	(EventType_Types)(0),                        // 5: event.EventType.Types
+	(*EventFilterRuleKey)(nil),                  // 6: event.EventFilterRuleKey
+	(*EventFilterRule)(nil),                     // 7: event.EventFilterRule
+	(*EventFilter)(nil),                         // 8: event.EventFilter
+	(*EventFilters)(nil),                        // 9: event.EventFilters
+	(*ConfigEventType)(nil),                     // 10: event.ConfigEventType
+	(*ConfigEvent)(nil),                         // 11: event.ConfigEvent
+	(*KpiEventType)(nil),                        // 12: event.KpiEventType
+	(*MetricMetaData)(nil),                      // 13: event.MetricMetaData
+	(*MetricValuePairs)(nil),                    // 14: event.MetricValuePairs
+	(*MetricInformation)(nil),                   // 15: event.MetricInformation
+	(*MetricInformation64)(nil),                 // 16: event.MetricInformation64
+	(*KpiEvent)(nil),                            // 17: event.KpiEvent
+	(*KpiEvent2)(nil),                           // 18: event.KpiEvent2
+	(*KpiEvent3)(nil),                           // 19: event.KpiEvent3
+	(*DeviceEvent)(nil),                         // 20: event.DeviceEvent
+	(*RPCEvent)(nil),                            // 21: event.RPCEvent
+	(*EventCategory)(nil),                       // 22: event.EventCategory
+	(*EventSubCategory)(nil),                    // 23: event.EventSubCategory
+	(*EventType)(nil),                           // 24: event.EventType
+	(*EventHeader)(nil),                         // 25: event.EventHeader
+	(*Event)(nil),                               // 26: event.Event
+	nil,                                         // 27: event.MetricMetaData.ContextEntry
+	nil,                                         // 28: event.MetricValuePairs.MetricsEntry
+	nil,                                         // 29: event.MetricInformation.MetricsEntry
+	nil,                                         // 30: event.MetricInformation64.MetricsEntry
+	nil,                                         // 31: event.KpiEvent.PrefixesEntry
+	nil,                                         // 32: event.DeviceEvent.ContextEntry
+	nil,                                         // 33: event.RPCEvent.ContextEntry
+	(*common.OperationResp)(nil),                // 34: common.OperationResp
+	(*timestamppb.Timestamp)(nil),               // 35: google.protobuf.Timestamp
+}
+var file_voltha_protos_events_proto_depIdxs = []int32{
+	0,  // 0: event.EventFilterRule.key:type_name -> event.EventFilterRuleKey.EventFilterRuleType
+	7,  // 1: event.EventFilter.rules:type_name -> event.EventFilterRule
+	8,  // 2: event.EventFilters.filters:type_name -> event.EventFilter
+	1,  // 3: event.ConfigEvent.type:type_name -> event.ConfigEventType.Types
+	27, // 4: event.MetricMetaData.context:type_name -> event.MetricMetaData.ContextEntry
+	28, // 5: event.MetricValuePairs.metrics:type_name -> event.MetricValuePairs.MetricsEntry
+	13, // 6: event.MetricInformation.metadata:type_name -> event.MetricMetaData
+	29, // 7: event.MetricInformation.metrics:type_name -> event.MetricInformation.MetricsEntry
+	13, // 8: event.MetricInformation64.metadata:type_name -> event.MetricMetaData
+	30, // 9: event.MetricInformation64.metrics:type_name -> event.MetricInformation64.MetricsEntry
+	2,  // 10: event.KpiEvent.type:type_name -> event.KpiEventType.Types
+	31, // 11: event.KpiEvent.prefixes:type_name -> event.KpiEvent.PrefixesEntry
+	2,  // 12: event.KpiEvent2.type:type_name -> event.KpiEventType.Types
+	15, // 13: event.KpiEvent2.slice_data:type_name -> event.MetricInformation
+	2,  // 14: event.KpiEvent3.type:type_name -> event.KpiEventType.Types
+	16, // 15: event.KpiEvent3.slice_data:type_name -> event.MetricInformation64
+	32, // 16: event.DeviceEvent.context:type_name -> event.DeviceEvent.ContextEntry
+	33, // 17: event.RPCEvent.context:type_name -> event.RPCEvent.ContextEntry
+	34, // 18: event.RPCEvent.status:type_name -> common.OperationResp
+	3,  // 19: event.EventHeader.category:type_name -> event.EventCategory.Types
+	4,  // 20: event.EventHeader.sub_category:type_name -> event.EventSubCategory.Types
+	5,  // 21: event.EventHeader.type:type_name -> event.EventType.Types
+	35, // 22: event.EventHeader.raised_ts:type_name -> google.protobuf.Timestamp
+	35, // 23: event.EventHeader.reported_ts:type_name -> google.protobuf.Timestamp
+	25, // 24: event.Event.header:type_name -> event.EventHeader
+	11, // 25: event.Event.config_event:type_name -> event.ConfigEvent
+	17, // 26: event.Event.kpi_event:type_name -> event.KpiEvent
+	18, // 27: event.Event.kpi_event2:type_name -> event.KpiEvent2
+	20, // 28: event.Event.device_event:type_name -> event.DeviceEvent
+	21, // 29: event.Event.rpc_event:type_name -> event.RPCEvent
+	19, // 30: event.Event.kpi_event3:type_name -> event.KpiEvent3
+	14, // 31: event.KpiEvent.PrefixesEntry.value:type_name -> event.MetricValuePairs
+	32, // [32:32] is the sub-list for method output_type
+	32, // [32:32] is the sub-list for method input_type
+	32, // [32:32] is the sub-list for extension type_name
+	32, // [32:32] is the sub-list for extension extendee
+	0,  // [0:32] is the sub-list for field type_name
 }
 
-func (m *Event) GetKpiEvent() *KpiEvent {
-	if x, ok := m.GetEventType().(*Event_KpiEvent); ok {
-		return x.KpiEvent
+func init() { file_voltha_protos_events_proto_init() }
+func file_voltha_protos_events_proto_init() {
+	if File_voltha_protos_events_proto != nil {
+		return
 	}
-	return nil
-}
-
-func (m *Event) GetKpiEvent2() *KpiEvent2 {
-	if x, ok := m.GetEventType().(*Event_KpiEvent2); ok {
-		return x.KpiEvent2
-	}
-	return nil
-}
-
-func (m *Event) GetDeviceEvent() *DeviceEvent {
-	if x, ok := m.GetEventType().(*Event_DeviceEvent); ok {
-		return x.DeviceEvent
-	}
-	return nil
-}
-
-func (m *Event) GetRpcEvent() *RPCEvent {
-	if x, ok := m.GetEventType().(*Event_RpcEvent); ok {
-		return x.RpcEvent
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Event) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_events_proto_msgTypes[20].OneofWrappers = []any{
 		(*Event_ConfigEvent)(nil),
 		(*Event_KpiEvent)(nil),
 		(*Event_KpiEvent2)(nil),
 		(*Event_DeviceEvent)(nil),
 		(*Event_RpcEvent)(nil),
+		(*Event_KpiEvent3)(nil),
 	}
-}
-
-func init() {
-	proto.RegisterEnum("event.EventFilterRuleKey_EventFilterRuleType", EventFilterRuleKey_EventFilterRuleType_name, EventFilterRuleKey_EventFilterRuleType_value)
-	proto.RegisterEnum("event.ConfigEventType_Types", ConfigEventType_Types_name, ConfigEventType_Types_value)
-	proto.RegisterEnum("event.KpiEventType_Types", KpiEventType_Types_name, KpiEventType_Types_value)
-	proto.RegisterEnum("event.EventCategory_Types", EventCategory_Types_name, EventCategory_Types_value)
-	proto.RegisterEnum("event.EventSubCategory_Types", EventSubCategory_Types_name, EventSubCategory_Types_value)
-	proto.RegisterEnum("event.EventType_Types", EventType_Types_name, EventType_Types_value)
-	proto.RegisterType((*EventFilterRuleKey)(nil), "event.EventFilterRuleKey")
-	proto.RegisterType((*EventFilterRule)(nil), "event.EventFilterRule")
-	proto.RegisterType((*EventFilter)(nil), "event.EventFilter")
-	proto.RegisterType((*EventFilters)(nil), "event.EventFilters")
-	proto.RegisterType((*ConfigEventType)(nil), "event.ConfigEventType")
-	proto.RegisterType((*ConfigEvent)(nil), "event.ConfigEvent")
-	proto.RegisterType((*KpiEventType)(nil), "event.KpiEventType")
-	proto.RegisterType((*MetricMetaData)(nil), "event.MetricMetaData")
-	proto.RegisterMapType((map[string]string)(nil), "event.MetricMetaData.ContextEntry")
-	proto.RegisterType((*MetricValuePairs)(nil), "event.MetricValuePairs")
-	proto.RegisterMapType((map[string]float32)(nil), "event.MetricValuePairs.MetricsEntry")
-	proto.RegisterType((*MetricInformation)(nil), "event.MetricInformation")
-	proto.RegisterMapType((map[string]float32)(nil), "event.MetricInformation.MetricsEntry")
-	proto.RegisterType((*KpiEvent)(nil), "event.KpiEvent")
-	proto.RegisterMapType((map[string]*MetricValuePairs)(nil), "event.KpiEvent.PrefixesEntry")
-	proto.RegisterType((*KpiEvent2)(nil), "event.KpiEvent2")
-	proto.RegisterType((*DeviceEvent)(nil), "event.DeviceEvent")
-	proto.RegisterMapType((map[string]string)(nil), "event.DeviceEvent.ContextEntry")
-	proto.RegisterType((*RPCEvent)(nil), "event.RPCEvent")
-	proto.RegisterMapType((map[string]string)(nil), "event.RPCEvent.ContextEntry")
-	proto.RegisterType((*EventCategory)(nil), "event.EventCategory")
-	proto.RegisterType((*EventSubCategory)(nil), "event.EventSubCategory")
-	proto.RegisterType((*EventType)(nil), "event.EventType")
-	proto.RegisterType((*EventHeader)(nil), "event.EventHeader")
-	proto.RegisterType((*Event)(nil), "event.Event")
-}
-
-func init() { proto.RegisterFile("voltha_protos/events.proto", fileDescriptor_e63e6c07044fd2c4) }
-
-var fileDescriptor_e63e6c07044fd2c4 = []byte{
-	// 1436 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdb, 0x6e, 0xdb, 0x46,
-	0x13, 0x16, 0xa9, 0x23, 0x87, 0xb2, 0x4d, 0xef, 0xff, 0x27, 0x55, 0x94, 0x04, 0x71, 0x88, 0x16,
-	0x30, 0x8c, 0x58, 0x6e, 0x54, 0x34, 0x6e, 0x0e, 0x48, 0xda, 0x28, 0x4a, 0x4c, 0x24, 0x96, 0x54,
-	0x5a, 0x36, 0x90, 0xde, 0x08, 0x6b, 0x72, 0x2d, 0x13, 0xa6, 0x44, 0x82, 0xbb, 0x12, 0xe2, 0xeb,
-	0x5e, 0xf4, 0xae, 0x8f, 0xd0, 0xde, 0xf7, 0x35, 0x0a, 0xf4, 0x21, 0x82, 0xbe, 0x45, 0x5f, 0xa0,
-	0xd8, 0x03, 0x25, 0x4a, 0x56, 0x1a, 0xa0, 0x41, 0xaf, 0xb4, 0x3b, 0x3b, 0xc3, 0xf9, 0xe6, 0x9b,
-	0x9d, 0xd9, 0x11, 0xd4, 0xa7, 0x51, 0xc8, 0xce, 0xf1, 0x20, 0x4e, 0x22, 0x16, 0xd1, 0x3d, 0x32,
-	0x25, 0x63, 0x46, 0x1b, 0x62, 0x87, 0x8a, 0x62, 0x57, 0xbf, 0x35, 0x8c, 0xa2, 0x61, 0x48, 0xf6,
-	0x70, 0x1c, 0xec, 0xe1, 0xf1, 0x38, 0x62, 0x98, 0x05, 0xd1, 0x58, 0x29, 0xd5, 0xef, 0xa8, 0x53,
-	0xb1, 0x3b, 0x9d, 0x9c, 0xed, 0xb1, 0x60, 0x44, 0x28, 0xc3, 0xa3, 0x58, 0x29, 0x2c, 0x79, 0xf0,
-	0xa2, 0xd1, 0x28, 0x1a, 0xcb, 0x33, 0xfb, 0x17, 0x0d, 0x50, 0x9b, 0x3b, 0x79, 0x19, 0x84, 0x8c,
-	0x24, 0xee, 0x24, 0x24, 0xaf, 0xc9, 0xa5, 0xfd, 0x93, 0x06, 0xff, 0x5b, 0x12, 0xf7, 0x2f, 0x63,
-	0x82, 0xd6, 0x01, 0xce, 0x84, 0x64, 0x80, 0xc3, 0xd0, 0xca, 0xa1, 0x2a, 0x54, 0x3c, 0xcc, 0xc8,
-	0x30, 0x4a, 0x2e, 0x2d, 0x0d, 0x59, 0x50, 0xa5, 0x93, 0xd3, 0xc1, 0x4c, 0xa2, 0x23, 0x04, 0xeb,
-	0x17, 0x71, 0x30, 0x10, 0x61, 0x0c, 0xd8, 0x65, 0x4c, 0xac, 0x3c, 0xba, 0x06, 0x9b, 0x5e, 0x34,
-	0x3e, 0x0b, 0x86, 0x59, 0x71, 0x81, 0x8b, 0x7d, 0x32, 0x0d, 0x3c, 0x92, 0x15, 0x17, 0xed, 0x73,
-	0xd8, 0x58, 0x02, 0x82, 0x9e, 0x41, 0xfe, 0x82, 0x5c, 0xd6, 0xb4, 0x2d, 0x6d, 0x7b, 0xbd, 0xb9,
-	0xdb, 0x10, 0xea, 0x8d, 0xab, 0x41, 0x34, 0x56, 0x04, 0xe0, 0x72, 0x4b, 0xf4, 0x7f, 0x28, 0x4e,
-	0x71, 0x38, 0x21, 0x35, 0x7d, 0x4b, 0xdb, 0x36, 0x5c, 0xb9, 0xb1, 0x7f, 0xd5, 0xc0, 0xcc, 0x98,
-	0xa0, 0x75, 0xd0, 0x03, 0x5f, 0x78, 0x31, 0x5c, 0x3d, 0xf0, 0xd1, 0x75, 0x28, 0x91, 0x31, 0x3e,
-	0x0d, 0xa5, 0x59, 0xc5, 0x55, 0x3b, 0x74, 0x13, 0x0c, 0x05, 0x3c, 0xf0, 0x6b, 0x79, 0xa1, 0x5e,
-	0x91, 0x02, 0xc7, 0x47, 0xb7, 0x01, 0xe6, 0xe1, 0xd4, 0x0a, 0xe2, 0xd4, 0x10, 0x12, 0xc1, 0xe7,
-	0x3d, 0x28, 0x26, 0x93, 0x90, 0xd0, 0x5a, 0x71, 0x2b, 0xbf, 0x6d, 0x36, 0xaf, 0xaf, 0x0e, 0xc6,
-	0x95, 0x4a, 0xf6, 0x13, 0xa8, 0x66, 0x4e, 0x28, 0xba, 0x07, 0x65, 0x99, 0x0d, 0x5a, 0xd3, 0x84,
-	0x3d, 0x5a, 0x61, 0x9f, 0xaa, 0xd8, 0x8f, 0x61, 0xa3, 0x25, 0x78, 0x6f, 0xa7, 0xee, 0xed, 0x6d,
-	0x28, 0xf2, 0x5f, 0x8a, 0xca, 0x90, 0xc7, 0xbe, 0x6f, 0xe5, 0x10, 0x40, 0x29, 0x21, 0xa3, 0x68,
-	0x4a, 0x2c, 0x8d, 0xaf, 0x27, 0xb1, 0x8f, 0x19, 0xb1, 0x74, 0x7b, 0x08, 0x66, 0xc6, 0x18, 0x7d,
-	0x09, 0x05, 0x11, 0x90, 0xcc, 0xc1, 0x2d, 0xe5, 0x76, 0xe9, 0xf3, 0x0d, 0xf1, 0x6d, 0x57, 0x68,
-	0x22, 0x04, 0x85, 0x73, 0x4c, 0xcf, 0x15, 0xe5, 0x62, 0xcd, 0x65, 0x3e, 0x66, 0x58, 0x91, 0x26,
-	0xd6, 0xf6, 0x0e, 0x54, 0x5f, 0xc7, 0xc1, 0x1c, 0x62, 0x3d, 0x85, 0x68, 0x40, 0x91, 0x86, 0x81,
-	0x47, 0xac, 0x1c, 0x2a, 0x81, 0xce, 0xa8, 0xa5, 0xd9, 0xbf, 0xe9, 0xb0, 0x7e, 0x48, 0x58, 0x12,
-	0x78, 0x87, 0x84, 0xe1, 0x17, 0x98, 0x61, 0x9e, 0x5a, 0x16, 0xb0, 0x90, 0xa8, 0xbc, 0xc9, 0x0d,
-	0x4f, 0x25, 0xa3, 0xc2, 0xb5, 0xe6, 0xea, 0x8c, 0xa2, 0x1d, 0xd8, 0x0c, 0xa3, 0x61, 0xe0, 0xe1,
-	0x70, 0xb0, 0x9c, 0xba, 0x0d, 0x75, 0xf0, 0x22, 0xcd, 0xe0, 0x4d, 0x30, 0x28, 0x49, 0x02, 0x1c,
-	0x0e, 0xc6, 0x91, 0x4a, 0x60, 0x45, 0x0a, 0x3a, 0xd1, 0x62, 0xee, 0x8b, 0x4b, 0xb9, 0x7f, 0x02,
-	0x65, 0x2f, 0x1a, 0x33, 0xf2, 0x8e, 0xd5, 0x4a, 0x22, 0x3d, 0xb6, 0xe2, 0x69, 0x11, 0x33, 0xa7,
-	0x8d, 0x2b, 0xb5, 0xc7, 0x2c, 0xb9, 0x74, 0x53, 0x13, 0x4e, 0xce, 0x64, 0x12, 0xf8, 0xb5, 0xb2,
-	0x24, 0x87, 0xaf, 0xeb, 0x8f, 0xa0, 0x9a, 0x55, 0x46, 0xd6, 0xbc, 0x12, 0x8c, 0x7f, 0xb8, 0xda,
-	0x8f, 0xf4, 0x6f, 0x34, 0xfb, 0x67, 0x0d, 0x2c, 0xe9, 0xf8, 0x84, 0xcb, 0x7a, 0x38, 0x48, 0x28,
-	0x7a, 0x0a, 0xe5, 0x91, 0x90, 0xa5, 0x37, 0xe8, 0xf3, 0x05, 0x88, 0x73, 0x4d, 0x25, 0xa0, 0x0a,
-	0xa4, 0x32, 0xe2, 0x80, 0xb2, 0x07, 0x1f, 0x03, 0xa4, 0x67, 0x01, 0xfd, 0xae, 0xc1, 0xa6, 0x34,
-	0x76, 0xc6, 0x67, 0x51, 0x32, 0x12, 0x4d, 0x0d, 0xdd, 0x87, 0xca, 0x88, 0x30, 0x2c, 0xee, 0x05,
-	0xff, 0x8c, 0xd9, 0xbc, 0xb6, 0x92, 0x35, 0x77, 0xa6, 0x86, 0x9e, 0xcd, 0x83, 0xd0, 0x45, 0x10,
-	0x5f, 0x2c, 0x58, 0x64, 0xbe, 0xfe, 0x1f, 0x44, 0xf1, 0x5e, 0x83, 0x4a, 0x7a, 0x61, 0xd1, 0xee,
-	0x42, 0x59, 0xdc, 0x50, 0x30, 0xb2, 0xf7, 0x79, 0xa1, 0x26, 0xe6, 0xd7, 0x52, 0x17, 0xd7, 0xf2,
-	0x21, 0x54, 0xe2, 0x84, 0x9c, 0x05, 0xef, 0x08, 0xad, 0xe5, 0x45, 0x24, 0xb7, 0x97, 0x3e, 0xd1,
-	0xe8, 0xa9, 0x73, 0x19, 0xc1, 0x4c, 0xbd, 0xde, 0x87, 0xb5, 0x85, 0xa3, 0x15, 0x31, 0xec, 0x66,
-	0x63, 0x30, 0x9b, 0x9f, 0x7d, 0x20, 0xd3, 0xd9, 0xe0, 0x7e, 0xd4, 0xc0, 0x48, 0x5d, 0x37, 0xff,
-	0x7d, 0x74, 0xb2, 0xe8, 0xf6, 0x01, 0x44, 0x01, 0x0f, 0x54, 0xcd, 0xf3, 0xf8, 0x6a, 0x1f, 0xca,
-	0x94, 0x6b, 0x08, 0x5d, 0x9e, 0x69, 0xfb, 0x2f, 0x0d, 0x4c, 0x59, 0x8e, 0x92, 0xe5, 0x3b, 0x60,
-	0x26, 0x84, 0x46, 0x93, 0x44, 0x96, 0x9d, 0x0c, 0x11, 0x52, 0x91, 0xe3, 0xf3, 0xf2, 0x5e, 0x78,
-	0x4a, 0xc6, 0x78, 0x94, 0x16, 0xc4, 0x86, 0x3f, 0xff, 0x50, 0x07, 0x8f, 0x08, 0xda, 0x02, 0xd3,
-	0x27, 0xd4, 0x4b, 0x82, 0x98, 0xbb, 0x55, 0x4d, 0x20, 0x2b, 0x42, 0x0f, 0xe7, 0x65, 0x5c, 0x10,
-	0xa0, 0xef, 0x28, 0xd0, 0x19, 0x4c, 0xab, 0x6b, 0xf8, 0x93, 0xea, 0xf5, 0xbd, 0x0e, 0x15, 0xb7,
-	0xd7, 0x92, 0x21, 0x5b, 0x90, 0x4f, 0x62, 0x2f, 0x35, 0x4c, 0x62, 0x0f, 0xdd, 0x85, 0x6a, 0x14,
-	0x93, 0x44, 0x90, 0xc5, 0x59, 0x90, 0xf6, 0xe6, 0x4c, 0xe6, 0xf8, 0xa8, 0x06, 0x65, 0x4a, 0x12,
-	0x8e, 0x51, 0x85, 0x95, 0x6e, 0xd1, 0x0d, 0xa8, 0x50, 0x86, 0xbd, 0x0b, 0x6e, 0x58, 0x50, 0x47,
-	0x7c, 0xef, 0xf8, 0xcb, 0xe4, 0x16, 0xaf, 0x90, 0xbb, 0x44, 0x58, 0xe9, 0x2a, 0x61, 0x0f, 0xe6,
-	0x84, 0x95, 0x05, 0x61, 0xe9, 0xfb, 0x90, 0x86, 0xf3, 0x81, 0x8e, 0xb7, 0x0b, 0x25, 0xca, 0x30,
-	0x9b, 0xd0, 0x5a, 0x45, 0x15, 0xbe, 0x1a, 0x55, 0xba, 0x69, 0x50, 0x2e, 0xa1, 0xb1, 0xab, 0x94,
-	0x3e, 0x89, 0xdc, 0x29, 0xac, 0x09, 0x24, 0x2d, 0x35, 0xaa, 0xd8, 0x24, 0x7d, 0x66, 0x36, 0x61,
-	0xad, 0xd5, 0x3d, 0x3c, 0x3c, 0xee, 0x38, 0xad, 0xef, 0xfa, 0x4e, 0xb7, 0x63, 0xe5, 0xd0, 0x06,
-	0x98, 0xed, 0xce, 0x89, 0xe3, 0x76, 0x3b, 0x87, 0xed, 0x4e, 0xdf, 0xd2, 0xd0, 0x1a, 0x18, 0xed,
-	0xef, 0x8f, 0x9d, 0x9e, 0xd8, 0xea, 0xc8, 0x84, 0xf2, 0x51, 0xdb, 0x3d, 0x71, 0x5a, 0x6d, 0x2b,
-	0xcf, 0x27, 0xa4, 0x9e, 0xdb, 0x6d, 0xb5, 0x8f, 0x8e, 0x9c, 0xce, 0x2b, 0xab, 0xc0, 0x27, 0xa4,
-	0xa3, 0x76, 0xeb, 0xd8, 0x75, 0xfa, 0x6f, 0xad, 0xa2, 0xed, 0x82, 0x25, 0xfc, 0x1e, 0x4d, 0x4e,
-	0x67, 0xae, 0x9f, 0x66, 0x1e, 0xe1, 0x9e, 0x70, 0x58, 0x86, 0x7c, 0xf7, 0x0d, 0x77, 0xc4, 0x17,
-	0xc2, 0x85, 0x58, 0x1c, 0x5b, 0x79, 0xbe, 0xe8, 0x74, 0x1c, 0xab, 0x80, 0x2a, 0x50, 0xe8, 0x74,
-	0x3b, 0x6d, 0xab, 0x68, 0x9f, 0x81, 0x31, 0x7f, 0x2e, 0xdf, 0xa6, 0x1f, 0xb3, 0xa0, 0xda, 0xea,
-	0x76, 0x5e, 0x3a, 0xaf, 0x06, 0xed, 0x13, 0x0e, 0x33, 0xc7, 0x51, 0xbf, 0xee, 0x39, 0x6a, 0xab,
-	0x71, 0xa0, 0xb3, 0x6d, 0xd3, 0xd2, 0xb9, 0xc1, 0x8b, 0x36, 0x0f, 0x42, 0x69, 0xe4, 0xb9, 0x81,
-	0xdb, 0x6b, 0xa9, 0x6d, 0xc1, 0xfe, 0x53, 0x57, 0xf3, 0xd1, 0x01, 0xc1, 0xfe, 0x8a, 0xf9, 0xe8,
-	0xc1, 0x7c, 0x16, 0x14, 0x84, 0xaf, 0x37, 0xeb, 0xd9, 0x71, 0x24, 0x8d, 0x57, 0xf5, 0x88, 0x99,
-	0x2e, 0xfa, 0x76, 0x71, 0x6a, 0x14, 0x77, 0x75, 0x7d, 0xd6, 0xf9, 0x96, 0xe9, 0x52, 0xe6, 0x26,
-	0x9d, 0x8b, 0xd0, 0x8e, 0x6a, 0x4c, 0x05, 0x61, 0xb9, 0x30, 0x44, 0x5d, 0xe9, 0x4a, 0x77, 0xa1,
-	0xca, 0x7f, 0x07, 0x53, 0x92, 0x50, 0x7e, 0x7f, 0xe5, 0x05, 0x37, 0xb9, 0xec, 0x44, 0x8a, 0xd0,
-	0x3e, 0x18, 0x09, 0x0e, 0x28, 0xf1, 0x07, 0x8c, 0x8a, 0xfb, 0x6d, 0x36, 0xeb, 0x0d, 0x39, 0x64,
-	0x37, 0xd2, 0x21, 0xbb, 0xd1, 0x4f, 0x87, 0x6c, 0xb7, 0x22, 0x95, 0xfb, 0x14, 0x3d, 0xe6, 0xb5,
-	0x13, 0x47, 0x09, 0x93, 0xa6, 0xe5, 0x8f, 0x9a, 0x42, 0xaa, 0xde, 0xa7, 0xf6, 0x1f, 0x3a, 0x14,
-	0x65, 0xb1, 0xef, 0x40, 0xe9, 0x5c, 0x50, 0xac, 0x1e, 0xc0, 0x85, 0xa9, 0x4e, 0x92, 0xef, 0x2a,
-	0x0d, 0xb4, 0x0f, 0xd5, 0xec, 0x30, 0xad, 0x7a, 0x3b, 0xba, 0x3a, 0x90, 0x1d, 0xe4, 0x5c, 0xd3,
-	0xcb, 0x4c, 0x70, 0x0d, 0x30, 0x66, 0x93, 0xb9, 0xa0, 0xdc, 0x6c, 0x6e, 0x2c, 0x75, 0xf4, 0x83,
-	0x9c, 0x5b, 0xb9, 0x48, 0x9f, 0xb6, 0xfb, 0x00, 0x33, 0xfd, 0xa6, 0x60, 0xda, 0x6c, 0x5a, 0x4b,
-	0x06, 0xcd, 0x83, 0x9c, 0x6b, 0x5c, 0xcc, 0xde, 0x8b, 0x7d, 0xa8, 0x66, 0xdb, 0xb0, 0xa0, 0x7a,
-	0x8e, 0x2d, 0xd3, 0x3d, 0x39, 0xb6, 0x4c, 0x5f, 0xe6, 0xd8, 0x92, 0xd8, 0x53, 0x56, 0xa5, 0x05,
-	0x6c, 0x69, 0x0b, 0xe1, 0xd8, 0x92, 0xd8, 0x13, 0xeb, 0xe7, 0xd5, 0xec, 0x90, 0xfd, 0xfc, 0x0d,
-	0xd4, 0xa3, 0x64, 0xd8, 0x88, 0x62, 0x32, 0xf6, 0xa2, 0xc4, 0x6f, 0xc8, 0x7f, 0x3f, 0xd2, 0x9e,
-	0xfe, 0xd0, 0x18, 0x06, 0xec, 0x7c, 0x72, 0xca, 0x5b, 0xcb, 0x5e, 0xaa, 0xb2, 0x27, 0x55, 0x76,
-	0xd5, 0x1f, 0xa4, 0xe9, 0xd7, 0x7b, 0xc3, 0x48, 0xc9, 0x4e, 0x4b, 0x42, 0xf8, 0xd5, 0xdf, 0x01,
-	0x00, 0x00, 0xff, 0xff, 0xb2, 0x68, 0x11, 0x5e, 0xa7, 0x0d, 0x00, 0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_events_proto_rawDesc), len(file_voltha_protos_events_proto_rawDesc)),
+			NumEnums:      6,
+			NumMessages:   28,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_events_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_events_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_events_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_events_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_events_proto = out.File
+	file_voltha_protos_events_proto_goTypes = nil
+	file_voltha_protos_events_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/logical_device.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/logical_device.pb.go
index bd0e4c4..ba19ad1 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/logical_device.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/logical_device.pb.go
@@ -1,195 +1,212 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/logical_device.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type LogicalPortId struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// unique id of logical device
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// id of the port on the logical device
-	PortId               string   `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	PortId        string `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalPortId) Reset()         { *m = LogicalPortId{} }
-func (m *LogicalPortId) String() string { return proto.CompactTextString(m) }
-func (*LogicalPortId) ProtoMessage()    {}
+func (x *LogicalPortId) Reset() {
+	*x = LogicalPortId{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalPortId) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalPortId) ProtoMessage() {}
+
+func (x *LogicalPortId) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalPortId.ProtoReflect.Descriptor instead.
 func (*LogicalPortId) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{0}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *LogicalPortId) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalPortId.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalPortId proto.InternalMessageInfo
-
-func (m *LogicalPortId) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *LogicalPortId) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *LogicalPortId) GetPortId() string {
-	if m != nil {
-		return m.PortId
+func (x *LogicalPortId) GetPortId() string {
+	if x != nil {
+		return x.PortId
 	}
 	return ""
 }
 
 type LogicalPort struct {
-	Id                   string                    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	OfpPort              *openflow_13.OfpPort      `protobuf:"bytes,2,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
-	DeviceId             string                    `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	DevicePortNo         uint32                    `protobuf:"varint,4,opt,name=device_port_no,json=devicePortNo,proto3" json:"device_port_no,omitempty"`
-	RootPort             bool                      `protobuf:"varint,5,opt,name=root_port,json=rootPort,proto3" json:"root_port,omitempty"`
-	OfpPortStats         *openflow_13.OfpPortStats `protobuf:"bytes,6,opt,name=ofp_port_stats,json=ofpPortStats,proto3" json:"ofp_port_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	state         protoimpl.MessageState    `protogen:"open.v1"`
+	Id            string                    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	OfpPort       *openflow_13.OfpPort      `protobuf:"bytes,2,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
+	DeviceId      string                    `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	DevicePortNo  uint32                    `protobuf:"varint,4,opt,name=device_port_no,json=devicePortNo,proto3" json:"device_port_no,omitempty"`
+	RootPort      bool                      `protobuf:"varint,5,opt,name=root_port,json=rootPort,proto3" json:"root_port,omitempty"`
+	OfpPortStats  *openflow_13.OfpPortStats `protobuf:"bytes,6,opt,name=ofp_port_stats,json=ofpPortStats,proto3" json:"ofp_port_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalPort) Reset()         { *m = LogicalPort{} }
-func (m *LogicalPort) String() string { return proto.CompactTextString(m) }
-func (*LogicalPort) ProtoMessage()    {}
+func (x *LogicalPort) Reset() {
+	*x = LogicalPort{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalPort) ProtoMessage() {}
+
+func (x *LogicalPort) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalPort.ProtoReflect.Descriptor instead.
 func (*LogicalPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{1}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *LogicalPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalPort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalPort proto.InternalMessageInfo
-
-func (m *LogicalPort) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *LogicalPort) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *LogicalPort) GetOfpPort() *openflow_13.OfpPort {
-	if m != nil {
-		return m.OfpPort
+func (x *LogicalPort) GetOfpPort() *openflow_13.OfpPort {
+	if x != nil {
+		return x.OfpPort
 	}
 	return nil
 }
 
-func (m *LogicalPort) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *LogicalPort) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *LogicalPort) GetDevicePortNo() uint32 {
-	if m != nil {
-		return m.DevicePortNo
+func (x *LogicalPort) GetDevicePortNo() uint32 {
+	if x != nil {
+		return x.DevicePortNo
 	}
 	return 0
 }
 
-func (m *LogicalPort) GetRootPort() bool {
-	if m != nil {
-		return m.RootPort
+func (x *LogicalPort) GetRootPort() bool {
+	if x != nil {
+		return x.RootPort
 	}
 	return false
 }
 
-func (m *LogicalPort) GetOfpPortStats() *openflow_13.OfpPortStats {
-	if m != nil {
-		return m.OfpPortStats
+func (x *LogicalPort) GetOfpPortStats() *openflow_13.OfpPortStats {
+	if x != nil {
+		return x.OfpPortStats
 	}
 	return nil
 }
 
 type LogicalPorts struct {
-	Items                []*LogicalPort `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*LogicalPort         `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalPorts) Reset()         { *m = LogicalPorts{} }
-func (m *LogicalPorts) String() string { return proto.CompactTextString(m) }
-func (*LogicalPorts) ProtoMessage()    {}
+func (x *LogicalPorts) Reset() {
+	*x = LogicalPorts{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalPorts) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalPorts) ProtoMessage() {}
+
+func (x *LogicalPorts) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalPorts.ProtoReflect.Descriptor instead.
 func (*LogicalPorts) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{2}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *LogicalPorts) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalPorts.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalPorts proto.InternalMessageInfo
-
-func (m *LogicalPorts) GetItems() []*LogicalPort {
-	if m != nil {
-		return m.Items
+func (x *LogicalPorts) GetItems() []*LogicalPort {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type LogicalDevice struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// unique id of logical device
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// unique datapath id for the logical device (used by the SDN controller)
@@ -199,151 +216,206 @@
 	// device features
 	SwitchFeatures *openflow_13.OfpSwitchFeatures `protobuf:"bytes,4,opt,name=switch_features,json=switchFeatures,proto3" json:"switch_features,omitempty"`
 	// name of the root device anchoring logical device
-	RootDeviceId         string   `protobuf:"bytes,5,opt,name=root_device_id,json=rootDeviceId,proto3" json:"root_device_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RootDeviceId  string `protobuf:"bytes,5,opt,name=root_device_id,json=rootDeviceId,proto3" json:"root_device_id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalDevice) Reset()         { *m = LogicalDevice{} }
-func (m *LogicalDevice) String() string { return proto.CompactTextString(m) }
-func (*LogicalDevice) ProtoMessage()    {}
+func (x *LogicalDevice) Reset() {
+	*x = LogicalDevice{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalDevice) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalDevice) ProtoMessage() {}
+
+func (x *LogicalDevice) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalDevice.ProtoReflect.Descriptor instead.
 func (*LogicalDevice) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{3}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *LogicalDevice) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalDevice.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalDevice proto.InternalMessageInfo
-
-func (m *LogicalDevice) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *LogicalDevice) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *LogicalDevice) GetDatapathId() uint64 {
-	if m != nil {
-		return m.DatapathId
+func (x *LogicalDevice) GetDatapathId() uint64 {
+	if x != nil {
+		return x.DatapathId
 	}
 	return 0
 }
 
-func (m *LogicalDevice) GetDesc() *openflow_13.OfpDesc {
-	if m != nil {
-		return m.Desc
+func (x *LogicalDevice) GetDesc() *openflow_13.OfpDesc {
+	if x != nil {
+		return x.Desc
 	}
 	return nil
 }
 
-func (m *LogicalDevice) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
-	if m != nil {
-		return m.SwitchFeatures
+func (x *LogicalDevice) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
+	if x != nil {
+		return x.SwitchFeatures
 	}
 	return nil
 }
 
-func (m *LogicalDevice) GetRootDeviceId() string {
-	if m != nil {
-		return m.RootDeviceId
+func (x *LogicalDevice) GetRootDeviceId() string {
+	if x != nil {
+		return x.RootDeviceId
 	}
 	return ""
 }
 
 type LogicalDevices struct {
-	Items                []*LogicalDevice `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*LogicalDevice       `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalDevices) Reset()         { *m = LogicalDevices{} }
-func (m *LogicalDevices) String() string { return proto.CompactTextString(m) }
-func (*LogicalDevices) ProtoMessage()    {}
+func (x *LogicalDevices) Reset() {
+	*x = LogicalDevices{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalDevices) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalDevices) ProtoMessage() {}
+
+func (x *LogicalDevices) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalDevices.ProtoReflect.Descriptor instead.
 func (*LogicalDevices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{4}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []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 (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)
-}
-func (m *LogicalDevices) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalDevices.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalDevices proto.InternalMessageInfo
-
-func (m *LogicalDevices) GetItems() []*LogicalDevice {
-	if m != nil {
-		return m.Items
+func (x *LogicalDevices) GetItems() []*LogicalDevice {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*LogicalPortId)(nil), "logical_device.LogicalPortId")
-	proto.RegisterType((*LogicalPort)(nil), "logical_device.LogicalPort")
-	proto.RegisterType((*LogicalPorts)(nil), "logical_device.LogicalPorts")
-	proto.RegisterType((*LogicalDevice)(nil), "logical_device.LogicalDevice")
-	proto.RegisterType((*LogicalDevices)(nil), "logical_device.LogicalDevices")
+var File_voltha_protos_logical_device_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_logical_device_proto_rawDesc = "" +
+	"\n" +
+	"\"voltha_protos/logical_device.proto\x12\x0elogical_device\x1a\x1cgoogle/api/annotations.proto\x1a\x1fvoltha_protos/openflow_13.proto\"8\n" +
+	"\rLogicalPortId\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" +
+	"\aport_id\x18\x02 \x01(\tR\x06portId\"\xf2\x01\n" +
+	"\vLogicalPort\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x120\n" +
+	"\bofp_port\x18\x02 \x01(\v2\x15.openflow_13.ofp_portR\aofpPort\x12\x1b\n" +
+	"\tdevice_id\x18\x03 \x01(\tR\bdeviceId\x12$\n" +
+	"\x0edevice_port_no\x18\x04 \x01(\rR\fdevicePortNo\x12\x1b\n" +
+	"\troot_port\x18\x05 \x01(\bR\brootPort\x12A\n" +
+	"\x0eofp_port_stats\x18\x06 \x01(\v2\x1b.openflow_13.ofp_port_statsR\fofpPortStats\"A\n" +
+	"\fLogicalPorts\x121\n" +
+	"\x05items\x18\x01 \x03(\v2\x1b.logical_device.LogicalPortR\x05items\"\xdc\x01\n" +
+	"\rLogicalDevice\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
+	"\vdatapath_id\x18\x02 \x01(\x04R\n" +
+	"datapathId\x12)\n" +
+	"\x04desc\x18\x03 \x01(\v2\x15.openflow_13.ofp_descR\x04desc\x12I\n" +
+	"\x0fswitch_features\x18\x04 \x01(\v2 .openflow_13.ofp_switch_featuresR\x0eswitchFeatures\x12$\n" +
+	"\x0eroot_device_id\x18\x05 \x01(\tR\frootDeviceId\"E\n" +
+	"\x0eLogicalDevices\x123\n" +
+	"\x05items\x18\x01 \x03(\v2\x1d.logical_device.LogicalDeviceR\x05itemsBe\n" +
+	"\"org.opencord.voltha.logical_deviceB\x0fOFLogicalDeviceZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_logical_device_proto_rawDescOnce sync.Once
+	file_voltha_protos_logical_device_proto_rawDescData []byte
+)
+
+func file_voltha_protos_logical_device_proto_rawDescGZIP() []byte {
+	file_voltha_protos_logical_device_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_logical_device_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_logical_device_proto_rawDesc), len(file_voltha_protos_logical_device_proto_rawDesc)))
+	})
+	return file_voltha_protos_logical_device_proto_rawDescData
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/logical_device.proto", fileDescriptor_caf139ab3abc8240)
+var file_voltha_protos_logical_device_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_voltha_protos_logical_device_proto_goTypes = []any{
+	(*LogicalPortId)(nil),                 // 0: logical_device.LogicalPortId
+	(*LogicalPort)(nil),                   // 1: logical_device.LogicalPort
+	(*LogicalPorts)(nil),                  // 2: logical_device.LogicalPorts
+	(*LogicalDevice)(nil),                 // 3: logical_device.LogicalDevice
+	(*LogicalDevices)(nil),                // 4: logical_device.LogicalDevices
+	(*openflow_13.OfpPort)(nil),           // 5: openflow_13.ofp_port
+	(*openflow_13.OfpPortStats)(nil),      // 6: openflow_13.ofp_port_stats
+	(*openflow_13.OfpDesc)(nil),           // 7: openflow_13.ofp_desc
+	(*openflow_13.OfpSwitchFeatures)(nil), // 8: openflow_13.ofp_switch_features
+}
+var file_voltha_protos_logical_device_proto_depIdxs = []int32{
+	5, // 0: logical_device.LogicalPort.ofp_port:type_name -> openflow_13.ofp_port
+	6, // 1: logical_device.LogicalPort.ofp_port_stats:type_name -> openflow_13.ofp_port_stats
+	1, // 2: logical_device.LogicalPorts.items:type_name -> logical_device.LogicalPort
+	7, // 3: logical_device.LogicalDevice.desc:type_name -> openflow_13.ofp_desc
+	8, // 4: logical_device.LogicalDevice.switch_features:type_name -> openflow_13.ofp_switch_features
+	3, // 5: logical_device.LogicalDevices.items:type_name -> logical_device.LogicalDevice
+	6, // [6:6] is the sub-list for method output_type
+	6, // [6:6] is the sub-list for method input_type
+	6, // [6:6] is the sub-list for extension type_name
+	6, // [6:6] is the sub-list for extension extendee
+	0, // [0:6] is the sub-list for field type_name
 }
 
-var fileDescriptor_caf139ab3abc8240 = []byte{
-	// 447 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0xd1, 0x6a, 0xdb, 0x30,
-	0x14, 0xc5, 0x69, 0x92, 0xa6, 0x37, 0xa9, 0x0b, 0x86, 0x31, 0xd3, 0x6e, 0xd4, 0x98, 0x3d, 0x64,
-	0x0f, 0xb3, 0xd7, 0x86, 0xc1, 0x5e, 0x5b, 0xba, 0x42, 0x60, 0x6c, 0x43, 0x7b, 0xdb, 0x8b, 0x51,
-	0x2d, 0xc5, 0x11, 0xb8, 0xbe, 0xc6, 0x52, 0xd3, 0x9f, 0xdd, 0x57, 0xec, 0x0b, 0x86, 0xae, 0xec,
-	0x2d, 0x4e, 0xd2, 0x47, 0x1d, 0x9d, 0x73, 0xee, 0xd1, 0xb9, 0x36, 0xc4, 0x1b, 0x2c, 0xcd, 0x9a,
-	0x67, 0x75, 0x83, 0x06, 0x75, 0x5a, 0x62, 0xa1, 0x72, 0x5e, 0x66, 0x42, 0x6e, 0x54, 0x2e, 0x13,
-	0x42, 0x03, 0xbf, 0x8f, 0x9e, 0xbf, 0x29, 0x10, 0x8b, 0x52, 0xa6, 0xbc, 0x56, 0x29, 0xaf, 0x2a,
-	0x34, 0xdc, 0x28, 0xac, 0xb4, 0x63, 0x9f, 0x5f, 0xf6, 0x1d, 0xb1, 0x96, 0xd5, 0xaa, 0xc4, 0xe7,
-	0xec, 0x6a, 0xe1, 0x08, 0xf1, 0x67, 0x38, 0xfd, 0xea, 0x0c, 0x7f, 0x60, 0x63, 0x96, 0x22, 0xf0,
-	0x61, 0xa0, 0x44, 0xe8, 0x45, 0xde, 0xfc, 0x84, 0x0d, 0x94, 0x08, 0x5e, 0xc3, 0x71, 0x8d, 0x8d,
-	0xc9, 0x94, 0x08, 0x07, 0x04, 0x8e, 0x6b, 0x22, 0xc6, 0x7f, 0x3c, 0x98, 0x6e, 0x49, 0xf7, 0x84,
-	0x1f, 0x61, 0x82, 0xab, 0x3a, 0xb3, 0x6c, 0x52, 0x4e, 0xaf, 0x5f, 0x25, 0xdb, 0xf3, 0xbb, 0x4b,
-	0x76, 0x8c, 0xab, 0x9a, 0x1c, 0x2e, 0xe0, 0xc4, 0x3d, 0xca, 0x0e, 0x3b, 0x22, 0xa3, 0x89, 0x03,
-	0x96, 0x22, 0x78, 0x07, 0x7e, 0x7b, 0x49, 0x71, 0x2a, 0x0c, 0x87, 0x91, 0x37, 0x3f, 0x65, 0x33,
-	0x87, 0x5a, 0x83, 0x6f, 0x68, 0x2d, 0x1a, 0x44, 0xe3, 0xa6, 0x8e, 0x22, 0x6f, 0x3e, 0x61, 0x13,
-	0x0b, 0x90, 0xff, 0x0d, 0xf8, 0xdd, 0xd0, 0x4c, 0x1b, 0x6e, 0x74, 0x38, 0xa6, 0x5c, 0x17, 0x07,
-	0x73, 0x39, 0x0a, 0x9b, 0xb5, 0xe9, 0x7e, 0xda, 0x53, 0x7c, 0x03, 0xb3, 0xad, 0x37, 0xeb, 0xe0,
-	0x0a, 0x46, 0xca, 0xc8, 0x47, 0x1d, 0x7a, 0xd1, 0x11, 0x39, 0xed, 0xec, 0x6c, 0x8b, 0xcc, 0x1c,
-	0x33, 0xfe, 0xed, 0xfd, 0xab, 0xfc, 0x8e, 0x48, 0x7b, 0xcd, 0x5d, 0xc2, 0x54, 0x70, 0xc3, 0x6b,
-	0x6e, 0xd6, 0x5d, 0xed, 0x43, 0x06, 0x1d, 0xb4, 0x14, 0xc1, 0x7b, 0x18, 0x0a, 0xa9, 0x73, 0xea,
-	0xe8, 0x50, 0xad, 0xf6, 0x92, 0x11, 0x25, 0x58, 0xc2, 0x99, 0x7e, 0x56, 0x26, 0x5f, 0x67, 0x2b,
-	0xc9, 0xcd, 0x53, 0x23, 0x35, 0xf5, 0x36, 0xbd, 0x8e, 0xf6, 0x54, 0x3b, 0x3c, 0xe6, 0x3b, 0xe0,
-	0xbe, 0x3d, 0xdb, 0x0d, 0x50, 0xb7, 0xff, 0x77, 0x34, 0xa2, 0xc8, 0x33, 0x8b, 0xde, 0xb5, 0x7b,
-	0x8a, 0xbf, 0x80, 0xdf, 0x7b, 0x9d, 0x0e, 0x16, 0xfd, 0x8e, 0xde, 0xbe, 0xd0, 0x91, 0xa3, 0xb7,
-	0x2d, 0xdd, 0x4a, 0x88, 0xb1, 0x29, 0x28, 0x63, 0x8e, 0x8d, 0x48, 0xdc, 0x77, 0xbc, 0x23, 0xbd,
-	0x3d, 0xfb, 0x7e, 0xdf, 0x53, 0xff, 0x4a, 0x0a, 0x65, 0xd6, 0x4f, 0x0f, 0x49, 0x8e, 0x8f, 0x69,
-	0xa7, 0x4d, 0x9d, 0xf6, 0x43, 0xfb, 0x0f, 0x6c, 0x3e, 0xa5, 0x05, 0xb6, 0xd8, 0xc3, 0x98, 0xc0,
-	0xc5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xd8, 0xd6, 0x61, 0x7a, 0x03, 0x00, 0x00,
+func init() { file_voltha_protos_logical_device_proto_init() }
+func file_voltha_protos_logical_device_proto_init() {
+	if File_voltha_protos_logical_device_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_logical_device_proto_rawDesc), len(file_voltha_protos_logical_device_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   5,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_logical_device_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_logical_device_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_logical_device_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_logical_device_proto = out.File
+	file_voltha_protos_logical_device_proto_goTypes = nil
+	file_voltha_protos_logical_device_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
index 462bbe6..9be170a 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
@@ -1,13 +1,17 @@
+//
+// Top-level Voltha API definition
+//
+// For details, see individual definition files.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/voltha.proto
 
 package voltha
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	extension "github.com/opencord/voltha-protos/v5/go/extension"
 	health "github.com/opencord/voltha-protos/v5/go/health"
@@ -16,191 +20,179 @@
 	voip_system_profile "github.com/opencord/voltha-protos/v5/go/voip_system_profile"
 	voip_user_profile "github.com/opencord/voltha-protos/v5/go/voip_user_profile"
 	_ "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"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// 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
+// Symbols defined in public import of voltha_protos/common.proto.
 
-// Key from public import voltha_protos/common.proto
-type Key = common.Key
-
-// ID from public import voltha_protos/common.proto
-type ID = common.ID
-
-// IDs from public import voltha_protos/common.proto
-type IDs = common.IDs
-
-// Connection from public import voltha_protos/common.proto
-type Connection = common.Connection
-
-// AdminState from public import voltha_protos/common.proto
-type AdminState = common.AdminState
-
-// OperStatus from public import voltha_protos/common.proto
-type OperStatus = common.OperStatus
-
-// ConnectStatus from public import voltha_protos/common.proto
-type ConnectStatus = common.ConnectStatus
-
-// OperationResp from public import voltha_protos/common.proto
-type OperationResp = common.OperationResp
-
-// PortStatistics from public import voltha_protos/common.proto
-type PortStatistics = common.PortStatistics
-
-// TestModeKeys from public import voltha_protos/common.proto
 type TestModeKeys = common.TestModeKeys
 
+const TestModeKeys_api_test = common.TestModeKeys_api_test
+
 var TestModeKeys_name = common.TestModeKeys_name
 var TestModeKeys_value = common.TestModeKeys_value
 
-const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
-
-// AdminState_Types from public import voltha_protos/common.proto
 type AdminState_Types = common.AdminState_Types
 
+const AdminState_UNKNOWN = common.AdminState_UNKNOWN
+const AdminState_PREPROVISIONED = common.AdminState_PREPROVISIONED
+const AdminState_ENABLED = common.AdminState_ENABLED
+const AdminState_DISABLED = common.AdminState_DISABLED
+const AdminState_DOWNLOADING_IMAGE = common.AdminState_DOWNLOADING_IMAGE
+
 var AdminState_Types_name = common.AdminState_Types_name
 var AdminState_Types_value = common.AdminState_Types_value
 
-const AdminState_UNKNOWN = AdminState_Types(common.AdminState_UNKNOWN)
-const AdminState_PREPROVISIONED = AdminState_Types(common.AdminState_PREPROVISIONED)
-const AdminState_ENABLED = AdminState_Types(common.AdminState_ENABLED)
-const AdminState_DISABLED = AdminState_Types(common.AdminState_DISABLED)
-const AdminState_DOWNLOADING_IMAGE = AdminState_Types(common.AdminState_DOWNLOADING_IMAGE)
-
-// OperStatus_Types from public import voltha_protos/common.proto
 type OperStatus_Types = common.OperStatus_Types
 
+const OperStatus_UNKNOWN = common.OperStatus_UNKNOWN
+const OperStatus_DISCOVERED = common.OperStatus_DISCOVERED
+const OperStatus_ACTIVATING = common.OperStatus_ACTIVATING
+const OperStatus_TESTING = common.OperStatus_TESTING
+const OperStatus_ACTIVE = common.OperStatus_ACTIVE
+const OperStatus_FAILED = common.OperStatus_FAILED
+const OperStatus_RECONCILING = common.OperStatus_RECONCILING
+const OperStatus_RECONCILING_FAILED = common.OperStatus_RECONCILING_FAILED
+const OperStatus_REBOOTED = common.OperStatus_REBOOTED
+
 var OperStatus_Types_name = common.OperStatus_Types_name
 var OperStatus_Types_value = common.OperStatus_Types_value
 
-const OperStatus_UNKNOWN = OperStatus_Types(common.OperStatus_UNKNOWN)
-const OperStatus_DISCOVERED = OperStatus_Types(common.OperStatus_DISCOVERED)
-const OperStatus_ACTIVATING = OperStatus_Types(common.OperStatus_ACTIVATING)
-const OperStatus_TESTING = OperStatus_Types(common.OperStatus_TESTING)
-const OperStatus_ACTIVE = OperStatus_Types(common.OperStatus_ACTIVE)
-const OperStatus_FAILED = OperStatus_Types(common.OperStatus_FAILED)
-const OperStatus_RECONCILING = OperStatus_Types(common.OperStatus_RECONCILING)
-const OperStatus_RECONCILING_FAILED = OperStatus_Types(common.OperStatus_RECONCILING_FAILED)
-const OperStatus_REBOOTED = OperStatus_Types(common.OperStatus_REBOOTED)
-
-// ConnectStatus_Types from public import voltha_protos/common.proto
 type ConnectStatus_Types = common.ConnectStatus_Types
 
+const ConnectStatus_UNKNOWN = common.ConnectStatus_UNKNOWN
+const ConnectStatus_UNREACHABLE = common.ConnectStatus_UNREACHABLE
+const ConnectStatus_REACHABLE = common.ConnectStatus_REACHABLE
+
 var ConnectStatus_Types_name = common.ConnectStatus_Types_name
 var ConnectStatus_Types_value = common.ConnectStatus_Types_value
 
-const ConnectStatus_UNKNOWN = ConnectStatus_Types(common.ConnectStatus_UNKNOWN)
-const ConnectStatus_UNREACHABLE = ConnectStatus_Types(common.ConnectStatus_UNREACHABLE)
-const ConnectStatus_REACHABLE = ConnectStatus_Types(common.ConnectStatus_REACHABLE)
-
-// OperationResp_OperationReturnCode from public import voltha_protos/common.proto
 type OperationResp_OperationReturnCode = common.OperationResp_OperationReturnCode
 
+const OperationResp_OPERATION_SUCCESS = common.OperationResp_OPERATION_SUCCESS
+const OperationResp_OPERATION_FAILURE = common.OperationResp_OPERATION_FAILURE
+const OperationResp_OPERATION_UNSUPPORTED = common.OperationResp_OPERATION_UNSUPPORTED
+const OperationResp_OPERATION_IN_PROGRESS = common.OperationResp_OPERATION_IN_PROGRESS
+
 var OperationResp_OperationReturnCode_name = common.OperationResp_OperationReturnCode_name
 var OperationResp_OperationReturnCode_value = common.OperationResp_OperationReturnCode_value
 
-const OperationResp_OPERATION_SUCCESS = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_SUCCESS)
-const OperationResp_OPERATION_FAILURE = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_FAILURE)
-const OperationResp_OPERATION_UNSUPPORTED = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_UNSUPPORTED)
-const OperationResp_OPERATION_IN_PROGRESS = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_IN_PROGRESS)
+type Key = common.Key
+type ID = common.ID
+type IDs = common.IDs
+type Connection = common.Connection
+type AdminState = common.AdminState
+type OperStatus = common.OperStatus
+type ConnectStatus = common.ConnectStatus
+type OperationResp = common.OperationResp
+type PortStatistics = common.PortStatistics
 
 // CoreInstance represents a core instance.  It is data held in memory when a core
 // is running.  This data is not persistent.
 type CoreInstance struct {
-	InstanceId           string               `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
-	Health               *health.HealthStatus `protobuf:"bytes,2,opt,name=health,proto3" json:"health,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	InstanceId    string                 `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Health        *health.HealthStatus   `protobuf:"bytes,2,opt,name=health,proto3" json:"health,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *CoreInstance) Reset()         { *m = CoreInstance{} }
-func (m *CoreInstance) String() string { return proto.CompactTextString(m) }
-func (*CoreInstance) ProtoMessage()    {}
+func (x *CoreInstance) Reset() {
+	*x = CoreInstance{}
+	mi := &file_voltha_protos_voltha_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *CoreInstance) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreInstance) ProtoMessage() {}
+
+func (x *CoreInstance) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voltha_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreInstance.ProtoReflect.Descriptor instead.
 func (*CoreInstance) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{0}
+	return file_voltha_protos_voltha_proto_rawDescGZIP(), []int{0}
 }
 
-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 (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)
-}
-func (m *CoreInstance) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreInstance.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreInstance proto.InternalMessageInfo
-
-func (m *CoreInstance) GetInstanceId() string {
-	if m != nil {
-		return m.InstanceId
+func (x *CoreInstance) GetInstanceId() string {
+	if x != nil {
+		return x.InstanceId
 	}
 	return ""
 }
 
-func (m *CoreInstance) GetHealth() *health.HealthStatus {
-	if m != nil {
-		return m.Health
+func (x *CoreInstance) GetHealth() *health.HealthStatus {
+	if x != nil {
+		return x.Health
 	}
 	return nil
 }
 
 type CoreInstances struct {
-	Items                []*CoreInstance `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*CoreInstance        `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *CoreInstances) Reset()         { *m = CoreInstances{} }
-func (m *CoreInstances) String() string { return proto.CompactTextString(m) }
-func (*CoreInstances) ProtoMessage()    {}
+func (x *CoreInstances) Reset() {
+	*x = CoreInstances{}
+	mi := &file_voltha_protos_voltha_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *CoreInstances) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreInstances) ProtoMessage() {}
+
+func (x *CoreInstances) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voltha_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreInstances.ProtoReflect.Descriptor instead.
 func (*CoreInstances) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{1}
+	return file_voltha_protos_voltha_proto_rawDescGZIP(), []int{1}
 }
 
-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 (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)
-}
-func (m *CoreInstances) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreInstances.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreInstances proto.InternalMessageInfo
-
-func (m *CoreInstances) GetItems() []*CoreInstance {
-	if m != nil {
-		return m.Items
+func (x *CoreInstances) GetItems() []*CoreInstance {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
@@ -209,3190 +201,484 @@
 // the entire cluster. However, some items (e.g. adapters) will be held by all cores
 // for better performance
 type Voltha struct {
-	Version              string                  `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
-	Adapters             []*Adapter              `protobuf:"bytes,2,rep,name=adapters,proto3" json:"adapters,omitempty"`
-	LogicalDevices       []*LogicalDevice        `protobuf:"bytes,3,rep,name=logical_devices,json=logicalDevices,proto3" json:"logical_devices,omitempty"`
-	Devices              []*Device               `protobuf:"bytes,4,rep,name=devices,proto3" json:"devices,omitempty"`
-	DeviceTypes          []*DeviceType           `protobuf:"bytes,5,rep,name=device_types,json=deviceTypes,proto3" json:"device_types,omitempty"`
-	EventFilters         []*EventFilter          `protobuf:"bytes,7,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
-	OmciMibDatabase      []*omci.MibDeviceData   `protobuf:"bytes,28,rep,name=omci_mib_database,json=omciMibDatabase,proto3" json:"omci_mib_database,omitempty"`
-	OmciAlarmDatabase    []*omci.AlarmDeviceData `protobuf:"bytes,29,rep,name=omci_alarm_database,json=omciAlarmDatabase,proto3" json:"omci_alarm_database,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	state             protoimpl.MessageState  `protogen:"open.v1"`
+	Version           string                  `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+	Adapters          []*Adapter              `protobuf:"bytes,2,rep,name=adapters,proto3" json:"adapters,omitempty"`
+	LogicalDevices    []*LogicalDevice        `protobuf:"bytes,3,rep,name=logical_devices,json=logicalDevices,proto3" json:"logical_devices,omitempty"`
+	Devices           []*Device               `protobuf:"bytes,4,rep,name=devices,proto3" json:"devices,omitempty"`
+	DeviceTypes       []*DeviceType           `protobuf:"bytes,5,rep,name=device_types,json=deviceTypes,proto3" json:"device_types,omitempty"`
+	EventFilters      []*EventFilter          `protobuf:"bytes,7,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
+	OmciMibDatabase   []*omci.MibDeviceData   `protobuf:"bytes,28,rep,name=omci_mib_database,json=omciMibDatabase,proto3" json:"omci_mib_database,omitempty"`
+	OmciAlarmDatabase []*omci.AlarmDeviceData `protobuf:"bytes,29,rep,name=omci_alarm_database,json=omciAlarmDatabase,proto3" json:"omci_alarm_database,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *Voltha) Reset()         { *m = Voltha{} }
-func (m *Voltha) String() string { return proto.CompactTextString(m) }
-func (*Voltha) ProtoMessage()    {}
+func (x *Voltha) Reset() {
+	*x = Voltha{}
+	mi := &file_voltha_protos_voltha_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Voltha) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Voltha) ProtoMessage() {}
+
+func (x *Voltha) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voltha_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Voltha.ProtoReflect.Descriptor instead.
 func (*Voltha) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{2}
+	return file_voltha_protos_voltha_proto_rawDescGZIP(), []int{2}
 }
 
-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 (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)
-}
-func (m *Voltha) XXX_DiscardUnknown() {
-	xxx_messageInfo_Voltha.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Voltha proto.InternalMessageInfo
-
-func (m *Voltha) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *Voltha) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *Voltha) GetAdapters() []*Adapter {
-	if m != nil {
-		return m.Adapters
+func (x *Voltha) GetAdapters() []*Adapter {
+	if x != nil {
+		return x.Adapters
 	}
 	return nil
 }
 
-func (m *Voltha) GetLogicalDevices() []*LogicalDevice {
-	if m != nil {
-		return m.LogicalDevices
+func (x *Voltha) GetLogicalDevices() []*LogicalDevice {
+	if x != nil {
+		return x.LogicalDevices
 	}
 	return nil
 }
 
-func (m *Voltha) GetDevices() []*Device {
-	if m != nil {
-		return m.Devices
+func (x *Voltha) GetDevices() []*Device {
+	if x != nil {
+		return x.Devices
 	}
 	return nil
 }
 
-func (m *Voltha) GetDeviceTypes() []*DeviceType {
-	if m != nil {
-		return m.DeviceTypes
+func (x *Voltha) GetDeviceTypes() []*DeviceType {
+	if x != nil {
+		return x.DeviceTypes
 	}
 	return nil
 }
 
-func (m *Voltha) GetEventFilters() []*EventFilter {
-	if m != nil {
-		return m.EventFilters
+func (x *Voltha) GetEventFilters() []*EventFilter {
+	if x != nil {
+		return x.EventFilters
 	}
 	return nil
 }
 
-func (m *Voltha) GetOmciMibDatabase() []*omci.MibDeviceData {
-	if m != nil {
-		return m.OmciMibDatabase
+func (x *Voltha) GetOmciMibDatabase() []*omci.MibDeviceData {
+	if x != nil {
+		return x.OmciMibDatabase
 	}
 	return nil
 }
 
-func (m *Voltha) GetOmciAlarmDatabase() []*omci.AlarmDeviceData {
-	if m != nil {
-		return m.OmciAlarmDatabase
+func (x *Voltha) GetOmciAlarmDatabase() []*omci.AlarmDeviceData {
+	if x != nil {
+		return x.OmciAlarmDatabase
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*CoreInstance)(nil), "voltha.CoreInstance")
-	proto.RegisterType((*CoreInstances)(nil), "voltha.CoreInstances")
-	proto.RegisterType((*Voltha)(nil), "voltha.Voltha")
-}
+var File_voltha_protos_voltha_proto protoreflect.FileDescriptor
 
-func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
+const file_voltha_protos_voltha_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/voltha.proto\x12\x06voltha\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1avoltha_protos/common.proto\x1a\x1avoltha_protos/health.proto\x1a\"voltha_protos/logical_device.proto\x1a\x1avoltha_protos/device.proto\x1a\x1bvoltha_protos/adapter.proto\x1a\x1fvoltha_protos/openflow_13.proto\x1a\x1avoltha_protos/events.proto\x1a\x1evoltha_protos/extensions.proto\x1a'voltha_protos/voip_system_profile.proto\x1a%voltha_protos/voip_user_profile.proto\x1a\x1fvoltha_protos/omci_mib_db.proto\x1a!voltha_protos/omci_alarm_db.proto\x1a\x1dvoltha_protos/omci_test.proto\"]\n" +
+	"\fCoreInstance\x12\x1f\n" +
+	"\vinstance_id\x18\x01 \x01(\tR\n" +
+	"instanceId\x12,\n" +
+	"\x06health\x18\x02 \x01(\v2\x14.health.HealthStatusR\x06health\";\n" +
+	"\rCoreInstances\x12*\n" +
+	"\x05items\x18\x01 \x03(\v2\x14.voltha.CoreInstanceR\x05items\"\xc0\x03\n" +
+	"\x06Voltha\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\tR\aversion\x12,\n" +
+	"\badapters\x18\x02 \x03(\v2\x10.adapter.AdapterR\badapters\x12F\n" +
+	"\x0flogical_devices\x18\x03 \x03(\v2\x1d.logical_device.LogicalDeviceR\x0elogicalDevices\x12(\n" +
+	"\adevices\x18\x04 \x03(\v2\x0e.device.DeviceR\adevices\x125\n" +
+	"\fdevice_types\x18\x05 \x03(\v2\x12.device.DeviceTypeR\vdeviceTypes\x127\n" +
+	"\revent_filters\x18\a \x03(\v2\x12.event.EventFilterR\feventFilters\x12?\n" +
+	"\x11omci_mib_database\x18\x1c \x03(\v2\x13.omci.MibDeviceDataR\x0fomciMibDatabase\x12E\n" +
+	"\x13omci_alarm_database\x18\x1d \x03(\v2\x15.omci.AlarmDeviceDataR\x11omciAlarmDatabaseJ\x04\b\x06\x10\a2\xbb;\n" +
+	"\rVolthaService\x12D\n" +
+	"\tGetVoltha\x12\x16.google.protobuf.Empty\x1a\x0e.voltha.Voltha\"\x0f\x82\xd3\xe4\x93\x02\t\x12\a/api/v1\x12]\n" +
+	"\x11ListCoreInstances\x12\x16.google.protobuf.Empty\x1a\x15.voltha.CoreInstances\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/instances\x12S\n" +
+	"\x0fGetCoreInstance\x12\n" +
+	".common.ID\x1a\x14.voltha.CoreInstance\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/api/v1/instances/{id}\x12S\n" +
+	"\fListAdapters\x12\x16.google.protobuf.Empty\x1a\x11.adapter.Adapters\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/adapters\x12m\n" +
+	"\x12ListLogicalDevices\x12\x16.google.protobuf.Empty\x1a\x1e.logical_device.LogicalDevices\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/v1/logical_devices\x12c\n" +
+	"\x10GetLogicalDevice\x12\n" +
+	".common.ID\x1a\x1d.logical_device.LogicalDevice\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/logical_devices/{id}\x12n\n" +
+	"\x16ListLogicalDevicePorts\x12\n" +
+	".common.ID\x1a\x1c.logical_device.LogicalPorts\"*\x82\xd3\xe4\x93\x02$\x12\"/api/v1/logical_devices/{id}/ports\x12\x88\x01\n" +
+	"\x14GetLogicalDevicePort\x12\x1d.logical_device.LogicalPortId\x1a\x1b.logical_device.LogicalPort\"4\x82\xd3\xe4\x93\x02.\x12,/api/v1/logical_devices/{id}/ports/{port_id}\x12\x8d\x01\n" +
+	"\x17EnableLogicalDevicePort\x12\x1d.logical_device.LogicalPortId\x1a\x16.google.protobuf.Empty\";\x82\xd3\xe4\x93\x025\"3/api/v1/logical_devices/{id}/ports/{port_id}/enable\x12\x8f\x01\n" +
+	"\x18DisableLogicalDevicePort\x12\x1d.logical_device.LogicalPortId\x1a\x16.google.protobuf.Empty\"<\x82\xd3\xe4\x93\x026\"4/api/v1/logical_devices/{id}/ports/{port_id}/disable\x12d\n" +
+	"\x16ListLogicalDeviceFlows\x12\n" +
+	".common.ID\x1a\x12.openflow_13.Flows\"*\x82\xd3\xe4\x93\x02$\x12\"/api/v1/logical_devices/{id}/flows\x12\x83\x01\n" +
+	"\x1cUpdateLogicalDeviceFlowTable\x12\x1c.openflow_13.FlowTableUpdate\x1a\x16.google.protobuf.Empty\"-\x82\xd3\xe4\x93\x02':\x01*\"\"/api/v1/logical_devices/{id}/flows\x12\x84\x01\n" +
+	"\x1dUpdateLogicalDeviceMeterTable\x12\x1b.openflow_13.MeterModUpdate\x1a\x16.google.protobuf.Empty\".\x82\xd3\xe4\x93\x02(:\x01*\"#/api/v1/logical_devices/{id}/meters\x12g\n" +
+	"\x17ListLogicalDeviceMeters\x12\n" +
+	".common.ID\x1a\x13.openflow_13.Meters\"+\x82\xd3\xe4\x93\x02%\x12#/api/v1/logical_devices/{id}/meters\x12t\n" +
+	"\x1bListLogicalDeviceFlowGroups\x12\n" +
+	".common.ID\x1a\x17.openflow_13.FlowGroups\"0\x82\xd3\xe4\x93\x02*\x12(/api/v1/logical_devices/{id}/flow_groups\x12\x93\x01\n" +
+	"!UpdateLogicalDeviceFlowGroupTable\x12!.openflow_13.FlowGroupTableUpdate\x1a\x16.google.protobuf.Empty\"3\x82\xd3\xe4\x93\x02-:\x01*\"(/api/v1/logical_devices/{id}/flow_groups\x12O\n" +
+	"\vListDevices\x12\x16.google.protobuf.Empty\x1a\x0f.device.Devices\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/devices\x12O\n" +
+	"\rListDeviceIds\x12\x16.google.protobuf.Empty\x1a\v.common.IDs\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/deviceids\x12U\n" +
+	"\x10ReconcileDevices\x12\v.common.IDs\x1a\x16.google.protobuf.Empty\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/v1/deviceids\x12E\n" +
+	"\tGetDevice\x12\n" +
+	".common.ID\x1a\x0e.device.Device\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/devices/{id}\x12J\n" +
+	"\fCreateDevice\x12\x0e.device.Device\x1a\x0e.device.Device\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/api/v1/devices\x12W\n" +
+	"\fEnableDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d\"\x1b/api/v1/devices/{id}/enable\x12Y\n" +
+	"\rDisableDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"$\x82\xd3\xe4\x93\x02\x1e\"\x1c/api/v1/devices/{id}/disable\x12W\n" +
+	"\fRebootDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d\"\x1b/api/v1/devices/{id}/reboot\x12W\n" +
+	"\fDeleteDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d*\x1b/api/v1/devices/{id}/delete\x12b\n" +
+	"\x11ForceDeleteDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\")\x82\xd3\xe4\x93\x02#*!/api/v1/devices/{id}/force_delete\x12x\n" +
+	"\rDownloadImage\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"9\x82\xd3\xe4\x93\x020:\x01*\"+/api/v1/devices/{id}/image_downloads/{name}\x88\x02\x01\x12\x85\x01\n" +
+	"\x16GetImageDownloadStatus\x12\x15.device.ImageDownload\x1a\x15.device.ImageDownload\"=\x82\xd3\xe4\x93\x024\x122/api/v1/devices/{id}/image_downloads/{name}/status\x88\x02\x01\x12x\n" +
+	"\x10GetImageDownload\x12\x15.device.ImageDownload\x1a\x15.device.ImageDownload\"6\x82\xd3\xe4\x93\x02-\x12+/api/v1/devices/{id}/image_downloads/{name}\x88\x02\x01\x12i\n" +
+	"\x12ListImageDownloads\x12\n" +
+	".common.ID\x1a\x16.device.ImageDownloads\"/\x82\xd3\xe4\x93\x02&\x12$/api/v1/devices/{id}/image_downloads\x88\x02\x01\x12{\n" +
+	"\x13CancelImageDownload\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"6\x82\xd3\xe4\x93\x02-*+/api/v1/devices/{id}/image_downloads/{name}\x88\x02\x01\x12\x8b\x01\n" +
+	"\x13ActivateImageUpdate\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"F\x82\xd3\xe4\x93\x02=:\x01*\"8/api/v1/devices/{id}/image_downloads/{name}/image_update\x88\x02\x01\x12\x89\x01\n" +
+	"\x11RevertImageUpdate\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"F\x82\xd3\xe4\x93\x02=:\x01*\"8/api/v1/devices/{id}/image_downloads/{name}/image_revert\x88\x02\x01\x12\x88\x01\n" +
+	"\x15DownloadImageToDevice\x12\".device.DeviceImageDownloadRequest\x1a\x1b.device.DeviceImageResponse\".\x82\xd3\xe4\x93\x02(\x12&/api/v1/devices/images/download_images\x12w\n" +
+	"\x0eGetImageStatus\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\",\x82\xd3\xe4\x93\x02&\x12$/api/v1/devices/images/images_status\x12\x89\x01\n" +
+	"\x19AbortImageUpgradeToDevice\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/devices/images/abort_upgrade_images\x12V\n" +
+	"\fGetOnuImages\x12\n" +
+	".common.ID\x1a\x11.device.OnuImages\"'\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/devices/{id}/onu_images\x12{\n" +
+	"\rActivateImage\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\"1\x82\xd3\xe4\x93\x02+:\x01*\"&/api/v1/devices/images/activate_images\x12w\n" +
+	"\vCommitImage\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\"/\x82\xd3\xe4\x93\x02):\x01*\"$/api/v1/devices/images/commit_images\x12P\n" +
+	"\x0fListDevicePorts\x12\n" +
+	".common.ID\x1a\r.device.Ports\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/devices/{id}/ports\x12]\n" +
+	"\x13ListDevicePmConfigs\x12\n" +
+	".common.ID\x1a\x11.device.PmConfigs\"'\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/devices/{id}/pm_configs\x12n\n" +
+	"\x15UpdateDevicePmConfigs\x12\x11.device.PmConfigs\x1a\x16.google.protobuf.Empty\"*\x82\xd3\xe4\x93\x02$:\x01*\"\x1f/api/v1/devices/{id}/pm_configs\x12U\n" +
+	"\x0fListDeviceFlows\x12\n" +
+	".common.ID\x1a\x12.openflow_13.Flows\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/devices/{id}/flows\x12e\n" +
+	"\x14ListDeviceFlowGroups\x12\n" +
+	".common.ID\x1a\x17.openflow_13.FlowGroups\"(\x82\xd3\xe4\x93\x02\"\x12 /api/v1/devices/{id}/flow_groups\x12\\\n" +
+	"\x0fListDeviceTypes\x12\x16.google.protobuf.Empty\x1a\x13.device.DeviceTypes\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/device_types\x12R\n" +
+	"\rGetDeviceType\x12\n" +
+	".common.ID\x1a\x12.device.DeviceType\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/v1/device_types/{id}\x12F\n" +
+	"\x10StreamPacketsOut\x12\x16.openflow_13.PacketOut\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12E\n" +
+	"\x10ReceivePacketsIn\x12\x16.google.protobuf.Empty\x1a\x15.openflow_13.PacketIn\"\x000\x01\x12K\n" +
+	"\x13ReceiveChangeEvents\x12\x16.google.protobuf.Empty\x1a\x18.openflow_13.ChangeEvent\"\x000\x01\x12]\n" +
+	"\x11CreateEventFilter\x12\x12.event.EventFilter\x1a\x12.event.EventFilter\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/api/v1/event_filters\x12U\n" +
+	"\x0eGetEventFilter\x12\n" +
+	".common.ID\x1a\x13.event.EventFilters\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/event_filters/{id}\x12b\n" +
+	"\x11UpdateEventFilter\x12\x12.event.EventFilter\x1a\x12.event.EventFilter\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\x1a\x1a/api/v1/event_filters/{id}\x12c\n" +
+	"\x11DeleteEventFilter\x12\x12.event.EventFilter\x1a\x16.google.protobuf.Empty\"\"\x82\xd3\xe4\x93\x02\x1c*\x1a/api/v1/event_filters/{id}\x12^\n" +
+	"\x10ListEventFilters\x12\x16.google.protobuf.Empty\x1a\x13.event.EventFilters\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/event_filters\x12L\n" +
+	"\tGetImages\x12\n" +
+	".common.ID\x1a\x0e.device.Images\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/devices/{id}/images\x12X\n" +
+	"\bSelfTest\x12\n" +
+	".common.ID\x1a\x18.device.SelfTestResponse\"&\x82\xd3\xe4\x93\x02 \"\x1e/api/v1/devices/{id}/self_test\x12V\n" +
+	"\x10GetMibDeviceData\x12\n" +
+	".common.ID\x1a\x13.omci.MibDeviceData\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/v1/openomci/{id}/mib\x12\\\n" +
+	"\x12GetAlarmDeviceData\x12\n" +
+	".common.ID\x1a\x15.omci.AlarmDeviceData\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/openomci/{id}/alarm\x12s\n" +
+	"\rSimulateAlarm\x12\x1c.device.SimulateAlarmRequest\x1a\x15.common.OperationResp\"-\x82\xd3\xe4\x93\x02':\x01*\"\"/api/v1/devices/{id}/simulate_larm\x12M\n" +
+	"\n" +
+	"EnablePort\x12\f.device.Port\x1a\x16.google.protobuf.Empty\"\x19\x82\xd3\xe4\x93\x02\x13:\x01*\"\x0e/v1/EnablePort\x12O\n" +
+	"\vDisablePort\x12\f.device.Port\x1a\x16.google.protobuf.Empty\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v1/DisablePort\x12^\n" +
+	"\vGetExtValue\x12\x19.extension.ValueSpecifier\x1a\x17.extension.ReturnValues\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/GetExtValue\x12W\n" +
+	"\vSetExtValue\x12\x13.extension.ValueSet\x1a\x16.google.protobuf.Empty\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/SetExtValue\x12d\n" +
+	"\x13StartOmciTestAction\x12\x15.omci.OmciTestRequest\x1a\x12.omci.TestResponse\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\"\x17/api/v1/start_omci_test\x12\x85\x01\n" +
+	"\x14PutVoipSystemProfile\x12-.voip_system_profile.VoipSystemProfileRequest\x1a\x16.google.protobuf.Empty\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/voip_system_profile\x12p\n" +
+	"\x17DeleteVoipSystemProfile\x12\v.common.Key\x1a\x16.google.protobuf.Empty\"0\x82\xd3\xe4\x93\x02**(/api/v1/voip_system_profile/{key}/delete\x12}\n" +
+	"\x12PutVoipUserProfile\x12).voip_user_profile.VoipUserProfileRequest\x1a\x16.google.protobuf.Empty\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/api/v1/voip_user_profile\x12l\n" +
+	"\x15DeleteVoipUserProfile\x12\v.common.Key\x1a\x16.google.protobuf.Empty\".\x82\xd3\xe4\x93\x02(*&/api/v1/voip_user_profile/{key}/delete\x12Z\n" +
+	"\x10DisableOnuDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"\"\x82\xd3\xe4\x93\x02\x1c\"\x1a/api/v1/disable_onu_device\x12X\n" +
+	"\x0fEnableOnuDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"!\x82\xd3\xe4\x93\x02\x1b\"\x19/api/v1/enable_onu_device\x12|\n" +
+	"\x16DisableOnuSerialNumber\x12\x1f.device.OnuSerialNumberOnOLTPon\x1a\x16.google.protobuf.Empty\")\x82\xd3\xe4\x93\x02#\"!/api/v1/disable_onu_serial_number\x12z\n" +
+	"\x15EnableOnuSerialNumber\x12\x1f.device.OnuSerialNumberOnOLTPon\x1a\x16.google.protobuf.Empty\"(\x82\xd3\xe4\x93\x02\"\" /api/v1/enable_onu_serial_number\x12[\n" +
+	"\fUpdateDevice\x12\x14.device.UpdateDevice\x1a\x16.google.protobuf.Empty\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x15/api/v1/update_deviceBl\n" +
+	"\x13org.opencord.volthaB\fVolthaProtosZ.github.com/opencord/voltha-protos/v5/go/voltha\xaa\x02\x16Opencord.Voltha.VolthaP\x02b\x06proto3"
 
-var fileDescriptor_e084f1a60ce7016c = []byte{
-	// 2365 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x73, 0x1b, 0xb7,
-	0x15, 0x0e, 0x95, 0xc4, 0x17, 0xe8, 0x4a, 0x50, 0x17, 0x8a, 0x92, 0x2c, 0x09, 0xbe, 0xc9, 0xb4,
-	0x4d, 0xfa, 0x9a, 0xb6, 0x4e, 0x33, 0x1d, 0x47, 0xb7, 0x2a, 0xb1, 0x4b, 0x0d, 0x69, 0xcb, 0x69,
-	0x26, 0xce, 0xce, 0x92, 0x84, 0xe8, 0x9d, 0x2c, 0x77, 0xd9, 0x05, 0x28, 0x5b, 0x55, 0xfd, 0xd2,
-	0x36, 0x33, 0xee, 0x74, 0x3a, 0x7d, 0xc8, 0xbf, 0xe8, 0xaf, 0xe8, 0x7f, 0xe8, 0x7b, 0x9f, 0xfa,
-	0x43, 0x3a, 0x38, 0x00, 0xc8, 0x05, 0x17, 0x4b, 0x89, 0xae, 0x67, 0xfa, 0x62, 0x6a, 0x71, 0x0e,
-	0xbe, 0xef, 0xc3, 0xc1, 0x01, 0x16, 0x38, 0x6b, 0x54, 0x38, 0x0a, 0x7d, 0xfe, 0xca, 0x75, 0x3a,
-	0x51, 0xc8, 0x43, 0x56, 0x96, 0x4f, 0x25, 0x78, 0xc2, 0xe7, 0xe4, 0x53, 0x61, 0xb9, 0x15, 0x86,
-	0x2d, 0x9f, 0x96, 0xdd, 0x8e, 0x57, 0x76, 0x83, 0x20, 0xe4, 0x2e, 0xf7, 0xc2, 0x80, 0x49, 0xaf,
-	0xc2, 0x92, 0xb2, 0xc2, 0x53, 0xbd, 0x7b, 0x58, 0xa6, 0xed, 0x0e, 0x3f, 0x56, 0xc6, 0x01, 0xf8,
-	0x46, 0xd8, 0x6e, 0x87, 0x81, 0xdd, 0xf6, 0x8a, 0xba, 0x3e, 0x7f, 0xa5, 0x6c, 0xc4, 0xb4, 0xf9,
-	0x61, 0xcb, 0x6b, 0xb8, 0xbe, 0xd3, 0xa4, 0x47, 0x5e, 0x83, 0xda, 0xfb, 0x1b, 0xb6, 0x25, 0xd3,
-	0xe6, 0x36, 0xdd, 0x0e, 0xa7, 0x91, 0x32, 0xae, 0x9a, 0xc6, 0xb0, 0x43, 0x83, 0x43, 0x3f, 0x7c,
-	0xed, 0xdc, 0xbd, 0x6f, 0x47, 0xa6, 0x47, 0x34, 0xe0, 0x7a, 0xb8, 0x97, 0x06, 0x6c, 0x6f, 0x38,
-	0x0d, 0x58, 0x2c, 0x1c, 0xd7, 0x07, 0x03, 0xea, 0x75, 0x1c, 0x76, 0xcc, 0x38, 0x6d, 0x8b, 0xa6,
-	0x43, 0xcf, 0xd7, 0x12, 0xaf, 0x5a, 0x1c, 0xbb, 0x8c, 0x46, 0x03, 0x6e, 0x83, 0x62, 0xdb, 0x0d,
-	0xcf, 0x69, 0x7b, 0x75, 0xa7, 0x59, 0x57, 0x0e, 0xeb, 0x16, 0x07, 0xd7, 0x77, 0xa3, 0x76, 0xdf,
-	0x65, 0xc5, 0xe2, 0xc2, 0x29, 0xe3, 0xd2, 0x4c, 0x5e, 0xa2, 0x89, 0xcd, 0x30, 0xa2, 0x7b, 0x01,
-	0xe3, 0x6e, 0xd0, 0xa0, 0x78, 0x15, 0x8d, 0x7b, 0xea, 0x6f, 0xc7, 0x6b, 0xe6, 0x33, 0x6b, 0x99,
-	0x8d, 0x8b, 0x55, 0xa4, 0x9b, 0xf6, 0x9a, 0xf8, 0x16, 0x3a, 0x27, 0x67, 0x2b, 0x3f, 0xb6, 0x96,
-	0xd9, 0x18, 0xbf, 0x37, 0x5b, 0x52, 0x93, 0xf7, 0x6b, 0xf8, 0xa9, 0x71, 0x97, 0x77, 0x59, 0x55,
-	0xf9, 0x90, 0xcf, 0xd1, 0x64, 0x1c, 0x9e, 0xe1, 0x22, 0xfa, 0xd4, 0xe3, 0xb4, 0xcd, 0xf2, 0x99,
-	0xb5, 0x8f, 0xa1, 0xb7, 0xca, 0xba, 0xb8, 0x57, 0x55, 0xba, 0x90, 0x7f, 0x7e, 0x8c, 0xce, 0x1d,
-	0x80, 0x19, 0xe7, 0xd1, 0xf9, 0x23, 0x1a, 0x89, 0x58, 0x2b, 0x49, 0xfa, 0x11, 0xdf, 0x42, 0x17,
-	0xd4, 0x0c, 0xb3, 0xfc, 0x18, 0x60, 0xce, 0x94, 0xf4, 0x94, 0x3f, 0x96, 0xbf, 0xd5, 0x9e, 0x07,
-	0xde, 0x41, 0xd3, 0x66, 0x3e, 0xb1, 0xfc, 0xc7, 0xd0, 0x69, 0xa5, 0x34, 0x90, 0x67, 0x4f, 0xe4,
-	0xe3, 0x16, 0x3c, 0x55, 0xa7, 0xfc, 0xf8, 0x23, 0xc3, 0x1b, 0xe8, 0xbc, 0xee, 0xff, 0x09, 0xf4,
-	0x9f, 0x2a, 0xa9, 0x7e, 0xaa, 0x83, 0x36, 0xe3, 0x87, 0x68, 0x42, 0xfe, 0xe9, 0xf0, 0xe3, 0x0e,
-	0x65, 0xf9, 0x4f, 0xc1, 0x1d, 0x9b, 0xee, 0xcf, 0x8e, 0x3b, 0xb4, 0x3a, 0xde, 0xec, 0xfd, 0xcd,
-	0xf0, 0xcf, 0xd0, 0x24, 0xa4, 0x9e, 0x73, 0xe8, 0xf9, 0x30, 0xb6, 0xf3, 0xaa, 0x1f, 0xb4, 0x96,
-	0xb6, 0xc5, 0xbf, 0x3b, 0x60, 0xaa, 0x4e, 0xd0, 0xfe, 0x03, 0xc3, 0xbf, 0x42, 0xd9, 0x7e, 0x9e,
-	0xb8, 0xdc, 0xad, 0xbb, 0x8c, 0xe6, 0x97, 0xa1, 0x73, 0xae, 0x24, 0x2c, 0xa5, 0xa7, 0x5e, 0x5d,
-	0xb2, 0x6e, 0xb9, 0xdc, 0xad, 0x4e, 0x8b, 0x36, 0xd1, 0xa4, 0x7c, 0xf1, 0x36, 0xca, 0xc5, 0xf3,
-	0x48, 0x43, 0xac, 0x00, 0xc4, 0x9c, 0x84, 0x78, 0x2c, 0x6c, 0x31, 0x10, 0xa0, 0x94, 0x8d, 0xca,
-	0xff, 0xab, 0x4f, 0x2e, 0x9c, 0x9b, 0x39, 0x7f, 0xef, 0xdf, 0x8f, 0xd0, 0xa4, 0x9c, 0xc2, 0x1a,
-	0x8d, 0x84, 0x3b, 0xde, 0x42, 0x17, 0x77, 0x29, 0x57, 0xd3, 0x3a, 0x5f, 0x92, 0x1b, 0x48, 0x49,
-	0x6f, 0x20, 0xa5, 0x6d, 0xb1, 0x81, 0x14, 0xa6, 0x74, 0x5a, 0x48, 0x3f, 0x32, 0xfd, 0xc7, 0x7f,
-	0xfd, 0xe7, 0xa7, 0xb1, 0x8b, 0xf8, 0x3c, 0xec, 0x43, 0x47, 0x77, 0xf1, 0x4b, 0x94, 0x7d, 0xe2,
-	0x31, 0x6e, 0xe6, 0x56, 0x1a, 0xda, 0x9c, 0x2d, 0xc9, 0x18, 0x59, 0x04, 0xd0, 0x1c, 0xce, 0x2a,
-	0xd0, 0xb2, 0xd7, 0x43, 0xaa, 0xa1, 0xe9, 0x5d, 0x6a, 0xa0, 0x63, 0x54, 0x52, 0x1b, 0xd8, 0xde,
-	0x56, 0xc1, 0x9a, 0xb5, 0xe4, 0x12, 0xe0, 0xe5, 0xf1, 0x7c, 0x02, 0xaf, 0x7c, 0xe2, 0x35, 0xdf,
-	0xe2, 0x1a, 0x9a, 0x10, 0x9a, 0x1f, 0xeb, 0x5c, 0x4c, 0x93, 0x9b, 0x1d, 0xcc, 0x5f, 0x46, 0xf2,
-	0x00, 0x8d, 0xf1, 0x8c, 0x86, 0xee, 0x25, 0x74, 0x1b, 0x61, 0x01, 0xfa, 0xc4, 0x4c, 0xcf, 0x34,
-	0xe8, 0x4b, 0x43, 0xb3, 0x9c, 0x91, 0x55, 0xe0, 0x59, 0xc4, 0x0b, 0x9a, 0x67, 0x60, 0xb1, 0xe0,
-	0x06, 0x9a, 0xd9, 0xa5, 0x26, 0x9b, 0x11, 0x99, 0xe1, 0xcb, 0x88, 0x5c, 0x01, 0xfc, 0x4b, 0x78,
-	0x39, 0x05, 0x5f, 0x06, 0x2a, 0x40, 0xf3, 0x89, 0x31, 0xed, 0x87, 0x11, 0x67, 0x06, 0xd5, 0x72,
-	0x0a, 0x15, 0x78, 0x92, 0x22, 0x30, 0x5d, 0xc1, 0x64, 0x18, 0x53, 0xb9, 0x03, 0xa8, 0xef, 0x32,
-	0x68, 0x76, 0x70, 0x54, 0x02, 0x05, 0xaf, 0x0c, 0xa1, 0xd8, 0x6b, 0x16, 0x96, 0x86, 0x98, 0xc9,
-	0x03, 0x10, 0x50, 0xc2, 0xb7, 0x4e, 0x17, 0x50, 0x3e, 0x11, 0x3f, 0x8e, 0x18, 0xfa, 0xdf, 0x32,
-	0x68, 0x61, 0x3b, 0x70, 0xeb, 0x3e, 0x1d, 0x59, 0x4d, 0xca, 0x9c, 0x93, 0xcf, 0x41, 0xc8, 0x43,
-	0x72, 0x7f, 0x14, 0x21, 0x65, 0x0a, 0x22, 0xf0, 0xdf, 0x33, 0x28, 0xbf, 0xe5, 0xb1, 0x0f, 0x2a,
-	0xe8, 0x97, 0x20, 0xe8, 0x33, 0xf2, 0x60, 0x24, 0x41, 0x4d, 0xa9, 0x02, 0x37, 0x2d, 0xc9, 0xb1,
-	0xe3, 0x87, 0xaf, 0xcd, 0xe4, 0xc0, 0xa5, 0xf8, 0x9b, 0x1d, 0xec, 0x67, 0x4c, 0x89, 0x43, 0xc0,
-	0xfa, 0x53, 0x06, 0x2d, 0x3f, 0xef, 0x34, 0x5d, 0x4e, 0x13, 0x44, 0xcf, 0x40, 0xc6, 0x72, 0x82,
-	0x00, 0xda, 0x65, 0x9f, 0xd4, 0xa1, 0xdf, 0x06, 0x09, 0xd7, 0xc9, 0x19, 0x24, 0x3c, 0xca, 0x14,
-	0xf1, 0x9f, 0x33, 0x68, 0xc5, 0xa2, 0xe2, 0x29, 0xe5, 0x34, 0x92, 0x32, 0x96, 0x0c, 0x19, 0x60,
-	0x78, 0x1a, 0x36, 0x4f, 0x51, 0x51, 0x02, 0x15, 0x1b, 0xe4, 0xf2, 0x50, 0x15, 0x6d, 0x01, 0x06,
-	0x32, 0x5a, 0x68, 0x21, 0x11, 0x72, 0xa0, 0x32, 0x63, 0x9e, 0x4b, 0x6a, 0x61, 0xe4, 0x26, 0x70,
-	0x5d, 0xc5, 0x67, 0xe1, 0xc2, 0x1c, 0x2d, 0x59, 0xe7, 0x76, 0x37, 0x0a, 0xbb, 0x1d, 0x93, 0x6c,
-	0x21, 0x11, 0x7f, 0xe9, 0x44, 0xee, 0x00, 0x61, 0x11, 0x6f, 0x9c, 0x1a, 0x62, 0xa7, 0x25, 0x61,
-	0x7f, 0xca, 0xa0, 0xf5, 0x94, 0xb9, 0x06, 0x4c, 0x19, 0xe9, 0x75, 0x3b, 0xe1, 0x59, 0x66, 0xfd,
-	0x3e, 0x48, 0xba, 0x4d, 0xce, 0x2c, 0x49, 0x04, 0xbd, 0x82, 0xc6, 0x45, 0x2c, 0x4e, 0xdb, 0xd1,
-	0xa7, 0xcd, 0x83, 0x04, 0x23, 0x0b, 0x40, 0x96, 0xc5, 0xd3, 0x9a, 0x4c, 0x6f, 0xdd, 0x15, 0x34,
-	0xd9, 0x07, 0xdc, 0x6b, 0xa6, 0x43, 0x8e, 0xf7, 0xc3, 0x6c, 0x79, 0x49, 0x4a, 0x38, 0xaf, 0xc9,
-	0xf0, 0x73, 0x34, 0x53, 0xa5, 0x8d, 0x30, 0x68, 0x78, 0x3e, 0xd5, 0x32, 0xe3, 0x7d, 0x53, 0xe3,
-	0xb1, 0x0c, 0x98, 0xf3, 0x24, 0x89, 0x29, 0x06, 0xbe, 0x0d, 0x07, 0x04, 0xcb, 0xbb, 0x65, 0xe0,
-	0x88, 0xa5, 0x61, 0xf0, 0xec, 0xc0, 0x48, 0xe5, 0x4b, 0xe4, 0x2b, 0x34, 0xb1, 0x19, 0x51, 0x97,
-	0x2b, 0x69, 0x78, 0xa0, 0x77, 0x02, 0xad, 0x00, 0x68, 0xb3, 0x64, 0x30, 0x6e, 0x42, 0xd2, 0x0b,
-	0x34, 0x21, 0x37, 0x65, 0x8b, 0xaa, 0xb4, 0x41, 0x5e, 0x06, 0xbc, 0x15, 0xb2, 0x64, 0x53, 0xa7,
-	0xb7, 0xd7, 0xdf, 0xa2, 0x49, 0xb5, 0xbb, 0x8e, 0x80, 0xac, 0x5e, 0xa2, 0x64, 0xd9, 0x8a, 0xac,
-	0xf7, 0xc9, 0x17, 0x68, 0xa2, 0x4a, 0xeb, 0x61, 0xc8, 0x3f, 0x98, 0xe6, 0x08, 0xe0, 0x04, 0xf0,
-	0x16, 0xf5, 0x29, 0x7f, 0x8f, 0x60, 0x14, 0xed, 0xc0, 0x4d, 0x80, 0xc3, 0x75, 0x94, 0xdd, 0x09,
-	0xa3, 0x06, 0x1d, 0x19, 0xfd, 0x06, 0xa0, 0x5f, 0x2e, 0xae, 0x5b, 0xd1, 0x0f, 0x05, 0xa6, 0xa3,
-	0x38, 0xde, 0xa0, 0xc9, 0xad, 0xf0, 0x75, 0xe0, 0x87, 0x6e, 0x73, 0xaf, 0xed, 0xb6, 0x28, 0x9e,
-	0xd3, 0x69, 0x00, 0x8f, 0xda, 0x56, 0x98, 0xd3, 0xb4, 0x95, 0x0e, 0x8d, 0xe0, 0xca, 0x5b, 0xa5,
-	0xac, 0x43, 0x7e, 0x01, 0x4c, 0x77, 0xc8, 0x4d, 0x2b, 0x93, 0x27, 0x20, 0x9c, 0xa6, 0xc2, 0x60,
-	0xe5, 0x93, 0xc0, 0x6d, 0xd3, 0xb7, 0x8f, 0x32, 0xc5, 0x77, 0x63, 0x19, 0xfc, 0x63, 0x06, 0xcd,
-	0xef, 0x52, 0x6e, 0xd0, 0xc8, 0xcb, 0x52, 0xba, 0x06, 0x5b, 0x33, 0xf9, 0x02, 0x34, 0x3c, 0xc0,
-	0xf7, 0x46, 0xd0, 0x50, 0x66, 0xc0, 0x24, 0x74, 0xbc, 0x81, 0x13, 0x9c, 0x01, 0x39, 0xa2, 0x80,
-	0xcf, 0xe4, 0x76, 0x86, 0x47, 0x09, 0x82, 0x60, 0xf6, 0xe4, 0x51, 0xd5, 0x00, 0x63, 0x03, 0x13,
-	0x6c, 0x23, 0x64, 0xa4, 0x0c, 0x8c, 0xd7, 0xf0, 0x95, 0xb3, 0x30, 0x0a, 0xaa, 0x13, 0x94, 0xdb,
-	0x14, 0x27, 0x6f, 0xff, 0x8c, 0xe3, 0xb4, 0x4e, 0xb6, 0x1a, 0x67, 0x71, 0xd4, 0x71, 0xfe, 0x35,
-	0x83, 0x72, 0x8f, 0x1b, 0xdc, 0x3b, 0x72, 0x39, 0x05, 0x22, 0xf9, 0x7a, 0x18, 0x91, 0x7d, 0x07,
-	0xd8, 0xbf, 0x20, 0x3f, 0x1f, 0x65, 0x9a, 0x65, 0x73, 0x17, 0xf8, 0x54, 0xde, 0xfd, 0x25, 0x83,
-	0xb2, 0x55, 0x7a, 0x44, 0x23, 0xfe, 0x7f, 0xd1, 0x12, 0x01, 0xb5, 0xd2, 0xf2, 0x2e, 0x83, 0xe6,
-	0x8c, 0xe5, 0xf7, 0x2c, 0x54, 0xcb, 0x9c, 0x98, 0xbb, 0xb1, 0xa1, 0xaa, 0x4a, 0x7f, 0xd7, 0xa5,
-	0x8c, 0x17, 0x96, 0x2c, 0x3e, 0x42, 0x5e, 0x18, 0x30, 0xaa, 0xcf, 0x34, 0xf8, 0xda, 0xa0, 0x44,
-	0x90, 0xc1, 0xca, 0x5a, 0x9e, 0x23, 0x9f, 0xf1, 0x6b, 0x34, 0xa5, 0x97, 0x81, 0x5a, 0x85, 0x05,
-	0x2b, 0xfc, 0x19, 0xa8, 0x6f, 0xa5, 0x65, 0xa7, 0xa2, 0x96, 0x3f, 0x8e, 0x5c, 0x82, 0x62, 0x3e,
-	0x16, 0x1f, 0xd7, 0xc3, 0xde, 0x74, 0xb4, 0x22, 0xb7, 0xd9, 0x8f, 0xc3, 0x7b, 0x8b, 0xb8, 0x9f,
-	0xb6, 0x28, 0x95, 0x08, 0x57, 0x50, 0x3a, 0x5d, 0x49, 0xa7, 0x83, 0x70, 0x80, 0x26, 0x76, 0x29,
-	0xaf, 0x04, 0xdd, 0x3d, 0xf9, 0x1c, 0x5f, 0x8b, 0x59, 0xcd, 0xd6, 0x33, 0x93, 0xeb, 0xc0, 0xb1,
-	0x8e, 0x57, 0xad, 0x69, 0x10, 0x06, 0x5d, 0x8d, 0x7b, 0x82, 0x26, 0x8d, 0x05, 0xf0, 0xfe, 0xc3,
-	0xba, 0x0b, 0x94, 0x37, 0x49, 0xda, 0xb4, 0xba, 0x8a, 0x46, 0x31, 0x8b, 0x97, 0xf5, 0x6b, 0x34,
-	0xbe, 0x19, 0xb6, 0xdb, 0x1e, 0xff, 0x1f, 0xa9, 0xe5, 0xa6, 0x73, 0x83, 0xa4, 0x4d, 0x6b, 0x03,
-	0x48, 0x62, 0xc4, 0xfb, 0x68, 0xba, 0x7f, 0xc0, 0x4a, 0xde, 0x57, 0x27, 0x35, 0x99, 0xbc, 0xa0,
-	0x12, 0x80, 0x5f, 0xc6, 0x05, 0x6b, 0x30, 0xe5, 0xc5, 0xf4, 0x25, 0xca, 0xc5, 0x10, 0xdb, 0x9b,
-	0x61, 0x70, 0xe8, 0xb5, 0x52, 0xa6, 0xa9, 0x67, 0x3e, 0x65, 0x9a, 0x3a, 0x6d, 0xa7, 0xa1, 0x70,
-	0x02, 0x34, 0x27, 0xb7, 0x83, 0x41, 0x82, 0x24, 0x68, 0xea, 0xbb, 0x57, 0x5d, 0xaa, 0xc8, 0x69,
-	0x64, 0x22, 0x40, 0xcf, 0xe3, 0x01, 0x3a, 0xdb, 0x9d, 0x6d, 0x78, 0x94, 0xe4, 0x5d, 0x8d, 0xa2,
-	0x59, 0x13, 0x76, 0x94, 0xeb, 0xc2, 0x06, 0x10, 0x10, 0xbc, 0x96, 0x4a, 0xa0, 0xaf, 0x09, 0xdf,
-	0xc5, 0xd5, 0xcb, 0x22, 0x5d, 0xda, 0x09, 0x3a, 0x97, 0xac, 0xee, 0xb1, 0xb4, 0xe3, 0xaa, 0x2c,
-	0x0b, 0xe2, 0x2a, 0x9a, 0xec, 0x9d, 0x7a, 0x85, 0xff, 0x40, 0x64, 0x12, 0x78, 0x64, 0x1d, 0xe0,
-	0x96, 0xf0, 0xa2, 0x0d, 0x4e, 0x1e, 0x81, 0x77, 0xd0, 0x4c, 0x8d, 0x47, 0xd4, 0x6d, 0xef, 0xbb,
-	0x8d, 0x1f, 0x28, 0x67, 0x95, 0x2e, 0xc7, 0xf3, 0x46, 0x20, 0xa4, 0xa1, 0xd2, 0xe5, 0xa9, 0xf3,
-	0xfb, 0xd1, 0x46, 0x06, 0x6f, 0xc3, 0x41, 0x9f, 0x7a, 0x47, 0x54, 0x01, 0xed, 0x05, 0x43, 0x6a,
-	0x6d, 0x49, 0xfc, 0xbd, 0x80, 0x7c, 0x74, 0x27, 0x83, 0xbf, 0x46, 0x39, 0x05, 0xb3, 0xf9, 0xca,
-	0x0d, 0x5a, 0x14, 0x6a, 0x98, 0xe9, 0x41, 0xcc, 0x1b, 0x48, 0xb1, 0x2e, 0x00, 0xf6, 0x12, 0x65,
-	0xe5, 0xf1, 0x3e, 0x56, 0x09, 0xc5, 0x96, 0xea, 0x68, 0xc1, 0xd2, 0x46, 0xd6, 0x20, 0x76, 0x05,
-	0x32, 0xa7, 0x63, 0x67, 0x94, 0x5a, 0x65, 0xaa, 0x8a, 0xd7, 0x43, 0x1c, 0xdb, 0xbc, 0xe9, 0x26,
-	0x30, 0x2d, 0xa9, 0x6a, 0x80, 0xca, 0x19, 0xa9, 0xa3, 0xac, 0x5c, 0x71, 0xef, 0xa3, 0xfa, 0x2a,
-	0x10, 0xac, 0x16, 0x86, 0x10, 0x08, 0xe9, 0x0d, 0x94, 0x95, 0x27, 0xe8, 0xd3, 0x38, 0xd2, 0xa6,
-	0x5c, 0x0d, 0xa4, 0x38, 0x6c, 0x20, 0xdf, 0xa3, 0x19, 0xb1, 0x18, 0xe2, 0x01, 0x18, 0xb2, 0x1a,
-	0x2c, 0xd1, 0x5a, 0x01, 0x92, 0x05, 0x6c, 0x9f, 0x02, 0xfc, 0x04, 0x2e, 0x81, 0x96, 0xd7, 0xd2,
-	0x94, 0x71, 0x70, 0x61, 0xfa, 0x66, 0x81, 0x97, 0xd2, 0x8f, 0x26, 0x0c, 0x7f, 0x83, 0x2e, 0xd4,
-	0xa8, 0x7f, 0xf8, 0x8c, 0x32, 0x6e, 0x80, 0xe5, 0x35, 0x98, 0xb6, 0xf6, 0x36, 0xff, 0x6b, 0x00,
-	0xbb, 0x46, 0x2e, 0x59, 0x61, 0x19, 0xf5, 0x0f, 0xe1, 0x23, 0x0a, 0x3e, 0x80, 0xd3, 0xb4, 0x51,
-	0x51, 0x1f, 0xac, 0x89, 0x24, 0x4a, 0xee, 0xc9, 0xa5, 0x2b, 0x12, 0x5d, 0xf8, 0xa9, 0x62, 0x88,
-	0x57, 0xc7, 0xdf, 0x21, 0xbc, 0x4b, 0xf9, 0x40, 0x99, 0xdd, 0x40, 0xb6, 0x57, 0xe2, 0x93, 0xf1,
-	0x30, 0xb1, 0xa1, 0xa8, 0x8f, 0x19, 0x9a, 0xac, 0x79, 0xed, 0xae, 0xef, 0x72, 0x0a, 0xfd, 0xf1,
-	0x72, 0x2f, 0x10, 0xf1, 0x66, 0xfd, 0x9a, 0x4c, 0x39, 0x15, 0x26, 0x8a, 0x59, 0x66, 0x8c, 0x14,
-	0x92, 0x23, 0x90, 0x44, 0x5e, 0x3e, 0x45, 0x48, 0x5e, 0xa2, 0xa1, 0x76, 0x38, 0x11, 0x7f, 0x1b,
-	0xa6, 0xa6, 0xa2, 0xaa, 0x3e, 0x90, 0x29, 0x01, 0xdf, 0xef, 0xad, 0xea, 0x23, 0xea, 0xea, 0x3c,
-	0x02, 0x5e, 0xff, 0x92, 0x7f, 0x74, 0xb7, 0x1c, 0xeb, 0x2e, 0x00, 0xbf, 0x47, 0xe3, 0x62, 0xc9,
-	0xbf, 0xe1, 0x07, 0xae, 0xdf, 0xa5, 0x78, 0xb1, 0xd4, 0xfb, 0xbc, 0x57, 0x82, 0x96, 0x5a, 0x87,
-	0x36, 0xbc, 0x43, 0x8f, 0x46, 0x85, 0x85, 0x98, 0xa9, 0x4a, 0x79, 0x37, 0x0a, 0xc0, 0x81, 0x91,
-	0x25, 0x80, 0x9f, 0xc3, 0x39, 0x1d, 0x91, 0x38, 0xe0, 0x0b, 0x34, 0x5e, 0x8b, 0x3d, 0xe6, 0x12,
-	0xf8, 0x34, 0x5d, 0x77, 0x02, 0x38, 0x8e, 0xd4, 0x44, 0xb9, 0x1a, 0x77, 0x23, 0x5e, 0x69, 0x37,
-	0x3c, 0x91, 0xc4, 0xe2, 0xe8, 0x15, 0x06, 0x58, 0x25, 0x88, 0x6e, 0xd5, 0x93, 0x89, 0x65, 0xb3,
-	0x91, 0xed, 0x6a, 0xc5, 0x93, 0x5e, 0xd9, 0x9f, 0x09, 0x3c, 0xa7, 0xf7, 0xad, 0x50, 0x84, 0xe7,
-	0xc7, 0x0c, 0x9a, 0xdd, 0xef, 0xf2, 0x83, 0xd0, 0xeb, 0xd4, 0xe0, 0x93, 0xe6, 0xbe, 0xfc, 0x54,
-	0x89, 0x6f, 0x97, 0x6c, 0xdf, 0x39, 0x13, 0x7e, 0x9a, 0x3f, 0x6d, 0x88, 0x7a, 0xc5, 0xf5, 0x12,
-	0xd7, 0x82, 0x2a, 0x74, 0x74, 0xd0, 0x82, 0xdc, 0xde, 0x92, 0x4a, 0x7a, 0xc5, 0xa7, 0xaf, 0xe9,
-	0x71, 0x2a, 0x8f, 0xaa, 0x0f, 0x16, 0x37, 0x86, 0xf0, 0x94, 0x4f, 0x7e, 0xa0, 0xc7, 0xbd, 0xba,
-	0xc4, 0x5b, 0x84, 0xd5, 0xc0, 0x9f, 0x33, 0x1a, 0x69, 0xb2, 0x1b, 0xa5, 0xe4, 0x57, 0xdb, 0x01,
-	0x9f, 0xd3, 0x86, 0xac, 0x0b, 0x39, 0x8b, 0x86, 0x94, 0x38, 0xa2, 0x18, 0xb0, 0x8f, 0xe6, 0xfa,
-	0x03, 0x8e, 0x2b, 0x38, 0xd3, 0x70, 0xd5, 0xbd, 0xa8, 0x78, 0x2d, 0x95, 0xc3, 0x1c, 0xec, 0xb7,
-	0x68, 0x46, 0xad, 0x8b, 0x4a, 0xd0, 0x1d, 0xa1, 0x06, 0xa3, 0x53, 0xa8, 0x7f, 0x50, 0x93, 0x28,
-	0x8e, 0xb8, 0x16, 0xc8, 0xa5, 0x89, 0xbf, 0x41, 0xd3, 0x72, 0x0d, 0x8f, 0x06, 0xad, 0xb6, 0xcb,
-	0x7e, 0x98, 0x64, 0xf1, 0x2c, 0x8e, 0xfc, 0x07, 0x34, 0xdf, 0x57, 0x5d, 0xa3, 0x91, 0xe7, 0xfa,
-	0xbf, 0xe9, 0xb6, 0xeb, 0x34, 0xc2, 0xab, 0xb1, 0x6b, 0x4c, 0xdc, 0x50, 0x09, 0x2a, 0x4f, 0x9e,
-	0xed, 0x87, 0xc1, 0x69, 0x45, 0x25, 0xb2, 0x6e, 0x1b, 0x10, 0x03, 0x24, 0x27, 0x90, 0x1c, 0xbf,
-	0x47, 0x73, 0xbd, 0x71, 0x7d, 0x18, 0x72, 0x75, 0x2a, 0x25, 0x6b, 0x96, 0x21, 0x1b, 0xdc, 0x5f,
-	0xfa, 0x28, 0x17, 0x46, 0x2d, 0x38, 0x2a, 0x35, 0xc2, 0xa8, 0xa9, 0x3e, 0x4c, 0x7e, 0x39, 0x21,
-	0x3f, 0x9c, 0xee, 0xc3, 0x47, 0xff, 0x6f, 0x4b, 0x2d, 0x8f, 0xbf, 0xea, 0xd6, 0x45, 0xac, 0xcb,
-	0xda, 0x53, 0xfd, 0x77, 0x8f, 0xdb, 0xfa, 0xbf, 0x20, 0x3c, 0x2c, 0xb7, 0x42, 0xd5, 0xf6, 0x8f,
-	0xb1, 0xf9, 0x8a, 0xc6, 0x3b, 0x88, 0x7f, 0x87, 0xdd, 0x1f, 0xab, 0x9f, 0x03, 0xff, 0xfb, 0xff,
-	0x0d, 0x00, 0x00, 0xff, 0xff, 0x90, 0x75, 0xab, 0x3a, 0x3c, 0x22, 0x00, 0x00,
-}
+var (
+	file_voltha_protos_voltha_proto_rawDescOnce sync.Once
+	file_voltha_protos_voltha_proto_rawDescData []byte
+)
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// VolthaServiceClient is the client API for VolthaService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type VolthaServiceClient interface {
-	// Get high level information on the Voltha cluster
-	GetVoltha(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Voltha, error)
-	// List all Voltha cluster core instances
-	ListCoreInstances(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*CoreInstances, error)
-	// Get details on a Voltha cluster instance
-	GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error)
-	// List all active adapters (plugins) in the Voltha cluster
-	ListAdapters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Adapters, error)
-	// List all logical devices managed by the Voltha cluster
-	ListLogicalDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*LogicalDevices, error)
-	// Get additional information on a given logical device
-	GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error)
-	// List ports of a logical device
-	ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error)
-	// Gets a logical device port
-	GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error)
-	// Enables a logical device port
-	EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables a logical device port
-	DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all flows of a logical device
-	ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
-	// Update flow table for logical device
-	UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Update meter table for logical device
-	UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all meters of a logical device
-	ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error)
-	// List all flow groups of a logical device
-	ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
-	// Update group table for device
-	UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all physical devices controlled by the Voltha cluster
-	ListDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Devices, error)
-	// List all physical devices IDs controlled by the Voltha cluster
-	ListDeviceIds(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*common.IDs, error)
-	// Request to a voltha Core to reconcile a set of devices based on their IDs
-	ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Get more information on a given physical device
-	GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error)
-	// Pre-provision a new physical device
-	CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error)
-	// Enable a device.  If the device was in pre-provisioned state then it
-	// will transition to ENABLED state.  If it was is DISABLED state then it
-	// will transition to ENABLED state as well.
-	EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disable a device
-	DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Reboot a device
-	RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Delete a device
-	DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Forcefully delete a device
-	ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Request an image download to the standby partition
-	// of a device.
-	// Note that the call is expected to be non-blocking.
-	DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Get image download status on a device
-	// The request retrieves progress on device and updates db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
-	// Get image download db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
-	// List image download db records for a given device
-	// Deprecated in voltha 2.8, will be removed
-	ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error)
-	// Cancel an existing image download process on a device
-	// Deprecated in voltha 2.8, will be removed
-	CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Activate the specified image at a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Revert the specified image at standby partition
-	// to active partition, and revert to previous image
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// previous image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Downloads a certain image to the standby partition of the devices
-	// Note that the call is expected to be non-blocking.
-	DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Get image status on a number of devices devices
-	// Polled from northbound systems to get state of download/activate/commit
-	GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Aborts the upgrade of an image on a device
-	// To be used carefully, stops any further operations for the Image on the given devices
-	// Might also stop if possible existing work, but no guarantees are given,
-	// depends on implementation and procedure status.
-	AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Get Both Active and Standby image for a given device
-	GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error)
-	// Activate the specified image from a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Commit the specified image to be default.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device upon next reboot
-	// Note that the call is expected to be non-blocking.
-	CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// List ports of a device
-	ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error)
-	// List pm config of a device
-	ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error)
-	// Update the pm config of a device
-	UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all flows of a device
-	ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
-	// List all flow groups of a device
-	ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
-	// List device types known to Voltha
-	ListDeviceTypes(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceTypes, error)
-	// Get additional information on a device type
-	GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error)
-	// Stream control packets to the dataplane
-	StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (VolthaService_StreamPacketsOutClient, error)
-	// Receive control packet stream
-	ReceivePacketsIn(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceivePacketsInClient, error)
-	ReceiveChangeEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceiveChangeEventsClient, error)
-	CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
-	// Get all filters present for a device
-	GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error)
-	UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
-	DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Get all the filters present
-	ListEventFilters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*EventFilters, error)
-	GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error)
-	SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error)
-	// OpenOMCI MIB information
-	GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error)
-	// OpenOMCI ALARM information
-	GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error)
-	// Simulate an Alarm
-	SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error)
-	EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
-	DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error)
-	SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*empty.Empty, error)
-	// omci start and stop cli implementation
-	StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error)
-	// Saves or updates system wide configuration into voltha KV
-	PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Saves or updates a profile (VOIP) into voltha KV
-	PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
-	DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
-	EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
-	DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
-	EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
+func file_voltha_protos_voltha_proto_rawDescGZIP() []byte {
+	file_voltha_protos_voltha_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_voltha_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_voltha_proto_rawDesc), len(file_voltha_protos_voltha_proto_rawDesc)))
+	})
+	return file_voltha_protos_voltha_proto_rawDescData
 }
 
-type volthaServiceClient struct {
-	cc *grpc.ClientConn
+var file_voltha_protos_voltha_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_voltha_protos_voltha_proto_goTypes = []any{
+	(*CoreInstance)(nil),                                 // 0: voltha.CoreInstance
+	(*CoreInstances)(nil),                                // 1: voltha.CoreInstances
+	(*Voltha)(nil),                                       // 2: voltha.Voltha
+	(*health.HealthStatus)(nil),                          // 3: health.HealthStatus
+	(*Adapter)(nil),                                      // 4: adapter.Adapter
+	(*LogicalDevice)(nil),                                // 5: logical_device.LogicalDevice
+	(*Device)(nil),                                       // 6: device.Device
+	(*DeviceType)(nil),                                   // 7: device.DeviceType
+	(*EventFilter)(nil),                                  // 8: event.EventFilter
+	(*omci.MibDeviceData)(nil),                           // 9: omci.MibDeviceData
+	(*omci.AlarmDeviceData)(nil),                         // 10: omci.AlarmDeviceData
+	(*emptypb.Empty)(nil),                                // 11: google.protobuf.Empty
+	(*common.ID)(nil),                                    // 12: common.ID
+	(*LogicalPortId)(nil),                                // 13: logical_device.LogicalPortId
+	(*openflow_13.FlowTableUpdate)(nil),                  // 14: openflow_13.FlowTableUpdate
+	(*openflow_13.MeterModUpdate)(nil),                   // 15: openflow_13.MeterModUpdate
+	(*openflow_13.FlowGroupTableUpdate)(nil),             // 16: openflow_13.FlowGroupTableUpdate
+	(*common.IDs)(nil),                                   // 17: common.IDs
+	(*ImageDownload)(nil),                                // 18: device.ImageDownload
+	(*DeviceImageDownloadRequest)(nil),                   // 19: device.DeviceImageDownloadRequest
+	(*DeviceImageRequest)(nil),                           // 20: device.DeviceImageRequest
+	(*PmConfigs)(nil),                                    // 21: device.PmConfigs
+	(*openflow_13.PacketOut)(nil),                        // 22: openflow_13.PacketOut
+	(*SimulateAlarmRequest)(nil),                         // 23: device.SimulateAlarmRequest
+	(*Port)(nil),                                         // 24: device.Port
+	(*extension.ValueSpecifier)(nil),                     // 25: extension.ValueSpecifier
+	(*extension.ValueSet)(nil),                           // 26: extension.ValueSet
+	(*omci.OmciTestRequest)(nil),                         // 27: omci.OmciTestRequest
+	(*voip_system_profile.VoipSystemProfileRequest)(nil), // 28: voip_system_profile.VoipSystemProfileRequest
+	(*common.Key)(nil),                                   // 29: common.Key
+	(*voip_user_profile.VoipUserProfileRequest)(nil),     // 30: voip_user_profile.VoipUserProfileRequest
+	(*OnuSerialNumberOnOLTPon)(nil),                      // 31: device.OnuSerialNumberOnOLTPon
+	(*UpdateDevice)(nil),                                 // 32: device.UpdateDevice
+	(*Adapters)(nil),                                     // 33: adapter.Adapters
+	(*LogicalDevices)(nil),                               // 34: logical_device.LogicalDevices
+	(*LogicalPorts)(nil),                                 // 35: logical_device.LogicalPorts
+	(*LogicalPort)(nil),                                  // 36: logical_device.LogicalPort
+	(*openflow_13.Flows)(nil),                            // 37: openflow_13.Flows
+	(*openflow_13.Meters)(nil),                           // 38: openflow_13.Meters
+	(*openflow_13.FlowGroups)(nil),                       // 39: openflow_13.FlowGroups
+	(*Devices)(nil),                                      // 40: device.Devices
+	(*common.OperationResp)(nil),                         // 41: common.OperationResp
+	(*ImageDownloads)(nil),                               // 42: device.ImageDownloads
+	(*DeviceImageResponse)(nil),                          // 43: device.DeviceImageResponse
+	(*OnuImages)(nil),                                    // 44: device.OnuImages
+	(*Ports)(nil),                                        // 45: device.Ports
+	(*DeviceTypes)(nil),                                  // 46: device.DeviceTypes
+	(*openflow_13.PacketIn)(nil),                         // 47: openflow_13.PacketIn
+	(*openflow_13.ChangeEvent)(nil),                      // 48: openflow_13.ChangeEvent
+	(*EventFilters)(nil),                                 // 49: event.EventFilters
+	(*Images)(nil),                                       // 50: device.Images
+	(*SelfTestResponse)(nil),                             // 51: device.SelfTestResponse
+	(*extension.ReturnValues)(nil),                       // 52: extension.ReturnValues
+	(*omci.TestResponse)(nil),                            // 53: omci.TestResponse
 }
-
-func NewVolthaServiceClient(cc *grpc.ClientConn) VolthaServiceClient {
-	return &volthaServiceClient{cc}
+var file_voltha_protos_voltha_proto_depIdxs = []int32{
+	3,  // 0: voltha.CoreInstance.health:type_name -> health.HealthStatus
+	0,  // 1: voltha.CoreInstances.items:type_name -> voltha.CoreInstance
+	4,  // 2: voltha.Voltha.adapters:type_name -> adapter.Adapter
+	5,  // 3: voltha.Voltha.logical_devices:type_name -> logical_device.LogicalDevice
+	6,  // 4: voltha.Voltha.devices:type_name -> device.Device
+	7,  // 5: voltha.Voltha.device_types:type_name -> device.DeviceType
+	8,  // 6: voltha.Voltha.event_filters:type_name -> event.EventFilter
+	9,  // 7: voltha.Voltha.omci_mib_database:type_name -> omci.MibDeviceData
+	10, // 8: voltha.Voltha.omci_alarm_database:type_name -> omci.AlarmDeviceData
+	11, // 9: voltha.VolthaService.GetVoltha:input_type -> google.protobuf.Empty
+	11, // 10: voltha.VolthaService.ListCoreInstances:input_type -> google.protobuf.Empty
+	12, // 11: voltha.VolthaService.GetCoreInstance:input_type -> common.ID
+	11, // 12: voltha.VolthaService.ListAdapters:input_type -> google.protobuf.Empty
+	11, // 13: voltha.VolthaService.ListLogicalDevices:input_type -> google.protobuf.Empty
+	12, // 14: voltha.VolthaService.GetLogicalDevice:input_type -> common.ID
+	12, // 15: voltha.VolthaService.ListLogicalDevicePorts:input_type -> common.ID
+	13, // 16: voltha.VolthaService.GetLogicalDevicePort:input_type -> logical_device.LogicalPortId
+	13, // 17: voltha.VolthaService.EnableLogicalDevicePort:input_type -> logical_device.LogicalPortId
+	13, // 18: voltha.VolthaService.DisableLogicalDevicePort:input_type -> logical_device.LogicalPortId
+	12, // 19: voltha.VolthaService.ListLogicalDeviceFlows:input_type -> common.ID
+	14, // 20: voltha.VolthaService.UpdateLogicalDeviceFlowTable:input_type -> openflow_13.FlowTableUpdate
+	15, // 21: voltha.VolthaService.UpdateLogicalDeviceMeterTable:input_type -> openflow_13.MeterModUpdate
+	12, // 22: voltha.VolthaService.ListLogicalDeviceMeters:input_type -> common.ID
+	12, // 23: voltha.VolthaService.ListLogicalDeviceFlowGroups:input_type -> common.ID
+	16, // 24: voltha.VolthaService.UpdateLogicalDeviceFlowGroupTable:input_type -> openflow_13.FlowGroupTableUpdate
+	11, // 25: voltha.VolthaService.ListDevices:input_type -> google.protobuf.Empty
+	11, // 26: voltha.VolthaService.ListDeviceIds:input_type -> google.protobuf.Empty
+	17, // 27: voltha.VolthaService.ReconcileDevices:input_type -> common.IDs
+	12, // 28: voltha.VolthaService.GetDevice:input_type -> common.ID
+	6,  // 29: voltha.VolthaService.CreateDevice:input_type -> device.Device
+	12, // 30: voltha.VolthaService.EnableDevice:input_type -> common.ID
+	12, // 31: voltha.VolthaService.DisableDevice:input_type -> common.ID
+	12, // 32: voltha.VolthaService.RebootDevice:input_type -> common.ID
+	12, // 33: voltha.VolthaService.DeleteDevice:input_type -> common.ID
+	12, // 34: voltha.VolthaService.ForceDeleteDevice:input_type -> common.ID
+	18, // 35: voltha.VolthaService.DownloadImage:input_type -> device.ImageDownload
+	18, // 36: voltha.VolthaService.GetImageDownloadStatus:input_type -> device.ImageDownload
+	18, // 37: voltha.VolthaService.GetImageDownload:input_type -> device.ImageDownload
+	12, // 38: voltha.VolthaService.ListImageDownloads:input_type -> common.ID
+	18, // 39: voltha.VolthaService.CancelImageDownload:input_type -> device.ImageDownload
+	18, // 40: voltha.VolthaService.ActivateImageUpdate:input_type -> device.ImageDownload
+	18, // 41: voltha.VolthaService.RevertImageUpdate:input_type -> device.ImageDownload
+	19, // 42: voltha.VolthaService.DownloadImageToDevice:input_type -> device.DeviceImageDownloadRequest
+	20, // 43: voltha.VolthaService.GetImageStatus:input_type -> device.DeviceImageRequest
+	20, // 44: voltha.VolthaService.AbortImageUpgradeToDevice:input_type -> device.DeviceImageRequest
+	12, // 45: voltha.VolthaService.GetOnuImages:input_type -> common.ID
+	20, // 46: voltha.VolthaService.ActivateImage:input_type -> device.DeviceImageRequest
+	20, // 47: voltha.VolthaService.CommitImage:input_type -> device.DeviceImageRequest
+	12, // 48: voltha.VolthaService.ListDevicePorts:input_type -> common.ID
+	12, // 49: voltha.VolthaService.ListDevicePmConfigs:input_type -> common.ID
+	21, // 50: voltha.VolthaService.UpdateDevicePmConfigs:input_type -> device.PmConfigs
+	12, // 51: voltha.VolthaService.ListDeviceFlows:input_type -> common.ID
+	12, // 52: voltha.VolthaService.ListDeviceFlowGroups:input_type -> common.ID
+	11, // 53: voltha.VolthaService.ListDeviceTypes:input_type -> google.protobuf.Empty
+	12, // 54: voltha.VolthaService.GetDeviceType:input_type -> common.ID
+	22, // 55: voltha.VolthaService.StreamPacketsOut:input_type -> openflow_13.PacketOut
+	11, // 56: voltha.VolthaService.ReceivePacketsIn:input_type -> google.protobuf.Empty
+	11, // 57: voltha.VolthaService.ReceiveChangeEvents:input_type -> google.protobuf.Empty
+	8,  // 58: voltha.VolthaService.CreateEventFilter:input_type -> event.EventFilter
+	12, // 59: voltha.VolthaService.GetEventFilter:input_type -> common.ID
+	8,  // 60: voltha.VolthaService.UpdateEventFilter:input_type -> event.EventFilter
+	8,  // 61: voltha.VolthaService.DeleteEventFilter:input_type -> event.EventFilter
+	11, // 62: voltha.VolthaService.ListEventFilters:input_type -> google.protobuf.Empty
+	12, // 63: voltha.VolthaService.GetImages:input_type -> common.ID
+	12, // 64: voltha.VolthaService.SelfTest:input_type -> common.ID
+	12, // 65: voltha.VolthaService.GetMibDeviceData:input_type -> common.ID
+	12, // 66: voltha.VolthaService.GetAlarmDeviceData:input_type -> common.ID
+	23, // 67: voltha.VolthaService.SimulateAlarm:input_type -> device.SimulateAlarmRequest
+	24, // 68: voltha.VolthaService.EnablePort:input_type -> device.Port
+	24, // 69: voltha.VolthaService.DisablePort:input_type -> device.Port
+	25, // 70: voltha.VolthaService.GetExtValue:input_type -> extension.ValueSpecifier
+	26, // 71: voltha.VolthaService.SetExtValue:input_type -> extension.ValueSet
+	27, // 72: voltha.VolthaService.StartOmciTestAction:input_type -> omci.OmciTestRequest
+	28, // 73: voltha.VolthaService.PutVoipSystemProfile:input_type -> voip_system_profile.VoipSystemProfileRequest
+	29, // 74: voltha.VolthaService.DeleteVoipSystemProfile:input_type -> common.Key
+	30, // 75: voltha.VolthaService.PutVoipUserProfile:input_type -> voip_user_profile.VoipUserProfileRequest
+	29, // 76: voltha.VolthaService.DeleteVoipUserProfile:input_type -> common.Key
+	12, // 77: voltha.VolthaService.DisableOnuDevice:input_type -> common.ID
+	12, // 78: voltha.VolthaService.EnableOnuDevice:input_type -> common.ID
+	31, // 79: voltha.VolthaService.DisableOnuSerialNumber:input_type -> device.OnuSerialNumberOnOLTPon
+	31, // 80: voltha.VolthaService.EnableOnuSerialNumber:input_type -> device.OnuSerialNumberOnOLTPon
+	32, // 81: voltha.VolthaService.UpdateDevice:input_type -> device.UpdateDevice
+	2,  // 82: voltha.VolthaService.GetVoltha:output_type -> voltha.Voltha
+	1,  // 83: voltha.VolthaService.ListCoreInstances:output_type -> voltha.CoreInstances
+	0,  // 84: voltha.VolthaService.GetCoreInstance:output_type -> voltha.CoreInstance
+	33, // 85: voltha.VolthaService.ListAdapters:output_type -> adapter.Adapters
+	34, // 86: voltha.VolthaService.ListLogicalDevices:output_type -> logical_device.LogicalDevices
+	5,  // 87: voltha.VolthaService.GetLogicalDevice:output_type -> logical_device.LogicalDevice
+	35, // 88: voltha.VolthaService.ListLogicalDevicePorts:output_type -> logical_device.LogicalPorts
+	36, // 89: voltha.VolthaService.GetLogicalDevicePort:output_type -> logical_device.LogicalPort
+	11, // 90: voltha.VolthaService.EnableLogicalDevicePort:output_type -> google.protobuf.Empty
+	11, // 91: voltha.VolthaService.DisableLogicalDevicePort:output_type -> google.protobuf.Empty
+	37, // 92: voltha.VolthaService.ListLogicalDeviceFlows:output_type -> openflow_13.Flows
+	11, // 93: voltha.VolthaService.UpdateLogicalDeviceFlowTable:output_type -> google.protobuf.Empty
+	11, // 94: voltha.VolthaService.UpdateLogicalDeviceMeterTable:output_type -> google.protobuf.Empty
+	38, // 95: voltha.VolthaService.ListLogicalDeviceMeters:output_type -> openflow_13.Meters
+	39, // 96: voltha.VolthaService.ListLogicalDeviceFlowGroups:output_type -> openflow_13.FlowGroups
+	11, // 97: voltha.VolthaService.UpdateLogicalDeviceFlowGroupTable:output_type -> google.protobuf.Empty
+	40, // 98: voltha.VolthaService.ListDevices:output_type -> device.Devices
+	17, // 99: voltha.VolthaService.ListDeviceIds:output_type -> common.IDs
+	11, // 100: voltha.VolthaService.ReconcileDevices:output_type -> google.protobuf.Empty
+	6,  // 101: voltha.VolthaService.GetDevice:output_type -> device.Device
+	6,  // 102: voltha.VolthaService.CreateDevice:output_type -> device.Device
+	11, // 103: voltha.VolthaService.EnableDevice:output_type -> google.protobuf.Empty
+	11, // 104: voltha.VolthaService.DisableDevice:output_type -> google.protobuf.Empty
+	11, // 105: voltha.VolthaService.RebootDevice:output_type -> google.protobuf.Empty
+	11, // 106: voltha.VolthaService.DeleteDevice:output_type -> google.protobuf.Empty
+	11, // 107: voltha.VolthaService.ForceDeleteDevice:output_type -> google.protobuf.Empty
+	41, // 108: voltha.VolthaService.DownloadImage:output_type -> common.OperationResp
+	18, // 109: voltha.VolthaService.GetImageDownloadStatus:output_type -> device.ImageDownload
+	18, // 110: voltha.VolthaService.GetImageDownload:output_type -> device.ImageDownload
+	42, // 111: voltha.VolthaService.ListImageDownloads:output_type -> device.ImageDownloads
+	41, // 112: voltha.VolthaService.CancelImageDownload:output_type -> common.OperationResp
+	41, // 113: voltha.VolthaService.ActivateImageUpdate:output_type -> common.OperationResp
+	41, // 114: voltha.VolthaService.RevertImageUpdate:output_type -> common.OperationResp
+	43, // 115: voltha.VolthaService.DownloadImageToDevice:output_type -> device.DeviceImageResponse
+	43, // 116: voltha.VolthaService.GetImageStatus:output_type -> device.DeviceImageResponse
+	43, // 117: voltha.VolthaService.AbortImageUpgradeToDevice:output_type -> device.DeviceImageResponse
+	44, // 118: voltha.VolthaService.GetOnuImages:output_type -> device.OnuImages
+	43, // 119: voltha.VolthaService.ActivateImage:output_type -> device.DeviceImageResponse
+	43, // 120: voltha.VolthaService.CommitImage:output_type -> device.DeviceImageResponse
+	45, // 121: voltha.VolthaService.ListDevicePorts:output_type -> device.Ports
+	21, // 122: voltha.VolthaService.ListDevicePmConfigs:output_type -> device.PmConfigs
+	11, // 123: voltha.VolthaService.UpdateDevicePmConfigs:output_type -> google.protobuf.Empty
+	37, // 124: voltha.VolthaService.ListDeviceFlows:output_type -> openflow_13.Flows
+	39, // 125: voltha.VolthaService.ListDeviceFlowGroups:output_type -> openflow_13.FlowGroups
+	46, // 126: voltha.VolthaService.ListDeviceTypes:output_type -> device.DeviceTypes
+	7,  // 127: voltha.VolthaService.GetDeviceType:output_type -> device.DeviceType
+	11, // 128: voltha.VolthaService.StreamPacketsOut:output_type -> google.protobuf.Empty
+	47, // 129: voltha.VolthaService.ReceivePacketsIn:output_type -> openflow_13.PacketIn
+	48, // 130: voltha.VolthaService.ReceiveChangeEvents:output_type -> openflow_13.ChangeEvent
+	8,  // 131: voltha.VolthaService.CreateEventFilter:output_type -> event.EventFilter
+	49, // 132: voltha.VolthaService.GetEventFilter:output_type -> event.EventFilters
+	8,  // 133: voltha.VolthaService.UpdateEventFilter:output_type -> event.EventFilter
+	11, // 134: voltha.VolthaService.DeleteEventFilter:output_type -> google.protobuf.Empty
+	49, // 135: voltha.VolthaService.ListEventFilters:output_type -> event.EventFilters
+	50, // 136: voltha.VolthaService.GetImages:output_type -> device.Images
+	51, // 137: voltha.VolthaService.SelfTest:output_type -> device.SelfTestResponse
+	9,  // 138: voltha.VolthaService.GetMibDeviceData:output_type -> omci.MibDeviceData
+	10, // 139: voltha.VolthaService.GetAlarmDeviceData:output_type -> omci.AlarmDeviceData
+	41, // 140: voltha.VolthaService.SimulateAlarm:output_type -> common.OperationResp
+	11, // 141: voltha.VolthaService.EnablePort:output_type -> google.protobuf.Empty
+	11, // 142: voltha.VolthaService.DisablePort:output_type -> google.protobuf.Empty
+	52, // 143: voltha.VolthaService.GetExtValue:output_type -> extension.ReturnValues
+	11, // 144: voltha.VolthaService.SetExtValue:output_type -> google.protobuf.Empty
+	53, // 145: voltha.VolthaService.StartOmciTestAction:output_type -> omci.TestResponse
+	11, // 146: voltha.VolthaService.PutVoipSystemProfile:output_type -> google.protobuf.Empty
+	11, // 147: voltha.VolthaService.DeleteVoipSystemProfile:output_type -> google.protobuf.Empty
+	11, // 148: voltha.VolthaService.PutVoipUserProfile:output_type -> google.protobuf.Empty
+	11, // 149: voltha.VolthaService.DeleteVoipUserProfile:output_type -> google.protobuf.Empty
+	11, // 150: voltha.VolthaService.DisableOnuDevice:output_type -> google.protobuf.Empty
+	11, // 151: voltha.VolthaService.EnableOnuDevice:output_type -> google.protobuf.Empty
+	11, // 152: voltha.VolthaService.DisableOnuSerialNumber:output_type -> google.protobuf.Empty
+	11, // 153: voltha.VolthaService.EnableOnuSerialNumber:output_type -> google.protobuf.Empty
+	11, // 154: voltha.VolthaService.UpdateDevice:output_type -> google.protobuf.Empty
+	82, // [82:155] is the sub-list for method output_type
+	9,  // [9:82] is the sub-list for method input_type
+	9,  // [9:9] is the sub-list for extension type_name
+	9,  // [9:9] is the sub-list for extension extendee
+	0,  // [0:9] is the sub-list for field type_name
 }
 
-func (c *volthaServiceClient) GetVoltha(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Voltha, error) {
-	out := new(Voltha)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetVoltha", in, out, opts...)
-	if err != nil {
-		return nil, err
+func init() { file_voltha_protos_voltha_proto_init() }
+func file_voltha_protos_voltha_proto_init() {
+	if File_voltha_protos_voltha_proto != nil {
+		return
 	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListCoreInstances(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*CoreInstances, error) {
-	out := new(CoreInstances)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListCoreInstances", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error) {
-	out := new(CoreInstance)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetCoreInstance", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListAdapters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Adapters, error) {
-	out := new(Adapters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListAdapters", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*LogicalDevices, error) {
-	out := new(LogicalDevices)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error) {
-	out := new(LogicalDevice)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogicalDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error) {
-	out := new(LogicalPorts)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDevicePorts", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error) {
-	out := new(LogicalPort)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogicalDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableLogicalDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableLogicalDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
-	out := new(openflow_13.Flows)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceFlows", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceFlowTable", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceMeterTable", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error) {
-	out := new(openflow_13.Meters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceMeters", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
-	out := new(openflow_13.FlowGroups)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceFlowGroups", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Devices, error) {
-	out := new(Devices)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceIds(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*common.IDs, error) {
-	out := new(common.IDs)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceIds", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ReconcileDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error) {
-	out := new(Device)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error) {
-	out := new(Device)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CreateDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/RebootDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ForceDeleteDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DownloadImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
-	out := new(ImageDownload)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageDownloadStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
-	out := new(ImageDownload)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageDownload", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error) {
-	out := new(ImageDownloads)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListImageDownloads", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CancelImageDownload", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ActivateImageUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/RevertImageUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DownloadImageToDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/AbortImageUpgradeToDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error) {
-	out := new(OnuImages)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetOnuImages", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ActivateImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CommitImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error) {
-	out := new(Ports)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevicePorts", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error) {
-	out := new(PmConfigs)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevicePmConfigs", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateDevicePmConfigs", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
-	out := new(openflow_13.Flows)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceFlows", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
-	out := new(openflow_13.FlowGroups)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceFlowGroups", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceTypes(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceTypes, error) {
-	out := new(DeviceTypes)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceTypes", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error) {
-	out := new(DeviceType)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetDeviceType", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (VolthaService_StreamPacketsOutClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[0], "/voltha.VolthaService/StreamPacketsOut", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &volthaServiceStreamPacketsOutClient{stream}
-	return x, nil
-}
-
-type VolthaService_StreamPacketsOutClient interface {
-	Send(*openflow_13.PacketOut) error
-	CloseAndRecv() (*empty.Empty, error)
-	grpc.ClientStream
-}
-
-type volthaServiceStreamPacketsOutClient struct {
-	grpc.ClientStream
-}
-
-func (x *volthaServiceStreamPacketsOutClient) Send(m *openflow_13.PacketOut) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *volthaServiceStreamPacketsOutClient) CloseAndRecv() (*empty.Empty, error) {
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	m := new(empty.Empty)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *volthaServiceClient) ReceivePacketsIn(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceivePacketsInClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[1], "/voltha.VolthaService/ReceivePacketsIn", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &volthaServiceReceivePacketsInClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type VolthaService_ReceivePacketsInClient interface {
-	Recv() (*openflow_13.PacketIn, error)
-	grpc.ClientStream
-}
-
-type volthaServiceReceivePacketsInClient struct {
-	grpc.ClientStream
-}
-
-func (x *volthaServiceReceivePacketsInClient) Recv() (*openflow_13.PacketIn, error) {
-	m := new(openflow_13.PacketIn)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *volthaServiceClient) ReceiveChangeEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceiveChangeEventsClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[2], "/voltha.VolthaService/ReceiveChangeEvents", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &volthaServiceReceiveChangeEventsClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type VolthaService_ReceiveChangeEventsClient interface {
-	Recv() (*openflow_13.ChangeEvent, error)
-	grpc.ClientStream
-}
-
-type volthaServiceReceiveChangeEventsClient struct {
-	grpc.ClientStream
-}
-
-func (x *volthaServiceReceiveChangeEventsClient) Recv() (*openflow_13.ChangeEvent, error) {
-	m := new(openflow_13.ChangeEvent)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *volthaServiceClient) CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
-	out := new(EventFilter)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CreateEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error) {
-	out := new(EventFilters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
-	out := new(EventFilter)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListEventFilters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*EventFilters, error) {
-	out := new(EventFilters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListEventFilters", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error) {
-	out := new(Images)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImages", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error) {
-	out := new(SelfTestResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/SelfTest", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error) {
-	out := new(omci.MibDeviceData)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetMibDeviceData", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error) {
-	out := new(omci.AlarmDeviceData)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetAlarmDeviceData", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/SimulateAlarm", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnablePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisablePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error) {
-	out := new(extension.ReturnValues)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/SetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error) {
-	out := new(omci.TestResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/StartOmciTestAction", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipSystemProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipSystemProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipUserProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipUserProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableOnuDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableOnuDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableOnuSerialNumber", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableOnuSerialNumber", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// VolthaServiceServer is the server API for VolthaService service.
-type VolthaServiceServer interface {
-	// Get high level information on the Voltha cluster
-	GetVoltha(context.Context, *empty.Empty) (*Voltha, error)
-	// List all Voltha cluster core instances
-	ListCoreInstances(context.Context, *empty.Empty) (*CoreInstances, error)
-	// Get details on a Voltha cluster instance
-	GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error)
-	// List all active adapters (plugins) in the Voltha cluster
-	ListAdapters(context.Context, *empty.Empty) (*Adapters, error)
-	// List all logical devices managed by the Voltha cluster
-	ListLogicalDevices(context.Context, *empty.Empty) (*LogicalDevices, error)
-	// Get additional information on a given logical device
-	GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error)
-	// List ports of a logical device
-	ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error)
-	// Gets a logical device port
-	GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error)
-	// Enables a logical device port
-	EnableLogicalDevicePort(context.Context, *LogicalPortId) (*empty.Empty, error)
-	// Disables a logical device port
-	DisableLogicalDevicePort(context.Context, *LogicalPortId) (*empty.Empty, error)
-	// List all flows of a logical device
-	ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
-	// Update flow table for logical device
-	UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*empty.Empty, error)
-	// Update meter table for logical device
-	UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*empty.Empty, error)
-	// List all meters of a logical device
-	ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error)
-	// List all flow groups of a logical device
-	ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
-	// Update group table for device
-	UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*empty.Empty, error)
-	// List all physical devices controlled by the Voltha cluster
-	ListDevices(context.Context, *empty.Empty) (*Devices, error)
-	// List all physical devices IDs controlled by the Voltha cluster
-	ListDeviceIds(context.Context, *empty.Empty) (*common.IDs, error)
-	// Request to a voltha Core to reconcile a set of devices based on their IDs
-	ReconcileDevices(context.Context, *common.IDs) (*empty.Empty, error)
-	// Get more information on a given physical device
-	GetDevice(context.Context, *common.ID) (*Device, error)
-	// Pre-provision a new physical device
-	CreateDevice(context.Context, *Device) (*Device, error)
-	// Enable a device.  If the device was in pre-provisioned state then it
-	// will transition to ENABLED state.  If it was is DISABLED state then it
-	// will transition to ENABLED state as well.
-	EnableDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Disable a device
-	DisableDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Reboot a device
-	RebootDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Delete a device
-	DeleteDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Forcefully delete a device
-	ForceDeleteDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Request an image download to the standby partition
-	// of a device.
-	// Note that the call is expected to be non-blocking.
-	DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Get image download status on a device
-	// The request retrieves progress on device and updates db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error)
-	// Get image download db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error)
-	// List image download db records for a given device
-	// Deprecated in voltha 2.8, will be removed
-	ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error)
-	// Cancel an existing image download process on a device
-	// Deprecated in voltha 2.8, will be removed
-	CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Activate the specified image at a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Revert the specified image at standby partition
-	// to active partition, and revert to previous image
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// previous image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Downloads a certain image to the standby partition of the devices
-	// Note that the call is expected to be non-blocking.
-	DownloadImageToDevice(context.Context, *DeviceImageDownloadRequest) (*DeviceImageResponse, error)
-	// Get image status on a number of devices devices
-	// Polled from northbound systems to get state of download/activate/commit
-	GetImageStatus(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// Aborts the upgrade of an image on a device
-	// To be used carefully, stops any further operations for the Image on the given devices
-	// Might also stop if possible existing work, but no guarantees are given,
-	// depends on implementation and procedure status.
-	AbortImageUpgradeToDevice(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// Get Both Active and Standby image for a given device
-	GetOnuImages(context.Context, *common.ID) (*OnuImages, error)
-	// Activate the specified image from a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	ActivateImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// Commit the specified image to be default.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device upon next reboot
-	// Note that the call is expected to be non-blocking.
-	CommitImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// List ports of a device
-	ListDevicePorts(context.Context, *common.ID) (*Ports, error)
-	// List pm config of a device
-	ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error)
-	// Update the pm config of a device
-	UpdateDevicePmConfigs(context.Context, *PmConfigs) (*empty.Empty, error)
-	// List all flows of a device
-	ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
-	// List all flow groups of a device
-	ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
-	// List device types known to Voltha
-	ListDeviceTypes(context.Context, *empty.Empty) (*DeviceTypes, error)
-	// Get additional information on a device type
-	GetDeviceType(context.Context, *common.ID) (*DeviceType, error)
-	// Stream control packets to the dataplane
-	StreamPacketsOut(VolthaService_StreamPacketsOutServer) error
-	// Receive control packet stream
-	ReceivePacketsIn(*empty.Empty, VolthaService_ReceivePacketsInServer) error
-	ReceiveChangeEvents(*empty.Empty, VolthaService_ReceiveChangeEventsServer) error
-	CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
-	// Get all filters present for a device
-	GetEventFilter(context.Context, *common.ID) (*EventFilters, error)
-	UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
-	DeleteEventFilter(context.Context, *EventFilter) (*empty.Empty, error)
-	// Get all the filters present
-	ListEventFilters(context.Context, *empty.Empty) (*EventFilters, error)
-	GetImages(context.Context, *common.ID) (*Images, error)
-	SelfTest(context.Context, *common.ID) (*SelfTestResponse, error)
-	// OpenOMCI MIB information
-	GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error)
-	// OpenOMCI ALARM information
-	GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error)
-	// Simulate an Alarm
-	SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error)
-	EnablePort(context.Context, *Port) (*empty.Empty, error)
-	DisablePort(context.Context, *Port) (*empty.Empty, error)
-	GetExtValue(context.Context, *extension.ValueSpecifier) (*extension.ReturnValues, error)
-	SetExtValue(context.Context, *extension.ValueSet) (*empty.Empty, error)
-	// omci start and stop cli implementation
-	StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error)
-	// Saves or updates system wide configuration into voltha KV
-	PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipSystemProfile(context.Context, *common.Key) (*empty.Empty, error)
-	// Saves or updates a profile (VOIP) into voltha KV
-	PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipUserProfile(context.Context, *common.Key) (*empty.Empty, error)
-	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
-	DisableOnuDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
-	EnableOnuDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
-	DisableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
-	EnableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*empty.Empty, error)
-}
-
-// UnimplementedVolthaServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedVolthaServiceServer struct {
-}
-
-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) ListLogicalDeviceMeters(ctx context.Context, req *common.ID) (*openflow_13.Meters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDeviceMeters 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) ForceDeleteDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ForceDeleteDevice 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) DownloadImageToDevice(ctx context.Context, req *DeviceImageDownloadRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DownloadImageToDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetImageStatus(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImageStatus not implemented")
-}
-func (*UnimplementedVolthaServiceServer) AbortImageUpgradeToDevice(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method AbortImageUpgradeToDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetOnuImages(ctx context.Context, req *common.ID) (*OnuImages, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetOnuImages not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ActivateImage(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ActivateImage not implemented")
-}
-func (*UnimplementedVolthaServiceServer) CommitImage(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CommitImage 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) 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) CreateEventFilter(ctx context.Context, req *EventFilter) (*EventFilter, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CreateEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetEventFilter(ctx context.Context, req *common.ID) (*EventFilters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateEventFilter(ctx context.Context, req *EventFilter) (*EventFilter, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteEventFilter(ctx context.Context, req *EventFilter) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListEventFilters(ctx context.Context, req *empty.Empty) (*EventFilters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListEventFilters 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) EnablePort(ctx context.Context, req *Port) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnablePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisablePort(ctx context.Context, req *Port) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisablePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetExtValue(ctx context.Context, req *extension.ValueSpecifier) (*extension.ReturnValues, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetExtValue not implemented")
-}
-func (*UnimplementedVolthaServiceServer) SetExtValue(ctx context.Context, req *extension.ValueSet) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetExtValue not implemented")
-}
-func (*UnimplementedVolthaServiceServer) StartOmciTestAction(ctx context.Context, req *omci.OmciTestRequest) (*omci.TestResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method StartOmciTestAction not implemented")
-}
-func (*UnimplementedVolthaServiceServer) PutVoipSystemProfile(ctx context.Context, req *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PutVoipSystemProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteVoipSystemProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipSystemProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) PutVoipUserProfile(ctx context.Context, req *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PutVoipUserProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteVoipUserProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipUserProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableOnuDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableOnuDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableOnuSerialNumber(ctx context.Context, req *OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableOnuSerialNumber(ctx context.Context, req *OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
-}
-
-func RegisterVolthaServiceServer(s *grpc.Server, srv VolthaServiceServer) {
-	s.RegisterService(&_VolthaService_serviceDesc, srv)
-}
-
-func _VolthaService_GetVoltha_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetVoltha(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetVoltha",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetVoltha(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListCoreInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListCoreInstances(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListCoreInstances",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListCoreInstances(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetCoreInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetCoreInstance(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetCoreInstance",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetCoreInstance(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListAdapters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListAdapters(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListAdapters",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListAdapters(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetLogicalDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetLogicalDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDevicePorts",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(LogicalPortId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetLogicalDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, req.(*LogicalPortId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(LogicalPortId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableLogicalDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, req.(*LogicalPortId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(LogicalPortId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableLogicalDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, req.(*LogicalPortId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDeviceFlows",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateLogicalDeviceFlowTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(openflow_13.FlowTableUpdate)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceFlowTable",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, req.(*openflow_13.FlowTableUpdate))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateLogicalDeviceMeterTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(openflow_13.MeterModUpdate)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceMeterTable",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, req.(*openflow_13.MeterModUpdate))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDeviceMeters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDeviceMeters",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDeviceFlowGroups",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(openflow_13.FlowGroupTableUpdate)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, req.(*openflow_13.FlowGroupTableUpdate))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDevices(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceIds(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceIds",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceIds(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ReconcileDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.IDs)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ReconcileDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ReconcileDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ReconcileDevices(ctx, req.(*common.IDs))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_CreateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CreateDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CreateDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CreateDevice(ctx, req.(*Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_RebootDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).RebootDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/RebootDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).RebootDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ForceDeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ForceDeleteDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DownloadImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DownloadImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DownloadImage(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImageDownloadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImageDownloadStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImageDownload(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImageDownload",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImageDownload(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListImageDownloads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListImageDownloads(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListImageDownloads",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListImageDownloads(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_CancelImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CancelImageDownload(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CancelImageDownload",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CancelImageDownload(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ActivateImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ActivateImageUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_RevertImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/RevertImageUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DownloadImageToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageDownloadRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DownloadImageToDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, req.(*DeviceImageDownloadRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImageStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImageStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImageStatus(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_AbortImageUpgradeToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/AbortImageUpgradeToDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetOnuImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetOnuImages(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetOnuImages",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetOnuImages(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ActivateImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ActivateImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ActivateImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ActivateImage(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_CommitImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CommitImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CommitImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CommitImage(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDevicePorts(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDevicePorts",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDevicePorts(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDevicePmConfigs",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(PmConfigs)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateDevicePmConfigs",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, req.(*PmConfigs))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceFlows",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceFlowGroups",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceTypes",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetDeviceType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetDeviceType(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetDeviceType",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetDeviceType(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_StreamPacketsOut_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(VolthaServiceServer).StreamPacketsOut(&volthaServiceStreamPacketsOutServer{stream})
-}
-
-type VolthaService_StreamPacketsOutServer interface {
-	SendAndClose(*empty.Empty) error
-	Recv() (*openflow_13.PacketOut, error)
-	grpc.ServerStream
-}
-
-type volthaServiceStreamPacketsOutServer struct {
-	grpc.ServerStream
-}
-
-func (x *volthaServiceStreamPacketsOutServer) SendAndClose(m *empty.Empty) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *volthaServiceStreamPacketsOutServer) Recv() (*openflow_13.PacketOut, error) {
-	m := new(openflow_13.PacketOut)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func _VolthaService_ReceivePacketsIn_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(empty.Empty)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(VolthaServiceServer).ReceivePacketsIn(m, &volthaServiceReceivePacketsInServer{stream})
-}
-
-type VolthaService_ReceivePacketsInServer interface {
-	Send(*openflow_13.PacketIn) error
-	grpc.ServerStream
-}
-
-type volthaServiceReceivePacketsInServer struct {
-	grpc.ServerStream
-}
-
-func (x *volthaServiceReceivePacketsInServer) Send(m *openflow_13.PacketIn) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func _VolthaService_ReceiveChangeEvents_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(empty.Empty)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(VolthaServiceServer).ReceiveChangeEvents(m, &volthaServiceReceiveChangeEventsServer{stream})
-}
-
-type VolthaService_ReceiveChangeEventsServer interface {
-	Send(*openflow_13.ChangeEvent) error
-	grpc.ServerStream
-}
-
-type volthaServiceReceiveChangeEventsServer struct {
-	grpc.ServerStream
-}
-
-func (x *volthaServiceReceiveChangeEventsServer) Send(m *openflow_13.ChangeEvent) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func _VolthaService_CreateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CreateEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CreateEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CreateEventFilter(ctx, req.(*EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetEventFilter(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, req.(*EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, req.(*EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListEventFilters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListEventFilters(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListEventFilters",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListEventFilters(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImages(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImages",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImages(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_SelfTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).SelfTest(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/SelfTest",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).SelfTest(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetMibDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetMibDeviceData",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetAlarmDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetAlarmDeviceData",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_SimulateAlarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SimulateAlarmRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).SimulateAlarm(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/SimulateAlarm",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).SimulateAlarm(ctx, req.(*SimulateAlarmRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Port)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnablePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnablePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnablePort(ctx, req.(*Port))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Port)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisablePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisablePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisablePort(ctx, req.(*Port))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(extension.ValueSpecifier)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetExtValue(ctx, req.(*extension.ValueSpecifier))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(extension.ValueSet)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).SetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/SetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).SetExtValue(ctx, req.(*extension.ValueSet))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_StartOmciTestAction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(omci.OmciTestRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/StartOmciTestAction",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, req.(*omci.OmciTestRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_PutVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voip_system_profile.VoipSystemProfileRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/PutVoipSystemProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, req.(*voip_system_profile.VoipSystemProfileRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.Key)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteVoipSystemProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, req.(*common.Key))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_PutVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voip_user_profile.VoipUserProfileRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/PutVoipUserProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, req.(*voip_user_profile.VoipUserProfileRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.Key)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteVoipUserProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, req.(*common.Key))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableOnuDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableOnuDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OnuSerialNumberOnOLTPon)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OnuSerialNumberOnOLTPon)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _VolthaService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "voltha.VolthaService",
-	HandlerType: (*VolthaServiceServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "GetVoltha",
-			Handler:    _VolthaService_GetVoltha_Handler,
-		},
-		{
-			MethodName: "ListCoreInstances",
-			Handler:    _VolthaService_ListCoreInstances_Handler,
-		},
-		{
-			MethodName: "GetCoreInstance",
-			Handler:    _VolthaService_GetCoreInstance_Handler,
-		},
-		{
-			MethodName: "ListAdapters",
-			Handler:    _VolthaService_ListAdapters_Handler,
-		},
-		{
-			MethodName: "ListLogicalDevices",
-			Handler:    _VolthaService_ListLogicalDevices_Handler,
-		},
-		{
-			MethodName: "GetLogicalDevice",
-			Handler:    _VolthaService_GetLogicalDevice_Handler,
-		},
-		{
-			MethodName: "ListLogicalDevicePorts",
-			Handler:    _VolthaService_ListLogicalDevicePorts_Handler,
-		},
-		{
-			MethodName: "GetLogicalDevicePort",
-			Handler:    _VolthaService_GetLogicalDevicePort_Handler,
-		},
-		{
-			MethodName: "EnableLogicalDevicePort",
-			Handler:    _VolthaService_EnableLogicalDevicePort_Handler,
-		},
-		{
-			MethodName: "DisableLogicalDevicePort",
-			Handler:    _VolthaService_DisableLogicalDevicePort_Handler,
-		},
-		{
-			MethodName: "ListLogicalDeviceFlows",
-			Handler:    _VolthaService_ListLogicalDeviceFlows_Handler,
-		},
-		{
-			MethodName: "UpdateLogicalDeviceFlowTable",
-			Handler:    _VolthaService_UpdateLogicalDeviceFlowTable_Handler,
-		},
-		{
-			MethodName: "UpdateLogicalDeviceMeterTable",
-			Handler:    _VolthaService_UpdateLogicalDeviceMeterTable_Handler,
-		},
-		{
-			MethodName: "ListLogicalDeviceMeters",
-			Handler:    _VolthaService_ListLogicalDeviceMeters_Handler,
-		},
-		{
-			MethodName: "ListLogicalDeviceFlowGroups",
-			Handler:    _VolthaService_ListLogicalDeviceFlowGroups_Handler,
-		},
-		{
-			MethodName: "UpdateLogicalDeviceFlowGroupTable",
-			Handler:    _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler,
-		},
-		{
-			MethodName: "ListDevices",
-			Handler:    _VolthaService_ListDevices_Handler,
-		},
-		{
-			MethodName: "ListDeviceIds",
-			Handler:    _VolthaService_ListDeviceIds_Handler,
-		},
-		{
-			MethodName: "ReconcileDevices",
-			Handler:    _VolthaService_ReconcileDevices_Handler,
-		},
-		{
-			MethodName: "GetDevice",
-			Handler:    _VolthaService_GetDevice_Handler,
-		},
-		{
-			MethodName: "CreateDevice",
-			Handler:    _VolthaService_CreateDevice_Handler,
-		},
-		{
-			MethodName: "EnableDevice",
-			Handler:    _VolthaService_EnableDevice_Handler,
-		},
-		{
-			MethodName: "DisableDevice",
-			Handler:    _VolthaService_DisableDevice_Handler,
-		},
-		{
-			MethodName: "RebootDevice",
-			Handler:    _VolthaService_RebootDevice_Handler,
-		},
-		{
-			MethodName: "DeleteDevice",
-			Handler:    _VolthaService_DeleteDevice_Handler,
-		},
-		{
-			MethodName: "ForceDeleteDevice",
-			Handler:    _VolthaService_ForceDeleteDevice_Handler,
-		},
-		{
-			MethodName: "DownloadImage",
-			Handler:    _VolthaService_DownloadImage_Handler,
-		},
-		{
-			MethodName: "GetImageDownloadStatus",
-			Handler:    _VolthaService_GetImageDownloadStatus_Handler,
-		},
-		{
-			MethodName: "GetImageDownload",
-			Handler:    _VolthaService_GetImageDownload_Handler,
-		},
-		{
-			MethodName: "ListImageDownloads",
-			Handler:    _VolthaService_ListImageDownloads_Handler,
-		},
-		{
-			MethodName: "CancelImageDownload",
-			Handler:    _VolthaService_CancelImageDownload_Handler,
-		},
-		{
-			MethodName: "ActivateImageUpdate",
-			Handler:    _VolthaService_ActivateImageUpdate_Handler,
-		},
-		{
-			MethodName: "RevertImageUpdate",
-			Handler:    _VolthaService_RevertImageUpdate_Handler,
-		},
-		{
-			MethodName: "DownloadImageToDevice",
-			Handler:    _VolthaService_DownloadImageToDevice_Handler,
-		},
-		{
-			MethodName: "GetImageStatus",
-			Handler:    _VolthaService_GetImageStatus_Handler,
-		},
-		{
-			MethodName: "AbortImageUpgradeToDevice",
-			Handler:    _VolthaService_AbortImageUpgradeToDevice_Handler,
-		},
-		{
-			MethodName: "GetOnuImages",
-			Handler:    _VolthaService_GetOnuImages_Handler,
-		},
-		{
-			MethodName: "ActivateImage",
-			Handler:    _VolthaService_ActivateImage_Handler,
-		},
-		{
-			MethodName: "CommitImage",
-			Handler:    _VolthaService_CommitImage_Handler,
-		},
-		{
-			MethodName: "ListDevicePorts",
-			Handler:    _VolthaService_ListDevicePorts_Handler,
-		},
-		{
-			MethodName: "ListDevicePmConfigs",
-			Handler:    _VolthaService_ListDevicePmConfigs_Handler,
-		},
-		{
-			MethodName: "UpdateDevicePmConfigs",
-			Handler:    _VolthaService_UpdateDevicePmConfigs_Handler,
-		},
-		{
-			MethodName: "ListDeviceFlows",
-			Handler:    _VolthaService_ListDeviceFlows_Handler,
-		},
-		{
-			MethodName: "ListDeviceFlowGroups",
-			Handler:    _VolthaService_ListDeviceFlowGroups_Handler,
-		},
-		{
-			MethodName: "ListDeviceTypes",
-			Handler:    _VolthaService_ListDeviceTypes_Handler,
-		},
-		{
-			MethodName: "GetDeviceType",
-			Handler:    _VolthaService_GetDeviceType_Handler,
-		},
-		{
-			MethodName: "CreateEventFilter",
-			Handler:    _VolthaService_CreateEventFilter_Handler,
-		},
-		{
-			MethodName: "GetEventFilter",
-			Handler:    _VolthaService_GetEventFilter_Handler,
-		},
-		{
-			MethodName: "UpdateEventFilter",
-			Handler:    _VolthaService_UpdateEventFilter_Handler,
-		},
-		{
-			MethodName: "DeleteEventFilter",
-			Handler:    _VolthaService_DeleteEventFilter_Handler,
-		},
-		{
-			MethodName: "ListEventFilters",
-			Handler:    _VolthaService_ListEventFilters_Handler,
-		},
-		{
-			MethodName: "GetImages",
-			Handler:    _VolthaService_GetImages_Handler,
-		},
-		{
-			MethodName: "SelfTest",
-			Handler:    _VolthaService_SelfTest_Handler,
-		},
-		{
-			MethodName: "GetMibDeviceData",
-			Handler:    _VolthaService_GetMibDeviceData_Handler,
-		},
-		{
-			MethodName: "GetAlarmDeviceData",
-			Handler:    _VolthaService_GetAlarmDeviceData_Handler,
-		},
-		{
-			MethodName: "SimulateAlarm",
-			Handler:    _VolthaService_SimulateAlarm_Handler,
-		},
-		{
-			MethodName: "EnablePort",
-			Handler:    _VolthaService_EnablePort_Handler,
-		},
-		{
-			MethodName: "DisablePort",
-			Handler:    _VolthaService_DisablePort_Handler,
-		},
-		{
-			MethodName: "GetExtValue",
-			Handler:    _VolthaService_GetExtValue_Handler,
-		},
-		{
-			MethodName: "SetExtValue",
-			Handler:    _VolthaService_SetExtValue_Handler,
-		},
-		{
-			MethodName: "StartOmciTestAction",
-			Handler:    _VolthaService_StartOmciTestAction_Handler,
-		},
-		{
-			MethodName: "PutVoipSystemProfile",
-			Handler:    _VolthaService_PutVoipSystemProfile_Handler,
-		},
-		{
-			MethodName: "DeleteVoipSystemProfile",
-			Handler:    _VolthaService_DeleteVoipSystemProfile_Handler,
-		},
-		{
-			MethodName: "PutVoipUserProfile",
-			Handler:    _VolthaService_PutVoipUserProfile_Handler,
-		},
-		{
-			MethodName: "DeleteVoipUserProfile",
-			Handler:    _VolthaService_DeleteVoipUserProfile_Handler,
-		},
-		{
-			MethodName: "DisableOnuDevice",
-			Handler:    _VolthaService_DisableOnuDevice_Handler,
-		},
-		{
-			MethodName: "EnableOnuDevice",
-			Handler:    _VolthaService_EnableOnuDevice_Handler,
-		},
-		{
-			MethodName: "DisableOnuSerialNumber",
-			Handler:    _VolthaService_DisableOnuSerialNumber_Handler,
-		},
-		{
-			MethodName: "EnableOnuSerialNumber",
-			Handler:    _VolthaService_EnableOnuSerialNumber_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "StreamPacketsOut",
-			Handler:       _VolthaService_StreamPacketsOut_Handler,
-			ClientStreams: true,
-		},
-		{
-			StreamName:    "ReceivePacketsIn",
-			Handler:       _VolthaService_ReceivePacketsIn_Handler,
-			ServerStreams: true,
-		},
-		{
-			StreamName:    "ReceiveChangeEvents",
-			Handler:       _VolthaService_ReceiveChangeEvents_Handler,
-			ServerStreams: true,
+	file_voltha_protos_logical_device_proto_init()
+	file_voltha_protos_device_proto_init()
+	file_voltha_protos_adapter_proto_init()
+	file_voltha_protos_events_proto_init()
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_voltha_proto_rawDesc), len(file_voltha_protos_voltha_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-	},
-	Metadata: "voltha_protos/voltha.proto",
+		GoTypes:           file_voltha_protos_voltha_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_voltha_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_voltha_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_voltha_proto = out.File
+	file_voltha_protos_voltha_proto_goTypes = nil
+	file_voltha_protos_voltha_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha_grpc.pb.go
new file mode 100644
index 0000000..3f944a6
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha_grpc.pb.go
@@ -0,0 +1,3098 @@
+//
+// Top-level Voltha API definition
+//
+// For details, see individual definition files.
+
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/voltha.proto
+
+package voltha
+
+import (
+	context "context"
+	common "github.com/opencord/voltha-protos/v5/go/common"
+	extension "github.com/opencord/voltha-protos/v5/go/extension"
+	omci "github.com/opencord/voltha-protos/v5/go/omci"
+	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
+	voip_system_profile "github.com/opencord/voltha-protos/v5/go/voip_system_profile"
+	voip_user_profile "github.com/opencord/voltha-protos/v5/go/voip_user_profile"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	VolthaService_GetVoltha_FullMethodName                         = "/voltha.VolthaService/GetVoltha"
+	VolthaService_ListCoreInstances_FullMethodName                 = "/voltha.VolthaService/ListCoreInstances"
+	VolthaService_GetCoreInstance_FullMethodName                   = "/voltha.VolthaService/GetCoreInstance"
+	VolthaService_ListAdapters_FullMethodName                      = "/voltha.VolthaService/ListAdapters"
+	VolthaService_ListLogicalDevices_FullMethodName                = "/voltha.VolthaService/ListLogicalDevices"
+	VolthaService_GetLogicalDevice_FullMethodName                  = "/voltha.VolthaService/GetLogicalDevice"
+	VolthaService_ListLogicalDevicePorts_FullMethodName            = "/voltha.VolthaService/ListLogicalDevicePorts"
+	VolthaService_GetLogicalDevicePort_FullMethodName              = "/voltha.VolthaService/GetLogicalDevicePort"
+	VolthaService_EnableLogicalDevicePort_FullMethodName           = "/voltha.VolthaService/EnableLogicalDevicePort"
+	VolthaService_DisableLogicalDevicePort_FullMethodName          = "/voltha.VolthaService/DisableLogicalDevicePort"
+	VolthaService_ListLogicalDeviceFlows_FullMethodName            = "/voltha.VolthaService/ListLogicalDeviceFlows"
+	VolthaService_UpdateLogicalDeviceFlowTable_FullMethodName      = "/voltha.VolthaService/UpdateLogicalDeviceFlowTable"
+	VolthaService_UpdateLogicalDeviceMeterTable_FullMethodName     = "/voltha.VolthaService/UpdateLogicalDeviceMeterTable"
+	VolthaService_ListLogicalDeviceMeters_FullMethodName           = "/voltha.VolthaService/ListLogicalDeviceMeters"
+	VolthaService_ListLogicalDeviceFlowGroups_FullMethodName       = "/voltha.VolthaService/ListLogicalDeviceFlowGroups"
+	VolthaService_UpdateLogicalDeviceFlowGroupTable_FullMethodName = "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable"
+	VolthaService_ListDevices_FullMethodName                       = "/voltha.VolthaService/ListDevices"
+	VolthaService_ListDeviceIds_FullMethodName                     = "/voltha.VolthaService/ListDeviceIds"
+	VolthaService_ReconcileDevices_FullMethodName                  = "/voltha.VolthaService/ReconcileDevices"
+	VolthaService_GetDevice_FullMethodName                         = "/voltha.VolthaService/GetDevice"
+	VolthaService_CreateDevice_FullMethodName                      = "/voltha.VolthaService/CreateDevice"
+	VolthaService_EnableDevice_FullMethodName                      = "/voltha.VolthaService/EnableDevice"
+	VolthaService_DisableDevice_FullMethodName                     = "/voltha.VolthaService/DisableDevice"
+	VolthaService_RebootDevice_FullMethodName                      = "/voltha.VolthaService/RebootDevice"
+	VolthaService_DeleteDevice_FullMethodName                      = "/voltha.VolthaService/DeleteDevice"
+	VolthaService_ForceDeleteDevice_FullMethodName                 = "/voltha.VolthaService/ForceDeleteDevice"
+	VolthaService_DownloadImage_FullMethodName                     = "/voltha.VolthaService/DownloadImage"
+	VolthaService_GetImageDownloadStatus_FullMethodName            = "/voltha.VolthaService/GetImageDownloadStatus"
+	VolthaService_GetImageDownload_FullMethodName                  = "/voltha.VolthaService/GetImageDownload"
+	VolthaService_ListImageDownloads_FullMethodName                = "/voltha.VolthaService/ListImageDownloads"
+	VolthaService_CancelImageDownload_FullMethodName               = "/voltha.VolthaService/CancelImageDownload"
+	VolthaService_ActivateImageUpdate_FullMethodName               = "/voltha.VolthaService/ActivateImageUpdate"
+	VolthaService_RevertImageUpdate_FullMethodName                 = "/voltha.VolthaService/RevertImageUpdate"
+	VolthaService_DownloadImageToDevice_FullMethodName             = "/voltha.VolthaService/DownloadImageToDevice"
+	VolthaService_GetImageStatus_FullMethodName                    = "/voltha.VolthaService/GetImageStatus"
+	VolthaService_AbortImageUpgradeToDevice_FullMethodName         = "/voltha.VolthaService/AbortImageUpgradeToDevice"
+	VolthaService_GetOnuImages_FullMethodName                      = "/voltha.VolthaService/GetOnuImages"
+	VolthaService_ActivateImage_FullMethodName                     = "/voltha.VolthaService/ActivateImage"
+	VolthaService_CommitImage_FullMethodName                       = "/voltha.VolthaService/CommitImage"
+	VolthaService_ListDevicePorts_FullMethodName                   = "/voltha.VolthaService/ListDevicePorts"
+	VolthaService_ListDevicePmConfigs_FullMethodName               = "/voltha.VolthaService/ListDevicePmConfigs"
+	VolthaService_UpdateDevicePmConfigs_FullMethodName             = "/voltha.VolthaService/UpdateDevicePmConfigs"
+	VolthaService_ListDeviceFlows_FullMethodName                   = "/voltha.VolthaService/ListDeviceFlows"
+	VolthaService_ListDeviceFlowGroups_FullMethodName              = "/voltha.VolthaService/ListDeviceFlowGroups"
+	VolthaService_ListDeviceTypes_FullMethodName                   = "/voltha.VolthaService/ListDeviceTypes"
+	VolthaService_GetDeviceType_FullMethodName                     = "/voltha.VolthaService/GetDeviceType"
+	VolthaService_StreamPacketsOut_FullMethodName                  = "/voltha.VolthaService/StreamPacketsOut"
+	VolthaService_ReceivePacketsIn_FullMethodName                  = "/voltha.VolthaService/ReceivePacketsIn"
+	VolthaService_ReceiveChangeEvents_FullMethodName               = "/voltha.VolthaService/ReceiveChangeEvents"
+	VolthaService_CreateEventFilter_FullMethodName                 = "/voltha.VolthaService/CreateEventFilter"
+	VolthaService_GetEventFilter_FullMethodName                    = "/voltha.VolthaService/GetEventFilter"
+	VolthaService_UpdateEventFilter_FullMethodName                 = "/voltha.VolthaService/UpdateEventFilter"
+	VolthaService_DeleteEventFilter_FullMethodName                 = "/voltha.VolthaService/DeleteEventFilter"
+	VolthaService_ListEventFilters_FullMethodName                  = "/voltha.VolthaService/ListEventFilters"
+	VolthaService_GetImages_FullMethodName                         = "/voltha.VolthaService/GetImages"
+	VolthaService_SelfTest_FullMethodName                          = "/voltha.VolthaService/SelfTest"
+	VolthaService_GetMibDeviceData_FullMethodName                  = "/voltha.VolthaService/GetMibDeviceData"
+	VolthaService_GetAlarmDeviceData_FullMethodName                = "/voltha.VolthaService/GetAlarmDeviceData"
+	VolthaService_SimulateAlarm_FullMethodName                     = "/voltha.VolthaService/SimulateAlarm"
+	VolthaService_EnablePort_FullMethodName                        = "/voltha.VolthaService/EnablePort"
+	VolthaService_DisablePort_FullMethodName                       = "/voltha.VolthaService/DisablePort"
+	VolthaService_GetExtValue_FullMethodName                       = "/voltha.VolthaService/GetExtValue"
+	VolthaService_SetExtValue_FullMethodName                       = "/voltha.VolthaService/SetExtValue"
+	VolthaService_StartOmciTestAction_FullMethodName               = "/voltha.VolthaService/StartOmciTestAction"
+	VolthaService_PutVoipSystemProfile_FullMethodName              = "/voltha.VolthaService/PutVoipSystemProfile"
+	VolthaService_DeleteVoipSystemProfile_FullMethodName           = "/voltha.VolthaService/DeleteVoipSystemProfile"
+	VolthaService_PutVoipUserProfile_FullMethodName                = "/voltha.VolthaService/PutVoipUserProfile"
+	VolthaService_DeleteVoipUserProfile_FullMethodName             = "/voltha.VolthaService/DeleteVoipUserProfile"
+	VolthaService_DisableOnuDevice_FullMethodName                  = "/voltha.VolthaService/DisableOnuDevice"
+	VolthaService_EnableOnuDevice_FullMethodName                   = "/voltha.VolthaService/EnableOnuDevice"
+	VolthaService_DisableOnuSerialNumber_FullMethodName            = "/voltha.VolthaService/DisableOnuSerialNumber"
+	VolthaService_EnableOnuSerialNumber_FullMethodName             = "/voltha.VolthaService/EnableOnuSerialNumber"
+	VolthaService_UpdateDevice_FullMethodName                      = "/voltha.VolthaService/UpdateDevice"
+)
+
+// VolthaServiceClient is the client API for VolthaService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// Voltha APIs
+type VolthaServiceClient interface {
+	// Get high level information on the Voltha cluster
+	GetVoltha(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Voltha, error)
+	// List all Voltha cluster core instances
+	ListCoreInstances(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*CoreInstances, error)
+	// Get details on a Voltha cluster instance
+	GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error)
+	// List all active adapters (plugins) in the Voltha cluster
+	ListAdapters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Adapters, error)
+	// List all logical devices managed by the Voltha cluster
+	ListLogicalDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogicalDevices, error)
+	// Get additional information on a given logical device
+	GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error)
+	// List ports of a logical device
+	ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error)
+	// Gets a logical device port
+	GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error)
+	// Enables a logical device port
+	EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables a logical device port
+	DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all flows of a logical device
+	ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
+	// Update flow table for logical device
+	UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Update meter table for logical device
+	UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all meters of a logical device
+	ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error)
+	// List all flow groups of a logical device
+	ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
+	// Update group table for device
+	UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all physical devices controlled by the Voltha cluster
+	ListDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Devices, error)
+	// List all physical devices IDs controlled by the Voltha cluster
+	ListDeviceIds(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*common.IDs, error)
+	// Request to a voltha Core to reconcile a set of devices based on their IDs
+	ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Get more information on a given physical device
+	GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error)
+	// Pre-provision a new physical device
+	CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error)
+	// Enable a device.  If the device was in pre-provisioned state then it
+	// will transition to ENABLED state.  If it was is DISABLED state then it
+	// will transition to ENABLED state as well.
+	EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disable a device
+	DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Reboot a device
+	RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Delete a device
+	DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Forcefully delete a device
+	ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Deprecated: Do not use.
+	// Request an image download to the standby partition
+	// of a device.
+	// Note that the call is expected to be non-blocking.
+	DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Get image download status on a device
+	// The request retrieves progress on device and updates db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// Get image download db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// List image download db records for a given device
+	// Deprecated in voltha 2.8, will be removed
+	ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error)
+	// Deprecated: Do not use.
+	// Cancel an existing image download process on a device
+	// Deprecated in voltha 2.8, will be removed
+	CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Activate the specified image at a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Revert the specified image at standby partition
+	// to active partition, and revert to previous image
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// previous image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Downloads a certain image to the standby partition of the devices
+	// Note that the call is expected to be non-blocking.
+	DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Get image status on a number of devices devices
+	// Polled from northbound systems to get state of download/activate/commit
+	GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Aborts the upgrade of an image on a device
+	// To be used carefully, stops any further operations for the Image on the given devices
+	// Might also stop if possible existing work, but no guarantees are given,
+	// depends on implementation and procedure status.
+	AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Get Both Active and Standby image for a given device
+	GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error)
+	// Activate the specified image from a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Commit the specified image to be default.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device upon next reboot
+	// Note that the call is expected to be non-blocking.
+	CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// List ports of a device
+	ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error)
+	// List pm config of a device
+	ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error)
+	// Update the pm config of a device
+	UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all flows of a device
+	ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
+	// List all flow groups of a device
+	ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
+	// List device types known to Voltha
+	ListDeviceTypes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*DeviceTypes, error)
+	// Get additional information on a device type
+	GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error)
+	// Stream control packets to the dataplane
+	StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[openflow_13.PacketOut, emptypb.Empty], error)
+	// Receive control packet stream
+	ReceivePacketsIn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.PacketIn], error)
+	ReceiveChangeEvents(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.ChangeEvent], error)
+	CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
+	// Get all filters present for a device
+	GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error)
+	UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
+	DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Get all the filters present
+	ListEventFilters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EventFilters, error)
+	GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error)
+	SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error)
+	// OpenOMCI MIB information
+	GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error)
+	// OpenOMCI ALARM information
+	GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error)
+	// Simulate an Alarm
+	SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error)
+	EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error)
+	SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// omci start and stop cli implementation
+	StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
+	DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
+	EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
+	DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
+	EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Update the Device configuration, for now only ip address updation is supported
+	UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type volthaServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewVolthaServiceClient(cc grpc.ClientConnInterface) VolthaServiceClient {
+	return &volthaServiceClient{cc}
+}
+
+func (c *volthaServiceClient) GetVoltha(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Voltha, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Voltha)
+	err := c.cc.Invoke(ctx, VolthaService_GetVoltha_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListCoreInstances(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*CoreInstances, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(CoreInstances)
+	err := c.cc.Invoke(ctx, VolthaService_ListCoreInstances_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(CoreInstance)
+	err := c.cc.Invoke(ctx, VolthaService_GetCoreInstance_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListAdapters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Adapters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Adapters)
+	err := c.cc.Invoke(ctx, VolthaService_ListAdapters_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogicalDevices, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalDevices)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalDevice)
+	err := c.cc.Invoke(ctx, VolthaService_GetLogicalDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalPorts)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDevicePorts_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalPort)
+	err := c.cc.Invoke(ctx, VolthaService_GetLogicalDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableLogicalDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableLogicalDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.Flows)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDeviceFlows_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateLogicalDeviceFlowTable_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateLogicalDeviceMeterTable_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.Meters)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDeviceMeters_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.FlowGroups)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDeviceFlowGroups_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateLogicalDeviceFlowGroupTable_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Devices, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Devices)
+	err := c.cc.Invoke(ctx, VolthaService_ListDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceIds(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*common.IDs, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.IDs)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceIds_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_ReconcileDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Device)
+	err := c.cc.Invoke(ctx, VolthaService_GetDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Device)
+	err := c.cc.Invoke(ctx, VolthaService_CreateDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_RebootDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_ForceDeleteDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_DownloadImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ImageDownload)
+	err := c.cc.Invoke(ctx, VolthaService_GetImageDownloadStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ImageDownload)
+	err := c.cc.Invoke(ctx, VolthaService_GetImageDownload_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ImageDownloads)
+	err := c.cc.Invoke(ctx, VolthaService_ListImageDownloads_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_CancelImageDownload_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_ActivateImageUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_RevertImageUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_DownloadImageToDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_GetImageStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_AbortImageUpgradeToDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(OnuImages)
+	err := c.cc.Invoke(ctx, VolthaService_GetOnuImages_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_ActivateImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_CommitImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Ports)
+	err := c.cc.Invoke(ctx, VolthaService_ListDevicePorts_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(PmConfigs)
+	err := c.cc.Invoke(ctx, VolthaService_ListDevicePmConfigs_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateDevicePmConfigs_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.Flows)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceFlows_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.FlowGroups)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceFlowGroups_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceTypes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*DeviceTypes, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceTypes)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceTypes_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceType)
+	err := c.cc.Invoke(ctx, VolthaService_GetDeviceType_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[openflow_13.PacketOut, emptypb.Empty], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &VolthaService_ServiceDesc.Streams[0], VolthaService_StreamPacketsOut_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[openflow_13.PacketOut, emptypb.Empty]{ClientStream: stream}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_StreamPacketsOutClient = grpc.ClientStreamingClient[openflow_13.PacketOut, emptypb.Empty]
+
+func (c *volthaServiceClient) ReceivePacketsIn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.PacketIn], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &VolthaService_ServiceDesc.Streams[1], VolthaService_ReceivePacketsIn_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[emptypb.Empty, openflow_13.PacketIn]{ClientStream: stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceivePacketsInClient = grpc.ServerStreamingClient[openflow_13.PacketIn]
+
+func (c *volthaServiceClient) ReceiveChangeEvents(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.ChangeEvent], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &VolthaService_ServiceDesc.Streams[2], VolthaService_ReceiveChangeEvents_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[emptypb.Empty, openflow_13.ChangeEvent]{ClientStream: stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceiveChangeEventsClient = grpc.ServerStreamingClient[openflow_13.ChangeEvent]
+
+func (c *volthaServiceClient) CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilter)
+	err := c.cc.Invoke(ctx, VolthaService_CreateEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilters)
+	err := c.cc.Invoke(ctx, VolthaService_GetEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilter)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListEventFilters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EventFilters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilters)
+	err := c.cc.Invoke(ctx, VolthaService_ListEventFilters_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Images)
+	err := c.cc.Invoke(ctx, VolthaService_GetImages_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(SelfTestResponse)
+	err := c.cc.Invoke(ctx, VolthaService_SelfTest_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.MibDeviceData)
+	err := c.cc.Invoke(ctx, VolthaService_GetMibDeviceData_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.AlarmDeviceData)
+	err := c.cc.Invoke(ctx, VolthaService_GetAlarmDeviceData_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_SimulateAlarm_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnablePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisablePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(extension.ReturnValues)
+	err := c.cc.Invoke(ctx, VolthaService_GetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_SetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.TestResponse)
+	err := c.cc.Invoke(ctx, VolthaService_StartOmciTestAction_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_PutVoipSystemProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteVoipSystemProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_PutVoipUserProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteVoipUserProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableOnuDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableOnuDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// VolthaServiceServer is the server API for VolthaService service.
+// All implementations must embed UnimplementedVolthaServiceServer
+// for forward compatibility.
+//
+// Voltha APIs
+type VolthaServiceServer interface {
+	// Get high level information on the Voltha cluster
+	GetVoltha(context.Context, *emptypb.Empty) (*Voltha, error)
+	// List all Voltha cluster core instances
+	ListCoreInstances(context.Context, *emptypb.Empty) (*CoreInstances, error)
+	// Get details on a Voltha cluster instance
+	GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error)
+	// List all active adapters (plugins) in the Voltha cluster
+	ListAdapters(context.Context, *emptypb.Empty) (*Adapters, error)
+	// List all logical devices managed by the Voltha cluster
+	ListLogicalDevices(context.Context, *emptypb.Empty) (*LogicalDevices, error)
+	// Get additional information on a given logical device
+	GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error)
+	// List ports of a logical device
+	ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error)
+	// Gets a logical device port
+	GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error)
+	// Enables a logical device port
+	EnableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error)
+	// Disables a logical device port
+	DisableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error)
+	// List all flows of a logical device
+	ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
+	// Update flow table for logical device
+	UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*emptypb.Empty, error)
+	// Update meter table for logical device
+	UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*emptypb.Empty, error)
+	// List all meters of a logical device
+	ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error)
+	// List all flow groups of a logical device
+	ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
+	// Update group table for device
+	UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*emptypb.Empty, error)
+	// List all physical devices controlled by the Voltha cluster
+	ListDevices(context.Context, *emptypb.Empty) (*Devices, error)
+	// List all physical devices IDs controlled by the Voltha cluster
+	ListDeviceIds(context.Context, *emptypb.Empty) (*common.IDs, error)
+	// Request to a voltha Core to reconcile a set of devices based on their IDs
+	ReconcileDevices(context.Context, *common.IDs) (*emptypb.Empty, error)
+	// Get more information on a given physical device
+	GetDevice(context.Context, *common.ID) (*Device, error)
+	// Pre-provision a new physical device
+	CreateDevice(context.Context, *Device) (*Device, error)
+	// Enable a device.  If the device was in pre-provisioned state then it
+	// will transition to ENABLED state.  If it was is DISABLED state then it
+	// will transition to ENABLED state as well.
+	EnableDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Disable a device
+	DisableDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Reboot a device
+	RebootDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Delete a device
+	DeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Forcefully delete a device
+	ForceDeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Deprecated: Do not use.
+	// Request an image download to the standby partition
+	// of a device.
+	// Note that the call is expected to be non-blocking.
+	DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Get image download status on a device
+	// The request retrieves progress on device and updates db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// Get image download db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// List image download db records for a given device
+	// Deprecated in voltha 2.8, will be removed
+	ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error)
+	// Deprecated: Do not use.
+	// Cancel an existing image download process on a device
+	// Deprecated in voltha 2.8, will be removed
+	CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Activate the specified image at a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Revert the specified image at standby partition
+	// to active partition, and revert to previous image
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// previous image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Downloads a certain image to the standby partition of the devices
+	// Note that the call is expected to be non-blocking.
+	DownloadImageToDevice(context.Context, *DeviceImageDownloadRequest) (*DeviceImageResponse, error)
+	// Get image status on a number of devices devices
+	// Polled from northbound systems to get state of download/activate/commit
+	GetImageStatus(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// Aborts the upgrade of an image on a device
+	// To be used carefully, stops any further operations for the Image on the given devices
+	// Might also stop if possible existing work, but no guarantees are given,
+	// depends on implementation and procedure status.
+	AbortImageUpgradeToDevice(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// Get Both Active and Standby image for a given device
+	GetOnuImages(context.Context, *common.ID) (*OnuImages, error)
+	// Activate the specified image from a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	ActivateImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// Commit the specified image to be default.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device upon next reboot
+	// Note that the call is expected to be non-blocking.
+	CommitImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// List ports of a device
+	ListDevicePorts(context.Context, *common.ID) (*Ports, error)
+	// List pm config of a device
+	ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error)
+	// Update the pm config of a device
+	UpdateDevicePmConfigs(context.Context, *PmConfigs) (*emptypb.Empty, error)
+	// List all flows of a device
+	ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
+	// List all flow groups of a device
+	ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
+	// List device types known to Voltha
+	ListDeviceTypes(context.Context, *emptypb.Empty) (*DeviceTypes, error)
+	// Get additional information on a device type
+	GetDeviceType(context.Context, *common.ID) (*DeviceType, error)
+	// Stream control packets to the dataplane
+	StreamPacketsOut(grpc.ClientStreamingServer[openflow_13.PacketOut, emptypb.Empty]) error
+	// Receive control packet stream
+	ReceivePacketsIn(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.PacketIn]) error
+	ReceiveChangeEvents(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.ChangeEvent]) error
+	CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
+	// Get all filters present for a device
+	GetEventFilter(context.Context, *common.ID) (*EventFilters, error)
+	UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
+	DeleteEventFilter(context.Context, *EventFilter) (*emptypb.Empty, error)
+	// Get all the filters present
+	ListEventFilters(context.Context, *emptypb.Empty) (*EventFilters, error)
+	GetImages(context.Context, *common.ID) (*Images, error)
+	SelfTest(context.Context, *common.ID) (*SelfTestResponse, error)
+	// OpenOMCI MIB information
+	GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error)
+	// OpenOMCI ALARM information
+	GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error)
+	// Simulate an Alarm
+	SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error)
+	EnablePort(context.Context, *Port) (*emptypb.Empty, error)
+	DisablePort(context.Context, *Port) (*emptypb.Empty, error)
+	GetExtValue(context.Context, *extension.ValueSpecifier) (*extension.ReturnValues, error)
+	SetExtValue(context.Context, *extension.ValueSet) (*emptypb.Empty, error)
+	// omci start and stop cli implementation
+	StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(context.Context, *common.Key) (*emptypb.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(context.Context, *common.Key) (*emptypb.Empty, error)
+	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
+	DisableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
+	EnableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
+	DisableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
+	EnableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error)
+	// Update the Device configuration, for now only ip address updation is supported
+	UpdateDevice(context.Context, *UpdateDevice) (*emptypb.Empty, error)
+	mustEmbedUnimplementedVolthaServiceServer()
+}
+
+// UnimplementedVolthaServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedVolthaServiceServer struct{}
+
+func (UnimplementedVolthaServiceServer) GetVoltha(context.Context, *emptypb.Empty) (*Voltha, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetVoltha not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListCoreInstances(context.Context, *emptypb.Empty) (*CoreInstances, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListCoreInstances not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetCoreInstance not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListAdapters(context.Context, *emptypb.Empty) (*Adapters, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListAdapters not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDevices(context.Context, *emptypb.Empty) (*LogicalDevices, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDevices not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetLogicalDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDevicePorts not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetLogicalDevicePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableLogicalDevicePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableLogicalDevicePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDeviceFlows not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateLogicalDeviceFlowTable not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateLogicalDeviceMeterTable not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDeviceMeters not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDeviceFlowGroups not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateLogicalDeviceFlowGroupTable not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDevices(context.Context, *emptypb.Empty) (*Devices, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevices not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceIds(context.Context, *emptypb.Empty) (*common.IDs, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceIds not implemented")
+}
+func (UnimplementedVolthaServiceServer) ReconcileDevices(context.Context, *common.IDs) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ReconcileDevices not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetDevice(context.Context, *common.ID) (*Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) CreateDevice(context.Context, *Device) (*Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method CreateDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) RebootDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method RebootDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) ForceDeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ForceDeleteDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method DownloadImage not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageDownloadStatus not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageDownload not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListImageDownloads not implemented")
+}
+func (UnimplementedVolthaServiceServer) CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method CancelImageDownload not implemented")
+}
+func (UnimplementedVolthaServiceServer) ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method ActivateImageUpdate not implemented")
+}
+func (UnimplementedVolthaServiceServer) RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method RevertImageUpdate not implemented")
+}
+func (UnimplementedVolthaServiceServer) DownloadImageToDevice(context.Context, *DeviceImageDownloadRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method DownloadImageToDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImageStatus(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageStatus not implemented")
+}
+func (UnimplementedVolthaServiceServer) AbortImageUpgradeToDevice(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method AbortImageUpgradeToDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetOnuImages(context.Context, *common.ID) (*OnuImages, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetOnuImages not implemented")
+}
+func (UnimplementedVolthaServiceServer) ActivateImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method ActivateImage not implemented")
+}
+func (UnimplementedVolthaServiceServer) CommitImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method CommitImage not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDevicePorts(context.Context, *common.ID) (*Ports, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevicePorts not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevicePmConfigs not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateDevicePmConfigs(context.Context, *PmConfigs) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateDevicePmConfigs not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceFlows not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceFlowGroups not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceTypes(context.Context, *emptypb.Empty) (*DeviceTypes, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceTypes not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetDeviceType(context.Context, *common.ID) (*DeviceType, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetDeviceType not implemented")
+}
+func (UnimplementedVolthaServiceServer) StreamPacketsOut(grpc.ClientStreamingServer[openflow_13.PacketOut, emptypb.Empty]) error {
+	return status.Error(codes.Unimplemented, "method StreamPacketsOut not implemented")
+}
+func (UnimplementedVolthaServiceServer) ReceivePacketsIn(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.PacketIn]) error {
+	return status.Error(codes.Unimplemented, "method ReceivePacketsIn not implemented")
+}
+func (UnimplementedVolthaServiceServer) ReceiveChangeEvents(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.ChangeEvent]) error {
+	return status.Error(codes.Unimplemented, "method ReceiveChangeEvents not implemented")
+}
+func (UnimplementedVolthaServiceServer) CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error) {
+	return nil, status.Error(codes.Unimplemented, "method CreateEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetEventFilter(context.Context, *common.ID) (*EventFilters, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteEventFilter(context.Context, *EventFilter) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListEventFilters(context.Context, *emptypb.Empty) (*EventFilters, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListEventFilters not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImages(context.Context, *common.ID) (*Images, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImages not implemented")
+}
+func (UnimplementedVolthaServiceServer) SelfTest(context.Context, *common.ID) (*SelfTestResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method SelfTest not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetMibDeviceData not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetAlarmDeviceData not implemented")
+}
+func (UnimplementedVolthaServiceServer) SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method SimulateAlarm not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnablePort(context.Context, *Port) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnablePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisablePort(context.Context, *Port) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisablePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetExtValue(context.Context, *extension.ValueSpecifier) (*extension.ReturnValues, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetExtValue not implemented")
+}
+func (UnimplementedVolthaServiceServer) SetExtValue(context.Context, *extension.ValueSet) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method SetExtValue not implemented")
+}
+func (UnimplementedVolthaServiceServer) StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method StartOmciTestAction not implemented")
+}
+func (UnimplementedVolthaServiceServer) PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PutVoipSystemProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteVoipSystemProfile(context.Context, *common.Key) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteVoipSystemProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PutVoipUserProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteVoipUserProfile(context.Context, *common.Key) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteVoipUserProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnuDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnuDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateDevice(context.Context, *UpdateDevice) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) mustEmbedUnimplementedVolthaServiceServer() {}
+func (UnimplementedVolthaServiceServer) testEmbeddedByValue()                       {}
+
+// UnsafeVolthaServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to VolthaServiceServer will
+// result in compilation errors.
+type UnsafeVolthaServiceServer interface {
+	mustEmbedUnimplementedVolthaServiceServer()
+}
+
+func RegisterVolthaServiceServer(s grpc.ServiceRegistrar, srv VolthaServiceServer) {
+	// If the following call panics, it indicates UnimplementedVolthaServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&VolthaService_ServiceDesc, srv)
+}
+
+func _VolthaService_GetVoltha_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetVoltha(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetVoltha_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetVoltha(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListCoreInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListCoreInstances(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListCoreInstances_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListCoreInstances(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetCoreInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetCoreInstance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetCoreInstance_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetCoreInstance(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListAdapters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListAdapters(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListAdapters_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListAdapters(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetLogicalDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetLogicalDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDevicePorts_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LogicalPortId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetLogicalDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, req.(*LogicalPortId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LogicalPortId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableLogicalDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, req.(*LogicalPortId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LogicalPortId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableLogicalDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, req.(*LogicalPortId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDeviceFlows_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceFlowTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(openflow_13.FlowTableUpdate)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateLogicalDeviceFlowTable_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, req.(*openflow_13.FlowTableUpdate))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceMeterTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(openflow_13.MeterModUpdate)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateLogicalDeviceMeterTable_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, req.(*openflow_13.MeterModUpdate))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceMeters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDeviceMeters_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDeviceFlowGroups_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(openflow_13.FlowGroupTableUpdate)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateLogicalDeviceFlowGroupTable_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, req.(*openflow_13.FlowGroupTableUpdate))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDevices(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceIds(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceIds_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceIds(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ReconcileDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.IDs)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ReconcileDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ReconcileDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ReconcileDevices(ctx, req.(*common.IDs))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CreateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CreateDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CreateDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CreateDevice(ctx, req.(*Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_RebootDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).RebootDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_RebootDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).RebootDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ForceDeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ForceDeleteDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DownloadImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DownloadImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DownloadImage(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageDownloadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImageDownloadStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImageDownload(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImageDownload_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImageDownload(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListImageDownloads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListImageDownloads(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListImageDownloads_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListImageDownloads(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CancelImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CancelImageDownload(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CancelImageDownload_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CancelImageDownload(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ActivateImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ActivateImageUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_RevertImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_RevertImageUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DownloadImageToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageDownloadRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DownloadImageToDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, req.(*DeviceImageDownloadRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImageStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImageStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImageStatus(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_AbortImageUpgradeToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_AbortImageUpgradeToDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetOnuImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetOnuImages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetOnuImages_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetOnuImages(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ActivateImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ActivateImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ActivateImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ActivateImage(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CommitImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CommitImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CommitImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CommitImage(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDevicePorts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDevicePorts_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDevicePorts(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDevicePmConfigs_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(PmConfigs)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateDevicePmConfigs_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, req.(*PmConfigs))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceFlows_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceFlowGroups_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceTypes_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetDeviceType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetDeviceType(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetDeviceType_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetDeviceType(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_StreamPacketsOut_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(VolthaServiceServer).StreamPacketsOut(&grpc.GenericServerStream[openflow_13.PacketOut, emptypb.Empty]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_StreamPacketsOutServer = grpc.ClientStreamingServer[openflow_13.PacketOut, emptypb.Empty]
+
+func _VolthaService_ReceivePacketsIn_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(emptypb.Empty)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(VolthaServiceServer).ReceivePacketsIn(m, &grpc.GenericServerStream[emptypb.Empty, openflow_13.PacketIn]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceivePacketsInServer = grpc.ServerStreamingServer[openflow_13.PacketIn]
+
+func _VolthaService_ReceiveChangeEvents_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(emptypb.Empty)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(VolthaServiceServer).ReceiveChangeEvents(m, &grpc.GenericServerStream[emptypb.Empty, openflow_13.ChangeEvent]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceiveChangeEventsServer = grpc.ServerStreamingServer[openflow_13.ChangeEvent]
+
+func _VolthaService_CreateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CreateEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CreateEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CreateEventFilter(ctx, req.(*EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetEventFilter(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, req.(*EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, req.(*EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListEventFilters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListEventFilters(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListEventFilters_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListEventFilters(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImages_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImages(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SelfTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).SelfTest(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_SelfTest_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).SelfTest(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetMibDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetMibDeviceData_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetAlarmDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetAlarmDeviceData_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SimulateAlarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SimulateAlarmRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).SimulateAlarm(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_SimulateAlarm_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).SimulateAlarm(ctx, req.(*SimulateAlarmRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Port)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnablePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnablePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnablePort(ctx, req.(*Port))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Port)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisablePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisablePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisablePort(ctx, req.(*Port))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(extension.ValueSpecifier)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetExtValue(ctx, req.(*extension.ValueSpecifier))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(extension.ValueSet)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).SetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_SetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).SetExtValue(ctx, req.(*extension.ValueSet))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_StartOmciTestAction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(omci.OmciTestRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_StartOmciTestAction_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, req.(*omci.OmciTestRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_PutVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_system_profile.VoipSystemProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_PutVoipSystemProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, req.(*voip_system_profile.VoipSystemProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteVoipSystemProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_PutVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_user_profile.VoipUserProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_PutVoipUserProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, req.(*voip_user_profile.VoipUserProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteVoipUserProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableOnuDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableOnuDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateDevice)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateDevice(ctx, req.(*UpdateDevice))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// VolthaService_ServiceDesc is the grpc.ServiceDesc for VolthaService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var VolthaService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "voltha.VolthaService",
+	HandlerType: (*VolthaServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetVoltha",
+			Handler:    _VolthaService_GetVoltha_Handler,
+		},
+		{
+			MethodName: "ListCoreInstances",
+			Handler:    _VolthaService_ListCoreInstances_Handler,
+		},
+		{
+			MethodName: "GetCoreInstance",
+			Handler:    _VolthaService_GetCoreInstance_Handler,
+		},
+		{
+			MethodName: "ListAdapters",
+			Handler:    _VolthaService_ListAdapters_Handler,
+		},
+		{
+			MethodName: "ListLogicalDevices",
+			Handler:    _VolthaService_ListLogicalDevices_Handler,
+		},
+		{
+			MethodName: "GetLogicalDevice",
+			Handler:    _VolthaService_GetLogicalDevice_Handler,
+		},
+		{
+			MethodName: "ListLogicalDevicePorts",
+			Handler:    _VolthaService_ListLogicalDevicePorts_Handler,
+		},
+		{
+			MethodName: "GetLogicalDevicePort",
+			Handler:    _VolthaService_GetLogicalDevicePort_Handler,
+		},
+		{
+			MethodName: "EnableLogicalDevicePort",
+			Handler:    _VolthaService_EnableLogicalDevicePort_Handler,
+		},
+		{
+			MethodName: "DisableLogicalDevicePort",
+			Handler:    _VolthaService_DisableLogicalDevicePort_Handler,
+		},
+		{
+			MethodName: "ListLogicalDeviceFlows",
+			Handler:    _VolthaService_ListLogicalDeviceFlows_Handler,
+		},
+		{
+			MethodName: "UpdateLogicalDeviceFlowTable",
+			Handler:    _VolthaService_UpdateLogicalDeviceFlowTable_Handler,
+		},
+		{
+			MethodName: "UpdateLogicalDeviceMeterTable",
+			Handler:    _VolthaService_UpdateLogicalDeviceMeterTable_Handler,
+		},
+		{
+			MethodName: "ListLogicalDeviceMeters",
+			Handler:    _VolthaService_ListLogicalDeviceMeters_Handler,
+		},
+		{
+			MethodName: "ListLogicalDeviceFlowGroups",
+			Handler:    _VolthaService_ListLogicalDeviceFlowGroups_Handler,
+		},
+		{
+			MethodName: "UpdateLogicalDeviceFlowGroupTable",
+			Handler:    _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler,
+		},
+		{
+			MethodName: "ListDevices",
+			Handler:    _VolthaService_ListDevices_Handler,
+		},
+		{
+			MethodName: "ListDeviceIds",
+			Handler:    _VolthaService_ListDeviceIds_Handler,
+		},
+		{
+			MethodName: "ReconcileDevices",
+			Handler:    _VolthaService_ReconcileDevices_Handler,
+		},
+		{
+			MethodName: "GetDevice",
+			Handler:    _VolthaService_GetDevice_Handler,
+		},
+		{
+			MethodName: "CreateDevice",
+			Handler:    _VolthaService_CreateDevice_Handler,
+		},
+		{
+			MethodName: "EnableDevice",
+			Handler:    _VolthaService_EnableDevice_Handler,
+		},
+		{
+			MethodName: "DisableDevice",
+			Handler:    _VolthaService_DisableDevice_Handler,
+		},
+		{
+			MethodName: "RebootDevice",
+			Handler:    _VolthaService_RebootDevice_Handler,
+		},
+		{
+			MethodName: "DeleteDevice",
+			Handler:    _VolthaService_DeleteDevice_Handler,
+		},
+		{
+			MethodName: "ForceDeleteDevice",
+			Handler:    _VolthaService_ForceDeleteDevice_Handler,
+		},
+		{
+			MethodName: "DownloadImage",
+			Handler:    _VolthaService_DownloadImage_Handler,
+		},
+		{
+			MethodName: "GetImageDownloadStatus",
+			Handler:    _VolthaService_GetImageDownloadStatus_Handler,
+		},
+		{
+			MethodName: "GetImageDownload",
+			Handler:    _VolthaService_GetImageDownload_Handler,
+		},
+		{
+			MethodName: "ListImageDownloads",
+			Handler:    _VolthaService_ListImageDownloads_Handler,
+		},
+		{
+			MethodName: "CancelImageDownload",
+			Handler:    _VolthaService_CancelImageDownload_Handler,
+		},
+		{
+			MethodName: "ActivateImageUpdate",
+			Handler:    _VolthaService_ActivateImageUpdate_Handler,
+		},
+		{
+			MethodName: "RevertImageUpdate",
+			Handler:    _VolthaService_RevertImageUpdate_Handler,
+		},
+		{
+			MethodName: "DownloadImageToDevice",
+			Handler:    _VolthaService_DownloadImageToDevice_Handler,
+		},
+		{
+			MethodName: "GetImageStatus",
+			Handler:    _VolthaService_GetImageStatus_Handler,
+		},
+		{
+			MethodName: "AbortImageUpgradeToDevice",
+			Handler:    _VolthaService_AbortImageUpgradeToDevice_Handler,
+		},
+		{
+			MethodName: "GetOnuImages",
+			Handler:    _VolthaService_GetOnuImages_Handler,
+		},
+		{
+			MethodName: "ActivateImage",
+			Handler:    _VolthaService_ActivateImage_Handler,
+		},
+		{
+			MethodName: "CommitImage",
+			Handler:    _VolthaService_CommitImage_Handler,
+		},
+		{
+			MethodName: "ListDevicePorts",
+			Handler:    _VolthaService_ListDevicePorts_Handler,
+		},
+		{
+			MethodName: "ListDevicePmConfigs",
+			Handler:    _VolthaService_ListDevicePmConfigs_Handler,
+		},
+		{
+			MethodName: "UpdateDevicePmConfigs",
+			Handler:    _VolthaService_UpdateDevicePmConfigs_Handler,
+		},
+		{
+			MethodName: "ListDeviceFlows",
+			Handler:    _VolthaService_ListDeviceFlows_Handler,
+		},
+		{
+			MethodName: "ListDeviceFlowGroups",
+			Handler:    _VolthaService_ListDeviceFlowGroups_Handler,
+		},
+		{
+			MethodName: "ListDeviceTypes",
+			Handler:    _VolthaService_ListDeviceTypes_Handler,
+		},
+		{
+			MethodName: "GetDeviceType",
+			Handler:    _VolthaService_GetDeviceType_Handler,
+		},
+		{
+			MethodName: "CreateEventFilter",
+			Handler:    _VolthaService_CreateEventFilter_Handler,
+		},
+		{
+			MethodName: "GetEventFilter",
+			Handler:    _VolthaService_GetEventFilter_Handler,
+		},
+		{
+			MethodName: "UpdateEventFilter",
+			Handler:    _VolthaService_UpdateEventFilter_Handler,
+		},
+		{
+			MethodName: "DeleteEventFilter",
+			Handler:    _VolthaService_DeleteEventFilter_Handler,
+		},
+		{
+			MethodName: "ListEventFilters",
+			Handler:    _VolthaService_ListEventFilters_Handler,
+		},
+		{
+			MethodName: "GetImages",
+			Handler:    _VolthaService_GetImages_Handler,
+		},
+		{
+			MethodName: "SelfTest",
+			Handler:    _VolthaService_SelfTest_Handler,
+		},
+		{
+			MethodName: "GetMibDeviceData",
+			Handler:    _VolthaService_GetMibDeviceData_Handler,
+		},
+		{
+			MethodName: "GetAlarmDeviceData",
+			Handler:    _VolthaService_GetAlarmDeviceData_Handler,
+		},
+		{
+			MethodName: "SimulateAlarm",
+			Handler:    _VolthaService_SimulateAlarm_Handler,
+		},
+		{
+			MethodName: "EnablePort",
+			Handler:    _VolthaService_EnablePort_Handler,
+		},
+		{
+			MethodName: "DisablePort",
+			Handler:    _VolthaService_DisablePort_Handler,
+		},
+		{
+			MethodName: "GetExtValue",
+			Handler:    _VolthaService_GetExtValue_Handler,
+		},
+		{
+			MethodName: "SetExtValue",
+			Handler:    _VolthaService_SetExtValue_Handler,
+		},
+		{
+			MethodName: "StartOmciTestAction",
+			Handler:    _VolthaService_StartOmciTestAction_Handler,
+		},
+		{
+			MethodName: "PutVoipSystemProfile",
+			Handler:    _VolthaService_PutVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipSystemProfile",
+			Handler:    _VolthaService_DeleteVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "PutVoipUserProfile",
+			Handler:    _VolthaService_PutVoipUserProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipUserProfile",
+			Handler:    _VolthaService_DeleteVoipUserProfile_Handler,
+		},
+		{
+			MethodName: "DisableOnuDevice",
+			Handler:    _VolthaService_DisableOnuDevice_Handler,
+		},
+		{
+			MethodName: "EnableOnuDevice",
+			Handler:    _VolthaService_EnableOnuDevice_Handler,
+		},
+		{
+			MethodName: "DisableOnuSerialNumber",
+			Handler:    _VolthaService_DisableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "EnableOnuSerialNumber",
+			Handler:    _VolthaService_EnableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "UpdateDevice",
+			Handler:    _VolthaService_UpdateDevice_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "StreamPacketsOut",
+			Handler:       _VolthaService_StreamPacketsOut_Handler,
+			ClientStreams: true,
+		},
+		{
+			StreamName:    "ReceivePacketsIn",
+			Handler:       _VolthaService_ReceivePacketsIn_Handler,
+			ServerStreams: true,
+		},
+		{
+			StreamName:    "ReceiveChangeEvents",
+			Handler:       _VolthaService_ReceiveChangeEvents_Handler,
+			ServerStreams: true,
+		},
+	},
+	Metadata: "voltha_protos/voltha.proto",
+}
diff --git a/vendor/github.com/golang/mock/AUTHORS b/vendor/go.uber.org/mock/AUTHORS
similarity index 100%
rename from vendor/github.com/golang/mock/AUTHORS
rename to vendor/go.uber.org/mock/AUTHORS
diff --git a/vendor/github.com/golang/mock/LICENSE b/vendor/go.uber.org/mock/LICENSE
similarity index 100%
rename from vendor/github.com/golang/mock/LICENSE
rename to vendor/go.uber.org/mock/LICENSE
diff --git a/vendor/github.com/golang/mock/gomock/call.go b/vendor/go.uber.org/mock/gomock/call.go
similarity index 77%
rename from vendor/github.com/golang/mock/gomock/call.go
rename to vendor/go.uber.org/mock/gomock/call.go
index 13c9f44..e1fe222 100644
--- a/vendor/github.com/golang/mock/gomock/call.go
+++ b/vendor/go.uber.org/mock/gomock/call.go
@@ -25,7 +25,7 @@
 type Call struct {
 	t TestHelper // for triggering test failures on invalid call setup
 
-	receiver   interface{}  // the receiver of the method call
+	receiver   any          // the receiver of the method call
 	method     string       // the name of the method
 	methodType reflect.Type // the type of the method
 	args       []Matcher    // the args
@@ -41,12 +41,12 @@
 	// actions are called when this Call is called. Each action gets the args and
 	// can set the return values by returning a non-nil slice. Actions run in the
 	// order they are created.
-	actions []func([]interface{}) []interface{}
+	actions []func([]any) []any
 }
 
 // newCall creates a *Call. It requires the method type in order to support
 // unexported methods.
-func newCall(t TestHelper, receiver interface{}, method string, methodType reflect.Type, args ...interface{}) *Call {
+func newCall(t TestHelper, receiver any, method string, methodType reflect.Type, args ...any) *Call {
 	t.Helper()
 
 	// TODO: check arity, types.
@@ -67,16 +67,18 @@
 	// and this line changes, i.e. this code is wrapped in another anonymous function.
 	// 0 is us, 1 is RecordCallWithMethodType(), 2 is the generated recorder, and 3 is the user's test.
 	origin := callerInfo(3)
-	actions := []func([]interface{}) []interface{}{func([]interface{}) []interface{} {
+	actions := []func([]any) []any{func([]any) []any {
 		// Synthesize the zero value for each of the return args' types.
-		rets := make([]interface{}, methodType.NumOut())
+		rets := make([]any, methodType.NumOut())
 		for i := 0; i < methodType.NumOut(); i++ {
 			rets[i] = reflect.Zero(methodType.Out(i)).Interface()
 		}
 		return rets
 	}}
-	return &Call{t: t, receiver: receiver, method: method, methodType: methodType,
-		args: mArgs, origin: origin, minCalls: 1, maxCalls: 1, actions: actions}
+	return &Call{
+		t: t, receiver: receiver, method: method, methodType: methodType,
+		args: mArgs, origin: origin, minCalls: 1, maxCalls: 1, actions: actions,
+	}
 }
 
 // AnyTimes allows the expectation to be called 0 or more times
@@ -107,20 +109,26 @@
 
 // DoAndReturn declares the action to run when the call is matched.
 // The return values from this function are returned by the mocked function.
-// It takes an interface{} argument to support n-arity functions.
-func (c *Call) DoAndReturn(f interface{}) *Call {
+// It takes an any argument to support n-arity functions.
+// The anonymous function must match the function signature mocked method.
+func (c *Call) DoAndReturn(f any) *Call {
 	// TODO: Check arity and types here, rather than dying badly elsewhere.
 	v := reflect.ValueOf(f)
 
-	c.addAction(func(args []interface{}) []interface{} {
+	c.addAction(func(args []any) []any {
 		c.t.Helper()
-		vArgs := make([]reflect.Value, len(args))
 		ft := v.Type()
 		if c.methodType.NumIn() != ft.NumIn() {
-			c.t.Fatalf("wrong number of arguments in DoAndReturn func for %T.%v: got %d, want %d [%s]",
-				c.receiver, c.method, ft.NumIn(), c.methodType.NumIn(), c.origin)
+			if ft.IsVariadic() {
+				c.t.Fatalf("wrong number of arguments in DoAndReturn func for %T.%v The function signature must match the mocked method, a variadic function cannot be used.",
+					c.receiver, c.method)
+			} else {
+				c.t.Fatalf("wrong number of arguments in DoAndReturn func for %T.%v: got %d, want %d [%s]",
+					c.receiver, c.method, ft.NumIn(), c.methodType.NumIn(), c.origin)
+			}
 			return nil
 		}
+		vArgs := make([]reflect.Value, len(args))
 		for i := 0; i < len(args); i++ {
 			if args[i] != nil {
 				vArgs[i] = reflect.ValueOf(args[i])
@@ -130,7 +138,7 @@
 			}
 		}
 		vRets := v.Call(vArgs)
-		rets := make([]interface{}, len(vRets))
+		rets := make([]any, len(vRets))
 		for i, ret := range vRets {
 			rets[i] = ret.Interface()
 		}
@@ -142,20 +150,26 @@
 // Do declares the action to run when the call is matched. The function's
 // return values are ignored to retain backward compatibility. To use the
 // return values call DoAndReturn.
-// It takes an interface{} argument to support n-arity functions.
-func (c *Call) Do(f interface{}) *Call {
+// It takes an any argument to support n-arity functions.
+// The anonymous function must match the function signature mocked method.
+func (c *Call) Do(f any) *Call {
 	// TODO: Check arity and types here, rather than dying badly elsewhere.
 	v := reflect.ValueOf(f)
 
-	c.addAction(func(args []interface{}) []interface{} {
+	c.addAction(func(args []any) []any {
 		c.t.Helper()
-		if c.methodType.NumIn() != v.Type().NumIn() {
-			c.t.Fatalf("wrong number of arguments in Do func for %T.%v: got %d, want %d [%s]",
-				c.receiver, c.method, v.Type().NumIn(), c.methodType.NumIn(), c.origin)
+		ft := v.Type()
+		if c.methodType.NumIn() != ft.NumIn() {
+			if ft.IsVariadic() {
+				c.t.Fatalf("wrong number of arguments in Do func for %T.%v The function signature must match the mocked method, a variadic function cannot be used.",
+					c.receiver, c.method)
+			} else {
+				c.t.Fatalf("wrong number of arguments in Do func for %T.%v: got %d, want %d [%s]",
+					c.receiver, c.method, ft.NumIn(), c.methodType.NumIn(), c.origin)
+			}
 			return nil
 		}
 		vArgs := make([]reflect.Value, len(args))
-		ft := v.Type()
 		for i := 0; i < len(args); i++ {
 			if args[i] != nil {
 				vArgs[i] = reflect.ValueOf(args[i])
@@ -171,7 +185,7 @@
 }
 
 // Return declares the values to be returned by the mocked function call.
-func (c *Call) Return(rets ...interface{}) *Call {
+func (c *Call) Return(rets ...any) *Call {
 	c.t.Helper()
 
 	mt := c.methodType
@@ -203,7 +217,7 @@
 		}
 	}
 
-	c.addAction(func([]interface{}) []interface{} {
+	c.addAction(func([]any) []any {
 		return rets
 	})
 
@@ -217,9 +231,9 @@
 }
 
 // SetArg declares an action that will set the nth argument's value,
-// indirected through a pointer. Or, in the case of a slice, SetArg
-// will copy value's elements into the nth argument.
-func (c *Call) SetArg(n int, value interface{}) *Call {
+// indirected through a pointer. Or, in the case of a slice and map, SetArg
+// will copy value's elements/key-value pairs into the nth argument.
+func (c *Call) SetArg(n int, value any) *Call {
 	c.t.Helper()
 
 	mt := c.methodType
@@ -239,20 +253,20 @@
 			c.t.Fatalf("SetArg(%d, ...) argument is a %v, not assignable to %v [%s]",
 				n, vt, dt, c.origin)
 		}
-	case reflect.Interface:
-		// nothing to do
-	case reflect.Slice:
+	case reflect.Interface, reflect.Slice, reflect.Map:
 		// nothing to do
 	default:
-		c.t.Fatalf("SetArg(%d, ...) referring to argument of non-pointer non-interface non-slice type %v [%s]",
+		c.t.Fatalf("SetArg(%d, ...) referring to argument of non-pointer non-interface non-slice non-map type %v [%s]",
 			n, at, c.origin)
 	}
 
-	c.addAction(func(args []interface{}) []interface{} {
+	c.addAction(func(args []any) []any {
 		v := reflect.ValueOf(value)
 		switch reflect.TypeOf(args[n]).Kind() {
 		case reflect.Slice:
 			setSlice(args[n], v)
+		case reflect.Map:
+			setMap(args[n], v)
 		default:
 			reflect.ValueOf(args[n]).Elem().Set(v)
 		}
@@ -307,7 +321,7 @@
 
 // Tests if the given call matches the expected call.
 // If yes, returns nil. If no, returns error with message explaining why it does not match.
-func (c *Call) matches(args []interface{}) error {
+func (c *Call) matches(args []any) error {
 	if !c.methodType.IsVariadic() {
 		if len(args) != len(c.args) {
 			return fmt.Errorf("expected call at %s has the wrong number of arguments. Got: %d, want: %d",
@@ -413,30 +427,77 @@
 	return
 }
 
-func (c *Call) call() []func([]interface{}) []interface{} {
+func (c *Call) call() []func([]any) []any {
 	c.numCalls++
 	return c.actions
 }
 
 // InOrder declares that the given calls should occur in order.
-func InOrder(calls ...*Call) {
+// It panics if the type of any of the arguments isn't *Call or a generated
+// mock with an embedded *Call.
+func InOrder(args ...any) {
+	calls := make([]*Call, 0, len(args))
+	for i := 0; i < len(args); i++ {
+		if call := getCall(args[i]); call != nil {
+			calls = append(calls, call)
+			continue
+		}
+		panic(fmt.Sprintf(
+			"invalid argument at position %d of type %T, InOrder expects *gomock.Call or generated mock types with an embedded *gomock.Call",
+			i,
+			args[i],
+		))
+	}
 	for i := 1; i < len(calls); i++ {
 		calls[i].After(calls[i-1])
 	}
 }
 
-func setSlice(arg interface{}, v reflect.Value) {
+// getCall checks if the parameter is a *Call or a generated struct
+// that wraps a *Call and returns the *Call pointer - if neither, it returns nil.
+func getCall(arg any) *Call {
+	if call, ok := arg.(*Call); ok {
+		return call
+	}
+	t := reflect.ValueOf(arg)
+	if t.Kind() != reflect.Ptr && t.Kind() != reflect.Interface {
+		return nil
+	}
+	t = t.Elem()
+	for i := 0; i < t.NumField(); i++ {
+		f := t.Field(i)
+		if !f.CanInterface() {
+			continue
+		}
+		if call, ok := f.Interface().(*Call); ok {
+			return call
+		}
+	}
+	return nil
+}
+
+func setSlice(arg any, v reflect.Value) {
 	va := reflect.ValueOf(arg)
 	for i := 0; i < v.Len(); i++ {
 		va.Index(i).Set(v.Index(i))
 	}
 }
 
-func (c *Call) addAction(action func([]interface{}) []interface{}) {
+func setMap(arg any, v reflect.Value) {
+	va := reflect.ValueOf(arg)
+	for _, e := range va.MapKeys() {
+		va.SetMapIndex(e, reflect.Value{})
+	}
+	for _, e := range v.MapKeys() {
+		va.SetMapIndex(e, v.MapIndex(e))
+	}
+}
+
+func (c *Call) addAction(action func([]any) []any) {
 	c.actions = append(c.actions, action)
 }
 
-func formatGottenArg(m Matcher, arg interface{}) string {
+func formatGottenArg(m Matcher, arg any) string {
 	got := fmt.Sprintf("%v (%T)", arg, arg)
 	if gs, ok := m.(GotFormatter); ok {
 		got = gs.Got(arg)
diff --git a/vendor/github.com/golang/mock/gomock/callset.go b/vendor/go.uber.org/mock/gomock/callset.go
similarity index 70%
rename from vendor/github.com/golang/mock/gomock/callset.go
rename to vendor/go.uber.org/mock/gomock/callset.go
index 49dba78..f5cc592 100644
--- a/vendor/github.com/golang/mock/gomock/callset.go
+++ b/vendor/go.uber.org/mock/gomock/callset.go
@@ -18,40 +18,69 @@
 	"bytes"
 	"errors"
 	"fmt"
+	"sync"
 )
 
 // callSet represents a set of expected calls, indexed by receiver and method
 // name.
 type callSet struct {
 	// Calls that are still expected.
-	expected map[callSetKey][]*Call
+	expected   map[callSetKey][]*Call
+	expectedMu *sync.Mutex
 	// Calls that have been exhausted.
 	exhausted map[callSetKey][]*Call
+	// when set to true, existing call expectations are overridden when new call expectations are made
+	allowOverride bool
 }
 
 // callSetKey is the key in the maps in callSet
 type callSetKey struct {
-	receiver interface{}
+	receiver any
 	fname    string
 }
 
 func newCallSet() *callSet {
-	return &callSet{make(map[callSetKey][]*Call), make(map[callSetKey][]*Call)}
+	return &callSet{
+		expected:   make(map[callSetKey][]*Call),
+		expectedMu: &sync.Mutex{},
+		exhausted:  make(map[callSetKey][]*Call),
+	}
+}
+
+func newOverridableCallSet() *callSet {
+	return &callSet{
+		expected:      make(map[callSetKey][]*Call),
+		expectedMu:    &sync.Mutex{},
+		exhausted:     make(map[callSetKey][]*Call),
+		allowOverride: true,
+	}
 }
 
 // Add adds a new expected call.
 func (cs callSet) Add(call *Call) {
 	key := callSetKey{call.receiver, call.method}
+
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
 	m := cs.expected
 	if call.exhausted() {
 		m = cs.exhausted
 	}
+	if cs.allowOverride {
+		m[key] = make([]*Call, 0)
+	}
+
 	m[key] = append(m[key], call)
 }
 
 // Remove removes an expected call.
 func (cs callSet) Remove(call *Call) {
 	key := callSetKey{call.receiver, call.method}
+
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
 	calls := cs.expected[key]
 	for i, c := range calls {
 		if c == call {
@@ -64,9 +93,12 @@
 }
 
 // FindMatch searches for a matching call. Returns error with explanation message if no call matched.
-func (cs callSet) FindMatch(receiver interface{}, method string, args []interface{}) (*Call, error) {
+func (cs callSet) FindMatch(receiver any, method string, args []any) (*Call, error) {
 	key := callSetKey{receiver, method}
 
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
 	// Search through the expected calls.
 	expected := cs.expected[key]
 	var callsErrors bytes.Buffer
@@ -101,6 +133,9 @@
 
 // Failures returns the calls that are not satisfied.
 func (cs callSet) Failures() []*Call {
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
 	failures := make([]*Call, 0, len(cs.expected))
 	for _, calls := range cs.expected {
 		for _, call := range calls {
@@ -111,3 +146,19 @@
 	}
 	return failures
 }
+
+// Satisfied returns true in case all expected calls in this callSet are satisfied.
+func (cs callSet) Satisfied() bool {
+	cs.expectedMu.Lock()
+	defer cs.expectedMu.Unlock()
+
+	for _, calls := range cs.expected {
+		for _, call := range calls {
+			if !call.satisfied() {
+				return false
+			}
+		}
+	}
+
+	return true
+}
diff --git a/vendor/github.com/golang/mock/gomock/controller.go b/vendor/go.uber.org/mock/gomock/controller.go
similarity index 65%
rename from vendor/github.com/golang/mock/gomock/controller.go
rename to vendor/go.uber.org/mock/gomock/controller.go
index f054200..674c329 100644
--- a/vendor/github.com/golang/mock/gomock/controller.go
+++ b/vendor/go.uber.org/mock/gomock/controller.go
@@ -12,44 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// Package gomock is a mock framework for Go.
-//
-// Standard usage:
-//   (1) Define an interface that you wish to mock.
-//         type MyInterface interface {
-//           SomeMethod(x int64, y string)
-//         }
-//   (2) Use mockgen to generate a mock from the interface.
-//   (3) Use the mock in a test:
-//         func TestMyThing(t *testing.T) {
-//           mockCtrl := gomock.NewController(t)
-//           defer mockCtrl.Finish()
-//
-//           mockObj := something.NewMockMyInterface(mockCtrl)
-//           mockObj.EXPECT().SomeMethod(4, "blah")
-//           // pass mockObj to a real object and play with it.
-//         }
-//
-// By default, expected calls are not enforced to run in any particular order.
-// Call order dependency can be enforced by use of InOrder and/or Call.After.
-// Call.After can create more varied call order dependencies, but InOrder is
-// often more convenient.
-//
-// The following examples create equivalent call order dependencies.
-//
-// Example of using Call.After to chain expected call order:
-//
-//     firstCall := mockObj.EXPECT().SomeMethod(1, "first")
-//     secondCall := mockObj.EXPECT().SomeMethod(2, "second").After(firstCall)
-//     mockObj.EXPECT().SomeMethod(3, "third").After(secondCall)
-//
-// Example of using InOrder to declare expected call order:
-//
-//     gomock.InOrder(
-//         mockObj.EXPECT().SomeMethod(1, "first"),
-//         mockObj.EXPECT().SomeMethod(2, "second"),
-//         mockObj.EXPECT().SomeMethod(3, "third"),
-//     )
 package gomock
 
 import (
@@ -63,8 +25,8 @@
 // A TestReporter is something that can be used to report test failures.  It
 // is satisfied by the standard library's *testing.T.
 type TestReporter interface {
-	Errorf(format string, args ...interface{})
-	Fatalf(format string, args ...interface{})
+	Errorf(format string, args ...any)
+	Fatalf(format string, args ...any)
 }
 
 // TestHelper is a TestReporter that has the Helper method.  It is satisfied
@@ -86,27 +48,23 @@
 // A Controller represents the top-level control of a mock ecosystem.  It
 // defines the scope and lifetime of mock objects, as well as their
 // expectations.  It is safe to call Controller's methods from multiple
-// goroutines. Each test should create a new Controller and invoke Finish via
-// defer.
+// goroutines. Each test should create a new Controller.
 //
-//   func TestFoo(t *testing.T) {
-//     ctrl := gomock.NewController(t)
-//     defer ctrl.Finish()
-//     // ..
-//   }
+//	func TestFoo(t *testing.T) {
+//	  ctrl := gomock.NewController(t)
+//	  // ..
+//	}
 //
-//   func TestBar(t *testing.T) {
-//     t.Run("Sub-Test-1", st) {
-//       ctrl := gomock.NewController(st)
-//       defer ctrl.Finish()
-//       // ..
-//     })
-//     t.Run("Sub-Test-2", st) {
-//       ctrl := gomock.NewController(st)
-//       defer ctrl.Finish()
-//       // ..
-//     })
-//   })
+//	func TestBar(t *testing.T) {
+//	  t.Run("Sub-Test-1", st) {
+//	    ctrl := gomock.NewController(st)
+//	    // ..
+//	  })
+//	  t.Run("Sub-Test-2", st) {
+//	    ctrl := gomock.NewController(st)
+//	    // ..
+//	  })
+//	})
 type Controller struct {
 	// T should only be called within a generated mock. It is not intended to
 	// be used in user code and may be changed in future versions. T is the
@@ -119,12 +77,11 @@
 	finished      bool
 }
 
-// NewController returns a new Controller. It is the preferred way to create a
-// Controller.
+// NewController returns a new Controller. It is the preferred way to create a Controller.
 //
-// New in go1.14+, if you are passing a *testing.T into this function you no
-// longer need to call ctrl.Finish() in your test methods.
-func NewController(t TestReporter) *Controller {
+// Passing [*testing.T] registers cleanup function to automatically call [Controller.Finish]
+// when the test and all its subtests complete.
+func NewController(t TestReporter, opts ...ControllerOption) *Controller {
 	h, ok := t.(TestHelper)
 	if !ok {
 		h = &nopTestHelper{t}
@@ -133,6 +90,9 @@
 		T:             h,
 		expectedCalls: newCallSet(),
 	}
+	for _, opt := range opts {
+		opt.apply(ctrl)
+	}
 	if c, ok := isCleanuper(ctrl.T); ok {
 		c.Cleanup(func() {
 			ctrl.T.Helper()
@@ -143,15 +103,33 @@
 	return ctrl
 }
 
+// ControllerOption configures how a Controller should behave.
+type ControllerOption interface {
+	apply(*Controller)
+}
+
+type overridableExpectationsOption struct{}
+
+// WithOverridableExpectations allows for overridable call expectations
+// i.e., subsequent call expectations override existing call expectations
+func WithOverridableExpectations() overridableExpectationsOption {
+	return overridableExpectationsOption{}
+}
+
+func (o overridableExpectationsOption) apply(ctrl *Controller) {
+	ctrl.expectedCalls = newOverridableCallSet()
+}
+
 type cancelReporter struct {
 	t      TestHelper
 	cancel func()
 }
 
-func (r *cancelReporter) Errorf(format string, args ...interface{}) {
+func (r *cancelReporter) Errorf(format string, args ...any) {
 	r.t.Errorf(format, args...)
 }
-func (r *cancelReporter) Fatalf(format string, args ...interface{}) {
+
+func (r *cancelReporter) Fatalf(format string, args ...any) {
 	defer r.cancel()
 	r.t.Fatalf(format, args...)
 }
@@ -176,17 +154,18 @@
 	t TestReporter
 }
 
-func (h *nopTestHelper) Errorf(format string, args ...interface{}) {
+func (h *nopTestHelper) Errorf(format string, args ...any) {
 	h.t.Errorf(format, args...)
 }
-func (h *nopTestHelper) Fatalf(format string, args ...interface{}) {
+
+func (h *nopTestHelper) Fatalf(format string, args ...any) {
 	h.t.Fatalf(format, args...)
 }
 
 func (h nopTestHelper) Helper() {}
 
 // RecordCall is called by a mock. It should not be called by user code.
-func (ctrl *Controller) RecordCall(receiver interface{}, method string, args ...interface{}) *Call {
+func (ctrl *Controller) RecordCall(receiver any, method string, args ...any) *Call {
 	ctrl.T.Helper()
 
 	recv := reflect.ValueOf(receiver)
@@ -200,7 +179,7 @@
 }
 
 // RecordCallWithMethodType is called by a mock. It should not be called by user code.
-func (ctrl *Controller) RecordCallWithMethodType(receiver interface{}, method string, methodType reflect.Type, args ...interface{}) *Call {
+func (ctrl *Controller) RecordCallWithMethodType(receiver any, method string, methodType reflect.Type, args ...any) *Call {
 	ctrl.T.Helper()
 
 	call := newCall(ctrl.T, receiver, method, methodType, args...)
@@ -213,11 +192,11 @@
 }
 
 // Call is called by a mock. It should not be called by user code.
-func (ctrl *Controller) Call(receiver interface{}, method string, args ...interface{}) []interface{} {
+func (ctrl *Controller) Call(receiver any, method string, args ...any) []any {
 	ctrl.T.Helper()
 
 	// Nest this code so we can use defer to make sure the lock is released.
-	actions := func() []func([]interface{}) []interface{} {
+	actions := func() []func([]any) []any {
 		ctrl.T.Helper()
 		ctrl.mu.Lock()
 		defer ctrl.mu.Unlock()
@@ -228,12 +207,16 @@
 			// and this line changes, i.e. this code is wrapped in another anonymous function.
 			// 0 is us, 1 is controller.Call(), 2 is the generated mock, and 3 is the user's test.
 			origin := callerInfo(3)
-			ctrl.T.Fatalf("Unexpected call to %T.%v(%v) at %s because: %s", receiver, method, args, origin, err)
+			stringArgs := make([]string, len(args))
+			for i, arg := range args {
+				stringArgs[i] = getString(arg)
+			}
+			ctrl.T.Fatalf("Unexpected call to %T.%v(%v) at %s because: %s", receiver, method, stringArgs, origin, err)
 		}
 
 		// Two things happen here:
-		// * the matching call no longer needs to check prerequite calls,
-		// * and the prerequite calls are no longer expected, so remove them.
+		// * the matching call no longer needs to check prerequisite calls,
+		// * and the prerequisite calls are no longer expected, so remove them.
 		preReqCalls := expected.dropPrereqs()
 		for _, preReqCall := range preReqCalls {
 			ctrl.expectedCalls.Remove(preReqCall)
@@ -246,7 +229,7 @@
 		return actions
 	}()
 
-	var rets []interface{}
+	var rets []any
 	for _, action := range actions {
 		if r := action(args); r != nil {
 			rets = r
@@ -256,12 +239,11 @@
 	return rets
 }
 
-// Finish checks to see if all the methods that were expected to be called
-// were called. It should be invoked for each Controller. It is not idempotent
-// and therefore can only be invoked once.
+// Finish checks to see if all the methods that were expected to be called were called.
+// It is not idempotent and therefore can only be invoked once.
 //
-// New in go1.14+, if you are passing a *testing.T into NewController function you no
-// longer need to call ctrl.Finish() in your test methods.
+// Note: If you pass a *testing.T into [NewController], you no longer
+// need to call ctrl.Finish() in your test methods.
 func (ctrl *Controller) Finish() {
 	// If we're currently panicking, probably because this is a deferred call.
 	// This must be recovered in the deferred function.
@@ -269,7 +251,15 @@
 	ctrl.finish(false, err)
 }
 
-func (ctrl *Controller) finish(cleanup bool, panicErr interface{}) {
+// Satisfied returns whether all expected calls bound to this Controller have been satisfied.
+// Calling Finish is then guaranteed to not fail due to missing calls.
+func (ctrl *Controller) Satisfied() bool {
+	ctrl.mu.Lock()
+	defer ctrl.mu.Unlock()
+	return ctrl.expectedCalls.Satisfied()
+}
+
+func (ctrl *Controller) finish(cleanup bool, panicErr any) {
 	ctrl.T.Helper()
 
 	ctrl.mu.Lock()
diff --git a/vendor/go.uber.org/mock/gomock/doc.go b/vendor/go.uber.org/mock/gomock/doc.go
new file mode 100644
index 0000000..696dda3
--- /dev/null
+++ b/vendor/go.uber.org/mock/gomock/doc.go
@@ -0,0 +1,60 @@
+// Copyright 2022 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Package gomock is a mock framework for Go.
+//
+// Standard usage:
+//
+//	(1) Define an interface that you wish to mock.
+//	      type MyInterface interface {
+//	        SomeMethod(x int64, y string)
+//	      }
+//	(2) Use mockgen to generate a mock from the interface.
+//	(3) Use the mock in a test:
+//	      func TestMyThing(t *testing.T) {
+//	        mockCtrl := gomock.NewController(t)
+//	        mockObj := something.NewMockMyInterface(mockCtrl)
+//	        mockObj.EXPECT().SomeMethod(4, "blah")
+//	        // pass mockObj to a real object and play with it.
+//	      }
+//
+// By default, expected calls are not enforced to run in any particular order.
+// Call order dependency can be enforced by use of InOrder and/or Call.After.
+// Call.After can create more varied call order dependencies, but InOrder is
+// often more convenient.
+//
+// The following examples create equivalent call order dependencies.
+//
+// Example of using Call.After to chain expected call order:
+//
+//	firstCall := mockObj.EXPECT().SomeMethod(1, "first")
+//	secondCall := mockObj.EXPECT().SomeMethod(2, "second").After(firstCall)
+//	mockObj.EXPECT().SomeMethod(3, "third").After(secondCall)
+//
+// Example of using InOrder to declare expected call order:
+//
+//	gomock.InOrder(
+//	    mockObj.EXPECT().SomeMethod(1, "first"),
+//	    mockObj.EXPECT().SomeMethod(2, "second"),
+//	    mockObj.EXPECT().SomeMethod(3, "third"),
+//	)
+//
+// The standard TestReporter most users will pass to `NewController` is a
+// `*testing.T` from the context of the test. Note that this will use the
+// standard `t.Error` and `t.Fatal` methods to report what happened in the test.
+// In some cases this can leave your testing package in a weird state if global
+// state is used since `t.Fatal` is like calling panic in the middle of a
+// function. In these cases it is recommended that you pass in your own
+// `TestReporter`.
+package gomock
diff --git a/vendor/github.com/golang/mock/gomock/matchers.go b/vendor/go.uber.org/mock/gomock/matchers.go
similarity index 62%
rename from vendor/github.com/golang/mock/gomock/matchers.go
rename to vendor/go.uber.org/mock/gomock/matchers.go
index 2822fb2..d52495f 100644
--- a/vendor/github.com/golang/mock/gomock/matchers.go
+++ b/vendor/go.uber.org/mock/gomock/matchers.go
@@ -17,6 +17,7 @@
 import (
 	"fmt"
 	"reflect"
+	"regexp"
 	"strings"
 )
 
@@ -24,7 +25,7 @@
 // It is used to represent the valid or expected arguments to a mocked method.
 type Matcher interface {
 	// Matches returns whether x is a match.
-	Matches(x interface{}) bool
+	Matches(x any) bool
 
 	// String describes what the matcher matches.
 	String() string
@@ -35,7 +36,7 @@
 // printing .
 func WantFormatter(s fmt.Stringer, m Matcher) Matcher {
 	type matcher interface {
-		Matches(x interface{}) bool
+		Matches(x any) bool
 	}
 
 	return struct {
@@ -63,16 +64,16 @@
 type GotFormatter interface {
 	// Got is invoked with the received value. The result is used when
 	// printing the failure message.
-	Got(got interface{}) string
+	Got(got any) string
 }
 
 // GotFormatterFunc type is an adapter to allow the use of ordinary
 // functions as a GotFormatter. If f is a function with the appropriate
 // signature, GotFormatterFunc(f) is a GotFormatter that calls f.
-type GotFormatterFunc func(got interface{}) string
+type GotFormatterFunc func(got any) string
 
 // Got implements GotFormatter.
-func (f GotFormatterFunc) Got(got interface{}) string {
+func (f GotFormatterFunc) Got(got any) string {
 	return f(got)
 }
 
@@ -89,7 +90,7 @@
 
 type anyMatcher struct{}
 
-func (anyMatcher) Matches(interface{}) bool {
+func (anyMatcher) Matches(any) bool {
 	return true
 }
 
@@ -97,11 +98,27 @@
 	return "is anything"
 }
 
-type eqMatcher struct {
-	x interface{}
+type condMatcher[T any] struct {
+	fn func(x T) bool
 }
 
-func (e eqMatcher) Matches(x interface{}) bool {
+func (c condMatcher[T]) Matches(x any) bool {
+	typed, ok := x.(T)
+	if !ok {
+		return false
+	}
+	return c.fn(typed)
+}
+
+func (c condMatcher[T]) String() string {
+	return "adheres to a custom condition"
+}
+
+type eqMatcher struct {
+	x any
+}
+
+func (e eqMatcher) Matches(x any) bool {
 	// In case, some value is nil
 	if e.x == nil || x == nil {
 		return reflect.DeepEqual(e.x, x)
@@ -120,12 +137,12 @@
 }
 
 func (e eqMatcher) String() string {
-	return fmt.Sprintf("is equal to %v (%T)", e.x, e.x)
+	return fmt.Sprintf("is equal to %s (%T)", getString(e.x), e.x)
 }
 
 type nilMatcher struct{}
 
-func (nilMatcher) Matches(x interface{}) bool {
+func (nilMatcher) Matches(x any) bool {
 	if x == nil {
 		return true
 	}
@@ -148,7 +165,7 @@
 	m Matcher
 }
 
-func (n notMatcher) Matches(x interface{}) bool {
+func (n notMatcher) Matches(x any) bool {
 	return !n.m.Matches(x)
 }
 
@@ -156,11 +173,30 @@
 	return "not(" + n.m.String() + ")"
 }
 
+type regexMatcher struct {
+	regex *regexp.Regexp
+}
+
+func (m regexMatcher) Matches(x any) bool {
+	switch t := x.(type) {
+	case string:
+		return m.regex.MatchString(t)
+	case []byte:
+		return m.regex.Match(t)
+	default:
+		return false
+	}
+}
+
+func (m regexMatcher) String() string {
+	return "matches regex " + m.regex.String()
+}
+
 type assignableToTypeOfMatcher struct {
 	targetType reflect.Type
 }
 
-func (m assignableToTypeOfMatcher) Matches(x interface{}) bool {
+func (m assignableToTypeOfMatcher) Matches(x any) bool {
 	return reflect.TypeOf(x).AssignableTo(m.targetType)
 }
 
@@ -168,11 +204,32 @@
 	return "is assignable to " + m.targetType.Name()
 }
 
+type anyOfMatcher struct {
+	matchers []Matcher
+}
+
+func (am anyOfMatcher) Matches(x any) bool {
+	for _, m := range am.matchers {
+		if m.Matches(x) {
+			return true
+		}
+	}
+	return false
+}
+
+func (am anyOfMatcher) String() string {
+	ss := make([]string, 0, len(am.matchers))
+	for _, matcher := range am.matchers {
+		ss = append(ss, matcher.String())
+	}
+	return strings.Join(ss, " | ")
+}
+
 type allMatcher struct {
 	matchers []Matcher
 }
 
-func (am allMatcher) Matches(x interface{}) bool {
+func (am allMatcher) Matches(x any) bool {
 	for _, m := range am.matchers {
 		if !m.Matches(x) {
 			return false
@@ -193,7 +250,7 @@
 	i int
 }
 
-func (m lenMatcher) Matches(x interface{}) bool {
+func (m lenMatcher) Matches(x any) bool {
 	v := reflect.ValueOf(x)
 	switch v.Kind() {
 	case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice, reflect.String:
@@ -208,10 +265,10 @@
 }
 
 type inAnyOrderMatcher struct {
-	x interface{}
+	x any
 }
 
-func (m inAnyOrderMatcher) Matches(x interface{}) bool {
+func (m inAnyOrderMatcher) Matches(x any) bool {
 	given, ok := m.prepareValue(x)
 	if !ok {
 		return false
@@ -257,7 +314,7 @@
 	return extraInGiven == 0 && missingFromWanted == 0
 }
 
-func (m inAnyOrderMatcher) prepareValue(x interface{}) (reflect.Value, bool) {
+func (m inAnyOrderMatcher) prepareValue(x any) (reflect.Value, bool) {
 	xValue := reflect.ValueOf(x)
 	switch xValue.Kind() {
 	case reflect.Slice, reflect.Array:
@@ -280,12 +337,45 @@
 // Any returns a matcher that always matches.
 func Any() Matcher { return anyMatcher{} }
 
+// Cond returns a matcher that matches when the given function returns true
+// after passing it the parameter to the mock function.
+// This is particularly useful in case you want to match over a field of a custom struct, or dynamic logic.
+//
+// Example usage:
+//
+//	Cond(func(x int){return x == 1}).Matches(1) // returns true
+//	Cond(func(x int){return x == 2}).Matches(1) // returns false
+func Cond[T any](fn func(x T) bool) Matcher { return condMatcher[T]{fn} }
+
+// AnyOf returns a composite Matcher that returns true if at least one of the
+// matchers returns true.
+//
+// Example usage:
+//
+//	AnyOf(1, 2, 3).Matches(2) // returns true
+//	AnyOf(1, 2, 3).Matches(10) // returns false
+//	AnyOf(Nil(), Len(2)).Matches(nil) // returns true
+//	AnyOf(Nil(), Len(2)).Matches("hi") // returns true
+//	AnyOf(Nil(), Len(2)).Matches("hello") // returns false
+func AnyOf(xs ...any) Matcher {
+	ms := make([]Matcher, 0, len(xs))
+	for _, x := range xs {
+		if m, ok := x.(Matcher); ok {
+			ms = append(ms, m)
+		} else {
+			ms = append(ms, Eq(x))
+		}
+	}
+	return anyOfMatcher{ms}
+}
+
 // Eq returns a matcher that matches on equality.
 //
 // Example usage:
-//   Eq(5).Matches(5) // returns true
-//   Eq(5).Matches(4) // returns false
-func Eq(x interface{}) Matcher { return eqMatcher{x} }
+//
+//	Eq(5).Matches(5) // returns true
+//	Eq(5).Matches(4) // returns false
+func Eq(x any) Matcher { return eqMatcher{x} }
 
 // Len returns a matcher that matches on length. This matcher returns false if
 // is compared to a type that is not an array, chan, map, slice, or string.
@@ -296,35 +386,50 @@
 // Nil returns a matcher that matches if the received value is nil.
 //
 // Example usage:
-//   var x *bytes.Buffer
-//   Nil().Matches(x) // returns true
-//   x = &bytes.Buffer{}
-//   Nil().Matches(x) // returns false
+//
+//	var x *bytes.Buffer
+//	Nil().Matches(x) // returns true
+//	x = &bytes.Buffer{}
+//	Nil().Matches(x) // returns false
 func Nil() Matcher { return nilMatcher{} }
 
 // Not reverses the results of its given child matcher.
 //
 // Example usage:
-//   Not(Eq(5)).Matches(4) // returns true
-//   Not(Eq(5)).Matches(5) // returns false
-func Not(x interface{}) Matcher {
+//
+//	Not(Eq(5)).Matches(4) // returns true
+//	Not(Eq(5)).Matches(5) // returns false
+func Not(x any) Matcher {
 	if m, ok := x.(Matcher); ok {
 		return notMatcher{m}
 	}
 	return notMatcher{Eq(x)}
 }
 
+// Regex checks whether parameter matches the associated regex.
+//
+// Example usage:
+//
+//	Regex("[0-9]{2}:[0-9]{2}").Matches("23:02") // returns true
+//	Regex("[0-9]{2}:[0-9]{2}").Matches([]byte{'2', '3', ':', '0', '2'}) // returns true
+//	Regex("[0-9]{2}:[0-9]{2}").Matches("hello world") // returns false
+//	Regex("[0-9]{2}").Matches(21) // returns false as it's not a valid type
+func Regex(regexStr string) Matcher {
+	return regexMatcher{regex: regexp.MustCompile(regexStr)}
+}
+
 // AssignableToTypeOf is a Matcher that matches if the parameter to the mock
 // function is assignable to the type of the parameter to this function.
 //
 // Example usage:
-//   var s fmt.Stringer = &bytes.Buffer{}
-//   AssignableToTypeOf(s).Matches(time.Second) // returns true
-//   AssignableToTypeOf(s).Matches(99) // returns false
 //
-//   var ctx = reflect.TypeOf((*context.Context)(nil)).Elem()
-//   AssignableToTypeOf(ctx).Matches(context.Background()) // returns true
-func AssignableToTypeOf(x interface{}) Matcher {
+//	var s fmt.Stringer = &bytes.Buffer{}
+//	AssignableToTypeOf(s).Matches(time.Second) // returns true
+//	AssignableToTypeOf(s).Matches(99) // returns false
+//
+//	var ctx = reflect.TypeOf((*context.Context)(nil)).Elem()
+//	AssignableToTypeOf(ctx).Matches(context.Background()) // returns true
+func AssignableToTypeOf(x any) Matcher {
 	if xt, ok := x.(reflect.Type); ok {
 		return assignableToTypeOfMatcher{xt}
 	}
@@ -334,8 +439,9 @@
 // InAnyOrder is a Matcher that returns true for collections of the same elements ignoring the order.
 //
 // Example usage:
-//   InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 3, 2}) // returns true
-//   InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 2}) // returns false
-func InAnyOrder(x interface{}) Matcher {
+//
+//	InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 3, 2}) // returns true
+//	InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 2}) // returns false
+func InAnyOrder(x any) Matcher {
 	return inAnyOrderMatcher{x}
 }
diff --git a/vendor/go.uber.org/mock/gomock/string.go b/vendor/go.uber.org/mock/gomock/string.go
new file mode 100644
index 0000000..ec4ca7e
--- /dev/null
+++ b/vendor/go.uber.org/mock/gomock/string.go
@@ -0,0 +1,36 @@
+package gomock
+
+import (
+	"fmt"
+	"reflect"
+)
+
+// getString is a safe way to convert a value to a string for printing results
+// If the value is a a mock, getString avoids calling the mocked String() method,
+// which avoids potential deadlocks
+func getString(x any) string {
+	if isGeneratedMock(x) {
+		return fmt.Sprintf("%T", x)
+	}
+	if s, ok := x.(fmt.Stringer); ok {
+		return s.String()
+	}
+	return fmt.Sprintf("%v", x)
+}
+
+// isGeneratedMock checks if the given type has a "isgomock" field,
+// indicating it is a generated mock.
+func isGeneratedMock(x any) bool {
+	typ := reflect.TypeOf(x)
+	if typ == nil {
+		return false
+	}
+	if typ.Kind() == reflect.Ptr {
+		typ = typ.Elem()
+	}
+	if typ.Kind() != reflect.Struct {
+		return false
+	}
+	_, isgomock := typ.FieldByName("isgomock")
+	return isgomock
+}
diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go
index 93bcaab..a7345a6 100644
--- a/vendor/golang.org/x/net/http2/frame.go
+++ b/vendor/golang.org/x/net/http2/frame.go
@@ -280,6 +280,8 @@
 	// lastHeaderStream is non-zero if the last frame was an
 	// unfinished HEADERS/CONTINUATION.
 	lastHeaderStream uint32
+	// lastFrameType holds the type of the last frame for verifying frame order.
+	lastFrameType FrameType
 
 	maxReadSize uint32
 	headerBuf   [frameHeaderLen]byte
@@ -488,30 +490,41 @@
 	return err != nil
 }
 
-// ReadFrame reads a single frame. The returned Frame is only valid
-// until the next call to ReadFrame.
+// ReadFrameHeader reads the header of the next frame.
+// It reads the 9-byte fixed frame header, and does not read any portion of the
+// frame payload. The caller is responsible for consuming the payload, either
+// with ReadFrameForHeader or directly from the Framer's io.Reader.
 //
-// If the frame is larger than previously set with SetMaxReadFrameSize, the
-// returned error is ErrFrameTooLarge. Other errors may be of type
-// ConnectionError, StreamError, or anything else from the underlying
-// reader.
+// If the frame is larger than previously set with SetMaxReadFrameSize, it
+// returns the frame header and ErrFrameTooLarge.
 //
-// If ReadFrame returns an error and a non-nil Frame, the Frame's StreamID
-// indicates the stream responsible for the error.
-func (fr *Framer) ReadFrame() (Frame, error) {
+// If the returned FrameHeader.StreamID is non-zero, it indicates the stream
+// responsible for the error.
+func (fr *Framer) ReadFrameHeader() (FrameHeader, error) {
 	fr.errDetail = nil
-	if fr.lastFrame != nil {
-		fr.lastFrame.invalidate()
-	}
 	fh, err := readFrameHeader(fr.headerBuf[:], fr.r)
 	if err != nil {
-		return nil, err
+		return fh, err
 	}
 	if fh.Length > fr.maxReadSize {
 		if fh == invalidHTTP1LookingFrameHeader() {
-			return nil, fmt.Errorf("http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header", ErrFrameTooLarge)
+			return fh, fmt.Errorf("http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header", ErrFrameTooLarge)
 		}
-		return nil, ErrFrameTooLarge
+		return fh, ErrFrameTooLarge
+	}
+	if err := fr.checkFrameOrder(fh); err != nil {
+		return fh, err
+	}
+	return fh, nil
+}
+
+// ReadFrameForHeader reads the payload for the frame with the given FrameHeader.
+//
+// It behaves identically to ReadFrame, other than not checking the maximum
+// frame size.
+func (fr *Framer) ReadFrameForHeader(fh FrameHeader) (Frame, error) {
+	if fr.lastFrame != nil {
+		fr.lastFrame.invalidate()
 	}
 	payload := fr.getReadBuf(fh.Length)
 	if _, err := io.ReadFull(fr.r, payload); err != nil {
@@ -527,9 +540,7 @@
 		}
 		return nil, err
 	}
-	if err := fr.checkFrameOrder(f); err != nil {
-		return nil, err
-	}
+	fr.lastFrame = f
 	if fr.logReads {
 		fr.debugReadLoggerf("http2: Framer %p: read %v", fr, summarizeFrame(f))
 	}
@@ -539,6 +550,24 @@
 	return f, nil
 }
 
+// ReadFrame reads a single frame. The returned Frame is only valid
+// until the next call to ReadFrame or ReadFrameBodyForHeader.
+//
+// If the frame is larger than previously set with SetMaxReadFrameSize, the
+// returned error is ErrFrameTooLarge. Other errors may be of type
+// ConnectionError, StreamError, or anything else from the underlying
+// reader.
+//
+// If ReadFrame returns an error and a non-nil Frame, the Frame's StreamID
+// indicates the stream responsible for the error.
+func (fr *Framer) ReadFrame() (Frame, error) {
+	fh, err := fr.ReadFrameHeader()
+	if err != nil {
+		return nil, err
+	}
+	return fr.ReadFrameForHeader(fh)
+}
+
 // connError returns ConnectionError(code) but first
 // stashes away a public reason to the caller can optionally relay it
 // to the peer before hanging up on them. This might help others debug
@@ -551,20 +580,19 @@
 // checkFrameOrder reports an error if f is an invalid frame to return
 // next from ReadFrame. Mostly it checks whether HEADERS and
 // CONTINUATION frames are contiguous.
-func (fr *Framer) checkFrameOrder(f Frame) error {
-	last := fr.lastFrame
-	fr.lastFrame = f
+func (fr *Framer) checkFrameOrder(fh FrameHeader) error {
+	lastType := fr.lastFrameType
+	fr.lastFrameType = fh.Type
 	if fr.AllowIllegalReads {
 		return nil
 	}
 
-	fh := f.Header()
 	if fr.lastHeaderStream != 0 {
 		if fh.Type != FrameContinuation {
 			return fr.connError(ErrCodeProtocol,
 				fmt.Sprintf("got %s for stream %d; expected CONTINUATION following %s for stream %d",
 					fh.Type, fh.StreamID,
-					last.Header().Type, fr.lastHeaderStream))
+					lastType, fr.lastHeaderStream))
 		}
 		if fh.StreamID != fr.lastHeaderStream {
 			return fr.connError(ErrCodeProtocol,
diff --git a/vendor/golang.org/x/net/http2/writesched.go b/vendor/golang.org/x/net/http2/writesched.go
index 4d3890f..7de27be 100644
--- a/vendor/golang.org/x/net/http2/writesched.go
+++ b/vendor/golang.org/x/net/http2/writesched.go
@@ -185,45 +185,75 @@
 }
 
 // writeQueue is used by implementations of WriteScheduler.
+//
+// Each writeQueue contains a queue of FrameWriteRequests, meant to store all
+// FrameWriteRequests associated with a given stream. This is implemented as a
+// two-stage queue: currQueue[currPos:] and nextQueue. Removing an item is done
+// by incrementing currPos of currQueue. Adding an item is done by appending it
+// to the nextQueue. If currQueue is empty when trying to remove an item, we
+// can swap currQueue and nextQueue to remedy the situation.
+// This two-stage queue is analogous to the use of two lists in Okasaki's
+// purely functional queue but without the overhead of reversing the list when
+// swapping stages.
+//
+// writeQueue also contains prev and next, this can be used by implementations
+// of WriteScheduler to construct data structures that represent the order of
+// writing between different streams (e.g. circular linked list).
 type writeQueue struct {
-	s          []FrameWriteRequest
+	currQueue []FrameWriteRequest
+	nextQueue []FrameWriteRequest
+	currPos   int
+
 	prev, next *writeQueue
 }
 
-func (q *writeQueue) empty() bool { return len(q.s) == 0 }
+func (q *writeQueue) empty() bool {
+	return (len(q.currQueue) - q.currPos + len(q.nextQueue)) == 0
+}
 
 func (q *writeQueue) push(wr FrameWriteRequest) {
-	q.s = append(q.s, wr)
+	q.nextQueue = append(q.nextQueue, wr)
 }
 
 func (q *writeQueue) shift() FrameWriteRequest {
-	if len(q.s) == 0 {
+	if q.empty() {
 		panic("invalid use of queue")
 	}
-	wr := q.s[0]
-	// TODO: less copy-happy queue.
-	copy(q.s, q.s[1:])
-	q.s[len(q.s)-1] = FrameWriteRequest{}
-	q.s = q.s[:len(q.s)-1]
+	if q.currPos >= len(q.currQueue) {
+		q.currQueue, q.currPos, q.nextQueue = q.nextQueue, 0, q.currQueue[:0]
+	}
+	wr := q.currQueue[q.currPos]
+	q.currQueue[q.currPos] = FrameWriteRequest{}
+	q.currPos++
 	return wr
 }
 
+func (q *writeQueue) peek() *FrameWriteRequest {
+	if q.currPos < len(q.currQueue) {
+		return &q.currQueue[q.currPos]
+	}
+	if len(q.nextQueue) > 0 {
+		return &q.nextQueue[0]
+	}
+	return nil
+}
+
 // consume consumes up to n bytes from q.s[0]. If the frame is
 // entirely consumed, it is removed from the queue. If the frame
 // is partially consumed, the frame is kept with the consumed
 // bytes removed. Returns true iff any bytes were consumed.
 func (q *writeQueue) consume(n int32) (FrameWriteRequest, bool) {
-	if len(q.s) == 0 {
+	if q.empty() {
 		return FrameWriteRequest{}, false
 	}
-	consumed, rest, numresult := q.s[0].Consume(n)
+	consumed, rest, numresult := q.peek().Consume(n)
 	switch numresult {
 	case 0:
 		return FrameWriteRequest{}, false
 	case 1:
 		q.shift()
 	case 2:
-		q.s[0] = rest
+		*q.peek() = rest
 	}
 	return consumed, true
 }
@@ -232,10 +262,15 @@
 
 // put inserts an unused writeQueue into the pool.
 func (p *writeQueuePool) put(q *writeQueue) {
-	for i := range q.s {
-		q.s[i] = FrameWriteRequest{}
+	for i := range q.currQueue {
+		q.currQueue[i] = FrameWriteRequest{}
 	}
-	q.s = q.s[:0]
+	for i := range q.nextQueue {
+		q.nextQueue[i] = FrameWriteRequest{}
+	}
+	q.currQueue = q.currQueue[:0]
+	q.nextQueue = q.nextQueue[:0]
+	q.currPos = 0
 	*p = append(*p, q)
 }
 
diff --git a/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go b/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go
index 6d24d6a..fb9e260 100644
--- a/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go
+++ b/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go
@@ -302,7 +302,6 @@
 
 	q := n.q
 	ws.queuePool.put(&q)
-	n.q.s = nil
 	if ws.maxClosedNodesInTree > 0 {
 		ws.addClosedOrIdleNode(&ws.closedNodes, ws.maxClosedNodesInTree, n)
 	} else {
diff --git a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go
index b15c10e..b4bc3a2 100644
--- a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go
+++ b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go
@@ -16,55 +16,124 @@
  *
  */
 
-// Package pickfirst contains the pick_first load balancing policy.
+// Package pickfirst contains the pick_first load balancing policy which
+// is the universal leaf policy.
 package pickfirst
 
 import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	rand "math/rand/v2"
+	"net"
+	"net/netip"
+	"sync"
+	"time"
 
 	"google.golang.org/grpc/balancer"
 	"google.golang.org/grpc/balancer/pickfirst/internal"
 	"google.golang.org/grpc/connectivity"
+	expstats "google.golang.org/grpc/experimental/stats"
 	"google.golang.org/grpc/grpclog"
-	"google.golang.org/grpc/internal/envconfig"
 	internalgrpclog "google.golang.org/grpc/internal/grpclog"
 	"google.golang.org/grpc/internal/pretty"
 	"google.golang.org/grpc/resolver"
 	"google.golang.org/grpc/serviceconfig"
-
-	_ "google.golang.org/grpc/balancer/pickfirst/pickfirstleaf" // For automatically registering the new pickfirst if required.
 )
 
 func init() {
-	if envconfig.NewPickFirstEnabled {
-		return
-	}
 	balancer.Register(pickfirstBuilder{})
 }
 
-var logger = grpclog.Component("pick-first-lb")
+// Name is the name of the pick_first balancer.
+const Name = "pick_first"
+
+// enableHealthListenerKeyType is a unique key type used in resolver
+// attributes to indicate whether the health listener usage is enabled.
+type enableHealthListenerKeyType struct{}
+
+var (
+	logger               = grpclog.Component("pick-first-leaf-lb")
+	disconnectionsMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
+		Name:        "grpc.lb.pick_first.disconnections",
+		Description: "EXPERIMENTAL. Number of times the selected subchannel becomes disconnected.",
+		Unit:        "{disconnection}",
+		Labels:      []string{"grpc.target"},
+		Default:     false,
+	})
+	connectionAttemptsSucceededMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
+		Name:        "grpc.lb.pick_first.connection_attempts_succeeded",
+		Description: "EXPERIMENTAL. Number of successful connection attempts.",
+		Unit:        "{attempt}",
+		Labels:      []string{"grpc.target"},
+		Default:     false,
+	})
+	connectionAttemptsFailedMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
+		Name:        "grpc.lb.pick_first.connection_attempts_failed",
+		Description: "EXPERIMENTAL. Number of failed connection attempts.",
+		Unit:        "{attempt}",
+		Labels:      []string{"grpc.target"},
+		Default:     false,
+	})
+)
 
 const (
-	// Name is the name of the pick_first balancer.
-	Name      = "pick_first"
-	logPrefix = "[pick-first-lb %p] "
+	// TODO: change to pick-first when this becomes the default pick_first policy.
+	logPrefix = "[pick-first-leaf-lb %p] "
+	// connectionDelayInterval is the time to wait for during the happy eyeballs
+	// pass before starting the next connection attempt.
+	connectionDelayInterval = 250 * time.Millisecond
+)
+
+type ipAddrFamily int
+
+const (
+	// ipAddrFamilyUnknown represents strings that can't be parsed as an IP
+	// address.
+	ipAddrFamilyUnknown ipAddrFamily = iota
+	ipAddrFamilyV4
+	ipAddrFamilyV6
 )
 
 type pickfirstBuilder struct{}
 
-func (pickfirstBuilder) Build(cc balancer.ClientConn, _ balancer.BuildOptions) balancer.Balancer {
-	b := &pickfirstBalancer{cc: cc}
+func (pickfirstBuilder) Build(cc balancer.ClientConn, bo balancer.BuildOptions) balancer.Balancer {
+	b := &pickfirstBalancer{
+		cc:              cc,
+		target:          bo.Target.String(),
+		metricsRecorder: cc.MetricsRecorder(),
+
+		subConns:              resolver.NewAddressMapV2[*scData](),
+		state:                 connectivity.Connecting,
+		cancelConnectionTimer: func() {},
+	}
 	b.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(logPrefix, b))
 	return b
 }
 
-func (pickfirstBuilder) Name() string {
+func (b pickfirstBuilder) Name() string {
 	return Name
 }
 
+func (pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {
+	var cfg pfConfig
+	if err := json.Unmarshal(js, &cfg); err != nil {
+		return nil, fmt.Errorf("pickfirst: unable to unmarshal LB policy config: %s, error: %v", string(js), err)
+	}
+	return cfg, nil
+}
+
+// EnableHealthListener updates the state to configure pickfirst for using a
+// generic health listener.
+//
+// # Experimental
+//
+// Notice: This API is EXPERIMENTAL and may be changed or removed in a later
+// release.
+func EnableHealthListener(state resolver.State) resolver.State {
+	state.Attributes = state.Attributes.WithValue(enableHealthListenerKeyType{}, true)
+	return state
+}
+
 type pfConfig struct {
 	serviceconfig.LoadBalancingConfig `json:"-"`
 
@@ -74,90 +143,129 @@
 	ShuffleAddressList bool `json:"shuffleAddressList"`
 }
 
-func (pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {
-	var cfg pfConfig
-	if err := json.Unmarshal(js, &cfg); err != nil {
-		return nil, fmt.Errorf("pickfirst: unable to unmarshal LB policy config: %s, error: %v", string(js), err)
+// scData keeps track of the current state of the subConn.
+// It is not safe for concurrent access.
+type scData struct {
+	// The following fields are initialized at build time and read-only after
+	// that.
+	subConn balancer.SubConn
+	addr    resolver.Address
+
+	rawConnectivityState connectivity.State
+	// The effective connectivity state based on raw connectivity, health state
+	// and after following sticky TransientFailure behaviour defined in A62.
+	effectiveState              connectivity.State
+	lastErr                     error
+	connectionFailedInFirstPass bool
+}
+
+func (b *pickfirstBalancer) newSCData(addr resolver.Address) (*scData, error) {
+	sd := &scData{
+		rawConnectivityState: connectivity.Idle,
+		effectiveState:       connectivity.Idle,
+		addr:                 addr,
 	}
-	return cfg, nil
+	sc, err := b.cc.NewSubConn([]resolver.Address{addr}, balancer.NewSubConnOptions{
+		StateListener: func(state balancer.SubConnState) {
+			b.updateSubConnState(sd, state)
+		},
+	})
+	if err != nil {
+		return nil, err
+	}
+	sd.subConn = sc
+	return sd, nil
 }
 
 type pickfirstBalancer struct {
-	logger  *internalgrpclog.PrefixLogger
-	state   connectivity.State
-	cc      balancer.ClientConn
-	subConn balancer.SubConn
+	// The following fields are initialized at build time and read-only after
+	// that and therefore do not need to be guarded by a mutex.
+	logger          *internalgrpclog.PrefixLogger
+	cc              balancer.ClientConn
+	target          string
+	metricsRecorder expstats.MetricsRecorder // guaranteed to be non nil
+
+	// The mutex is used to ensure synchronization of updates triggered
+	// from the idle picker and the already serialized resolver,
+	// SubConn state updates.
+	mu sync.Mutex
+	// State reported to the channel based on SubConn states and resolver
+	// updates.
+	state connectivity.State
+	// scData for active subonns mapped by address.
+	subConns              *resolver.AddressMapV2[*scData]
+	addressList           addressList
+	firstPass             bool
+	numTF                 int
+	cancelConnectionTimer func()
+	healthCheckingEnabled bool
 }
 
+// ResolverError is called by the ClientConn when the name resolver produces
+// an error or when pickfirst determined the resolver update to be invalid.
 func (b *pickfirstBalancer) ResolverError(err error) {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	b.resolverErrorLocked(err)
+}
+
+func (b *pickfirstBalancer) resolverErrorLocked(err error) {
 	if b.logger.V(2) {
 		b.logger.Infof("Received error from the name resolver: %v", err)
 	}
-	if b.subConn == nil {
-		b.state = connectivity.TransientFailure
-	}
 
-	if b.state != connectivity.TransientFailure {
-		// The picker will not change since the balancer does not currently
-		// report an error.
+	// The picker will not change since the balancer does not currently
+	// report an error. If the balancer hasn't received a single good resolver
+	// update yet, transition to TRANSIENT_FAILURE.
+	if b.state != connectivity.TransientFailure && b.addressList.size() > 0 {
+		if b.logger.V(2) {
+			b.logger.Infof("Ignoring resolver error because balancer is using a previous good update.")
+		}
 		return
 	}
-	b.cc.UpdateState(balancer.State{
+
+	b.updateBalancerState(balancer.State{
 		ConnectivityState: connectivity.TransientFailure,
 		Picker:            &picker{err: fmt.Errorf("name resolver error: %v", err)},
 	})
 }
 
-// Shuffler is an interface for shuffling an address list.
-type Shuffler interface {
-	ShuffleAddressListForTesting(n int, swap func(i, j int))
-}
-
-// ShuffleAddressListForTesting pseudo-randomizes the order of addresses.  n
-// is the number of elements.  swap swaps the elements with indexes i and j.
-func ShuffleAddressListForTesting(n int, swap func(i, j int)) { rand.Shuffle(n, swap) }
-
 func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	b.cancelConnectionTimer()
 	if len(state.ResolverState.Addresses) == 0 && len(state.ResolverState.Endpoints) == 0 {
-		// The resolver reported an empty address list. Treat it like an error by
-		// calling b.ResolverError.
-		if b.subConn != nil {
-			// Shut down the old subConn. All addresses were removed, so it is
-			// no longer valid.
-			b.subConn.Shutdown()
-			b.subConn = nil
-		}
-		b.ResolverError(errors.New("produced zero addresses"))
+		// Cleanup state pertaining to the previous resolver state.
+		// Treat an empty address list like an error by calling b.ResolverError.
+		b.closeSubConnsLocked()
+		b.addressList.updateAddrs(nil)
+		b.resolverErrorLocked(errors.New("produced zero addresses"))
 		return balancer.ErrBadResolverState
 	}
-	// We don't have to guard this block with the env var because ParseConfig
-	// already does so.
+	b.healthCheckingEnabled = state.ResolverState.Attributes.Value(enableHealthListenerKeyType{}) != nil
 	cfg, ok := state.BalancerConfig.(pfConfig)
 	if state.BalancerConfig != nil && !ok {
-		return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v", state.BalancerConfig, state.BalancerConfig)
+		return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v: %w", state.BalancerConfig, state.BalancerConfig, balancer.ErrBadResolverState)
 	}
 
 	if b.logger.V(2) {
 		b.logger.Infof("Received new config %s, resolver state %s", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState))
 	}
 
-	var addrs []resolver.Address
+	var newAddrs []resolver.Address
 	if endpoints := state.ResolverState.Endpoints; len(endpoints) != 0 {
-		// Perform the optional shuffling described in gRFC A62. The shuffling will
-		// change the order of endpoints but not touch the order of the addresses
-		// within each endpoint. - A61
+		// Perform the optional shuffling described in gRFC A62. The shuffling
+		// will change the order of endpoints but not touch the order of the
+		// addresses within each endpoint. - A61
 		if cfg.ShuffleAddressList {
 			endpoints = append([]resolver.Endpoint{}, endpoints...)
 			internal.RandShuffle(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })
 		}
 
-		// "Flatten the list by concatenating the ordered list of addresses for each
-		// of the endpoints, in order." - A61
+		// "Flatten the list by concatenating the ordered list of addresses for
+		// each of the endpoints, in order." - A61
 		for _, endpoint := range endpoints {
-			// "In the flattened list, interleave addresses from the two address
-			// families, as per RFC-8304 section 4." - A61
-			// TODO: support the above language.
-			addrs = append(addrs, endpoint.Addresses...)
+			newAddrs = append(newAddrs, endpoint.Addresses...)
 		}
 	} else {
 		// Endpoints not set, process addresses until we migrate resolver
@@ -166,42 +274,53 @@
 		// target do not forward the corresponding correct endpoints down/split
 		// endpoints properly. Once all balancers correctly forward endpoints
 		// down, can delete this else conditional.
-		addrs = state.ResolverState.Addresses
+		newAddrs = state.ResolverState.Addresses
 		if cfg.ShuffleAddressList {
-			addrs = append([]resolver.Address{}, addrs...)
-			internal.RandShuffle(len(addrs), func(i, j int) { addrs[i], addrs[j] = addrs[j], addrs[i] })
+			newAddrs = append([]resolver.Address{}, newAddrs...)
+			internal.RandShuffle(len(newAddrs), func(i, j int) { newAddrs[i], newAddrs[j] = newAddrs[j], newAddrs[i] })
 		}
 	}
 
-	if b.subConn != nil {
-		b.cc.UpdateAddresses(b.subConn, addrs)
+	// If an address appears in multiple endpoints or in the same endpoint
+	// multiple times, we keep it only once. We will create only one SubConn
+	// for the address because an AddressMap is used to store SubConns.
+	// Not de-duplicating would result in attempting to connect to the same
+	// SubConn multiple times in the same pass. We don't want this.
+	newAddrs = deDupAddresses(newAddrs)
+	newAddrs = interleaveAddresses(newAddrs)
+
+	prevAddr := b.addressList.currentAddress()
+	prevSCData, found := b.subConns.Get(prevAddr)
+	prevAddrsCount := b.addressList.size()
+	isPrevRawConnectivityStateReady := found && prevSCData.rawConnectivityState == connectivity.Ready
+	b.addressList.updateAddrs(newAddrs)
+
+	// If the previous ready SubConn exists in new address list,
+	// keep this connection and don't create new SubConns.
+	if isPrevRawConnectivityStateReady && b.addressList.seekTo(prevAddr) {
 		return nil
 	}
 
-	var subConn balancer.SubConn
-	subConn, err := b.cc.NewSubConn(addrs, balancer.NewSubConnOptions{
-		StateListener: func(state balancer.SubConnState) {
-			b.updateSubConnState(subConn, state)
-		},
-	})
-	if err != nil {
-		if b.logger.V(2) {
-			b.logger.Infof("Failed to create new SubConn: %v", err)
-		}
-		b.state = connectivity.TransientFailure
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: connectivity.TransientFailure,
-			Picker:            &picker{err: fmt.Errorf("error creating connection: %v", err)},
+	b.reconcileSubConnsLocked(newAddrs)
+	// If it's the first resolver update or the balancer was already READY
+	// (but the new address list does not contain the ready SubConn) or
+	// CONNECTING, enter CONNECTING.
+	// We may be in TRANSIENT_FAILURE due to a previous empty address list,
+	// we should still enter CONNECTING because the sticky TF behaviour
+	//  mentioned in A62 applies only when the TRANSIENT_FAILURE is reported
+	// due to connectivity failures.
+	if isPrevRawConnectivityStateReady || b.state == connectivity.Connecting || prevAddrsCount == 0 {
+		// Start connection attempt at first address.
+		b.forceUpdateConcludedStateLocked(balancer.State{
+			ConnectivityState: connectivity.Connecting,
+			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
 		})
-		return balancer.ErrBadResolverState
+		b.startFirstPassLocked()
+	} else if b.state == connectivity.TransientFailure {
+		// If we're in TRANSIENT_FAILURE, we stay in TRANSIENT_FAILURE until
+		// we're READY. See A62.
+		b.startFirstPassLocked()
 	}
-	b.subConn = subConn
-	b.state = connectivity.Idle
-	b.cc.UpdateState(balancer.State{
-		ConnectivityState: connectivity.Connecting,
-		Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-	})
-	b.subConn.Connect()
 	return nil
 }
 
@@ -211,63 +330,484 @@
 	b.logger.Errorf("UpdateSubConnState(%v, %+v) called unexpectedly", subConn, state)
 }
 
-func (b *pickfirstBalancer) updateSubConnState(subConn balancer.SubConn, state balancer.SubConnState) {
-	if b.logger.V(2) {
-		b.logger.Infof("Received SubConn state update: %p, %+v", subConn, state)
-	}
-	if b.subConn != subConn {
-		if b.logger.V(2) {
-			b.logger.Infof("Ignored state change because subConn is not recognized")
-		}
-		return
-	}
-	if state.ConnectivityState == connectivity.Shutdown {
-		b.subConn = nil
-		return
-	}
+func (b *pickfirstBalancer) Close() {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	b.closeSubConnsLocked()
+	b.cancelConnectionTimer()
+	b.state = connectivity.Shutdown
+}
 
-	switch state.ConnectivityState {
-	case connectivity.Ready:
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: state.ConnectivityState,
-			Picker:            &picker{result: balancer.PickResult{SubConn: subConn}},
-		})
-	case connectivity.Connecting:
-		if b.state == connectivity.TransientFailure {
-			// We stay in TransientFailure until we are Ready. See A62.
-			return
-		}
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: state.ConnectivityState,
+// ExitIdle moves the balancer out of idle state. It can be called concurrently
+// by the idlePicker and clientConn so access to variables should be
+// synchronized.
+func (b *pickfirstBalancer) ExitIdle() {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	if b.state == connectivity.Idle {
+		// Move the balancer into CONNECTING state immediately. This is done to
+		// avoid staying in IDLE if a resolver update arrives before the first
+		// SubConn reports CONNECTING.
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Connecting,
 			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
 		})
-	case connectivity.Idle:
-		if b.state == connectivity.TransientFailure {
-			// We stay in TransientFailure until we are Ready. Also kick the
-			// subConn out of Idle into Connecting. See A62.
-			b.subConn.Connect()
+		b.startFirstPassLocked()
+	}
+}
+
+func (b *pickfirstBalancer) startFirstPassLocked() {
+	b.firstPass = true
+	b.numTF = 0
+	// Reset the connection attempt record for existing SubConns.
+	for _, sd := range b.subConns.Values() {
+		sd.connectionFailedInFirstPass = false
+	}
+	b.requestConnectionLocked()
+}
+
+func (b *pickfirstBalancer) closeSubConnsLocked() {
+	for _, sd := range b.subConns.Values() {
+		sd.subConn.Shutdown()
+	}
+	b.subConns = resolver.NewAddressMapV2[*scData]()
+}
+
+// deDupAddresses ensures that each address appears only once in the slice.
+func deDupAddresses(addrs []resolver.Address) []resolver.Address {
+	seenAddrs := resolver.NewAddressMapV2[bool]()
+	retAddrs := []resolver.Address{}
+
+	for _, addr := range addrs {
+		if _, ok := seenAddrs.Get(addr); ok {
+			continue
+		}
+		seenAddrs.Set(addr, true)
+		retAddrs = append(retAddrs, addr)
+	}
+	return retAddrs
+}
+
+// interleaveAddresses interleaves addresses of both families (IPv4 and IPv6)
+// as per RFC-8305 section 4.
+// Whichever address family is first in the list is followed by an address of
+// the other address family; that is, if the first address in the list is IPv6,
+// then the first IPv4 address should be moved up in the list to be second in
+// the list. It doesn't support configuring "First Address Family Count", i.e.
+// there will always be a single member of the first address family at the
+// beginning of the interleaved list.
+// Addresses that are neither IPv4 nor IPv6 are treated as part of a third
+// "unknown" family for interleaving.
+// See: https://datatracker.ietf.org/doc/html/rfc8305#autoid-6
+func interleaveAddresses(addrs []resolver.Address) []resolver.Address {
+	familyAddrsMap := map[ipAddrFamily][]resolver.Address{}
+	interleavingOrder := []ipAddrFamily{}
+	for _, addr := range addrs {
+		family := addressFamily(addr.Addr)
+		if _, found := familyAddrsMap[family]; !found {
+			interleavingOrder = append(interleavingOrder, family)
+		}
+		familyAddrsMap[family] = append(familyAddrsMap[family], addr)
+	}
+
+	interleavedAddrs := make([]resolver.Address, 0, len(addrs))
+
+	for curFamilyIdx := 0; len(interleavedAddrs) < len(addrs); curFamilyIdx = (curFamilyIdx + 1) % len(interleavingOrder) {
+		// Some IP types may have fewer addresses than others, so we look for
+		// the next type that has a remaining member to add to the interleaved
+		// list.
+		family := interleavingOrder[curFamilyIdx]
+		remainingMembers := familyAddrsMap[family]
+		if len(remainingMembers) > 0 {
+			interleavedAddrs = append(interleavedAddrs, remainingMembers[0])
+			familyAddrsMap[family] = remainingMembers[1:]
+		}
+	}
+
+	return interleavedAddrs
+}
+
+// addressFamily returns the ipAddrFamily after parsing the address string.
+// If the address isn't of the format "ip-address:port", it returns
+// ipAddrFamilyUnknown. The address may be valid even if it's not an IP when
+// using a resolver like passthrough where the address may be a hostname in
+// some format that the dialer can resolve.
+func addressFamily(address string) ipAddrFamily {
+	// Parse the IP after removing the port.
+	host, _, err := net.SplitHostPort(address)
+	if err != nil {
+		return ipAddrFamilyUnknown
+	}
+	ip, err := netip.ParseAddr(host)
+	if err != nil {
+		return ipAddrFamilyUnknown
+	}
+	switch {
+	case ip.Is4() || ip.Is4In6():
+		return ipAddrFamilyV4
+	case ip.Is6():
+		return ipAddrFamilyV6
+	default:
+		return ipAddrFamilyUnknown
+	}
+}
+
+// reconcileSubConnsLocked updates the active subchannels based on a new address
+// list from the resolver. It does this by:
+//   - closing subchannels: any existing subchannels associated with addresses
+//     that are no longer in the updated list are shut down.
+//   - removing subchannels: entries for these closed subchannels are removed
+//     from the subchannel map.
+//
+// This ensures that the subchannel map accurately reflects the current set of
+// addresses received from the name resolver.
+func (b *pickfirstBalancer) reconcileSubConnsLocked(newAddrs []resolver.Address) {
+	newAddrsMap := resolver.NewAddressMapV2[bool]()
+	for _, addr := range newAddrs {
+		newAddrsMap.Set(addr, true)
+	}
+
+	for _, oldAddr := range b.subConns.Keys() {
+		if _, ok := newAddrsMap.Get(oldAddr); ok {
+			continue
+		}
+		val, _ := b.subConns.Get(oldAddr)
+		val.subConn.Shutdown()
+		b.subConns.Delete(oldAddr)
+	}
+}
+
+// shutdownRemainingLocked shuts down remaining subConns. Called when a subConn
+// becomes ready, which means that all other subConn must be shutdown.
+func (b *pickfirstBalancer) shutdownRemainingLocked(selected *scData) {
+	b.cancelConnectionTimer()
+	for _, sd := range b.subConns.Values() {
+		if sd.subConn != selected.subConn {
+			sd.subConn.Shutdown()
+		}
+	}
+	b.subConns = resolver.NewAddressMapV2[*scData]()
+	b.subConns.Set(selected.addr, selected)
+}
+
+// requestConnectionLocked starts connecting on the subchannel corresponding to
+// the current address. If no subchannel exists, one is created. If the current
+// subchannel is in TransientFailure, a connection to the next address is
+// attempted until a subchannel is found.
+func (b *pickfirstBalancer) requestConnectionLocked() {
+	if !b.addressList.isValid() {
+		return
+	}
+	var lastErr error
+	for valid := true; valid; valid = b.addressList.increment() {
+		curAddr := b.addressList.currentAddress()
+		sd, ok := b.subConns.Get(curAddr)
+		if !ok {
+			var err error
+			// We want to assign the new scData to sd from the outer scope,
+			// hence we can't use := below.
+			sd, err = b.newSCData(curAddr)
+			if err != nil {
+				// This should never happen, unless the clientConn is being shut
+				// down.
+				if b.logger.V(2) {
+					b.logger.Infof("Failed to create a subConn for address %v: %v", curAddr.String(), err)
+				}
+				// Do nothing, the LB policy will be closed soon.
+				return
+			}
+			b.subConns.Set(curAddr, sd)
+		}
+
+		switch sd.rawConnectivityState {
+		case connectivity.Idle:
+			sd.subConn.Connect()
+			b.scheduleNextConnectionLocked()
+			return
+		case connectivity.TransientFailure:
+			// The SubConn is being re-used and failed during a previous pass
+			// over the addressList. It has not completed backoff yet.
+			// Mark it as having failed and try the next address.
+			sd.connectionFailedInFirstPass = true
+			lastErr = sd.lastErr
+			continue
+		case connectivity.Connecting:
+			// Wait for the connection attempt to complete or the timer to fire
+			// before attempting the next address.
+			b.scheduleNextConnectionLocked()
+			return
+		default:
+			b.logger.Errorf("SubConn with unexpected state %v present in SubConns map.", sd.rawConnectivityState)
+			return
+
+		}
+	}
+
+	// All the remaining addresses in the list are in TRANSIENT_FAILURE, end the
+	// first pass if possible.
+	b.endFirstPassIfPossibleLocked(lastErr)
+}
+
+func (b *pickfirstBalancer) scheduleNextConnectionLocked() {
+	b.cancelConnectionTimer()
+	if !b.addressList.hasNext() {
+		return
+	}
+	curAddr := b.addressList.currentAddress()
+	cancelled := false // Access to this is protected by the balancer's mutex.
+	closeFn := internal.TimeAfterFunc(connectionDelayInterval, func() {
+		b.mu.Lock()
+		defer b.mu.Unlock()
+		// If the scheduled task is cancelled while acquiring the mutex, return.
+		if cancelled {
 			return
 		}
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: state.ConnectivityState,
-			Picker:            &idlePicker{subConn: subConn},
+		if b.logger.V(2) {
+			b.logger.Infof("Happy Eyeballs timer expired while waiting for connection to %q.", curAddr.Addr)
+		}
+		if b.addressList.increment() {
+			b.requestConnectionLocked()
+		}
+	})
+	// Access to the cancellation callback held by the balancer is guarded by
+	// the balancer's mutex, so it's safe to set the boolean from the callback.
+	b.cancelConnectionTimer = sync.OnceFunc(func() {
+		cancelled = true
+		closeFn()
+	})
+}
+
+func (b *pickfirstBalancer) updateSubConnState(sd *scData, newState balancer.SubConnState) {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	oldState := sd.rawConnectivityState
+	sd.rawConnectivityState = newState.ConnectivityState
+	// Previously relevant SubConns can still callback with state updates.
+	// To prevent pickers from returning these obsolete SubConns, this logic
+	// is included to check if the current list of active SubConns includes this
+	// SubConn.
+	if !b.isActiveSCData(sd) {
+		return
+	}
+	if newState.ConnectivityState == connectivity.Shutdown {
+		sd.effectiveState = connectivity.Shutdown
+		return
+	}
+
+	// Record a connection attempt when exiting CONNECTING.
+	if newState.ConnectivityState == connectivity.TransientFailure {
+		sd.connectionFailedInFirstPass = true
+		connectionAttemptsFailedMetric.Record(b.metricsRecorder, 1, b.target)
+	}
+
+	if newState.ConnectivityState == connectivity.Ready {
+		connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
+		b.shutdownRemainingLocked(sd)
+		if !b.addressList.seekTo(sd.addr) {
+			// This should not fail as we should have only one SubConn after
+			// entering READY. The SubConn should be present in the addressList.
+			b.logger.Errorf("Address %q not found address list in %v", sd.addr, b.addressList.addresses)
+			return
+		}
+		if !b.healthCheckingEnabled {
+			if b.logger.V(2) {
+				b.logger.Infof("SubConn %p reported connectivity state READY and the health listener is disabled. Transitioning SubConn to READY.", sd.subConn)
+			}
+
+			sd.effectiveState = connectivity.Ready
+			b.updateBalancerState(balancer.State{
+				ConnectivityState: connectivity.Ready,
+				Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
+			})
+			return
+		}
+		if b.logger.V(2) {
+			b.logger.Infof("SubConn %p reported connectivity state READY. Registering health listener.", sd.subConn)
+		}
+		// Send a CONNECTING update to take the SubConn out of sticky-TF if
+		// required.
+		sd.effectiveState = connectivity.Connecting
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Connecting,
+			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
+		})
+		sd.subConn.RegisterHealthListener(func(scs balancer.SubConnState) {
+			b.updateSubConnHealthState(sd, scs)
+		})
+		return
+	}
+
+	// If the LB policy is READY, and it receives a subchannel state change,
+	// it means that the READY subchannel has failed.
+	// A SubConn can also transition from CONNECTING directly to IDLE when
+	// a transport is successfully created, but the connection fails
+	// before the SubConn can send the notification for READY. We treat
+	// this as a successful connection and transition to IDLE.
+	// TODO: https://github.com/grpc/grpc-go/issues/7862 - Remove the second
+	// part of the if condition below once the issue is fixed.
+	if oldState == connectivity.Ready || (oldState == connectivity.Connecting && newState.ConnectivityState == connectivity.Idle) {
+		// Once a transport fails, the balancer enters IDLE and starts from
+		// the first address when the picker is used.
+		b.shutdownRemainingLocked(sd)
+		sd.effectiveState = newState.ConnectivityState
+		// READY SubConn interspliced in between CONNECTING and IDLE, need to
+		// account for that.
+		if oldState == connectivity.Connecting {
+			// A known issue (https://github.com/grpc/grpc-go/issues/7862)
+			// causes a race that prevents the READY state change notification.
+			// This works around it.
+			connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
+		}
+		disconnectionsMetric.Record(b.metricsRecorder, 1, b.target)
+		b.addressList.reset()
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Idle,
+			Picker:            &idlePicker{exitIdle: sync.OnceFunc(b.ExitIdle)},
+		})
+		return
+	}
+
+	if b.firstPass {
+		switch newState.ConnectivityState {
+		case connectivity.Connecting:
+			// The effective state can be in either IDLE, CONNECTING or
+			// TRANSIENT_FAILURE. If it's  TRANSIENT_FAILURE, stay in
+			// TRANSIENT_FAILURE until it's READY. See A62.
+			if sd.effectiveState != connectivity.TransientFailure {
+				sd.effectiveState = connectivity.Connecting
+				b.updateBalancerState(balancer.State{
+					ConnectivityState: connectivity.Connecting,
+					Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
+				})
+			}
+		case connectivity.TransientFailure:
+			sd.lastErr = newState.ConnectionError
+			sd.effectiveState = connectivity.TransientFailure
+			// Since we're re-using common SubConns while handling resolver
+			// updates, we could receive an out of turn TRANSIENT_FAILURE from
+			// a pass over the previous address list. Happy Eyeballs will also
+			// cause out of order updates to arrive.
+
+			if curAddr := b.addressList.currentAddress(); equalAddressIgnoringBalAttributes(&curAddr, &sd.addr) {
+				b.cancelConnectionTimer()
+				if b.addressList.increment() {
+					b.requestConnectionLocked()
+					return
+				}
+			}
+
+			// End the first pass if we've seen a TRANSIENT_FAILURE from all
+			// SubConns once.
+			b.endFirstPassIfPossibleLocked(newState.ConnectionError)
+		}
+		return
+	}
+
+	// We have finished the first pass, keep re-connecting failing SubConns.
+	switch newState.ConnectivityState {
+	case connectivity.TransientFailure:
+		b.numTF = (b.numTF + 1) % b.subConns.Len()
+		sd.lastErr = newState.ConnectionError
+		if b.numTF%b.subConns.Len() == 0 {
+			b.updateBalancerState(balancer.State{
+				ConnectivityState: connectivity.TransientFailure,
+				Picker:            &picker{err: newState.ConnectionError},
+			})
+		}
+		// We don't need to request re-resolution since the SubConn already
+		// does that before reporting TRANSIENT_FAILURE.
+		// TODO: #7534 - Move re-resolution requests from SubConn into
+		// pick_first.
+	case connectivity.Idle:
+		sd.subConn.Connect()
+	}
+}
+
+// endFirstPassIfPossibleLocked ends the first happy-eyeballs pass if all the
+// addresses are tried and their SubConns have reported a failure.
+func (b *pickfirstBalancer) endFirstPassIfPossibleLocked(lastErr error) {
+	// An optimization to avoid iterating over the entire SubConn map.
+	if b.addressList.isValid() {
+		return
+	}
+	// Connect() has been called on all the SubConns. The first pass can be
+	// ended if all the SubConns have reported a failure.
+	for _, sd := range b.subConns.Values() {
+		if !sd.connectionFailedInFirstPass {
+			return
+		}
+	}
+	b.firstPass = false
+	b.updateBalancerState(balancer.State{
+		ConnectivityState: connectivity.TransientFailure,
+		Picker:            &picker{err: lastErr},
+	})
+	// Start re-connecting all the SubConns that are already in IDLE.
+	for _, sd := range b.subConns.Values() {
+		if sd.rawConnectivityState == connectivity.Idle {
+			sd.subConn.Connect()
+		}
+	}
+}
+
+func (b *pickfirstBalancer) isActiveSCData(sd *scData) bool {
+	activeSD, found := b.subConns.Get(sd.addr)
+	return found && activeSD == sd
+}
+
+func (b *pickfirstBalancer) updateSubConnHealthState(sd *scData, state balancer.SubConnState) {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	// Previously relevant SubConns can still callback with state updates.
+	// To prevent pickers from returning these obsolete SubConns, this logic
+	// is included to check if the current list of active SubConns includes
+	// this SubConn.
+	if !b.isActiveSCData(sd) {
+		return
+	}
+	sd.effectiveState = state.ConnectivityState
+	switch state.ConnectivityState {
+	case connectivity.Ready:
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Ready,
+			Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
 		})
 	case connectivity.TransientFailure:
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: state.ConnectivityState,
-			Picker:            &picker{err: state.ConnectionError},
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.TransientFailure,
+			Picker:            &picker{err: fmt.Errorf("pickfirst: health check failure: %v", state.ConnectionError)},
 		})
+	case connectivity.Connecting:
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Connecting,
+			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
+		})
+	default:
+		b.logger.Errorf("Got unexpected health update for SubConn %p: %v", state)
 	}
-	b.state = state.ConnectivityState
 }
 
-func (b *pickfirstBalancer) Close() {
+// updateBalancerState stores the state reported to the channel and calls
+// ClientConn.UpdateState(). As an optimization, it avoids sending duplicate
+// updates to the channel.
+func (b *pickfirstBalancer) updateBalancerState(newState balancer.State) {
+	// In case of TransientFailures allow the picker to be updated to update
+	// the connectivity error, in all other cases don't send duplicate state
+	// updates.
+	if newState.ConnectivityState == b.state && b.state != connectivity.TransientFailure {
+		return
+	}
+	b.forceUpdateConcludedStateLocked(newState)
 }
 
-func (b *pickfirstBalancer) ExitIdle() {
-	if b.subConn != nil && b.state == connectivity.Idle {
-		b.subConn.Connect()
-	}
+// forceUpdateConcludedStateLocked stores the state reported to the channel and
+// calls ClientConn.UpdateState().
+// A separate function is defined to force update the ClientConn state since the
+// channel doesn't correctly assume that LB policies start in CONNECTING and
+// relies on LB policy to send an initial CONNECTING update.
+func (b *pickfirstBalancer) forceUpdateConcludedStateLocked(newState balancer.State) {
+	b.state = newState.ConnectivityState
+	b.cc.UpdateState(newState)
 }
 
 type picker struct {
@@ -282,10 +822,87 @@
 // idlePicker is used when the SubConn is IDLE and kicks the SubConn into
 // CONNECTING when Pick is called.
 type idlePicker struct {
-	subConn balancer.SubConn
+	exitIdle func()
 }
 
 func (i *idlePicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {
-	i.subConn.Connect()
+	i.exitIdle()
 	return balancer.PickResult{}, balancer.ErrNoSubConnAvailable
 }
+
+// addressList manages sequentially iterating over addresses present in a list
+// of endpoints. It provides a 1 dimensional view of the addresses present in
+// the endpoints.
+// This type is not safe for concurrent access.
+type addressList struct {
+	addresses []resolver.Address
+	idx       int
+}
+
+func (al *addressList) isValid() bool {
+	return al.idx < len(al.addresses)
+}
+
+func (al *addressList) size() int {
+	return len(al.addresses)
+}
+
+// increment moves to the next index in the address list.
+// This method returns false if it went off the list, true otherwise.
+func (al *addressList) increment() bool {
+	if !al.isValid() {
+		return false
+	}
+	al.idx++
+	return al.idx < len(al.addresses)
+}
+
+// currentAddress returns the current address pointed to in the addressList.
+// If the list is in an invalid state, it returns an empty address instead.
+func (al *addressList) currentAddress() resolver.Address {
+	if !al.isValid() {
+		return resolver.Address{}
+	}
+	return al.addresses[al.idx]
+}
+
+func (al *addressList) reset() {
+	al.idx = 0
+}
+
+func (al *addressList) updateAddrs(addrs []resolver.Address) {
+	al.addresses = addrs
+	al.reset()
+}
+
+// seekTo returns false if the needle was not found and the current index was
+// left unchanged.
+func (al *addressList) seekTo(needle resolver.Address) bool {
+	for ai, addr := range al.addresses {
+		if !equalAddressIgnoringBalAttributes(&addr, &needle) {
+			continue
+		}
+		al.idx = ai
+		return true
+	}
+	return false
+}
+
+// hasNext returns whether incrementing the addressList will result in moving
+// past the end of the list. If the list has already moved past the end, it
+// returns false.
+func (al *addressList) hasNext() bool {
+	if !al.isValid() {
+		return false
+	}
+	return al.idx+1 < len(al.addresses)
+}
+
+// equalAddressIgnoringBalAttributes returns true is a and b are considered
+// equal. This is different from the Equal method on the resolver.Address type
+// which considers all fields to determine equality. Here, we only consider
+// fields that are meaningful to the SubConn.
+func equalAddressIgnoringBalAttributes(a, b *resolver.Address) bool {
+	return a.Addr == b.Addr && a.ServerName == b.ServerName &&
+		a.Attributes.Equal(b.Attributes)
+}
diff --git a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go
deleted file mode 100644
index 9ffdd28..0000000
--- a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go
+++ /dev/null
@@ -1,913 +0,0 @@
-/*
- *
- * Copyright 2024 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Package pickfirstleaf contains the pick_first load balancing policy which
-// will be the universal leaf policy after dualstack changes are implemented.
-//
-// # Experimental
-//
-// Notice: This package is EXPERIMENTAL and may be changed or removed in a
-// later release.
-package pickfirstleaf
-
-import (
-	"encoding/json"
-	"errors"
-	"fmt"
-	"net"
-	"net/netip"
-	"sync"
-	"time"
-
-	"google.golang.org/grpc/balancer"
-	"google.golang.org/grpc/balancer/pickfirst/internal"
-	"google.golang.org/grpc/connectivity"
-	expstats "google.golang.org/grpc/experimental/stats"
-	"google.golang.org/grpc/grpclog"
-	"google.golang.org/grpc/internal/envconfig"
-	internalgrpclog "google.golang.org/grpc/internal/grpclog"
-	"google.golang.org/grpc/internal/pretty"
-	"google.golang.org/grpc/resolver"
-	"google.golang.org/grpc/serviceconfig"
-)
-
-func init() {
-	if envconfig.NewPickFirstEnabled {
-		// Register as the default pick_first balancer.
-		Name = "pick_first"
-	}
-	balancer.Register(pickfirstBuilder{})
-}
-
-// enableHealthListenerKeyType is a unique key type used in resolver
-// attributes to indicate whether the health listener usage is enabled.
-type enableHealthListenerKeyType struct{}
-
-var (
-	logger = grpclog.Component("pick-first-leaf-lb")
-	// Name is the name of the pick_first_leaf balancer.
-	// It is changed to "pick_first" in init() if this balancer is to be
-	// registered as the default pickfirst.
-	Name                 = "pick_first_leaf"
-	disconnectionsMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
-		Name:        "grpc.lb.pick_first.disconnections",
-		Description: "EXPERIMENTAL. Number of times the selected subchannel becomes disconnected.",
-		Unit:        "{disconnection}",
-		Labels:      []string{"grpc.target"},
-		Default:     false,
-	})
-	connectionAttemptsSucceededMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
-		Name:        "grpc.lb.pick_first.connection_attempts_succeeded",
-		Description: "EXPERIMENTAL. Number of successful connection attempts.",
-		Unit:        "{attempt}",
-		Labels:      []string{"grpc.target"},
-		Default:     false,
-	})
-	connectionAttemptsFailedMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
-		Name:        "grpc.lb.pick_first.connection_attempts_failed",
-		Description: "EXPERIMENTAL. Number of failed connection attempts.",
-		Unit:        "{attempt}",
-		Labels:      []string{"grpc.target"},
-		Default:     false,
-	})
-)
-
-const (
-	// TODO: change to pick-first when this becomes the default pick_first policy.
-	logPrefix = "[pick-first-leaf-lb %p] "
-	// connectionDelayInterval is the time to wait for during the happy eyeballs
-	// pass before starting the next connection attempt.
-	connectionDelayInterval = 250 * time.Millisecond
-)
-
-type ipAddrFamily int
-
-const (
-	// ipAddrFamilyUnknown represents strings that can't be parsed as an IP
-	// address.
-	ipAddrFamilyUnknown ipAddrFamily = iota
-	ipAddrFamilyV4
-	ipAddrFamilyV6
-)
-
-type pickfirstBuilder struct{}
-
-func (pickfirstBuilder) Build(cc balancer.ClientConn, bo balancer.BuildOptions) balancer.Balancer {
-	b := &pickfirstBalancer{
-		cc:              cc,
-		target:          bo.Target.String(),
-		metricsRecorder: cc.MetricsRecorder(),
-
-		subConns:              resolver.NewAddressMapV2[*scData](),
-		state:                 connectivity.Connecting,
-		cancelConnectionTimer: func() {},
-	}
-	b.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(logPrefix, b))
-	return b
-}
-
-func (b pickfirstBuilder) Name() string {
-	return Name
-}
-
-func (pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {
-	var cfg pfConfig
-	if err := json.Unmarshal(js, &cfg); err != nil {
-		return nil, fmt.Errorf("pickfirst: unable to unmarshal LB policy config: %s, error: %v", string(js), err)
-	}
-	return cfg, nil
-}
-
-// EnableHealthListener updates the state to configure pickfirst for using a
-// generic health listener.
-func EnableHealthListener(state resolver.State) resolver.State {
-	state.Attributes = state.Attributes.WithValue(enableHealthListenerKeyType{}, true)
-	return state
-}
-
-type pfConfig struct {
-	serviceconfig.LoadBalancingConfig `json:"-"`
-
-	// If set to true, instructs the LB policy to shuffle the order of the list
-	// of endpoints received from the name resolver before attempting to
-	// connect to them.
-	ShuffleAddressList bool `json:"shuffleAddressList"`
-}
-
-// scData keeps track of the current state of the subConn.
-// It is not safe for concurrent access.
-type scData struct {
-	// The following fields are initialized at build time and read-only after
-	// that.
-	subConn balancer.SubConn
-	addr    resolver.Address
-
-	rawConnectivityState connectivity.State
-	// The effective connectivity state based on raw connectivity, health state
-	// and after following sticky TransientFailure behaviour defined in A62.
-	effectiveState              connectivity.State
-	lastErr                     error
-	connectionFailedInFirstPass bool
-}
-
-func (b *pickfirstBalancer) newSCData(addr resolver.Address) (*scData, error) {
-	sd := &scData{
-		rawConnectivityState: connectivity.Idle,
-		effectiveState:       connectivity.Idle,
-		addr:                 addr,
-	}
-	sc, err := b.cc.NewSubConn([]resolver.Address{addr}, balancer.NewSubConnOptions{
-		StateListener: func(state balancer.SubConnState) {
-			b.updateSubConnState(sd, state)
-		},
-	})
-	if err != nil {
-		return nil, err
-	}
-	sd.subConn = sc
-	return sd, nil
-}
-
-type pickfirstBalancer struct {
-	// The following fields are initialized at build time and read-only after
-	// that and therefore do not need to be guarded by a mutex.
-	logger          *internalgrpclog.PrefixLogger
-	cc              balancer.ClientConn
-	target          string
-	metricsRecorder expstats.MetricsRecorder // guaranteed to be non nil
-
-	// The mutex is used to ensure synchronization of updates triggered
-	// from the idle picker and the already serialized resolver,
-	// SubConn state updates.
-	mu sync.Mutex
-	// State reported to the channel based on SubConn states and resolver
-	// updates.
-	state connectivity.State
-	// scData for active subonns mapped by address.
-	subConns              *resolver.AddressMapV2[*scData]
-	addressList           addressList
-	firstPass             bool
-	numTF                 int
-	cancelConnectionTimer func()
-	healthCheckingEnabled bool
-}
-
-// ResolverError is called by the ClientConn when the name resolver produces
-// an error or when pickfirst determined the resolver update to be invalid.
-func (b *pickfirstBalancer) ResolverError(err error) {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	b.resolverErrorLocked(err)
-}
-
-func (b *pickfirstBalancer) resolverErrorLocked(err error) {
-	if b.logger.V(2) {
-		b.logger.Infof("Received error from the name resolver: %v", err)
-	}
-
-	// The picker will not change since the balancer does not currently
-	// report an error. If the balancer hasn't received a single good resolver
-	// update yet, transition to TRANSIENT_FAILURE.
-	if b.state != connectivity.TransientFailure && b.addressList.size() > 0 {
-		if b.logger.V(2) {
-			b.logger.Infof("Ignoring resolver error because balancer is using a previous good update.")
-		}
-		return
-	}
-
-	b.updateBalancerState(balancer.State{
-		ConnectivityState: connectivity.TransientFailure,
-		Picker:            &picker{err: fmt.Errorf("name resolver error: %v", err)},
-	})
-}
-
-func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	b.cancelConnectionTimer()
-	if len(state.ResolverState.Addresses) == 0 && len(state.ResolverState.Endpoints) == 0 {
-		// Cleanup state pertaining to the previous resolver state.
-		// Treat an empty address list like an error by calling b.ResolverError.
-		b.closeSubConnsLocked()
-		b.addressList.updateAddrs(nil)
-		b.resolverErrorLocked(errors.New("produced zero addresses"))
-		return balancer.ErrBadResolverState
-	}
-	b.healthCheckingEnabled = state.ResolverState.Attributes.Value(enableHealthListenerKeyType{}) != nil
-	cfg, ok := state.BalancerConfig.(pfConfig)
-	if state.BalancerConfig != nil && !ok {
-		return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v: %w", state.BalancerConfig, state.BalancerConfig, balancer.ErrBadResolverState)
-	}
-
-	if b.logger.V(2) {
-		b.logger.Infof("Received new config %s, resolver state %s", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState))
-	}
-
-	var newAddrs []resolver.Address
-	if endpoints := state.ResolverState.Endpoints; len(endpoints) != 0 {
-		// Perform the optional shuffling described in gRFC A62. The shuffling
-		// will change the order of endpoints but not touch the order of the
-		// addresses within each endpoint. - A61
-		if cfg.ShuffleAddressList {
-			endpoints = append([]resolver.Endpoint{}, endpoints...)
-			internal.RandShuffle(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })
-		}
-
-		// "Flatten the list by concatenating the ordered list of addresses for
-		// each of the endpoints, in order." - A61
-		for _, endpoint := range endpoints {
-			newAddrs = append(newAddrs, endpoint.Addresses...)
-		}
-	} else {
-		// Endpoints not set, process addresses until we migrate resolver
-		// emissions fully to Endpoints. The top channel does wrap emitted
-		// addresses with endpoints, however some balancers such as weighted
-		// target do not forward the corresponding correct endpoints down/split
-		// endpoints properly. Once all balancers correctly forward endpoints
-		// down, can delete this else conditional.
-		newAddrs = state.ResolverState.Addresses
-		if cfg.ShuffleAddressList {
-			newAddrs = append([]resolver.Address{}, newAddrs...)
-			internal.RandShuffle(len(newAddrs), func(i, j int) { newAddrs[i], newAddrs[j] = newAddrs[j], newAddrs[i] })
-		}
-	}
-
-	// If an address appears in multiple endpoints or in the same endpoint
-	// multiple times, we keep it only once. We will create only one SubConn
-	// for the address because an AddressMap is used to store SubConns.
-	// Not de-duplicating would result in attempting to connect to the same
-	// SubConn multiple times in the same pass. We don't want this.
-	newAddrs = deDupAddresses(newAddrs)
-	newAddrs = interleaveAddresses(newAddrs)
-
-	prevAddr := b.addressList.currentAddress()
-	prevSCData, found := b.subConns.Get(prevAddr)
-	prevAddrsCount := b.addressList.size()
-	isPrevRawConnectivityStateReady := found && prevSCData.rawConnectivityState == connectivity.Ready
-	b.addressList.updateAddrs(newAddrs)
-
-	// If the previous ready SubConn exists in new address list,
-	// keep this connection and don't create new SubConns.
-	if isPrevRawConnectivityStateReady && b.addressList.seekTo(prevAddr) {
-		return nil
-	}
-
-	b.reconcileSubConnsLocked(newAddrs)
-	// If it's the first resolver update or the balancer was already READY
-	// (but the new address list does not contain the ready SubConn) or
-	// CONNECTING, enter CONNECTING.
-	// We may be in TRANSIENT_FAILURE due to a previous empty address list,
-	// we should still enter CONNECTING because the sticky TF behaviour
-	//  mentioned in A62 applies only when the TRANSIENT_FAILURE is reported
-	// due to connectivity failures.
-	if isPrevRawConnectivityStateReady || b.state == connectivity.Connecting || prevAddrsCount == 0 {
-		// Start connection attempt at first address.
-		b.forceUpdateConcludedStateLocked(balancer.State{
-			ConnectivityState: connectivity.Connecting,
-			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-		})
-		b.startFirstPassLocked()
-	} else if b.state == connectivity.TransientFailure {
-		// If we're in TRANSIENT_FAILURE, we stay in TRANSIENT_FAILURE until
-		// we're READY. See A62.
-		b.startFirstPassLocked()
-	}
-	return nil
-}
-
-// UpdateSubConnState is unused as a StateListener is always registered when
-// creating SubConns.
-func (b *pickfirstBalancer) UpdateSubConnState(subConn balancer.SubConn, state balancer.SubConnState) {
-	b.logger.Errorf("UpdateSubConnState(%v, %+v) called unexpectedly", subConn, state)
-}
-
-func (b *pickfirstBalancer) Close() {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	b.closeSubConnsLocked()
-	b.cancelConnectionTimer()
-	b.state = connectivity.Shutdown
-}
-
-// ExitIdle moves the balancer out of idle state. It can be called concurrently
-// by the idlePicker and clientConn so access to variables should be
-// synchronized.
-func (b *pickfirstBalancer) ExitIdle() {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	if b.state == connectivity.Idle {
-		// Move the balancer into CONNECTING state immediately. This is done to
-		// avoid staying in IDLE if a resolver update arrives before the first
-		// SubConn reports CONNECTING.
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Connecting,
-			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-		})
-		b.startFirstPassLocked()
-	}
-}
-
-func (b *pickfirstBalancer) startFirstPassLocked() {
-	b.firstPass = true
-	b.numTF = 0
-	// Reset the connection attempt record for existing SubConns.
-	for _, sd := range b.subConns.Values() {
-		sd.connectionFailedInFirstPass = false
-	}
-	b.requestConnectionLocked()
-}
-
-func (b *pickfirstBalancer) closeSubConnsLocked() {
-	for _, sd := range b.subConns.Values() {
-		sd.subConn.Shutdown()
-	}
-	b.subConns = resolver.NewAddressMapV2[*scData]()
-}
-
-// deDupAddresses ensures that each address appears only once in the slice.
-func deDupAddresses(addrs []resolver.Address) []resolver.Address {
-	seenAddrs := resolver.NewAddressMapV2[*scData]()
-	retAddrs := []resolver.Address{}
-
-	for _, addr := range addrs {
-		if _, ok := seenAddrs.Get(addr); ok {
-			continue
-		}
-		retAddrs = append(retAddrs, addr)
-	}
-	return retAddrs
-}
-
-// interleaveAddresses interleaves addresses of both families (IPv4 and IPv6)
-// as per RFC-8305 section 4.
-// Whichever address family is first in the list is followed by an address of
-// the other address family; that is, if the first address in the list is IPv6,
-// then the first IPv4 address should be moved up in the list to be second in
-// the list. It doesn't support configuring "First Address Family Count", i.e.
-// there will always be a single member of the first address family at the
-// beginning of the interleaved list.
-// Addresses that are neither IPv4 nor IPv6 are treated as part of a third
-// "unknown" family for interleaving.
-// See: https://datatracker.ietf.org/doc/html/rfc8305#autoid-6
-func interleaveAddresses(addrs []resolver.Address) []resolver.Address {
-	familyAddrsMap := map[ipAddrFamily][]resolver.Address{}
-	interleavingOrder := []ipAddrFamily{}
-	for _, addr := range addrs {
-		family := addressFamily(addr.Addr)
-		if _, found := familyAddrsMap[family]; !found {
-			interleavingOrder = append(interleavingOrder, family)
-		}
-		familyAddrsMap[family] = append(familyAddrsMap[family], addr)
-	}
-
-	interleavedAddrs := make([]resolver.Address, 0, len(addrs))
-
-	for curFamilyIdx := 0; len(interleavedAddrs) < len(addrs); curFamilyIdx = (curFamilyIdx + 1) % len(interleavingOrder) {
-		// Some IP types may have fewer addresses than others, so we look for
-		// the next type that has a remaining member to add to the interleaved
-		// list.
-		family := interleavingOrder[curFamilyIdx]
-		remainingMembers := familyAddrsMap[family]
-		if len(remainingMembers) > 0 {
-			interleavedAddrs = append(interleavedAddrs, remainingMembers[0])
-			familyAddrsMap[family] = remainingMembers[1:]
-		}
-	}
-
-	return interleavedAddrs
-}
-
-// addressFamily returns the ipAddrFamily after parsing the address string.
-// If the address isn't of the format "ip-address:port", it returns
-// ipAddrFamilyUnknown. The address may be valid even if it's not an IP when
-// using a resolver like passthrough where the address may be a hostname in
-// some format that the dialer can resolve.
-func addressFamily(address string) ipAddrFamily {
-	// Parse the IP after removing the port.
-	host, _, err := net.SplitHostPort(address)
-	if err != nil {
-		return ipAddrFamilyUnknown
-	}
-	ip, err := netip.ParseAddr(host)
-	if err != nil {
-		return ipAddrFamilyUnknown
-	}
-	switch {
-	case ip.Is4() || ip.Is4In6():
-		return ipAddrFamilyV4
-	case ip.Is6():
-		return ipAddrFamilyV6
-	default:
-		return ipAddrFamilyUnknown
-	}
-}
-
-// reconcileSubConnsLocked updates the active subchannels based on a new address
-// list from the resolver. It does this by:
-//   - closing subchannels: any existing subchannels associated with addresses
-//     that are no longer in the updated list are shut down.
-//   - removing subchannels: entries for these closed subchannels are removed
-//     from the subchannel map.
-//
-// This ensures that the subchannel map accurately reflects the current set of
-// addresses received from the name resolver.
-func (b *pickfirstBalancer) reconcileSubConnsLocked(newAddrs []resolver.Address) {
-	newAddrsMap := resolver.NewAddressMapV2[bool]()
-	for _, addr := range newAddrs {
-		newAddrsMap.Set(addr, true)
-	}
-
-	for _, oldAddr := range b.subConns.Keys() {
-		if _, ok := newAddrsMap.Get(oldAddr); ok {
-			continue
-		}
-		val, _ := b.subConns.Get(oldAddr)
-		val.subConn.Shutdown()
-		b.subConns.Delete(oldAddr)
-	}
-}
-
-// shutdownRemainingLocked shuts down remaining subConns. Called when a subConn
-// becomes ready, which means that all other subConn must be shutdown.
-func (b *pickfirstBalancer) shutdownRemainingLocked(selected *scData) {
-	b.cancelConnectionTimer()
-	for _, sd := range b.subConns.Values() {
-		if sd.subConn != selected.subConn {
-			sd.subConn.Shutdown()
-		}
-	}
-	b.subConns = resolver.NewAddressMapV2[*scData]()
-	b.subConns.Set(selected.addr, selected)
-}
-
-// requestConnectionLocked starts connecting on the subchannel corresponding to
-// the current address. If no subchannel exists, one is created. If the current
-// subchannel is in TransientFailure, a connection to the next address is
-// attempted until a subchannel is found.
-func (b *pickfirstBalancer) requestConnectionLocked() {
-	if !b.addressList.isValid() {
-		return
-	}
-	var lastErr error
-	for valid := true; valid; valid = b.addressList.increment() {
-		curAddr := b.addressList.currentAddress()
-		sd, ok := b.subConns.Get(curAddr)
-		if !ok {
-			var err error
-			// We want to assign the new scData to sd from the outer scope,
-			// hence we can't use := below.
-			sd, err = b.newSCData(curAddr)
-			if err != nil {
-				// This should never happen, unless the clientConn is being shut
-				// down.
-				if b.logger.V(2) {
-					b.logger.Infof("Failed to create a subConn for address %v: %v", curAddr.String(), err)
-				}
-				// Do nothing, the LB policy will be closed soon.
-				return
-			}
-			b.subConns.Set(curAddr, sd)
-		}
-
-		switch sd.rawConnectivityState {
-		case connectivity.Idle:
-			sd.subConn.Connect()
-			b.scheduleNextConnectionLocked()
-			return
-		case connectivity.TransientFailure:
-			// The SubConn is being re-used and failed during a previous pass
-			// over the addressList. It has not completed backoff yet.
-			// Mark it as having failed and try the next address.
-			sd.connectionFailedInFirstPass = true
-			lastErr = sd.lastErr
-			continue
-		case connectivity.Connecting:
-			// Wait for the connection attempt to complete or the timer to fire
-			// before attempting the next address.
-			b.scheduleNextConnectionLocked()
-			return
-		default:
-			b.logger.Errorf("SubConn with unexpected state %v present in SubConns map.", sd.rawConnectivityState)
-			return
-
-		}
-	}
-
-	// All the remaining addresses in the list are in TRANSIENT_FAILURE, end the
-	// first pass if possible.
-	b.endFirstPassIfPossibleLocked(lastErr)
-}
-
-func (b *pickfirstBalancer) scheduleNextConnectionLocked() {
-	b.cancelConnectionTimer()
-	if !b.addressList.hasNext() {
-		return
-	}
-	curAddr := b.addressList.currentAddress()
-	cancelled := false // Access to this is protected by the balancer's mutex.
-	closeFn := internal.TimeAfterFunc(connectionDelayInterval, func() {
-		b.mu.Lock()
-		defer b.mu.Unlock()
-		// If the scheduled task is cancelled while acquiring the mutex, return.
-		if cancelled {
-			return
-		}
-		if b.logger.V(2) {
-			b.logger.Infof("Happy Eyeballs timer expired while waiting for connection to %q.", curAddr.Addr)
-		}
-		if b.addressList.increment() {
-			b.requestConnectionLocked()
-		}
-	})
-	// Access to the cancellation callback held by the balancer is guarded by
-	// the balancer's mutex, so it's safe to set the boolean from the callback.
-	b.cancelConnectionTimer = sync.OnceFunc(func() {
-		cancelled = true
-		closeFn()
-	})
-}
-
-func (b *pickfirstBalancer) updateSubConnState(sd *scData, newState balancer.SubConnState) {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	oldState := sd.rawConnectivityState
-	sd.rawConnectivityState = newState.ConnectivityState
-	// Previously relevant SubConns can still callback with state updates.
-	// To prevent pickers from returning these obsolete SubConns, this logic
-	// is included to check if the current list of active SubConns includes this
-	// SubConn.
-	if !b.isActiveSCData(sd) {
-		return
-	}
-	if newState.ConnectivityState == connectivity.Shutdown {
-		sd.effectiveState = connectivity.Shutdown
-		return
-	}
-
-	// Record a connection attempt when exiting CONNECTING.
-	if newState.ConnectivityState == connectivity.TransientFailure {
-		sd.connectionFailedInFirstPass = true
-		connectionAttemptsFailedMetric.Record(b.metricsRecorder, 1, b.target)
-	}
-
-	if newState.ConnectivityState == connectivity.Ready {
-		connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
-		b.shutdownRemainingLocked(sd)
-		if !b.addressList.seekTo(sd.addr) {
-			// This should not fail as we should have only one SubConn after
-			// entering READY. The SubConn should be present in the addressList.
-			b.logger.Errorf("Address %q not found address list in %v", sd.addr, b.addressList.addresses)
-			return
-		}
-		if !b.healthCheckingEnabled {
-			if b.logger.V(2) {
-				b.logger.Infof("SubConn %p reported connectivity state READY and the health listener is disabled. Transitioning SubConn to READY.", sd.subConn)
-			}
-
-			sd.effectiveState = connectivity.Ready
-			b.updateBalancerState(balancer.State{
-				ConnectivityState: connectivity.Ready,
-				Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
-			})
-			return
-		}
-		if b.logger.V(2) {
-			b.logger.Infof("SubConn %p reported connectivity state READY. Registering health listener.", sd.subConn)
-		}
-		// Send a CONNECTING update to take the SubConn out of sticky-TF if
-		// required.
-		sd.effectiveState = connectivity.Connecting
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Connecting,
-			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-		})
-		sd.subConn.RegisterHealthListener(func(scs balancer.SubConnState) {
-			b.updateSubConnHealthState(sd, scs)
-		})
-		return
-	}
-
-	// If the LB policy is READY, and it receives a subchannel state change,
-	// it means that the READY subchannel has failed.
-	// A SubConn can also transition from CONNECTING directly to IDLE when
-	// a transport is successfully created, but the connection fails
-	// before the SubConn can send the notification for READY. We treat
-	// this as a successful connection and transition to IDLE.
-	// TODO: https://github.com/grpc/grpc-go/issues/7862 - Remove the second
-	// part of the if condition below once the issue is fixed.
-	if oldState == connectivity.Ready || (oldState == connectivity.Connecting && newState.ConnectivityState == connectivity.Idle) {
-		// Once a transport fails, the balancer enters IDLE and starts from
-		// the first address when the picker is used.
-		b.shutdownRemainingLocked(sd)
-		sd.effectiveState = newState.ConnectivityState
-		// READY SubConn interspliced in between CONNECTING and IDLE, need to
-		// account for that.
-		if oldState == connectivity.Connecting {
-			// A known issue (https://github.com/grpc/grpc-go/issues/7862)
-			// causes a race that prevents the READY state change notification.
-			// This works around it.
-			connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
-		}
-		disconnectionsMetric.Record(b.metricsRecorder, 1, b.target)
-		b.addressList.reset()
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Idle,
-			Picker:            &idlePicker{exitIdle: sync.OnceFunc(b.ExitIdle)},
-		})
-		return
-	}
-
-	if b.firstPass {
-		switch newState.ConnectivityState {
-		case connectivity.Connecting:
-			// The effective state can be in either IDLE, CONNECTING or
-			// TRANSIENT_FAILURE. If it's  TRANSIENT_FAILURE, stay in
-			// TRANSIENT_FAILURE until it's READY. See A62.
-			if sd.effectiveState != connectivity.TransientFailure {
-				sd.effectiveState = connectivity.Connecting
-				b.updateBalancerState(balancer.State{
-					ConnectivityState: connectivity.Connecting,
-					Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-				})
-			}
-		case connectivity.TransientFailure:
-			sd.lastErr = newState.ConnectionError
-			sd.effectiveState = connectivity.TransientFailure
-			// Since we're re-using common SubConns while handling resolver
-			// updates, we could receive an out of turn TRANSIENT_FAILURE from
-			// a pass over the previous address list. Happy Eyeballs will also
-			// cause out of order updates to arrive.
-
-			if curAddr := b.addressList.currentAddress(); equalAddressIgnoringBalAttributes(&curAddr, &sd.addr) {
-				b.cancelConnectionTimer()
-				if b.addressList.increment() {
-					b.requestConnectionLocked()
-					return
-				}
-			}
-
-			// End the first pass if we've seen a TRANSIENT_FAILURE from all
-			// SubConns once.
-			b.endFirstPassIfPossibleLocked(newState.ConnectionError)
-		}
-		return
-	}
-
-	// We have finished the first pass, keep re-connecting failing SubConns.
-	switch newState.ConnectivityState {
-	case connectivity.TransientFailure:
-		b.numTF = (b.numTF + 1) % b.subConns.Len()
-		sd.lastErr = newState.ConnectionError
-		if b.numTF%b.subConns.Len() == 0 {
-			b.updateBalancerState(balancer.State{
-				ConnectivityState: connectivity.TransientFailure,
-				Picker:            &picker{err: newState.ConnectionError},
-			})
-		}
-		// We don't need to request re-resolution since the SubConn already
-		// does that before reporting TRANSIENT_FAILURE.
-		// TODO: #7534 - Move re-resolution requests from SubConn into
-		// pick_first.
-	case connectivity.Idle:
-		sd.subConn.Connect()
-	}
-}
-
-// endFirstPassIfPossibleLocked ends the first happy-eyeballs pass if all the
-// addresses are tried and their SubConns have reported a failure.
-func (b *pickfirstBalancer) endFirstPassIfPossibleLocked(lastErr error) {
-	// An optimization to avoid iterating over the entire SubConn map.
-	if b.addressList.isValid() {
-		return
-	}
-	// Connect() has been called on all the SubConns. The first pass can be
-	// ended if all the SubConns have reported a failure.
-	for _, sd := range b.subConns.Values() {
-		if !sd.connectionFailedInFirstPass {
-			return
-		}
-	}
-	b.firstPass = false
-	b.updateBalancerState(balancer.State{
-		ConnectivityState: connectivity.TransientFailure,
-		Picker:            &picker{err: lastErr},
-	})
-	// Start re-connecting all the SubConns that are already in IDLE.
-	for _, sd := range b.subConns.Values() {
-		if sd.rawConnectivityState == connectivity.Idle {
-			sd.subConn.Connect()
-		}
-	}
-}
-
-func (b *pickfirstBalancer) isActiveSCData(sd *scData) bool {
-	activeSD, found := b.subConns.Get(sd.addr)
-	return found && activeSD == sd
-}
-
-func (b *pickfirstBalancer) updateSubConnHealthState(sd *scData, state balancer.SubConnState) {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	// Previously relevant SubConns can still callback with state updates.
-	// To prevent pickers from returning these obsolete SubConns, this logic
-	// is included to check if the current list of active SubConns includes
-	// this SubConn.
-	if !b.isActiveSCData(sd) {
-		return
-	}
-	sd.effectiveState = state.ConnectivityState
-	switch state.ConnectivityState {
-	case connectivity.Ready:
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Ready,
-			Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
-		})
-	case connectivity.TransientFailure:
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.TransientFailure,
-			Picker:            &picker{err: fmt.Errorf("pickfirst: health check failure: %v", state.ConnectionError)},
-		})
-	case connectivity.Connecting:
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Connecting,
-			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-		})
-	default:
-		b.logger.Errorf("Got unexpected health update for SubConn %p: %v", state)
-	}
-}
-
-// updateBalancerState stores the state reported to the channel and calls
-// ClientConn.UpdateState(). As an optimization, it avoids sending duplicate
-// updates to the channel.
-func (b *pickfirstBalancer) updateBalancerState(newState balancer.State) {
-	// In case of TransientFailures allow the picker to be updated to update
-	// the connectivity error, in all other cases don't send duplicate state
-	// updates.
-	if newState.ConnectivityState == b.state && b.state != connectivity.TransientFailure {
-		return
-	}
-	b.forceUpdateConcludedStateLocked(newState)
-}
-
-// forceUpdateConcludedStateLocked stores the state reported to the channel and
-// calls ClientConn.UpdateState().
-// A separate function is defined to force update the ClientConn state since the
-// channel doesn't correctly assume that LB policies start in CONNECTING and
-// relies on LB policy to send an initial CONNECTING update.
-func (b *pickfirstBalancer) forceUpdateConcludedStateLocked(newState balancer.State) {
-	b.state = newState.ConnectivityState
-	b.cc.UpdateState(newState)
-}
-
-type picker struct {
-	result balancer.PickResult
-	err    error
-}
-
-func (p *picker) Pick(balancer.PickInfo) (balancer.PickResult, error) {
-	return p.result, p.err
-}
-
-// idlePicker is used when the SubConn is IDLE and kicks the SubConn into
-// CONNECTING when Pick is called.
-type idlePicker struct {
-	exitIdle func()
-}
-
-func (i *idlePicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {
-	i.exitIdle()
-	return balancer.PickResult{}, balancer.ErrNoSubConnAvailable
-}
-
-// addressList manages sequentially iterating over addresses present in a list
-// of endpoints. It provides a 1 dimensional view of the addresses present in
-// the endpoints.
-// This type is not safe for concurrent access.
-type addressList struct {
-	addresses []resolver.Address
-	idx       int
-}
-
-func (al *addressList) isValid() bool {
-	return al.idx < len(al.addresses)
-}
-
-func (al *addressList) size() int {
-	return len(al.addresses)
-}
-
-// increment moves to the next index in the address list.
-// This method returns false if it went off the list, true otherwise.
-func (al *addressList) increment() bool {
-	if !al.isValid() {
-		return false
-	}
-	al.idx++
-	return al.idx < len(al.addresses)
-}
-
-// currentAddress returns the current address pointed to in the addressList.
-// If the list is in an invalid state, it returns an empty address instead.
-func (al *addressList) currentAddress() resolver.Address {
-	if !al.isValid() {
-		return resolver.Address{}
-	}
-	return al.addresses[al.idx]
-}
-
-func (al *addressList) reset() {
-	al.idx = 0
-}
-
-func (al *addressList) updateAddrs(addrs []resolver.Address) {
-	al.addresses = addrs
-	al.reset()
-}
-
-// seekTo returns false if the needle was not found and the current index was
-// left unchanged.
-func (al *addressList) seekTo(needle resolver.Address) bool {
-	for ai, addr := range al.addresses {
-		if !equalAddressIgnoringBalAttributes(&addr, &needle) {
-			continue
-		}
-		al.idx = ai
-		return true
-	}
-	return false
-}
-
-// hasNext returns whether incrementing the addressList will result in moving
-// past the end of the list. If the list has already moved past the end, it
-// returns false.
-func (al *addressList) hasNext() bool {
-	if !al.isValid() {
-		return false
-	}
-	return al.idx+1 < len(al.addresses)
-}
-
-// equalAddressIgnoringBalAttributes returns true is a and b are considered
-// equal. This is different from the Equal method on the resolver.Address type
-// which considers all fields to determine equality. Here, we only consider
-// fields that are meaningful to the SubConn.
-func equalAddressIgnoringBalAttributes(a, b *resolver.Address) bool {
-	return a.Addr == b.Addr && a.ServerName == b.ServerName &&
-		a.Attributes.Equal(b.Attributes)
-}
diff --git a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
index 22045bf..22e6e32 100644
--- a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
+++ b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
@@ -26,7 +26,7 @@
 
 	"google.golang.org/grpc/balancer"
 	"google.golang.org/grpc/balancer/endpointsharding"
-	"google.golang.org/grpc/balancer/pickfirst/pickfirstleaf"
+	"google.golang.org/grpc/balancer/pickfirst"
 	"google.golang.org/grpc/grpclog"
 	internalgrpclog "google.golang.org/grpc/internal/grpclog"
 )
@@ -47,7 +47,7 @@
 }
 
 func (bb builder) Build(cc balancer.ClientConn, opts balancer.BuildOptions) balancer.Balancer {
-	childBuilder := balancer.Get(pickfirstleaf.Name).Build
+	childBuilder := balancer.Get(pickfirst.Name).Build
 	bal := &rrBalancer{
 		cc:       cc,
 		Balancer: endpointsharding.NewBalancer(cc, opts, childBuilder, endpointsharding.Options{}),
@@ -67,6 +67,6 @@
 	return b.Balancer.UpdateClientConnState(balancer.ClientConnState{
 		// Enable the health listener in pickfirst children for client side health
 		// checks and outlier detection, if configured.
-		ResolverState: pickfirstleaf.EnableHealthListener(ccs.ResolverState),
+		ResolverState: pickfirst.EnableHealthListener(ccs.ResolverState),
 	})
 }
diff --git a/vendor/google.golang.org/grpc/balancer_wrapper.go b/vendor/google.golang.org/grpc/balancer_wrapper.go
index 948a21e..2c760e6 100644
--- a/vendor/google.golang.org/grpc/balancer_wrapper.go
+++ b/vendor/google.golang.org/grpc/balancer_wrapper.go
@@ -450,13 +450,14 @@
 	if acbw.ccb.cc.dopts.disableHealthCheck {
 		return noOpRegisterHealthListenerFn
 	}
+	cfg := acbw.ac.cc.healthCheckConfig()
+	if cfg == nil {
+		return noOpRegisterHealthListenerFn
+	}
 	regHealthLisFn := internal.RegisterClientHealthCheckListener
 	if regHealthLisFn == nil {
 		// The health package is not imported.
-		return noOpRegisterHealthListenerFn
-	}
-	cfg := acbw.ac.cc.healthCheckConfig()
-	if cfg == nil {
+		channelz.Error(logger, acbw.ac.channelz, "Health check is requested but health package is not imported.")
 		return noOpRegisterHealthListenerFn
 	}
 	return func(ctx context.Context, listener func(balancer.SubConnState)) func() {
diff --git a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go
index b1364a0..42c61cf 100644
--- a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go
+++ b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go
@@ -18,7 +18,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/binlog/v1/binarylog.proto
 
diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go
index a3c315f..c0c2c9a 100644
--- a/vendor/google.golang.org/grpc/clientconn.go
+++ b/vendor/google.golang.org/grpc/clientconn.go
@@ -40,11 +40,12 @@
 	"google.golang.org/grpc/internal/grpcsync"
 	"google.golang.org/grpc/internal/idle"
 	iresolver "google.golang.org/grpc/internal/resolver"
-	"google.golang.org/grpc/internal/stats"
+	istats "google.golang.org/grpc/internal/stats"
 	"google.golang.org/grpc/internal/transport"
 	"google.golang.org/grpc/keepalive"
 	"google.golang.org/grpc/resolver"
 	"google.golang.org/grpc/serviceconfig"
+	"google.golang.org/grpc/stats"
 	"google.golang.org/grpc/status"
 
 	_ "google.golang.org/grpc/balancer/roundrobin"           // To register roundrobin.
@@ -210,7 +211,8 @@
 	cc.csMgr = newConnectivityStateManager(cc.ctx, cc.channelz)
 	cc.pickerWrapper = newPickerWrapper()
 
-	cc.metricsRecorderList = stats.NewMetricsRecorderList(cc.dopts.copts.StatsHandlers)
+	cc.metricsRecorderList = istats.NewMetricsRecorderList(cc.dopts.copts.StatsHandlers)
+	cc.statsHandler = istats.NewCombinedHandler(cc.dopts.copts.StatsHandlers...)
 
 	cc.initIdleStateLocked() // Safe to call without the lock, since nothing else has a reference to cc.
 	cc.idlenessMgr = idle.NewManager((*idler)(cc), cc.dopts.idleTimeout)
@@ -621,7 +623,8 @@
 	channelz            *channelz.Channel // Channelz object.
 	resolverBuilder     resolver.Builder  // See initParsedTargetAndResolverBuilder().
 	idlenessMgr         *idle.Manager
-	metricsRecorderList *stats.MetricsRecorderList
+	metricsRecorderList *istats.MetricsRecorderList
+	statsHandler        stats.Handler
 
 	// The following provide their own synchronization, and therefore don't
 	// require cc.mu to be held to access them.
diff --git a/vendor/google.golang.org/grpc/credentials/credentials.go b/vendor/google.golang.org/grpc/credentials/credentials.go
index c8e337c..06f6c6c 100644
--- a/vendor/google.golang.org/grpc/credentials/credentials.go
+++ b/vendor/google.golang.org/grpc/credentials/credentials.go
@@ -44,8 +44,7 @@
 	// A54). uri is the URI of the entry point for the request.  When supported
 	// by the underlying implementation, ctx can be used for timeout and
 	// cancellation. Additionally, RequestInfo data will be available via ctx
-	// to this call.  TODO(zhaoq): Define the set of the qualified keys instead
-	// of leaving it as an arbitrary string.
+	// to this call.
 	GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error)
 	// RequireTransportSecurity indicates whether the credentials requires
 	// transport security.
diff --git a/vendor/google.golang.org/grpc/encoding/encoding.go b/vendor/google.golang.org/grpc/encoding/encoding.go
index 11d0ae1..dadd21e 100644
--- a/vendor/google.golang.org/grpc/encoding/encoding.go
+++ b/vendor/google.golang.org/grpc/encoding/encoding.go
@@ -27,8 +27,10 @@
 
 import (
 	"io"
+	"slices"
 	"strings"
 
+	"google.golang.org/grpc/encoding/internal"
 	"google.golang.org/grpc/internal/grpcutil"
 )
 
@@ -36,6 +38,24 @@
 // It is intended for grpc internal use only.
 const Identity = "identity"
 
+func init() {
+	internal.RegisterCompressorForTesting = func(c Compressor) func() {
+		name := c.Name()
+		curCompressor, found := registeredCompressor[name]
+		RegisterCompressor(c)
+		return func() {
+			if found {
+				registeredCompressor[name] = curCompressor
+				return
+			}
+			delete(registeredCompressor, name)
+			grpcutil.RegisteredCompressorNames = slices.DeleteFunc(grpcutil.RegisteredCompressorNames, func(s string) bool {
+				return s == name
+			})
+		}
+	}
+}
+
 // Compressor is used for compressing and decompressing when sending or
 // receiving messages.
 //
diff --git a/vendor/google.golang.org/grpc/encoding/internal/internal.go b/vendor/google.golang.org/grpc/encoding/internal/internal.go
new file mode 100644
index 0000000..ee9acb4
--- /dev/null
+++ b/vendor/google.golang.org/grpc/encoding/internal/internal.go
@@ -0,0 +1,28 @@
+/*
+ *
+ * Copyright 2025 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// Package internal contains code internal to the encoding package.
+package internal
+
+// RegisterCompressorForTesting registers a compressor in the global compressor
+// registry. It returns a cleanup function that should be called at the end
+// of the test to unregister the compressor.
+//
+// This prevents compressors registered in one test from appearing in the
+// encoding headers of subsequent tests.
+var RegisterCompressorForTesting any // func RegisterCompressor(c Compressor) func()
diff --git a/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go b/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go
index ad75313..2b57ba6 100644
--- a/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go
+++ b/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go
@@ -75,6 +75,7 @@
 	MetricTypeIntHisto
 	MetricTypeFloatHisto
 	MetricTypeIntGauge
+	MetricTypeIntUpDownCount
 )
 
 // Int64CountHandle is a typed handle for a int count metric. This handle
@@ -93,6 +94,23 @@
 	recorder.RecordInt64Count(h, incr, labels...)
 }
 
+// Int64UpDownCountHandle is a typed handle for an int up-down counter metric.
+// This handle is passed at the recording point in order to know which metric
+// to record on.
+type Int64UpDownCountHandle MetricDescriptor
+
+// Descriptor returns the int64 up-down counter handle typecast to a pointer to a
+// MetricDescriptor.
+func (h *Int64UpDownCountHandle) Descriptor() *MetricDescriptor {
+	return (*MetricDescriptor)(h)
+}
+
+// Record records the int64 up-down counter value on the metrics recorder provided.
+// The value 'v' can be positive to increment or negative to decrement.
+func (h *Int64UpDownCountHandle) Record(recorder MetricsRecorder, v int64, labels ...string) {
+	recorder.RecordInt64UpDownCount(h, v, labels...)
+}
+
 // Float64CountHandle is a typed handle for a float count metric. This handle is
 // passed at the recording point in order to know which metric to record on.
 type Float64CountHandle MetricDescriptor
@@ -249,6 +267,21 @@
 	return (*Int64GaugeHandle)(descPtr)
 }
 
+// RegisterInt64UpDownCount registers the metric description onto the global registry.
+// It returns a typed handle to use for recording data.
+//
+// NOTE: this function must only be called during initialization time (i.e. in
+// an init() function), and is not thread-safe. If multiple metrics are
+// registered with the same name, this function will panic.
+func RegisterInt64UpDownCount(descriptor MetricDescriptor) *Int64UpDownCountHandle {
+	registerMetric(descriptor.Name, descriptor.Default)
+	// Set the specific metric type for the up-down counter
+	descriptor.Type = MetricTypeIntUpDownCount
+	descPtr := &descriptor
+	metricsRegistry[descriptor.Name] = descPtr
+	return (*Int64UpDownCountHandle)(descPtr)
+}
+
 // snapshotMetricsRegistryForTesting snapshots the global data of the metrics
 // registry. Returns a cleanup function that sets the metrics registry to its
 // original state.
diff --git a/vendor/google.golang.org/grpc/experimental/stats/metrics.go b/vendor/google.golang.org/grpc/experimental/stats/metrics.go
index ee14236..cb57f1a 100644
--- a/vendor/google.golang.org/grpc/experimental/stats/metrics.go
+++ b/vendor/google.golang.org/grpc/experimental/stats/metrics.go
@@ -38,6 +38,9 @@
 	// RecordInt64Gauge records the measurement alongside labels on the int
 	// gauge associated with the provided handle.
 	RecordInt64Gauge(handle *Int64GaugeHandle, incr int64, labels ...string)
+	// RecordInt64UpDownCounter records the measurement alongside labels on the int
+	// count associated with the provided handle.
+	RecordInt64UpDownCount(handle *Int64UpDownCountHandle, incr int64, labels ...string)
 }
 
 // Metrics is an experimental legacy alias of the now-stable stats.MetricSet.
diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go
index 7e060f5..91f7609 100644
--- a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go
+++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go
@@ -52,12 +52,6 @@
 	// or "false".
 	EnforceALPNEnabled = boolFromEnv("GRPC_ENFORCE_ALPN_ENABLED", true)
 
-	// NewPickFirstEnabled is set if the new pickfirst leaf policy is to be used
-	// instead of the exiting pickfirst implementation. This can be disabled by
-	// setting the environment variable "GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST"
-	// to "false".
-	NewPickFirstEnabled = boolFromEnv("GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST", true)
-
 	// XDSEndpointHashKeyBackwardCompat controls the parsing of the endpoint hash
 	// key from EDS LbEndpoint metadata. Endpoint hash keys can be disabled by
 	// setting "GRPC_XDS_ENDPOINT_HASH_KEY_BACKWARD_COMPAT" to "true". When the
@@ -75,6 +69,14 @@
 	// ALTSHandshakerKeepaliveParams is set if we should add the
 	// KeepaliveParams when dial the ALTS handshaker service.
 	ALTSHandshakerKeepaliveParams = boolFromEnv("GRPC_EXPERIMENTAL_ALTS_HANDSHAKER_KEEPALIVE_PARAMS", false)
+
+	// EnableDefaultPortForProxyTarget controls whether the resolver adds a default port 443
+	// to a target address that lacks one. This flag only has an effect when all of
+	// the following conditions are met:
+	//   - A connect proxy is being used.
+	//   - Target resolution is disabled.
+	//   - The DNS resolver is being used.
+	EnableDefaultPortForProxyTarget = boolFromEnv("GRPC_EXPERIMENTAL_ENABLE_DEFAULT_PORT_FOR_PROXY_TARGET", true)
 )
 
 func boolFromEnv(envVar string, def bool) bool {
diff --git a/vendor/google.golang.org/grpc/internal/envconfig/xds.go b/vendor/google.golang.org/grpc/internal/envconfig/xds.go
index b1f883b..7685d08 100644
--- a/vendor/google.golang.org/grpc/internal/envconfig/xds.go
+++ b/vendor/google.golang.org/grpc/internal/envconfig/xds.go
@@ -74,4 +74,9 @@
 	// For more details, see:
 	// https://github.com/grpc/proposal/blob/master/A86-xds-http-connect.md
 	XDSHTTPConnectEnabled = boolFromEnv("GRPC_EXPERIMENTAL_XDS_HTTP_CONNECT", false)
+
+	// XDSBootstrapCallCredsEnabled controls if call credentials can be used in
+	// xDS bootstrap configuration via the `call_creds` field. For more details,
+	// see: https://github.com/grpc/proposal/blob/master/A97-xds-jwt-call-creds.md
+	XDSBootstrapCallCredsEnabled = boolFromEnv("GRPC_EXPERIMENTAL_XDS_BOOTSTRAP_CALL_CREDS", false)
 )
diff --git a/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go b/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go
index 20b8fb0..5bfa67b 100644
--- a/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go
+++ b/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go
@@ -22,11 +22,13 @@
 
 import (
 	"fmt"
+	"net"
 	"net/http"
 	"net/url"
 	"sync"
 
 	"google.golang.org/grpc/grpclog"
+	"google.golang.org/grpc/internal/envconfig"
 	"google.golang.org/grpc/internal/proxyattributes"
 	"google.golang.org/grpc/internal/transport"
 	"google.golang.org/grpc/internal/transport/networktype"
@@ -40,6 +42,8 @@
 	HTTPSProxyFromEnvironment = http.ProxyFromEnvironment
 )
 
+const defaultPort = "443"
+
 // delegatingResolver manages both target URI and proxy address resolution by
 // delegating these tasks to separate child resolvers. Essentially, it acts as
 // an intermediary between the gRPC ClientConn and the child resolvers.
@@ -107,10 +111,18 @@
 		targetResolver: nopResolver{},
 	}
 
+	addr := target.Endpoint()
 	var err error
-	r.proxyURL, err = proxyURLForTarget(target.Endpoint())
+	if target.URL.Scheme == "dns" && !targetResolutionEnabled && envconfig.EnableDefaultPortForProxyTarget {
+		addr, err = parseTarget(addr)
+		if err != nil {
+			return nil, fmt.Errorf("delegating_resolver: invalid target address %q: %v", target.Endpoint(), err)
+		}
+	}
+
+	r.proxyURL, err = proxyURLForTarget(addr)
 	if err != nil {
-		return nil, fmt.Errorf("delegating_resolver: failed to determine proxy URL for target %s: %v", target, err)
+		return nil, fmt.Errorf("delegating_resolver: failed to determine proxy URL for target %q: %v", target, err)
 	}
 
 	// proxy is not configured or proxy address excluded using `NO_PROXY` env
@@ -132,8 +144,8 @@
 	// bypass the target resolver and store the unresolved target address.
 	if target.URL.Scheme == "dns" && !targetResolutionEnabled {
 		r.targetResolverState = &resolver.State{
-			Addresses: []resolver.Address{{Addr: target.Endpoint()}},
-			Endpoints: []resolver.Endpoint{{Addresses: []resolver.Address{{Addr: target.Endpoint()}}}},
+			Addresses: []resolver.Address{{Addr: addr}},
+			Endpoints: []resolver.Endpoint{{Addresses: []resolver.Address{{Addr: addr}}}},
 		}
 		r.updateTargetResolverState(*r.targetResolverState)
 		return r, nil
@@ -202,6 +214,44 @@
 	return false
 }
 
+// parseTarget takes a target string and ensures it is a valid "host:port" target.
+//
+// It does the following:
+//  1. If the target already has a port (e.g., "host:port", "[ipv6]:port"),
+//     it is returned as is.
+//  2. If the host part is empty (e.g., ":80"), it defaults to "localhost",
+//     returning "localhost:80".
+//  3. If the target is missing a port (e.g., "host", "ipv6"), the defaultPort
+//     is added.
+//
+// An error is returned for empty targets or targets with a trailing colon
+// but no port (e.g., "host:").
+func parseTarget(target string) (string, error) {
+	if target == "" {
+		return "", fmt.Errorf("missing address")
+	}
+
+	host, port, err := net.SplitHostPort(target)
+	if err != nil {
+		// If SplitHostPort fails, it's likely because the port is missing.
+		// We append the default port and return the result.
+		return net.JoinHostPort(target, defaultPort), nil
+	}
+
+	// If SplitHostPort succeeds, we check for edge cases.
+	if port == "" {
+		// A success with an empty port means the target had a trailing colon,
+		// e.g., "host:", which is an error.
+		return "", fmt.Errorf("missing port after port-separator colon")
+	}
+	if host == "" {
+		// A success with an empty host means the target was like ":80".
+		// We default the host to "localhost".
+		host = "localhost"
+	}
+	return net.JoinHostPort(host, port), nil
+}
+
 func skipProxy(address resolver.Address) bool {
 	// Avoid proxy when network is not tcp.
 	networkType, ok := networktype.Get(address)
diff --git a/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go b/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go
index 7904465..d5f7e4d 100644
--- a/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go
+++ b/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go
@@ -64,6 +64,16 @@
 	}
 }
 
+// RecordInt64UpDownCount records the measurement alongside labels on the int
+// count associated with the provided handle.
+func (l *MetricsRecorderList) RecordInt64UpDownCount(handle *estats.Int64UpDownCountHandle, incr int64, labels ...string) {
+	verifyLabels(handle.Descriptor(), labels...)
+
+	for _, metricRecorder := range l.metricsRecorders {
+		metricRecorder.RecordInt64UpDownCount(handle, incr, labels...)
+	}
+}
+
 // RecordFloat64Count records the measurement alongside labels on the float
 // count associated with the provided handle.
 func (l *MetricsRecorderList) RecordFloat64Count(handle *estats.Float64CountHandle, incr float64, labels ...string) {
diff --git a/vendor/google.golang.org/grpc/internal/stats/stats.go b/vendor/google.golang.org/grpc/internal/stats/stats.go
new file mode 100644
index 0000000..49019b8
--- /dev/null
+++ b/vendor/google.golang.org/grpc/internal/stats/stats.go
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright 2025 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package stats
+
+import (
+	"context"
+
+	"google.golang.org/grpc/stats"
+)
+
+type combinedHandler struct {
+	handlers []stats.Handler
+}
+
+// NewCombinedHandler combines multiple stats.Handlers into a single handler.
+//
+// It returns nil if no handlers are provided. If only one handler is
+// provided, it is returned directly without wrapping.
+func NewCombinedHandler(handlers ...stats.Handler) stats.Handler {
+	switch len(handlers) {
+	case 0:
+		return nil
+	case 1:
+		return handlers[0]
+	default:
+		return &combinedHandler{handlers: handlers}
+	}
+}
+
+func (ch *combinedHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context {
+	for _, h := range ch.handlers {
+		ctx = h.TagRPC(ctx, info)
+	}
+	return ctx
+}
+
+func (ch *combinedHandler) HandleRPC(ctx context.Context, stats stats.RPCStats) {
+	for _, h := range ch.handlers {
+		h.HandleRPC(ctx, stats)
+	}
+}
+
+func (ch *combinedHandler) TagConn(ctx context.Context, info *stats.ConnTagInfo) context.Context {
+	for _, h := range ch.handlers {
+		ctx = h.TagConn(ctx, info)
+	}
+	return ctx
+}
+
+func (ch *combinedHandler) HandleConn(ctx context.Context, stats stats.ConnStats) {
+	for _, h := range ch.handlers {
+		h.HandleConn(ctx, stats)
+	}
+}
diff --git a/vendor/google.golang.org/grpc/internal/transport/client_stream.go b/vendor/google.golang.org/grpc/internal/transport/client_stream.go
index ccc0e01..9804525 100644
--- a/vendor/google.golang.org/grpc/internal/transport/client_stream.go
+++ b/vendor/google.golang.org/grpc/internal/transport/client_stream.go
@@ -29,25 +29,27 @@
 
 // ClientStream implements streaming functionality for a gRPC client.
 type ClientStream struct {
-	*Stream // Embed for common stream functionality.
+	Stream // Embed for common stream functionality.
 
 	ct       *http2Client
 	done     chan struct{} // closed at the end of stream to unblock writers.
 	doneFunc func()        // invoked at the end of stream.
 
-	headerChan       chan struct{} // closed to indicate the end of header metadata.
-	headerChanClosed uint32        // set when headerChan is closed. Used to avoid closing headerChan multiple times.
+	headerChan chan struct{} // closed to indicate the end of header metadata.
+	header     metadata.MD   // the received header metadata
+
+	status *status.Status // the status error received from the server
+
+	// Non-pointer fields are at the end to optimize GC allocations.
+
 	// headerValid indicates whether a valid header was received.  Only
 	// meaningful after headerChan is closed (always call waitOnHeader() before
 	// reading its value).
-	headerValid bool
-	header      metadata.MD // the received header metadata
-	noHeaders   bool        // set if the client never received headers (set only after the stream is done).
-
-	bytesReceived atomic.Bool // indicates whether any bytes have been received on this stream
-	unprocessed   atomic.Bool // set if the server sends a refused stream or GOAWAY including this stream
-
-	status *status.Status // the status error received from the server
+	headerValid      bool
+	noHeaders        bool        // set if the client never received headers (set only after the stream is done).
+	headerChanClosed uint32      // set when headerChan is closed. Used to avoid closing headerChan multiple times.
+	bytesReceived    atomic.Bool // indicates whether any bytes have been received on this stream
+	unprocessed      atomic.Bool // set if the server sends a refused stream or GOAWAY including this stream
 }
 
 // Read reads an n byte message from the input stream.
@@ -142,3 +144,11 @@
 func (s *ClientStream) Status() *status.Status {
 	return s.status
 }
+
+func (s *ClientStream) requestRead(n int) {
+	s.ct.adjustWindow(s, uint32(n))
+}
+
+func (s *ClientStream) updateWindow(n int) {
+	s.ct.updateWindow(s, uint32(n))
+}
diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go
index a2831e5..2dcd1e6 100644
--- a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go
+++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go
@@ -496,6 +496,16 @@
 	serverSide
 )
 
+// maxWriteBufSize is the maximum length (number of elements) the cached
+// writeBuf can grow to. The length depends on the number of buffers
+// contained within the BufferSlice produced by the codec, which is
+// generally small.
+//
+// If a writeBuf larger than this limit is required, it will be allocated
+// and freed after use, rather than being cached. This avoids holding
+// on to large amounts of memory.
+const maxWriteBufSize = 64
+
 // Loopy receives frames from the control buffer.
 // Each frame is handled individually; most of the work done by loopy goes
 // into handling data frames. Loopy maintains a queue of active streams, and each
@@ -530,6 +540,8 @@
 
 	// Side-specific handlers
 	ssGoAwayHandler func(*goAway) (bool, error)
+
+	writeBuf [][]byte // cached slice to avoid heap allocations for calls to mem.Reader.Peek.
 }
 
 func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger, goAwayHandler func(*goAway) (bool, error), bufferPool mem.BufferPool) *loopyWriter {
@@ -665,11 +677,10 @@
 
 func (l *loopyWriter) registerStreamHandler(h *registerStream) {
 	str := &outStream{
-		id:     h.streamID,
-		state:  empty,
-		itl:    &itemList{},
-		wq:     h.wq,
-		reader: mem.BufferSlice{}.Reader(),
+		id:    h.streamID,
+		state: empty,
+		itl:   &itemList{},
+		wq:    h.wq,
 	}
 	l.estdStreams[h.streamID] = str
 }
@@ -701,11 +712,10 @@
 	}
 	// Case 2: Client wants to originate stream.
 	str := &outStream{
-		id:     h.streamID,
-		state:  empty,
-		itl:    &itemList{},
-		wq:     h.wq,
-		reader: mem.BufferSlice{}.Reader(),
+		id:    h.streamID,
+		state: empty,
+		itl:   &itemList{},
+		wq:    h.wq,
 	}
 	return l.originateStream(str, h)
 }
@@ -948,11 +958,11 @@
 	if str == nil {
 		return true, nil
 	}
-	reader := str.reader
+	reader := &str.reader
 	dataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream.
 	if !dataItem.processing {
 		dataItem.processing = true
-		str.reader.Reset(dataItem.data)
+		reader.Reset(dataItem.data)
 		dataItem.data.Free()
 	}
 	// A data item is represented by a dataFrame, since it later translates into
@@ -964,11 +974,11 @@
 
 	if len(dataItem.h) == 0 && reader.Remaining() == 0 { // Empty data frame
 		// Client sends out empty data frame with endStream = true
-		if err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil {
+		if err := l.framer.writeData(dataItem.streamID, dataItem.endStream, nil); err != nil {
 			return false, err
 		}
 		str.itl.dequeue() // remove the empty data item from stream
-		_ = reader.Close()
+		reader.Close()
 		if str.itl.isEmpty() {
 			str.state = empty
 		} else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers.
@@ -1001,25 +1011,20 @@
 	remainingBytes := len(dataItem.h) + reader.Remaining() - hSize - dSize
 	size := hSize + dSize
 
-	var buf *[]byte
-
-	if hSize != 0 && dSize == 0 {
-		buf = &dataItem.h
-	} else {
-		// Note: this is only necessary because the http2.Framer does not support
-		// partially writing a frame, so the sequence must be materialized into a buffer.
-		// TODO: Revisit once https://github.com/golang/go/issues/66655 is addressed.
-		pool := l.bufferPool
-		if pool == nil {
-			// Note that this is only supposed to be nil in tests. Otherwise, stream is
-			// always initialized with a BufferPool.
-			pool = mem.DefaultBufferPool()
+	l.writeBuf = l.writeBuf[:0]
+	if hSize > 0 {
+		l.writeBuf = append(l.writeBuf, dataItem.h[:hSize])
+	}
+	if dSize > 0 {
+		var err error
+		l.writeBuf, err = reader.Peek(dSize, l.writeBuf)
+		if err != nil {
+			// This must never happen since the reader must have at least dSize
+			// bytes.
+			// Log an error to fail tests.
+			l.logger.Errorf("unexpected error while reading Data frame payload: %v", err)
+			return false, err
 		}
-		buf = pool.Get(size)
-		defer pool.Put(buf)
-
-		copy((*buf)[:hSize], dataItem.h)
-		_, _ = reader.Read((*buf)[hSize:])
 	}
 
 	// Now that outgoing flow controls are checked we can replenish str's write quota
@@ -1032,7 +1037,14 @@
 	if dataItem.onEachWrite != nil {
 		dataItem.onEachWrite()
 	}
-	if err := l.framer.fr.WriteData(dataItem.streamID, endStream, (*buf)[:size]); err != nil {
+	err := l.framer.writeData(dataItem.streamID, endStream, l.writeBuf)
+	reader.Discard(dSize)
+	if cap(l.writeBuf) > maxWriteBufSize {
+		l.writeBuf = nil
+	} else {
+		clear(l.writeBuf)
+	}
+	if err != nil {
 		return false, err
 	}
 	str.bytesOutStanding += size
@@ -1040,7 +1052,7 @@
 	dataItem.h = dataItem.h[hSize:]
 
 	if remainingBytes == 0 { // All the data from that message was written out.
-		_ = reader.Close()
+		reader.Close()
 		str.itl.dequeue()
 	}
 	if str.itl.isEmpty() {
diff --git a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go
index dfc0f22..7cfbc96 100644
--- a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go
+++ b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go
@@ -28,7 +28,7 @@
 // writeQuota is a soft limit on the amount of data a stream can
 // schedule before some of it is written out.
 type writeQuota struct {
-	quota int32
+	_ noCopy
 	// get waits on read from when quota goes less than or equal to zero.
 	// replenish writes on it when quota goes positive again.
 	ch chan struct{}
@@ -38,16 +38,17 @@
 	// It is implemented as a field so that it can be updated
 	// by tests.
 	replenish func(n int)
+	quota     int32
 }
 
-func newWriteQuota(sz int32, done <-chan struct{}) *writeQuota {
-	w := &writeQuota{
-		quota: sz,
-		ch:    make(chan struct{}, 1),
-		done:  done,
-	}
+// init allows a writeQuota to be initialized in-place, which is useful for
+// resetting a buffer or for avoiding a heap allocation when the buffer is
+// embedded in another struct.
+func (w *writeQuota) init(sz int32, done <-chan struct{}) {
+	w.quota = sz
+	w.ch = make(chan struct{}, 1)
+	w.done = done
 	w.replenish = w.realReplenish
-	return w
 }
 
 func (w *writeQuota) get(sz int32) error {
@@ -67,9 +68,9 @@
 
 func (w *writeQuota) realReplenish(n int) {
 	sz := int32(n)
-	a := atomic.AddInt32(&w.quota, sz)
-	b := a - sz
-	if b <= 0 && a > 0 {
+	newQuota := atomic.AddInt32(&w.quota, sz)
+	previousQuota := newQuota - sz
+	if previousQuota <= 0 && newQuota > 0 {
 		select {
 		case w.ch <- struct{}{}:
 		default:
diff --git a/vendor/google.golang.org/grpc/internal/transport/handler_server.go b/vendor/google.golang.org/grpc/internal/transport/handler_server.go
index d954a64..7ab3422 100644
--- a/vendor/google.golang.org/grpc/internal/transport/handler_server.go
+++ b/vendor/google.golang.org/grpc/internal/transport/handler_server.go
@@ -50,7 +50,7 @@
 // NewServerHandlerTransport returns a ServerTransport handling gRPC from
 // inside an http.Handler, or writes an HTTP error to w and returns an error.
 // It requires that the http Server supports HTTP/2.
-func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []stats.Handler, bufferPool mem.BufferPool) (ServerTransport, error) {
+func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats stats.Handler, bufferPool mem.BufferPool) (ServerTransport, error) {
 	if r.Method != http.MethodPost {
 		w.Header().Set("Allow", http.MethodPost)
 		msg := fmt.Sprintf("invalid gRPC request method %q", r.Method)
@@ -170,7 +170,7 @@
 	// TODO make sure this is consistent across handler_server and http2_server
 	contentSubtype string
 
-	stats  []stats.Handler
+	stats  stats.Handler
 	logger *grpclog.PrefixLogger
 
 	bufferPool mem.BufferPool
@@ -274,15 +274,13 @@
 		}
 	})
 
-	if err == nil { // transport has not been closed
+	if err == nil && ht.stats != nil { // transport has not been closed
 		// Note: The trailer fields are compressed with hpack after this call returns.
 		// No WireLength field is set here.
 		s.hdrMu.Lock()
-		for _, sh := range ht.stats {
-			sh.HandleRPC(s.Context(), &stats.OutTrailer{
-				Trailer: s.trailer.Copy(),
-			})
-		}
+		ht.stats.HandleRPC(s.Context(), &stats.OutTrailer{
+			Trailer: s.trailer.Copy(),
+		})
 		s.hdrMu.Unlock()
 	}
 	ht.Close(errors.New("finished writing status"))
@@ -374,19 +372,23 @@
 		ht.rw.(http.Flusher).Flush()
 	})
 
-	if err == nil {
-		for _, sh := range ht.stats {
-			// Note: The header fields are compressed with hpack after this call returns.
-			// No WireLength field is set here.
-			sh.HandleRPC(s.Context(), &stats.OutHeader{
-				Header:      md.Copy(),
-				Compression: s.sendCompress,
-			})
-		}
+	if err == nil && ht.stats != nil {
+		// Note: The header fields are compressed with hpack after this call returns.
+		// No WireLength field is set here.
+		ht.stats.HandleRPC(s.Context(), &stats.OutHeader{
+			Header:      md.Copy(),
+			Compression: s.sendCompress,
+		})
 	}
 	return err
 }
 
+func (ht *serverHandlerTransport) adjustWindow(*ServerStream, uint32) {
+}
+
+func (ht *serverHandlerTransport) updateWindow(*ServerStream, uint32) {
+}
+
 func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream func(*ServerStream)) {
 	// With this transport type there will be exactly 1 stream: this HTTP request.
 	var cancel context.CancelFunc
@@ -411,11 +413,9 @@
 	ctx = metadata.NewIncomingContext(ctx, ht.headerMD)
 	req := ht.req
 	s := &ServerStream{
-		Stream: &Stream{
+		Stream: Stream{
 			id:             0, // irrelevant
 			ctx:            ctx,
-			requestRead:    func(int) {},
-			buf:            newRecvBuffer(),
 			method:         req.URL.Path,
 			recvCompress:   req.Header.Get("grpc-encoding"),
 			contentSubtype: ht.contentSubtype,
@@ -424,9 +424,11 @@
 		st:               ht,
 		headerWireLength: 0, // won't have access to header wire length until golang/go#18997.
 	}
-	s.trReader = &transportReader{
-		reader:        &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf},
-		windowHandler: func(int) {},
+	s.Stream.buf.init()
+	s.readRequester = s
+	s.trReader = transportReader{
+		reader:        recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: &s.buf},
+		windowHandler: s,
 	}
 
 	// readerDone is closed when the Body.Read-ing goroutine exits.
diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go
index 7cb2387..65b4ab2 100644
--- a/vendor/google.golang.org/grpc/internal/transport/http2_client.go
+++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go
@@ -44,6 +44,7 @@
 	"google.golang.org/grpc/internal/grpcutil"
 	imetadata "google.golang.org/grpc/internal/metadata"
 	"google.golang.org/grpc/internal/proxyattributes"
+	istats "google.golang.org/grpc/internal/stats"
 	istatus "google.golang.org/grpc/internal/status"
 	isyscall "google.golang.org/grpc/internal/syscall"
 	"google.golang.org/grpc/internal/transport/networktype"
@@ -105,7 +106,7 @@
 	kp               keepalive.ClientParameters
 	keepaliveEnabled bool
 
-	statsHandlers []stats.Handler
+	statsHandler stats.Handler
 
 	initialWindowSize int32
 
@@ -335,14 +336,14 @@
 		writerDone:            make(chan struct{}),
 		goAway:                make(chan struct{}),
 		keepaliveDone:         make(chan struct{}),
-		framer:                newFramer(conn, writeBufSize, readBufSize, opts.SharedWriteBuffer, maxHeaderListSize),
+		framer:                newFramer(conn, writeBufSize, readBufSize, opts.SharedWriteBuffer, maxHeaderListSize, opts.BufferPool),
 		fc:                    &trInFlow{limit: uint32(icwz)},
 		scheme:                scheme,
 		activeStreams:         make(map[uint32]*ClientStream),
 		isSecure:              isSecure,
 		perRPCCreds:           perRPCCreds,
 		kp:                    kp,
-		statsHandlers:         opts.StatsHandlers,
+		statsHandler:          istats.NewCombinedHandler(opts.StatsHandlers...),
 		initialWindowSize:     initialWindowSize,
 		nextID:                1,
 		maxConcurrentStreams:  defaultMaxStreamsClient,
@@ -386,15 +387,14 @@
 			updateFlowControl: t.updateFlowControl,
 		}
 	}
-	for _, sh := range t.statsHandlers {
-		t.ctx = sh.TagConn(t.ctx, &stats.ConnTagInfo{
+	if t.statsHandler != nil {
+		t.ctx = t.statsHandler.TagConn(t.ctx, &stats.ConnTagInfo{
 			RemoteAddr: t.remoteAddr,
 			LocalAddr:  t.localAddr,
 		})
-		connBegin := &stats.ConnBegin{
+		t.statsHandler.HandleConn(t.ctx, &stats.ConnBegin{
 			Client: true,
-		}
-		sh.HandleConn(t.ctx, connBegin)
+		})
 	}
 	if t.keepaliveEnabled {
 		t.kpDormancyCond = sync.NewCond(&t.mu)
@@ -481,10 +481,9 @@
 func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *ClientStream {
 	// TODO(zhaoq): Handle uint32 overflow of Stream.id.
 	s := &ClientStream{
-		Stream: &Stream{
+		Stream: Stream{
 			method:         callHdr.Method,
 			sendCompress:   callHdr.SendCompress,
-			buf:            newRecvBuffer(),
 			contentSubtype: callHdr.ContentSubtype,
 		},
 		ct:         t,
@@ -492,26 +491,21 @@
 		headerChan: make(chan struct{}),
 		doneFunc:   callHdr.DoneFunc,
 	}
-	s.wq = newWriteQuota(defaultWriteQuota, s.done)
-	s.requestRead = func(n int) {
-		t.adjustWindow(s, uint32(n))
-	}
+	s.Stream.buf.init()
+	s.Stream.wq.init(defaultWriteQuota, s.done)
+	s.readRequester = s
 	// The client side stream context should have exactly the same life cycle with the user provided context.
 	// That means, s.ctx should be read-only. And s.ctx is done iff ctx is done.
 	// So we use the original context here instead of creating a copy.
 	s.ctx = ctx
-	s.trReader = &transportReader{
-		reader: &recvBufferReader{
-			ctx:     s.ctx,
-			ctxDone: s.ctx.Done(),
-			recv:    s.buf,
-			closeStream: func(err error) {
-				s.Close(err)
-			},
+	s.trReader = transportReader{
+		reader: recvBufferReader{
+			ctx:          s.ctx,
+			ctxDone:      s.ctx.Done(),
+			recv:         &s.buf,
+			clientStream: s,
 		},
-		windowHandler: func(n int) {
-			t.updateWindow(s, uint32(n))
-		},
+		windowHandler: s,
 	}
 	return s
 }
@@ -823,7 +817,7 @@
 			return nil
 		},
 		onOrphaned: cleanup,
-		wq:         s.wq,
+		wq:         &s.wq,
 	}
 	firstTry := true
 	var ch chan struct{}
@@ -854,7 +848,7 @@
 		transportDrainRequired = t.nextID > MaxStreamID
 
 		s.id = hdr.streamID
-		s.fc = &inFlow{limit: uint32(t.initialWindowSize)}
+		s.fc = inFlow{limit: uint32(t.initialWindowSize)}
 		t.activeStreams[s.id] = s
 		t.mu.Unlock()
 
@@ -905,27 +899,23 @@
 			return nil, &NewStreamError{Err: ErrConnClosing, AllowTransparentRetry: true}
 		}
 	}
-	if len(t.statsHandlers) != 0 {
+	if t.statsHandler != nil {
 		header, ok := metadata.FromOutgoingContext(ctx)
 		if ok {
 			header.Set("user-agent", t.userAgent)
 		} else {
 			header = metadata.Pairs("user-agent", t.userAgent)
 		}
-		for _, sh := range t.statsHandlers {
-			// Note: The header fields are compressed with hpack after this call returns.
-			// No WireLength field is set here.
-			// Note: Creating a new stats object to prevent pollution.
-			outHeader := &stats.OutHeader{
-				Client:      true,
-				FullMethod:  callHdr.Method,
-				RemoteAddr:  t.remoteAddr,
-				LocalAddr:   t.localAddr,
-				Compression: callHdr.SendCompress,
-				Header:      header,
-			}
-			sh.HandleRPC(s.ctx, outHeader)
-		}
+		// Note: The header fields are compressed with hpack after this call returns.
+		// No WireLength field is set here.
+		t.statsHandler.HandleRPC(s.ctx, &stats.OutHeader{
+			Client:      true,
+			FullMethod:  callHdr.Method,
+			RemoteAddr:  t.remoteAddr,
+			LocalAddr:   t.localAddr,
+			Compression: callHdr.SendCompress,
+			Header:      header,
+		})
 	}
 	if transportDrainRequired {
 		if t.logger.V(logLevel) {
@@ -1002,6 +992,9 @@
 // accessed anymore.
 func (t *http2Client) Close(err error) {
 	t.conn.SetWriteDeadline(time.Now().Add(time.Second * 10))
+	// For background on the deadline value chosen here, see
+	// https://github.com/grpc/grpc-go/issues/8425#issuecomment-3057938248 .
+	t.conn.SetReadDeadline(time.Now().Add(time.Second))
 	t.mu.Lock()
 	// Make sure we only close once.
 	if t.state == closing {
@@ -1063,11 +1056,10 @@
 	for _, s := range streams {
 		t.closeStream(s, err, false, http2.ErrCodeNo, st, nil, false)
 	}
-	for _, sh := range t.statsHandlers {
-		connEnd := &stats.ConnEnd{
+	if t.statsHandler != nil {
+		t.statsHandler.HandleConn(t.ctx, &stats.ConnEnd{
 			Client: true,
-		}
-		sh.HandleConn(t.ctx, connEnd)
+		})
 	}
 }
 
@@ -1178,7 +1170,7 @@
 	})
 }
 
-func (t *http2Client) handleData(f *http2.DataFrame) {
+func (t *http2Client) handleData(f *parsedDataFrame) {
 	size := f.Header().Length
 	var sendBDPPing bool
 	if t.bdpEst != nil {
@@ -1222,22 +1214,15 @@
 			t.closeStream(s, io.EOF, true, http2.ErrCodeFlowControl, status.New(codes.Internal, err.Error()), nil, false)
 			return
 		}
+		dataLen := f.data.Len()
 		if f.Header().Flags.Has(http2.FlagDataPadded) {
-			if w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 {
+			if w := s.fc.onRead(size - uint32(dataLen)); w > 0 {
 				t.controlBuf.put(&outgoingWindowUpdate{s.id, w})
 			}
 		}
-		// TODO(bradfitz, zhaoq): A copy is required here because there is no
-		// guarantee f.Data() is consumed before the arrival of next frame.
-		// Can this copy be eliminated?
-		if len(f.Data()) > 0 {
-			pool := t.bufferPool
-			if pool == nil {
-				// Note that this is only supposed to be nil in tests. Otherwise, stream is
-				// always initialized with a BufferPool.
-				pool = mem.DefaultBufferPool()
-			}
-			s.write(recvMsg{buffer: mem.Copy(f.Data(), pool)})
+		if dataLen > 0 {
+			f.data.Ref()
+			s.write(recvMsg{buffer: f.data})
 		}
 	}
 	// The server has closed the stream without sending trailers.  Record that
@@ -1477,17 +1462,14 @@
 		contentTypeErr = "malformed header: missing HTTP content-type"
 		grpcMessage    string
 		recvCompress   string
-		httpStatusCode *int
 		httpStatusErr  string
-		rawStatusCode  = codes.Unknown
+		// the code from the grpc-status header, if present
+		grpcStatusCode = codes.Unknown
 		// headerError is set if an error is encountered while parsing the headers
 		headerError string
+		httpStatus  string
 	)
 
-	if initialHeader {
-		httpStatusErr = "malformed header: missing HTTP status"
-	}
-
 	for _, hf := range frame.Fields {
 		switch hf.Name {
 		case "content-type":
@@ -1507,36 +1489,11 @@
 				t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
 				return
 			}
-			rawStatusCode = codes.Code(uint32(code))
+			grpcStatusCode = codes.Code(uint32(code))
 		case "grpc-message":
 			grpcMessage = decodeGrpcMessage(hf.Value)
 		case ":status":
-			c, err := strconv.ParseInt(hf.Value, 10, 32)
-			if err != nil {
-				se := status.New(codes.Internal, fmt.Sprintf("transport: malformed http-status: %v", err))
-				t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
-				return
-			}
-			statusCode := int(c)
-			if statusCode >= 100 && statusCode < 200 {
-				if endStream {
-					se := status.New(codes.Internal, fmt.Sprintf(
-						"protocol error: informational header with status code %d must not have END_STREAM set", statusCode))
-					t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
-				}
-				return
-			}
-			httpStatusCode = &statusCode
-			if statusCode == 200 {
-				httpStatusErr = ""
-				break
-			}
-
-			httpStatusErr = fmt.Sprintf(
-				"unexpected HTTP status code received from server: %d (%s)",
-				statusCode,
-				http.StatusText(statusCode),
-			)
+			httpStatus = hf.Value
 		default:
 			if isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) {
 				break
@@ -1551,25 +1508,52 @@
 		}
 	}
 
-	if !isGRPC || httpStatusErr != "" {
-		var code = codes.Internal // when header does not include HTTP status, return INTERNAL
-
-		if httpStatusCode != nil {
+	// If a non-gRPC response is received, then evaluate the HTTP status to
+	// process the response and close the stream.
+	// In case http status doesn't provide any error information (status : 200),
+	// then evalute response code to be Unknown.
+	if !isGRPC {
+		var grpcErrorCode = codes.Internal
+		if httpStatus == "" {
+			httpStatusErr = "malformed header: missing HTTP status"
+		} else {
+			// Parse the status codes (e.g. "200", 404").
+			statusCode, err := strconv.Atoi(httpStatus)
+			if err != nil {
+				se := status.New(grpcErrorCode, fmt.Sprintf("transport: malformed http-status: %v", err))
+				t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
+				return
+			}
+			if statusCode >= 100 && statusCode < 200 {
+				if endStream {
+					se := status.New(codes.Internal, fmt.Sprintf(
+						"protocol error: informational header with status code %d must not have END_STREAM set", statusCode))
+					t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
+				}
+				// In case of informational headers, return.
+				return
+			}
+			httpStatusErr = fmt.Sprintf(
+				"unexpected HTTP status code received from server: %d (%s)",
+				statusCode,
+				http.StatusText(statusCode),
+			)
 			var ok bool
-			code, ok = HTTPStatusConvTab[*httpStatusCode]
+			grpcErrorCode, ok = HTTPStatusConvTab[statusCode]
 			if !ok {
-				code = codes.Unknown
+				grpcErrorCode = codes.Unknown
 			}
 		}
 		var errs []string
 		if httpStatusErr != "" {
 			errs = append(errs, httpStatusErr)
 		}
+
 		if contentTypeErr != "" {
 			errs = append(errs, contentTypeErr)
 		}
-		// Verify the HTTP response is a 200.
-		se := status.New(code, strings.Join(errs, "; "))
+
+		se := status.New(grpcErrorCode, strings.Join(errs, "; "))
 		t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
 		return
 	}
@@ -1600,22 +1584,20 @@
 		}
 	}
 
-	for _, sh := range t.statsHandlers {
+	if t.statsHandler != nil {
 		if !endStream {
-			inHeader := &stats.InHeader{
+			t.statsHandler.HandleRPC(s.ctx, &stats.InHeader{
 				Client:      true,
 				WireLength:  int(frame.Header().Length),
 				Header:      metadata.MD(mdata).Copy(),
 				Compression: s.recvCompress,
-			}
-			sh.HandleRPC(s.ctx, inHeader)
+			})
 		} else {
-			inTrailer := &stats.InTrailer{
+			t.statsHandler.HandleRPC(s.ctx, &stats.InTrailer{
 				Client:     true,
 				WireLength: int(frame.Header().Length),
 				Trailer:    metadata.MD(mdata).Copy(),
-			}
-			sh.HandleRPC(s.ctx, inTrailer)
+			})
 		}
 	}
 
@@ -1623,7 +1605,7 @@
 		return
 	}
 
-	status := istatus.NewWithProto(rawStatusCode, grpcMessage, mdata[grpcStatusDetailsBinHeader])
+	status := istatus.NewWithProto(grpcStatusCode, grpcMessage, mdata[grpcStatusDetailsBinHeader])
 
 	// If client received END_STREAM from server while stream was still active,
 	// send RST_STREAM.
@@ -1670,7 +1652,7 @@
 	// loop to keep reading incoming messages on this transport.
 	for {
 		t.controlBuf.throttle()
-		frame, err := t.framer.fr.ReadFrame()
+		frame, err := t.framer.readFrame()
 		if t.keepaliveEnabled {
 			atomic.StoreInt64(&t.lastRead, time.Now().UnixNano())
 		}
@@ -1685,7 +1667,7 @@
 				if s != nil {
 					// use error detail to provide better err message
 					code := http2ErrConvTab[se.Code]
-					errorDetail := t.framer.fr.ErrorDetail()
+					errorDetail := t.framer.errorDetail()
 					var msg string
 					if errorDetail != nil {
 						msg = errorDetail.Error()
@@ -1703,8 +1685,9 @@
 		switch frame := frame.(type) {
 		case *http2.MetaHeadersFrame:
 			t.operateHeaders(frame)
-		case *http2.DataFrame:
+		case *parsedDataFrame:
 			t.handleData(frame)
+			frame.data.Free()
 		case *http2.RSTStreamFrame:
 			t.handleRSTStream(frame)
 		case *http2.SettingsFrame:
diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go
index 83cee31..6f78a6b 100644
--- a/vendor/google.golang.org/grpc/internal/transport/http2_server.go
+++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go
@@ -35,6 +35,8 @@
 
 	"golang.org/x/net/http2"
 	"golang.org/x/net/http2/hpack"
+	"google.golang.org/protobuf/proto"
+
 	"google.golang.org/grpc/internal"
 	"google.golang.org/grpc/internal/grpclog"
 	"google.golang.org/grpc/internal/grpcutil"
@@ -42,7 +44,6 @@
 	istatus "google.golang.org/grpc/internal/status"
 	"google.golang.org/grpc/internal/syscall"
 	"google.golang.org/grpc/mem"
-	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/credentials"
@@ -86,7 +87,7 @@
 	// updates, reset streams, and various settings) to the controller.
 	controlBuf *controlBuffer
 	fc         *trInFlow
-	stats      []stats.Handler
+	stats      stats.Handler
 	// Keepalive and max-age parameters for the server.
 	kp keepalive.ServerParameters
 	// Keepalive enforcement policy.
@@ -168,7 +169,7 @@
 	if config.MaxHeaderListSize != nil {
 		maxHeaderListSize = *config.MaxHeaderListSize
 	}
-	framer := newFramer(conn, writeBufSize, readBufSize, config.SharedWriteBuffer, maxHeaderListSize)
+	framer := newFramer(conn, writeBufSize, readBufSize, config.SharedWriteBuffer, maxHeaderListSize, config.BufferPool)
 	// Send initial settings as connection preface to client.
 	isettings := []http2.Setting{{
 		ID:  http2.SettingMaxFrameSize,
@@ -260,7 +261,7 @@
 		fc:                &trInFlow{limit: uint32(icwz)},
 		state:             reachable,
 		activeStreams:     make(map[uint32]*ServerStream),
-		stats:             config.StatsHandlers,
+		stats:             config.StatsHandler,
 		kp:                kp,
 		idle:              time.Now(),
 		kep:               kep,
@@ -390,16 +391,15 @@
 	}
 	t.maxStreamID = streamID
 
-	buf := newRecvBuffer()
 	s := &ServerStream{
-		Stream: &Stream{
-			id:  streamID,
-			buf: buf,
-			fc:  &inFlow{limit: uint32(t.initialWindowSize)},
+		Stream: Stream{
+			id: streamID,
+			fc: inFlow{limit: uint32(t.initialWindowSize)},
 		},
 		st:               t,
 		headerWireLength: int(frame.Header().Length),
 	}
+	s.Stream.buf.init()
 	var (
 		// if false, content-type was missing or invalid
 		isGRPC      = false
@@ -640,25 +640,21 @@
 		t.channelz.SocketMetrics.StreamsStarted.Add(1)
 		t.channelz.SocketMetrics.LastRemoteStreamCreatedTimestamp.Store(time.Now().UnixNano())
 	}
-	s.requestRead = func(n int) {
-		t.adjustWindow(s, uint32(n))
-	}
+	s.readRequester = s
 	s.ctxDone = s.ctx.Done()
-	s.wq = newWriteQuota(defaultWriteQuota, s.ctxDone)
-	s.trReader = &transportReader{
-		reader: &recvBufferReader{
+	s.Stream.wq.init(defaultWriteQuota, s.ctxDone)
+	s.trReader = transportReader{
+		reader: recvBufferReader{
 			ctx:     s.ctx,
 			ctxDone: s.ctxDone,
-			recv:    s.buf,
+			recv:    &s.buf,
 		},
-		windowHandler: func(n int) {
-			t.updateWindow(s, uint32(n))
-		},
+		windowHandler: s,
 	}
 	// Register the stream with loopy.
 	t.controlBuf.put(&registerStream{
 		streamID: s.id,
-		wq:       s.wq,
+		wq:       &s.wq,
 	})
 	handle(s)
 	return nil
@@ -674,7 +670,7 @@
 	}()
 	for {
 		t.controlBuf.throttle()
-		frame, err := t.framer.fr.ReadFrame()
+		frame, err := t.framer.readFrame()
 		atomic.StoreInt64(&t.lastRead, time.Now().UnixNano())
 		if err != nil {
 			if se, ok := err.(http2.StreamError); ok {
@@ -711,8 +707,9 @@
 				})
 				continue
 			}
-		case *http2.DataFrame:
+		case *parsedDataFrame:
 			t.handleData(frame)
+			frame.data.Free()
 		case *http2.RSTStreamFrame:
 			t.handleRSTStream(frame)
 		case *http2.SettingsFrame:
@@ -792,7 +789,7 @@
 
 }
 
-func (t *http2Server) handleData(f *http2.DataFrame) {
+func (t *http2Server) handleData(f *parsedDataFrame) {
 	size := f.Header().Length
 	var sendBDPPing bool
 	if t.bdpEst != nil {
@@ -837,22 +834,15 @@
 			t.closeStream(s, true, http2.ErrCodeFlowControl, false)
 			return
 		}
+		dataLen := f.data.Len()
 		if f.Header().Flags.Has(http2.FlagDataPadded) {
-			if w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 {
+			if w := s.fc.onRead(size - uint32(dataLen)); w > 0 {
 				t.controlBuf.put(&outgoingWindowUpdate{s.id, w})
 			}
 		}
-		// TODO(bradfitz, zhaoq): A copy is required here because there is no
-		// guarantee f.Data() is consumed before the arrival of next frame.
-		// Can this copy be eliminated?
-		if len(f.Data()) > 0 {
-			pool := t.bufferPool
-			if pool == nil {
-				// Note that this is only supposed to be nil in tests. Otherwise, stream is
-				// always initialized with a BufferPool.
-				pool = mem.DefaultBufferPool()
-			}
-			s.write(recvMsg{buffer: mem.Copy(f.Data(), pool)})
+		if dataLen > 0 {
+			f.data.Ref()
+			s.write(recvMsg{buffer: f.data})
 		}
 	}
 	if f.StreamEnded() {
@@ -1059,14 +1049,13 @@
 		t.closeStream(s, true, http2.ErrCodeInternal, false)
 		return ErrHeaderListSizeLimitViolation
 	}
-	for _, sh := range t.stats {
+	if t.stats != nil {
 		// Note: Headers are compressed with hpack after this call returns.
 		// No WireLength field is set here.
-		outHeader := &stats.OutHeader{
+		t.stats.HandleRPC(s.Context(), &stats.OutHeader{
 			Header:      s.header.Copy(),
 			Compression: s.sendCompress,
-		}
-		sh.HandleRPC(s.Context(), outHeader)
+		})
 	}
 	return nil
 }
@@ -1134,10 +1123,10 @@
 	// Send a RST_STREAM after the trailers if the client has not already half-closed.
 	rst := s.getState() == streamActive
 	t.finishStream(s, rst, http2.ErrCodeNo, trailingHeader, true)
-	for _, sh := range t.stats {
+	if t.stats != nil {
 		// Note: The trailer fields are compressed with hpack after this call returns.
 		// No WireLength field is set here.
-		sh.HandleRPC(s.Context(), &stats.OutTrailer{
+		t.stats.HandleRPC(s.Context(), &stats.OutTrailer{
 			Trailer: s.trailer.Copy(),
 		})
 	}
@@ -1305,7 +1294,8 @@
 // deleteStream deletes the stream s from transport's active streams.
 func (t *http2Server) deleteStream(s *ServerStream, eosReceived bool) {
 	t.mu.Lock()
-	if _, ok := t.activeStreams[s.id]; ok {
+	_, isActive := t.activeStreams[s.id]
+	if isActive {
 		delete(t.activeStreams, s.id)
 		if len(t.activeStreams) == 0 {
 			t.idle = time.Now()
@@ -1313,7 +1303,7 @@
 	}
 	t.mu.Unlock()
 
-	if channelz.IsOn() {
+	if isActive && channelz.IsOn() {
 		if eosReceived {
 			t.channelz.SocketMetrics.StreamsSucceeded.Add(1)
 		} else {
diff --git a/vendor/google.golang.org/grpc/internal/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go
index e3663f8..6209eb2 100644
--- a/vendor/google.golang.org/grpc/internal/transport/http_util.go
+++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go
@@ -25,7 +25,6 @@
 	"fmt"
 	"io"
 	"math"
-	"net"
 	"net/http"
 	"net/url"
 	"strconv"
@@ -37,6 +36,7 @@
 	"golang.org/x/net/http2"
 	"golang.org/x/net/http2/hpack"
 	"google.golang.org/grpc/codes"
+	"google.golang.org/grpc/mem"
 )
 
 const (
@@ -300,11 +300,11 @@
 	buf       []byte
 	offset    int
 	batchSize int
-	conn      net.Conn
+	conn      io.Writer
 	err       error
 }
 
-func newBufWriter(conn net.Conn, batchSize int, pool *sync.Pool) *bufWriter {
+func newBufWriter(conn io.Writer, batchSize int, pool *sync.Pool) *bufWriter {
 	w := &bufWriter{
 		batchSize: batchSize,
 		conn:      conn,
@@ -388,15 +388,35 @@
 	return ioError{error: err}
 }
 
+type parsedDataFrame struct {
+	http2.FrameHeader
+	data mem.Buffer
+}
+
+func (df *parsedDataFrame) StreamEnded() bool {
+	return df.FrameHeader.Flags.Has(http2.FlagDataEndStream)
+}
+
 type framer struct {
-	writer *bufWriter
-	fr     *http2.Framer
+	writer    *bufWriter
+	fr        *http2.Framer
+	headerBuf []byte // cached slice for framer headers to reduce heap allocs.
+	reader    io.Reader
+	dataFrame parsedDataFrame // Cached data frame to avoid heap allocations.
+	pool      mem.BufferPool
+	errDetail error
 }
 
 var writeBufferPoolMap = make(map[int]*sync.Pool)
 var writeBufferMutex sync.Mutex
 
-func newFramer(conn net.Conn, writeBufferSize, readBufferSize int, sharedWriteBuffer bool, maxHeaderListSize uint32) *framer {
+func newFramer(conn io.ReadWriter, writeBufferSize, readBufferSize int, sharedWriteBuffer bool, maxHeaderListSize uint32, memPool mem.BufferPool) *framer {
+	if memPool == nil {
+		// Note that this is only supposed to be nil in tests. Otherwise, stream
+		// is always initialized with a BufferPool.
+		memPool = mem.DefaultBufferPool()
+	}
+
 	if writeBufferSize < 0 {
 		writeBufferSize = 0
 	}
@@ -412,6 +432,8 @@
 	f := &framer{
 		writer: w,
 		fr:     http2.NewFramer(w, r),
+		reader: r,
+		pool:   memPool,
 	}
 	f.fr.SetMaxReadFrameSize(http2MaxFrameLen)
 	// Opt-in to Frame reuse API on framer to reduce garbage.
@@ -422,6 +444,146 @@
 	return f
 }
 
+// writeData writes a DATA frame.
+//
+// It is the caller's responsibility not to violate the maximum frame size.
+func (f *framer) writeData(streamID uint32, endStream bool, data [][]byte) error {
+	var flags http2.Flags
+	if endStream {
+		flags = http2.FlagDataEndStream
+	}
+	length := uint32(0)
+	for _, d := range data {
+		length += uint32(len(d))
+	}
+	// TODO: Replace the header write with the framer API being added in
+	// https://github.com/golang/go/issues/66655.
+	f.headerBuf = append(f.headerBuf[:0],
+		byte(length>>16),
+		byte(length>>8),
+		byte(length),
+		byte(http2.FrameData),
+		byte(flags),
+		byte(streamID>>24),
+		byte(streamID>>16),
+		byte(streamID>>8),
+		byte(streamID))
+	if _, err := f.writer.Write(f.headerBuf); err != nil {
+		return err
+	}
+	for _, d := range data {
+		if _, err := f.writer.Write(d); err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+// readFrame reads a single frame. The returned Frame is only valid
+// until the next call to readFrame.
+func (f *framer) readFrame() (any, error) {
+	f.errDetail = nil
+	fh, err := f.fr.ReadFrameHeader()
+	if err != nil {
+		f.errDetail = f.fr.ErrorDetail()
+		return nil, err
+	}
+	// Read the data frame directly from the underlying io.Reader to avoid
+	// copies.
+	if fh.Type == http2.FrameData {
+		err = f.readDataFrame(fh)
+		return &f.dataFrame, err
+	}
+	fr, err := f.fr.ReadFrameForHeader(fh)
+	if err != nil {
+		f.errDetail = f.fr.ErrorDetail()
+		return nil, err
+	}
+	return fr, err
+}
+
+// errorDetail returns a more detailed error of the last error
+// returned by framer.readFrame. For instance, if readFrame
+// returns a StreamError with code PROTOCOL_ERROR, errorDetail
+// will say exactly what was invalid. errorDetail is not guaranteed
+// to return a non-nil value.
+// errorDetail is reset after the next call to readFrame.
+func (f *framer) errorDetail() error {
+	return f.errDetail
+}
+
+func (f *framer) readDataFrame(fh http2.FrameHeader) (err error) {
+	if fh.StreamID == 0 {
+		// DATA frames MUST be associated with a stream. If a
+		// DATA frame is received whose stream identifier
+		// field is 0x0, the recipient MUST respond with a
+		// connection error (Section 5.4.1) of type
+		// PROTOCOL_ERROR.
+		f.errDetail = errors.New("DATA frame with stream ID 0")
+		return http2.ConnectionError(http2.ErrCodeProtocol)
+	}
+	// Converting a *[]byte to a mem.SliceBuffer incurs a heap allocation. This
+	// conversion is performed by mem.NewBuffer. To avoid the extra allocation
+	// a []byte is allocated directly if required and cast to a mem.SliceBuffer.
+	var buf []byte
+	// poolHandle is the pointer returned by the buffer pool (if it's used.).
+	var poolHandle *[]byte
+	useBufferPool := !mem.IsBelowBufferPoolingThreshold(int(fh.Length))
+	if useBufferPool {
+		poolHandle = f.pool.Get(int(fh.Length))
+		buf = *poolHandle
+		defer func() {
+			if err != nil {
+				f.pool.Put(poolHandle)
+			}
+		}()
+	} else {
+		buf = make([]byte, int(fh.Length))
+	}
+	if fh.Flags.Has(http2.FlagDataPadded) {
+		if fh.Length == 0 {
+			return io.ErrUnexpectedEOF
+		}
+		// This initial 1-byte read can be inefficient for unbuffered readers,
+		// but it allows the rest of the payload to be read directly to the
+		// start of the destination slice. This makes it easy to return the
+		// original slice back to the buffer pool.
+		if _, err := io.ReadFull(f.reader, buf[:1]); err != nil {
+			return err
+		}
+		padSize := buf[0]
+		buf = buf[:len(buf)-1]
+		if int(padSize) > len(buf) {
+			// If the length of the padding is greater than the
+			// length of the frame payload, the recipient MUST
+			// treat this as a connection error.
+			// Filed: https://github.com/http2/http2-spec/issues/610
+			f.errDetail = errors.New("pad size larger than data payload")
+			return http2.ConnectionError(http2.ErrCodeProtocol)
+		}
+		if _, err := io.ReadFull(f.reader, buf); err != nil {
+			return err
+		}
+		buf = buf[:len(buf)-int(padSize)]
+	} else if _, err := io.ReadFull(f.reader, buf); err != nil {
+		return err
+	}
+
+	f.dataFrame.FrameHeader = fh
+	if useBufferPool {
+		// Update the handle to point to the (potentially re-sliced) buf.
+		*poolHandle = buf
+		f.dataFrame.data = mem.NewBuffer(poolHandle, f.pool)
+	} else {
+		f.dataFrame.data = mem.SliceBuffer(buf)
+	}
+	return nil
+}
+
+func (df *parsedDataFrame) Header() http2.FrameHeader {
+	return df.FrameHeader
+}
+
 func getWriteBufferPool(size int) *sync.Pool {
 	writeBufferMutex.Lock()
 	defer writeBufferMutex.Unlock()
diff --git a/vendor/google.golang.org/grpc/internal/transport/server_stream.go b/vendor/google.golang.org/grpc/internal/transport/server_stream.go
index cf8da0b..ed6a13b 100644
--- a/vendor/google.golang.org/grpc/internal/transport/server_stream.go
+++ b/vendor/google.golang.org/grpc/internal/transport/server_stream.go
@@ -32,7 +32,7 @@
 
 // ServerStream implements streaming functionality for a gRPC server.
 type ServerStream struct {
-	*Stream // Embed for common stream functionality.
+	Stream // Embed for common stream functionality.
 
 	st      internalServerTransport
 	ctxDone <-chan struct{} // closed at the end of stream.  Cache of ctx.Done() (for performance)
@@ -43,12 +43,13 @@
 	// Holds compressor names passed in grpc-accept-encoding metadata from the
 	// client.
 	clientAdvertisedCompressors string
-	headerWireLength            int
 
 	// hdrMu protects outgoing header and trailer metadata.
 	hdrMu      sync.Mutex
 	header     metadata.MD // the outgoing header metadata.  Updated by WriteHeader.
 	headerSent atomic.Bool // atomically set when the headers are sent out.
+
+	headerWireLength int
 }
 
 // Read reads an n byte message from the input stream.
@@ -178,3 +179,11 @@
 	s.hdrMu.Unlock()
 	return nil
 }
+
+func (s *ServerStream) requestRead(n int) {
+	s.st.adjustWindow(s, uint32(n))
+}
+
+func (s *ServerStream) updateWindow(n int) {
+	s.st.updateWindow(s, uint32(n))
+}
diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go
index 7dd53e8..5ff83a7 100644
--- a/vendor/google.golang.org/grpc/internal/transport/transport.go
+++ b/vendor/google.golang.org/grpc/internal/transport/transport.go
@@ -68,11 +68,11 @@
 	err     error
 }
 
-func newRecvBuffer() *recvBuffer {
-	b := &recvBuffer{
-		c: make(chan recvMsg, 1),
-	}
-	return b
+// init allows a recvBuffer to be initialized in-place, which is useful
+// for resetting a buffer or for avoiding a heap allocation when the buffer
+// is embedded in another struct.
+func (b *recvBuffer) init() {
+	b.c = make(chan recvMsg, 1)
 }
 
 func (b *recvBuffer) put(r recvMsg) {
@@ -123,12 +123,13 @@
 // recvBufferReader implements io.Reader interface to read the data from
 // recvBuffer.
 type recvBufferReader struct {
-	closeStream func(error) // Closes the client transport stream with the given error and nil trailer metadata.
-	ctx         context.Context
-	ctxDone     <-chan struct{} // cache of ctx.Done() (for performance).
-	recv        *recvBuffer
-	last        mem.Buffer // Stores the remaining data in the previous calls.
-	err         error
+	_            noCopy
+	clientStream *ClientStream // The client transport stream is closed with a status representing ctx.Err() and nil trailer metadata.
+	ctx          context.Context
+	ctxDone      <-chan struct{} // cache of ctx.Done() (for performance).
+	recv         *recvBuffer
+	last         mem.Buffer // Stores the remaining data in the previous calls.
+	err          error
 }
 
 func (r *recvBufferReader) ReadMessageHeader(header []byte) (n int, err error) {
@@ -139,7 +140,7 @@
 		n, r.last = mem.ReadUnsafe(header, r.last)
 		return n, nil
 	}
-	if r.closeStream != nil {
+	if r.clientStream != nil {
 		n, r.err = r.readMessageHeaderClient(header)
 	} else {
 		n, r.err = r.readMessageHeader(header)
@@ -164,7 +165,7 @@
 		}
 		return buf, nil
 	}
-	if r.closeStream != nil {
+	if r.clientStream != nil {
 		buf, r.err = r.readClient(n)
 	} else {
 		buf, r.err = r.read(n)
@@ -209,7 +210,7 @@
 		// TODO: delaying ctx error seems like a unnecessary side effect. What
 		// we really want is to mark the stream as done, and return ctx error
 		// faster.
-		r.closeStream(ContextErr(r.ctx.Err()))
+		r.clientStream.Close(ContextErr(r.ctx.Err()))
 		m := <-r.recv.get()
 		return r.readMessageHeaderAdditional(m, header)
 	case m := <-r.recv.get():
@@ -236,7 +237,7 @@
 		// TODO: delaying ctx error seems like a unnecessary side effect. What
 		// we really want is to mark the stream as done, and return ctx error
 		// faster.
-		r.closeStream(ContextErr(r.ctx.Err()))
+		r.clientStream.Close(ContextErr(r.ctx.Err()))
 		m := <-r.recv.get()
 		return r.readAdditional(m, n)
 	case m := <-r.recv.get():
@@ -285,27 +286,32 @@
 
 // Stream represents an RPC in the transport layer.
 type Stream struct {
-	id           uint32
 	ctx          context.Context // the associated context of the stream
 	method       string          // the associated RPC method of the stream
 	recvCompress string
 	sendCompress string
-	buf          *recvBuffer
-	trReader     *transportReader
-	fc           *inFlow
-	wq           *writeQuota
 
-	// Callback to state application's intentions to read data. This
-	// is used to adjust flow control, if needed.
-	requestRead func(int)
-
-	state streamState
+	readRequester readRequester
 
 	// contentSubtype is the content-subtype for requests.
 	// this must be lowercase or the behavior is undefined.
 	contentSubtype string
 
 	trailer metadata.MD // the key-value map of trailer metadata.
+
+	// Non-pointer fields are at the end to optimize GC performance.
+	state    streamState
+	id       uint32
+	buf      recvBuffer
+	trReader transportReader
+	fc       inFlow
+	wq       writeQuota
+}
+
+// readRequester is used to state application's intentions to read data. This
+// is used to adjust flow control, if needed.
+type readRequester interface {
+	requestRead(int)
 }
 
 func (s *Stream) swapState(st streamState) streamState {
@@ -355,7 +361,7 @@
 	if er := s.trReader.er; er != nil {
 		return er
 	}
-	s.requestRead(len(header))
+	s.readRequester.requestRead(len(header))
 	for len(header) != 0 {
 		n, err := s.trReader.ReadMessageHeader(header)
 		header = header[n:]
@@ -378,7 +384,7 @@
 	if er := s.trReader.er; er != nil {
 		return nil, er
 	}
-	s.requestRead(n)
+	s.readRequester.requestRead(n)
 	for n != 0 {
 		buf, err := s.trReader.Read(n)
 		var bufLen int
@@ -401,16 +407,34 @@
 	return data, nil
 }
 
+// noCopy may be embedded into structs which must not be copied
+// after the first use.
+//
+// See https://golang.org/issues/8005#issuecomment-190753527
+// for details.
+type noCopy struct {
+}
+
+func (*noCopy) Lock()   {}
+func (*noCopy) Unlock() {}
+
 // transportReader reads all the data available for this Stream from the transport and
 // passes them into the decoder, which converts them into a gRPC message stream.
 // The error is io.EOF when the stream is done or another non-nil error if
 // the stream broke.
 type transportReader struct {
-	reader *recvBufferReader
+	_ noCopy
 	// The handler to control the window update procedure for both this
 	// particular stream and the associated transport.
-	windowHandler func(int)
+	windowHandler windowHandler
 	er            error
+	reader        recvBufferReader
+}
+
+// The handler to control the window update procedure for both this
+// particular stream and the associated transport.
+type windowHandler interface {
+	updateWindow(int)
 }
 
 func (t *transportReader) ReadMessageHeader(header []byte) (int, error) {
@@ -419,7 +443,7 @@
 		t.er = err
 		return 0, err
 	}
-	t.windowHandler(n)
+	t.windowHandler.updateWindow(n)
 	return n, nil
 }
 
@@ -429,7 +453,7 @@
 		t.er = err
 		return buf, err
 	}
-	t.windowHandler(buf.Len())
+	t.windowHandler.updateWindow(buf.Len())
 	return buf, nil
 }
 
@@ -454,7 +478,7 @@
 	ConnectionTimeout     time.Duration
 	Credentials           credentials.TransportCredentials
 	InTapHandle           tap.ServerInHandle
-	StatsHandlers         []stats.Handler
+	StatsHandler          stats.Handler
 	KeepaliveParams       keepalive.ServerParameters
 	KeepalivePolicy       keepalive.EnforcementPolicy
 	InitialWindowSize     int32
@@ -615,6 +639,8 @@
 	write(s *ServerStream, hdr []byte, data mem.BufferSlice, opts *WriteOptions) error
 	writeStatus(s *ServerStream, st *status.Status) error
 	incrMsgRecv()
+	adjustWindow(s *ServerStream, n uint32)
+	updateWindow(s *ServerStream, n uint32)
 }
 
 // connectionErrorf creates an ConnectionError with the specified error description.
diff --git a/vendor/google.golang.org/grpc/mem/buffer_pool.go b/vendor/google.golang.org/grpc/mem/buffer_pool.go
index c37c58c..f211e72 100644
--- a/vendor/google.golang.org/grpc/mem/buffer_pool.go
+++ b/vendor/google.golang.org/grpc/mem/buffer_pool.go
@@ -32,6 +32,9 @@
 	Get(length int) *[]byte
 
 	// Put returns a buffer to the pool.
+	//
+	// The provided pointer must hold a prefix of the buffer obtained via
+	// BufferPool.Get to ensure the buffer's entire capacity can be re-used.
 	Put(*[]byte)
 }
 
@@ -118,7 +121,11 @@
 }
 
 func (p *sizedBufferPool) Get(size int) *[]byte {
-	buf := p.pool.Get().(*[]byte)
+	buf, ok := p.pool.Get().(*[]byte)
+	if !ok {
+		buf := make([]byte, size, p.defaultSize)
+		return &buf
+	}
 	b := *buf
 	clear(b[:cap(b)])
 	*buf = b[:size]
@@ -137,12 +144,6 @@
 
 func newSizedBufferPool(size int) *sizedBufferPool {
 	return &sizedBufferPool{
-		pool: sync.Pool{
-			New: func() any {
-				buf := make([]byte, size)
-				return &buf
-			},
-		},
 		defaultSize: size,
 	}
 }
@@ -160,6 +161,7 @@
 func (p *simpleBufferPool) Get(size int) *[]byte {
 	bs, ok := p.pool.Get().(*[]byte)
 	if ok && cap(*bs) >= size {
+		clear((*bs)[:cap(*bs)])
 		*bs = (*bs)[:size]
 		return bs
 	}
diff --git a/vendor/google.golang.org/grpc/mem/buffer_slice.go b/vendor/google.golang.org/grpc/mem/buffer_slice.go
index af510d2..084fb19 100644
--- a/vendor/google.golang.org/grpc/mem/buffer_slice.go
+++ b/vendor/google.golang.org/grpc/mem/buffer_slice.go
@@ -19,6 +19,7 @@
 package mem
 
 import (
+	"fmt"
 	"io"
 )
 
@@ -117,43 +118,36 @@
 
 // Reader returns a new Reader for the input slice after taking references to
 // each underlying buffer.
-func (s BufferSlice) Reader() Reader {
+func (s BufferSlice) Reader() *Reader {
 	s.Ref()
-	return &sliceReader{
+	return &Reader{
 		data: s,
 		len:  s.Len(),
 	}
 }
 
 // Reader exposes a BufferSlice's data as an io.Reader, allowing it to interface
-// with other parts systems. It also provides an additional convenience method
-// Remaining(), which returns the number of unread bytes remaining in the slice.
+// with other systems.
+//
 // Buffers will be freed as they are read.
-type Reader interface {
-	io.Reader
-	io.ByteReader
-	// Close frees the underlying BufferSlice and never returns an error. Subsequent
-	// calls to Read will return (0, io.EOF).
-	Close() error
-	// Remaining returns the number of unread bytes remaining in the slice.
-	Remaining() int
-	// Reset frees the currently held buffer slice and starts reading from the
-	// provided slice. This allows reusing the reader object.
-	Reset(s BufferSlice)
-}
-
-type sliceReader struct {
+//
+// A Reader can be constructed from a BufferSlice; alternatively the zero value
+// of a Reader may be used after calling Reset on it.
+type Reader struct {
 	data BufferSlice
 	len  int
 	// The index into data[0].ReadOnlyData().
 	bufferIdx int
 }
 
-func (r *sliceReader) Remaining() int {
+// Remaining returns the number of unread bytes remaining in the slice.
+func (r *Reader) Remaining() int {
 	return r.len
 }
 
-func (r *sliceReader) Reset(s BufferSlice) {
+// Reset frees the currently held buffer slice and starts reading from the
+// provided slice. This allows reusing the reader object.
+func (r *Reader) Reset(s BufferSlice) {
 	r.data.Free()
 	s.Ref()
 	r.data = s
@@ -161,14 +155,16 @@
 	r.bufferIdx = 0
 }
 
-func (r *sliceReader) Close() error {
+// Close frees the underlying BufferSlice and never returns an error. Subsequent
+// calls to Read will return (0, io.EOF).
+func (r *Reader) Close() error {
 	r.data.Free()
 	r.data = nil
 	r.len = 0
 	return nil
 }
 
-func (r *sliceReader) freeFirstBufferIfEmpty() bool {
+func (r *Reader) freeFirstBufferIfEmpty() bool {
 	if len(r.data) == 0 || r.bufferIdx != len(r.data[0].ReadOnlyData()) {
 		return false
 	}
@@ -179,7 +175,7 @@
 	return true
 }
 
-func (r *sliceReader) Read(buf []byte) (n int, _ error) {
+func (r *Reader) Read(buf []byte) (n int, _ error) {
 	if r.len == 0 {
 		return 0, io.EOF
 	}
@@ -202,7 +198,8 @@
 	return n, nil
 }
 
-func (r *sliceReader) ReadByte() (byte, error) {
+// ReadByte reads a single byte.
+func (r *Reader) ReadByte() (byte, error) {
 	if r.len == 0 {
 		return 0, io.EOF
 	}
@@ -290,3 +287,59 @@
 		}
 	}
 }
+
+// Discard skips the next n bytes, returning the number of bytes discarded.
+//
+// It frees buffers as they are fully consumed.
+//
+// If Discard skips fewer than n bytes, it also returns an error.
+func (r *Reader) Discard(n int) (discarded int, err error) {
+	total := n
+	for n > 0 && r.len > 0 {
+		curData := r.data[0].ReadOnlyData()
+		curSize := min(n, len(curData)-r.bufferIdx)
+		n -= curSize
+		r.len -= curSize
+		r.bufferIdx += curSize
+		if r.bufferIdx >= len(curData) {
+			r.data[0].Free()
+			r.data = r.data[1:]
+			r.bufferIdx = 0
+		}
+	}
+	discarded = total - n
+	if n > 0 {
+		return discarded, fmt.Errorf("insufficient bytes in reader")
+	}
+	return discarded, nil
+}
+
+// Peek returns the next n bytes without advancing the reader.
+//
+// Peek appends results to the provided res slice and returns the updated slice.
+// This pattern allows re-using the storage of res if it has sufficient
+// capacity.
+//
+// The returned subslices are views into the underlying buffers and are only
+// valid until the reader is advanced past the corresponding buffer.
+//
+// If Peek returns fewer than n bytes, it also returns an error.
+func (r *Reader) Peek(n int, res [][]byte) ([][]byte, error) {
+	for i := 0; n > 0 && i < len(r.data); i++ {
+		curData := r.data[i].ReadOnlyData()
+		start := 0
+		if i == 0 {
+			start = r.bufferIdx
+		}
+		curSize := min(n, len(curData)-start)
+		if curSize == 0 {
+			continue
+		}
+		res = append(res, curData[start:start+curSize])
+		n -= curSize
+	}
+	if n > 0 {
+		return nil, fmt.Errorf("insufficient bytes in reader")
+	}
+	return res, nil
+}
diff --git a/vendor/google.golang.org/grpc/preloader.go b/vendor/google.golang.org/grpc/preloader.go
index ee0ff96..1e783fe 100644
--- a/vendor/google.golang.org/grpc/preloader.go
+++ b/vendor/google.golang.org/grpc/preloader.go
@@ -47,9 +47,6 @@
 	}
 
 	// check if the context has the relevant information to prepareMsg
-	if rpcInfo.preloaderInfo == nil {
-		return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo is nil")
-	}
 	if rpcInfo.preloaderInfo.codec == nil {
 		return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo.codec is nil")
 	}
diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go
index 47ea09f..6b04c9e 100644
--- a/vendor/google.golang.org/grpc/rpc_util.go
+++ b/vendor/google.golang.org/grpc/rpc_util.go
@@ -657,8 +657,20 @@
 	Read(n int) (mem.BufferSlice, error)
 }
 
+// noCopy may be embedded into structs which must not be copied
+// after the first use.
+//
+// See https://golang.org/issues/8005#issuecomment-190753527
+// for details.
+type noCopy struct {
+}
+
+func (*noCopy) Lock()   {}
+func (*noCopy) Unlock() {}
+
 // parser reads complete gRPC messages from the underlying reader.
 type parser struct {
+	_ noCopy
 	// r is the underlying reader.
 	// See the comment on recvMsg for the permissible
 	// error types.
@@ -949,7 +961,7 @@
 // Information about RPC
 type rpcInfo struct {
 	failfast      bool
-	preloaderInfo *compressorInfo
+	preloaderInfo compressorInfo
 }
 
 // Information about Preloader
@@ -968,7 +980,7 @@
 func newContextWithRPCInfo(ctx context.Context, failfast bool, codec baseCodec, cp Compressor, comp encoding.Compressor) context.Context {
 	return context.WithValue(ctx, rpcInfoContextKey{}, &rpcInfo{
 		failfast: failfast,
-		preloaderInfo: &compressorInfo{
+		preloaderInfo: compressorInfo{
 			codec: codec,
 			cp:    cp,
 			comp:  comp,
diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go
index 1da2a54..ddd3773 100644
--- a/vendor/google.golang.org/grpc/server.go
+++ b/vendor/google.golang.org/grpc/server.go
@@ -124,7 +124,8 @@
 
 // Server is a gRPC server to serve RPC requests.
 type Server struct {
-	opts serverOptions
+	opts         serverOptions
+	statsHandler stats.Handler
 
 	mu  sync.Mutex // guards following
 	lis map[net.Listener]bool
@@ -692,13 +693,14 @@
 		o.apply(&opts)
 	}
 	s := &Server{
-		lis:      make(map[net.Listener]bool),
-		opts:     opts,
-		conns:    make(map[string]map[transport.ServerTransport]bool),
-		services: make(map[string]*serviceInfo),
-		quit:     grpcsync.NewEvent(),
-		done:     grpcsync.NewEvent(),
-		channelz: channelz.RegisterServer(""),
+		lis:          make(map[net.Listener]bool),
+		opts:         opts,
+		statsHandler: istats.NewCombinedHandler(opts.statsHandlers...),
+		conns:        make(map[string]map[transport.ServerTransport]bool),
+		services:     make(map[string]*serviceInfo),
+		quit:         grpcsync.NewEvent(),
+		done:         grpcsync.NewEvent(),
+		channelz:     channelz.RegisterServer(""),
 	}
 	chainUnaryServerInterceptors(s)
 	chainStreamServerInterceptors(s)
@@ -999,7 +1001,7 @@
 		ConnectionTimeout:     s.opts.connectionTimeout,
 		Credentials:           s.opts.creds,
 		InTapHandle:           s.opts.inTapHandle,
-		StatsHandlers:         s.opts.statsHandlers,
+		StatsHandler:          s.statsHandler,
 		KeepaliveParams:       s.opts.keepaliveParams,
 		KeepalivePolicy:       s.opts.keepalivePolicy,
 		InitialWindowSize:     s.opts.initialWindowSize,
@@ -1036,18 +1038,18 @@
 func (s *Server) serveStreams(ctx context.Context, st transport.ServerTransport, rawConn net.Conn) {
 	ctx = transport.SetConnection(ctx, rawConn)
 	ctx = peer.NewContext(ctx, st.Peer())
-	for _, sh := range s.opts.statsHandlers {
-		ctx = sh.TagConn(ctx, &stats.ConnTagInfo{
+	if s.statsHandler != nil {
+		ctx = s.statsHandler.TagConn(ctx, &stats.ConnTagInfo{
 			RemoteAddr: st.Peer().Addr,
 			LocalAddr:  st.Peer().LocalAddr,
 		})
-		sh.HandleConn(ctx, &stats.ConnBegin{})
+		s.statsHandler.HandleConn(ctx, &stats.ConnBegin{})
 	}
 
 	defer func() {
 		st.Close(errors.New("finished serving streams for the server transport"))
-		for _, sh := range s.opts.statsHandlers {
-			sh.HandleConn(ctx, &stats.ConnEnd{})
+		if s.statsHandler != nil {
+			s.statsHandler.HandleConn(ctx, &stats.ConnEnd{})
 		}
 	}()
 
@@ -1104,7 +1106,7 @@
 // Notice: This API is EXPERIMENTAL and may be changed or removed in a
 // later release.
 func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
-	st, err := transport.NewServerHandlerTransport(w, r, s.opts.statsHandlers, s.opts.bufferPool)
+	st, err := transport.NewServerHandlerTransport(w, r, s.statsHandler, s.opts.bufferPool)
 	if err != nil {
 		// Errors returned from transport.NewServerHandlerTransport have
 		// already been written to w.
@@ -1198,12 +1200,8 @@
 		return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", payloadLen, s.opts.maxSendMessageSize)
 	}
 	err = stream.Write(hdr, payload, opts)
-	if err == nil {
-		if len(s.opts.statsHandlers) != 0 {
-			for _, sh := range s.opts.statsHandlers {
-				sh.HandleRPC(ctx, outPayload(false, msg, dataLen, payloadLen, time.Now()))
-			}
-		}
+	if err == nil && s.statsHandler != nil {
+		s.statsHandler.HandleRPC(ctx, outPayload(false, msg, dataLen, payloadLen, time.Now()))
 	}
 	return err
 }
@@ -1245,16 +1243,15 @@
 }
 
 func (s *Server) processUnaryRPC(ctx context.Context, stream *transport.ServerStream, info *serviceInfo, md *MethodDesc, trInfo *traceInfo) (err error) {
-	shs := s.opts.statsHandlers
-	if len(shs) != 0 || trInfo != nil || channelz.IsOn() {
+	sh := s.statsHandler
+	if sh != nil || trInfo != nil || channelz.IsOn() {
 		if channelz.IsOn() {
 			s.incrCallsStarted()
 		}
 		var statsBegin *stats.Begin
-		for _, sh := range shs {
-			beginTime := time.Now()
+		if sh != nil {
 			statsBegin = &stats.Begin{
-				BeginTime:      beginTime,
+				BeginTime:      time.Now(),
 				IsClientStream: false,
 				IsServerStream: false,
 			}
@@ -1282,7 +1279,7 @@
 				trInfo.tr.Finish()
 			}
 
-			for _, sh := range shs {
+			if sh != nil {
 				end := &stats.End{
 					BeginTime: statsBegin.BeginTime,
 					EndTime:   time.Now(),
@@ -1379,7 +1376,7 @@
 	}
 
 	var payInfo *payloadInfo
-	if len(shs) != 0 || len(binlogs) != 0 {
+	if sh != nil || len(binlogs) != 0 {
 		payInfo = &payloadInfo{}
 		defer payInfo.free()
 	}
@@ -1405,7 +1402,7 @@
 			return status.Errorf(codes.Internal, "grpc: error unmarshalling request: %v", err)
 		}
 
-		for _, sh := range shs {
+		if sh != nil {
 			sh.HandleRPC(ctx, &stats.InPayload{
 				RecvTime:         time.Now(),
 				Payload:          v,
@@ -1579,33 +1576,30 @@
 	if channelz.IsOn() {
 		s.incrCallsStarted()
 	}
-	shs := s.opts.statsHandlers
+	sh := s.statsHandler
 	var statsBegin *stats.Begin
-	if len(shs) != 0 {
-		beginTime := time.Now()
+	if sh != nil {
 		statsBegin = &stats.Begin{
-			BeginTime:      beginTime,
+			BeginTime:      time.Now(),
 			IsClientStream: sd.ClientStreams,
 			IsServerStream: sd.ServerStreams,
 		}
-		for _, sh := range shs {
-			sh.HandleRPC(ctx, statsBegin)
-		}
+		sh.HandleRPC(ctx, statsBegin)
 	}
 	ctx = NewContextWithServerTransportStream(ctx, stream)
 	ss := &serverStream{
 		ctx:                   ctx,
 		s:                     stream,
-		p:                     &parser{r: stream, bufferPool: s.opts.bufferPool},
+		p:                     parser{r: stream, bufferPool: s.opts.bufferPool},
 		codec:                 s.getCodec(stream.ContentSubtype()),
 		desc:                  sd,
 		maxReceiveMessageSize: s.opts.maxReceiveMessageSize,
 		maxSendMessageSize:    s.opts.maxSendMessageSize,
 		trInfo:                trInfo,
-		statsHandler:          shs,
+		statsHandler:          sh,
 	}
 
-	if len(shs) != 0 || trInfo != nil || channelz.IsOn() {
+	if sh != nil || trInfo != nil || channelz.IsOn() {
 		// See comment in processUnaryRPC on defers.
 		defer func() {
 			if trInfo != nil {
@@ -1619,7 +1613,7 @@
 				ss.mu.Unlock()
 			}
 
-			if len(shs) != 0 {
+			if sh != nil {
 				end := &stats.End{
 					BeginTime: statsBegin.BeginTime,
 					EndTime:   time.Now(),
@@ -1627,9 +1621,7 @@
 				if err != nil && err != io.EOF {
 					end.Error = toRPCErr(err)
 				}
-				for _, sh := range shs {
-					sh.HandleRPC(ctx, end)
-				}
+				sh.HandleRPC(ctx, end)
 			}
 
 			if channelz.IsOn() {
@@ -1818,19 +1810,17 @@
 	method := sm[pos+1:]
 
 	// FromIncomingContext is expensive: skip if there are no statsHandlers
-	if len(s.opts.statsHandlers) > 0 {
+	if s.statsHandler != nil {
 		md, _ := metadata.FromIncomingContext(ctx)
-		for _, sh := range s.opts.statsHandlers {
-			ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: stream.Method()})
-			sh.HandleRPC(ctx, &stats.InHeader{
-				FullMethod:  stream.Method(),
-				RemoteAddr:  t.Peer().Addr,
-				LocalAddr:   t.Peer().LocalAddr,
-				Compression: stream.RecvCompress(),
-				WireLength:  stream.HeaderWireLength(),
-				Header:      md,
-			})
-		}
+		ctx = s.statsHandler.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: stream.Method()})
+		s.statsHandler.HandleRPC(ctx, &stats.InHeader{
+			FullMethod:  stream.Method(),
+			RemoteAddr:  t.Peer().Addr,
+			LocalAddr:   t.Peer().LocalAddr,
+			Compression: stream.RecvCompress(),
+			WireLength:  stream.HeaderWireLength(),
+			Header:      md,
+		})
 	}
 	// To have calls in stream callouts work. Will delete once all stats handler
 	// calls come from the gRPC layer.
diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go
index 0a0af89..ca87ff9 100644
--- a/vendor/google.golang.org/grpc/stream.go
+++ b/vendor/google.golang.org/grpc/stream.go
@@ -177,6 +177,8 @@
 	return cc.NewStream(ctx, desc, method, opts...)
 }
 
+var emptyMethodConfig = serviceconfig.MethodConfig{}
+
 func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (_ ClientStream, err error) {
 	// Start tracking the RPC for idleness purposes. This is where a stream is
 	// created for both streaming and unary RPCs, and hence is a good place to
@@ -217,7 +219,7 @@
 		return nil, err
 	}
 
-	var mc serviceconfig.MethodConfig
+	mc := &emptyMethodConfig
 	var onCommit func()
 	newStream := func(ctx context.Context, done func()) (iresolver.ClientStream, error) {
 		return newClientStreamWithParams(ctx, desc, cc, method, mc, onCommit, done, nameResolutionDelayed, opts...)
@@ -240,7 +242,7 @@
 		if rpcConfig.Context != nil {
 			ctx = rpcConfig.Context
 		}
-		mc = rpcConfig.MethodConfig
+		mc = &rpcConfig.MethodConfig
 		onCommit = rpcConfig.OnCommitted
 		if rpcConfig.Interceptor != nil {
 			rpcInfo.Context = nil
@@ -258,7 +260,7 @@
 	return newStream(ctx, func() {})
 }
 
-func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc serviceconfig.MethodConfig, onCommit, doneFunc func(), nameResolutionDelayed bool, opts ...CallOption) (_ iresolver.ClientStream, err error) {
+func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc *serviceconfig.MethodConfig, onCommit, doneFunc func(), nameResolutionDelayed bool, opts ...CallOption) (_ iresolver.ClientStream, err error) {
 	callInfo := defaultCallInfo()
 	if mc.WaitForReady != nil {
 		callInfo.failFast = !*mc.WaitForReady
@@ -325,7 +327,7 @@
 	cs := &clientStream{
 		callHdr:             callHdr,
 		ctx:                 ctx,
-		methodConfig:        &mc,
+		methodConfig:        mc,
 		opts:                opts,
 		callInfo:            callInfo,
 		cc:                  cc,
@@ -418,19 +420,21 @@
 	ctx := newContextWithRPCInfo(cs.ctx, cs.callInfo.failFast, cs.callInfo.codec, cs.compressorV0, cs.compressorV1)
 	method := cs.callHdr.Method
 	var beginTime time.Time
-	shs := cs.cc.dopts.copts.StatsHandlers
-	for _, sh := range shs {
-		ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: cs.callInfo.failFast, NameResolutionDelay: cs.nameResolutionDelay})
+	sh := cs.cc.statsHandler
+	if sh != nil {
 		beginTime = time.Now()
-		begin := &stats.Begin{
+		ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{
+			FullMethodName: method, FailFast: cs.callInfo.failFast,
+			NameResolutionDelay: cs.nameResolutionDelay,
+		})
+		sh.HandleRPC(ctx, &stats.Begin{
 			Client:                    true,
 			BeginTime:                 beginTime,
 			FailFast:                  cs.callInfo.failFast,
 			IsClientStream:            cs.desc.ClientStreams,
 			IsServerStream:            cs.desc.ServerStreams,
 			IsTransparentRetryAttempt: isTransparent,
-		}
-		sh.HandleRPC(ctx, begin)
+		})
 	}
 
 	var trInfo *traceInfo
@@ -461,7 +465,7 @@
 		beginTime:      beginTime,
 		cs:             cs,
 		decompressorV0: cs.cc.dopts.dc,
-		statsHandlers:  shs,
+		statsHandler:   sh,
 		trInfo:         trInfo,
 	}, nil
 }
@@ -482,10 +486,8 @@
 	if a.trInfo != nil {
 		a.trInfo.firstLine.SetRemoteAddr(a.transport.RemoteAddr())
 	}
-	if pick.blocked {
-		for _, sh := range a.statsHandlers {
-			sh.HandleRPC(a.ctx, &stats.DelayedPickComplete{})
-		}
+	if pick.blocked && a.statsHandler != nil {
+		a.statsHandler.HandleRPC(a.ctx, &stats.DelayedPickComplete{})
 	}
 	return nil
 }
@@ -529,7 +531,7 @@
 	}
 	a.transportStream = s
 	a.ctx = s.Context()
-	a.parser = &parser{r: s, bufferPool: a.cs.cc.dopts.copts.BufferPool}
+	a.parser = parser{r: s, bufferPool: a.cs.cc.dopts.copts.BufferPool}
 	return nil
 }
 
@@ -601,7 +603,7 @@
 	cs              *clientStream
 	transport       transport.ClientTransport
 	transportStream *transport.ClientStream
-	parser          *parser
+	parser          parser
 	pickResult      balancer.PickResult
 
 	finished        bool
@@ -615,8 +617,8 @@
 	// and cleared when the finish method is called.
 	trInfo *traceInfo
 
-	statsHandlers []stats.Handler
-	beginTime     time.Time
+	statsHandler stats.Handler
+	beginTime    time.Time
 
 	// set for newStream errors that may be transparently retried
 	allowTransparentRetry bool
@@ -1110,17 +1112,15 @@
 		}
 		return io.EOF
 	}
-	if len(a.statsHandlers) != 0 {
-		for _, sh := range a.statsHandlers {
-			sh.HandleRPC(a.ctx, outPayload(true, m, dataLength, payloadLength, time.Now()))
-		}
+	if a.statsHandler != nil {
+		a.statsHandler.HandleRPC(a.ctx, outPayload(true, m, dataLength, payloadLength, time.Now()))
 	}
 	return nil
 }
 
 func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) {
 	cs := a.cs
-	if len(a.statsHandlers) != 0 && payInfo == nil {
+	if a.statsHandler != nil && payInfo == nil {
 		payInfo = &payloadInfo{}
 		defer payInfo.free()
 	}
@@ -1141,7 +1141,7 @@
 		// Only initialize this state once per stream.
 		a.decompressorSet = true
 	}
-	if err := recv(a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decompressorV1, false); err != nil {
+	if err := recv(&a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decompressorV1, false); err != nil {
 		if err == io.EOF {
 			if statusErr := a.transportStream.Status().Err(); statusErr != nil {
 				return statusErr
@@ -1163,8 +1163,8 @@
 		}
 		a.mu.Unlock()
 	}
-	for _, sh := range a.statsHandlers {
-		sh.HandleRPC(a.ctx, &stats.InPayload{
+	if a.statsHandler != nil {
+		a.statsHandler.HandleRPC(a.ctx, &stats.InPayload{
 			Client:           true,
 			RecvTime:         time.Now(),
 			Payload:          m,
@@ -1179,7 +1179,7 @@
 	}
 	// Special handling for non-server-stream rpcs.
 	// This recv expects EOF or errors, so we don't collect inPayload.
-	if err := recv(a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decompressorV1, false); err == io.EOF {
+	if err := recv(&a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decompressorV1, false); err == io.EOF {
 		return a.transportStream.Status().Err() // non-server streaming Recv returns nil on success
 	} else if err != nil {
 		return toRPCErr(err)
@@ -1217,15 +1217,14 @@
 			ServerLoad:    balancerload.Parse(tr),
 		})
 	}
-	for _, sh := range a.statsHandlers {
-		end := &stats.End{
+	if a.statsHandler != nil {
+		a.statsHandler.HandleRPC(a.ctx, &stats.End{
 			Client:    true,
 			BeginTime: a.beginTime,
 			EndTime:   time.Now(),
 			Trailer:   tr,
 			Error:     err,
-		}
-		sh.HandleRPC(a.ctx, end)
+		})
 	}
 	if a.trInfo != nil && a.trInfo.tr != nil {
 		if err == nil {
@@ -1331,7 +1330,7 @@
 		return nil, err
 	}
 	as.transportStream = s
-	as.parser = &parser{r: s, bufferPool: ac.dopts.copts.BufferPool}
+	as.parser = parser{r: s, bufferPool: ac.dopts.copts.BufferPool}
 	ac.incrCallsStarted()
 	if desc != unaryStreamDesc {
 		// Listen on stream context to cleanup when the stream context is
@@ -1374,7 +1373,7 @@
 	decompressorSet  bool
 	decompressorV0   Decompressor
 	decompressorV1   encoding.Compressor
-	parser           *parser
+	parser           parser
 
 	// mu guards finished and is held for the entire finish method.
 	mu       sync.Mutex
@@ -1487,7 +1486,7 @@
 		// Only initialize this state once per stream.
 		as.decompressorSet = true
 	}
-	if err := recv(as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err != nil {
+	if err := recv(&as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err != nil {
 		if err == io.EOF {
 			if statusErr := as.transportStream.Status().Err(); statusErr != nil {
 				return statusErr
@@ -1509,7 +1508,7 @@
 
 	// Special handling for non-server-stream rpcs.
 	// This recv expects EOF or errors, so we don't collect inPayload.
-	if err := recv(as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err == io.EOF {
+	if err := recv(&as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err == io.EOF {
 		return as.transportStream.Status().Err() // non-server streaming Recv returns nil on success
 	} else if err != nil {
 		return toRPCErr(err)
@@ -1597,7 +1596,7 @@
 type serverStream struct {
 	ctx   context.Context
 	s     *transport.ServerStream
-	p     *parser
+	p     parser
 	codec baseCodec
 	desc  *StreamDesc
 
@@ -1614,7 +1613,7 @@
 	maxSendMessageSize    int
 	trInfo                *traceInfo
 
-	statsHandler []stats.Handler
+	statsHandler stats.Handler
 
 	binlogs []binarylog.MethodLogger
 	// serverHeaderBinlogged indicates whether server header has been logged. It
@@ -1750,10 +1749,8 @@
 			binlog.Log(ss.ctx, sm)
 		}
 	}
-	if len(ss.statsHandler) != 0 {
-		for _, sh := range ss.statsHandler {
-			sh.HandleRPC(ss.s.Context(), outPayload(false, m, dataLen, payloadLen, time.Now()))
-		}
+	if ss.statsHandler != nil {
+		ss.statsHandler.HandleRPC(ss.s.Context(), outPayload(false, m, dataLen, payloadLen, time.Now()))
 	}
 	return nil
 }
@@ -1784,11 +1781,11 @@
 		}
 	}()
 	var payInfo *payloadInfo
-	if len(ss.statsHandler) != 0 || len(ss.binlogs) != 0 {
+	if ss.statsHandler != nil || len(ss.binlogs) != 0 {
 		payInfo = &payloadInfo{}
 		defer payInfo.free()
 	}
-	if err := recv(ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, payInfo, ss.decompressorV1, true); err != nil {
+	if err := recv(&ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, payInfo, ss.decompressorV1, true); err != nil {
 		if err == io.EOF {
 			if len(ss.binlogs) != 0 {
 				chc := &binarylog.ClientHalfClose{}
@@ -1808,16 +1805,14 @@
 		return toRPCErr(err)
 	}
 	ss.recvFirstMsg = true
-	if len(ss.statsHandler) != 0 {
-		for _, sh := range ss.statsHandler {
-			sh.HandleRPC(ss.s.Context(), &stats.InPayload{
-				RecvTime:         time.Now(),
-				Payload:          m,
-				Length:           payInfo.uncompressedBytes.Len(),
-				WireLength:       payInfo.compressedLength + headerLen,
-				CompressedLength: payInfo.compressedLength,
-			})
-		}
+	if ss.statsHandler != nil {
+		ss.statsHandler.HandleRPC(ss.s.Context(), &stats.InPayload{
+			RecvTime:         time.Now(),
+			Payload:          m,
+			Length:           payInfo.uncompressedBytes.Len(),
+			WireLength:       payInfo.compressedLength + headerLen,
+			CompressedLength: payInfo.compressedLength,
+		})
 	}
 	if len(ss.binlogs) != 0 {
 		cm := &binarylog.ClientMessage{
@@ -1834,7 +1829,7 @@
 	}
 	// Special handling for non-client-stream rpcs.
 	// This recv expects EOF or errors, so we don't collect inPayload.
-	if err := recv(ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, nil, ss.decompressorV1, true); err == io.EOF {
+	if err := recv(&ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, nil, ss.decompressorV1, true); err == io.EOF {
 		return nil
 	} else if err != nil {
 		return err
diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go
index 76f2e0d..9e6d018 100644
--- a/vendor/google.golang.org/grpc/version.go
+++ b/vendor/google.golang.org/grpc/version.go
@@ -19,4 +19,4 @@
 package grpc
 
 // Version is the current grpc version.
-const Version = "1.76.0"
+const Version = "1.77.0"
diff --git a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go
index 669133d..c96e448 100644
--- a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go
+++ b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go
@@ -32,7 +32,7 @@
 func Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor {
 	f := new(filedesc.Field)
 	f.L0.ParentFile = filedesc.SurrogateProto2
-	f.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures
+	packed := false
 	for len(tag) > 0 {
 		i := strings.IndexByte(tag, ',')
 		if i < 0 {
@@ -108,7 +108,7 @@
 				f.L1.StringName.InitJSON(jsonName)
 			}
 		case s == "packed":
-			f.L1.EditionFeatures.IsPacked = true
+			packed = true
 		case strings.HasPrefix(s, "def="):
 			// The default tag is special in that everything afterwards is the
 			// default regardless of the presence of commas.
@@ -121,6 +121,13 @@
 		tag = strings.TrimPrefix(tag[i:], ",")
 	}
 
+	// Update EditionFeatures after the loop and after we know whether this is
+	// a proto2 or proto3 field.
+	f.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures
+	if packed {
+		f.L1.EditionFeatures.IsPacked = true
+	}
+
 	// The generator uses the group message name instead of the field name.
 	// We obtain the real field name by lowercasing the group name.
 	if f.L1.Kind == protoreflect.GroupKind {
diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go
index 099b2bf..9aa7a9b 100644
--- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go
+++ b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go
@@ -424,27 +424,34 @@
 	return Token{}, d.newSyntaxError("invalid field name: %s", errId(d.in))
 }
 
-// parseTypeName parses Any type URL or extension field name. The name is
-// enclosed in [ and ] characters. The C++ parser does not handle many legal URL
-// strings. This implementation is more liberal and allows for the pattern
-// ^[-_a-zA-Z0-9]+([./][-_a-zA-Z0-9]+)*`). Whitespaces and comments are allowed
-// in between [ ], '.', '/' and the sub names.
+// parseTypeName parses an Any type URL or an extension field name. The name is
+// enclosed in [ and ] characters. We allow almost arbitrary type URL prefixes,
+// closely following the text-format spec [1,2]. We implement "ExtensionName |
+// AnyName" as follows (with some exceptions for backwards compatibility):
+//
+// char      = [-_a-zA-Z0-9]
+// url_char  = char | [.~!$&'()*+,;=] | "%", hex, hex
+//
+// Ident         = char, { char }
+// TypeName      = Ident, { ".", Ident } ;
+// UrlPrefix     = url_char, { url_char | "/" } ;
+// ExtensionName = "[", TypeName, "]" ;
+// AnyName       = "[", UrlPrefix, "/", TypeName, "]" ;
+//
+// Additionally, we allow arbitrary whitespace and comments between [ and ].
+//
+// [1] https://protobuf.dev/reference/protobuf/textformat-spec/#characters
+// [2] https://protobuf.dev/reference/protobuf/textformat-spec/#field-names
 func (d *Decoder) parseTypeName() (Token, error) {
-	startPos := len(d.orig) - len(d.in)
 	// Use alias s to advance first in order to use d.in for error handling.
-	// Caller already checks for [ as first character.
+	// Caller already checks for [ as first character (d.in[0] == '[').
 	s := consume(d.in[1:], 0)
 	if len(s) == 0 {
 		return Token{}, ErrUnexpectedEOF
 	}
 
+	// Collect everything between [ and ] in name.
 	var name []byte
-	for len(s) > 0 && isTypeNameChar(s[0]) {
-		name = append(name, s[0])
-		s = s[1:]
-	}
-	s = consume(s, 0)
-
 	var closed bool
 	for len(s) > 0 && !closed {
 		switch {
@@ -452,23 +459,20 @@
 			s = s[1:]
 			closed = true
 
-		case s[0] == '/', s[0] == '.':
-			if len(name) > 0 && (name[len(name)-1] == '/' || name[len(name)-1] == '.') {
-				return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s",
-					d.orig[startPos:len(d.orig)-len(s)+1])
-			}
+		case s[0] == '/' || isTypeNameChar(s[0]) || isUrlExtraChar(s[0]):
 			name = append(name, s[0])
-			s = s[1:]
-			s = consume(s, 0)
-			for len(s) > 0 && isTypeNameChar(s[0]) {
-				name = append(name, s[0])
-				s = s[1:]
+			s = consume(s[1:], 0)
+
+		// URL percent-encoded chars
+		case s[0] == '%':
+			if len(s) < 3 || !isHexChar(s[1]) || !isHexChar(s[2]) {
+				return Token{}, d.parseTypeNameError(s, 3)
 			}
-			s = consume(s, 0)
+			name = append(name, s[0], s[1], s[2])
+			s = consume(s[3:], 0)
 
 		default:
-			return Token{}, d.newSyntaxError(
-				"invalid type URL/extension field name: %s", d.orig[startPos:len(d.orig)-len(s)+1])
+			return Token{}, d.parseTypeNameError(s, 1)
 		}
 	}
 
@@ -476,15 +480,38 @@
 		return Token{}, ErrUnexpectedEOF
 	}
 
-	// First character cannot be '.'. Last character cannot be '.' or '/'.
-	size := len(name)
-	if size == 0 || name[0] == '.' || name[size-1] == '.' || name[size-1] == '/' {
-		return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s",
-			d.orig[startPos:len(d.orig)-len(s)])
+	// Split collected name on last '/' into urlPrefix and typeName (if '/' is
+	// present).
+	typeName := name
+	if i := bytes.LastIndexByte(name, '/'); i != -1 {
+		urlPrefix := name[:i]
+		typeName = name[i+1:]
+
+		// urlPrefix may be empty (for backwards compatibility).
+		// If non-empty, it must not start with '/'.
+		if len(urlPrefix) > 0 && urlPrefix[0] == '/' {
+			return Token{}, d.parseTypeNameError(s, 0)
+		}
 	}
 
+	// typeName must not be empty (note: "" splits to [""]) and all identifier
+	// parts must not be empty.
+	for _, ident := range bytes.Split(typeName, []byte{'.'}) {
+		if len(ident) == 0 {
+			return Token{}, d.parseTypeNameError(s, 0)
+		}
+	}
+
+	// typeName must not contain any percent-encoded or special URL chars.
+	for _, b := range typeName {
+		if b == '%' || (b != '.' && isUrlExtraChar(b)) {
+			return Token{}, d.parseTypeNameError(s, 0)
+		}
+	}
+
+	startPos := len(d.orig) - len(d.in)
+	endPos := len(d.orig) - len(s)
 	d.in = s
-	endPos := len(d.orig) - len(d.in)
 	d.consume(0)
 
 	return Token{
@@ -496,16 +523,32 @@
 	}, nil
 }
 
-func isTypeNameChar(b byte) bool {
-	return (b == '-' || b == '_' ||
-		('0' <= b && b <= '9') ||
-		('a' <= b && b <= 'z') ||
-		('A' <= b && b <= 'Z'))
+func (d *Decoder) parseTypeNameError(s []byte, numUnconsumedChars int) error {
+	return d.newSyntaxError(
+		"invalid type URL/extension field name: %s",
+		d.in[:len(d.in)-len(s)+min(numUnconsumedChars, len(s))],
+	)
 }
 
-func isWhiteSpace(b byte) bool {
+func isHexChar(b byte) bool {
+	return ('0' <= b && b <= '9') ||
+		('a' <= b && b <= 'f') ||
+		('A' <= b && b <= 'F')
+}
+
+func isTypeNameChar(b byte) bool {
+	return b == '-' || b == '_' ||
+		('0' <= b && b <= '9') ||
+		('a' <= b && b <= 'z') ||
+		('A' <= b && b <= 'Z')
+}
+
+// isUrlExtraChar complements isTypeNameChar with extra characters that we allow
+// in URLs but not in type names. Note that '/' is not included so that it can
+// be treated specially.
+func isUrlExtraChar(b byte) bool {
 	switch b {
-	case ' ', '\n', '\r', '\t':
+	case '.', '~', '!', '$', '&', '(', ')', '*', '+', ',', ';', '=':
 		return true
 	default:
 		return false
diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go
index dbcf90b..c775e58 100644
--- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go
+++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go
@@ -32,6 +32,7 @@
 	EditionProto3      Edition = 999
 	Edition2023        Edition = 1000
 	Edition2024        Edition = 1001
+	EditionUnstable    Edition = 9999
 	EditionUnsupported Edition = 100000
 )
 
diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go
index dd31faa..78f02b1 100644
--- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go
+++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go
@@ -330,7 +330,6 @@
 				md.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)
 				extensionIdx++
 			case genid.DescriptorProto_Options_field_number:
-				md.unmarshalOptions(v)
 				rawOptions = appendOptions(rawOptions, v)
 			}
 		default:
@@ -356,27 +355,6 @@
 	md.L2.Options = md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Message, rawOptions)
 }
 
-func (md *Message) unmarshalOptions(b []byte) {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.MessageOptions_MapEntry_field_number:
-				md.L1.IsMapEntry = protowire.DecodeBool(v)
-			case genid.MessageOptions_MessageSetWireFormat_field_number:
-				md.L1.IsMessageSet = protowire.DecodeBool(v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
-
 func unmarshalMessageReservedRange(b []byte) (r [2]protoreflect.FieldNumber) {
 	for len(b) > 0 {
 		num, typ, n := protowire.ConsumeTag(b)
diff --git a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go
index 950a6a3..65aaf4d 100644
--- a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go
+++ b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go
@@ -26,6 +26,7 @@
 	Edition_EDITION_PROTO3_enum_value          = 999
 	Edition_EDITION_2023_enum_value            = 1000
 	Edition_EDITION_2024_enum_value            = 1001
+	Edition_EDITION_UNSTABLE_enum_value        = 9999
 	Edition_EDITION_1_TEST_ONLY_enum_value     = 1
 	Edition_EDITION_2_TEST_ONLY_enum_value     = 2
 	Edition_EDITION_99997_TEST_ONLY_enum_value = 99997
diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go
index 229c698..4a3bf39 100644
--- a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go
+++ b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go
@@ -113,6 +113,9 @@
 }
 
 func consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
+	if opts.depth--; opts.depth < 0 {
+		return out, errRecursionDepth
+	}
 	if wtyp != protowire.BytesType {
 		return out, errUnknown
 	}
@@ -170,6 +173,9 @@
 }
 
 func consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
+	if opts.depth--; opts.depth < 0 {
+		return out, errRecursionDepth
+	}
 	if wtyp != protowire.BytesType {
 		return out, errUnknown
 	}
diff --git a/vendor/google.golang.org/protobuf/internal/impl/decode.go b/vendor/google.golang.org/protobuf/internal/impl/decode.go
index e0dd21f..1228b5c 100644
--- a/vendor/google.golang.org/protobuf/internal/impl/decode.go
+++ b/vendor/google.golang.org/protobuf/internal/impl/decode.go
@@ -102,8 +102,7 @@
 
 func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {
 	mi.init()
-	opts.depth--
-	if opts.depth < 0 {
+	if opts.depth--; opts.depth < 0 {
 		return out, errRecursionDepth
 	}
 	if flags.ProtoLegacy && mi.isMessageSet {
diff --git a/vendor/google.golang.org/protobuf/internal/impl/validate.go b/vendor/google.golang.org/protobuf/internal/impl/validate.go
index 7b2995d..99a1eb9 100644
--- a/vendor/google.golang.org/protobuf/internal/impl/validate.go
+++ b/vendor/google.golang.org/protobuf/internal/impl/validate.go
@@ -68,9 +68,13 @@
 	if in.Resolver == nil {
 		in.Resolver = protoregistry.GlobalTypes
 	}
+	if in.Depth == 0 {
+		in.Depth = protowire.DefaultRecursionLimit
+	}
 	o, st := mi.validate(in.Buf, 0, unmarshalOptions{
 		flags:    in.Flags,
 		resolver: in.Resolver,
+		depth:    in.Depth,
 	})
 	if o.initialized {
 		out.Flags |= protoiface.UnmarshalInitialized
@@ -257,6 +261,9 @@
 		states[0].typ = validationTypeGroup
 		states[0].endGroup = groupTag
 	}
+	if opts.depth--; opts.depth < 0 {
+		return out, ValidationInvalid
+	}
 	initialized := true
 	start := len(b)
 State:
@@ -451,6 +458,13 @@
 						mi:      vi.mi,
 						tail:    b,
 					})
+					if vi.typ == validationTypeMessage ||
+						vi.typ == validationTypeGroup ||
+						vi.typ == validationTypeMap {
+						if opts.depth--; opts.depth < 0 {
+							return out, ValidationInvalid
+						}
+					}
 					b = v
 					continue State
 				case validationTypeRepeatedVarint:
@@ -499,6 +513,9 @@
 						mi:       vi.mi,
 						endGroup: num,
 					})
+					if opts.depth--; opts.depth < 0 {
+						return out, ValidationInvalid
+					}
 					continue State
 				case flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem:
 					typeid, v, n, err := messageset.ConsumeFieldValue(b, false)
@@ -521,6 +538,13 @@
 							mi:   xvi.mi,
 							tail: b[n:],
 						})
+						if xvi.typ == validationTypeMessage ||
+							xvi.typ == validationTypeGroup ||
+							xvi.typ == validationTypeMap {
+							if opts.depth--; opts.depth < 0 {
+								return out, ValidationInvalid
+							}
+						}
 						b = v
 						continue State
 					}
@@ -547,12 +571,14 @@
 		switch st.typ {
 		case validationTypeMessage, validationTypeGroup:
 			numRequiredFields = int(st.mi.numRequiredFields)
+			opts.depth++
 		case validationTypeMap:
 			// If this is a map field with a message value that contains
 			// required fields, require that the value be present.
 			if st.mi != nil && st.mi.numRequiredFields > 0 {
 				numRequiredFields = 1
 			}
+			opts.depth++
 		}
 		// If there are more than 64 required fields, this check will
 		// always fail and we will report that the message is potentially
diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go
index 77de0f2..763fd82 100644
--- a/vendor/google.golang.org/protobuf/internal/version/version.go
+++ b/vendor/google.golang.org/protobuf/internal/version/version.go
@@ -52,7 +52,7 @@
 const (
 	Major      = 1
 	Minor      = 36
-	Patch      = 10
+	Patch      = 11
 	PreRelease = ""
 )
 
diff --git a/vendor/google.golang.org/protobuf/proto/decode.go b/vendor/google.golang.org/protobuf/proto/decode.go
index 4cbf1ae..889d851 100644
--- a/vendor/google.golang.org/protobuf/proto/decode.go
+++ b/vendor/google.golang.org/protobuf/proto/decode.go
@@ -121,9 +121,8 @@
 
 		out, err = methods.Unmarshal(in)
 	} else {
-		o.RecursionLimit--
-		if o.RecursionLimit < 0 {
-			return out, errors.New("exceeded max recursion depth")
+		if o.RecursionLimit--; o.RecursionLimit < 0 {
+			return out, errRecursionDepth
 		}
 		err = o.unmarshalMessageSlow(b, m)
 	}
@@ -220,6 +219,9 @@
 }
 
 func (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) {
+	if o.RecursionLimit--; o.RecursionLimit < 0 {
+		return 0, errRecursionDepth
+	}
 	if wtyp != protowire.BytesType {
 		return 0, errUnknown
 	}
@@ -305,3 +307,5 @@
 var errUnknown = errors.New("BUG: internal error (unknown)")
 
 var errDecode = errors.New("cannot parse invalid wire-format data")
+
+var errRecursionDepth = errors.New("exceeded maximum recursion depth")
diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go
index 9196288..40f17af 100644
--- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go
+++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go
@@ -108,7 +108,9 @@
 	if f.L1.Path == "" {
 		return nil, errors.New("file path must be populated")
 	}
-	if f.L1.Syntax == protoreflect.Editions && (fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) {
+	if f.L1.Syntax == protoreflect.Editions &&
+		(fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) &&
+		fd.GetEdition() != descriptorpb.Edition_EDITION_UNSTABLE {
 		// Allow cmd/protoc-gen-go/testdata to use any edition for easier
 		// testing of upcoming edition features.
 		if !strings.HasPrefix(fd.GetName(), "cmd/protoc-gen-go/testdata/") {
@@ -152,6 +154,7 @@
 		imp := &f.L2.Imports[i]
 		imps.importPublic(imp.Imports())
 	}
+	optionImps := importSet{f.Path(): true}
 	if len(fd.GetOptionDependency()) > 0 {
 		optionImports := make(filedesc.FileImports, len(fd.GetOptionDependency()))
 		for i, path := range fd.GetOptionDependency() {
@@ -165,10 +168,12 @@
 			}
 			imp.FileDescriptor = f
 
-			if imps[imp.Path()] {
+			if imps[imp.Path()] || optionImps[imp.Path()] {
 				return nil, errors.New("already imported %q", path)
 			}
-			imps[imp.Path()] = true
+			// This needs to be a separate map so that we don't recognize non-options
+			// symbols coming from option imports.
+			optionImps[imp.Path()] = true
 		}
 		f.L2.OptionImports = func() protoreflect.FileImports {
 			return &optionImports
diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go
index 697a61b..147b8c7 100644
--- a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go
+++ b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go
@@ -46,6 +46,8 @@
 		return descriptorpb.Edition_EDITION_2023
 	case filedesc.Edition2024:
 		return descriptorpb.Edition_EDITION_2024
+	case filedesc.EditionUnstable:
+		return descriptorpb.Edition_EDITION_UNSTABLE
 	default:
 		panic(fmt.Sprintf("unknown value for edition: %v", ed))
 	}
@@ -58,7 +60,7 @@
 		return def
 	}
 	edpb := toEditionProto(ed)
-	if defaults.GetMinimumEdition() > edpb || defaults.GetMaximumEdition() < edpb {
+	if (defaults.GetMinimumEdition() > edpb || defaults.GetMaximumEdition() < edpb) && edpb != descriptorpb.Edition_EDITION_UNSTABLE {
 		// This should never happen protodesc.(FileOptions).New would fail when
 		// initializing the file descriptor.
 		// This most likely means the embedded defaults were not updated.
diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
index 4eacb52..0b23faa 100644
--- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
+++ b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
@@ -69,6 +69,8 @@
 	// comparison.
 	Edition_EDITION_2023 Edition = 1000
 	Edition_EDITION_2024 Edition = 1001
+	// A placeholder edition for developing and testing unscheduled features.
+	Edition_EDITION_UNSTABLE Edition = 9999
 	// Placeholder editions for testing feature resolution.  These should not be
 	// used or relied on outside of tests.
 	Edition_EDITION_1_TEST_ONLY     Edition = 1
@@ -91,6 +93,7 @@
 		999:        "EDITION_PROTO3",
 		1000:       "EDITION_2023",
 		1001:       "EDITION_2024",
+		9999:       "EDITION_UNSTABLE",
 		1:          "EDITION_1_TEST_ONLY",
 		2:          "EDITION_2_TEST_ONLY",
 		99997:      "EDITION_99997_TEST_ONLY",
@@ -105,6 +108,7 @@
 		"EDITION_PROTO3":          999,
 		"EDITION_2023":            1000,
 		"EDITION_2024":            1001,
+		"EDITION_UNSTABLE":        9999,
 		"EDITION_1_TEST_ONLY":     1,
 		"EDITION_2_TEST_ONLY":     2,
 		"EDITION_99997_TEST_ONLY": 99997,
@@ -4793,11 +4797,11 @@
 	"\x18EnumValueDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" +
 	"\x06number\x18\x02 \x01(\x05R\x06number\x12;\n" +
-	"\aoptions\x18\x03 \x01(\v2!.google.protobuf.EnumValueOptionsR\aoptions\"\xa7\x01\n" +
+	"\aoptions\x18\x03 \x01(\v2!.google.protobuf.EnumValueOptionsR\aoptions\"\xb5\x01\n" +
 	"\x16ServiceDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x12>\n" +
 	"\x06method\x18\x02 \x03(\v2&.google.protobuf.MethodDescriptorProtoR\x06method\x129\n" +
-	"\aoptions\x18\x03 \x01(\v2\x1f.google.protobuf.ServiceOptionsR\aoptions\"\x89\x02\n" +
+	"\aoptions\x18\x03 \x01(\v2\x1f.google.protobuf.ServiceOptionsR\aoptionsJ\x04\b\x04\x10\x05R\x06stream\"\x89\x02\n" +
 	"\x15MethodDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n" +
 	"\n" +
@@ -5033,14 +5037,15 @@
 	"\bSemantic\x12\b\n" +
 	"\x04NONE\x10\x00\x12\a\n" +
 	"\x03SET\x10\x01\x12\t\n" +
-	"\x05ALIAS\x10\x02*\xa7\x02\n" +
+	"\x05ALIAS\x10\x02*\xbe\x02\n" +
 	"\aEdition\x12\x13\n" +
 	"\x0fEDITION_UNKNOWN\x10\x00\x12\x13\n" +
 	"\x0eEDITION_LEGACY\x10\x84\a\x12\x13\n" +
 	"\x0eEDITION_PROTO2\x10\xe6\a\x12\x13\n" +
 	"\x0eEDITION_PROTO3\x10\xe7\a\x12\x11\n" +
 	"\fEDITION_2023\x10\xe8\a\x12\x11\n" +
-	"\fEDITION_2024\x10\xe9\a\x12\x17\n" +
+	"\fEDITION_2024\x10\xe9\a\x12\x15\n" +
+	"\x10EDITION_UNSTABLE\x10\x8fN\x12\x17\n" +
 	"\x13EDITION_1_TEST_ONLY\x10\x01\x12\x17\n" +
 	"\x13EDITION_2_TEST_ONLY\x10\x02\x12\x1d\n" +
 	"\x17EDITION_99997_TEST_ONLY\x10\x9d\x8d\x06\x12\x1d\n" +
diff --git a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
index 06d584c..484c21f 100644
--- a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
+++ b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
@@ -172,13 +172,14 @@
 // ) to obtain a formatter capable of generating timestamps in this format.
 type Timestamp struct {
 	state protoimpl.MessageState `protogen:"open.v1"`
-	// Represents seconds of UTC time since Unix epoch
-	// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
-	// 9999-12-31T23:59:59Z inclusive.
+	// Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must
+	// be between -315576000000 and 315576000000 inclusive (which corresponds to
+	// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).
 	Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`
-	// Non-negative fractions of a second at nanosecond resolution. Negative
-	// second values with fractions must still have non-negative nanos values
-	// that count forward in time. Must be from 0 to 999,999,999
+	// Non-negative fractions of a second at nanosecond resolution. This field is
+	// the nanosecond portion of the duration, not an alternative to seconds.
+	// Negative second values with fractions must still have non-negative nanos
+	// values that count forward in time. Must be between 0 and 999,999,999
 	// inclusive.
 	Nanos         int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
 	unknownFields protoimpl.UnknownFields
diff --git a/vendor/modules.txt b/vendor/modules.txt
index b46076f..0ff36e9 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -34,15 +34,9 @@
 github.com/gogo/protobuf/gogoproto
 github.com/gogo/protobuf/proto
 github.com/gogo/protobuf/protoc-gen-gogo/descriptor
-# github.com/golang/mock v1.6.0
-## explicit; go 1.11
-github.com/golang/mock/gomock
 # github.com/golang/protobuf v1.5.4
 ## explicit; go 1.17
 github.com/golang/protobuf/proto
-github.com/golang/protobuf/ptypes/any
-github.com/golang/protobuf/ptypes/empty
-github.com/golang/protobuf/ptypes/timestamp
 # github.com/google/gopacket v0.0.0-00010101000000-000000000000 => github.com/tinojj/gopacket v1.1.20-0.20220525133109-3e65a52a1a61
 ## explicit; go 1.12
 github.com/google/gopacket
@@ -71,14 +65,14 @@
 # github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
 ## explicit
 github.com/munnerz/goautoneg
-# github.com/opencord/voltha-lib-go/v7 v7.7.2
-## explicit; go 1.24.5
+# github.com/opencord/voltha-lib-go/v7 v7.8.1
+## explicit; go 1.25.3
 github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore
 github.com/opencord/voltha-lib-go/v7/pkg/flows
 github.com/opencord/voltha-lib-go/v7/pkg/log
 github.com/opencord/voltha-lib-go/v7/pkg/probe
-# github.com/opencord/voltha-protos/v5 v5.6.6
-## explicit; go 1.16
+# github.com/opencord/voltha-protos/v5 v5.7.1
+## explicit; go 1.25.3
 github.com/opencord/voltha-protos/v5/go/common
 github.com/opencord/voltha-protos/v5/go/ext/config
 github.com/opencord/voltha-protos/v5/go/extension
@@ -176,6 +170,9 @@
 # go.uber.org/atomic v1.7.0
 ## explicit; go 1.13
 go.uber.org/atomic
+# go.uber.org/mock v0.6.0
+## explicit; go 1.23.0
+go.uber.org/mock/gomock
 # go.uber.org/multierr v1.11.0
 ## explicit; go 1.19
 go.uber.org/multierr
@@ -194,7 +191,7 @@
 # go.yaml.in/yaml/v2 v2.4.2
 ## explicit; go 1.15
 go.yaml.in/yaml/v2
-# golang.org/x/net v0.46.0
+# golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82
 ## explicit; go 1.24.0
 golang.org/x/net/context
 golang.org/x/net/http/httpguts
@@ -214,14 +211,14 @@
 golang.org/x/text/transform
 golang.org/x/text/unicode/bidi
 golang.org/x/text/unicode/norm
-# google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b
-## explicit; go 1.23.0
+# google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2
+## explicit; go 1.24.0
 google.golang.org/genproto/googleapis/api
 google.golang.org/genproto/googleapis/api/annotations
-# google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b
-## explicit; go 1.23.0
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846
+## explicit; go 1.24.0
 google.golang.org/genproto/googleapis/rpc/status
-# google.golang.org/grpc v1.76.0
+# google.golang.org/grpc v1.77.0
 ## explicit; go 1.24.0
 google.golang.org/grpc
 google.golang.org/grpc/attributes
@@ -232,7 +229,6 @@
 google.golang.org/grpc/balancer/grpclb/state
 google.golang.org/grpc/balancer/pickfirst
 google.golang.org/grpc/balancer/pickfirst/internal
-google.golang.org/grpc/balancer/pickfirst/pickfirstleaf
 google.golang.org/grpc/balancer/roundrobin
 google.golang.org/grpc/binarylog/grpc_binarylog_v1
 google.golang.org/grpc/channelz
@@ -241,6 +237,7 @@
 google.golang.org/grpc/credentials
 google.golang.org/grpc/credentials/insecure
 google.golang.org/grpc/encoding
+google.golang.org/grpc/encoding/internal
 google.golang.org/grpc/encoding/proto
 google.golang.org/grpc/experimental/stats
 google.golang.org/grpc/grpclog
@@ -284,7 +281,7 @@
 google.golang.org/grpc/stats
 google.golang.org/grpc/status
 google.golang.org/grpc/tap
-# google.golang.org/protobuf v1.36.10
+# google.golang.org/protobuf v1.36.11
 ## explicit; go 1.23
 google.golang.org/protobuf/encoding/protodelim
 google.golang.org/protobuf/encoding/protojson