aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander V. Chernikov <melifaro@FreeBSD.org>2023-01-31 14:22:11 +0000
committerAlexander V. Chernikov <melifaro@FreeBSD.org>2023-01-31 14:22:11 +0000
commite80699a809a079c4e673940544d6ddd944e8d08e (patch)
tree0ec9651ad94814c4930b7a23a9c72f5438bb951c
parenta3baca22d0b7789a040a60f389e3c132b6e1755b (diff)
downloadsrc-e80699a809.tar.gz
src-e80699a809.zip
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
-rw-r--r--sys/arm/conf/std.armv71
-rw-r--r--sys/arm64/conf/std.arm641
-rw-r--r--sys/i386/conf/GENERIC1
-rw-r--r--sys/powerpc/conf/GENERIC641
-rw-r--r--sys/riscv/conf/GENERIC1
5 files changed, 5 insertions, 0 deletions
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