From 21daebff4bcd14bcf13d77d8f8f91b52d4a4f151 Mon Sep 17 00:00:00 2001 From: Jordi Ortiz Date: Tue, 27 Dec 2016 18:50:14 +0100 Subject: [PATCH] MeterManager, check max meters before requesting a new meter Change-Id: I5a5d55ede89bee46c6442b885fe64f231a14e165 --- .../incubator/net/meter/impl/MeterManager.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java index 37251f61ff..db5cff0493 100644 --- a/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java +++ b/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java @@ -30,6 +30,7 @@ import org.onosproject.net.meter.Meter; import org.onosproject.net.meter.MeterEvent; import org.onosproject.net.meter.MeterFailReason; import org.onosproject.net.meter.MeterFeatures; +import org.onosproject.net.meter.MeterFeaturesKey; import org.onosproject.net.meter.MeterId; import org.onosproject.net.meter.MeterKey; import org.onosproject.net.meter.MeterListener; @@ -173,14 +174,26 @@ public class MeterManager extends AbstractListenerProviderRegistry { if (v == null) { return allocateCounter(k); } + if (v.get() >= mmeters) { + throw new IllegalStateException("Maximum number of meters " + + meterIdCounters.get(deviceId).get() + + " reached for device " + deviceId); + } return v; }).incrementAndGet(); - return MeterId.meterId((int) id); + return MeterId.meterId(id); } private AtomicCounter allocateCounter(DeviceId deviceId) {