session: add Source Deny List

With this feature, session enable is now modified to have 3 modes of operation
session enable -- only enable session
session enable rt-backend sdl -- enable session with sdl
session enable rt-backend rule-table -- enable session with rule-table

session rule tables are now created on demand, upon adding first rule
to the rule table.

refactor session table to remove depenency from sesssion rules table. Now
session rules table APIs take srtg_handle and transport
proto instead of srt pointer.

Type: feature

Change-Id: Idde6a9b2f46b29bb931f9039636562575572aa14
Signed-off-by: Steven Luong <sluong@cisco.com>
diff --git a/src/vnet/session/session.api b/src/vnet/session/session.api
index 6affae4..26346ea 100644
--- a/src/vnet/session/session.api
+++ b/src/vnet/session/session.api
@@ -13,12 +13,19 @@
  * limitations under the License.
  */
 
-option version = "4.0.0";
+option version = "4.0.1";
 
 import "vnet/interface_types.api";
 import "vnet/ip/ip_types.api";
 
 
+typedef sdl_rule
+{
+  vl_api_prefix_t lcl;
+  u32 action_index;
+  string tag[64];
+};
+
 enum transport_proto : u8
 {
         TRANSPORT_PROTO_API_TCP,
@@ -28,6 +35,14 @@
         TRANSPORT_PROTO_API_QUIC,
 };
 
+enum rt_backend_engine : u8
+{
+        RT_BACKEND_ENGINE_API_DISABLE = 0,
+        RT_BACKEND_ENGINE_API_RULE_TABLE,
+        RT_BACKEND_ENGINE_API_NONE,
+        RT_BACKEND_ENGINE_API_SDL,
+};
+
 /** \brief Application attach to session layer
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -166,11 +181,18 @@
     @param is_enable - disable session layer if 0, enable otherwise
 */
 autoreply define session_enable_disable {
+  option deprecated;
   u32 client_index;
   u32 context;
   bool is_enable [default=true];
 };
 
+autoreply define session_enable_disable_v2 {
+  u32 client_index;
+  u32 context;
+  vl_api_rt_backend_engine_t rt_engine_type;
+};
+
 /** \brief enable/disable session layer socket api
     @param client_index - opaque cookie to identify the sender
                           client to vpp direction only
@@ -417,6 +439,42 @@
   string tag[64];
 };
 
+autoreply define session_sdl_add_del {
+  u32 client_index;
+  u32 context;
+  u32 appns_index;
+  bool is_add;
+  u32 count;
+  vl_api_sdl_rule_t r[count];
+};
+
+/** \brief Dump session sdl
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+ */
+define session_sdl_dump
+{
+  u32 client_index;
+  u32 context;
+};
+
+/** \brief Session sdl details
+    @param context - sender context, to match reply w/ request
+    @param lcl - local prefix
+    @param action_index - the only action defined now is forward to
+                          application with index action_index
+    @param appns_index - application namespace where rule is to be applied to
+    @param tag - tag
+  */
+define session_sdl_details
+{
+  u32 context;
+  vl_api_prefix_t lcl;
+  u32 action_index;
+  u32 appns_index;
+  string tag[64];
+};
+
 /*
  * Local Variables:
  * eval: (c-set-style "gnu")