summaryrefslogtreecommitdiffhomepage
path: root/table/table.go
diff options
context:
space:
mode:
Diffstat (limited to 'table/table.go')
-rw-r--r--table/table.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/table/table.go b/table/table.go
index 3bc5bb3f..0d6abd29 100644
--- a/table/table.go
+++ b/table/table.go
@@ -88,6 +88,31 @@ func (t *Table) deletePathsByVrf(vrf *Vrf) []*Path {
if p.IsLocal() && vrf.Rd.String() == rd.String() {
p.IsWithdraw = true
pathList = append(pathList, p)
+ break
+ }
+ }
+ }
+ return pathList
+}
+
+func (t *Table) deleteRTCPathsByVrf(vrf *Vrf, vrfs map[string]*Vrf) []*Path {
+ pathList := make([]*Path, 0)
+ if t.routeFamily != bgp.RF_RTC_UC {
+ return pathList
+ }
+ for _, target := range vrf.ImportRt {
+ lhs := target.String()
+ for _, dest := range t.destinations {
+ nlri := dest.GetNlri().(*bgp.RouteTargetMembershipNLRI)
+ rhs := nlri.RouteTarget.String()
+ if lhs == rhs && isLastTargetUser(vrfs, target) {
+ for _, p := range dest.GetKnownPathList() {
+ if p.IsLocal() {
+ p.IsWithdraw = true
+ pathList = append(pathList, p)
+ break
+ }
+ }
}
}
}