// 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.36.6
// 	protoc        (unknown)
// source: api/attribute.proto

package api

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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 SRV6Behavior int32

const (
	SRV6Behavior_SRV6_BEHAVIOR_UNSPECIFIED           SRV6Behavior = 0
	SRV6Behavior_SRV6_BEHAVIOR_END                   SRV6Behavior = 1
	SRV6Behavior_SRV6_BEHAVIOR_END_WITH_PSP          SRV6Behavior = 2
	SRV6Behavior_SRV6_BEHAVIOR_END_WITH_USP          SRV6Behavior = 3
	SRV6Behavior_SRV6_BEHAVIOR_END_WITH_PSP_USP      SRV6Behavior = 4
	SRV6Behavior_SRV6_BEHAVIOR_ENDX                  SRV6Behavior = 5
	SRV6Behavior_SRV6_BEHAVIOR_ENDX_WITH_PSP         SRV6Behavior = 6
	SRV6Behavior_SRV6_BEHAVIOR_ENDX_WITH_USP         SRV6Behavior = 7
	SRV6Behavior_SRV6_BEHAVIOR_ENDX_WITH_PSP_USP     SRV6Behavior = 8
	SRV6Behavior_SRV6_BEHAVIOR_ENDT                  SRV6Behavior = 9
	SRV6Behavior_SRV6_BEHAVIOR_ENDT_WITH_PSP         SRV6Behavior = 10
	SRV6Behavior_SRV6_BEHAVIOR_ENDT_WITH_USP         SRV6Behavior = 11
	SRV6Behavior_SRV6_BEHAVIOR_ENDT_WITH_PSP_USP     SRV6Behavior = 12
	SRV6Behavior_SRV6_BEHAVIOR_END_B6_ENCAPS         SRV6Behavior = 14
	SRV6Behavior_SRV6_BEHAVIOR_END_BM                SRV6Behavior = 15
	SRV6Behavior_SRV6_BEHAVIOR_END_DX6               SRV6Behavior = 16
	SRV6Behavior_SRV6_BEHAVIOR_END_DX4               SRV6Behavior = 17
	SRV6Behavior_SRV6_BEHAVIOR_END_DT6               SRV6Behavior = 18
	SRV6Behavior_SRV6_BEHAVIOR_END_DT4               SRV6Behavior = 19
	SRV6Behavior_SRV6_BEHAVIOR_END_DT46              SRV6Behavior = 20
	SRV6Behavior_SRV6_BEHAVIOR_END_DX2               SRV6Behavior = 21
	SRV6Behavior_SRV6_BEHAVIOR_END_DX2V              SRV6Behavior = 22
	SRV6Behavior_SRV6_BEHAVIOR_END_DT2U              SRV6Behavior = 23
	SRV6Behavior_SRV6_BEHAVIOR_END_DT2M              SRV6Behavior = 24
	SRV6Behavior_SRV6_BEHAVIOR_END_B6_ENCAPS_RED     SRV6Behavior = 27
	SRV6Behavior_SRV6_BEHAVIOR_END_WITH_USD          SRV6Behavior = 28
	SRV6Behavior_SRV6_BEHAVIOR_END_WITH_PSP_USD      SRV6Behavior = 29
	SRV6Behavior_SRV6_BEHAVIOR_END_WITH_USP_USD      SRV6Behavior = 30
	SRV6Behavior_SRV6_BEHAVIOR_END_WITH_PSP_USP_USD  SRV6Behavior = 31
	SRV6Behavior_SRV6_BEHAVIOR_ENDX_WITH_USD         SRV6Behavior = 32
	SRV6Behavior_SRV6_BEHAVIOR_ENDX_WITH_PSP_USD     SRV6Behavior = 33
	SRV6Behavior_SRV6_BEHAVIOR_ENDX_WITH_USP_USD     SRV6Behavior = 34
	SRV6Behavior_SRV6_BEHAVIOR_ENDX_WITH_PSP_USP_USD SRV6Behavior = 35
	SRV6Behavior_SRV6_BEHAVIOR_ENDT_WITH_USD         SRV6Behavior = 36
	SRV6Behavior_SRV6_BEHAVIOR_ENDT_WITH_PSP_USD     SRV6Behavior = 37
	SRV6Behavior_SRV6_BEHAVIOR_ENDT_WITH_USP_USD     SRV6Behavior = 38
	SRV6Behavior_SRV6_BEHAVIOR_ENDT_WITH_PSP_USP_USD SRV6Behavior = 39
	SRV6Behavior_SRV6_BEHAVIOR_ENDM_GTP6D            SRV6Behavior = 69 // 0x0045
	SRV6Behavior_SRV6_BEHAVIOR_ENDM_GTP6DI           SRV6Behavior = 70 // 0x0046
	SRV6Behavior_SRV6_BEHAVIOR_ENDM_GTP6E            SRV6Behavior = 71 // 0x0047
	SRV6Behavior_SRV6_BEHAVIOR_ENDM_GTP4E            SRV6Behavior = 72 // 0x0048
)

// Enum value maps for SRV6Behavior.
var (
	SRV6Behavior_name = map[int32]string{
		0:  "SRV6_BEHAVIOR_UNSPECIFIED",
		1:  "SRV6_BEHAVIOR_END",
		2:  "SRV6_BEHAVIOR_END_WITH_PSP",
		3:  "SRV6_BEHAVIOR_END_WITH_USP",
		4:  "SRV6_BEHAVIOR_END_WITH_PSP_USP",
		5:  "SRV6_BEHAVIOR_ENDX",
		6:  "SRV6_BEHAVIOR_ENDX_WITH_PSP",
		7:  "SRV6_BEHAVIOR_ENDX_WITH_USP",
		8:  "SRV6_BEHAVIOR_ENDX_WITH_PSP_USP",
		9:  "SRV6_BEHAVIOR_ENDT",
		10: "SRV6_BEHAVIOR_ENDT_WITH_PSP",
		11: "SRV6_BEHAVIOR_ENDT_WITH_USP",
		12: "SRV6_BEHAVIOR_ENDT_WITH_PSP_USP",
		14: "SRV6_BEHAVIOR_END_B6_ENCAPS",
		15: "SRV6_BEHAVIOR_END_BM",
		16: "SRV6_BEHAVIOR_END_DX6",
		17: "SRV6_BEHAVIOR_END_DX4",
		18: "SRV6_BEHAVIOR_END_DT6",
		19: "SRV6_BEHAVIOR_END_DT4",
		20: "SRV6_BEHAVIOR_END_DT46",
		21: "SRV6_BEHAVIOR_END_DX2",
		22: "SRV6_BEHAVIOR_END_DX2V",
		23: "SRV6_BEHAVIOR_END_DT2U",
		24: "SRV6_BEHAVIOR_END_DT2M",
		27: "SRV6_BEHAVIOR_END_B6_ENCAPS_RED",
		28: "SRV6_BEHAVIOR_END_WITH_USD",
		29: "SRV6_BEHAVIOR_END_WITH_PSP_USD",
		30: "SRV6_BEHAVIOR_END_WITH_USP_USD",
		31: "SRV6_BEHAVIOR_END_WITH_PSP_USP_USD",
		32: "SRV6_BEHAVIOR_ENDX_WITH_USD",
		33: "SRV6_BEHAVIOR_ENDX_WITH_PSP_USD",
		34: "SRV6_BEHAVIOR_ENDX_WITH_USP_USD",
		35: "SRV6_BEHAVIOR_ENDX_WITH_PSP_USP_USD",
		36: "SRV6_BEHAVIOR_ENDT_WITH_USD",
		37: "SRV6_BEHAVIOR_ENDT_WITH_PSP_USD",
		38: "SRV6_BEHAVIOR_ENDT_WITH_USP_USD",
		39: "SRV6_BEHAVIOR_ENDT_WITH_PSP_USP_USD",
		69: "SRV6_BEHAVIOR_ENDM_GTP6D",
		70: "SRV6_BEHAVIOR_ENDM_GTP6DI",
		71: "SRV6_BEHAVIOR_ENDM_GTP6E",
		72: "SRV6_BEHAVIOR_ENDM_GTP4E",
	}
	SRV6Behavior_value = map[string]int32{
		"SRV6_BEHAVIOR_UNSPECIFIED":           0,
		"SRV6_BEHAVIOR_END":                   1,
		"SRV6_BEHAVIOR_END_WITH_PSP":          2,
		"SRV6_BEHAVIOR_END_WITH_USP":          3,
		"SRV6_BEHAVIOR_END_WITH_PSP_USP":      4,
		"SRV6_BEHAVIOR_ENDX":                  5,
		"SRV6_BEHAVIOR_ENDX_WITH_PSP":         6,
		"SRV6_BEHAVIOR_ENDX_WITH_USP":         7,
		"SRV6_BEHAVIOR_ENDX_WITH_PSP_USP":     8,
		"SRV6_BEHAVIOR_ENDT":                  9,
		"SRV6_BEHAVIOR_ENDT_WITH_PSP":         10,
		"SRV6_BEHAVIOR_ENDT_WITH_USP":         11,
		"SRV6_BEHAVIOR_ENDT_WITH_PSP_USP":     12,
		"SRV6_BEHAVIOR_END_B6_ENCAPS":         14,
		"SRV6_BEHAVIOR_END_BM":                15,
		"SRV6_BEHAVIOR_END_DX6":               16,
		"SRV6_BEHAVIOR_END_DX4":               17,
		"SRV6_BEHAVIOR_END_DT6":               18,
		"SRV6_BEHAVIOR_END_DT4":               19,
		"SRV6_BEHAVIOR_END_DT46":              20,
		"SRV6_BEHAVIOR_END_DX2":               21,
		"SRV6_BEHAVIOR_END_DX2V":              22,
		"SRV6_BEHAVIOR_END_DT2U":              23,
		"SRV6_BEHAVIOR_END_DT2M":              24,
		"SRV6_BEHAVIOR_END_B6_ENCAPS_RED":     27,
		"SRV6_BEHAVIOR_END_WITH_USD":          28,
		"SRV6_BEHAVIOR_END_WITH_PSP_USD":      29,
		"SRV6_BEHAVIOR_END_WITH_USP_USD":      30,
		"SRV6_BEHAVIOR_END_WITH_PSP_USP_USD":  31,
		"SRV6_BEHAVIOR_ENDX_WITH_USD":         32,
		"SRV6_BEHAVIOR_ENDX_WITH_PSP_USD":     33,
		"SRV6_BEHAVIOR_ENDX_WITH_USP_USD":     34,
		"SRV6_BEHAVIOR_ENDX_WITH_PSP_USP_USD": 35,
		"SRV6_BEHAVIOR_ENDT_WITH_USD":         36,
		"SRV6_BEHAVIOR_ENDT_WITH_PSP_USD":     37,
		"SRV6_BEHAVIOR_ENDT_WITH_USP_USD":     38,
		"SRV6_BEHAVIOR_ENDT_WITH_PSP_USP_USD": 39,
		"SRV6_BEHAVIOR_ENDM_GTP6D":            69,
		"SRV6_BEHAVIOR_ENDM_GTP6DI":           70,
		"SRV6_BEHAVIOR_ENDM_GTP6E":            71,
		"SRV6_BEHAVIOR_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_api_attribute_proto_enumTypes[0].Descriptor()
}

func (SRV6Behavior) Type() protoreflect.EnumType {
	return &file_api_attribute_proto_enumTypes[0]
}

func (x SRV6Behavior) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SRV6Behavior.Descriptor instead.
func (SRV6Behavior) EnumDescriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{0}
}

type ENLPType int32

const (
	ENLPType_ENLP_TYPE_UNSPECIFIED ENLPType = 0
	ENLPType_ENLP_TYPE_TYPE1       ENLPType = 1
	ENLPType_ENLP_TYPE_TYPE2       ENLPType = 2
	ENLPType_ENLP_TYPE_TYPE3       ENLPType = 3
	ENLPType_ENLP_TYPE_TYPE4       ENLPType = 4
)

