Required changes to support OF1.4, 1.5.
- OVS with OF1.4 passed `stc smoke` test
- OVS with OF1.5 still has issue
As of OVS 2.5.0, OF1.5 mode responds with ill-formed of_meter_features_stats_reply
org.projectfloodlight.openflow.exceptions.OFParseError: Wrong length: Expected=40(40), got=32
at org.projectfloodlight.openflow.protocol.ver15.OFMeterFeaturesStatsReplyVer15$Reader.readFrom(OFMeterFeaturesStatsReplyVer15.java:281)
Change-Id: Ib78b9d92ecfb4bb667e24c4ee95bcd09aec160a6
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 5e0fae4..2b003d1 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
@@ -327,6 +327,8 @@
sw.sendMsg(fact.buildFeaturesRequest().setXid(0).build());
break;
case OF_13:
+ case OF_14:
+ case OF_15:
sw.sendMsg(fact.buildPortDescStatsRequest().setXid(0).build());
break;
default:
@@ -977,11 +979,13 @@
if (status.getReason() != OFPortReason.DELETE) {
return buildPortDescription(port);
} else {
- PortNumber portNo = PortNumber.portNumber(port.getPortNo().getPortNumber());
- Port.Type type = port.getCurr().contains(OFPortFeatures.PF_FIBER) ? FIBER : COPPER;
- SparseAnnotations annotations = makePortAnnotation(port.getName(), port.getHwAddr().toString()).build();
- return new DefaultPortDescription(portNo, false, true, type,
- portSpeed(port), annotations);
+ PortDescription desc = buildPortDescription(port);
+ if (desc.isEnabled()) {
+ return DefaultPortDescription.builder(desc)
+ .isEnabled(false)
+ .build();
+ }
+ return desc;
}
}