table

package
v0.0.0-...-7dcbffe Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 7, 2017 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	INCLUDE singleAsPathMatchMode = iota
	LEFT_MOST
	ORIGIN
	ONLY
)
View Source
const (
	ADD opType = iota
	REMOVE
	REPLACE
)
View Source
const (
	ASPATH_REGEXP_MAGIC = "(^|[,{}() ]|$)"
)
View Source
const (
	DEFAULT_LOCAL_PREF = 100
)
View Source
const (
	GLOBAL_RIB_NAME = "global"
)

Variables

Functions

func AddrToRadixkey

func AddrToRadixkey(addr bgp.AddrPrefixInterface) string

func CanImportToVrf

func CanImportToVrf(v *Vrf, path *Path) bool

func CidrToRadixkey

func CidrToRadixkey(cidr string) string

func CreateUpdateMsgFromPaths

func CreateUpdateMsgFromPaths(pathList []*Path) []*bgp.BGPMessage

func IpToRadixkey

func IpToRadixkey(b []byte, max uint8) string

func NewSingleAsPathMatch

func NewSingleAsPathMatch(arg string) *singleAsPathMatch

func ParseCommunity

func ParseCommunity(arg string) (uint32, error)

func ParseCommunityRegexp

func ParseCommunityRegexp(arg string) (*regexp.Regexp, error)

func ParseExtCommunity

func ParseExtCommunity(arg string) (bgp.ExtendedCommunityInterface, error)

func ParseExtCommunityRegexp

func ParseExtCommunityRegexp(arg string) (bgp.ExtendedCommunityAttrSubType, *regexp.Regexp, error)

func ParseLargeCommunityRegexp

func ParseLargeCommunityRegexp(arg string) (*regexp.Regexp, error)

func RegexpRemoveCommunities

func RegexpRemoveCommunities(path *Path, exps []*regexp.Regexp)

func RegexpRemoveExtCommunities

func RegexpRemoveExtCommunities(path *Path, exps []*regexp.Regexp, subtypes []bgp.ExtendedCommunityAttrSubType)

func RegexpRemoveLargeCommunities

func RegexpRemoveLargeCommunities(path *Path, exps []*regexp.Regexp)

func UpdatePathAggregator2ByteAs

func UpdatePathAggregator2ByteAs(msg *bgp.BGPUpdate)

func UpdatePathAggregator4ByteAs

func UpdatePathAggregator4ByteAs(msg *bgp.BGPUpdate) error

func UpdatePathAttrs2ByteAs

func UpdatePathAttrs2ByteAs(msg *bgp.BGPUpdate) error

func UpdatePathAttrs4ByteAs

func UpdatePathAttrs4ByteAs(msg *bgp.BGPUpdate) error

Types

type Action

type Action interface {
	Type() ActionType
	Apply(*Path, *PolicyOptions) *Path
	String() string
}

type ActionType

type ActionType int
const (
	ACTION_ROUTING ActionType = iota
	ACTION_COMMUNITY
	ACTION_EXT_COMMUNITY
	ACTION_MED
	ACTION_AS_PATH_PREPEND
	ACTION_NEXTHOP
	ACTION_LOCAL_PREF
	ACTION_LARGE_COMMUNITY
)

type AdjRib

type AdjRib struct {
	// contains filtered or unexported fields
}

func NewAdjRib

func NewAdjRib(id string, rfList []bgp.RouteFamily) *AdjRib

func (*AdjRib) Accepted

func (adj *AdjRib) Accepted(rfList []bgp.RouteFamily) int

func (*AdjRib) Count

func (adj *AdjRib) Count(rfList []bgp.RouteFamily) int

func (*AdjRib) Drop

func (adj *AdjRib) Drop(rfList []bgp.RouteFamily)

func (*AdjRib) DropStale

func (adj *AdjRib) DropStale(rfList []bgp.RouteFamily) []*Path

func (*AdjRib) Exists

func (adj *AdjRib) Exists(path *Path) bool

func (*AdjRib) PathList

func (adj *AdjRib) PathList(rfList []bgp.RouteFamily, accepted bool) []*Path

func (*AdjRib) RefreshAcceptedNumber

func (adj *AdjRib) RefreshAcceptedNumber(rfList []bgp.RouteFamily)

func (*AdjRib) Select

func (adj *AdjRib) Select(family bgp.RouteFamily, accepted bool, option ...TableSelectOption) (*Table, error)

func (*AdjRib) StaleAll

func (adj *AdjRib) StaleAll(rfList []bgp.RouteFamily)

func (*AdjRib) TableInfo

func (adj *AdjRib) TableInfo(family bgp.RouteFamily) (*TableInfo, error)

func (*AdjRib) Update

func (adj *AdjRib) Update(pathList []*Path)

type AsPathCondition

type AsPathCondition struct {
	// contains filtered or unexported fields
}

func NewAsPathCondition

func NewAsPathCondition(c config.MatchAsPathSet) (*AsPathCondition, error)

func (*AsPathCondition) Evaluate

func (c *AsPathCondition) Evaluate(path *Path, _ *PolicyOptions) bool

func (*AsPathCondition) Name

func (c *AsPathCondition) Name() string

func (*AsPathCondition) Option

func (c *AsPathCondition) Option() MatchOption

func (*AsPathCondition) Set

func (c *AsPathCondition) Set() DefinedSet

func (*AsPathCondition) Type

func (c *AsPathCondition) Type() ConditionType

type AsPathLengthCondition

type AsPathLengthCondition struct {
	// contains filtered or unexported fields
}

func NewAsPathLengthCondition

func NewAsPathLengthCondition(c config.AsPathLength) (*AsPathLengthCondition, error)

func (*AsPathLengthCondition) Evaluate

func (c *AsPathLengthCondition) Evaluate(path *Path, _ *PolicyOptions) bool

compare AS_PATH length in the message's AS_PATH attribute with the one in condition.

func (*AsPathLengthCondition) Name

func (c *AsPathLengthCondition) Name() string

func (*AsPathLengthCondition) Set

func (*AsPathLengthCondition) String

func (c *AsPathLengthCondition) String() string

func (*AsPathLengthCondition) Type

