diff --git a/lib/if.c b/lib/if.c index c5d90c83ab..9c9252e111 100644 --- a/lib/if.c +++ b/lib/if.c @@ -186,7 +186,9 @@ void if_update_to_new_vrf(struct interface *ifp, vrf_id_t vrf_id) /* remove interface from old master vrf list */ old_vrf = vrf_lookup_by_id(ifp->vrf_id); if (old_vrf) { - IFNAME_RB_REMOVE(old_vrf, ifp); + if (ifp->name[0] != '\0') + IFNAME_RB_REMOVE(old_vrf, ifp); + if (ifp->ifindex != IFINDEX_INTERNAL) IFINDEX_RB_REMOVE(old_vrf, ifp); } @@ -194,7 +196,9 @@ void if_update_to_new_vrf(struct interface *ifp, vrf_id_t vrf_id) ifp->vrf_id = vrf_id; vrf = vrf_get(ifp->vrf_id, NULL); - IFNAME_RB_INSERT(vrf, ifp); + if (ifp->name[0] != '\0') + IFNAME_RB_INSERT(vrf, ifp); + if (ifp->ifindex != IFINDEX_INTERNAL) IFINDEX_RB_INSERT(vrf, ifp);