]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Only set bgp_labels in bgp_update if we have num_labels
authorDonald Sharp <sharpd@nvidia.com>
Wed, 30 Oct 2024 15:14:56 +0000 (11:14 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Thu, 31 Oct 2024 14:35:00 +0000 (10:35 -0400)
In the interest of speeding up code, there is no point in
attempting to see if a label is usable if the number of labels
passed in is 0.  Since that is a much much quicker test than
the bgp_is_valid_label() call, let's test that first.

Additionally, there is no point in walking the label[] array
passed in unless we are in the if statement, so move it inside.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd/bgp_route.c

index 25ef0254127aecf3b8ec6f695e0cccb50f358fdd..f58be40b7215e164ee6231d491ee86c78db07563 100644 (file)
@@ -4667,11 +4667,12 @@ void bgp_update(struct peer *peer, const struct prefix *p, uint32_t addpath_id,
        bgp = peer->bgp;
        dest = bgp_afi_node_get(bgp->rib[afi][safi], afi, safi, p, prd);
 
-       if ((afi == AFI_L2VPN && safi == SAFI_EVPN) ||
-           bgp_is_valid_label(&label[0]))
+       if (num_labels &&
+           ((afi == AFI_L2VPN && safi == SAFI_EVPN) || bgp_is_valid_label(&label[0]))) {
                bgp_labels.num_labels = num_labels;
-       for (i = 0; i < bgp_labels.num_labels; i++)
-               bgp_labels.label[i] = label[i];
+               for (i = 0; i < bgp_labels.num_labels; i++)
+                       bgp_labels.label[i] = label[i];
+       }
 
        /* When peer's soft reconfiguration enabled.  Record input packet in
           Adj-RIBs-In.  */