type AsPathPrependAction

type AsPathPrependAction struct {
	// contains filtered or unexported fields
}

func NewAsPathPrependAction

func NewAsPathPrependAction(action config.SetAsPathPrepend) (*AsPathPrependAction, error)

NewAsPathPrependAction creates AsPathPrependAction object. If ASN cannot be parsed, nil will be returned.

func (*AsPathPrependAction) Apply

func (a *AsPathPrependAction) Apply(path *Path, _ *PolicyOptions) *Path

func (*AsPathPrependAction) MarshalJSON

func (a *AsPathPrependAction) MarshalJSON() ([]byte, error)

func (*AsPathPrependAction) String

func (a *AsPathPrependAction) String() string

func (*AsPathPrependAction) ToConfig

func (*AsPathPrependAction) Type

func (a *AsPathPrependAction) Type() ActionType

type AsPathSet

type AsPathSet struct {
	// contains filtered or unexported fields
}

func NewAsPathSet

func NewAsPathSet(c config.AsPathSet) (*AsPathSet, error)

func (*AsPathSet) Append

func (lhs *AsPathSet) Append(arg DefinedSet) error

func (*AsPathSet) List

func (s *AsPathSet) List() []string

func (*AsPathSet) MarshalJSON

func (s *AsPathSet) MarshalJSON() ([]byte, error)

func (*AsPathSet) Name

func (s *AsPathSet) Name() string

func (*AsPathSet) Remove

func (lhs *AsPathSet) Remove(arg DefinedSet) error

func (*AsPathSet) Replace

func (lhs *AsPathSet) Replace(arg DefinedSet) error

func (*AsPathSet) String

func (s *AsPathSet) String() string

func (*AsPathSet) ToConfig

func (s *AsPathSet) ToConfig() *config.AsPathSet

func (*AsPathSet) Type

func (s *AsPathSet) Type() DefinedType

type Assignment

type Assignment struct {
	// contains filtered or unexported fields
}

type AttributeComparison

type AttributeComparison int
const (
	// "== comparison"
	ATTRIBUTE_EQ AttributeComparison = iota
	// ">= comparison"
	ATTRIBUTE_GE
	// "<= comparison"
	ATTRIBUTE_LE
)

func (AttributeComparison) String

func (c AttributeComparison) String() string

type BestPathReason

type BestPathReason string
const (
	BPR_UNKNOWN            BestPathReason = "Unknown"
	BPR_ONLY_PATH          BestPathReason = "Only Path"
	BPR_REACHABLE_NEXT_HOP BestPathReason = "Reachable Next Hop"
	BPR_HIGHEST_WEIGHT     BestPathReason = "Highest Weight"
	BPR_LOCAL_PREF         BestPathReason = "Local Pref"
	BPR_LOCAL_ORIGIN       BestPathReason = "Local Origin"
	BPR_ASPATH             BestPathReason = "AS Path"
	BPR_ORIGIN             BestPathReason = "Origin"
	BPR_MED                BestPathReason = "MED"
	BPR_ASN                BestPathReason = "ASN"
	BPR_IGP_COST           BestPathReason = "IGP Cost"
	BPR_ROUTER_ID          BestPathReason = "Router ID"
	BPR_OLDER              BestPathReason = "Older"
	BPR_NON_LLGR_STALE     BestPathReason = "no LLGR Stale"
)

type Bitmap

type Bitmap struct {
	// contains filtered or unexported fields
}

func NewBitmap

func NewBitmap(size int) *Bitmap

func (*Bitmap) Expand

func (b *Bitmap) Expand()

func (*Bitmap) FindandSetZeroBit

func (b *Bitmap) FindandSetZeroBit() (uint, error)

func (*Bitmap) Flag

func (b *Bitmap) Flag(i uint)

func (*Bitmap) GetFlag

func (b *Bitmap) GetFlag(i uint) bool

func (*Bitmap) Unflag

func (b *Bitmap) Unflag(i uint)

type CommunityAction

type CommunityAction struct {
	// contains filtered or unexported fields
}

func NewCommunityAction

func NewCommunityAction(c config.SetCommunity) (*CommunityAction, error)

func (*CommunityAction) Apply

func (a *CommunityAction) Apply(path *Path, _ *PolicyOptions) *Path

func (*CommunityAction) MarshalJSON

func (a *CommunityAction) MarshalJSON() ([]byte, error)

func (*CommunityAction) String

func (a *CommunityAction) String() string

func (*CommunityAction) ToConfig

func (a *CommunityAction) ToConfig() *config.SetCommunity

func (*CommunityAction) Type

func (a *CommunityAction) Type() ActionType

type CommunityCondition

type CommunityCondition struct {
	// contains filtered or unexported fields
}

func NewCommunityCondition

func NewCommunityCondition(c config.MatchCommunitySet) (*CommunityCondition, error)

func (*CommunityCondition) Evaluate

func (c *CommunityCondition) Evaluate(path *Path, _ *PolicyOptions) bool

func (*CommunityCondition) Name

func (c *CommunityCondition) Name() string

func (*CommunityCondition) Option

func (c *CommunityCondition) Option() MatchOption

func (*CommunityCondition) Set

func (c *CommunityCondition) Set() DefinedSet

func (*CommunityCondition) Type

type CommunitySet

type CommunitySet struct {
	// contains filtered or unexported fields
}

func NewCommunitySet

func NewCommunitySet(c config.CommunitySet) (*CommunitySet, error)

func (*CommunitySet) Append

func (lhs *CommunitySet) Append(arg DefinedSet) error

func (*CommunitySet) List

func (s *CommunitySet) List() []string

func (*CommunitySet) MarshalJSON

func (s *CommunitySet) MarshalJSON() ([]byte, error)

func (*CommunitySet) Name

func (s *CommunitySet) Name() string

func (*CommunitySet) Remove

func (lhs *CommunitySet) Remove(arg DefinedSet) error

func (*CommunitySet) Replace

func (lhs *CommunitySet) Replace(arg DefinedSet) error

func (*CommunitySet) String

func (s *CommunitySet) String() string

func (*CommunitySet) ToConfig

func (s *CommunitySet) ToConfig() *config.CommunitySet

