[PATCH 0/6] Deprecate Legacy IP

David Woodhouse posted 6 patches 13 hours ago
.../net/ethernet/mellanox/mlx5/core/en/tc_tun.c    |  6 ++--
.../net/ethernet/mellanox/mlx5/core/en/tc_tun.h    |  2 +-
.../ethernet/mellanox/mlx5/core/en/tc_tun_encap.c  |  2 +-
.../ethernet/netronome/nfp/flower/tunnel_conf.c    |  2 +-
include/linux/indirect_call_wrapper.h              |  4 ++-
net/bridge/br_arp_nd_proxy.c                       |  2 +-
net/bridge/br_private.h                            |  8 +++++
net/core/filter.c                                  | 12 +++----
net/core/secure_seq.c                              |  2 +-
net/core/sock.c                                    |  2 +-
net/ipv4/Kconfig                                   | 37 ++++++++++++++++++++++
net/ipv4/af_inet.c                                 | 23 +++++++++++---
net/ipv4/devinet.c                                 |  2 ++
net/ipv4/route.c                                   |  1 -
net/ipv4/tcp_ipv4.c                                | 30 ++++++++++--------
net/mac80211/main.c                                | 10 +++---
net/netfilter/nfnetlink_queue.c                    |  2 +-
17 files changed, 105 insertions(+), 42 deletions(-)
[PATCH 0/6] Deprecate Legacy IP
Posted by David Woodhouse 13 hours ago
RFC1883, the IPv6 standard, was published in the final decade of the 1900s.
That's closer in time to the Apollo 11 moon landing than it was to today.

Even our esteemed Maddog has worked with computers for longer in the IPv6
era, than he ever did before it.

Yet Linux still can't even be *built* with only IPv6 support and without
support for Legacy IP. This long overdue patch series fixes that, and
immediately marks Legacy IP for deprecation.

It also cleans up a few tautological "INET && IPV6" and "INET || IPV6"
checks, since IPV6 (and now LEGACY_IP) cannot be selected without the
overall CONFIG_INET option.

For now, we only add a warning when a process *listens* on a Legacy IP
socket (since you can listen on IPv6 and still accept connections which
have come through a timewarp from the 20th century. Adding warnings for
making outbound connections or *accepting* on Legacy IP can come later.

  'I would be happy if "Legacy IP" ceased to be the "industry standard"
   and IPv6 be the default, even if I had to beat IPv6 into the head of
   every single network administrator's head with a shovel.' said Jon
  'maddog' Hall, ancient supporter of Free and Open Source Software.

David Woodhouse (6):
      net: Simplify tautological CONFIG_INET/CONFIG_IPV6 guards
      net: Add CONFIG_LEGACY_IP option
      net: Guard Legacy IP entry points with CONFIG_LEGACY_IP
      net: Make IPv4-only Kconfig options depend on LEGACY_IP
      net: Change CONFIG_INET to CONFIG_LEGACY_IP for IPv4-only code
      net: Warn when processes listen on AF_INET sockets

 .../net/ethernet/mellanox/mlx5/core/en/tc_tun.c    |  6 ++--
 .../net/ethernet/mellanox/mlx5/core/en/tc_tun.h    |  2 +-
 .../ethernet/mellanox/mlx5/core/en/tc_tun_encap.c  |  2 +-
 .../ethernet/netronome/nfp/flower/tunnel_conf.c    |  2 +-
 include/linux/indirect_call_wrapper.h              |  4 ++-
 net/bridge/br_arp_nd_proxy.c                       |  2 +-
 net/bridge/br_private.h                            |  8 +++++
 net/core/filter.c                                  | 12 +++----
 net/core/secure_seq.c                              |  2 +-
 net/core/sock.c                                    |  2 +-
 net/ipv4/Kconfig                                   | 37 ++++++++++++++++++++++
 net/ipv4/af_inet.c                                 | 23 +++++++++++---
 net/ipv4/devinet.c                                 |  2 ++
 net/ipv4/route.c                                   |  1 -
 net/ipv4/tcp_ipv4.c                                | 30 ++++++++++--------
 net/mac80211/main.c                                | 10 +++---
 net/netfilter/nfnetlink_queue.c                    |  2 +-
 17 files changed, 105 insertions(+), 42 deletions(-)
Re: [PATCH 0/6] Deprecate Legacy IP
Posted by Bjoern A. Zeeb 4 hours ago
On 4/1/26 07:44, David Woodhouse wrote:

Hi David,

(fun fishing this out from nntp.lore.kernel.org needing NAT64)

> RFC1883, the IPv6 standard, was published in the final decade of the 1900s.
> That's closer in time to the Apollo 11 moon landing than it was to today.
> 
> Even our esteemed Maddog has worked with computers for longer in the IPv6
> era, than he ever did before it.
> 
> Yet Linux still can't even be *built* with only IPv6 support and without
> support for Legacy IP. This long overdue patch series fixes that, and
> ...

This is very interesting; I'll be happy to read the more serious 
discussions for 6/6 this year then :)

