devinet.c inet_abc_len() breaking ifconfig?

From: Rob Landley
Date: Mon Oct 15 2018 - 10:42:51 EST


Dave Taht pointed out to me that this doesn't work in toybox:

$ ifconfig eth0 242.2.0.1 netmask 255.255.255.0 broadcast 242.2.0.255
ifconfig: ioctl 8916: Invalid argument

Because of this in the kernel:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/ipv4/devinet.c#n940

What is the inet_abc_len() function _for_? When's the last time "class A, Class
B, and Class C" IPv4 addresses actually _existed_ as a thing? (Somewhere around
1995?)

He suggested I switch to the netlink API, which doesn't enforce this, but... why
is the kernel enforcing it for one api but not the other?

Rob