Fixing a race condition which prevented barrier-replies from being recognized.
Uncommenting MPLS actions in driver, and creating new action of BoS, even though we do not push actions in flow-mods.

Change-Id: I333023b4ef88c9328d6c63c7f988b5e2225a19f3
diff --git a/src/main/java/net/floodlightcontroller/core/IOF13Switch.java b/src/main/java/net/floodlightcontroller/core/IOF13Switch.java
index 71a14e7..846197c 100644
--- a/src/main/java/net/floodlightcontroller/core/IOF13Switch.java
+++ b/src/main/java/net/floodlightcontroller/core/IOF13Switch.java
@@ -134,12 +134,12 @@
     public void removePortFromGroups(PortNumber port);
 
     public void addPortToGroups(PortNumber port);
+
     /**
      * give string tableType (ip, mpls, acl)
      * @param tableType  String equal to only one of (ip, mpls, acl)
      * @return TableId
      */
-
     public TableId getTableId(String tableType);
 
     public int createTunnel(int tunnelId, List<String> route, NeighborSet ns);
diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java
index 236ed06..a610c0d 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java
@@ -1332,10 +1332,10 @@
                 .buildBarrierRequest()
                 .setXid(xid)
                 .build();
-        write(Collections.singletonList(br));
         OFBarrierReplyFuture future = new OFBarrierReplyFuture(threadPool, this,
                 (int) xid);
         barrierFutureMap.put(xid, future);
+        write(Collections.singletonList(br));
         return future;
     }
 
@@ -1344,6 +1344,10 @@
         if (f != null) {
             f.deliverFuture(this, br);
             barrierFutureMap.remove(br.getXid());
+        } else {
+            log.warn("Rcvd unknown barrier reply xid: {} from sw: {}",
+                    br.getXid(), getStringId());
+
         }
     }
 }