Re: git: e80699a809a0 - main - netlink: add NETLINK to GENERIC.
Date: Tue, 31 Jan 2023 15:05:00 UTC
On 31 Jan 2023, at 14:25, Alexander V. Chernikov <melifaro@FreeBSD.org> wrote: > > The branch main has been updated by melifaro: > > URL: https://cgit.FreeBSD.org/src/commit/?id=e80699a809a079c4e673940544d6ddd944e8d08e > > commit e80699a809a079c4e673940544d6ddd944e8d08e > Author: Alexander V. Chernikov <melifaro@FreeBSD.org> > AuthorDate: 2023-01-31 14:22:11 +0000 > Commit: Alexander V. Chernikov <melifaro@FreeBSD.org> > CommitDate: 2023-01-31 14:22:11 +0000 > > netlink: add NETLINK to GENERIC. > > This is a followup of 692e19cf5195 (add netlink to GENERIC@amd64). > > Netlink is a communication protocol defined in RFC 3549. It is async, > TLV-based protocol, providing 1-1 and 1-many communications between kernel > and userland. Netlink is currently used in Linux kernel to modify, read and > subscribe for nearly all networking states. Interface state, addresses, routes, > firewall, rules, fibs, etc, are controlled via Netlink. > > Netlink support was added in D36002. It has got a number of improvements and > first customers since then: > * net/bird2 got netlink support, enabling route multipath in FreeBSD > * netlink-based devd notifications are being worked on ( D37574 ). > * linux(4) fully supports and depends on Netlink > > Enabling Netlink in GENERIC targets two goals. > The first one is to provide stability for the third-party userland applications, > so they can rely on the fact that netlink always exists since 14.0 and potentially 13.2. > Loadable module makes life of the app delepers harder. For example, `net/bird2` can be > either build with netlink or rtsock support, but not both. > > The second goal is to enable gradual conversion of the base userland tools > to use netlink(4) interfaces. Converting tools like netstat (D36529), route, > ifconfig one-by-one simplifies testing and addressing the feedback. > Othewise, switching all base to use netlink at once may be too big of a leap. > > MFC after: 1 week > Differential Revision: https://reviews.freebsd.org/D37783 > --- > sys/arm/conf/std.armv7 | 1 + > sys/arm64/conf/std.arm64 | 1 + > sys/i386/conf/GENERIC | 1 + > sys/powerpc/conf/GENERIC64 | 1 + > sys/riscv/conf/GENERIC | 1 + > 5 files changed, 5 insertions(+) Why not 32-bit powerpc? And if this is to make it generally available as a standard FreeBSD component, what about all the various non-GENERIC kernels (that don’t inherit from one of the ones you’ve touched)? Especially if base is going to start using it. Jess > diff --git a/sys/arm/conf/std.armv7 b/sys/arm/conf/std.armv7 > index 8ace5c01eeab..03cc0ae5a2b8 100644 > --- a/sys/arm/conf/std.armv7 > +++ b/sys/arm/conf/std.armv7 > @@ -11,6 +11,7 @@ options CC_CUBIC # include CUBIC congestion control > options TCP_HHOOK # hhook(9) framework for TCP > device crypto # core crypto support > options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 > +options NETLINK # netlink(4) support > options SCTP_SUPPORT # Allow kldload of SCTP > options FFS # Berkeley Fast Filesystem > options SOFTUPDATES # Enable FFS soft updates support > diff --git a/sys/arm64/conf/std.arm64 b/sys/arm64/conf/std.arm64 > index 6480ca6530e4..1e664a3ba90c 100644 > --- a/sys/arm64/conf/std.arm64 > +++ b/sys/arm64/conf/std.arm64 > @@ -13,6 +13,7 @@ options INET # InterNETworking > options INET6 # IPv6 communications protocols > options CC_CUBIC # include CUBIC congestion control > options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 > +options NETLINK # netlink(4) support > options ROUTE_MPATH # Multipath routing support > options FIB_ALGO # Modular fib lookups > options TCP_OFFLOAD # TCP offload > diff --git a/sys/i386/conf/GENERIC b/sys/i386/conf/GENERIC > index 235713851016..5d30f2877c1c 100644 > --- a/sys/i386/conf/GENERIC > +++ b/sys/i386/conf/GENERIC > @@ -32,6 +32,7 @@ options VIMAGE # Subsystem virtualization, e.g. VNET > options INET # InterNETworking > options INET6 # IPv6 communications protocols > options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 > +options NETLINK # netlink(4) support > options ROUTE_MPATH # Multipath routing support > options TCP_HHOOK # hhook(9) framework for TCP > options TCP_OFFLOAD # TCP offload > diff --git a/sys/powerpc/conf/GENERIC64 b/sys/powerpc/conf/GENERIC64 > index bfd0cf342d95..37a78446f07a 100644 > --- a/sys/powerpc/conf/GENERIC64 > +++ b/sys/powerpc/conf/GENERIC64 > @@ -42,6 +42,7 @@ options VIMAGE # Subsystem virtualization, e.g. VNET > options INET # InterNETworking > options INET6 # IPv6 communications protocols > options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 > +options NETLINK # netlink(4) support > options ROUTE_MPATH # Multipath routing support > options TCP_OFFLOAD # TCP offload > options TCP_BLACKBOX # Enhanced TCP event logging > diff --git a/sys/riscv/conf/GENERIC b/sys/riscv/conf/GENERIC > index 2e35a49825d4..69c36511da80 100644 > --- a/sys/riscv/conf/GENERIC > +++ b/sys/riscv/conf/GENERIC > @@ -31,6 +31,7 @@ options INET # InterNETworking > options INET6 # IPv6 communications protocols > options TCP_HHOOK # hhook(9) framework for TCP > options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 > +options NETLINK # netlink(4) support > options ROUTE_MPATH # Multipath routing support > options TCP_OFFLOAD # TCP offload > options TCP_BLACKBOX # Enhanced TCP event logging