// Copyright (C) 2018 Nippon Telegraph and Telephone Corporation. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation files // (the "Software"), to deal in the Software without restriction, // including without limitation the rights to use, copy, modify, merge, // publish, distribute, sublicense, and/or sell copies of the Software, // and to permit persons to whom the Software is furnished to do so, // subject to the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.19.1 // source: attribute.proto package apipb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" anypb "google.golang.org/protobuf/types/known/anypb" reflect "reflect" 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) ) type LsOspfRouteType int32 const ( LsOspfRouteType_LS_OSPF_ROUTE_TYPE_UNKNOWN LsOspfRouteType = 0 LsOspfRouteType_LS_OSPF_ROUTE_TYPE_INTRA_AREA LsOspfRouteType = 1 LsOspfRouteType_LS_OSPF_ROUTE_TYPE_INTER_AREA LsOspfRouteType = 2 LsOspfRouteType_LS_OSPF_ROUTE_TYPE_EXTERNAL1 LsOspfRouteType = 3 LsOspfRouteType_LS_OSPF_ROUTE_TYPE_EXTERNAL2 LsOspfRouteType = 4 LsOspfRouteType_LS_OSPF_ROUTE_TYPE_NSSA1 LsOspfRouteType = 5 LsOspfRouteType_LS_OSPF_ROUTE_TYPE_NSSA2 LsOspfRouteType = 6 ) // Enum value maps for LsOspfRouteType. var ( LsOspfRouteType_name = map[int32]string{ 0: "LS_OSPF_ROUTE_TYPE_UNKNOWN", 1: "LS_OSPF_ROUTE_TYPE_INTRA_AREA", 2: "LS_OSPF_ROUTE_TYPE_INTER_AREA", 3: "LS_OSPF_ROUTE_TYPE_EXTERNAL1", 4: "LS_OSPF_ROUTE_TYPE_EXTERNAL2", 5: "LS_OSPF_ROUTE_TYPE_NSSA1", 6: "LS_OSPF_ROUTE_TYPE_NSSA2", } LsOspfRouteType_value = map[string]int32{ "LS_OSPF_ROUTE_TYPE_UNKNOWN": 0, "LS_OSPF_ROUTE_TYPE_INTRA_AREA": 1, "LS_OSPF_ROUTE_TYPE_INTER_AREA": 2, "LS_OSPF_ROUTE_TYPE_EXTERNAL1": 3, "LS_OSPF_ROUTE_TYPE_EXTERNAL2": 4, "LS_OSPF_ROUTE_TYPE_NSSA1": 5, "LS_OSPF_ROUTE_TYPE_NSSA2": 6, } ) func (x LsOspfRouteType) Enum() *LsOspfRouteType { p := new(LsOspfRouteType) *p = x return p } func (x LsOspfRouteType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (LsOspfRouteType) Descriptor() protoreflect.EnumDescriptor { return file_attribute_proto_enumTypes[0].Descriptor() } func (LsOspfRouteType) Type() protoreflect.EnumType { return &file_attribute_proto_enumTypes[0] } func (x LsOspfRouteType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use LsOspfRouteType.Descriptor instead. func (LsOspfRouteType) EnumDescriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{0} } // Based om RFC 7752, Table 1. type LsNLRIType int32 const ( LsNLRIType_LS_NLRI_UNKNOWN LsNLRIType = 0 LsNLRIType_LS_NLRI_NODE LsNLRIType = 1 LsNLRIType_LS_NLRI_LINK LsNLRIType = 2 LsNLRIType_LS_NLRI_PREFIX_V4 LsNLRIType = 3 LsNLRIType_LS_NLRI_PREFIX_V6 LsNLRIType = 4 ) // Enum value maps for LsNLRIType. var ( LsNLRIType_name = map[int32]string{ 0: "LS_NLRI_UNKNOWN", 1: "LS_NLRI_NODE", 2: "LS_NLRI_LINK", 3: "LS_NLRI_PREFIX_V4", 4: "LS_NLRI_PREFIX_V6", } LsNLRIType_value = map[string]int32{ "LS_NLRI_UNKNOWN": 0, "LS_NLRI_NODE": 1, "LS_NLRI_LINK": 2, "LS_NLRI_PREFIX_V4": 3, "LS_NLRI_PREFIX_V6": 4, } ) func (x LsNLRIType) Enum() *LsNLRIType { p := new(LsNLRIType) *p = x return p } func (x LsNLRIType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (LsNLRIType) Descriptor() protoreflect.EnumDescriptor { return file_attribute_proto_enumTypes[1].Descriptor() } func (LsNLRIType) Type() protoreflect.EnumType { return &file_attribute_proto_enumTypes[1] } func (x LsNLRIType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use LsNLRIType.Descriptor instead. func (LsNLRIType) EnumDescriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{1} } type LsProtocolID int32 const ( LsProtocolID_LS_PROTOCOL_UNKNOWN LsProtocolID = 0 LsProtocolID_LS_PROTOCOL_ISIS_L1 LsProtocolID = 1 LsProtocolID_LS_PROTOCOL_ISIS_L2 LsProtocolID = 2 LsProtocolID_LS_PROTOCOL_OSPF_V2 LsProtocolID = 3 LsProtocolID_LS_PROTOCOL_DIRECT LsProtocolID = 4 LsProtocolID_LS_PROTOCOL_STATIC LsProtocolID = 5 LsProtocolID_LS_PROTOCOL_OSPF_V3 LsProtocolID = 6 ) // Enum value maps for LsProtocolID. var ( LsProtocolID_name = map[int32]string{ 0: "LS_PROTOCOL_UNKNOWN", 1: "LS_PROTOCOL_ISIS_L1", 2: "LS_PROTOCOL_ISIS_L2", 3: "LS_PROTOCOL_OSPF_V2", 4: "LS_PROTOCOL_DIRECT", 5: "LS_PROTOCOL_STATIC", 6: "LS_PROTOCOL_OSPF_V3", } LsProtocolID_value = map[string]int32{ "LS_PROTOCOL_UNKNOWN": 0, "LS_PROTOCOL_ISIS_L1": 1, "LS_PROTOCOL_ISIS_L2": 2, "LS_PROTOCOL_OSPF_V2": 3, "LS_PROTOCOL_DIRECT": 4, "LS_PROTOCOL_STATIC": 5, "LS_PROTOCOL_OSPF_V3": 6, } ) func (x LsProtocolID) Enum() *LsProtocolID { p := new(LsProtocolID) *p = x return p } func (x LsProtocolID) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (LsProtocolID) Descriptor() protoreflect.EnumDescriptor { return file_attribute_proto_enumTypes[2].Descriptor() } func (LsProtocolID) Type() protoreflect.EnumType { return &file_attribute_proto_enumTypes[2] } func (x LsProtocolID) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use LsProtocolID.Descriptor instead. func (LsProtocolID) EnumDescriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{2} } type SRv6Behavior int32 const ( SRv6Behavior_RESERVED SRv6Behavior = 0 SRv6Behavior_END SRv6Behavior = 1 SRv6Behavior_END_WITH_PSP SRv6Behavior = 2 SRv6Behavior_END_WITH_USP SRv6Behavior = 3 SRv6Behavior_END_WITH_PSP_USP SRv6Behavior = 4 SRv6Behavior_ENDX SRv6Behavior = 5 SRv6Behavior_ENDX_WITH_PSP SRv6Behavior = 6 SRv6Behavior_ENDX_WITH_USP SRv6Behavior = 7 SRv6Behavior_ENDX_WITH_PSP_USP SRv6Behavior = 8 SRv6Behavior_ENDT SRv6Behavior = 9 SRv6Behavior_ENDT_WITH_PSP SRv6Behavior = 10 SRv6Behavior_ENDT_WITH_USP SRv6Behavior = 11 SRv6Behavior_ENDT_WITH_PSP_USP SRv6Behavior = 12 SRv6Behavior_END_B6_ENCAPS SRv6Behavior = 14 SRv6Behavior_END_BM SRv6Behavior = 15 SRv6Behavior_END_DX6 SRv6Behavior = 16 SRv6Behavior_END_DX4 SRv6Behavior = 17 SRv6Behavior_END_DT6 SRv6Behavior = 18 SRv6Behavior_END_DT4 SRv6Behavior = 19 SRv6Behavior_END_DT46 SRv6Behavior = 20 SRv6Behavior_END_DX2 SRv6Behavior = 21 SRv6Behavior_END_DX2V SRv6Behavior = 22 SRv6Behavior_END_DT2U SRv6Behavior = 23 SRv6Behavior_END_DT2M SRv6Behavior = 24 SRv6Behavior_END_B6_ENCAPS_Red SRv6Behavior = 27 SRv6Behavior_END_WITH_USD SRv6Behavior = 28 SRv6Behavior_END_WITH_PSP_USD SRv6Behavior = 29 SRv6Behavior_END_WITH_USP_USD SRv6Behavior = 30 SRv6Behavior_END_WITH_PSP_USP_USD SRv6Behavior = 31 SRv6Behavior_ENDX_WITH_USD SRv6Behavior = 32 SRv6Behavior_ENDX_WITH_PSP_USD SRv6Behavior = 33 SRv6Behavior_ENDX_WITH_USP_USD SRv6Behavior = 34 SRv6Behavior_ENDX_WITH_PSP_USP_USD SRv6Behavior = 35 SRv6Behavior_ENDT_WITH_USD SRv6Behavior = 36 SRv6Behavior_ENDT_WITH_PSP_USD SRv6Behavior = 37 SRv6Behavior_ENDT_WITH_USP_USD SRv6Behavior = 38 SRv6Behavior_ENDT_WITH_PSP_USP_USD SRv6Behavior = 39 SRv6Behavior_ENDM_GTP6D SRv6Behavior = 69 // 0x0045 SRv6Behavior_ENDM_GTP6DI SRv6Behavior = 70 // 0x0046 SRv6Behavior_ENDM_GTP6E SRv6Behavior = 71 // 0x0047 SRv6Behavior_ENDM_GTP4E SRv6Behavior = 72 // 0x0048 ) // Enum value maps for SRv6Behavior. var ( SRv6Behavior_name = map[int32]string{ 0: "RESERVED", 1: "END", 2: "END_WITH_PSP", 3: "END_WITH_USP", 4: "END_WITH_PSP_USP", 5: "ENDX", 6: "ENDX_WITH_PSP", 7: "ENDX_WITH_USP", 8: "ENDX_WITH_PSP_USP", 9: "ENDT", 10: "ENDT_WITH_PSP", 11: "ENDT_WITH_USP", 12: "ENDT_WITH_PSP_USP", 14: "END_B6_ENCAPS", 15: "END_BM", 16: "END_DX6", 17: "END_DX4", 18: "END_DT6", 19: "END_DT4", 20: "END_DT46", 21: "END_DX2", 22: "END_DX2V", 23: "END_DT2U", 24: "END_DT2M", 27: "END_B6_ENCAPS_Red", 28: "END_WITH_USD", 29: "END_WITH_PSP_USD", 30: "END_WITH_USP_USD", 31: "END_WITH_PSP_USP_USD", 32: "ENDX_WITH_USD", 33: "ENDX_WITH_PSP_USD", 34: "ENDX_WITH_USP_USD", 35: "ENDX_WITH_PSP_USP_USD", 36: "ENDT_WITH_USD", 37: "ENDT_WITH_PSP_USD", 38: "ENDT_WITH_USP_USD", 39: "ENDT_WITH_PSP_USP_USD", 69: "ENDM_GTP6D", 70: "ENDM_GTP6DI", 71: "ENDM_GTP6E", 72: "ENDM_GTP4E", } SRv6Behavior_value = map[string]int32{ "RESERVED": 0, "END": 1, "END_WITH_PSP": 2, "END_WITH_USP": 3, "END_WITH_PSP_USP": 4, "ENDX": 5, "ENDX_WITH_PSP": 6, "ENDX_WITH_USP": 7, "ENDX_WITH_PSP_USP": 8, "ENDT": 9, "ENDT_WITH_PSP": 10, "ENDT_WITH_USP": 11, "ENDT_WITH_PSP_USP": 12, "END_B6_ENCAPS": 14, "END_BM": 15, "END_DX6": 16, "END_DX4": 17, "END_DT6": 18, "END_DT4": 19, "END_DT46": 20, "END_DX2": 21, "END_DX2V": 22, "END_DT2U": 23, "END_DT2M": 24, "END_B6_ENCAPS_Red": 27, "END_WITH_USD": 28, "END_WITH_PSP_USD": 29, "END_WITH_USP_USD": 30, "END_WITH_PSP_USP_USD": 31, "ENDX_WITH_USD": 32, "ENDX_WITH_PSP_USD": 33, "ENDX_WITH_USP_USD": 34, "ENDX_WITH_PSP_USP_USD": 35, "ENDT_WITH_USD": 36, "ENDT_WITH_PSP_USD": 37, "ENDT_WITH_USP_USD": 38, "ENDT_WITH_PSP_USP_USD": 39, "ENDM_GTP6D": 69, "ENDM_GTP6DI": 70, "ENDM_GTP6E": 71, "ENDM_GTP4E": 72, } ) func (x SRv6Behavior) Enum() *SRv6Behavior { p := new(SRv6Behavior) *p = x return p } func (x SRv6Behavior) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (SRv6Behavior) Descriptor() protoreflect.EnumDescriptor { return file_attribute_proto_enumTypes[3].Descriptor() } func (SRv6Behavior) Type() protoreflect.EnumType { return &file_attribute_proto_enumTypes[3] } func (x SRv6Behavior) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use SRv6Behavior.Descriptor instead. func (SRv6Behavior) EnumDescriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{3} } type ENLPType int32 const ( ENLPType_Reserved ENLPType = 0 ENLPType_Type1 ENLPType = 1 ENLPType_Type2 ENLPType = 2 ENLPType_Type3 ENLPType = 3 ENLPType_Type4 ENLPType = 4 ) // Enum value maps for ENLPType. var ( ENLPType_name = map[int32]string{ 0: "Reserved", 1: "Type1", 2: "Type2", 3: "Type3", 4: "Type4", } ENLPType_value = map[string]int32{ "Reserved": 0, "Type1": 1, "Type2": 2, "Type3": 3, "Type4": 4, } ) func (x ENLPType) Enum() *ENLPType { p := new(ENLPType) *p = x return p } func (x ENLPType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ENLPType) Descriptor() protoreflect.EnumDescriptor { return file_attribute_proto_enumTypes[4].Descriptor() } func (ENLPType) Type() protoreflect.EnumType { return &file_attribute_proto_enumTypes[4] } func (x ENLPType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ENLPType.Descriptor instead. func (ENLPType) EnumDescriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{4} } type AsSegment_Type int32 const ( AsSegment_UNKNOWN AsSegment_Type = 0 AsSegment_AS_SET AsSegment_Type = 1 AsSegment_AS_SEQUENCE AsSegment_Type = 2 AsSegment_AS_CONFED_SEQUENCE AsSegment_Type = 3 AsSegment_AS_CONFED_SET AsSegment_Type = 4 ) // Enum value maps for AsSegment_Type. var ( AsSegment_Type_name = map[int32]string{ 0: "UNKNOWN", 1: "AS_SET", 2: "AS_SEQUENCE", 3: "AS_CONFED_SEQUENCE", 4: "AS_CONFED_SET", } AsSegment_Type_value = map[string]int32{ "UNKNOWN": 0, "AS_SET": 1, "AS_SEQUENCE": 2, "AS_CONFED_SEQUENCE": 3, "AS_CONFED_SET": 4, } ) func (x AsSegment_Type) Enum() *AsSegment_Type { p := new(AsSegment_Type) *p = x return p } func (x AsSegment_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (AsSegment_Type) Descriptor() protoreflect.EnumDescriptor { return file_attribute_proto_enumTypes[5].Descriptor() } func (AsSegment_Type) Type() protoreflect.EnumType { return &file_attribute_proto_enumTypes[5] } func (x AsSegment_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use AsSegment_Type.Descriptor instead. func (AsSegment_Type) EnumDescriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{1, 0} } type OriginAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Origin uint32 `protobuf:"varint,1,opt,name=origin,proto3" json:"origin,omitempty"` } func (x *OriginAttribute) Reset() { *x = OriginAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OriginAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*OriginAttribute) ProtoMessage() {} func (x *OriginAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 OriginAttribute.ProtoReflect.Descriptor instead. func (*OriginAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{0} } func (x *OriginAttribute) GetOrigin() uint32 { if x != nil { return x.Origin } return 0 } type AsSegment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type AsSegment_Type `protobuf:"varint,1,opt,name=type,proto3,enum=apipb.AsSegment_Type" json:"type,omitempty"` Numbers []uint32 `protobuf:"varint,2,rep,packed,name=numbers,proto3" json:"numbers,omitempty"` } func (x *AsSegment) Reset() { *x = AsSegment{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AsSegment) String() string { return protoimpl.X.MessageStringOf(x) } func (*AsSegment) ProtoMessage() {} func (x *AsSegment) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 AsSegment.ProtoReflect.Descriptor instead. func (*AsSegment) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{1} } func (x *AsSegment) GetType() AsSegment_Type { if x != nil { return x.Type } return AsSegment_UNKNOWN } func (x *AsSegment) GetNumbers() []uint32 { if x != nil { return x.Numbers } return nil } type AsPathAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Segments []*AsSegment `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty"` } func (x *AsPathAttribute) Reset() { *x = AsPathAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AsPathAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*AsPathAttribute) ProtoMessage() {} func (x *AsPathAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 AsPathAttribute.ProtoReflect.Descriptor instead. func (*AsPathAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{2} } func (x *AsPathAttribute) GetSegments() []*AsSegment { if x != nil { return x.Segments } return nil } type NextHopAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields NextHop string `protobuf:"bytes,1,opt,name=next_hop,json=nextHop,proto3" json:"next_hop,omitempty"` } func (x *NextHopAttribute) Reset() { *x = NextHopAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *NextHopAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*NextHopAttribute) ProtoMessage() {} func (x *NextHopAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 NextHopAttribute.ProtoReflect.Descriptor instead. func (*NextHopAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{3} } func (x *NextHopAttribute) GetNextHop() string { if x != nil { return x.NextHop } return "" } type MultiExitDiscAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Med uint32 `protobuf:"varint,1,opt,name=med,proto3" json:"med,omitempty"` } func (x *MultiExitDiscAttribute) Reset() { *x = MultiExitDiscAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MultiExitDiscAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*MultiExitDiscAttribute) ProtoMessage() {} func (x *MultiExitDiscAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 MultiExitDiscAttribute.ProtoReflect.Descriptor instead. func (*MultiExitDiscAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{4} } func (x *MultiExitDiscAttribute) GetMed() uint32 { if x != nil { return x.Med } return 0 } type LocalPrefAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LocalPref uint32 `protobuf:"varint,1,opt,name=local_pref,json=localPref,proto3" json:"local_pref,omitempty"` } func (x *LocalPrefAttribute) Reset() { *x = LocalPrefAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LocalPrefAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*LocalPrefAttribute) ProtoMessage() {} func (x *LocalPrefAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 LocalPrefAttribute.ProtoReflect.Descriptor instead. func (*LocalPrefAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{5} } func (x *LocalPrefAttribute) GetLocalPref() uint32 { if x != nil { return x.LocalPref } return 0 } type AtomicAggregateAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AtomicAggregateAttribute) Reset() { *x = AtomicAggregateAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AtomicAggregateAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*AtomicAggregateAttribute) ProtoMessage() {} func (x *AtomicAggregateAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 AtomicAggregateAttribute.ProtoReflect.Descriptor instead. func (*AtomicAggregateAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{6} } type AggregatorAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Asn uint32 `protobuf:"varint,1,opt,name=asn,proto3" json:"asn,omitempty"` Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` } func (x *AggregatorAttribute) Reset() { *x = AggregatorAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AggregatorAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*AggregatorAttribute) ProtoMessage() {} func (x *AggregatorAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 AggregatorAttribute.ProtoReflect.Descriptor instead. func (*AggregatorAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{7} } func (x *AggregatorAttribute) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *AggregatorAttribute) GetAddress() string { if x != nil { return x.Address } return "" } type CommunitiesAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Communities []uint32 `protobuf:"varint,1,rep,packed,name=communities,proto3" json:"communities,omitempty"` } func (x *CommunitiesAttribute) Reset() { *x = CommunitiesAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CommunitiesAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*CommunitiesAttribute) ProtoMessage() {} func (x *CommunitiesAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 CommunitiesAttribute.ProtoReflect.Descriptor instead. func (*CommunitiesAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{8} } func (x *CommunitiesAttribute) GetCommunities() []uint32 { if x != nil { return x.Communities } return nil } type OriginatorIdAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *OriginatorIdAttribute) Reset() { *x = OriginatorIdAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OriginatorIdAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*OriginatorIdAttribute) ProtoMessage() {} func (x *OriginatorIdAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 OriginatorIdAttribute.ProtoReflect.Descriptor instead. func (*OriginatorIdAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{9} } func (x *OriginatorIdAttribute) GetId() string { if x != nil { return x.Id } return "" } type ClusterListAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` } func (x *ClusterListAttribute) Reset() { *x = ClusterListAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClusterListAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClusterListAttribute) ProtoMessage() {} func (x *ClusterListAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 ClusterListAttribute.ProtoReflect.Descriptor instead. func (*ClusterListAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{10} } func (x *ClusterListAttribute) GetIds() []string { if x != nil { return x.Ids } return nil } // IPAddressPrefix represents the NLRI for: // - AFI=1, SAFI=1 // - AFI=2, SAFI=1 type IPAddressPrefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PrefixLen uint32 `protobuf:"varint,1,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"` Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"` } func (x *IPAddressPrefix) Reset() { *x = IPAddressPrefix{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IPAddressPrefix) String() string { return protoimpl.X.MessageStringOf(x) } func (*IPAddressPrefix) ProtoMessage() {} func (x *IPAddressPrefix) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 IPAddressPrefix.ProtoReflect.Descriptor instead. func (*IPAddressPrefix) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{11} } func (x *IPAddressPrefix) GetPrefixLen() uint32 { if x != nil { return x.PrefixLen } return 0 } func (x *IPAddressPrefix) GetPrefix() string { if x != nil { return x.Prefix } return "" } // LabeledIPAddressPrefix represents the NLRI for: // - AFI=1, SAFI=4 // - AFI=2, SAFI=4 type LabeledIPAddressPrefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Labels []uint32 `protobuf:"varint,1,rep,packed,name=labels,proto3" json:"labels,omitempty"` PrefixLen uint32 `protobuf:"varint,2,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"` Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"` } func (x *LabeledIPAddressPrefix) Reset() { *x = LabeledIPAddressPrefix{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LabeledIPAddressPrefix) String() string { return protoimpl.X.MessageStringOf(x) } func (*LabeledIPAddressPrefix) ProtoMessage() {} func (x *LabeledIPAddressPrefix) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 LabeledIPAddressPrefix.ProtoReflect.Descriptor instead. func (*LabeledIPAddressPrefix) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{12} } func (x *LabeledIPAddressPrefix) GetLabels() []uint32 { if x != nil { return x.Labels } return nil } func (x *LabeledIPAddressPrefix) GetPrefixLen() uint32 { if x != nil { return x.PrefixLen } return 0 } func (x *LabeledIPAddressPrefix) GetPrefix() string { if x != nil { return x.Prefix } return "" } // EncapsulationNLRI represents the NLRI for: // - AFI=1, SAFI=7 // - AFI=2, SAFI=7 type EncapsulationNLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` } func (x *EncapsulationNLRI) Reset() { *x = EncapsulationNLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EncapsulationNLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*EncapsulationNLRI) ProtoMessage() {} func (x *EncapsulationNLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 EncapsulationNLRI.ProtoReflect.Descriptor instead. func (*EncapsulationNLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{13} } func (x *EncapsulationNLRI) GetAddress() string { if x != nil { return x.Address } return "" } type RouteDistinguisherTwoOctetASN struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Admin uint32 `protobuf:"varint,1,opt,name=admin,proto3" json:"admin,omitempty"` Assigned uint32 `protobuf:"varint,2,opt,name=assigned,proto3" json:"assigned,omitempty"` } func (x *RouteDistinguisherTwoOctetASN) Reset() { *x = RouteDistinguisherTwoOctetASN{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RouteDistinguisherTwoOctetASN) String() string { return protoimpl.X.MessageStringOf(x) } func (*RouteDistinguisherTwoOctetASN) ProtoMessage() {} func (x *RouteDistinguisherTwoOctetASN) ProtoReflect() protoreflect.Message { mi := &file_attribute_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 RouteDistinguisherTwoOctetASN.ProtoReflect.Descriptor instead. func (*RouteDistinguisherTwoOctetASN) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{14} } func (x *RouteDistinguisherTwoOctetASN) GetAdmin() uint32 { if x != nil { return x.Admin } return 0 } func (x *RouteDistinguisherTwoOctetASN) GetAssigned() uint32 { if x != nil { return x.Assigned } return 0 } type RouteDistinguisherIPAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Admin string `protobuf:"bytes,1,opt,name=admin,proto3" json:"admin,omitempty"` Assigned uint32 `protobuf:"varint,2,opt,name=assigned,proto3" json:"assigned,omitempty"` } func (x *RouteDistinguisherIPAddress) Reset() { *x = RouteDistinguisherIPAddress{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RouteDistinguisherIPAddress) String() string { return protoimpl.X.MessageStringOf(x) } func (*RouteDistinguisherIPAddress) ProtoMessage() {} func (x *RouteDistinguisherIPAddress) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[15] 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 RouteDistinguisherIPAddress.ProtoReflect.Descriptor instead. func (*RouteDistinguisherIPAddress) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{15} } func (x *RouteDistinguisherIPAddress) GetAdmin() string { if x != nil { return x.Admin } return "" } func (x *RouteDistinguisherIPAddress) GetAssigned() uint32 { if x != nil { return x.Assigned } return 0 } type RouteDistinguisherFourOctetASN struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Admin uint32 `protobuf:"varint,1,opt,name=admin,proto3" json:"admin,omitempty"` Assigned uint32 `protobuf:"varint,2,opt,name=assigned,proto3" json:"assigned,omitempty"` } func (x *RouteDistinguisherFourOctetASN) Reset() { *x = RouteDistinguisherFourOctetASN{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RouteDistinguisherFourOctetASN) String() string { return protoimpl.X.MessageStringOf(x) } func (*RouteDistinguisherFourOctetASN) ProtoMessage() {} func (x *RouteDistinguisherFourOctetASN) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[16] 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 RouteDistinguisherFourOctetASN.ProtoReflect.Descriptor instead. func (*RouteDistinguisherFourOctetASN) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{16} } func (x *RouteDistinguisherFourOctetASN) GetAdmin() uint32 { if x != nil { return x.Admin } return 0 } func (x *RouteDistinguisherFourOctetASN) GetAssigned() uint32 { if x != nil { return x.Assigned } return 0 } type EthernetSegmentIdentifier struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } func (x *EthernetSegmentIdentifier) Reset() { *x = EthernetSegmentIdentifier{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EthernetSegmentIdentifier) String() string { return protoimpl.X.MessageStringOf(x) } func (*EthernetSegmentIdentifier) ProtoMessage() {} func (x *EthernetSegmentIdentifier) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[17] 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 EthernetSegmentIdentifier.ProtoReflect.Descriptor instead. func (*EthernetSegmentIdentifier) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{17} } func (x *EthernetSegmentIdentifier) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *EthernetSegmentIdentifier) GetValue() []byte { if x != nil { return x.Value } return nil } // EVPNEthernetAutoDiscoveryRoute represents the NLRI for: // - AFI=25, SAFI=70, RouteType=1 type EVPNEthernetAutoDiscoveryRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` Esi *EthernetSegmentIdentifier `protobuf:"bytes,2,opt,name=esi,proto3" json:"esi,omitempty"` EthernetTag uint32 `protobuf:"varint,3,opt,name=ethernet_tag,json=ethernetTag,proto3" json:"ethernet_tag,omitempty"` Label uint32 `protobuf:"varint,4,opt,name=label,proto3" json:"label,omitempty"` } func (x *EVPNEthernetAutoDiscoveryRoute) Reset() { *x = EVPNEthernetAutoDiscoveryRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EVPNEthernetAutoDiscoveryRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*EVPNEthernetAutoDiscoveryRoute) ProtoMessage() {} func (x *EVPNEthernetAutoDiscoveryRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[18] 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 EVPNEthernetAutoDiscoveryRoute.ProtoReflect.Descriptor instead. func (*EVPNEthernetAutoDiscoveryRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{18} } func (x *EVPNEthernetAutoDiscoveryRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *EVPNEthernetAutoDiscoveryRoute) GetEsi() *EthernetSegmentIdentifier { if x != nil { return x.Esi } return nil } func (x *EVPNEthernetAutoDiscoveryRoute) GetEthernetTag() uint32 { if x != nil { return x.EthernetTag } return 0 } func (x *EVPNEthernetAutoDiscoveryRoute) GetLabel() uint32 { if x != nil { return x.Label } return 0 } // EVPNMACIPAdvertisementRoute represents the NLRI for: // - AFI=25, SAFI=70, RouteType=2 type EVPNMACIPAdvertisementRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` Esi *EthernetSegmentIdentifier `protobuf:"bytes,2,opt,name=esi,proto3" json:"esi,omitempty"` EthernetTag uint32 `protobuf:"varint,3,opt,name=ethernet_tag,json=ethernetTag,proto3" json:"ethernet_tag,omitempty"` MacAddress string `protobuf:"bytes,4,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` IpAddress string `protobuf:"bytes,5,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"` Labels []uint32 `protobuf:"varint,6,rep,packed,name=labels,proto3" json:"labels,omitempty"` } func (x *EVPNMACIPAdvertisementRoute) Reset() { *x = EVPNMACIPAdvertisementRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EVPNMACIPAdvertisementRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*EVPNMACIPAdvertisementRoute) ProtoMessage() {} func (x *EVPNMACIPAdvertisementRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[19] 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 EVPNMACIPAdvertisementRoute.ProtoReflect.Descriptor instead. func (*EVPNMACIPAdvertisementRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{19} } func (x *EVPNMACIPAdvertisementRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *EVPNMACIPAdvertisementRoute) GetEsi() *EthernetSegmentIdentifier { if x != nil { return x.Esi } return nil } func (x *EVPNMACIPAdvertisementRoute) GetEthernetTag() uint32 { if x != nil { return x.EthernetTag } return 0 } func (x *EVPNMACIPAdvertisementRoute) GetMacAddress() string { if x != nil { return x.MacAddress } return "" } func (x *EVPNMACIPAdvertisementRoute) GetIpAddress() string { if x != nil { return x.IpAddress } return "" } func (x *EVPNMACIPAdvertisementRoute) GetLabels() []uint32 { if x != nil { return x.Labels } return nil } // EVPNInclusiveMulticastEthernetTagRoute represents the NLRI for: // - AFI=25, SAFI=70, RouteType=3 type EVPNInclusiveMulticastEthernetTagRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` EthernetTag uint32 `protobuf:"varint,2,opt,name=ethernet_tag,json=ethernetTag,proto3" json:"ethernet_tag,omitempty"` IpAddress string `protobuf:"bytes,3,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"` } func (x *EVPNInclusiveMulticastEthernetTagRoute) Reset() { *x = EVPNInclusiveMulticastEthernetTagRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EVPNInclusiveMulticastEthernetTagRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*EVPNInclusiveMulticastEthernetTagRoute) ProtoMessage() {} func (x *EVPNInclusiveMulticastEthernetTagRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[20] 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 EVPNInclusiveMulticastEthernetTagRoute.ProtoReflect.Descriptor instead. func (*EVPNInclusiveMulticastEthernetTagRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{20} } func (x *EVPNInclusiveMulticastEthernetTagRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *EVPNInclusiveMulticastEthernetTagRoute) GetEthernetTag() uint32 { if x != nil { return x.EthernetTag } return 0 } func (x *EVPNInclusiveMulticastEthernetTagRoute) GetIpAddress() string { if x != nil { return x.IpAddress } return "" } // EVPNEthernetSegmentRoute represents the NLRI for: // - AFI=25, SAFI=70, RouteType=4 type EVPNEthernetSegmentRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` Esi *EthernetSegmentIdentifier `protobuf:"bytes,2,opt,name=esi,proto3" json:"esi,omitempty"` IpAddress string `protobuf:"bytes,3,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"` } func (x *EVPNEthernetSegmentRoute) Reset() { *x = EVPNEthernetSegmentRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EVPNEthernetSegmentRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*EVPNEthernetSegmentRoute) ProtoMessage() {} func (x *EVPNEthernetSegmentRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[21] 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 EVPNEthernetSegmentRoute.ProtoReflect.Descriptor instead. func (*EVPNEthernetSegmentRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{21} } func (x *EVPNEthernetSegmentRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *EVPNEthernetSegmentRoute) GetEsi() *EthernetSegmentIdentifier { if x != nil { return x.Esi } return nil } func (x *EVPNEthernetSegmentRoute) GetIpAddress() string { if x != nil { return x.IpAddress } return "" } // EVPNIPPrefixRoute represents the NLRI for: // - AFI=25, SAFI=70, RouteType=5 type EVPNIPPrefixRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` Esi *EthernetSegmentIdentifier `protobuf:"bytes,2,opt,name=esi,proto3" json:"esi,omitempty"` EthernetTag uint32 `protobuf:"varint,3,opt,name=ethernet_tag,json=ethernetTag,proto3" json:"ethernet_tag,omitempty"` IpPrefix string `protobuf:"bytes,4,opt,name=ip_prefix,json=ipPrefix,proto3" json:"ip_prefix,omitempty"` IpPrefixLen uint32 `protobuf:"varint,5,opt,name=ip_prefix_len,json=ipPrefixLen,proto3" json:"ip_prefix_len,omitempty"` GwAddress string `protobuf:"bytes,6,opt,name=gw_address,json=gwAddress,proto3" json:"gw_address,omitempty"` Label uint32 `protobuf:"varint,7,opt,name=label,proto3" json:"label,omitempty"` } func (x *EVPNIPPrefixRoute) Reset() { *x = EVPNIPPrefixRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EVPNIPPrefixRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*EVPNIPPrefixRoute) ProtoMessage() {} func (x *EVPNIPPrefixRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[22] 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 EVPNIPPrefixRoute.ProtoReflect.Descriptor instead. func (*EVPNIPPrefixRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{22} } func (x *EVPNIPPrefixRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *EVPNIPPrefixRoute) GetEsi() *EthernetSegmentIdentifier { if x != nil { return x.Esi } return nil } func (x *EVPNIPPrefixRoute) GetEthernetTag() uint32 { if x != nil { return x.EthernetTag } return 0 } func (x *EVPNIPPrefixRoute) GetIpPrefix() string { if x != nil { return x.IpPrefix } return "" } func (x *EVPNIPPrefixRoute) GetIpPrefixLen() uint32 { if x != nil { return x.IpPrefixLen } return 0 } func (x *EVPNIPPrefixRoute) GetGwAddress() string { if x != nil { return x.GwAddress } return "" } func (x *EVPNIPPrefixRoute) GetLabel() uint32 { if x != nil { return x.Label } return 0 } // EVPNIPMSIRoute represents the NLRI for: // - AFI=25, SAFI=70, RouteType=9 type EVPNIPMSIRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` EthernetTag uint32 `protobuf:"varint,2,opt,name=ethernet_tag,json=ethernetTag,proto3" json:"ethernet_tag,omitempty"` Rt *anypb.Any `protobuf:"bytes,3,opt,name=rt,proto3" json:"rt,omitempty"` } func (x *EVPNIPMSIRoute) Reset() { *x = EVPNIPMSIRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EVPNIPMSIRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*EVPNIPMSIRoute) ProtoMessage() {} func (x *EVPNIPMSIRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[23] 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 EVPNIPMSIRoute.ProtoReflect.Descriptor instead. func (*EVPNIPMSIRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{23} } func (x *EVPNIPMSIRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *EVPNIPMSIRoute) GetEthernetTag() uint32 { if x != nil { return x.EthernetTag } return 0 } func (x *EVPNIPMSIRoute) GetRt() *anypb.Any { if x != nil { return x.Rt } return nil } // SRPolicyNLRI represents the NLRI for: // - AFI=1, SAFI=73 // - AFI=2, SAFI=73 type SRPolicyNLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // length field carries the length of NLRI portion expressed in bits Length uint32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` // distinguisher field carries 4-octet value uniquely identifying the policy // in the context of tuple. Distinguisher uint32 `protobuf:"varint,2,opt,name=distinguisher,proto3" json:"distinguisher,omitempty"` // color field carries 4-octet value identifying (with the endpoint) the // policy. The color is used to match the color of the destination // prefixes to steer traffic into the SR Policy Color uint32 `protobuf:"varint,3,opt,name=color,proto3" json:"color,omitempty"` // endpoint field identifies the endpoint of a policy. The Endpoint may // represent a single node or a set of nodes (e.g., an anycast // address). The Endpoint is an IPv4 (4-octet) address or an IPv6 // (16-octet) address according to the AFI of the NLRI. Endpoint []byte `protobuf:"bytes,4,opt,name=endpoint,proto3" json:"endpoint,omitempty"` } func (x *SRPolicyNLRI) Reset() { *x = SRPolicyNLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRPolicyNLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRPolicyNLRI) ProtoMessage() {} func (x *SRPolicyNLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[24] 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 SRPolicyNLRI.ProtoReflect.Descriptor instead. func (*SRPolicyNLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{24} } func (x *SRPolicyNLRI) GetLength() uint32 { if x != nil { return x.Length } return 0 } func (x *SRPolicyNLRI) GetDistinguisher() uint32 { if x != nil { return x.Distinguisher } return 0 } func (x *SRPolicyNLRI) GetColor() uint32 { if x != nil { return x.Color } return 0 } func (x *SRPolicyNLRI) GetEndpoint() []byte { if x != nil { return x.Endpoint } return nil } // LabeledVPNIPAddressPrefix represents the NLRI for: // - AFI=1, SAFI=128 // - AFI=2, SAFI=128 type LabeledVPNIPAddressPrefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Labels []uint32 `protobuf:"varint,1,rep,packed,name=labels,proto3" json:"labels,omitempty"` // One of: // - TwoOctetAsSpecificExtended // - IPv4AddressSpecificExtended // - FourOctetAsSpecificExtended Rd *anypb.Any `protobuf:"bytes,2,opt,name=rd,proto3" json:"rd,omitempty"` PrefixLen uint32 `protobuf:"varint,3,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"` Prefix string `protobuf:"bytes,4,opt,name=prefix,proto3" json:"prefix,omitempty"` } func (x *LabeledVPNIPAddressPrefix) Reset() { *x = LabeledVPNIPAddressPrefix{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LabeledVPNIPAddressPrefix) String() string { return protoimpl.X.MessageStringOf(x) } func (*LabeledVPNIPAddressPrefix) ProtoMessage() {} func (x *LabeledVPNIPAddressPrefix) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[25] 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 LabeledVPNIPAddressPrefix.ProtoReflect.Descriptor instead. func (*LabeledVPNIPAddressPrefix) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{25} } func (x *LabeledVPNIPAddressPrefix) GetLabels() []uint32 { if x != nil { return x.Labels } return nil } func (x *LabeledVPNIPAddressPrefix) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *LabeledVPNIPAddressPrefix) GetPrefixLen() uint32 { if x != nil { return x.PrefixLen } return 0 } func (x *LabeledVPNIPAddressPrefix) GetPrefix() string { if x != nil { return x.Prefix } return "" } // RouteTargetMembershipNLRI represents the NLRI for: // - AFI=1, SAFI=132 type RouteTargetMembershipNLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Asn uint32 `protobuf:"varint,1,opt,name=asn,proto3" json:"asn,omitempty"` // One of: // - TwoOctetAsSpecificExtended // - IPv4AddressSpecificExtended // - FourOctetAsSpecificExtended Rt *anypb.Any `protobuf:"bytes,2,opt,name=rt,proto3" json:"rt,omitempty"` } func (x *RouteTargetMembershipNLRI) Reset() { *x = RouteTargetMembershipNLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RouteTargetMembershipNLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*RouteTargetMembershipNLRI) ProtoMessage() {} func (x *RouteTargetMembershipNLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[26] 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 RouteTargetMembershipNLRI.ProtoReflect.Descriptor instead. func (*RouteTargetMembershipNLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{26} } func (x *RouteTargetMembershipNLRI) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *RouteTargetMembershipNLRI) GetRt() *anypb.Any { if x != nil { return x.Rt } return nil } type FlowSpecIPPrefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` PrefixLen uint32 `protobuf:"varint,2,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"` Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"` // IPv6 only Offset uint32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` } func (x *FlowSpecIPPrefix) Reset() { *x = FlowSpecIPPrefix{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FlowSpecIPPrefix) String() string { return protoimpl.X.MessageStringOf(x) } func (*FlowSpecIPPrefix) ProtoMessage() {} func (x *FlowSpecIPPrefix) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[27] 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 FlowSpecIPPrefix.ProtoReflect.Descriptor instead. func (*FlowSpecIPPrefix) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{27} } func (x *FlowSpecIPPrefix) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *FlowSpecIPPrefix) GetPrefixLen() uint32 { if x != nil { return x.PrefixLen } return 0 } func (x *FlowSpecIPPrefix) GetPrefix() string { if x != nil { return x.Prefix } return "" } func (x *FlowSpecIPPrefix) GetOffset() uint32 { if x != nil { return x.Offset } return 0 } type FlowSpecMAC struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` } func (x *FlowSpecMAC) Reset() { *x = FlowSpecMAC{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FlowSpecMAC) String() string { return protoimpl.X.MessageStringOf(x) } func (*FlowSpecMAC) ProtoMessage() {} func (x *FlowSpecMAC) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[28] 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 FlowSpecMAC.ProtoReflect.Descriptor instead. func (*FlowSpecMAC) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{28} } func (x *FlowSpecMAC) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *FlowSpecMAC) GetAddress() string { if x != nil { return x.Address } return "" } type FlowSpecComponentItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Operator for Numeric type, Operand for Bitmask type Op uint32 `protobuf:"varint,1,opt,name=op,proto3" json:"op,omitempty"` Value uint64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` } func (x *FlowSpecComponentItem) Reset() { *x = FlowSpecComponentItem{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FlowSpecComponentItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*FlowSpecComponentItem) ProtoMessage() {} func (x *FlowSpecComponentItem) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[29] 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 FlowSpecComponentItem.ProtoReflect.Descriptor instead. func (*FlowSpecComponentItem) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{29} } func (x *FlowSpecComponentItem) GetOp() uint32 { if x != nil { return x.Op } return 0 } func (x *FlowSpecComponentItem) GetValue() uint64 { if x != nil { return x.Value } return 0 } type FlowSpecComponent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` Items []*FlowSpecComponentItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` } func (x *FlowSpecComponent) Reset() { *x = FlowSpecComponent{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FlowSpecComponent) String() string { return protoimpl.X.MessageStringOf(x) } func (*FlowSpecComponent) ProtoMessage() {} func (x *FlowSpecComponent) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[30] 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 FlowSpecComponent.ProtoReflect.Descriptor instead. func (*FlowSpecComponent) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{30} } func (x *FlowSpecComponent) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *FlowSpecComponent) GetItems() []*FlowSpecComponentItem { if x != nil { return x.Items } return nil } // FlowSpecNLRI represents the NLRI for: // - AFI=1, SAFI=133 // - AFI=2, SAFI=133 type FlowSpecNLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - FlowSpecIPPrefix // - FlowSpecMAC // - FlowSpecComponent Rules []*anypb.Any `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` } func (x *FlowSpecNLRI) Reset() { *x = FlowSpecNLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FlowSpecNLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*FlowSpecNLRI) ProtoMessage() {} func (x *FlowSpecNLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[31] 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 FlowSpecNLRI.ProtoReflect.Descriptor instead. func (*FlowSpecNLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{31} } func (x *FlowSpecNLRI) GetRules() []*anypb.Any { if x != nil { return x.Rules } return nil } // VPNFlowSpecNLRI represents the NLRI for: // - AFI=1, SAFI=134 // - AFI=2, SAFI=134 // - AFI=25, SAFI=134 type VPNFlowSpecNLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetAS // - RouteDistinguisherIPAddressAS // - RouteDistinguisherFourOctetAS Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` // One of: // - FlowSpecIPPrefix // - FlowSpecMAC // - FlowSpecComponent Rules []*anypb.Any `protobuf:"bytes,2,rep,name=rules,proto3" json:"rules,omitempty"` } func (x *VPNFlowSpecNLRI) Reset() { *x = VPNFlowSpecNLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VPNFlowSpecNLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*VPNFlowSpecNLRI) ProtoMessage() {} func (x *VPNFlowSpecNLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[32] 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 VPNFlowSpecNLRI.ProtoReflect.Descriptor instead. func (*VPNFlowSpecNLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{32} } func (x *VPNFlowSpecNLRI) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *VPNFlowSpecNLRI) GetRules() []*anypb.Any { if x != nil { return x.Rules } return nil } // OpaqueNLRI represents the NLRI for: // - AFI=16397, SAFI=241 type OpaqueNLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } func (x *OpaqueNLRI) Reset() { *x = OpaqueNLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OpaqueNLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*OpaqueNLRI) ProtoMessage() {} func (x *OpaqueNLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[33] 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 OpaqueNLRI.ProtoReflect.Descriptor instead. func (*OpaqueNLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{33} } func (x *OpaqueNLRI) GetKey() []byte { if x != nil { return x.Key } return nil } func (x *OpaqueNLRI) GetValue() []byte { if x != nil { return x.Value } return nil } type LsNodeDescriptor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Asn uint32 `protobuf:"varint,1,opt,name=asn,proto3" json:"asn,omitempty"` BgpLsId uint32 `protobuf:"varint,2,opt,name=bgp_ls_id,json=bgpLsId,proto3" json:"bgp_ls_id,omitempty"` OspfAreaId uint32 `protobuf:"varint,3,opt,name=ospf_area_id,json=ospfAreaId,proto3" json:"ospf_area_id,omitempty"` Pseudonode bool `protobuf:"varint,4,opt,name=pseudonode,proto3" json:"pseudonode,omitempty"` IgpRouterId string `protobuf:"bytes,5,opt,name=igp_router_id,json=igpRouterId,proto3" json:"igp_router_id,omitempty"` } func (x *LsNodeDescriptor) Reset() { *x = LsNodeDescriptor{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsNodeDescriptor) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsNodeDescriptor) ProtoMessage() {} func (x *LsNodeDescriptor) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[34] 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 LsNodeDescriptor.ProtoReflect.Descriptor instead. func (*LsNodeDescriptor) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{34} } func (x *LsNodeDescriptor) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *LsNodeDescriptor) GetBgpLsId() uint32 { if x != nil { return x.BgpLsId } return 0 } func (x *LsNodeDescriptor) GetOspfAreaId() uint32 { if x != nil { return x.OspfAreaId } return 0 } func (x *LsNodeDescriptor) GetPseudonode() bool { if x != nil { return x.Pseudonode } return false } func (x *LsNodeDescriptor) GetIgpRouterId() string { if x != nil { return x.IgpRouterId } return "" } type LsLinkDescriptor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LinkLocalId uint32 `protobuf:"varint,1,opt,name=link_local_id,json=linkLocalId,proto3" json:"link_local_id,omitempty"` LinkRemoteId uint32 `protobuf:"varint,2,opt,name=link_remote_id,json=linkRemoteId,proto3" json:"link_remote_id,omitempty"` InterfaceAddrIpv4 string `protobuf:"bytes,3,opt,name=interface_addr_ipv4,json=interfaceAddrIpv4,proto3" json:"interface_addr_ipv4,omitempty"` NeighborAddrIpv4 string `protobuf:"bytes,4,opt,name=neighbor_addr_ipv4,json=neighborAddrIpv4,proto3" json:"neighbor_addr_ipv4,omitempty"` InterfaceAddrIpv6 string `protobuf:"bytes,5,opt,name=interface_addr_ipv6,json=interfaceAddrIpv6,proto3" json:"interface_addr_ipv6,omitempty"` NeighborAddrIpv6 string `protobuf:"bytes,6,opt,name=neighbor_addr_ipv6,json=neighborAddrIpv6,proto3" json:"neighbor_addr_ipv6,omitempty"` } func (x *LsLinkDescriptor) Reset() { *x = LsLinkDescriptor{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsLinkDescriptor) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsLinkDescriptor) ProtoMessage() {} func (x *LsLinkDescriptor) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[35] 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 LsLinkDescriptor.ProtoReflect.Descriptor instead. func (*LsLinkDescriptor) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{35} } func (x *LsLinkDescriptor) GetLinkLocalId() uint32 { if x != nil { return x.LinkLocalId } return 0 } func (x *LsLinkDescriptor) GetLinkRemoteId() uint32 { if x != nil { return x.LinkRemoteId } return 0 } func (x *LsLinkDescriptor) GetInterfaceAddrIpv4() string { if x != nil { return x.InterfaceAddrIpv4 } return "" } func (x *LsLinkDescriptor) GetNeighborAddrIpv4() string { if x != nil { return x.NeighborAddrIpv4 } return "" } func (x *LsLinkDescriptor) GetInterfaceAddrIpv6() string { if x != nil { return x.InterfaceAddrIpv6 } return "" } func (x *LsLinkDescriptor) GetNeighborAddrIpv6() string { if x != nil { return x.NeighborAddrIpv6 } return "" } type LsPrefixDescriptor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IpReachability []string `protobuf:"bytes,1,rep,name=ip_reachability,json=ipReachability,proto3" json:"ip_reachability,omitempty"` OspfRouteType LsOspfRouteType `protobuf:"varint,2,opt,name=ospf_route_type,json=ospfRouteType,proto3,enum=apipb.LsOspfRouteType" json:"ospf_route_type,omitempty"` } func (x *LsPrefixDescriptor) Reset() { *x = LsPrefixDescriptor{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsPrefixDescriptor) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsPrefixDescriptor) ProtoMessage() {} func (x *LsPrefixDescriptor) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[36] 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 LsPrefixDescriptor.ProtoReflect.Descriptor instead. func (*LsPrefixDescriptor) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{36} } func (x *LsPrefixDescriptor) GetIpReachability() []string { if x != nil { return x.IpReachability } return nil } func (x *LsPrefixDescriptor) GetOspfRouteType() LsOspfRouteType { if x != nil { return x.OspfRouteType } return LsOspfRouteType_LS_OSPF_ROUTE_TYPE_UNKNOWN } type LsNodeNLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LocalNode *LsNodeDescriptor `protobuf:"bytes,1,opt,name=local_node,json=localNode,proto3" json:"local_node,omitempty"` } func (x *LsNodeNLRI) Reset() { *x = LsNodeNLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsNodeNLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsNodeNLRI) ProtoMessage() {} func (x *LsNodeNLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[37] 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 LsNodeNLRI.ProtoReflect.Descriptor instead. func (*LsNodeNLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{37} } func (x *LsNodeNLRI) GetLocalNode() *LsNodeDescriptor { if x != nil { return x.LocalNode } return nil } type LsLinkNLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LocalNode *LsNodeDescriptor `protobuf:"bytes,1,opt,name=local_node,json=localNode,proto3" json:"local_node,omitempty"` RemoteNode *LsNodeDescriptor `protobuf:"bytes,2,opt,name=remote_node,json=remoteNode,proto3" json:"remote_node,omitempty"` LinkDescriptor *LsLinkDescriptor `protobuf:"bytes,3,opt,name=link_descriptor,json=linkDescriptor,proto3" json:"link_descriptor,omitempty"` } func (x *LsLinkNLRI) Reset() { *x = LsLinkNLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsLinkNLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsLinkNLRI) ProtoMessage() {} func (x *LsLinkNLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[38] 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 LsLinkNLRI.ProtoReflect.Descriptor instead. func (*LsLinkNLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{38} } func (x *LsLinkNLRI) GetLocalNode() *LsNodeDescriptor { if x != nil { return x.LocalNode } return nil } func (x *LsLinkNLRI) GetRemoteNode() *LsNodeDescriptor { if x != nil { return x.RemoteNode } return nil } func (x *LsLinkNLRI) GetLinkDescriptor() *LsLinkDescriptor { if x != nil { return x.LinkDescriptor } return nil } type LsPrefixV4NLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LocalNode *LsNodeDescriptor `protobuf:"bytes,1,opt,name=local_node,json=localNode,proto3" json:"local_node,omitempty"` PrefixDescriptor *LsPrefixDescriptor `protobuf:"bytes,2,opt,name=prefix_descriptor,json=prefixDescriptor,proto3" json:"prefix_descriptor,omitempty"` } func (x *LsPrefixV4NLRI) Reset() { *x = LsPrefixV4NLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsPrefixV4NLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsPrefixV4NLRI) ProtoMessage() {} func (x *LsPrefixV4NLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[39] 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 LsPrefixV4NLRI.ProtoReflect.Descriptor instead. func (*LsPrefixV4NLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{39} } func (x *LsPrefixV4NLRI) GetLocalNode() *LsNodeDescriptor { if x != nil { return x.LocalNode } return nil } func (x *LsPrefixV4NLRI) GetPrefixDescriptor() *LsPrefixDescriptor { if x != nil { return x.PrefixDescriptor } return nil } type LsPrefixV6NLRI struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LocalNode *LsNodeDescriptor `protobuf:"bytes,1,opt,name=local_node,json=localNode,proto3" json:"local_node,omitempty"` PrefixDescriptor *LsPrefixDescriptor `protobuf:"bytes,2,opt,name=prefix_descriptor,json=prefixDescriptor,proto3" json:"prefix_descriptor,omitempty"` } func (x *LsPrefixV6NLRI) Reset() { *x = LsPrefixV6NLRI{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsPrefixV6NLRI) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsPrefixV6NLRI) ProtoMessage() {} func (x *LsPrefixV6NLRI) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[40] 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 LsPrefixV6NLRI.ProtoReflect.Descriptor instead. func (*LsPrefixV6NLRI) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{40} } func (x *LsPrefixV6NLRI) GetLocalNode() *LsNodeDescriptor { if x != nil { return x.LocalNode } return nil } func (x *LsPrefixV6NLRI) GetPrefixDescriptor() *LsPrefixDescriptor { if x != nil { return x.PrefixDescriptor } return nil } // LsAddrPrefix represents the NLRI for: // - AFI=16388, SAFI=71 type LsAddrPrefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type LsNLRIType `protobuf:"varint,1,opt,name=type,proto3,enum=apipb.LsNLRIType" json:"type,omitempty"` // One of: // - LsNodeNLRI // - LsLinkNLRI // - LsPrefixV4NLRI // - LsPrefixV6NLRI Nlri *anypb.Any `protobuf:"bytes,2,opt,name=nlri,proto3" json:"nlri,omitempty"` Length uint32 `protobuf:"varint,3,opt,name=length,proto3" json:"length,omitempty"` ProtocolId LsProtocolID `protobuf:"varint,4,opt,name=protocol_id,json=protocolId,proto3,enum=apipb.LsProtocolID" json:"protocol_id,omitempty"` Identifier uint64 `protobuf:"varint,5,opt,name=identifier,proto3" json:"identifier,omitempty"` } func (x *LsAddrPrefix) Reset() { *x = LsAddrPrefix{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsAddrPrefix) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsAddrPrefix) ProtoMessage() {} func (x *LsAddrPrefix) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[41] 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 LsAddrPrefix.ProtoReflect.Descriptor instead. func (*LsAddrPrefix) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{41} } func (x *LsAddrPrefix) GetType() LsNLRIType { if x != nil { return x.Type } return LsNLRIType_LS_NLRI_UNKNOWN } func (x *LsAddrPrefix) GetNlri() *anypb.Any { if x != nil { return x.Nlri } return nil } func (x *LsAddrPrefix) GetLength() uint32 { if x != nil { return x.Length } return 0 } func (x *LsAddrPrefix) GetProtocolId() LsProtocolID { if x != nil { return x.ProtocolId } return LsProtocolID_LS_PROTOCOL_UNKNOWN } func (x *LsAddrPrefix) GetIdentifier() uint64 { if x != nil { return x.Identifier } return 0 } type MUPInterworkSegmentDiscoveryRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"` } func (x *MUPInterworkSegmentDiscoveryRoute) Reset() { *x = MUPInterworkSegmentDiscoveryRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MUPInterworkSegmentDiscoveryRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*MUPInterworkSegmentDiscoveryRoute) ProtoMessage() {} func (x *MUPInterworkSegmentDiscoveryRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[42] 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 MUPInterworkSegmentDiscoveryRoute.ProtoReflect.Descriptor instead. func (*MUPInterworkSegmentDiscoveryRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{42} } func (x *MUPInterworkSegmentDiscoveryRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *MUPInterworkSegmentDiscoveryRoute) GetPrefix() string { if x != nil { return x.Prefix } return "" } type MUPDirectSegmentDiscoveryRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` } func (x *MUPDirectSegmentDiscoveryRoute) Reset() { *x = MUPDirectSegmentDiscoveryRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MUPDirectSegmentDiscoveryRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*MUPDirectSegmentDiscoveryRoute) ProtoMessage() {} func (x *MUPDirectSegmentDiscoveryRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[43] 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 MUPDirectSegmentDiscoveryRoute.ProtoReflect.Descriptor instead. func (*MUPDirectSegmentDiscoveryRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{43} } func (x *MUPDirectSegmentDiscoveryRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *MUPDirectSegmentDiscoveryRoute) GetAddress() string { if x != nil { return x.Address } return "" } type MUPType1SessionTransformedRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` // Deprecated: Do not use. PrefixLength uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3" json:"prefix_length,omitempty"` Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"` Teid uint32 `protobuf:"varint,4,opt,name=teid,proto3" json:"teid,omitempty"` Qfi uint32 `protobuf:"varint,5,opt,name=qfi,proto3" json:"qfi,omitempty"` EndpointAddressLength uint32 `protobuf:"varint,6,opt,name=endpoint_address_length,json=endpointAddressLength,proto3" json:"endpoint_address_length,omitempty"` EndpointAddress string `protobuf:"bytes,7,opt,name=endpoint_address,json=endpointAddress,proto3" json:"endpoint_address,omitempty"` } func (x *MUPType1SessionTransformedRoute) Reset() { *x = MUPType1SessionTransformedRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MUPType1SessionTransformedRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*MUPType1SessionTransformedRoute) ProtoMessage() {} func (x *MUPType1SessionTransformedRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[44] 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 MUPType1SessionTransformedRoute.ProtoReflect.Descriptor instead. func (*MUPType1SessionTransformedRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{44} } func (x *MUPType1SessionTransformedRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } // Deprecated: Do not use. func (x *MUPType1SessionTransformedRoute) GetPrefixLength() uint32 { if x != nil { return x.PrefixLength } return 0 } func (x *MUPType1SessionTransformedRoute) GetPrefix() string { if x != nil { return x.Prefix } return "" } func (x *MUPType1SessionTransformedRoute) GetTeid() uint32 { if x != nil { return x.Teid } return 0 } func (x *MUPType1SessionTransformedRoute) GetQfi() uint32 { if x != nil { return x.Qfi } return 0 } func (x *MUPType1SessionTransformedRoute) GetEndpointAddressLength() uint32 { if x != nil { return x.EndpointAddressLength } return 0 } func (x *MUPType1SessionTransformedRoute) GetEndpointAddress() string { if x != nil { return x.EndpointAddress } return "" } type MUPType2SessionTransformedRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // One of: // - RouteDistinguisherTwoOctetASN // - RouteDistinguisherIPAddress // - RouteDistinguisherFourOctetASN Rd *anypb.Any `protobuf:"bytes,1,opt,name=rd,proto3" json:"rd,omitempty"` EndpointAddressLength uint32 `protobuf:"varint,2,opt,name=endpoint_address_length,json=endpointAddressLength,proto3" json:"endpoint_address_length,omitempty"` EndpointAddress string `protobuf:"bytes,3,opt,name=endpoint_address,json=endpointAddress,proto3" json:"endpoint_address,omitempty"` Teid uint32 `protobuf:"varint,4,opt,name=teid,proto3" json:"teid,omitempty"` } func (x *MUPType2SessionTransformedRoute) Reset() { *x = MUPType2SessionTransformedRoute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MUPType2SessionTransformedRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*MUPType2SessionTransformedRoute) ProtoMessage() {} func (x *MUPType2SessionTransformedRoute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[45] 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 MUPType2SessionTransformedRoute.ProtoReflect.Descriptor instead. func (*MUPType2SessionTransformedRoute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{45} } func (x *MUPType2SessionTransformedRoute) GetRd() *anypb.Any { if x != nil { return x.Rd } return nil } func (x *MUPType2SessionTransformedRoute) GetEndpointAddressLength() uint32 { if x != nil { return x.EndpointAddressLength } return 0 } func (x *MUPType2SessionTransformedRoute) GetEndpointAddress() string { if x != nil { return x.EndpointAddress } return "" } func (x *MUPType2SessionTransformedRoute) GetTeid() uint32 { if x != nil { return x.Teid } return 0 } type MpReachNLRIAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Family *Family `protobuf:"bytes,1,opt,name=family,proto3" json:"family,omitempty"` NextHops []string `protobuf:"bytes,2,rep,name=next_hops,json=nextHops,proto3" json:"next_hops,omitempty"` // Each NLRI must be one of: // - IPAddressPrefix // - LabeledIPAddressPrefix // - EncapsulationNLRI // - EVPNEthernetAutoDiscoveryRoute // - EVPNMACIPAdvertisementRoute // - EVPNInclusiveMulticastEthernetTagRoute // - EVPNEthernetSegmentRoute // - EVPNIPPrefixRoute // - EVPNIPMSIRoute // - LabeledVPNIPAddressPrefix // - RouteTargetMembershipNLRI // - FlowSpecNLRI // - VPNFlowSpecNLRI // - OpaqueNLRI // - LsAddrPrefix // - SR Policy NLRI // - MUPInterworkSegmentDiscoveryRoute // - MUPDirectSegmentDiscoveryRoute // - MUPType1SessionTransformedRoute // - MUPType2SessionTransformedRoute Nlris []*anypb.Any `protobuf:"bytes,3,rep,name=nlris,proto3" json:"nlris,omitempty"` } func (x *MpReachNLRIAttribute) Reset() { *x = MpReachNLRIAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MpReachNLRIAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*MpReachNLRIAttribute) ProtoMessage() {} func (x *MpReachNLRIAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[46] 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 MpReachNLRIAttribute.ProtoReflect.Descriptor instead. func (*MpReachNLRIAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{46} } func (x *MpReachNLRIAttribute) GetFamily() *Family { if x != nil { return x.Family } return nil } func (x *MpReachNLRIAttribute) GetNextHops() []string { if x != nil { return x.NextHops } return nil } func (x *MpReachNLRIAttribute) GetNlris() []*anypb.Any { if x != nil { return x.Nlris } return nil } type MpUnreachNLRIAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Family *Family `protobuf:"bytes,1,opt,name=family,proto3" json:"family,omitempty"` // The same as NLRI field of MpReachNLRIAttribute Nlris []*anypb.Any `protobuf:"bytes,3,rep,name=nlris,proto3" json:"nlris,omitempty"` } func (x *MpUnreachNLRIAttribute) Reset() { *x = MpUnreachNLRIAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MpUnreachNLRIAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*MpUnreachNLRIAttribute) ProtoMessage() {} func (x *MpUnreachNLRIAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[47] 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 MpUnreachNLRIAttribute.ProtoReflect.Descriptor instead. func (*MpUnreachNLRIAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{47} } func (x *MpUnreachNLRIAttribute) GetFamily() *Family { if x != nil { return x.Family } return nil } func (x *MpUnreachNLRIAttribute) GetNlris() []*anypb.Any { if x != nil { return x.Nlris } return nil } type TwoOctetAsSpecificExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IsTransitive bool `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive,proto3" json:"is_transitive,omitempty"` SubType uint32 `protobuf:"varint,2,opt,name=sub_type,json=subType,proto3" json:"sub_type,omitempty"` Asn uint32 `protobuf:"varint,3,opt,name=asn,proto3" json:"asn,omitempty"` LocalAdmin uint32 `protobuf:"varint,4,opt,name=local_admin,json=localAdmin,proto3" json:"local_admin,omitempty"` } func (x *TwoOctetAsSpecificExtended) Reset() { *x = TwoOctetAsSpecificExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TwoOctetAsSpecificExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*TwoOctetAsSpecificExtended) ProtoMessage() {} func (x *TwoOctetAsSpecificExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[48] 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 TwoOctetAsSpecificExtended.ProtoReflect.Descriptor instead. func (*TwoOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{48} } func (x *TwoOctetAsSpecificExtended) GetIsTransitive() bool { if x != nil { return x.IsTransitive } return false } func (x *TwoOctetAsSpecificExtended) GetSubType() uint32 { if x != nil { return x.SubType } return 0 } func (x *TwoOctetAsSpecificExtended) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *TwoOctetAsSpecificExtended) GetLocalAdmin() uint32 { if x != nil { return x.LocalAdmin } return 0 } type IPv4AddressSpecificExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IsTransitive bool `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive,proto3" json:"is_transitive,omitempty"` SubType uint32 `protobuf:"varint,2,opt,name=sub_type,json=subType,proto3" json:"sub_type,omitempty"` Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` LocalAdmin uint32 `protobuf:"varint,4,opt,name=local_admin,json=localAdmin,proto3" json:"local_admin,omitempty"` } func (x *IPv4AddressSpecificExtended) Reset() { *x = IPv4AddressSpecificExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IPv4AddressSpecificExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*IPv4AddressSpecificExtended) ProtoMessage() {} func (x *IPv4AddressSpecificExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[49] 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 IPv4AddressSpecificExtended.ProtoReflect.Descriptor instead. func (*IPv4AddressSpecificExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{49} } func (x *IPv4AddressSpecificExtended) GetIsTransitive() bool { if x != nil { return x.IsTransitive } return false } func (x *IPv4AddressSpecificExtended) GetSubType() uint32 { if x != nil { return x.SubType } return 0 } func (x *IPv4AddressSpecificExtended) GetAddress() string { if x != nil { return x.Address } return "" } func (x *IPv4AddressSpecificExtended) GetLocalAdmin() uint32 { if x != nil { return x.LocalAdmin } return 0 } type FourOctetAsSpecificExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IsTransitive bool `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive,proto3" json:"is_transitive,omitempty"` SubType uint32 `protobuf:"varint,2,opt,name=sub_type,json=subType,proto3" json:"sub_type,omitempty"` Asn uint32 `protobuf:"varint,3,opt,name=asn,proto3" json:"asn,omitempty"` LocalAdmin uint32 `protobuf:"varint,4,opt,name=local_admin,json=localAdmin,proto3" json:"local_admin,omitempty"` } func (x *FourOctetAsSpecificExtended) Reset() { *x = FourOctetAsSpecificExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FourOctetAsSpecificExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*FourOctetAsSpecificExtended) ProtoMessage() {} func (x *FourOctetAsSpecificExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[50] 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 FourOctetAsSpecificExtended.ProtoReflect.Descriptor instead. func (*FourOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{50} } func (x *FourOctetAsSpecificExtended) GetIsTransitive() bool { if x != nil { return x.IsTransitive } return false } func (x *FourOctetAsSpecificExtended) GetSubType() uint32 { if x != nil { return x.SubType } return 0 } func (x *FourOctetAsSpecificExtended) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *FourOctetAsSpecificExtended) GetLocalAdmin() uint32 { if x != nil { return x.LocalAdmin } return 0 } type LinkBandwidthExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Asn uint32 `protobuf:"varint,1,opt,name=asn,proto3" json:"asn,omitempty"` Bandwidth float32 `protobuf:"fixed32,2,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` } func (x *LinkBandwidthExtended) Reset() { *x = LinkBandwidthExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LinkBandwidthExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*LinkBandwidthExtended) ProtoMessage() {} func (x *LinkBandwidthExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[51] 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 LinkBandwidthExtended.ProtoReflect.Descriptor instead. func (*LinkBandwidthExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{51} } func (x *LinkBandwidthExtended) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *LinkBandwidthExtended) GetBandwidth() float32 { if x != nil { return x.Bandwidth } return 0 } type ValidationExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields State uint32 `protobuf:"varint,1,opt,name=state,proto3" json:"state,omitempty"` } func (x *ValidationExtended) Reset() { *x = ValidationExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ValidationExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*ValidationExtended) ProtoMessage() {} func (x *ValidationExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[52] 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 ValidationExtended.ProtoReflect.Descriptor instead. func (*ValidationExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{52} } func (x *ValidationExtended) GetState() uint32 { if x != nil { return x.State } return 0 } type ColorExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Color uint32 `protobuf:"varint,1,opt,name=color,proto3" json:"color,omitempty"` } func (x *ColorExtended) Reset() { *x = ColorExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ColorExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*ColorExtended) ProtoMessage() {} func (x *ColorExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[53] 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 ColorExtended.ProtoReflect.Descriptor instead. func (*ColorExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{53} } func (x *ColorExtended) GetColor() uint32 { if x != nil { return x.Color } return 0 } type EncapExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TunnelType uint32 `protobuf:"varint,1,opt,name=tunnel_type,json=tunnelType,proto3" json:"tunnel_type,omitempty"` } func (x *EncapExtended) Reset() { *x = EncapExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EncapExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*EncapExtended) ProtoMessage() {} func (x *EncapExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[54] 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 EncapExtended.ProtoReflect.Descriptor instead. func (*EncapExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{54} } func (x *EncapExtended) GetTunnelType() uint32 { if x != nil { return x.TunnelType } return 0 } type DefaultGatewayExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DefaultGatewayExtended) Reset() { *x = DefaultGatewayExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DefaultGatewayExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*DefaultGatewayExtended) ProtoMessage() {} func (x *DefaultGatewayExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[55] 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 DefaultGatewayExtended.ProtoReflect.Descriptor instead. func (*DefaultGatewayExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{55} } type OpaqueExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IsTransitive bool `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive,proto3" json:"is_transitive,omitempty"` Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` } func (x *OpaqueExtended) Reset() { *x = OpaqueExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OpaqueExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*OpaqueExtended) ProtoMessage() {} func (x *OpaqueExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[56] 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 OpaqueExtended.ProtoReflect.Descriptor instead. func (*OpaqueExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{56} } func (x *OpaqueExtended) GetIsTransitive() bool { if x != nil { return x.IsTransitive } return false } func (x *OpaqueExtended) GetValue() []byte { if x != nil { return x.Value } return nil } type ESILabelExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IsSingleActive bool `protobuf:"varint,1,opt,name=is_single_active,json=isSingleActive,proto3" json:"is_single_active,omitempty"` Label uint32 `protobuf:"varint,2,opt,name=label,proto3" json:"label,omitempty"` } func (x *ESILabelExtended) Reset() { *x = ESILabelExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ESILabelExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*ESILabelExtended) ProtoMessage() {} func (x *ESILabelExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[57] 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 ESILabelExtended.ProtoReflect.Descriptor instead. func (*ESILabelExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{57} } func (x *ESILabelExtended) GetIsSingleActive() bool { if x != nil { return x.IsSingleActive } return false } func (x *ESILabelExtended) GetLabel() uint32 { if x != nil { return x.Label } return 0 } type ESImportRouteTarget struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields EsImport string `protobuf:"bytes,1,opt,name=es_import,json=esImport,proto3" json:"es_import,omitempty"` } func (x *ESImportRouteTarget) Reset() { *x = ESImportRouteTarget{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ESImportRouteTarget) String() string { return protoimpl.X.MessageStringOf(x) } func (*ESImportRouteTarget) ProtoMessage() {} func (x *ESImportRouteTarget) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[58] 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 ESImportRouteTarget.ProtoReflect.Descriptor instead. func (*ESImportRouteTarget) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{58} } func (x *ESImportRouteTarget) GetEsImport() string { if x != nil { return x.EsImport } return "" } type MacMobilityExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IsSticky bool `protobuf:"varint,1,opt,name=is_sticky,json=isSticky,proto3" json:"is_sticky,omitempty"` SequenceNum uint32 `protobuf:"varint,2,opt,name=sequence_num,json=sequenceNum,proto3" json:"sequence_num,omitempty"` } func (x *MacMobilityExtended) Reset() { *x = MacMobilityExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MacMobilityExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*MacMobilityExtended) ProtoMessage() {} func (x *MacMobilityExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[59] 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 MacMobilityExtended.ProtoReflect.Descriptor instead. func (*MacMobilityExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{59} } func (x *MacMobilityExtended) GetIsSticky() bool { if x != nil { return x.IsSticky } return false } func (x *MacMobilityExtended) GetSequenceNum() uint32 { if x != nil { return x.SequenceNum } return 0 } type RouterMacExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Mac string `protobuf:"bytes,1,opt,name=mac,proto3" json:"mac,omitempty"` } func (x *RouterMacExtended) Reset() { *x = RouterMacExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RouterMacExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*RouterMacExtended) ProtoMessage() {} func (x *RouterMacExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[60] 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 RouterMacExtended.ProtoReflect.Descriptor instead. func (*RouterMacExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{60} } func (x *RouterMacExtended) GetMac() string { if x != nil { return x.Mac } return "" } type TrafficRateExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Asn uint32 `protobuf:"varint,1,opt,name=asn,proto3" json:"asn,omitempty"` Rate float32 `protobuf:"fixed32,2,opt,name=rate,proto3" json:"rate,omitempty"` } func (x *TrafficRateExtended) Reset() { *x = TrafficRateExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TrafficRateExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*TrafficRateExtended) ProtoMessage() {} func (x *TrafficRateExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[61] 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 TrafficRateExtended.ProtoReflect.Descriptor instead. func (*TrafficRateExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{61} } func (x *TrafficRateExtended) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *TrafficRateExtended) GetRate() float32 { if x != nil { return x.Rate } return 0 } type TrafficActionExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Terminal bool `protobuf:"varint,1,opt,name=terminal,proto3" json:"terminal,omitempty"` Sample bool `protobuf:"varint,2,opt,name=sample,proto3" json:"sample,omitempty"` } func (x *TrafficActionExtended) Reset() { *x = TrafficActionExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TrafficActionExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*TrafficActionExtended) ProtoMessage() {} func (x *TrafficActionExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[62] 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 TrafficActionExtended.ProtoReflect.Descriptor instead. func (*TrafficActionExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{62} } func (x *TrafficActionExtended) GetTerminal() bool { if x != nil { return x.Terminal } return false } func (x *TrafficActionExtended) GetSample() bool { if x != nil { return x.Sample } return false } type RedirectTwoOctetAsSpecificExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Asn uint32 `protobuf:"varint,1,opt,name=asn,proto3" json:"asn,omitempty"` LocalAdmin uint32 `protobuf:"varint,2,opt,name=local_admin,json=localAdmin,proto3" json:"local_admin,omitempty"` } func (x *RedirectTwoOctetAsSpecificExtended) Reset() { *x = RedirectTwoOctetAsSpecificExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RedirectTwoOctetAsSpecificExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*RedirectTwoOctetAsSpecificExtended) ProtoMessage() {} func (x *RedirectTwoOctetAsSpecificExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[63] 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 RedirectTwoOctetAsSpecificExtended.ProtoReflect.Descriptor instead. func (*RedirectTwoOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{63} } func (x *RedirectTwoOctetAsSpecificExtended) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *RedirectTwoOctetAsSpecificExtended) GetLocalAdmin() uint32 { if x != nil { return x.LocalAdmin } return 0 } type RedirectIPv4AddressSpecificExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` LocalAdmin uint32 `protobuf:"varint,2,opt,name=local_admin,json=localAdmin,proto3" json:"local_admin,omitempty"` } func (x *RedirectIPv4AddressSpecificExtended) Reset() { *x = RedirectIPv4AddressSpecificExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RedirectIPv4AddressSpecificExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*RedirectIPv4AddressSpecificExtended) ProtoMessage() {} func (x *RedirectIPv4AddressSpecificExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[64] 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 RedirectIPv4AddressSpecificExtended.ProtoReflect.Descriptor instead. func (*RedirectIPv4AddressSpecificExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{64} } func (x *RedirectIPv4AddressSpecificExtended) GetAddress() string { if x != nil { return x.Address } return "" } func (x *RedirectIPv4AddressSpecificExtended) GetLocalAdmin() uint32 { if x != nil { return x.LocalAdmin } return 0 } type RedirectFourOctetAsSpecificExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Asn uint32 `protobuf:"varint,1,opt,name=asn,proto3" json:"asn,omitempty"` LocalAdmin uint32 `protobuf:"varint,2,opt,name=local_admin,json=localAdmin,proto3" json:"local_admin,omitempty"` } func (x *RedirectFourOctetAsSpecificExtended) Reset() { *x = RedirectFourOctetAsSpecificExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RedirectFourOctetAsSpecificExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*RedirectFourOctetAsSpecificExtended) ProtoMessage() {} func (x *RedirectFourOctetAsSpecificExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[65] 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 RedirectFourOctetAsSpecificExtended.ProtoReflect.Descriptor instead. func (*RedirectFourOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{65} } func (x *RedirectFourOctetAsSpecificExtended) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *RedirectFourOctetAsSpecificExtended) GetLocalAdmin() uint32 { if x != nil { return x.LocalAdmin } return 0 } type TrafficRemarkExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Dscp uint32 `protobuf:"varint,1,opt,name=dscp,proto3" json:"dscp,omitempty"` } func (x *TrafficRemarkExtended) Reset() { *x = TrafficRemarkExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TrafficRemarkExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*TrafficRemarkExtended) ProtoMessage() {} func (x *TrafficRemarkExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[66] 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 TrafficRemarkExtended.ProtoReflect.Descriptor instead. func (*TrafficRemarkExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{66} } func (x *TrafficRemarkExtended) GetDscp() uint32 { if x != nil { return x.Dscp } return 0 } type MUPExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SubType uint32 `protobuf:"varint,1,opt,name=sub_type,json=subType,proto3" json:"sub_type,omitempty"` SegmentId2 uint32 `protobuf:"varint,2,opt,name=segment_id2,json=segmentId2,proto3" json:"segment_id2,omitempty"` SegmentId4 uint32 `protobuf:"varint,3,opt,name=segment_id4,json=segmentId4,proto3" json:"segment_id4,omitempty"` } func (x *MUPExtended) Reset() { *x = MUPExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MUPExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*MUPExtended) ProtoMessage() {} func (x *MUPExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[67] 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 MUPExtended.ProtoReflect.Descriptor instead. func (*MUPExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{67} } func (x *MUPExtended) GetSubType() uint32 { if x != nil { return x.SubType } return 0 } func (x *MUPExtended) GetSegmentId2() uint32 { if x != nil { return x.SegmentId2 } return 0 } func (x *MUPExtended) GetSegmentId4() uint32 { if x != nil { return x.SegmentId4 } return 0 } type UnknownExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } func (x *UnknownExtended) Reset() { *x = UnknownExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UnknownExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*UnknownExtended) ProtoMessage() {} func (x *UnknownExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[68] 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 UnknownExtended.ProtoReflect.Descriptor instead. func (*UnknownExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{68} } func (x *UnknownExtended) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *UnknownExtended) GetValue() []byte { if x != nil { return x.Value } return nil } type ExtendedCommunitiesAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Each Community must be one of: // - TwoOctetAsSpecificExtended // - IPv4AddressSpecificExtended // - FourOctetAsSpecificExtended // - OpaqueExtended // - ESILabelExtended // - MacMobilityExtended // - RouterMacExtended // - TrafficRateExtended // - TrafficActionExtended // - RedirectTwoOctetAsSpecificExtended // - RedirectIPv4AddressSpecificExtended // - RedirectFourOctetAsSpecificExtended // - TrafficRemarkExtended // - MUPExtended // - UnknownExtended Communities []*anypb.Any `protobuf:"bytes,1,rep,name=communities,proto3" json:"communities,omitempty"` } func (x *ExtendedCommunitiesAttribute) Reset() { *x = ExtendedCommunitiesAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ExtendedCommunitiesAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExtendedCommunitiesAttribute) ProtoMessage() {} func (x *ExtendedCommunitiesAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[69] 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 ExtendedCommunitiesAttribute.ProtoReflect.Descriptor instead. func (*ExtendedCommunitiesAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{69} } func (x *ExtendedCommunitiesAttribute) GetCommunities() []*anypb.Any { if x != nil { return x.Communities } return nil } type As4PathAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Segments []*AsSegment `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty"` } func (x *As4PathAttribute) Reset() { *x = As4PathAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *As4PathAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*As4PathAttribute) ProtoMessage() {} func (x *As4PathAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[70] 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 As4PathAttribute.ProtoReflect.Descriptor instead. func (*As4PathAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{70} } func (x *As4PathAttribute) GetSegments() []*AsSegment { if x != nil { return x.Segments } return nil } type As4AggregatorAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Asn uint32 `protobuf:"varint,2,opt,name=asn,proto3" json:"asn,omitempty"` Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` } func (x *As4AggregatorAttribute) Reset() { *x = As4AggregatorAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *As4AggregatorAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*As4AggregatorAttribute) ProtoMessage() {} func (x *As4AggregatorAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[71] 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 As4AggregatorAttribute.ProtoReflect.Descriptor instead. func (*As4AggregatorAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{71} } func (x *As4AggregatorAttribute) GetAsn() uint32 { if x != nil { return x.Asn } return 0 } func (x *As4AggregatorAttribute) GetAddress() string { if x != nil { return x.Address } return "" } type PmsiTunnelAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flags uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"` Type uint32 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"` Label uint32 `protobuf:"varint,3,opt,name=label,proto3" json:"label,omitempty"` Id []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"` } func (x *PmsiTunnelAttribute) Reset() { *x = PmsiTunnelAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PmsiTunnelAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*PmsiTunnelAttribute) ProtoMessage() {} func (x *PmsiTunnelAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[72] 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 PmsiTunnelAttribute.ProtoReflect.Descriptor instead. func (*PmsiTunnelAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{72} } func (x *PmsiTunnelAttribute) GetFlags() uint32 { if x != nil { return x.Flags } return 0 } func (x *PmsiTunnelAttribute) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *PmsiTunnelAttribute) GetLabel() uint32 { if x != nil { return x.Label } return 0 } func (x *PmsiTunnelAttribute) GetId() []byte { if x != nil { return x.Id } return nil } type TunnelEncapSubTLVEncapsulation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key uint32 `protobuf:"varint,1,opt,name=key,proto3" json:"key,omitempty"` Cookie []byte `protobuf:"bytes,2,opt,name=cookie,proto3" json:"cookie,omitempty"` } func (x *TunnelEncapSubTLVEncapsulation) Reset() { *x = TunnelEncapSubTLVEncapsulation{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVEncapsulation) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVEncapsulation) ProtoMessage() {} func (x *TunnelEncapSubTLVEncapsulation) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[73] 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 TunnelEncapSubTLVEncapsulation.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVEncapsulation) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{73} } func (x *TunnelEncapSubTLVEncapsulation) GetKey() uint32 { if x != nil { return x.Key } return 0 } func (x *TunnelEncapSubTLVEncapsulation) GetCookie() []byte { if x != nil { return x.Cookie } return nil } type TunnelEncapSubTLVProtocol struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Protocol uint32 `protobuf:"varint,1,opt,name=protocol,proto3" json:"protocol,omitempty"` } func (x *TunnelEncapSubTLVProtocol) Reset() { *x = TunnelEncapSubTLVProtocol{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVProtocol) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVProtocol) ProtoMessage() {} func (x *TunnelEncapSubTLVProtocol) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[74] 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 TunnelEncapSubTLVProtocol.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVProtocol) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{74} } func (x *TunnelEncapSubTLVProtocol) GetProtocol() uint32 { if x != nil { return x.Protocol } return 0 } type TunnelEncapSubTLVColor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Color uint32 `protobuf:"varint,1,opt,name=color,proto3" json:"color,omitempty"` } func (x *TunnelEncapSubTLVColor) Reset() { *x = TunnelEncapSubTLVColor{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVColor) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVColor) ProtoMessage() {} func (x *TunnelEncapSubTLVColor) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[75] 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 TunnelEncapSubTLVColor.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVColor) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{75} } func (x *TunnelEncapSubTLVColor) GetColor() uint32 { if x != nil { return x.Color } return 0 } type TunnelEncapSubTLVSRPreference struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flags uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"` Preference uint32 `protobuf:"varint,2,opt,name=preference,proto3" json:"preference,omitempty"` } func (x *TunnelEncapSubTLVSRPreference) Reset() { *x = TunnelEncapSubTLVSRPreference{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVSRPreference) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVSRPreference) ProtoMessage() {} func (x *TunnelEncapSubTLVSRPreference) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[76] 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 TunnelEncapSubTLVSRPreference.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVSRPreference) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{76} } func (x *TunnelEncapSubTLVSRPreference) GetFlags() uint32 { if x != nil { return x.Flags } return 0 } func (x *TunnelEncapSubTLVSRPreference) GetPreference() uint32 { if x != nil { return x.Preference } return 0 } type TunnelEncapSubTLVSRCandidatePathName struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CandidatePathName string `protobuf:"bytes,1,opt,name=candidate_path_name,json=candidatePathName,proto3" json:"candidate_path_name,omitempty"` } func (x *TunnelEncapSubTLVSRCandidatePathName) Reset() { *x = TunnelEncapSubTLVSRCandidatePathName{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVSRCandidatePathName) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVSRCandidatePathName) ProtoMessage() {} func (x *TunnelEncapSubTLVSRCandidatePathName) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[77] 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 TunnelEncapSubTLVSRCandidatePathName.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVSRCandidatePathName) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{77} } func (x *TunnelEncapSubTLVSRCandidatePathName) GetCandidatePathName() string { if x != nil { return x.CandidatePathName } return "" } type TunnelEncapSubTLVSRPriority struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Priority uint32 `protobuf:"varint,1,opt,name=priority,proto3" json:"priority,omitempty"` } func (x *TunnelEncapSubTLVSRPriority) Reset() { *x = TunnelEncapSubTLVSRPriority{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVSRPriority) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVSRPriority) ProtoMessage() {} func (x *TunnelEncapSubTLVSRPriority) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[78] 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 TunnelEncapSubTLVSRPriority.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVSRPriority) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{78} } func (x *TunnelEncapSubTLVSRPriority) GetPriority() uint32 { if x != nil { return x.Priority } return 0 } type TunnelEncapSubTLVSRBindingSID struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // bsid must be one of: // - SRBindingSID // - SRv6BindingSID Bsid *anypb.Any `protobuf:"bytes,1,opt,name=bsid,proto3" json:"bsid,omitempty"` } func (x *TunnelEncapSubTLVSRBindingSID) Reset() { *x = TunnelEncapSubTLVSRBindingSID{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVSRBindingSID) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVSRBindingSID) ProtoMessage() {} func (x *TunnelEncapSubTLVSRBindingSID) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[79] 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 TunnelEncapSubTLVSRBindingSID.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVSRBindingSID) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{79} } func (x *TunnelEncapSubTLVSRBindingSID) GetBsid() *anypb.Any { if x != nil { return x.Bsid } return nil } type SRBindingSID struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SFlag bool `protobuf:"varint,1,opt,name=s_flag,json=sFlag,proto3" json:"s_flag,omitempty"` IFlag bool `protobuf:"varint,2,opt,name=i_flag,json=iFlag,proto3" json:"i_flag,omitempty"` Sid []byte `protobuf:"bytes,3,opt,name=sid,proto3" json:"sid,omitempty"` } func (x *SRBindingSID) Reset() { *x = SRBindingSID{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRBindingSID) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRBindingSID) ProtoMessage() {} func (x *SRBindingSID) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[80] 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 SRBindingSID.ProtoReflect.Descriptor instead. func (*SRBindingSID) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{80} } func (x *SRBindingSID) GetSFlag() bool { if x != nil { return x.SFlag } return false } func (x *SRBindingSID) GetIFlag() bool { if x != nil { return x.IFlag } return false } func (x *SRBindingSID) GetSid() []byte { if x != nil { return x.Sid } return nil } type SRv6EndPointBehavior struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Behavior SRv6Behavior `protobuf:"varint,1,opt,name=behavior,proto3,enum=apipb.SRv6Behavior" json:"behavior,omitempty"` BlockLen uint32 `protobuf:"varint,2,opt,name=block_len,json=blockLen,proto3" json:"block_len,omitempty"` NodeLen uint32 `protobuf:"varint,3,opt,name=node_len,json=nodeLen,proto3" json:"node_len,omitempty"` FuncLen uint32 `protobuf:"varint,4,opt,name=func_len,json=funcLen,proto3" json:"func_len,omitempty"` ArgLen uint32 `protobuf:"varint,5,opt,name=arg_len,json=argLen,proto3" json:"arg_len,omitempty"` } func (x *SRv6EndPointBehavior) Reset() { *x = SRv6EndPointBehavior{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRv6EndPointBehavior) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRv6EndPointBehavior) ProtoMessage() {} func (x *SRv6EndPointBehavior) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[81] 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 SRv6EndPointBehavior.ProtoReflect.Descriptor instead. func (*SRv6EndPointBehavior) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{81} } func (x *SRv6EndPointBehavior) GetBehavior() SRv6Behavior { if x != nil { return x.Behavior } return SRv6Behavior_RESERVED } func (x *SRv6EndPointBehavior) GetBlockLen() uint32 { if x != nil { return x.BlockLen } return 0 } func (x *SRv6EndPointBehavior) GetNodeLen() uint32 { if x != nil { return x.NodeLen } return 0 } func (x *SRv6EndPointBehavior) GetFuncLen() uint32 { if x != nil { return x.FuncLen } return 0 } func (x *SRv6EndPointBehavior) GetArgLen() uint32 { if x != nil { return x.ArgLen } return 0 } type SRv6BindingSID struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SFlag bool `protobuf:"varint,1,opt,name=s_flag,json=sFlag,proto3" json:"s_flag,omitempty"` IFlag bool `protobuf:"varint,2,opt,name=i_flag,json=iFlag,proto3" json:"i_flag,omitempty"` BFlag bool `protobuf:"varint,3,opt,name=b_flag,json=bFlag,proto3" json:"b_flag,omitempty"` Sid []byte `protobuf:"bytes,4,opt,name=sid,proto3" json:"sid,omitempty"` EndpointBehaviorStructure *SRv6EndPointBehavior `protobuf:"bytes,5,opt,name=endpoint_behavior_structure,json=endpointBehaviorStructure,proto3" json:"endpoint_behavior_structure,omitempty"` } func (x *SRv6BindingSID) Reset() { *x = SRv6BindingSID{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRv6BindingSID) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRv6BindingSID) ProtoMessage() {} func (x *SRv6BindingSID) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[82] 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 SRv6BindingSID.ProtoReflect.Descriptor instead. func (*SRv6BindingSID) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{82} } func (x *SRv6BindingSID) GetSFlag() bool { if x != nil { return x.SFlag } return false } func (x *SRv6BindingSID) GetIFlag() bool { if x != nil { return x.IFlag } return false } func (x *SRv6BindingSID) GetBFlag() bool { if x != nil { return x.BFlag } return false } func (x *SRv6BindingSID) GetSid() []byte { if x != nil { return x.Sid } return nil } func (x *SRv6BindingSID) GetEndpointBehaviorStructure() *SRv6EndPointBehavior { if x != nil { return x.EndpointBehaviorStructure } return nil } type TunnelEncapSubTLVSRENLP struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flags uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"` Enlp ENLPType `protobuf:"varint,2,opt,name=enlp,proto3,enum=apipb.ENLPType" json:"enlp,omitempty"` } func (x *TunnelEncapSubTLVSRENLP) Reset() { *x = TunnelEncapSubTLVSRENLP{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVSRENLP) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVSRENLP) ProtoMessage() {} func (x *TunnelEncapSubTLVSRENLP) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[83] 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 TunnelEncapSubTLVSRENLP.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVSRENLP) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{83} } func (x *TunnelEncapSubTLVSRENLP) GetFlags() uint32 { if x != nil { return x.Flags } return 0 } func (x *TunnelEncapSubTLVSRENLP) GetEnlp() ENLPType { if x != nil { return x.Enlp } return ENLPType_Reserved } type SRWeight struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flags uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"` Weight uint32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` } func (x *SRWeight) Reset() { *x = SRWeight{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRWeight) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRWeight) ProtoMessage() {} func (x *SRWeight) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[84] 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 SRWeight.ProtoReflect.Descriptor instead. func (*SRWeight) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{84} } func (x *SRWeight) GetFlags() uint32 { if x != nil { return x.Flags } return 0 } func (x *SRWeight) GetWeight() uint32 { if x != nil { return x.Weight } return 0 } type SegmentFlags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields VFlag bool `protobuf:"varint,1,opt,name=v_flag,json=vFlag,proto3" json:"v_flag,omitempty"` AFlag bool `protobuf:"varint,2,opt,name=a_flag,json=aFlag,proto3" json:"a_flag,omitempty"` SFlag bool `protobuf:"varint,3,opt,name=s_flag,json=sFlag,proto3" json:"s_flag,omitempty"` BFlag bool `protobuf:"varint,4,opt,name=b_flag,json=bFlag,proto3" json:"b_flag,omitempty"` } func (x *SegmentFlags) Reset() { *x = SegmentFlags{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SegmentFlags) String() string { return protoimpl.X.MessageStringOf(x) } func (*SegmentFlags) ProtoMessage() {} func (x *SegmentFlags) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[85] 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 SegmentFlags.ProtoReflect.Descriptor instead. func (*SegmentFlags) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{85} } func (x *SegmentFlags) GetVFlag() bool { if x != nil { return x.VFlag } return false } func (x *SegmentFlags) GetAFlag() bool { if x != nil { return x.AFlag } return false } func (x *SegmentFlags) GetSFlag() bool { if x != nil { return x.SFlag } return false } func (x *SegmentFlags) GetBFlag() bool { if x != nil { return x.BFlag } return false } type SegmentTypeA struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flags *SegmentFlags `protobuf:"bytes,1,opt,name=flags,proto3" json:"flags,omitempty"` Label uint32 `protobuf:"varint,2,opt,name=label,proto3" json:"label,omitempty"` } func (x *SegmentTypeA) Reset() { *x = SegmentTypeA{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SegmentTypeA) String() string { return protoimpl.X.MessageStringOf(x) } func (*SegmentTypeA) ProtoMessage() {} func (x *SegmentTypeA) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[86] 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 SegmentTypeA.ProtoReflect.Descriptor instead. func (*SegmentTypeA) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{86} } func (x *SegmentTypeA) GetFlags() *SegmentFlags { if x != nil { return x.Flags } return nil } func (x *SegmentTypeA) GetLabel() uint32 { if x != nil { return x.Label } return 0 } type SegmentTypeB struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flags *SegmentFlags `protobuf:"bytes,1,opt,name=flags,proto3" json:"flags,omitempty"` Sid []byte `protobuf:"bytes,2,opt,name=sid,proto3" json:"sid,omitempty"` EndpointBehaviorStructure *SRv6EndPointBehavior `protobuf:"bytes,3,opt,name=endpoint_behavior_structure,json=endpointBehaviorStructure,proto3" json:"endpoint_behavior_structure,omitempty"` } func (x *SegmentTypeB) Reset() { *x = SegmentTypeB{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SegmentTypeB) String() string { return protoimpl.X.MessageStringOf(x) } func (*SegmentTypeB) ProtoMessage() {} func (x *SegmentTypeB) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[87] 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 SegmentTypeB.ProtoReflect.Descriptor instead. func (*SegmentTypeB) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{87} } func (x *SegmentTypeB) GetFlags() *SegmentFlags { if x != nil { return x.Flags } return nil } func (x *SegmentTypeB) GetSid() []byte { if x != nil { return x.Sid } return nil } func (x *SegmentTypeB) GetEndpointBehaviorStructure() *SRv6EndPointBehavior { if x != nil { return x.EndpointBehaviorStructure } return nil } type TunnelEncapSubTLVSRSegmentList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Weight *SRWeight `protobuf:"bytes,1,opt,name=weight,proto3" json:"weight,omitempty"` // segments must be one of: // - SegmentTypeA // - SegmentTypeB Segments []*anypb.Any `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"` } func (x *TunnelEncapSubTLVSRSegmentList) Reset() { *x = TunnelEncapSubTLVSRSegmentList{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVSRSegmentList) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVSRSegmentList) ProtoMessage() {} func (x *TunnelEncapSubTLVSRSegmentList) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[88] 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 TunnelEncapSubTLVSRSegmentList.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVSRSegmentList) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{88} } func (x *TunnelEncapSubTLVSRSegmentList) GetWeight() *SRWeight { if x != nil { return x.Weight } return nil } func (x *TunnelEncapSubTLVSRSegmentList) GetSegments() []*anypb.Any { if x != nil { return x.Segments } return nil } type TunnelEncapSubTLVEgressEndpoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` } func (x *TunnelEncapSubTLVEgressEndpoint) Reset() { *x = TunnelEncapSubTLVEgressEndpoint{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVEgressEndpoint) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVEgressEndpoint) ProtoMessage() {} func (x *TunnelEncapSubTLVEgressEndpoint) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[89] 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 TunnelEncapSubTLVEgressEndpoint.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVEgressEndpoint) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{89} } func (x *TunnelEncapSubTLVEgressEndpoint) GetAddress() string { if x != nil { return x.Address } return "" } type TunnelEncapSubTLVUDPDestPort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"` } func (x *TunnelEncapSubTLVUDPDestPort) Reset() { *x = TunnelEncapSubTLVUDPDestPort{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVUDPDestPort) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVUDPDestPort) ProtoMessage() {} func (x *TunnelEncapSubTLVUDPDestPort) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[90] 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 TunnelEncapSubTLVUDPDestPort.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVUDPDestPort) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{90} } func (x *TunnelEncapSubTLVUDPDestPort) GetPort() uint32 { if x != nil { return x.Port } return 0 } type TunnelEncapSubTLVUnknown struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } func (x *TunnelEncapSubTLVUnknown) Reset() { *x = TunnelEncapSubTLVUnknown{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapSubTLVUnknown) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapSubTLVUnknown) ProtoMessage() {} func (x *TunnelEncapSubTLVUnknown) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[91] 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 TunnelEncapSubTLVUnknown.ProtoReflect.Descriptor instead. func (*TunnelEncapSubTLVUnknown) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{91} } func (x *TunnelEncapSubTLVUnknown) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *TunnelEncapSubTLVUnknown) GetValue() []byte { if x != nil { return x.Value } return nil } type TunnelEncapTLV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` // Each TLV must be one of: // - TunnelEncapSubTLVEncapsulation // - TunnelEncapSubTLVProtocol // - TunnelEncapSubTLVColor // - TunnelEncapSubTLVSRPolicy // - TunnelEncapSubTLVUnknown Tlvs []*anypb.Any `protobuf:"bytes,2,rep,name=tlvs,proto3" json:"tlvs,omitempty"` } func (x *TunnelEncapTLV) Reset() { *x = TunnelEncapTLV{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapTLV) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapTLV) ProtoMessage() {} func (x *TunnelEncapTLV) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[92] 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 TunnelEncapTLV.ProtoReflect.Descriptor instead. func (*TunnelEncapTLV) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{92} } func (x *TunnelEncapTLV) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *TunnelEncapTLV) GetTlvs() []*anypb.Any { if x != nil { return x.Tlvs } return nil } type TunnelEncapAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Tlvs []*TunnelEncapTLV `protobuf:"bytes,1,rep,name=tlvs,proto3" json:"tlvs,omitempty"` } func (x *TunnelEncapAttribute) Reset() { *x = TunnelEncapAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TunnelEncapAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*TunnelEncapAttribute) ProtoMessage() {} func (x *TunnelEncapAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[93] 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 TunnelEncapAttribute.ProtoReflect.Descriptor instead. func (*TunnelEncapAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{93} } func (x *TunnelEncapAttribute) GetTlvs() []*TunnelEncapTLV { if x != nil { return x.Tlvs } return nil } type IPv6AddressSpecificExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IsTransitive bool `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive,proto3" json:"is_transitive,omitempty"` SubType uint32 `protobuf:"varint,2,opt,name=sub_type,json=subType,proto3" json:"sub_type,omitempty"` Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` LocalAdmin uint32 `protobuf:"varint,4,opt,name=local_admin,json=localAdmin,proto3" json:"local_admin,omitempty"` } func (x *IPv6AddressSpecificExtended) Reset() { *x = IPv6AddressSpecificExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IPv6AddressSpecificExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*IPv6AddressSpecificExtended) ProtoMessage() {} func (x *IPv6AddressSpecificExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[94] 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 IPv6AddressSpecificExtended.ProtoReflect.Descriptor instead. func (*IPv6AddressSpecificExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{94} } func (x *IPv6AddressSpecificExtended) GetIsTransitive() bool { if x != nil { return x.IsTransitive } return false } func (x *IPv6AddressSpecificExtended) GetSubType() uint32 { if x != nil { return x.SubType } return 0 } func (x *IPv6AddressSpecificExtended) GetAddress() string { if x != nil { return x.Address } return "" } func (x *IPv6AddressSpecificExtended) GetLocalAdmin() uint32 { if x != nil { return x.LocalAdmin } return 0 } type RedirectIPv6AddressSpecificExtended struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` LocalAdmin uint32 `protobuf:"varint,2,opt,name=local_admin,json=localAdmin,proto3" json:"local_admin,omitempty"` } func (x *RedirectIPv6AddressSpecificExtended) Reset() { *x = RedirectIPv6AddressSpecificExtended{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RedirectIPv6AddressSpecificExtended) String() string { return protoimpl.X.MessageStringOf(x) } func (*RedirectIPv6AddressSpecificExtended) ProtoMessage() {} func (x *RedirectIPv6AddressSpecificExtended) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[95] 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 RedirectIPv6AddressSpecificExtended.ProtoReflect.Descriptor instead. func (*RedirectIPv6AddressSpecificExtended) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{95} } func (x *RedirectIPv6AddressSpecificExtended) GetAddress() string { if x != nil { return x.Address } return "" } func (x *RedirectIPv6AddressSpecificExtended) GetLocalAdmin() uint32 { if x != nil { return x.LocalAdmin } return 0 } type IP6ExtendedCommunitiesAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Each Community must be one of: // - IPv6AddressSpecificExtended // - RedirectIPv6AddressSpecificExtended Communities []*anypb.Any `protobuf:"bytes,1,rep,name=communities,proto3" json:"communities,omitempty"` } func (x *IP6ExtendedCommunitiesAttribute) Reset() { *x = IP6ExtendedCommunitiesAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IP6ExtendedCommunitiesAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*IP6ExtendedCommunitiesAttribute) ProtoMessage() {} func (x *IP6ExtendedCommunitiesAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[96] 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 IP6ExtendedCommunitiesAttribute.ProtoReflect.Descriptor instead. func (*IP6ExtendedCommunitiesAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{96} } func (x *IP6ExtendedCommunitiesAttribute) GetCommunities() []*anypb.Any { if x != nil { return x.Communities } return nil } type AigpTLVIGPMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Metric uint64 `protobuf:"varint,1,opt,name=metric,proto3" json:"metric,omitempty"` } func (x *AigpTLVIGPMetric) Reset() { *x = AigpTLVIGPMetric{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AigpTLVIGPMetric) String() string { return protoimpl.X.MessageStringOf(x) } func (*AigpTLVIGPMetric) ProtoMessage() {} func (x *AigpTLVIGPMetric) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[97] 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 AigpTLVIGPMetric.ProtoReflect.Descriptor instead. func (*AigpTLVIGPMetric) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{97} } func (x *AigpTLVIGPMetric) GetMetric() uint64 { if x != nil { return x.Metric } return 0 } type AigpTLVUnknown struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } func (x *AigpTLVUnknown) Reset() { *x = AigpTLVUnknown{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AigpTLVUnknown) String() string { return protoimpl.X.MessageStringOf(x) } func (*AigpTLVUnknown) ProtoMessage() {} func (x *AigpTLVUnknown) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[98] 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 AigpTLVUnknown.ProtoReflect.Descriptor instead. func (*AigpTLVUnknown) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{98} } func (x *AigpTLVUnknown) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *AigpTLVUnknown) GetValue() []byte { if x != nil { return x.Value } return nil } type AigpAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Each TLV must be one of: // - AigpTLVIGPMetric // - AigpTLVUnknown Tlvs []*anypb.Any `protobuf:"bytes,1,rep,name=tlvs,proto3" json:"tlvs,omitempty"` } func (x *AigpAttribute) Reset() { *x = AigpAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AigpAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*AigpAttribute) ProtoMessage() {} func (x *AigpAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[99] 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 AigpAttribute.ProtoReflect.Descriptor instead. func (*AigpAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{99} } func (x *AigpAttribute) GetTlvs() []*anypb.Any { if x != nil { return x.Tlvs } return nil } type LargeCommunity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GlobalAdmin uint32 `protobuf:"varint,1,opt,name=global_admin,json=globalAdmin,proto3" json:"global_admin,omitempty"` LocalData1 uint32 `protobuf:"varint,2,opt,name=local_data1,json=localData1,proto3" json:"local_data1,omitempty"` LocalData2 uint32 `protobuf:"varint,3,opt,name=local_data2,json=localData2,proto3" json:"local_data2,omitempty"` } func (x *LargeCommunity) Reset() { *x = LargeCommunity{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LargeCommunity) String() string { return protoimpl.X.MessageStringOf(x) } func (*LargeCommunity) ProtoMessage() {} func (x *LargeCommunity) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[100] 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 LargeCommunity.ProtoReflect.Descriptor instead. func (*LargeCommunity) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{100} } func (x *LargeCommunity) GetGlobalAdmin() uint32 { if x != nil { return x.GlobalAdmin } return 0 } func (x *LargeCommunity) GetLocalData1() uint32 { if x != nil { return x.LocalData1 } return 0 } func (x *LargeCommunity) GetLocalData2() uint32 { if x != nil { return x.LocalData2 } return 0 } type LargeCommunitiesAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Communities []*LargeCommunity `protobuf:"bytes,1,rep,name=communities,proto3" json:"communities,omitempty"` } func (x *LargeCommunitiesAttribute) Reset() { *x = LargeCommunitiesAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LargeCommunitiesAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*LargeCommunitiesAttribute) ProtoMessage() {} func (x *LargeCommunitiesAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[101] 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 LargeCommunitiesAttribute.ProtoReflect.Descriptor instead. func (*LargeCommunitiesAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{101} } func (x *LargeCommunitiesAttribute) GetCommunities() []*LargeCommunity { if x != nil { return x.Communities } return nil } type LsNodeFlags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Overload bool `protobuf:"varint,1,opt,name=overload,proto3" json:"overload,omitempty"` Attached bool `protobuf:"varint,2,opt,name=attached,proto3" json:"attached,omitempty"` External bool `protobuf:"varint,3,opt,name=external,proto3" json:"external,omitempty"` Abr bool `protobuf:"varint,4,opt,name=abr,proto3" json:"abr,omitempty"` Router bool `protobuf:"varint,5,opt,name=router,proto3" json:"router,omitempty"` V6 bool `protobuf:"varint,6,opt,name=v6,proto3" json:"v6,omitempty"` } func (x *LsNodeFlags) Reset() { *x = LsNodeFlags{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsNodeFlags) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsNodeFlags) ProtoMessage() {} func (x *LsNodeFlags) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[102] 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 LsNodeFlags.ProtoReflect.Descriptor instead. func (*LsNodeFlags) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{102} } func (x *LsNodeFlags) GetOverload() bool { if x != nil { return x.Overload } return false } func (x *LsNodeFlags) GetAttached() bool { if x != nil { return x.Attached } return false } func (x *LsNodeFlags) GetExternal() bool { if x != nil { return x.External } return false } func (x *LsNodeFlags) GetAbr() bool { if x != nil { return x.Abr } return false } func (x *LsNodeFlags) GetRouter() bool { if x != nil { return x.Router } return false } func (x *LsNodeFlags) GetV6() bool { if x != nil { return x.V6 } return false } type LsIGPFlags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Down bool `protobuf:"varint,1,opt,name=down,proto3" json:"down,omitempty"` NoUnicast bool `protobuf:"varint,2,opt,name=no_unicast,json=noUnicast,proto3" json:"no_unicast,omitempty"` LocalAddress bool `protobuf:"varint,3,opt,name=local_address,json=localAddress,proto3" json:"local_address,omitempty"` PropagateNssa bool `protobuf:"varint,4,opt,name=propagate_nssa,json=propagateNssa,proto3" json:"propagate_nssa,omitempty"` } func (x *LsIGPFlags) Reset() { *x = LsIGPFlags{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsIGPFlags) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsIGPFlags) ProtoMessage() {} func (x *LsIGPFlags) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[103] 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 LsIGPFlags.ProtoReflect.Descriptor instead. func (*LsIGPFlags) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{103} } func (x *LsIGPFlags) GetDown() bool { if x != nil { return x.Down } return false } func (x *LsIGPFlags) GetNoUnicast() bool { if x != nil { return x.NoUnicast } return false } func (x *LsIGPFlags) GetLocalAddress() bool { if x != nil { return x.LocalAddress } return false } func (x *LsIGPFlags) GetPropagateNssa() bool { if x != nil { return x.PropagateNssa } return false } type LsSrRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Begin uint32 `protobuf:"varint,1,opt,name=begin,proto3" json:"begin,omitempty"` End uint32 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` } func (x *LsSrRange) Reset() { *x = LsSrRange{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsSrRange) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsSrRange) ProtoMessage() {} func (x *LsSrRange) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[104] 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 LsSrRange.ProtoReflect.Descriptor instead. func (*LsSrRange) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{104} } func (x *LsSrRange) GetBegin() uint32 { if x != nil { return x.Begin } return 0 } func (x *LsSrRange) GetEnd() uint32 { if x != nil { return x.End } return 0 } type LsSrCapabilities struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ipv4Supported bool `protobuf:"varint,1,opt,name=ipv4_supported,json=ipv4Supported,proto3" json:"ipv4_supported,omitempty"` Ipv6Supported bool `protobuf:"varint,2,opt,name=ipv6_supported,json=ipv6Supported,proto3" json:"ipv6_supported,omitempty"` Ranges []*LsSrRange `protobuf:"bytes,3,rep,name=ranges,proto3" json:"ranges,omitempty"` } func (x *LsSrCapabilities) Reset() { *x = LsSrCapabilities{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsSrCapabilities) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsSrCapabilities) ProtoMessage() {} func (x *LsSrCapabilities) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[105] 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 LsSrCapabilities.ProtoReflect.Descriptor instead. func (*LsSrCapabilities) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{105} } func (x *LsSrCapabilities) GetIpv4Supported() bool { if x != nil { return x.Ipv4Supported } return false } func (x *LsSrCapabilities) GetIpv6Supported() bool { if x != nil { return x.Ipv6Supported } return false } func (x *LsSrCapabilities) GetRanges() []*LsSrRange { if x != nil { return x.Ranges } return nil } type LsSrLocalBlock struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ranges []*LsSrRange `protobuf:"bytes,1,rep,name=ranges,proto3" json:"ranges,omitempty"` } func (x *LsSrLocalBlock) Reset() { *x = LsSrLocalBlock{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsSrLocalBlock) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsSrLocalBlock) ProtoMessage() {} func (x *LsSrLocalBlock) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[106] 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 LsSrLocalBlock.ProtoReflect.Descriptor instead. func (*LsSrLocalBlock) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{106} } func (x *LsSrLocalBlock) GetRanges() []*LsSrRange { if x != nil { return x.Ranges } return nil } type LsAttributeNode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Flags *LsNodeFlags `protobuf:"bytes,2,opt,name=flags,proto3" json:"flags,omitempty"` LocalRouterId string `protobuf:"bytes,3,opt,name=local_router_id,json=localRouterId,proto3" json:"local_router_id,omitempty"` LocalRouterIdV6 string `protobuf:"bytes,4,opt,name=local_router_id_v6,json=localRouterIdV6,proto3" json:"local_router_id_v6,omitempty"` IsisArea []byte `protobuf:"bytes,5,opt,name=isis_area,json=isisArea,proto3" json:"isis_area,omitempty"` Opaque []byte `protobuf:"bytes,6,opt,name=opaque,proto3" json:"opaque,omitempty"` SrCapabilities *LsSrCapabilities `protobuf:"bytes,7,opt,name=sr_capabilities,json=srCapabilities,proto3" json:"sr_capabilities,omitempty"` SrAlgorithms []byte `protobuf:"bytes,8,opt,name=sr_algorithms,json=srAlgorithms,proto3" json:"sr_algorithms,omitempty"` SrLocalBlock *LsSrLocalBlock `protobuf:"bytes,9,opt,name=sr_local_block,json=srLocalBlock,proto3" json:"sr_local_block,omitempty"` } func (x *LsAttributeNode) Reset() { *x = LsAttributeNode{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsAttributeNode) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsAttributeNode) ProtoMessage() {} func (x *LsAttributeNode) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[107] 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 LsAttributeNode.ProtoReflect.Descriptor instead. func (*LsAttributeNode) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{107} } func (x *LsAttributeNode) GetName() string { if x != nil { return x.Name } return "" } func (x *LsAttributeNode) GetFlags() *LsNodeFlags { if x != nil { return x.Flags } return nil } func (x *LsAttributeNode) GetLocalRouterId() string { if x != nil { return x.LocalRouterId } return "" } func (x *LsAttributeNode) GetLocalRouterIdV6() string { if x != nil { return x.LocalRouterIdV6 } return "" } func (x *LsAttributeNode) GetIsisArea() []byte { if x != nil { return x.IsisArea } return nil } func (x *LsAttributeNode) GetOpaque() []byte { if x != nil { return x.Opaque } return nil } func (x *LsAttributeNode) GetSrCapabilities() *LsSrCapabilities { if x != nil { return x.SrCapabilities } return nil } func (x *LsAttributeNode) GetSrAlgorithms() []byte { if x != nil { return x.SrAlgorithms } return nil } func (x *LsAttributeNode) GetSrLocalBlock() *LsSrLocalBlock { if x != nil { return x.SrLocalBlock } return nil } type LsAttributeLink struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` LocalRouterId string `protobuf:"bytes,2,opt,name=local_router_id,json=localRouterId,proto3" json:"local_router_id,omitempty"` LocalRouterIdV6 string `protobuf:"bytes,3,opt,name=local_router_id_v6,json=localRouterIdV6,proto3" json:"local_router_id_v6,omitempty"` RemoteRouterId string `protobuf:"bytes,4,opt,name=remote_router_id,json=remoteRouterId,proto3" json:"remote_router_id,omitempty"` RemoteRouterIdV6 string `protobuf:"bytes,5,opt,name=remote_router_id_v6,json=remoteRouterIdV6,proto3" json:"remote_router_id_v6,omitempty"` AdminGroup uint32 `protobuf:"varint,6,opt,name=admin_group,json=adminGroup,proto3" json:"admin_group,omitempty"` DefaultTeMetric uint32 `protobuf:"varint,7,opt,name=default_te_metric,json=defaultTeMetric,proto3" json:"default_te_metric,omitempty"` IgpMetric uint32 `protobuf:"varint,8,opt,name=igp_metric,json=igpMetric,proto3" json:"igp_metric,omitempty"` Opaque []byte `protobuf:"bytes,9,opt,name=opaque,proto3" json:"opaque,omitempty"` Bandwidth float32 `protobuf:"fixed32,10,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` ReservableBandwidth float32 `protobuf:"fixed32,11,opt,name=reservable_bandwidth,json=reservableBandwidth,proto3" json:"reservable_bandwidth,omitempty"` UnreservedBandwidth []float32 `protobuf:"fixed32,12,rep,packed,name=unreserved_bandwidth,json=unreservedBandwidth,proto3" json:"unreserved_bandwidth,omitempty"` SrAdjacencySid uint32 `protobuf:"varint,13,opt,name=sr_adjacency_sid,json=srAdjacencySid,proto3" json:"sr_adjacency_sid,omitempty"` Srlgs []uint32 `protobuf:"varint,14,rep,packed,name=srlgs,proto3" json:"srlgs,omitempty"` } func (x *LsAttributeLink) Reset() { *x = LsAttributeLink{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsAttributeLink) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsAttributeLink) ProtoMessage() {} func (x *LsAttributeLink) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[108] 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 LsAttributeLink.ProtoReflect.Descriptor instead. func (*LsAttributeLink) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{108} } func (x *LsAttributeLink) GetName() string { if x != nil { return x.Name } return "" } func (x *LsAttributeLink) GetLocalRouterId() string { if x != nil { return x.LocalRouterId } return "" } func (x *LsAttributeLink) GetLocalRouterIdV6() string { if x != nil { return x.LocalRouterIdV6 } return "" } func (x *LsAttributeLink) GetRemoteRouterId() string { if x != nil { return x.RemoteRouterId } return "" } func (x *LsAttributeLink) GetRemoteRouterIdV6() string { if x != nil { return x.RemoteRouterIdV6 } return "" } func (x *LsAttributeLink) GetAdminGroup() uint32 { if x != nil { return x.AdminGroup } return 0 } func (x *LsAttributeLink) GetDefaultTeMetric() uint32 { if x != nil { return x.DefaultTeMetric } return 0 } func (x *LsAttributeLink) GetIgpMetric() uint32 { if x != nil { return x.IgpMetric } return 0 } func (x *LsAttributeLink) GetOpaque() []byte { if x != nil { return x.Opaque } return nil } func (x *LsAttributeLink) GetBandwidth() float32 { if x != nil { return x.Bandwidth } return 0 } func (x *LsAttributeLink) GetReservableBandwidth() float32 { if x != nil { return x.ReservableBandwidth } return 0 } func (x *LsAttributeLink) GetUnreservedBandwidth() []float32 { if x != nil { return x.UnreservedBandwidth } return nil } func (x *LsAttributeLink) GetSrAdjacencySid() uint32 { if x != nil { return x.SrAdjacencySid } return 0 } func (x *LsAttributeLink) GetSrlgs() []uint32 { if x != nil { return x.Srlgs } return nil } type LsAttributePrefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IgpFlags *LsIGPFlags `protobuf:"bytes,1,opt,name=igp_flags,json=igpFlags,proto3" json:"igp_flags,omitempty"` Opaque []byte `protobuf:"bytes,2,opt,name=opaque,proto3" json:"opaque,omitempty"` SrPrefixSid uint32 `protobuf:"varint,3,opt,name=sr_prefix_sid,json=srPrefixSid,proto3" json:"sr_prefix_sid,omitempty"` } func (x *LsAttributePrefix) Reset() { *x = LsAttributePrefix{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsAttributePrefix) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsAttributePrefix) ProtoMessage() {} func (x *LsAttributePrefix) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[109] 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 LsAttributePrefix.ProtoReflect.Descriptor instead. func (*LsAttributePrefix) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{109} } func (x *LsAttributePrefix) GetIgpFlags() *LsIGPFlags { if x != nil { return x.IgpFlags } return nil } func (x *LsAttributePrefix) GetOpaque() []byte { if x != nil { return x.Opaque } return nil } func (x *LsAttributePrefix) GetSrPrefixSid() uint32 { if x != nil { return x.SrPrefixSid } return 0 } type LsAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Node *LsAttributeNode `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Link *LsAttributeLink `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` Prefix *LsAttributePrefix `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"` } func (x *LsAttribute) Reset() { *x = LsAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LsAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*LsAttribute) ProtoMessage() {} func (x *LsAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[110] 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 LsAttribute.ProtoReflect.Descriptor instead. func (*LsAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{110} } func (x *LsAttribute) GetNode() *LsAttributeNode { if x != nil { return x.Node } return nil } func (x *LsAttribute) GetLink() *LsAttributeLink { if x != nil { return x.Link } return nil } func (x *LsAttribute) GetPrefix() *LsAttributePrefix { if x != nil { return x.Prefix } return nil } type UnknownAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flags uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"` Type uint32 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"` Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` } func (x *UnknownAttribute) Reset() { *x = UnknownAttribute{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UnknownAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*UnknownAttribute) ProtoMessage() {} func (x *UnknownAttribute) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[111] 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 UnknownAttribute.ProtoReflect.Descriptor instead. func (*UnknownAttribute) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{111} } func (x *UnknownAttribute) GetFlags() uint32 { if x != nil { return x.Flags } return 0 } func (x *UnknownAttribute) GetType() uint32 { if x != nil { return x.Type } return 0 } func (x *UnknownAttribute) GetValue() []byte { if x != nil { return x.Value } return nil } // https://www.rfc-editor.org/rfc/rfc9252.html#section-3.2.1 type SRv6StructureSubSubTLV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LocatorBlockLength uint32 `protobuf:"varint,1,opt,name=locator_block_length,json=locatorBlockLength,proto3" json:"locator_block_length,omitempty"` LocatorNodeLength uint32 `protobuf:"varint,2,opt,name=locator_node_length,json=locatorNodeLength,proto3" json:"locator_node_length,omitempty"` FunctionLength uint32 `protobuf:"varint,3,opt,name=function_length,json=functionLength,proto3" json:"function_length,omitempty"` ArgumentLength uint32 `protobuf:"varint,4,opt,name=argument_length,json=argumentLength,proto3" json:"argument_length,omitempty"` TranspositionLength uint32 `protobuf:"varint,5,opt,name=transposition_length,json=transpositionLength,proto3" json:"transposition_length,omitempty"` TranspositionOffset uint32 `protobuf:"varint,6,opt,name=transposition_offset,json=transpositionOffset,proto3" json:"transposition_offset,omitempty"` } func (x *SRv6StructureSubSubTLV) Reset() { *x = SRv6StructureSubSubTLV{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRv6StructureSubSubTLV) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRv6StructureSubSubTLV) ProtoMessage() {} func (x *SRv6StructureSubSubTLV) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[112] 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 SRv6StructureSubSubTLV.ProtoReflect.Descriptor instead. func (*SRv6StructureSubSubTLV) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{112} } func (x *SRv6StructureSubSubTLV) GetLocatorBlockLength() uint32 { if x != nil { return x.LocatorBlockLength } return 0 } func (x *SRv6StructureSubSubTLV) GetLocatorNodeLength() uint32 { if x != nil { return x.LocatorNodeLength } return 0 } func (x *SRv6StructureSubSubTLV) GetFunctionLength() uint32 { if x != nil { return x.FunctionLength } return 0 } func (x *SRv6StructureSubSubTLV) GetArgumentLength() uint32 { if x != nil { return x.ArgumentLength } return 0 } func (x *SRv6StructureSubSubTLV) GetTranspositionLength() uint32 { if x != nil { return x.TranspositionLength } return 0 } func (x *SRv6StructureSubSubTLV) GetTranspositionOffset() uint32 { if x != nil { return x.TranspositionOffset } return 0 } type SRv6SIDFlags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Placeholder for future sid flags Flag_1 bool `protobuf:"varint,1,opt,name=flag_1,json=flag1,proto3" json:"flag_1,omitempty"` } func (x *SRv6SIDFlags) Reset() { *x = SRv6SIDFlags{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRv6SIDFlags) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRv6SIDFlags) ProtoMessage() {} func (x *SRv6SIDFlags) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[113] 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 SRv6SIDFlags.ProtoReflect.Descriptor instead. func (*SRv6SIDFlags) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{113} } func (x *SRv6SIDFlags) GetFlag_1() bool { if x != nil { return x.Flag_1 } return false } type SRv6TLV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Tlv []*anypb.Any `protobuf:"bytes,1,rep,name=tlv,proto3" json:"tlv,omitempty"` } func (x *SRv6TLV) Reset() { *x = SRv6TLV{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRv6TLV) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRv6TLV) ProtoMessage() {} func (x *SRv6TLV) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[114] 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 SRv6TLV.ProtoReflect.Descriptor instead. func (*SRv6TLV) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{114} } func (x *SRv6TLV) GetTlv() []*anypb.Any { if x != nil { return x.Tlv } return nil } // https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2.1.1 type SRv6InformationSubTLV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Sid []byte `protobuf:"bytes,1,opt,name=sid,proto3" json:"sid,omitempty"` Flags *SRv6SIDFlags `protobuf:"bytes,2,opt,name=flags,proto3" json:"flags,omitempty"` EndpointBehavior uint32 `protobuf:"varint,3,opt,name=endpoint_behavior,json=endpointBehavior,proto3" json:"endpoint_behavior,omitempty"` // SRv6TLV is one of: // - SRv6StructureSubSubTLV SubSubTlvs map[uint32]*SRv6TLV `protobuf:"bytes,4,rep,name=sub_sub_tlvs,json=subSubTlvs,proto3" json:"sub_sub_tlvs,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *SRv6InformationSubTLV) Reset() { *x = SRv6InformationSubTLV{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRv6InformationSubTLV) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRv6InformationSubTLV) ProtoMessage() {} func (x *SRv6InformationSubTLV) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[115] 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 SRv6InformationSubTLV.ProtoReflect.Descriptor instead. func (*SRv6InformationSubTLV) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{115} } func (x *SRv6InformationSubTLV) GetSid() []byte { if x != nil { return x.Sid } return nil } func (x *SRv6InformationSubTLV) GetFlags() *SRv6SIDFlags { if x != nil { return x.Flags } return nil } func (x *SRv6InformationSubTLV) GetEndpointBehavior() uint32 { if x != nil { return x.EndpointBehavior } return 0 } func (x *SRv6InformationSubTLV) GetSubSubTlvs() map[uint32]*SRv6TLV { if x != nil { return x.SubSubTlvs } return nil } // https://www.rfc-editor.org/rfc/rfc9252.html#section-2 type SRv6L3ServiceTLV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // SRv6TLV is one of: // - SRv6InformationSubTLV SubTlvs map[uint32]*SRv6TLV `protobuf:"bytes,1,rep,name=sub_tlvs,json=subTlvs,proto3" json:"sub_tlvs,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *SRv6L3ServiceTLV) Reset() { *x = SRv6L3ServiceTLV{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRv6L3ServiceTLV) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRv6L3ServiceTLV) ProtoMessage() {} func (x *SRv6L3ServiceTLV) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[116] 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 SRv6L3ServiceTLV.ProtoReflect.Descriptor instead. func (*SRv6L3ServiceTLV) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{116} } func (x *SRv6L3ServiceTLV) GetSubTlvs() map[uint32]*SRv6TLV { if x != nil { return x.SubTlvs } return nil } // https://www.rfc-editor.org/rfc/rfc9252.html#section-2 type SRv6L2ServiceTLV struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // SRv6TLV is one of: // - SRv6InformationSubTLV SubTlvs map[uint32]*SRv6TLV `protobuf:"bytes,1,rep,name=sub_tlvs,json=subTlvs,proto3" json:"sub_tlvs,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *SRv6L2ServiceTLV) Reset() { *x = SRv6L2ServiceTLV{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SRv6L2ServiceTLV) String() string { return protoimpl.X.MessageStringOf(x) } func (*SRv6L2ServiceTLV) ProtoMessage() {} func (x *SRv6L2ServiceTLV) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[117] 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 SRv6L2ServiceTLV.ProtoReflect.Descriptor instead. func (*SRv6L2ServiceTLV) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{117} } func (x *SRv6L2ServiceTLV) GetSubTlvs() map[uint32]*SRv6TLV { if x != nil { return x.SubTlvs } return nil } // https://tools.ietf.org/html/rfc8669 type PrefixSID struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // tlv is one of: // - IndexLabelTLV Type 1 (not yet implemented) // - OriginatorSRGBTLV Type 3 (not yet implemented) // - SRv6L3ServiceTLV Type 5 // - SRv6L2ServiceTLV Type 6 Tlvs []*anypb.Any `protobuf:"bytes,1,rep,name=tlvs,proto3" json:"tlvs,omitempty"` } func (x *PrefixSID) Reset() { *x = PrefixSID{} if protoimpl.UnsafeEnabled { mi := &file_attribute_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PrefixSID) String() string { return protoimpl.X.MessageStringOf(x) } func (*PrefixSID) ProtoMessage() {} func (x *PrefixSID) ProtoReflect() protoreflect.Message { mi := &file_attribute_proto_msgTypes[118] 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 PrefixSID.ProtoReflect.Descriptor instead. func (*PrefixSID) Descriptor() ([]byte, []int) { return file_attribute_proto_rawDescGZIP(), []int{118} } func (x *PrefixSID) GetTlvs() []*anypb.Any { if x != nil { return x.Tlvs } return nil } var File_attribute_proto protoreflect.FileDescriptor var file_attribute_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x61, 0x70, 0x69, 0x70, 0x62, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0b, 0x67, 0x6f, 0x62, 0x67, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x29, 0x0a, 0x0f, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x22, 0xad, 0x01, 0x0a, 0x09, 0x41, 0x73, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x41, 0x73, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x5b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x53, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x53, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x45, 0x44, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x45, 0x44, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x04, 0x22, 0x3f, 0x0a, 0x0f, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x41, 0x73, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x2d, 0x0a, 0x10, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x22, 0x2a, 0x0a, 0x16, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x45, 0x78, 0x69, 0x74, 0x44, 0x69, 0x73, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x65, 0x64, 0x22, 0x33, 0x0a, 0x12, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x72, 0x65, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x72, 0x65, 0x66, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x13, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x38, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x27, 0x0a, 0x15, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x14, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x48, 0x0a, 0x0f, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x67, 0x0a, 0x16, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x2d, 0x0a, 0x11, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x51, 0x0a, 0x1d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x72, 0x54, 0x77, 0x6f, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x41, 0x53, 0x4e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x22, 0x4f, 0x0a, 0x1b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x72, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x22, 0x52, 0x0a, 0x1e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x72, 0x46, 0x6f, 0x75, 0x72, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x41, 0x53, 0x4e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x22, 0x45, 0x0a, 0x19, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x1e, 0x45, 0x56, 0x50, 0x4e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x03, 0x65, 0x73, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x03, 0x65, 0x73, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x54, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0xf2, 0x01, 0x0a, 0x1b, 0x45, 0x56, 0x50, 0x4e, 0x4d, 0x41, 0x43, 0x49, 0x50, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x03, 0x65, 0x73, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x03, 0x65, 0x73, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x54, 0x61, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x26, 0x45, 0x56, 0x50, 0x4e, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x54, 0x61, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x54, 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x18, 0x45, 0x56, 0x50, 0x4e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x03, 0x65, 0x73, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x03, 0x65, 0x73, 0x69, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x11, 0x45, 0x56, 0x50, 0x4e, 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x03, 0x65, 0x73, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x03, 0x65, 0x73, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x54, 0x61, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x77, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x7f, 0x0a, 0x0e, 0x45, 0x56, 0x50, 0x4e, 0x49, 0x50, 0x4d, 0x53, 0x49, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x54, 0x61, 0x67, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x74, 0x22, 0x7e, 0x0a, 0x0c, 0x53, 0x52, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x19, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, 0x56, 0x50, 0x4e, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x53, 0x0a, 0x19, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x74, 0x22, 0x75, 0x0a, 0x10, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x70, 0x65, 0x63, 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x3b, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x41, 0x43, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3d, 0x0a, 0x15, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x70, 0x65, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5b, 0x0a, 0x11, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x70, 0x65, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x70, 0x65, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3a, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x2a, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x63, 0x0a, 0x0f, 0x56, 0x50, 0x4e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x34, 0x0a, 0x0a, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x10, 0x4c, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x1a, 0x0a, 0x09, 0x62, 0x67, 0x70, 0x5f, 0x6c, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x62, 0x67, 0x70, 0x4c, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x73, 0x70, 0x66, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6f, 0x73, 0x70, 0x66, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x67, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x67, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x98, 0x02, 0x0a, 0x10, 0x4c, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6c, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x49, 0x70, 0x76, 0x34, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x49, 0x70, 0x76, 0x34, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x49, 0x70, 0x76, 0x36, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x49, 0x70, 0x76, 0x36, 0x22, 0x7d, 0x0a, 0x12, 0x4c, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x70, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x0f, 0x6f, 0x73, 0x70, 0x66, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x4f, 0x73, 0x70, 0x66, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x6f, 0x73, 0x70, 0x66, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x44, 0x0a, 0x0a, 0x4c, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x36, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x0a, 0x4c, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x36, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x22, 0x90, 0x01, 0x0a, 0x0e, 0x4c, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x56, 0x34, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x36, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x22, 0x90, 0x01, 0x0a, 0x0e, 0x4c, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x56, 0x36, 0x4e, 0x4c, 0x52, 0x49, 0x12, 0x36, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x4c, 0x73, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x4e, 0x4c, 0x52, 0x49, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6e, 0x6c, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x6e, 0x6c, 0x72, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x44, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x61, 0x0a, 0x21, 0x4d, 0x55, 0x50, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x60, 0x0a, 0x1e, 0x4d, 0x55, 0x50, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x1f, 0x4d, 0x55, 0x50, 0x54, 0x79, 0x70, 0x65, 0x31, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x66, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x71, 0x66, 0x69, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x1f, 0x4d, 0x55, 0x50, 0x54, 0x79, 0x70, 0x65, 0x32, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x02, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x02, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x65, 0x69, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x14, 0x4d, 0x70, 0x52, 0x65, 0x61, 0x63, 0x68, 0x4e, 0x4c, 0x52, 0x49, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x6e, 0x6c, 0x72, 0x69, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x6e, 0x6c, 0x72, 0x69, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x4d, 0x70, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x4e, 0x4c, 0x52, 0x49, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x6e, 0x6c, 0x72, 0x69, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x6e, 0x6c, 0x72, 0x69, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x54, 0x77, 0x6f, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x41, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x98, 0x01, 0x0a, 0x1b, 0x49, 0x50, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x90, 0x01, 0x0a, 0x1b, 0x46, 0x6f, 0x75, 0x72, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x41, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x47, 0x0a, 0x15, 0x4c, 0x69, 0x6e, 0x6b, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x22, 0x2a, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x25, 0x0a, 0x0d, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x30, 0x0a, 0x0d, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x22, 0x4b, 0x0a, 0x0e, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x52, 0x0a, 0x10, 0x45, 0x53, 0x49, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x32, 0x0a, 0x13, 0x45, 0x53, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x73, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x73, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x55, 0x0a, 0x13, 0x4d, 0x61, 0x63, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0x25, 0x0a, 0x11, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x22, 0x3b, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x72, 0x61, 0x74, 0x65, 0x22, 0x4b, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0x57, 0x0a, 0x22, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x77, 0x6f, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x41, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x60, 0x0a, 0x23, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x49, 0x50, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x58, 0x0a, 0x23, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x46, 0x6f, 0x75, 0x72, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x41, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x2b, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x73, 0x63, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x64, 0x73, 0x63, 0x70, 0x22, 0x6a, 0x0a, 0x0b, 0x4d, 0x55, 0x50, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x34, 0x22, 0x3b, 0x0a, 0x0f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x56, 0x0a, 0x1c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x40, 0x0a, 0x10, 0x41, 0x73, 0x34, 0x50, 0x61, 0x74, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x41, 0x73, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x44, 0x0a, 0x16, 0x41, 0x73, 0x34, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x65, 0x0a, 0x13, 0x50, 0x6d, 0x73, 0x69, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x1e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x22, 0x37, 0x0a, 0x19, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x2e, 0x0a, 0x16, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x55, 0x0a, 0x1d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x53, 0x52, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x24, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x53, 0x52, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x1b, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x53, 0x52, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x49, 0x0a, 0x1d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x53, 0x52, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x04, 0x62, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x62, 0x73, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x0c, 0x53, 0x52, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x49, 0x44, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x64, 0x22, 0xb3, 0x01, 0x0a, 0x14, 0x53, 0x52, 0x76, 0x36, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x4c, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x66, 0x75, 0x6e, 0x63, 0x4c, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x72, 0x67, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x61, 0x72, 0x67, 0x4c, 0x65, 0x6e, 0x22, 0xc4, 0x01, 0x0a, 0x0e, 0x53, 0x52, 0x76, 0x36, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x49, 0x44, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x62, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x5b, 0x0a, 0x1b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x19, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x54, 0x0a, 0x17, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x53, 0x52, 0x45, 0x4e, 0x4c, 0x50, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x65, 0x6e, 0x6c, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x45, 0x4e, 0x4c, 0x50, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x65, 0x6e, 0x6c, 0x70, 0x22, 0x38, 0x0a, 0x08, 0x53, 0x52, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x6a, 0x0a, 0x0c, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x62, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4f, 0x0a, 0x0c, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x41, 0x12, 0x29, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0xa8, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x12, 0x29, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x5b, 0x0a, 0x1b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x19, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x7b, 0x0a, 0x1e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x53, 0x52, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x30, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x3b, 0x0a, 0x1f, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x32, 0x0a, 0x1c, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x55, 0x44, 0x50, 0x44, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x44, 0x0a, 0x18, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4e, 0x0a, 0x0e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x4c, 0x56, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x74, 0x6c, 0x76, 0x73, 0x22, 0x41, 0x0a, 0x14, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x4c, 0x56, 0x52, 0x04, 0x74, 0x6c, 0x76, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x1b, 0x49, 0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x60, 0x0a, 0x23, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x49, 0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x59, 0x0a, 0x1f, 0x49, 0x50, 0x36, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x2a, 0x0a, 0x10, 0x41, 0x69, 0x67, 0x70, 0x54, 0x4c, 0x56, 0x49, 0x47, 0x50, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x3a, 0x0a, 0x0e, 0x41, 0x69, 0x67, 0x70, 0x54, 0x4c, 0x56, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x39, 0x0a, 0x0d, 0x41, 0x69, 0x67, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x74, 0x6c, 0x76, 0x73, 0x22, 0x75, 0x0a, 0x0e, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x32, 0x22, 0x54, 0x0a, 0x19, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x0b, 0x4c, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x62, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x62, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x76, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x76, 0x36, 0x22, 0x8b, 0x01, 0x0a, 0x0a, 0x4c, 0x73, 0x49, 0x47, 0x50, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6e, 0x6f, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x73, 0x73, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x4e, 0x73, 0x73, 0x61, 0x22, 0x33, 0x0a, 0x09, 0x4c, 0x73, 0x53, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x8a, 0x01, 0x0a, 0x10, 0x4c, 0x73, 0x53, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x34, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x36, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x53, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x3a, 0x0a, 0x0e, 0x4c, 0x73, 0x53, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x28, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x53, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0xfd, 0x02, 0x0a, 0x0f, 0x4c, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x56, 0x36, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x69, 0x73, 0x69, 0x73, 0x41, 0x72, 0x65, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x73, 0x72, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x53, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0e, 0x73, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x72, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x72, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x73, 0x72, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x53, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0c, 0x73, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x9b, 0x04, 0x0a, 0x0f, 0x4c, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x56, 0x36, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x56, 0x36, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x67, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x69, 0x67, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x31, 0x0a, 0x14, 0x75, 0x6e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x02, 0x52, 0x13, 0x75, 0x6e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x72, 0x5f, 0x61, 0x64, 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x73, 0x72, 0x41, 0x64, 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x72, 0x6c, 0x67, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x72, 0x6c, 0x67, 0x73, 0x22, 0x7f, 0x0a, 0x11, 0x4c, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x2e, 0x0a, 0x09, 0x69, 0x67, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x49, 0x47, 0x50, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x08, 0x69, 0x67, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x69, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x0b, 0x4c, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x30, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x4c, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x52, 0x0a, 0x10, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb2, 0x02, 0x0a, 0x16, 0x53, 0x52, 0x76, 0x36, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x31, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x31, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x25, 0x0a, 0x0c, 0x53, 0x52, 0x76, 0x36, 0x53, 0x49, 0x44, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x31, 0x22, 0x31, 0x0a, 0x07, 0x53, 0x52, 0x76, 0x36, 0x54, 0x4c, 0x56, 0x12, 0x26, 0x0a, 0x03, 0x74, 0x6c, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x03, 0x74, 0x6c, 0x76, 0x22, 0xa0, 0x02, 0x0a, 0x15, 0x53, 0x52, 0x76, 0x36, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x53, 0x49, 0x44, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x54, 0x4c, 0x56, 0x2e, 0x53, 0x75, 0x62, 0x53, 0x75, 0x62, 0x54, 0x6c, 0x76, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x53, 0x75, 0x62, 0x54, 0x6c, 0x76, 0x73, 0x1a, 0x4d, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x53, 0x75, 0x62, 0x54, 0x6c, 0x76, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x54, 0x4c, 0x56, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x10, 0x53, 0x52, 0x76, 0x36, 0x4c, 0x33, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x4c, 0x56, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x4c, 0x33, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x4c, 0x56, 0x2e, 0x53, 0x75, 0x62, 0x54, 0x6c, 0x76, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x6c, 0x76, 0x73, 0x1a, 0x4a, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x54, 0x6c, 0x76, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x54, 0x4c, 0x56, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x10, 0x53, 0x52, 0x76, 0x36, 0x4c, 0x32, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x4c, 0x56, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x4c, 0x32, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x4c, 0x56, 0x2e, 0x53, 0x75, 0x62, 0x54, 0x6c, 0x76, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x6c, 0x76, 0x73, 0x1a, 0x4a, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x54, 0x6c, 0x76, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x70, 0x62, 0x2e, 0x53, 0x52, 0x76, 0x36, 0x54, 0x4c, 0x56, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x35, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x74, 0x6c, 0x76, 0x73, 0x2a, 0xf7, 0x01, 0x0a, 0x0f, 0x4c, 0x73, 0x4f, 0x73, 0x70, 0x66, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x53, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x4c, 0x53, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x41, 0x52, 0x45, 0x41, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x4c, 0x53, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x52, 0x45, 0x41, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x53, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x31, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x53, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x32, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x4c, 0x53, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x53, 0x53, 0x41, 0x31, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x4c, 0x53, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x53, 0x53, 0x41, 0x32, 0x10, 0x06, 0x2a, 0x73, 0x0a, 0x0a, 0x4c, 0x73, 0x4e, 0x4c, 0x52, 0x49, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x53, 0x5f, 0x4e, 0x4c, 0x52, 0x49, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x53, 0x5f, 0x4e, 0x4c, 0x52, 0x49, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x53, 0x5f, 0x4e, 0x4c, 0x52, 0x49, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x53, 0x5f, 0x4e, 0x4c, 0x52, 0x49, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x5f, 0x56, 0x34, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x53, 0x5f, 0x4e, 0x4c, 0x52, 0x49, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x5f, 0x56, 0x36, 0x10, 0x04, 0x2a, 0xbb, 0x01, 0x0a, 0x0c, 0x4c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x44, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x53, 0x49, 0x53, 0x5f, 0x4c, 0x31, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x53, 0x49, 0x53, 0x5f, 0x4c, 0x32, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x5f, 0x56, 0x32, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x5f, 0x56, 0x33, 0x10, 0x06, 0x2a, 0xed, 0x05, 0x0a, 0x0c, 0x53, 0x52, 0x76, 0x36, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x4e, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x4e, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x4e, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x4e, 0x44, 0x58, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x44, 0x58, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x44, 0x58, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44, 0x58, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x4e, 0x44, 0x54, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x44, 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x44, 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x0b, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44, 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x44, 0x5f, 0x42, 0x36, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x10, 0x0e, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x44, 0x5f, 0x42, 0x4d, 0x10, 0x0f, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x44, 0x5f, 0x44, 0x58, 0x36, 0x10, 0x10, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x44, 0x5f, 0x44, 0x58, 0x34, 0x10, 0x11, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x44, 0x5f, 0x44, 0x54, 0x36, 0x10, 0x12, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x44, 0x5f, 0x44, 0x54, 0x34, 0x10, 0x13, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x44, 0x5f, 0x44, 0x54, 0x34, 0x36, 0x10, 0x14, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x44, 0x5f, 0x44, 0x58, 0x32, 0x10, 0x15, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x44, 0x5f, 0x44, 0x58, 0x32, 0x56, 0x10, 0x16, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x44, 0x5f, 0x44, 0x54, 0x32, 0x55, 0x10, 0x17, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x44, 0x5f, 0x44, 0x54, 0x32, 0x4d, 0x10, 0x18, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44, 0x5f, 0x42, 0x36, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x52, 0x65, 0x64, 0x10, 0x1b, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x4e, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x1c, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x4e, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x1d, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x4e, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x55, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x1e, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x4e, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x1f, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x44, 0x58, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x20, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44, 0x58, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x21, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44, 0x58, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x55, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x22, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x4e, 0x44, 0x58, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x23, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x44, 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x24, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44, 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x25, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x44, 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x55, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x26, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x4e, 0x44, 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x50, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x27, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4e, 0x44, 0x4d, 0x5f, 0x47, 0x54, 0x50, 0x36, 0x44, 0x10, 0x45, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4e, 0x44, 0x4d, 0x5f, 0x47, 0x54, 0x50, 0x36, 0x44, 0x49, 0x10, 0x46, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4e, 0x44, 0x4d, 0x5f, 0x47, 0x54, 0x50, 0x36, 0x45, 0x10, 0x47, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4e, 0x44, 0x4d, 0x5f, 0x47, 0x54, 0x50, 0x34, 0x45, 0x10, 0x48, 0x2a, 0x44, 0x0a, 0x08, 0x45, 0x4e, 0x4c, 0x50, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x79, 0x70, 0x65, 0x31, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x79, 0x70, 0x65, 0x32, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x79, 0x70, 0x65, 0x33, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x79, 0x70, 0x65, 0x34, 0x10, 0x04, 0x42, 0x24, 0x5a, 0x22, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x73, 0x72, 0x67, 0x2f, 0x67, 0x6f, 0x62, 0x67, 0x70, 0x2f, 0x76, 0x33, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_attribute_proto_rawDescOnce sync.Once file_attribute_proto_rawDescData = file_attribute_proto_rawDesc ) func file_attribute_proto_rawDescGZIP() []byte { file_attribute_proto_rawDescOnce.Do(func() { file_attribute_proto_rawDescData = protoimpl.X.CompressGZIP(file_attribute_proto_rawDescData) }) return file_attribute_proto_rawDescData } var file_attribute_proto_enumTypes = make([]protoimpl.EnumInfo, 6) var file_attribute_proto_msgTypes = make([]protoimpl.MessageInfo, 122) var file_attribute_proto_goTypes = []interface{}{ (LsOspfRouteType)(0), // 0: apipb.LsOspfRouteType (LsNLRIType)(0), // 1: apipb.LsNLRIType (LsProtocolID)(0), // 2: apipb.LsProtocolID (SRv6Behavior)(0), // 3: apipb.SRv6Behavior (ENLPType)(0), // 4: apipb.ENLPType (AsSegment_Type)(0), // 5: apipb.AsSegment.Type (*OriginAttribute)(nil), // 6: apipb.OriginAttribute (*AsSegment)(nil), // 7: apipb.AsSegment (*AsPathAttribute)(nil), // 8: apipb.AsPathAttribute (*NextHopAttribute)(nil), // 9: apipb.NextHopAttribute (*MultiExitDiscAttribute)(nil), // 10: apipb.MultiExitDiscAttribute (*LocalPrefAttribute)(nil), // 11: apipb.LocalPrefAttribute (*AtomicAggregateAttribute)(nil), // 12: apipb.AtomicAggregateAttribute (*AggregatorAttribute)(nil), // 13: apipb.AggregatorAttribute (*CommunitiesAttribute)(nil), // 14: apipb.CommunitiesAttribute (*OriginatorIdAttribute)(nil), // 15: apipb.OriginatorIdAttribute (*ClusterListAttribute)(nil), // 16: apipb.ClusterListAttribute (*IPAddressPrefix)(nil), // 17: apipb.IPAddressPrefix (*LabeledIPAddressPrefix)(nil), // 18: apipb.LabeledIPAddressPrefix (*EncapsulationNLRI)(nil), // 19: apipb.EncapsulationNLRI (*RouteDistinguisherTwoOctetASN)(nil), // 20: apipb.RouteDistinguisherTwoOctetASN (*RouteDistinguisherIPAddress)(nil), // 21: apipb.RouteDistinguisherIPAddress (*RouteDistinguisherFourOctetASN)(nil), // 22: apipb.RouteDistinguisherFourOctetASN (*EthernetSegmentIdentifier)(nil), // 23: apipb.EthernetSegmentIdentifier (*EVPNEthernetAutoDiscoveryRoute)(nil), // 24: apipb.EVPNEthernetAutoDiscoveryRoute (*EVPNMACIPAdvertisementRoute)(nil), // 25: apipb.EVPNMACIPAdvertisementRoute (*EVPNInclusiveMulticastEthernetTagRoute)(nil), // 26: apipb.EVPNInclusiveMulticastEthernetTagRoute (*EVPNEthernetSegmentRoute)(nil), // 27: apipb.EVPNEthernetSegmentRoute (*EVPNIPPrefixRoute)(nil), // 28: apipb.EVPNIPPrefixRoute (*EVPNIPMSIRoute)(nil), // 29: apipb.EVPNIPMSIRoute (*SRPolicyNLRI)(nil), // 30: apipb.SRPolicyNLRI (*LabeledVPNIPAddressPrefix)(nil), // 31: apipb.LabeledVPNIPAddressPrefix (*RouteTargetMembershipNLRI)(nil), // 32: apipb.RouteTargetMembershipNLRI (*FlowSpecIPPrefix)(nil), // 33: apipb.FlowSpecIPPrefix (*FlowSpecMAC)(nil), // 34: apipb.FlowSpecMAC (*FlowSpecComponentItem)(nil), // 35: apipb.FlowSpecComponentItem (*FlowSpecComponent)(nil), // 36: apipb.FlowSpecComponent (*FlowSpecNLRI)(nil), // 37: apipb.FlowSpecNLRI (*VPNFlowSpecNLRI)(nil), // 38: apipb.VPNFlowSpecNLRI (*OpaqueNLRI)(nil), // 39: apipb.OpaqueNLRI (*LsNodeDescriptor)(nil), // 40: apipb.LsNodeDescriptor (*LsLinkDescriptor)(nil), // 41: apipb.LsLinkDescriptor (*LsPrefixDescriptor)(nil), // 42: apipb.LsPrefixDescriptor (*LsNodeNLRI)(nil), // 43: apipb.LsNodeNLRI (*LsLinkNLRI)(nil), // 44: apipb.LsLinkNLRI (*LsPrefixV4NLRI)(nil), // 45: apipb.LsPrefixV4NLRI (*LsPrefixV6NLRI)(nil), // 46: apipb.LsPrefixV6NLRI (*LsAddrPrefix)(nil), // 47: apipb.LsAddrPrefix (*MUPInterworkSegmentDiscoveryRoute)(nil), // 48: apipb.MUPInterworkSegmentDiscoveryRoute (*MUPDirectSegmentDiscoveryRoute)(nil), // 49: apipb.MUPDirectSegmentDiscoveryRoute (*MUPType1SessionTransformedRoute)(nil), // 50: apipb.MUPType1SessionTransformedRoute (*MUPType2SessionTransformedRoute)(nil), // 51: apipb.MUPType2SessionTransformedRoute (*MpReachNLRIAttribute)(nil), // 52: apipb.MpReachNLRIAttribute (*MpUnreachNLRIAttribute)(nil), // 53: apipb.MpUnreachNLRIAttribute (*TwoOctetAsSpecificExtended)(nil), // 54: apipb.TwoOctetAsSpecificExtended (*IPv4AddressSpecificExtended)(nil), // 55: apipb.IPv4AddressSpecificExtended (*FourOctetAsSpecificExtended)(nil), // 56: apipb.FourOctetAsSpecificExtended (*LinkBandwidthExtended)(nil), // 57: apipb.LinkBandwidthExtended (*ValidationExtended)(nil), // 58: apipb.ValidationExtended (*ColorExtended)(nil), // 59: apipb.ColorExtended (*EncapExtended)(nil), // 60: apipb.EncapExtended (*DefaultGatewayExtended)(nil), // 61: apipb.DefaultGatewayExtended (*OpaqueExtended)(nil), // 62: apipb.OpaqueExtended (*ESILabelExtended)(nil), // 63: apipb.ESILabelExtended (*ESImportRouteTarget)(nil), // 64: apipb.ESImportRouteTarget (*MacMobilityExtended)(nil), // 65: apipb.MacMobilityExtended (*RouterMacExtended)(nil), // 66: apipb.RouterMacExtended (*TrafficRateExtended)(nil), // 67: apipb.TrafficRateExtended (*TrafficActionExtended)(nil), // 68: apipb.TrafficActionExtended (*RedirectTwoOctetAsSpecificExtended)(nil), // 69: apipb.RedirectTwoOctetAsSpecificExtended (*RedirectIPv4AddressSpecificExtended)(nil), // 70: apipb.RedirectIPv4AddressSpecificExtended (*RedirectFourOctetAsSpecificExtended)(nil), // 71: apipb.RedirectFourOctetAsSpecificExtended (*TrafficRemarkExtended)(nil), // 72: apipb.TrafficRemarkExtended (*MUPExtended)(nil), // 73: apipb.MUPExtended (*UnknownExtended)(nil), // 74: apipb.UnknownExtended (*ExtendedCommunitiesAttribute)(nil), // 75: apipb.ExtendedCommunitiesAttribute (*As4PathAttribute)(nil), // 76: apipb.As4PathAttribute (*As4AggregatorAttribute)(nil), // 77: apipb.As4AggregatorAttribute (*PmsiTunnelAttribute)(nil), // 78: apipb.PmsiTunnelAttribute (*TunnelEncapSubTLVEncapsulation)(nil), // 79: apipb.TunnelEncapSubTLVEncapsulation (*TunnelEncapSubTLVProtocol)(nil), // 80: apipb.TunnelEncapSubTLVProtocol (*TunnelEncapSubTLVColor)(nil), // 81: apipb.TunnelEncapSubTLVColor (*TunnelEncapSubTLVSRPreference)(nil), // 82: apipb.TunnelEncapSubTLVSRPreference (*TunnelEncapSubTLVSRCandidatePathName)(nil), // 83: apipb.TunnelEncapSubTLVSRCandidatePathName (*TunnelEncapSubTLVSRPriority)(nil), // 84: apipb.TunnelEncapSubTLVSRPriority (*TunnelEncapSubTLVSRBindingSID)(nil), // 85: apipb.TunnelEncapSubTLVSRBindingSID (*SRBindingSID)(nil), // 86: apipb.SRBindingSID (*SRv6EndPointBehavior)(nil), // 87: apipb.SRv6EndPointBehavior (*SRv6BindingSID)(nil), // 88: apipb.SRv6BindingSID (*TunnelEncapSubTLVSRENLP)(nil), // 89: apipb.TunnelEncapSubTLVSRENLP (*SRWeight)(nil), // 90: apipb.SRWeight (*SegmentFlags)(nil), // 91: apipb.SegmentFlags (*SegmentTypeA)(nil), // 92: apipb.SegmentTypeA (*SegmentTypeB)(nil), // 93: apipb.SegmentTypeB (*TunnelEncapSubTLVSRSegmentList)(nil), // 94: apipb.TunnelEncapSubTLVSRSegmentList (*TunnelEncapSubTLVEgressEndpoint)(nil), // 95: apipb.TunnelEncapSubTLVEgressEndpoint (*TunnelEncapSubTLVUDPDestPort)(nil), // 96: apipb.TunnelEncapSubTLVUDPDestPort (*TunnelEncapSubTLVUnknown)(nil), // 97: apipb.TunnelEncapSubTLVUnknown (*TunnelEncapTLV)(nil), // 98: apipb.TunnelEncapTLV (*TunnelEncapAttribute)(nil), // 99: apipb.TunnelEncapAttribute (*IPv6AddressSpecificExtended)(nil), // 100: apipb.IPv6AddressSpecificExtended (*RedirectIPv6AddressSpecificExtended)(nil), // 101: apipb.RedirectIPv6AddressSpecificExtended (*IP6ExtendedCommunitiesAttribute)(nil), // 102: apipb.IP6ExtendedCommunitiesAttribute (*AigpTLVIGPMetric)(nil), // 103: apipb.AigpTLVIGPMetric (*AigpTLVUnknown)(nil), // 104: apipb.AigpTLVUnknown (*AigpAttribute)(nil), // 105: apipb.AigpAttribute (*LargeCommunity)(nil), // 106: apipb.LargeCommunity (*LargeCommunitiesAttribute)(nil), // 107: apipb.LargeCommunitiesAttribute (*LsNodeFlags)(nil), // 108: apipb.LsNodeFlags (*LsIGPFlags)(nil), // 109: apipb.LsIGPFlags (*LsSrRange)(nil), // 110: apipb.LsSrRange (*LsSrCapabilities)(nil), // 111: apipb.LsSrCapabilities (*LsSrLocalBlock)(nil), // 112: apipb.LsSrLocalBlock (*LsAttributeNode)(nil), // 113: apipb.LsAttributeNode (*LsAttributeLink)(nil), // 114: apipb.LsAttributeLink (*LsAttributePrefix)(nil), // 115: apipb.LsAttributePrefix (*LsAttribute)(nil), // 116: apipb.LsAttribute (*UnknownAttribute)(nil), // 117: apipb.UnknownAttribute (*SRv6StructureSubSubTLV)(nil), // 118: apipb.SRv6StructureSubSubTLV (*SRv6SIDFlags)(nil), // 119: apipb.SRv6SIDFlags (*SRv6TLV)(nil), // 120: apipb.SRv6TLV (*SRv6InformationSubTLV)(nil), // 121: apipb.SRv6InformationSubTLV (*SRv6L3ServiceTLV)(nil), // 122: apipb.SRv6L3ServiceTLV (*SRv6L2ServiceTLV)(nil), // 123: apipb.SRv6L2ServiceTLV (*PrefixSID)(nil), // 124: apipb.PrefixSID nil, // 125: apipb.SRv6InformationSubTLV.SubSubTlvsEntry nil, // 126: apipb.SRv6L3ServiceTLV.SubTlvsEntry nil, // 127: apipb.SRv6L2ServiceTLV.SubTlvsEntry (*anypb.Any)(nil), // 128: google.protobuf.Any (*Family)(nil), // 129: apipb.Family } var file_attribute_proto_depIdxs = []int32{ 5, // 0: apipb.AsSegment.type:type_name -> apipb.AsSegment.Type 7, // 1: apipb.AsPathAttribute.segments:type_name -> apipb.AsSegment 128, // 2: apipb.EVPNEthernetAutoDiscoveryRoute.rd:type_name -> google.protobuf.Any 23, // 3: apipb.EVPNEthernetAutoDiscoveryRoute.esi:type_name -> apipb.EthernetSegmentIdentifier 128, // 4: apipb.EVPNMACIPAdvertisementRoute.rd:type_name -> google.protobuf.Any 23, // 5: apipb.EVPNMACIPAdvertisementRoute.esi:type_name -> apipb.EthernetSegmentIdentifier 128, // 6: apipb.EVPNInclusiveMulticastEthernetTagRoute.rd:type_name -> google.protobuf.Any 128, // 7: apipb.EVPNEthernetSegmentRoute.rd:type_name -> google.protobuf.Any 23, // 8: apipb.EVPNEthernetSegmentRoute.esi:type_name -> apipb.EthernetSegmentIdentifier 128, // 9: apipb.EVPNIPPrefixRoute.rd:type_name -> google.protobuf.Any 23, // 10: apipb.EVPNIPPrefixRoute.esi:type_name -> apipb.EthernetSegmentIdentifier 128, // 11: apipb.EVPNIPMSIRoute.rd:type_name -> google.protobuf.Any 128, // 12: apipb.EVPNIPMSIRoute.rt:type_name -> google.protobuf.Any 128, // 13: apipb.LabeledVPNIPAddressPrefix.rd:type_name -> google.protobuf.Any 128, // 14: apipb.RouteTargetMembershipNLRI.rt:type_name -> google.protobuf.Any 35, // 15: apipb.FlowSpecComponent.items:type_name -> apipb.FlowSpecComponentItem 128, // 16: apipb.FlowSpecNLRI.rules:type_name -> google.protobuf.Any 128, // 17: apipb.VPNFlowSpecNLRI.rd:type_name -> google.protobuf.Any 128, // 18: apipb.VPNFlowSpecNLRI.rules:type_name -> google.protobuf.Any 0, // 19: apipb.LsPrefixDescriptor.ospf_route_type:type_name -> apipb.LsOspfRouteType 40, // 20: apipb.LsNodeNLRI.local_node:type_name -> apipb.LsNodeDescriptor 40, // 21: apipb.LsLinkNLRI.local_node:type_name -> apipb.LsNodeDescriptor 40, // 22: apipb.LsLinkNLRI.remote_node:type_name -> apipb.LsNodeDescriptor 41, // 23: apipb.LsLinkNLRI.link_descriptor:type_name -> apipb.LsLinkDescriptor 40, // 24: apipb.LsPrefixV4NLRI.local_node:type_name -> apipb.LsNodeDescriptor 42, // 25: apipb.LsPrefixV4NLRI.prefix_descriptor:type_name -> apipb.LsPrefixDescriptor 40, // 26: apipb.LsPrefixV6NLRI.local_node:type_name -> apipb.LsNodeDescriptor 42, // 27: apipb.LsPrefixV6NLRI.prefix_descriptor:type_name -> apipb.LsPrefixDescriptor 1, // 28: apipb.LsAddrPrefix.type:type_name -> apipb.LsNLRIType 128, // 29: apipb.LsAddrPrefix.nlri:type_name -> google.protobuf.Any 2, // 30: apipb.LsAddrPrefix.protocol_id:type_name -> apipb.LsProtocolID 128, // 31: apipb.MUPInterworkSegmentDiscoveryRoute.rd:type_name -> google.protobuf.Any 128, // 32: apipb.MUPDirectSegmentDiscoveryRoute.rd:type_name -> google.protobuf.Any 128, // 33: apipb.MUPType1SessionTransformedRoute.rd:type_name -> google.protobuf.Any 128, // 34: apipb.MUPType2SessionTransformedRoute.rd:type_name -> google.protobuf.Any 129, // 35: apipb.MpReachNLRIAttribute.family:type_name -> apipb.Family 128, // 36: apipb.MpReachNLRIAttribute.nlris:type_name -> google.protobuf.Any 129, // 37: apipb.MpUnreachNLRIAttribute.family:type_name -> apipb.Family 128, // 38: apipb.MpUnreachNLRIAttribute.nlris:type_name -> google.protobuf.Any 128, // 39: apipb.ExtendedCommunitiesAttribute.communities:type_name -> google.protobuf.Any 7, // 40: apipb.As4PathAttribute.segments:type_name -> apipb.AsSegment 128, // 41: apipb.TunnelEncapSubTLVSRBindingSID.bsid:type_name -> google.protobuf.Any 3, // 42: apipb.SRv6EndPointBehavior.behavior:type_name -> apipb.SRv6Behavior 87, // 43: apipb.SRv6BindingSID.endpoint_behavior_structure:type_name -> apipb.SRv6EndPointBehavior 4, // 44: apipb.TunnelEncapSubTLVSRENLP.enlp:type_name -> apipb.ENLPType 91, // 45: apipb.SegmentTypeA.flags:type_name -> apipb.SegmentFlags 91, // 46: apipb.SegmentTypeB.flags:type_name -> apipb.SegmentFlags 87, // 47: apipb.SegmentTypeB.endpoint_behavior_structure:type_name -> apipb.SRv6EndPointBehavior 90, // 48: apipb.TunnelEncapSubTLVSRSegmentList.weight:type_name -> apipb.SRWeight 128, // 49: apipb.TunnelEncapSubTLVSRSegmentList.segments:type_name -> google.protobuf.Any 128, // 50: apipb.TunnelEncapTLV.tlvs:type_name -> google.protobuf.Any 98, // 51: apipb.TunnelEncapAttribute.tlvs:type_name -> apipb.TunnelEncapTLV 128, // 52: apipb.IP6ExtendedCommunitiesAttribute.communities:type_name -> google.protobuf.Any 128, // 53: apipb.AigpAttribute.tlvs:type_name -> google.protobuf.Any 106, // 54: apipb.LargeCommunitiesAttribute.communities:type_name -> apipb.LargeCommunity 110, // 55: apipb.LsSrCapabilities.ranges:type_name -> apipb.LsSrRange 110, // 56: apipb.LsSrLocalBlock.ranges:type_name -> apipb.LsSrRange 108, // 57: apipb.LsAttributeNode.flags:type_name -> apipb.LsNodeFlags 111, // 58: apipb.LsAttributeNode.sr_capabilities:type_name -> apipb.LsSrCapabilities 112, // 59: apipb.LsAttributeNode.sr_local_block:type_name -> apipb.LsSrLocalBlock 109, // 60: apipb.LsAttributePrefix.igp_flags:type_name -> apipb.LsIGPFlags 113, // 61: apipb.LsAttribute.node:type_name -> apipb.LsAttributeNode 114, // 62: apipb.LsAttribute.link:type_name -> apipb.LsAttributeLink 115, // 63: apipb.LsAttribute.prefix:type_name -> apipb.LsAttributePrefix 128, // 64: apipb.SRv6TLV.tlv:type_name -> google.protobuf.Any 119, // 65: apipb.SRv6InformationSubTLV.flags:type_name -> apipb.SRv6SIDFlags 125, // 66: apipb.SRv6InformationSubTLV.sub_sub_tlvs:type_name -> apipb.SRv6InformationSubTLV.SubSubTlvsEntry 126, // 67: apipb.SRv6L3ServiceTLV.sub_tlvs:type_name -> apipb.SRv6L3ServiceTLV.SubTlvsEntry 127, // 68: apipb.SRv6L2ServiceTLV.sub_tlvs:type_name -> apipb.SRv6L2ServiceTLV.SubTlvsEntry 128, // 69: apipb.PrefixSID.tlvs:type_name -> google.protobuf.Any 120, // 70: apipb.SRv6InformationSubTLV.SubSubTlvsEntry.value:type_name -> apipb.SRv6TLV 120, // 71: apipb.SRv6L3ServiceTLV.SubTlvsEntry.value:type_name -> apipb.SRv6TLV 120, // 72: apipb.SRv6L2ServiceTLV.SubTlvsEntry.value:type_name -> apipb.SRv6TLV 73, // [73:73] is the sub-list for method output_type 73, // [73:73] is the sub-list for method input_type 73, // [73:73] is the sub-list for extension type_name 73, // [73:73] is the sub-list for extension extendee 0, // [0:73] is the sub-list for field type_name } func init() { file_attribute_proto_init() } func file_attribute_proto_init() { if File_attribute_proto != nil { return } file_gobgp_proto_init() if !protoimpl.UnsafeEnabled { file_attribute_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OriginAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AsSegment); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AsPathAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NextHopAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MultiExitDiscAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LocalPrefAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AtomicAggregateAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AggregatorAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommunitiesAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OriginatorIdAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterListAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IPAddressPrefix); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LabeledIPAddressPrefix); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EncapsulationNLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RouteDistinguisherTwoOctetASN); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RouteDistinguisherIPAddress); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RouteDistinguisherFourOctetASN); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EthernetSegmentIdentifier); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EVPNEthernetAutoDiscoveryRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EVPNMACIPAdvertisementRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EVPNInclusiveMulticastEthernetTagRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EVPNEthernetSegmentRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EVPNIPPrefixRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EVPNIPMSIRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRPolicyNLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LabeledVPNIPAddressPrefix); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RouteTargetMembershipNLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FlowSpecIPPrefix); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FlowSpecMAC); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FlowSpecComponentItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FlowSpecComponent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FlowSpecNLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VPNFlowSpecNLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OpaqueNLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsNodeDescriptor); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsLinkDescriptor); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsPrefixDescriptor); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsNodeNLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsLinkNLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsPrefixV4NLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsPrefixV6NLRI); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsAddrPrefix); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MUPInterworkSegmentDiscoveryRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MUPDirectSegmentDiscoveryRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MUPType1SessionTransformedRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MUPType2SessionTransformedRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MpReachNLRIAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MpUnreachNLRIAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TwoOctetAsSpecificExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IPv4AddressSpecificExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FourOctetAsSpecificExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LinkBandwidthExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidationExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ColorExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EncapExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DefaultGatewayExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OpaqueExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ESILabelExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ESImportRouteTarget); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MacMobilityExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RouterMacExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrafficRateExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrafficActionExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RedirectTwoOctetAsSpecificExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RedirectIPv4AddressSpecificExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RedirectFourOctetAsSpecificExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrafficRemarkExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MUPExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnknownExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExtendedCommunitiesAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*As4PathAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*As4AggregatorAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PmsiTunnelAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVEncapsulation); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVProtocol); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVColor); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVSRPreference); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVSRCandidatePathName); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVSRPriority); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVSRBindingSID); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRBindingSID); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRv6EndPointBehavior); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRv6BindingSID); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVSRENLP); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRWeight); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SegmentFlags); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SegmentTypeA); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SegmentTypeB); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVSRSegmentList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVEgressEndpoint); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVUDPDestPort); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapSubTLVUnknown); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapTLV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TunnelEncapAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IPv6AddressSpecificExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RedirectIPv6AddressSpecificExtended); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IP6ExtendedCommunitiesAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AigpTLVIGPMetric); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AigpTLVUnknown); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AigpAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LargeCommunity); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LargeCommunitiesAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsNodeFlags); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsIGPFlags); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsSrRange); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsSrCapabilities); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsSrLocalBlock); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsAttributeNode); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsAttributeLink); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsAttributePrefix); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LsAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnknownAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRv6StructureSubSubTLV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRv6SIDFlags); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRv6TLV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRv6InformationSubTLV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRv6L3ServiceTLV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SRv6L2ServiceTLV); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_attribute_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrefixSID); 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_attribute_proto_rawDesc, NumEnums: 6, NumMessages: 122, NumExtensions: 0, NumServices: 0, }, GoTypes: file_attribute_proto_goTypes, DependencyIndexes: file_attribute_proto_depIdxs, EnumInfos: file_attribute_proto_enumTypes, MessageInfos: file_attribute_proto_msgTypes, }.Build() File_attribute_proto = out.File file_attribute_proto_rawDesc = nil file_attribute_proto_goTypes = nil file_attribute_proto_depIdxs = nil }