func (*CommunitySet) Type

func (s *CommunitySet) Type() DefinedType

type Condition

type Condition interface {
	Name() string
	Type() ConditionType
	Evaluate(*Path, *PolicyOptions) bool
	Set() DefinedSet
}

type ConditionType

type ConditionType int
const (
	CONDITION_PREFIX ConditionType = iota
	CONDITION_NEIGHBOR
	CONDITION_AS_PATH
	CONDITION_COMMUNITY
	CONDITION_EXT_COMMUNITY
	CONDITION_AS_PATH_LENGTH
	CONDITION_RPKI
	CONDITION_ROUTE_TYPE
	CONDITION_LARGE_COMMUNITY
)

type DefinedSet

type DefinedSet interface {
	Type() DefinedType
	Name() string
	Append(DefinedSet) error
	Remove(DefinedSet) error
	Replace(DefinedSet) error
	String() string
	List() []string
}

type DefinedSetList

type DefinedSetList []DefinedSet

func (DefinedSetList) Len

func (l DefinedSetList) Len() int

func (DefinedSetList) Less

func (l DefinedSetList) Less(i, j int) bool

func (DefinedSetList) Swap

func (l DefinedSetList) Swap(i, j int)

type DefinedSetMap

type DefinedSetMap map[DefinedType]map[string]DefinedSet

type DefinedType

type DefinedType int
const (
	DEFINED_TYPE_PREFIX DefinedType = iota
	DEFINED_TYPE_NEIGHBOR
	DEFINED_TYPE_TAG
	DEFINED_TYPE_AS_PATH
	DEFINED_TYPE_COMMUNITY
	DEFINED_TYPE_EXT_COMMUNITY
	DEFINED_TYPE_LARGE_COMMUNITY
)

type Destination

type Destination struct {
	RadixKey string
	// contains filtered or unexported fields
}

func NewDestination

func NewDestination(nlri bgp.AddrPrefixInterface, mapSize int, known ...*Path) *Destination

func (*Destination) AddNewPath

func (dd *Destination) AddNewPath(newPath *Path)

func (*Destination) AddWithdraw

func (dd *Destination) AddWithdraw(withdraw *Path)

func (*Destination) Calculate

func (dest *Destination) Calculate() *Destination

Calculates best-path among known paths for this destination.

Modifies destination's state related to stored paths. Removes withdrawn paths from known paths. Also, adds new paths to known paths.

func (*Destination) Family

func (dd *Destination) Family() bgp.RouteFamily

func (*Destination) GetAddPathChanges

func (dd *Destination) GetAddPathChanges(id string) []*Path

func (*Destination) GetAllKnownPathList

func (dd *Destination) GetAllKnownPathList() []*Path

func (*Destination) GetBestPath

func (dd *Destination) GetBestPath(id string) *Path

func (*Destination) GetChanges

func (dd *Destination) GetChanges(id string, peerDown bool) (*Path, *Path, []*Path)

func (*Destination) GetKnownPathList

func (dd *Destination) GetKnownPathList(id string) []*Path

func (*Destination) GetMultiBestPath

func (dd *Destination) GetMultiBestPath(id string) []*Path

func (*Destination) GetNlri

func (dd *Destination) GetNlri() bgp.AddrPrefixInterface

func (*Destination) MarshalJSON

func (d *Destination) MarshalJSON() ([]byte, error)

func (*Destination) Select

func (old *Destination) Select(option ...DestinationSelectOption) *Destination

func (*Destination) String

func (dest *Destination) String() string

type DestinationSelectOption

type DestinationSelectOption struct {
	ID  string
	VRF *Vrf

	Best      bool
	MultiPath bool
	// contains filtered or unexported fields
}

type ExtCommunityAction

type ExtCommunityAction struct {
	// contains filtered or unexported fields
}

func NewExtCommunityAction

func NewExtCommunityAction(c config.SetExtCommunity) (*ExtCommunityAction, error)

func (*ExtCommunityAction) Apply

func (a *ExtCommunityAction) Apply(path *Path, _ *PolicyOptions) *Path

func (*ExtCommunityAction) MarshalJSON

func (a *ExtCommunityAction) MarshalJSON() ([]byte, error)

func (*ExtCommunityAction) String

func (a *ExtCommunityAction) String() string

func (*ExtCommunityAction) ToConfig

func (a *ExtCommunityAction) ToConfig() *config.SetExtCommunity

func (*ExtCommunityAction) Type

func (a *ExtCommunityAction) Type() ActionType

type ExtCommunityCondition

type ExtCommunityCondition struct {
	// contains filtered or unexported fields
}

func (*ExtCommunityCondition) Evaluate

func (c *ExtCommunityCondition) Evaluate(path *Path, _ *PolicyOptions) bool

func (*ExtCommunityCondition) Name

func (c *ExtCommunityCondition) Name() string

func (*ExtCommunityCondition) Option

func (c *ExtCommunityCondition) Option() MatchOption

func (*ExtCommunityCondition) Set

func (*ExtCommunityCondition) Type

type ExtCommunitySet

type ExtCommunitySet struct {
	// contains filtered or unexported fields
}

func NewExtCommunitySet

func NewExtCommunitySet(c config.ExtCommunitySet) (*ExtCommunitySet, error)

func (*ExtCommunitySet) Append

func (s *ExtCommunitySet) Append(arg DefinedSet) error

func (*ExtCommunitySet) List

func (s *ExtCommunitySet) List() []string

func (*ExtCommunitySet) MarshalJSON

func (s *ExtCommunitySet) MarshalJSON() ([]byte, error)

func (*ExtCommunitySet) Name

func (s *ExtCommunitySet) Name() string

func (*ExtCommunitySet) Remove

func (lhs *ExtCommunitySet) Remove(arg DefinedSet) error

func (*ExtCommunitySet) Replace

func (lhs *ExtCommunitySet) Replace(arg DefinedSet) error

func (*ExtCommunitySet) String

func (s *ExtCommunitySet) String() string

func (*ExtCommunitySet) ToConfig

func (s *ExtCommunitySet) ToConfig() *config.ExtCommunitySet

func (*ExtCommunitySet) Type