// Enum value maps for ENLPType.
var (
	ENLPType_name = map[int32]string{
		0: "ENLP_TYPE_UNSPECIFIED",
		1: "ENLP_TYPE_TYPE1",
		2: "ENLP_TYPE_TYPE2",
		3: "ENLP_TYPE_TYPE3",
		4: "ENLP_TYPE_TYPE4",
	}
	ENLPType_value = map[string]int32{
		"ENLP_TYPE_UNSPECIFIED": 0,
		"ENLP_TYPE_TYPE1":       1,
		"ENLP_TYPE_TYPE2":       2,
		"ENLP_TYPE_TYPE3":       3,
		"ENLP_TYPE_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_api_attribute_proto_enumTypes[1].Descriptor()
}

func (ENLPType) Type() protoreflect.EnumType {
	return &file_api_attribute_proto_enumTypes[1]
}

func (x ENLPType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ENLPType.Descriptor instead.
func (ENLPType) EnumDescriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{1}
}

type AsSegment_Type int32

const (
	AsSegment_TYPE_UNSPECIFIED        AsSegment_Type = 0
	AsSegment_TYPE_AS_SET             AsSegment_Type = 1
	AsSegment_TYPE_AS_SEQUENCE        AsSegment_Type = 2
	AsSegment_TYPE_AS_CONFED_SEQUENCE AsSegment_Type = 3
	AsSegment_TYPE_AS_CONFED_SET      AsSegment_Type = 4
)

// Enum value maps for AsSegment_Type.
var (
	AsSegment_Type_name = map[int32]string{
		0: "TYPE_UNSPECIFIED",
		1: "TYPE_AS_SET",
		2: "TYPE_AS_SEQUENCE",
		3: "TYPE_AS_CONFED_SEQUENCE",
		4: "TYPE_AS_CONFED_SET",
	}
	AsSegment_Type_value = map[string]int32{
		"TYPE_UNSPECIFIED":        0,
		"TYPE_AS_SET":             1,
		"TYPE_AS_SEQUENCE":        2,
		"TYPE_AS_CONFED_SEQUENCE": 3,
		"TYPE_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_api_attribute_proto_enumTypes[2].Descriptor()
}

func (AsSegment_Type) Type() protoreflect.EnumType {
	return &file_api_attribute_proto_enumTypes[2]
}

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_api_attribute_proto_rawDescGZIP(), []int{2, 0}
}

type Attribute struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Attr:
	//
	//	*Attribute_Unknown
	//	*Attribute_Origin
	//	*Attribute_AsPath
	//	*Attribute_NextHop
	//	*Attribute_MultiExitDisc
	//	*Attribute_LocalPref
	//	*Attribute_AtomicAggregate
	//	*Attribute_Aggregator
	//	*Attribute_Communities
	//	*Attribute_OriginatorId
	//	*Attribute_ClusterList
	//	*Attribute_MpReach
	//	*Attribute_MpUnreach
	//	*Attribute_ExtendedCommunities
	//	*Attribute_As4Path
	//	*Attribute_As4Aggregator
	//	*Attribute_PmsiTunnel
	//	*Attribute_TunnelEncap
	//	*Attribute_Ip6ExtendedCommunities
	//	*Attribute_Aigp
	//	*Attribute_LargeCommunities
	//	*Attribute_Ls
	//	*Attribute_PrefixSid
	Attr          isAttribute_Attr `protobuf_oneof:"attr"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Attribute) Reset() {
	*x = Attribute{}
	mi := &file_api_attribute_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Attribute) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Attribute) ProtoMessage() {}

func (x *Attribute) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Attribute.ProtoReflect.Descriptor instead.
func (*Attribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{0}
}

func (x *Attribute) GetAttr() isAttribute_Attr {
	if x != nil {
		return x.Attr
	}
	return nil
}

func (x *Attribute) GetUnknown() *UnknownAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_Unknown); ok {
			return x.Unknown
		}
	}
	return nil
}

func (x *Attribute) GetOrigin() *OriginAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_Origin); ok {
			return x.Origin
		}
	}
	return nil
}

func (x *Attribute) GetAsPath() *AsPathAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_AsPath); ok {
			return x.AsPath
		}
	}
	return nil
}

func (x *Attribute) GetNextHop() *NextHopAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_NextHop); ok {
			return x.NextHop
		}
	}
	return nil
}

func (x *Attribute) GetMultiExitDisc() *MultiExitDiscAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_MultiExitDisc); ok {
			return x.MultiExitDisc
		}
	}
	return nil
}

func (x *Attribute) GetLocalPref() *LocalPrefAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_LocalPref); ok {
			return x.LocalPref
		}
	}
	return nil
}

func (x *Attribute) GetAtomicAggregate() *AtomicAggregateAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_AtomicAggregate); ok {
			return x.AtomicAggregate
		}
	}
	return nil
}

func (x *Attribute) GetAggregator() *AggregatorAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_Aggregator); ok {
			return x.Aggregator
		}
	}
	return nil
}

func (x *Attribute) GetCommunities() *CommunitiesAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_Communities); ok {
			return x.Communities
		}
	}
	return nil
}

func (x *Attribute) GetOriginatorId() *OriginatorIdAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_OriginatorId); ok {
			return x.OriginatorId
		}
	}
	return nil
}

func (x *Attribute) GetClusterList() *ClusterListAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_ClusterList); ok {
			return x.ClusterList
		}
	}
	return nil
}

func (x *Attribute) GetMpReach() *MpReachNLRIAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_MpReach); ok {
			return x.MpReach
		}
	}
	return nil
}

func (x *Attribute) GetMpUnreach() *MpUnreachNLRIAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_MpUnreach); ok {
			return x.MpUnreach
		}
	}
	return nil
}

func (x *Attribute) GetExtendedCommunities() *ExtendedCommunitiesAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_ExtendedCommunities); ok {
			return x.ExtendedCommunities
		}
	}
	return nil
}

func (x *Attribute) GetAs4Path() *As4PathAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_As4Path); ok {
			return x.As4Path
		}
	}
	return nil
}

func (x *Attribute) GetAs4Aggregator() *As4AggregatorAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_As4Aggregator); ok {
			return x.As4Aggregator
		}
	}
	return nil
}

func (x *Attribute) GetPmsiTunnel() *PmsiTunnelAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_PmsiTunnel); ok {
			return x.PmsiTunnel
		}
	}
	return nil
}

func (x *Attribute) GetTunnelEncap() *TunnelEncapAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_TunnelEncap); ok {
			return x.TunnelEncap
		}
	}
	return nil
}

func (x *Attribute) GetIp6ExtendedCommunities() *IP6ExtendedCommunitiesAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_Ip6ExtendedCommunities); ok {
			return x.Ip6ExtendedCommunities
		}
	}
	return nil
}

func (x *Attribute) GetAigp() *AigpAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_Aigp); ok {
			return x.Aigp
		}
	}
	return nil
}

func (x *Attribute) GetLargeCommunities() *LargeCommunitiesAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_LargeCommunities); ok {
			return x.LargeCommunities
		}
	}
	return nil
}

func (x *Attribute) GetLs() *LsAttribute {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_Ls); ok {
			return x.Ls
		}
	}
	return nil
}

func (x *Attribute) GetPrefixSid() *PrefixSID {
	if x != nil {
		if x, ok := x.Attr.(*Attribute_PrefixSid); ok {
			return x.PrefixSid
		}
	}
	return nil
}

type isAttribute_Attr interface {
	isAttribute_Attr()
}

type Attribute_Unknown struct {
	Unknown *UnknownAttribute `protobuf:"bytes,1,opt,name=unknown,proto3,oneof"`
}

type Attribute_Origin struct {
	Origin *OriginAttribute `protobuf:"bytes,2,opt,name=origin,proto3,oneof"`
}

type Attribute_AsPath struct {
	AsPath *AsPathAttribute `protobuf:"bytes,3,opt,name=as_path,json=asPath,proto3,oneof"`
}

type Attribute_NextHop struct {
	NextHop *NextHopAttribute `protobuf:"bytes,4,opt,name=next_hop,json=nextHop,proto3,oneof"`
}

type Attribute_MultiExitDisc struct {
	MultiExitDisc *MultiExitDiscAttribute `protobuf:"bytes,5,opt,name=multi_exit_disc,json=multiExitDisc,proto3,oneof"`
}

type Attribute_LocalPref struct {
	LocalPref *LocalPrefAttribute `protobuf:"bytes,6,opt,name=local_pref,json=localPref,proto3,oneof"`
}

type Attribute_AtomicAggregate struct {
	AtomicAggregate *AtomicAggregateAttribute `protobuf:"bytes,7,opt,name=atomic_aggregate,json=atomicAggregate,proto3,oneof"`
}

type Attribute_Aggregator struct {
	Aggregator *AggregatorAttribute `protobuf:"bytes,8,opt,name=aggregator,proto3,oneof"`
}

type Attribute_Communities struct {
	Communities *CommunitiesAttribute `protobuf:"bytes,9,opt,name=communities,proto3,oneof"`
}

type Attribute_OriginatorId struct {
	OriginatorId *OriginatorIdAttribute `protobuf:"bytes,10,opt,name=originator_id,json=originatorId,proto3,oneof"`
}

type Attribute_ClusterList struct {
	ClusterList *ClusterListAttribute `protobuf:"bytes,11,opt,name=cluster_list,json=clusterList,proto3,oneof"`
}

type Attribute_MpReach struct {
	MpReach *MpReachNLRIAttribute `protobuf:"bytes,12,opt,name=mp_reach,json=mpReach,proto3,oneof"`
}

type Attribute_MpUnreach struct {
	MpUnreach *MpUnreachNLRIAttribute `protobuf:"bytes,13,opt,name=mp_unreach,json=mpUnreach,proto3,oneof"`
}

type Attribute_ExtendedCommunities struct {
	ExtendedCommunities *ExtendedCommunitiesAttribute `protobuf:"bytes,14,opt,name=extended_communities,json=extendedCommunities,proto3,oneof"`
}

type Attribute_As4Path struct {
	As4Path *As4PathAttribute `protobuf:"bytes,15,opt,name=as4_path,json=as4Path,proto3,oneof"`
}

type Attribute_As4Aggregator struct {
	As4Aggregator *As4AggregatorAttribute `protobuf:"bytes,16,opt,name=as4_aggregator,json=as4Aggregator,proto3,oneof"`
}

type Attribute_PmsiTunnel struct {
	PmsiTunnel *PmsiTunnelAttribute `protobuf:"bytes,17,opt,name=pmsi_tunnel,json=pmsiTunnel,proto3,oneof"`
}

type Attribute_TunnelEncap struct {
	TunnelEncap *TunnelEncapAttribute `protobuf:"bytes,18,opt,name=tunnel_encap,json=tunnelEncap,proto3,oneof"`
}

type Attribute_Ip6ExtendedCommunities struct {
	Ip6ExtendedCommunities *IP6ExtendedCommunitiesAttribute `protobuf:"bytes,19,opt,name=ip6_extended_communities,json=ip6ExtendedCommunities,proto3,oneof"`
}

type Attribute_Aigp struct {
	Aigp *AigpAttribute `protobuf:"bytes,20,opt,name=aigp,proto3,oneof"`
}

type Attribute_LargeCommunities struct {
	LargeCommunities *LargeCommunitiesAttribute `protobuf:"bytes,21,opt,name=large_communities,json=largeCommunities,proto3,oneof"`
}

type Attribute_Ls struct {
	Ls *LsAttribute `protobuf:"bytes,22,opt,name=ls,proto3,oneof"`
}

type Attribute_PrefixSid struct {
	PrefixSid *PrefixSID `protobuf:"bytes,23,opt,name=prefix_sid,json=prefixSid,proto3,oneof"`
}

func (*Attribute_Unknown) isAttribute_Attr() {}

func (*Attribute_Origin) isAttribute_Attr() {}

func (*Attribute_AsPath) isAttribute_Attr() {}

func (*Attribute_NextHop) isAttribute_Attr() {}

func (*Attribute_MultiExitDisc) isAttribute_Attr() {}

func (*Attribute_LocalPref) isAttribute_Attr() {}

func (*Attribute_AtomicAggregate) isAttribute_Attr() {}

func (*Attribute_Aggregator) isAttribute_Attr() {}

func (*Attribute_Communities) isAttribute_Attr() {}

func (*Attribute_OriginatorId) isAttribute_Attr() {}

func (*Attribute_ClusterList) isAttribute_Attr() {}

func (*Attribute_MpReach) isAttribute_Attr() {}

func (*Attribute_MpUnreach) isAttribute_Attr() {}

func (*Attribute_ExtendedCommunities) isAttribute_Attr() {}

func (*Attribute_As4Path) isAttribute_Attr() {}

func (*Attribute_As4Aggregator) isAttribute_Attr() {}

func (*Attribute_PmsiTunnel) isAttribute_Attr() {}

func (*Attribute_TunnelEncap) isAttribute_Attr() {}

func (*Attribute_Ip6ExtendedCommunities) isAttribute_Attr() {}

func (*Attribute_Aigp) isAttribute_Attr() {}

func (*Attribute_LargeCommunities) isAttribute_Attr() {}

func (*Attribute_Ls) isAttribute_Attr() {}

func (*Attribute_PrefixSid) isAttribute_Attr() {}

type OriginAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Origin        uint32                 `protobuf:"varint,1,opt,name=origin,proto3" json:"origin,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *OriginAttribute) Reset() {
	*x = OriginAttribute{}
	mi := &file_api_attribute_proto_msgTypes[1]
	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_api_attribute_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use OriginAttribute.ProtoReflect.Descriptor instead.
func (*OriginAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{1}
}

func (x *OriginAttribute) GetOrigin() uint32 {
	if x != nil {
		return x.Origin
	}
	return 0
}

type AsSegment struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Type          AsSegment_Type         `protobuf:"varint,1,opt,name=type,proto3,enum=api.AsSegment_Type" json:"type,omitempty"`
	Numbers       []uint32               `protobuf:"varint,2,rep,packed,name=numbers,proto3" json:"numbers,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AsSegment) Reset() {
	*x = AsSegment{}
	mi := &file_api_attribute_proto_msgTypes[2]
	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_api_attribute_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AsSegment.ProtoReflect.Descriptor instead.
func (*AsSegment) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{2}
}

func (x *AsSegment) GetType() AsSegment_Type {
	if x != nil {
		return x.Type
	}
	return AsSegment_TYPE_UNSPECIFIED
}

func (x *AsSegment) GetNumbers() []uint32 {
	if x != nil {
		return x.Numbers
	}
	return nil
}

type AsPathAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Segments      []*AsSegment           `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AsPathAttribute) Reset() {
	*x = AsPathAttribute{}
	mi := &file_api_attribute_proto_msgTypes[3]
	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_api_attribute_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AsPathAttribute.ProtoReflect.Descriptor instead.
func (*AsPathAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{3}
}

func (x *AsPathAttribute) GetSegments() []*AsSegment {
	if x != nil {
		return x.Segments
	}
	return nil
}

type NextHopAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	NextHop       string                 `protobuf:"bytes,1,opt,name=next_hop,json=nextHop,proto3" json:"next_hop,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NextHopAttribute) Reset() {
	*x = NextHopAttribute{}
	mi := &file_api_attribute_proto_msgTypes[4]
	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_api_attribute_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NextHopAttribute.ProtoReflect.Descriptor instead.
func (*NextHopAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{4}
}

func (x *NextHopAttribute) GetNextHop() string {
	if x != nil {
		return x.NextHop
	}
	return ""
}

type MultiExitDiscAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Med           uint32                 `protobuf:"varint,1,opt,name=med,proto3" json:"med,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MultiExitDiscAttribute) Reset() {
	*x = MultiExitDiscAttribute{}
	mi := &file_api_attribute_proto_msgTypes[5]
	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_api_attribute_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MultiExitDiscAttribute.ProtoReflect.Descriptor instead.
func (*MultiExitDiscAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{5}
}

func (x *MultiExitDiscAttribute) GetMed() uint32 {
	if x != nil {
		return x.Med
	}
	return 0
}

type LocalPrefAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	LocalPref     uint32                 `protobuf:"varint,1,opt,name=local_pref,json=localPref,proto3" json:"local_pref,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LocalPrefAttribute) Reset() {
	*x = LocalPrefAttribute{}
	mi := &file_api_attribute_proto_msgTypes[6]
	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_api_attribute_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LocalPrefAttribute.ProtoReflect.Descriptor instead.
func (*LocalPrefAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{6}
}

func (x *LocalPrefAttribute) GetLocalPref() uint32 {
	if x != nil {
		return x.LocalPref
	}
	return 0
}

type AtomicAggregateAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AtomicAggregateAttribute) Reset() {
	*x = AtomicAggregateAttribute{}
	mi := &file_api_attribute_proto_msgTypes[7]
	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_api_attribute_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AtomicAggregateAttribute.ProtoReflect.Descriptor instead.
func (*AtomicAggregateAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{7}
}

type AggregatorAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Asn           uint32                 `protobuf:"varint,1,opt,name=asn,proto3" json:"asn,omitempty"`
	Address       string                 `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AggregatorAttribute) Reset() {
	*x = AggregatorAttribute{}
	mi := &file_api_attribute_proto_msgTypes[8]
	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_api_attribute_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AggregatorAttribute.ProtoReflect.Descriptor instead.
func (*AggregatorAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{8}
}

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 `protogen:"open.v1"`
	Communities   []uint32               `protobuf:"varint,1,rep,packed,name=communities,proto3" json:"communities,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CommunitiesAttribute) Reset() {
	*x = CommunitiesAttribute{}
	mi := &file_api_attribute_proto_msgTypes[9]
	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_api_attribute_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommunitiesAttribute.ProtoReflect.Descriptor instead.
func (*CommunitiesAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{9}
}

func (x *CommunitiesAttribute) GetCommunities() []uint32 {
	if x != nil {
		return x.Communities
	}
	return nil
}

type OriginatorIdAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *OriginatorIdAttribute) Reset() {
	*x = OriginatorIdAttribute{}
	mi := &file_api_attribute_proto_msgTypes[10]
	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_api_attribute_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use OriginatorIdAttribute.ProtoReflect.Descriptor instead.
func (*OriginatorIdAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{10}
}

func (x *OriginatorIdAttribute) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type ClusterListAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Ids           []string               `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ClusterListAttribute) Reset() {
	*x = ClusterListAttribute{}
	mi := &file_api_attribute_proto_msgTypes[11]
	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_api_attribute_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ClusterListAttribute.ProtoReflect.Descriptor instead.
func (*ClusterListAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{11}
}

func (x *ClusterListAttribute) GetIds() []string {
	if x != nil {
		return x.Ids
	}
	return nil
}

type MpReachNLRIAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	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"`
	Nlris         []*NLRI                `protobuf:"bytes,3,rep,name=nlris,proto3" json:"nlris,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MpReachNLRIAttribute) Reset() {
	*x = MpReachNLRIAttribute{}
	mi := &file_api_attribute_proto_msgTypes[12]
	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_api_attribute_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MpReachNLRIAttribute.ProtoReflect.Descriptor instead.
func (*MpReachNLRIAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{12}
}

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() []*NLRI {
	if x != nil {
		return x.Nlris
	}
	return nil
}

type MpUnreachNLRIAttribute struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	Family *Family                `protobuf:"bytes,1,opt,name=family,proto3" json:"family,omitempty"`
	// The same as NLRI field of MpReachNLRIAttribute
	Nlris         []*NLRI `protobuf:"bytes,3,rep,name=nlris,proto3" json:"nlris,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MpUnreachNLRIAttribute) Reset() {
	*x = MpUnreachNLRIAttribute{}
	mi := &file_api_attribute_proto_msgTypes[13]
	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_api_attribute_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MpUnreachNLRIAttribute.ProtoReflect.Descriptor instead.
func (*MpUnreachNLRIAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{13}
}

func (x *MpUnreachNLRIAttribute) GetFamily() *Family {
	if x != nil {
		return x.Family
	}
	return nil
}

func (x *MpUnreachNLRIAttribute) GetNlris() []*NLRI {
	if x != nil {
		return x.Nlris
	}
	return nil
}

type ExtendedCommunitiesAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Communities   []*ExtendedCommunity   `protobuf:"bytes,1,rep,name=communities,proto3" json:"communities,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExtendedCommunitiesAttribute) Reset() {
	*x = ExtendedCommunitiesAttribute{}
	mi := &file_api_attribute_proto_msgTypes[14]
	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_api_attribute_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExtendedCommunitiesAttribute.ProtoReflect.Descriptor instead.
func (*ExtendedCommunitiesAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{14}
}

func (x *ExtendedCommunitiesAttribute) GetCommunities() []*ExtendedCommunity {
	if x != nil {
		return x.Communities
	}
	return nil
}

type As4PathAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Segments      []*AsSegment           `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *As4PathAttribute) Reset() {
	*x = As4PathAttribute{}
	mi := &file_api_attribute_proto_msgTypes[15]
	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_api_attribute_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use As4PathAttribute.ProtoReflect.Descriptor instead.
func (*As4PathAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{15}
}

func (x *As4PathAttribute) GetSegments() []*AsSegment {
	if x != nil {
		return x.Segments
	}
	return nil
}

type As4AggregatorAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Asn           uint32                 `protobuf:"varint,2,opt,name=asn,proto3" json:"asn,omitempty"`
	Address       string                 `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *As4AggregatorAttribute) Reset() {
	*x = As4AggregatorAttribute{}
	mi := &file_api_attribute_proto_msgTypes[16]
	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_api_attribute_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use As4AggregatorAttribute.ProtoReflect.Descriptor instead.
func (*As4AggregatorAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{16}
}

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 `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PmsiTunnelAttribute) Reset() {
	*x = PmsiTunnelAttribute{}
	mi := &file_api_attribute_proto_msgTypes[17]
	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_api_attribute_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PmsiTunnelAttribute.ProtoReflect.Descriptor instead.
func (*PmsiTunnelAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{17}
}

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 `protogen:"open.v1"`
	Key           uint32                 `protobuf:"varint,1,opt,name=key,proto3" json:"key,omitempty"`
	Cookie        []byte                 `protobuf:"bytes,2,opt,name=cookie,proto3" json:"cookie,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVEncapsulation) Reset() {
	*x = TunnelEncapSubTLVEncapsulation{}
	mi := &file_api_attribute_proto_msgTypes[18]
	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_api_attribute_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVEncapsulation.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVEncapsulation) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{18}
}

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 `protogen:"open.v1"`
	Protocol      uint32                 `protobuf:"varint,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVProtocol) Reset() {
	*x = TunnelEncapSubTLVProtocol{}
	mi := &file_api_attribute_proto_msgTypes[19]
	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_api_attribute_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVProtocol.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVProtocol) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{19}
}

func (x *TunnelEncapSubTLVProtocol) GetProtocol() uint32 {
	if x != nil {
		return x.Protocol
	}
	return 0
}

type TunnelEncapSubTLVColor struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Color         uint32                 `protobuf:"varint,1,opt,name=color,proto3" json:"color,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVColor) Reset() {
	*x = TunnelEncapSubTLVColor{}
	mi := &file_api_attribute_proto_msgTypes[20]
	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_api_attribute_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVColor.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVColor) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{20}
}

func (x *TunnelEncapSubTLVColor) GetColor() uint32 {
	if x != nil {
		return x.Color
	}
	return 0
}

type TunnelEncapSubTLVSRPreference struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Flags         uint32                 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
	Preference    uint32                 `protobuf:"varint,2,opt,name=preference,proto3" json:"preference,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVSRPreference) Reset() {
	*x = TunnelEncapSubTLVSRPreference{}
	mi := &file_api_attribute_proto_msgTypes[21]
	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_api_attribute_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVSRPreference.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVSRPreference) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{21}
}

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 `protogen:"open.v1"`
	CandidatePathName string                 `protobuf:"bytes,1,opt,name=candidate_path_name,json=candidatePathName,proto3" json:"candidate_path_name,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVSRCandidatePathName) Reset() {
	*x = TunnelEncapSubTLVSRCandidatePathName{}
	mi := &file_api_attribute_proto_msgTypes[22]
	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_api_attribute_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVSRCandidatePathName.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVSRCandidatePathName) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{22}
}

func (x *TunnelEncapSubTLVSRCandidatePathName) GetCandidatePathName() string {
	if x != nil {
		return x.CandidatePathName
	}
	return ""
}

type TunnelEncapSubTLVSRPriority struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Priority      uint32                 `protobuf:"varint,1,opt,name=priority,proto3" json:"priority,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVSRPriority) Reset() {
	*x = TunnelEncapSubTLVSRPriority{}
	mi := &file_api_attribute_proto_msgTypes[23]
	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_api_attribute_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVSRPriority.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVSRPriority) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{23}
}

func (x *TunnelEncapSubTLVSRPriority) GetPriority() uint32 {
	if x != nil {
		return x.Priority
	}
	return 0
}

type TunnelEncapSubTLVSRBindingSID struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Bsid:
	//
	//	*TunnelEncapSubTLVSRBindingSID_SrBindingSid
	//	*TunnelEncapSubTLVSRBindingSID_Srv6BindingSid
	Bsid          isTunnelEncapSubTLVSRBindingSID_Bsid `protobuf_oneof:"bsid"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVSRBindingSID) Reset() {
	*x = TunnelEncapSubTLVSRBindingSID{}
	mi := &file_api_attribute_proto_msgTypes[24]
	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_api_attribute_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVSRBindingSID.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVSRBindingSID) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{24}
}

func (x *TunnelEncapSubTLVSRBindingSID) GetBsid() isTunnelEncapSubTLVSRBindingSID_Bsid {
	if x != nil {
		return x.Bsid
	}
	return nil
}

func (x *TunnelEncapSubTLVSRBindingSID) GetSrBindingSid() *SRBindingSID {
	if x != nil {
		if x, ok := x.Bsid.(*TunnelEncapSubTLVSRBindingSID_SrBindingSid); ok {
			return x.SrBindingSid
		}
	}
	return nil
}

func (x *TunnelEncapSubTLVSRBindingSID) GetSrv6BindingSid() *SRv6BindingSID {
	if x != nil {
		if x, ok := x.Bsid.(*TunnelEncapSubTLVSRBindingSID_Srv6BindingSid); ok {
			return x.Srv6BindingSid
		}
	}
	return nil
}

type isTunnelEncapSubTLVSRBindingSID_Bsid interface {
	isTunnelEncapSubTLVSRBindingSID_Bsid()
}

type TunnelEncapSubTLVSRBindingSID_SrBindingSid struct {
	SrBindingSid *SRBindingSID `protobuf:"bytes,1,opt,name=sr_binding_sid,json=srBindingSid,proto3,oneof"`
}

type TunnelEncapSubTLVSRBindingSID_Srv6BindingSid struct {
	Srv6BindingSid *SRv6BindingSID `protobuf:"bytes,2,opt,name=srv6_binding_sid,json=srv6BindingSid,proto3,oneof"`
}

func (*TunnelEncapSubTLVSRBindingSID_SrBindingSid) isTunnelEncapSubTLVSRBindingSID_Bsid() {}

func (*TunnelEncapSubTLVSRBindingSID_Srv6BindingSid) isTunnelEncapSubTLVSRBindingSID_Bsid() {}

type SRBindingSID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRBindingSID) Reset() {
	*x = SRBindingSID{}
	mi := &file_api_attribute_proto_msgTypes[25]
	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_api_attribute_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRBindingSID.ProtoReflect.Descriptor instead.
func (*SRBindingSID) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{25}
}

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 `protogen:"open.v1"`
	Behavior      SRV6Behavior           `protobuf:"varint,1,opt,name=behavior,proto3,enum=api.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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRv6EndPointBehavior) Reset() {
	*x = SRv6EndPointBehavior{}
	mi := &file_api_attribute_proto_msgTypes[26]
	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_api_attribute_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6EndPointBehavior.ProtoReflect.Descriptor instead.
func (*SRv6EndPointBehavior) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{26}
}

func (x *SRv6EndPointBehavior) GetBehavior() SRV6Behavior {
	if x != nil {
		return x.Behavior
	}
	return SRV6Behavior_SRV6_BEHAVIOR_UNSPECIFIED
}

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 `protogen:"open.v1"`
	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"`
	unknownFields             protoimpl.UnknownFields
	sizeCache                 protoimpl.SizeCache
}

func (x *SRv6BindingSID) Reset() {
	*x = SRv6BindingSID{}
	mi := &file_api_attribute_proto_msgTypes[27]
	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_api_attribute_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6BindingSID.ProtoReflect.Descriptor instead.
func (*SRv6BindingSID) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{27}
}

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 `protogen:"open.v1"`
	Flags         uint32                 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
	Enlp          ENLPType               `protobuf:"varint,2,opt,name=enlp,proto3,enum=api.ENLPType" json:"enlp,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVSRENLP) Reset() {
	*x = TunnelEncapSubTLVSRENLP{}
	mi := &file_api_attribute_proto_msgTypes[28]
	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_api_attribute_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVSRENLP.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVSRENLP) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{28}
}

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_ENLP_TYPE_UNSPECIFIED
}

type SRWeight struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Flags         uint32                 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
	Weight        uint32                 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRWeight) Reset() {
	*x = SRWeight{}
	mi := &file_api_attribute_proto_msgTypes[29]
	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_api_attribute_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRWeight.ProtoReflect.Descriptor instead.
func (*SRWeight) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{29}
}

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 `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SegmentFlags) Reset() {
	*x = SegmentFlags{}
	mi := &file_api_attribute_proto_msgTypes[30]
	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_api_attribute_proto_msgTypes[30]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SegmentFlags.ProtoReflect.Descriptor instead.
func (*SegmentFlags) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{30}
}

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 `protogen:"open.v1"`
	Flags         *SegmentFlags          `protobuf:"bytes,1,opt,name=flags,proto3" json:"flags,omitempty"`
	Label         uint32                 `protobuf:"varint,2,opt,name=label,proto3" json:"label,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SegmentTypeA) Reset() {
	*x = SegmentTypeA{}
	mi := &file_api_attribute_proto_msgTypes[31]
	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_api_attribute_proto_msgTypes[31]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SegmentTypeA.ProtoReflect.Descriptor instead.
func (*SegmentTypeA) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{31}
}

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 `protogen:"open.v1"`
	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"`
	unknownFields             protoimpl.UnknownFields
	sizeCache                 protoimpl.SizeCache
}

