avoid other OF listeners overwriting the priority of another listener
diff --git a/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java b/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java
index 8f6c612..ff9a996 100644
--- a/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java
+++ b/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java
@@ -1,5 +1,10 @@
 package org.onlab.onos.provider.of.link.impl;
 
+import static org.slf4j.LoggerFactory.getLogger;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -13,9 +18,9 @@
 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.OpenFlowSwitch;
 import org.onlab.onos.of.controller.OpenFlowSwitchListener;
-import org.onlab.onos.of.controller.OpenFlowPacketContext;
 import org.onlab.onos.of.controller.PacketListener;
 import org.projectfloodlight.openflow.protocol.OFPortConfig;
 import org.projectfloodlight.openflow.protocol.OFPortDesc;
@@ -23,11 +28,6 @@
 import org.projectfloodlight.openflow.protocol.OFPortStatus;
 import org.slf4j.Logger;
 
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
 /**
  * Provider which uses an OpenFlow controller to detect network
  * infrastructure links.
@@ -93,7 +93,7 @@
                 return;
             }
             if (ld.handleLLDP(pktCtx.unparsed(), pktCtx.inPort())) {
-                pktCtx.block();
+                pktCtx.blocked();
             }
 
         }
@@ -101,7 +101,7 @@
         @Override
         public void switchAdded(Dpid dpid) {
             discoverers.put(dpid, new LinkDiscovery(controller.getSwitch(dpid),
-                                                    controller, providerService, useBDDP));
+                    controller, providerService, useBDDP));
 
         }
 
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
index aeb9542..55476d0 100644
--- 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
@@ -2,6 +2,11 @@
 
 import static org.slf4j.LoggerFactory.getLogger;
 
+import java.util.List;
+
+import org.onlab.onos.net.PortNumber;
+import org.onlab.onos.net.flow.Instruction;
+import org.onlab.onos.net.flow.Instruction.Type;
 import org.onlab.onos.net.packet.DefaultPacketContext;
 import org.onlab.onos.net.packet.InboundPacket;
 import org.onlab.onos.net.packet.OutboundPacket;
@@ -24,18 +29,36 @@
 
     @Override
     public void send() {
-        if (!this.isHandled()) {
-            block();
+        if (!this.blocked()) {
             if (outPacket() == null) {
-                ofPktCtx.build(OFPort.FLOOD);
+                sendBufferedPacket();
             } else {
                 Ethernet eth = new Ethernet();
                 eth.deserialize(outPacket().data().array(), 0,
                         outPacket().data().array().length);
                 ofPktCtx.build(eth, OFPort.FLOOD);
             }
-            ofPktCtx.send();
+
         }
     }
 
+    @SuppressWarnings({ "rawtypes", "unchecked" })
+    private void sendBufferedPacket() {
+        List<Instruction> ins = treatmentBuilder().build().instructions();
+        OFPort p = null;
+        //TODO: support arbitrary list of treatments
+        for (Instruction i : ins) {
+            if (i.type() == Type.OUTPUT) {
+                p = buildPort(((Instruction<PortNumber>) i).instruction());
+                break; //for now...
+            }
+        }
+        ofPktCtx.build(p);
+        ofPktCtx.send();
+    }
+
+    private OFPort buildPort(PortNumber port) {
+        return OFPort.of((int) port.toLong());
+    }
+
 }