diff options
author | Chirag Shah <chirag@cumulusnetworks.com> | 2018-05-07 19:16:08 +0200 |
---|---|---|
committer | Chirag Shah <chirag@cumulusnetworks.com> | 2018-05-09 00:36:44 +0200 |
commit | a2d0055aac3725eb253f3c07f33624a8a3eb15ca (patch) | |
tree | 5c8156a98a551db1110bfaedc956fac878056a26 /ospf6d/ospf6_area.h | |
parent | ospf6d: fix area border router duplicate (diff) | |
download | frr-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.h | 3 |
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; |