[VOL-4514] Addressing device reconciliation failure

See comments on https://jira.opencord.org/browse/VOL-4514

This change is dependent on the related proto and voltha lib go
changes to be merged first.  Until then jenkins will fail.

Change-Id: I8d99c3619d630677d402b9fb4b4f0bc22dd9a9f0
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/client.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/client.go
index add2b28..9b66d85 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/client.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/client.go
@@ -27,6 +27,7 @@
 	grpc_opentracing "github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	"github.com/opencord/voltha-lib-go/v7/pkg/probe"
+	"github.com/opencord/voltha-protos/v5/go/common"
 	"github.com/opencord/voltha-protos/v5/go/core_service"
 	"github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service"
 	"github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service"
@@ -36,7 +37,7 @@
 
 type event byte
 type state byte
-type SetAndTestServiceHandler func(context.Context, *grpc.ClientConn) interface{}
+type SetAndTestServiceHandler func(context.Context, *grpc.ClientConn, *common.Connection) interface{}
 type RestartedHandler func(ctx context.Context, endPoint string) error
 
 type contextKey string
@@ -83,7 +84,8 @@
 )
 
 type Client struct {
-	apiEndPoint            string
+	clientEndpoint         string
+	serverEndPoint         string
 	connection             *grpc.ClientConn
 	connectionLock         sync.RWMutex
 	stateLock              sync.RWMutex
@@ -94,25 +96,17 @@
 	backoffInitialInterval time.Duration
 	backoffMaxInterval     time.Duration
 	backoffMaxElapsedTime  time.Duration
-	activityCheck          bool
 	monitorInterval        time.Duration
-	activeCh               chan struct{}
-	activeChMutex          sync.RWMutex
 	done                   bool
 	livenessCallback       func(timestamp time.Time)
 }
 
 type ClientOption func(*Client)
 
