[ONOS-3845] BGP FlowSpec capability handling.

Change-Id: I5368dea5a0d959399550737ccf6eb6742a7510b9
diff --git a/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpCfg.java b/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpCfg.java
index 6f64d2b..70a5c9e 100755
--- a/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpCfg.java
+++ b/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpCfg.java
@@ -61,7 +61,7 @@
     /**
      * Get the status of the link state support for this BGP speaker.
      *
-     * @return  true if the link state is supported else false
+     * @return true if the link state is supported else false
      */
     boolean getLsCapability();
 
@@ -73,6 +73,20 @@
     void setLsCapability(boolean lscapability);
 
     /**
+     * Get the status of the flow specification support for this BGP speaker.
+     *
+     * @return true if the flow specification is supported otherwise false
+     */
+    boolean flowSpecCapability();
+
+    /**
+     * Set the flow specification support to this BGP speaker.
+     *
+     * @param flowSpecCapability BGP flow specification capability support
+     */
+    void setFlowSpecCapability(boolean flowSpecCapability);
+
+    /**
      * Get the status of the 32 bit AS support for this BGP speaker.
      *
      * @return true if the 32 bit AS number is supported else false
@@ -82,7 +96,7 @@
     /**
      * Set the 32 bit AS support capability to this BGP speaker.
      *
-     * @param largeAs  true value if the 32 bit AS is supported else false
+     * @param largeAs true value if the 32 bit AS is supported else false
      */
     void setLargeASCapability(boolean largeAs);
 
@@ -166,7 +180,7 @@
     /**
      * Set the Router ID of this BGP speaker.
      *
-     * @param routerid  IP address in string format
+     * @param routerid IP address in string format
      */
     void setRouterId(String routerid);
 
@@ -174,7 +188,7 @@
      * Add the BGP peer IP address and the AS number to which it belongs.
      *
      * @param routerid IP address in string format
-     * @param remoteAs  AS number to which it belongs
+     * @param remoteAs AS number to which it belongs
      *
      * @return true if added successfully else false
      */
@@ -197,7 +211,7 @@
      * @param remoteAs AS number to which it belongs
      * @param holdTime keep alive time for the connection
      *
-     * @return  true if added successfully else false
+     * @return true if added successfully else false
      */
     boolean addPeer(String routerid, int remoteAs, short holdTime);
 
@@ -215,14 +229,14 @@
      *
      * @param routerid router IP address
      *
-     * @return  true of the configuration is found and able to connect else false
+     * @return true of the configuration is found and able to connect else false
      */
     boolean connectPeer(String routerid);
 
     /**
      * Disconnect this BGP peer with this IP address.
      *
-     * @param routerid  router IP address in string format
+     * @param routerid router IP address in string format
      *
      * @return true if the configuration is found and able to disconnect else false
      */
@@ -247,9 +261,9 @@
     /**
      * Check if this BGP peer is configured.
      *
-     * @param routerid  router IP address in string format
+     * @param routerid router IP address in string format
      *
-     * @return  true if configured exists else false
+     * @return true if configured exists else false
      */
     boolean isPeerConfigured(String routerid);
 
@@ -272,7 +286,7 @@
     /**
      * Set the current connection state information.
      *
-     * @param routerid  router IP address in string format
+     * @param routerid router IP address in string format
      * @param state state information
      */
     void setPeerConnState(String routerid, BgpPeerCfg.State state);
@@ -280,9 +294,9 @@
     /**
      * Check if the peer can be connected or not.
      *
-     * @param routerid  router IP address in string format
+     * @param routerid router IP address in string format
      *
-     * @return  true if the peer can be connected else false
+     * @return true if the peer can be connected else false
      */
     boolean isPeerConnectable(String routerid);
 
diff --git a/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpSessionInfo.java b/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpSessionInfo.java
index a21a23d..eedde14 100755
--- a/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpSessionInfo.java
+++ b/protocols/bgp/api/src/main/java/org/onosproject/bgp/controller/BgpSessionInfo.java
@@ -13,7 +13,10 @@
 
 package org.onosproject.bgp.controller;
 
+import java.util.List;
+
 import org.onosproject.bgpio.protocol.BgpVersion;
+import org.onosproject.bgpio.types.BgpValueType;
 
 /**
  * Abstraction of an BGP session info. Maintian session parameters obtained during session creation.
@@ -67,4 +70,11 @@
      * @return bgp identifier.
      */
     int remoteBgpIdentifier();
+
+    /**
+     * Gets the BGP capabilities for this BGP peer.
+     *
+     * @return BGP peer capabilities.
+     */
+    List<BgpValueType> remoteBgpCapability();
 }