* 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.
@param mb_ip_table_id - The IP table-id of the IP prefix to bind to.
@param mb_is_bind - Bind or unbind
@param mb_is_ip4 - The prefix to bind to is IPv4
- @param mb_address_length - Length of IP prefix
- @param mb_address[16] - IP prefix/
+ @param mb_prefix - IP prefix
*/
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;
};
-typeonly define mpls_tunnel
+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;
};
{
u32 context;
i32 retval;
- u32 sw_if_index;
+ vl_api_interface_index_t sw_if_index;
u32 tunnel_index;
};
{
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
@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.
*/
-typeonly define mpls_table
+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;
};
};
/** \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
*/
-typeonly define mpls_route
+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];
};
{
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;
};
@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;
{
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";
};
/*
* eval: (c-set-style "gnu")
* End:
*/
-