[VOL-5567] update protos

Change-Id: I2237e104062831286129ece7cae6621fd971ecb9
Signed-off-by: Abhay Kumar <abhay.kumar@radisys.com>
diff --git a/go/voltha/device.pb.go b/go/voltha/device.pb.go
index 81c3b36..5e46934 100644
--- a/go/voltha/device.pb.go
+++ b/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,656 +2159,536 @@
 
 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 ""
 }
 
 type UpdateDevice 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"` //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"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	Address       isUpdateDevice_Address `protobuf_oneof:"address"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *UpdateDevice) Reset()         { *m = UpdateDevice{} }
-func (m *UpdateDevice) String() string { return proto.CompactTextString(m) }
-func (*UpdateDevice) ProtoMessage()    {}
+func (x *UpdateDevice) Reset() {
+	*x = UpdateDevice{}
+	mi := &file_voltha_protos_device_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+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 fileDescriptor_200940f73d155856, []int{23}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{23}
 }
 
-func (m *UpdateDevice) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UpdateDevice.Unmarshal(m, b)
-}
-func (m *UpdateDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UpdateDevice.Marshal(b, m, deterministic)
-}
-func (m *UpdateDevice) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UpdateDevice.Merge(m, src)
-}
-func (m *UpdateDevice) XXX_Size() int {
-	return xxx_messageInfo_UpdateDevice.Size(m)
-}
-func (m *UpdateDevice) XXX_DiscardUnknown() {
-	xxx_messageInfo_UpdateDevice.DiscardUnknown(m)
+func (x *UpdateDevice) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
 }
 
-var xxx_messageInfo_UpdateDevice proto.InternalMessageInfo
+func (x *UpdateDevice) GetAddress() isUpdateDevice_Address {
+	if x != nil {
+		return x.Address
+	}
+	return nil
+}
 
-func (m *UpdateDevice) GetId() string {
-	if m != nil {
-		return m.Id
+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 ""
 }
@@ -2473,10 +2698,13 @@
 }
 
 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"`
 }
 
@@ -2490,268 +2718,579 @@
 
 func (*UpdateDevice_HostAndPort) isUpdateDevice_Address() {}
 