func (s *ExtCommunitySet) Type() DefinedType

type FlowSpecComponents

type FlowSpecComponents []bgp.FlowSpecComponentInterface

func (FlowSpecComponents) Len

func (c FlowSpecComponents) Len() int

func (FlowSpecComponents) Less

func (c FlowSpecComponents) Less(i, j int) bool

func (FlowSpecComponents) Swap

func (c FlowSpecComponents) Swap(i, j int)

type IPPrefix

type IPPrefix struct {
	Prefix net.IP
	Length uint8
}

func (*IPPrefix) String

func (p *IPPrefix) String() string

type LargeCommunityAction

type LargeCommunityAction struct {
	// contains filtered or unexported fields
}

func (*LargeCommunityAction) Apply

func (a *LargeCommunityAction) Apply(path *Path, _ *PolicyOptions) *Path

func (*LargeCommunityAction) MarshalJSON

func (a *LargeCommunityAction) MarshalJSON() ([]byte, error)

func (*LargeCommunityAction) String

func (a *LargeCommunityAction) String() string

func (*LargeCommunityAction) ToConfig

func (*LargeCommunityAction) Type

func (a *LargeCommunityAction) Type() ActionType

type LargeCommunityCondition

type LargeCommunityCondition struct {
	// contains filtered or unexported fields
}

func (*LargeCommunityCondition) Evaluate

func (c *LargeCommunityCondition) Evaluate(path *Path, _ *PolicyOptions) bool

func (*LargeCommunityCondition) Name

func (c *LargeCommunityCondition) Name() string

func (*LargeCommunityCondition) Option

func (*LargeCommunityCondition) Set

func (*LargeCommunityCondition) Type

type LargeCommunitySet

type LargeCommunitySet struct {
	// contains filtered or unexported fields
}

func NewLargeCommunitySet

func NewLargeCommunitySet(c config.LargeCommunitySet) (*LargeCommunitySet, error)

func (*LargeCommunitySet) Append

func (lhs *LargeCommunitySet) Append(arg DefinedSet) error

func (*LargeCommunitySet) List

func (s *LargeCommunitySet) List() []string

func (*LargeCommunitySet) MarshalJSON

func (s *LargeCommunitySet) MarshalJSON() ([]byte, error)

func (*LargeCommunitySet) Name

func (s *LargeCommunitySet) Name() string

func (*LargeCommunitySet) Remove

func (lhs *LargeCommunitySet) Remove(arg DefinedSet) error

func (*LargeCommunitySet) Replace

func (lhs *LargeCommunitySet) Replace(arg DefinedSet) error

func (*LargeCommunitySet) String

func (s *LargeCommunitySet) String() string

func (*LargeCommunitySet) ToConfig

func (*LargeCommunitySet) Type

func (s *LargeCommunitySet) Type() DefinedType

type LocalPrefAction

type LocalPrefAction struct {
	// contains filtered or unexported fields
}

func NewLocalPrefAction

func NewLocalPrefAction(value uint32) (*LocalPrefAction, error)

func (*LocalPrefAction) Apply

func (a *LocalPrefAction) Apply(path *Path, _ *PolicyOptions) *Path

func (*LocalPrefAction) MarshalJSON

func (a *LocalPrefAction) MarshalJSON() ([]byte, error)

func (*LocalPrefAction) String

func (a *LocalPrefAction) String() string

func (*LocalPrefAction) ToConfig

func (a *LocalPrefAction) ToConfig() uint32

func (*LocalPrefAction) Type

func (a *LocalPrefAction) Type() ActionType

type LookupOption

type LookupOption uint8
const (
	LOOKUP_EXACT LookupOption = iota
	LOOKUP_LONGER
	LOOKUP_SHORTER
)

type LookupPrefix

type LookupPrefix struct {
	Prefix string
	LookupOption
}

type MatchOption

type MatchOption int
const (
	MATCH_OPTION_ANY MatchOption = iota
	MATCH_OPTION_ALL
	MATCH_OPTION_INVERT
)

func NewMatchOption

func NewMatchOption(c interface{}) (MatchOption, error)

func (MatchOption) ConvertToMatchSetOptionsRestrictedType

func (o MatchOption) ConvertToMatchSetOptionsRestrictedType() config.MatchSetOptionsRestrictedType

func (MatchOption) String

func (o MatchOption) String() string

type MedAction

type MedAction struct {
	// contains filtered or unexported fields
}

func NewMedAction

func NewMedAction(c config.BgpSetMedType) (*MedAction, error)

func NewMedActionFromApiStruct

func NewMedActionFromApiStruct(action MedActionType, value int64) *MedAction

func (*MedAction) Apply

func (a *MedAction) Apply(path *Path, _ *PolicyOptions) *Path

func (*MedAction) MarshalJSON

func (a *MedAction) MarshalJSON() ([]byte, error)

func (*MedAction) String

func (a *MedAction) String() string

func (*MedAction) ToConfig

func (a *MedAction) ToConfig() config.BgpSetMedType

func (*MedAction) Type

func (a *MedAction) Type() ActionType

type MedActionType

type MedActionType int
const (
	MED_ACTION_MOD MedActionType = iota
	MED_ACTION_REPLACE
)

type NeighborCondition

type NeighborCondition struct {
	// contains filtered or unexported fields
}

func NewNeighborCondition

func NewNeighborCondition(c config.MatchNeighborSet) (*NeighborCondition, error)

func (*NeighborCondition) Evaluate

func (c *NeighborCondition) Evaluate(path *Path, options *PolicyOptions) bool

compare neighbor ipaddress of this condition and source address of path and, subsequent comparisons are skipped if that matches the conditions. If NeighborList's length is zero, return true.

func (*NeighborCondition) Name

func (c *NeighborCondition) Name() string

func (*NeighborCondition) Option

func (c *NeighborCondition) Option() MatchOption

func (*NeighborCondition) Set

func (c *NeighborCondition) Set() DefinedSet

func (*NeighborCondition) Type

func (c *NeighborCondition) Type() ConditionType

type NeighborSet

type NeighborSet struct {
	// contains filtered or unexported fields
}

func NewNeighborSet