func (x *SegmentTypeB) Reset() {
	*x = SegmentTypeB{}
	mi := &file_api_attribute_proto_msgTypes[32]
	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_api_attribute_proto_msgTypes[32]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SegmentTypeB.ProtoReflect.Descriptor instead.
func (*SegmentTypeB) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{32}
}

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                    `protogen:"open.v1"`
	Weight        *SRWeight                                 `protobuf:"bytes,1,opt,name=weight,proto3" json:"weight,omitempty"`
	Segments      []*TunnelEncapSubTLVSRSegmentList_Segment `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVSRSegmentList) Reset() {
	*x = TunnelEncapSubTLVSRSegmentList{}
	mi := &file_api_attribute_proto_msgTypes[33]
	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_api_attribute_proto_msgTypes[33]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVSRSegmentList.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVSRSegmentList) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{33}
}

func (x *TunnelEncapSubTLVSRSegmentList) GetWeight() *SRWeight {
	if x != nil {
		return x.Weight
	}
	return nil
}

func (x *TunnelEncapSubTLVSRSegmentList) GetSegments() []*TunnelEncapSubTLVSRSegmentList_Segment {
	if x != nil {
		return x.Segments
	}
	return nil
}

type TunnelEncapSubTLVEgressEndpoint struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Address       string                 `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVEgressEndpoint) Reset() {
	*x = TunnelEncapSubTLVEgressEndpoint{}
	mi := &file_api_attribute_proto_msgTypes[34]
	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_api_attribute_proto_msgTypes[34]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVEgressEndpoint.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVEgressEndpoint) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{34}
}

func (x *TunnelEncapSubTLVEgressEndpoint) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

type TunnelEncapSubTLVUDPDestPort struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Port          uint32                 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVUDPDestPort) Reset() {
	*x = TunnelEncapSubTLVUDPDestPort{}
	mi := &file_api_attribute_proto_msgTypes[35]
	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_api_attribute_proto_msgTypes[35]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVUDPDestPort.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVUDPDestPort) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{35}
}

func (x *TunnelEncapSubTLVUDPDestPort) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

type TunnelEncapSubTLVUnknown struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Type          uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
	Value         []byte                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVUnknown) Reset() {
	*x = TunnelEncapSubTLVUnknown{}
	mi := &file_api_attribute_proto_msgTypes[36]
	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_api_attribute_proto_msgTypes[36]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVUnknown.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVUnknown) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{36}
}

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 `protogen:"open.v1"`
	Type          uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
	Tlvs          []*TunnelEncapTLV_TLV  `protobuf:"bytes,2,rep,name=tlvs,proto3" json:"tlvs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapTLV) Reset() {
	*x = TunnelEncapTLV{}
	mi := &file_api_attribute_proto_msgTypes[37]
	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_api_attribute_proto_msgTypes[37]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapTLV.ProtoReflect.Descriptor instead.
func (*TunnelEncapTLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{37}
}

func (x *TunnelEncapTLV) GetType() uint32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *TunnelEncapTLV) GetTlvs() []*TunnelEncapTLV_TLV {
	if x != nil {
		return x.Tlvs
	}
	return nil
}

type TunnelEncapAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Tlvs          []*TunnelEncapTLV      `protobuf:"bytes,1,rep,name=tlvs,proto3" json:"tlvs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapAttribute) Reset() {
	*x = TunnelEncapAttribute{}
	mi := &file_api_attribute_proto_msgTypes[38]
	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_api_attribute_proto_msgTypes[38]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapAttribute.ProtoReflect.Descriptor instead.
func (*TunnelEncapAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{38}
}

func (x *TunnelEncapAttribute) GetTlvs() []*TunnelEncapTLV {
	if x != nil {
		return x.Tlvs
	}
	return nil
}

type IPv6AddressSpecificExtended struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IPv6AddressSpecificExtended) Reset() {
	*x = IPv6AddressSpecificExtended{}
	mi := &file_api_attribute_proto_msgTypes[39]
	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_api_attribute_proto_msgTypes[39]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IPv6AddressSpecificExtended.ProtoReflect.Descriptor instead.
func (*IPv6AddressSpecificExtended) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{39}
}

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 `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RedirectIPv6AddressSpecificExtended) Reset() {
	*x = RedirectIPv6AddressSpecificExtended{}
	mi := &file_api_attribute_proto_msgTypes[40]
	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_api_attribute_proto_msgTypes[40]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RedirectIPv6AddressSpecificExtended.ProtoReflect.Descriptor instead.
func (*RedirectIPv6AddressSpecificExtended) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{40}
}

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                       `protogen:"open.v1"`
	Communities   []*IP6ExtendedCommunitiesAttribute_Community `protobuf:"bytes,1,rep,name=communities,proto3" json:"communities,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IP6ExtendedCommunitiesAttribute) Reset() {
	*x = IP6ExtendedCommunitiesAttribute{}
	mi := &file_api_attribute_proto_msgTypes[41]
	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_api_attribute_proto_msgTypes[41]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IP6ExtendedCommunitiesAttribute.ProtoReflect.Descriptor instead.
func (*IP6ExtendedCommunitiesAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{41}
}

func (x *IP6ExtendedCommunitiesAttribute) GetCommunities() []*IP6ExtendedCommunitiesAttribute_Community {
	if x != nil {
		return x.Communities
	}
	return nil
}

type AigpTLVIGPMetric struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Metric        uint64                 `protobuf:"varint,1,opt,name=metric,proto3" json:"metric,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AigpTLVIGPMetric) Reset() {
	*x = AigpTLVIGPMetric{}
	mi := &file_api_attribute_proto_msgTypes[42]
	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_api_attribute_proto_msgTypes[42]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AigpTLVIGPMetric.ProtoReflect.Descriptor instead.
func (*AigpTLVIGPMetric) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{42}
}

func (x *AigpTLVIGPMetric) GetMetric() uint64 {
	if x != nil {
		return x.Metric
	}
	return 0
}

type AigpTLVUnknown struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Type          uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
	Value         []byte                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AigpTLVUnknown) Reset() {
	*x = AigpTLVUnknown{}
	mi := &file_api_attribute_proto_msgTypes[43]
	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_api_attribute_proto_msgTypes[43]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AigpTLVUnknown.ProtoReflect.Descriptor instead.
func (*AigpTLVUnknown) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{43}
}

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 `protogen:"open.v1"`
	Tlvs          []*AigpAttribute_TLV   `protobuf:"bytes,1,rep,name=tlvs,proto3" json:"tlvs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AigpAttribute) Reset() {
	*x = AigpAttribute{}
	mi := &file_api_attribute_proto_msgTypes[44]
	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_api_attribute_proto_msgTypes[44]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AigpAttribute.ProtoReflect.Descriptor instead.
func (*AigpAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{44}
}

func (x *AigpAttribute) GetTlvs() []*AigpAttribute_TLV {
	if x != nil {
		return x.Tlvs
	}
	return nil
}

type LargeCommunity struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LargeCommunity) Reset() {
	*x = LargeCommunity{}
	mi := &file_api_attribute_proto_msgTypes[45]
	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_api_attribute_proto_msgTypes[45]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LargeCommunity.ProtoReflect.Descriptor instead.
func (*LargeCommunity) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{45}
}

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 `protogen:"open.v1"`
	Communities   []*LargeCommunity      `protobuf:"bytes,1,rep,name=communities,proto3" json:"communities,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LargeCommunitiesAttribute) Reset() {
	*x = LargeCommunitiesAttribute{}
	mi := &file_api_attribute_proto_msgTypes[46]
	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_api_attribute_proto_msgTypes[46]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LargeCommunitiesAttribute.ProtoReflect.Descriptor instead.
func (*LargeCommunitiesAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{46}
}

func (x *LargeCommunitiesAttribute) GetCommunities() []*LargeCommunity {
	if x != nil {
		return x.Communities
	}
	return nil
}

type LsNodeFlags struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsNodeFlags) Reset() {
	*x = LsNodeFlags{}
	mi := &file_api_attribute_proto_msgTypes[47]
	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_api_attribute_proto_msgTypes[47]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsNodeFlags.ProtoReflect.Descriptor instead.
func (*LsNodeFlags) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{47}
}

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 `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsIGPFlags) Reset() {
	*x = LsIGPFlags{}
	mi := &file_api_attribute_proto_msgTypes[48]
	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_api_attribute_proto_msgTypes[48]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsIGPFlags.ProtoReflect.Descriptor instead.
func (*LsIGPFlags) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{48}
}

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 `protogen:"open.v1"`
	Begin         uint32                 `protobuf:"varint,1,opt,name=begin,proto3" json:"begin,omitempty"`
	End           uint32                 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsSrRange) Reset() {
	*x = LsSrRange{}
	mi := &file_api_attribute_proto_msgTypes[49]
	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_api_attribute_proto_msgTypes[49]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsSrRange.ProtoReflect.Descriptor instead.
func (*LsSrRange) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{49}
}

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 `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsSrCapabilities) Reset() {
	*x = LsSrCapabilities{}
	mi := &file_api_attribute_proto_msgTypes[50]
	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_api_attribute_proto_msgTypes[50]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsSrCapabilities.ProtoReflect.Descriptor instead.
func (*LsSrCapabilities) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{50}
}

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 `protogen:"open.v1"`
	Ranges        []*LsSrRange           `protobuf:"bytes,1,rep,name=ranges,proto3" json:"ranges,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsSrLocalBlock) Reset() {
	*x = LsSrLocalBlock{}
	mi := &file_api_attribute_proto_msgTypes[51]
	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_api_attribute_proto_msgTypes[51]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsSrLocalBlock.ProtoReflect.Descriptor instead.
func (*LsSrLocalBlock) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{51}
}

func (x *LsSrLocalBlock) GetRanges() []*LsSrRange {
	if x != nil {
		return x.Ranges
	}
	return nil
}

type LsAttributeNode struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	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"`
	// RFC 9351 Section 3 Flexible Algorithm Definition (FAD) TLVs
	// observed for this Node NLRI. A node MAY advertise more than one
	// FAD, one per algorithm in the [128, 255] Flex-Algorithm range.
	FlexAlgoDefs  []*LsAttributeFlexAlgoDef `protobuf:"bytes,10,rep,name=flex_algo_defs,json=flexAlgoDefs,proto3" json:"flex_algo_defs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsAttributeNode) Reset() {
	*x = LsAttributeNode{}
	mi := &file_api_attribute_proto_msgTypes[52]
	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_api_attribute_proto_msgTypes[52]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsAttributeNode.ProtoReflect.Descriptor instead.
func (*LsAttributeNode) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{52}
}

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
}

func (x *LsAttributeNode) GetFlexAlgoDefs() []*LsAttributeFlexAlgoDef {
	if x != nil {
		return x.FlexAlgoDefs
	}
	return nil
}

// LsAttributeFlexAlgoDef is the structured projection of a single FAD
// TLV (TLV 1039, RFC 9351 Section 3). Reserved Metric-Type values
// (3..127) are passed through verbatim with metric_type_known=false
// so consumers can render them without guessing semantics.
type LsAttributeFlexAlgoDef struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Algorithm          uint32                 `protobuf:"varint,1,opt,name=algorithm,proto3" json:"algorithm,omitempty"`
	MetricType         uint32                 `protobuf:"varint,2,opt,name=metric_type,json=metricType,proto3" json:"metric_type,omitempty"`
	MetricTypeKnown    bool                   `protobuf:"varint,3,opt,name=metric_type_known,json=metricTypeKnown,proto3" json:"metric_type_known,omitempty"`
	CalcType           uint32                 `protobuf:"varint,4,opt,name=calc_type,json=calcType,proto3" json:"calc_type,omitempty"`
	Priority           uint32                 `protobuf:"varint,5,opt,name=priority,proto3" json:"priority,omitempty"`
	ExcludeAnyAffinity []uint32               `protobuf:"varint,6,rep,packed,name=exclude_any_affinity,json=excludeAnyAffinity,proto3" json:"exclude_any_affinity,omitempty"`
	IncludeAnyAffinity []uint32               `protobuf:"varint,7,rep,packed,name=include_any_affinity,json=includeAnyAffinity,proto3" json:"include_any_affinity,omitempty"`
	IncludeAllAffinity []uint32               `protobuf:"varint,8,rep,packed,name=include_all_affinity,json=includeAllAffinity,proto3" json:"include_all_affinity,omitempty"`
	DefinitionFlags    []byte                 `protobuf:"bytes,9,opt,name=definition_flags,json=definitionFlags,proto3" json:"definition_flags,omitempty"`
	ExcludeSrlg        []uint32               `protobuf:"varint,10,rep,packed,name=exclude_srlg,json=excludeSrlg,proto3" json:"exclude_srlg,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *LsAttributeFlexAlgoDef) Reset() {
	*x = LsAttributeFlexAlgoDef{}
	mi := &file_api_attribute_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsAttributeFlexAlgoDef) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsAttributeFlexAlgoDef) ProtoMessage() {}

func (x *LsAttributeFlexAlgoDef) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[53]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsAttributeFlexAlgoDef.ProtoReflect.Descriptor instead.
func (*LsAttributeFlexAlgoDef) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{53}
}

func (x *LsAttributeFlexAlgoDef) GetAlgorithm() uint32 {
	if x != nil {
		return x.Algorithm
	}
	return 0
}

func (x *LsAttributeFlexAlgoDef) GetMetricType() uint32 {
	if x != nil {
		return x.MetricType
	}
	return 0
}

func (x *LsAttributeFlexAlgoDef) GetMetricTypeKnown() bool {
	if x != nil {
		return x.MetricTypeKnown
	}
	return false
}

func (x *LsAttributeFlexAlgoDef) GetCalcType() uint32 {
	if x != nil {
		return x.CalcType
	}
	return 0
}

func (x *LsAttributeFlexAlgoDef) GetPriority() uint32 {
	if x != nil {
		return x.Priority
	}
	return 0
}

func (x *LsAttributeFlexAlgoDef) GetExcludeAnyAffinity() []uint32 {
	if x != nil {
		return x.ExcludeAnyAffinity
	}
	return nil
}

func (x *LsAttributeFlexAlgoDef) GetIncludeAnyAffinity() []uint32 {
	if x != nil {
		return x.IncludeAnyAffinity
	}
	return nil
}

func (x *LsAttributeFlexAlgoDef) GetIncludeAllAffinity() []uint32 {
	if x != nil {
		return x.IncludeAllAffinity
	}
	return nil
}

func (x *LsAttributeFlexAlgoDef) GetDefinitionFlags() []byte {
	if x != nil {
		return x.DefinitionFlags
	}
	return nil
}

func (x *LsAttributeFlexAlgoDef) GetExcludeSrlg() []uint32 {
	if x != nil {
		return x.ExcludeSrlg
	}
	return nil
}

type LsAttributeLink struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	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"`
	Srv6EndXSid         *LsSrv6EndXSID         `protobuf:"bytes,15,opt,name=srv6_end_x_sid,json=srv6EndXSid,proto3" json:"srv6_end_x_sid,omitempty"`
	// RFC 8571 delay/measurement TLVs.
	UnidirectionalLinkDelayAnomalous       bool   `protobuf:"varint,16,opt,name=unidirectional_link_delay_anomalous,json=unidirectionalLinkDelayAnomalous,proto3" json:"unidirectional_link_delay_anomalous,omitempty"`
	UnidirectionalLinkDelay                uint32 `protobuf:"varint,17,opt,name=unidirectional_link_delay,json=unidirectionalLinkDelay,proto3" json:"unidirectional_link_delay,omitempty"`
	MinMaxUnidirectionalLinkDelayAnomalous bool   `protobuf:"varint,18,opt,name=min_max_unidirectional_link_delay_anomalous,json=minMaxUnidirectionalLinkDelayAnomalous,proto3" json:"min_max_unidirectional_link_delay_anomalous,omitempty"`
	MinUnidirectionalLinkDelay             uint32 `protobuf:"varint,19,opt,name=min_unidirectional_link_delay,json=minUnidirectionalLinkDelay,proto3" json:"min_unidirectional_link_delay,omitempty"`
	MaxUnidirectionalLinkDelay             uint32 `protobuf:"varint,20,opt,name=max_unidirectional_link_delay,json=maxUnidirectionalLinkDelay,proto3" json:"max_unidirectional_link_delay,omitempty"`
	UnidirectionalDelayVariation           uint32 `protobuf:"varint,21,opt,name=unidirectional_delay_variation,json=unidirectionalDelayVariation,proto3" json:"unidirectional_delay_variation,omitempty"`
	unknownFields                          protoimpl.UnknownFields
	sizeCache                              protoimpl.SizeCache
}

func (x *LsAttributeLink) Reset() {
	*x = LsAttributeLink{}
	mi := &file_api_attribute_proto_msgTypes[54]
	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_api_attribute_proto_msgTypes[54]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsAttributeLink.ProtoReflect.Descriptor instead.
func (*LsAttributeLink) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{54}
}

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
}

func (x *LsAttributeLink) GetSrv6EndXSid() *LsSrv6EndXSID {
	if x != nil {
		return x.Srv6EndXSid
	}
	return nil
}

func (x *LsAttributeLink) GetUnidirectionalLinkDelayAnomalous() bool {
	if x != nil {
		return x.UnidirectionalLinkDelayAnomalous
	}
	return false
}

func (x *LsAttributeLink) GetUnidirectionalLinkDelay() uint32 {
	if x != nil {
		return x.UnidirectionalLinkDelay
	}
	return 0
}

func (x *LsAttributeLink) GetMinMaxUnidirectionalLinkDelayAnomalous() bool {
	if x != nil {
		return x.MinMaxUnidirectionalLinkDelayAnomalous
	}
	return false
}

func (x *LsAttributeLink) GetMinUnidirectionalLinkDelay() uint32 {
	if x != nil {
		return x.MinUnidirectionalLinkDelay
	}
	return 0
}

func (x *LsAttributeLink) GetMaxUnidirectionalLinkDelay() uint32 {
	if x != nil {
		return x.MaxUnidirectionalLinkDelay
	}
	return 0
}

func (x *LsAttributeLink) GetUnidirectionalDelayVariation() uint32 {
	if x != nil {
		return x.UnidirectionalDelayVariation
	}
	return 0
}

type LsAttributePrefix struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	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"`
	// sr_prefix_sid is the SR-MPLS Prefix-SID label when the originator
	// advertised it with Algorithm = 0 (default SPF). Kept for backward
	// compatibility with the singular Algorithm-0 lookup callers used
	// before multi-SID aggregation landed.
	SrPrefixSid uint32 `protobuf:"varint,3,opt,name=sr_prefix_sid,json=srPrefixSid,proto3" json:"sr_prefix_sid,omitempty"`
	// sr_prefix_sids carries every Prefix-SID TLV (RFC 9085
	// Section 2.1.1) observed on this Prefix NLRI, including the
	// Algorithm + Flags fields the singular sr_prefix_sid field drops.
	// Algorithm 0 entries also populate sr_prefix_sid above.
	SrPrefixSids []*LsAttributePrefixSID `protobuf:"bytes,4,rep,name=sr_prefix_sids,json=srPrefixSids,proto3" json:"sr_prefix_sids,omitempty"`
	// fad_prefix_metrics carries every Flexible Algorithm Prefix Metric
	// TLV (FAPM, TLV 1044, RFC 9351 Section 4) observed on this Prefix
	// NLRI. One entry per Flex-Algorithm announced.
	FadPrefixMetrics []*LsAttributeFADPrefixMetric `protobuf:"bytes,5,rep,name=fad_prefix_metrics,json=fadPrefixMetrics,proto3" json:"fad_prefix_metrics,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *LsAttributePrefix) Reset() {
	*x = LsAttributePrefix{}
	mi := &file_api_attribute_proto_msgTypes[55]
	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_api_attribute_proto_msgTypes[55]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsAttributePrefix.ProtoReflect.Descriptor instead.
func (*LsAttributePrefix) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{55}
}

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
}

func (x *LsAttributePrefix) GetSrPrefixSids() []*LsAttributePrefixSID {
	if x != nil {
		return x.SrPrefixSids
	}
	return nil
}

func (x *LsAttributePrefix) GetFadPrefixMetrics() []*LsAttributeFADPrefixMetric {
	if x != nil {
		return x.FadPrefixMetrics
	}
	return nil
}

// LsAttributePrefixSID is one Prefix-SID TLV (RFC 9085 Section 2.1.1)
// projected onto the LsAttribute surface so consumers can read the
// Algorithm and Flags fields without re-parsing the wire bytes.
type LsAttributePrefixSID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Algorithm     uint32                 `protobuf:"varint,1,opt,name=algorithm,proto3" json:"algorithm,omitempty"`
	Flags         uint32                 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
	Sid           uint32                 `protobuf:"varint,3,opt,name=sid,proto3" json:"sid,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsAttributePrefixSID) Reset() {
	*x = LsAttributePrefixSID{}
	mi := &file_api_attribute_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsAttributePrefixSID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsAttributePrefixSID) ProtoMessage() {}

func (x *LsAttributePrefixSID) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[56]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsAttributePrefixSID.ProtoReflect.Descriptor instead.
func (*LsAttributePrefixSID) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{56}
}

func (x *LsAttributePrefixSID) GetAlgorithm() uint32 {
	if x != nil {
		return x.Algorithm
	}
	return 0
}

func (x *LsAttributePrefixSID) GetFlags() uint32 {
	if x != nil {
		return x.Flags
	}
	return 0
}

func (x *LsAttributePrefixSID) GetSid() uint32 {
	if x != nil {
		return x.Sid
	}
	return 0
}

