From 90e8b93db4c68f3a5a7481d71fc54c726923dfa2 Mon Sep 17 00:00:00 2001 From: Manuel Kieweg <mail@manuelkieweg.de> Date: Fri, 11 Dec 2020 14:20:39 +0100 Subject: [PATCH] Refactoring in progress --- api/proto/openconfig/enums/enums.pb.go | 149 + api/proto/openconfig/enums/enums.proto | 18 + api/proto/openconfig/openconfig.pb.go | 175 ++ api/proto/openconfig/openconfig.proto | 18 + .../openconfig_interfaces.pb.go | 2620 +++++++++++++++++ .../openconfig_interfaces.proto | 162 + cmd/gnmi/gnmi.go | 35 + cmd/gosdn-cli/main.go | 6 +- cmd/gosdn-tview/grpc/commands.go | 6 +- database/client.go | 2 +- go.mod | 4 +- go.sum | 144 +- gosdn.png | Bin 0 -> 135420 bytes nucleus/cli-handling.go | 20 +- nucleus/{interfaces => }/clientConfig.go | 2 +- nucleus/controller.go | 8 +- nucleus/device.go | 16 +- nucleus/gnmi_transport.go | 85 + nucleus/interfaces/interfaces.go | 21 - nucleus/nucleus-core.go | 2 - nucleus/principalNetworkDomain.go | 37 +- nucleus/restconf_transport.go | 18 + nucleus/sbi/openConfig.go | 51 - nucleus/southbound.go | 37 + .../util/unmarshal.go => nucleus/transport.go | 12 +- nucleus/transport/gnmi.go | 1 - nucleus/transport/restconf.go | 1 - .../ciena/client.go => plugins/ciena/mcp.go | 42 +- {sbi => plugins}/sbi-general.go | 2 +- 29 files changed, 3514 insertions(+), 180 deletions(-) create mode 100644 api/proto/openconfig/enums/enums.pb.go create mode 100644 api/proto/openconfig/enums/enums.proto create mode 100644 api/proto/openconfig/openconfig.pb.go create mode 100644 api/proto/openconfig/openconfig.proto create mode 100644 api/proto/openconfig/openconfig_interfaces/openconfig_interfaces.pb.go create mode 100644 api/proto/openconfig/openconfig_interfaces/openconfig_interfaces.proto create mode 100644 cmd/gnmi/gnmi.go create mode 100644 gosdn.png rename nucleus/{interfaces => }/clientConfig.go (91%) create mode 100644 nucleus/gnmi_transport.go delete mode 100644 nucleus/interfaces/interfaces.go create mode 100644 nucleus/restconf_transport.go delete mode 100644 nucleus/sbi/openConfig.go create mode 100644 nucleus/southbound.go rename sbi/restconf/util/unmarshal.go => nucleus/transport.go (52%) delete mode 100644 nucleus/transport/gnmi.go delete mode 100644 nucleus/transport/restconf.go rename sbi/restconf/client/ciena/client.go => plugins/ciena/mcp.go (84%) rename {sbi => plugins}/sbi-general.go (97%) diff --git a/api/proto/openconfig/enums/enums.pb.go b/api/proto/openconfig/enums/enums.pb.go new file mode 100644 index 000000000..3ebe5d22c --- /dev/null +++ b/api/proto/openconfig/enums/enums.pb.go @@ -0,0 +1,149 @@ +// openconfig.enums is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - ../yang-models/models/openconfig/release/models/interfaces/openconfig-interfaces.yang +// Include paths: +// - ../yang-models/models/... + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0-devel +// protoc v3.13.0 +// source: openconfig/enums/enums.proto + +package openconfig_enums + +import ( + proto "github.com/golang/protobuf/proto" + _ "github.com/openconfig/ygot/proto/yext" + _ "github.com/openconfig/ygot/proto/ywrapper" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +// IETFInterfacesInterfaceType represents an enumerated type generated for the YANG identity interface-type. +type IETFInterfacesInterfaceType int32 + +const ( + IETFInterfacesInterfaceType_IETFINTERFACESINTERFACETYPE_UNSET IETFInterfacesInterfaceType = 0 +) + +// Enum value maps for IETFInterfacesInterfaceType. +var ( + IETFInterfacesInterfaceType_name = map[int32]string{ + 0: "IETFINTERFACESINTERFACETYPE_UNSET", + } + IETFInterfacesInterfaceType_value = map[string]int32{ + "IETFINTERFACESINTERFACETYPE_UNSET": 0, + } +) + +func (x IETFInterfacesInterfaceType) Enum() *IETFInterfacesInterfaceType { + p := new(IETFInterfacesInterfaceType) + *p = x + return p +} + +func (x IETFInterfacesInterfaceType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (IETFInterfacesInterfaceType) Descriptor() protoreflect.EnumDescriptor { + return file_openconfig_enums_enums_proto_enumTypes[0].Descriptor() +} + +func (IETFInterfacesInterfaceType) Type() protoreflect.EnumType { + return &file_openconfig_enums_enums_proto_enumTypes[0] +} + +func (x IETFInterfacesInterfaceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use IETFInterfacesInterfaceType.Descriptor instead. +func (IETFInterfacesInterfaceType) EnumDescriptor() ([]byte, []int) { + return file_openconfig_enums_enums_proto_rawDescGZIP(), []int{0} +} + +var File_openconfig_enums_enums_proto protoreflect.FileDescriptor + +var file_openconfig_enums_enums_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x65, 0x6e, 0x75, + 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, + 0x1a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2f, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, + 0x74, 0x2f, 0x79, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0x44, 0x0a, 0x1b, + 0x49, 0x45, 0x54, 0x46, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x49, + 0x45, 0x54, 0x46, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x53, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, + 0x10, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_openconfig_enums_enums_proto_rawDescOnce sync.Once + file_openconfig_enums_enums_proto_rawDescData = file_openconfig_enums_enums_proto_rawDesc +) + +func file_openconfig_enums_enums_proto_rawDescGZIP() []byte { + file_openconfig_enums_enums_proto_rawDescOnce.Do(func() { + file_openconfig_enums_enums_proto_rawDescData = protoimpl.X.CompressGZIP(file_openconfig_enums_enums_proto_rawDescData) + }) + return file_openconfig_enums_enums_proto_rawDescData +} + +var file_openconfig_enums_enums_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_openconfig_enums_enums_proto_goTypes = []interface{}{ + (IETFInterfacesInterfaceType)(0), // 0: openconfig.enums.IETFInterfacesInterfaceType +} +var file_openconfig_enums_enums_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_openconfig_enums_enums_proto_init() } +func file_openconfig_enums_enums_proto_init() { + if File_openconfig_enums_enums_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_openconfig_enums_enums_proto_rawDesc, + NumEnums: 1, + NumMessages: 0, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_openconfig_enums_enums_proto_goTypes, + DependencyIndexes: file_openconfig_enums_enums_proto_depIdxs, + EnumInfos: file_openconfig_enums_enums_proto_enumTypes, + }.Build() + File_openconfig_enums_enums_proto = out.File + file_openconfig_enums_enums_proto_rawDesc = nil + file_openconfig_enums_enums_proto_goTypes = nil + file_openconfig_enums_enums_proto_depIdxs = nil +} diff --git a/api/proto/openconfig/enums/enums.proto b/api/proto/openconfig/enums/enums.proto new file mode 100644 index 000000000..ec3303f51 --- /dev/null +++ b/api/proto/openconfig/enums/enums.proto @@ -0,0 +1,18 @@ +// openconfig.enums is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - ../yang-models/models/openconfig/release/models/interfaces/openconfig-interfaces.yang +// Include paths: +// - ../yang-models/models/... +syntax = "proto3"; + +package openconfig.enums; + +import "github.com/openconfig/ygot/proto/ywrapper/ywrapper.proto"; +import "github.com/openconfig/ygot/proto/yext/yext.proto"; + +// IETFInterfacesInterfaceType represents an enumerated type generated for the YANG identity interface-type. +enum IETFInterfacesInterfaceType { + IETFINTERFACESINTERFACETYPE_UNSET = 0; +} diff --git a/api/proto/openconfig/openconfig.pb.go b/api/proto/openconfig/openconfig.pb.go new file mode 100644 index 000000000..03db9e8ce --- /dev/null +++ b/api/proto/openconfig/openconfig.pb.go @@ -0,0 +1,175 @@ +// openconfig is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - ../yang-models/models/openconfig/release/models/interfaces/openconfig-interfaces.yang +// Include paths: +// - ../yang-models/models/... + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0-devel +// protoc v3.13.0 +// source: openconfig/openconfig.proto + +package openconfig + +import ( + proto "github.com/golang/protobuf/proto" + _ "github.com/openconfig/ygot/proto/yext" + _ "github.com/openconfig/ygot/proto/ywrapper" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + openconfig_interfaces "openconfig/openconfig_interfaces" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Device struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Interfaces *openconfig_interfaces.Interfaces `protobuf:"bytes,85031486,opt,name=interfaces,proto3" json:"interfaces,omitempty"` +} + +func (x *Device) Reset() { + *x = Device{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_proto_msgTypes[0] + 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_openconfig_openconfig_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && 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 file_openconfig_openconfig_proto_rawDescGZIP(), []int{0} +} + +func (x *Device) GetInterfaces() *openconfig_interfaces.Interfaces { + if x != nil { + return x.Interfaces + } + return nil +} + +var File_openconfig_openconfig_proto protoreflect.FileDescriptor + +var file_openconfig_openconfig_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x6f, + 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2f, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, 0x74, 0x2f, 0x79, 0x65, 0x78, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3c, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x69, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, + 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x18, 0xbe, 0xf4, 0xc5, 0x28, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x42, 0x0e, 0x82, 0x41, 0x0b, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_openconfig_openconfig_proto_rawDescOnce sync.Once + file_openconfig_openconfig_proto_rawDescData = file_openconfig_openconfig_proto_rawDesc +) + +func file_openconfig_openconfig_proto_rawDescGZIP() []byte { + file_openconfig_openconfig_proto_rawDescOnce.Do(func() { + file_openconfig_openconfig_proto_rawDescData = protoimpl.X.CompressGZIP(file_openconfig_openconfig_proto_rawDescData) + }) + return file_openconfig_openconfig_proto_rawDescData +} + +var file_openconfig_openconfig_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_openconfig_openconfig_proto_goTypes = []interface{}{ + (*Device)(nil), // 0: openconfig.Device + (*openconfig_interfaces.Interfaces)(nil), // 1: openconfig.openconfig_interfaces.Interfaces +} +var file_openconfig_openconfig_proto_depIdxs = []int32{ + 1, // 0: openconfig.Device.interfaces:type_name -> openconfig.openconfig_interfaces.Interfaces + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_openconfig_openconfig_proto_init() } +func file_openconfig_openconfig_proto_init() { + if File_openconfig_openconfig_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_openconfig_openconfig_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Device); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_openconfig_openconfig_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_openconfig_openconfig_proto_goTypes, + DependencyIndexes: file_openconfig_openconfig_proto_depIdxs, + MessageInfos: file_openconfig_openconfig_proto_msgTypes, + }.Build() + File_openconfig_openconfig_proto = out.File + file_openconfig_openconfig_proto_rawDesc = nil + file_openconfig_openconfig_proto_goTypes = nil + file_openconfig_openconfig_proto_depIdxs = nil +} diff --git a/api/proto/openconfig/openconfig.proto b/api/proto/openconfig/openconfig.proto new file mode 100644 index 000000000..bb40ce29c --- /dev/null +++ b/api/proto/openconfig/openconfig.proto @@ -0,0 +1,18 @@ +// openconfig is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - ../yang-models/models/openconfig/release/models/interfaces/openconfig-interfaces.yang +// Include paths: +// - ../yang-models/models/... +syntax = "proto3"; + +package openconfig; + +import "github.com/openconfig/ygot/proto/ywrapper/ywrapper.proto"; +import "github.com/openconfig/ygot/proto/yext/yext.proto"; +import "openconfig/openconfig_interfaces/openconfig_interfaces.proto"; + +message Device { + openconfig_interfaces.Interfaces interfaces = 85031486 [(yext.schemapath) = "/interfaces"]; +} diff --git a/api/proto/openconfig/openconfig_interfaces/openconfig_interfaces.pb.go b/api/proto/openconfig/openconfig_interfaces/openconfig_interfaces.pb.go new file mode 100644 index 000000000..385aef072 --- /dev/null +++ b/api/proto/openconfig/openconfig_interfaces/openconfig_interfaces.pb.go @@ -0,0 +1,2620 @@ +// openconfig.openconfig_interfaces is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - ../yang-models/models/openconfig/release/models/interfaces/openconfig-interfaces.yang +// Include paths: +// - ../yang-models/models/... + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0-devel +// protoc v3.13.0 +// source: openconfig/openconfig_interfaces/openconfig_interfaces.proto + +package openconfig_openconfig_interfaces + +import ( + proto "github.com/golang/protobuf/proto" + _ "github.com/openconfig/ygot/proto/yext" + ywrapper "github.com/openconfig/ygot/proto/ywrapper" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + enums "openconfig/enums" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Interfaces_Interface_State_AdminStatus int32 + +const ( + Interfaces_Interface_State_ADMINSTATUS_UNSET Interfaces_Interface_State_AdminStatus = 0 + Interfaces_Interface_State_ADMINSTATUS_UP Interfaces_Interface_State_AdminStatus = 1 + Interfaces_Interface_State_ADMINSTATUS_DOWN Interfaces_Interface_State_AdminStatus = 2 + Interfaces_Interface_State_ADMINSTATUS_TESTING Interfaces_Interface_State_AdminStatus = 3 +) + +// Enum value maps for Interfaces_Interface_State_AdminStatus. +var ( + Interfaces_Interface_State_AdminStatus_name = map[int32]string{ + 0: "ADMINSTATUS_UNSET", + 1: "ADMINSTATUS_UP", + 2: "ADMINSTATUS_DOWN", + 3: "ADMINSTATUS_TESTING", + } + Interfaces_Interface_State_AdminStatus_value = map[string]int32{ + "ADMINSTATUS_UNSET": 0, + "ADMINSTATUS_UP": 1, + "ADMINSTATUS_DOWN": 2, + "ADMINSTATUS_TESTING": 3, + } +) + +func (x Interfaces_Interface_State_AdminStatus) Enum() *Interfaces_Interface_State_AdminStatus { + p := new(Interfaces_Interface_State_AdminStatus) + *p = x + return p +} + +func (x Interfaces_Interface_State_AdminStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Interfaces_Interface_State_AdminStatus) Descriptor() protoreflect.EnumDescriptor { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes[0].Descriptor() +} + +func (Interfaces_Interface_State_AdminStatus) Type() protoreflect.EnumType { + return &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes[0] +} + +func (x Interfaces_Interface_State_AdminStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Interfaces_Interface_State_AdminStatus.Descriptor instead. +func (Interfaces_Interface_State_AdminStatus) EnumDescriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 2, 0} +} + +type Interfaces_Interface_State_OperStatus int32 + +const ( + Interfaces_Interface_State_OPERSTATUS_UNSET Interfaces_Interface_State_OperStatus = 0 + Interfaces_Interface_State_OPERSTATUS_UP Interfaces_Interface_State_OperStatus = 2 + Interfaces_Interface_State_OPERSTATUS_DOWN Interfaces_Interface_State_OperStatus = 3 + Interfaces_Interface_State_OPERSTATUS_TESTING Interfaces_Interface_State_OperStatus = 4 + Interfaces_Interface_State_OPERSTATUS_UNKNOWN Interfaces_Interface_State_OperStatus = 5 + Interfaces_Interface_State_OPERSTATUS_DORMANT Interfaces_Interface_State_OperStatus = 6 + Interfaces_Interface_State_OPERSTATUS_NOT_PRESENT Interfaces_Interface_State_OperStatus = 7 + Interfaces_Interface_State_OPERSTATUS_LOWER_LAYER_DOWN Interfaces_Interface_State_OperStatus = 8 +) + +// Enum value maps for Interfaces_Interface_State_OperStatus. +var ( + Interfaces_Interface_State_OperStatus_name = map[int32]string{ + 0: "OPERSTATUS_UNSET", + 2: "OPERSTATUS_UP", + 3: "OPERSTATUS_DOWN", + 4: "OPERSTATUS_TESTING", + 5: "OPERSTATUS_UNKNOWN", + 6: "OPERSTATUS_DORMANT", + 7: "OPERSTATUS_NOT_PRESENT", + 8: "OPERSTATUS_LOWER_LAYER_DOWN", + } + Interfaces_Interface_State_OperStatus_value = map[string]int32{ + "OPERSTATUS_UNSET": 0, + "OPERSTATUS_UP": 2, + "OPERSTATUS_DOWN": 3, + "OPERSTATUS_TESTING": 4, + "OPERSTATUS_UNKNOWN": 5, + "OPERSTATUS_DORMANT": 6, + "OPERSTATUS_NOT_PRESENT": 7, + "OPERSTATUS_LOWER_LAYER_DOWN": 8, + } +) + +func (x Interfaces_Interface_State_OperStatus) Enum() *Interfaces_Interface_State_OperStatus { + p := new(Interfaces_Interface_State_OperStatus) + *p = x + return p +} + +func (x Interfaces_Interface_State_OperStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Interfaces_Interface_State_OperStatus) Descriptor() protoreflect.EnumDescriptor { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes[1].Descriptor() +} + +func (Interfaces_Interface_State_OperStatus) Type() protoreflect.EnumType { + return &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes[1] +} + +func (x Interfaces_Interface_State_OperStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Interfaces_Interface_State_OperStatus.Descriptor instead. +func (Interfaces_Interface_State_OperStatus) EnumDescriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 2, 1} +} + +type Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus int32 + +const ( + Interfaces_Interface_Subinterfaces_Subinterface_State_ADMINSTATUS_UNSET Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus = 0 + Interfaces_Interface_Subinterfaces_Subinterface_State_ADMINSTATUS_UP Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus = 1 + Interfaces_Interface_Subinterfaces_Subinterface_State_ADMINSTATUS_DOWN Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus = 2 + Interfaces_Interface_Subinterfaces_Subinterface_State_ADMINSTATUS_TESTING Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus = 3 +) + +// Enum value maps for Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus. +var ( + Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus_name = map[int32]string{ + 0: "ADMINSTATUS_UNSET", + 1: "ADMINSTATUS_UP", + 2: "ADMINSTATUS_DOWN", + 3: "ADMINSTATUS_TESTING", + } + Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus_value = map[string]int32{ + "ADMINSTATUS_UNSET": 0, + "ADMINSTATUS_UP": 1, + "ADMINSTATUS_DOWN": 2, + "ADMINSTATUS_TESTING": 3, + } +) + +func (x Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus) Enum() *Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus { + p := new(Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus) + *p = x + return p +} + +func (x Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus) Descriptor() protoreflect.EnumDescriptor { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes[2].Descriptor() +} + +func (Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus) Type() protoreflect.EnumType { + return &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes[2] +} + +func (x Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus.Descriptor instead. +func (Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus) EnumDescriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 3, 0, 1, 0} +} + +type Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus int32 + +const ( + Interfaces_Interface_Subinterfaces_Subinterface_State_OPERSTATUS_UNSET Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus = 0 + Interfaces_Interface_Subinterfaces_Subinterface_State_OPERSTATUS_UP Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus = 2 + Interfaces_Interface_Subinterfaces_Subinterface_State_OPERSTATUS_DOWN Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus = 3 + Interfaces_Interface_Subinterfaces_Subinterface_State_OPERSTATUS_TESTING Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus = 4 + Interfaces_Interface_Subinterfaces_Subinterface_State_OPERSTATUS_UNKNOWN Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus = 5 + Interfaces_Interface_Subinterfaces_Subinterface_State_OPERSTATUS_DORMANT Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus = 6 + Interfaces_Interface_Subinterfaces_Subinterface_State_OPERSTATUS_NOT_PRESENT Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus = 7 + Interfaces_Interface_Subinterfaces_Subinterface_State_OPERSTATUS_LOWER_LAYER_DOWN Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus = 8 +) + +// Enum value maps for Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus. +var ( + Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus_name = map[int32]string{ + 0: "OPERSTATUS_UNSET", + 2: "OPERSTATUS_UP", + 3: "OPERSTATUS_DOWN", + 4: "OPERSTATUS_TESTING", + 5: "OPERSTATUS_UNKNOWN", + 6: "OPERSTATUS_DORMANT", + 7: "OPERSTATUS_NOT_PRESENT", + 8: "OPERSTATUS_LOWER_LAYER_DOWN", + } + Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus_value = map[string]int32{ + "OPERSTATUS_UNSET": 0, + "OPERSTATUS_UP": 2, + "OPERSTATUS_DOWN": 3, + "OPERSTATUS_TESTING": 4, + "OPERSTATUS_UNKNOWN": 5, + "OPERSTATUS_DORMANT": 6, + "OPERSTATUS_NOT_PRESENT": 7, + "OPERSTATUS_LOWER_LAYER_DOWN": 8, + } +) + +func (x Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus) Enum() *Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus { + p := new(Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus) + *p = x + return p +} + +func (x Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus) Descriptor() protoreflect.EnumDescriptor { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes[3].Descriptor() +} + +func (Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus) Type() protoreflect.EnumType { + return &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes[3] +} + +func (x Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus.Descriptor instead. +func (Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus) EnumDescriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 3, 0, 1, 1} +} + +type Interfaces struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Interface []*Interfaces_InterfaceKey `protobuf:"bytes,422482938,rep,name=interface,proto3" json:"interface,omitempty"` +} + +func (x *Interfaces) Reset() { + *x = Interfaces{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces) ProtoMessage() {} + +func (x *Interfaces) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces.ProtoReflect.Descriptor instead. +func (*Interfaces) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0} +} + +func (x *Interfaces) GetInterface() []*Interfaces_InterfaceKey { + if x != nil { + return x.Interface + } + return nil +} + +type Interfaces_Interface struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Config *Interfaces_Interface_Config `protobuf:"bytes,334174827,opt,name=config,proto3" json:"config,omitempty"` + HoldTime *Interfaces_Interface_HoldTime `protobuf:"bytes,175931092,opt,name=hold_time,json=holdTime,proto3" json:"hold_time,omitempty"` + State *Interfaces_Interface_State `protobuf:"bytes,387556140,opt,name=state,proto3" json:"state,omitempty"` + Subinterfaces *Interfaces_Interface_Subinterfaces `protobuf:"bytes,327798165,opt,name=subinterfaces,proto3" json:"subinterfaces,omitempty"` +} + +func (x *Interfaces_Interface) Reset() { + *x = Interfaces_Interface{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface) ProtoMessage() {} + +func (x *Interfaces_Interface) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *Interfaces_Interface) GetConfig() *Interfaces_Interface_Config { + if x != nil { + return x.Config + } + return nil +} + +func (x *Interfaces_Interface) GetHoldTime() *Interfaces_Interface_HoldTime { + if x != nil { + return x.HoldTime + } + return nil +} + +func (x *Interfaces_Interface) GetState() *Interfaces_Interface_State { + if x != nil { + return x.State + } + return nil +} + +func (x *Interfaces_Interface) GetSubinterfaces() *Interfaces_Interface_Subinterfaces { + if x != nil { + return x.Subinterfaces + } + return nil +} + +type Interfaces_InterfaceKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Interface *Interfaces_Interface `protobuf:"bytes,2,opt,name=interface,proto3" json:"interface,omitempty"` +} + +func (x *Interfaces_InterfaceKey) Reset() { + *x = Interfaces_InterfaceKey{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_InterfaceKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_InterfaceKey) ProtoMessage() {} + +func (x *Interfaces_InterfaceKey) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_InterfaceKey.ProtoReflect.Descriptor instead. +func (*Interfaces_InterfaceKey) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *Interfaces_InterfaceKey) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Interfaces_InterfaceKey) GetInterface() *Interfaces_Interface { + if x != nil { + return x.Interface + } + return nil +} + +type Interfaces_Interface_Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description *ywrapper.StringValue `protobuf:"bytes,418535860,opt,name=description,proto3" json:"description,omitempty"` + Enabled *ywrapper.BoolValue `protobuf:"bytes,37224301,opt,name=enabled,proto3" json:"enabled,omitempty"` + LoopbackMode *ywrapper.BoolValue `protobuf:"bytes,253516347,opt,name=loopback_mode,json=loopbackMode,proto3" json:"loopback_mode,omitempty"` + Mtu *ywrapper.UintValue `protobuf:"bytes,376210342,opt,name=mtu,proto3" json:"mtu,omitempty"` + Name *ywrapper.StringValue `protobuf:"bytes,51804187,opt,name=name,proto3" json:"name,omitempty"` + Type enums.IETFInterfacesInterfaceType `protobuf:"varint,144596894,opt,name=type,proto3,enum=openconfig.enums.IETFInterfacesInterfaceType" json:"type,omitempty"` +} + +func (x *Interfaces_Interface_Config) Reset() { + *x = Interfaces_Interface_Config{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_Config) ProtoMessage() {} + +func (x *Interfaces_Interface_Config) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_Config.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_Config) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 0} +} + +func (x *Interfaces_Interface_Config) GetDescription() *ywrapper.StringValue { + if x != nil { + return x.Description + } + return nil +} + +func (x *Interfaces_Interface_Config) GetEnabled() *ywrapper.BoolValue { + if x != nil { + return x.Enabled + } + return nil +} + +func (x *Interfaces_Interface_Config) GetLoopbackMode() *ywrapper.BoolValue { + if x != nil { + return x.LoopbackMode + } + return nil +} + +func (x *Interfaces_Interface_Config) GetMtu() *ywrapper.UintValue { + if x != nil { + return x.Mtu + } + return nil +} + +func (x *Interfaces_Interface_Config) GetName() *ywrapper.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *Interfaces_Interface_Config) GetType() enums.IETFInterfacesInterfaceType { + if x != nil { + return x.Type + } + return enums.IETFInterfacesInterfaceType_IETFINTERFACESINTERFACETYPE_UNSET +} + +type Interfaces_Interface_HoldTime struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Config *Interfaces_Interface_HoldTime_Config `protobuf:"bytes,316512729,opt,name=config,proto3" json:"config,omitempty"` + State *Interfaces_Interface_HoldTime_State `protobuf:"bytes,483010990,opt,name=state,proto3" json:"state,omitempty"` +} + +func (x *Interfaces_Interface_HoldTime) Reset() { + *x = Interfaces_Interface_HoldTime{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_HoldTime) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_HoldTime) ProtoMessage() {} + +func (x *Interfaces_Interface_HoldTime) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_HoldTime.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_HoldTime) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 1} +} + +func (x *Interfaces_Interface_HoldTime) GetConfig() *Interfaces_Interface_HoldTime_Config { + if x != nil { + return x.Config + } + return nil +} + +func (x *Interfaces_Interface_HoldTime) GetState() *Interfaces_Interface_HoldTime_State { + if x != nil { + return x.State + } + return nil +} + +type Interfaces_Interface_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdminStatus Interfaces_Interface_State_AdminStatus `protobuf:"varint,474494763,opt,name=admin_status,json=adminStatus,proto3,enum=openconfig.openconfig_interfaces.Interfaces_Interface_State_AdminStatus" json:"admin_status,omitempty"` + Counters *Interfaces_Interface_State_Counters `protobuf:"bytes,83645964,opt,name=counters,proto3" json:"counters,omitempty"` + Description *ywrapper.StringValue `protobuf:"bytes,389435287,opt,name=description,proto3" json:"description,omitempty"` + Enabled *ywrapper.BoolValue `protobuf:"bytes,330927518,opt,name=enabled,proto3" json:"enabled,omitempty"` + Ifindex *ywrapper.UintValue `protobuf:"bytes,116108202,opt,name=ifindex,proto3" json:"ifindex,omitempty"` + LastChange *ywrapper.UintValue `protobuf:"bytes,127348880,opt,name=last_change,json=lastChange,proto3" json:"last_change,omitempty"` + Logical *ywrapper.BoolValue `protobuf:"bytes,440460216,opt,name=logical,proto3" json:"logical,omitempty"` + LoopbackMode *ywrapper.BoolValue `protobuf:"bytes,372935512,opt,name=loopback_mode,json=loopbackMode,proto3" json:"loopback_mode,omitempty"` + Mtu *ywrapper.UintValue `protobuf:"bytes,96390485,opt,name=mtu,proto3" json:"mtu,omitempty"` + Name *ywrapper.StringValue `protobuf:"bytes,503495278,opt,name=name,proto3" json:"name,omitempty"` + OperStatus Interfaces_Interface_State_OperStatus `protobuf:"varint,470394226,opt,name=oper_status,json=operStatus,proto3,enum=openconfig.openconfig_interfaces.Interfaces_Interface_State_OperStatus" json:"oper_status,omitempty"` + Type enums.IETFInterfacesInterfaceType `protobuf:"varint,358148579,opt,name=type,proto3,enum=openconfig.enums.IETFInterfacesInterfaceType" json:"type,omitempty"` +} + +func (x *Interfaces_Interface_State) Reset() { + *x = Interfaces_Interface_State{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_State) ProtoMessage() {} + +func (x *Interfaces_Interface_State) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_State.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_State) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 2} +} + +func (x *Interfaces_Interface_State) GetAdminStatus() Interfaces_Interface_State_AdminStatus { + if x != nil { + return x.AdminStatus + } + return Interfaces_Interface_State_ADMINSTATUS_UNSET +} + +func (x *Interfaces_Interface_State) GetCounters() *Interfaces_Interface_State_Counters { + if x != nil { + return x.Counters + } + return nil +} + +func (x *Interfaces_Interface_State) GetDescription() *ywrapper.StringValue { + if x != nil { + return x.Description + } + return nil +} + +func (x *Interfaces_Interface_State) GetEnabled() *ywrapper.BoolValue { + if x != nil { + return x.Enabled + } + return nil +} + +func (x *Interfaces_Interface_State) GetIfindex() *ywrapper.UintValue { + if x != nil { + return x.Ifindex + } + return nil +} + +func (x *Interfaces_Interface_State) GetLastChange() *ywrapper.UintValue { + if x != nil { + return x.LastChange + } + return nil +} + +func (x *Interfaces_Interface_State) GetLogical() *ywrapper.BoolValue { + if x != nil { + return x.Logical + } + return nil +} + +func (x *Interfaces_Interface_State) GetLoopbackMode() *ywrapper.BoolValue { + if x != nil { + return x.LoopbackMode + } + return nil +} + +func (x *Interfaces_Interface_State) GetMtu() *ywrapper.UintValue { + if x != nil { + return x.Mtu + } + return nil +} + +func (x *Interfaces_Interface_State) GetName() *ywrapper.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *Interfaces_Interface_State) GetOperStatus() Interfaces_Interface_State_OperStatus { + if x != nil { + return x.OperStatus + } + return Interfaces_Interface_State_OPERSTATUS_UNSET +} + +func (x *Interfaces_Interface_State) GetType() enums.IETFInterfacesInterfaceType { + if x != nil { + return x.Type + } + return enums.IETFInterfacesInterfaceType_IETFINTERFACESINTERFACETYPE_UNSET +} + +type Interfaces_Interface_Subinterfaces struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Subinterface []*Interfaces_Interface_Subinterfaces_SubinterfaceKey `protobuf:"bytes,464802819,rep,name=subinterface,proto3" json:"subinterface,omitempty"` +} + +func (x *Interfaces_Interface_Subinterfaces) Reset() { + *x = Interfaces_Interface_Subinterfaces{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_Subinterfaces) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_Subinterfaces) ProtoMessage() {} + +func (x *Interfaces_Interface_Subinterfaces) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_Subinterfaces.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_Subinterfaces) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 3} +} + +func (x *Interfaces_Interface_Subinterfaces) GetSubinterface() []*Interfaces_Interface_Subinterfaces_SubinterfaceKey { + if x != nil { + return x.Subinterface + } + return nil +} + +type Interfaces_Interface_HoldTime_Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Down *ywrapper.UintValue `protobuf:"bytes,171181656,opt,name=down,proto3" json:"down,omitempty"` + Up *ywrapper.UintValue `protobuf:"bytes,62026235,opt,name=up,proto3" json:"up,omitempty"` +} + +func (x *Interfaces_Interface_HoldTime_Config) Reset() { + *x = Interfaces_Interface_HoldTime_Config{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_HoldTime_Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_HoldTime_Config) ProtoMessage() {} + +func (x *Interfaces_Interface_HoldTime_Config) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_HoldTime_Config.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_HoldTime_Config) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 1, 0} +} + +func (x *Interfaces_Interface_HoldTime_Config) GetDown() *ywrapper.UintValue { + if x != nil { + return x.Down + } + return nil +} + +func (x *Interfaces_Interface_HoldTime_Config) GetUp() *ywrapper.UintValue { + if x != nil { + return x.Up + } + return nil +} + +type Interfaces_Interface_HoldTime_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Down *ywrapper.UintValue `protobuf:"bytes,167887721,opt,name=down,proto3" json:"down,omitempty"` + Up *ywrapper.UintValue `protobuf:"bytes,223847598,opt,name=up,proto3" json:"up,omitempty"` +} + +func (x *Interfaces_Interface_HoldTime_State) Reset() { + *x = Interfaces_Interface_HoldTime_State{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_HoldTime_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_HoldTime_State) ProtoMessage() {} + +func (x *Interfaces_Interface_HoldTime_State) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_HoldTime_State.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_HoldTime_State) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 1, 1} +} + +func (x *Interfaces_Interface_HoldTime_State) GetDown() *ywrapper.UintValue { + if x != nil { + return x.Down + } + return nil +} + +func (x *Interfaces_Interface_HoldTime_State) GetUp() *ywrapper.UintValue { + if x != nil { + return x.Up + } + return nil +} + +type Interfaces_Interface_State_Counters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CarrierTransitions *ywrapper.UintValue `protobuf:"bytes,270803130,opt,name=carrier_transitions,json=carrierTransitions,proto3" json:"carrier_transitions,omitempty"` + InBroadcastPkts *ywrapper.UintValue `protobuf:"bytes,280201989,opt,name=in_broadcast_pkts,json=inBroadcastPkts,proto3" json:"in_broadcast_pkts,omitempty"` + InDiscards *ywrapper.UintValue `protobuf:"bytes,11979514,opt,name=in_discards,json=inDiscards,proto3" json:"in_discards,omitempty"` + InErrors *ywrapper.UintValue `protobuf:"bytes,456697578,opt,name=in_errors,json=inErrors,proto3" json:"in_errors,omitempty"` + InFcsErrors *ywrapper.UintValue `protobuf:"bytes,501559027,opt,name=in_fcs_errors,json=inFcsErrors,proto3" json:"in_fcs_errors,omitempty"` + InMulticastPkts *ywrapper.UintValue `protobuf:"bytes,113269128,opt,name=in_multicast_pkts,json=inMulticastPkts,proto3" json:"in_multicast_pkts,omitempty"` + InOctets *ywrapper.UintValue `protobuf:"bytes,333138891,opt,name=in_octets,json=inOctets,proto3" json:"in_octets,omitempty"` + InPkts *ywrapper.UintValue `protobuf:"bytes,412843491,opt,name=in_pkts,json=inPkts,proto3" json:"in_pkts,omitempty"` + InUnicastPkts *ywrapper.UintValue `protobuf:"bytes,272792307,opt,name=in_unicast_pkts,json=inUnicastPkts,proto3" json:"in_unicast_pkts,omitempty"` + InUnknownProtos *ywrapper.UintValue `protobuf:"bytes,241475497,opt,name=in_unknown_protos,json=inUnknownProtos,proto3" json:"in_unknown_protos,omitempty"` + LastClear *ywrapper.UintValue `protobuf:"bytes,186014919,opt,name=last_clear,json=lastClear,proto3" json:"last_clear,omitempty"` + OutBroadcastPkts *ywrapper.UintValue `protobuf:"bytes,338589668,opt,name=out_broadcast_pkts,json=outBroadcastPkts,proto3" json:"out_broadcast_pkts,omitempty"` + OutDiscards *ywrapper.UintValue `protobuf:"bytes,254055111,opt,name=out_discards,json=outDiscards,proto3" json:"out_discards,omitempty"` + OutErrors *ywrapper.UintValue `protobuf:"bytes,471103047,opt,name=out_errors,json=outErrors,proto3" json:"out_errors,omitempty"` + OutMulticastPkts *ywrapper.UintValue `protobuf:"bytes,457840757,opt,name=out_multicast_pkts,json=outMulticastPkts,proto3" json:"out_multicast_pkts,omitempty"` + OutOctets *ywrapper.UintValue `protobuf:"bytes,201005514,opt,name=out_octets,json=outOctets,proto3" json:"out_octets,omitempty"` + OutPkts *ywrapper.UintValue `protobuf:"bytes,437582090,opt,name=out_pkts,json=outPkts,proto3" json:"out_pkts,omitempty"` + OutUnicastPkts *ywrapper.UintValue `protobuf:"bytes,36542246,opt,name=out_unicast_pkts,json=outUnicastPkts,proto3" json:"out_unicast_pkts,omitempty"` +} + +func (x *Interfaces_Interface_State_Counters) Reset() { + *x = Interfaces_Interface_State_Counters{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_State_Counters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_State_Counters) ProtoMessage() {} + +func (x *Interfaces_Interface_State_Counters) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_State_Counters.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_State_Counters) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 2, 0} +} + +func (x *Interfaces_Interface_State_Counters) GetCarrierTransitions() *ywrapper.UintValue { + if x != nil { + return x.CarrierTransitions + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetInBroadcastPkts() *ywrapper.UintValue { + if x != nil { + return x.InBroadcastPkts + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetInDiscards() *ywrapper.UintValue { + if x != nil { + return x.InDiscards + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetInErrors() *ywrapper.UintValue { + if x != nil { + return x.InErrors + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetInFcsErrors() *ywrapper.UintValue { + if x != nil { + return x.InFcsErrors + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetInMulticastPkts() *ywrapper.UintValue { + if x != nil { + return x.InMulticastPkts + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetInOctets() *ywrapper.UintValue { + if x != nil { + return x.InOctets + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetInPkts() *ywrapper.UintValue { + if x != nil { + return x.InPkts + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetInUnicastPkts() *ywrapper.UintValue { + if x != nil { + return x.InUnicastPkts + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetInUnknownProtos() *ywrapper.UintValue { + if x != nil { + return x.InUnknownProtos + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetLastClear() *ywrapper.UintValue { + if x != nil { + return x.LastClear + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetOutBroadcastPkts() *ywrapper.UintValue { + if x != nil { + return x.OutBroadcastPkts + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetOutDiscards() *ywrapper.UintValue { + if x != nil { + return x.OutDiscards + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetOutErrors() *ywrapper.UintValue { + if x != nil { + return x.OutErrors + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetOutMulticastPkts() *ywrapper.UintValue { + if x != nil { + return x.OutMulticastPkts + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetOutOctets() *ywrapper.UintValue { + if x != nil { + return x.OutOctets + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetOutPkts() *ywrapper.UintValue { + if x != nil { + return x.OutPkts + } + return nil +} + +func (x *Interfaces_Interface_State_Counters) GetOutUnicastPkts() *ywrapper.UintValue { + if x != nil { + return x.OutUnicastPkts + } + return nil +} + +type Interfaces_Interface_Subinterfaces_Subinterface struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Config *Interfaces_Interface_Subinterfaces_Subinterface_Config `protobuf:"bytes,175001476,opt,name=config,proto3" json:"config,omitempty"` + State *Interfaces_Interface_Subinterfaces_Subinterface_State `protobuf:"bytes,501974173,opt,name=state,proto3" json:"state,omitempty"` +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface) Reset() { + *x = Interfaces_Interface_Subinterfaces_Subinterface{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_Subinterfaces_Subinterface) ProtoMessage() {} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_Subinterfaces_Subinterface.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_Subinterfaces_Subinterface) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 3, 0} +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface) GetConfig() *Interfaces_Interface_Subinterfaces_Subinterface_Config { + if x != nil { + return x.Config + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface) GetState() *Interfaces_Interface_Subinterfaces_Subinterface_State { + if x != nil { + return x.State + } + return nil +} + +type Interfaces_Interface_Subinterfaces_SubinterfaceKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + Subinterface *Interfaces_Interface_Subinterfaces_Subinterface `protobuf:"bytes,2,opt,name=subinterface,proto3" json:"subinterface,omitempty"` +} + +func (x *Interfaces_Interface_Subinterfaces_SubinterfaceKey) Reset() { + *x = Interfaces_Interface_Subinterfaces_SubinterfaceKey{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_Subinterfaces_SubinterfaceKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_Subinterfaces_SubinterfaceKey) ProtoMessage() {} + +func (x *Interfaces_Interface_Subinterfaces_SubinterfaceKey) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_Subinterfaces_SubinterfaceKey.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_Subinterfaces_SubinterfaceKey) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 3, 1} +} + +func (x *Interfaces_Interface_Subinterfaces_SubinterfaceKey) GetIndex() uint64 { + if x != nil { + return x.Index + } + return 0 +} + +func (x *Interfaces_Interface_Subinterfaces_SubinterfaceKey) GetSubinterface() *Interfaces_Interface_Subinterfaces_Subinterface { + if x != nil { + return x.Subinterface + } + return nil +} + +type Interfaces_Interface_Subinterfaces_Subinterface_Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description *ywrapper.StringValue `protobuf:"bytes,280671199,opt,name=description,proto3" json:"description,omitempty"` + Enabled *ywrapper.BoolValue `protobuf:"bytes,297236390,opt,name=enabled,proto3" json:"enabled,omitempty"` + Index *ywrapper.UintValue `protobuf:"bytes,279269781,opt,name=index,proto3" json:"index,omitempty"` +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_Config) Reset() { + *x = Interfaces_Interface_Subinterfaces_Subinterface_Config{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_Subinterfaces_Subinterface_Config) ProtoMessage() {} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_Config) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_Subinterfaces_Subinterface_Config.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_Subinterfaces_Subinterface_Config) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 3, 0, 0} +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_Config) GetDescription() *ywrapper.StringValue { + if x != nil { + return x.Description + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_Config) GetEnabled() *ywrapper.BoolValue { + if x != nil { + return x.Enabled + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_Config) GetIndex() *ywrapper.UintValue { + if x != nil { + return x.Index + } + return nil +} + +type Interfaces_Interface_Subinterfaces_Subinterface_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AdminStatus Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus `protobuf:"varint,250658952,opt,name=admin_status,json=adminStatus,proto3,enum=openconfig.openconfig_interfaces.Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus" json:"admin_status,omitempty"` + Counters *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters `protobuf:"bytes,483442783,opt,name=counters,proto3" json:"counters,omitempty"` + Description *ywrapper.StringValue `protobuf:"bytes,49943526,opt,name=description,proto3" json:"description,omitempty"` + Enabled *ywrapper.BoolValue `protobuf:"bytes,468513843,opt,name=enabled,proto3" json:"enabled,omitempty"` + Ifindex *ywrapper.UintValue `protobuf:"bytes,511987815,opt,name=ifindex,proto3" json:"ifindex,omitempty"` + Index *ywrapper.UintValue `protobuf:"bytes,80745756,opt,name=index,proto3" json:"index,omitempty"` + LastChange *ywrapper.UintValue `protobuf:"bytes,29904521,opt,name=last_change,json=lastChange,proto3" json:"last_change,omitempty"` + Logical *ywrapper.BoolValue `protobuf:"bytes,294124401,opt,name=logical,proto3" json:"logical,omitempty"` + Name *ywrapper.StringValue `protobuf:"bytes,279346681,opt,name=name,proto3" json:"name,omitempty"` + OperStatus Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus `protobuf:"varint,401969247,opt,name=oper_status,json=operStatus,proto3,enum=openconfig.openconfig_interfaces.Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus" json:"oper_status,omitempty"` +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) Reset() { + *x = Interfaces_Interface_Subinterfaces_Subinterface_State{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_Subinterfaces_Subinterface_State) ProtoMessage() {} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_Subinterfaces_Subinterface_State.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_Subinterfaces_Subinterface_State) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 3, 0, 1} +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetAdminStatus() Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus { + if x != nil { + return x.AdminStatus + } + return Interfaces_Interface_Subinterfaces_Subinterface_State_ADMINSTATUS_UNSET +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetCounters() *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters { + if x != nil { + return x.Counters + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetDescription() *ywrapper.StringValue { + if x != nil { + return x.Description + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetEnabled() *ywrapper.BoolValue { + if x != nil { + return x.Enabled + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetIfindex() *ywrapper.UintValue { + if x != nil { + return x.Ifindex + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetIndex() *ywrapper.UintValue { + if x != nil { + return x.Index + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetLastChange() *ywrapper.UintValue { + if x != nil { + return x.LastChange + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetLogical() *ywrapper.BoolValue { + if x != nil { + return x.Logical + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetName() *ywrapper.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State) GetOperStatus() Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus { + if x != nil { + return x.OperStatus + } + return Interfaces_Interface_Subinterfaces_Subinterface_State_OPERSTATUS_UNSET +} + +type Interfaces_Interface_Subinterfaces_Subinterface_State_Counters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CarrierTransitions *ywrapper.UintValue `protobuf:"bytes,141120277,opt,name=carrier_transitions,json=carrierTransitions,proto3" json:"carrier_transitions,omitempty"` + InBroadcastPkts *ywrapper.UintValue `protobuf:"bytes,120244022,opt,name=in_broadcast_pkts,json=inBroadcastPkts,proto3" json:"in_broadcast_pkts,omitempty"` + InDiscards *ywrapper.UintValue `protobuf:"bytes,307490461,opt,name=in_discards,json=inDiscards,proto3" json:"in_discards,omitempty"` + InErrors *ywrapper.UintValue `protobuf:"bytes,319720873,opt,name=in_errors,json=inErrors,proto3" json:"in_errors,omitempty"` + InFcsErrors *ywrapper.UintValue `protobuf:"bytes,169858424,opt,name=in_fcs_errors,json=inFcsErrors,proto3" json:"in_fcs_errors,omitempty"` + InMulticastPkts *ywrapper.UintValue `protobuf:"bytes,320618859,opt,name=in_multicast_pkts,json=inMulticastPkts,proto3" json:"in_multicast_pkts,omitempty"` + InOctets *ywrapper.UintValue `protobuf:"bytes,530205868,opt,name=in_octets,json=inOctets,proto3" json:"in_octets,omitempty"` + InPkts *ywrapper.UintValue `protobuf:"bytes,441153352,opt,name=in_pkts,json=inPkts,proto3" json:"in_pkts,omitempty"` + InUnicastPkts *ywrapper.UintValue `protobuf:"bytes,177838880,opt,name=in_unicast_pkts,json=inUnicastPkts,proto3" json:"in_unicast_pkts,omitempty"` + InUnknownProtos *ywrapper.UintValue `protobuf:"bytes,146059814,opt,name=in_unknown_protos,json=inUnknownProtos,proto3" json:"in_unknown_protos,omitempty"` + LastClear *ywrapper.UintValue `protobuf:"bytes,518046966,opt,name=last_clear,json=lastClear,proto3" json:"last_clear,omitempty"` + OutBroadcastPkts *ywrapper.UintValue `protobuf:"bytes,501221245,opt,name=out_broadcast_pkts,json=outBroadcastPkts,proto3" json:"out_broadcast_pkts,omitempty"` + OutDiscards *ywrapper.UintValue `protobuf:"bytes,159539762,opt,name=out_discards,json=outDiscards,proto3" json:"out_discards,omitempty"` + OutErrors *ywrapper.UintValue `protobuf:"bytes,466636898,opt,name=out_errors,json=outErrors,proto3" json:"out_errors,omitempty"` + OutMulticastPkts *ywrapper.UintValue `protobuf:"bytes,326155776,opt,name=out_multicast_pkts,json=outMulticastPkts,proto3" json:"out_multicast_pkts,omitempty"` + OutOctets *ywrapper.UintValue `protobuf:"bytes,50579235,opt,name=out_octets,json=outOctets,proto3" json:"out_octets,omitempty"` + OutPkts *ywrapper.UintValue `protobuf:"bytes,29497115,opt,name=out_pkts,json=outPkts,proto3" json:"out_pkts,omitempty"` + OutUnicastPkts *ywrapper.UintValue `protobuf:"bytes,297910971,opt,name=out_unicast_pkts,json=outUnicastPkts,proto3" json:"out_unicast_pkts,omitempty"` +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) Reset() { + *x = Interfaces_Interface_Subinterfaces_Subinterface_State_Counters{} + if protoimpl.UnsafeEnabled { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) ProtoMessage() {} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) ProtoReflect() protoreflect.Message { + mi := &file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Interfaces_Interface_Subinterfaces_Subinterface_State_Counters.ProtoReflect.Descriptor instead. +func (*Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) Descriptor() ([]byte, []int) { + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP(), []int{0, 0, 3, 0, 1, 0} +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetCarrierTransitions() *ywrapper.UintValue { + if x != nil { + return x.CarrierTransitions + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetInBroadcastPkts() *ywrapper.UintValue { + if x != nil { + return x.InBroadcastPkts + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetInDiscards() *ywrapper.UintValue { + if x != nil { + return x.InDiscards + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetInErrors() *ywrapper.UintValue { + if x != nil { + return x.InErrors + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetInFcsErrors() *ywrapper.UintValue { + if x != nil { + return x.InFcsErrors + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetInMulticastPkts() *ywrapper.UintValue { + if x != nil { + return x.InMulticastPkts + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetInOctets() *ywrapper.UintValue { + if x != nil { + return x.InOctets + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetInPkts() *ywrapper.UintValue { + if x != nil { + return x.InPkts + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetInUnicastPkts() *ywrapper.UintValue { + if x != nil { + return x.InUnicastPkts + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetInUnknownProtos() *ywrapper.UintValue { + if x != nil { + return x.InUnknownProtos + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetLastClear() *ywrapper.UintValue { + if x != nil { + return x.LastClear + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetOutBroadcastPkts() *ywrapper.UintValue { + if x != nil { + return x.OutBroadcastPkts + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetOutDiscards() *ywrapper.UintValue { + if x != nil { + return x.OutDiscards + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetOutErrors() *ywrapper.UintValue { + if x != nil { + return x.OutErrors + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetOutMulticastPkts() *ywrapper.UintValue { + if x != nil { + return x.OutMulticastPkts + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetOutOctets() *ywrapper.UintValue { + if x != nil { + return x.OutOctets + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetOutPkts() *ywrapper.UintValue { + if x != nil { + return x.OutPkts + } + return nil +} + +func (x *Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) GetOutUnicastPkts() *ywrapper.UintValue { + if x != nil { + return x.OutUnicastPkts + } + return nil +} + +var File_openconfig_openconfig_interfaces_openconfig_interfaces_proto protoreflect.FileDescriptor + +var file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDesc = []byte{ + 0x0a, 0x3c, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x1a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2f, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, + 0x74, 0x2f, 0x79, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, + 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x5a, 0x0a, 0x0a, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x12, 0x75, 0x0a, 0x09, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0xfa, 0xa7, 0xba, 0xc9, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x42, 0x18, 0x82, 0x41, 0x15, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x1a, 0xd3, 0x58, 0x0a, 0x09, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x7a, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0xeb, 0xb4, 0xac, 0x9f, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x42, 0x1f, 0x82, 0x41, 0x1c, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x68, + 0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0xd4, 0xfd, 0xf1, 0x53, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x48, 0x6f, 0x6c, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x42, 0x22, 0x82, 0x41, 0x1f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x68, 0x6f, 0x6c, + 0x64, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x08, 0x68, 0x6f, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x76, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0xac, 0xc6, 0xe6, 0xb8, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x1e, 0x82, 0x41, 0x1b, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x96, 0x01, 0x0a, 0x0d, 0x73, 0x75, 0x62, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x18, 0x95, 0x9b, 0xa7, 0x9c, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x75, 0x62, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x42, 0x26, 0x82, 0x41, 0x23, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x1a, 0xc9, 0x04, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x68, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xb4, 0xb3, 0xc9, 0xc7, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2b, 0x82, 0x41, + 0x28, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x18, 0xed, 0xfe, 0xdf, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x27, 0x82, 0x41, 0x24, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x6a, 0x0a, 0x0d, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0xbb, 0xb4, 0xf1, 0x78, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x2d, 0x82, 0x41, 0x2a, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x52, + 0x0c, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x4e, 0x0a, + 0x03, 0x6d, 0x74, 0x75, 0x18, 0xa6, 0x87, 0xb2, 0xb3, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x23, 0x82, 0x41, 0x20, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6d, 0x74, 0x75, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x12, 0x52, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x9b, 0xf0, 0xd9, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x24, 0x82, 0x41, 0x21, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x6a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x9e, 0xbf, 0xf9, 0x44, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x49, 0x45, 0x54, 0x46, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x24, 0x82, 0x41, 0x21, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x9d, 0x05, + 0x0a, 0x08, 0x48, 0x6f, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0xd9, 0xb3, 0xf6, 0x96, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x46, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x48, 0x6f, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x29, 0x82, 0x41, 0x26, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x2f, 0x68, 0x6f, 0x6c, 0x64, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x89, 0x01, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0xae, 0xd3, 0xa8, 0xe6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x48, 0x6f, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x28, 0x82, 0x41, 0x25, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x68, 0x6f, 0x6c, 0x64, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x1a, 0xba, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x5a, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0xd8, 0x8c, 0xd0, 0x51, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, + 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2e, 0x82, 0x41, 0x2b, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x2f, 0x68, 0x6f, 0x6c, 0x64, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x54, 0x0a, + 0x02, 0x75, 0x70, 0x18, 0xfb, 0xe3, 0xc9, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x2c, 0x82, 0x41, 0x29, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x68, 0x6f, 0x6c, 0x64, + 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x75, 0x70, 0x52, + 0x02, 0x75, 0x70, 0x1a, 0xb7, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x59, 0x0a, + 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0xe9, 0x86, 0x87, 0x50, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x2d, 0x82, 0x41, 0x2a, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x68, 0x6f, + 0x6c, 0x64, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x6f, + 0x77, 0x6e, 0x52, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x53, 0x0a, 0x02, 0x75, 0x70, 0x18, 0xae, + 0xc9, 0xde, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2b, 0x82, 0x41, + 0x28, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x68, 0x6f, 0x6c, 0x64, 0x2d, 0x74, 0x69, 0x6d, 0x65, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x75, 0x70, 0x52, 0x02, 0x75, 0x70, 0x1a, 0x9b, 0x1e, + 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x0c, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xab, 0xee, 0xa0, 0xe2, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x48, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x2b, 0x82, 0x41, + 0x28, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x8d, 0x01, 0x0a, 0x08, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x8c, 0xac, 0xf1, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x73, 0x42, 0x27, 0x82, 0x41, 0x24, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x08, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x97, 0x9f, 0xd9, 0xb9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2a, 0x82, 0x41, 0x27, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x59, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x9e, 0x9b, 0xe6, 0x9d, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x26, 0x82, 0x41, 0x23, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x07, 0x69, 0x66, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0xaa, 0xd7, 0xae, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x26, 0x82, 0x41, 0x23, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x69, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x07, 0x69, 0x66, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x63, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x90, 0xe1, 0xdc, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x2a, 0x82, 0x41, 0x27, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x2f, 0x6c, 0x61, 0x73, 0x74, 0x2d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0a, 0x6c, + 0x61, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x07, 0x6c, 0x6f, 0x67, + 0x69, 0x63, 0x61, 0x6c, 0x18, 0xb8, 0xc7, 0x83, 0xd2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x26, 0x82, 0x41, 0x23, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x52, 0x07, 0x6c, 0x6f, 0x67, + 0x69, 0x63, 0x61, 0x6c, 0x12, 0x6a, 0x0a, 0x0d, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xd8, 0x96, 0xea, 0xb1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2c, 0x82, 0x41, 0x29, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x2d, 0x6d, 0x6f, + 0x64, 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x4c, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0xd5, 0x9a, 0xfb, 0x2d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x22, 0x82, 0x41, 0x1f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x74, 0x75, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x12, 0x52, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xee, 0xf4, 0x8a, 0xf0, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x23, 0x82, 0x41, 0x20, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0xf2, 0xca, 0xa6, 0xe0, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x47, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x2a, 0x82, 0x41, 0x27, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x6a, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0xe3, 0xd3, 0xe3, 0xaa, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x65, 0x6e, 0x75, + 0x6d, 0x73, 0x2e, 0x49, 0x45, 0x54, 0x46, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x23, + 0x82, 0x41, 0x20, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xbe, 0x10, 0x0a, 0x08, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x13, 0x63, 0x61, 0x72, 0x72, 0x69, + 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xba, + 0xc1, 0x90, 0x81, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x3b, 0x82, + 0x41, 0x38, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x63, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x2d, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x63, 0x61, 0x72, 0x72, + 0x69, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x7e, + 0x0a, 0x11, 0x69, 0x6e, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, + 0x6b, 0x74, 0x73, 0x18, 0x85, 0x96, 0xce, 0x85, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x62, + 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x0f, 0x69, + 0x6e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x6c, + 0x0a, 0x0b, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0xfa, 0x95, + 0xdb, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x33, 0x82, 0x41, 0x30, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, + 0x52, 0x0a, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, 0x12, 0x67, 0x0a, 0x09, + 0x69, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0xea, 0xcd, 0xe2, 0xd9, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x31, 0x82, 0x41, 0x2e, 0x2f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x52, 0x08, 0x69, 0x6e, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x72, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x66, 0x63, 0x73, 0x5f, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0xf3, 0xdd, 0x94, 0xef, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x35, 0x82, 0x41, 0x32, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, + 0x6e, 0x2d, 0x66, 0x63, 0x73, 0x2d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x52, 0x0b, 0x69, 0x6e, + 0x46, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x7d, 0x0a, 0x11, 0x69, 0x6e, 0x5f, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, 0x88, + 0xb3, 0x81, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x39, 0x82, 0x41, + 0x36, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x0f, 0x69, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x67, 0x0a, 0x09, 0x69, 0x6e, 0x5f, 0x6f, + 0x63, 0x74, 0x65, 0x74, 0x73, 0x18, 0xcb, 0x97, 0xed, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x31, 0x82, 0x41, 0x2e, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, + 0x2d, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x52, 0x08, 0x69, 0x6e, 0x4f, 0x63, 0x74, 0x65, 0x74, + 0x73, 0x12, 0x61, 0x0a, 0x07, 0x69, 0x6e, 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, 0xe3, 0xfb, 0xed, + 0xc4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2f, 0x82, 0x41, 0x2c, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, + 0x50, 0x6b, 0x74, 0x73, 0x12, 0x78, 0x0a, 0x0f, 0x69, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, 0xf3, 0xf5, 0x89, 0x82, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x37, 0x82, 0x41, 0x34, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x69, 0x6e, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, + 0x0d, 0x69, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x7d, + 0x0a, 0x11, 0x69, 0x6e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x73, 0x18, 0xa9, 0xbf, 0x92, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x75, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x52, 0x0f, 0x69, 0x6e, + 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x12, 0x69, 0x0a, + 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x18, 0xc7, 0xb9, 0xd9, 0x58, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x32, 0x82, 0x41, 0x2f, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x6c, 0x61, 0x73, 0x74, 0x2d, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x09, 0x6c, + 0x61, 0x73, 0x74, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x6f, 0x75, 0x74, + 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, + 0xe4, 0xef, 0xb9, 0xa1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x3a, + 0x82, 0x41, 0x37, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x62, 0x72, 0x6f, 0x61, + 0x64, 0x63, 0x61, 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x42, + 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x6f, 0x0a, 0x0c, + 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0xc7, 0xa5, 0x92, + 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x34, 0x82, 0x41, 0x31, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, + 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, 0x12, 0x6a, 0x0a, + 0x0a, 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0xc7, 0xec, 0xd1, 0xe0, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x32, 0x82, 0x41, 0x2f, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x52, 0x09, + 0x6f, 0x75, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x6f, 0x75, + 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6b, 0x74, 0x73, + 0x18, 0xf5, 0xb0, 0xa8, 0xda, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x3a, 0x82, 0x41, 0x37, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x10, 0x6f, 0x75, 0x74, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x69, 0x0a, + 0x0a, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x18, 0xca, 0xb3, 0xec, 0x5f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x32, 0x82, 0x41, 0x2f, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x52, 0x09, 0x6f, + 0x75, 0x74, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x12, 0x64, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x5f, + 0x70, 0x6b, 0x74, 0x73, 0x18, 0x8a, 0xf2, 0xd3, 0xd0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x30, 0x82, 0x41, 0x2d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, + 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x7a, + 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6b, + 0x74, 0x73, 0x18, 0xa6, 0xae, 0xb6, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x38, 0x82, 0x41, 0x35, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x75, 0x6e, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x55, + 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, + 0x4d, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, + 0x00, 0x12, 0x19, 0x0a, 0x0e, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x55, 0x50, 0x10, 0x01, 0x1a, 0x05, 0x82, 0x41, 0x02, 0x55, 0x50, 0x12, 0x1d, 0x0a, 0x10, + 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x57, 0x4e, + 0x10, 0x02, 0x1a, 0x07, 0x82, 0x41, 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x12, 0x23, 0x0a, 0x13, 0x41, + 0x44, 0x4d, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x49, + 0x4e, 0x47, 0x10, 0x03, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, + 0x22, 0xa8, 0x02, 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, + 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x0d, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x1a, 0x05, 0x82, 0x41, 0x02, 0x55, 0x50, 0x12, + 0x1c, 0x0a, 0x0f, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, + 0x57, 0x4e, 0x10, 0x03, 0x1a, 0x07, 0x82, 0x41, 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x12, 0x22, 0x0a, + 0x12, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x53, 0x54, + 0x49, 0x4e, 0x47, 0x10, 0x04, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, + 0x47, 0x12, 0x22, 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x12, 0x22, 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x52, 0x4d, 0x41, 0x4e, 0x54, 0x10, 0x06, 0x1a, 0x0a, 0x82, + 0x41, 0x07, 0x44, 0x4f, 0x52, 0x4d, 0x41, 0x4e, 0x54, 0x12, 0x2a, 0x0a, 0x16, 0x4f, 0x50, 0x45, + 0x52, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, + 0x45, 0x4e, 0x54, 0x10, 0x07, 0x1a, 0x0e, 0x82, 0x41, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, + 0x45, 0x53, 0x45, 0x4e, 0x54, 0x12, 0x34, 0x0a, 0x1b, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, + 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x08, 0x1a, 0x13, 0x82, 0x41, 0x10, 0x4c, 0x4f, 0x57, 0x45, 0x52, + 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x1a, 0xa8, 0x2c, 0x0a, 0x0d, + 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x12, 0xb1, 0x01, + 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x83, + 0xa8, 0xd1, 0xdd, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x2e, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, + 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x42, 0x33, + 0x82, 0x41, 0x30, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x1a, 0x86, 0x29, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x12, 0xaf, 0x01, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x84, 0x9f, + 0xb9, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x58, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, + 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x62, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x3a, 0x82, 0x41, 0x37, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0xac, 0x01, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x9d, + 0x89, 0xae, 0xef, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x57, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x2e, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, + 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x1a, 0xf6, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x83, + 0x01, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xdf, + 0xe7, 0xea, 0x85, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x46, 0x82, 0x41, 0x43, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x75, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0xa6, 0xef, 0xdd, 0x8d, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x42, + 0x82, 0x41, 0x3f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x6f, 0x0a, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x95, 0xa3, 0x95, 0x85, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x40, 0x82, 0x41, 0x3d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, + 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x9b, 0x23, 0x0a, + 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0xd1, 0x01, 0x0a, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x88, 0x81, 0xc3, 0x77, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x63, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x46, 0x82, 0x41, 0x43, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, + 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0b, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0xc4, 0x01, 0x0a, 0x08, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0xdf, 0x80, 0xc3, 0xe6, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x60, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x73, 0x42, 0x42, 0x82, 0x41, 0x3f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, + 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x81, 0x01, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0xe6, 0xa7, 0xe8, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x45, 0x82, 0x41, 0x42, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x74, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0xb3, 0xe8, 0xb3, 0xdf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x41, 0x82, 0x41, 0x3e, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x74, 0x0a, 0x07, 0x69, + 0x66, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0xe7, 0xa0, 0x91, 0xf4, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x41, 0x82, 0x41, 0x3e, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, + 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x69, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x07, 0x69, 0x66, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x6d, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x9c, 0xaa, 0xc0, 0x26, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x3f, 0x82, 0x41, 0x3c, 0x2f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x7e, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, + 0x89, 0x9d, 0xa1, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x45, 0x82, + 0x41, 0x42, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x61, 0x73, 0x74, 0x2d, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x74, 0x0a, 0x07, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x18, 0xf1, 0xf6, 0x9f, 0x8c, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x41, 0x82, 0x41, 0x3e, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x52, 0x07, 0x6c, + 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x12, 0x6d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xf9, + 0xfb, 0x99, 0x85, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x3e, 0x82, 0x41, 0x3b, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xce, 0x01, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xdf, 0xa0, 0xd6, 0xbf, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x62, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x42, 0x45, 0x82, 0x41, 0x42, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, + 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6f, + 0x70, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0xb0, 0x14, 0x0a, 0x08, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x13, 0x63, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x95, 0xa6, 0xa5, 0x43, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x56, 0x82, 0x41, 0x53, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x63, 0x61, + 0x72, 0x72, 0x69, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x12, 0x63, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x11, 0x69, 0x6e, 0x5f, 0x62, 0x72, 0x6f, + 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, 0xb6, 0x8e, 0xab, 0x39, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x54, 0x82, 0x41, 0x51, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, + 0x2d, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, + 0x0f, 0x69, 0x6e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, + 0x12, 0x88, 0x01, 0x0a, 0x0b, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, + 0x18, 0x9d, 0xdd, 0xcf, 0x92, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x4e, 0x82, 0x41, 0x4b, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, 0x52, + 0x0a, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x09, + 0x69, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0xa9, 0x9b, 0xba, 0x98, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4c, 0x82, 0x41, 0x49, 0x2f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x52, 0x08, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x12, 0x8c, 0x01, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x66, 0x63, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x18, 0xf8, 0xaa, 0xff, 0x50, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x50, 0x82, 0x41, 0x4d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x66, 0x63, 0x73, 0x2d, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x52, 0x0b, 0x69, 0x6e, 0x46, 0x63, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, + 0x99, 0x01, 0x0a, 0x11, 0x69, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, + 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, 0xeb, 0x82, 0xf1, 0x98, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x54, 0x82, 0x41, 0x51, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, + 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x0f, 0x69, 0x6e, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x09, + 0x69, 0x6e, 0x5f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x18, 0xac, 0x99, 0xe9, 0xfc, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4c, 0x82, 0x41, 0x49, 0x2f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, + 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x52, 0x08, 0x69, 0x6e, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x73, + 0x12, 0x7c, 0x0a, 0x07, 0x69, 0x6e, 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, 0xc8, 0xee, 0xad, 0xd2, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4a, 0x82, 0x41, 0x47, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, + 0x6e, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x92, + 0x01, 0x0a, 0x0f, 0x69, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6b, + 0x74, 0x73, 0x18, 0xa0, 0xb6, 0xe6, 0x54, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x52, 0x82, 0x41, 0x4f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2d, + 0x70, 0x6b, 0x74, 0x73, 0x52, 0x0d, 0x69, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, + 0x6b, 0x74, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x11, 0x69, 0x6e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x18, 0xa6, 0xe4, 0xd2, 0x45, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, + 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x54, 0x82, 0x41, 0x51, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x2d, 0x75, + 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x52, 0x0f, 0x69, + 0x6e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x12, 0x85, + 0x01, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x18, 0xf6, 0x89, + 0x83, 0xf7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4d, 0x82, 0x41, + 0x4a, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x6c, 0x61, 0x73, 0x74, 0x2d, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x52, 0x09, 0x6c, 0x61, 0x73, + 0x74, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x12, 0x9c, 0x01, 0x0a, 0x12, 0x6f, 0x75, 0x74, 0x5f, 0x62, + 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, 0xfd, 0x8e, + 0x80, 0xef, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x55, 0x82, 0x41, + 0x52, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x2d, 0x70, + 0x6b, 0x74, 0x73, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, + 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x69, + 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0xb2, 0xc4, 0x89, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4f, 0x82, 0x41, 0x4c, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, + 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x64, 0x69, 0x73, + 0x63, 0x61, 0x72, 0x64, 0x73, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, + 0x64, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x18, 0xe2, 0xa0, 0xc1, 0xde, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x4d, 0x82, 0x41, 0x4a, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x52, + 0x09, 0x6f, 0x75, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x12, 0x6f, + 0x75, 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6b, 0x74, + 0x73, 0x18, 0x80, 0xfc, 0xc2, 0x9b, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x55, 0x82, 0x41, 0x52, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x0a, 0x6f, 0x75, + 0x74, 0x5f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x18, 0xa3, 0x8e, 0x8f, 0x18, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4d, 0x82, 0x41, 0x4a, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, + 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x6f, + 0x63, 0x74, 0x65, 0x74, 0x73, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x73, + 0x12, 0x7e, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, 0x9b, 0xae, 0x88, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4b, 0x82, 0x41, 0x48, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, + 0x75, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x50, 0x6b, 0x74, 0x73, + 0x12, 0x96, 0x01, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, + 0x5f, 0x70, 0x6b, 0x74, 0x73, 0x18, 0xbb, 0x85, 0x87, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x53, 0x82, 0x41, 0x50, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, + 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x2d, 0x75, 0x6e, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x2d, 0x70, 0x6b, 0x74, 0x73, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x55, 0x6e, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x4d, + 0x49, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, + 0x12, 0x19, 0x0a, 0x0e, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x55, 0x50, 0x10, 0x01, 0x1a, 0x05, 0x82, 0x41, 0x02, 0x55, 0x50, 0x12, 0x1d, 0x0a, 0x10, 0x41, + 0x44, 0x4d, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, + 0x02, 0x1a, 0x07, 0x82, 0x41, 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x12, 0x23, 0x0a, 0x13, 0x41, 0x44, + 0x4d, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, + 0x47, 0x10, 0x03, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x22, + 0xa8, 0x02, 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, + 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, + 0x45, 0x54, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x0d, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x1a, 0x05, 0x82, 0x41, 0x02, 0x55, 0x50, 0x12, 0x1c, + 0x0a, 0x0f, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x57, + 0x4e, 0x10, 0x03, 0x1a, 0x07, 0x82, 0x41, 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x12, 0x22, 0x0a, 0x12, + 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x49, + 0x4e, 0x47, 0x10, 0x04, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, + 0x12, 0x22, 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x12, 0x22, 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x52, 0x4d, 0x41, 0x4e, 0x54, 0x10, 0x06, 0x1a, 0x0a, 0x82, 0x41, + 0x07, 0x44, 0x4f, 0x52, 0x4d, 0x41, 0x4e, 0x54, 0x12, 0x2a, 0x0a, 0x16, 0x4f, 0x50, 0x45, 0x52, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, + 0x4e, 0x54, 0x10, 0x07, 0x1a, 0x0e, 0x82, 0x41, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, + 0x53, 0x45, 0x4e, 0x54, 0x12, 0x34, 0x0a, 0x1b, 0x4f, 0x50, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x44, + 0x4f, 0x57, 0x4e, 0x10, 0x08, 0x1a, 0x13, 0x82, 0x41, 0x10, 0x4c, 0x4f, 0x57, 0x45, 0x52, 0x5f, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x1a, 0xd9, 0x01, 0x0a, 0x0f, 0x53, + 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x4f, + 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x39, 0x82, + 0x41, 0x36, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x75, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x53, 0x75, + 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x1a, 0x97, 0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x82, 0x41, 0x1a, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x09, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, + 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescOnce sync.Once + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescData = file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDesc +) + +func file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescGZIP() []byte { + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescOnce.Do(func() { + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescData = protoimpl.X.CompressGZIP(file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescData) + }) + return file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDescData +} + +var file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_goTypes = []interface{}{ + (Interfaces_Interface_State_AdminStatus)(0), // 0: openconfig.openconfig_interfaces.Interfaces.Interface.State.AdminStatus + (Interfaces_Interface_State_OperStatus)(0), // 1: openconfig.openconfig_interfaces.Interfaces.Interface.State.OperStatus + (Interfaces_Interface_Subinterfaces_Subinterface_State_AdminStatus)(0), // 2: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.AdminStatus + (Interfaces_Interface_Subinterfaces_Subinterface_State_OperStatus)(0), // 3: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.OperStatus + (*Interfaces)(nil), // 4: openconfig.openconfig_interfaces.Interfaces + (*Interfaces_Interface)(nil), // 5: openconfig.openconfig_interfaces.Interfaces.Interface + (*Interfaces_InterfaceKey)(nil), // 6: openconfig.openconfig_interfaces.Interfaces.InterfaceKey + (*Interfaces_Interface_Config)(nil), // 7: openconfig.openconfig_interfaces.Interfaces.Interface.Config + (*Interfaces_Interface_HoldTime)(nil), // 8: openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime + (*Interfaces_Interface_State)(nil), // 9: openconfig.openconfig_interfaces.Interfaces.Interface.State + (*Interfaces_Interface_Subinterfaces)(nil), // 10: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces + (*Interfaces_Interface_HoldTime_Config)(nil), // 11: openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.Config + (*Interfaces_Interface_HoldTime_State)(nil), // 12: openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.State + (*Interfaces_Interface_State_Counters)(nil), // 13: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters + (*Interfaces_Interface_Subinterfaces_Subinterface)(nil), // 14: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface + (*Interfaces_Interface_Subinterfaces_SubinterfaceKey)(nil), // 15: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.SubinterfaceKey + (*Interfaces_Interface_Subinterfaces_Subinterface_Config)(nil), // 16: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.Config + (*Interfaces_Interface_Subinterfaces_Subinterface_State)(nil), // 17: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State + (*Interfaces_Interface_Subinterfaces_Subinterface_State_Counters)(nil), // 18: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters + (*ywrapper.StringValue)(nil), // 19: ywrapper.StringValue + (*ywrapper.BoolValue)(nil), // 20: ywrapper.BoolValue + (*ywrapper.UintValue)(nil), // 21: ywrapper.UintValue + (enums.IETFInterfacesInterfaceType)(0), // 22: openconfig.enums.IETFInterfacesInterfaceType +} +var file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_depIdxs = []int32{ + 6, // 0: openconfig.openconfig_interfaces.Interfaces.interface:type_name -> openconfig.openconfig_interfaces.Interfaces.InterfaceKey + 7, // 1: openconfig.openconfig_interfaces.Interfaces.Interface.config:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.Config + 8, // 2: openconfig.openconfig_interfaces.Interfaces.Interface.hold_time:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime + 9, // 3: openconfig.openconfig_interfaces.Interfaces.Interface.state:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.State + 10, // 4: openconfig.openconfig_interfaces.Interfaces.Interface.subinterfaces:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces + 5, // 5: openconfig.openconfig_interfaces.Interfaces.InterfaceKey.interface:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface + 19, // 6: openconfig.openconfig_interfaces.Interfaces.Interface.Config.description:type_name -> ywrapper.StringValue + 20, // 7: openconfig.openconfig_interfaces.Interfaces.Interface.Config.enabled:type_name -> ywrapper.BoolValue + 20, // 8: openconfig.openconfig_interfaces.Interfaces.Interface.Config.loopback_mode:type_name -> ywrapper.BoolValue + 21, // 9: openconfig.openconfig_interfaces.Interfaces.Interface.Config.mtu:type_name -> ywrapper.UintValue + 19, // 10: openconfig.openconfig_interfaces.Interfaces.Interface.Config.name:type_name -> ywrapper.StringValue + 22, // 11: openconfig.openconfig_interfaces.Interfaces.Interface.Config.type:type_name -> openconfig.enums.IETFInterfacesInterfaceType + 11, // 12: openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.config:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.Config + 12, // 13: openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.state:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.State + 0, // 14: openconfig.openconfig_interfaces.Interfaces.Interface.State.admin_status:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.State.AdminStatus + 13, // 15: openconfig.openconfig_interfaces.Interfaces.Interface.State.counters:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters + 19, // 16: openconfig.openconfig_interfaces.Interfaces.Interface.State.description:type_name -> ywrapper.StringValue + 20, // 17: openconfig.openconfig_interfaces.Interfaces.Interface.State.enabled:type_name -> ywrapper.BoolValue + 21, // 18: openconfig.openconfig_interfaces.Interfaces.Interface.State.ifindex:type_name -> ywrapper.UintValue + 21, // 19: openconfig.openconfig_interfaces.Interfaces.Interface.State.last_change:type_name -> ywrapper.UintValue + 20, // 20: openconfig.openconfig_interfaces.Interfaces.Interface.State.logical:type_name -> ywrapper.BoolValue + 20, // 21: openconfig.openconfig_interfaces.Interfaces.Interface.State.loopback_mode:type_name -> ywrapper.BoolValue + 21, // 22: openconfig.openconfig_interfaces.Interfaces.Interface.State.mtu:type_name -> ywrapper.UintValue + 19, // 23: openconfig.openconfig_interfaces.Interfaces.Interface.State.name:type_name -> ywrapper.StringValue + 1, // 24: openconfig.openconfig_interfaces.Interfaces.Interface.State.oper_status:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.State.OperStatus + 22, // 25: openconfig.openconfig_interfaces.Interfaces.Interface.State.type:type_name -> openconfig.enums.IETFInterfacesInterfaceType + 15, // 26: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.subinterface:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.SubinterfaceKey + 21, // 27: openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.Config.down:type_name -> ywrapper.UintValue + 21, // 28: openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.Config.up:type_name -> ywrapper.UintValue + 21, // 29: openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.State.down:type_name -> ywrapper.UintValue + 21, // 30: openconfig.openconfig_interfaces.Interfaces.Interface.HoldTime.State.up:type_name -> ywrapper.UintValue + 21, // 31: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.carrier_transitions:type_name -> ywrapper.UintValue + 21, // 32: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.in_broadcast_pkts:type_name -> ywrapper.UintValue + 21, // 33: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.in_discards:type_name -> ywrapper.UintValue + 21, // 34: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.in_errors:type_name -> ywrapper.UintValue + 21, // 35: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.in_fcs_errors:type_name -> ywrapper.UintValue + 21, // 36: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.in_multicast_pkts:type_name -> ywrapper.UintValue + 21, // 37: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.in_octets:type_name -> ywrapper.UintValue + 21, // 38: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.in_pkts:type_name -> ywrapper.UintValue + 21, // 39: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.in_unicast_pkts:type_name -> ywrapper.UintValue + 21, // 40: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.in_unknown_protos:type_name -> ywrapper.UintValue + 21, // 41: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.last_clear:type_name -> ywrapper.UintValue + 21, // 42: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.out_broadcast_pkts:type_name -> ywrapper.UintValue + 21, // 43: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.out_discards:type_name -> ywrapper.UintValue + 21, // 44: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.out_errors:type_name -> ywrapper.UintValue + 21, // 45: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.out_multicast_pkts:type_name -> ywrapper.UintValue + 21, // 46: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.out_octets:type_name -> ywrapper.UintValue + 21, // 47: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.out_pkts:type_name -> ywrapper.UintValue + 21, // 48: openconfig.openconfig_interfaces.Interfaces.Interface.State.Counters.out_unicast_pkts:type_name -> ywrapper.UintValue + 16, // 49: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.config:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.Config + 17, // 50: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.state:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State + 14, // 51: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.SubinterfaceKey.subinterface:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface + 19, // 52: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.Config.description:type_name -> ywrapper.StringValue + 20, // 53: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.Config.enabled:type_name -> ywrapper.BoolValue + 21, // 54: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.Config.index:type_name -> ywrapper.UintValue + 2, // 55: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.admin_status:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.AdminStatus + 18, // 56: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.counters:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters + 19, // 57: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.description:type_name -> ywrapper.StringValue + 20, // 58: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.enabled:type_name -> ywrapper.BoolValue + 21, // 59: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.ifindex:type_name -> ywrapper.UintValue + 21, // 60: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.index:type_name -> ywrapper.UintValue + 21, // 61: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.last_change:type_name -> ywrapper.UintValue + 20, // 62: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.logical:type_name -> ywrapper.BoolValue + 19, // 63: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.name:type_name -> ywrapper.StringValue + 3, // 64: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.oper_status:type_name -> openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.OperStatus + 21, // 65: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.carrier_transitions:type_name -> ywrapper.UintValue + 21, // 66: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.in_broadcast_pkts:type_name -> ywrapper.UintValue + 21, // 67: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.in_discards:type_name -> ywrapper.UintValue + 21, // 68: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.in_errors:type_name -> ywrapper.UintValue + 21, // 69: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.in_fcs_errors:type_name -> ywrapper.UintValue + 21, // 70: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.in_multicast_pkts:type_name -> ywrapper.UintValue + 21, // 71: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.in_octets:type_name -> ywrapper.UintValue + 21, // 72: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.in_pkts:type_name -> ywrapper.UintValue + 21, // 73: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.in_unicast_pkts:type_name -> ywrapper.UintValue + 21, // 74: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.in_unknown_protos:type_name -> ywrapper.UintValue + 21, // 75: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.last_clear:type_name -> ywrapper.UintValue + 21, // 76: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.out_broadcast_pkts:type_name -> ywrapper.UintValue + 21, // 77: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.out_discards:type_name -> ywrapper.UintValue + 21, // 78: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.out_errors:type_name -> ywrapper.UintValue + 21, // 79: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.out_multicast_pkts:type_name -> ywrapper.UintValue + 21, // 80: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.out_octets:type_name -> ywrapper.UintValue + 21, // 81: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.out_pkts:type_name -> ywrapper.UintValue + 21, // 82: openconfig.openconfig_interfaces.Interfaces.Interface.Subinterfaces.Subinterface.State.Counters.out_unicast_pkts:type_name -> ywrapper.UintValue + 83, // [83:83] is the sub-list for method output_type + 83, // [83:83] is the sub-list for method input_type + 83, // [83:83] is the sub-list for extension type_name + 83, // [83:83] is the sub-list for extension extendee + 0, // [0:83] is the sub-list for field type_name +} + +func init() { file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_init() } +func file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_init() { + if File_openconfig_openconfig_interfaces_openconfig_interfaces_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_InterfaceKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_HoldTime); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_State); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_Subinterfaces); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_HoldTime_Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_HoldTime_State); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_State_Counters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_Subinterfaces_Subinterface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_Subinterfaces_SubinterfaceKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_Subinterfaces_Subinterface_Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_Subinterfaces_Subinterface_State); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Interfaces_Interface_Subinterfaces_Subinterface_State_Counters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDesc, + NumEnums: 4, + NumMessages: 15, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_goTypes, + DependencyIndexes: file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_depIdxs, + EnumInfos: file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_enumTypes, + MessageInfos: file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_msgTypes, + }.Build() + File_openconfig_openconfig_interfaces_openconfig_interfaces_proto = out.File + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_rawDesc = nil + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_goTypes = nil + file_openconfig_openconfig_interfaces_openconfig_interfaces_proto_depIdxs = nil +} diff --git a/api/proto/openconfig/openconfig_interfaces/openconfig_interfaces.proto b/api/proto/openconfig/openconfig_interfaces/openconfig_interfaces.proto new file mode 100644 index 000000000..999b09b45 --- /dev/null +++ b/api/proto/openconfig/openconfig_interfaces/openconfig_interfaces.proto @@ -0,0 +1,162 @@ +// openconfig.openconfig_interfaces is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - ../yang-models/models/openconfig/release/models/interfaces/openconfig-interfaces.yang +// Include paths: +// - ../yang-models/models/... +syntax = "proto3"; + +package openconfig.openconfig_interfaces; + +import "github.com/openconfig/ygot/proto/ywrapper/ywrapper.proto"; +import "github.com/openconfig/ygot/proto/yext/yext.proto"; +import "openconfig/enums/enums.proto"; + +message Interfaces { + message Interface { + message Config { + ywrapper.StringValue description = 418535860 [(yext.schemapath) = "/interfaces/interface/config/description"]; + ywrapper.BoolValue enabled = 37224301 [(yext.schemapath) = "/interfaces/interface/config/enabled"]; + ywrapper.BoolValue loopback_mode = 253516347 [(yext.schemapath) = "/interfaces/interface/config/loopback-mode"]; + ywrapper.UintValue mtu = 376210342 [(yext.schemapath) = "/interfaces/interface/config/mtu"]; + ywrapper.StringValue name = 51804187 [(yext.schemapath) = "/interfaces/interface/config/name"]; + openconfig.enums.IETFInterfacesInterfaceType type = 144596894 [(yext.schemapath) = "/interfaces/interface/config/type"]; + } + message HoldTime { + message Config { + ywrapper.UintValue down = 171181656 [(yext.schemapath) = "/interfaces/interface/hold-time/config/down"]; + ywrapper.UintValue up = 62026235 [(yext.schemapath) = "/interfaces/interface/hold-time/config/up"]; + } + message State { + ywrapper.UintValue down = 167887721 [(yext.schemapath) = "/interfaces/interface/hold-time/state/down"]; + ywrapper.UintValue up = 223847598 [(yext.schemapath) = "/interfaces/interface/hold-time/state/up"]; + } + Config config = 316512729 [(yext.schemapath) = "/interfaces/interface/hold-time/config"]; + State state = 483010990 [(yext.schemapath) = "/interfaces/interface/hold-time/state"]; + } + message State { + message Counters { + ywrapper.UintValue carrier_transitions = 270803130 [(yext.schemapath) = "/interfaces/interface/state/counters/carrier-transitions"]; + ywrapper.UintValue in_broadcast_pkts = 280201989 [(yext.schemapath) = "/interfaces/interface/state/counters/in-broadcast-pkts"]; + ywrapper.UintValue in_discards = 11979514 [(yext.schemapath) = "/interfaces/interface/state/counters/in-discards"]; + ywrapper.UintValue in_errors = 456697578 [(yext.schemapath) = "/interfaces/interface/state/counters/in-errors"]; + ywrapper.UintValue in_fcs_errors = 501559027 [(yext.schemapath) = "/interfaces/interface/state/counters/in-fcs-errors"]; + ywrapper.UintValue in_multicast_pkts = 113269128 [(yext.schemapath) = "/interfaces/interface/state/counters/in-multicast-pkts"]; + ywrapper.UintValue in_octets = 333138891 [(yext.schemapath) = "/interfaces/interface/state/counters/in-octets"]; + ywrapper.UintValue in_pkts = 412843491 [(yext.schemapath) = "/interfaces/interface/state/counters/in-pkts"]; + ywrapper.UintValue in_unicast_pkts = 272792307 [(yext.schemapath) = "/interfaces/interface/state/counters/in-unicast-pkts"]; + ywrapper.UintValue in_unknown_protos = 241475497 [(yext.schemapath) = "/interfaces/interface/state/counters/in-unknown-protos"]; + ywrapper.UintValue last_clear = 186014919 [(yext.schemapath) = "/interfaces/interface/state/counters/last-clear"]; + ywrapper.UintValue out_broadcast_pkts = 338589668 [(yext.schemapath) = "/interfaces/interface/state/counters/out-broadcast-pkts"]; + ywrapper.UintValue out_discards = 254055111 [(yext.schemapath) = "/interfaces/interface/state/counters/out-discards"]; + ywrapper.UintValue out_errors = 471103047 [(yext.schemapath) = "/interfaces/interface/state/counters/out-errors"]; + ywrapper.UintValue out_multicast_pkts = 457840757 [(yext.schemapath) = "/interfaces/interface/state/counters/out-multicast-pkts"]; + ywrapper.UintValue out_octets = 201005514 [(yext.schemapath) = "/interfaces/interface/state/counters/out-octets"]; + ywrapper.UintValue out_pkts = 437582090 [(yext.schemapath) = "/interfaces/interface/state/counters/out-pkts"]; + ywrapper.UintValue out_unicast_pkts = 36542246 [(yext.schemapath) = "/interfaces/interface/state/counters/out-unicast-pkts"]; + } + enum AdminStatus { + ADMINSTATUS_UNSET = 0; + ADMINSTATUS_UP = 1 [(yext.yang_name) = "UP"]; + ADMINSTATUS_DOWN = 2 [(yext.yang_name) = "DOWN"]; + ADMINSTATUS_TESTING = 3 [(yext.yang_name) = "TESTING"]; + } + enum OperStatus { + OPERSTATUS_UNSET = 0; + OPERSTATUS_UP = 2 [(yext.yang_name) = "UP"]; + OPERSTATUS_DOWN = 3 [(yext.yang_name) = "DOWN"]; + OPERSTATUS_TESTING = 4 [(yext.yang_name) = "TESTING"]; + OPERSTATUS_UNKNOWN = 5 [(yext.yang_name) = "UNKNOWN"]; + OPERSTATUS_DORMANT = 6 [(yext.yang_name) = "DORMANT"]; + OPERSTATUS_NOT_PRESENT = 7 [(yext.yang_name) = "NOT_PRESENT"]; + OPERSTATUS_LOWER_LAYER_DOWN = 8 [(yext.yang_name) = "LOWER_LAYER_DOWN"]; + } + AdminStatus admin_status = 474494763 [(yext.schemapath) = "/interfaces/interface/state/admin-status"]; + Counters counters = 83645964 [(yext.schemapath) = "/interfaces/interface/state/counters"]; + ywrapper.StringValue description = 389435287 [(yext.schemapath) = "/interfaces/interface/state/description"]; + ywrapper.BoolValue enabled = 330927518 [(yext.schemapath) = "/interfaces/interface/state/enabled"]; + ywrapper.UintValue ifindex = 116108202 [(yext.schemapath) = "/interfaces/interface/state/ifindex"]; + ywrapper.UintValue last_change = 127348880 [(yext.schemapath) = "/interfaces/interface/state/last-change"]; + ywrapper.BoolValue logical = 440460216 [(yext.schemapath) = "/interfaces/interface/state/logical"]; + ywrapper.BoolValue loopback_mode = 372935512 [(yext.schemapath) = "/interfaces/interface/state/loopback-mode"]; + ywrapper.UintValue mtu = 96390485 [(yext.schemapath) = "/interfaces/interface/state/mtu"]; + ywrapper.StringValue name = 503495278 [(yext.schemapath) = "/interfaces/interface/state/name"]; + OperStatus oper_status = 470394226 [(yext.schemapath) = "/interfaces/interface/state/oper-status"]; + openconfig.enums.IETFInterfacesInterfaceType type = 358148579 [(yext.schemapath) = "/interfaces/interface/state/type"]; + } + message Subinterfaces { + message Subinterface { + message Config { + ywrapper.StringValue description = 280671199 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/config/description"]; + ywrapper.BoolValue enabled = 297236390 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/config/enabled"]; + ywrapper.UintValue index = 279269781 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/config/index"]; + } + message State { + message Counters { + ywrapper.UintValue carrier_transitions = 141120277 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/carrier-transitions"]; + ywrapper.UintValue in_broadcast_pkts = 120244022 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-broadcast-pkts"]; + ywrapper.UintValue in_discards = 307490461 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-discards"]; + ywrapper.UintValue in_errors = 319720873 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-errors"]; + ywrapper.UintValue in_fcs_errors = 169858424 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-fcs-errors"]; + ywrapper.UintValue in_multicast_pkts = 320618859 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-multicast-pkts"]; + ywrapper.UintValue in_octets = 530205868 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-octets"]; + ywrapper.UintValue in_pkts = 441153352 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-pkts"]; + ywrapper.UintValue in_unicast_pkts = 177838880 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-unicast-pkts"]; + ywrapper.UintValue in_unknown_protos = 146059814 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-unknown-protos"]; + ywrapper.UintValue last_clear = 518046966 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/last-clear"]; + ywrapper.UintValue out_broadcast_pkts = 501221245 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-broadcast-pkts"]; + ywrapper.UintValue out_discards = 159539762 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-discards"]; + ywrapper.UintValue out_errors = 466636898 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-errors"]; + ywrapper.UintValue out_multicast_pkts = 326155776 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-multicast-pkts"]; + ywrapper.UintValue out_octets = 50579235 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-octets"]; + ywrapper.UintValue out_pkts = 29497115 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-pkts"]; + ywrapper.UintValue out_unicast_pkts = 297910971 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-unicast-pkts"]; + } + enum AdminStatus { + ADMINSTATUS_UNSET = 0; + ADMINSTATUS_UP = 1 [(yext.yang_name) = "UP"]; + ADMINSTATUS_DOWN = 2 [(yext.yang_name) = "DOWN"]; + ADMINSTATUS_TESTING = 3 [(yext.yang_name) = "TESTING"]; + } + enum OperStatus { + OPERSTATUS_UNSET = 0; + OPERSTATUS_UP = 2 [(yext.yang_name) = "UP"]; + OPERSTATUS_DOWN = 3 [(yext.yang_name) = "DOWN"]; + OPERSTATUS_TESTING = 4 [(yext.yang_name) = "TESTING"]; + OPERSTATUS_UNKNOWN = 5 [(yext.yang_name) = "UNKNOWN"]; + OPERSTATUS_DORMANT = 6 [(yext.yang_name) = "DORMANT"]; + OPERSTATUS_NOT_PRESENT = 7 [(yext.yang_name) = "NOT_PRESENT"]; + OPERSTATUS_LOWER_LAYER_DOWN = 8 [(yext.yang_name) = "LOWER_LAYER_DOWN"]; + } + AdminStatus admin_status = 250658952 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/admin-status"]; + Counters counters = 483442783 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters"]; + ywrapper.StringValue description = 49943526 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/description"]; + ywrapper.BoolValue enabled = 468513843 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/enabled"]; + ywrapper.UintValue ifindex = 511987815 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/ifindex"]; + ywrapper.UintValue index = 80745756 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/index"]; + ywrapper.UintValue last_change = 29904521 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/last-change"]; + ywrapper.BoolValue logical = 294124401 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/logical"]; + ywrapper.StringValue name = 279346681 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/name"]; + OperStatus oper_status = 401969247 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/oper-status"]; + } + Config config = 175001476 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/config"]; + State state = 501974173 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state"]; + } + message SubinterfaceKey { + uint64 index = 1 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/index"]; + Subinterface subinterface = 2; + } + repeated SubinterfaceKey subinterface = 464802819 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface"]; + } + Config config = 334174827 [(yext.schemapath) = "/interfaces/interface/config"]; + HoldTime hold_time = 175931092 [(yext.schemapath) = "/interfaces/interface/hold-time"]; + State state = 387556140 [(yext.schemapath) = "/interfaces/interface/state"]; + Subinterfaces subinterfaces = 327798165 [(yext.schemapath) = "/interfaces/interface/subinterfaces"]; + } + message InterfaceKey { + string name = 1 [(yext.schemapath) = "/interfaces/interface/name"]; + Interface interface = 2; + } + repeated InterfaceKey interface = 422482938 [(yext.schemapath) = "/interfaces/interface"]; +} diff --git a/cmd/gnmi/gnmi.go b/cmd/gnmi/gnmi.go new file mode 100644 index 000000000..de741f1ae --- /dev/null +++ b/cmd/gnmi/gnmi.go @@ -0,0 +1,35 @@ +package main + +import ( + "code.fbi.h-da.de/cocsn/gosdn/nucleus" + "context" + "fmt" + "github.com/google/uuid" + log "github.com/sirupsen/logrus" +) + +func main() { + sbi := &nucleus.OpenConfig{} + device := nucleus.Device{ + SBI: sbi, + Config: nucleus.DeviceConfig{ + Uuid: uuid.New(), + Address: "141.100.70.170:6030", + Username: "admin", + Password: "arista", + }, + } + pnd := nucleus.NewPND("openconfig", sbi) + if err := pnd.AddDevice(device); err != nil { + log.Fatal(err) + } + + ctx := context.WithValue(context.Background(), "config", device.Config) + + g := nucleus.Gnmi{} + resp, err := g.Capabilities(ctx) + if err != nil { + log.Fatal(err) + } + fmt.Printf("%v", resp) +} diff --git a/cmd/gosdn-cli/main.go b/cmd/gosdn-cli/main.go index 96d31c4ac..5ed64517e 100644 --- a/cmd/gosdn-cli/main.go +++ b/cmd/gosdn-cli/main.go @@ -141,7 +141,7 @@ func goSDNTestDB(conn *grpc.ClientConn) { } // TAPIGetEdge triggers the GetEdge function of the Ciena -// flavoured TAPI client +// flavoured TAPI ciena func TAPIGetEdge(conn *grpc.ClientConn) { c := pb.NewGrpcCliClient(conn) @@ -161,7 +161,7 @@ func TAPIGetEdge(conn *grpc.ClientConn) { } // TAPIGetEdgeNode triggers the GetEdgeNode function of the Ciena -// flavoured TAPI client +// flavoured TAPI ciena func TAPIGetEdgeNode(conn *grpc.ClientConn) { c := pb.NewGrpcCliClient(conn) @@ -180,7 +180,7 @@ func TAPIGetEdgeNode(conn *grpc.ClientConn) { } // TAPIGetLink triggers the GetLink function of the Ciena -// flavoured TAPI client +// flavoured TAPI ciena func TAPIGetLink(conn *grpc.ClientConn) { c := pb.NewGrpcCliClient(conn) diff --git a/cmd/gosdn-tview/grpc/commands.go b/cmd/gosdn-tview/grpc/commands.go index 10ba4652b..b1d4bc6da 100644 --- a/cmd/gosdn-tview/grpc/commands.go +++ b/cmd/gosdn-tview/grpc/commands.go @@ -169,7 +169,7 @@ func goSDNTestDB(conn *grpc.ClientConn) string { } // TAPIGetEdge triggers the GetEdge function of the Ciena -// flavoured TAPI client +// flavoured TAPI ciena func TAPIGetEdge(conn *grpc.ClientConn) string { c := pb.NewGrpcCliClient(conn) @@ -186,7 +186,7 @@ func TAPIGetEdge(conn *grpc.ClientConn) string { } // TAPIGetEdgeNode triggers the GetEdgeNode function of the Ciena -// flavoured TAPI client +// flavoured TAPI ciena func TAPIGetEdgeNode(conn *grpc.ClientConn) string { c := pb.NewGrpcCliClient(conn) @@ -202,7 +202,7 @@ func TAPIGetEdgeNode(conn *grpc.ClientConn) string { } // TAPIGetLink triggers the GetLink function of the Ciena -// flavoured TAPI client +// flavoured TAPI ciena func TAPIGetLink(conn *grpc.ClientConn) string { c := pb.NewGrpcCliClient(conn) diff --git a/database/client.go b/database/client.go index 5910b12c7..f711318f9 100644 --- a/database/client.go +++ b/database/client.go @@ -18,7 +18,7 @@ type PND struct { interfaces []string } -//NewDatabaseClient creates a database client +//NewDatabaseClient creates a database ciena func NewDatabaseClient(uri, username, password string, encrypted bool) Database { driver := createDriver(uri, username, password, encrypted) diff --git a/go.mod b/go.mod index ac3f07b9f..dddaf078a 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( code.fbi.h-da.de/cocsn/swagger/apis v0.0.0-20200924152423-61030cab7b88 code.fbi.h-da.de/cocsn/yang-modules/generated/tapi v0.0.0-20201116134549-765aa1790752 github.com/BurntSushi/toml v0.3.1 + github.com/aristanetworks/goarista v0.0.0-20201120222254-94a892eb0c6a github.com/gdamore/tcell/v2 v2.0.1-0.20201017141208-acf90d56d591 github.com/go-openapi/runtime v0.19.22 github.com/go-openapi/strfmt v0.19.5 @@ -13,11 +14,12 @@ require ( github.com/google/uuid v1.1.2 github.com/neo4j/neo4j-go-driver v1.8.3 github.com/onsi/ginkgo v1.13.0 // indirect + github.com/openconfig/gnmi v0.0.0-20200617225440-d2b4e6a45802 github.com/openconfig/ygot v0.8.7 github.com/rivo/tview v0.0.0-20201018122409-d551c850a743 github.com/sirupsen/logrus v1.4.2 github.com/tidwall/gjson v1.6.3 golang.org/x/net v0.0.0-20200904194848-62affa334b73 // indirect google.golang.org/grpc v1.29.1 - google.golang.org/protobuf v1.23.0 + google.golang.org/protobuf v1.25.0 ) diff --git a/go.sum b/go.sum index d39444351..05d0beaa0 100644 --- a/go.sum +++ b/go.sum @@ -10,37 +10,61 @@ github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tN github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/sarama v1.26.1/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/aristanetworks/fsnotify v1.4.2 h1:it2ydpY6k0aXB7qjb4vGhOYOL6YDC/sr8vhqwokFQwQ= +github.com/aristanetworks/fsnotify v1.4.2/go.mod h1:D/rtu7LpjYM8tRJphJ0hUBYpjai8SfX+aSNsWDTq/Ks= +github.com/aristanetworks/glog v0.0.0-20191112221043-67e8567f59f3 h1:Bmjk+DjIi3tTAU0wxGaFbfjGUqlxxSXARq9A96Kgoos= +github.com/aristanetworks/glog v0.0.0-20191112221043-67e8567f59f3/go.mod h1:KASm+qXFKs/xjSoWn30NrWBBvdTTQq+UjkhjEJHfSFA= +github.com/aristanetworks/goarista v0.0.0-20201120222254-94a892eb0c6a h1:R7ghEBfKIqu/SDpGHS9Nj1fWPxkvxh6Lv4Wq6eS95G4= +github.com/aristanetworks/goarista v0.0.0-20201120222254-94a892eb0c6a/go.mod h1:Q4lsGfepQE823ePrSNr2CjCz1oeeMECJ6k1yBVujrZg= +github.com/aristanetworks/splunk-hec-go v0.3.3/go.mod h1:1VHO9r17b0K7WmOlLb9nTk/2YanvOEnLMUgsFrxBROc= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/garyburd/redigo v1.6.0/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell/v2 v2.0.1-0.20201017141208-acf90d56d591 h1:0WWUDZ1oxq7NxVyGo8M3KI5jbkiwNAdZFFzAdC68up4= github.com/gdamore/tcell/v2 v2.0.1-0.20201017141208-acf90d56d591/go.mod h1:vSVL/GV5mCSlPC6thFP5kfOFdM9MGZcalipmpTxTgQA= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -53,7 +77,6 @@ github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQH github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= github.com/go-openapi/errors v0.19.3/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/errors v0.19.6 h1:xZMThgv5SQ7SMbWtKFkCf9bBdvR2iEyw9k3zGZONuys= github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.19.7 h1:Lcq+o0mSwCLKACMxZhreVHigB9ebghJ/lrmeaqASbjo= github.com/go-openapi/errors v0.19.7/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= @@ -106,7 +129,6 @@ github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfT github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo= -github.com/go-openapi/validate v0.19.10 h1:tG3SZ5DC5KF4cyt7nqLVcQXGj5A7mpaYkAcNPlDK+Yk= github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbNMAuKvKB+IaGx8= github.com/go-openapi/validate v0.19.11 h1:8lCr0b9lNWKjVjW/hSZZvltUy+bULl7vbnCTsOzlhPo= github.com/go-openapi/validate v0.19.11/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4= @@ -136,11 +158,13 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= @@ -156,31 +180,40 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1 h1:/exdXoGamhu5ONeUJH0deniYLWYvQwW66yvlfiiKTu0= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/protobuf v3.11.4+incompatible/go.mod h1:lUQ9D1ePzbH2PrIS7ob/bjm9HXyH5WHB0Akwh7URreM= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.1/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/reedsolomon v1.9.3/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ/pcNv7fu+8Un4= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= @@ -197,46 +230,64 @@ github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kN github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.2 h1:mRS76wmkOn3KkKAyXDu42V+6ebnXWIztFSYGN7GeoRg= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/neo4j/neo4j-go-driver v1.8.3 h1:yfuo9YBAlezdIiogu92GwEir/81RD81dNwS5mY/wAIk= github.com/neo4j/neo4j-go-driver v1.8.3/go.mod h1:ncO5VaFWh0Nrt+4KT4mOZboaczBZcLuHrG+/sUeP8gI= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0 h1:Iw5WCbBcaAAd0fpRb1c9r5YCylv4XDoCSigm1zLevwU= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0 h1:M76yO2HkZASFjXL0HSoZJ1AYEmQxNJmY41Jx1zNUq1Y= github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0 h1:R1uwffexN6Pr340GtYRIdZmAiN4J+iw6WG4wog1DUXg= github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/openconfig/gnmi v0.0.0-20190823184014-89b2bf29312c/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= github.com/openconfig/gnmi v0.0.0-20200414194230-1597cc0f2600/go.mod h1:M/EcuapNQgvzxo1DDXHK4tx3QpYM/uG4l591v33jG2A= -github.com/openconfig/gnmi v0.0.0-20200508230933-d19cebf5e7be h1:VEK8utxoyZu/hkpjLxvuBmK5yW3NmBo/v/Wu5VQAJVs= github.com/openconfig/gnmi v0.0.0-20200508230933-d19cebf5e7be/go.mod h1:M/EcuapNQgvzxo1DDXHK4tx3QpYM/uG4l591v33jG2A= +github.com/openconfig/gnmi v0.0.0-20200617225440-d2b4e6a45802 h1:WXFwJlWOJINlwlyAZuNo4GdYZS6qPX36+rRUncLmN8Q= +github.com/openconfig/gnmi v0.0.0-20200617225440-d2b4e6a45802/go.mod h1:M/EcuapNQgvzxo1DDXHK4tx3QpYM/uG4l591v33jG2A= github.com/openconfig/goyang v0.0.0-20200115183954-d0a48929f0ea/go.mod h1:dhXaV0JgHJzdrHi2l+w0fZrwArtXL7jEFoiqLEdmkvU= github.com/openconfig/goyang v0.0.0-20200616001533-c0659aea65dd/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= github.com/openconfig/goyang v0.0.0-20200917201611-633eccb6fa97 h1:TaCuNSX/fiTuky8ouzC+JaCJN+OSOpjtYlLrn/uXxxE= github.com/openconfig/goyang v0.0.0-20200917201611-633eccb6fa97/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= +github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696/go.mod h1:ym2A+zigScwkSEb/cVQB0/ZMpU3rqiH6X7WRRsxgOGw= github.com/openconfig/ygot v0.6.0/go.mod h1:o30svNf7O0xK+R35tlx95odkDmZWS9JyWWQSmIhqwAs= github.com/openconfig/ygot v0.8.7 h1:BKErV6vM15YGM1+XHDuLAQ938dYahzSgwlt9BIGFrdY= github.com/openconfig/ygot v0.8.7/go.mod h1:AqXe0HNEITTcmcYkr+yzDMY8ofitImUdfZV4IgRsJWU= github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= +github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.0.10/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/tview v0.0.0-20201018122409-d551c850a743 h1:9BBjVJTRxuYBeCAv9DFH2hSzY0ujLx5sxMg5D3K/Xeg= github.com/rivo/tview v0.0.0-20201018122409-d551c850a743/go.mod h1:t7mcA3nlK9dxD1DMoz/DQRMWFMkGBUj6rJBM5VNfLFA= github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY= @@ -244,14 +295,15 @@ github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -259,19 +311,23 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= +github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b/go.mod h1:5XA7W9S6mni3h5uvOC75dA3m9CCCaS83lltmc0ukdi4= github.com/tidwall/gjson v1.6.3 h1:aHoiiem0dr7GHkW001T1SMTJ7X5PvyekH5WX0whWGnI= github.com/tidwall/gjson v1.6.3/go.mod h1:BaHyNc5bjzYkPqgLq7mdVzeiRtULKULXLgZFKsxEHI0= github.com/tidwall/match v1.0.1 h1:PnKP62LPNxHKTwvHHZZzdOAOCtsJTjo6dZLCwpKm5xc= github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= -github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.0.2 h1:Z7S3cePv9Jwm1KwS0513MRaoUe3S01WPbLNV40pwWZU= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tjfoc/gmsm v1.3.0/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xtaci/kcp-go v5.4.20+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE= +github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= @@ -284,39 +340,50 @@ golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaE golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200602114024-627f9648deb9 h1:pNX+40auqi2JqRfOP1akLGtYcn15TUbkhwuCO3foqqM= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA= golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -329,17 +396,19 @@ golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7 h1:XtNJkfEjb4zR3q20BBBcYUykVOEMgZeIUOpBPfNYgxg= golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -353,17 +422,18 @@ golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774 h1:CQVOmarCBFzTx0kbOU0ru54Cvot8SdSrNYjZPhQl+gk= golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20200221224223-e1da425f72fd/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200519141106-08726f379972 h1:6ydLqG65DIMNJf6p97WudGsmd1w3Ickm/LiZnBrREPI= google.golang.org/genproto v0.0.0-20200519141106-08726f379972/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -377,26 +447,34 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= +gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= +gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= +gopkg.in/jcmturner/gokrb5.v7 v7.5.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= +gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= +gopkg.in/redis.v4 v4.2.4/go.mod h1:8KREHdypkCEojGKQcjMqAODMICIVwZAONWq8RowTITA= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/gosdn.png b/gosdn.png new file mode 100644 index 0000000000000000000000000000000000000000..b16c83696fe11f6b983da0bf923457ecf59add8d GIT binary patch literal 135420 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ξ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ν3 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 Dv=KRR literal 0 HcmV?d00001 diff --git a/nucleus/cli-handling.go b/nucleus/cli-handling.go index 5bc95e055..ec668cae1 100644 --- a/nucleus/cli-handling.go +++ b/nucleus/cli-handling.go @@ -8,13 +8,13 @@ package nucleus import ( "context" + "github.com/google/uuid" "io" "net" "os" "sync" pb "code.fbi.h-da.de/cocsn/gosdn/api/proto" - "code.fbi.h-da.de/cocsn/gosdn/sbi/restconf/client/ciena" log "github.com/sirupsen/logrus" "google.golang.org/grpc" "google.golang.org/grpc/health" @@ -34,6 +34,7 @@ type server struct { pb.UnimplementedGrpcCliServer core *Core logConnections []*logConnection + devices map[uuid.UUID]Device } var srv *server @@ -52,7 +53,7 @@ func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloRe return &pb.HelloReply{Message: "Hello " + in.GetName(), GoSDNInfo: "goSDN in version: DEVELOP"}, nil } -//GetLog creates a continuous stream between client and server to send goSDN logs +//GetLog creates a continuous stream between ciena and server to send goSDN logs func (s *server) CreateLogStream(req *emptypb.Empty, stream pb.GrpcCli_CreateLogStreamServer) error { conn := &logConnection{ stream: stream, @@ -135,27 +136,18 @@ func getCLIGoing(core *Core) { // SBI specific calls, by now TAPI only func (s *server) TAPIGetEdge(ctx context.Context, in *pb.TAPIRequest) (*pb.TAPIReply, error) { log.Info("Received: ", in.GetName()) - if err := s.core.devices["ciena-mcp"].(*ciena.MCPClient).GetNodes(); err != nil { - log.Error(err) - return &pb.TAPIReply{Message: "TAPI error"}, nil - } + // TODO: Implement return &pb.TAPIReply{Message: "Done"}, nil } func (s *server) TAPIGetEdgeNode(ctx context.Context, in *pb.TAPIRequest) (*pb.TAPIReply, error) { log.Info("Received: ", in.GetName()) - if err := s.core.devices["ciena-mcp"].(*ciena.MCPClient).GetNodeEdgePoints(); err != nil { - log.Error(err) - return &pb.TAPIReply{Message: "TAPI error"}, nil - } + // TODO: Implement return &pb.TAPIReply{Message: "Done"}, nil } func (s *server) TAPIGetLink(ctx context.Context, in *pb.TAPIRequest) (*pb.TAPIReply, error) { log.Info("Received: ", in.GetName()) - if err := s.core.devices["ciena-mcp"].(*ciena.MCPClient).GetLinks(); err != nil { - log.Error(err) - return &pb.TAPIReply{Message: "TAPI error"}, nil - } + // TODO: Implement return &pb.TAPIReply{Message: "Done"}, nil } diff --git a/nucleus/interfaces/clientConfig.go b/nucleus/clientConfig.go similarity index 91% rename from nucleus/interfaces/clientConfig.go rename to nucleus/clientConfig.go index d29a14c3c..0dc63e1c5 100644 --- a/nucleus/interfaces/clientConfig.go +++ b/nucleus/clientConfig.go @@ -1,6 +1,6 @@ package nucleus -// ClientConfig contains SBI client +// ClientConfig contains SBI ciena // configuration parameters type ClientConfig struct { Identifier string `toml:"identifier"` diff --git a/nucleus/controller.go b/nucleus/controller.go index 444c5d4c4..f861bd284 100644 --- a/nucleus/controller.go +++ b/nucleus/controller.go @@ -2,7 +2,6 @@ package nucleus import ( "code.fbi.h-da.de/cocsn/gosdn/database" - nucleus "code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces" "github.com/BurntSushi/toml" "github.com/google/uuid" log "github.com/sirupsen/logrus" @@ -20,15 +19,14 @@ type controllerConfig struct { // Core is the representation of the controllers core type Core struct { - devices map[string]Device - southboundInterfaces map[string]nucleus.SouthboundInterface - prinipalNetworkDomains map[uuid.UUID]nucleus.PrincipalNetworkDomain + southboundInterfaces map[string]SouthboundInterface + prinipalNetworkDomains map[uuid.UUID]PrincipalNetworkDomain database database.Database config controllerConfig IsRunning chan bool } -//Init does start-up housekeeping like reading controller and client config files +//Init does start-up housekeeping like reading controller config files func (c *Core) Init(socket, configFileController, configFileClient string, IsRunningChannel chan bool) { if err := c.readControllerConfig(configFileController); err != nil { log.Fatal(err) diff --git a/nucleus/device.go b/nucleus/device.go index be672a18f..8e7f875f8 100644 --- a/nucleus/device.go +++ b/nucleus/device.go @@ -1,20 +1,20 @@ package nucleus import ( - nucleus "code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces" "github.com/google/uuid" "github.com/openconfig/ygot/ygot" ) type Device struct { - device ygot.GoStruct - SBI nucleus.SouthboundInterface - Config DeviceConfig + device ygot.GoStruct + SBI SouthboundInterface + Config DeviceConfig + Transport Transport } type DeviceConfig struct { - Identifier uuid.UUID - Endpoint string - Username string - Password string + Uuid uuid.UUID + Address string + Username string + Password string } diff --git a/nucleus/gnmi_transport.go b/nucleus/gnmi_transport.go new file mode 100644 index 000000000..af127917f --- /dev/null +++ b/nucleus/gnmi_transport.go @@ -0,0 +1,85 @@ +package nucleus + +import ( + "context" + "github.com/aristanetworks/goarista/gnmi" + "github.com/google/uuid" + "github.com/openconfig/gnmi/proto/gnmi_ext" + + gpb "github.com/openconfig/gnmi/proto/gnmi" +) + +type Gnmi uuid.UUID + +func (g *Gnmi) SetConfig(interface{}) error { + return nil +} + +func (g *Gnmi) GetConfig() interface{} { + return nil +} + +// Capabilities calls GNMI capabilities +func (g *Gnmi) Capabilities(ctx context.Context) (interface{}, error) { + cfg := &gnmi.Config{} + cfg.Addr = ctx.Value("config").(DeviceConfig).Address + cfg.Username = ctx.Value("config").(DeviceConfig).Username + cfg.Password = ctx.Value("config").(DeviceConfig).Password + client, err := gnmi.Dial(cfg) + if err != nil { + return nil, err + } + resp, err := client.Capabilities(ctx, &gpb.CapabilityRequest{}) + if err != nil { + return nil, err + } + return resp, nil +} + +// Get calls GNMI get +func (g *Gnmi) Get(ctx context.Context, cfg *gnmi.Config, paths [][]string, origin string) (interface{}, error) { + req, err := gnmi.NewGetRequest(paths, origin) + if err != nil { + return nil, err + } + return GetWithRequest(ctx, cfg, req) +} + +// GetWithRequest takes a fully formed GetRequest, performs the Get, +// and displays any response. +func GetWithRequest(ctx context.Context, cfg *gnmi.Config, req *gpb.GetRequest) (interface{}, error) { + client, err := gnmi.Dial(cfg) + if err != nil { + return nil, err + } + resp, err := client.Get(ctx, req) + if err != nil { + return nil, err + } + return resp, nil +} + +// Set calls GNMI set +func (g *Gnmi) Set(ctx context.Context, cfg *gnmi.Config, setOps []*gnmi.Operation, + exts ...*gnmi_ext.Extension) error { + client, err := gnmi.Dial(cfg) + if err != nil { + return err + } + return gnmi.Set(ctx, client, setOps, exts...) +} + +// Subscribe calls GNMI subscribe +func (g *Gnmi) Subscribe(ctx context.Context, cfg *gnmi.Config, subscribeOptions *gnmi.SubscribeOptions, + respChan chan<- *gpb.SubscribeResponse) error { + client, err := gnmi.Dial(cfg) + if err != nil { + return err + } + return gnmi.SubscribeErr(ctx, client, subscribeOptions, respChan) +} + +// Close calls GNMI close +func (g *Gnmi) Close() error { + return nil +} diff --git a/nucleus/interfaces/interfaces.go b/nucleus/interfaces/interfaces.go deleted file mode 100644 index a36ec03ab..000000000 --- a/nucleus/interfaces/interfaces.go +++ /dev/null @@ -1,21 +0,0 @@ -package nucleus - -import ( - "code.fbi.h-da.de/cocsn/gosdn/nucleus" - "github.com/google/uuid" -) - -// PrincipalNetworkDomain provides an -// interface for PND implementations -type PrincipalNetworkDomain interface { - Destroy() error - AddSbi() error - RemoveSbi() error - AddDevice(nucleus.Device) error - RemoveDevice(uuid uuid.UUID) error -} - -// SouthboundInterface provides an -// interface for SBI implementations -type SouthboundInterface interface { -} diff --git a/nucleus/nucleus-core.go b/nucleus/nucleus-core.go index e19626280..767873049 100644 --- a/nucleus/nucleus-core.go +++ b/nucleus/nucleus-core.go @@ -2,7 +2,6 @@ package nucleus import ( "code.fbi.h-da.de/cocsn/gosdn/database" - "code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces" log "github.com/sirupsen/logrus" "time" ) @@ -14,7 +13,6 @@ func StartAndRun(socket, filename string, IsRunningChannel chan bool) { // Init the Core core := Core{ - devices: make(map[string]nucleus.Client), database: database.Database{}, } core.Init(socket, filename, "", IsRunningChannel) diff --git a/nucleus/principalNetworkDomain.go b/nucleus/principalNetworkDomain.go index 2eb43ec70..fd54a00ab 100644 --- a/nucleus/principalNetworkDomain.go +++ b/nucleus/principalNetworkDomain.go @@ -1,23 +1,34 @@ package nucleus import ( - "code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces" "github.com/google/uuid" ) +// PrincipalNetworkDomain provides an +// interface for PND implementations +type PrincipalNetworkDomain interface { + Destroy() error + AddSbi() error + RemoveSbi() error + AddDevice(Device) error + RemoveDevice(uuid uuid.UUID) error +} + type pndImplementation struct { - name string - sbiContainer map[string]*nucleus.SouthboundInterface - devices map[uuid.UUID]Device + name string + sbi map[string]SouthboundInterface + devices map[uuid.UUID]Device } //NewPND creates a Principle Network Domain -func NewPND(name string, sbi *nucleus.SouthboundInterface) nucleus.PrincipalNetworkDomain { - sbic := make(map[string]*nucleus.SouthboundInterface) +func NewPND(name string, sbi SouthboundInterface) PrincipalNetworkDomain { + sbic := make(map[string]SouthboundInterface) sbic["default"] = sbi + devices := make(map[uuid.UUID]Device) return &pndImplementation{ - name: name, - sbiContainer: sbic, + name: name, + sbi: sbic, + devices: devices, } } @@ -35,11 +46,11 @@ func (pnd *pndImplementation) RemoveSbi() error { } func (pnd *pndImplementation) AddDevice(device Device) error { - return addDevice(device) + return pnd.addDevice(device) } func (pnd *pndImplementation) RemoveDevice(uuid uuid.UUID) error { - return removeDevice(uuid) + return pnd.removeDevice(uuid) } // Actual implementation, bind to struct if @@ -56,10 +67,12 @@ func removeSbi() error { return nil } -func addDevice(device Device) error { +func (pnd *pndImplementation) addDevice(device Device) error { + pnd.devices[device.Config.Uuid] = device return nil } -func removeDevice(uuid uuid.UUID) error { +func (pnd *pndImplementation) removeDevice(uuid uuid.UUID) error { + delete(pnd.devices, uuid) return nil } diff --git a/nucleus/restconf_transport.go b/nucleus/restconf_transport.go new file mode 100644 index 000000000..452bc6d99 --- /dev/null +++ b/nucleus/restconf_transport.go @@ -0,0 +1,18 @@ +package nucleus + +import "context" + +type Restconf struct { +} + +func (rc *Restconf) SetConfig(interface{}) error { + return nil +} + +func (rc *Restconf) GetConfig() interface{} { + return nil +} + +func (rc *Restconf) Subscribe(ctx context.Context, params ...string) error { + return nil +} diff --git a/nucleus/sbi/openConfig.go b/nucleus/sbi/openConfig.go deleted file mode 100644 index 4c46aa4d1..000000000 --- a/nucleus/sbi/openConfig.go +++ /dev/null @@ -1,51 +0,0 @@ -package sbi - -import "code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces" - -type OpenConfig struct { - name string - clientContainer []Client -} - -//NewSouthboundInterface creates a Southbound Interface -func NewSouthboundInterface(name string, clients ...nucleus.Client) nucleus.SouthboundInterface { - return &OpenConfig{ - name: name, - clientContainer: clients, - } -} - -// Interface satisfaction -func (sbi *OpenConfig) AddClient() error { - return addClient() -} - -func (sbi *OpenConfig) RemoveClient() error { - return removeClient() -} - -func (sbi *OpenConfig) CollectHeartbeats() error { - return collectHeartbeats() -} - -func (sbi *OpenConfig) ListClients() map[int]nucleus.Client { - return listClients() -} - -// Actual implementation, bind to struct if -// neccessary -func addClient() error { - return nil -} - -func removeClient() error { - return nil -} - -func collectHeartbeats() error { - return nil -} - -func listClients() map[int]nucleus.Client { - return nil -} diff --git a/nucleus/southbound.go b/nucleus/southbound.go new file mode 100644 index 000000000..e8b298154 --- /dev/null +++ b/nucleus/southbound.go @@ -0,0 +1,37 @@ +package nucleus + +// SouthboundInterface provides an +// interface for SBI implementations +type SouthboundInterface interface { + GetSBIString() string +} + +type Tapi struct { +} + +func (t *Tapi) Get(interface{}) (interface{}, error) { + return nil, nil +} +func (t *Tapi) Set(interface{}) error { + return nil +} +func (t *Tapi) Subscribe(interface{}) (interface{}, error) { + return nil, nil +} + +type OpenConfig struct { +} + +func (oc *OpenConfig) GetSBIString() string { + return "openconfig" +} + +func (oc *OpenConfig) Get(interface{}) (interface{}, error) { + return nil, nil +} +func (oc *OpenConfig) Set(interface{}) error { + return nil +} +func (oc *OpenConfig) Subscribe(interface{}) (interface{}, error) { + return nil, nil +} diff --git a/sbi/restconf/util/unmarshal.go b/nucleus/transport.go similarity index 52% rename from sbi/restconf/util/unmarshal.go rename to nucleus/transport.go index 9c85a8cb4..809ddd603 100644 --- a/sbi/restconf/util/unmarshal.go +++ b/nucleus/transport.go @@ -1,10 +1,20 @@ -package util +package nucleus import ( "bytes" + "context" "io" ) +// Transport provides an interface for +// Transport implementations like RESTCONF +// or gnmi +type Transport interface { + Get(ctx context.Context, params ...string) (interface{}, error) + Set(ctx context.Context, params ...string) (interface{}, error) + Subscribe(ctx context.Context, params ...string) error +} + // YANGConsumer is a auxillary type to redirect the response // of an RESTCONF call to a ygot YANG unmarshaler type YANGConsumer struct { diff --git a/nucleus/transport/gnmi.go b/nucleus/transport/gnmi.go deleted file mode 100644 index d11d0be55..000000000 --- a/nucleus/transport/gnmi.go +++ /dev/null @@ -1 +0,0 @@ -package transport diff --git a/nucleus/transport/restconf.go b/nucleus/transport/restconf.go deleted file mode 100644 index d11d0be55..000000000 --- a/nucleus/transport/restconf.go +++ /dev/null @@ -1 +0,0 @@ -package transport diff --git a/sbi/restconf/client/ciena/client.go b/plugins/ciena/mcp.go similarity index 84% rename from sbi/restconf/client/ciena/client.go rename to plugins/ciena/mcp.go index 114d5d205..4e18b5c5f 100644 --- a/sbi/restconf/client/ciena/client.go +++ b/plugins/ciena/mcp.go @@ -4,7 +4,7 @@ import ( "bytes" "code.fbi.h-da.de/cocsn/gosdn/database" "code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces" - "code.fbi.h-da.de/cocsn/gosdn/sbi/restconf/util" + t "code.fbi.h-da.de/cocsn/gosdn/nucleus/transport" apiclient "code.fbi.h-da.de/cocsn/swagger/apis/mcp/client" "code.fbi.h-da.de/cocsn/yang-modules/generated/tapi" "crypto/tls" @@ -19,8 +19,8 @@ import ( "strings" ) -//MCPClient handles requests to a Ciena MCP RESTCONF endpoint -type MCPClient struct { +//Mcp handles requests to a Ciena MCP RESTCONF endpoint +type Mcp struct { transport *httptransport.Runtime client *apiclient.ServiceTopologyTAPI database *database.Database @@ -30,38 +30,38 @@ type MCPClient struct { } // GetConfig returns a ClientConfig struct containing -// the current configuration stat of the Ciena SBI client -func (c MCPClient) GetConfig() nucleus.ClientConfig { +// the current configuration stat of the Ciena SBI ciena +func (c Mcp) GetConfig() nucleus.ClientConfig { return *c.config } // ListPorts is a stub to satisfy the interface // TODO: Implement -func (c MCPClient) ListPorts() map[int]nucleus.Port { +func (c Mcp) ListPorts() interface{} { return nil } // PushReceiver is a stub to satisfy the interface // TODO: Implement -func (c MCPClient) PushReceiver() error { +func (c Mcp) PushReceiver() error { return nil } -//NewMCPClient creates a Ciena flavores TAPI client -func NewMCPClient(endpoint, username, password string, database *database.Database, config *nucleus.ClientConfig) *MCPClient { +//NewMCPClient creates a Ciena flavores TAPI ciena +func NewMCPClient(endpoint, username, password string, database *database.Database, config *nucleus.ClientConfig) *Mcp { // create the transport transport := httptransport.New(endpoint, "/", nil) transport.Transport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true} - // create the API client, with the transport + // create the API ciena, with the transport basicAuth := httptransport.BasicAuth(username, password) - // authenticate client + // authenticate ciena transport.DefaultAuthentication = basicAuth client := apiclient.New(transport, strfmt.Default) buffer := new(bytes.Buffer) - transport.Consumers[runtime.JSONMime] = util.YANGConsumer{Data: buffer} + transport.Consumers[runtime.JSONMime] = t.YANGConsumer{Data: buffer} - return &MCPClient{ + return &Mcp{ transport: transport, client: client, database: database, @@ -72,8 +72,8 @@ func NewMCPClient(endpoint, username, password string, database *database.Databa } // GetConnections implements the TAPI Connectivity GetConnections call with a grain of -// Ciena salt. The response is written to the client's buffer and passed to the database -func (c *MCPClient) GetConnections() error { +// Ciena salt. The response is written to the ciena's buffer and passed to the database +func (c *Mcp) GetConnections() error { defer c.buffer.Reset() _, err := c.client.TapiConnectivityCore.GetTapiCoreContextConnection(nil) if err != nil { @@ -99,8 +99,8 @@ func (c *MCPClient) GetConnections() error { } // GetLinks implements the TAPI Topology GetLinks call with a grain of -// Ciena salt. The response is written to the client's buffer and passed to the database -func (c *MCPClient) GetLinks() error { +// Ciena salt. The response is written to the ciena's buffer and passed to the database +func (c *Mcp) GetLinks() error { defer c.buffer.Reset() _, err := c.client.TapiTopologyCore.GetTapiCoreContextTopologyMcpBaseTopologyLink(nil) if err != nil { @@ -126,8 +126,8 @@ func (c *MCPClient) GetLinks() error { } // GetNodes implements the TAPI Topology GetNodes call with a grain of -// Ciena salt. The response is written to the client's buffer and passed to the database -func (c *MCPClient) GetNodes() error { +// Ciena salt. The response is written to the ciena's buffer and passed to the database +func (c *Mcp) GetNodes() error { defer c.buffer.Reset() _, err := c.client.TapiTopologyCore.GetTapiCoreContextTopologyMcpBaseTopologyNode(nil) if err != nil { @@ -153,8 +153,8 @@ func (c *MCPClient) GetNodes() error { } // GetNodeEdgePoints implements the TAPI Topology GetNodeEdgePoints call with a grain of -// Ciena salt. The response is written to the client's buffer and passed to the database -func (c *MCPClient) GetNodeEdgePoints() error { +// Ciena salt. The response is written to the ciena's buffer and passed to the database +func (c *Mcp) GetNodeEdgePoints() error { defer c.buffer.Reset() _, err := c.client.TapiTopologyCore.GetTapiCoreContextTopologyMcpBaseTopologyNodeEdgePoint(nil) if err != nil { diff --git a/sbi/sbi-general.go b/plugins/sbi-general.go similarity index 97% rename from sbi/sbi-general.go rename to plugins/sbi-general.go index 9e7247dcf..4a4ce3272 100644 --- a/sbi/sbi-general.go +++ b/plugins/sbi-general.go @@ -1,4 +1,4 @@ -package sbi +package plugins import ( "fmt" -- GitLab