HomeFreeBSD

netinet6: fix SIOCSPFXFLUSH_IN6 by skipping manually-configured prefixes

Description

netinet6: fix SIOCSPFXFLUSH_IN6 by skipping manually-configured prefixes

Summary:
Currently netinet6/ code allocates IPv6 prefixes (nd_prefix) for
both manually-assigned addresses and advertised prefixes. As a result,
prefixes from manually-assigned prefixes can be seen in ndp -p list
and be cleared via ndp -P. The latter relies on the SIOCSPFXFLUSH_IN6
ioctl to clear to prefix list.
The original intent of the SIOCSPFXFLUSH_IN6 was to clear prefixes
originated from the advertising routers:

1998-09-02  JINMEI, Tatuya  <jinmei@isl.rdc.toshiba.co.jp>
	* nd6.c (nd6_ioctl): added 2 new ioctls; SIOCSRTRFLUSH_IN6 and
	SIOCSPFXFLUSH_IN6. The former is to flush all default routers
	in the default router list, and the latter is to flush all the
	prefixes and the addresses derived from them in the prefix list.

Restore the intent by marking prefixes derived from the RA messages
with newly-added ndpr_flags.ra_derived flag and skip prefixes not marked
with such flag during deletion and listing.

Differential Revision: https://reviews.freebsd.org/D36312
MFC after: 2 weeks

Details

Provenance
melifaroAuthored on Aug 23 2022, 4:19 PM
Differential Revision
D36312: netinet6: fix SIOCSPFXFLUSH_IN6 by skipping manually-configured prefixes
Parents
rG6364180582b7: linuxkpi: unbreak linux_i2cbb
Branches
Unknown
Tags
Unknown