]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
netinet6: fix SIOCSPFXFLUSH_IN6 by skipping manually-configured prefixes
authorAlexander V. Chernikov <melifaro@FreeBSD.org>
Tue, 23 Aug 2022 16:19:50 +0000 (16:19 +0000)
committerAlexander V. Chernikov <melifaro@FreeBSD.org>
Wed, 24 Aug 2022 13:59:13 +0000 (13:59 +0000)
commit8036234c72c9361711e867cc1a0c6a7fe0babd84
tree9a1bf62c59b35f6496a2be73c3648fc0ec0a4432
parent6364180582b769b8fb8fba83511748af3b2c9efd
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
sys/netinet6/in6_var.h
sys/netinet6/nd6.c
sys/netinet6/nd6.h
sys/netinet6/nd6_rtr.c