diff --git a/bgpd/bgp_labelpool.c b/bgpd/bgp_labelpool.c index d33f14ac41..03987b6bbf 100644 --- a/bgpd/bgp_labelpool.c +++ b/bgpd/bgp_labelpool.c @@ -642,7 +642,11 @@ void bgp_lp_event_zebra_up(void) } /* round up */ - chunks_needed = (labels_needed / lp->next_chunksize) + 1; + if (((float)labels_needed / (float)lp->next_chunksize) > + (labels_needed / lp->next_chunksize)) + chunks_needed = (labels_needed / lp->next_chunksize) + 1; + else + chunks_needed = (labels_needed / lp->next_chunksize); labels_needed = chunks_needed * lp->next_chunksize; /* @@ -650,8 +654,8 @@ void bgp_lp_event_zebra_up(void) */ list_delete_all_node(lp->chunks); - if (!bgp_zebra_request_label_range(MPLS_LABEL_BASE_ANY, labels_needed, - true)) + if (labels_needed && !bgp_zebra_request_label_range(MPLS_LABEL_BASE_ANY, + labels_needed, true)) return; lp->pending_count = labels_needed; diff --git a/tests/topotests/bgp_lu_topo1/R2/labelpool.summ.json b/tests/topotests/bgp_lu_topo1/R2/labelpool.summ.json index d35e4ef463..17b9accb4a 100644 --- a/tests/topotests/bgp_lu_topo1/R2/labelpool.summ.json +++ b/tests/topotests/bgp_lu_topo1/R2/labelpool.summ.json @@ -2,5 +2,5 @@ "ledger":0, "inUse":0, "requests":0, - "labelChunks":1 + "labelChunks":0 }