ip route: get: allow zero-length subnet mask
A /0 subnet mask is theoretically valid, but ip route get doesn't allow
it:
$ ip route get 1.0.0.0/0
need at least a destination address
Change the check and remember whether we found an address or not, since
according to the documentation it's a mandatory parameter.
$ ip/ip route get 1.0.0.0/0
1.0.0.0 via 192.168.1.1 dev eth0 src 192.168.1.91 uid 1000
cache
Reported-by: Clément Hertling <wxcafe@wxcafe.net>
Signed-off-by: Luca Boccassi <bluca@debian.org>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
619765fe14
commit
c2f9dc14c4
|
|
@ -1932,6 +1932,7 @@ static int iproute_get(int argc, char **argv)
|
|||
int fib_match = 0;
|
||||
int from_ok = 0;
|
||||
unsigned int mark = 0;
|
||||
bool address_found = false;
|
||||
|
||||
iproute_reset_filter(0);
|
||||
filter.cloned = 2;
|
||||
|
|
@ -2037,11 +2038,12 @@ static int iproute_get(int argc, char **argv)
|
|||
addattr_l(&req.n, sizeof(req),
|
||||
RTA_DST, &addr.data, addr.bytelen);
|
||||
req.r.rtm_dst_len = addr.bitlen;
|
||||
address_found = true;
|
||||
}
|
||||
argc--; argv++;
|
||||
}
|
||||
|
||||
if (req.r.rtm_dst_len == 0) {
|
||||
if (!address_found) {
|
||||
fprintf(stderr, "need at least a destination address\n");
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue