diff options
Diffstat (limited to 'table/path.go')
-rw-r--r-- | table/path.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/table/path.go b/table/path.go index 0d52d343..ffbdd902 100644 --- a/table/path.go +++ b/table/path.go @@ -34,6 +34,7 @@ type Path interface { updatePathAttrs(global *config.Global, peer *config.Neighbor) GetRouteFamily() bgp.RouteFamily GetAsPathLen() int + GetAsList() []uint32 setSource(source *PeerInfo) GetSource() *PeerInfo GetSourceAs() uint32 @@ -361,6 +362,19 @@ func (pd *PathDefault) GetAsPathLen() int { return length } +func (pd *PathDefault) GetAsList() []uint32 { + asList := []uint32{} + if _, attr := pd.getPathAttr(bgp.BGP_ATTR_TYPE_AS_PATH); attr != nil { + aspath := attr.(*bgp.PathAttributeAsPath) + for _, paramIf := range aspath.Value { + segment := paramIf.(*bgp.As4PathParam) + asList = append(asList, segment.AS...) + } + + } + return asList +} + // create Path object based on route family func CreatePath(source *PeerInfo, nlri bgp.AddrPrefixInterface, attrs []bgp.PathAttributeInterface, isWithdraw bool, now time.Time) (Path, error) { |