mpls: add mpls_interface_dump
[vpp.git] / src / vnet / mpls / mpls.api
index 535bcea..5d775da 100644 (file)
  * limitations under the License.
  */
 
-option version = "1.1.0";
+option version = "1.1.1";
 import "vnet/fib/fib_types.api";
 import "vnet/ip/ip_types.api";
+import "vnet/interface_types.api";
 
 /** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create
            a per-prefix label entry.
@@ -35,24 +36,26 @@ autoreply define mpls_ip_bind_unbind
   u32 mb_mpls_table_id;
   u32 mb_label;
   u32 mb_ip_table_id;
-  u8 mb_is_bind;
+  bool mb_is_bind;
   vl_api_prefix_t mb_prefix;
 };
 
 typedef mpls_tunnel
 {
-  u32 mt_sw_if_index;
+  vl_api_interface_index_t mt_sw_if_index;
   u32 mt_tunnel_index;
-  u8 mt_l2_only;
-  u8 mt_is_multicast;
+  bool mt_l2_only;
+  bool mt_is_multicast;
+  string mt_tag[64];
   u8 mt_n_paths;
   vl_api_fib_path_t mt_paths[mt_n_paths];
 };
+
 define mpls_tunnel_add_del
 {
   u32 client_index;
   u32 context;
-  u8 mt_is_add;
+  bool mt_is_add [default=true];
   vl_api_mpls_tunnel_t mt_tunnel;
 };
 
@@ -65,7 +68,7 @@ define mpls_tunnel_add_del_reply
 {
   u32 context;
   i32 retval;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   u32 tunnel_index;
 };
 
@@ -78,17 +81,37 @@ define mpls_tunnel_dump
 {
   u32 client_index;
   u32 context;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index [default=0xffffffff];
 };
 
 /** \brief mpls tunnel details
 */
-manual_endian manual_print define mpls_tunnel_details
+define mpls_tunnel_details
 {
   u32 context;
   vl_api_mpls_tunnel_t mt_tunnel;
 };
 
+/** \brief Dump mpls enabled interface(s)
+    @param client_index - opaque cookie to identify the sender
+    @param sw_if_index - sw_if_index of a specific interface, or -1 (default)
+                         to return all MPLS enabled interfaces
+*/
+define mpls_interface_dump
+{
+  u32 client_index;
+  u32 context;
+  vl_api_interface_index_t sw_if_index [default=0xffffffff];
+};
+
+/** \brief mpls enabled interface details
+*/
+define mpls_interface_details
+{
+  u32 context;
+  vl_api_interface_index_t sw_if_index;
+};
+
 /** \brief MPLS Route Add / del route
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -96,18 +119,18 @@ manual_endian manual_print define mpls_tunnel_details
     @param mt_is_add - Is this a route add or delete
     @param mt_name - A client provided name/tag for the table. If this
                      is not set by the client, then VPP will generate
-                    something meaningfull.
+                    something meaningful.
 */
 typedef mpls_table
 {
   u32 mt_table_id;
-  u8  mt_name[64];
+  string mt_name[64];
 };
 autoreply define mpls_table_add_del
 {
   u32 client_index;
   u32 context;
-  u8  mt_is_add;
+  bool  mt_is_add [default=true];
   vl_api_mpls_table_t mt_table;
 };
 
@@ -127,11 +150,10 @@ define mpls_table_details
 };
 
 /** \brief MPLS Route
+    @param mr_table_id - The MPLS table-id the route is added in
     @param mr_label - The MPLS label value
     @param mr_eos - The End of stack bit
-    @param mr_eos_proto - If EOS then this is the DPO packect's proto post pop
-    @param mr_table_id - The MPLS table-id the route is added in
-    @param mr_is_add - Is this a route add or delete
+    @param mr_eos_proto - If EOS then this is the DPO packet's proto post pop
     @param mr_is_multicast - Is this a multicast route
     @param mr_n_paths - The number of paths
     @param mr_paths - The paths
@@ -140,9 +162,10 @@ typedef mpls_route
 {
   u32 mr_table_id;
   u32 mr_label;
+  /* TODO: check data type */
   u8 mr_eos;
   u8 mr_eos_proto;
-  u8 mr_is_multicast;
+  bool mr_is_multicast;
   u8 mr_n_paths;
   vl_api_fib_path_t mr_paths[mr_n_paths];
 };
@@ -160,8 +183,8 @@ define mpls_route_add_del
 {
   u32 client_index;
   u32 context;
-  u8 mr_is_add;
-  u8 mr_is_multipath;
+  bool mr_is_add;
+  bool mr_is_multipath;
   vl_api_mpls_route_t mr_route;
 };
 
@@ -189,7 +212,7 @@ define mpls_route_dump
     @param count - the number of fib_path in path
     @param path  - array of of fib_path structures
 */
-manual_endian manual_print define mpls_route_details
+define mpls_route_details
 {
   u32 context;
   vl_api_mpls_route_t mr_route;
@@ -205,8 +228,110 @@ autoreply define sw_interface_set_mpls_enable
 {
   u32 client_index;
   u32 context;
-  u32 sw_if_index;
-  u8 enable;
+  vl_api_interface_index_t sw_if_index;
+  bool enable [default=true];
+};
+
+counters mpls {
+  none {
+    severity info;
+    type counter64;
+    units "packets";
+    description "no error";
+  };
+  unknown_protocol {
+    severity error;
+    type counter64;
+    units "packets";
+    description "unknown protocol";
+  };
+  unsupported_version {
+    severity error;
+    type counter64;
+    units "packets";
+    description "unsupported version";
+  };
+  pkts_decap {
+    severity info;
+    type counter64;
+    units "packets";
+    description "MPLS input packets decapsulated";
+  };
+  pkts_encap {
+    severity info;
+    type counter64;
+    units "packets";
+    description "MPLS output packets encapsulated";
+  };
+  pkts_need_frag {
+    severity info;
+    type counter64;
+    units "packets";
+    description "MPLS output packets needs fragmentation";
+  };
+  no_label {
+    severity error;
+    type counter64;
+    units "packets";
+    description "MPLS no label for fib/dst";
+  };
+  ttl_expired {
+    severity error;
+    type counter64;
+    units "packets";
+    description "MPLS ttl expired";
+  };
+  s_not_set {
+    severity error;
+    type counter64;
+    units "packets";
+    description "MPLS s-bit not set";
+  };
+  bad_label {
+    severity error;
+    type counter64;
+    units "packets";
+    description "invalid FIB id in label";
+  };
+  not_ip4 {
+    severity error;
+    type counter64;
+    units "packets";
+    description "non-ip4 packets dropped";
+  };
+  disallowed_fib {
+    severity error;
+    type counter64;
+    units "packets";
+    description "disallowed FIB id";
+  };
+  not_enabled {
+    severity error;
+    type counter64;
+    units "packets";
+    description "MPLS not enabled";
+  };
+  drop {
+    severity error;
+    type counter64;
+    units "packets";
+    description "MPLS DROP DPO";
+  };
+  punt {
+    severity error;
+    type counter64;
+    units "packets";
+    description "MPLS PUNT DPO";
+  };
+};
+
+paths {
+  "/err/mpls-input" "mpls";
+  "/err/mpls-output" "mpls";
+  "/err/mpls-lookup" "mpls";
+  "/err/mpls-midchain" "mpls";
+  "/err/mpls-adj-incomplete" "mpls";
+  "/err/mpls-frag" "mpls";
 };
 
 /*
@@ -214,4 +339,3 @@ autoreply define sw_interface_set_mpls_enable
  * eval: (c-set-style "gnu")
  * End:
  */