Problem:
When VRF is marked for delete, route tables are deleted from agent however the
pointer is not made NULL(for debugging it is retained). This happens via
Onzerorefcount, where vrf entry(db entry) delete is enqueued later. There can be
a walk going on Vrftable and since this Vrf is not yet deleted and is in queue,
it can be picked up. Once this happens further route table walks in this vrf
will be started. Since route table were deleted these pointer(table) will be
invalid resulting in crash.
Solution:
On route table walk identify if table is deleted and walk need not be done.
To fix use bitmap and reset it once table is deleted.
Reviewed: https:/ /review. opencontrail. org/12659 github. org/Juniper/ contrail- controller/ commit/ 24ee31ba848bb9e 87c1cd036cd58f3 88f1e113ad
Committed: http://
Submitter: Zuul
Branch: R2.20
commit 24ee31ba848bb9e 87c1cd036cd58f3 88f1e113ad
Author: Manish <email address hidden>
Date: Thu Jul 16 09:39:56 2015 +0530
Walk on deleted route table when VRF is deleted.
Problem:
When VRF is marked for delete, route tables are deleted from agent however the
pointer is not made NULL(for debugging it is retained). This happens via
Onzerorefcount, where vrf entry(db entry) delete is enqueued later. There can be
a walk going on Vrftable and since this Vrf is not yet deleted and is in queue,
it can be picked up. Once this happens further route table walks in this vrf
will be started. Since route table were deleted these pointer(table) will be
invalid resulting in crash.
Solution:
On route table walk identify if table is deleted and walk need not be done.
To fix use bitmap and reset it once table is deleted.
Change-Id: I3ca5e6eb0eb4fb 54ec873242b57a4 389448c5279
Closes-bug: 1471101