mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 23:58:44 +00:00
ospf6d: abr summary advertise best route
ABR summary should contain best intra prefix LSA. There might be a case where intra-prefix route with different cost from different advertising router present, summary advertisement should only consider best intra-prefix route. A route which is marked for remove, while purging the route's ABR summary LSA also remove summary route from the summary table. Ticket:CM-22665 Testing Done: Validate on ABR topology, intra-prefix route with different cost, a higher cost intra-prefix route skip from sending ABR summary LSA. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
This commit is contained in:
parent
6b2ddd675c
commit
276aa26556
@ -240,6 +240,20 @@ int ospf6_abr_originate_summary_to_area(struct ospf6_route *route,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (route->path.origin.type ==
|
||||||
|
htons(OSPF6_LSTYPE_INTRA_PREFIX)) {
|
||||||
|
if (!CHECK_FLAG(route->flag, OSPF6_ROUTE_BEST)) {
|
||||||
|
if (is_debug) {
|
||||||
|
prefix2str(&route->prefix, buf,
|
||||||
|
sizeof(buf));
|
||||||
|
zlog_debug("%s: intra-prefix route %s with cost %u is not best, ignore."
|
||||||
|
, __PRETTY_FUNCTION__, buf,
|
||||||
|
route->path.cost);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (is_debug) {
|
if (is_debug) {
|
||||||
prefix2str(&route->prefix, buf, sizeof(buf));
|
prefix2str(&route->prefix, buf, sizeof(buf));
|
||||||
zlog_debug("Originating summary in area %s for %s cost %u",
|
zlog_debug("Originating summary in area %s for %s cost %u",
|
||||||
@ -271,9 +285,10 @@ int ospf6_abr_originate_summary_to_area(struct ospf6_route *route,
|
|||||||
ospf6_abr_delete_route(route, summary,
|
ospf6_abr_delete_route(route, summary,
|
||||||
summary_table, old);
|
summary_table, old);
|
||||||
}
|
}
|
||||||
} else if (old)
|
} else if (old) {
|
||||||
|
ospf6_route_remove(summary, summary_table);
|
||||||
ospf6_lsa_purge(old);
|
ospf6_lsa_purge(old);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user