diff --git a/go/afrouter/afrouter.pb.go b/go/afrouter/afrouter.pb.go
index 0091b88..51c17e1 100644
--- a/go/afrouter/afrouter.pb.go
+++ b/go/afrouter/afrouter.pb.go
@@ -7,6 +7,7 @@
 	context "context"
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
+	common "github.com/opencord/voltha-protos/go/common"
 	grpc "google.golang.org/grpc"
 	math "math"
 )
@@ -324,33 +325,36 @@
 func init() { proto.RegisterFile("voltha_protos/afrouter.proto", fileDescriptor_be7e2f565b9e1c96) }
 
 var fileDescriptor_be7e2f565b9e1c96 = []byte{
-	// 401 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x8b, 0xdb, 0x30,
-	0x10, 0x85, 0xd7, 0x89, 0xed, 0x78, 0xa7, 0x64, 0x77, 0x2b, 0x4a, 0x11, 0x4b, 0x5b, 0x82, 0x4f,
-	0xb9, 0x6c, 0x0c, 0x5d, 0x4a, 0xcf, 0xad, 0x29, 0xb9, 0xf4, 0xe4, 0xdc, 0x7a, 0x29, 0x8e, 0x2c,
-	0x3b, 0x22, 0x89, 0xc6, 0x48, 0x72, 0x20, 0xd0, 0x9f, 0xd5, 0x73, 0x7f, 0x5b, 0x91, 0x64, 0xc7,
-	0x29, 0x74, 0x6f, 0xef, 0x7b, 0x63, 0x59, 0xf3, 0x34, 0x03, 0xef, 0x4e, 0x78, 0x30, 0xbb, 0xf2,
-	0x67, 0xab, 0xd0, 0xa0, 0xce, 0xca, 0x5a, 0x61, 0x67, 0xb8, 0x5a, 0x39, 0x26, 0xc9, 0xc0, 0xe9,
-	0x77, 0x88, 0x0b, 0xae, 0xbb, 0x83, 0x21, 0x14, 0x66, 0xba, 0x63, 0x8c, 0x6b, 0x4d, 0x83, 0x45,
-	0xb0, 0x4c, 0x8a, 0x01, 0xc9, 0x1b, 0x88, 0xb8, 0x52, 0xa8, 0xe8, 0x64, 0x11, 0x2c, 0x6f, 0x0b,
-	0x0f, 0x84, 0x40, 0x28, 0x64, 0x8d, 0x74, 0xea, 0x4c, 0xa7, 0xd3, 0x19, 0x44, 0xdf, 0x8e, 0xad,
-	0x39, 0xa7, 0xef, 0x21, 0xca, 0xb1, 0x93, 0xc6, 0x9e, 0x65, 0x56, 0xb8, 0x7f, 0xce, 0x0b, 0x0f,
-	0xe9, 0x9f, 0x00, 0xc2, 0x1c, 0xa5, 0x24, 0x6f, 0x21, 0xd6, 0x5c, 0x9d, 0xb8, 0x72, 0xf5, 0xdb,
-	0xa2, 0x27, 0xf2, 0x00, 0xd3, 0x76, 0xdf, 0xf4, 0x17, 0x5a, 0x69, 0x1d, 0x7d, 0x62, 0xfd, 0x6d,
-	0x56, 0xda, 0x86, 0xd9, 0xa1, 0xd3, 0x86, 0x2b, 0x1a, 0x3a, 0x77, 0x40, 0x5b, 0xd9, 0x96, 0x6c,
-	0xcf, 0x65, 0x45, 0x23, 0x5f, 0xe9, 0x91, 0x7c, 0x00, 0x60, 0x28, 0x25, 0x67, 0x46, 0xa0, 0xa4,
-	0xb1, 0x2b, 0x5e, 0x39, 0x36, 0x54, 0x59, 0x55, 0x8a, 0xce, 0x7c, 0x28, 0xab, 0xad, 0xd7, 0xa2,
-	0x32, 0x34, 0x59, 0x04, 0xcb, 0xb0, 0x70, 0x3a, 0xfd, 0x05, 0xc9, 0x97, 0xba, 0x16, 0x52, 0x98,
-	0xb3, 0xcd, 0xe0, 0x1f, 0x73, 0xc8, 0xe0, 0xc9, 0x46, 0x77, 0x6a, 0x78, 0x36, 0x07, 0xd7, 0x5d,
-	0x4f, 0x5f, 0xec, 0x3a, 0xfc, 0xb7, 0xeb, 0x3b, 0x98, 0x88, 0x21, 0xca, 0x44, 0x54, 0x1f, 0x7f,
-	0x07, 0x30, 0xcf, 0x51, 0xd6, 0xa2, 0xe9, 0x54, 0xe9, 0xfa, 0x7e, 0x86, 0xf9, 0x86, 0x9b, 0x7c,
-	0x0c, 0x72, 0xb7, 0xba, 0x8c, 0xdc, 0xba, 0x8f, 0x0f, 0x23, 0xfb, 0x79, 0xa7, 0x37, 0xe4, 0x13,
-	0xbc, 0xda, 0x70, 0x73, 0xc9, 0x41, 0xc6, 0x4f, 0x06, 0xef, 0xbf, 0xc7, 0x3e, 0xc3, 0xeb, 0x35,
-	0x37, 0x6b, 0xb4, 0xbe, 0x90, 0xdc, 0xcf, 0xf9, 0x7e, 0xfc, 0xd0, 0x6d, 0xc0, 0xe3, 0xfd, 0x75,
-	0x03, 0x76, 0xe6, 0x37, 0x5f, 0xb3, 0x1f, 0x4f, 0x8d, 0x30, 0xbb, 0x6e, 0xbb, 0x62, 0x78, 0xcc,
-	0xb0, 0xe5, 0x92, 0xa1, 0xaa, 0x32, 0xbf, 0xa9, 0x4f, 0xfd, 0xa6, 0x36, 0x78, 0x59, 0xd6, 0x6d,
-	0xec, 0xbc, 0xe7, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x03, 0xc8, 0x69, 0xcd, 0x02, 0x00,
-	0x00,
+	// 463 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0xcb, 0x8e, 0xd3, 0x30,
+	0x14, 0x6d, 0xda, 0xf4, 0x31, 0x17, 0xfa, 0xc0, 0x42, 0xc8, 0x8a, 0x00, 0x55, 0x59, 0x75, 0x33,
+	0xad, 0xc4, 0x80, 0xd8, 0xb0, 0x81, 0x08, 0x75, 0xd3, 0x55, 0x46, 0x6c, 0xd8, 0xa0, 0xd4, 0x71,
+	0x32, 0xd6, 0xb4, 0xbe, 0x91, 0xed, 0x54, 0x1a, 0x89, 0x0f, 0xe2, 0x2b, 0xf8, 0x36, 0x64, 0x3b,
+	0xe9, 0x4b, 0xcc, 0xee, 0x9c, 0x73, 0xef, 0xb5, 0xcf, 0xf1, 0x03, 0xde, 0x1e, 0x70, 0x67, 0x1e,
+	0xb2, 0x5f, 0x95, 0x42, 0x83, 0x7a, 0x95, 0x15, 0x0a, 0x6b, 0xc3, 0xd5, 0xd2, 0x71, 0x32, 0x6a,
+	0x79, 0x14, 0x5d, 0xf6, 0x31, 0xdc, 0xef, 0x51, 0xfa, 0xae, 0x78, 0x03, 0x83, 0x94, 0xeb, 0x7a,
+	0x67, 0x08, 0x85, 0xa1, 0xae, 0x19, 0xe3, 0x5a, 0xd3, 0x60, 0x1e, 0x2c, 0x46, 0x69, 0x4b, 0xc9,
+	0x6b, 0xe8, 0x73, 0xa5, 0x50, 0xd1, 0xee, 0x3c, 0x58, 0xdc, 0xa4, 0x9e, 0x10, 0x02, 0xa1, 0x90,
+	0x05, 0xd2, 0x9e, 0x13, 0x1d, 0x8e, 0x87, 0xd0, 0xff, 0xbe, 0xaf, 0xcc, 0x53, 0xfc, 0x0e, 0xfa,
+	0x09, 0xd6, 0xd2, 0xd8, 0x59, 0x66, 0x81, 0x5b, 0x73, 0x9c, 0x7a, 0x12, 0xff, 0x0d, 0x20, 0x4c,
+	0x50, 0x4a, 0xf2, 0x06, 0x06, 0x9a, 0xab, 0x03, 0x57, 0xae, 0x7e, 0x93, 0x36, 0x8c, 0xcc, 0xa0,
+	0x57, 0x3d, 0x96, 0xcd, 0x86, 0x16, 0x5a, 0x45, 0x1f, 0x58, 0xb3, 0x9b, 0x85, 0xd6, 0x30, 0xdb,
+	0xd5, 0xda, 0x70, 0x45, 0x43, 0xa7, 0xb6, 0xd4, 0x56, 0xb6, 0x19, 0x7b, 0xe4, 0x32, 0xa7, 0x7d,
+	0x5f, 0x69, 0x28, 0x79, 0x0f, 0xc0, 0x50, 0x4a, 0xce, 0x8c, 0x40, 0x49, 0x07, 0xae, 0x78, 0xa6,
+	0xd8, 0x50, 0x59, 0x9e, 0x2b, 0x3a, 0xf4, 0xa1, 0x2c, 0xb6, 0x5a, 0x85, 0xca, 0xd0, 0xd1, 0x3c,
+	0x58, 0x84, 0xa9, 0xc3, 0xf1, 0x6f, 0x18, 0x7d, 0x2d, 0x0a, 0x21, 0x85, 0x79, 0xb2, 0x19, 0xfc,
+	0x41, 0xb7, 0x19, 0x3c, 0xb3, 0xd1, 0x1d, 0x6a, 0x8f, 0xcd, 0x91, 0x73, 0xd7, 0xbd, 0x67, 0x5d,
+	0x87, 0x97, 0xae, 0x27, 0xd0, 0x15, 0x6d, 0x94, 0xae, 0xc8, 0x3f, 0xfc, 0xe9, 0xc2, 0x38, 0x41,
+	0x59, 0x88, 0xb2, 0x56, 0x99, 0xf3, 0x7d, 0x07, 0xe3, 0x7b, 0x6e, 0x92, 0x53, 0x90, 0xc9, 0xf2,
+	0xf8, 0x1c, 0xac, 0x1a, 0xcd, 0x4e, 0xdc, 0xdf, 0x77, 0xdc, 0x21, 0x9f, 0xe0, 0xc5, 0x3d, 0x37,
+	0xc7, 0x1c, 0xe4, 0xd4, 0xd2, 0x6a, 0xff, 0x1d, 0xfb, 0x0c, 0xaf, 0xd6, 0xdc, 0xac, 0xd1, 0xea,
+	0x42, 0x72, 0x7f, 0xcf, 0xd3, 0x53, 0xa3, 0x7b, 0x01, 0xd1, 0xf4, 0xdc, 0x80, 0xbd, 0xf3, 0x0e,
+	0xf9, 0x08, 0x93, 0x1f, 0x55, 0x9e, 0x19, 0xbe, 0xc1, 0x72, 0xc3, 0x0f, 0x7c, 0x47, 0xa6, 0xcb,
+	0xe6, 0x31, 0x6e, 0xb0, 0x2c, 0x85, 0x2c, 0xa3, 0xeb, 0x65, 0xe2, 0x0e, 0xf9, 0x02, 0x2f, 0xd7,
+	0xdc, 0xb4, 0x23, 0x9a, 0xd0, 0xab, 0x99, 0x04, 0xf7, 0x15, 0x4a, 0x2e, 0x4d, 0x34, 0xbb, 0xaa,
+	0xe8, 0xb8, 0xf3, 0x6d, 0xf5, 0xf3, 0xb6, 0x14, 0xe6, 0xa1, 0xde, 0xda, 0xda, 0x0a, 0x2b, 0x2e,
+	0x19, 0xaa, 0x7c, 0xe5, 0x7f, 0xc4, 0x6d, 0xf3, 0x23, 0x4a, 0x3c, 0x7e, 0x9e, 0xed, 0xc0, 0x69,
+	0x77, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xec, 0x41, 0x8b, 0x29, 0x5d, 0x03, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -368,6 +372,8 @@
 	SetConnection(ctx context.Context, in *Conn, opts ...grpc.CallOption) (*Result, error)
 	SetAffinity(ctx context.Context, in *Affinity, opts ...grpc.CallOption) (*Result, error)
 	GetGoroutineCount(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Count, error)
+	UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*Empty, error)
+	GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error)
 }
 
 type configurationClient struct {
@@ -405,11 +411,31 @@
 	return out, nil
 }
 
