merge
diff --git a/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java b/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
index 0dd6aef..bc0b425 100644
--- a/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
+++ b/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
@@ -100,8 +100,8 @@
             // Otherwise, get a set of paths that lead from here to the
             // destination edge switch.
             Set<Path> paths = topologyService.getPaths(topologyService.currentTopology(),
-                                                       context.inPacket().receivedFrom().deviceId(),
-                                                       dst.location().deviceId());
+                    context.inPacket().receivedFrom().deviceId(),
+                    dst.location().deviceId());
             if (paths.isEmpty()) {
                 // If there are no paths, flood and bail.
                 flood(context);
@@ -136,7 +136,7 @@
     // Floods the specified packet.
     private void flood(PacketContext context) {
         if (topologyService.isBroadcastPoint(topologyService.currentTopology(),
-                                             context.inPacket().receivedFrom())) {
+                context.inPacket().receivedFrom())) {
             packetOutFlood(context);
         } else {
             context.block();
@@ -151,18 +151,22 @@
 
     // Install a rule forwarding the packet to the specified port.
     private void installRule(PacketContext context, PortNumber portNumber) {
+        // we don't yet support bufferids in the flowservice so packet out and
+        // then install a flowmod.
+        packetOutFlood(context);
+
         Ethernet inPkt = context.inPacket().parsed();
         TrafficSelector.Builder builder = new DefaultTrafficSelector.Builder();
         builder.add(Criteria.matchEthType(inPkt.getEtherType()))
-                .add(Criteria.matchEthSrc(inPkt.getSourceMAC()))
-                .add(Criteria.matchEthDst(inPkt.getDestinationMAC()))
-                .add(Criteria.matchInPort(context.inPacket().receivedFrom().port()));
+        .add(Criteria.matchEthSrc(inPkt.getSourceMAC()))
+        .add(Criteria.matchEthDst(inPkt.getDestinationMAC()))
+        .add(Criteria.matchInPort(context.inPacket().receivedFrom().port()));
 
         TrafficTreatment.Builder treat = new DefaultTrafficTreatment.Builder();
         treat.add(Instructions.createOutput(portNumber));
 
         FlowRule f = new DefaultFlowRule(context.inPacket().receivedFrom().deviceId(),
-                                         builder.build(), treat.build());
+                builder.build(), treat.build());
 
         flowRuleService.applyFlowRules(f);
 
diff --git a/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java b/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java
index 5b6d109..45f615a 100644
--- a/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java
+++ b/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java
@@ -78,7 +78,8 @@
         return new Dpid(sw.getId());
     }
 
-    public static OpenFlowPacketContext packetContextFromPacketIn(OpenFlowSwitch s, OFPacketIn pkt) {
+    public static OpenFlowPacketContext packetContextFromPacketIn(OpenFlowSwitch s,
+            OFPacketIn pkt) {
         return new DefaultOpenFlowPacketContext(s, pkt);
     }
 
diff --git a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/Controller.java b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/Controller.java
index d8cec26..061f5bf 100644
--- a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/Controller.java
+++ b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/Controller.java
@@ -53,8 +53,6 @@
     protected static final OFFactory FACTORY13 = OFFactories.getFactory(OFVersion.OF_13);
     protected static final OFFactory FACTORY10 = OFFactories.getFactory(OFVersion.OF_10);
 
-
-
     // The controllerNodeIPsCache maps Controller IDs to their IP address.
     // It's only used by handleControllerNodeIPsChanged
     protected HashMap<String, String> controllerNodeIPsCache;
@@ -68,16 +66,12 @@
     // Start time of the controller
     protected long systemStartTime;
 
-    // Flag to always flush flow table on switch reconnect (HA or otherwise)
-    protected boolean alwaysClearFlowsOnSwAdd = false;
     private OpenFlowAgent agent;
 
     private NioServerSocketChannelFactory execFactory;
 
     // Perf. related configuration
     protected static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024;
-    protected static final int BATCH_MAX_SIZE = 100;
-    protected static final boolean ALWAYS_DECODE_ETH = true;
 
     // ***************
     // Getters/Setters
diff --git a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OFChannelHandler.java b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OFChannelHandler.java
index 4218f44..adcb990 100644
--- a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OFChannelHandler.java
+++ b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OFChannelHandler.java
@@ -538,43 +538,41 @@
             @Override
             void processOFStatisticsReply(OFChannelHandler h,
                     OFStatsReply m) {
-                h.sw.handleMessage(m);
+                h.dispatchMessage(m);
             }
 
             @Override
             void processOFExperimenter(OFChannelHandler h, OFExperimenter m)
-                    throws IOException, SwitchStateException {
+                    throws SwitchStateException {
                 h.sw.handleNiciraRole(m);
             }
 
             @Override
             void processOFRoleReply(OFChannelHandler h, OFRoleReply m)
-                    throws SwitchStateException, IOException {
+                    throws SwitchStateException {
                 h.sw.handleRole(m);
             }
 
             @Override
             void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
-                    throws IOException, SwitchStateException {
+                    throws SwitchStateException {
                 handlePortStatusMessage(h, m, true);
                 h.dispatchMessage(m);
             }
 
             @Override
-            void processOFPacketIn(OFChannelHandler h, OFPacketIn m)
-                    throws IOException {
+            void processOFPacketIn(OFChannelHandler h, OFPacketIn m) {
                 h.dispatchMessage(m);
             }
 
             @Override
             void processOFFlowRemoved(OFChannelHandler h,
-                    OFFlowRemoved m) throws IOException {
+                    OFFlowRemoved m) {
                 h.dispatchMessage(m);
             }
 
             @Override
-            void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m)
-                    throws IOException {
+            void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m) {
                 h.dispatchMessage(m);
             }
 
@@ -1092,7 +1090,7 @@
         return this.state.isHandshakeComplete();
     }
 
-    private void dispatchMessage(OFMessage m) throws IOException {
+    private void dispatchMessage(OFMessage m) {
         sw.handleMessage(m);
     }