func NewNeighborSet(c config.NeighborSet) (*NeighborSet, error)

func NewNeighborSetFromApiStruct

func NewNeighborSetFromApiStruct(name string, list []net.IP) (*NeighborSet, error)

func (*NeighborSet) Append

func (lhs *NeighborSet) Append(arg DefinedSet) error

func (*NeighborSet) List

func (s *NeighborSet) List() []string

func (*NeighborSet) MarshalJSON

func (s *NeighborSet) MarshalJSON() ([]byte, error)

func (*NeighborSet) Name

func (s *NeighborSet) Name() string

func (*NeighborSet) Remove

func (lhs *NeighborSet) Remove(arg DefinedSet) error

func (*NeighborSet) Replace

func (lhs *NeighborSet) Replace(arg DefinedSet) error

func (*NeighborSet) String

func (s *NeighborSet) String() string

func (*NeighborSet) ToConfig

func (s *NeighborSet) ToConfig() *config.NeighborSet

func (*NeighborSet) Type

func (s *NeighborSet) Type() DefinedType

type NexthopAction

type NexthopAction struct {
	// contains filtered or unexported fields
}

func NewNexthopAction

func NewNexthopAction(c config.BgpNextHopType) (*NexthopAction, error)

func (*NexthopAction) Apply

func (a *NexthopAction) Apply(path *Path, options *PolicyOptions) *Path

func (*NexthopAction) MarshalJSON

func (a *NexthopAction) MarshalJSON() ([]byte, error)

func (*NexthopAction) String

func (a *NexthopAction) String() string

func (*NexthopAction) ToConfig

func (a *NexthopAction) ToConfig() config.BgpNextHopType

func (*NexthopAction) Type

func (a *NexthopAction) Type() ActionType

type Path

type Path struct {
	IsWithdraw bool

	VrfIds []uint16
	// For BGP Nexthop Tracking, this field shows if nexthop is invalidated by IGP.
	IsNexthopInvalid bool
	// contains filtered or unexported fields
}

func NewEOR

func NewEOR(family bgp.RouteFamily) *Path

func NewPath

func NewPath(source *PeerInfo, nlri bgp.AddrPrefixInterface, isWithdraw bool, pattrs []bgp.PathAttributeInterface, timestamp time.Time, noImplicitWithdraw bool) *Path

func ProcessMessage

func ProcessMessage(m *bgp.BGPMessage, peerInfo *PeerInfo, timestamp time.Time) []*Path

func UpdatePathAttrs

func UpdatePathAttrs(global *config.Global, peer *config.Neighbor, info *PeerInfo, original *Path) *Path

func (*Path) AssignNewUUID

func (path *Path) AssignNewUUID()

func (*Path) Clone

func (path *Path) Clone(isWithdraw bool) *Path

create new PathAttributes

func (*Path) Compare

func (lhs *Path) Compare(rhs *Path) int

func (*Path) Equal

func (lhs *Path) Equal(rhs *Path) bool

func (*Path) Filter

func (path *Path) Filter(id string, reason PolicyDirection)

func (*Path) Filtered

func (path *Path) Filtered(id string) PolicyDirection

func (*Path) GetAsList

func (path *Path) GetAsList() []uint32

func (*Path) GetAsPath

func (path *Path) GetAsPath() *bgp.PathAttributeAsPath

func (*Path) GetAsPathLen

func (path *Path) GetAsPathLen() int

GetAsPathLen returns the number of AS_PATH

func (*Path) GetAsSeqList

func (path *Path) GetAsSeqList() []uint32

func (*Path) GetAsString

func (path *Path) GetAsString() string

func (*Path) GetClusterList

func (path *Path) GetClusterList() []net.IP

func (*Path) GetCommunities

func (path *Path) GetCommunities() []uint32

func (*Path) GetExtCommunities

func (path *Path) GetExtCommunities() []bgp.ExtendedCommunityInterface

func (*Path) GetLargeCommunities

func (path *Path) GetLargeCommunities() []*bgp.LargeCommunity

func (*Path) GetLocalPref

func (path *Path) GetLocalPref() (uint32, error)

func (*Path) GetMed

func (path *Path) GetMed() (uint32, error)

func (*Path) GetNexthop

func (path *Path) GetNexthop() net.IP

func (*Path) GetNlri

func (path *Path) GetNlri() bgp.AddrPrefixInterface

func (*Path) GetOrigin

func (path *Path) GetOrigin() (uint8, error)

func (*Path) GetOriginatorID

func (path *Path) GetOriginatorID() net.IP

func (*Path) GetPathAttrs

func (path *Path) GetPathAttrs() []bgp.PathAttributeInterface

func (*Path) GetRouteFamily

func (path *Path) GetRouteFamily() bgp.RouteFamily

func (*Path) GetSource

func (path *Path) GetSource() *PeerInfo

func (*Path) GetSourceAs

func (path *Path) GetSourceAs() uint32

func (*Path) GetTimestamp

func (path *Path) GetTimestamp() time.Time

func (*Path) IsEOR

func (path *Path) IsEOR() bool

func (*Path) IsFromExternal

func (path *Path) IsFromExternal() bool

func (*Path) IsIBGP

func (path *Path) IsIBGP() bool

func (*Path) IsLLGRStale

func (path *Path) IsLLGRStale() bool

func (*Path) IsLocal

func (path *Path) IsLocal() bool

func (*Path) IsStale

func (path *Path) IsStale() bool

func (*Path) MarkStale

func (path *Path) MarkStale(s bool)

func (*Path) MarshalJSON

func (path *Path) MarshalJSON() ([]byte, error)

func (*Path) NoImplicitWithdraw

func (path *Path) NoImplicitWithdraw() bool

func (*Path) OriginInfo

func (path *Path) OriginInfo() *originInfo

func (*Path) PrependAsn

func (path *Path) PrependAsn(asn uint32, repeat uint8)