+func (c *configurationClient) UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*Empty, error) {
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, "/afrouter.Configuration/UpdateLogLevel", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *configurationClient) GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error) {
+	out := new(common.Loggings)
+	err := c.cc.Invoke(ctx, "/afrouter.Configuration/GetLogLevels", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // ConfigurationServer is the server API for Configuration service.
 type ConfigurationServer interface {
 	SetConnection(context.Context, *Conn) (*Result, error)
 	SetAffinity(context.Context, *Affinity) (*Result, error)
 	GetGoroutineCount(context.Context, *Empty) (*Count, error)
+	UpdateLogLevel(context.Context, *common.Logging) (*Empty, error)
+	GetLogLevels(context.Context, *common.LoggingComponent) (*common.Loggings, error)
 }
 
 func RegisterConfigurationServer(s *grpc.Server, srv ConfigurationServer) {
@@ -470,6 +496,42 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _Configuration_UpdateLogLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Logging)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ConfigurationServer).UpdateLogLevel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/afrouter.Configuration/UpdateLogLevel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ConfigurationServer).UpdateLogLevel(ctx, req.(*common.Logging))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Configuration_GetLogLevels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.LoggingComponent)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ConfigurationServer).GetLogLevels(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/afrouter.Configuration/GetLogLevels",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ConfigurationServer).GetLogLevels(ctx, req.(*common.LoggingComponent))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _Configuration_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "afrouter.Configuration",
 	HandlerType: (*ConfigurationServer)(nil),
@@ -486,6 +548,14 @@
 			MethodName: "GetGoroutineCount",
 			Handler:    _Configuration_GetGoroutineCount_Handler,
 		},
+		{
+			MethodName: "UpdateLogLevel",
+			Handler:    _Configuration_UpdateLogLevel_Handler,
+		},
+		{
+			MethodName: "GetLogLevels",
+			Handler:    _Configuration_GetLogLevels_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "voltha_protos/afrouter.proto",
