mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-04-29 18:10:23 +00:00
eigrpd: Up convert to uint64_t before doing math
Intentionally up convert uint8_t and uint32_t values
to a uint64_t before doing math to make Coverity happy.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit c960cb28f7
)
This commit is contained in:
parent
b487f0aff0
commit
82021021f0
@ -86,19 +86,24 @@ eigrp_metric_t eigrp_calculate_metrics(struct eigrp *eigrp,
|
||||
*/
|
||||
|
||||
if (eigrp->k_values[0])
|
||||
composite += (eigrp->k_values[0] * metric.bandwidth);
|
||||
composite += ((eigrp_metric_t)eigrp->k_values[0] *
|
||||
(eigrp_metric_t)metric.bandwidth);
|
||||
if (eigrp->k_values[1])
|
||||
composite += ((eigrp->k_values[1] * metric.bandwidth)
|
||||
/ (256 - metric.load));
|
||||
composite += (((eigrp_metric_t)eigrp->k_values[1] *
|
||||
(eigrp_metric_t)metric.bandwidth) /
|
||||
(256 - metric.load));
|
||||
if (eigrp->k_values[2])
|
||||
composite += (eigrp->k_values[2] * metric.delay);
|
||||
composite += ((eigrp_metric_t)eigrp->k_values[2] *
|
||||
(eigrp_metric_t)metric.delay);
|
||||
if (eigrp->k_values[3] && !eigrp->k_values[4])
|
||||
composite *= eigrp->k_values[3];
|
||||
composite *= (eigrp_metric_t)eigrp->k_values[3];
|
||||
if (!eigrp->k_values[3] && eigrp->k_values[4])
|
||||
composite *= (eigrp->k_values[4] / metric.reliability);
|
||||
composite *= ((eigrp_metric_t)eigrp->k_values[4] /
|
||||
(eigrp_metric_t)metric.reliability);
|
||||
if (eigrp->k_values[3] && eigrp->k_values[4])
|
||||
composite *= ((eigrp->k_values[4] / metric.reliability)
|
||||
+ eigrp->k_values[3]);
|
||||
composite *= (((eigrp_metric_t)eigrp->k_values[4] /
|
||||
(eigrp_metric_t)metric.reliability) +
|
||||
(eigrp_metric_t)eigrp->k_values[3]);
|
||||
|
||||
composite =
|
||||
(composite <= EIGRP_METRIC_MAX) ? composite : EIGRP_METRIC_MAX;
|
||||
|
Loading…
Reference in New Issue
Block a user