PrependAsn prepends AS number. This function updates the AS_PATH attribute as follows.

  1. if the first path segment of the AS_PATH is of type AS_SEQUENCE, the local system prepends the specified AS num as the last element of the sequence (put it in the left-most position with respect to the position of octets in the protocol message) the specified number of times. If the act of prepending will cause an overflow in the AS_PATH segment (i.e., more than 255 ASes), it SHOULD prepend a new segment of type AS_SEQUENCE and prepend its own AS number to this new segment.

  2. if the first path segment of the AS_PATH is of other than type AS_SEQUENCE, the local system prepends a new path segment of type AS_SEQUENCE to the AS_PATH, including the specified AS number in that segment.

  3. if the AS_PATH is empty, the local system creates a path segment of type AS_SEQUENCE, places the specified AS number into that segment, and places that segment into the AS_PATH.

func (*Path) RemoveCommunities

func (path *Path) RemoveCommunities(communities []uint32) int

RemoveCommunities removes specific communities. If the length of communities is 0, it does nothing. If all communities are removed, it removes Communities path attribute itself.

func (*Path) RemoveLocalPref

func (path *Path) RemoveLocalPref()

func (*Path) RemovePrivateAS

func (path *Path) RemovePrivateAS(localAS uint32, option config.RemovePrivateAsOption)

func (*Path) ReplaceAS

func (path *Path) ReplaceAS(localAS, peerAS uint32) *Path

func (*Path) SetCommunities

func (path *Path) SetCommunities(communities []uint32, doReplace bool)

SetCommunities adds or replaces communities with new ones. If the length of communities is 0 and doReplace is true, it clears communities.

func (*Path) SetExtCommunities

func (path *Path) SetExtCommunities(exts []bgp.ExtendedCommunityInterface, doReplace bool)

func (*Path) SetIsFromExternal

func (path *Path) SetIsFromExternal(y bool)

func (*Path) SetLargeCommunities

func (path *Path) SetLargeCommunities(cs []*bgp.LargeCommunity, doReplace bool)

func (*Path) SetMed

func (path *Path) SetMed(med int64, doReplace bool) error

SetMed replace, add or subtraction med with new ones.

func (*Path) SetNexthop

func (path *Path) SetNexthop(nexthop net.IP)

func (*Path) SetSource

func (path *Path) SetSource(source *PeerInfo)

func (*Path) SetUUID

func (path *Path) SetUUID(id []byte)

func (*Path) SetValidation

func (path *Path) SetValidation(v *Validation)

func (*Path) String

func (path *Path) String() string

return Path's string representation

func (*Path) ToGlobal

func (p *Path) ToGlobal(vrf *Vrf) *Path

func (*Path) ToLocal

func (p *Path) ToLocal() *Path

func (*Path) UUID

func (path *Path) UUID() uuid.UUID

func (*Path) Validation

func (path *Path) Validation() *Validation

func (*Path) ValidationStatus

func (path *Path) ValidationStatus() config.RpkiValidationResultType

type PathAttrs

type PathAttrs []bgp.PathAttributeInterface

func (PathAttrs) Len

func (a PathAttrs) Len() int

func (PathAttrs) Less

func (a PathAttrs) Less(i, j int) bool

func (PathAttrs) Swap

func (a PathAttrs) Swap(i, j int)

type PeerInfo

type PeerInfo struct {
	AS                      uint32
	ID                      net.IP
	LocalAS                 uint32
	LocalID                 net.IP
	Address                 net.IP
	LocalAddress            net.IP
	RouteReflectorClient    bool
	RouteReflectorClusterID net.IP
	MultihopTtl             uint8
}

func NewPeerInfo

func NewPeerInfo(g *config.Global, p *config.Neighbor) *PeerInfo

func (*PeerInfo) Equal

func (lhs *PeerInfo) Equal(rhs *PeerInfo) bool

func (*PeerInfo) String

func (i *PeerInfo) String() string

type Policies

type Policies []*Policy

func (Policies) Len

func (p Policies) Len() int

func (Policies) Less

func (p Policies) Less(i, j int) bool

func (Policies) Swap

func (p Policies) Swap(i, j int)

type Policy

type Policy struct {
	Name       string
	Statements []*Statement
}

func NewPolicy

func NewPolicy(c config.PolicyDefinition) (*Policy, error)

func (*Policy) Add

func (lhs *Policy) Add(rhs *Policy) error

func (*Policy) Apply

func (p *Policy) Apply(path *Path, options *PolicyOptions) (RouteType, *Path)

Compare path with a policy's condition in stored order in the policy. If a condition match, then this function stops evaluation and subsequent conditions are skipped.

func (*Policy) FillUp

func (p *Policy) FillUp(m map[string]*Statement) error

func (*Policy) MarshalJSON

func (p *Policy) MarshalJSON() ([]byte, error)

func (*Policy) Remove

func (lhs *Policy) Remove(rhs *Policy) error

func (*Policy) Replace

func (lhs *Policy) Replace(rhs *Policy) error

func (*Policy) ToConfig

func (p *Policy) ToConfig() *config.PolicyDefinition

type PolicyAssignment

type PolicyAssignment struct {
	Name     string
	Type     PolicyDirection
	Policies []*Policy
	Default  RouteType
}

type PolicyDirection

type PolicyDirection int
const (
	POLICY_DIRECTION_NONE PolicyDirection = iota
	POLICY_DIRECTION_IN
	POLICY_DIRECTION_IMPORT
	POLICY_DIRECTION_EXPORT
)

func (PolicyDirection) String

func (d PolicyDirection) String() string

type PolicyOptions

type PolicyOptions struct {
	Info *PeerInfo
}

type Prefix

type Prefix struct {
	Prefix             *net.IPNet
	AddressFamily      bgp.RouteFamily
	MasklengthRangeMax uint8
	MasklengthRangeMin uint8
}

func NewPrefix

func NewPrefix(c config.Prefix) (*Prefix, error)

func (*Prefix) Equal

func (lhs *Prefix) Equal(rhs *Prefix) bool

func (*Prefix) Match

func (p *Prefix) Match(path *Path) bool

func (*Prefix) PrefixString

func (p *Prefix) PrefixString() string

type PrefixCondition

type PrefixCondition struct {
	// contains filtered or unexported fields
}

func NewPrefixCondition

func NewPrefixCondition(c config.MatchPrefixSet) (*PrefixCondition, error)

func (*PrefixCondition) Evaluate

