summaryrefslogtreecommitdiffstats
path: root/ospf6d/ospf6_area.h
diff options
context:
space:
mode:
authorChirag Shah <chirag@cumulusnetworks.com>2018-05-07 19:16:08 +0200
committerChirag Shah <chirag@cumulusnetworks.com>2018-05-09 00:36:44 +0200
commita2d0055aac3725eb253f3c07f33624a8a3eb15ca (patch)
tree5c8156a98a551db1110bfaedc956fac878056a26 /ospf6d/ospf6_area.h
parentospf6d: fix area border router duplicate (diff)
downloadfrr-a2d0055aac3725eb253f3c07f33624a8a3eb15ca.tar.xz
frr-a2d0055aac3725eb253f3c07f33624a8a3eb15ca.zip
ospf6d: Fix ABR brouter calculation corruption
During Intra brouter calculation, brouters will be marked for remove. if one of the brouter is removed, as part of its remove callback, ospf6_abr_examin_summary is performed where marked for brouter would be removed. Since refcount of next brouter node still higher, it will retain one node with dangled next brouter pointer. When intra brouter calculation iteration goes to next node, where accessing free node causes a crash. Ticket:CM-20807 Testing Done: Configure multilple ABR routers between area 0 and area x, y. Remove ospf6 configuration on area x, y abrs and check area 0 Intra brouter calculations. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
Diffstat (limited to 'ospf6d/ospf6_area.h')
-rw-r--r--ospf6d/ospf6_area.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/ospf6d/ospf6_area.h b/ospf6d/ospf6_area.h
index eaf3e5c6d..ba497a168 100644
--- a/ospf6d/ospf6_area.h
+++ b/ospf6d/ospf6_area.h
@@ -50,6 +50,9 @@ struct ospf6_area {
/* Area type */
int no_summary;
+ /* Brouter traversal protection */
+ int intra_brouter_calc;
+
/* OSPF interface list */
struct list *if_list;