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.
This commit is contained in:
Stephen Hemminger 2013-02-12 11:41:46 -08:00
parent 6398d3a652
commit caae16b3b8

View File

@ -92,7 +92,7 @@ static void usage(void)
static struct
{
int tb;
unsigned int tb;
int cloned;
int flushed;
char *flushb;