From: Marek Lindner Date: Wed, 19 Jan 2011 19:16:10 +0000 (+0000) Subject: batman-adv: free neighbors when an interface is deactivated X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=1a241a57be46cda985c7c36e24d49f67de6bfb53;p=openwrt%2Fstaging%2Fblogic.git batman-adv: free neighbors when an interface is deactivated hardif_disable_interface() calls purge_orig_ref() to immediately free all neighbors associated with the interface that is going down. purge_orig_neighbors() checked if the interface status is IF_INACTIVE which is set to IF_NOT_IN_USE shortly before calling purge_orig_ref(). Signed-off-by: Marek Lindner --- diff --git a/net/batman-adv/originator.c b/net/batman-adv/originator.c index 6cb9af3f89e5..899d4943d8ad 100644 --- a/net/batman-adv/originator.c +++ b/net/batman-adv/originator.c @@ -224,10 +224,15 @@ static bool purge_orig_neighbors(struct bat_priv *bat_priv, if ((time_after(jiffies, neigh_node->last_valid + PURGE_TIMEOUT * HZ)) || (neigh_node->if_incoming->if_status == IF_INACTIVE) || + (neigh_node->if_incoming->if_status == IF_NOT_IN_USE) || (neigh_node->if_incoming->if_status == IF_TO_BE_REMOVED)) { - if (neigh_node->if_incoming->if_status == - IF_TO_BE_REMOVED) + if ((neigh_node->if_incoming->if_status == + IF_INACTIVE) || + (neigh_node->if_incoming->if_status == + IF_NOT_IN_USE) || + (neigh_node->if_incoming->if_status == + IF_TO_BE_REMOVED)) bat_dbg(DBG_BATMAN, bat_priv, "neighbor purge: originator %pM, " "neighbor: %pM, iface: %s\n",