receiving packet ins
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 c854daa..44a3a58 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
@@ -2,17 +2,24 @@
import static org.slf4j.LoggerFactory.getLogger;
+import java.nio.ByteBuffer;
+
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.DeviceId;
+import org.onlab.onos.net.PortNumber;
+import org.onlab.onos.net.packet.DefaultInboundPacket;
import org.onlab.onos.net.packet.OutboundPacket;
import org.onlab.onos.net.packet.PacketProvider;
import org.onlab.onos.net.packet.PacketProviderRegistry;
import org.onlab.onos.net.packet.PacketProviderService;
import org.onlab.onos.net.provider.AbstractProvider;
import org.onlab.onos.net.provider.ProviderId;
+import org.onlab.onos.of.controller.Dpid;
import org.onlab.onos.of.controller.OpenFlowController;
import org.onlab.onos.of.controller.OpenFlowPacketContext;
import org.onlab.onos.of.controller.PacketListener;
@@ -35,12 +42,8 @@
private PacketProviderService providerService;
- private final boolean useBDDP = true;
-
private final InternalPacketProvider listener = new InternalPacketProvider();
-
-
/**
* Creates an OpenFlow link provider.
*/
@@ -51,7 +54,7 @@
@Activate
public void activate() {
providerService = providerRegistry.register(this);
- controller.addPacketListener(0, listener);
+ controller.addPacketListener(1, listener);
log.info("Started");
}
@@ -65,18 +68,29 @@
@Override
public void emit(OutboundPacket packet) {
- // TODO Auto-generated method stub
}
+ /**
+ * Internal Packet Provider implementation.
+ *
+ */
private class InternalPacketProvider implements PacketListener {
@Override
public void handlePacket(OpenFlowPacketContext pktCtx) {
+ DeviceId id = DeviceId.deviceId(Dpid.uri(pktCtx.dpid().value()));
+ DefaultInboundPacket inPkt = new DefaultInboundPacket(
+ new ConnectPoint(id, PortNumber.portNumber(pktCtx.inPort())),
+ pktCtx.parsed(), ByteBuffer.wrap(pktCtx.unparsed()));
+ OpenFlowCorePacketContext corePktCtx =
+ new OpenFlowCorePacketContext(0, inPkt, null, false, pktCtx,
+ controller.getSwitch(pktCtx.dpid()));
+ providerService.processPacket(corePktCtx);
}
}