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

From: Mike Karels <mike_at_karels.net>
Date: Tue, 31 Jan 2023 14:58:04 UTC
On 31 Jan 2023, at 8:25, Alexander V. Chernikov 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(+)
>
> 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

Looks like the tabs are not right here.  Kernel config files should
use
	options<space><tab>OPTION
so that the OPTION does not shift if the line is commented out.  Most
of the previous options do this.

I see that several other recent options also use two tabs, including
the amd64 NETLINK.  Maybe we should do a cleanup pass.

		Mike

>  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