Fixed bug due to wrong priority in BMv2.
In BMv2 0 is the highest priority, while it is the lowest for ONOS.
Change-Id: Iedb66598f293bf456cf4d206e19c0ff632edfd2c
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/translators/Bmv2DefaultFlowRuleTranslator.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/translators/Bmv2DefaultFlowRuleTranslator.java
index 170e955..3fa7673 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/translators/Bmv2DefaultFlowRuleTranslator.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/translators/Bmv2DefaultFlowRuleTranslator.java
@@ -260,9 +260,12 @@
Bmv2TableEntry.Builder tableEntryBuilder = Bmv2TableEntry.builder();
+ // In BMv2 0 is the highest priority, i.e. the opposite than ONOS.
+ int newPriority = Integer.MAX_VALUE - rule.priority();
+
tableEntryBuilder
.withTableName(table.name())
- .withPriority(rule.priority())
+ .withPriority(newPriority)
.withMatchKey(bmv2MatchKey)
.withAction(bmv2Action);
diff --git a/drivers/bmv2/src/test/java/org/onosproject/drivers/bmv2/Bmv2DefaultFlowRuleTranslatorTest.java b/drivers/bmv2/src/test/java/org/onosproject/drivers/bmv2/Bmv2DefaultFlowRuleTranslatorTest.java
index 2f19696..c602eea 100644
--- a/drivers/bmv2/src/test/java/org/onosproject/drivers/bmv2/Bmv2DefaultFlowRuleTranslatorTest.java
+++ b/drivers/bmv2/src/test/java/org/onosproject/drivers/bmv2/Bmv2DefaultFlowRuleTranslatorTest.java
@@ -158,7 +158,7 @@
assertThat("Incorrect ethType match param value",
ethTypeParam.value().asReadOnlyBuffer().getShort(), is(equalTo(ethType)));
assertThat("Incorrect priority value",
- entry1.priority(), is(equalTo(rule1.priority())));
+ entry1.priority(), is(equalTo(Integer.MAX_VALUE - rule1.priority())));
assertThat("Incorrect timeout value",
entry1.timeout(), is(equalTo(expectedTimeout)));