summaryrefslogtreecommitdiffhomepage
path: root/table/path.go
diff options
context:
space:
mode:
Diffstat (limited to 'table/path.go')
-rw-r--r--table/path.go14
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) {