route: error on IPv4 network routes with incorrect destination
authorMike Karels <karels@FreeBSD.org>
Mon, 15 Jan 2024 21:14:54 +0000 (15:14 -0600)
committerMike Karels <karels@FreeBSD.org>
Mon, 15 Jan 2024 21:14:54 +0000 (15:14 -0600)
commitb9e8ae1d8a424194b4e185359da4ded163f24f4e
tree8725f4de66007c1287653926f313c70bdcaf224d
parent2a121b97e9673ff37062c9fa026eee969940d2e2
route: error on IPv4 network routes with incorrect destination

Route destinations like 10/8 are most likely intended as a shorthand
for 10.0.0.0/8, but instead it means 0.0.0.10/8, which includes
only bits in the host part of the mask, and hence adds a route to
0.0.0.0/8.  In 12.x, there was code to "do what I mean", which was
removed as part of a cleanup of old network class remnants.  Given
that we have gone this long without that code, do not restore that
behavior.  Instead, detect the issue and produce an error.
Specifically, if there are no dots in a numeric IPv4 address, the
mask is specified with CIDR notation (using a slash), and there are
bits set in the host part, produce an error like this for 10/8:

    route: malformed address, bits set after mask; 10 means 0.0.0.10

PR: 258874
MFC after: 1 week
Reviewed by: melifaro, emaste
Differential Revision: https://reviews.freebsd.org/D43384
sbin/route/route.c