network: Increase max route size when checking IPv6 forwarding

In d9ee51e, virNetDevIPCheckIPv6Forwarding was updated to walk the
contents of /proc/net/ipv6_route so that it could check to see if the
RTF_ADDRCONF was set on any IPv6 routes to ultimately determine if
enabling forwarding would result in an error due to accept_ra=1 being
set on the interface.

The implementation added in that commit limited the number of routes
that could be read from /proc/net/ipv6_route to 100_000, each with 150
characters. This is problematic for machines that have a full IPv6
routing table, as the IPv6 routing table has now grown to over 160_000
(it was closer to 100_000 at the time of that commit).

This patch increases the maximum route size from 100_000 to 1_000_000.
While a million routes is somewhat arbitrary, it's meant to be a value
that can be supported for the forseeable future. APNIC, one of the five
regional internet registries, recently published a forecast of IPv6
table growth which anticipates a worst-case growth to 1_000_000 in
January of 2029.

Signed-off-by: Brooks Swinnerton <bswinnerton@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Brooks Swinnerton 2023-01-20 19:58:05 -05:00 committed by Michal Privoznik
parent 228e5a98d2
commit dfef0e70de

View File

@ -529,7 +529,7 @@ virNetDevIPCheckIPv6Forwarding(void)
char *cur;
g_autofree char *buf = NULL;
/* lines are 150 chars */
enum {MAX_ROUTE_SIZE = 150*100000};
enum {MAX_ROUTE_SIZE = 150*1000000};
/* This is /proc/sys/net/ipv6/conf/all/accept_ra */
int all_accept_ra = virNetDevIPGetAcceptRA(NULL);