linux/net/Kconfig
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0-only
   2#
   3# Network configuration
   4#
   5
   6menuconfig NET
   7        bool "Networking support"
   8        select NLATTR
   9        select GENERIC_NET_UTILS
  10        select BPF
  11        ---help---
  12          Unless you really know what you are doing, you should say Y here.
  13          The reason is that some programs need kernel networking support even
  14          when running on a stand-alone machine that isn't connected to any
  15          other computer.
  16
  17          If you are upgrading from an older kernel, you
  18          should consider updating your networking tools too because changes
  19          in the kernel and the tools often go hand in hand. The tools are
  20          contained in the package net-tools, the location and version number
  21          of which are given in <file:Documentation/Changes>.
  22
  23          For a general introduction to Linux networking, it is highly
  24          recommended to read the NET-HOWTO, available from
  25          <http://www.tldp.org/docs.html#howto>.
  26
  27if NET
  28
  29config WANT_COMPAT_NETLINK_MESSAGES
  30        bool
  31        help
  32          This option can be selected by other options that need compat
  33          netlink messages.
  34
  35config COMPAT_NETLINK_MESSAGES
  36        def_bool y
  37        depends on COMPAT
  38        depends on WEXT_CORE || WANT_COMPAT_NETLINK_MESSAGES
  39        help
  40          This option makes it possible to send different netlink messages
  41          to tasks depending on whether the task is a compat task or not. To
  42          achieve this, you need to set skb_shinfo(skb)->frag_list to the
  43          compat skb before sending the skb, the netlink code will sort out
  44          which message to actually pass to the task.
  45
  46          Newly written code should NEVER need this option but do
  47          compat-independent messages instead!
  48
  49config NET_INGRESS
  50        bool
  51
  52config NET_EGRESS
  53        bool
  54
  55config SKB_EXTENSIONS
  56        bool
  57
  58menu "Networking options"
  59
  60source "net/packet/Kconfig"
  61source "net/unix/Kconfig"
  62source "net/tls/Kconfig"
  63source "net/xfrm/Kconfig"
  64source "net/iucv/Kconfig"
  65source "net/smc/Kconfig"
  66source "net/xdp/Kconfig"
  67
  68config INET
  69        bool "TCP/IP networking"
  70        select CRYPTO
  71        select CRYPTO_AES
  72        ---help---
  73          These are the protocols used on the Internet and on most local
  74          Ethernets. It is highly recommended to say Y here (this will enlarge
  75          your kernel by about 400 KB), since some programs (e.g. the X window
  76          system) use TCP/IP even if your machine is not connected to any
  77          other computer. You will get the so-called loopback device which
  78          allows you to ping yourself (great fun, that!).
  79
  80          For an excellent introduction to Linux networking, please read the
  81          Linux Networking HOWTO, available from
  82          <http://www.tldp.org/docs.html#howto>.
  83
  84          If you say Y here and also to "/proc file system support" and
  85          "Sysctl support" below, you can change various aspects of the
  86          behavior of the TCP/IP code by writing to the (virtual) files in
  87          /proc/sys/net/ipv4/*; the options are explained in the file
  88          <file:Documentation/networking/ip-sysctl.txt>.
  89
  90          Short answer: say Y.
  91
  92if INET
  93source "net/ipv4/Kconfig"
  94source "net/ipv6/Kconfig"
  95source "net/netlabel/Kconfig"
  96
  97endif # if INET
  98
  99config NETWORK_SECMARK
 100        bool "Security Marking"
 101        help
 102          This enables security marking of network packets, similar
 103          to nfmark, but designated for security purposes.
 104          If you are unsure how to answer this question, answer N.
 105
 106config NET_PTP_CLASSIFY
 107        def_bool n
 108
 109config NETWORK_PHY_TIMESTAMPING
 110        bool "Timestamping in PHY devices"
 111        select NET_PTP_CLASSIFY
 112        help
 113          This allows timestamping of network packets by PHYs with
 114          hardware timestamping capabilities. This option adds some
 115          overhead in the transmit and receive paths.
 116
 117          If you are unsure how to answer this question, answer N.
 118
 119menuconfig NETFILTER
 120        bool "Network packet filtering framework (Netfilter)"
 121        ---help---
 122          Netfilter is a framework for filtering and mangling network packets
 123          that pass through your Linux box.
 124
 125          The most common use of packet filtering is to run your Linux box as
 126          a firewall protecting a local network from the Internet. The type of
 127          firewall provided by this kernel support is called a "packet
 128          filter", which means that it can reject individual network packets
 129          based on type, source, destination etc. The other kind of firewall,
 130          a "proxy-based" one, is more secure but more intrusive and more
 131          bothersome to set up; it inspects the network traffic much more
 132          closely, modifies it and has knowledge about the higher level
 133          protocols, which a packet filter lacks. Moreover, proxy-based
 134          firewalls often require changes to the programs running on the local
 135          clients. Proxy-based firewalls don't need support by the kernel, but
 136          they are often combined with a packet filter, which only works if
 137          you say Y here.
 138
 139          You should also say Y here if you intend to use your Linux box as
 140          the gateway to the Internet for a local network of machines without
 141          globally valid IP addresses. This is called "masquerading": if one
 142          of the computers on your local network wants to send something to
 143          the outside, your box can "masquerade" as that computer, i.e. it
 144          forwards the traffic to the intended outside destination, but
 145          modifies the packets to make it look like they came from the
 146          firewall box itself. It works both ways: if the outside host
 147          replies, the Linux box will silently forward the traffic to the
 148          correct local computer. This way, the computers on your local net
 149          are completely invisible to the outside world, even though they can
 150          reach the outside and can receive replies. It is even possible to
 151          run globally visible servers from within a masqueraded local network
 152          using a mechanism called portforwarding. Masquerading is also often
 153          called NAT (Network Address Translation).
 154
 155          Another use of Netfilter is in transparent proxying: if a machine on
 156          the local network tries to connect to an outside host, your Linux
 157          box can transparently forward the traffic to a local server,
 158          typically a caching proxy server.
 159
 160          Yet another use of Netfilter is building a bridging firewall. Using
 161          a bridge with Network packet filtering enabled makes iptables "see"
 162          the bridged traffic. For filtering on the lower network and Ethernet
 163          protocols over the bridge, use ebtables (under bridge netfilter
 164          configuration).
 165
 166          Various modules exist for netfilter which replace the previous
 167          masquerading (ipmasqadm), packet filtering (ipchains), transparent
 168          proxying, and portforwarding mechanisms. Please see
 169          <file:Documentation/Changes> under "iptables" for the location of
 170          these packages.
 171
 172if NETFILTER
 173
 174config NETFILTER_ADVANCED
 175        bool "Advanced netfilter configuration"
 176        depends on NETFILTER
 177        default y
 178        help
 179          If you say Y here you can select between all the netfilter modules.
 180          If you say N the more unusual ones will not be shown and the
 181          basic ones needed by most people will default to 'M'.
 182
 183          If unsure, say Y.
 184
 185config BRIDGE_NETFILTER
 186        tristate "Bridged IP/ARP packets filtering"
 187        depends on BRIDGE
 188        depends on NETFILTER && INET
 189        depends on NETFILTER_ADVANCED
 190        select NETFILTER_FAMILY_BRIDGE
 191        select SKB_EXTENSIONS
 192        default m
 193        ---help---
 194          Enabling this option will let arptables resp. iptables see bridged
 195          ARP resp. IP traffic. If you want a bridging firewall, you probably
 196          want this option enabled.
 197          Enabling or disabling this option doesn't enable or disable
 198          ebtables.
 199
 200          If unsure, say N.
 201
 202source "net/netfilter/Kconfig"
 203source "net/ipv4/netfilter/Kconfig"
 204source "net/ipv6/netfilter/Kconfig"
 205source "net/decnet/netfilter/Kconfig"
 206source "net/bridge/netfilter/Kconfig"
 207
 208endif
 209
 210source "net/bpfilter/Kconfig"
 211
 212source "net/dccp/Kconfig"
 213source "net/sctp/Kconfig"
 214source "net/rds/Kconfig"
 215source "net/tipc/Kconfig"
 216source "net/atm/Kconfig"
 217source "net/l2tp/Kconfig"
 218source "net/802/Kconfig"
 219source "net/bridge/Kconfig"
 220source "net/dsa/Kconfig"
 221source "net/8021q/Kconfig"
 222source "net/decnet/Kconfig"
 223source "net/llc/Kconfig"
 224source "drivers/net/appletalk/Kconfig"
 225source "net/x25/Kconfig"
 226source "net/lapb/Kconfig"
 227source "net/phonet/Kconfig"
 228source "net/6lowpan/Kconfig"
 229source "net/ieee802154/Kconfig"
 230source "net/mac802154/Kconfig"
 231source "net/sched/Kconfig"
 232source "net/dcb/Kconfig"
 233source "net/dns_resolver/Kconfig"
 234source "net/batman-adv/Kconfig"
 235source "net/openvswitch/Kconfig"
 236source "net/vmw_vsock/Kconfig"
 237source "net/netlink/Kconfig"
 238source "net/mpls/Kconfig"
 239source "net/nsh/Kconfig"
 240source "net/hsr/Kconfig"
 241source "net/switchdev/Kconfig"
 242source "net/l3mdev/Kconfig"
 243source "net/qrtr/Kconfig"
 244source "net/ncsi/Kconfig"
 245
 246config RPS
 247        bool
 248        depends on SMP && SYSFS
 249        default y
 250
 251config RFS_ACCEL
 252        bool
 253        depends on RPS
 254        select CPU_RMAP
 255        default y
 256
 257config XPS
 258        bool
 259        depends on SMP
 260        default y
 261
 262config HWBM
 263       bool
 264
 265config CGROUP_NET_PRIO
 266        bool "Network priority cgroup"
 267        depends on CGROUPS
 268        select SOCK_CGROUP_DATA
 269        ---help---
 270          Cgroup subsystem for use in assigning processes to network priorities on
 271          a per-interface basis.
 272
 273config CGROUP_NET_CLASSID
 274        bool "Network classid cgroup"
 275        depends on CGROUPS
 276        select SOCK_CGROUP_DATA
 277        ---help---
 278          Cgroup subsystem for use as general purpose socket classid marker that is
 279          being used in cls_cgroup and for netfilter matching.
 280
 281config NET_RX_BUSY_POLL
 282        bool
 283        default y
 284
 285config BQL
 286        bool
 287        depends on SYSFS
 288        select DQL
 289        default y
 290
 291config BPF_JIT
 292        bool "enable BPF Just In Time compiler"
 293        depends on HAVE_CBPF_JIT || HAVE_EBPF_JIT
 294        depends on MODULES
 295        ---help---
 296          Berkeley Packet Filter filtering capabilities are normally handled
 297          by an interpreter. This option allows kernel to generate a native
 298          code when filter is loaded in memory. This should speedup
 299          packet sniffing (libpcap/tcpdump).
 300
 301          Note, admin should enable this feature changing:
 302          /proc/sys/net/core/bpf_jit_enable
 303          /proc/sys/net/core/bpf_jit_harden   (optional)
 304          /proc/sys/net/core/bpf_jit_kallsyms (optional)
 305
 306config BPF_STREAM_PARSER
 307        bool "enable BPF STREAM_PARSER"
 308        depends on INET
 309        depends on BPF_SYSCALL
 310        depends on CGROUP_BPF
 311        select STREAM_PARSER
 312        select NET_SOCK_MSG
 313        ---help---
 314         Enabling this allows a stream parser to be used with
 315         BPF_MAP_TYPE_SOCKMAP.
 316
 317         BPF_MAP_TYPE_SOCKMAP provides a map type to use with network sockets.
 318         It can be used to enforce socket policy, implement socket redirects,
 319         etc.
 320
 321config NET_FLOW_LIMIT
 322        bool
 323        depends on RPS
 324        default y
 325        ---help---
 326          The network stack has to drop packets when a receive processing CPU's
 327          backlog reaches netdev_max_backlog. If a few out of many active flows
 328          generate the vast majority of load, drop their traffic earlier to
 329          maintain capacity for the other flows. This feature provides servers
 330          with many clients some protection against DoS by a single (spoofed)
 331          flow that greatly exceeds average workload.
 332
 333menu "Network testing"
 334
 335config NET_PKTGEN
 336        tristate "Packet Generator (USE WITH CAUTION)"
 337        depends on INET && PROC_FS
 338        ---help---
 339          This module will inject preconfigured packets, at a configurable
 340          rate, out of a given interface.  It is used for network interface
 341          stress testing and performance analysis.  If you don't understand
 342          what was just said, you don't need it: say N.
 343
 344          Documentation on how to use the packet generator can be found
 345          at <file:Documentation/networking/pktgen.txt>.
 346
 347          To compile this code as a module, choose M here: the
 348          module will be called pktgen.
 349
 350config NET_DROP_MONITOR
 351        tristate "Network packet drop alerting service"
 352        depends on INET && TRACEPOINTS
 353        ---help---
 354        This feature provides an alerting service to userspace in the
 355        event that packets are discarded in the network stack.  Alerts
 356        are broadcast via netlink socket to any listening user space
 357        process.  If you don't need network drop alerts, or if you are ok
 358        just checking the various proc files and other utilities for
 359        drop statistics, say N here.
 360
 361endmenu
 362
 363endmenu
 364
 365source "net/ax25/Kconfig"
 366source "net/can/Kconfig"
 367source "net/bluetooth/Kconfig"
 368source "net/rxrpc/Kconfig"
 369source "net/kcm/Kconfig"
 370source "net/strparser/Kconfig"
 371
 372config FIB_RULES
 373        bool
 374
 375menuconfig WIRELESS
 376        bool "Wireless"
 377        depends on !S390
 378        default y
 379
 380if WIRELESS
 381
 382source "net/wireless/Kconfig"
 383source "net/mac80211/Kconfig"
 384
 385endif # WIRELESS
 386
 387source "net/wimax/Kconfig"
 388
 389source "net/rfkill/Kconfig"
 390source "net/9p/Kconfig"
 391source "net/caif/Kconfig"
 392source "net/ceph/Kconfig"
 393source "net/nfc/Kconfig"
 394source "net/psample/Kconfig"
 395source "net/ife/Kconfig"
 396
 397config LWTUNNEL
 398        bool "Network light weight tunnels"
 399        ---help---
 400          This feature provides an infrastructure to support light weight
 401          tunnels like mpls. There is no netdevice associated with a light
 402          weight tunnel endpoint. Tunnel encapsulation parameters are stored
 403          with light weight tunnel state associated with fib routes.
 404
 405config LWTUNNEL_BPF
 406        bool "Execute BPF program as route nexthop action"
 407        depends on LWTUNNEL && INET
 408        default y if LWTUNNEL=y
 409        ---help---
 410          Allows to run BPF programs as a nexthop action following a route
 411          lookup for incoming and outgoing packets.
 412
 413config DST_CACHE
 414        bool
 415        default n
 416
 417config GRO_CELLS
 418        bool
 419        default n
 420
 421config SOCK_VALIDATE_XMIT
 422        bool
 423
 424config NET_SOCK_MSG
 425        bool
 426        default n
 427        help
 428          The NET_SOCK_MSG provides a framework for plain sockets (e.g. TCP) or
 429          ULPs (upper layer modules, e.g. TLS) to process L7 application data
 430          with the help of BPF programs.
 431
 432config NET_DEVLINK
 433        bool
 434        default n
 435
 436config PAGE_POOL
 437       bool
 438
 439config FAILOVER
 440        tristate "Generic failover module"
 441        help
 442          The failover module provides a generic interface for paravirtual
 443          drivers to register a netdev and a set of ops with a failover
 444          instance. The ops are used as event handlers that get called to
 445          handle netdev register/unregister/link change/name change events
 446          on slave pci ethernet devices with the same mac address as the
 447          failover netdev. This enables paravirtual drivers to use a
 448          VF as an accelerated low latency datapath. It also allows live
 449          migration of VMs with direct attached VFs by failing over to the
 450          paravirtual datapath when the VF is unplugged.
 451
 452endif   # if NET
 453
 454# Used by archs to tell that they support BPF JIT compiler plus which flavour.
 455# Only one of the two can be selected for a specific arch since eBPF JIT supersedes
 456# the cBPF JIT.
 457
 458# Classic BPF JIT (cBPF)
 459config HAVE_CBPF_JIT
 460        bool
 461
 462# Extended BPF JIT (eBPF)
 463config HAVE_EBPF_JIT
 464        bool
 465