// LsAttributeFADPrefixMetric is one FAPM TLV (RFC 9351 Section 4)
// projected onto the LsAttribute surface.
type LsAttributeFADPrefixMetric struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Algorithm     uint32                 `protobuf:"varint,1,opt,name=algorithm,proto3" json:"algorithm,omitempty"`
	Flags         uint32                 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
	Metric        uint32                 `protobuf:"varint,3,opt,name=metric,proto3" json:"metric,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsAttributeFADPrefixMetric) Reset() {
	*x = LsAttributeFADPrefixMetric{}
	mi := &file_api_attribute_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsAttributeFADPrefixMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsAttributeFADPrefixMetric) ProtoMessage() {}

func (x *LsAttributeFADPrefixMetric) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[57]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsAttributeFADPrefixMetric.ProtoReflect.Descriptor instead.
func (*LsAttributeFADPrefixMetric) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{57}
}

func (x *LsAttributeFADPrefixMetric) GetAlgorithm() uint32 {
	if x != nil {
		return x.Algorithm
	}
	return 0
}

func (x *LsAttributeFADPrefixMetric) GetFlags() uint32 {
	if x != nil {
		return x.Flags
	}
	return 0
}

func (x *LsAttributeFADPrefixMetric) GetMetric() uint32 {
	if x != nil {
		return x.Metric
	}
	return 0
}

type LsBgpPeerSegmentSIDFlags struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Value         bool                   `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
	Local         bool                   `protobuf:"varint,2,opt,name=local,proto3" json:"local,omitempty"`
	Backup        bool                   `protobuf:"varint,3,opt,name=backup,proto3" json:"backup,omitempty"`
	Persistent    bool                   `protobuf:"varint,4,opt,name=persistent,proto3" json:"persistent,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsBgpPeerSegmentSIDFlags) Reset() {
	*x = LsBgpPeerSegmentSIDFlags{}
	mi := &file_api_attribute_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsBgpPeerSegmentSIDFlags) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsBgpPeerSegmentSIDFlags) ProtoMessage() {}

func (x *LsBgpPeerSegmentSIDFlags) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[58]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsBgpPeerSegmentSIDFlags.ProtoReflect.Descriptor instead.
func (*LsBgpPeerSegmentSIDFlags) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{58}
}

func (x *LsBgpPeerSegmentSIDFlags) GetValue() bool {
	if x != nil {
		return x.Value
	}
	return false
}

func (x *LsBgpPeerSegmentSIDFlags) GetLocal() bool {
	if x != nil {
		return x.Local
	}
	return false
}

func (x *LsBgpPeerSegmentSIDFlags) GetBackup() bool {
	if x != nil {
		return x.Backup
	}
	return false
}

func (x *LsBgpPeerSegmentSIDFlags) GetPersistent() bool {
	if x != nil {
		return x.Persistent
	}
	return false
}

type LsBgpPeerSegmentSID struct {
	state         protoimpl.MessageState    `protogen:"open.v1"`
	Flags         *LsBgpPeerSegmentSIDFlags `protobuf:"bytes,1,opt,name=flags,proto3" json:"flags,omitempty"`
	Weight        uint32                    `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
	Sid           uint32                    `protobuf:"varint,3,opt,name=sid,proto3" json:"sid,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsBgpPeerSegmentSID) Reset() {
	*x = LsBgpPeerSegmentSID{}
	mi := &file_api_attribute_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsBgpPeerSegmentSID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsBgpPeerSegmentSID) ProtoMessage() {}

func (x *LsBgpPeerSegmentSID) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[59]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsBgpPeerSegmentSID.ProtoReflect.Descriptor instead.
func (*LsBgpPeerSegmentSID) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{59}
}

func (x *LsBgpPeerSegmentSID) GetFlags() *LsBgpPeerSegmentSIDFlags {
	if x != nil {
		return x.Flags
	}
	return nil
}

func (x *LsBgpPeerSegmentSID) GetWeight() uint32 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *LsBgpPeerSegmentSID) GetSid() uint32 {
	if x != nil {
		return x.Sid
	}
	return 0
}

type LsAttributeBgpPeerSegment struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	BgpPeerNodeSid      *LsBgpPeerSegmentSID   `protobuf:"bytes,1,opt,name=bgp_peer_node_sid,json=bgpPeerNodeSid,proto3" json:"bgp_peer_node_sid,omitempty"`
	BgpPeerAdjacencySid *LsBgpPeerSegmentSID   `protobuf:"bytes,2,opt,name=bgp_peer_adjacency_sid,json=bgpPeerAdjacencySid,proto3" json:"bgp_peer_adjacency_sid,omitempty"`
	BgpPeerSetSid       *LsBgpPeerSegmentSID   `protobuf:"bytes,3,opt,name=bgp_peer_set_sid,json=bgpPeerSetSid,proto3" json:"bgp_peer_set_sid,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *LsAttributeBgpPeerSegment) Reset() {
	*x = LsAttributeBgpPeerSegment{}
	mi := &file_api_attribute_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsAttributeBgpPeerSegment) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsAttributeBgpPeerSegment) ProtoMessage() {}

func (x *LsAttributeBgpPeerSegment) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[60]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsAttributeBgpPeerSegment.ProtoReflect.Descriptor instead.
func (*LsAttributeBgpPeerSegment) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{60}
}

func (x *LsAttributeBgpPeerSegment) GetBgpPeerNodeSid() *LsBgpPeerSegmentSID {
	if x != nil {
		return x.BgpPeerNodeSid
	}
	return nil
}

func (x *LsAttributeBgpPeerSegment) GetBgpPeerAdjacencySid() *LsBgpPeerSegmentSID {
	if x != nil {
		return x.BgpPeerAdjacencySid
	}
	return nil
}

func (x *LsAttributeBgpPeerSegment) GetBgpPeerSetSid() *LsBgpPeerSegmentSID {
	if x != nil {
		return x.BgpPeerSetSid
	}
	return nil
}

type LsSrv6EndXSID struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	EndpointBehavior uint32                 `protobuf:"varint,1,opt,name=endpoint_behavior,json=endpointBehavior,proto3" json:"endpoint_behavior,omitempty"`
	Flags            uint32                 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
	Algorithm        uint32                 `protobuf:"varint,3,opt,name=algorithm,proto3" json:"algorithm,omitempty"`
	Weight           uint32                 `protobuf:"varint,4,opt,name=weight,proto3" json:"weight,omitempty"`
	Reserved         uint32                 `protobuf:"varint,5,opt,name=reserved,proto3" json:"reserved,omitempty"`
	Sids             []string               `protobuf:"bytes,6,rep,name=sids,proto3" json:"sids,omitempty"`
	Srv6SidStructure *LsSrv6SIDStructure    `protobuf:"bytes,7,opt,name=srv6_sid_structure,json=srv6SidStructure,proto3" json:"srv6_sid_structure,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *LsSrv6EndXSID) Reset() {
	*x = LsSrv6EndXSID{}
	mi := &file_api_attribute_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsSrv6EndXSID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsSrv6EndXSID) ProtoMessage() {}

func (x *LsSrv6EndXSID) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[61]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsSrv6EndXSID.ProtoReflect.Descriptor instead.
func (*LsSrv6EndXSID) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{61}
}

func (x *LsSrv6EndXSID) GetEndpointBehavior() uint32 {
	if x != nil {
		return x.EndpointBehavior
	}
	return 0
}

func (x *LsSrv6EndXSID) GetFlags() uint32 {
	if x != nil {
		return x.Flags
	}
	return 0
}

func (x *LsSrv6EndXSID) GetAlgorithm() uint32 {
	if x != nil {
		return x.Algorithm
	}
	return 0
}

func (x *LsSrv6EndXSID) GetWeight() uint32 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *LsSrv6EndXSID) GetReserved() uint32 {
	if x != nil {
		return x.Reserved
	}
	return 0
}

func (x *LsSrv6EndXSID) GetSids() []string {
	if x != nil {
		return x.Sids
	}
	return nil
}

func (x *LsSrv6EndXSID) GetSrv6SidStructure() *LsSrv6SIDStructure {
	if x != nil {
		return x.Srv6SidStructure
	}
	return nil
}

type LsSrv6SIDStructure struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	LocalBlock    uint32                 `protobuf:"varint,1,opt,name=local_block,json=localBlock,proto3" json:"local_block,omitempty"`
	LocalNode     uint32                 `protobuf:"varint,2,opt,name=local_node,json=localNode,proto3" json:"local_node,omitempty"`
	LocalFunc     uint32                 `protobuf:"varint,3,opt,name=local_func,json=localFunc,proto3" json:"local_func,omitempty"`
	LocalArg      uint32                 `protobuf:"varint,4,opt,name=local_arg,json=localArg,proto3" json:"local_arg,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsSrv6SIDStructure) Reset() {
	*x = LsSrv6SIDStructure{}
	mi := &file_api_attribute_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsSrv6SIDStructure) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsSrv6SIDStructure) ProtoMessage() {}

func (x *LsSrv6SIDStructure) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[62]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsSrv6SIDStructure.ProtoReflect.Descriptor instead.
func (*LsSrv6SIDStructure) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{62}
}

func (x *LsSrv6SIDStructure) GetLocalBlock() uint32 {
	if x != nil {
		return x.LocalBlock
	}
	return 0
}

func (x *LsSrv6SIDStructure) GetLocalNode() uint32 {
	if x != nil {
		return x.LocalNode
	}
	return 0
}

func (x *LsSrv6SIDStructure) GetLocalFunc() uint32 {
	if x != nil {
		return x.LocalFunc
	}
	return 0
}

func (x *LsSrv6SIDStructure) GetLocalArg() uint32 {
	if x != nil {
		return x.LocalArg
	}
	return 0
}

type LsSrv6EndpointBehavior struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	EndpointBehavior uint32                 `protobuf:"varint,1,opt,name=endpoint_behavior,json=endpointBehavior,proto3" json:"endpoint_behavior,omitempty"`
	Flags            uint32                 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
	Algorithm        uint32                 `protobuf:"varint,3,opt,name=algorithm,proto3" json:"algorithm,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *LsSrv6EndpointBehavior) Reset() {
	*x = LsSrv6EndpointBehavior{}
	mi := &file_api_attribute_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsSrv6EndpointBehavior) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsSrv6EndpointBehavior) ProtoMessage() {}

func (x *LsSrv6EndpointBehavior) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[63]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsSrv6EndpointBehavior.ProtoReflect.Descriptor instead.
func (*LsSrv6EndpointBehavior) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{63}
}

func (x *LsSrv6EndpointBehavior) GetEndpointBehavior() uint32 {
	if x != nil {
		return x.EndpointBehavior
	}
	return 0
}

func (x *LsSrv6EndpointBehavior) GetFlags() uint32 {
	if x != nil {
		return x.Flags
	}
	return 0
}

func (x *LsSrv6EndpointBehavior) GetAlgorithm() uint32 {
	if x != nil {
		return x.Algorithm
	}
	return 0
}

type LsSrv6BgpPeerNodeSID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Flags         uint32                 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
	Weight        uint32                 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
	PeerAs        uint32                 `protobuf:"varint,3,opt,name=peer_as,json=peerAs,proto3" json:"peer_as,omitempty"`
	PeerBgpId     string                 `protobuf:"bytes,4,opt,name=peer_bgp_id,json=peerBgpId,proto3" json:"peer_bgp_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LsSrv6BgpPeerNodeSID) Reset() {
	*x = LsSrv6BgpPeerNodeSID{}
	mi := &file_api_attribute_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsSrv6BgpPeerNodeSID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsSrv6BgpPeerNodeSID) ProtoMessage() {}

func (x *LsSrv6BgpPeerNodeSID) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[64]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsSrv6BgpPeerNodeSID.ProtoReflect.Descriptor instead.
func (*LsSrv6BgpPeerNodeSID) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{64}
}

func (x *LsSrv6BgpPeerNodeSID) GetFlags() uint32 {
	if x != nil {
		return x.Flags
	}
	return 0
}

func (x *LsSrv6BgpPeerNodeSID) GetWeight() uint32 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *LsSrv6BgpPeerNodeSID) GetPeerAs() uint32 {
	if x != nil {
		return x.PeerAs
	}
	return 0
}

func (x *LsSrv6BgpPeerNodeSID) GetPeerBgpId() string {
	if x != nil {
		return x.PeerBgpId
	}
	return ""
}

type LsAttributeSrv6SID struct {
	state                protoimpl.MessageState  `protogen:"open.v1"`
	Srv6SidStructure     *LsSrv6SIDStructure     `protobuf:"bytes,1,opt,name=srv6_sid_structure,json=srv6SidStructure,proto3" json:"srv6_sid_structure,omitempty"`
	Srv6EndpointBehavior *LsSrv6EndpointBehavior `protobuf:"bytes,2,opt,name=srv6_endpoint_behavior,json=srv6EndpointBehavior,proto3" json:"srv6_endpoint_behavior,omitempty"`
	Srv6BgpPeerNodeSid   *LsSrv6BgpPeerNodeSID   `protobuf:"bytes,3,opt,name=srv6_bgp_peer_node_sid,json=srv6BgpPeerNodeSid,proto3" json:"srv6_bgp_peer_node_sid,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *LsAttributeSrv6SID) Reset() {
	*x = LsAttributeSrv6SID{}
	mi := &file_api_attribute_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LsAttributeSrv6SID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsAttributeSrv6SID) ProtoMessage() {}

func (x *LsAttributeSrv6SID) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[65]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsAttributeSrv6SID.ProtoReflect.Descriptor instead.
func (*LsAttributeSrv6SID) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{65}
}

func (x *LsAttributeSrv6SID) GetSrv6SidStructure() *LsSrv6SIDStructure {
	if x != nil {
		return x.Srv6SidStructure
	}
	return nil
}

func (x *LsAttributeSrv6SID) GetSrv6EndpointBehavior() *LsSrv6EndpointBehavior {
	if x != nil {
		return x.Srv6EndpointBehavior
	}
	return nil
}

func (x *LsAttributeSrv6SID) GetSrv6BgpPeerNodeSid() *LsSrv6BgpPeerNodeSID {
	if x != nil {
		return x.Srv6BgpPeerNodeSid
	}
	return nil
}

type LsAttribute struct {
	state          protoimpl.MessageState     `protogen:"open.v1"`
	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"`
	BgpPeerSegment *LsAttributeBgpPeerSegment `protobuf:"bytes,4,opt,name=bgp_peer_segment,json=bgpPeerSegment,proto3" json:"bgp_peer_segment,omitempty"`
	Srv6Sid        *LsAttributeSrv6SID        `protobuf:"bytes,5,opt,name=srv6_sid,json=srv6Sid,proto3" json:"srv6_sid,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *LsAttribute) Reset() {
	*x = LsAttribute{}
	mi := &file_api_attribute_proto_msgTypes[66]
	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_api_attribute_proto_msgTypes[66]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsAttribute.ProtoReflect.Descriptor instead.
func (*LsAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{66}
}

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
}

func (x *LsAttribute) GetBgpPeerSegment() *LsAttributeBgpPeerSegment {
	if x != nil {
		return x.BgpPeerSegment
	}
	return nil
}

func (x *LsAttribute) GetSrv6Sid() *LsAttributeSrv6SID {
	if x != nil {
		return x.Srv6Sid
	}
	return nil
}

type UnknownAttribute struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UnknownAttribute) Reset() {
	*x = UnknownAttribute{}
	mi := &file_api_attribute_proto_msgTypes[67]
	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_api_attribute_proto_msgTypes[67]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UnknownAttribute.ProtoReflect.Descriptor instead.
func (*UnknownAttribute) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{67}
}

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 `protogen:"open.v1"`
	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"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *SRv6StructureSubSubTLV) Reset() {
	*x = SRv6StructureSubSubTLV{}
	mi := &file_api_attribute_proto_msgTypes[68]
	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_api_attribute_proto_msgTypes[68]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6StructureSubSubTLV.ProtoReflect.Descriptor instead.
func (*SRv6StructureSubSubTLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{68}
}

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 SRv6SubSubTLV struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Tlv:
	//
	//	*SRv6SubSubTLV_Structure
	Tlv           isSRv6SubSubTLV_Tlv `protobuf_oneof:"tlv"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRv6SubSubTLV) Reset() {
	*x = SRv6SubSubTLV{}
	mi := &file_api_attribute_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SRv6SubSubTLV) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SRv6SubSubTLV) ProtoMessage() {}

func (x *SRv6SubSubTLV) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[69]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6SubSubTLV.ProtoReflect.Descriptor instead.
func (*SRv6SubSubTLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{69}
}

func (x *SRv6SubSubTLV) GetTlv() isSRv6SubSubTLV_Tlv {
	if x != nil {
		return x.Tlv
	}
	return nil
}

func (x *SRv6SubSubTLV) GetStructure() *SRv6StructureSubSubTLV {
	if x != nil {
		if x, ok := x.Tlv.(*SRv6SubSubTLV_Structure); ok {
			return x.Structure
		}
	}
	return nil
}

type isSRv6SubSubTLV_Tlv interface {
	isSRv6SubSubTLV_Tlv()
}

type SRv6SubSubTLV_Structure struct {
	Structure *SRv6StructureSubSubTLV `protobuf:"bytes,1,opt,name=structure,proto3,oneof"`
}

func (*SRv6SubSubTLV_Structure) isSRv6SubSubTLV_Tlv() {}

type SRv6SubSubTLVs struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Tlvs          []*SRv6SubSubTLV       `protobuf:"bytes,1,rep,name=tlvs,proto3" json:"tlvs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRv6SubSubTLVs) Reset() {
	*x = SRv6SubSubTLVs{}
	mi := &file_api_attribute_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SRv6SubSubTLVs) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SRv6SubSubTLVs) ProtoMessage() {}

func (x *SRv6SubSubTLVs) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[70]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6SubSubTLVs.ProtoReflect.Descriptor instead.
func (*SRv6SubSubTLVs) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{70}
}

func (x *SRv6SubSubTLVs) GetTlvs() []*SRv6SubSubTLV {
	if x != nil {
		return x.Tlvs
	}
	return nil
}

type SRv6SIDFlags struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Placeholder for future sid flags
	Flag_1        bool `protobuf:"varint,1,opt,name=flag_1,json=flag1,proto3" json:"flag_1,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRv6SIDFlags) Reset() {
	*x = SRv6SIDFlags{}
	mi := &file_api_attribute_proto_msgTypes[71]
	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_api_attribute_proto_msgTypes[71]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6SIDFlags.ProtoReflect.Descriptor instead.
func (*SRv6SIDFlags) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{71}
}

func (x *SRv6SIDFlags) GetFlag_1() bool {
	if x != nil {
		return x.Flag_1
	}
	return false
}

// https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2.1.1
type SRv6InformationSubTLV struct {
	state            protoimpl.MessageState     `protogen:"open.v1"`
	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"`
	SubSubTlvs       map[uint32]*SRv6SubSubTLVs `protobuf:"bytes,4,rep,name=sub_sub_tlvs,json=subSubTlvs,proto3" json:"sub_sub_tlvs,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *SRv6InformationSubTLV) Reset() {
	*x = SRv6InformationSubTLV{}
	mi := &file_api_attribute_proto_msgTypes[72]
	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_api_attribute_proto_msgTypes[72]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6InformationSubTLV.ProtoReflect.Descriptor instead.
func (*SRv6InformationSubTLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{72}
}

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]*SRv6SubSubTLVs {
	if x != nil {
		return x.SubSubTlvs
	}
	return nil
}

type SRv6SubTLV struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Tlv:
	//
	//	*SRv6SubTLV_Information
	Tlv           isSRv6SubTLV_Tlv `protobuf_oneof:"tlv"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRv6SubTLV) Reset() {
	*x = SRv6SubTLV{}
	mi := &file_api_attribute_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SRv6SubTLV) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SRv6SubTLV) ProtoMessage() {}

func (x *SRv6SubTLV) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[73]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6SubTLV.ProtoReflect.Descriptor instead.
func (*SRv6SubTLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{73}
}

func (x *SRv6SubTLV) GetTlv() isSRv6SubTLV_Tlv {
	if x != nil {
		return x.Tlv
	}
	return nil
}

func (x *SRv6SubTLV) GetInformation() *SRv6InformationSubTLV {
	if x != nil {
		if x, ok := x.Tlv.(*SRv6SubTLV_Information); ok {
			return x.Information
		}
	}
	return nil
}

type isSRv6SubTLV_Tlv interface {
	isSRv6SubTLV_Tlv()
}

type SRv6SubTLV_Information struct {
	Information *SRv6InformationSubTLV `protobuf:"bytes,1,opt,name=information,proto3,oneof"`
}

func (*SRv6SubTLV_Information) isSRv6SubTLV_Tlv() {}

type SRv6SubTLVs struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Tlvs          []*SRv6SubTLV          `protobuf:"bytes,1,rep,name=tlvs,proto3" json:"tlvs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRv6SubTLVs) Reset() {
	*x = SRv6SubTLVs{}
	mi := &file_api_attribute_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SRv6SubTLVs) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SRv6SubTLVs) ProtoMessage() {}

func (x *SRv6SubTLVs) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[74]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6SubTLVs.ProtoReflect.Descriptor instead.
func (*SRv6SubTLVs) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{74}
}

func (x *SRv6SubTLVs) GetTlvs() []*SRv6SubTLV {
	if x != nil {
		return x.Tlvs
	}
	return nil
}

// https://www.rfc-editor.org/rfc/rfc9252.html#section-2
type SRv6L3ServiceTLV struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	SubTlvs       map[uint32]*SRv6SubTLVs `protobuf:"bytes,1,rep,name=sub_tlvs,json=subTlvs,proto3" json:"sub_tlvs,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRv6L3ServiceTLV) Reset() {
	*x = SRv6L3ServiceTLV{}
	mi := &file_api_attribute_proto_msgTypes[75]
	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_api_attribute_proto_msgTypes[75]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6L3ServiceTLV.ProtoReflect.Descriptor instead.