-func ActivityCheck(enable bool) ClientOption {
-	return func(args *Client) {
-		args.activityCheck = enable
-	}
-}
-
-func NewClient(endpoint string, onRestart RestartedHandler, opts ...ClientOption) (*Client, error) {
+func NewClient(clientEndpoint, serverEndpoint string, onRestart RestartedHandler, opts ...ClientOption) (*Client, error) {
 	c := &Client{
-		apiEndPoint:            endpoint,
+		clientEndpoint:         clientEndpoint,
+		serverEndPoint:         serverEndpoint,
 		onRestart:              onRestart,
 		events:                 make(chan event, 1),
 		state:                  stateDisconnected,
@@ -156,7 +150,7 @@
 	c.connectionLock.RLock()
 	defer c.connectionLock.RUnlock()
 	if c.service == nil {
-		return nil, fmt.Errorf("no connection to %s", c.apiEndPoint)
+		return nil, fmt.Errorf("no connection to %s", c.serverEndPoint)
 	}
 	return c.service, nil
 }
@@ -167,7 +161,7 @@
 	c.connectionLock.RLock()
 	defer c.connectionLock.RUnlock()
 	if c.service == nil {
-		return nil, fmt.Errorf("no core connection to %s", c.apiEndPoint)
+		return nil, fmt.Errorf("no core connection to %s", c.serverEndPoint)
 	}
 	client, ok := c.service.(core_service.CoreServiceClient)
 	if ok {
@@ -182,7 +176,7 @@
 	c.connectionLock.RLock()
 	defer c.connectionLock.RUnlock()
 	if c.service == nil {
-		return nil, fmt.Errorf("no child adapter connection to %s", c.apiEndPoint)
+		return nil, fmt.Errorf("no child adapter connection to %s", c.serverEndPoint)
 	}
 	client, ok := c.service.(onu_inter_adapter_service.OnuInterAdapterServiceClient)
 	if ok {
@@ -197,7 +191,7 @@
 	c.connectionLock.RLock()
 	defer c.connectionLock.RUnlock()
 	if c.service == nil {
-		return nil, fmt.Errorf("no parent adapter connection to %s", c.apiEndPoint)
+		return nil, fmt.Errorf("no parent adapter connection to %s", c.serverEndPoint)
 	}
 	client, ok := c.service.(olt_inter_adapter_service.OltInterAdapterServiceClient)
 	if ok {
@@ -207,7 +201,7 @@
 }
 
 func (c *Client) Reset(ctx context.Context) {
-	logger.Debugw(ctx, "resetting-client-connection", log.Fields{"endpoint": c.apiEndPoint})
+	logger.Debugw(ctx, "resetting-client-connection", log.Fields{"endpoint": c.serverEndPoint})
 	c.stateLock.Lock()
 	defer c.stateLock.Unlock()
 	if c.state == stateConnected {
@@ -222,7 +216,7 @@
 	err := invoker(ctx, method, req, reply, cc, opts...)
 	// On connection failure, start the reconnect process depending on the error response
 	if err != nil {
-		logger.Errorw(ctx, "received-error", log.Fields{"error": err, "context": ctx, "endpoint": c.apiEndPoint})
+		logger.Errorw(ctx, "received-error", log.Fields{"error": err, "context": ctx, "endpoint": c.serverEndPoint})
 		if strings.Contains(err.Error(), connectionErrorSubString) ||
 			strings.Contains(err.Error(), connectionError) ||
 			strings.Contains(err.Error(), connectionSystemNotReady) ||
@@ -230,12 +224,12 @@
 			c.stateLock.Lock()
 			if c.state == stateConnected {
 				c.state = stateDisconnected
-				logger.Warnw(context.Background(), "sending-disconnect-event", log.Fields{"endpoint": c.apiEndPoint, "error": err, "curr-state": stateConnected, "new-state": c.state})
+				logger.Warnw(context.Background(), "sending-disconnect-event", log.Fields{"endpoint": c.serverEndPoint, "error": err, "curr-state": stateConnected, "new-state": c.state})
 				c.events <- eventDisconnected
 			}
 			c.stateLock.Unlock()
 		} else if strings.Contains(err.Error(), connectionClosedSubstring) {
-			logger.Errorw(context.Background(), "invalid-client-connection-closed", log.Fields{"endpoint": c.apiEndPoint, "error": err})
+			logger.Errorw(context.Background(), "invalid-client-connection-closed", log.Fields{"endpoint": c.serverEndPoint, "error": err})
 		}
 		return err
 	}
@@ -244,24 +238,17 @@
 	return nil
 }
 
-// updateActivity pushes an activity indication on the channel so that the monitoring routine does not validate
-// the gRPC connection when the connection is being used. Note that this update is done both when the connection
-// is alive or a connection error is returned. A separate routine takes care of doing the re-connect.
+// updateActivity updates the liveness channel
 func (c *Client) updateActivity(ctx context.Context) {
-	c.activeChMutex.RLock()
-	defer c.activeChMutex.RUnlock()
-	if c.activeCh != nil {
-		logger.Debugw(ctx, "update-activity", log.Fields{"api-endpoint": c.apiEndPoint})
-		c.activeCh <- struct{}{}
+	logger.Debugw(ctx, "update-activity", log.Fields{"api-endpoint": c.serverEndPoint})
 
-		// Update liveness only in connected state
-		if c.livenessCallback != nil {
-			c.stateLock.RLock()
-			if c.state == stateConnected {
-				c.livenessCallback(time.Now())
-			}
-			c.stateLock.RUnlock()
+	// Update liveness only in connected state
+	if c.livenessCallback != nil {
+		c.stateLock.RLock()
+		if c.state == stateConnected {
+			c.livenessCallback(time.Now())
 		}
+		c.stateLock.RUnlock()
 	}
 }
 
@@ -282,14 +269,7 @@
 // timeout, it will send a default API request on that connection.   If the connection is good then nothing
 // happens.  If it's bad this will trigger reconnection attempts.
 func (c *Client) monitorActivity(ctx context.Context, handler SetAndTestServiceHandler) {
-	logger.Infow(ctx, "start-activity-monitor", log.Fields{"endpoint": c.apiEndPoint})
-
-	// Create an activity monitor channel.  Unbuffered channel works well.  However, we use a buffered
-	// channel here as a safeguard of having the grpc interceptor publishing too many events that can be
-	// consumed by this monitoring thread
-	c.activeChMutex.Lock()
-	c.activeCh = make(chan struct{}, 10)
-	c.activeChMutex.Unlock()
+	logger.Infow(ctx, "start-activity-monitor", log.Fields{"endpoint": c.serverEndPoint})
 
 	grpcMonitorCheckRunning := false
 	var grpcMonitorCheckRunningLock sync.RWMutex
@@ -301,18 +281,14 @@
 		timeoutTimer := time.NewTimer(timeout)
 		select {
 
-		case <-c.activeCh:
-			logger.Debugw(ctx, "endpoint-reachable", log.Fields{"endpoint": c.apiEndPoint})
-
-			// Reset timer
+		case <-ctx.Done():
+			// Stop and drain timer
 			if !timeoutTimer.Stop() {
 				select {
 				case <-timeoutTimer.C:
 				default:
 				}
 			}
-
-		case <-ctx.Done():
 			break loop
 
 		case <-timeoutTimer.C:
@@ -328,21 +304,21 @@
 					grpcMonitorCheckRunningLock.Lock()
 					if grpcMonitorCheckRunning {
 						grpcMonitorCheckRunningLock.Unlock()
-						logger.Debugw(ctx, "connection-check-already-in-progress", log.Fields{"api-endpoint": c.apiEndPoint})
+						logger.Debugw(ctx, "connection-check-already-in-progress", log.Fields{"api-endpoint": c.serverEndPoint})
 						return
 					}
 					grpcMonitorCheckRunning = true
 					grpcMonitorCheckRunningLock.Unlock()
 
-					logger.Debugw(ctx, "connection-check-start", log.Fields{"api-endpoint": c.apiEndPoint})
+					logger.Debugw(ctx, "connection-check-start", log.Fields{"api-endpoint": c.serverEndPoint})
 					subCtx, cancel := context.WithTimeout(ctx, c.backoffMaxInterval)
 					defer cancel()
 					subCtx = WithGrpcMonitorContext(subCtx, "grpc-monitor")
 					c.connectionLock.RLock()
 					defer c.connectionLock.RUnlock()
 					if c.connection != nil {
-						response := handler(subCtx, c.connection)
-						logger.Debugw(ctx, "connection-check-response", log.Fields{"api-endpoint": c.apiEndPoint, "up": response != nil})
+						response := handler(subCtx, c.connection, &common.Connection{Endpoint: c.clientEndpoint, KeepAliveInterval: int64(c.monitorInterval)})
+						logger.Debugw(ctx, "connection-check-response", log.Fields{"api-endpoint": c.serverEndPoint, "up": response != nil})
 					}
 					grpcMonitorCheckRunningLock.Lock()
 					grpcMonitorCheckRunning = false
@@ -351,23 +327,21 @@
 			}
 		}
 	}
-	logger.Infow(ctx, "activity-monitor-stopping", log.Fields{"endpoint": c.apiEndPoint})
+	logger.Infow(ctx, "activity-monitor-stopping", log.Fields{"endpoint": c.serverEndPoint})
 }
 
 // Start kicks off the adapter agent by trying to connect to the adapter
 func (c *Client) Start(ctx context.Context, handler SetAndTestServiceHandler) {
-	logger.Debugw(ctx, "Starting GRPC - Client", log.Fields{"api-endpoint": c.apiEndPoint})
+	logger.Debugw(ctx, "Starting GRPC - Client", log.Fields{"api-endpoint": c.serverEndPoint})
 
 	// If the context contains a k8s probe then register services
 	p := probe.GetProbeFromContext(ctx)
 	if p != nil {
-		p.RegisterService(ctx, c.apiEndPoint)
+		p.RegisterService(ctx, c.serverEndPoint)
 	}
 
-	// Enable activity check, if required
-	if c.activityCheck {
-		go c.monitorActivity(ctx, handler)
-	}
+	// Enable activity check
+	go c.monitorActivity(ctx, handler)
 
 	initialConnection := true
 	c.events <- eventConnecting
@@ -377,22 +351,22 @@
 	for {
 		select {
 		case <-ctx.Done():
-			logger.Debugw(ctx, "context-closing", log.Fields{"endpoint": c.apiEndPoint})
+			logger.Debugw(ctx, "context-closing", log.Fields{"endpoint": c.serverEndPoint})
 			break loop
 		case event := <-c.events:
-			logger.Debugw(ctx, "received-event", log.Fields{"event": event, "endpoint": c.apiEndPoint})
+			logger.Debugw(ctx, "received-event", log.Fields{"event": event, "endpoint": c.serverEndPoint})
 			c.connectionLock.RLock()
 			// On a client stopped, just allow the stop event to go through
 			if c.done && event != eventStopped {
 				c.connectionLock.RUnlock()
-				logger.Debugw(ctx, "ignoring-event-on-client-stop", log.Fields{"event": event, "endpoint": c.apiEndPoint})
+				logger.Debugw(ctx, "ignoring-event-on-client-stop", log.Fields{"event": event, "endpoint": c.serverEndPoint})
 				continue
 			}
 			c.connectionLock.RUnlock()
 			switch event {
 			case eventConnecting:
 				c.stateLock.Lock()
-				logger.Debugw(ctx, "connection-start", log.Fields{"endpoint": c.apiEndPoint, "attempts": attempt, "curr-state": c.state})
+				logger.Debugw(ctx, "connection-start", log.Fields{"endpoint": c.serverEndPoint, "attempts": attempt, "curr-state": c.state})
 				if c.state == stateConnected {
 					c.state = stateDisconnected
 				}
@@ -403,12 +377,12 @@
 							c.stateLock.Lock()
 							c.state = stateDisconnected
 							c.stateLock.Unlock()
-							logger.Errorw(ctx, "connection-failed", log.Fields{"endpoint": c.apiEndPoint, "attempt": attempt, "error": err})
+							logger.Errorw(ctx, "connection-failed", log.Fields{"endpoint": c.serverEndPoint, "attempt": attempt, "error": err})
 
 							// Retry connection after a delay
 							if err = backoff.Backoff(ctx); err != nil {
 								// Context has closed or reached maximum elapsed time, if set
-								logger.Errorw(ctx, "retry-aborted", log.Fields{"endpoint": c.apiEndPoint, "error": err})
+								logger.Errorw(ctx, "retry-aborted", log.Fields{"endpoint": c.serverEndPoint, "error": err})
 								return
 							}
 							attempt += 1
@@ -427,19 +401,19 @@
 			case eventConnected:
 				attempt = 1
 				c.stateLock.Lock()
-				logger.Debugw(ctx, "endpoint-connected", log.Fields{"endpoint": c.apiEndPoint, "curr-state": c.state})
+				logger.Debugw(ctx, "endpoint-connected", log.Fields{"endpoint": c.serverEndPoint, "curr-state": c.state})
 				if c.state != stateConnected {
 					c.state = stateConnected
 					if initialConnection {
-						logger.Debugw(ctx, "initial-endpoint-connection", log.Fields{"endpoint": c.apiEndPoint})
+						logger.Debugw(ctx, "initial-endpoint-connection", log.Fields{"endpoint": c.serverEndPoint})
 						initialConnection = false
 					} else {
-						logger.Debugw(ctx, "endpoint-reconnection", log.Fields{"endpoint": c.apiEndPoint})
+						logger.Debugw(ctx, "endpoint-reconnection", log.Fields{"endpoint": c.serverEndPoint})
 						// Trigger any callback on a restart
 						go func() {
-							err := c.onRestart(log.WithSpanFromContext(context.Background(), ctx), c.apiEndPoint)
+							err := c.onRestart(log.WithSpanFromContext(context.Background(), ctx), c.serverEndPoint)
 							if err != nil {
-								logger.Errorw(ctx, "unable-to-restart-endpoint", log.Fields{"error": err, "endpoint": c.apiEndPoint})
+								logger.Errorw(ctx, "unable-to-restart-endpoint", log.Fields{"error": err, "endpoint": c.serverEndPoint})
 							}
 						}()
 					}
@@ -448,36 +422,36 @@
 
 			case eventDisconnected:
 				if p != nil {
-					p.UpdateStatus(ctx, c.apiEndPoint, probe.ServiceStatusNotReady)
+					p.UpdateStatus(ctx, c.serverEndPoint, probe.ServiceStatusNotReady)
 				}
 				c.stateLock.RLock()
-				logger.Debugw(ctx, "endpoint-disconnected", log.Fields{"endpoint": c.apiEndPoint, "curr-state": c.state})
+				logger.Debugw(ctx, "endpoint-disconnected", log.Fields{"endpoint": c.serverEndPoint, "curr-state": c.state})
 				c.stateLock.RUnlock()
 
 				// Try to connect again
 				c.events <- eventConnecting
 
 			case eventStopped:
-				logger.Debugw(ctx, "endPoint-stopped", log.Fields{"adapter": c.apiEndPoint})
+				logger.Debugw(ctx, "endPoint-stopped", log.Fields{"adapter": c.serverEndPoint})
 				go func() {
 					if err := c.closeConnection(ctx, p); err != nil {
-						logger.Errorw(ctx, "endpoint-closing-connection-failed", log.Fields{"endpoint": c.apiEndPoint, "error": err})
+						logger.Errorw(ctx, "endpoint-closing-connection-failed", log.Fields{"endpoint": c.serverEndPoint, "error": err})
 					}
 				}()
 				break loop
 			case eventError:
-				logger.Errorw(ctx, "endpoint-error-event", log.Fields{"endpoint": c.apiEndPoint})
+				logger.Errorw(ctx, "endpoint-error-event", log.Fields{"endpoint": c.serverEndPoint})
 			default:
-				logger.Errorw(ctx, "endpoint-unknown-event", log.Fields{"endpoint": c.apiEndPoint, "error": event})
+				logger.Errorw(ctx, "endpoint-unknown-event", log.Fields{"endpoint": c.serverEndPoint, "error": event})
 			}
 		}
 	}
-	logger.Infow(ctx, "endpoint-stopped", log.Fields{"endpoint": c.apiEndPoint})
+	logger.Infow(ctx, "endpoint-stopped", log.Fields{"endpoint": c.serverEndPoint})
 }
 
 func (c *Client) connectToEndpoint(ctx context.Context, handler SetAndTestServiceHandler, p *probe.Probe) error {
 	if p != nil {
-		p.UpdateStatus(ctx, c.apiEndPoint, probe.ServiceStatusPreparing)
+		p.UpdateStatus(ctx, c.serverEndPoint, probe.ServiceStatusPreparing)
 	}
 
 	c.connectionLock.Lock()
@@ -494,7 +468,7 @@
 	// 1. automatically inject
 	// 2. publish Open Tracing Spans by this GRPC Client
 	// 3. detect connection failure on client calls such that the reconnection process can begin
-	conn, err := grpc.Dial(c.apiEndPoint,
+	conn, err := grpc.Dial(c.serverEndPoint,
 		grpc.WithInsecure(),
 		grpc.WithStreamInterceptor(grpc_middleware.ChainStreamClient(
 			grpc_opentracing.StreamClientInterceptor(grpc_opentracing.WithTracer(log.ActiveTracerProxy{})),
@@ -514,33 +488,33 @@
 	if err == nil {
 		subCtx, cancel := context.WithTimeout(ctx, c.backoffMaxInterval)
 		defer cancel()
-		svc := handler(subCtx, conn)
+		svc := handler(subCtx, conn, &common.Connection{Endpoint: c.clientEndpoint, KeepAliveInterval: int64(c.monitorInterval)})
 		if svc != nil {
 			c.connection = conn
 			c.service = svc
 			if p != nil {
-				p.UpdateStatus(ctx, c.apiEndPoint, probe.ServiceStatusRunning)
+				p.UpdateStatus(ctx, c.serverEndPoint, probe.ServiceStatusRunning)
 			}
-			logger.Infow(ctx, "connected-to-endpoint", log.Fields{"endpoint": c.apiEndPoint})
+			logger.Infow(ctx, "connected-to-endpoint", log.Fields{"endpoint": c.serverEndPoint})
 			c.events <- eventConnected
 			return nil
 		}
 	}
 	logger.Warnw(ctx, "Failed to connect to endpoint",
 		log.Fields{
-			"endpoint": c.apiEndPoint,
+			"endpoint": c.serverEndPoint,
 			"error":    err,
 		})
 
 	if p != nil {
-		p.UpdateStatus(ctx, c.apiEndPoint, probe.ServiceStatusFailed)
+		p.UpdateStatus(ctx, c.serverEndPoint, probe.ServiceStatusFailed)
 	}
-	return fmt.Errorf("no connection to endpoint %s", c.apiEndPoint)
+	return fmt.Errorf("no connection to endpoint %s", c.serverEndPoint)
 }
 
 func (c *Client) closeConnection(ctx context.Context, p *probe.Probe) error {
 	if p != nil {
-		p.UpdateStatus(ctx, c.apiEndPoint, probe.ServiceStatusStopped)
+		p.UpdateStatus(ctx, c.serverEndPoint, probe.ServiceStatusStopped)
 	}
 
 	c.connectionLock.Lock()
@@ -563,7 +537,7 @@
 		c.events <- eventStopped
 		close(c.events)
 	}
-	logger.Infow(ctx, "client-stopped", log.Fields{"endpoint": c.apiEndPoint})
+	logger.Infow(ctx, "client-stopped", log.Fields{"endpoint": c.serverEndPoint})
 }
 
 // SetService is used for testing only
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/mock_core_service.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/mock_core_service.go
index 015f667..22becce 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/mock_core_service.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/mock_core_service.go
@@ -131,6 +131,6 @@
 	return &empty.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) GetHealthStatus(ctx context.Context, empty *empty.Empty) (*health.HealthStatus, error) {
+func (handler *MockCoreServiceHandler) GetHealthStatus(ctx context.Context, conn *common.Connection) (*health.HealthStatus, error) {
 	return &health.HealthStatus{State: health.HealthStatus_HEALTHY}, nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service.pb.go
index bcf60ac..e8aa01c 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service.pb.go
@@ -36,60 +36,60 @@
 }
 
 var fileDescriptor_038e6ec340f67698 = []byte{
-	// 839 bytes of a gzipped FileDescriptorProto
+	// 846 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x6f, 0x6f, 0xdb, 0x36,
 	0x10, 0xc6, 0xb1, 0x0d, 0xd8, 0x8b, 0x4b, 0x6c, 0x27, 0x6c, 0x96, 0x0e, 0x0a, 0x56, 0x74, 0xed,
-	0xeb, 0xca, 0x40, 0x8b, 0xb6, 0x1b, 0x86, 0x61, 0xf3, 0xbf, 0xba, 0xde, 0x5a, 0x38, 0xb0, 0xe6,
+	0xeb, 0xca, 0x40, 0x8b, 0xb6, 0x1b, 0x8a, 0x01, 0xf3, 0xbf, 0xba, 0xde, 0x5a, 0x38, 0xb0, 0xe6,
 	0x62, 0xd8, 0x9b, 0x80, 0x96, 0xcf, 0x32, 0x51, 0x8a, 0xd4, 0xc8, 0x93, 0xd3, 0x7e, 0x83, 0x7d,
-	0x84, 0x7d, 0xdc, 0x42, 0x12, 0xe5, 0x58, 0xaa, 0xdd, 0xd6, 0x49, 0xde, 0x59, 0xf7, 0xf0, 0xf9,
+	0x80, 0x7d, 0xe0, 0x42, 0x12, 0xe5, 0x58, 0xaa, 0xdd, 0xd6, 0x49, 0xde, 0x59, 0xf7, 0xf0, 0xf9,
 	0xf1, 0x78, 0x47, 0x93, 0x84, 0x87, 0x2b, 0x2d, 0x69, 0xc9, 0x2f, 0x12, 0xa3, 0x49, 0xdb, 0x36,
 	0x9f, 0xf3, 0x84, 0xd0, 0x5c, 0x58, 0x34, 0x2b, 0x11, 0xa2, 0x9f, 0x87, 0x59, 0xab, 0x16, 0xf6,
-	0xce, 0x22, 0xad, 0x23, 0x89, 0xed, 0x5c, 0x9e, 0xa5, 0x8b, 0x36, 0xc6, 0x09, 0xbd, 0x2f, 0x46,
+	0xce, 0x22, 0xad, 0x23, 0x89, 0xed, 0x5c, 0x9e, 0xa5, 0x8b, 0x36, 0xc6, 0x09, 0x7d, 0x28, 0x46,
 	0x7b, 0x5e, 0x15, 0x19, 0xea, 0x38, 0xd6, 0xca, 0x69, 0xf7, 0xeb, 0x9a, 0xc1, 0x0b, 0x07, 0xdf,
-	0xee, 0x9e, 0xe3, 0x55, 0x1e, 0xde, 0xbd, 0xaa, 0x86, 0xef, 0x08, 0x95, 0x15, 0x5a, 0xd9, 0xed,
-	0xde, 0x25, 0x72, 0x49, 0xcb, 0xed, 0x5a, 0xf1, 0xe5, 0xb4, 0x1f, 0xaa, 0x9a, 0x8e, 0x43, 0x71,
+	0xee, 0x9e, 0xe3, 0x55, 0x1e, 0xde, 0xbd, 0xaa, 0x86, 0xef, 0x09, 0x95, 0x15, 0x5a, 0xd9, 0xed,
+	0xde, 0x25, 0x72, 0x49, 0xcb, 0xed, 0x5a, 0xf1, 0xe5, 0xb4, 0x9f, 0xaa, 0x9a, 0x8e, 0x43, 0x71,
 	0x41, 0x68, 0x69, 0xbb, 0x15, 0x57, 0xa8, 0xc8, 0x4d, 0xf9, 0xf8, 0xff, 0x3b, 0xd0, 0xec, 0x14,
-	0x0b, 0x08, 0x8a, 0xe2, 0xb0, 0xdf, 0xa0, 0x35, 0x44, 0x7a, 0x99, 0x4f, 0x1e, 0x10, 0xa7, 0xd4,
-	0xb2, 0x53, 0xbf, 0x28, 0x98, 0x5f, 0x16, 0xcc, 0x1f, 0x64, 0x05, 0xf3, 0x4e, 0x7c, 0x97, 0x63,
-	0x65, 0xf4, 0x53, 0x38, 0xe8, 0xcc, 0x75, 0x42, 0xfd, 0x7c, 0xed, 0xac, 0xe9, 0xbb, 0x22, 0x14,
-	0xdf, 0xde, 0x0e, 0x18, 0xfb, 0x19, 0x5a, 0x13, 0x0c, 0xb5, 0x0a, 0x85, 0xc4, 0x3d, 0xad, 0xcf,
-	0xe0, 0xb0, 0x8f, 0x12, 0x69, 0x5f, 0xdf, 0x73, 0x68, 0xf4, 0x85, 0xe5, 0xb3, 0xbd, 0x27, 0xfc,
-	0x09, 0x9a, 0x13, 0x1c, 0xa8, 0x6b, 0x38, 0x9f, 0xc1, 0xe1, 0x04, 0x67, 0x5a, 0xd3, 0xfe, 0x33,
-	0x06, 0x28, 0x17, 0x7f, 0xa1, 0xdd, 0xd7, 0xd9, 0x85, 0xa3, 0x21, 0xd2, 0x78, 0x91, 0x14, 0xe3,
-	0x46, 0x6a, 0xa1, 0x3f, 0xf2, 0xde, 0xf3, 0x2b, 0x5b, 0x39, 0xb8, 0x14, 0x14, 0x2e, 0x7b, 0x3c,
-	0xe1, 0x33, 0x21, 0x45, 0xd1, 0x9b, 0xde, 0x52, 0xc8, 0x79, 0x31, 0xfc, 0x95, 0xb6, 0xf4, 0xc5,
-	0xd3, 0x3f, 0x06, 0x28, 0x0a, 0x75, 0xae, 0x0d, 0xb1, 0xc3, 0xd2, 0x95, 0x7d, 0xed, 0xf4, 0x3c,
-	0x81, 0x03, 0xd7, 0x97, 0x3d, 0x4c, 0x5d, 0x68, 0x4d, 0x93, 0x39, 0x27, 0x7c, 0x21, 0xf5, 0xa5,
-	0xed, 0xa6, 0xf2, 0x2d, 0xbb, 0x5b, 0x5d, 0x56, 0x16, 0xcb, 0xc5, 0x9d, 0x8c, 0x09, 0x7c, 0xbf,
-	0xc1, 0x18, 0xa9, 0xd0, 0x60, 0x8c, 0x8a, 0xb8, 0x94, 0xef, 0x59, 0xad, 0x46, 0x1b, 0xe2, 0xa7,
-	0x99, 0xbf, 0x43, 0x23, 0x40, 0x35, 0x3f, 0xe7, 0xe1, 0x5b, 0xa4, 0x71, 0x4a, 0xf5, 0xac, 0xd6,
-	0xc2, 0x4e, 0xc2, 0x00, 0x9a, 0x45, 0x56, 0xe7, 0x71, 0x4f, 0xab, 0x85, 0x88, 0xd8, 0x59, 0x0d,
-	0xe1, 0xe2, 0x36, 0x6b, 0xee, 0x4e, 0x4c, 0x00, 0x47, 0x7d, 0x7d, 0xa9, 0xa4, 0xe6, 0xf3, 0xb1,
-	0x4a, 0x47, 0x31, 0x8f, 0x90, 0x3d, 0xa8, 0x76, 0x31, 0x0f, 0x96, 0x83, 0x26, 0xf8, 0x6f, 0x8a,
-	0x96, 0xbc, 0xb3, 0x2d, 0x63, 0x26, 0x68, 0x13, 0xad, 0x2c, 0xb2, 0x57, 0x70, 0x9c, 0xed, 0x2e,
-	0xc7, 0x73, 0x27, 0x80, 0xb7, 0xd5, 0xf1, 0x05, 0xb4, 0x31, 0x9c, 0x74, 0x66, 0xda, 0xac, 0x79,
-	0xd3, 0x24, 0x32, 0x7c, 0x8e, 0xd7, 0x07, 0x3e, 0x82, 0xc3, 0x8d, 0xf4, 0x2c, 0x03, 0xdf, 0x9d,
-	0xe7, 0xa3, 0xbe, 0x77, 0x5c, 0x1a, 0xaf, 0xe4, 0x3f, 0xe1, 0xa8, 0x13, 0x92, 0x58, 0x71, 0xc2,
-	0x75, 0x89, 0xae, 0x3d, 0xf7, 0x08, 0x9a, 0x3d, 0x1d, 0xc7, 0x82, 0x6e, 0x8e, 0x1a, 0x43, 0xa3,
-	0xec, 0x4a, 0xd9, 0xb7, 0xea, 0x66, 0xdc, 0xec, 0xdb, 0x6b, 0xb4, 0x96, 0x47, 0xe8, 0x7d, 0x57,
-	0x12, 0x2b, 0xea, 0x83, 0x6f, 0xfe, 0xfb, 0xfa, 0x2b, 0xf6, 0x37, 0x9c, 0x0e, 0x91, 0x2a, 0x82,
-	0xeb, 0xdd, 0x4d, 0xc9, 0x53, 0xb8, 0xd3, 0xe3, 0x2a, 0x44, 0x59, 0xd1, 0x6e, 0x03, 0x5b, 0x76,
-	0xc6, 0xed, 0x8c, 0xec, 0x0f, 0x71, 0x63, 0x6c, 0x00, 0xc7, 0x13, 0x5c, 0xa1, 0xa1, 0xdb, 0x84,
-	0xfe, 0x02, 0x8d, 0x80, 0xb8, 0xa1, 0x71, 0x1c, 0x8a, 0xec, 0xc0, 0x66, 0xa7, 0x55, 0xe0, 0xf8,
-	0x75, 0x6f, 0x94, 0xc5, 0x3d, 0xe6, 0x67, 0x77, 0xb5, 0x9f, 0xfd, 0x5e, 0xb7, 0xfa, 0x0f, 0x68,
-	0x04, 0x22, 0x4e, 0x25, 0x27, 0xec, 0x48, 0x6e, 0xe2, 0x7a, 0x36, 0x15, 0xf1, 0x2a, 0x1b, 0xb7,
-	0xad, 0xc7, 0x09, 0x1a, 0x4e, 0x42, 0xab, 0x8c, 0x97, 0x27, 0x92, 0x26, 0x89, 0x41, 0x6b, 0x07,
-	0xd9, 0xad, 0xcf, 0x98, 0x9f, 0xdf, 0xfe, 0x7e, 0xfe, 0xf5, 0x42, 0x48, 0x42, 0xb3, 0xf3, 0xb8,
-	0xf8, 0x15, 0x5a, 0x53, 0x75, 0x7d, 0xfb, 0x4b, 0x38, 0x18, 0x22, 0x0d, 0xde, 0xd1, 0x1b, 0x2e,
-	0x53, 0x64, 0xf7, 0xab, 0xab, 0xd8, 0x90, 0xca, 0x35, 0xdc, 0xf5, 0xd7, 0x0f, 0x22, 0x7f, 0x82,
-	0x94, 0x1a, 0x95, 0xcb, 0x96, 0x0d, 0xe1, 0x20, 0xd8, 0x4d, 0x0a, 0x3e, 0x26, 0xed, 0x4a, 0x69,
-	0x0a, 0xcd, 0x21, 0x52, 0x20, 0x54, 0x24, 0xb1, 0x64, 0x5d, 0xcd, 0x59, 0xc4, 0x87, 0x58, 0xb0,
-	0xca, 0xbf, 0xe5, 0x8f, 0x9f, 0x18, 0xe1, 0x3a, 0x36, 0xcd, 0xae, 0xe6, 0xcf, 0x60, 0x83, 0xcf,
-	0x62, 0x83, 0x1a, 0xb6, 0x4b, 0xf0, 0x50, 0x9b, 0xc8, 0xd7, 0x09, 0xaa, 0x50, 0x9b, 0xb9, 0xef,
-	0x9e, 0x7c, 0xb5, 0xb7, 0x6c, 0xf7, 0xe4, 0x4d, 0x1e, 0xaf, 0x3e, 0xe2, 0xfe, 0x79, 0x1e, 0x09,
-	0x5a, 0xa6, 0xb3, 0x6c, 0x5b, 0xb4, 0x4b, 0x82, 0x7b, 0x34, 0x3e, 0x2a, 0x9f, 0x90, 0x4f, 0xdb,
-	0x91, 0xae, 0xbf, 0x98, 0x67, 0xdf, 0xe6, 0xea, 0x93, 0x0f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x14,
-	0x6f, 0x97, 0x84, 0x59, 0x0b, 0x00, 0x00,
+	0x0b, 0x08, 0x8a, 0xe2, 0xb0, 0x17, 0xd0, 0x1a, 0x22, 0xbd, 0xca, 0x27, 0x0f, 0x88, 0x53, 0x6a,
+	0x19, 0xf3, 0x5d, 0x15, 0x7a, 0x5a, 0x29, 0x0c, 0x49, 0x68, 0xe5, 0x9d, 0xf8, 0x2e, 0xbf, 0xca,
+	0xc8, 0xa7, 0x70, 0xd0, 0x99, 0xeb, 0x84, 0xfa, 0xf9, 0xba, 0x59, 0xd3, 0x77, 0x05, 0x28, 0xbe,
+	0xbd, 0x53, 0xbf, 0xa8, 0xbc, 0x5f, 0x56, 0xde, 0x1f, 0x64, 0x95, 0x67, 0xbf, 0x42, 0x6b, 0x82,
+	0xa1, 0x56, 0xa1, 0x90, 0xb8, 0xa7, 0xf5, 0x19, 0x1c, 0xf6, 0x51, 0x22, 0xed, 0xeb, 0x7b, 0x0e,
+	0x8d, 0xbe, 0xb0, 0x7c, 0xb6, 0xf7, 0x84, 0xbf, 0x40, 0x73, 0x82, 0x03, 0x75, 0x0d, 0xe7, 0x33,
+	0x38, 0x9c, 0xe0, 0x4c, 0x6b, 0xda, 0x7f, 0xc6, 0x00, 0xe5, 0xe2, 0x2f, 0xb4, 0xfb, 0x3a, 0xbb,
+	0x70, 0x34, 0x44, 0x1a, 0x2f, 0x92, 0x62, 0xdc, 0x48, 0x2d, 0xf4, 0x27, 0xde, 0x7b, 0x7e, 0x65,
+	0x1b, 0x07, 0x97, 0x82, 0xc2, 0x65, 0x8f, 0x27, 0x7c, 0x26, 0xa4, 0x28, 0x7a, 0xd3, 0x5b, 0x0a,
+	0x39, 0x2f, 0x86, 0xbf, 0xd6, 0x96, 0xbe, 0x7a, 0xfa, 0xc7, 0x00, 0x45, 0xa1, 0xce, 0xb5, 0x21,
+	0x76, 0x58, 0xba, 0xb2, 0xaf, 0x9d, 0x9e, 0x27, 0x70, 0xe0, 0xfa, 0xb2, 0x87, 0xa9, 0x0b, 0xad,
+	0x69, 0x32, 0xe7, 0x84, 0x2f, 0xa5, 0xbe, 0xb4, 0xdd, 0x54, 0xbe, 0x63, 0x77, 0xab, 0xcb, 0xca,
+	0x62, 0xb9, 0xb8, 0x93, 0x31, 0x81, 0x1f, 0x37, 0x18, 0x23, 0x15, 0x1a, 0x8c, 0x51, 0x11, 0x97,
+	0xf2, 0x03, 0xab, 0xd5, 0x68, 0x43, 0xfc, 0x3c, 0xf3, 0x77, 0x68, 0x04, 0xa8, 0xe6, 0xe7, 0x3c,
+	0x7c, 0x87, 0x34, 0x4e, 0xa9, 0x9e, 0xd5, 0x5a, 0xd8, 0x49, 0x18, 0x40, 0xb3, 0xc8, 0xea, 0x3c,
+	0xee, 0x69, 0xb5, 0x10, 0x11, 0x3b, 0xab, 0x21, 0x5c, 0xdc, 0x66, 0xcd, 0xdd, 0x89, 0x09, 0xe0,
+	0xa8, 0xaf, 0x2f, 0x95, 0xd4, 0x7c, 0x3e, 0x56, 0xe9, 0x28, 0xe6, 0x11, 0xb2, 0x07, 0xd5, 0x2e,
+	0xe6, 0xc1, 0x72, 0xd0, 0x04, 0xff, 0x4d, 0xd1, 0x92, 0x77, 0xb6, 0x65, 0xcc, 0x04, 0x6d, 0xa2,
+	0x95, 0x45, 0xf6, 0x1a, 0x8e, 0xb3, 0xdd, 0xe5, 0x78, 0xee, 0x04, 0xf0, 0xb6, 0x3a, 0xbe, 0x82,
+	0x36, 0x86, 0x93, 0xce, 0x4c, 0x9b, 0x35, 0x6f, 0x9a, 0x44, 0x86, 0xcf, 0xf1, 0xfa, 0xc0, 0x47,
+	0x70, 0xb8, 0x91, 0x9e, 0x65, 0x50, 0x9e, 0x62, 0xa3, 0xbe, 0x77, 0x5c, 0x1a, 0xaf, 0xe4, 0x3f,
+	0xe1, 0xa8, 0x13, 0x92, 0x58, 0x71, 0xc2, 0x75, 0x89, 0xae, 0x3d, 0xf7, 0x08, 0x9a, 0x3d, 0x1d,
+	0xc7, 0x82, 0x6e, 0x8e, 0x1a, 0x43, 0xa3, 0xec, 0x4a, 0xd9, 0xb7, 0xea, 0x66, 0xdc, 0xec, 0xdb,
+	0x1b, 0xb4, 0x96, 0x47, 0xe8, 0xfd, 0x50, 0x12, 0x2b, 0xea, 0x83, 0xef, 0xfe, 0xfb, 0xf6, 0x1b,
+	0xf6, 0x37, 0x9c, 0x0e, 0x91, 0x2a, 0x82, 0xeb, 0xdd, 0x4d, 0xc9, 0x53, 0xb8, 0xd3, 0xe3, 0x2a,
+	0x44, 0x59, 0xd1, 0x6e, 0x03, 0x5b, 0x76, 0xc6, 0xed, 0x8c, 0xec, 0x0f, 0x71, 0x63, 0x6c, 0x00,
+	0xc7, 0x13, 0x5c, 0xa1, 0xa1, 0xdb, 0x84, 0xbe, 0x80, 0x46, 0x40, 0xdc, 0xd0, 0x38, 0x0e, 0x45,
+	0x76, 0x60, 0xb3, 0xd3, 0x2a, 0x70, 0xfc, 0xa6, 0x37, 0xca, 0xe2, 0x1e, 0xf3, 0xb3, 0x7b, 0xda,
+	0xcf, 0x7e, 0xaf, 0x5b, 0xfd, 0x07, 0x34, 0x02, 0x11, 0xa7, 0x92, 0x13, 0x76, 0x24, 0x37, 0x71,
+	0x3d, 0x9b, 0x8a, 0x78, 0x95, 0x8d, 0xdb, 0xd6, 0xe3, 0x04, 0x0d, 0xcf, 0xee, 0xe6, 0x8c, 0x97,
+	0x27, 0x92, 0x26, 0x89, 0x41, 0x6b, 0x07, 0xd9, 0x8d, 0xcf, 0x98, 0x9f, 0xdf, 0xfc, 0x7e, 0xfe,
+	0xf5, 0x52, 0x48, 0x42, 0xb3, 0xf3, 0xb8, 0xf8, 0x0d, 0x5a, 0x53, 0x75, 0x7d, 0xfb, 0x2b, 0x38,
+	0x18, 0x22, 0x0d, 0xde, 0xd3, 0x5b, 0x2e, 0x53, 0x64, 0xf7, 0xab, 0xab, 0xd8, 0x90, 0xca, 0x35,
+	0xdc, 0xf5, 0xd7, 0x8f, 0x21, 0x7f, 0x82, 0x94, 0x1a, 0x95, 0xcb, 0x96, 0x0d, 0xe1, 0x20, 0xd8,
+	0x4d, 0x0a, 0x3e, 0x25, 0xed, 0x4a, 0x69, 0x0a, 0xcd, 0x21, 0x52, 0x20, 0x54, 0x24, 0xb1, 0x64,
+	0x5d, 0xcd, 0x59, 0xc4, 0x87, 0x58, 0xb0, 0xca, 0xbf, 0xe5, 0xcf, 0x9f, 0x19, 0xe1, 0x3a, 0x36,
+	0xcd, 0xae, 0xe6, 0x2f, 0x60, 0x83, 0x2f, 0x62, 0x83, 0x1a, 0xb6, 0x4b, 0xf0, 0x50, 0x9b, 0xc8,
+	0xd7, 0x09, 0xaa, 0x50, 0x9b, 0xb9, 0xef, 0x9e, 0x7b, 0xb5, 0x77, 0x6c, 0xf7, 0xe4, 0x6d, 0x1e,
+	0xaf, 0x3e, 0xe0, 0xfe, 0x79, 0x1e, 0x09, 0x5a, 0xa6, 0xb3, 0x6c, 0x5b, 0xb4, 0x4b, 0x82, 0x7b,
+	0x30, 0x3e, 0x2a, 0x9f, 0x8f, 0x4f, 0xdb, 0x91, 0xae, 0xbf, 0x96, 0x67, 0xdf, 0xe7, 0xea, 0x93,
+	0x8f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x51, 0x44, 0xf1, 0x55, 0x0b, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -106,7 +106,7 @@
 type AdapterServiceClient interface {
 	// GetHealthStatus is used by an AdapterService client to verify connectivity
 	// to the gRPC server hosting the AdapterService service
-	GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*health.HealthStatus, error)
+	GetHealthStatus(ctx context.Context, in *common.Connection, opts ...grpc.CallOption) (*health.HealthStatus, error)
 	// Device
 	AdoptDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
 	ReconcileDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
@@ -161,7 +161,7 @@
 	return &adapterServiceClient{cc}
 }
 
-func (c *adapterServiceClient) GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*health.HealthStatus, error) {
+func (c *adapterServiceClient) GetHealthStatus(ctx context.Context, in *common.Connection, opts ...grpc.CallOption) (*health.HealthStatus, error) {
 	out := new(health.HealthStatus)
 	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/GetHealthStatus", in, out, opts...)
 	if err != nil {
@@ -485,7 +485,7 @@
 type AdapterServiceServer interface {
 	// GetHealthStatus is used by an AdapterService client to verify connectivity
 	// to the gRPC server hosting the AdapterService service
-	GetHealthStatus(context.Context, *empty.Empty) (*health.HealthStatus, error)
+	GetHealthStatus(context.Context, *common.Connection) (*health.HealthStatus, error)
 	// Device
 	AdoptDevice(context.Context, *voltha.Device) (*empty.Empty, error)
 	ReconcileDevice(context.Context, *voltha.Device) (*empty.Empty, error)
@@ -536,7 +536,7 @@
 type UnimplementedAdapterServiceServer struct {
 }
 
-func (*UnimplementedAdapterServiceServer) GetHealthStatus(ctx context.Context, req *empty.Empty) (*health.HealthStatus, error) {
+func (*UnimplementedAdapterServiceServer) GetHealthStatus(ctx context.Context, req *common.Connection) (*health.HealthStatus, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
 }
 func (*UnimplementedAdapterServiceServer) AdoptDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
@@ -647,7 +647,7 @@
 }
 
 func _AdapterService_GetHealthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
+	in := new(common.Connection)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
@@ -659,7 +659,7 @@
 		FullMethod: "/adapter_service.AdapterService/GetHealthStatus",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).GetHealthStatus(ctx, req.(*empty.Empty))
+		return srv.(AdapterServiceServer).GetHealthStatus(ctx, req.(*common.Connection))
 	}
 	return interceptor(ctx, in, info, handler)
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
index 952a43c..87d3dca 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
@@ -80,7 +80,7 @@
 }
 
 func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{3, 0}
 }
 
 // Operational Status
@@ -132,7 +132,7 @@
 }
 
 func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
 }
 
 // Connectivity Status
@@ -164,7 +164,7 @@
 }
 
 func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
 }
 
 type OperationResp_OperationReturnCode int32
@@ -195,7 +195,7 @@
 }
 
 func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
 }
 
 // Convey a resource identifier
@@ -278,6 +278,65 @@
 	return nil
 }
 
