blob: aeb954241d82b8166d2ef78b7599ce998cc5d361 [file] [log] [blame]
alshabib1d4cace2014-09-13 19:16:26 -07001package org.onlab.onos.provider.of.packet.impl;
2
3import static org.slf4j.LoggerFactory.getLogger;
4
5import org.onlab.onos.net.packet.DefaultPacketContext;
6import org.onlab.onos.net.packet.InboundPacket;
7import org.onlab.onos.net.packet.OutboundPacket;
8import org.onlab.onos.of.controller.OpenFlowPacketContext;
9import org.onlab.packet.Ethernet;
10import org.projectfloodlight.openflow.types.OFPort;
11import org.slf4j.Logger;
12
13public class OpenFlowCorePacketContext extends DefaultPacketContext {
14
15 private final Logger log = getLogger(getClass());
16
17 private final OpenFlowPacketContext ofPktCtx;
18
19 protected OpenFlowCorePacketContext(long time, InboundPacket inPkt,
20 OutboundPacket outPkt, boolean block, OpenFlowPacketContext ofPktCtx) {
21 super(time, inPkt, outPkt, block);
22 this.ofPktCtx = ofPktCtx;
23 }
24
25 @Override
26 public void send() {
27 if (!this.isHandled()) {
28 block();
29 if (outPacket() == null) {
30 ofPktCtx.build(OFPort.FLOOD);
31 } else {
32 Ethernet eth = new Ethernet();
33 eth.deserialize(outPacket().data().array(), 0,
34 outPacket().data().array().length);
35 ofPktCtx.build(eth, OFPort.FLOOD);
36 }
37 ofPktCtx.send();
38 }
39 }
40
41}