aboutsummaryrefslogtreecommitdiffstats
path: root/extras/router-plugin/rtinject/tap_inject.c
diff options
context:
space:
mode:
Diffstat (limited to 'extras/router-plugin/rtinject/tap_inject.c')
-rw-r--r--extras/router-plugin/rtinject/tap_inject.c161
1 files changed, 78 insertions, 83 deletions
diff --git a/extras/router-plugin/rtinject/tap_inject.c b/extras/router-plugin/rtinject/tap_inject.c
index f41ae86c8..7befb3862 100644
--- a/extras/router-plugin/rtinject/tap_inject.c
+++ b/extras/router-plugin/rtinject/tap_inject.c
@@ -16,10 +16,10 @@
#include "tap_inject.h"
-#include <vnet/mfib/mfib_table.h>
+#include <vnet/fib/fib.h>
#include <vnet/ip/ip.h>
#include <vnet/ip/lookup.h>
-#include <vnet/fib/fib.h>
+#include <vnet/mfib/mfib_table.h>
static tap_inject_main_t tap_inject_main;
extern dpo_type_t tap_inject_dpo_type;
@@ -33,7 +33,7 @@ tap_inject_get_main (void)
void
tap_inject_insert_tap (u32 sw_if_index, u32 tap_fd, u32 tap_if_index)
{
- tap_inject_main_t * im = tap_inject_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
vec_validate_init_empty (im->sw_if_index_to_tap_fd, sw_if_index, ~0);
vec_validate_init_empty (im->sw_if_index_to_tap_if_index, sw_if_index, ~0);
@@ -51,7 +51,7 @@ tap_inject_insert_tap (u32 sw_if_index, u32 tap_fd, u32 tap_if_index)
void
tap_inject_delete_tap (u32 sw_if_index)
{
- tap_inject_main_t * im = tap_inject_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
u32 tap_fd = im->sw_if_index_to_tap_fd[sw_if_index];
u32 tap_if_index = im->sw_if_index_to_tap_if_index[sw_if_index];
@@ -65,7 +65,7 @@ tap_inject_delete_tap (u32 sw_if_index)
u32
tap_inject_lookup_tap_fd (u32 sw_if_index)
{
- tap_inject_main_t * im = tap_inject_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
vec_validate_init_empty (im->sw_if_index_to_tap_fd, sw_if_index, ~0);
return im->sw_if_index_to_tap_fd[sw_if_index];
@@ -74,7 +74,7 @@ tap_inject_lookup_tap_fd (u32 sw_if_index)
u32
tap_inject_lookup_sw_if_index_from_tap_fd (u32 tap_fd)
{
- tap_inject_main_t * im = tap_inject_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
vec_validate_init_empty (im->tap_fd_to_sw_if_index, tap_fd, ~0);
return im->tap_fd_to_sw_if_index[tap_fd];
@@ -83,25 +83,24 @@ tap_inject_lookup_sw_if_index_from_tap_fd (u32 tap_fd)
u32
tap_inject_lookup_sw_if_index_from_tap_if_index (u32 tap_if_index)
{
- tap_inject_main_t * im = tap_inject_get_main ();
- uword * sw_if_index;
+ tap_inject_main_t *im = tap_inject_get_main ();
+ uword *sw_if_index;
sw_if_index = hash_get (im->tap_if_index_to_sw_if_index, tap_if_index);
- return sw_if_index ? *(u32 *)sw_if_index : ~0;
+ return sw_if_index ? *(u32 *) sw_if_index : ~0;
}
/* *INDENT-OFF* */
VLIB_PLUGIN_REGISTER () = {
- // .version = VPP_BUILD_VER, FIXME
- .description = "router",
+ // .version = VPP_BUILD_VER, FIXME
+ .description = "router",
};
/* *INDENT-ON* */
-
static void
tap_inject_disable (void)
{
- tap_inject_main_t * im = tap_inject_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
im->flags &= ~TAP_INJECT_F_ENABLED;
@@ -111,8 +110,8 @@ tap_inject_disable (void)
static clib_error_t *
tap_inject_enable (void)
{
- vlib_main_t * vm = vlib_get_main ();
- tap_inject_main_t * im = tap_inject_get_main ();
+ vlib_main_t *vm = vlib_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
if (tap_inject_is_enabled ())
return 0;
@@ -127,7 +126,8 @@ tap_inject_enable (void)
}
/* Register ARP and ICMP6 as neighbor nodes. */
- ethernet_register_input_type (vm, ETHERNET_TYPE_ARP, im->neighbor_node_index);
+ ethernet_register_input_type (vm, ETHERNET_TYPE_ARP,
+ im->neighbor_node_index);
ip6_register_protocol (IP_PROTOCOL_ICMP6, im->neighbor_node_index);
/* Register remaining protocols. */
@@ -147,26 +147,25 @@ tap_inject_enable (void)
const mfib_prefix_t pfx_224_0_0_0 = {
.fp_len = 24,
.fp_proto = FIB_PROTOCOL_IP4,
- .fp_grp_addr = {
- .ip4.as_u32 = clib_host_to_net_u32(0xe0000000),
- },
- .fp_src_addr = {
- .ip4.as_u32 = 0,
- },
+ .fp_grp_addr =
+ {
+ .ip4.as_u32 = clib_host_to_net_u32(0xe0000000),
+ },
+ .fp_src_addr =
+ {
+ .ip4.as_u32 = 0,
+ },
};
- dpo_set(&dpo, tap_inject_dpo_type, DPO_PROTO_IP4, ~0);
+ dpo_set (&dpo, tap_inject_dpo_type, DPO_PROTO_IP4, ~0);
- index_t repi = replicate_create(1, DPO_PROTO_IP4);
- replicate_set_bucket(repi, 0, &dpo);
+ index_t repi = replicate_create (1, DPO_PROTO_IP4);
+ replicate_set_bucket (repi, 0, &dpo);
- mfib_table_entry_special_add(0,
- &pfx_224_0_0_0,
- MFIB_SOURCE_API,
- MFIB_ENTRY_FLAG_ACCEPT_ALL_ITF,
- repi);
+ mfib_table_entry_special_add (0, &pfx_224_0_0_0, MFIB_SOURCE_API,
+ MFIB_ENTRY_FLAG_ACCEPT_ALL_ITF, repi);
- dpo_reset(&dpo);
+ dpo_reset (&dpo);
}
im->flags |= TAP_INJECT_F_ENABLED;
@@ -175,24 +174,24 @@ tap_inject_enable (void)
}
static uword
-tap_inject_iface_isr (vlib_main_t * vm, vlib_node_runtime_t * node,
- vlib_frame_t * f)
+tap_inject_iface_isr (vlib_main_t *vm, vlib_node_runtime_t *node,
+ vlib_frame_t *f)
{
- tap_inject_main_t * im = tap_inject_get_main ();
- vnet_hw_interface_t * hw;
- u32 * hw_if_index;
- clib_error_t * err = 0;
+ tap_inject_main_t *im = tap_inject_get_main ();
+ vnet_hw_interface_t *hw;
+ u32 *hw_if_index;
+ clib_error_t *err = 0;
vec_foreach (hw_if_index, im->interfaces_to_enable)
{
hw = vnet_get_hw_interface (vnet_get_main (), *hw_if_index);
if (hw->hw_class_index == ethernet_hw_interface_class.index)
- {
- err = tap_inject_tap_connect (hw);
- if (err)
- break;
- }
+ {
+ err = tap_inject_tap_connect (hw);
+ if (err)
+ break;
+ }
}
vec_foreach (hw_if_index, im->interfaces_to_disable)
@@ -212,13 +211,12 @@ VLIB_REGISTER_NODE (tap_inject_iface_isr_node, static) = {
.vector_size = sizeof (u32),
};
-
static clib_error_t *
-tap_inject_interface_add_del (struct vnet_main_t * vnet_main, u32 hw_if_index,
- u32 add)
+tap_inject_interface_add_del (struct vnet_main_t *vnet_main, u32 hw_if_index,
+ u32 add)
{
- vlib_main_t * vm = vlib_get_main ();
- tap_inject_main_t * im = tap_inject_get_main ();
+ vlib_main_t *vm = vlib_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
if (!tap_inject_is_config_enabled ())
return 0;
@@ -237,15 +235,14 @@ tap_inject_interface_add_del (struct vnet_main_t * vnet_main, u32 hw_if_index,
VNET_HW_INTERFACE_ADD_DEL_FUNCTION (tap_inject_interface_add_del);
-
static clib_error_t *
tap_inject_enable_disable_all_interfaces (int enable)
{
- vnet_main_t * vnet_main = vnet_get_main ();
- tap_inject_main_t * im = tap_inject_get_main ();
- vnet_hw_interface_t * interfaces;
- vnet_hw_interface_t * hw;
- u32 ** indices;
+ vnet_main_t *vnet_main = vnet_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
+ vnet_hw_interface_t *interfaces;
+ vnet_hw_interface_t *hw;
+ u32 **indices;
if (enable)
tap_inject_enable ();
@@ -255,7 +252,8 @@ tap_inject_enable_disable_all_interfaces (int enable)
/* Collect all the interface indices. */
interfaces = vnet_main->interface_main.hw_interfaces;
indices = enable ? &im->interfaces_to_enable : &im->interfaces_to_disable;
- pool_foreach (hw, interfaces, vec_add1 (*indices, hw - interfaces));
+ pool_foreach (hw, interfaces, vec_add1 (*indices, hw - interfaces))
+ ;
if (tap_inject_iface_isr (vlib_get_main (), 0, 0))
return clib_error_return (0, "tap-inject interface add del isr failed");
@@ -264,26 +262,26 @@ tap_inject_enable_disable_all_interfaces (int enable)
}
static clib_error_t *
-tap_inject_cli (vlib_main_t * vm, unformat_input_t * input,
- vlib_cli_command_t * cmd)
+tap_inject_cli (vlib_main_t *vm, unformat_input_t *input,
+ vlib_cli_command_t *cmd)
{
- tap_inject_main_t * im = tap_inject_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
if (cmd->function_arg)
{
- clib_error_t * err;
+ clib_error_t *err;
if (tap_inject_is_config_disabled ())
- return clib_error_return (0,
- "tap-inject is disabled in config, thus cannot be enabled.");
+ return clib_error_return (
+ 0, "tap-inject is disabled in config, thus cannot be enabled.");
/* Enable */
err = tap_inject_enable_disable_all_interfaces (1);
if (err)
- {
- tap_inject_enable_disable_all_interfaces (0);
- return err;
- }
+ {
+ tap_inject_enable_disable_all_interfaces (0);
+ return err;
+ }
im->flags |= TAP_INJECT_F_CONFIG_ENABLE;
}
@@ -311,13 +309,12 @@ VLIB_CLI_COMMAND (tap_inject_disable_cmd, static) = {
.function_arg = 0,
};
-
static clib_error_t *
-show_tap_inject (vlib_main_t * vm, unformat_input_t * input,
- vlib_cli_command_t * cmd)
+show_tap_inject (vlib_main_t *vm, unformat_input_t *input,
+ vlib_cli_command_t *cmd)
{
- vnet_main_t * vnet_main = vnet_get_main ();
- tap_inject_main_t * im = tap_inject_get_main ();
+ vnet_main_t *vnet_main = vnet_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
u32 k, v;
if (tap_inject_is_config_disabled ())
@@ -333,10 +330,9 @@ show_tap_inject (vlib_main_t * vm, unformat_input_t * input,
}
hash_foreach (k, v, im->tap_if_index_to_sw_if_index, {
- vlib_cli_output (vm, "%U -> %U",
- format_vnet_sw_interface_name, vnet_main,
- vnet_get_sw_interface (vnet_main, v),
- format_tap_inject_tap_name, k);
+ vlib_cli_output (vm, "%U -> %U", format_vnet_sw_interface_name, vnet_main,
+ vnet_get_sw_interface (vnet_main, v),
+ format_tap_inject_tap_name, k);
});
return 0;
@@ -348,31 +344,30 @@ VLIB_CLI_COMMAND (show_tap_inject_cmd, static) = {
.function = show_tap_inject,
};
-
static clib_error_t *
-tap_inject_config (vlib_main_t * vm, unformat_input_t * input)
+tap_inject_config (vlib_main_t *vm, unformat_input_t *input)
{
- tap_inject_main_t * im = tap_inject_get_main ();
+ tap_inject_main_t *im = tap_inject_get_main ();
while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
{
if (unformat (input, "enable"))
- im->flags |= TAP_INJECT_F_CONFIG_ENABLE;
+ im->flags |= TAP_INJECT_F_CONFIG_ENABLE;
else if (unformat (input, "disable"))
- im->flags |= TAP_INJECT_F_CONFIG_DISABLE;
+ im->flags |= TAP_INJECT_F_CONFIG_DISABLE;
else if (unformat (input, "netlink-only"))
- im->flags |= TAP_INJECT_F_CONFIG_NETLINK;
+ im->flags |= TAP_INJECT_F_CONFIG_NETLINK;
else
- return clib_error_return (0, "syntax error `%U'",
- format_unformat_error, input);
+ return clib_error_return (0, "syntax error `%U'",
+ format_unformat_error, input);
}
if (tap_inject_is_config_enabled () && tap_inject_is_config_disabled ())
- return clib_error_return (0,
- "tap-inject cannot be both enabled and disabled.");
+ return clib_error_return (
+ 0, "tap-inject cannot be both enabled and disabled.");
return 0;
}