func (c *PrefixCondition) Evaluate(path *Path, _ *PolicyOptions) bool

compare prefixes in this condition and nlri of path and subsequent comparison is skipped if that matches the conditions. If PrefixList's length is zero, return true.

func (*PrefixCondition) Name

func (c *PrefixCondition) Name() string

func (*PrefixCondition) Option

func (c *PrefixCondition) Option() MatchOption

func (*PrefixCondition) Set

func (c *PrefixCondition) Set() DefinedSet

func (*PrefixCondition) Type

func (c *PrefixCondition) Type() ConditionType

type PrefixSet

type PrefixSet struct {
	// contains filtered or unexported fields
}

func NewPrefixSet

func NewPrefixSet(c config.PrefixSet) (*PrefixSet, error)

func NewPrefixSetFromApiStruct

func NewPrefixSetFromApiStruct(name string, prefixes []*Prefix) (*PrefixSet, error)

func (*PrefixSet) Append

func (lhs *PrefixSet) Append(arg DefinedSet) error

func (*PrefixSet) List

func (s *PrefixSet) List() []string

func (*PrefixSet) MarshalJSON

func (s *PrefixSet) MarshalJSON() ([]byte, error)

func (*PrefixSet) Name

func (s *PrefixSet) Name() string

func (*PrefixSet) Remove

func (lhs *PrefixSet) Remove(arg DefinedSet) error

func (*PrefixSet) Replace

func (lhs *PrefixSet) Replace(arg DefinedSet) error

func (*PrefixSet) String

func (s *PrefixSet) String() string

func (*PrefixSet) ToConfig

func (s *PrefixSet) ToConfig() *config.PrefixSet

func (*PrefixSet) Type

func (s *PrefixSet) Type() DefinedType

type ROA

type ROA struct {
	Family int
	Prefix *IPPrefix
	MaxLen uint8
	AS     uint32
	Src    string
}

func NewROA

func NewROA(family int, prefixByte []byte, prefixLen uint8, maxLen uint8, as uint32, src string) *ROA

func (*ROA) Equal

func (r *ROA) Equal(roa *ROA) bool

type RouteType

type RouteType int
const (
	ROUTE_TYPE_NONE RouteType = iota
	ROUTE_TYPE_ACCEPT
	ROUTE_TYPE_REJECT
)

func (RouteType) String

func (t RouteType) String() string

type RouteTypeCondition

type RouteTypeCondition struct {
	// contains filtered or unexported fields
}

func NewRouteTypeCondition

func NewRouteTypeCondition(c config.RouteType) (*RouteTypeCondition, error)

func (*RouteTypeCondition) Evaluate

func (c *RouteTypeCondition) Evaluate(path *Path, _ *PolicyOptions) bool

func (*RouteTypeCondition) Name

func (c *RouteTypeCondition) Name() string

func (*RouteTypeCondition) Set

func (c *RouteTypeCondition) Set() DefinedSet

func (*RouteTypeCondition) String

func (c *RouteTypeCondition) String() string

func (*RouteTypeCondition) Type

type RoutingAction

type RoutingAction struct {
	AcceptRoute bool
}

func NewRoutingAction

func NewRoutingAction(c config.RouteDisposition) (*RoutingAction, error)

func (*RoutingAction) Apply

func (a *RoutingAction) Apply(path *Path, _ *PolicyOptions) *Path

func (*RoutingAction) String

func (a *RoutingAction) String() string

func (*RoutingAction) Type

func (a *RoutingAction) Type() ActionType

type RoutingPolicy

type RoutingPolicy struct {
	// contains filtered or unexported fields
}

func NewRoutingPolicy

func NewRoutingPolicy() *RoutingPolicy

func (*RoutingPolicy) AddDefinedSet

func (r *RoutingPolicy) AddDefinedSet(s DefinedSet) error

func (*RoutingPolicy) AddPolicy

func (r *RoutingPolicy) AddPolicy(x *Policy, refer bool) (err error)

func (*RoutingPolicy) AddPolicyAssignment

func (r *RoutingPolicy) AddPolicyAssignment(id string, dir PolicyDirection, policies []*config.PolicyDefinition, def RouteType) (err error)

func (*RoutingPolicy) AddStatement

func (r *RoutingPolicy) AddStatement(st *Statement) (err error)

func (*RoutingPolicy) ApplyPolicy

func (r *RoutingPolicy) ApplyPolicy(id string, dir PolicyDirection, before *Path, options *PolicyOptions) *Path

func (*RoutingPolicy) DeleteDefinedSet

func (r *RoutingPolicy) DeleteDefinedSet(a DefinedSet, all bool) (err error)

func (*RoutingPolicy) DeletePolicy

func (r *RoutingPolicy) DeletePolicy(x *Policy, all, preserve bool, activeId []string) (err error)

func (*RoutingPolicy) DeletePolicyAssignment

func (r *RoutingPolicy) DeletePolicyAssignment(id string, dir PolicyDirection, policies []*config.PolicyDefinition, all bool) (err error)

func (*RoutingPolicy) DeleteStatement

func (r *RoutingPolicy) DeleteStatement(st *Statement, all bool) (err error)

func (*RoutingPolicy) GetAllPolicy

func (r *RoutingPolicy) GetAllPolicy() []*config.PolicyDefinition

func (*RoutingPolicy) GetDefinedSet

func (r *RoutingPolicy) GetDefinedSet(typ DefinedType, name string) (*config.DefinedSets, error)

func (*RoutingPolicy) GetPolicyAssignment

func (r *RoutingPolicy) GetPolicyAssignment(id string, dir PolicyDirection) (RouteType, []*config.PolicyDefinition, error)

func (*RoutingPolicy) GetStatement

func (r *RoutingPolicy) GetStatement() []*config.Statement

func (*RoutingPolicy) ReplaceDefinedSet

func (r *RoutingPolicy) ReplaceDefinedSet(a DefinedSet) (err error)

func (*RoutingPolicy) ReplacePolicy

func (r *RoutingPolicy) ReplacePolicy(x *Policy, refer, preserve bool) (err error)

func (*RoutingPolicy) ReplacePolicyAssignment

