]> git.puffer.fish Git - mirror/frr.git/commit
ospfd: External LSA lookup in LSDB failed in a specific scenario 6460/head
authorrgirada <rgirada@vmware.com>
Mon, 25 May 2020 17:20:41 +0000 (10:20 -0700)
committerrgirada <rgirada@vmware.com>
Fri, 29 May 2020 11:24:28 +0000 (04:24 -0700)
commit64f46c22682fd4cc74084fedc0062985d1459c86
tree264df5f52ae16363baf19c7a616e8e93c3b3447b
parent812507ec5c07504b1c84e1c365954dd49188ce15
ospfd: External LSA lookup in LSDB failed in a specific scenario

Description:
OSPF uses an algo to generate unique LSIDs when route updates
exists with same adrress and different masklens. It genearates
the unique LSIDs by masking its hostbits.
Ex :
Rt1 : 10.0.0.0/32 - LSID : 10.0.0.0
Rt2 : 10.0.0.0/16 - LSID : 10.0.255.255
Rt3 : 10.0.0.0/24 - LSID : 10.0.0.255

Observed an issue with external LSAs when such routes originated.
If the first route (with actual address as LSID) is got deleted,
the routes with same addresss(different msaks) are failed
to get LSA pointers  from LSDB due to current fetching API design.
api : ospf_external_info_find_lsa

Here , it is allowing to look up the LSA with address specific
unique LSID (address with host bits set ex: 10.0.255.255) only
if the LSA exists where LSID as actual address of the route
(ex: 10.0.0.0 ) which is not expected and cauing for other issues.

Fix:
Corrected this logic, by looking up the LSA with unique LSID first
if it doesn’t exist then It is allowing to look up the LSDB with LSID
as address of the route.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
ospfd/ospf_asbr.c