X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Fvxlan-gpe%2Fvxlan_gpe.c;h=fae481c36bb4afaba037422c084ff48b55ef767e;hb=0bfe5d8c792abcdbcf27bfcc7b7b353fba04aee2;hp=e032d568c971969de9a8fa0c82d1d74daa79cb6a;hpb=4fe2291bbdf67251bb42ce742d8d481b901e1d1c;p=vpp.git diff --git a/vnet/vnet/vxlan-gpe/vxlan_gpe.c b/vnet/vnet/vxlan-gpe/vxlan_gpe.c index e032d568c97..fae481c36bb 100644 --- a/vnet/vnet/vxlan-gpe/vxlan_gpe.c +++ b/vnet/vnet/vxlan-gpe/vxlan_gpe.c @@ -12,11 +12,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/** + * @file + * @brief Common utility functions for IPv4 and IPv6 VXLAN GPE tunnels + * +*/ #include +#include #include vxlan_gpe_main_t vxlan_gpe_main; +/** + * @brief Tracing function for VXLAN GPE tunnel packets + * + * @param *s formatting string + * @param *args + * + * @return *s formatted string + * + */ u8 * format_vxlan_gpe_tunnel (u8 * s, va_list * args) { vxlan_gpe_tunnel_t * t = va_arg (*args, vxlan_gpe_tunnel_t *); @@ -54,13 +69,21 @@ u8 * format_vxlan_gpe_tunnel (u8 * s, va_list * args) return s; } +/** + * @brief Naming for VXLAN GPE tunnel + * + * @param *s formatting string + * @param *args + * + * @return *s formatted string + * + */ static u8 * format_vxlan_gpe_name (u8 * s, va_list * args) { u32 dev_instance = va_arg (*args, u32); return format (s, "vxlan_gpe_tunnel%d", dev_instance); } - static uword dummy_interface_tx (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) @@ -68,6 +91,17 @@ static uword dummy_interface_tx (vlib_main_t * vm, clib_warning ("you shouldn't be here, leaking buffers..."); return frame->n_vectors; } + +/** + * @brief CLI function for VXLAN GPE admin up/down + * + * @param *vnm + * @param hw_if_index + * @param flag + * + * @return *rc + * + */ static clib_error_t * vxlan_gpe_interface_admin_up_down (vnet_main_t * vnm, u32 hw_if_index, u32 flags) { @@ -98,6 +132,15 @@ static uword dummy_set_rewrite (vnet_main_t * vnm, } +/** + * @brief Formatting function for tracing VXLAN GPE with length + * + * @param *s + * @param *args + * + * @return *s + * + */ static u8 * format_vxlan_gpe_header_with_length (u8 * s, va_list * args) { u32 dev_instance = va_arg (*args, u32); @@ -131,6 +174,14 @@ _(decap_fib_index) } +/** + * @brief Calculate IPv4 VXLAN GPE rewrite header + * + * @param *t + * + * @return rc + * + */ static int vxlan4_gpe_rewrite (vxlan_gpe_tunnel_t * t) { u8 *rw = 0; @@ -169,6 +220,14 @@ static int vxlan4_gpe_rewrite (vxlan_gpe_tunnel_t * t) return (0); } +/** + * @brief Calculate IPv6 VXLAN GPE rewrite header + * + * @param *t + * + * @return rc + * + */ static int vxlan6_gpe_rewrite (vxlan_gpe_tunnel_t * t) { u8 *rw = 0; @@ -207,6 +266,15 @@ static int vxlan6_gpe_rewrite (vxlan_gpe_tunnel_t * t) return (0); } +/** + * @brief Add or Del a VXLAN GPE tunnel + * + * @param *a + * @param *sw_if_index + * + * @return rc + * + */ int vnet_vxlan_gpe_add_del_tunnel (vnet_vxlan_gpe_add_del_tunnel_args_t *a, u32 * sw_if_indexp) { @@ -352,30 +420,6 @@ int vnet_vxlan_gpe_add_del_tunnel return 0; } -static u32 fib4_index_from_fib_id (u32 fib_id) -{ - ip4_main_t * im = &ip4_main; - uword * p; - - p = hash_get (im->fib_index_by_table_id, fib_id); - if (!p) - return ~0; - - return p[0]; -} - -static u32 fib6_index_from_fib_id (u32 fib_id) -{ - ip6_main_t * im = &ip6_main; - uword * p; - - p = hash_get (im->fib_index_by_table_id, fib_id); - if (!p) - return ~0; - - return p[0]; -} - static clib_error_t * vxlan_gpe_add_del_tunnel_command_fn (vlib_main_t * vm, unformat_input_t * input, @@ -432,20 +476,19 @@ vxlan_gpe_add_del_tunnel_command_fn (vlib_main_t * vm, else if (unformat (line_input, "encap-vrf-id %d", &tmp)) { if (ipv6_set) - encap_fib_index = fib6_index_from_fib_id (tmp); + encap_fib_index = ip6_fib_index_from_table_id (tmp); else - encap_fib_index = fib4_index_from_fib_id (tmp); + encap_fib_index = ip4_fib_index_from_table_id (tmp); if (encap_fib_index == ~0) return clib_error_return (0, "nonexistent encap fib id %d", tmp); } else if (unformat (line_input, "decap-vrf-id %d", &tmp)) { - if (ipv6_set) - decap_fib_index = fib6_index_from_fib_id (tmp); + decap_fib_index = ip6_fib_index_from_table_id (tmp); else - decap_fib_index = fib4_index_from_fib_id (tmp); + decap_fib_index = ip4_fib_index_from_table_id (tmp); if (decap_fib_index == ~0) return clib_error_return (0, "nonexistent decap fib id %d", tmp); @@ -528,6 +571,16 @@ VLIB_CLI_COMMAND (create_vxlan_gpe_tunnel_command, static) = { .function = vxlan_gpe_add_del_tunnel_command_fn, }; +/** + * @brief CLI function for showing VXLAN GPE tunnels + * + * @param *vm + * @param *input + * @param *cmd + * + * @return error + * + */ static clib_error_t * show_vxlan_gpe_tunnel_command_fn (vlib_main_t * vm, unformat_input_t * input, @@ -552,6 +605,14 @@ VLIB_CLI_COMMAND (show_vxlan_gpe_tunnel_command, static) = { .function = show_vxlan_gpe_tunnel_command_fn, }; +/** + * @brief Feature init function for VXLAN GPE + * + * @param *vm + * + * @return error + * + */ clib_error_t *vxlan_gpe_init (vlib_main_t *vm) { vxlan_gpe_main_t *gm = &vxlan_gpe_main;