Files
linux/include/net
Sowmini Varadhan 5071034e4a neigh: Really delete an arp/neigh entry on "ip neigh delete" or "arp -d"
The command
  # arp -s 62.2.0.1 a🅱️c:d:e:f dev eth2
adds an entry like the following (listed by "arp -an")
  ? (62.2.0.1) at 0a:0b:0c:0d:0e:0f [ether] PERM on eth2
but the symmetric deletion command
  # arp -i eth2 -d 62.2.0.1
does not remove the PERM entry from the table, and instead leaves behind
  ? (62.2.0.1) at <incomplete> on eth2

The reason is that there is a refcnt of 1 for the arp_tbl itself
(neigh_alloc starts off the entry with a refcnt of 1), thus
the neigh_release() call from arp_invalidate() will (at best) just
decrement the ref to 1, but will never actually free it from the
table.

To fix this, we need to do something like neigh_forced_gc: if
the refcnt is 1 (i.e., on the table's ref), remove the entry from
the table and free it. This patch refactors and shares common code
between neigh_forced_gc and the newly added neigh_remove_one.

A similar issue exists for IPv6 Neighbor Cache entries, and is fixed
in a similar manner by this patch.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Reviewed-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-06-04 21:37:18 -04:00
..
2017-01-12 04:01:17 -05:00
2017-04-05 10:15:20 +02:00
2017-04-24 12:35:56 -04:00
2014-09-18 10:54:36 +02:00
2017-02-07 13:07:46 -05:00
2015-06-28 16:55:44 -07:00
2016-06-27 15:06:17 -04:00
2016-07-08 12:20:57 +02:00
2016-04-25 16:44:27 -04:00
2016-04-25 16:44:27 -04:00
2016-06-09 23:41:03 -07:00
2015-03-06 21:50:02 -05:00
2015-09-17 17:18:37 -07:00
2016-02-16 20:21:48 -05:00
2017-04-14 10:06:42 +02:00
2017-04-03 19:04:48 -07:00
2016-05-20 18:03:16 -04:00
2016-04-27 22:48:25 -04:00
2017-02-03 15:16:45 -05:00
2017-04-13 13:19:48 -04:00
2016-08-17 19:36:23 -04:00
2016-10-03 02:00:22 -04:00
2016-10-04 02:11:51 -04:00
2016-07-08 12:20:57 +02:00
2016-03-23 22:09:58 -04:00
2016-12-25 17:21:22 +01:00
2017-01-09 16:07:41 -05:00
2017-05-16 15:43:31 -04:00
2015-03-12 22:58:12 -04:00
2016-05-03 16:08:14 -04:00
2015-10-26 22:24:22 -07:00