ip: handle flush with table > 2^31
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.
diff --git a/ip/iproute.c b/ip/iproute.c
index 5dc4437..2c2a331 100644
--- a/ip/iproute.c
+++ b/ip/iproute.c
@@ -92,7 +92,7 @@
static struct
{
- int tb;
+ unsigned int tb;
int cloned;
int flushed;
char *flushb;