Re: git: e80699a809a0 - main - netlink: add NETLINK to GENERIC.

From: Jessica Clarke <jrtc27_at_freebsd.org>
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