Type: fix
Replace vec ops with pool ops when iterating over pool of
interfaces in plugin_disable() functions.
With this change plugin disabling function and interface role
disabling functions iterate over identical sets of registered
interfaces, preventing 'interface couldn't be found' errors.
Signed-off-by: Alexander Skorichenko <askorichenko@netgate.com>
Change-Id: I4e191bcc5322ff1f9f7730c6fda5e6af86a8eec9
nat44_ei_plugin_disable ()
{
nat44_ei_main_t *nm = &nat44_ei_main;
nat44_ei_plugin_disable ()
{
nat44_ei_main_t *nm = &nat44_ei_main;
- nat44_ei_interface_t *i, *vec;
+ nat44_ei_interface_t *i, *pool;
int error = 0;
// first unregister all nodes from interfaces
int error = 0;
// first unregister all nodes from interfaces
- vec = vec_dup (nm->interfaces);
- vec_foreach (i, vec)
+ pool = pool_dup (nm->interfaces);
+ pool_foreach (i, pool)
{
if (nat44_ei_interface_is_inside (i))
error = nat44_ei_interface_add_del (i->sw_if_index, 1, 1);
{
if (nat44_ei_interface_is_inside (i))
error = nat44_ei_interface_add_del (i->sw_if_index, 1, 1);
- vec_free (vec);
- nm->interfaces = 0;
+ pool_free (pool);
+ pool_free (nm->interfaces);
- vec = vec_dup (nm->output_feature_interfaces);
- vec_foreach (i, vec)
+ pool = pool_dup (nm->output_feature_interfaces);
+ pool_foreach (i, pool)
{
if (nat44_ei_interface_is_inside (i))
error =
{
if (nat44_ei_interface_is_inside (i))
error =
- vec_free (vec);
- nm->output_feature_interfaces = 0;
+ pool_free (pool);
+ pool_free (nm->output_feature_interfaces);
nat_ha_disable ();
nat44_ei_db_free ();
nat_ha_disable ();
nat44_ei_db_free ();
nm->enabled = 0;
clib_memset (&nm->rconfig, 0, sizeof (nm->rconfig));
nm->enabled = 0;
clib_memset (&nm->rconfig, 0, sizeof (nm->rconfig));