bgpd: Recursively determine if route's source is EVPN

With leaking of IPv4 or IPv6 unicast routes whose source is a EVPN
type-2 or type-5 route between VRFs, the determination of whether
the route's source is EVPN has to be made recursively. This is used
during route install to pass along appropriate parameters to zebra.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
vivek 2019-03-01 07:17:16 +00:00
parent 744c63be13
commit 08e68f925e

View File

@ -88,8 +88,13 @@ static inline int is_route_parent_evpn(struct bgp_path_info *ri)
!ri->extra->parent)
return 0;
/* See if the parent is of family L2VPN/EVPN */
parent_ri = (struct bgp_path_info *)ri->extra->parent;
/* Determine parent recursively */
for (parent_ri = ri->extra->parent;
parent_ri->extra && parent_ri->extra->parent;
parent_ri = parent_ri->extra->parent)
;
/* See if of family L2VPN/EVPN */
rn = parent_ri->net;
if (!rn)
return 0;