neighbour: confirm neigh entries when ARP packet is received
[ Upstream commit f0e0d04413fcce9bc76388839099aee93cd0d33b ] Update 'confirmed' timestamp when ARP packet is received. It shouldn't affect locktime logic and anyway entry can be confirmed by any higher-layer protocol. Thus it makes sense to confirm it when ARP packet is received. Fixes: 77d7123342dc ("neighbour: update neigh timestamps iff update is effective") Signed-off-by: Vasily Khoruzhick <vasilykh@arista.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b8214c557c
commit
c6e3864253
1 changed files with 8 additions and 5 deletions
|
@ -1140,6 +1140,12 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new,
|
|||
lladdr = neigh->ha;
|
||||
}
|
||||
|
||||
/* Update confirmed timestamp for neighbour entry after we
|
||||
* received ARP packet even if it doesn't change IP to MAC binding.
|
||||
*/
|
||||
if (new & NUD_CONNECTED)
|
||||
neigh->confirmed = jiffies;
|
||||
|
||||
/* If entry was valid and address is not changed,
|
||||
do not change entry state, if new one is STALE.
|
||||
*/
|
||||
|
@ -1163,15 +1169,12 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new,
|
|||
}
|
||||
}
|
||||
|
||||
/* Update timestamps only once we know we will make a change to the
|
||||
/* Update timestamp only once we know we will make a change to the
|
||||
* neighbour entry. Otherwise we risk to move the locktime window with
|
||||
* noop updates and ignore relevant ARP updates.
|
||||
*/
|
||||
if (new != old || lladdr != neigh->ha) {
|
||||
if (new & NUD_CONNECTED)
|
||||
neigh->confirmed = jiffies;
|
||||
if (new != old || lladdr != neigh->ha)
|
||||
neigh->updated = jiffies;
|
||||
}
|
||||
|
||||
if (new != old) {
|
||||
neigh_del_timer(neigh);
|
||||
|
|
Loading…
Add table
Reference in a new issue