func (*SRv6L3ServiceTLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{75}
}

func (x *SRv6L3ServiceTLV) GetSubTlvs() map[uint32]*SRv6SubTLVs {
	if x != nil {
		return x.SubTlvs
	}
	return nil
}

// https://www.rfc-editor.org/rfc/rfc9252.html#section-2
type SRv6L2ServiceTLV struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	SubTlvs       map[uint32]*SRv6SubTLVs `protobuf:"bytes,1,rep,name=sub_tlvs,json=subTlvs,proto3" json:"sub_tlvs,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SRv6L2ServiceTLV) Reset() {
	*x = SRv6L2ServiceTLV{}
	mi := &file_api_attribute_proto_msgTypes[76]
	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_api_attribute_proto_msgTypes[76]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SRv6L2ServiceTLV.ProtoReflect.Descriptor instead.
func (*SRv6L2ServiceTLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{76}
}

func (x *SRv6L2ServiceTLV) GetSubTlvs() map[uint32]*SRv6SubTLVs {
	if x != nil {
		return x.SubTlvs
	}
	return nil
}

// https://tools.ietf.org/html/rfc8669
type PrefixSID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Tlvs          []*PrefixSID_TLV       `protobuf:"bytes,1,rep,name=tlvs,proto3" json:"tlvs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PrefixSID) Reset() {
	*x = PrefixSID{}
	mi := &file_api_attribute_proto_msgTypes[77]
	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_api_attribute_proto_msgTypes[77]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PrefixSID.ProtoReflect.Descriptor instead.
func (*PrefixSID) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{77}
}

func (x *PrefixSID) GetTlvs() []*PrefixSID_TLV {
	if x != nil {
		return x.Tlvs
	}
	return nil
}

type TunnelEncapSubTLVSRSegmentList_Segment struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Segment:
	//
	//	*TunnelEncapSubTLVSRSegmentList_Segment_A
	//	*TunnelEncapSubTLVSRSegmentList_Segment_B
	Segment       isTunnelEncapSubTLVSRSegmentList_Segment_Segment `protobuf_oneof:"segment"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapSubTLVSRSegmentList_Segment) Reset() {
	*x = TunnelEncapSubTLVSRSegmentList_Segment{}
	mi := &file_api_attribute_proto_msgTypes[78]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TunnelEncapSubTLVSRSegmentList_Segment) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TunnelEncapSubTLVSRSegmentList_Segment) ProtoMessage() {}

func (x *TunnelEncapSubTLVSRSegmentList_Segment) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[78]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapSubTLVSRSegmentList_Segment.ProtoReflect.Descriptor instead.
func (*TunnelEncapSubTLVSRSegmentList_Segment) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{33, 0}
}

func (x *TunnelEncapSubTLVSRSegmentList_Segment) GetSegment() isTunnelEncapSubTLVSRSegmentList_Segment_Segment {
	if x != nil {
		return x.Segment
	}
	return nil
}

func (x *TunnelEncapSubTLVSRSegmentList_Segment) GetA() *SegmentTypeA {
	if x != nil {
		if x, ok := x.Segment.(*TunnelEncapSubTLVSRSegmentList_Segment_A); ok {
			return x.A
		}
	}
	return nil
}

func (x *TunnelEncapSubTLVSRSegmentList_Segment) GetB() *SegmentTypeB {
	if x != nil {
		if x, ok := x.Segment.(*TunnelEncapSubTLVSRSegmentList_Segment_B); ok {
			return x.B
		}
	}
	return nil
}

type isTunnelEncapSubTLVSRSegmentList_Segment_Segment interface {
	isTunnelEncapSubTLVSRSegmentList_Segment_Segment()
}

type TunnelEncapSubTLVSRSegmentList_Segment_A struct {
	A *SegmentTypeA `protobuf:"bytes,1,opt,name=a,proto3,oneof"`
}

type TunnelEncapSubTLVSRSegmentList_Segment_B struct {
	B *SegmentTypeB `protobuf:"bytes,2,opt,name=b,proto3,oneof"`
}

func (*TunnelEncapSubTLVSRSegmentList_Segment_A) isTunnelEncapSubTLVSRSegmentList_Segment_Segment() {}

func (*TunnelEncapSubTLVSRSegmentList_Segment_B) isTunnelEncapSubTLVSRSegmentList_Segment_Segment() {}

type TunnelEncapTLV_TLV struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Tlv:
	//
	//	*TunnelEncapTLV_TLV_Unknown
	//	*TunnelEncapTLV_TLV_Encapsulation
	//	*TunnelEncapTLV_TLV_Protocol
	//	*TunnelEncapTLV_TLV_Color
	//	*TunnelEncapTLV_TLV_EgressEndpoint
	//	*TunnelEncapTLV_TLV_UdpDestPort
	//	*TunnelEncapTLV_TLV_SrPreference
	//	*TunnelEncapTLV_TLV_SrPriority
	//	*TunnelEncapTLV_TLV_SrCandidatePathName
	//	*TunnelEncapTLV_TLV_SrEnlp
	//	*TunnelEncapTLV_TLV_SrBindingSid
	//	*TunnelEncapTLV_TLV_SrSegmentList
	Tlv           isTunnelEncapTLV_TLV_Tlv `protobuf_oneof:"tlv"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelEncapTLV_TLV) Reset() {
	*x = TunnelEncapTLV_TLV{}
	mi := &file_api_attribute_proto_msgTypes[79]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TunnelEncapTLV_TLV) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TunnelEncapTLV_TLV) ProtoMessage() {}

func (x *TunnelEncapTLV_TLV) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[79]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelEncapTLV_TLV.ProtoReflect.Descriptor instead.
func (*TunnelEncapTLV_TLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{37, 0}
}

func (x *TunnelEncapTLV_TLV) GetTlv() isTunnelEncapTLV_TLV_Tlv {
	if x != nil {
		return x.Tlv
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetUnknown() *TunnelEncapSubTLVUnknown {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_Unknown); ok {
			return x.Unknown
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetEncapsulation() *TunnelEncapSubTLVEncapsulation {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_Encapsulation); ok {
			return x.Encapsulation
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetProtocol() *TunnelEncapSubTLVProtocol {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_Protocol); ok {
			return x.Protocol
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetColor() *TunnelEncapSubTLVColor {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_Color); ok {
			return x.Color
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetEgressEndpoint() *TunnelEncapSubTLVEgressEndpoint {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_EgressEndpoint); ok {
			return x.EgressEndpoint
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetUdpDestPort() *TunnelEncapSubTLVUDPDestPort {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_UdpDestPort); ok {
			return x.UdpDestPort
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetSrPreference() *TunnelEncapSubTLVSRPreference {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_SrPreference); ok {
			return x.SrPreference
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetSrPriority() *TunnelEncapSubTLVSRPriority {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_SrPriority); ok {
			return x.SrPriority
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetSrCandidatePathName() *TunnelEncapSubTLVSRCandidatePathName {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_SrCandidatePathName); ok {
			return x.SrCandidatePathName
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetSrEnlp() *TunnelEncapSubTLVSRENLP {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_SrEnlp); ok {
			return x.SrEnlp
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetSrBindingSid() *TunnelEncapSubTLVSRBindingSID {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_SrBindingSid); ok {
			return x.SrBindingSid
		}
	}
	return nil
}

func (x *TunnelEncapTLV_TLV) GetSrSegmentList() *TunnelEncapSubTLVSRSegmentList {
	if x != nil {
		if x, ok := x.Tlv.(*TunnelEncapTLV_TLV_SrSegmentList); ok {
			return x.SrSegmentList
		}
	}
	return nil
}

type isTunnelEncapTLV_TLV_Tlv interface {
	isTunnelEncapTLV_TLV_Tlv()
}

type TunnelEncapTLV_TLV_Unknown struct {
	Unknown *TunnelEncapSubTLVUnknown `protobuf:"bytes,1,opt,name=unknown,proto3,oneof"`
}

type TunnelEncapTLV_TLV_Encapsulation struct {
	Encapsulation *TunnelEncapSubTLVEncapsulation `protobuf:"bytes,2,opt,name=encapsulation,proto3,oneof"`
}

type TunnelEncapTLV_TLV_Protocol struct {
	Protocol *TunnelEncapSubTLVProtocol `protobuf:"bytes,3,opt,name=protocol,proto3,oneof"`
}

type TunnelEncapTLV_TLV_Color struct {
	Color *TunnelEncapSubTLVColor `protobuf:"bytes,4,opt,name=color,proto3,oneof"`
}

type TunnelEncapTLV_TLV_EgressEndpoint struct {
	EgressEndpoint *TunnelEncapSubTLVEgressEndpoint `protobuf:"bytes,5,opt,name=egress_endpoint,json=egressEndpoint,proto3,oneof"`
}

type TunnelEncapTLV_TLV_UdpDestPort struct {
	UdpDestPort *TunnelEncapSubTLVUDPDestPort `protobuf:"bytes,6,opt,name=udp_dest_port,json=udpDestPort,proto3,oneof"`
}

type TunnelEncapTLV_TLV_SrPreference struct {
	SrPreference *TunnelEncapSubTLVSRPreference `protobuf:"bytes,7,opt,name=sr_preference,json=srPreference,proto3,oneof"`
}

type TunnelEncapTLV_TLV_SrPriority struct {
	SrPriority *TunnelEncapSubTLVSRPriority `protobuf:"bytes,8,opt,name=sr_priority,json=srPriority,proto3,oneof"`
}

type TunnelEncapTLV_TLV_SrCandidatePathName struct {
	SrCandidatePathName *TunnelEncapSubTLVSRCandidatePathName `protobuf:"bytes,9,opt,name=sr_candidate_path_name,json=srCandidatePathName,proto3,oneof"`
}

type TunnelEncapTLV_TLV_SrEnlp struct {
	SrEnlp *TunnelEncapSubTLVSRENLP `protobuf:"bytes,10,opt,name=sr_enlp,json=srEnlp,proto3,oneof"`
}

type TunnelEncapTLV_TLV_SrBindingSid struct {
	SrBindingSid *TunnelEncapSubTLVSRBindingSID `protobuf:"bytes,11,opt,name=sr_binding_sid,json=srBindingSid,proto3,oneof"`
}

type TunnelEncapTLV_TLV_SrSegmentList struct {
	SrSegmentList *TunnelEncapSubTLVSRSegmentList `protobuf:"bytes,12,opt,name=sr_segment_list,json=srSegmentList,proto3,oneof"`
}

func (*TunnelEncapTLV_TLV_Unknown) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_Encapsulation) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_Protocol) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_Color) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_EgressEndpoint) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_UdpDestPort) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_SrPreference) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_SrPriority) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_SrCandidatePathName) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_SrEnlp) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_SrBindingSid) isTunnelEncapTLV_TLV_Tlv() {}

func (*TunnelEncapTLV_TLV_SrSegmentList) isTunnelEncapTLV_TLV_Tlv() {}

type IP6ExtendedCommunitiesAttribute_Community struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Extcom:
	//
	//	*IP6ExtendedCommunitiesAttribute_Community_Ipv6AddressSpecific
	//	*IP6ExtendedCommunitiesAttribute_Community_RedirectIpv6AddressSpecific
	Extcom        isIP6ExtendedCommunitiesAttribute_Community_Extcom `protobuf_oneof:"extcom"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IP6ExtendedCommunitiesAttribute_Community) Reset() {
	*x = IP6ExtendedCommunitiesAttribute_Community{}
	mi := &file_api_attribute_proto_msgTypes[80]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IP6ExtendedCommunitiesAttribute_Community) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IP6ExtendedCommunitiesAttribute_Community) ProtoMessage() {}

func (x *IP6ExtendedCommunitiesAttribute_Community) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[80]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IP6ExtendedCommunitiesAttribute_Community.ProtoReflect.Descriptor instead.
func (*IP6ExtendedCommunitiesAttribute_Community) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{41, 0}
}

func (x *IP6ExtendedCommunitiesAttribute_Community) GetExtcom() isIP6ExtendedCommunitiesAttribute_Community_Extcom {
	if x != nil {
		return x.Extcom
	}
	return nil
}

func (x *IP6ExtendedCommunitiesAttribute_Community) GetIpv6AddressSpecific() *IPv6AddressSpecificExtended {
	if x != nil {
		if x, ok := x.Extcom.(*IP6ExtendedCommunitiesAttribute_Community_Ipv6AddressSpecific); ok {
			return x.Ipv6AddressSpecific
		}
	}
	return nil
}

func (x *IP6ExtendedCommunitiesAttribute_Community) GetRedirectIpv6AddressSpecific() *RedirectIPv6AddressSpecificExtended {
	if x != nil {
		if x, ok := x.Extcom.(*IP6ExtendedCommunitiesAttribute_Community_RedirectIpv6AddressSpecific); ok {
			return x.RedirectIpv6AddressSpecific
		}
	}
	return nil
}

type isIP6ExtendedCommunitiesAttribute_Community_Extcom interface {
	isIP6ExtendedCommunitiesAttribute_Community_Extcom()
}

type IP6ExtendedCommunitiesAttribute_Community_Ipv6AddressSpecific struct {
	Ipv6AddressSpecific *IPv6AddressSpecificExtended `protobuf:"bytes,1,opt,name=ipv6_address_specific,json=ipv6AddressSpecific,proto3,oneof"`
}

type IP6ExtendedCommunitiesAttribute_Community_RedirectIpv6AddressSpecific struct {
	RedirectIpv6AddressSpecific *RedirectIPv6AddressSpecificExtended `protobuf:"bytes,2,opt,name=redirect_ipv6_address_specific,json=redirectIpv6AddressSpecific,proto3,oneof"`
}

func (*IP6ExtendedCommunitiesAttribute_Community_Ipv6AddressSpecific) isIP6ExtendedCommunitiesAttribute_Community_Extcom() {
}

func (*IP6ExtendedCommunitiesAttribute_Community_RedirectIpv6AddressSpecific) isIP6ExtendedCommunitiesAttribute_Community_Extcom() {
}

type AigpAttribute_TLV struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Tlv:
	//
	//	*AigpAttribute_TLV_Unknown
	//	*AigpAttribute_TLV_IgpMetric
	Tlv           isAigpAttribute_TLV_Tlv `protobuf_oneof:"tlv"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AigpAttribute_TLV) Reset() {
	*x = AigpAttribute_TLV{}
	mi := &file_api_attribute_proto_msgTypes[81]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AigpAttribute_TLV) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AigpAttribute_TLV) ProtoMessage() {}

func (x *AigpAttribute_TLV) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[81]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AigpAttribute_TLV.ProtoReflect.Descriptor instead.
func (*AigpAttribute_TLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{44, 0}
}

func (x *AigpAttribute_TLV) GetTlv() isAigpAttribute_TLV_Tlv {
	if x != nil {
		return x.Tlv
	}
	return nil
}

func (x *AigpAttribute_TLV) GetUnknown() *AigpTLVUnknown {
	if x != nil {
		if x, ok := x.Tlv.(*AigpAttribute_TLV_Unknown); ok {
			return x.Unknown
		}
	}
	return nil
}

func (x *AigpAttribute_TLV) GetIgpMetric() *AigpTLVIGPMetric {
	if x != nil {
		if x, ok := x.Tlv.(*AigpAttribute_TLV_IgpMetric); ok {
			return x.IgpMetric
		}
	}
	return nil
}

type isAigpAttribute_TLV_Tlv interface {
	isAigpAttribute_TLV_Tlv()
}

type AigpAttribute_TLV_Unknown struct {
	Unknown *AigpTLVUnknown `protobuf:"bytes,1,opt,name=unknown,proto3,oneof"`
}

type AigpAttribute_TLV_IgpMetric struct {
	IgpMetric *AigpTLVIGPMetric `protobuf:"bytes,2,opt,name=igp_metric,json=igpMetric,proto3,oneof"`
}

func (*AigpAttribute_TLV_Unknown) isAigpAttribute_TLV_Tlv() {}

func (*AigpAttribute_TLV_IgpMetric) isAigpAttribute_TLV_Tlv() {}

