]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Make the IPv6 fragment limits be global, rather than per-VNET, limits.
authorjtl <jtl@FreeBSD.org>
Tue, 14 Aug 2018 17:24:26 +0000 (17:24 +0000)
committerjtl <jtl@FreeBSD.org>
Tue, 14 Aug 2018 17:24:26 +0000 (17:24 +0000)
commit1f361945dffb8721aefa03cd35b79c23073b1c9e
tree5b912efb1f7f91b1bb097348eb8d93afdb90b500
parentfba8297beef43c9019a985564ed57c99437f69eb
Make the IPv6 fragment limits be global, rather than per-VNET, limits.

The IPv6 reassembly fragment limit is based on the number of mbuf clusters,
which are a global resource. However, the limit is currently applied
on a per-VNET basis. Given enough VNETs (or given sufficient customization
on enough VNETs), it is possible that the sum of all the VNET fragment
limits will exceed the number of mbuf clusters available in the system.

Given the fact that the fragment limits are intended (at least in part) to
regulate access to a global resource, the IPv6 fragment limit should
be applied on a global basis.

Note that it is still possible to disable fragmentation for a particular
VNET by setting the net.inet6.ip6.maxfragpackets sysctl to 0 for that
VNET. In addition, it is now possible to disable fragmentation globally
by setting the net.inet6.ip6.maxfrags sysctl to 0.

Reviewed by: jhb
Security: FreeBSD-SA-18:10.ip
Security: CVE-2018-6923
sys/netinet6/frag6.c
sys/netinet6/in6_proto.c
sys/netinet6/ip6_var.h