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