// tlv is one of:
type PrefixSID_TLV struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Tlv:
	//
	//	*PrefixSID_TLV_L3Service
	//	*PrefixSID_TLV_L2Service
	Tlv           isPrefixSID_TLV_Tlv `protobuf_oneof:"tlv"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PrefixSID_TLV) Reset() {
	*x = PrefixSID_TLV{}
	mi := &file_api_attribute_proto_msgTypes[85]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PrefixSID_TLV) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PrefixSID_TLV) ProtoMessage() {}

func (x *PrefixSID_TLV) ProtoReflect() protoreflect.Message {
	mi := &file_api_attribute_proto_msgTypes[85]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PrefixSID_TLV.ProtoReflect.Descriptor instead.
func (*PrefixSID_TLV) Descriptor() ([]byte, []int) {
	return file_api_attribute_proto_rawDescGZIP(), []int{77, 0}
}

func (x *PrefixSID_TLV) GetTlv() isPrefixSID_TLV_Tlv {
	if x != nil {
		return x.Tlv
	}
	return nil
}

func (x *PrefixSID_TLV) GetL3Service() *SRv6L3ServiceTLV {
	if x != nil {
		if x, ok := x.Tlv.(*PrefixSID_TLV_L3Service); ok {
			return x.L3Service
		}
	}
	return nil
}

func (x *PrefixSID_TLV) GetL2Service() *SRv6L2ServiceTLV {
	if x != nil {
		if x, ok := x.Tlv.(*PrefixSID_TLV_L2Service); ok {
			return x.L2Service
		}
	}
	return nil
}

type isPrefixSID_TLV_Tlv interface {
	isPrefixSID_TLV_Tlv()
}

type PrefixSID_TLV_L3Service struct {
	// IndexLabelTLV Type 1 (not yet implemented)
	// OriginatorSRGBTLV Type 3 (not yet implemented)
	L3Service *SRv6L3ServiceTLV `protobuf:"bytes,3,opt,name=l3_service,json=l3Service,proto3,oneof"`
}

type PrefixSID_TLV_L2Service struct {
	L2Service *SRv6L2ServiceTLV `protobuf:"bytes,4,opt,name=l2_service,json=l2Service,proto3,oneof"`
}

func (*PrefixSID_TLV_L3Service) isPrefixSID_TLV_Tlv() {}

func (*PrefixSID_TLV_L2Service) isPrefixSID_TLV_Tlv() {}

var File_api_attribute_proto protoreflect.FileDescriptor

const file_api_attribute_proto_rawDesc = "" +
	"\n" +
	"\x13api/attribute.proto\x12\x03api\x1a\x10api/common.proto\x1a\x10api/extcom.proto\x1a\x0eapi/nlri.proto\"\x9b\v\n" +
	"\tAttribute\x121\n" +
	"\aunknown\x18\x01 \x01(\v2\x15.api.UnknownAttributeH\x00R\aunknown\x12.\n" +
	"\x06origin\x18\x02 \x01(\v2\x14.api.OriginAttributeH\x00R\x06origin\x12/\n" +
	"\aas_path\x18\x03 \x01(\v2\x14.api.AsPathAttributeH\x00R\x06asPath\x122\n" +
	"\bnext_hop\x18\x04 \x01(\v2\x15.api.NextHopAttributeH\x00R\anextHop\x12E\n" +
	"\x0fmulti_exit_disc\x18\x05 \x01(\v2\x1b.api.MultiExitDiscAttributeH\x00R\rmultiExitDisc\x128\n" +
	"\n" +
	"local_pref\x18\x06 \x01(\v2\x17.api.LocalPrefAttributeH\x00R\tlocalPref\x12J\n" +
	"\x10atomic_aggregate\x18\a \x01(\v2\x1d.api.AtomicAggregateAttributeH\x00R\x0fatomicAggregate\x12:\n" +
	"\n" +
	"aggregator\x18\b \x01(\v2\x18.api.AggregatorAttributeH\x00R\n" +
	"aggregator\x12=\n" +
	"\vcommunities\x18\t \x01(\v2\x19.api.CommunitiesAttributeH\x00R\vcommunities\x12A\n" +
	"\roriginator_id\x18\n" +
	" \x01(\v2\x1a.api.OriginatorIdAttributeH\x00R\foriginatorId\x12>\n" +
	"\fcluster_list\x18\v \x01(\v2\x19.api.ClusterListAttributeH\x00R\vclusterList\x126\n" +
	"\bmp_reach\x18\f \x01(\v2\x19.api.MpReachNLRIAttributeH\x00R\ampReach\x12<\n" +
	"\n" +
	"mp_unreach\x18\r \x01(\v2\x1b.api.MpUnreachNLRIAttributeH\x00R\tmpUnreach\x12V\n" +
	"\x14extended_communities\x18\x0e \x01(\v2!.api.ExtendedCommunitiesAttributeH\x00R\x13extendedCommunities\x122\n" +
	"\bas4_path\x18\x0f \x01(\v2\x15.api.As4PathAttributeH\x00R\aas4Path\x12D\n" +
	"\x0eas4_aggregator\x18\x10 \x01(\v2\x1b.api.As4AggregatorAttributeH\x00R\ras4Aggregator\x12;\n" +
	"\vpmsi_tunnel\x18\x11 \x01(\v2\x18.api.PmsiTunnelAttributeH\x00R\n" +
	"pmsiTunnel\x12>\n" +
	"\ftunnel_encap\x18\x12 \x01(\v2\x19.api.TunnelEncapAttributeH\x00R\vtunnelEncap\x12`\n" +
	"\x18ip6_extended_communities\x18\x13 \x01(\v2$.api.IP6ExtendedCommunitiesAttributeH\x00R\x16ip6ExtendedCommunities\x12(\n" +
	"\x04aigp\x18\x14 \x01(\v2\x12.api.AigpAttributeH\x00R\x04aigp\x12M\n" +
	"\x11large_communities\x18\x15 \x01(\v2\x1e.api.LargeCommunitiesAttributeH\x00R\x10largeCommunities\x12\"\n" +
	"\x02ls\x18\x16 \x01(\v2\x10.api.LsAttributeH\x00R\x02ls\x12/\n" +
	"\n" +
	"prefix_sid\x18\x17 \x01(\v2\x0e.api.PrefixSIDH\x00R\tprefixSidB\x06\n" +
	"\x04attr\")\n" +
	"\x0fOriginAttribute\x12\x16\n" +
	"\x06origin\x18\x01 \x01(\rR\x06origin\"\xc8\x01\n" +
	"\tAsSegment\x12'\n" +
	"\x04type\x18\x01 \x01(\x0e2\x13.api.AsSegment.TypeR\x04type\x12\x18\n" +
	"\anumbers\x18\x02 \x03(\rR\anumbers\"x\n" +
	"\x04Type\x12\x14\n" +
	"\x10TYPE_UNSPECIFIED\x10\x00\x12\x0f\n" +
	"\vTYPE_AS_SET\x10\x01\x12\x14\n" +
	"\x10TYPE_AS_SEQUENCE\x10\x02\x12\x1b\n" +
	"\x17TYPE_AS_CONFED_SEQUENCE\x10\x03\x12\x16\n" +
	"\x12TYPE_AS_CONFED_SET\x10\x04\"=\n" +
	"\x0fAsPathAttribute\x12*\n" +
	"\bsegments\x18\x01 \x03(\v2\x0e.api.AsSegmentR\bsegments\"-\n" +
	"\x10NextHopAttribute\x12\x19\n" +
	"\bnext_hop\x18\x01 \x01(\tR\anextHop\"*\n" +
	"\x16MultiExitDiscAttribute\x12\x10\n" +
	"\x03med\x18\x01 \x01(\rR\x03med\"3\n" +
	"\x12LocalPrefAttribute\x12\x1d\n" +
	"\n" +
	"local_pref\x18\x01 \x01(\rR\tlocalPref\"\x1a\n" +
	"\x18AtomicAggregateAttribute\"A\n" +
	"\x13AggregatorAttribute\x12\x10\n" +
	"\x03asn\x18\x01 \x01(\rR\x03asn\x12\x18\n" +
	"\aaddress\x18\x02 \x01(\tR\aaddress\"8\n" +
	"\x14CommunitiesAttribute\x12 \n" +
	"\vcommunities\x18\x01 \x03(\rR\vcommunities\"'\n" +
	"\x15OriginatorIdAttribute\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"(\n" +
	"\x14ClusterListAttribute\x12\x10\n" +
	"\x03ids\x18\x01 \x03(\tR\x03ids\"y\n" +
	"\x14MpReachNLRIAttribute\x12#\n" +
	"\x06family\x18\x01 \x01(\v2\v.api.FamilyR\x06family\x12\x1b\n" +
	"\tnext_hops\x18\x02 \x03(\tR\bnextHops\x12\x1f\n" +
	"\x05nlris\x18\x03 \x03(\v2\t.api.NLRIR\x05nlris\"^\n" +
	"\x16MpUnreachNLRIAttribute\x12#\n" +
	"\x06family\x18\x01 \x01(\v2\v.api.FamilyR\x06family\x12\x1f\n" +
	"\x05nlris\x18\x03 \x03(\v2\t.api.NLRIR\x05nlris\"X\n" +
	"\x1cExtendedCommunitiesAttribute\x128\n" +
	"\vcommunities\x18\x01 \x03(\v2\x16.api.ExtendedCommunityR\vcommunities\">\n" +
	"\x10As4PathAttribute\x12*\n" +
	"\bsegments\x18\x01 \x03(\v2\x0e.api.AsSegmentR\bsegments\"D\n" +
	"\x16As4AggregatorAttribute\x12\x10\n" +
	"\x03asn\x18\x02 \x01(\rR\x03asn\x12\x18\n" +
	"\aaddress\x18\x03 \x01(\tR\aaddress\"e\n" +
	"\x13PmsiTunnelAttribute\x12\x14\n" +
	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\x12\n" +
	"\x04type\x18\x02 \x01(\rR\x04type\x12\x14\n" +
	"\x05label\x18\x03 \x01(\rR\x05label\x12\x0e\n" +
	"\x02id\x18\x04 \x01(\fR\x02id\"J\n" +
	"\x1eTunnelEncapSubTLVEncapsulation\x12\x10\n" +
	"\x03key\x18\x01 \x01(\rR\x03key\x12\x16\n" +
	"\x06cookie\x18\x02 \x01(\fR\x06cookie\"7\n" +
	"\x19TunnelEncapSubTLVProtocol\x12\x1a\n" +
	"\bprotocol\x18\x01 \x01(\rR\bprotocol\".\n" +
	"\x16TunnelEncapSubTLVColor\x12\x14\n" +
	"\x05color\x18\x01 \x01(\rR\x05color\"U\n" +
	"\x1dTunnelEncapSubTLVSRPreference\x12\x14\n" +
	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\x1e\n" +
	"\n" +
	"preference\x18\x02 \x01(\rR\n" +
	"preference\"V\n" +
	"$TunnelEncapSubTLVSRCandidatePathName\x12.\n" +
	"\x13candidate_path_name\x18\x01 \x01(\tR\x11candidatePathName\"9\n" +
	"\x1bTunnelEncapSubTLVSRPriority\x12\x1a\n" +
	"\bpriority\x18\x01 \x01(\rR\bpriority\"\xa3\x01\n" +
	"\x1dTunnelEncapSubTLVSRBindingSID\x129\n" +
	"\x0esr_binding_sid\x18\x01 \x01(\v2\x11.api.SRBindingSIDH\x00R\fsrBindingSid\x12?\n" +
	"\x10srv6_binding_sid\x18\x02 \x01(\v2\x13.api.SRv6BindingSIDH\x00R\x0esrv6BindingSidB\x06\n" +
	"\x04bsid\"N\n" +
	"\fSRBindingSID\x12\x15\n" +
	"\x06s_flag\x18\x01 \x01(\bR\x05sFlag\x12\x15\n" +
	"\x06i_flag\x18\x02 \x01(\bR\x05iFlag\x12\x10\n" +
	"\x03sid\x18\x03 \x01(\fR\x03sid\"\xb1\x01\n" +
	"\x14SRv6EndPointBehavior\x12-\n" +
	"\bbehavior\x18\x01 \x01(\x0e2\x11.api.SRV6BehaviorR\bbehavior\x12\x1b\n" +
	"\tblock_len\x18\x02 \x01(\rR\bblockLen\x12\x19\n" +
	"\bnode_len\x18\x03 \x01(\rR\anodeLen\x12\x19\n" +
	"\bfunc_len\x18\x04 \x01(\rR\afuncLen\x12\x17\n" +
	"\aarg_len\x18\x05 \x01(\rR\x06argLen\"\xc2\x01\n" +
	"\x0eSRv6BindingSID\x12\x15\n" +
	"\x06s_flag\x18\x01 \x01(\bR\x05sFlag\x12\x15\n" +
	"\x06i_flag\x18\x02 \x01(\bR\x05iFlag\x12\x15\n" +
	"\x06b_flag\x18\x03 \x01(\bR\x05bFlag\x12\x10\n" +
	"\x03sid\x18\x04 \x01(\fR\x03sid\x12Y\n" +
	"\x1bendpoint_behavior_structure\x18\x05 \x01(\v2\x19.api.SRv6EndPointBehaviorR\x19endpointBehaviorStructure\"R\n" +
	"\x17TunnelEncapSubTLVSRENLP\x12\x14\n" +
	"\x05flags\x18\x01 \x01(\rR\x05flags\x12!\n" +
	"\x04enlp\x18\x02 \x01(\x0e2\r.api.ENLPTypeR\x04enlp\"8\n" +
	"\bSRWeight\x12\x14\n" +
	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\x16\n" +
	"\x06weight\x18\x02 \x01(\rR\x06weight\"j\n" +
	"\fSegmentFlags\x12\x15\n" +
	"\x06v_flag\x18\x01 \x01(\bR\x05vFlag\x12\x15\n" +
	"\x06a_flag\x18\x02 \x01(\bR\x05aFlag\x12\x15\n" +
	"\x06s_flag\x18\x03 \x01(\bR\x05sFlag\x12\x15\n" +
	"\x06b_flag\x18\x04 \x01(\bR\x05bFlag\"M\n" +
	"\fSegmentTypeA\x12'\n" +
	"\x05flags\x18\x01 \x01(\v2\x11.api.SegmentFlagsR\x05flags\x12\x14\n" +
	"\x05label\x18\x02 \x01(\rR\x05label\"\xa4\x01\n" +
	"\fSegmentTypeB\x12'\n" +
	"\x05flags\x18\x01 \x01(\v2\x11.api.SegmentFlagsR\x05flags\x12\x10\n" +
	"\x03sid\x18\x02 \x01(\fR\x03sid\x12Y\n" +
	"\x1bendpoint_behavior_structure\x18\x03 \x01(\v2\x19.api.SRv6EndPointBehaviorR\x19endpointBehaviorStructure\"\xec\x01\n" +
	"\x1eTunnelEncapSubTLVSRSegmentList\x12%\n" +
	"\x06weight\x18\x01 \x01(\v2\r.api.SRWeightR\x06weight\x12G\n" +
	"\bsegments\x18\x02 \x03(\v2+.api.TunnelEncapSubTLVSRSegmentList.SegmentR\bsegments\x1aZ\n" +
	"\aSegment\x12!\n" +
	"\x01a\x18\x01 \x01(\v2\x11.api.SegmentTypeAH\x00R\x01a\x12!\n" +
	"\x01b\x18\x02 \x01(\v2\x11.api.SegmentTypeBH\x00R\x01bB\t\n" +
	"\asegment\";\n" +
	"\x1fTunnelEncapSubTLVEgressEndpoint\x12\x18\n" +
	"\aaddress\x18\x01 \x01(\tR\aaddress\"2\n" +
	"\x1cTunnelEncapSubTLVUDPDestPort\x12\x12\n" +
	"\x04port\x18\x01 \x01(\rR\x04port\"D\n" +
	"\x18TunnelEncapSubTLVUnknown\x12\x12\n" +
	"\x04type\x18\x01 \x01(\rR\x04type\x12\x14\n" +
	"\x05value\x18\x02 \x01(\fR\x05value\"\xbb\a\n" +
	"\x0eTunnelEncapTLV\x12\x12\n" +
	"\x04type\x18\x01 \x01(\rR\x04type\x12+\n" +
	"\x04tlvs\x18\x02 \x03(\v2\x17.api.TunnelEncapTLV.TLVR\x04tlvs\x1a\xe7\x06\n" +
	"\x03TLV\x129\n" +
	"\aunknown\x18\x01 \x01(\v2\x1d.api.TunnelEncapSubTLVUnknownH\x00R\aunknown\x12K\n" +
	"\rencapsulation\x18\x02 \x01(\v2#.api.TunnelEncapSubTLVEncapsulationH\x00R\rencapsulation\x12<\n" +
	"\bprotocol\x18\x03 \x01(\v2\x1e.api.TunnelEncapSubTLVProtocolH\x00R\bprotocol\x123\n" +
	"\x05color\x18\x04 \x01(\v2\x1b.api.TunnelEncapSubTLVColorH\x00R\x05color\x12O\n" +
	"\x0fegress_endpoint\x18\x05 \x01(\v2$.api.TunnelEncapSubTLVEgressEndpointH\x00R\x0eegressEndpoint\x12G\n" +
	"\rudp_dest_port\x18\x06 \x01(\v2!.api.TunnelEncapSubTLVUDPDestPortH\x00R\vudpDestPort\x12I\n" +
	"\rsr_preference\x18\a \x01(\v2\".api.TunnelEncapSubTLVSRPreferenceH\x00R\fsrPreference\x12C\n" +
	"\vsr_priority\x18\b \x01(\v2 .api.TunnelEncapSubTLVSRPriorityH\x00R\n" +
	"srPriority\x12`\n" +
	"\x16sr_candidate_path_name\x18\t \x01(\v2).api.TunnelEncapSubTLVSRCandidatePathNameH\x00R\x13srCandidatePathName\x127\n" +
	"\asr_enlp\x18\n" +
	" \x01(\v2\x1c.api.TunnelEncapSubTLVSRENLPH\x00R\x06srEnlp\x12J\n" +
	"\x0esr_binding_sid\x18\v \x01(\v2\".api.TunnelEncapSubTLVSRBindingSIDH\x00R\fsrBindingSid\x12M\n" +
	"\x0fsr_segment_list\x18\f \x01(\v2#.api.TunnelEncapSubTLVSRSegmentListH\x00R\rsrSegmentListB\x05\n" +
	"\x03tlv\"?\n" +
	"\x14TunnelEncapAttribute\x12'\n" +
	"\x04tlvs\x18\x01 \x03(\v2\x13.api.TunnelEncapTLVR\x04tlvs\"\x98\x01\n" +
	"\x1bIPv6AddressSpecificExtended\x12#\n" +
	"\ris_transitive\x18\x01 \x01(\bR\fisTransitive\x12\x19\n" +
	"\bsub_type\x18\x02 \x01(\rR\asubType\x12\x18\n" +
	"\aaddress\x18\x03 \x01(\tR\aaddress\x12\x1f\n" +
	"\vlocal_admin\x18\x04 \x01(\rR\n" +
	"localAdmin\"`\n" +
	"#RedirectIPv6AddressSpecificExtended\x12\x18\n" +
	"\aaddress\x18\x01 \x01(\tR\aaddress\x12\x1f\n" +
	"\vlocal_admin\x18\x02 \x01(\rR\n" +
	"localAdmin\"\xd4\x02\n" +
	"\x1fIP6ExtendedCommunitiesAttribute\x12P\n" +
	"\vcommunities\x18\x01 \x03(\v2..api.IP6ExtendedCommunitiesAttribute.CommunityR\vcommunities\x1a\xde\x01\n" +
	"\tCommunity\x12V\n" +
	"\x15ipv6_address_specific\x18\x01 \x01(\v2 .api.IPv6AddressSpecificExtendedH\x00R\x13ipv6AddressSpecific\x12o\n" +
	"\x1eredirect_ipv6_address_specific\x18\x02 \x01(\v2(.api.RedirectIPv6AddressSpecificExtendedH\x00R\x1bredirectIpv6AddressSpecificB\b\n" +
	"\x06extcom\"*\n" +
	"\x10AigpTLVIGPMetric\x12\x16\n" +
	"\x06metric\x18\x01 \x01(\x04R\x06metric\":\n" +
	"\x0eAigpTLVUnknown\x12\x12\n" +
	"\x04type\x18\x01 \x01(\rR\x04type\x12\x14\n" +
	"\x05value\x18\x02 \x01(\fR\x05value\"\xb2\x01\n" +
	"\rAigpAttribute\x12*\n" +
	"\x04tlvs\x18\x01 \x03(\v2\x16.api.AigpAttribute.TLVR\x04tlvs\x1au\n" +
	"\x03TLV\x12/\n" +
	"\aunknown\x18\x01 \x01(\v2\x13.api.AigpTLVUnknownH\x00R\aunknown\x126\n" +
	"\n" +
	"igp_metric\x18\x02 \x01(\v2\x15.api.AigpTLVIGPMetricH\x00R\tigpMetricB\x05\n" +
	"\x03tlv\"u\n" +
	"\x0eLargeCommunity\x12!\n" +
	"\fglobal_admin\x18\x01 \x01(\rR\vglobalAdmin\x12\x1f\n" +
	"\vlocal_data1\x18\x02 \x01(\rR\n" +
	"localData1\x12\x1f\n" +
	"\vlocal_data2\x18\x03 \x01(\rR\n" +
	"localData2\"R\n" +
	"\x19LargeCommunitiesAttribute\x125\n" +
	"\vcommunities\x18\x01 \x03(\v2\x13.api.LargeCommunityR\vcommunities\"\x9b\x01\n" +
	"\vLsNodeFlags\x12\x1a\n" +
	"\boverload\x18\x01 \x01(\bR\boverload\x12\x1a\n" +
	"\battached\x18\x02 \x01(\bR\battached\x12\x1a\n" +
	"\bexternal\x18\x03 \x01(\bR\bexternal\x12\x10\n" +
	"\x03abr\x18\x04 \x01(\bR\x03abr\x12\x16\n" +
	"\x06router\x18\x05 \x01(\bR\x06router\x12\x0e\n" +
	"\x02v6\x18\x06 \x01(\bR\x02v6\"\x8b\x01\n" +
	"\n" +
	"LsIGPFlags\x12\x12\n" +
	"\x04down\x18\x01 \x01(\bR\x04down\x12\x1d\n" +
	"\n" +
	"no_unicast\x18\x02 \x01(\bR\tnoUnicast\x12#\n" +
	"\rlocal_address\x18\x03 \x01(\bR\flocalAddress\x12%\n" +
	"\x0epropagate_nssa\x18\x04 \x01(\bR\rpropagateNssa\"3\n" +
	"\tLsSrRange\x12\x14\n" +
	"\x05begin\x18\x01 \x01(\rR\x05begin\x12\x10\n" +
	"\x03end\x18\x02 \x01(\rR\x03end\"\x88\x01\n" +
	"\x10LsSrCapabilities\x12%\n" +
	"\x0eipv4_supported\x18\x01 \x01(\bR\ripv4Supported\x12%\n" +
	"\x0eipv6_supported\x18\x02 \x01(\bR\ripv6Supported\x12&\n" +
	"\x06ranges\x18\x03 \x03(\v2\x0e.api.LsSrRangeR\x06ranges\"8\n" +
	"\x0eLsSrLocalBlock\x12&\n" +
	"\x06ranges\x18\x01 \x03(\v2\x0e.api.LsSrRangeR\x06ranges\"\xba\x03\n" +
	"\x0fLsAttributeNode\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12&\n" +
	"\x05flags\x18\x02 \x01(\v2\x10.api.LsNodeFlagsR\x05flags\x12&\n" +
	"\x0flocal_router_id\x18\x03 \x01(\tR\rlocalRouterId\x12+\n" +
	"\x12local_router_id_v6\x18\x04 \x01(\tR\x0flocalRouterIdV6\x12\x1b\n" +
	"\tisis_area\x18\x05 \x01(\fR\bisisArea\x12\x16\n" +
	"\x06opaque\x18\x06 \x01(\fR\x06opaque\x12>\n" +
	"\x0fsr_capabilities\x18\a \x01(\v2\x15.api.LsSrCapabilitiesR\x0esrCapabilities\x12#\n" +
	"\rsr_algorithms\x18\b \x01(\fR\fsrAlgorithms\x129\n" +
	"\x0esr_local_block\x18\t \x01(\v2\x13.api.LsSrLocalBlockR\fsrLocalBlock\x12A\n" +
	"\x0eflex_algo_defs\x18\n" +
	" \x03(\v2\x1b.api.LsAttributeFlexAlgoDefR\fflexAlgoDefs\"\xa0\x03\n" +
	"\x16LsAttributeFlexAlgoDef\x12\x1c\n" +
	"\talgorithm\x18\x01 \x01(\rR\talgorithm\x12\x1f\n" +
	"\vmetric_type\x18\x02 \x01(\rR\n" +
	"metricType\x12*\n" +
	"\x11metric_type_known\x18\x03 \x01(\bR\x0fmetricTypeKnown\x12\x1b\n" +
	"\tcalc_type\x18\x04 \x01(\rR\bcalcType\x12\x1a\n" +
	"\bpriority\x18\x05 \x01(\rR\bpriority\x120\n" +
	"\x14exclude_any_affinity\x18\x06 \x03(\rR\x12excludeAnyAffinity\x120\n" +
	"\x14include_any_affinity\x18\a \x03(\rR\x12includeAnyAffinity\x120\n" +
	"\x14include_all_affinity\x18\b \x03(\rR\x12includeAllAffinity\x12)\n" +
	"\x10definition_flags\x18\t \x01(\fR\x0fdefinitionFlags\x12!\n" +
	"\fexclude_srlg\x18\n" +
	" \x03(\rR\vexcludeSrlg\"\x88\b\n" +
	"\x0fLsAttributeLink\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12&\n" +
	"\x0flocal_router_id\x18\x02 \x01(\tR\rlocalRouterId\x12+\n" +
	"\x12local_router_id_v6\x18\x03 \x01(\tR\x0flocalRouterIdV6\x12(\n" +
	"\x10remote_router_id\x18\x04 \x01(\tR\x0eremoteRouterId\x12-\n" +
	"\x13remote_router_id_v6\x18\x05 \x01(\tR\x10remoteRouterIdV6\x12\x1f\n" +
	"\vadmin_group\x18\x06 \x01(\rR\n" +
	"adminGroup\x12*\n" +
	"\x11default_te_metric\x18\a \x01(\rR\x0fdefaultTeMetric\x12\x1d\n" +
	"\n" +
	"igp_metric\x18\b \x01(\rR\tigpMetric\x12\x16\n" +
	"\x06opaque\x18\t \x01(\fR\x06opaque\x12\x1c\n" +
	"\tbandwidth\x18\n" +
	" \x01(\x02R\tbandwidth\x121\n" +
	"\x14reservable_bandwidth\x18\v \x01(\x02R\x13reservableBandwidth\x121\n" +
	"\x14unreserved_bandwidth\x18\f \x03(\x02R\x13unreservedBandwidth\x12(\n" +
	"\x10sr_adjacency_sid\x18\r \x01(\rR\x0esrAdjacencySid\x12\x14\n" +
	"\x05srlgs\x18\x0e \x03(\rR\x05srlgs\x127\n" +
	"\x0esrv6_end_x_sid\x18\x0f \x01(\v2\x12.api.LsSrv6EndXSIDR\vsrv6EndXSid\x12M\n" +
	"#unidirectional_link_delay_anomalous\x18\x10 \x01(\bR unidirectionalLinkDelayAnomalous\x12:\n" +
	"\x19unidirectional_link_delay\x18\x11 \x01(\rR\x17unidirectionalLinkDelay\x12[\n" +
	"+min_max_unidirectional_link_delay_anomalous\x18\x12 \x01(\bR&minMaxUnidirectionalLinkDelayAnomalous\x12A\n" +
	"\x1dmin_unidirectional_link_delay\x18\x13 \x01(\rR\x1aminUnidirectionalLinkDelay\x12A\n" +
	"\x1dmax_unidirectional_link_delay\x18\x14 \x01(\rR\x1amaxUnidirectionalLinkDelay\x12D\n" +
	"\x1eunidirectional_delay_variation\x18\x15 \x01(\rR\x1cunidirectionalDelayVariation\"\x8d\x02\n" +
	"\x11LsAttributePrefix\x12,\n" +
	"\tigp_flags\x18\x01 \x01(\v2\x0f.api.LsIGPFlagsR\bigpFlags\x12\x16\n" +
	"\x06opaque\x18\x02 \x01(\fR\x06opaque\x12\"\n" +
	"\rsr_prefix_sid\x18\x03 \x01(\rR\vsrPrefixSid\x12?\n" +
	"\x0esr_prefix_sids\x18\x04 \x03(\v2\x19.api.LsAttributePrefixSIDR\fsrPrefixSids\x12M\n" +
	"\x12fad_prefix_metrics\x18\x05 \x03(\v2\x1f.api.LsAttributeFADPrefixMetricR\x10fadPrefixMetrics\"\\\n" +
	"\x14LsAttributePrefixSID\x12\x1c\n" +
	"\talgorithm\x18\x01 \x01(\rR\talgorithm\x12\x14\n" +
	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x10\n" +
	"\x03sid\x18\x03 \x01(\rR\x03sid\"h\n" +
	"\x1aLsAttributeFADPrefixMetric\x12\x1c\n" +
	"\talgorithm\x18\x01 \x01(\rR\talgorithm\x12\x14\n" +
	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x16\n" +
	"\x06metric\x18\x03 \x01(\rR\x06metric\"~\n" +
	"\x18LsBgpPeerSegmentSIDFlags\x12\x14\n" +
	"\x05value\x18\x01 \x01(\bR\x05value\x12\x14\n" +
	"\x05local\x18\x02 \x01(\bR\x05local\x12\x16\n" +
	"\x06backup\x18\x03 \x01(\bR\x06backup\x12\x1e\n" +
	"\n" +
	"persistent\x18\x04 \x01(\bR\n" +
	"persistent\"t\n" +
	"\x13LsBgpPeerSegmentSID\x123\n" +
	"\x05flags\x18\x01 \x01(\v2\x1d.api.LsBgpPeerSegmentSIDFlagsR\x05flags\x12\x16\n" +
	"\x06weight\x18\x02 \x01(\rR\x06weight\x12\x10\n" +
	"\x03sid\x18\x03 \x01(\rR\x03sid\"\xf2\x01\n" +
	"\x19LsAttributeBgpPeerSegment\x12C\n" +
	"\x11bgp_peer_node_sid\x18\x01 \x01(\v2\x18.api.LsBgpPeerSegmentSIDR\x0ebgpPeerNodeSid\x12M\n" +
	"\x16bgp_peer_adjacency_sid\x18\x02 \x01(\v2\x18.api.LsBgpPeerSegmentSIDR\x13bgpPeerAdjacencySid\x12A\n" +
	"\x10bgp_peer_set_sid\x18\x03 \x01(\v2\x18.api.LsBgpPeerSegmentSIDR\rbgpPeerSetSid\"\xff\x01\n" +
	"\rLsSrv6EndXSID\x12+\n" +
	"\x11endpoint_behavior\x18\x01 \x01(\rR\x10endpointBehavior\x12\x14\n" +
	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x1c\n" +
	"\talgorithm\x18\x03 \x01(\rR\talgorithm\x12\x16\n" +
	"\x06weight\x18\x04 \x01(\rR\x06weight\x12\x1a\n" +
	"\breserved\x18\x05 \x01(\rR\breserved\x12\x12\n" +
	"\x04sids\x18\x06 \x03(\tR\x04sids\x12E\n" +
	"\x12srv6_sid_structure\x18\a \x01(\v2\x17.api.LsSrv6SIDStructureR\x10srv6SidStructure\"\x90\x01\n" +
	"\x12LsSrv6SIDStructure\x12\x1f\n" +
	"\vlocal_block\x18\x01 \x01(\rR\n" +
	"localBlock\x12\x1d\n" +
	"\n" +
	"local_node\x18\x02 \x01(\rR\tlocalNode\x12\x1d\n" +
	"\n" +
	"local_func\x18\x03 \x01(\rR\tlocalFunc\x12\x1b\n" +
	"\tlocal_arg\x18\x04 \x01(\rR\blocalArg\"y\n" +
	"\x16LsSrv6EndpointBehavior\x12+\n" +
	"\x11endpoint_behavior\x18\x01 \x01(\rR\x10endpointBehavior\x12\x14\n" +
	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x1c\n" +
	"\talgorithm\x18\x03 \x01(\rR\talgorithm\"}\n" +
	"\x14LsSrv6BgpPeerNodeSID\x12\x14\n" +
	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\x16\n" +
	"\x06weight\x18\x02 \x01(\rR\x06weight\x12\x17\n" +
	"\apeer_as\x18\x03 \x01(\rR\x06peerAs\x12\x1e\n" +
	"\vpeer_bgp_id\x18\x04 \x01(\tR\tpeerBgpId\"\xfd\x01\n" +
	"\x12LsAttributeSrv6SID\x12E\n" +
	"\x12srv6_sid_structure\x18\x01 \x01(\v2\x17.api.LsSrv6SIDStructureR\x10srv6SidStructure\x12Q\n" +
	"\x16srv6_endpoint_behavior\x18\x02 \x01(\v2\x1b.api.LsSrv6EndpointBehaviorR\x14srv6EndpointBehavior\x12M\n" +
	"\x16srv6_bgp_peer_node_sid\x18\x03 \x01(\v2\x19.api.LsSrv6BgpPeerNodeSIDR\x12srv6BgpPeerNodeSid\"\x8f\x02\n" +
	"\vLsAttribute\x12(\n" +
	"\x04node\x18\x01 \x01(\v2\x14.api.LsAttributeNodeR\x04node\x12(\n" +
	"\x04link\x18\x02 \x01(\v2\x14.api.LsAttributeLinkR\x04link\x12.\n" +
	"\x06prefix\x18\x03 \x01(\v2\x16.api.LsAttributePrefixR\x06prefix\x12H\n" +
	"\x10bgp_peer_segment\x18\x04 \x01(\v2\x1e.api.LsAttributeBgpPeerSegmentR\x0ebgpPeerSegment\x122\n" +
	"\bsrv6_sid\x18\x05 \x01(\v2\x17.api.LsAttributeSrv6SIDR\asrv6Sid\"R\n" +
	"\x10UnknownAttribute\x12\x14\n" +
	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\x12\n" +
	"\x04type\x18\x02 \x01(\rR\x04type\x12\x14\n" +
	"\x05value\x18\x03 \x01(\fR\x05value\"\xb2\x02\n" +
	"\x16SRv6StructureSubSubTLV\x120\n" +
	"\x14locator_block_length\x18\x01 \x01(\rR\x12locatorBlockLength\x12.\n" +
	"\x13locator_node_length\x18\x02 \x01(\rR\x11locatorNodeLength\x12'\n" +
	"\x0ffunction_length\x18\x03 \x01(\rR\x0efunctionLength\x12'\n" +
	"\x0fargument_length\x18\x04 \x01(\rR\x0eargumentLength\x121\n" +
	"\x14transposition_length\x18\x05 \x01(\rR\x13transpositionLength\x121\n" +
	"\x14transposition_offset\x18\x06 \x01(\rR\x13transpositionOffset\"S\n" +
	"\rSRv6SubSubTLV\x12;\n" +
	"\tstructure\x18\x01 \x01(\v2\x1b.api.SRv6StructureSubSubTLVH\x00R\tstructureB\x05\n" +
	"\x03tlv\"8\n" +
	"\x0eSRv6SubSubTLVs\x12&\n" +
	"\x04tlvs\x18\x01 \x03(\v2\x12.api.SRv6SubSubTLVR\x04tlvs\"%\n" +
	"\fSRv6SIDFlags\x12\x15\n" +
	"\x06flag_1\x18\x01 \x01(\bR\x05flag1\"\xa1\x02\n" +
	"\x15SRv6InformationSubTLV\x12\x10\n" +
	"\x03sid\x18\x01 \x01(\fR\x03sid\x12'\n" +
	"\x05flags\x18\x02 \x01(\v2\x11.api.SRv6SIDFlagsR\x05flags\x12+\n" +
	"\x11endpoint_behavior\x18\x03 \x01(\rR\x10endpointBehavior\x12L\n" +
	"\fsub_sub_tlvs\x18\x04 \x03(\v2*.api.SRv6InformationSubTLV.SubSubTlvsEntryR\n" +
	"subSubTlvs\x1aR\n" +
	"\x0fSubSubTlvsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\rR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.api.SRv6SubSubTLVsR\x05value:\x028\x01\"S\n" +
	"\n" +
	"SRv6SubTLV\x12>\n" +
	"\vinformation\x18\x01 \x01(\v2\x1a.api.SRv6InformationSubTLVH\x00R\vinformationB\x05\n" +
	"\x03tlv\"2\n" +
	"\vSRv6SubTLVs\x12#\n" +
	"\x04tlvs\x18\x01 \x03(\v2\x0f.api.SRv6SubTLVR\x04tlvs\"\x9f\x01\n" +
	"\x10SRv6L3ServiceTLV\x12=\n" +
	"\bsub_tlvs\x18\x01 \x03(\v2\".api.SRv6L3ServiceTLV.SubTlvsEntryR\asubTlvs\x1aL\n" +
	"\fSubTlvsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\rR\x03key\x12&\n" +
	"\x05value\x18\x02 \x01(\v2\x10.api.SRv6SubTLVsR\x05value:\x028\x01\"\x9f\x01\n" +
	"\x10SRv6L2ServiceTLV\x12=\n" +
	"\bsub_tlvs\x18\x01 \x03(\v2\".api.SRv6L2ServiceTLV.SubTlvsEntryR\asubTlvs\x1aL\n" +
	"\fSubTlvsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\rR\x03key\x12&\n" +
	"\x05value\x18\x02 \x01(\v2\x10.api.SRv6SubTLVsR\x05value:\x028\x01\"\xb1\x01\n" +
	"\tPrefixSID\x12&\n" +
	"\x04tlvs\x18\x01 \x03(\v2\x12.api.PrefixSID.TLVR\x04tlvs\x1a|\n" +
	"\x03TLV\x126\n" +
	"\n" +
	"l3_service\x18\x03 \x01(\v2\x15.api.SRv6L3ServiceTLVH\x00R\tl3Service\x126\n" +
	"\n" +
	"l2_service\x18\x04 \x01(\v2\x15.api.SRv6L2ServiceTLVH\x00R\tl2ServiceB\x05\n" +
	"\x03tlv*\xae\n" +
	"\n" +
	"\fSRV6Behavior\x12\x1d\n" +
	"\x19SRV6_BEHAVIOR_UNSPECIFIED\x10\x00\x12\x15\n" +
	"\x11SRV6_BEHAVIOR_END\x10\x01\x12\x1e\n" +
	"\x1aSRV6_BEHAVIOR_END_WITH_PSP\x10\x02\x12\x1e\n" +
	"\x1aSRV6_BEHAVIOR_END_WITH_USP\x10\x03\x12\"\n" +
	"\x1eSRV6_BEHAVIOR_END_WITH_PSP_USP\x10\x04\x12\x16\n" +
	"\x12SRV6_BEHAVIOR_ENDX\x10\x05\x12\x1f\n" +
	"\x1bSRV6_BEHAVIOR_ENDX_WITH_PSP\x10\x06\x12\x1f\n" +
	"\x1bSRV6_BEHAVIOR_ENDX_WITH_USP\x10\a\x12#\n" +
	"\x1fSRV6_BEHAVIOR_ENDX_WITH_PSP_USP\x10\b\x12\x16\n" +
	"\x12SRV6_BEHAVIOR_ENDT\x10\t\x12\x1f\n" +
	"\x1bSRV6_BEHAVIOR_ENDT_WITH_PSP\x10\n" +
	"\x12\x1f\n" +
	"\x1bSRV6_BEHAVIOR_ENDT_WITH_USP\x10\v\x12#\n" +
	"\x1fSRV6_BEHAVIOR_ENDT_WITH_PSP_USP\x10\f\x12\x1f\n" +
	"\x1bSRV6_BEHAVIOR_END_B6_ENCAPS\x10\x0e\x12\x18\n" +
	"\x14SRV6_BEHAVIOR_END_BM\x10\x0f\x12\x19\n" +
	"\x15SRV6_BEHAVIOR_END_DX6\x10\x10\x12\x19\n" +
	"\x15SRV6_BEHAVIOR_END_DX4\x10\x11\x12\x19\n" +
	"\x15SRV6_BEHAVIOR_END_DT6\x10\x12\x12\x19\n" +
	"\x15SRV6_BEHAVIOR_END_DT4\x10\x13\x12\x1a\n" +
	"\x16SRV6_BEHAVIOR_END_DT46\x10\x14\x12\x19\n" +
	"\x15SRV6_BEHAVIOR_END_DX2\x10\x15\x12\x1a\n" +
	"\x16SRV6_BEHAVIOR_END_DX2V\x10\x16\x12\x1a\n" +
	"\x16SRV6_BEHAVIOR_END_DT2U\x10\x17\x12\x1a\n" +
	"\x16SRV6_BEHAVIOR_END_DT2M\x10\x18\x12#\n" +
	"\x1fSRV6_BEHAVIOR_END_B6_ENCAPS_RED\x10\x1b\x12\x1e\n" +
	"\x1aSRV6_BEHAVIOR_END_WITH_USD\x10\x1c\x12\"\n" +
	"\x1eSRV6_BEHAVIOR_END_WITH_PSP_USD\x10\x1d\x12\"\n" +
	"\x1eSRV6_BEHAVIOR_END_WITH_USP_USD\x10\x1e\x12&\n" +
	"\"SRV6_BEHAVIOR_END_WITH_PSP_USP_USD\x10\x1f\x12\x1f\n" +
	"\x1bSRV6_BEHAVIOR_ENDX_WITH_USD\x10 \x12#\n" +
	"\x1fSRV6_BEHAVIOR_ENDX_WITH_PSP_USD\x10!\x12#\n" +
	"\x1fSRV6_BEHAVIOR_ENDX_WITH_USP_USD\x10\"\x12'\n" +
	"#SRV6_BEHAVIOR_ENDX_WITH_PSP_USP_USD\x10#\x12\x1f\n" +
	"\x1bSRV6_BEHAVIOR_ENDT_WITH_USD\x10$\x12#\n" +
	"\x1fSRV6_BEHAVIOR_ENDT_WITH_PSP_USD\x10%\x12#\n" +
	"\x1fSRV6_BEHAVIOR_ENDT_WITH_USP_USD\x10&\x12'\n" +
	"#SRV6_BEHAVIOR_ENDT_WITH_PSP_USP_USD\x10'\x12\x1c\n" +
	"\x18SRV6_BEHAVIOR_ENDM_GTP6D\x10E\x12\x1d\n" +
	"\x19SRV6_BEHAVIOR_ENDM_GTP6DI\x10F\x12\x1c\n" +
	"\x18SRV6_BEHAVIOR_ENDM_GTP6E\x10G\x12\x1c\n" +
	"\x18SRV6_BEHAVIOR_ENDM_GTP4E\x10H*y\n" +
	"\bENLPType\x12\x19\n" +
	"\x15ENLP_TYPE_UNSPECIFIED\x10\x00\x12\x13\n" +
	"\x0fENLP_TYPE_TYPE1\x10\x01\x12\x13\n" +
	"\x0fENLP_TYPE_TYPE2\x10\x02\x12\x13\n" +
	"\x0fENLP_TYPE_TYPE3\x10\x03\x12\x13\n" +
	"\x0fENLP_TYPE_TYPE4\x10\x04B\"Z github.com/osrg/gobgp/v4/api;apib\x06proto3"

var (
	file_api_attribute_proto_rawDescOnce sync.Once
	file_api_attribute_proto_rawDescData []byte
)

func file_api_attribute_proto_rawDescGZIP() []byte {
	file_api_attribute_proto_rawDescOnce.Do(func() {
		file_api_attribute_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_attribute_proto_rawDesc), len(file_api_attribute_proto_rawDesc)))
	})
	return file_api_attribute_proto_rawDescData
}

