From d9fd4901f0295d65ffdebb189d92a7d24e7d5e6f Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 30 Oct 2024 11:14:56 -0400 Subject: [PATCH] bgpd: Only set bgp_labels in bgp_update if we have num_labels 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 --- bgpd/bgp_route.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 25ef025412..f58be40b72 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -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. */ -- 2.39.5