-func (m *UpdateDevice) GetAddress() isUpdateDevice_Address {
-	if m != nil {
-		return m.Address
-	}
-	return nil
+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 (m *UpdateDevice) GetIpv4Address() string {
-	if x, ok := m.GetAddress().(*UpdateDevice_Ipv4Address); ok {
-		return x.Ipv4Address
+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 (m *UpdateDevice) GetIpv6Address() string {
-	if x, ok := m.GetAddress().(*UpdateDevice_Ipv6Address); ok {
-		return x.Ipv6Address
+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 (m *UpdateDevice) GetHostAndPort() string {
-	if x, ok := m.GetAddress().(*UpdateDevice_HostAndPort); ok {
-		return x.HostAndPort
+func (x *Device_ProxyAddress) GetDeviceType() string {
+	if x != nil {
+		return x.DeviceType
 	}
 	return ""
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*UpdateDevice) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+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),
 	}
-}
-
-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")
-	proto.RegisterType((*UpdateDevice)(nil), "device.UpdateDevice")
-}
-
-func init() { proto.RegisterFile("voltha_protos/device.proto", fileDescriptor_200940f73d155856) }
-
-var fileDescriptor_200940f73d155856 = []byte{
-	// 2938 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4b, 0x6f, 0x1b, 0xc9,
-	0xf1, 0x37, 0x49, 0xf1, 0x31, 0xc5, 0x87, 0x46, 0x2d, 0xc9, 0x1e, 0x4b, 0xeb, 0xbf, 0xbd, 0xe3,
-	0x7d, 0xc8, 0xeb, 0x5d, 0x69, 0xd7, 0xfe, 0x67, 0x37, 0x09, 0x10, 0xac, 0x29, 0x72, 0x64, 0x31,
-	0x91, 0x87, 0xca, 0x90, 0xd4, 0x66, 0xf7, 0x32, 0x18, 0x71, 0x9a, 0xd2, 0xc0, 0xc3, 0x69, 0x7a,
-	0x66, 0x28, 0xc9, 0x7b, 0x4b, 0x82, 0xe4, 0x14, 0x20, 0x01, 0x72, 0xca, 0x07, 0x08, 0x90, 0x53,
-	0x90, 0xdb, 0xe6, 0x18, 0xe4, 0x13, 0xe4, 0x98, 0x73, 0x2e, 0xf9, 0x00, 0xc9, 0x07, 0x08, 0xfa,
-	0x35, 0x0f, 0x4a, 0xf2, 0x7a, 0x83, 0x20, 0xc8, 0x85, 0x98, 0xfe, 0x55, 0x75, 0x75, 0x77, 0x75,
-	0xd7, 0xaf, 0xab, 0x9a, 0xb0, 0x71, 0x46, 0xfc, 0xf8, 0xd4, 0xb1, 0x67, 0x21, 0x89, 0x49, 0xb4,
-	0xe3, 0xe2, 0x33, 0x6f, 0x8c, 0xb7, 0x59, 0x0b, 0x55, 0x78, 0x6b, 0xe3, 0xf6, 0x09, 0x21, 0x27,
-	0x3e, 0xde, 0x61, 0xe8, 0xf1, 0x7c, 0xb2, 0xe3, 0x04, 0x2f, 0xb9, 0xca, 0xc6, 0x42, 0xf7, 0x31,
-	0x99, 0x4e, 0x49, 0x20, 0x64, 0x77, 0xf3, 0x32, 0x32, 0xc3, 0xc1, 0xc4, 0x27, 0xe7, 0xf6, 0x47,
-	0x8f, 0xb9, 0x82, 0xfe, 0xb7, 0x22, 0x40, 0x97, 0x0d, 0x31, 0x7c, 0x39, 0xc3, 0xa8, 0x05, 0x45,
-	0xcf, 0xd5, 0x0a, 0xf7, 0x0a, 0x5b, 0x8a, 0x55, 0xf4, 0x5c, 0xb4, 0x09, 0xca, 0x19, 0x0e, 0x5c,
-	0x12, 0xda, 0x9e, 0xab, 0x95, 0x19, 0x5c, 0xe3, 0x40, 0xcf, 0x45, 0x77, 0x00, 0x12, 0x61, 0xa4,
-	0x55, 0xee, 0x95, 0xb6, 0x14, 0x4b, 0x91, 0xd2, 0x08, 0x69, 0x50, 0x75, 0x5c, 0x67, 0x16, 0xe3,
-	0x50, 0x2b, 0xb2, 0x9e, 0xb2, 0x89, 0x3e, 0x01, 0xcd, 0x19, 0x8f, 0xf1, 0x2c, 0x8e, 0xec, 0xe3,
-	0xb9, 0xff, 0xdc, 0x66, 0x53, 0x9a, 0xcf, 0x5c, 0x27, 0xc6, 0x5a, 0xe9, 0x5e, 0x61, 0xab, 0x66,
-	0xad, 0x0b, 0xf9, 0xee, 0xdc, 0x7f, 0xbe, 0xe7, 0x93, 0xf3, 0x11, 0x13, 0xa2, 0x2e, 0xdc, 0x95,
-	0x1d, 0x1d, 0xd7, 0xb5, 0x43, 0x3c, 0x25, 0x67, 0x38, 0xdb, 0x3d, 0xd2, 0x96, 0x58, 0xff, 0x4d,
-	0xa1, 0xd6, 0x76, 0x5d, 0x8b, 0x29, 0xa5, 0x46, 0x22, 0x74, 0x00, 0xf7, 0xa5, 0x15, 0xd7, 0x0b,
-	0xf1, 0x38, 0xb6, 0x7d, 0x72, 0xe2, 0x8d, 0x1d, 0x9f, 0x59, 0x8a, 0xe4, 0x4c, 0xaa, 0xcc, 0x92,
-	0x1c, 0xb0, 0xcb, 0x34, 0x0f, 0xb8, 0x22, 0xb5, 0x16, 0x89, 0x39, 0xbd, 0x09, 0x0d, 0xb1, 0x2e,
-	0x3b, 0x7e, 0x39, 0xc3, 0x5a, 0x8d, 0xad, 0xb5, 0x2e, 0x30, 0xea, 0x55, 0xfd, 0x13, 0xa8, 0xa7,
-	0x3e, 0x8e, 0xd0, 0x16, 0x94, 0xbd, 0x18, 0x4f, 0x23, 0xad, 0x70, 0xaf, 0xb4, 0x55, 0x7f, 0x84,
-	0xb6, 0xc5, 0x8e, 0xa7, 0x3a, 0x16, 0x57, 0xd0, 0xff, 0x54, 0x80, 0xda, 0xe1, 0xb4, 0x43, 0x82,
-	0x89, 0x77, 0x82, 0x10, 0x2c, 0x05, 0xce, 0x14, 0x8b, 0xdd, 0x61, 0xdf, 0xe8, 0x21, 0x2c, 0xb1,
-	0x41, 0xa9, 0x83, 0x5b, 0x8f, 0x6e, 0x49, 0x4b, 0xb2, 0xcf, 0xf6, 0xe1, 0x94, 0x99, 0x63, 0x4a,
-	0x74, 0x43, 0x70, 0xe0, 0x1c, 0xfb, 0xd8, 0x15, 0x5e, 0x96, 0x4d, 0x74, 0x17, 0xea, 0x91, 0x33,
-	0x9d, 0xf9, 0xd8, 0x9e, 0x84, 0xf8, 0x05, 0xf3, 0x61, 0xd3, 0x02, 0x0e, 0xed, 0x85, 0xf8, 0x85,
-	0xfe, 0x6d, 0xa8, 0x70, 0x53, 0xa8, 0x0e, 0xd5, 0x4e, 0x7f, 0x64, 0x0e, 0x0d, 0x4b, 0xbd, 0x81,
-	0x14, 0x28, 0x3f, 0x6d, 0x8f, 0x9e, 0x1a, 0x6a, 0x81, 0x7e, 0x0e, 0x86, 0xed, 0xa1, 0xa1, 0x16,
-	0xb9, 0x8a, 0x39, 0x34, 0x7e, 0x34, 0x54, 0x4b, 0xfa, 0xaf, 0x0b, 0xd0, 0x3c, 0x9c, 0x3e, 0x0d,
-	0xc9, 0x7c, 0x26, 0xd6, 0x71, 0x07, 0xe0, 0x84, 0x36, 0xed, 0xcc, 0x6a, 0x14, 0x86, 0x98, 0x74,
-	0x49, 0x89, 0x98, 0x4d, 0xa5, 0xc8, 0xa6, 0xc2, 0xc5, 0x74, 0x26, 0xaf, 0x58, 0xc4, 0x7b, 0x50,
-	0x9d, 0xe2, 0x38, 0xf4, 0xc6, 0xf4, 0x10, 0x50, 0xc7, 0xaa, 0x8b, 0xee, 0xb0, 0xa4, 0x82, 0xfe,
-	0x8f, 0x02, 0x28, 0x12, 0x8d, 0x2e, 0x9d, 0xfa, 0x37, 0xa1, 0xe1, 0xe2, 0x89, 0x33, 0xf7, 0xe3,
-	0xec, 0x24, 0xea, 0x02, 0x93, 0xd3, 0x60, 0x73, 0x4a, 0xa7, 0x21, 0x9a, 0xe8, 0x3e, 0x34, 0x69,
-	0x27, 0x9b, 0x9c, 0xe1, 0x30, 0xf4, 0x5c, 0x2c, 0x4e, 0x64, 0x83, 0x82, 0x7d, 0x81, 0xa1, 0x0f,
-	0xa0, 0xc2, 0xf4, 0x23, 0xad, 0xcc, 0xa6, 0xba, 0x9e, 0x4e, 0x35, 0xe3, 0x2a, 0x4b, 0x28, 0x65,
-	0x97, 0x56, 0xf9, 0x9a, 0xa5, 0xa1, 0xdb, 0x50, 0x9b, 0x3a, 0x17, 0x76, 0xf4, 0x1c, 0x9f, 0xb3,
-	0x23, 0xdc, 0xb4, 0xaa, 0x53, 0xe7, 0x62, 0xf0, 0x1c, 0x9f, 0xeb, 0xbf, 0x2c, 0x42, 0xb9, 0x37,
-	0x75, 0x4e, 0xf0, 0x95, 0x67, 0x49, 0x83, 0xea, 0x19, 0x0e, 0x23, 0x8f, 0x04, 0x32, 0x5e, 0x45,
-	0x93, 0x6a, 0x9f, 0x3a, 0xd1, 0x29, 0x5b, 0x69, 0xd3, 0x62, 0xdf, 0xe8, 0x01, 0xa8, 0x5e, 0x10,
-	0xc5, 0x8e, 0xef, 0xdb, 0x34, 0x0c, 0x62, 0x6f, 0xca, 0x57, 0xaa, 0x58, 0xcb, 0x02, 0xef, 0x0a,
-	0x98, 0x92, 0x88, 0x17, 0xd9, 0xce, 0x38, 0xf6, 0xce, 0x30, 0x23, 0x91, 0x9a, 0x55, 0xf3, 0xa2,
-	0x36, 0x6b, 0x53, 0x5f, 0x7b, 0x91, 0x4d, 0x49, 0xcb, 0x8b, 0x63, 0xec, 0x6a, 0x15, 0x26, 0xaf,
-	0x7b, 0x51, 0x47, 0x42, 0x74, 0x45, 0x5e, 0x64, 0x9f, 0x39, 0xbe, 0xe7, 0x8a, 0xa0, 0xac, 0x7a,
-	0xd1, 0x11, 0x6d, 0x22, 0x15, 0x4a, 0xf3, 0xd0, 0x17, 0x31, 0x47, 0x3f, 0xd1, 0x4d, 0xa8, 0x70,
-	0x0a, 0xd2, 0x14, 0x06, 0x8a, 0x16, 0x5a, 0x83, 0xf2, 0x38, 0x1c, 0x3f, 0x7e, 0xa4, 0x01, 0x5b,
-	0x04, 0x6f, 0xe8, 0x7f, 0xaf, 0x42, 0x93, 0x79, 0xa4, 0x4b, 0xce, 0x03, 0x9f, 0x38, 0xee, 0xa5,
-	0xb3, 0x20, 0x3d, 0x55, 0xcc, 0x78, 0x4a, 0x8c, 0x5a, 0x4a, 0x47, 0x55, 0xa1, 0x34, 0x0e, 0xc7,
-	0x22, 0x70, 0xe8, 0x27, 0xea, 0x43, 0xcb, 0x15, 0x36, 0xed, 0x28, 0xa6, 0x7c, 0x52, 0x66, 0x31,
-	0xba, 0x25, 0x77, 0x2e, 0x37, 0x6c, 0xbe, 0x35, 0xa0, 0xfa, 0x56, 0xd3, 0xcd, 0x36, 0xe9, 0xb9,
-	0xf2, 0xa8, 0x92, 0x2d, 0x37, 0xa9, 0xc2, 0x86, 0x6f, 0x30, 0xf0, 0x48, 0xec, 0xd4, 0x03, 0x50,
-	0x65, 0x2f, 0xec, 0xda, 0xc7, 0x2f, 0x29, 0x23, 0xf2, 0x43, 0xb0, 0x9c, 0xe2, 0xbb, 0x14, 0x46,
-	0xfb, 0x50, 0x09, 0xb1, 0x13, 0x91, 0x80, 0x79, 0xaf, 0xf5, 0xe8, 0xc3, 0xd7, 0x98, 0xd8, 0x9e,
-	0xe3, 0xf9, 0xf3, 0x10, 0x5b, 0xac, 0x9f, 0x25, 0xfa, 0xa3, 0x77, 0x61, 0xd9, 0x71, 0x5d, 0x2f,
-	0xf6, 0x48, 0xe0, 0xf8, 0xb6, 0x17, 0x4c, 0x88, 0xf0, 0x7d, 0x2b, 0x85, 0x7b, 0xc1, 0x84, 0x70,
-	0x9a, 0x39, 0xc3, 0xf6, 0x98, 0x1d, 0x59, 0xb6, 0x13, 0x35, 0x4a, 0x33, 0x67, 0x58, 0x50, 0xc3,
-	0x26, 0x28, 0x3e, 0xa1, 0x44, 0xec, 0x7a, 0xa1, 0x56, 0xe7, 0xd7, 0x0d, 0x03, 0xba, 0x5e, 0x88,
-	0x7a, 0x50, 0xe7, 0x0e, 0xe0, 0xee, 0x6c, 0x7c, 0xad, 0x3b, 0xd9, 0x09, 0x73, 0x62, 0xcc, 0xdd,
-	0x09, 0xac, 0x33, 0xf7, 0xe5, 0x26, 0x28, 0x13, 0xcf, 0xc7, 0x76, 0xe4, 0x7d, 0x89, 0xb5, 0x26,
-	0xf3, 0x4f, 0x8d, 0x02, 0x03, 0xef, 0x4b, 0xac, 0x7f, 0x55, 0x00, 0x74, 0x79, 0x3b, 0xd0, 0x1a,
-	0xa8, 0xdd, 0xfe, 0x67, 0xe6, 0x41, 0xbf, 0xdd, 0xb5, 0x47, 0xe6, 0x0f, 0xcc, 0xfe, 0x67, 0xa6,
-	0x7a, 0x03, 0xdd, 0x04, 0x94, 0xa0, 0x83, 0x51, 0xa7, 0x63, 0x18, 0x5d, 0xa3, 0xab, 0x16, 0x72,
-	0xb8, 0x65, 0xfc, 0x70, 0x64, 0x0c, 0x86, 0x46, 0x57, 0x2d, 0xe6, 0xac, 0x0c, 0x86, 0x6d, 0x8b,
-	0xa2, 0x25, 0xb4, 0x0a, 0xcb, 0x09, 0xba, 0xd7, 0xee, 0x1d, 0x18, 0x5d, 0x75, 0x09, 0x69, 0xb0,
-	0x96, 0x19, 0x70, 0x30, 0x3a, 0x3c, 0xec, 0x33, 0xf5, 0x72, 0xce, 0x78, 0xa7, 0x6d, 0x76, 0x8c,
-	0x03, 0xda, 0xa3, 0xa2, 0xff, 0xbc, 0x00, 0x1b, 0xd7, 0xef, 0x17, 0x6a, 0x40, 0xcd, 0xec, 0xdb,
-	0x86, 0x65, 0xf5, 0x29, 0x77, 0x2f, 0x43, 0xbd, 0x67, 0x1e, 0xb5, 0x0f, 0x7a, 0x5d, 0x7b, 0x64,
-	0x1d, 0xa8, 0x05, 0x0a, 0x74, 0x8d, 0xa3, 0x5e, 0xc7, 0xb0, 0x77, 0x47, 0x83, 0xcf, 0xd5, 0x22,
-	0x1d, 0xa6, 0x67, 0x0e, 0x46, 0x7b, 0x7b, 0xbd, 0x4e, 0xcf, 0x30, 0x87, 0xf6, 0xe0, 0xb0, 0xdd,
-	0x31, 0xd4, 0x12, 0x5a, 0x81, 0xa6, 0x70, 0x80, 0x30, 0xb6, 0x84, 0x9a, 0xa0, 0xa4, 0x13, 0x29,
-	0xeb, 0xbf, 0x90, 0x2e, 0xcc, 0x6d, 0x01, 0xed, 0xd8, 0x7b, 0xd6, 0x7e, 0x6a, 0x64, 0xfc, 0x87,
-	0xa0, 0xc5, 0xa1, 0x9e, 0xd9, 0xee, 0x0c, 0x7b, 0x47, 0xf4, 0x2a, 0x59, 0x03, 0x95, 0x63, 0x0c,
-	0x69, 0x0f, 0x7b, 0xe6, 0x53, 0xb5, 0x88, 0x54, 0x68, 0x64, 0x50, 0x83, 0x7b, 0x8d, 0x23, 0x96,
-	0x71, 0x64, 0x58, 0x4c, 0x6d, 0x29, 0x35, 0xc8, 0x41, 0x3a, 0x9d, 0xef, 0x16, 0xb5, 0x82, 0xde,
-	0x86, 0x56, 0xce, 0x35, 0x11, 0x7a, 0x28, 0xaf, 0xe1, 0x62, 0x9e, 0x82, 0x73, 0x6a, 0xe2, 0x26,
-	0x66, 0x26, 0x3e, 0x80, 0x0a, 0x93, 0x45, 0xe8, 0x3e, 0x94, 0xd9, 0x69, 0x12, 0x37, 0x78, 0x33,
-	0xd7, 0xd5, 0xe2, 0x32, 0xfd, 0x0f, 0x05, 0xa8, 0xf5, 0x83, 0x39, 0x27, 0xdc, 0x0c, 0xb9, 0x16,
-	0xf2, 0xe4, 0xfa, 0x7f, 0x00, 0x92, 0xec, 0xb0, 0xcb, 0x68, 0xa6, 0x66, 0x65, 0x10, 0xb4, 0x01,
-	0x09, 0x59, 0x8a, 0xab, 0x26, 0x25, 0x4f, 0x0d, 0x24, 0x13, 0x8a, 0x5b, 0x26, 0x21, 0xc6, 0x7b,
-	0x50, 0x9f, 0x85, 0xc4, 0x9d, 0x8f, 0xe3, 0x0e, 0x71, 0xb1, 0x48, 0xdd, 0xb2, 0x50, 0x42, 0xea,
-	0x9c, 0x46, 0xd8, 0xb7, 0xfe, 0x18, 0x14, 0x39, 0xe3, 0x08, 0xbd, 0x93, 0x4f, 0x53, 0x92, 0x2b,
-	0x47, 0x6a, 0xc8, 0x24, 0x65, 0x0c, 0x2a, 0xcf, 0x5c, 0x7a, 0xb9, 0x00, 0xe3, 0xda, 0x76, 0x42,
-	0xa6, 0x35, 0x0e, 0xf4, 0x5c, 0xf4, 0x08, 0x32, 0xb1, 0xc8, 0x56, 0x9c, 0x49, 0x82, 0x52, 0x23,
-	0xd9, 0x88, 0xd5, 0x7f, 0x52, 0x03, 0xc8, 0xd8, 0xbf, 0xde, 0x9d, 0x07, 0x97, 0x78, 0x97, 0xe7,
-	0x46, 0x6f, 0x5f, 0x1e, 0xe0, 0x35, 0x48, 0xf7, 0x7b, 0x09, 0x49, 0x96, 0x5e, 0x6d, 0xe5, 0x6a,
-	0x66, 0xdc, 0xcf, 0x53, 0xd6, 0x12, 0xb3, 0xf1, 0xee, 0x75, 0x36, 0x44, 0xb0, 0x78, 0x24, 0xb8,
-	0xbc, 0xfe, 0xbf, 0xfc, 0xcf, 0x93, 0xd2, 0x2d, 0x58, 0x5d, 0x24, 0x25, 0x1a, 0x91, 0x95, 0x6b,
-	0xd8, 0xaa, 0xaa, 0xff, 0x53, 0x2e, 0xe9, 0xbf, 0xc6, 0x52, 0x1a, 0xac, 0x25, 0x13, 0xb0, 0xfb,
-	0xa6, 0xf4, 0x81, 0x5a, 0x46, 0x1b, 0x70, 0x33, 0x27, 0xe9, 0x9b, 0x23, 0x9b, 0xa7, 0xb3, 0x15,
-	0x2a, 0x3b, 0x32, 0xcc, 0x6e, 0xdf, 0xb2, 0xc5, 0xc0, 0xcf, 0x7a, 0x83, 0x67, 0xed, 0x61, 0x67,
-	0x5f, 0xad, 0xd2, 0x45, 0xf7, 0x9f, 0x75, 0x7a, 0xf6, 0xd0, 0x6a, 0x9b, 0x83, 0x3d, 0xc3, 0x12,
-	0x43, 0xd5, 0xe8, 0x50, 0x92, 0x86, 0xf6, 0x46, 0x03, 0xa3, 0x6b, 0xef, 0x7e, 0x4e, 0x8d, 0xaa,
-	0x8a, 0xfe, 0xc7, 0x22, 0xac, 0x5d, 0xb5, 0xdd, 0xff, 0x69, 0x76, 0x4c, 0xf4, 0x3a, 0xfd, 0x67,
-	0xcf, 0x7a, 0x43, 0x41, 0x8f, 0x09, 0x67, 0x0a, 0x94, 0x6d, 0xdd, 0x1d, 0xb8, 0x9d, 0x37, 0xd9,
-	0x37, 0xed, 0xf6, 0x6e, 0x9f, 0x53, 0x6a, 0x05, 0xbd, 0x01, 0xda, 0xd5, 0x62, 0xba, 0x8d, 0xe8,
-	0x36, 0xac, 0x67, 0x2d, 0xa6, 0x1d, 0x33, 0x4e, 0xc8, 0x8a, 0x8c, 0xae, 0xaa, 0xa0, 0x75, 0x58,
-	0xe1, 0x12, 0x79, 0x32, 0x68, 0x07, 0x48, 0x27, 0x92, 0x81, 0x93, 0x5e, 0x75, 0xfd, 0xab, 0x32,
-	0x2c, 0x1d, 0x92, 0x30, 0x46, 0xb7, 0xa0, 0x3a, 0x23, 0x61, 0x6c, 0x07, 0x84, 0x85, 0x7f, 0xd3,
-	0xaa, 0xd0, 0xa6, 0x49, 0x68, 0x96, 0xe7, 0x3b, 0xc7, 0xd8, 0x17, 0xe9, 0x1a, 0x6f, 0xa0, 0x07,
-	0xa2, 0x4a, 0xe2, 0x31, 0x9c, 0xe6, 0xda, 0x24, 0x8c, 0xd9, 0x4f, 0xa6, 0x46, 0xfa, 0x0e, 0xd4,
-	0x1d, 0x77, 0xea, 0x05, 0xb9, 0x9c, 0x4d, 0xdb, 0x16, 0x45, 0x75, 0x9b, 0x8a, 0x78, 0xc4, 0xb2,
-	0x52, 0xce, 0x02, 0x27, 0x41, 0x68, 0x57, 0x32, 0xc3, 0x21, 0xeb, 0x39, 0x8f, 0x18, 0xaf, 0x66,
-	0xba, 0xf6, 0x67, 0x38, 0x1c, 0x30, 0x89, 0xec, 0x4a, 0x12, 0x24, 0x4f, 0x97, 0xd5, 0x05, 0xba,
-	0x7c, 0x08, 0xe5, 0x19, 0xc6, 0x61, 0xa4, 0xd5, 0x16, 0x4a, 0x05, 0x36, 0x7d, 0x8c, 0x43, 0xfa,
-	0x61, 0x71, 0x1d, 0x5a, 0x3d, 0x85, 0x17, 0xf6, 0xcc, 0x19, 0x3f, 0xc7, 0x71, 0xc4, 0xd2, 0xb0,
-	0x8a, 0xa5, 0x84, 0x17, 0x87, 0x1c, 0xa0, 0xa9, 0x74, 0x78, 0x21, 0xf2, 0x42, 0x60, 0xc2, 0x6a,
-	0x78, 0xc1, 0xf3, 0xc1, 0x4d, 0x50, 0xc2, 0x0b, 0x1b, 0x87, 0x21, 0x09, 0x23, 0x96, 0x7b, 0x55,
-	0xac, 0x5a, 0x78, 0x61, 0xb0, 0x36, 0x35, 0x1b, 0xa7, 0x66, 0x1b, 0xdc, 0x6c, 0x9c, 0x35, 0x1b,
-	0x4b, 0xb3, 0x4d, 0x6e, 0x36, 0x4e, 0xcd, 0xc6, 0x89, 0xd9, 0x16, 0x37, 0x1b, 0x4b, 0xb3, 0x1f,
-	0x42, 0x8d, 0x4c, 0x66, 0x36, 0xdd, 0x3c, 0x6d, 0x99, 0xdd, 0x03, 0xeb, 0xdb, 0xd9, 0x37, 0x0a,
-	0x29, 0xb4, 0xaa, 0x64, 0x32, 0xa3, 0xcb, 0xdc, 0x78, 0x02, 0x35, 0xb9, 0xe4, 0x57, 0x5f, 0x32,
-	0x99, 0x23, 0x52, 0xcc, 0x1e, 0x11, 0x3d, 0x82, 0x9a, 0xdc, 0x73, 0x5a, 0xa9, 0xa6, 0xc1, 0xa6,
-	0x42, 0xc3, 0x18, 0xee, 0x1b, 0x96, 0x69, 0x0c, 0x6d, 0xd3, 0xec, 0xa9, 0x85, 0x1c, 0x32, 0x32,
-	0x7b, 0xbc, 0xb4, 0x3d, 0xa4, 0xf4, 0x70, 0x30, 0x54, 0x4b, 0x49, 0xc3, 0x1c, 0xf1, 0x0c, 0xe8,
-	0xc8, 0xa0, 0x8a, 0x54, 0x56, 0xce, 0x34, 0xcd, 0x91, 0x5a, 0xd1, 0x1f, 0x42, 0x99, 0x0e, 0x1a,
-	0x21, 0x3d, 0x7f, 0xa9, 0x36, 0xb2, 0x9b, 0x29, 0x2f, 0xd4, 0xbf, 0x02, 0x54, 0xf8, 0x8d, 0x7a,
-	0x55, 0x35, 0x92, 0xd4, 0xfb, 0x8a, 0x38, 0xb2, 0x08, 0x96, 0x42, 0x42, 0x62, 0x91, 0x1c, 0xb0,
-	0x6f, 0xea, 0x9a, 0x99, 0x13, 0xe2, 0x20, 0xb6, 0x45, 0x6a, 0xa0, 0x58, 0x35, 0x0e, 0xf4, 0x5c,
-	0xf4, 0x16, 0xb4, 0x84, 0x50, 0x7a, 0x68, 0x8d, 0x79, 0xa8, 0xc1, 0xd1, 0x43, 0x1e, 0x4a, 0x69,
-	0x21, 0x55, 0x5e, 0x2c, 0xa4, 0xa6, 0xc4, 0xc5, 0xbe, 0x48, 0x1c, 0x78, 0x83, 0x16, 0x1e, 0xa7,
-	0x4e, 0xe8, 0x9e, 0x3b, 0x61, 0x5a, 0xa0, 0xf0, 0x83, 0xbc, 0x2c, 0xf1, 0x4c, 0x8d, 0x32, 0xf1,
-	0xc2, 0x69, 0x4e, 0x95, 0x17, 0x70, 0xcb, 0x12, 0x97, 0xaa, 0xef, 0x40, 0x85, 0xdd, 0x81, 0xfc,
-	0x24, 0xd7, 0x1f, 0xb5, 0x72, 0x57, 0x67, 0x64, 0x09, 0x29, 0xad, 0x8d, 0x22, 0x1c, 0x7a, 0x8e,
-	0x6f, 0x07, 0xf3, 0xe9, 0x31, 0x0e, 0xd9, 0xd9, 0x56, 0xac, 0x06, 0x07, 0x4d, 0x86, 0xe5, 0xdf,
-	0xb2, 0xb4, 0x85, 0xb7, 0xac, 0x07, 0xa0, 0xca, 0x57, 0x1c, 0x1c, 0xb8, 0x33, 0xe2, 0x05, 0xb1,
-	0x76, 0x9b, 0x4f, 0x4a, 0xe0, 0x86, 0x80, 0xa9, 0xbf, 0xcf, 0x7c, 0x27, 0x60, 0x51, 0xd0, 0xb4,
-	0xd8, 0x37, 0xad, 0x6c, 0xa6, 0xce, 0xd8, 0x76, 0x5c, 0x37, 0xc4, 0x11, 0x8f, 0x01, 0xc5, 0x82,
-	0xa9, 0x33, 0x6e, 0x73, 0x04, 0xdd, 0x87, 0x86, 0x37, 0x3b, 0xfb, 0xff, 0x44, 0x83, 0x46, 0x82,
-	0xb2, 0x7f, 0xc3, 0xaa, 0x53, 0x34, 0xaf, 0xf4, 0x71, 0xa2, 0xb4, 0x9c, 0x51, 0xfa, 0x58, 0x2a,
-	0xbd, 0x05, 0xcd, 0x53, 0x12, 0xc5, 0xb6, 0x13, 0xb8, 0x3c, 0x70, 0xd6, 0xa5, 0x16, 0x85, 0xdb,
-	0x81, 0xcb, 0x62, 0xe3, 0x0e, 0x00, 0xbe, 0x88, 0x43, 0xc7, 0x76, 0xc2, 0x93, 0x48, 0xbb, 0xc5,
-	0x1f, 0x59, 0x18, 0xd2, 0x0e, 0x4f, 0x22, 0xf4, 0x04, 0x9a, 0xb3, 0x90, 0x5c, 0xbc, 0x4c, 0x86,
-	0x5a, 0x65, 0xfe, 0xdd, 0xcc, 0x3f, 0x45, 0x6d, 0x1f, 0x52, 0x1d, 0x31, 0xb0, 0xd5, 0x98, 0x65,
-	0x5a, 0x8b, 0x44, 0xa9, 0xfe, 0xfb, 0x44, 0xb9, 0xf2, 0x0d, 0x88, 0xf2, 0x66, 0x92, 0x8f, 0xdd,
-	0xe4, 0x87, 0x52, 0x24, 0x5a, 0xbb, 0xd0, 0x1a, 0x93, 0x20, 0xc0, 0xe3, 0x58, 0x5a, 0x45, 0xcc,
-	0xea, 0xa6, 0xb4, 0xda, 0xe1, 0xd2, 0x9c, 0xe1, 0xe6, 0x38, 0x0b, 0xa2, 0xf7, 0xa1, 0x32, 0x9e,
-	0x47, 0x31, 0x99, 0x6a, 0x4f, 0x98, 0x33, 0xd6, 0xb6, 0xf9, 0x9b, 0xeb, 0xb6, 0x7c, 0x73, 0xdd,
-	0x6e, 0x07, 0x2f, 0x2d, 0xa1, 0x83, 0x3e, 0x02, 0x98, 0x4d, 0x45, 0x25, 0x1b, 0x69, 0x3f, 0x2d,
-	0xb0, 0x2e, 0x2b, 0x8b, 0xcf, 0x32, 0x91, 0xa5, 0xcc, 0x92, 0x67, 0xa6, 0x4f, 0x61, 0x99, 0x67,
-	0x83, 0x32, 0xc7, 0x8c, 0xb4, 0x9f, 0x15, 0x5e, 0x55, 0x7b, 0xb4, 0xbc, 0x5c, 0xc5, 0xb2, 0xf1,
-	0xfb, 0x22, 0x34, 0xb2, 0x5b, 0xf2, 0x6a, 0x06, 0xbc, 0x0b, 0x75, 0x21, 0xcc, 0x50, 0x06, 0xb8,
-	0xe9, 0x63, 0xef, 0x1d, 0x80, 0xf1, 0xa9, 0x13, 0x04, 0xd8, 0xa7, 0xdd, 0xf9, 0xe3, 0x8e, 0x22,
-	0x90, 0x9e, 0x8b, 0xb6, 0x40, 0x95, 0x62, 0xfe, 0x20, 0x27, 0xa8, 0xa4, 0x69, 0xb5, 0x04, 0xce,
-	0x9e, 0xaa, 0x7a, 0x2e, 0xda, 0x81, 0x55, 0xa9, 0x19, 0xe3, 0x70, 0xea, 0x05, 0x2c, 0xab, 0x11,
-	0xbc, 0x81, 0x84, 0x68, 0x98, 0x4a, 0xd0, 0x3a, 0x54, 0x48, 0x30, 0xa7, 0x06, 0x2b, 0xfc, 0x35,
-	0x86, 0x04, 0x73, 0x4e, 0x4c, 0x14, 0x8e, 0x70, 0x44, 0xa3, 0x5f, 0xde, 0x85, 0x4d, 0xab, 0x41,
-	0x82, 0xf9, 0x80, 0x83, 0xd7, 0x84, 0x6a, 0xed, 0xca, 0x50, 0xdd, 0x55, 0xa0, 0x2a, 0x0e, 0xf8,
-	0xf7, 0x97, 0x6a, 0x75, 0xb5, 0xa1, 0xff, 0xb9, 0x00, 0x1b, 0x99, 0x62, 0x25, 0xf1, 0x34, 0x7e,
-	0x31, 0xc7, 0x51, 0x8c, 0xde, 0xcd, 0xfb, 0x93, 0x6e, 0x0d, 0xc8, 0x13, 0xd4, 0xeb, 0x66, 0x7c,
-	0x9b, 0x14, 0x80, 0xbc, 0x7a, 0xb9, 0xb2, 0x00, 0x44, 0xef, 0xc3, 0x8a, 0x23, 0xea, 0xdf, 0x7e,
-	0x30, 0x98, 0x8f, 0xc7, 0x34, 0xd0, 0x38, 0x4b, 0x5f, 0x16, 0xa0, 0x2d, 0x58, 0xe6, 0xaf, 0x60,
-	0xa9, 0x2e, 0xaf, 0xe9, 0x16, 0x61, 0xfd, 0xc7, 0x05, 0x40, 0x99, 0x45, 0x7c, 0xe3, 0xc9, 0x5f,
-	0xff, 0xd0, 0x77, 0xc5, 0x1c, 0x4a, 0x57, 0xcf, 0xc1, 0x86, 0xd5, 0xdc, 0x14, 0xa2, 0x19, 0x09,
-	0x22, 0x8c, 0xf6, 0x61, 0x55, 0xce, 0x21, 0xad, 0x7b, 0xe4, 0x65, 0xa7, 0xe5, 0xd9, 0x25, 0x53,
-	0xe9, 0xad, 0xb8, 0x0b, 0x48, 0xa4, 0xff, 0xb6, 0x00, 0xea, 0x00, 0xfb, 0x93, 0x21, 0x8e, 0xe2,
-	0xc4, 0xfc, 0xa7, 0x34, 0xfc, 0xa3, 0xb9, 0x1f, 0xb3, 0xc3, 0x9e, 0x29, 0xa5, 0x16, 0x35, 0xb3,
-	0xc0, 0xdc, 0x8f, 0x2d, 0xd1, 0x4d, 0x3f, 0x84, 0x56, 0x5e, 0x42, 0x2f, 0x71, 0x56, 0x22, 0x0d,
-	0x06, 0xea, 0x0d, 0xda, 0xa0, 0x95, 0xce, 0xc8, 0xa2, 0x89, 0xf6, 0x0a, 0x34, 0xcd, 0xfe, 0xd0,
-	0x4e, 0x6b, 0x9c, 0xe2, 0xe5, 0x9a, 0xa2, 0xa4, 0xef, 0x40, 0x95, 0x2f, 0x87, 0x32, 0x73, 0xee,
-	0x6e, 0x6f, 0xe5, 0x97, 0x2b, 0x6f, 0xf7, 0xdf, 0x95, 0x60, 0x6d, 0xe0, 0x4d, 0xe7, 0xbe, 0x13,
-	0xe3, 0xb6, 0xef, 0x84, 0x53, 0xb9, 0x7f, 0x8b, 0x77, 0xfd, 0x1b, 0xa0, 0x78, 0x81, 0xeb, 0x8d,
-	0x9d, 0x98, 0xc8, 0x7f, 0x50, 0x52, 0x80, 0xe6, 0x37, 0x5e, 0x10, 0x4f, 0x64, 0xe4, 0x2a, 0x56,
-	0x85, 0x36, 0xc5, 0xed, 0x4e, 0xaf, 0x75, 0x1a, 0xf4, 0xfc, 0x89, 0x9d, 0xdf, 0xff, 0x8d, 0x99,
-	0xc8, 0x7a, 0xd8, 0x2b, 0xbb, 0x0e, 0x4d, 0x1a, 0x6a, 0xe9, 0x81, 0x11, 0x2f, 0x04, 0x24, 0x98,
-	0x77, 0xe5, 0x39, 0x79, 0x0c, 0x37, 0xbd, 0x80, 0x1e, 0x0d, 0x6c, 0x1f, 0x7b, 0x31, 0xcf, 0xe1,
-	0xec, 0x90, 0xb2, 0x3d, 0x8d, 0xda, 0xb2, 0xb5, 0x2a, 0xa4, 0xbb, 0x5e, 0xcc, 0xf2, 0x39, 0x8b,
-	0x57, 0xa4, 0x65, 0x37, 0xf4, 0x26, 0x31, 0x0b, 0xdd, 0xb2, 0xc5, 0x1b, 0x74, 0xb6, 0x01, 0x3e,
-	0xb7, 0xf1, 0x0b, 0x97, 0x85, 0x6a, 0xd9, 0xaa, 0x04, 0xf8, 0xdc, 0x78, 0xe1, 0xa2, 0xf7, 0x60,
-	0x85, 0x87, 0x7c, 0xf6, 0xf6, 0xe6, 0xaf, 0x87, 0xcb, 0x2c, 0xea, 0x33, 0x17, 0xf8, 0x3e, 0x28,
-	0xf4, 0x2a, 0xe0, 0xe4, 0x02, 0xec, 0x00, 0xbc, 0x97, 0x1c, 0x80, 0x2b, 0x3c, 0xca, 0xae, 0x12,
-	0xa6, 0xcd, 0x12, 0xfc, 0xb4, 0xb3, 0xfe, 0x36, 0x34, 0x73, 0x32, 0xa4, 0x40, 0xd9, 0x6a, 0xf7,
-	0x06, 0x06, 0xff, 0x4f, 0xa3, 0x73, 0x60, 0xb4, 0x2d, 0xb5, 0xa0, 0xff, 0xaa, 0x00, 0xb7, 0xfa,
-	0xf9, 0x49, 0xf4, 0x83, 0xfe, 0xc1, 0xf0, 0x90, 0x04, 0x68, 0x1b, 0x9a, 0xc4, 0x8f, 0xed, 0x3c,
-	0xfd, 0xe6, 0x23, 0xae, 0x4e, 0xfc, 0x38, 0x71, 0xe6, 0x3d, 0x58, 0x62, 0xb7, 0x35, 0x27, 0x8c,
-	0x7c, 0xde, 0xc7, 0x24, 0x97, 0x93, 0x98, 0xd2, 0xe5, 0x24, 0x46, 0xff, 0x4d, 0x01, 0x1a, 0xfc,
-	0x8f, 0xa7, 0x6b, 0x32, 0xc4, 0xc5, 0x44, 0xa3, 0xf8, 0x3a, 0x89, 0x46, 0xe9, 0xb5, 0x12, 0x8d,
-	0xa5, 0x2b, 0x12, 0x8d, 0x0c, 0xc5, 0xee, 0x7e, 0x01, 0x1b, 0x24, 0x3c, 0x61, 0x09, 0xfc, 0x98,
-	0x84, 0xee, 0x36, 0xff, 0xef, 0x51, 0xac, 0x74, 0xb7, 0x71, 0xc4, 0x9a, 0x7c, 0xda, 0x5f, 0x6c,
-	0x9f, 0x78, 0xf1, 0xe9, 0xfc, 0x98, 0x7a, 0x6b, 0x47, 0x76, 0xd8, 0xe1, 0x1d, 0x3e, 0x10, 0x7f,
-	0x56, 0x9e, 0x7d, 0x6b, 0xe7, 0x84, 0x08, 0xec, 0xb8, 0xc2, 0xc0, 0xc7, 0xff, 0x0a, 0x00, 0x00,
-	0xff, 0xff, 0x7b, 0x3a, 0xcb, 0x63, 0x2c, 0x1d, 0x00, 0x00,
+	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
 }