mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-23 04:55:18 +00:00
network: increase max number of routes
This fixes the problem reported in: https://bugzilla.redhat.com/show_bug.cgi?id=972690 When checking for a collision of a new libvirt network's subnet with any existing routes, we read all of /proc/net/route into memory, then parse all the entries. The function that we use to read this file requires a "maximum length" parameter, which had previously been set to 64*1024. As each line in /proc/net/route is 128 bytes, this would allow for a maximum of 512 entries in the routing table. This patch increases that number to 128 * 100000, which allows for 100,000 routing table entries. This means that it's possible that 12MB would be allocated, but that would only happen if there really were 100,000 route table entries on the system, it's only held for a very short time. Since there is no method of specifying and unlimited max (and that would create a potential denial of service anyway) hopefully this limit is large enough to accomodate everyone. (cherry picked from commit 2bdf548f5f0f709c9dec8ba1872e4fcaf8c25fbf)
This commit is contained in:
parent
0943603d9e
commit
22d9d9a28f
@ -2300,7 +2300,8 @@ networkCheckRouteCollision(virNetworkObjPtr network)
|
|||||||
{
|
{
|
||||||
int ret = 0, len;
|
int ret = 0, len;
|
||||||
char *cur, *buf = NULL;
|
char *cur, *buf = NULL;
|
||||||
enum {MAX_ROUTE_SIZE = 1024*64};
|
/* allow for up to 100000 routes (each line is 128 bytes) */
|
||||||
|
enum {MAX_ROUTE_SIZE = 128*100000};
|
||||||
|
|
||||||
/* Read whole routing table into memory */
|
/* Read whole routing table into memory */
|
||||||
if ((len = virFileReadAll(PROC_NET_ROUTE, MAX_ROUTE_SIZE, &buf)) < 0)
|
if ((len = virFileReadAll(PROC_NET_ROUTE, MAX_ROUTE_SIZE, &buf)) < 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user