func (r *RoutingPolicy) ReplacePolicyAssignment(id string, dir PolicyDirection, policies []*config.PolicyDefinition, def RouteType) (err error)

func (*RoutingPolicy) ReplaceStatement

func (r *RoutingPolicy) ReplaceStatement(st *Statement) (err error)

func (*RoutingPolicy) Reset

type RpkiValidationCondition

type RpkiValidationCondition struct {
	// contains filtered or unexported fields
}

func (*RpkiValidationCondition) Evaluate

func (c *RpkiValidationCondition) Evaluate(path *Path, _ *PolicyOptions) bool

func (*RpkiValidationCondition) Name

func (c *RpkiValidationCondition) Name() string

func (*RpkiValidationCondition) Set

func (*RpkiValidationCondition) String

func (c *RpkiValidationCondition) String() string

func (*RpkiValidationCondition) Type

type RpkiValidationReasonType

type RpkiValidationReasonType string
const (
	RPKI_VALIDATION_REASON_TYPE_NONE   RpkiValidationReasonType = "none"
	RPKI_VALIDATION_REASON_TYPE_AS     RpkiValidationReasonType = "as"
	RPKI_VALIDATION_REASON_TYPE_LENGTH RpkiValidationReasonType = "length"
)

func (RpkiValidationReasonType) ToInt

func (v RpkiValidationReasonType) ToInt() int

type Statement

type Statement struct {
	Name        string
	Conditions  []Condition
	RouteAction Action
	ModActions  []Action
}

func NewStatement

func NewStatement(c config.Statement) (*Statement, error)

func (*Statement) Add

func (lhs *Statement) Add(rhs *Statement) error

func (*Statement) Apply

func (s *Statement) Apply(path *Path, options *PolicyOptions) (RouteType, *Path)

func (*Statement) Evaluate

func (s *Statement) Evaluate(p *Path, options *PolicyOptions) bool

evaluate each condition in the statement according to MatchSetOptions

func (*Statement) MarshalJSON

func (s *Statement) MarshalJSON() ([]byte, error)

func (*Statement) Remove

func (lhs *Statement) Remove(rhs *Statement) error

func (*Statement) Replace

func (lhs *Statement) Replace(rhs *Statement) error

func (*Statement) ToConfig

func (s *Statement) ToConfig() *config.Statement

type Table

type Table struct {
	// contains filtered or unexported fields
}

func NewTable

func NewTable(rf bgp.RouteFamily, dsts ...*Destination) *Table

func (*Table) Bests

func (t *Table) Bests(id string) []*Path

func (*Table) DeleteDestByPeer

func (t *Table) DeleteDestByPeer(peerInfo *PeerInfo) []*Destination

func (*Table) GetDestination

func (t *Table) GetDestination(key string) *Destination

func (*Table) GetDestinations

func (t *Table) GetDestinations() map[string]*Destination

func (*Table) GetKnownPathList

func (t *Table) GetKnownPathList(id string) []*Path

func (*Table) GetLongerPrefixDestinations

func (t *Table) GetLongerPrefixDestinations(key string) ([]*Destination, error)

func (*Table) GetRoutefamily

func (t *Table) GetRoutefamily() bgp.RouteFamily

func (*Table) GetSortedDestinations

func (t *Table) GetSortedDestinations() []*Destination

func (*Table) Info

func (t *Table) Info(id string) *TableInfo

func (*Table) MultiBests

func (t *Table) MultiBests(id string) [][]*Path

func (*Table) Select

func (t *Table) Select(option ...TableSelectOption) (*Table, error)

type TableInfo

type TableInfo struct {
	NumDestination int
	NumPath        int
	NumAccepted    int
}

type TableManager

type TableManager struct {
	Tables map[bgp.RouteFamily]*Table
	Vrfs   map[string]*Vrf
	// contains filtered or unexported fields
}

func NewTableManager

func NewTableManager(rfList []bgp.RouteFamily) *TableManager

func (*TableManager) AddVrf

func (manager *TableManager) AddVrf(name string, id uint32, rd bgp.RouteDistinguisherInterface, importRt, exportRt []bgp.ExtendedCommunityInterface, info *PeerInfo) ([]*Path, error)

func (*TableManager) DeletePathsByPeer

func (manager *TableManager) DeletePathsByPeer(info *PeerInfo, rf bgp.RouteFamily) []*Destination

func (*TableManager) DeleteVrf

func (manager *TableManager) DeleteVrf(name string) ([]*Path, error)

func (*TableManager) GetBestMultiPathList

func (manager *TableManager) GetBestMultiPathList(id string, rfList []bgp.RouteFamily) [][]*Path

func (*TableManager) GetBestPathList

func (manager *TableManager) GetBestPathList(id string, rfList []bgp.RouteFamily) []*Path

func (*TableManager) GetDestination

func (manager *TableManager) GetDestination(path *Path) *Destination

func (*TableManager) GetPathList

func (manager *TableManager) GetPathList(id string, rfList []bgp.RouteFamily) []*Path

func (*TableManager) GetPathListWithNexthop

func (manager *TableManager) GetPathListWithNexthop(id string, rfList []bgp.RouteFamily, nexthop net.IP) []*Path

func (*TableManager) GetRFlist

func (manager *TableManager) GetRFlist() []bgp.RouteFamily

func (*TableManager) ProcessPaths

func (manager *TableManager) ProcessPaths(pathList []*Path) []*Destination

func (*TableManager) TableInfo

func (manager *TableManager) TableInfo(id string, family bgp.RouteFamily) (*TableInfo, error)

type TableSelectOption

type TableSelectOption struct {
	ID             string
	LookupPrefixes []*LookupPrefix
	VRF            *Vrf

	Best      bool
	MultiPath bool
	// contains filtered or unexported fields
}

type Validation

type Validation struct {
	Status          config.RpkiValidationResultType
	Reason          RpkiValidationReasonType
	Matched         []*ROA
	UnmatchedAs     []*ROA
	UnmatchedLength []*ROA
}

type Vrf

func (*Vrf) Clone

func (v *Vrf) Clone() *Vrf

func (*Vrf) ToGlobalPath

func (v *Vrf) ToGlobalPath(path *Path) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL