summaryrefslogtreecommitdiff
path: root/zebra/interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/interface.c')
-rw-r--r--zebra/interface.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/zebra/interface.c b/zebra/interface.c
index 317cc722b4..c629dfb3f3 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -48,6 +48,7 @@
#include "zebra/zebra_ptm.h"
#include "zebra/rt_netlink.h"
#include "zebra/interface.h"
+#include "zebra/zebra_static.h"
#define ZEBRA_PTM_SUPPORT
@@ -118,8 +119,6 @@ if_zebra_new_hook (struct interface *ifp)
zebra_if->ipv4_subnets = route_table_init_with_delegate (&zebra_if_table_delegate);
ifp->info = zebra_if;
-
- zebra_vrf_static_route_interface_fixup (ifp);
return 0;
}
@@ -520,6 +519,7 @@ if_add_update (struct interface *ifp)
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug ("interface %s vrf %u index %d becomes active.",
ifp->name, ifp->vrf_id, ifp->ifindex);
+ static_ifindex_update(ifp, true);
}
else
{
@@ -695,6 +695,8 @@ if_delete_update (struct interface *ifp)
zlog_debug ("interface %s vrf %u index %d is now inactive.",
ifp->name, ifp->vrf_id, ifp->ifindex);
+ static_ifindex_update(ifp, false);
+
/* Delete connected routes from the kernel. */
if_delete_connected (ifp);
@@ -723,6 +725,8 @@ if_handle_vrf_change (struct interface *ifp, vrf_id_t vrf_id)
old_vrf_id = ifp->vrf_id;
+ static_ifindex_update(ifp, false);
+
/* Uninstall connected routes. */
if_uninstall_connected (ifp);
@@ -746,6 +750,8 @@ if_handle_vrf_change (struct interface *ifp, vrf_id_t vrf_id)
/* Install connected routes (in new VRF). */
if_install_connected (ifp);
+ static_ifindex_update(ifp, true);
+
/* Due to connected route change, schedule RIB processing for both old
* and new VRF.
*/
@@ -754,8 +760,6 @@ if_handle_vrf_change (struct interface *ifp, vrf_id_t vrf_id)
ifp->vrf_id, ifp->name);
rib_update (old_vrf_id, RIB_UPDATE_IF_CHANGE);
rib_update (ifp->vrf_id, RIB_UPDATE_IF_CHANGE);
-
- zebra_vrf_static_route_interface_fixup (ifp);
}
static void
@@ -862,8 +866,6 @@ if_up (struct interface *ifp)
zlog_debug ("%u: IF %s up, scheduling RIB processing",
ifp->vrf_id, ifp->name);
rib_update (ifp->vrf_id, RIB_UPDATE_IF_CHANGE);
-
- zebra_vrf_static_route_interface_fixup (ifp);
}
/* Interface goes down. We have to manage different behavior of based