very basic broken reactive forwarding; nit yet using treatments, but rather defaulting to flood for everything
generates a ton of duplicates for now
diff --git a/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowCorePacketContext.java b/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowCorePacketContext.java
new file mode 100644
index 0000000..aeb9542
--- /dev/null
+++ b/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowCorePacketContext.java
@@ -0,0 +1,41 @@
+package org.onlab.onos.provider.of.packet.impl;
+
+import static org.slf4j.LoggerFactory.getLogger;
+
+import org.onlab.onos.net.packet.DefaultPacketContext;
+import org.onlab.onos.net.packet.InboundPacket;
+import org.onlab.onos.net.packet.OutboundPacket;
+import org.onlab.onos.of.controller.OpenFlowPacketContext;
+import org.onlab.packet.Ethernet;
+import org.projectfloodlight.openflow.types.OFPort;
+import org.slf4j.Logger;
+
+public class OpenFlowCorePacketContext extends DefaultPacketContext {
+
+ private final Logger log = getLogger(getClass());
+
+ private final OpenFlowPacketContext ofPktCtx;
+
+ protected OpenFlowCorePacketContext(long time, InboundPacket inPkt,
+ OutboundPacket outPkt, boolean block, OpenFlowPacketContext ofPktCtx) {
+ super(time, inPkt, outPkt, block);
+ this.ofPktCtx = ofPktCtx;
+ }
+
+ @Override
+ public void send() {
+ if (!this.isHandled()) {
+ block();
+ if (outPacket() == null) {
+ ofPktCtx.build(OFPort.FLOOD);
+ } else {
+ Ethernet eth = new Ethernet();
+ eth.deserialize(outPacket().data().array(), 0,
+ outPacket().data().array().length);
+ ofPktCtx.build(eth, OFPort.FLOOD);
+ }
+ ofPktCtx.send();
+ }
+ }
+
+}
diff --git a/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowPacketProvider.java b/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowPacketProvider.java
index 44a3a58..96208fc 100644
--- a/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowPacketProvider.java
+++ b/providers/of/packet/src/main/java/org/onlab/onos/provider/of/packet/impl/OpenFlowPacketProvider.java
@@ -78,7 +78,6 @@
*/
private class InternalPacketProvider implements PacketListener {
-
@Override
public void handlePacket(OpenFlowPacketContext pktCtx) {
DeviceId id = DeviceId.deviceId(Dpid.uri(pktCtx.dpid().value()));
@@ -88,8 +87,7 @@
pktCtx.parsed(), ByteBuffer.wrap(pktCtx.unparsed()));
OpenFlowCorePacketContext corePktCtx =
- new OpenFlowCorePacketContext(0, inPkt, null, false, pktCtx,
- controller.getSwitch(pktCtx.dpid()));
+ new OpenFlowCorePacketContext(0, inPkt, null, false, pktCtx);
providerService.processPacket(corePktCtx);
}