From 9e0efc74becfd1ae5cea100911a9e9f62a4ec1b8 Mon Sep 17 00:00:00 2001 From: Ryan Izard <rizard@g.clemson.edu> Date: Tue, 9 Jun 2015 09:01:58 -0500 Subject: [PATCH] Revert "writePacketOutForPacketIn to OFMessageUtils" --- .../learningswitch/LearningSwitch.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitch.java b/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitch.java index 562c64d93..bbc1a0104 100644 --- a/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitch.java +++ b/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitch.java @@ -354,8 +354,27 @@ implements IFloodlightModule, ILearningSwitchService, IOFMessageListener { * @param egressPort The switchport to output the PacketOut. */ private void writePacketOutForPacketIn(IOFSwitch sw, OFPacketIn packetInMessage, OFPort egressPort) { - OFMessageUtils.writePacketOutForPacketIn(sw, packetInMessage, egressPort); + OFPacketOut.Builder pob = sw.getOFFactory().buildPacketOut(); + + // Set buffer_id, in_port, actions_len + pob.setBufferId(packetInMessage.getBufferId()); + pob.setInPort(packetInMessage.getVersion().compareTo(OFVersion.OF_12) < 0 ? packetInMessage.getInPort() : packetInMessage.getMatch().get(MatchField.IN_PORT)); + + // set actions + List<OFAction> actions = new ArrayList<OFAction>(1); + actions.add(sw.getOFFactory().actions().buildOutput().setPort(egressPort).setMaxLen(0xffFFffFF).build()); + pob.setActions(actions); + + // set data - only if buffer_id == -1 + if (packetInMessage.getBufferId() == OFBufferId.NO_BUFFER) { + byte[] packetData = packetInMessage.getData(); + pob.setData(packetData); + } + + // and write it out counterPacketOut.increment(); + sw.write(pob.build()); + } protected Match createMatchFromPacket(IOFSwitch sw, OFPort inPort, FloodlightContext cntx) { -- GitLab