n->sibling = i->neigh;
i->neigh = n;
DBG("Waking up sticky neighbor %I\n", n->addr);
- if (n->proto->neigh_notify)
+ if (n->proto->neigh_notify && n->proto->core_state != FS_FLUSHING)
n->proto->neigh_notify(n);
}
}
m = n->sibling;
DBG("Flushing neighbor %I on %s\n", n->addr, n->iface->name);
n->iface = NULL;
- if (n->proto->neigh_notify)
+ if (n->proto->neigh_notify && n->proto->core_state != FS_FLUSHING)
n->proto->neigh_notify(n);
if (!(n->flags & NEF_STICKY))
{
N = &i->neigh;
while (n = *N)
{
- if (n->proto->core_state == FS_HUNGRY || n->proto->core_state == FS_FLUSHING)
+ if (n->proto->core_state == FS_FLUSHING)
{
*N = n->sibling;
rem_node(&n->n);