summaryrefslogtreecommitdiff
path: root/ospf6d/ospf6_abr.h
diff options
context:
space:
mode:
authorChirag Shah <chirag@cumulusnetworks.com>2018-05-17 14:20:25 -0700
committerChirag Shah <chirag@cumulusnetworks.com>2018-05-21 07:29:21 -0700
commit6f19bb0ee7ca4bf788ef4756a0c81717d06b40bb (patch)
tree70f441663f12eb0f3e7f768bc3214fc5d6f4183b /ospf6d/ospf6_abr.h
parentba6ccc944f91f06ae23eac237d9c88751c612bba (diff)
ospf6d: Fix inter area prefix
Inter Area Prefix LSA ECMP is not working properly. Two ABRs advertising IAP routes to backbone, not installed with correct cost or if ABR restarted the route is removed from backbone. The current implementation ABR was not suppressing IAP update for prefix cost is not better or route is not installed. The better cost or path route was overwritten with non optimal cost. This caused a loop with nexthops pointing each other at backbone and non-backbone routers. Consider to only send BEST/installed route's IAP notification at ABRs. When receiving IAP update from multiple ABRs, preserve multiple advertising routers under the prefix route node. Upon LSA maxage only remove the advertising route's which is impacted and update route's nexthops and update FIB. Testing Done: Top to Bottom is part of area 0 on the Right, and from Left side in area 1. Top and Bottom act as ABRs. H1 route is sent as Inter-Area Prefix to Right. Trigger multiple triggers for ABR routes. 1) Shutting down link between, top to right to eliminate nhs 2) Restart frr at Top. 3) Restart frr at Right. +-----------+ . | ,'| Top |`. / . | \ ,' ,'+.----------+`. `. / / ` `. \ ', ,' ,' ,' \ `. . - / ` `. ', `, ,` ,` ,' \ \ \ ' - ` `. `, `, +--------+ +--`--`--`--+ +---'---'--'+ +--------+ | | | | | | | | | H1 ------ Left | | Right ------ H2 | | | | | | | | | +--------+ +-----------+ +----.--,-,-+ +--------+ `. ` \ - / / \ `. ` ,' .` ` ' . \ / / ' `. \ `. ` / ,' \ ` . ,` / / `. `. . / / / \ . \ ,' ' / ' '--'--------+,'.` `.| - / ' mid1 |/ | - +-----------+ Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
Diffstat (limited to 'ospf6d/ospf6_abr.h')
-rw-r--r--ospf6d/ospf6_abr.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/ospf6d/ospf6_abr.h b/ospf6d/ospf6_abr.h
index abc383463f..e40d155037 100644
--- a/ospf6d/ospf6_abr.h
+++ b/ospf6d/ospf6_abr.h
@@ -76,7 +76,12 @@ extern void ospf6_abr_prefix_resummarize(struct ospf6 *ospf6);
extern int config_write_ospf6_debug_abr(struct vty *vty);
extern void install_element_ospf6_debug_abr(void);
extern int ospf6_abr_config_write(struct vty *vty);
-
+extern void ospf6_abr_old_route_remove(struct ospf6_lsa *lsa,
+ struct ospf6_route *old,
+ struct ospf6_route_table *table);
+extern void ospf6_abr_old_path_update(struct ospf6_route *old_route,
+ struct ospf6_route *route,
+ struct ospf6_route_table *table);
extern void ospf6_abr_init(void);
#endif /*OSPF6_ABR_H*/