Use a single timer for all ND6 entries.
authormpi <mpi@openbsd.org>
Mon, 27 Nov 2017 15:41:30 +0000 (15:41 +0000)
committermpi <mpi@openbsd.org>
Mon, 27 Nov 2017 15:41:30 +0000 (15:41 +0000)
commit334bfa0aef80516f4d0eaae7661e1b4c514a3ad6
tree8544922c5d91bbc2971c818f1f554f2e0070531b
parented6e40b2c86c6c6a27750053b612d9e2bea5878c
Use a single timer for all ND6 entries.

This prevents a use-after-free reported by Hrvoje Popovski where the
timeout function was already sleeping on the NET_LOCK() when ifconfig(8)
removed the enry from the table.

By iterating on a global list in the timeout routine we ensure that the
items are still valid when we process them.  This also reduce differences
with ARP.

ok bluhm@, visa@
sys/netinet6/nd6.c
sys/netinet6/nd6.h