Re: git: 20d59403961d - main - kernel: deprecate Internet Class A/B/C

From: Gleb Smirnoff <glebius_at_freebsd.org>
Date: Wed, 10 Nov 2021 16:38:56 UTC
On Wed, Nov 10, 2021 at 09:36:03AM -0600, Mike Karels wrote:
M> > The new /24 default is no better than classes. The only difference
M> > that classes maintained POLA and new default doesn't. For example,
M> > in my home network I have default router 10.0.0.1 and since it is
M> > class A network on my VMs and test boxes I can type
M> 
M> > # ifconfig vtnet0 10.6.6.6
M> 
M> > and that is going to work. With this change no longer.
M> 
M> I suspect that /8 is by far the minority these days, even with a
M> "Class A" net.  I also use net 10 at home, and at the last several jobs,
M> but it is subnetted in each case.  I would peridically add an address,
M> forgetting a mask, only to find that a route for 10/8 isolated the machine.

The 10/8 can be used at home as a huge personal address space, just like
a /64 IPv6 prefix. All addresses added without masks and everything works.

M> That said, my main objective was to deprecate usage without a mask, and
M> to warn in that case.  Both the kernel and ifconfig now warn when a default
M> mask is used.  In the discussion on freebsd-net and in the review, the
M> main thought was that masks should be required.  But it isn't practical to
M> fail and return an error with no mask, at least not without a significant
M> period with warnings, or some systems would stop coming up on the network.
M> 
M> One reviewer was going to comment on the /24 default, but thought it was
M> better than the previous.  I'm open to hearing more opinions.

Although I don't internally agree that we really need to police people to
always specify masks, I would make step forward and agree with that. So,
let's do print loud warning on every attempt to set IP address without a
mask. But I can not agree that change from class based guess to /24 is a
right thing to do. A proper deprecation process goes like this:

Step 1: Print warning, don't change legacy behavior.
<... people adopt ...>
Step 2: Return error. Remove deprecated behavior.

What we did is that we changed behavior together with warning. The new
behavior is neither the legacy one nor the desired one, where mask is
a must. Look from a user perspective: for class C nothing changed, but
changed for A and B.

-- 
Gleb Smirnoff