ONOS-7077 Openflow 1.5 OXS and stat trigger support
Change-Id: I006bcd3d8eac451a780c7e5c69a12298ead14281
diff --git a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java
index bf0af04..9bd2146 100644
--- a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java
+++ b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/DefaultOpenFlowPacketContext.java
@@ -70,14 +70,24 @@
if (isBuilt.getAndSet(true)) {
return;
}
- OFPacketOut.Builder builder = sw.factory().buildPacketOut();
OFAction act = buildOutput(outPort.getPortNumber());
- pktout = builder.setXid(pktin.getXid())
- .setInPort(pktinInPort())
- .setBufferId(OFBufferId.NO_BUFFER)
- .setData(pktin.getData())
+ pktout = createOFPacketOut(pktin.getData(), act, pktin.getXid());
+ }
+
+ private OFPacketOut createOFPacketOut(byte[] data, OFAction act, long xid) {
+ OFPacketOut.Builder builder = sw.factory().buildPacketOut();
+ if (sw.factory().getVersion().getWireVersion() <= OFVersion.OF_14.getWireVersion()) {
+ return builder.setXid(xid)
+ .setInPort(pktinInPort())
+ .setBufferId(OFBufferId.NO_BUFFER)
+ .setData(data)
// .setBufferId(pktin.getBufferId())
+ .setActions(Collections.singletonList(act)).build();
+ }
+ return builder.setXid(xid)
+ .setBufferId(OFBufferId.NO_BUFFER)
.setActions(Collections.singletonList(act))
+ .setData(data)
.build();
}
@@ -86,14 +96,8 @@
if (isBuilt.getAndSet(true)) {
return;
}
- OFPacketOut.Builder builder = sw.factory().buildPacketOut();
OFAction act = buildOutput(outPort.getPortNumber());
- pktout = builder.setXid(pktin.getXid())
- .setBufferId(OFBufferId.NO_BUFFER)
- .setInPort(pktinInPort())
- .setActions(Collections.singletonList(act))
- .setData(ethFrame.serialize())
- .build();
+ pktout = createOFPacketOut(ethFrame.serialize(), act, pktin.getXid());
}
@Override