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

From: Gleb Smirnoff <>
Date: Wed, 10 Nov 2021 06:40:05 UTC

On Tue, Nov 09, 2021 at 03:36:01PM +0000, Mike Karels wrote:
M> commit 20d59403961d531467cfab22163f49c131cc8b55
M> Author:     Mike Karels <>
M> AuthorDate: 2021-10-27 03:01:09 +0000
M> Commit:     Mike Karels <>
M> CommitDate: 2021-11-09 15:32:38 +0000
M>     kernel: deprecate Internet Class A/B/C
M>     Hide historical Class A/B/C macros unless IN_HISTORICAL_NETS is defined;
M>     define it for user level.  Define IN_MULTICAST separately from IN_CLASSD,
M>     and use it in pf instead of IN_CLASSD.  Stop using class for setting
M>     default masks when not specified; instead, define new default mask
M>     (24 bits).  Warn when an Internet address is set without a mask.
M>     MFC after:      1 month
M>     Reviewed by:    cy
M>     Differential Revision:

Just my 2 cents. I wasn't added as reviewer of D32708 and that's
why totally missed it. IMHO, such reviews should have #network as

I'm convinced that the status of classful addressing that was left
exactly 10 years go in b365d954cc9c39e9854eeb726a60ae812e0fb2fe was
good enough.  After that change the only place where classes exist
is the mask autoguessing. It was absolutely backward compatible and
not breaking any POLA. And had zero code maintainance burden! Nobody
have ever had problems with classes since. Did existence of the small
piece of code in in_aifaddr_ioctl() or class definitions in in.h
created any conflicts with development of any new code?

The new /24 default is no better than classes. The only difference
that classes maintained POLA and new default doesn't. For example,
in my home network I have default router and since it is
class A network on my VMs and test boxes I can type

# ifconfig vtnet0

and that is going to work. With this change no longer.

Gleb Smirnoff