var file_api_attribute_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_api_attribute_proto_msgTypes = make([]protoimpl.MessageInfo, 86)
var file_api_attribute_proto_goTypes = []any{
	(SRV6Behavior)(0),                                 // 0: api.SRV6Behavior
	(ENLPType)(0),                                     // 1: api.ENLPType
	(AsSegment_Type)(0),                               // 2: api.AsSegment.Type
	(*Attribute)(nil),                                 // 3: api.Attribute
	(*OriginAttribute)(nil),                           // 4: api.OriginAttribute
	(*AsSegment)(nil),                                 // 5: api.AsSegment
	(*AsPathAttribute)(nil),                           // 6: api.AsPathAttribute
	(*NextHopAttribute)(nil),                          // 7: api.NextHopAttribute
	(*MultiExitDiscAttribute)(nil),                    // 8: api.MultiExitDiscAttribute
	(*LocalPrefAttribute)(nil),                        // 9: api.LocalPrefAttribute
	(*AtomicAggregateAttribute)(nil),                  // 10: api.AtomicAggregateAttribute
	(*AggregatorAttribute)(nil),                       // 11: api.AggregatorAttribute
	(*CommunitiesAttribute)(nil),                      // 12: api.CommunitiesAttribute
	(*OriginatorIdAttribute)(nil),                     // 13: api.OriginatorIdAttribute
	(*ClusterListAttribute)(nil),                      // 14: api.ClusterListAttribute
	(*MpReachNLRIAttribute)(nil),                      // 15: api.MpReachNLRIAttribute
	(*MpUnreachNLRIAttribute)(nil),                    // 16: api.MpUnreachNLRIAttribute
	(*ExtendedCommunitiesAttribute)(nil),              // 17: api.ExtendedCommunitiesAttribute
	(*As4PathAttribute)(nil),                          // 18: api.As4PathAttribute
	(*As4AggregatorAttribute)(nil),                    // 19: api.As4AggregatorAttribute
	(*PmsiTunnelAttribute)(nil),                       // 20: api.PmsiTunnelAttribute
	(*TunnelEncapSubTLVEncapsulation)(nil),            // 21: api.TunnelEncapSubTLVEncapsulation
	(*TunnelEncapSubTLVProtocol)(nil),                 // 22: api.TunnelEncapSubTLVProtocol
	(*TunnelEncapSubTLVColor)(nil),                    // 23: api.TunnelEncapSubTLVColor
	(*TunnelEncapSubTLVSRPreference)(nil),             // 24: api.TunnelEncapSubTLVSRPreference
	(*TunnelEncapSubTLVSRCandidatePathName)(nil),      // 25: api.TunnelEncapSubTLVSRCandidatePathName
	(*TunnelEncapSubTLVSRPriority)(nil),               // 26: api.TunnelEncapSubTLVSRPriority
	(*TunnelEncapSubTLVSRBindingSID)(nil),             // 27: api.TunnelEncapSubTLVSRBindingSID
	(*SRBindingSID)(nil),                              // 28: api.SRBindingSID
	(*SRv6EndPointBehavior)(nil),                      // 29: api.SRv6EndPointBehavior
	(*SRv6BindingSID)(nil),                            // 30: api.SRv6BindingSID
	(*TunnelEncapSubTLVSRENLP)(nil),                   // 31: api.TunnelEncapSubTLVSRENLP
	(*SRWeight)(nil),                                  // 32: api.SRWeight
	(*SegmentFlags)(nil),                              // 33: api.SegmentFlags
	(*SegmentTypeA)(nil),                              // 34: api.SegmentTypeA
	(*SegmentTypeB)(nil),                              // 35: api.SegmentTypeB
	(*TunnelEncapSubTLVSRSegmentList)(nil),            // 36: api.TunnelEncapSubTLVSRSegmentList
	(*TunnelEncapSubTLVEgressEndpoint)(nil),           // 37: api.TunnelEncapSubTLVEgressEndpoint
	(*TunnelEncapSubTLVUDPDestPort)(nil),              // 38: api.TunnelEncapSubTLVUDPDestPort
	(*TunnelEncapSubTLVUnknown)(nil),                  // 39: api.TunnelEncapSubTLVUnknown
	(*TunnelEncapTLV)(nil),                            // 40: api.TunnelEncapTLV
	(*TunnelEncapAttribute)(nil),                      // 41: api.TunnelEncapAttribute
	(*IPv6AddressSpecificExtended)(nil),               // 42: api.IPv6AddressSpecificExtended
	(*RedirectIPv6AddressSpecificExtended)(nil),       // 43: api.RedirectIPv6AddressSpecificExtended
	(*IP6ExtendedCommunitiesAttribute)(nil),           // 44: api.IP6ExtendedCommunitiesAttribute
	(*AigpTLVIGPMetric)(nil),                          // 45: api.AigpTLVIGPMetric
	(*AigpTLVUnknown)(nil),                            // 46: api.AigpTLVUnknown
	(*AigpAttribute)(nil),                             // 47: api.AigpAttribute
	(*LargeCommunity)(nil),                            // 48: api.LargeCommunity
	(*LargeCommunitiesAttribute)(nil),                 // 49: api.LargeCommunitiesAttribute
	(*LsNodeFlags)(nil),                               // 50: api.LsNodeFlags
	(*LsIGPFlags)(nil),                                // 51: api.LsIGPFlags
	(*LsSrRange)(nil),                                 // 52: api.LsSrRange
	(*LsSrCapabilities)(nil),                          // 53: api.LsSrCapabilities
	(*LsSrLocalBlock)(nil),                            // 54: api.LsSrLocalBlock
	(*LsAttributeNode)(nil),                           // 55: api.LsAttributeNode
	(*LsAttributeFlexAlgoDef)(nil),                    // 56: api.LsAttributeFlexAlgoDef
	(*LsAttributeLink)(nil),                           // 57: api.LsAttributeLink
	(*LsAttributePrefix)(nil),                         // 58: api.LsAttributePrefix
	(*LsAttributePrefixSID)(nil),                      // 59: api.LsAttributePrefixSID
	(*LsAttributeFADPrefixMetric)(nil),                // 60: api.LsAttributeFADPrefixMetric
	(*LsBgpPeerSegmentSIDFlags)(nil),                  // 61: api.LsBgpPeerSegmentSIDFlags
	(*LsBgpPeerSegmentSID)(nil),                       // 62: api.LsBgpPeerSegmentSID
	(*LsAttributeBgpPeerSegment)(nil),                 // 63: api.LsAttributeBgpPeerSegment
	(*LsSrv6EndXSID)(nil),                             // 64: api.LsSrv6EndXSID
	(*LsSrv6SIDStructure)(nil),                        // 65: api.LsSrv6SIDStructure
	(*LsSrv6EndpointBehavior)(nil),                    // 66: api.LsSrv6EndpointBehavior
	(*LsSrv6BgpPeerNodeSID)(nil),                      // 67: api.LsSrv6BgpPeerNodeSID
	(*LsAttributeSrv6SID)(nil),                        // 68: api.LsAttributeSrv6SID
	(*LsAttribute)(nil),                               // 69: api.LsAttribute
	(*UnknownAttribute)(nil),                          // 70: api.UnknownAttribute
	(*SRv6StructureSubSubTLV)(nil),                    // 71: api.SRv6StructureSubSubTLV
	(*SRv6SubSubTLV)(nil),                             // 72: api.SRv6SubSubTLV
	(*SRv6SubSubTLVs)(nil),                            // 73: api.SRv6SubSubTLVs
	(*SRv6SIDFlags)(nil),                              // 74: api.SRv6SIDFlags
	(*SRv6InformationSubTLV)(nil),                     // 75: api.SRv6InformationSubTLV
	(*SRv6SubTLV)(nil),                                // 76: api.SRv6SubTLV
	(*SRv6SubTLVs)(nil),                               // 77: api.SRv6SubTLVs
	(*SRv6L3ServiceTLV)(nil),                          // 78: api.SRv6L3ServiceTLV
	(*SRv6L2ServiceTLV)(nil),                          // 79: api.SRv6L2ServiceTLV
	(*PrefixSID)(nil),                                 // 80: api.PrefixSID
	(*TunnelEncapSubTLVSRSegmentList_Segment)(nil),    // 81: api.TunnelEncapSubTLVSRSegmentList.Segment
	(*TunnelEncapTLV_TLV)(nil),                        // 82: api.TunnelEncapTLV.TLV
	(*IP6ExtendedCommunitiesAttribute_Community)(nil), // 83: api.IP6ExtendedCommunitiesAttribute.Community
	(*AigpAttribute_TLV)(nil),                         // 84: api.AigpAttribute.TLV
	nil,                                               // 85: api.SRv6InformationSubTLV.SubSubTlvsEntry
	nil,                                               // 86: api.SRv6L3ServiceTLV.SubTlvsEntry
	nil,                                               // 87: api.SRv6L2ServiceTLV.SubTlvsEntry
	(*PrefixSID_TLV)(nil),                             // 88: api.PrefixSID.TLV
	(*Family)(nil),                                    // 89: api.Family
	(*NLRI)(nil),                                      // 90: api.NLRI
	(*ExtendedCommunity)(nil),                         // 91: api.ExtendedCommunity
}
var file_api_attribute_proto_depIdxs = []int32{
	70,  // 0: api.Attribute.unknown:type_name -> api.UnknownAttribute
	4,   // 1: api.Attribute.origin:type_name -> api.OriginAttribute
	6,   // 2: api.Attribute.as_path:type_name -> api.AsPathAttribute
	7,   // 3: api.Attribute.next_hop:type_name -> api.NextHopAttribute
	8,   // 4: api.Attribute.multi_exit_disc:type_name -> api.MultiExitDiscAttribute
	9,   // 5: api.Attribute.local_pref:type_name -> api.LocalPrefAttribute
	10,  // 6: api.Attribute.atomic_aggregate:type_name -> api.AtomicAggregateAttribute
	11,  // 7: api.Attribute.aggregator:type_name -> api.AggregatorAttribute
	12,  // 8: api.Attribute.communities:type_name -> api.CommunitiesAttribute
	13,  // 9: api.Attribute.originator_id:type_name -> api.OriginatorIdAttribute
	14,  // 10: api.Attribute.cluster_list:type_name -> api.ClusterListAttribute
	15,  // 11: api.Attribute.mp_reach:type_name -> api.MpReachNLRIAttribute
	16,  // 12: api.Attribute.mp_unreach:type_name -> api.MpUnreachNLRIAttribute
	17,  // 13: api.Attribute.extended_communities:type_name -> api.ExtendedCommunitiesAttribute
	18,  // 14: api.Attribute.as4_path:type_name -> api.As4PathAttribute
	19,  // 15: api.Attribute.as4_aggregator:type_name -> api.As4AggregatorAttribute
	20,  // 16: api.Attribute.pmsi_tunnel:type_name -> api.PmsiTunnelAttribute
	41,  // 17: api.Attribute.tunnel_encap:type_name -> api.TunnelEncapAttribute
	44,  // 18: api.Attribute.ip6_extended_communities:type_name -> api.IP6ExtendedCommunitiesAttribute
	47,  // 19: api.Attribute.aigp:type_name -> api.AigpAttribute
	49,  // 20: api.Attribute.large_communities:type_name -> api.LargeCommunitiesAttribute
	69,  // 21: api.Attribute.ls:type_name -> api.LsAttribute
	80,  // 22: api.Attribute.prefix_sid:type_name -> api.PrefixSID
	2,   // 23: api.AsSegment.type:type_name -> api.AsSegment.Type
	5,   // 24: api.AsPathAttribute.segments:type_name -> api.AsSegment
	89,  // 25: api.MpReachNLRIAttribute.family:type_name -> api.Family
	90,  // 26: api.MpReachNLRIAttribute.nlris:type_name -> api.NLRI
	89,  // 27: api.MpUnreachNLRIAttribute.family:type_name -> api.Family
	90,  // 28: api.MpUnreachNLRIAttribute.nlris:type_name -> api.NLRI
	91,  // 29: api.ExtendedCommunitiesAttribute.communities:type_name -> api.ExtendedCommunity
	5,   // 30: api.As4PathAttribute.segments:type_name -> api.AsSegment
	28,  // 31: api.TunnelEncapSubTLVSRBindingSID.sr_binding_sid:type_name -> api.SRBindingSID
	30,  // 32: api.TunnelEncapSubTLVSRBindingSID.srv6_binding_sid:type_name -> api.SRv6BindingSID
	0,   // 33: api.SRv6EndPointBehavior.behavior:type_name -> api.SRV6Behavior
	29,  // 34: api.SRv6BindingSID.endpoint_behavior_structure:type_name -> api.SRv6EndPointBehavior
	1,   // 35: api.TunnelEncapSubTLVSRENLP.enlp:type_name -> api.ENLPType
	33,  // 36: api.SegmentTypeA.flags:type_name -> api.SegmentFlags
	33,  // 37: api.SegmentTypeB.flags:type_name -> api.SegmentFlags
	29,  // 38: api.SegmentTypeB.endpoint_behavior_structure:type_name -> api.SRv6EndPointBehavior
	32,  // 39: api.TunnelEncapSubTLVSRSegmentList.weight:type_name -> api.SRWeight
	81,  // 40: api.TunnelEncapSubTLVSRSegmentList.segments:type_name -> api.TunnelEncapSubTLVSRSegmentList.Segment
	82,  // 41: api.TunnelEncapTLV.tlvs:type_name -> api.TunnelEncapTLV.TLV
	40,  // 42: api.TunnelEncapAttribute.tlvs:type_name -> api.TunnelEncapTLV
	83,  // 43: api.IP6ExtendedCommunitiesAttribute.communities:type_name -> api.IP6ExtendedCommunitiesAttribute.Community
	84,  // 44: api.AigpAttribute.tlvs:type_name -> api.AigpAttribute.TLV
	48,  // 45: api.LargeCommunitiesAttribute.communities:type_name -> api.LargeCommunity
	52,  // 46: api.LsSrCapabilities.ranges:type_name -> api.LsSrRange
	52,  // 47: api.LsSrLocalBlock.ranges:type_name -> api.LsSrRange
	50,  // 48: api.LsAttributeNode.flags:type_name -> api.LsNodeFlags
	53,  // 49: api.LsAttributeNode.sr_capabilities:type_name -> api.LsSrCapabilities
	54,  // 50: api.LsAttributeNode.sr_local_block:type_name -> api.LsSrLocalBlock
	56,  // 51: api.LsAttributeNode.flex_algo_defs:type_name -> api.LsAttributeFlexAlgoDef
	64,  // 52: api.LsAttributeLink.srv6_end_x_sid:type_name -> api.LsSrv6EndXSID
	51,  // 53: api.LsAttributePrefix.igp_flags:type_name -> api.LsIGPFlags
	59,  // 54: api.LsAttributePrefix.sr_prefix_sids:type_name -> api.LsAttributePrefixSID
	60,  // 55: api.LsAttributePrefix.fad_prefix_metrics:type_name -> api.LsAttributeFADPrefixMetric
	61,  // 56: api.LsBgpPeerSegmentSID.flags:type_name -> api.LsBgpPeerSegmentSIDFlags
	62,  // 57: api.LsAttributeBgpPeerSegment.bgp_peer_node_sid:type_name -> api.LsBgpPeerSegmentSID
	62,  // 58: api.LsAttributeBgpPeerSegment.bgp_peer_adjacency_sid:type_name -> api.LsBgpPeerSegmentSID
	62,  // 59: api.LsAttributeBgpPeerSegment.bgp_peer_set_sid:type_name -> api.LsBgpPeerSegmentSID
	65,  // 60: api.LsSrv6EndXSID.srv6_sid_structure:type_name -> api.LsSrv6SIDStructure
	65,  // 61: api.LsAttributeSrv6SID.srv6_sid_structure:type_name -> api.LsSrv6SIDStructure
	66,  // 62: api.LsAttributeSrv6SID.srv6_endpoint_behavior:type_name -> api.LsSrv6EndpointBehavior
	67,  // 63: api.LsAttributeSrv6SID.srv6_bgp_peer_node_sid:type_name -> api.LsSrv6BgpPeerNodeSID
	55,  // 64: api.LsAttribute.node:type_name -> api.LsAttributeNode
	57,  // 65: api.LsAttribute.link:type_name -> api.LsAttributeLink
	58,  // 66: api.LsAttribute.prefix:type_name -> api.LsAttributePrefix
	63,  // 67: api.LsAttribute.bgp_peer_segment:type_name -> api.LsAttributeBgpPeerSegment
	68,  // 68: api.LsAttribute.srv6_sid:type_name -> api.LsAttributeSrv6SID
	71,  // 69: api.SRv6SubSubTLV.structure:type_name -> api.SRv6StructureSubSubTLV
	72,  // 70: api.SRv6SubSubTLVs.tlvs:type_name -> api.SRv6SubSubTLV
	74,  // 71: api.SRv6InformationSubTLV.flags:type_name -> api.SRv6SIDFlags
	85,  // 72: api.SRv6InformationSubTLV.sub_sub_tlvs:type_name -> api.SRv6InformationSubTLV.SubSubTlvsEntry
	75,  // 73: api.SRv6SubTLV.information:type_name -> api.SRv6InformationSubTLV
	76,  // 74: api.SRv6SubTLVs.tlvs:type_name -> api.SRv6SubTLV
	86,  // 75: api.SRv6L3ServiceTLV.sub_tlvs:type_name -> api.SRv6L3ServiceTLV.SubTlvsEntry
	87,  // 76: api.SRv6L2ServiceTLV.sub_tlvs:type_name -> api.SRv6L2ServiceTLV.SubTlvsEntry
	88,  // 77: api.PrefixSID.tlvs:type_name -> api.PrefixSID.TLV
	34,  // 78: api.TunnelEncapSubTLVSRSegmentList.Segment.a:type_name -> api.SegmentTypeA
	35,  // 79: api.TunnelEncapSubTLVSRSegmentList.Segment.b:type_name -> api.SegmentTypeB
	39,  // 80: api.TunnelEncapTLV.TLV.unknown:type_name -> api.TunnelEncapSubTLVUnknown
	21,  // 81: api.TunnelEncapTLV.TLV.encapsulation:type_name -> api.TunnelEncapSubTLVEncapsulation
	22,  // 82: api.TunnelEncapTLV.TLV.protocol:type_name -> api.TunnelEncapSubTLVProtocol
	23,  // 83: api.TunnelEncapTLV.TLV.color:type_name -> api.TunnelEncapSubTLVColor
	37,  // 84: api.TunnelEncapTLV.TLV.egress_endpoint:type_name -> api.TunnelEncapSubTLVEgressEndpoint
	38,  // 85: api.TunnelEncapTLV.TLV.udp_dest_port:type_name -> api.TunnelEncapSubTLVUDPDestPort
	24,  // 86: api.TunnelEncapTLV.TLV.sr_preference:type_name -> api.TunnelEncapSubTLVSRPreference
	26,  // 87: api.TunnelEncapTLV.TLV.sr_priority:type_name -> api.TunnelEncapSubTLVSRPriority
	25,  // 88: api.TunnelEncapTLV.TLV.sr_candidate_path_name:type_name -> api.TunnelEncapSubTLVSRCandidatePathName
	31,  // 89: api.TunnelEncapTLV.TLV.sr_enlp:type_name -> api.TunnelEncapSubTLVSRENLP
	27,  // 90: api.TunnelEncapTLV.TLV.sr_binding_sid:type_name -> api.TunnelEncapSubTLVSRBindingSID
	36,  // 91: api.TunnelEncapTLV.TLV.sr_segment_list:type_name -> api.TunnelEncapSubTLVSRSegmentList
	42,  // 92: api.IP6ExtendedCommunitiesAttribute.Community.ipv6_address_specific:type_name -> api.IPv6AddressSpecificExtended
	43,  // 93: api.IP6ExtendedCommunitiesAttribute.Community.redirect_ipv6_address_specific:type_name -> api.RedirectIPv6AddressSpecificExtended
	46,  // 94: api.AigpAttribute.TLV.unknown:type_name -> api.AigpTLVUnknown
	45,  // 95: api.AigpAttribute.TLV.igp_metric:type_name -> api.AigpTLVIGPMetric
	73,  // 96: api.SRv6InformationSubTLV.SubSubTlvsEntry.value:type_name -> api.SRv6SubSubTLVs
	77,  // 97: api.SRv6L3ServiceTLV.SubTlvsEntry.value:type_name -> api.SRv6SubTLVs
	77,  // 98: api.SRv6L2ServiceTLV.SubTlvsEntry.value:type_name -> api.SRv6SubTLVs
	78,  // 99: api.PrefixSID.TLV.l3_service:type_name -> api.SRv6L3ServiceTLV
	79,  // 100: api.PrefixSID.TLV.l2_service:type_name -> api.SRv6L2ServiceTLV
	101, // [101:101] is the sub-list for method output_type
	101, // [101:101] is the sub-list for method input_type
	101, // [101:101] is the sub-list for extension type_name
	101, // [101:101] is the sub-list for extension extendee
	0,   // [0:101] is the sub-list for field type_name
}