That said, I've been there 15 years ago and done that for real,
just not for Linux:
https://freebsdfoundation.org/blog/freebsd-foundation-and-ixsystems-announce-ipv6-only-testing-versions-of-freebsd-and-pc-bsd/

A lot of parts (e.g., PC-BSD,the IPv6-only snapshots we published 
back then, websites) are long gone, but FreeBSD today still has NO-INET
(as well as NO-INET6 and NO-IP) kernel configs which are regularly tested
as part of a universe build to make sure the status-quo stayed, along with
options to build (large parts) of userspace without IPv4 support.

I have since run real IPv6-only machines :]]
EAFNOSUPPORT and EPROTONOSUPPORT are (were) a good friend of mine.

It helped a lot back then to find applications which had real trouble
working without IPv4.
It was fun sitting in a UKNOF presentation years later to hear about
all these applications just working on IPv6-only and knowing why, whereas
the presenter was unaware, and still had a 127.1 on his loopback *sigh*

IPv6-only is something a lot of people will not understand and someone
just has to do it!  It is a worthwhile goal, even if late, as you say.
My reminder to people these days is: DNSsec is even older than IPv6.

I have moved on (though would love to go back to more IPv6);
please feel free to get in touch in case you want me to go and swap in
some more memories from that time to share experience and help.

To the global deployment of IPv6!
/bz
Re: [PATCH 0/6] Deprecate Legacy IP
Posted by Fernando Fernandez Mancera 12 hours ago
On 4/1/26 9:44 AM, David Woodhouse wrote:
> RFC1883, the IPv6 standard, was published in the final decade of the 1900s.
> That's closer in time to the Apollo 11 moon landing than it was to today.
> 
> Even our esteemed Maddog has worked with computers for longer in the IPv6
> era, than he ever did before it.
> 
> Yet Linux still can't even be *built* with only IPv6 support and without
> support for Legacy IP. This long overdue patch series fixes that, and
> immediately marks Legacy IP for deprecation.
> 
> It also cleans up a few tautological "INET && IPV6" and "INET || IPV6"
> checks, since IPV6 (and now LEGACY_IP) cannot be selected without the
> overall CONFIG_INET option.
> 
> For now, we only add a warning when a process *listens* on a Legacy IP
> socket (since you can listen on IPv6 and still accept connections which
> have come through a timewarp from the 20th century. Adding warnings for
> making outbound connections or *accepting* on Legacy IP can come later.
> 
>    'I would be happy if "Legacy IP" ceased to be the "industry standard"
>     and IPv6 be the default, even if I had to beat IPv6 into the head of
>     every single network administrator's head with a shovel.' said Jon
>    'maddog' Hall, ancient supporter of Free and Open Source Software.
> 

Dammit, you've beaten me to it! This was my next step for 7.2.

Fully-endorsed-by: Fernando Fernandez Mancera <fmancera@suse.de>
Re: [PATCH 0/6] Deprecate Legacy IP
Posted by David Woodhouse 12 hours ago
On Wed, 2026-04-01 at 10:07 +0200, Fernando Fernandez Mancera wrote:
>  
> 
> Dammit, you've beaten me to it! This was my next step for 7.2.
> 
> Fully-endorsed-by: Fernando Fernandez Mancera <fmancera@suse.de>

Yeah. The date notwithstanding, I do actually think we should do most
of this for real.

Maybe we don't get away with the actual deprecation and the warnings on
use *just* yet, and *maybe* we won't even get away with calling the
config option CONFIG_LEGACY_IP, although I would genuinely like to see
us moving consistently towards saying "Legacy IP" instead of "IPv4"
everywhere.

But we *should* clean up the separation of CONFIG_INET and
CONFIG_IPV[64] and make it possible to build with either protocol
alone.