]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
ip: handle flush with table > 2^31
authorStephen Hemminger <stephen@networkplumber.org>
Tue, 12 Feb 2013 19:41:46 +0000 (11:41 -0800)
committerStephen Hemminger <stephen@networkplumber.org>
Tue, 12 Feb 2013 19:42:57 +0000 (11:42 -0800)
Fixes Debian bug #700434
Need to table id in filter to be unsigned to avoid conversion to -1

The documentation for "ip" suggests that, when using multiple routing tables, the table ID can be an arbitrary 32 bit number. I've been writing a script that calculates a table Id based on an IP addresses and sets up tables accordingly based on it. This seems to work for everything I've tried except "ip route flush". If you specify a table to flush with an ID over 2^31, it flushes all IPv4 routing tables. For example:

Will delete all routing tables, including the default one. Needless to say, this is quite annoying. I think this is an upstream bug, but your opinions will be greatly appreciated.

ip/iproute.c

index 5dc443716815be164c89d41ca3460995c62c7ab2..2c2a3319331f96b22d7717ad0078eadd4ff51606 100644 (file)
@@ -92,7 +92,7 @@ static void usage(void)
 
 static struct
 {
-       int tb;
+       unsigned int tb;
        int cloned;
        int flushed;
        char *flushb;