/*
 * Copyright (c) 2015-2016 Cisco and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

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 client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in
    @param mb_label - The MPLS label value to bind
    @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_prefix - IP prefix
*/
autoreply define mpls_ip_bind_unbind
{
  u32 client_index;
  u32 context;
  u32 mb_mpls_table_id;
  u32 mb_label;
  u32 mb_ip_table_id;
  bool mb_is_bind;
  vl_api_prefix_t mb_prefix;
};

typedef mpls_tunnel
{
  vl_api_interface_index_t mt_sw_if_index;
  u32 mt_tunnel_index;
  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;
  bool mt_is_add [default=true];
  vl_api_mpls_tunnel_t mt_tunnel;
};

/** \brief Reply for MPLS tunnel add / del request
    @param context - returned sender context, to match reply w/ request
    @param retval - return code
    @param sw_if_index - SW interface index of the tunnel created
*/
define mpls_tunnel_add_del_reply
{
  u32 context;
  i32 retval;
  vl_api_interface_index_t sw_if_index;
  u32 tunnel_index;
};

/** \brief Dump mpls eth tunnel table
    @param client_index - opaque cookie to identify the sender
    @param sw_if_index - sw_if_index of the MPLS tunnel
                         (as returned from the create)
*/
define mpls_tunnel_dump
{
  u32 client_index;
  u32 context;
  vl_api_interface_index_t sw_if_index [default=0xffffffff];
};

/** \brief 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_table_id - The MPLS table-id the route is added in
    @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 meaningful.
*/
typedef mpls_table
{
  u32 mt_table_id;
  string mt_name[64];
};
autoreply define mpls_table_add_del
{
  u32 client_index;
  u32 context;
  bool  mt_is_add [default=true];
  vl_api_mpls_table_t mt_table;
};

/** \brief Dump MPLS fib table
    @param client_index - opaque cookie to identify the sender
*/
define mpls_table_dump
{
  u32 client_index;
  u32 context;
};

define mpls_table_details
{
  u32 context;
  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 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
*/
typedef mpls_route
{
  u32 mr_table_id;
  u32 mr_label;
  /* TODO: check data type */
  u8 mr_eos;
  u8 mr_eos_proto;
  bool mr_is_multicast;
  u8 mr_n_paths;
  vl_api_fib_path_t mr_paths[mr_n_paths];
};

/** \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 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_is_multipath - Is this route update a multipath - i.e. is this
                             a path addition to an existing route
    @param mr_route - The Route
*/
define mpls_route_add_del
{
  u32 client_index;
  u32 context;
  bool mr_is_add;
  bool mr_is_multipath;
  vl_api_mpls_route_t mr_route;
};

define mpls_route_add_del_reply
{
  u32 context;
  i32 retval;
  u32 stats_index;
};

/** \brief Dump MPLS fib table
    @param client_index - opaque cookie to identify the sender
*/
define mpls_route_dump
{
  u32 client_index;
  u32 context;
  vl_api_mpls_table_t table;
};

/** \brief mpls FIB table response
    @param table_id - MPLS fib table id
    @param s_bit - End-of-stack bit
    @param label - MPLS label value
    @param count - the number of fib_path in path
    @param path  - array of of fib_path structures
*/
define mpls_route_details
{
  u32 context;
  vl_api_mpls_route_t mr_route;
};

/** \brief Enable or Disable MPLS on and interface
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param sw_if_index - index of the interface
    @param enable - if non-zero enable, else disable
*/
autoreply define sw_interface_set_mpls_enable
{
  u32 client_index;
  u32 context;
  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";
};

/*
 * Local Variables:
 * eval: (c-set-style "gnu")
 * End:
 */
