fib: Table Replace
[vpp.git] / src / vnet / ip / ip.api
index 67cdf93..b37530e 100644 (file)
@@ -29,7 +29,7 @@ import "vnet/mfib/mfib_types.api";
 /** \brief An IP table
     @param is_ipv6 - V4 or V6 table
     @param table_id - table ID associated with the route
-                      This table ID will apply to both the unicats
+                     This table ID will apply to both the unicats
                      and mlticast FIBs
     @param name - A client provided name/tag for the table. If this is
                   not set by the client, then VPP will generate something
@@ -65,6 +65,59 @@ define ip_table_dump
   u32 context;
 };
 
+/** \brief IP table replace being
+
+    The use-case is that, for some unspecified reason, the control plane
+    has a very different set of entries it wants in the table than VPP
+    currently has. The CP would thus like to 'replace' VPP's current table
+    only by specifying what the new set of entries shall be, i.e. it is not
+    going to delete anything that already eixts.
+    the CP delcartes the start of this procedure with this begin_replace
+    API Call, and when it has populated all the entries it wants, it calls
+    the below end_replace API. From this point on it is of coursce free
+    to add and delete entries as usual.
+    The underlying mechanism by which VPP implements this replace is
+    purposefully left unspecified.
+
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param table - The table to resync
+*/
+autoreply define ip_table_replace_begin
+{
+  u32 client_index;
+  u32 context;
+  vl_api_ip_table_t table;
+};
+
+/** \brief IP table replace end
+
+    see replace start/
+
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param table - The table that has converged
+*/
+autoreply define ip_table_replace_end
+{
+  u32 client_index;
+  u32 context;
+  vl_api_ip_table_t table;
+};
+
+/** \brief IP table flush
+    Flush a table of all routes
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param table - The table to flush
+*/
+autoreply define ip_table_flush
+{
+  u32 client_index;
+  u32 context;
+  vl_api_ip_table_t table;
+};
+
 /** \brief IP FIB table response
     @param context - sender context
     @param table - description of the table
@@ -496,7 +549,7 @@ define ip_address_details
 {
   u32 context;
   u32 sw_if_index;
-  vl_api_prefix_t prefix;
+  vl_api_address_with_prefix_t prefix;
 };
 
 define ip_address_dump
@@ -957,20 +1010,6 @@ define proxy_arp_intfc_details
   u32 sw_if_index;
 };
 
-/** \brief Reset fib table request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param vrf_id - vrf/table id of the fib table to reset
-    @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
-*/
-autoreply define reset_fib
-{
-  u32 client_index;
-  u32 context;
-  u32 vrf_id;
-  u8 is_ipv6;
-};
-
 /** \brief Set max allowed ARP or ip6 neighbor entries request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -1016,6 +1055,12 @@ autoreply define ioam_disable
   u16 id;
 };
 
+enum ip_reass_type
+{
+  IP_REASS_TYPE_FULL = 0,
+  IP_REASS_TYPE_SHALLOW_VIRTUAL = 0x1,
+};
+
 autoreply define ip_reassembly_set
 {
   u32 client_index;
@@ -1025,6 +1070,7 @@ autoreply define ip_reassembly_set
   u32 max_reassembly_length;
   u32 expire_walk_interval_ms;
   u8 is_ip6;
+  vl_api_ip_reass_type_t type;
 };
 
 define ip_reassembly_get
@@ -1032,6 +1078,7 @@ define ip_reassembly_get
   u32 client_index;
   u32 context;
   u8 is_ip6;
+  vl_api_ip_reass_type_t type;
 };
 
 define ip_reassembly_get_reply
@@ -1059,6 +1106,7 @@ autoreply define ip_reassembly_enable_disable
   u32 sw_if_index;
   u8 enable_ip4;
   u8 enable_ip6;
+  vl_api_ip_reass_type_t type;
 };
 
 /*