func init() { file_api_attribute_proto_init() }
func file_api_attribute_proto_init() {
	if File_api_attribute_proto != nil {
		return
	}
	file_api_common_proto_init()
	file_api_extcom_proto_init()
	file_api_nlri_proto_init()
	file_api_attribute_proto_msgTypes[0].OneofWrappers = []any{
		(*Attribute_Unknown)(nil),
		(*Attribute_Origin)(nil),
		(*Attribute_AsPath)(nil),
		(*Attribute_NextHop)(nil),
		(*Attribute_MultiExitDisc)(nil),
		(*Attribute_LocalPref)(nil),
		(*Attribute_AtomicAggregate)(nil),
		(*Attribute_Aggregator)(nil),
		(*Attribute_Communities)(nil),
		(*Attribute_OriginatorId)(nil),
		(*Attribute_ClusterList)(nil),
		(*Attribute_MpReach)(nil),
		(*Attribute_MpUnreach)(nil),
		(*Attribute_ExtendedCommunities)(nil),
		(*Attribute_As4Path)(nil),
		(*Attribute_As4Aggregator)(nil),
		(*Attribute_PmsiTunnel)(nil),
		(*Attribute_TunnelEncap)(nil),
		(*Attribute_Ip6ExtendedCommunities)(nil),
		(*Attribute_Aigp)(nil),
		(*Attribute_LargeCommunities)(nil),
		(*Attribute_Ls)(nil),
		(*Attribute_PrefixSid)(nil),
	}
	file_api_attribute_proto_msgTypes[24].OneofWrappers = []any{
		(*TunnelEncapSubTLVSRBindingSID_SrBindingSid)(nil),
		(*TunnelEncapSubTLVSRBindingSID_Srv6BindingSid)(nil),
	}
	file_api_attribute_proto_msgTypes[69].OneofWrappers = []any{
		(*SRv6SubSubTLV_Structure)(nil),
	}
	file_api_attribute_proto_msgTypes[73].OneofWrappers = []any{
		(*SRv6SubTLV_Information)(nil),
	}
	file_api_attribute_proto_msgTypes[78].OneofWrappers = []any{
		(*TunnelEncapSubTLVSRSegmentList_Segment_A)(nil),
		(*TunnelEncapSubTLVSRSegmentList_Segment_B)(nil),
	}
	file_api_attribute_proto_msgTypes[79].OneofWrappers = []any{
		(*TunnelEncapTLV_TLV_Unknown)(nil),
		(*TunnelEncapTLV_TLV_Encapsulation)(nil),
		(*TunnelEncapTLV_TLV_Protocol)(nil),
		(*TunnelEncapTLV_TLV_Color)(nil),
		(*TunnelEncapTLV_TLV_EgressEndpoint)(nil),
		(*TunnelEncapTLV_TLV_UdpDestPort)(nil),
		(*TunnelEncapTLV_TLV_SrPreference)(nil),
		(*TunnelEncapTLV_TLV_SrPriority)(nil),
		(*TunnelEncapTLV_TLV_SrCandidatePathName)(nil),
		(*TunnelEncapTLV_TLV_SrEnlp)(nil),
		(*TunnelEncapTLV_TLV_SrBindingSid)(nil),
		(*TunnelEncapTLV_TLV_SrSegmentList)(nil),
	}
	file_api_attribute_proto_msgTypes[80].OneofWrappers = []any{
		(*IP6ExtendedCommunitiesAttribute_Community_Ipv6AddressSpecific)(nil),
		(*IP6ExtendedCommunitiesAttribute_Community_RedirectIpv6AddressSpecific)(nil),
	}
	file_api_attribute_proto_msgTypes[81].OneofWrappers = []any{
		(*AigpAttribute_TLV_Unknown)(nil),
		(*AigpAttribute_TLV_IgpMetric)(nil),
	}
	file_api_attribute_proto_msgTypes[85].OneofWrappers = []any{
		(*PrefixSID_TLV_L3Service)(nil),
		(*PrefixSID_TLV_L2Service)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_attribute_proto_rawDesc), len(file_api_attribute_proto_rawDesc)),
			NumEnums:      3,
			NumMessages:   86,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_api_attribute_proto_goTypes,
		DependencyIndexes: file_api_attribute_proto_depIdxs,
		EnumInfos:         file_api_attribute_proto_enumTypes,
		MessageInfos:      file_api_attribute_proto_msgTypes,
	}.Build()
	File_api_attribute_proto = out.File
	file_api_attribute_proto_goTypes = nil
	file_api_attribute_proto_depIdxs = nil
}
