]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: adv pip update type-5 with correct rmac
authorChirag Shah <chirag@cumulusnetworks.com>
Fri, 25 Oct 2019 22:27:47 +0000 (15:27 -0700)
committerChirag Shah <chirag@cumulusnetworks.com>
Fri, 22 Nov 2019 15:53:40 +0000 (07:53 -0800)
when a pip is disabled or mac-vlan is not present
use anycast MAC as RMAC value.

Ticket:CM-26923
Reviewed By:CCR-9417
Testing Done:

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
bgpd/bgp_evpn.c

index 320e070a0f433f1a6a259fad9c2d70c5a07366f8..d9d83335d09549e3fa1a902cf4a1745029160a78 100644 (file)
@@ -512,7 +512,7 @@ static void bgp_evpn_get_rmac_nexthop(struct bgpevpn *vpn,
         * advertise-pip and advertise-svi-ip features
         * are enabled.
         * Otherwise, for all host MAC-IP route's
-        * copy anycast RMAC
+        * copy anycast RMAC.
         */
        if (CHECK_FLAG(flags, BGP_EVPN_MACIP_TYPE_SVI_IP)
            && bgp_vrf->evpn_info->advertise_pip &&
@@ -1577,18 +1577,19 @@ static int update_evpn_type5_route(struct bgp *bgp_vrf, struct prefix_evpn *evp,
                bgp_attr_default_set(&attr, BGP_ORIGIN_IGP);
        }
 
-       /* copy sys rmac */
-       memcpy(&attr.rmac, &bgp_vrf->evpn_info->pip_rmac, ETH_ALEN);
        /* Advertise Primary IP (PIP) is enabled, send individual
         * IP (default instance router-id) as nexthop.
         * PIP is disabled or vrr interface is not present
-        * use anycast-IP as nexthop.
+        * use anycast-IP as nexthop and anycast RMAC.
         */
        if (!bgp_vrf->evpn_info->advertise_pip ||
            (!bgp_vrf->evpn_info->is_anycast_mac)) {
                attr.nexthop = bgp_vrf->originator_ip;
                attr.mp_nexthop_global_in = bgp_vrf->originator_ip;
+               memcpy(&attr.rmac, &bgp_vrf->rmac, ETH_ALEN);
        } else {
+               /* copy sys rmac */
+               memcpy(&attr.rmac, &bgp_vrf->evpn_info->pip_rmac, ETH_ALEN);
                if (bgp_vrf->evpn_info->pip_ip.s_addr != INADDR_ANY) {
                        attr.nexthop = bgp_vrf->evpn_info->pip_ip;
                        attr.mp_nexthop_global_in = bgp_vrf->evpn_info->pip_ip;