]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: update the VNI labels in type-2 routes when l3vni gets deleted
authormitesh <mitesh@cumulusnetworks.com>
Sat, 10 Feb 2018 05:54:00 +0000 (21:54 -0800)
committermitesh <mitesh@cumulusnetworks.com>
Sat, 10 Feb 2018 05:54:00 +0000 (21:54 -0800)
When an l3-vni is enabled, type-2 routes are sent with 2 labels (l2vni and l3vni).
When it gets deleted, we need to update type-2 routes and send them with only one label (l2vni).

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
bgpd/bgp_evpn.c

index a50e3707adda1a9bcb7aabfd71e797fb81a785a3..9b1ff8f6a969aecc24b5ecde4c8169f7266f320c 100644 (file)
@@ -1209,6 +1209,23 @@ static int update_evpn_route_entry(struct bgp *bgp, struct bgpevpn *vpn,
                    && !CHECK_FLAG(tmp_ri->flags, BGP_INFO_REMOVED))
                        route_change = 0;
                else {
+                       /*
+                        * The attributes have changed, type-2 routes needs to
+                        * be advertised with right labels.
+                        */
+                       vni2label(vpn->vni, &label[0]);
+                       if (evp->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE) {
+                               vni_t l3vni;
+
+                               l3vni = bgpevpn_get_l3vni(vpn);
+                               if (l3vni) {
+                                       vni2label(l3vni, &label[1]);
+                                       num_labels++;
+                               }
+                       }
+                       memcpy(&tmp_ri->extra->label, label, sizeof(label));
+                       tmp_ri->extra->num_labels = num_labels;
+
                        /* The attribute has changed. */
                        /* Add (or update) attribute to hash. */
                        attr_new = bgp_attr_intern(attr);