aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/svs/CMakeLists.txt
AgeCommit message (Expand)AuthorFilesLines
2019-09-27svs: remove api boilerplateOle Troan1-4/+0
2018-10-01Source VRF SelectNeale Ranns1-0/+25
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
/* Hey Emacs use -*- mode: C -*- */
/*
 * Copyright (c) 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.
 */

/**
 * @file
 *   This file defines the vpp control-plane API messages
 *   used to control the Source VRF select (SVS) plugin
 */

option version = "1.0.0";
import "vnet/ip/ip_types.api";
import "vnet/interface_types.api";

/**
 * brief Get the plugin version
 * @param client_index - opaque cookie to identify the sender
 *@param context - sender context, to match reply w/ request
 */
define svs_plugin_get_version
{
  u32 client_index;
  u32 context;
};

/**
 * @brief Reply to get the plugin version
 * @param context - returned sender context, to match reply w/ request
 * @param major - Incremented every time a known breaking behavior change is introduced
 * @param minor - Incremented with small changes, may be used to avoid buggy versions
 */
define svs_plugin_get_version_reply
{
  u32 context;
  u32 major;
  u32 minor;
};

/**
 * @brief Add a table in which to add routes that will match against source
 *        addresses
 * @param client_index - opaque cookie to identify the sender
 * @param context - sender context, to match reply w/ request
 * @param af - Address Family
 * @param table_id - User provided ID for the table
 * @param is_add - add or delete
 */
autoreply define svs_table_add_del
{
  u32 client_index;
  u32 context;
  bool is_add;
  vl_api_address_family_t af;
  u32 table_id;
};

/**
 * @brief Add a route into the source address matching table
 * @param client_index - opaque cookie to identify the sender
 * @param context - sender context, to match reply w/ request
 * @param prefix - prefix
 * @param table_id - The SVS table (from svs_table_add_del)
 * @param source_table_id - This is the table ID that will be used for
 *                          the subsequent lookup of the packet. The V in SVS.
 *                          this table must exist (from e.g. ip_table_add_del)
 */
autoreply define svs_route_add_del
{
  u32 client_index;
  u32 context;
  bool is_add;
  vl_api_prefix_t prefix;
  u32 table_id;
  u32 source_table_id;
};

/**
 * @brief Enable SVS on a given interface by using the given table to match
 *        RX'd packets' source addresses
 * @param client_index - opaque cookie to identify the sender
 * @param context - sender context, to match reply w/ request
 * @param af - Address Family
 * @param table_id - The SVS table (from svs_table_add_del)
 * @param sw_if_index - Interface
 */
autoreply define svs_enable_disable
{
  u32 client_index;
  u32 context;
  bool is_enable;
  vl_api_address_family_t af;
  u32 table_id;
  vl_api_interface_index_t sw_if_index;
};

/**
 * @brief Dump the SVS table mappings of table_id to interface
 *        To see the routes added to a given table use ip_fib_dump()
 */
define svs_dump
{
  u32 client_index;
  u32 context;
};

/**
 * @brief SVS table-id to interface mapping
 * @param context - sender context, to match reply w/ request
 * @param af - Address Family
 * @param table_id - The SVS table (from svs_table_add_del)
 * @param sw_if_index - Interface
 */
define svs_details
{
  u32 context;
  u32 table_id;
  vl_api_interface_index_t sw_if_index;
  vl_api_address_family_t af;
};