+type Connection struct {
+	// endpoint is the endpoint sending the request
+	Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
+	// contextInfo represents additional contextual information
+	ContextInfo string `protobuf:"bytes,2,opt,name=contextInfo,proto3" json:"contextInfo,omitempty"`
+	// keep_alive_interval is used to indicate to the remote endpoint how often it
+	// will get a keep alive notification
+	KeepAliveInterval    int64    `protobuf:"varint,3,opt,name=keep_alive_interval,json=keepAliveInterval,proto3" json:"keep_alive_interval,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Connection) Reset()         { *m = Connection{} }
+func (m *Connection) String() string { return proto.CompactTextString(m) }
+func (*Connection) ProtoMessage()    {}
+func (*Connection) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{2}
+}
+
+func (m *Connection) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Connection.Unmarshal(m, b)
+}
+func (m *Connection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Connection.Marshal(b, m, deterministic)
+}
+func (m *Connection) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Connection.Merge(m, src)
+}
+func (m *Connection) XXX_Size() int {
+	return xxx_messageInfo_Connection.Size(m)
+}
+func (m *Connection) XXX_DiscardUnknown() {
+	xxx_messageInfo_Connection.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Connection proto.InternalMessageInfo
+
+func (m *Connection) GetEndpoint() string {
+	if m != nil {
+		return m.Endpoint
+	}
+	return ""
+}
+
+func (m *Connection) GetContextInfo() string {
+	if m != nil {
+		return m.ContextInfo
+	}
+	return ""
+}
+
+func (m *Connection) GetKeepAliveInterval() int64 {
+	if m != nil {
+		return m.KeepAliveInterval
+	}
+	return 0
+}
+
 type AdminState struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -288,7 +347,7 @@
 func (m *AdminState) String() string { return proto.CompactTextString(m) }
 func (*AdminState) ProtoMessage()    {}
 func (*AdminState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2}
+	return fileDescriptor_c2e3fd231961e826, []int{3}
 }
 
 func (m *AdminState) XXX_Unmarshal(b []byte) error {
@@ -319,7 +378,7 @@
 func (m *OperStatus) String() string { return proto.CompactTextString(m) }
 func (*OperStatus) ProtoMessage()    {}
 func (*OperStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3}
+	return fileDescriptor_c2e3fd231961e826, []int{4}
 }
 
 func (m *OperStatus) XXX_Unmarshal(b []byte) error {
@@ -350,7 +409,7 @@
 func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
 func (*ConnectStatus) ProtoMessage()    {}
 func (*ConnectStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4}
+	return fileDescriptor_c2e3fd231961e826, []int{5}
 }
 
 func (m *ConnectStatus) XXX_Unmarshal(b []byte) error {
@@ -385,7 +444,7 @@
 func (m *OperationResp) String() string { return proto.CompactTextString(m) }
 func (*OperationResp) ProtoMessage()    {}
 func (*OperationResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5}
+	return fileDescriptor_c2e3fd231961e826, []int{6}
 }
 
 func (m *OperationResp) XXX_Unmarshal(b []byte) error {
@@ -428,6 +487,7 @@
 	proto.RegisterEnum("common.OperationResp_OperationReturnCode", OperationResp_OperationReturnCode_name, OperationResp_OperationReturnCode_value)
 	proto.RegisterType((*ID)(nil), "common.ID")
 	proto.RegisterType((*IDs)(nil), "common.IDs")
+	proto.RegisterType((*Connection)(nil), "common.Connection")
 	proto.RegisterType((*AdminState)(nil), "common.AdminState")
 	proto.RegisterType((*OperStatus)(nil), "common.OperStatus")
 	proto.RegisterType((*ConnectStatus)(nil), "common.ConnectStatus")
@@ -437,37 +497,41 @@
 func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
 
 var fileDescriptor_c2e3fd231961e826 = []byte{
-	// 506 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xcd, 0x6e, 0xda, 0x30,
-	0x1c, 0x6f, 0x42, 0x4b, 0xd7, 0x3f, 0x25, 0x64, 0xee, 0x3a, 0xb1, 0x69, 0x07, 0x94, 0x4b, 0xbb,
-	0x49, 0x03, 0xa9, 0xdb, 0x8e, 0x3b, 0xa4, 0x89, 0xc7, 0xac, 0x52, 0x3b, 0x72, 0x12, 0x2a, 0xf5,
-	0x12, 0xa5, 0xc4, 0x85, 0x48, 0x25, 0x8e, 0x88, 0xa9, 0xc4, 0x75, 0x6f, 0xb0, 0x57, 0xdd, 0x13,
-	0x4c, 0x0e, 0x54, 0x14, 0x89, 0x9b, 0x7f, 0x1f, 0xfe, 0x7f, 0xc3, 0xc7, 0x67, 0xf9, 0xa4, 0x66,
-	0x69, 0x52, 0x2e, 0xa4, 0x92, 0xd5, 0x60, 0x22, 0xe7, 0x73, 0x59, 0xf4, 0x6b, 0x84, 0x9a, 0x6b,
-	0xe4, 0xbc, 0x03, 0x93, 0xf8, 0xc8, 0x02, 0x33, 0xcf, 0xba, 0x46, 0xcf, 0xb8, 0x3c, 0xe1, 0x66,
-	0x9e, 0x39, 0x17, 0xd0, 0x20, 0x7e, 0x85, 0x7a, 0x70, 0x94, 0x2b, 0x31, 0xaf, 0xba, 0x46, 0xaf,
-	0x71, 0xd9, 0xba, 0x82, 0xfe, 0x26, 0x04, 0xf1, 0xf9, 0x5a, 0x70, 0x66, 0x00, 0x6e, 0x36, 0xcf,
-	0x8b, 0x50, 0xa5, 0x4a, 0x38, 0xf7, 0x70, 0x14, 0xad, 0x4a, 0x51, 0xa1, 0x16, 0x1c, 0xc7, 0xf4,
-	0x86, 0xb2, 0x3b, 0x6a, 0x1f, 0x20, 0x04, 0x56, 0xc0, 0x71, 0xc0, 0xd9, 0x98, 0x84, 0x84, 0x51,
-	0xec, 0xdb, 0x86, 0x36, 0x60, 0xea, 0x5e, 0x8f, 0xb0, 0x6f, 0x9b, 0xe8, 0x14, 0xde, 0xf8, 0x24,
-	0x5c, 0xa3, 0x06, 0x3a, 0x87, 0xb7, 0x3e, 0xbb, 0xa3, 0x23, 0xe6, 0xfa, 0x84, 0x0e, 0x13, 0x72,
-	0xeb, 0x0e, 0xb1, 0x7d, 0xe8, 0xfc, 0x35, 0x00, 0x58, 0x29, 0x16, 0x3a, 0xd3, 0xb2, 0x72, 0xfe,
-	0x18, 0x7b, 0x73, 0x59, 0x00, 0x3e, 0x09, 0x3d, 0x36, 0xc6, 0xbc, 0xce, 0x63, 0x01, 0xb8, 0x5e,
-	0x44, 0xc6, 0x6e, 0x44, 0xe8, 0xd0, 0x36, 0xb5, 0x39, 0xc2, 0x61, 0x0d, 0x1a, 0x08, 0xa0, 0x59,
-	0x8b, 0xd8, 0x3e, 0xd4, 0xef, 0x5f, 0x2e, 0xd1, 0x15, 0x1c, 0xa1, 0x0e, 0xb4, 0x38, 0xf6, 0x18,
-	0xf5, 0xc8, 0x48, 0x1b, 0x9b, 0xe8, 0x3d, 0xa0, 0x57, 0x44, 0xb2, 0x31, 0x1e, 0x3b, 0x18, 0xda,
-	0x9e, 0x2c, 0x0a, 0x31, 0x51, 0x9b, 0xaa, 0xbe, 0xef, 0x2d, 0xaa, 0x03, 0xad, 0x98, 0x72, 0xec,
-	0x7a, 0xbf, 0x75, 0x8f, 0xb6, 0x81, 0xda, 0x70, 0xb2, 0x85, 0xa6, 0xf3, 0xcf, 0x80, 0xb6, 0x6e,
-	0x2d, 0x55, 0xb9, 0x2c, 0xb8, 0xa8, 0x4a, 0xf4, 0x13, 0x0e, 0x27, 0x32, 0x13, 0xf5, 0x46, 0xac,
-	0xab, 0xcf, 0x2f, 0x73, 0xdf, 0x31, 0xbd, 0x46, 0x6a, 0xb9, 0x28, 0x3c, 0x99, 0x09, 0x5e, 0x7f,
-	0x43, 0x17, 0xd0, 0x49, 0xb3, 0x2c, 0xd7, 0x5a, 0xfa, 0x94, 0xe4, 0xc5, 0xa3, 0xec, 0x9a, 0xf5,
-	0x6e, 0xad, 0x2d, 0x4d, 0x8a, 0x47, 0xe9, 0xac, 0xe0, 0x6c, 0x4f, 0x14, 0xbd, 0x02, 0x16, 0x60,
-	0xee, 0x46, 0x84, 0xd1, 0x24, 0x8c, 0x3d, 0x0f, 0x87, 0xa1, 0x7d, 0xb0, 0x4b, 0xeb, 0x21, 0xc4,
-	0x5c, 0x77, 0xf3, 0x01, 0xce, 0xb7, 0x74, 0x4c, 0xc3, 0x38, 0x08, 0x18, 0x8f, 0xea, 0xcd, 0xee,
-	0x48, 0x84, 0x26, 0x01, 0x67, 0x43, 0xae, 0x83, 0x35, 0xbe, 0x7c, 0x82, 0xd3, 0x48, 0x54, 0xea,
-	0x56, 0x66, 0xe2, 0x46, 0xac, 0x2a, 0x7d, 0x04, 0x69, 0x99, 0x27, 0x4a, 0x54, 0xca, 0x3e, 0xb8,
-	0xc6, 0x70, 0x26, 0x17, 0xd3, 0xbe, 0x2c, 0x45, 0x31, 0x91, 0x8b, 0xac, 0xbf, 0xbe, 0xe4, 0xfb,
-	0xfe, 0x34, 0x57, 0xb3, 0xe5, 0x83, 0x9e, 0xc7, 0xe0, 0x45, 0x1b, 0xac, 0xb5, 0xaf, 0x9b, 0x2b,
-	0x7f, 0xfe, 0x31, 0x98, 0xca, 0xcd, 0xad, 0x3f, 0x34, 0x6b, 0xf2, 0xdb, 0xff, 0x00, 0x00, 0x00,
-	0xff, 0xff, 0x6b, 0x71, 0x98, 0xbd, 0x0a, 0x03, 0x00, 0x00,
+	// 570 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x4f, 0xdb, 0x30,
+	0x14, 0x25, 0x09, 0x14, 0xb8, 0x85, 0x12, 0xcc, 0x98, 0x3a, 0xb4, 0x87, 0x2a, 0x2f, 0xb0, 0x49,
+	0x6b, 0x25, 0xb6, 0x3d, 0xee, 0x21, 0x24, 0x5e, 0x67, 0x01, 0x4e, 0xe5, 0xa4, 0x20, 0xf1, 0x12,
+	0x85, 0xc6, 0x03, 0x6b, 0xad, 0x1d, 0x25, 0xa6, 0x1a, 0x7b, 0xdc, 0x3f, 0xd8, 0x5f, 0xdd, 0x2f,
+	0x98, 0x9c, 0x86, 0x15, 0xa4, 0xbe, 0xe5, 0x9c, 0x73, 0x73, 0xbf, 0x8e, 0x2f, 0x1c, 0xcd, 0xd5,
+	0x54, 0xdf, 0x67, 0x69, 0x51, 0x2a, 0xad, 0xaa, 0xc1, 0x44, 0xcd, 0x66, 0x4a, 0xf6, 0x6b, 0x84,
+	0x5a, 0x0b, 0xe4, 0xbd, 0x02, 0x9b, 0x84, 0xa8, 0x03, 0xb6, 0xc8, 0xbb, 0x56, 0xcf, 0x3a, 0xd9,
+	0x66, 0xb6, 0xc8, 0xbd, 0x63, 0x70, 0x48, 0x58, 0xa1, 0x1e, 0x6c, 0x08, 0xcd, 0x67, 0x55, 0xd7,
+	0xea, 0x39, 0x27, 0xed, 0x53, 0xe8, 0x37, 0x29, 0x48, 0xc8, 0x16, 0x82, 0xf7, 0x0b, 0x20, 0x50,
+	0x52, 0xf2, 0x89, 0x16, 0x4a, 0xa2, 0x23, 0xd8, 0xe2, 0x32, 0x2f, 0x94, 0x90, 0xba, 0x49, 0xf6,
+	0x1f, 0xa3, 0x1e, 0xb4, 0x27, 0x4a, 0x6a, 0xfe, 0x53, 0x13, 0xf9, 0x5d, 0x75, 0xed, 0x5a, 0x7e,
+	0x4e, 0xa1, 0x3e, 0x1c, 0xfc, 0xe0, 0xbc, 0x48, 0xb3, 0xa9, 0x98, 0xf3, 0x54, 0x48, 0xcd, 0xcb,
+	0x79, 0x36, 0xed, 0x3a, 0x3d, 0xeb, 0xc4, 0x61, 0xfb, 0x46, 0xf2, 0x8d, 0x42, 0x1a, 0xc1, 0xbb,
+	0x07, 0xf0, 0xf3, 0x99, 0x90, 0xb1, 0xce, 0x34, 0xf7, 0x6e, 0x60, 0x23, 0x79, 0x2c, 0x78, 0x85,
+	0xda, 0xb0, 0x39, 0xa6, 0xe7, 0x34, 0xba, 0xa6, 0xee, 0x1a, 0x42, 0xd0, 0x19, 0x31, 0x3c, 0x62,
+	0xd1, 0x15, 0x89, 0x49, 0x44, 0x71, 0xe8, 0x5a, 0x26, 0x00, 0x53, 0xff, 0xec, 0x02, 0x87, 0xae,
+	0x8d, 0x76, 0x60, 0x2b, 0x24, 0xf1, 0x02, 0x39, 0xe8, 0x10, 0xf6, 0xc3, 0xe8, 0x9a, 0x5e, 0x44,
+	0x7e, 0x48, 0xe8, 0x30, 0x25, 0x97, 0xfe, 0x10, 0xbb, 0xeb, 0xde, 0x1f, 0x0b, 0x20, 0x2a, 0x78,
+	0x69, 0x2a, 0x3d, 0x54, 0xde, 0x6f, 0x6b, 0x65, 0xad, 0x0e, 0x40, 0x48, 0xe2, 0x20, 0xba, 0xc2,
+	0xac, 0xae, 0xd3, 0x01, 0xf0, 0x83, 0x84, 0x5c, 0xf9, 0x09, 0xa1, 0x43, 0xd7, 0x36, 0xc1, 0x09,
+	0x8e, 0x6b, 0xe0, 0x20, 0x80, 0x56, 0x2d, 0x62, 0x77, 0xdd, 0x7c, 0x7f, 0xf5, 0x89, 0xe9, 0x60,
+	0x03, 0xed, 0x41, 0x9b, 0xe1, 0x20, 0xa2, 0x01, 0xb9, 0x30, 0x81, 0x2d, 0xf4, 0x1a, 0xd0, 0x33,
+	0x22, 0x6d, 0x02, 0x37, 0x3d, 0x0c, 0xbb, 0xcd, 0xe6, 0x9b, 0xae, 0x3e, 0xad, 0x6c, 0x6a, 0x0f,
+	0xda, 0x63, 0xca, 0xb0, 0x1f, 0x7c, 0x33, 0x33, 0xba, 0x16, 0xda, 0x85, 0xed, 0x25, 0xb4, 0xbd,
+	0xbf, 0x16, 0xec, 0x9a, 0xd1, 0x32, 0x63, 0x20, 0xe3, 0x55, 0x81, 0xbe, 0xc0, 0xfa, 0x44, 0xe5,
+	0xbc, 0x36, 0xb0, 0x73, 0xfa, 0xee, 0xc9, 0xf3, 0x17, 0x41, 0xcf, 0x91, 0x7e, 0x28, 0x65, 0xa0,
+	0x72, 0xce, 0xea, 0xdf, 0xd0, 0x31, 0xec, 0x65, 0x79, 0x2e, 0x8c, 0x96, 0x4d, 0x53, 0xb1, 0xf4,
+	0xba, 0xb3, 0xa4, 0x8d, 0xdd, 0xde, 0x23, 0x1c, 0xac, 0xc8, 0x62, 0x2c, 0x88, 0x46, 0x98, 0xf9,
+	0x09, 0x89, 0x68, 0x1a, 0x8f, 0x83, 0x00, 0xc7, 0xb1, 0xbb, 0xf6, 0x92, 0x36, 0x4b, 0x18, 0x33,
+	0x33, 0xcd, 0x1b, 0x38, 0x5c, 0xd2, 0x63, 0x1a, 0x8f, 0x47, 0xa3, 0x88, 0x25, 0xb5, 0xb3, 0x2f,
+	0x24, 0x42, 0xd3, 0x11, 0x8b, 0x86, 0xcc, 0x24, 0x73, 0xde, 0xbf, 0x85, 0x9d, 0x84, 0x57, 0xfa,
+	0x52, 0xe5, 0xfc, 0x9c, 0x3f, 0x56, 0xe6, 0x11, 0x64, 0x85, 0x48, 0x35, 0xaf, 0xb4, 0xbb, 0x76,
+	0x86, 0xe1, 0x40, 0x95, 0x77, 0x7d, 0x55, 0x70, 0x39, 0x51, 0x65, 0xde, 0x5f, 0x5c, 0xd1, 0x4d,
+	0xff, 0x4e, 0xe8, 0xfb, 0x87, 0x5b, 0xb3, 0x8f, 0xc1, 0x93, 0x36, 0x58, 0x68, 0x1f, 0x9a, 0x0b,
+	0x9b, 0x7f, 0x1e, 0xdc, 0xa9, 0xe6, 0xce, 0x6e, 0x5b, 0x35, 0xf9, 0xf1, 0x5f, 0x00, 0x00, 0x00,
+	0xff, 0xff, 0x62, 0x34, 0x9d, 0xbf, 0x86, 0x03, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services.pb.go
index 41ab077..5816ad2 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services.pb.go
@@ -32,46 +32,46 @@
 func init() { proto.RegisterFile("voltha_protos/core_services.proto", fileDescriptor_979c43850713f141) }
 
 var fileDescriptor_979c43850713f141 = []byte{
-	// 612 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcd, 0x6f, 0xd3, 0x30,
-	0x14, 0xbf, 0x21, 0x78, 0xeb, 0xd6, 0xcd, 0xfb, 0x00, 0x65, 0x1a, 0x6c, 0x27, 0x2e, 0xe0, 0x48,
-	0x6c, 0x0c, 0x09, 0x24, 0x50, 0xd7, 0x40, 0x57, 0x69, 0x43, 0x55, 0x2b, 0x40, 0xe2, 0x32, 0xb9,
-	0xc9, 0x5b, 0x12, 0x2d, 0x8d, 0x2b, 0xdb, 0x2d, 0xf4, 0x8f, 0x47, 0x42, 0x89, 0xdd, 0xca, 0xce,
-	0x6a, 0xb1, 0x03, 0xd7, 0xf7, 0x7e, 0x1f, 0xef, 0xc3, 0x4f, 0x86, 0x93, 0x39, 0x2f, 0x54, 0xc6,
-	0x6e, 0xa6, 0x82, 0x2b, 0x2e, 0xc3, 0x98, 0x0b, 0xbc, 0x91, 0x28, 0xe6, 0x79, 0x8c, 0x92, 0xd6,
-	0x41, 0xd2, 0xb2, 0x83, 0xc1, 0x61, 0xca, 0x79, 0x5a, 0x60, 0x58, 0xe7, 0xc6, 0xb3, 0xdb, 0x10,
-	0x27, 0x53, 0xb5, 0xd0, 0xd0, 0xe0, 0x78, 0x8d, 0x1a, 0x4b, 0xd8, 0x54, 0xa1, 0x30, 0x88, 0xa0,
-	0x89, 0x98, 0x4c, 0x78, 0xb9, 0x3e, 0x97, 0x60, 0x65, 0xb8, 0x3e, 0x97, 0x21, 0x2b, 0x54, 0xa6,
-	0x73, 0x6f, 0xfe, 0x6c, 0xc0, 0x46, 0x97, 0x0b, 0x1c, 0xe9, 0x12, 0xc9, 0x27, 0x68, 0xf7, 0x50,
-	0x5d, 0xd6, 0x90, 0x91, 0x62, 0x6a, 0x26, 0xc9, 0x01, 0xd5, 0x65, 0xd3, 0x65, 0xd9, 0xf4, 0x73,
-	0x55, 0x76, 0xb0, 0x47, 0x8d, 0x92, 0x83, 0xbe, 0x82, 0xf6, 0x10, 0xd3, 0x5c, 0x2a, 0x14, 0x1d,
-	0x5d, 0x3d, 0x39, 0xa1, 0x4e, 0x33, 0x26, 0xac, 0x51, 0x82, 0xa9, 0x9c, 0x97, 0x81, 0xc7, 0x83,
-	0x9c, 0x43, 0x2b, 0xaa, 0x5b, 0xf9, 0x36, 0x4d, 0x98, 0x42, 0xb2, 0x45, 0x4d, 0x67, 0x3a, 0xea,
-	0xe5, 0x9d, 0xc2, 0xc6, 0x80, 0x0b, 0xd5, 0x15, 0xc8, 0x14, 0x26, 0xa4, 0xb5, 0xa4, 0x55, 0x41,
-	0x2f, 0xa9, 0x0f, 0xdb, 0x55, 0x5e, 0x56, 0x9d, 0x2c, 0x0d, 0x8f, 0xdc, 0xda, 0xab, 0x7c, 0x9d,
-	0xfe, 0x92, 0x17, 0x0a, 0x85, 0x57, 0xea, 0x0c, 0xb6, 0x22, 0x2c, 0x50, 0x61, 0xa7, 0x28, 0x6a,
-	0x4d, 0x02, 0xd4, 0xec, 0xab, 0x1f, 0x79, 0x59, 0xef, 0x60, 0xb3, 0x87, 0x4a, 0xb7, 0x56, 0xb1,
-	0xc8, 0xb3, 0xfb, 0xee, 0xc6, 0xd8, 0xe9, 0x88, 0xbc, 0x82, 0xf6, 0x55, 0x2e, 0x2d, 0xa6, 0xeb,
-	0xb7, 0x69, 0x83, 0xab, 0x15, 0xed, 0x68, 0xa4, 0xdd, 0xe8, 0x0b, 0xd7, 0xca, 0x02, 0xfc, 0xa3,
-	0xd5, 0x0e, 0xec, 0x19, 0xdf, 0xeb, 0x2e, 0x2f, 0x6f, 0xf3, 0xd4, 0x08, 0xee, 0xac, 0x4c, 0x27,
-	0x3a, 0x2e, 0xbd, 0x12, 0x11, 0xec, 0x76, 0xb3, 0xbc, 0x48, 0xb4, 0x4e, 0x84, 0x0a, 0xe3, 0x6a,
-	0x6b, 0x47, 0xeb, 0x4a, 0x8a, 0x72, 0x19, 0xf3, 0x39, 0x8a, 0x45, 0xd0, 0x78, 0x0b, 0xe4, 0x1c,
-	0xb6, 0x2d, 0x15, 0x79, 0xc5, 0xa5, 0x7a, 0xd0, 0xd4, 0xdf, 0xc3, 0x9e, 0xcd, 0x5b, 0xd9, 0x3f,
-	0x84, 0xfb, 0x12, 0x9e, 0xac, 0x36, 0xe6, 0x10, 0x9a, 0xc5, 0x75, 0x60, 0xab, 0x87, 0xca, 0xf2,
-	0x69, 0x0e, 0xdc, 0x4a, 0x99, 0x81, 0x37, 0x25, 0x68, 0x7d, 0x9a, 0x76, 0xa9, 0x8e, 0x63, 0xdb,
-	0x85, 0x4b, 0xf2, 0x11, 0x5a, 0x23, 0x2c, 0x93, 0x01, 0x8b, 0xef, 0x50, 0xf5, 0x4b, 0x72, 0xd0,
-	0x78, 0x4c, 0x26, 0xee, 0xed, 0xed, 0x12, 0x88, 0x96, 0x1a, 0x22, 0x93, 0xbc, 0x34, 0x6b, 0x0d,
-	0xd6, 0x2d, 0x45, 0x23, 0xbc, 0x4a, 0x17, 0xd0, 0x5e, 0x1d, 0x8e, 0x91, 0x79, 0xea, 0xb9, 0x2b,
-	0xaf, 0xc6, 0x07, 0xd8, 0x1f, 0x62, 0xcc, 0xcb, 0x38, 0x2f, 0xd0, 0x3b, 0x03, 0x1f, 0xf9, 0x1a,
-	0x9e, 0xbb, 0xa3, 0xfb, 0x91, 0xab, 0x6c, 0x20, 0xf8, 0xef, 0x45, 0x27, 0x49, 0x04, 0x4a, 0x49,
-	0x0e, 0xdd, 0xe9, 0x51, 0x3b, 0x79, 0x6f, 0x13, 0xa7, 0xf0, 0xb8, 0x87, 0x4a, 0x1f, 0x93, 0xff,
-	0x44, 0x1b, 0x57, 0xf7, 0xd5, 0x3c, 0x72, 0x81, 0xe5, 0x7f, 0xb9, 0xbb, 0x08, 0x76, 0xb5, 0x44,
-	0x7f, 0xc2, 0x52, 0x8c, 0xf8, 0xaf, 0xb2, 0xe0, 0x2c, 0x21, 0xfb, 0x4b, 0x57, 0x27, 0xec, 0x53,
-	0xb9, 0xb8, 0x83, 0x63, 0x2e, 0x52, 0xca, 0xa7, 0x58, 0xc6, 0x5c, 0x24, 0x54, 0x7f, 0x15, 0xd4,
-	0xfe, 0xb6, 0x2e, 0x76, 0xbe, 0xd7, 0x41, 0xeb, 0x9b, 0xf8, 0x79, 0x96, 0xe6, 0x2a, 0x9b, 0x8d,
-	0xab, 0xd1, 0x87, 0x4b, 0x6e, 0xa8, 0xb9, 0xaf, 0xcd, 0x37, 0x33, 0x7f, 0x1b, 0xa6, 0xdc, 0xf9,
-	0x14, 0xc7, 0x8f, 0xea, 0xd4, 0xe9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x1f, 0x15, 0x0e,
-	0x39, 0x07, 0x00, 0x00,
+	// 619 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xdf, 0x4f, 0x14, 0x31,
+	0x10, 0x7e, 0x33, 0x3a, 0x1c, 0x1c, 0x94, 0x1f, 0x9a, 0x25, 0x28, 0x3c, 0xf9, 0xa2, 0xdd, 0x44,
+	0x10, 0x13, 0x49, 0x4c, 0x8e, 0x5b, 0x3d, 0x2e, 0x01, 0x43, 0x20, 0x6a, 0xe2, 0x0b, 0x29, 0xbb,
+	0xc3, 0xee, 0x86, 0xbd, 0xf6, 0xd2, 0x96, 0x53, 0xfe, 0x74, 0xdf, 0xcc, 0x6e, 0xbb, 0x97, 0x76,
+	0xb9, 0x46, 0x1e, 0x7c, 0x9d, 0x99, 0xef, 0xfb, 0x66, 0xbe, 0xe9, 0xa4, 0xb0, 0x37, 0x13, 0x95,
+	0x2e, 0xd8, 0xd5, 0x54, 0x0a, 0x2d, 0x54, 0x9c, 0x0a, 0x89, 0x57, 0x0a, 0xe5, 0xac, 0x4c, 0x51,
+	0xd1, 0x26, 0x48, 0x7a, 0x6e, 0x30, 0xda, 0xce, 0x85, 0xc8, 0x2b, 0x8c, 0x9b, 0xdc, 0xf5, 0xdd,
+	0x4d, 0x8c, 0x93, 0xa9, 0xbe, 0x37, 0xa5, 0xd1, 0xee, 0x02, 0x36, 0x96, 0xb1, 0xa9, 0x46, 0x69,
+	0x2b, 0xa2, 0x6e, 0xc5, 0x64, 0x22, 0xf8, 0xe2, 0x5c, 0x86, 0xb5, 0xe0, 0xe2, 0x5c, 0x81, 0xac,
+	0xd2, 0x85, 0xc9, 0xbd, 0xfb, 0xb3, 0x04, 0x4b, 0x43, 0x21, 0xf1, 0xd2, 0xb4, 0x48, 0x8e, 0xa0,
+	0x3f, 0x42, 0x7d, 0xd2, 0x94, 0x5c, 0x6a, 0xa6, 0xef, 0x14, 0x21, 0xd4, 0x2a, 0x0d, 0x05, 0xe7,
+	0x98, 0xea, 0x52, 0xf0, 0x68, 0x83, 0x5a, 0x16, 0xaf, 0xf2, 0x14, 0xfa, 0x17, 0x98, 0x97, 0x4a,
+	0xa3, 0x1c, 0x98, 0xce, 0xc9, 0x1e, 0xf5, 0x06, 0xb1, 0x61, 0x53, 0x25, 0x59, 0xc3, 0xb5, 0x45,
+	0x8d, 0x2d, 0xb4, 0xb5, 0x85, 0x7e, 0xae, 0x6d, 0x21, 0x87, 0xd0, 0x4b, 0x9a, 0x31, 0xbe, 0x4d,
+	0x33, 0xa6, 0x91, 0xac, 0x50, 0x3b, 0x95, 0x89, 0x06, 0x71, 0xfb, 0xb0, 0x74, 0x2e, 0xa4, 0x1e,
+	0x4a, 0x64, 0x1a, 0x33, 0xd2, 0x6b, 0x61, 0x75, 0x30, 0x08, 0x1a, 0xc3, 0x6a, 0x9d, 0x57, 0xf5,
+	0x24, 0xad, 0xe0, 0x8e, 0xdf, 0x7b, 0x9d, 0x6f, 0xd2, 0x5f, 0xca, 0x4a, 0xa3, 0x0c, 0x52, 0x1d,
+	0xc0, 0x4a, 0x82, 0x15, 0x6a, 0x1c, 0x54, 0x55, 0xc3, 0x49, 0xa0, 0x75, 0x70, 0x9c, 0x04, 0x51,
+	0x1f, 0x60, 0x79, 0x84, 0xda, 0x8c, 0x56, 0xa3, 0xc8, 0x8b, 0x87, 0xea, 0x56, 0xd8, 0x9b, 0x88,
+	0xbc, 0x81, 0xfe, 0x69, 0xa9, 0x1c, 0xa4, 0xaf, 0xb7, 0xec, 0x16, 0xd7, 0x2b, 0x5a, 0x33, 0x95,
+	0xee, 0xa0, 0xaf, 0x7c, 0x29, 0xa7, 0xe0, 0x1f, 0xa3, 0x0e, 0x60, 0xc3, 0xea, 0x9e, 0x0d, 0x05,
+	0xbf, 0x29, 0x73, 0x4b, 0xb8, 0x36, 0x17, 0x9d, 0x98, 0xb8, 0x0a, 0x52, 0x24, 0xb0, 0x3e, 0x2c,
+	0xca, 0x2a, 0x33, 0x3c, 0x09, 0x6a, 0x4c, 0xeb, 0xad, 0xed, 0x2c, 0x6a, 0x29, 0x29, 0x55, 0x2a,
+	0x66, 0x28, 0xef, 0xa3, 0xce, 0x5b, 0x20, 0x87, 0xb0, 0xea, 0xb0, 0xa8, 0x53, 0xa1, 0xf4, 0xa3,
+	0x5c, 0xff, 0x08, 0x1b, 0x2e, 0x6e, 0x2e, 0xff, 0x18, 0xec, 0x6b, 0x78, 0x36, 0xdf, 0x98, 0x07,
+	0xe8, 0x36, 0x37, 0x80, 0x95, 0x11, 0x6a, 0x47, 0xa7, 0x6b, 0xb8, 0x93, 0xb2, 0x86, 0x77, 0x29,
+	0x68, 0x73, 0x96, 0x6e, 0xab, 0x9e, 0x62, 0xdf, 0x2f, 0x57, 0xe4, 0x13, 0xf4, 0x2e, 0x91, 0x67,
+	0xe7, 0x2c, 0xbd, 0x45, 0x3d, 0xe6, 0x64, 0xab, 0xf3, 0x98, 0x6c, 0x3c, 0x38, 0xdb, 0x09, 0x10,
+	0x43, 0x75, 0x81, 0x4c, 0x09, 0x6e, 0xd7, 0x1a, 0x2d, 0x5a, 0x8a, 0xa9, 0x08, 0x32, 0x1d, 0x43,
+	0x7f, 0x7e, 0x38, 0x96, 0xe6, 0x79, 0xe0, 0xae, 0x82, 0x1c, 0x47, 0xb0, 0x79, 0x81, 0xa9, 0xe0,
+	0x69, 0x59, 0x61, 0xd0, 0x83, 0x10, 0xf8, 0x0c, 0x5e, 0xfa, 0xd6, 0xfd, 0x28, 0x75, 0x71, 0x2e,
+	0xc5, 0xef, 0xfb, 0x41, 0x96, 0x49, 0x54, 0x8a, 0x6c, 0xfb, 0xee, 0x51, 0x37, 0xf9, 0x60, 0x13,
+	0xfb, 0xf0, 0x74, 0x84, 0xda, 0x1c, 0x53, 0xf8, 0x44, 0x3b, 0x57, 0xf7, 0xd5, 0x3e, 0x72, 0x89,
+	0xfc, 0xbf, 0xdc, 0x5d, 0x02, 0xeb, 0x86, 0x62, 0x3c, 0x61, 0x39, 0x26, 0xe2, 0x17, 0xaf, 0x04,
+	0xcb, 0xc8, 0x66, 0xab, 0xea, 0x85, 0x43, 0x2c, 0xc7, 0xb7, 0xb0, 0x2b, 0x64, 0x4e, 0xc5, 0x14,
+	0x79, 0x2a, 0x64, 0x46, 0xcd, 0x37, 0x41, 0xdd, 0x2f, 0xeb, 0x78, 0xed, 0x7b, 0x13, 0x74, 0xbe,
+	0x88, 0x9f, 0x07, 0x79, 0xa9, 0x8b, 0xbb, 0xeb, 0xda, 0xfa, 0xb8, 0xc5, 0xc6, 0x06, 0xfb, 0xd6,
+	0x7e, 0x31, 0xb3, 0xf7, 0x71, 0x2e, 0xbc, 0x0f, 0xf1, 0xfa, 0x49, 0x93, 0xda, 0xff, 0x1b, 0x00,
+	0x00, 0xff, 0xff, 0xe7, 0xe2, 0x9c, 0x32, 0x35, 0x07, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -87,7 +87,7 @@
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type CoreServiceClient interface {
 	//	 in coreProxy interface
-	GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*health.HealthStatus, error)
+	GetHealthStatus(ctx context.Context, in *common.Connection, opts ...grpc.CallOption) (*health.HealthStatus, error)
 	RegisterAdapter(ctx context.Context, in *core_adapter.AdapterRegistration, opts ...grpc.CallOption) (*empty.Empty, error)
 	DeviceUpdate(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
 	PortCreated(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*empty.Empty, error)
@@ -122,7 +122,7 @@
 	return &coreServiceClient{cc}
 }
 
-func (c *coreServiceClient) GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*health.HealthStatus, error) {
+func (c *coreServiceClient) GetHealthStatus(ctx context.Context, in *common.Connection, opts ...grpc.CallOption) (*health.HealthStatus, error) {
 	out := new(health.HealthStatus)
 	err := c.cc.Invoke(ctx, "/core_service.CoreService/GetHealthStatus", in, out, opts...)
 	if err != nil {
@@ -341,7 +341,7 @@
 // CoreServiceServer is the server API for CoreService service.
 type CoreServiceServer interface {
 	//	 in coreProxy interface
-	GetHealthStatus(context.Context, *empty.Empty) (*health.HealthStatus, error)
+	GetHealthStatus(context.Context, *common.Connection) (*health.HealthStatus, error)
 	RegisterAdapter(context.Context, *core_adapter.AdapterRegistration) (*empty.Empty, error)
 	DeviceUpdate(context.Context, *voltha.Device) (*empty.Empty, error)
 	PortCreated(context.Context, *voltha.Port) (*empty.Empty, error)
@@ -372,7 +372,7 @@
 type UnimplementedCoreServiceServer struct {
 }
 
-func (*UnimplementedCoreServiceServer) GetHealthStatus(ctx context.Context, req *empty.Empty) (*health.HealthStatus, error) {
+func (*UnimplementedCoreServiceServer) GetHealthStatus(ctx context.Context, req *common.Connection) (*health.HealthStatus, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
 }
 func (*UnimplementedCoreServiceServer) RegisterAdapter(ctx context.Context, req *core_adapter.AdapterRegistration) (*empty.Empty, error) {
@@ -450,7 +450,7 @@
 }
 
 func _CoreService_GetHealthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
+	in := new(common.Connection)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
@@ -462,7 +462,7 @@
 		FullMethod: "/core_service.CoreService/GetHealthStatus",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).GetHealthStatus(ctx, req.(*empty.Empty))
+		return srv.(CoreServiceServer).GetHealthStatus(ctx, req.(*common.Connection))
 	}
 	return interceptor(ctx, in, info, handler)
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service.pb.go
index 569dfda..d958a65 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service.pb.go
@@ -8,6 +8,7 @@
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	empty "github.com/golang/protobuf/ptypes/empty"
+	common "github.com/opencord/voltha-protos/v5/go/common"
 	health "github.com/opencord/voltha-protos/v5/go/health"
 	inter_adapter "github.com/opencord/voltha-protos/v5/go/inter_adapter"
 	grpc "google.golang.org/grpc"
@@ -32,26 +33,27 @@
 }
 
 var fileDescriptor_3ddb40a5aae0f6e1 = []byte{
-	// 299 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xbd, 0x4e, 0xc3, 0x30,
-	0x10, 0xc7, 0x05, 0x03, 0x83, 0x17, 0x90, 0x85, 0x2a, 0x61, 0x58, 0x18, 0x19, 0x6a, 0x23, 0x10,
-	0x33, 0x6a, 0x05, 0x94, 0x0e, 0xa8, 0x15, 0x45, 0x0c, 0x2c, 0x95, 0xeb, 0x5e, 0x9d, 0x48, 0x6e,
-	0x2e, 0xd8, 0x97, 0x40, 0xdf, 0x82, 0x91, 0xc7, 0x45, 0x89, 0x93, 0x21, 0xa8, 0x99, 0x3c, 0xdc,
-	0xef, 0xff, 0xa1, 0x3b, 0xb3, 0x61, 0x89, 0x8e, 0x12, 0xbd, 0xcc, 0x3d, 0x12, 0x06, 0x85, 0x8e,
-	0x96, 0x69, 0x46, 0xe0, 0x97, 0x7a, 0xad, 0xf3, 0xea, 0x0d, 0xe0, 0xcb, 0xd4, 0x80, 0xac, 0x01,
-	0x7e, 0xd6, 0x0b, 0x88, 0x73, 0x8b, 0x68, 0x1d, 0xa8, 0x1a, 0x5c, 0x15, 0x1b, 0x05, 0xdb, 0x9c,
-	0x76, 0x51, 0x27, 0x2e, 0xbb, 0x31, 0x1d, 0x87, 0x06, 0x11, 0x5d, 0x24, 0x01, 0xed, 0x28, 0x89,
-	0xb3, 0x9b, 0xdf, 0x43, 0x36, 0x98, 0x39, 0x9a, 0x56, 0xb2, 0x51, 0x54, 0x2d, 0x62, 0x2c, 0xbf,
-	0x67, 0xc7, 0x13, 0xa0, 0xe7, 0x9a, 0x5e, 0x90, 0xa6, 0x22, 0xf0, 0x81, 0x8c, 0x55, 0x64, 0x5b,
-	0x45, 0x3e, 0x56, 0x55, 0xc4, 0xa9, 0x6c, 0x4c, 0x3b, 0xf4, 0x13, 0x3b, 0x99, 0x7b, 0xfc, 0xde,
-	0xcd, 0xb6, 0x26, 0x7d, 0x85, 0xcf, 0x02, 0x02, 0x71, 0x21, 0xbb, 0x0d, 0xab, 0xd9, 0x0b, 0x84,
-	0xa0, 0x2d, 0x88, 0x1e, 0x77, 0x5e, 0xb0, 0xc1, 0x04, 0xe8, 0x0d, 0x4c, 0x32, 0xf7, 0xb8, 0x49,
-	0x1d, 0x4c, 0xb3, 0x40, 0x3a, 0x33, 0xc0, 0xaf, 0xff, 0xb9, 0xed, 0x61, 0x9a, 0xe0, 0x36, 0xe3,
-	0xaa, 0x5f, 0xf1, 0x80, 0x5f, 0x99, 0x43, 0xbd, 0x6e, 0xd0, 0xf1, 0xcf, 0x01, 0x1b, 0xa2, 0xb7,
-	0x12, 0x73, 0xc8, 0x0c, 0xfa, 0xb5, 0x8c, 0x6b, 0x94, 0xbd, 0x87, 0x1a, 0x5f, 0xbc, 0xd7, 0xc4,
-	0xfe, 0x7d, 0x7e, 0x8c, 0x6c, 0x4a, 0x49, 0xb1, 0x92, 0x06, 0xb7, 0xaa, 0xf5, 0x54, 0xd1, 0x73,
-	0xd8, 0x9c, 0xa6, 0xbc, 0x53, 0x16, 0xfb, 0xbf, 0xca, 0xea, 0xa8, 0xe6, 0x6e, 0xff, 0x02, 0x00,
-	0x00, 0xff, 0xff, 0x96, 0x1f, 0x38, 0xd3, 0x5c, 0x02, 0x00, 0x00,
+	// 316 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xbf, 0x4e, 0xc3, 0x30,
+	0x10, 0x87, 0x05, 0x03, 0x43, 0x16, 0x90, 0x85, 0x2a, 0x11, 0x58, 0x18, 0x19, 0xea, 0x20, 0x10,
+	0x13, 0x53, 0xcb, 0x9f, 0xd2, 0x01, 0xb5, 0xa2, 0x88, 0x81, 0xa5, 0x72, 0xdd, 0xab, 0x63, 0xc9,
+	0xf1, 0x05, 0xfb, 0x52, 0xe8, 0x5b, 0x30, 0xf0, 0xc0, 0x28, 0xb1, 0x3b, 0xa4, 0x6a, 0xa6, 0x28,
+	0xba, 0xef, 0xf7, 0xf9, 0xee, 0xec, 0xa4, 0xbf, 0x46, 0x43, 0xb9, 0x98, 0x97, 0x0e, 0x09, 0x7d,
+	0x86, 0x86, 0xe6, 0xda, 0x12, 0xb8, 0xb9, 0x58, 0x8a, 0xb2, 0xfe, 0x7a, 0x70, 0x6b, 0x2d, 0x81,
+	0x37, 0x00, 0x3b, 0xeb, 0x04, 0xd2, 0xb4, 0x6d, 0x92, 0x58, 0x14, 0x68, 0x43, 0x2c, 0x3d, 0x57,
+	0x88, 0xca, 0x40, 0xd6, 0xfc, 0x2d, 0xaa, 0x55, 0x06, 0x45, 0x49, 0x9b, 0x58, 0xbc, 0x6c, 0x07,
+	0x5b, 0xf6, 0x88, 0xec, 0xb8, 0x73, 0x10, 0x86, 0xf2, 0x50, 0xbb, 0xf9, 0x3b, 0x4c, 0x7a, 0x13,
+	0x43, 0xe3, 0x3a, 0x36, 0x08, 0xa9, 0x59, 0x68, 0x89, 0xdd, 0x27, 0xc7, 0x23, 0xa0, 0x97, 0x86,
+	0x9e, 0x91, 0xa0, 0xca, 0x33, 0xc6, 0x63, 0x63, 0x0f, 0x68, 0x2d, 0x48, 0xd2, 0x68, 0xd3, 0x53,
+	0x1e, 0x85, 0x2d, 0xf2, 0x39, 0x39, 0x99, 0x3a, 0xfc, 0xd9, 0x4c, 0x0a, 0xa9, 0xdf, 0xe0, 0xab,
+	0x02, 0x4f, 0x2c, 0xe5, 0xed, 0xee, 0xea, 0xda, 0x2b, 0x78, 0x2f, 0x14, 0xa4, 0x3d, 0x1e, 0x86,
+	0xe4, 0xdb, 0x21, 0xf9, 0x53, 0x3d, 0x24, 0xab, 0x92, 0xde, 0x08, 0xe8, 0x1d, 0x64, 0x3e, 0x75,
+	0xb8, 0xd2, 0x06, 0xc6, 0xd6, 0x93, 0xb0, 0x12, 0xd8, 0xf5, 0x8e, 0x6d, 0x0f, 0x13, 0x0f, 0xde,
+	0x9e, 0x71, 0xd5, 0x9d, 0x78, 0xc4, 0x6f, 0x6b, 0x50, 0x2c, 0x23, 0x3a, 0xfc, 0x3d, 0x48, 0xfa,
+	0xe8, 0x14, 0xc7, 0x12, 0xac, 0x44, 0xb7, 0xe4, 0x61, 0x85, 0xbc, 0xf3, 0x02, 0x87, 0x17, 0x1f,
+	0x0d, 0xb1, 0x7f, 0x97, 0x9f, 0x03, 0xa5, 0x29, 0xaf, 0x16, 0xf5, 0xfa, 0xb2, 0xad, 0x33, 0x0b,
+	0xce, 0x7e, 0xbc, 0x96, 0xf5, 0x5d, 0xa6, 0xb0, 0xfb, 0x09, 0x2d, 0x8e, 0x1a, 0xee, 0xf6, 0x3f,
+	0x00, 0x00, 0xff, 0xff, 0x7c, 0x06, 0x94, 0x70, 0x74, 0x02, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -68,7 +70,7 @@
 type OltInterAdapterServiceClient interface {
 	// GetHealthStatus is used by an OltInterAdapterService client to verify connectivity
 	// to the gRPC server hosting the OltInterAdapterService service
-	GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*health.HealthStatus, error)
+	GetHealthStatus(ctx context.Context, in *common.Connection, opts ...grpc.CallOption) (*health.HealthStatus, error)
 	ProxyOmciRequest(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*empty.Empty, error)
 	GetTechProfileInstance(ctx context.Context, in *inter_adapter.TechProfileInstanceRequestMessage, opts ...grpc.CallOption) (*inter_adapter.TechProfileDownloadMessage, error)
 }
@@ -81,7 +83,7 @@
 	return &oltInterAdapterServiceClient{cc}
 }
 
-func (c *oltInterAdapterServiceClient) GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*health.HealthStatus, error) {
+func (c *oltInterAdapterServiceClient) GetHealthStatus(ctx context.Context, in *common.Connection, opts ...grpc.CallOption) (*health.HealthStatus, error) {
 	out := new(health.HealthStatus)
 	err := c.cc.Invoke(ctx, "/olt_inter_adapter_service.OltInterAdapterService/GetHealthStatus", in, out, opts...)
 	if err != nil {
@@ -112,7 +114,7 @@
 type OltInterAdapterServiceServer interface {
 	// GetHealthStatus is used by an OltInterAdapterService client to verify connectivity
 	// to the gRPC server hosting the OltInterAdapterService service
-	GetHealthStatus(context.Context, *empty.Empty) (*health.HealthStatus, error)
+	GetHealthStatus(context.Context, *common.Connection) (*health.HealthStatus, error)
 	ProxyOmciRequest(context.Context, *inter_adapter.OmciMessage) (*empty.Empty, error)
 	GetTechProfileInstance(context.Context, *inter_adapter.TechProfileInstanceRequestMessage) (*inter_adapter.TechProfileDownloadMessage, error)
 }
@@ -121,7 +123,7 @@
 type UnimplementedOltInterAdapterServiceServer struct {
 }
 
-func (*UnimplementedOltInterAdapterServiceServer) GetHealthStatus(ctx context.Context, req *empty.Empty) (*health.HealthStatus, error) {
+func (*UnimplementedOltInterAdapterServiceServer) GetHealthStatus(ctx context.Context, req *common.Connection) (*health.HealthStatus, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
 }
 func (*UnimplementedOltInterAdapterServiceServer) ProxyOmciRequest(ctx context.Context, req *inter_adapter.OmciMessage) (*empty.Empty, error) {
@@ -136,7 +138,7 @@
 }
 
 func _OltInterAdapterService_GetHealthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
+	in := new(common.Connection)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
@@ -148,7 +150,7 @@
 		FullMethod: "/olt_inter_adapter_service.OltInterAdapterService/GetHealthStatus",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OltInterAdapterServiceServer).GetHealthStatus(ctx, req.(*empty.Empty))
+		return srv.(OltInterAdapterServiceServer).GetHealthStatus(ctx, req.(*common.Connection))
 	}
 	return interceptor(ctx, in, info, handler)
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service.pb.go
index eaf7ca8..a2cf537 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service.pb.go
@@ -8,6 +8,7 @@
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	empty "github.com/golang/protobuf/ptypes/empty"
+	common "github.com/opencord/voltha-protos/v5/go/common"
 	health "github.com/opencord/voltha-protos/v5/go/health"
 	inter_adapter "github.com/opencord/voltha-protos/v5/go/inter_adapter"
 	grpc "google.golang.org/grpc"
@@ -32,29 +33,29 @@
 }
 
 var fileDescriptor_f951f30caeee9ccd = []byte{
-	// 337 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xc1, 0x4a, 0xeb, 0x40,
-	0x14, 0x86, 0xb9, 0x5c, 0xb8, 0x8b, 0xb9, 0x54, 0x61, 0x94, 0x82, 0xd1, 0x4d, 0x71, 0xe5, 0xa2,
-	0x13, 0x50, 0x5c, 0x4b, 0x6b, 0xa5, 0x15, 0x2a, 0x2d, 0xb4, 0x88, 0xb8, 0x29, 0xd3, 0xc9, 0x69,
-	0x32, 0x90, 0xcc, 0x09, 0x93, 0x93, 0x8a, 0x6f, 0xe1, 0x1b, 0xfa, 0x2a, 0xd2, 0x4c, 0x0b, 0x9d,
-	0xda, 0x90, 0xd5, 0x2c, 0xce, 0x77, 0xbe, 0xf3, 0x0f, 0xfc, 0xac, 0xbb, 0xc6, 0x94, 0x12, 0xb9,
-	0xc8, 0x2d, 0x12, 0x16, 0x21, 0x9a, 0x72, 0xa1, 0x0d, 0x81, 0x5d, 0xc8, 0x48, 0xe6, 0x9b, 0xb7,
-	0x00, 0xbb, 0xd6, 0x0a, 0x44, 0x05, 0xf0, 0x8b, 0x5a, 0x20, 0xb8, 0x8c, 0x11, 0xe3, 0x14, 0xc2,
-	0x0a, 0x5c, 0x96, 0xab, 0x10, 0xb2, 0x9c, 0x3e, 0xdd, 0x5e, 0xd0, 0xf1, 0xcf, 0x78, 0x86, 0x2d,
-	0x12, 0xf8, 0x48, 0x02, 0x32, 0xa5, 0xc4, 0xcd, 0x6e, 0xbf, 0xff, 0xb2, 0xf6, 0xc4, 0x94, 0xcf,
-	0x9b, 0xb5, 0x9e, 0xdb, 0x9a, 0xb9, 0xb3, 0xfc, 0x81, 0x9d, 0x0e, 0x81, 0x46, 0x15, 0x3d, 0x23,
-	0x49, 0x65, 0xc1, 0xdb, 0xc2, 0x45, 0x11, 0xbb, 0x28, 0xe2, 0x69, 0x13, 0x25, 0x38, 0x17, 0x5b,
-	0xa9, 0x47, 0x8f, 0x59, 0xab, 0x52, 0x47, 0x5a, 0x49, 0xd2, 0x68, 0xf8, 0xb5, 0xf0, 0xe3, 0x79,
-	0xd3, 0x17, 0x28, 0x0a, 0x19, 0x43, 0x50, 0x73, 0x83, 0x0f, 0xd8, 0xc9, 0x24, 0x53, 0x7a, 0x4f,
-	0x17, 0x1c, 0xea, 0x32, 0xa5, 0x9b, 0x2c, 0x6f, 0xec, 0x6c, 0x80, 0x1f, 0x26, 0x45, 0x19, 0xcd,
-	0x41, 0x25, 0x53, 0x8b, 0x2b, 0x9d, 0x02, 0xbf, 0x39, 0x50, 0xed, 0xcd, 0x76, 0x78, 0x93, 0x79,
-	0xcc, 0x5a, 0x03, 0x48, 0x81, 0x60, 0x08, 0xd9, 0x14, 0x2d, 0xfd, 0xfa, 0xad, 0x37, 0x6d, 0xb2,
-	0x8d, 0xd8, 0x7f, 0xc7, 0xcf, 0x1f, 0xd1, 0x10, 0xef, 0x1c, 0x75, 0xcd, 0x15, 0x9a, 0x26, 0x53,
-	0xff, 0xeb, 0x0f, 0xeb, 0xa2, 0x8d, 0x05, 0xe6, 0x60, 0x14, 0xda, 0x48, 0xb8, 0x36, 0x88, 0xda,
-	0xbe, 0xf5, 0xaf, 0x5e, 0x2b, 0xe2, 0x78, 0x2d, 0xde, 0x7b, 0xb1, 0xa6, 0xa4, 0x5c, 0x0a, 0x85,
-	0x59, 0xb8, 0x73, 0x86, 0xce, 0xd9, 0xdd, 0x36, 0x6c, 0x7d, 0x1f, 0xc6, 0x58, 0xdf, 0xf8, 0xe5,
-	0xbf, 0x8a, 0xbb, 0xfb, 0x09, 0x00, 0x00, 0xff, 0xff, 0x75, 0x2b, 0xd4, 0xd6, 0x23, 0x03, 0x00,
-	0x00,
+	// 351 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0x4f, 0x4b, 0xf3, 0x40,
+	0x10, 0xc6, 0x79, 0x79, 0xc1, 0xc3, 0x4a, 0x15, 0x56, 0x29, 0x18, 0xbd, 0x14, 0x4f, 0x1e, 0xba,
+	0x01, 0xc5, 0x93, 0xa7, 0xfe, 0x91, 0x56, 0xa8, 0xb4, 0xd0, 0x22, 0xe2, 0xa5, 0x6c, 0x37, 0xd3,
+	0x64, 0x21, 0xd9, 0x09, 0xc9, 0xa4, 0xe2, 0xb7, 0xf0, 0xfb, 0xf9, 0x65, 0x24, 0xd9, 0x14, 0xba,
+	0xb5, 0x25, 0xa7, 0x10, 0x9e, 0xdf, 0xfc, 0x98, 0x81, 0x67, 0x59, 0x77, 0x83, 0x31, 0x45, 0x72,
+	0x99, 0x66, 0x48, 0x98, 0xfb, 0x68, 0x8a, 0xa5, 0x36, 0x04, 0xd9, 0x52, 0x06, 0x32, 0x2d, 0xbf,
+	0x39, 0x64, 0x1b, 0xad, 0x40, 0x54, 0x00, 0xbf, 0x3a, 0x0a, 0x78, 0x9e, 0x6b, 0x52, 0x98, 0x24,
+	0x68, 0xec, 0x98, 0x77, 0x1d, 0x22, 0x86, 0x31, 0xf8, 0xd5, 0xdf, 0xaa, 0x58, 0xfb, 0x90, 0xa4,
+	0xf4, 0x55, 0x87, 0x1d, 0x77, 0xd0, 0xb1, 0xd7, 0xc8, 0x9e, 0x3b, 0x02, 0x19, 0x53, 0x64, 0xb3,
+	0xfb, 0x9f, 0xff, 0xac, 0x3d, 0x35, 0xc5, 0x4b, 0x39, 0xd6, 0xb3, 0x53, 0x73, 0xbb, 0x12, 0x7f,
+	0x62, 0xe7, 0x23, 0xa0, 0x71, 0x45, 0xcf, 0x49, 0x52, 0x91, 0x73, 0x2e, 0xea, 0xc5, 0x06, 0x68,
+	0x0c, 0x28, 0xd2, 0x68, 0xbc, 0x4b, 0x51, 0x0b, 0x1d, 0x72, 0xc2, 0x5a, 0x95, 0x36, 0xd0, 0x4a,
+	0x96, 0x18, 0xbf, 0x15, 0xee, 0x6a, 0x4e, 0xfa, 0x0a, 0x79, 0x2e, 0x43, 0xf0, 0xda, 0xc2, 0x9e,
+	0x2a, 0xb6, 0xa7, 0x8a, 0xe7, 0xf2, 0x54, 0x3e, 0x64, 0x67, 0xd3, 0x44, 0xe9, 0x1d, 0x9d, 0xb7,
+	0xaf, 0x4b, 0x94, 0x6e, 0xb2, 0xbc, 0xb3, 0x8b, 0x21, 0x7e, 0x9a, 0x18, 0x65, 0xb0, 0x00, 0x15,
+	0xcd, 0x32, 0x5c, 0xeb, 0x18, 0xf8, 0xdd, 0x9e, 0x6a, 0x27, 0xdb, 0xe2, 0x4d, 0xe6, 0x09, 0x6b,
+	0x0d, 0x21, 0x06, 0x82, 0x11, 0x24, 0x33, 0xcc, 0xe8, 0xcf, 0xb5, 0x4e, 0xda, 0x64, 0x1b, 0xb3,
+	0x53, 0xcb, 0x2f, 0x06, 0x68, 0x88, 0x77, 0x0e, 0xba, 0x16, 0x0a, 0x4d, 0x93, 0xa9, 0xff, 0xfd,
+	0x8f, 0x75, 0x31, 0x0b, 0x05, 0xa6, 0x60, 0x14, 0x66, 0x81, 0xb0, 0x4d, 0x10, 0x47, 0x7b, 0xd8,
+	0xbf, 0x79, 0xab, 0x88, 0xc3, 0x95, 0xf8, 0xe8, 0x85, 0x9a, 0xa2, 0x62, 0x55, 0xb6, 0xc0, 0xdf,
+	0x3a, 0x7d, 0xeb, 0xec, 0xd6, 0xed, 0xda, 0x3c, 0xfa, 0x21, 0x1e, 0x7f, 0x09, 0xab, 0x93, 0x8a,
+	0x7b, 0xf8, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x5f, 0x10, 0x75, 0x34, 0x3b, 0x03, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -71,7 +72,7 @@
 type OnuInterAdapterServiceClient interface {
 	// GetHealthStatus is used by an OnuInterAdapterService client to verify connectivity
 	// to the gRPC server hosting the OnuInterAdapterService service
-	GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*health.HealthStatus, error)
+	GetHealthStatus(ctx context.Context, in *common.Connection, opts ...grpc.CallOption) (*health.HealthStatus, error)
 	OnuIndication(ctx context.Context, in *inter_adapter.OnuIndicationMessage, opts ...grpc.CallOption) (*empty.Empty, error)
 	OmciIndication(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*empty.Empty, error)
 	DownloadTechProfile(ctx context.Context, in *inter_adapter.TechProfileDownloadMessage, opts ...grpc.CallOption) (*empty.Empty, error)
@@ -87,7 +88,7 @@
 	return &onuInterAdapterServiceClient{cc}
 }
 
-func (c *onuInterAdapterServiceClient) GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*health.HealthStatus, error) {
+func (c *onuInterAdapterServiceClient) GetHealthStatus(ctx context.Context, in *common.Connection, opts ...grpc.CallOption) (*health.HealthStatus, error) {
 	out := new(health.HealthStatus)
 	err := c.cc.Invoke(ctx, "/onu_inter_adapter_service.OnuInterAdapterService/GetHealthStatus", in, out, opts...)
 	if err != nil {
@@ -145,7 +146,7 @@
 type OnuInterAdapterServiceServer interface {
 	// GetHealthStatus is used by an OnuInterAdapterService client to verify connectivity
 	// to the gRPC server hosting the OnuInterAdapterService service
-	GetHealthStatus(context.Context, *empty.Empty) (*health.HealthStatus, error)
+	GetHealthStatus(context.Context, *common.Connection) (*health.HealthStatus, error)
 	OnuIndication(context.Context, *inter_adapter.OnuIndicationMessage) (*empty.Empty, error)
 	OmciIndication(context.Context, *inter_adapter.OmciMessage) (*empty.Empty, error)
 	DownloadTechProfile(context.Context, *inter_adapter.TechProfileDownloadMessage) (*empty.Empty, error)
@@ -157,7 +158,7 @@
 type UnimplementedOnuInterAdapterServiceServer struct {
 }
 
-func (*UnimplementedOnuInterAdapterServiceServer) GetHealthStatus(ctx context.Context, req *empty.Empty) (*health.HealthStatus, error) {
+func (*UnimplementedOnuInterAdapterServiceServer) GetHealthStatus(ctx context.Context, req *common.Connection) (*health.HealthStatus, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
 }
 func (*UnimplementedOnuInterAdapterServiceServer) OnuIndication(ctx context.Context, req *inter_adapter.OnuIndicationMessage) (*empty.Empty, error) {
@@ -181,7 +182,7 @@
 }
 
 func _OnuInterAdapterService_GetHealthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
+	in := new(common.Connection)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
@@ -193,7 +194,7 @@
 		FullMethod: "/onu_inter_adapter_service.OnuInterAdapterService/GetHealthStatus",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OnuInterAdapterServiceServer).GetHealthStatus(ctx, req.(*empty.Empty))
+		return srv.(OnuInterAdapterServiceServer).GetHealthStatus(ctx, req.(*common.Connection))
 	}
 	return interceptor(ctx, in, info, handler)
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
index 44e2567..217a597 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
@@ -37,6 +37,9 @@
 // IDs from public import voltha_protos/common.proto
 type IDs = common.IDs
 
+// Connection from public import voltha_protos/common.proto
+type Connection = common.Connection
+
 // AdminState from public import voltha_protos/common.proto
 type AdminState = common.AdminState
 
diff --git a/vendor/modules.txt b/vendor/modules.txt
index f45379f..aabe1dd 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -211,7 +211,7 @@
 github.com/modern-go/concurrent
 # github.com/modern-go/reflect2 v1.0.1
 github.com/modern-go/reflect2
-# github.com/opencord/voltha-lib-go/v7 v7.1.2
+# github.com/opencord/voltha-lib-go/v7 v7.1.3
 ## explicit
 github.com/opencord/voltha-lib-go/v7/pkg/adapters/common
 github.com/opencord/voltha-lib-go/v7/pkg/config
@@ -227,7 +227,7 @@
 github.com/opencord/voltha-lib-go/v7/pkg/mocks/kafka
 github.com/opencord/voltha-lib-go/v7/pkg/probe
 github.com/opencord/voltha-lib-go/v7/pkg/version
-# github.com/opencord/voltha-protos/v5 v5.1.1
+# github.com/opencord/voltha-protos/v5 v5.1.2
 ## explicit
 github.com/opencord/voltha-protos/v5/go/adapter_service
 github.com/opencord/voltha-protos/v5/go/common
@@ -350,12 +350,12 @@
 golang.org/x/text/unicode/norm
 # golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac
 golang.org/x/time/rate
-# google.golang.org/genproto v0.0.0-20211101144312-62acf1d99145
+# google.golang.org/genproto v0.0.0-20211207154714-918901c715cf
 google.golang.org/genproto/googleapis/api/annotations
 google.golang.org/genproto/googleapis/api/httpbody
 google.golang.org/genproto/googleapis/rpc/status
 google.golang.org/genproto/protobuf/field_mask
-# google.golang.org/grpc v1.41.0 => google.golang.org/grpc v1.25.1
+# google.golang.org/grpc v1.42.0 => google.golang.org/grpc v1.25.1
 ## explicit
 google.golang.org/grpc
 google.golang.org/grpc/backoff