]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Recursively determine if route's source is EVPN 3892/head
authorvivek <vivek@cumulusnetworks.com>
Fri, 1 Mar 2019 07:17:16 +0000 (07:17 +0000)
committervivek <vivek@cumulusnetworks.com>
Fri, 1 Mar 2019 07:17:16 +0000 (07:17 +0000)
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>
bgpd/bgp_evpn.h

index 0027ae51a43f00915e12dfa4ea43682a87af7a10..dfe141c40e0bf9fcb10720fb85922e9ab83f465e 100644 (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;