OpenFlow message processing for new loxi
Depends-On: Id69c8597eb4564653c56cdc90f2dcec50afbdd25
Change-Id: Ib14fbadd3debf98ce1d56343179f8e7929f8ade8
diff --git a/providers/openflow/base/features.xml b/providers/openflow/base/features.xml
index f2af0c6..dc00bde 100644
--- a/providers/openflow/base/features.xml
+++ b/providers/openflow/base/features.xml
@@ -18,7 +18,7 @@
<feature name="${project.artifactId}" version="${project.version}"
description="${project.description}">
<feature>onos-api</feature>
- <bundle>mvn:org.onosproject/openflowj/0.9.7.onos</bundle>
+ <bundle>mvn:org.onosproject/openflowj/3.2.0.onos</bundle>
<bundle>mvn:${project.groupId}/onos-of-api/${project.version}</bundle>
<bundle>mvn:${project.groupId}/onos-of-ctl/${project.version}</bundle>
diff --git a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
index f9858a4..5e0fae4 100644
--- a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -110,6 +110,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.Dictionary;
+import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -364,12 +365,14 @@
OFPortMod.Builder pmb = sw.factory().buildPortMod();
OFPort port = OFPort.of((int) portNumber.toLong());
pmb.setPortNo(port);
- if (enable) {
- pmb.setConfig(0x0); // port_down bit 0
- } else {
- pmb.setConfig(0x1); // port_down bit 1
+ Set<OFPortConfig> portConfig = EnumSet.noneOf(OFPortConfig.class);
+ if (!enable) {
+ portConfig.add(OFPortConfig.PORT_DOWN);
}
- pmb.setMask(0x1);
+ pmb.setConfig(portConfig);
+ Set<OFPortConfig> portMask = EnumSet.noneOf(OFPortConfig.class);
+ portMask.add(OFPortConfig.PORT_DOWN);
+ pmb.setMask(portMask);
pmb.setAdvertise(0x0);
for (OFPortDesc pd : sw.getPorts()) {
if (pd.getPortNo().equals(port)) {
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/util/FlowEntryBuilder.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/util/FlowEntryBuilder.java
index 5c245a8..9fa03be 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/util/FlowEntryBuilder.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/util/FlowEntryBuilder.java
@@ -208,7 +208,7 @@
.withPriority(removed.getPriority())
.withIdleTimeout(removed.getIdleTimeout())
.withCookie(removed.getCookie().getValue())
- .withReason(FlowRule.FlowRemoveReason.parseShort(removed.getReason()));
+ .withReason(FlowRule.FlowRemoveReason.parseShort((short) removed.getReason().ordinal()));
if (removed.getVersion() != OFVersion.OF_10) {
builder.forTable(removed.getTableId().getValue());
diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java
index 406337b..a26e05a 100644
--- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java
+++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java
@@ -28,8 +28,10 @@
import org.slf4j.Logger;
import java.util.Collection;
+import java.util.EnumSet;
import java.util.List;
import java.util.Objects;
+import java.util.Set;
import java.util.stream.Collectors;
import static com.google.common.base.Preconditions.checkArgument;
@@ -82,37 +84,36 @@
public OFMeterMod add() {
validate();
OFMeterMod.Builder builder = builderMeterMod();
- builder.setCommand(OFMeterModCommand.ADD.ordinal());
+ builder.setCommand(OFMeterModCommand.ADD);
return builder.build();
}
public OFMeterMod remove() {
validate();
OFMeterMod.Builder builder = builderMeterMod();
- builder.setCommand(OFMeterModCommand.DELETE.ordinal());
+ builder.setCommand(OFMeterModCommand.DELETE);
return builder.build();
}
public OFMeterMod modify() {
validate();
OFMeterMod.Builder builder = builderMeterMod();
- builder.setCommand(OFMeterModCommand.MODIFY.ordinal());
+ builder.setCommand(OFMeterModCommand.MODIFY);
return builder.build();
}
private OFMeterMod.Builder builderMeterMod() {
OFMeterMod.Builder builder = factory.buildMeterMod();
- int flags = 0;
+ Set<OFMeterFlags> flags = EnumSet.noneOf(OFMeterFlags.class);
if (burst) {
- // covering loxi short comings.
- flags |= 1 << OFMeterFlags.BURST.ordinal();
+ flags.add(OFMeterFlags.BURST);
}
switch (unit) {
case PKTS_PER_SEC:
- flags |= 1 << OFMeterFlags.PKTPS.ordinal();
+ flags.add(OFMeterFlags.PKTPS);
break;
case KB_PER_SEC:
- flags |= 1 << OFMeterFlags.KBPS.ordinal();
+ flags.add(OFMeterFlags.KBPS);
break;
default:
log.warn("Unknown unit type {}", unit);