From: vivek Date: Fri, 1 Mar 2019 07:17:16 +0000 (+0000) Subject: bgpd: Recursively determine if route's source is EVPN X-Git-Tag: 7.1_pulled~171^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=08e68f925e274989c09249449c12f8870604ad5d;p=mirror%2Ffrr.git 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 Reviewed-by: Anuradha Karuppiah Reviewed-by: Donald Sharp --- diff --git a/bgpd/bgp_evpn.h b/bgpd/bgp_evpn.h index 0027ae51a4..dfe141c40e 100644 --- a/bgpd/bgp_evpn.h +++ b/bgpd/bgp_evpn.h @@ -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;