diff options
author | Nathan Skrzypczak <nathan.skrzypczak@gmail.com> | 2021-08-16 16:13:40 +0200 |
---|---|---|
committer | Beno�t Ganne <bganne@cisco.com> | 2021-09-13 13:54:59 +0000 |
commit | 7854b46f7789aae662f01fc29f4dd222a67bfe3d (patch) | |
tree | 607736025d42db84ac52558a08d18ba5431987b0 /src/vnet | |
parent | 006bbc4945bc7df58c3e631f5626acb2555aa171 (diff) |
interface: fix init fib_index_by_sw_if_index
Type: fix
The init of fib_index_by_sw_if_index wasn't
setting default value to 0. Which we now
need for setting interfaces unnumbered
Change-Id: Ie5be9b5e5373ef055557a871ad4d1c45fbfc1dee
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Diffstat (limited to 'src/vnet')
-rw-r--r-- | src/vnet/gre/interface.c | 4 | ||||
-rw-r--r-- | src/vnet/interface.c | 10 | ||||
-rw-r--r-- | src/vnet/interface_api.c | 6 | ||||
-rw-r--r-- | src/vnet/ip/ip4_forward.c | 17 | ||||
-rw-r--r-- | src/vnet/ip/ip6_forward.c | 18 | ||||
-rw-r--r-- | src/vnet/ipip/ipip.c | 4 | ||||
-rw-r--r-- | src/vnet/mfib/ip4_mfib.c | 1 | ||||
-rw-r--r-- | src/vnet/mfib/ip6_mfib.c | 1 |
8 files changed, 18 insertions, 43 deletions
diff --git a/src/vnet/gre/interface.c b/src/vnet/gre/interface.c index f2c679cb9b5..0251ced598f 100644 --- a/src/vnet/gre/interface.c +++ b/src/vnet/gre/interface.c @@ -367,8 +367,6 @@ vnet_gre_tunnel_add (vnet_gre_tunnel_add_del_args_t * a, { gre_main_t *gm = &gre_main; vnet_main_t *vnm = gm->vnet_main; - ip4_main_t *im4 = &ip4_main; - ip6_main_t *im6 = &ip6_main; gre_tunnel_t *t; vnet_hw_interface_t *hi; u32 hw_if_index, sw_if_index; @@ -451,13 +449,11 @@ vnet_gre_tunnel_add (vnet_gre_tunnel_add_del_args_t * a, if (!is_ipv6) { - vec_validate (im4->fib_index_by_sw_if_index, sw_if_index); hi->min_packet_bytes = 64 + sizeof (gre_header_t) + sizeof (ip4_header_t); } else { - vec_validate (im6->fib_index_by_sw_if_index, sw_if_index); hi->min_packet_bytes = 64 + sizeof (gre_header_t) + sizeof (ip6_header_t); } diff --git a/src/vnet/interface.c b/src/vnet/interface.c index 20afce1fb6e..d0f94b101ad 100644 --- a/src/vnet/interface.c +++ b/src/vnet/interface.c @@ -1637,16 +1637,6 @@ static int vnet_sw_interface_check_table_same (u32 unnumbered_sw_if_index, u32 ip_sw_if_index) { - vec_validate (ip4_main.fib_index_by_sw_if_index, unnumbered_sw_if_index); - vec_validate (ip4_main.mfib_index_by_sw_if_index, unnumbered_sw_if_index); - vec_validate (ip6_main.fib_index_by_sw_if_index, unnumbered_sw_if_index); - vec_validate (ip6_main.mfib_index_by_sw_if_index, unnumbered_sw_if_index); - - vec_validate (ip4_main.fib_index_by_sw_if_index, ip_sw_if_index); - vec_validate (ip4_main.mfib_index_by_sw_if_index, ip_sw_if_index); - vec_validate (ip6_main.fib_index_by_sw_if_index, ip_sw_if_index); - vec_validate (ip6_main.mfib_index_by_sw_if_index, ip_sw_if_index); - if (ip4_main.fib_index_by_sw_if_index[unnumbered_sw_if_index] != ip4_main.fib_index_by_sw_if_index[ip_sw_if_index]) return VNET_API_ERROR_UNEXPECTED_INTF_STATE; diff --git a/src/vnet/interface_api.c b/src/vnet/interface_api.c index f9e03b9f1ea..80a3058303c 100644 --- a/src/vnet/interface_api.c +++ b/src/vnet/interface_api.c @@ -518,9 +518,6 @@ ip_table_bind (fib_protocol_t fproto, })); /* *INDENT-ON* */ - vec_validate (ip6_main.fib_index_by_sw_if_index, sw_if_index); - vec_validate (ip6_main.mfib_index_by_sw_if_index, sw_if_index); - /* * tell those that are interested that the binding is changing. */ @@ -566,9 +563,6 @@ ip_table_bind (fib_protocol_t fproto, })); /* *INDENT-ON* */ - vec_validate (ip4_main.fib_index_by_sw_if_index, sw_if_index); - vec_validate (ip4_main.mfib_index_by_sw_if_index, sw_if_index); - /* * tell those that are interested that the binding is changing. */ diff --git a/src/vnet/ip/ip4_forward.c b/src/vnet/ip/ip4_forward.c index 57ad658b83f..35aff63e736 100644 --- a/src/vnet/ip/ip4_forward.c +++ b/src/vnet/ip/ip4_forward.c @@ -657,7 +657,6 @@ ip4_add_del_interface_address_internal (vlib_main_t * vm, if (error) return error; - vec_validate (im->fib_index_by_sw_if_index, sw_if_index); ip4_addr_fib_init (&ip4_af, address, vec_elt (im->fib_index_by_sw_if_index, sw_if_index)); vec_add1 (addr_fib, ip4_af); @@ -885,9 +884,6 @@ ip4_sw_interface_admin_up_down (vnet_main_t * vnm, u32 sw_if_index, u32 flags) ip4_address_t *a; u32 is_admin_up, fib_index; - /* Fill in lookup tables with default table (0). */ - vec_validate (im->fib_index_by_sw_if_index, sw_if_index); - vec_validate_init_empty (im-> lookup_main.if_address_pool_index_by_sw_if_index, sw_if_index, ~0); @@ -1064,11 +1060,16 @@ ip4_sw_interface_add_del (vnet_main_t * vnm, u32 sw_if_index, u32 is_add) { ip4_main_t *im = &ip4_main; - /* Fill in lookup tables with default table (0). */ - vec_validate (im->fib_index_by_sw_if_index, sw_if_index); - vec_validate (im->mfib_index_by_sw_if_index, sw_if_index); + vec_validate_init_empty (im->fib_index_by_sw_if_index, sw_if_index, ~0); + vec_validate_init_empty (im->mfib_index_by_sw_if_index, sw_if_index, ~0); - if (!is_add) + if (is_add) + { + /* Fill in lookup tables with default table (0). */ + im->fib_index_by_sw_if_index[sw_if_index] = 0; + im->mfib_index_by_sw_if_index[sw_if_index] = 0; + } + else { ip4_main_t *im4 = &ip4_main; ip_lookup_main_t *lm4 = &im4->lookup_main; diff --git a/src/vnet/ip/ip6_forward.c b/src/vnet/ip/ip6_forward.c index f1de446a504..8daf2614c15 100644 --- a/src/vnet/ip/ip6_forward.c +++ b/src/vnet/ip/ip6_forward.c @@ -351,9 +351,6 @@ ip6_add_del_interface_address (vlib_main_t * vm, return (NULL); } - vec_validate (im->fib_index_by_sw_if_index, sw_if_index); - vec_validate (im->mfib_index_by_sw_if_index, sw_if_index); - ip6_addr_fib_init (&ip6_af, address, vec_elt (im->fib_index_by_sw_if_index, sw_if_index)); vec_add1 (addr_fib, ip6_af); @@ -528,9 +525,6 @@ ip6_sw_interface_admin_up_down (vnet_main_t * vnm, u32 sw_if_index, u32 flags) ip6_address_t *a; u32 is_admin_up, fib_index; - /* Fill in lookup tables with default table (0). */ - vec_validate (im->fib_index_by_sw_if_index, sw_if_index); - vec_validate_init_empty (im-> lookup_main.if_address_pool_index_by_sw_if_index, sw_if_index, ~0); @@ -692,10 +686,16 @@ ip6_sw_interface_add_del (vnet_main_t * vnm, u32 sw_if_index, u32 is_add) { ip6_main_t *im = &ip6_main; - vec_validate (im->fib_index_by_sw_if_index, sw_if_index); - vec_validate (im->mfib_index_by_sw_if_index, sw_if_index); + vec_validate_init_empty (im->fib_index_by_sw_if_index, sw_if_index, ~0); + vec_validate_init_empty (im->mfib_index_by_sw_if_index, sw_if_index, ~0); - if (!is_add) + if (is_add) + { + /* Fill in lookup tables with default table (0). */ + im->fib_index_by_sw_if_index[sw_if_index] = 0; + im->mfib_index_by_sw_if_index[sw_if_index] = 0; + } + else { /* Ensure that IPv6 is disabled */ ip6_main_t *im6 = &ip6_main; diff --git a/src/vnet/ipip/ipip.c b/src/vnet/ipip/ipip.c index e6ea3ebe79d..5dbe85a1c5b 100644 --- a/src/vnet/ipip/ipip.c +++ b/src/vnet/ipip/ipip.c @@ -726,8 +726,6 @@ ipip_add_tunnel (ipip_transport_t transport, { ipip_main_t *gm = &ipip_main; vnet_main_t *vnm = gm->vnet_main; - ip4_main_t *im4 = &ip4_main; - ip6_main_t *im6 = &ip6_main; ipip_tunnel_t *t; vnet_hw_interface_t *hi; u32 hw_if_index, sw_if_index; @@ -788,12 +786,10 @@ ipip_add_tunnel (ipip_transport_t transport, if (t->transport == IPIP_TRANSPORT_IP4) { - vec_validate (im4->fib_index_by_sw_if_index, sw_if_index); hi->min_packet_bytes = 64 + sizeof (ip4_header_t); } else { - vec_validate (im6->fib_index_by_sw_if_index, sw_if_index); hi->min_packet_bytes = 64 + sizeof (ip6_header_t); } diff --git a/src/vnet/mfib/ip4_mfib.c b/src/vnet/mfib/ip4_mfib.c index 9c64c4ae92c..c1a9740b3bb 100644 --- a/src/vnet/mfib/ip4_mfib.c +++ b/src/vnet/mfib/ip4_mfib.c @@ -142,7 +142,6 @@ ip4_mfib_interface_enable_disable (u32 sw_if_index, int is_enable) u32 mfib_index; int ii; - vec_validate (ip4_main.mfib_index_by_sw_if_index, sw_if_index); mfib_index = ip4_mfib_table_get_index_for_sw_if_index(sw_if_index); for (ii = 0; ii < ARRAY_LEN(ip4_specials); ii++) diff --git a/src/vnet/mfib/ip6_mfib.c b/src/vnet/mfib/ip6_mfib.c index bbab7ae2214..37ae3776d89 100644 --- a/src/vnet/mfib/ip6_mfib.c +++ b/src/vnet/mfib/ip6_mfib.c @@ -246,7 +246,6 @@ ip6_mfib_interface_enable_disable (u32 sw_if_index, int is_enable) }; u32 mfib_index; - vec_validate (ip6_main.mfib_index_by_sw_if_index, sw_if_index); mfib_index = ip6_mfib_table_get_index_for_sw_if_index(sw_if_index); if (is_enable) |