neighbour: confirm neigh entries when ARP packet is received
[ Upstream commitpull/10/headf0e0d04413
] 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:77d7123342
("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>
parent
0f6f77f3b8
commit
ff64a1a2ca
|
@ -1174,6 +1174,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.
|
||||
*/
|
||||
|
@ -1195,15 +1201,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…
Reference in New Issue