Added ability to poll flow counters in BMv2
Also fixed few minor things here and there.
Change-Id: Ib5e6a92de46870f52510cd6fad0cef8da022bb62
diff --git a/protocols/bmv2/src/main/java/org/onosproject/bmv2/ctl/Bmv2ThriftClient.java b/protocols/bmv2/src/main/java/org/onosproject/bmv2/ctl/Bmv2ThriftClient.java
index 66229b0..5e6cbd9 100644
--- a/protocols/bmv2/src/main/java/org/onosproject/bmv2/ctl/Bmv2ThriftClient.java
+++ b/protocols/bmv2/src/main/java/org/onosproject/bmv2/ctl/Bmv2ThriftClient.java
@@ -44,6 +44,7 @@
import org.onosproject.bmv2.api.runtime.Bmv2ValidMatchParam;
import org.onosproject.net.DeviceId;
import org.p4.bmv2.thrift.BmAddEntryOptions;
+import org.p4.bmv2.thrift.BmCounterValue;
import org.p4.bmv2.thrift.BmMatchParam;
import org.p4.bmv2.thrift.BmMatchParamExact;
import org.p4.bmv2.thrift.BmMatchParamLPM;
@@ -477,6 +478,24 @@
}
@Override
+ public Pair<Long, Long> readTableEntryCounter(String tableName, long entryId) throws Bmv2RuntimeException {
+
+ LOG.debug("Reading table entry counters... > deviceId={}, tableName={}, entryId={}",
+ deviceId, tableName, entryId);
+
+ try {
+ BmCounterValue counterValue = standardClient.bm_mt_read_counter(CONTEXT_ID, tableName, entryId);
+ LOG.debug("Table entry counters retrieved! > deviceId={}, tableName={}, entryId={}, bytes={}, packets={}",
+ deviceId, tableName, entryId, counterValue.bytes, counterValue.packets);
+ return Pair.of(counterValue.bytes, counterValue.packets);
+ } catch (TException e) {
+ LOG.debug("Exception while reading table counters: {} > deviceId={}, tableName={}, entryId={}",
+ e.toString(), deviceId);
+ throw new Bmv2RuntimeException(e.getMessage(), e);
+ }
+ }
+
+ @Override
public String getJsonConfigMd5() throws Bmv2RuntimeException {
LOG.debug("Getting device config md5... > deviceId={}", deviceId);