Driver API for creating user defined groups
diff --git a/src/main/java/net/floodlightcontroller/core/IOF13Switch.java b/src/main/java/net/floodlightcontroller/core/IOF13Switch.java
index ddc6c31..f5648af 100644
--- a/src/main/java/net/floodlightcontroller/core/IOF13Switch.java
+++ b/src/main/java/net/floodlightcontroller/core/IOF13Switch.java
@@ -146,7 +146,7 @@
      * Add the OFBucket to groups that have reachability through the given port.
      * This API can be used by applications, when a port is operational again,
      * to add that port to all the relevant groups
-     * 
+     *
      * @param port Port Number to be added to groups
      * @return None
      */
@@ -169,6 +169,20 @@
     public void createTunnel(String tunnelId, List<String> route, NeighborSet ns);
 
     /**
+     * Create a group chain with the same label stack for a given set of ports
+     * in the neighborset. This can be used for a basic scenario of tunnel based
+     * policy routing.
+     *
+     * @param labelStack list of router segment Ids to be pushed
+     * @param ns neighborSet to get to the first router in the labelStack. NOTE:
+     *        The edgeLabel inside the neighborSet is ignored and user should
+     *        explicitly push that label on to the labelStack that is passed as
+     *        first argument
+     * @return group identifier
+     */
+    public int createGroup(List<Integer> labelStack, List<PortNumber> ports);
+
+    /**
      * Remove all groups for the tunnel
      *
      * @param tunnelId tunnel ID to remove
@@ -176,6 +190,14 @@
     public void removeTunnel(String tunnelId);
 
     /**
+     * Remove the specified group
+     *
+     * @param groupId group identifier
+     * @return success/fail
+     */
+    public boolean removeGroup(int groupId);
+
+    /**
      * Return the first group ID for the tunnel.
      * If the router is not the source of the tunnel, it returns -1
      *