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